http://makainyumon.web.fc2.com/cheat/
129 の実験にあると便利なんで使ってみることにした。ここに書いてあるんだが、条件がシビア。命令を見てみた。
;page = 3. (ROM offset 0x2000 * 3 + 0x1b40) ;each button pressed, increment memory BD40: lda $03 ;player2.button.status BD42: cmp #$80 ;buttonA BD44: bne $BD48 BD46: inc $D1 BD48: cmp #$40 ;buttonB BD4A: bne $BD4E BD4C: inc $D2 BD4E: lda $02 ;player1.button.status BD50: cmp #$20 ;Select BD52: bne $BD56 BD54: inc $D3 BD56: cmp #$40 BD58: bne $BD5C BD5A: inc $D4 BD5C: lda $D0 ; (snip) BD9B: lda $D1 ;player2.buttonA.presscount BD9D: cmp #$B4 ;180 <= count < 240 BD9F: bcc $BDBC BDA1: cmp #$F0 BDA3: bcs $BDBC BDA5: lda $D2 ;player2.buttonB.presscount BDA7: cmp #$3C ;60 <= count < 120 BDA9: bcc $BDBC BDAB: cmp #$78 BDAD: bcs $BDBC BDAF: lda $D3 ;player1.select.presscount BDB1: cmp #$78 ;120 <= count < 180 BDB3: bcc $BDBC BDB5: cmp #$B4 BDB7: bcs $BDBC BDB9: jmp $C094
調べたところ、時間の指定は命令と全く同じで、ボタンを押す順番は条件外ということでちょっと違った。こんな時間の測定はプレイヤー側からは判定することが容易ではないので、私同様に逆アセンブルしたものと見られる。
..... 見られるがどういう経緯でここに掲載されたのかが非常に気になる。当時の雑誌には掲載されたものの再録がなかったから埋もれて発掘とかなのか。
シビアな条件は作業の効率化として邪魔なので、Aボタンを押すだけで動くように変更した。
org $bd9b lda $02 ;player1.buttonA.pressed? (bit7) bpl $bdbc jmp $c094
この状態だと上下で番号を1ずつ変更するため、左右で5ずつ変更する命令も書いたんだが、長いので割愛。