DQ3 登録中にスタートボタンを押すとプリセットの名前を自動入力する2

今回から実装に移ります。影響範囲を局所的にするために、多少邪道な方法を取ります。方針として以下の方針で作業します。

  1. 登録所メインSR: $03DAEBに入った直後でテンポラリのフラグを立て、終了直前でフラグをクリアする
  2. スタートボタンの入力に反応するのは1のフラグが立っている間+現在のウィンドウIDが#$3A(名前入力用ウィンドウ)の場合のみ
  3. 1,2の条件に該当した場合のみスタートボタンを押した時の専用処理SRを動作させる。$0332A0で$7E2A98のオフセットではなく、プリセット名前入力のSRへのオフセットに差し替える

実際のプリセットの名前をセットする処理は次回に回すことにして、とりあえず今回は枠を作ることにします。

  • SR: $03DAEB 登録所メイン
03DAEBPHPPush P Flag
03DAECREP #$30m=off(A/M:16b) x=off(X/Y:16b)
03DAEEPHAPush A
03DAEFPHXPush X
03DAF0PHYPush Y
03DAF1PHBPush DB
03DAF2PEA #$7E7EPush #$7E7E
03DAF5PLBPull DB
03DAF6PLBPull DB
03DAF7JSL $CF5000SR: $0F5000登録中フラグON
03DD07JSL $CF500BSR: $0F500B登録中フラグOFF
03DD0BPLBPull DB
03DD0CREP #$30m=off(A/M:16b) x=off(X/Y:16b)
03DD0EPLYPull Y
03DD0FPLXPull X
03DD10PLAPull A
03DD11PLPPull P Flag
03DD12RTLreturn

  • SR: $0F5000 登録所フラグON(新SR)
0F5000JSL $C90789SR: $090789 引数:1#$35B9 引数:2#$7E 引数:3#$80 引数:4#$00 引数:5#$00RAM上情報変更(ON)
0F500ARTLreturn
  • SR: $0F5000 登録所フラグOFF(新SR)
0F500BJSL $C907CCSR: $0907CC 引数:1#$35B9 引数:2#$7E 引数:3#$80 引数:4#$00 引数:5#$00RAM上情報変更(OFF)
0F5015RTLreturn

  • SR: $033253 ウィンドウ上入力処理
033253LDA #$F090A=#$F090スタートボタンの入力も処理する
033289JSL $CF502ASR: $0F502A
03328DBCC #$E6if(c==off) goto $033275
03328FLDA #$F090A=#$F090スタートボタンの入力も処理する
033292STA $2A6A$2A6A=A
033295JSR $3246SR: $033246
033298BNE #$06if(z==off) goto $0332A0
03329AJSL $C1E32ESR: $01E32E 引数:1#$003D再生BGM設定
0332A0JSR $FE19SR: $03FE19
0332A3JMP $FE29 ($03FE29)goto $($03FE29+X)

  • SR: $0F502A ?(新SR)
0F502ALDA #$0010A=#$0010スタートボタンの入力の場合
0F502DAND $2A68A&=$2A68
0F5030BEQ #$06if(z==on) goto $0F5038
0F5032JSL $CF5016SR: $0F5016登録処理中で名前入力中か(該当c=on)
0F5036BCC #$05if(c==off) goto $0F503D
0F5038JSL $C331A3SR: $0331A3
0F503CRTLreturn
0F503DSTZ $2AA6$2AA6=#$00該当条件以外はスタートボタンの入力は通常通り
0F5040STZ $2A6A$2A6A=#$00
0F5043JSL $C331B9SR: $0331B9
0F5047CLCc=off
0F5048RTLreturn

  • SR: $03FE19 スタートボタン入力の場合にSRオフセットを差し替え(新SR)
03FE19LDA #$0010A=#$0010
03FE1CAND $2A68A&=$2A68
03FE1FBNE #$04if(z==off) goto $03FE25
03FE21LDX $2A98X=$2A98
03FE24RTSreturn
03FE25LDX #$0012X=#$0012
03FE28RTSreturn
  • SR: $0F5016 登録処理中で名前入力中か(該当c=on)(新SR)(省略)

コメント

タイトルとURLをコピーしました