前から書こうと思っていてたが、コピペ blog に当時の雑誌の記事が載っていたので調べてみた。
Zガンダムホットスクランブルには DEBUG MONITOR という裏技があり、タイトル画面で複雑怪奇なボタン入力をいれると、ゲーム中に16進数の値を入れることができる。この数値の組み合わせでゲームの進行を無理矢理操作できる。
逆アセンブル
該当コードが見つかったので記載する。複雑怪奇なコマンドは割とシンプルな命令になっていて、AボタンかBボタンを放す->押すのタイミングで他のキー入力も読んで、一致するか判定している。放す、押すが細かく書かれているのはこのためだと思われる。
D75E: lda $010D bmi $D78F lda $0111 beq $D793 lda $22 ;player2.input.trigger ABxxUDLR and #$C0 ;pressed A or B button beq $D793 lda $1F ;player2.input.pressed ldx $010D ;special command status counter cmp $D89B,x bne $D789 inx ;if key is corrected, increment counter stx $010D lda $D89B,x ;read next key cmp #$30 ;command end sign bne $D793 lda #$80 ;if command is completed, set bit7 sta $010D rts D789: lda #$00 ;if command is incompleted, clear bit7 sta $010D rts D78F: (中略) D89B: byt $80 ;A byt $88 ;A+U byt $c0 ;A+B byt $48 ;B+U byt $40 ;B byt $41 ;U+R byt $c0 ;A+B byt $81 ;A+R byt $81 ;A+R byt $82 ;A+L byt $c0 ;A+B byt $c4 ;A+B+D byt $44 ;B+D byt $30 ;end
この複雑怪奇なボタン入力は偶然に出せることは不可能、もしくは出せてもやり方を覚えられない。それ以外となると、逆アセンブルして解析したと考えるのが普通である。
今回のコードはシンプルなプログラムな(くせに複雑な入力を要求する)ので、1986年当時のパソコンやソフトでも調べられるレベルであると思われる。
釣り針
ホットスクランブルの開発スタッフはこのデバッグモードを製品版で消さずに複雑な認証を設けて使えるように残したのかという疑問がある。 Game Studio はホットスクランブルの前に Xevious でも似たような認証を設けてデバッグモードを残している。
当時、ファミコンユーザーの間では隠し要素を見つけることが非常にはやっていて、隠しキャラや裏技を発見して雑誌の編集部に送ると景品や原稿料がもらえるような状態になっていた。*1
Xevious の場合は(ホットスクランブルと比較して)コマンドが簡単なので遊びでいれてみて、雑誌に掲載されるかを試したかもしれない。ユーザーが闇雲にボタンを押して裏技の方法を見つけた場合、いれなくてもいい要素も再現条件として残ることがよくある。
闇雲ではなく、プログラムコードを解析した場合は最適解が出る。Xevious でもおそらく最適解が出てきたので、もっと複雑なコマンドをホットスクランブルにいれて本当に逆アセンブルしたのか確認させたかったのかもしれない。
ホットスクランブルでは起動時にどういうわけかコピー禁止の警告文を表示している。この形で警告文を出すことはファミコンソフトとして珍しい。さらに、デバッグモードが出せても、16進数の値をいれなければ効果が得られないとなるとさらに深い解析が必要になる。
現在インターネット上で掲載されているデバッグモードに入力する16進数の値は少ないので闇雲にいれたかあまり効果がないので雑誌に掲載されなかったのどちらかだと予想できる。真剣に解析すればもう少しおもしろい展開が起きるかもしれない。
これ以降の Game Studio 製のファミコンソフトは複雑なコマンド入力を要求する裏技はなくなっているので、調査は完了したと考えてもいいかもしれない。
*1:表向きは一般公募, 実際は違うという噂を聞いたことがある