メインの部分の説明は前回で終わりなのですが、まあ一応実装までやってしまいます。今回は前回の3,4にあたる配列の拡張がメインです。「実行後追加処理を行う戦闘行動配列の拡張」は以前ぐんたいよびの実装で既に行っていたので割愛します。
- 敵の対象決定処理SRアドレスリストの移動→$0237FCに移動、配列サイズを128に拡張
- SR: $02695A モンスター行動選択?
略 | |||
---|---|---|---|
02695A | CMP #$004D | A>=#$004D? | ←思考ルーチンのインデックスの最大値?これも変えないと次の行でフリーズする? |
02695D | BCS #$FE | if(c==on) goto $02695D | |
02695F | ASL | A<<1 | |
026960 | TAX | X=A | |
026961 | LDY $2428 | Y=$2428 | |
026964 | JSR $37FC | SR: $($0237FC+X) | |
026967 | BCC #$07 | if(c==off) goto $026970 | |
026969 | LDA #$0040 | A=#$0040 | |
02696C | STA $2430 | $2430=A | |
02696F | SEC | c=on | |
026970 | RTS | return | |
略 |
Xには戦闘行動の「思考ルーチンのインデックス×2」が入ります。$02695B-Cの値はおそらく思考ルーチンのインデックス最大値+1を設定しないといけないみたいです。この値を変えずに思考ルーチンを追加していくとフリーズします。思考ルーチンを1つ追加するごとにこの値もインクリメントしていくのが安全でしょう。
尻すぼみな印象がぬぐえませんが、他に特に説明することもないのでこれで終わります。質問があれば米欄もしくはメールでどうぞ。
コメント