SFCDQ3ではなぜか「ゼニスの城」がアレフガルドより前に来ます。これが気持ち悪いということで一部のパッチではゼニスの城を一番後ろに移動させたりしていますが、別件でこのリストをいじる必要に迫られたのでどこで順番を決めているのか調べてみました。
- SR: $042C71 ルーラ先文字列IDをバッファにセット
略 | |||
---|---|---|---|
042CBB | TYX | X=Y | |
042CBC | LDA $C40019,X | A=$040019+X | |
042CC0 | TAX | X=A | |
042CC1 | LDA $C40000,X | A=$040000+X | |
略 |
意外というか、アイテム基本データ($040043-)の前にあった意味不明の少量のデータがルーラ先リストだったようです。実質関係しているのは$40001からです。1レコード1バイトで、それぞれルーラデータ($08A3AF-)のインデックスに対応しています(#$1F:アリアハン、#$04:レーベ)。というわけで、ゼニスの城を一番最後に持ってくるには、$40010の#$4Bを消して以降を1つずつ前にずらし、消した#$4Bを$40015に挿入してやればいいことになります。分かればなんということもないんですが、見つけるのに少し手間がかかりました。また、フロアデータ($08A6D4-)に「ルーラ登録ビット位置」というフィールドがありますが、おそらく、これはそのフロアに到達したときにルーラ候補先として立てるビットの位置のことを指しているようです。ルーラ実行時の候補リストの順番を変えたので、このビット位置も同時に変更しないと到達したフロアとルーラに追加される候補先の対応が取れなくなってしまうのであわせて変更する必要があります。ラダトームからリムルダールはフロアデータ($08A6D4-)に「ルーラ登録ビット位置」を(16-21→15-20)変更するだけでいいですが、ゼニスの城はフロア侵入時にビットが立つわけでないのでプログラムを変更する必要があります。「ゼニスの城」はゼニス王に初回に話し掛けたときにルーラ候補先に登録されます。ゼニス王との会話の中でルーラ候補先のビットをONにしている部分を変更します。
- SR: $0A38F1 NPC1_TalkSR_051B(ゼニス王の会話SR)
略 | |||
---|---|---|---|
0A3922 | LDA #$0010 | A=#$0015 | #$0010(16番目)から21番目に変更 |
0A3925 | JSL $C78D7D | SR: $078D7D | ルーラ候補先追加 |
略 |
コメント