地味にDQ3の難度を下げているという批判の多いふくろ中のアイテム数の最大値を特定のアイテム(すごろく券、メダル、各種種)以外を9個に制限します。ほとんど同じ修正が改造人間氏のバージョンで実現されてますが、今回は作者が種廚なので種も例外にします。
- SR: $0453BA アイテムを袋に入れる
略 | |||
---|---|---|---|
0453D0 | JSR $FEA5 | SR: $04FEA5 | |
0453D3-D9 | NOP | ||
略 |
- SR: $04FEA5 袋に入れるアイテム数のクリップ処理(新SR)
04FEA5 | CMP #$B2 | A==#$B2? | ちからの種 |
---|---|---|---|
04FEA7 | BEQ #$22 | if(z==on) goto $04FECB | |
04FEA9 | CMP #$B3 | A==#$B3? | すばやさの種 |
04FEAB | BEQ #$1E | if(z==on) goto $04FECB | |
04FEAD | CMP #$B4 | A==#$B4? | スタミナの種 |
04FEAF | BEQ #$1A | if(z==on) goto $04FECB | |
04FEB1 | CMP #$B5 | A==#$B5? | ラックの種 |
04FEB3 | BEQ #$16 | if(z==on) goto $04FECB | |
04FEB5 | CMP #$B6 | A==#$B6? | かしこさの種 |
04FEB7 | BEQ #$12 | if(z==on) goto $04FECB | |
04FEB9 | CMP #$B7 | A==#$B7? | 命の木の実 |
04FEBB | BEQ #$0E | if(z==on) goto $04FECB | |
04FEBD | CMP #$D0 | A==#$D0? | 小さなメダル |
04FEBF | BEQ #$0A | if(z==on) goto $04FECB | |
04FEC1 | CMP #$D5 | A==#$D5? | 不思議な木の実 |
04FEC3 | BEQ #$06 | if(z==on) goto $04FECB | |
04FEC5 | CMP #$E4 | A==#$E4? | すごろく券 |
04FEC7 | BEQ #$02 | if(z==on) goto $04FECB | |
04FEC9 | BRA #$0B | goto $04FED6 | |
04FECB | LDA $3825,X | A=$3825+X | |
04FECE | INC | A++ | |
04FECF | CMP #$63 | A>=#$63? | |
04FED1 | BCC #$02 | if(c==off) goto $04FED5 | |
04FED3 | LDA #$63 | A=#$63 | |
04FED5 | RTS | return | |
04FED6 | LDA $3825,X | A=$3825+X | |
04FED9 | INC | A++ | |
04FEDA | CMP #$09 | A>=#$09? | |
04FEDC | BCC #$02 | if(c==off) goto $04FEE0 | |
04FEDE | LDA #$09 | A=#$09 | |
04FEE0 | RTS | return |
実装はかなり簡単です。$7E3725+Xに袋中のアイテムの種別、$7E3825+Xに対応するアイテムの個数が入っている、ということがわかっていればあとはただの作業です。SR: $04FEA5に入った時点でAレジスタにはアイテムID、Xにはそのアイテムの袋中のインデックスがセットされている状態です。ちなみに、「袋中のアイテム数を例外なく9個を最大にする」場合は単に$0453D5を#$63から#$09に変えるだけでOKです。なお、この実装をしてもすでにセーブデータの中で規定個数をオーバーしている場合にはそのアイテムを新たに袋に入れるまではアイテム数はクリップされません。
コメント
「ふくろのアイテム数を特定のアイテムを除き9個に制限する処理」は
別アドレスに移動したのでしょうか?
ちょっと覚えていません。袋にアイテムを入れる処理から追っていってください。