SFC「バトルドッジボール」のパスワード解析をやっていく その6 42文字or50文字?

ゲーム画面で表示されたパスワードが100%信用できるわけじゃないのがなんとなくわかった

あらためて42文字とか50文字の検証

1人目の全能力値を9999にして他の能力値が16進数表示のままの場合、何故か42文字のパスワードになる。

なアどチ♥  ンkl・o ヲNMKダ こ?ぐえア
Gかえオp あぼ2iシ えがレぞp いDぜしげ
ヤす

で、これを50文字パターン相当の各キャラ12文字の改行にしてみるとこうなる

なア
どチ♥ンkl・oヲNMK
ダこ?ぐえアGかえオpあ
ぼ2iシえがレケpいDぜ
しげヤす

これを前回の冒頭で出した、50文字パターンのパスワードと比較すると

なア
どチシゲさしゼそグイアえ
ダこゲぐけアこかけオきあ
ぼ2ウシシがいザグいキぜ
しハヤすMpエアんシぜが

キャラIDの部分が一致していて外野の能力値のデータが不足した状態に見える。
おそらく、本来はいずれかのキャラのいずれかの能力値が1000を超えた場合は50文字パターンにならなくてはいけないが、16進数表示が含まれている場合は値のチェックがちゃんとできない状態なので、その場合のパスワード50文字判定に穴があるんだと思う。

で、まあ色々いじった結果

SDガンダムヒーローズ ウルトラマングレート×3+ウルトラマン 全能力値0、ステージ未クリアの50文字パターンのパスワード

ぼいざシシ ゲさしゼそ グイアえざ ぐゲぐけア
こかけオき あセゴウシ シがいぞグ いキぜぜは
ヤすアサエ アんシぜが

これで試合終わらせてパスワードを表示すると42文字パターンのパスワードが表示される。
1000超え能力値がない50文字パスワードを受け付けることはできるけど、表示する時は1000超え能力値がある場合だけ50文字になるってことでいいと思う。

3回目くらいに気づいてた、1文字目の上から2bit目のフラグは多分キャラ能力値12文字のフラグだと思う。このbitが立っているのに42文字のパスワードが生成される時があるのはバグ。


全文字の「0」にあたる文字がわかったので、あとはそこに能力値を当てはめれば完成かなと思ったけど、ステージ周回カウンタがまだだった。たしか16周くらいすると1週目に戻るはずなので、4bitで管理されているはずだが…

周回カウンタ

外野のショットをレベル20にすれば序盤は一瞬で終わるのでそれを使って確認していく
3週目に入ったところまで確認した結果、1文字目は「な」→「ネ」→「ピ」と変化した。+8で1周みたいだ。
これで全部分かったかな

パリティ用の文字200超え問題

外野のMPに当たる文字をパリティとして使用しているが、外野の体力と防御力の4文字もデータ上意味がないので、MPの文字が200を超えるような場合は他の文字で調整可能だろう。全文字のXorさえ0になっていればいいはず