Zガンダムホットスクランブルの裏技は開発者の釣り針だったかもしれない

前から書こうと思っていてたが、コピペ 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:表向きは一般公募, 実際は違うという噂を聞いたことがある