はじまりはビープ音

ドリームキャストのことを中心にゲーム関係の気になったことを書いていくつもりです。

「燃えろ!ジャスティス学園」別衣装キャラのフリーズバグ、その発生条件と回避策(暫定)

「燃えろ!ジャスティス学園」には特定のキャラクターを選択するとフリーズするバグが存在します。その発生する原因や発生条件についてちょっと調べてみました。なお、NAOMI版だけでなく、ドリキャス版のアーケードモードでも同様のフリーズバグが発生します。

はじめに

この記事は意図的にフリーズバグを発生させることを目的としておらず、発生条件を知ることでフリーズを回避してプレイを楽しむことを目的としています。

特にNAOMI版(ゲーセン)においては、フリーズバグという特性上、意図しない負荷が発生し機器の損傷の恐れや、リセット作業が必要になりオペレーターに迷惑が掛かるので、意図的にフリーズバグを発生させるようなことは絶対にしないでください。


NAOMI版には初期版と後期版の存在があります。初期版は恭介浮遊バグが存在し、後期版ではそれができなくなっています(その他にもいくつかのバグが修正されているらしい)。今回検証に使ったNAOMI版は初期版であり、後期版では今回のバグは修正されている可能性があります。

また、あくまで現時点で自分の方で確認できた暫定的な内容ということを踏まえていただければと思います。

カーソルが枠外に表示されたり、グラフィックがおかしくなったり、フリーズしたり…。

バグの発生条件(暫定)

現時点で再現性のある発生条件。NAOMI版、ドリキャス版のアーケードモードにおいて、条件A、条件Bのどちらか、または両方を満たす場合に発生。

  • 条件A
    1. 対人戦で一人目に対象キャラを選択して勝利
    2. その後のモード選択でフリーモードを選択すると発生
      • ただし勝利したのが乱入された側で、尚且つ既にモード選択していた場合はモード選択やキャラセレに移行しないため発生しない。
  • 条件B
    1. 対人戦で一人目に対象キャラを選択して敗北
    2. コンティニューで乱入すると発生

対象キャラとそれぞれの挙動

以下のキャラを一人目に選択し、上記条件を満たすと発生。

  • ひなた2
    • フリーズ
  • 将馬2
    • 一人目選択時のカーソル初期位置が枠外(0x2C)に表示
    • 初期位置で移動せず決定すると将馬2が選択可能
      • 選択後もカーソル位置は枠外(0x00)のままで、移動せず二人目をそのまま決定すると
        • NAOMIはフリーズ
        • ドリキャスは枠外(0x00)で空欄となる
          • 二人目、三人目をその場で決定することで1対3になる
          • 二人目をその場で、三人目を任意キャラを選ぶことで2対3になる
    • 初期位置から各方向へ移動した場合(移動後は初期位置に戻ることはできない)
      • 上:枠外(0x00)
      • 下:枠外(0x00)
      • 左:バツ(0x01)
      • 右:ひなた(0x02)
  • ボーマン2
    • 一人目選択時のカーソル初期位置が枠外(0x31)に表示
    • 初期位置で移動せず決定するとボーマン2が選択可能
      • 選択後はバツ(0x01)にカーソルが移動
    • 初期位置から各方向へ移動した場合(移動後は初期位置に戻ることはできない)
      • 上:岩(0x0C)
      • 下:枠外(0x00)
      • 左:枠外(0x80)
      • 右:枠外(0x00)

枠外での移動や選択はフリーズの要因となるので注意。

原因整理(暫定)

  • キャラセレの前提
    • 初期プレイ時(条件A、条件Bを満たしていない場合)の一人目のカーソル初期値
      • 1P=0x01(バツ
      • 2P=0x0B(あきら)
    • 一人目~三人目はそれぞれ1byteごと別のアドレスで管理されている
      • 1Pで3byte、2Pで3byte
    • 二人目、三人目の初期位置は前のキャラ決定直前のキャラから一つ左隣に位置するキャラの値がセットされる(左端の場合は右端のキャラの値)
    • 別衣装を持つ各キャラの値
      • ひなた=0x02
      • ひなた2=0x2A
      • 将馬=0x04
      • 将馬2=0x2C
      • ボーマン=0x09
      • ボーマン2=0x31
    • 決定前は通常版キャラの値だが、別衣装キャラに決定した時点で値が変更される
      • ひなたにカーソルを合わせる=0x02
      • ひたな2に決定する=0x2A
  • 発生条件を満たす場合、前回使用したキャラの値が初期値にセットされたままになる
    • 初期値がリセットされないのは、前回使用したキャラをすぐ選べるようにする配慮と思われる(他格ゲーでもよくある)
  • 初期値が対象キャラの値の場合、枠内の値として存在しないため枠外へカーソルが移動
    • 初期値=0x01~0x24は枠内
    • 初期値=0x00,0x25~は枠外
      • 別衣装キャラはこちらに含まれる
  • ドリキャス版の対戦モード系のキャラセレでは処理の仕方が違うため、別衣装キャラによる同様のバグは発生しない
    • 前試合で三人目に選んだキャラが一人目の初期値となる
    • 二人目、三人目の初期値は前キャラの値がそのままセットされる
    • 初期値が別衣装キャラの場合は通常衣装キャラの値がセットされる

アーケードモードにも「初期値が別衣装キャラの場合は通常衣装キャラの値がセットされる」という処理が入っていれば発生しなかったはず。現にドリキャスの海外版ではそのような処理が入っており同様のバグは発生しない(NAOMIの後期版は未確認)。

回避策(暫定)

  • プレイヤー側の対策
    • 対象キャラを使用しない
    • 対象キャラを一人目に選択しない
    • 対人戦でコンティニューしない
      • 乱入した側が一人目に対象キャラ入れて勝利したら条件A発生
    • モード選択前に乱入しない
      • 乱入した側が一人目に対象キャラ入れて勝利したら条件A発生
    • 対戦モードで対戦する(ドリキャス版限定)
  • オペレーター側の対策
    • 「CONTINUE」をOFFにする
      • 条件Bにのみ有効だが、弊害として一人プレイ時もコンティニューできなくなる
    • 「JOIN IN」をOFFにして乱入禁止にする
      • 当然対人戦ができなくなる
    • 対戦会、大会などの際は「EVENT」をONにする
      • 一人プレイができなくなるほか、1クレジットで対人戦が可能になってしまうため、あくまでイベント時限定

確実に回避する方法は赤字のものとなるが、現実的な方法としては「対象キャラを一人目に選択しない」となる。特にひなた2を一人目にして敗北、コンティニューしまうとキャラセレが表示された瞬間にフリーズ確定なので要注意。

なお、対象キャラを三人目にしても発生した、という情報を頂いたが現時点で当方の検証では再現せず。また、三人目の値の変動を見る限り二人目のキャラ選択に依存する形で変動するため、今回の発生条件を満たしたときに起こるバグとは別の原因の可能性がある。そのうち改めて検証。

Appendix

キャラ
00 NONE
01 バツ
02 ひなた
03 恭介
04 将馬
05
06 ロベルト
07 ロイ
08 ティファニー
09 ボーマン
0A エッジ
0B あきら
0C
0D 英雄
0E 響子
0F 九郎
10
11 Pアキラ
12 委員長
13 ダイゴ
14 隼人
15 ラン
16
17 ザキ
18 もも
19 ゆりか
1A Bバツ
1B D雹
1C Wダイゴ
1D ヴァツ
1E 太陽学園 男子
1F 太陽学園 女子
20 五輪高校 男子
21 五輪高校 女子
22 パシフィックHS 男子
23 パシフィックHS 女子
24 外道高校
25 聖純女学院
26 ジャスティス学園 男子
27 ジャスティス学園 女子
28 NONE(バツ
29 バツ
2A ひなた2
2B 恭介
2C 将馬2
2D
2E ロベルト
2F ロイ
30 ティファニー
31 ボーマン2

pomegd.hatenablog.com