最近モチベーションが低下気味でDQ6インターフェース改良パッチのテストプレイと称したDQ6再プレイぐらいしかしていません。一応本編はエンディングを迎え、一通りイベントアイテムもふくろから使用して問題ないことは確認できました。この後はまとめ買いの取り込みか、DQ4^{-}用に調整ですかね。他にもアレをアレすることも挑戦中なのでやることはいろいろあります。
さて、続きをやります。
- SR: $025CC0 ターン開始時処理?
| 025CC0 | PHP | Push P Flag | |
|---|---|---|---|
| 025CC1 | PHB | Push DB | |
| 025CC2 | REP #$30 | m=off(A/M:16b) x=off(X/Y:16b) | |
| 025CC4 | PEA #$7E7E | Push #$7E7E | |
| 025CC7 | PLB | Pull DB | |
| 025CC8 | PLB | Pull DB | |
| 025CC9 | JSL $C322C6 | SR: $0322C6 引数:1#$51 | ウィンドウ消去 |
| 025CCE | LDX #$0017 | X=#$0017 | |
| 025CD1 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2050 引数:2#$0002 | 存在フラグチェック? |
| 025CD9 | BEQ #$1F | if(z==on) goto $025CFA | |
| 025CDB | JSL $C2B52D | SR: $02B52D | |
| 025CDF | LDA #$0000 | A=#$0000 | |
| 025CE2 | JSL $C2CB70 | SR: $02CB70 引数:1#$2050 引数:2#$0080 | 戦闘中キャラクター情報変更 |
| 025CEA | JSL $C2CB70 | SR: $02CB70 引数:1#$2050 引数:2#$0020 | 戦闘中キャラクター情報変更 |
| 025CF2 | JSL $C2CB70 | SR: $02CB70 引数:1#$2052 引数:2#$0080 | 戦闘中キャラクター情報変更 |
| 025CFA | DEX | X– | |
| 025CFB | BPL #$D4 | if(n==off) goto $025CD1 | |
| 025CFD | PEA #$23AC | Push #$23AC | |
| 025D00 | PEA #$0018 | Push #$0018 | |
| 025D03 | PEA #$7E00 | Push #$7E00 | |
| 025D06 | JSL $C9029E | SR: $09029E | RAM上情報取得(アストロン残りターン数) |
| 025D0A | DEC | A– | |
| 025D0B | BMI #$1D | if(n==on) goto $025D2A | |
| 025D0D | PHP | Push P Flag | |
| 025D0E | PEA #$23AC | Push #$23AC | |
| 025D11 | PEA #$0018 | Push #$0018 | |
| 025D14 | PEA #$7E00 | Push #$7E00 | |
| 025D17 | JSL $C902E9 | SR: $0902E9 | RAM上情報変更(アストロン残りターン数) |
| 025D1B | PLP | Pull P Flag | |
| 025D1C | BNE #$0C | if(z==off) goto $025D2A | |
| 025D1E | LDA #$0042 | A=#$0042 | アストロンの戦闘行動ID |
| 025D21 | STA $23E4 | $23E4=A | |
| 025D24 | JSL $C1A867 | SR: $01A867 引数:1#$006F | 戦闘メッセージ表示「アストロンが解けた」 |
| 025D2A | PEA #$23AC | Push #$23AC | |
| 025D2D | PEA #$0007 | Push #$0007 | |
| 025D30 | PEA #$7E00 | Push #$7E00 | |
| 025D33 | JSL $C9029E | SR: $09029E | RAM上情報取得(時間停止残りターン数) |
| 025D37 | DEC | A– | |
| 025D38 | BMI #$0D | if(n==on) goto $025D47 | |
| 025D3A | PEA #$23AC | Push #$23AC | |
| 025D3D | PEA #$0007 | Push #$0007 | |
| 025D40 | PEA #$7E00 | Push #$7E00 | |
| 025D43 | JSL $C902E9 | SR: $0902E9 | RAM上情報変更(時間停止残りターン数) |
| 025D47 | STZ $23B0 | $23B0=#$00 | |
| 025D4A | STZ $23B2 | $23B2=#$00 | |
| 025D4D | STZ $23B4 | $23B4=#$00 | |
| 025D50 | STZ $23B6 | $23B6=#$00 | |
| 025D53 | PLB | Pull DB | |
| 025D54 | PLP | Pull P Flag | |
| 025D55 | RTL | return |
- SR: $025DEE 戦闘コマンド入力処理
| 025DEE | PHP | Push P Flag | |
|---|---|---|---|
| 025DEF | REP #$30 | m=off(A/M:16b) x=off(X/Y:16b) | |
| 025DF1 | PHA | Push A | |
| 025DF2 | PHX | Push X | |
| 025DF3 | PHY | Push Y | |
| 025DF4 | PHB | Push DB | |
| 025DF5 | PEA #$7E7E | Push #$7E7E | |
| 025DF8 | PLB | Pull DB | |
| 025DF9 | PLB | Pull DB | |
| 025DFA | PEA #$23AB | Push #$23AB | |
| 025DFD | PEA #$0030 | Push #$0030 | |
| 025E00 | PEA #$7E00 | Push #$7E00 | |
| 025E03 | JSL $C9029E | SR: $09029E | RAM上情報取得(先制強襲情報取得) |
| 025E07 | CMP #$0002 | A>=#$0002? | 強襲だったらコマンド入力スキップ |
| 025E0A | BCS #$44 | if(c==on) goto $025E50 | |
| 025E0C | JSL $C2B9A6 | SR: $02B9A6 | パーティ人数取得 |
| 025E10 | TAX | X=A | |
| 025E11 | LDY #$0000 | Y=#$0000 | |
| 025E14 | DEX | X– | |
| 025E15 | BMI #$39 | if(n==on) goto $025E50 | |
| 025E17 | JSR $5E63 | SR: $025E63 | コマンド入力可能かチェック |
| 025E1A | BCS #$2E | if(c==on) goto $025E4A | |
| 025E1C | JSL $C2B931 | SR: $02B931 | |
| 025E20 | PHX | Push X | |
| 025E21 | LDX $2428 | X=$2428 | |
| 025E24 | JSL $C2B52D | SR: $02B52D | 戦闘中キャラクター行動情報初期化 |
| 025E28 | PLX | Pull X | |
| 025E29 | STY $33B8 | $33B8=Y | |
| 025E2C | JSL $C32251 | SR: $032251 引数:1#$2C | ウィンドウ表示(AにリターンメニューIDセット) |
| 025E31 | BCS #$25 | if(c==on) goto $025E58 | |
| 025E33 | PHX | Push X | |
| 025E34 | LDX #$000A | X=#$000A | |
| 025E37 | CMP $C25EAB,X | A==$025EAB+X? | メニューID配列と比較 |
| 025E3B | BEQ #$07 | if(z==on) goto $025E44 | |
| 025E3D | DEX | X– | |
| 025E3E | DEX | X– | |
| 025E3F | BPL #$F6 | if(n==off) goto $025E37 | |
| 025E41 | LDX #$0000 | X=#$0000 | |
| 025E44 | JSR $5EB7 | SR: $($025EB7+X) | 各コマンド処理SRを呼び出し |
| 025E47 | PLX | Pull X | |
| 025E48 | BCS #$D6 | if(c==on) goto $025E20 | |
| 025E4A | INY | Y++ | |
| 025E4B | CPY #$0004 | Y>=#$0004? | |
| 025E4E | BCC #$C4 | if(c==off) goto $025E14 | |
| 025E50 | PLB | Pull DB | |
| 025E51 | REP #$30 | m=off(A/M:16b) x=off(X/Y:16b) | |
| 025E53 | PLY | Pull Y | |
| 025E54 | PLX | Pull X | |
| 025E55 | PLA | Pull A | |
| 025E56 | PLP | Pull P Flag | |
| 025E57 | RTL | return | |
| 025E58 | DEY | Y– | |
| 025E59 | BMI #$B1 | if(n==on) goto $025E0C | |
| 025E5B | INX | X++ | |
| 025E5C | JSR $5E63 | SR: $025E63 | コマンド入力可能かチェック |
| 025E5F | BCS #$F7 | if(c==on) goto $025E58 | |
| 025E61 | BRA #$B9 | goto $025E1C |
- SR: $025E63 コマンド入力可能かチェック(不能c=on)
| 025E63 | PHX | Push X | |
|---|---|---|---|
| 025E64 | JSL $C2AF66 | SR: $02AF66 | 対象者の戦闘中キャラクタインデックスをXに取得 |
| 025E68 | STX $2428 | $2428=X | |
| 025E6B | JSL $C2B416 | SR: $02B416 | 行動主体者が味方かつドラゴラム中かチェック |
| 025E6F | BCS #$37 | if(c==on) goto $025EA8 | |
| 025E71 | JSL $C2BE8A | SR: $02BE8A 引数:1#$1C | 生死判定(死亡c=on) |
| 025E76 | BCS #$30 | if(c==on) goto $025EA8 | |
| 025E78 | JSL $C2BE8A | SR: $02BE8A 引数:1#$20 | アストロン残りターンがあるか?(該当c=on) |
| 025E7D | BCS #$29 | if(c==on) goto $025EA8 | |
| 025E7F | JSL $C2BE8A | SR: $02BE8A 引数:1#$16 | 麻痺判定(麻痺c=on) |
| 025E84 | BCS #$1E | if(c==on) goto $025EA4 | |
| 025E86 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2047 引数:2#$00FF | 眠りの深さ取得 |
| 025E8E | BNE #$14 | if(z==off) goto $025EA4 | |
| 025E90 | JSL $C2CAD9 | SR: $02CAD9 引数:1#$2052 引数:2#$0002 | ? |
| 025E98 | BNE #$0A | if(z==off) goto $025EA4 | |
| 025E9A | JSL $C2BE8A | SR: $02BE8A 引数:1#$26 | 時間を止めたキャラクターでない(該当c=on) |
| 025E9F | BCS #$03 | if(c==on) goto $025EA4 | |
| 025EA1 | PLX | Pull X | |
| 025EA2 | CLC | c=off | |
| 025EA3 | RTS | return | |
| 025EA4 | JSL $C2B4F1 | SR: $02B4F1 | |
| 025EA8 | PLX | Pull X | |
| 025EA9 | SEC | c=on | |
| 025EAA | RTS | return |
ただ分量が多いだけで、まあ「こうなんじゃない?」という感じです。以前あげた前知識と付き合わせればやってることは理解できるはず。長いのでとりあえずここまで。しかしまだ戦闘は開始していません。


コメント