前回マップの追加とギミックのひとつの封魔石関連について説明したので、今回はもうひとつのギミックであるB2Fにある「じごくのかぎ(仮)」でしか開かない扉の設定を実装します。幸いにして、定義できる鍵の種別にずいぶんと余裕があったので比較的作業は楽でした(1バイトのフィールドにもかかわらずデータは0-6までしかありませんでした)。
| ID |
ドア種別 |
X |
Y |
不明2 |
不明3 |
鍵種別 |
フロア内管理番号 |
| 154 |
3 |
61 |
97 |
0 |
0 |
7 |
0 |
新たに鍵種別「7」を追加します。さらに、各ドア種別に対応した処理SR群に鍵種別「7」の場合の処理を追加します。
- データ: $0896A6 ドア開閉関連処理SRアドレス群
| ID |
ドアを開けられるかチェックするSR |
ドアの前でアイテムを使用したときのSR |
| 07 |
CCFC72 |
CCFC84 |
- SR: $0CFC72 ドア種別7を開けられるかチェックするSR(新SR)
| 0CFC72 |
LDA #$00EA |
A=#$00EA |
じごくのかぎのアイテムID |
| 0CFC75 |
LDX #$0104 |
X=#$0104 |
|
| 0CFC78 |
JSL $C78238 |
SR: $078238 |
アイテム保持チェック(持っているc=on) |
| 0CFC7C |
BCS #$05 |
if(c==on) goto $0CFC83 |
|
| 0CFC7E |
JSL $CCA587 |
SR: $0CA587 |
鍵のかかった扉を開けられなかったときの処理 |
| 0CFC82 |
CLC |
c=off |
|
| 0CFC83 |
RTL |
return |
|
- SR: $0CFC84 ドアの前でアイテムを使用したときのSR(新SR)
| 0CFC84 |
LDA $C11B |
A=$C11B |
使用したアイテムID取得? |
| 0CFC87 |
CMP #$00EA |
A==#$00EA? |
アイテムIDがじごくのかぎか? |
| 0CFC8A |
BEQ #$02 |
if(z==on) goto $0CFC8E |
|
| 0CFC8C |
BRA #$03 |
goto $0CFC91 |
|
| 0CFC8E |
SEC |
c=on |
|
| 0CFC8F |
BRA #$01 |
goto $0CFC92 |
|
| 0CFC91 |
CLC |
c=off |
|
| 0CFC92 |
RTL |
return |
|
もっと大変かと思っていたのですが割とさっくり実装できました。次回はボス戦を実装して追加ダンジョン編は終わりです。
コメント