DQ3戦闘部分解説6

最近モチベーションが低下気味でDQ6インターフェース改良パッチのテストプレイと称したDQ6再プレイぐらいしかしていません。一応本編はエンディングを迎え、一通りイベントアイテムもふくろから使用して問題ないことは確認できました。この後はまとめ買いの取り込みか、DQ4^{-}用に調整ですかね。他にもアレをアレすることも挑戦中なのでやることはいろいろあります。

さて、続きをやります。

  • SR: $025CC0 ターン開始時処理?
025CC0PHPPush P Flag
025CC1PHBPush DB
025CC2REP #$30m=off(A/M:16b) x=off(X/Y:16b)
025CC4PEA #$7E7EPush #$7E7E
025CC7PLBPull DB
025CC8PLBPull DB
025CC9JSL $C322C6SR: $0322C6 引数:1#$51ウィンドウ消去
025CCELDX #$0017X=#$0017
025CD1JSL $C2CAD9SR: $02CAD9 引数:1#$2050 引数:2#$0002存在フラグチェック?
025CD9BEQ #$1Fif(z==on) goto $025CFA
025CDBJSL $C2B52DSR: $02B52D
025CDFLDA #$0000A=#$0000
025CE2JSL $C2CB70SR: $02CB70 引数:1#$2050 引数:2#$0080戦闘中キャラクター情報変更
025CEAJSL $C2CB70SR: $02CB70 引数:1#$2050 引数:2#$0020戦闘中キャラクター情報変更
025CF2JSL $C2CB70SR: $02CB70 引数:1#$2052 引数:2#$0080戦闘中キャラクター情報変更
025CFADEXX–
025CFBBPL #$D4if(n==off) goto $025CD1
025CFDPEA #$23ACPush #$23AC
025D00PEA #$0018Push #$0018
025D03PEA #$7E00Push #$7E00
025D06JSL $C9029ESR: $09029ERAM上情報取得(アストロン残りターン数)
025D0ADECA–
025D0BBMI #$1Dif(n==on) goto $025D2A
025D0DPHPPush P Flag
025D0EPEA #$23ACPush #$23AC
025D11PEA #$0018Push #$0018
025D14PEA #$7E00Push #$7E00
025D17JSL $C902E9SR: $0902E9RAM上情報変更(アストロン残りターン数)
025D1BPLPPull P Flag
025D1CBNE #$0Cif(z==off) goto $025D2A
025D1ELDA #$0042A=#$0042アストロンの戦闘行動ID
025D21STA $23E4$23E4=A
025D24JSL $C1A867SR: $01A867 引数:1#$006F戦闘メッセージ表示「アストロンが解けた」
025D2APEA #$23ACPush #$23AC
025D2DPEA #$0007Push #$0007
025D30PEA #$7E00Push #$7E00
025D33JSL $C9029ESR: $09029ERAM上情報取得(時間停止残りターン数)
025D37DECA–
025D38BMI #$0Dif(n==on) goto $025D47
025D3APEA #$23ACPush #$23AC
025D3DPEA #$0007Push #$0007
025D40PEA #$7E00Push #$7E00
025D43JSL $C902E9SR: $0902E9RAM上情報変更(時間停止残りターン数)
025D47STZ $23B0$23B0=#$00
025D4ASTZ $23B2$23B2=#$00
025D4DSTZ $23B4$23B4=#$00
025D50STZ $23B6$23B6=#$00
025D53PLBPull DB
025D54PLPPull P Flag
025D55RTLreturn

  • SR: $025DEE 戦闘コマンド入力処理
025DEEPHPPush P Flag
025DEFREP #$30m=off(A/M:16b) x=off(X/Y:16b)
025DF1PHAPush A
025DF2PHXPush X
025DF3PHYPush Y
025DF4PHBPush DB
025DF5PEA #$7E7EPush #$7E7E
025DF8PLBPull DB
025DF9PLBPull DB
025DFAPEA #$23ABPush #$23AB
025DFDPEA #$0030Push #$0030
025E00PEA #$7E00Push #$7E00
025E03JSL $C9029ESR: $09029ERAM上情報取得(先制強襲情報取得)
025E07CMP #$0002A>=#$0002?強襲だったらコマンド入力スキップ
025E0ABCS #$44if(c==on) goto $025E50
025E0CJSL $C2B9A6SR: $02B9A6パーティ人数取得
025E10TAXX=A
025E11LDY #$0000Y=#$0000
025E14DEXX–
025E15BMI #$39if(n==on) goto $025E50
025E17JSR $5E63SR: $025E63コマンド入力可能かチェック
025E1ABCS #$2Eif(c==on) goto $025E4A
025E1CJSL $C2B931SR: $02B931
025E20PHXPush X
025E21LDX $2428X=$2428
025E24JSL $C2B52DSR: $02B52D戦闘中キャラクター行動情報初期化
025E28PLXPull X
025E29STY $33B8$33B8=Y
025E2CJSL $C32251SR: $032251 引数:1#$2Cウィンドウ表示(AにリターンメニューIDセット)
025E31BCS #$25if(c==on) goto $025E58
025E33PHXPush X
025E34LDX #$000AX=#$000A
025E37CMP $C25EAB,XA==$025EAB+X?メニューID配列と比較
025E3BBEQ #$07if(z==on) goto $025E44
025E3DDEXX–
025E3EDEXX–
025E3FBPL #$F6if(n==off) goto $025E37
025E41LDX #$0000X=#$0000
025E44JSR $5EB7SR: $($025EB7+X)各コマンド処理SRを呼び出し
025E47PLXPull X
025E48BCS #$D6if(c==on) goto $025E20
025E4AINYY++
025E4BCPY #$0004Y>=#$0004?
025E4EBCC #$C4if(c==off) goto $025E14
025E50PLBPull DB
025E51REP #$30m=off(A/M:16b) x=off(X/Y:16b)
025E53PLYPull Y
025E54PLXPull X
025E55PLAPull A
025E56PLPPull P Flag
025E57RTLreturn
025E58DEYY–
025E59BMI #$B1if(n==on) goto $025E0C
025E5BINXX++
025E5CJSR $5E63SR: $025E63コマンド入力可能かチェック
025E5FBCS #$F7if(c==on) goto $025E58
025E61BRA #$B9goto $025E1C

  • SR: $025E63 コマンド入力可能かチェック(不能c=on)
025E63PHXPush X
025E64JSL $C2AF66SR: $02AF66対象者の戦闘中キャラクタインデックスをXに取得
025E68STX $2428$2428=X
025E6BJSL $C2B416SR: $02B416行動主体者が味方かつドラゴラム中かチェック
025E6FBCS #$37if(c==on) goto $025EA8
025E71JSL $C2BE8ASR: $02BE8A 引数:1#$1C生死判定(死亡c=on)
025E76BCS #$30if(c==on) goto $025EA8
025E78JSL $C2BE8ASR: $02BE8A 引数:1#$20アストロン残りターンがあるか?(該当c=on)
025E7DBCS #$29if(c==on) goto $025EA8
025E7FJSL $C2BE8ASR: $02BE8A 引数:1#$16麻痺判定(麻痺c=on)
025E84BCS #$1Eif(c==on) goto $025EA4
025E86JSL $C2CAD9SR: $02CAD9 引数:1#$2047 引数:2#$00FF眠りの深さ取得
025E8EBNE #$14if(z==off) goto $025EA4
025E90JSL $C2CAD9SR: $02CAD9 引数:1#$2052 引数:2#$0002?
025E98BNE #$0Aif(z==off) goto $025EA4
025E9AJSL $C2BE8ASR: $02BE8A 引数:1#$26時間を止めたキャラクターでない(該当c=on)
025E9FBCS #$03if(c==on) goto $025EA4
025EA1PLXPull X
025EA2CLCc=off
025EA3RTSreturn
025EA4JSL $C2B4F1SR: $02B4F1
025EA8PLXPull X
025EA9SECc=on
025EAARTSreturn

ただ分量が多いだけで、まあ「こうなんじゃない?」という感じです。以前あげた前知識と付き合わせればやってることは理解できるはず。長いのでとりあえずここまで。しかしまだ戦闘は開始していません。

スポンサーリンク

コメントを書く

メールアドレスが公開されることはありません。コメントは管理者の承認後表示されます。