追加ダンジョンクリアによってオリハルコンが入手できるため、マイラまで徒歩で行けば王者の剣が入手できます(オリハルコンの価格を低くして王者の剣入手にかかるコストを高くしました)。このタイミングで船の取得を可能にします。流れとしては
- 太陽の石入手後、カンダタに話し掛けて船の手配を依頼する
- 王者の剣入手後、カンダタに話し掛けて必要経費(20000G)を払えば船取得
となります。フラグを立てるだけのお使いイベント的なものです。 ポイントは
くらいですが、これもバイナリwikiにアレフガルドの船の座標のアドレスがばっちり出ているので苦労はしません。あと、若干カンダタのキャラを変えて勇者を「だんな」呼ばわりすることにしましたw。これといって難しいこともないので実装も本エントリで終わらせてしまいます。
- SR: $0A5DD4 ラダトーム2F進入時初期化処理
| 略 |
|
|
|
| 0A5DE3 |
JSL $CCF661 |
SR: $0CF661 |
ラダトーム2Fイベント設定・NPC他設定 |
| 0A5DE7-9 |
NOP |
|
|
| 略 |
|
|
|
- SR: $0CF661 ラダトーム2Fイベント設定・NPC他設定(新SR)
| 0CF661 |
JSL $C77843 |
SR: $077843 引数:1#$CAA5BD |
移動・宝箱・ドア・NPC上方設定用SRアドレス設定 |
| 0CF668 |
JSL $C7785F |
SR: $07785F 引数:1#$CDEEB6 |
イベント設定 |
| 0CF66F |
RTL |
return |
|
| 0CC9F1-3 |
NOP |
|
|
| 0CC9F4 |
JSL $CCF670 |
SR: $0CF670 |
ラダトーム2FNPC設定 |
| 0CC9F8 |
RTL |
return |
|
- SR: $0CF670 ラダトーム2FNPC設定(新SR)
| 0CF670 |
JSL $CCF4A5 |
SR: $0CF4A5 |
カンダタに船入手依頼中か調べる(該当c=on) |
| 0CF674 |
BCS #$07 |
if(c==on) goto $0CF67D |
|
| 0CF676 |
LDA #$0456 |
A=#$0456 |
|
| 0CF679 |
JSL $C75828 |
SR: $075828 |
NPC1設定 |
| 0CF67D |
RTL |
return |
|
- SR: $0B9CC4 NPC1_TalkSR_0456(カンダタのNPC)
| 略 |
|
|
|
| 0B9CE4 |
JSR $FA80 |
SR: $0BFA80 |
ラダトームカンダタ会話処理 |
| 略 |
|
|
|
- SR: $0BFA80 ラダトームカンダタ会話処理(新SR)
| 0BFA80 |
LDA $35B1 |
A=$35B1 |
|
| 0BFA83 |
AND #$0004 |
A&=#$0004 |
アレフガルドで船を手に入れた |
| 0BFA86 |
BEQ #$05 |
if(z==on) goto $0BFA8D |
|
| 0BFA88 |
BRK $1045 ($0B1045) |
goto $00FFE6(メッセージ表示) #$1045 |
|
| 0BFA8B |
BRA #$28 |
goto $0BFAB5 |
|
| 0BFA8D |
JSL $CCF64F |
SR: $0CF64F |
王者の剣を入手していてカンダタに船入手を依頼しているか(該当c=on) |
| 0BFA91 |
BCC #$29 |
if(c==off) goto $0BFABC |
|
| 0BFA93 |
BRK $1046 ($0B1046) |
goto $00FFE6(メッセージ表示) #$1046 |
|
| 0BFA96 |
JSL $C3226F |
SR: $03226F 引数:1#$16 引数:2#$12 |
ウィンドウ表示 |
| 0BFA9C |
JSL $C322C6 |
SR: $0322C6 引数:1#$16 |
ウィンドウ消去? |
| 0BFAA1 |
BCS #$14 |
if(c==on) goto $0BFAB7 |
|
| 0BFAA3 |
JSL $CDEEC8 |
SR: $0DEEC8 |
カンダタに船の代金20000Gを支払う処理(支払い完了c=on) |
| 0BFAA7 |
BCC #$09 |
if(c==off) goto $0BFAB2 |
|
| 0BFAA9 |
BRK $1047 ($0B1047) |
goto $00FFE6(メッセージ表示) #$1047 |
|
| 0BFAAC |
JSL $CCF362 |
SR: $0CF362 |
アレフガルド船取得処理 |
| 0BFAB0 |
BRA #$03 |
goto $0BFAB5 |
|
| 0BFAB2 |
BRK $1048 ($0B1048) |
goto $00FFE6(メッセージ表示) #$1048 |
|
| 0BFAB5 |
BRA #$03 |
goto $0BFABA |
|
| 0BFAB7 |
BRK $1049 ($0B1049) |
goto $00FFE6(メッセージ表示) #$1049 |
|
| 0BFABA |
BRA #$31 |
goto $0BFAED |
|
| 0BFABC |
LDA $3544 |
A=$3544 |
|
| 0BFABF |
AND #$0020 |
A&=#$0020 |
|
| 0BFAC2 |
BEQ #$30 |
if(z==on) goto $0BFAF4 |
|
| 0BFAC4 |
LDA $35B4 |
A=$35B4 |
|
| 0BFAC7 |
AND #$0040 |
A&=#$0040 |
|
| 0BFACA |
BNE #$0B |
if(z==off) goto $0BFAD7 |
|
| 0BFACC |
BRK $105A ($0B105A) |
goto $00FFE6(メッセージ表示) #$105A |
|
| 0BFACF |
LDA #$0040 |
A=#$0040 |
|
| 0BFAD2 |
TSB $35B4 |
A or $35B4 |
ラダトームのカンダタと会話した |
| 0BFAD5 |
BRA #$03 |
goto $0BFADA |
|
| 0BFAD7 |
BRK $1042 ($0B1042) |
goto $00FFE6(メッセージ表示) #$1042 |
|
| 0BFADA |
JSL $CDAC66 |
SR: $0DAC66 |
はい/いいえ選択処理(はいc=on) |
| 0BFADE |
BCC #$0F |
if(c==off) goto $0BFAEF |
|
| 0BFAE0 |
BRK $1043 ($0B1043) |
goto $00FFE6(メッセージ表示) #$1043 |
|
| 0BFAE3 |
LDA #$0080 |
A=#$0080 |
|
| 0BFAE6 |
TSB $35B3 |
A or $35B3 |
|
| 0BFAE9 |
JSL $CDADD8 |
SR: $0DADD8 |
カウンタに1000をセット |
| 0BFAED |
BRA #$03 |
goto $0BFAF2 |
|
| 0BFAEF |
BRK $1044 ($0B1044) |
goto $00FFE6(メッセージ表示) #$1044 |
|
| 0BFAF2 |
BRA #$09 |
goto $0BFAFD |
|
| 0BFAF4 |
BRK $07DE ($0B07DE) |
goto $00FFE6(メッセージ表示) #$07DE |
|
| 0BFAF7 |
LDA #$0040 |
A=#$0040 |
|
| 0BFAFA |
TSB $35B4 |
A or $35B4 |
|
| 0BFAFD |
RTS |
return |
|
- SR: $0CF58F NPC1_MoveSR_0456(カンダタのNPC)(新SR)
| 0CF58F |
COP |
goto $00FFE4 |
|
| 0CF590 |
JSL $CDAEB1 |
SR: $0DAEB1 |
カウンタが1000になるまで待機 |
| 0CF594 |
JSL $CCD392 |
SR: $0CD392 |
キャラクターイベント中移動フラグON |
| 0CF598 |
JSL $CCD35E |
SR: $0CD35E |
移動速度4/3倍セット |
| 0CF59C |
LDX #$0018 |
X=#$0018 |
|
| 0CF59F |
LDA #$0021 |
A=#$0021 |
|
| 0CF5A2 |
JSL $C75474 |
SR: $075474 |
キャラクター移動先座標指定 |
| 0CF5A6 |
JSL $CCD58C |
SR: $0CD58C |
指定座標にX軸→Y軸の順でキャラクター移動 |
| 0CF5AA |
LDX #$0022 |
X=#$0022 |
|
| 0CF5AD |
LDA #$001B |
A=#$001B |
|
| 0CF5B0 |
JSL $C75474 |
SR: $075474 |
キャラクター移動先座標指定 |
| 0CF5B4 |
JSL $CCD58C |
SR: $0CD58C |
指定座標にX軸→Y軸の順でキャラクター移動 |
| 0CF5B8 |
JSL $C1E32E |
SR: $01E32E 引数:1#$0053 |
BGM再生 |
| 0CF5BE |
JSL $C75930 |
SR: $075930 |
キャラクター消滅 |
| 0CF5C2 |
JSL $CDADE6 |
SR: $0DADE6 |
カウンタに2000をセット |
| 0CF5C6 |
RTL |
return |
|
- SR: $0DEEB6 ラダトーム2F追加イベント処理(新SR)
| 0DEEB6 |
COP |
goto $00FFE4 |
|
| 0DEEB7 |
JSL $CCE1D1 |
SR: $0CE1D1 |
イベント開始待ち? |
| 0DEEBB |
JSL $CDAED1 |
SR: $0DAED1 |
カウンタが2000になるまで待機 |
| 0DEEBF |
JSL $CDD65C |
SR: $0DD65C |
PC表示? |
| 0DEEC3 |
JSL $CCD298 |
SR: $0CD298 |
イベント終了時処理? |
| 0DEEC7 |
RTL |
return |
|
カンダタに船入手の依頼をする際にイベントを起こしていますが、きわめて簡単なので省略します。続いて王者の剣入手後の実装を行います(半分くらいは上に書いてしまっていますが)。
- SR: $0DEEC8 カンダタに船の代金20000G支払う処理(支払い完了c=on)(新SR)
| 0DEEC8 |
JSL $C45AB0 |
SR: $045AB0 引数:1#$70 |
所持金取得 |
| 0DEECD |
LDA $72 |
A=DP($72) |
|
| 0DEECF |
AND #$00FF |
A&=#$00FF |
|
| 0DEED2 |
CMP #$0001 |
A>=#$0001? |
所持金3バイト目が1以上(65536以上所持)か |
| 0DEED5 |
BCS #$0A |
if(c==on) goto $0DEEE1 |
|
| 0DEED7 |
LDA $70 |
A=DP($70) |
|
| 0DEED9 |
CMP #$4E20 |
A>=#$4E20? |
|
| 0DEEDC |
BCS #$03 |
if(c==on) goto $0DEEE1 |
|
| 0DEEDE |
CLC |
c=off |
|
| 0DEEDF |
BRA #$16 |
goto $0DEEF7 |
|
| 0DEEE1 |
SEP #$20 |
m=on(A/M:8b) |
|
| 0DEEE3 |
STZ $72 |
DP($72)=#$00 |
|
| 0DEEE5 |
REP #$20 |
m=off(A/M:16b) |
|
| 0DEEE7 |
LDA #$4E20 |
A=#$4E20 |
|
| 0DEEEA |
STA $70 |
DP($70)=A |
|
| 0DEEEC |
JSL $C45B66 |
SR: $045B66 引数:1#$70 |
所持金減額 |
| 0DEEF1 |
JSL $C32251 |
SR: $032251 引数:1#$12 |
ウィンドウ表示 |
| 0DEEF6 |
SEC |
c=on |
|
| 0DEEF7 |
RTL |
return |
|
- SR: $0CF362 アレフガルド船取得処理(新SR)
| 0CF362 |
LDA #$0004 |
A=#$0004 |
|
| 0CF365 |
TSB $35B1 |
A or $35B1 |
アレフガルドで船を入手したフラグON |
| 0CF368 |
LDA #$00C0 |
A=#$00C0 |
|
| 0CF36B |
STA $3516 |
$3516=A |
|
| 0CF36E |
LDA #$00DD |
A=#$00DD |
|
| 0CF371 |
STA $3522 |
$3522=A |
船の座標指定 |
| 0CF374 |
RTL |
return |
|
あと、船着場の親子のセリフもあわせて変更しておきます。

コメント