DQ3 ふくろのアイテム数を特定のアイテムを除き9個に制限する

地味に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です。なお、この実装をしてもすでにセーブデータの中で規定個数をオーバーしている場合にはそのアイテムを新たに袋に入れるまではアイテム数はクリップされません。

コメント

  1. ガイル より:

    「ふくろのアイテム数を特定のアイテムを除き9個に制限する処理」は
    別アドレスに移動したのでしょうか?

    管理者より返信:

    ちょっと覚えていません。袋にアイテムを入れる処理から追っていってください。