成長限界上昇パッチ 一覧

DQ3成長限界上昇パッチの拡張4

前回で力の実装は終わりました。後は似たような作業を全ステータスに対して行えばいいのですが、DQ3ではちからを上げる装飾品は存在しません。したがってステータス画面上で地のステータスと表示されるステータス値の乖離はないので他に比べて処理が1つ単純になっています。というわけで、素早さなどは「ステータス画面上に表示される値の作成」のSRをちょっと変える必要があります。

  • SR: $04353A ステータス画面上の体力作成
04353AJSR $354CSR: $04354C
04353DLDY #$0006Y=#$0006
043540JSR $36D0SR: $0436D0
043543JSL $C5FD0ASR: $05FD0A
043547NOP
043548NOP
043549NOP
04354ANOP
04354BRTLreturn

続きを読む


DQ3成長限界上昇パッチとバランス調整3(追加)

コメントで教えてもらった運のよさの件ですが、バイナリwikiに書いてありましたね。灯台もと暗しというやつです。返事を書きがてら、いままでまじめに見てなかった運のよさ依存の成功率の処理を見てみることにします。

  • SR: $02C51E 運のよさ依存処理
02C51EPHAPush A
02C51FLDX $242AX=$242A
02C522JSL $C2CC25SR: $02CC25 引数:1#$187B 引数:2#$0010
02C52ABEQ #$2Dif(z==on) goto $02C559
02C52CJSL $C438FBSR: $0438FB 引数:1#$06 引数:2#$FD 引数:3#$FF
02C533STA $6ADP($6A)=A
02C535LDA #$0140A=#$0140
02C538SECc=on
02C539SBC $6AA-=(DP($6A)+c)
02C53BSTA $6ADP($6A)=A
02C53DLDA $242AA=$242A
02C540CMP #$002EA==#$002E?
02C543BEQ #$16if(z==on) goto $02C55B
02C545LDX #$006AX=#$006A
02C548LDA $01,SA=Stack($01)
02C54AJSL $C01146SR: $001146
02C54ELDA #$0140A=#$0140
02C551JSL $C01295SR: $001295
02C555LDA $6AA=DP($6A)
02C557STA $01,SStack($01)=A
02C559PLAPull A
02C55ARTSreturn

$02C522で現在の戦闘行動が運のよさに依存するかを調べて依存していなければすぐにSRを出てしまいます。依存していれば運のよさを取得し、それを320から引いています。$2C53Dからは現在の戦闘行動がザオラルかを調べてザオラルであれば以下略の部分に処理を飛ばしています。それ以外の場合は320-運のよさを成功率とかけた値を320で割っています。つまり

成功率*(320-運のよさ)/320

ということですね。wikiのほうは書き間違いでしょう(諸事情によりwikiが更新できないのでどなたか更新お願いします)勘違いでした。wikiのほうは

成功率*(1-(運のよさ/320))

という意味で書いているようですね(ちょっと紛らわしいですが)。コメントをくれた方は320の部分を500に変えてプレイしてあまり差は感じられなかったとのことなので、非常に参考になりました。


スポンサーリンク

DQ3成長限界上昇パッチの拡張3

前回の実装で新規に作成した職業別ステータス最大値構造体から力を取得するSRの定義は終わりました。次にこのSRを45氏が拡張した部分に埋め込みます。

  • SR: $04F82F 力取得
04F82FXBAExchange A(HighByte) and A(LowByte)
04F830SEP #$20m=on(A/M:8b)
04F832LDA $0011,XA=$0011+X
04F835AND #$01A&=#$01
04F837REP #$20m=off(A/M:16b)
04F839XBAExchange A(HighByte) and A(LowByte)
04F83AJSL $C5FCF0SR: $05FCF0
04F83ENOP
04F83FNOP
04F840NOP
04F841NOP
04F842RTSreturn

変更している部分は後半部分です。変更前は$04F839で作成した力の値(9ビット)が500以上かを調べて500以上だったら500を返すという処理をしていました。というわけでこの部分を変更してSR: $05FD4Bを呼ぶように変えます。これで職業別ステータス最大値構造体の力の値でクリップされるようになるはずです。というわけで早速試してみました。

20090509203120.jpg

続きを読む


DQ3成長限界上昇パッチの拡張2

今回から実装を行います。実装は大きく分けて以下の3つに分けられます。

  • 職業別ステータス最大値構造体の定義とそのアクセスSR実装
  • 成長限界パッチとの連動
  • その他ステータス変更部分との調整

というわけでまずは1番目から実装していきます。構造体の場所ですが、バンク$04は結構余裕がないのでバンク$05の後ろを使うことにしました。構造体の定義は以下のようにします。

続きを読む


スポンサーリンク

DQ3成長限界上昇パッチの拡張1

ある程度実装の目途が立ったのと、単独で公開できる変更なので順番を前倒しにしました。45氏作成のDQ3成長限界上昇パッチを拡張して以下のことができるようにします。

  • 職業別のステータス最大値を個別に設定できるようにする。
  • ステータス最大値の設定はデータ構造体にして簡単に変更できるようにする。
  • 86氏の拡張パッチにも対応する。
  • 職業別のステータス最大値の設定に加えて「システム最大値」を別途設定できるようにする。

職業別ステータス最大値を個別に設定できるようにすれば、例えば守備力に関係するステータスを戦士と魔法使いで差(戦士はMAX400,魔法使いはMAX200とか)をつけることにより、重装備と紙装甲のアクセントをよりつけやすくなるので、職業間のメリットデメリットを強調できるようになります。改造人間氏のDQ3改造版のように種・すごろくでのステータスアップを禁止して各職業の成長データをいじれば同様のことができますが、DQ3に関しては自分が余りに好き過ぎてステータスMAX厨なので*1こういう仕様にしました。さて、最大値の設定に関してはデータを1ヵ所に固めて構造体にすることでプログラムをいじらないでも最大値を変えられるようにします。また、86氏の拡張パッチで設定されている追加職業についても設定できるようにします。最後にもう1点、「システム最大値」という考えを導入することにしました。ステータス画面で表示されるステータス値は地のステータス+装飾品による上昇値分の合計値ですが、オリジナルのDQ3ではシステム上の最大値とステータスの最大値がどちらも255なので、地のステータスが255になるとこれらの装飾品は装備する意味がありません。しかし、例えばシステム上の最大値が511だった場合、例えば運のよさ255のキャラクターが幸せの靴(運のよさ+50)を装備した場合に、ステータス画面上の表示は305になります。こうすることでステータスがMAXになっても装飾品が意味をなくすことを防ぐことができます。これは1つの案でベストかどうかわからないですが、試行錯誤を簡単にできるようにするのは意味はあると思います。

*1:種集めは苦しい作業ではありませんww


1 2 3