仲間キャラクターが32体以上になると一部問題があることがわかったので修正しました。
以前の投稿で発見した「32体目以降の仲間の現在MPを正しく取得できない」などの問題を修正しました。「
ダウンロード」ページにうpしてあります。意外と変更箇所が少なかったのは幸いでした。例によって正式リリース予定日をドキュメントに先行して書いてあります。

- SR:$02C1EC 現MPが消費MP以上か(該当c=on)
| 略 |
|
|
|
| 02C227 |
LDA $2061,X |
A=$2061+X |
|
| 02C22A |
AND #$001F |
A&=#$001F |
|
| 略 |
|
|
|
| 略 |
|
|
|
| 02C7FB |
LDA $2061,X |
A=$2061+X |
|
| 02C7FE |
AND #$001F |
A&=#$001F |
|
| 略 |
|
|
|
| 略 |
|
|
|
| 02EBA8 |
LDA $2061,Y |
A=$2061+Y |
|
| 02EBAB |
AND #$001F |
A&=#$001F |
|
| 略 |
|
|
|
- SR:$02EEC1 ターゲット情報ビットマスク判定_SR_0032
| 略 |
|
|
|
| 02EEC9 |
JSR $FFEE |
SR: $02FFEE |
|
| 02EECC |
PHY |
Push Y |
|
| 02EECD |
TAY |
Y=A |
|
| 02EECE |
JSL $C476C8 |
SR: $0476C8 |
|
| 02EED2 |
PLY |
Pull Y |
|
| 02EED3 |
CMP #$0010 |
A==#$0010? |
|
| 02EED6 |
BNE #$02 |
if(z==off) goto $02EEDA |
|
| 02EED8 |
SEC |
c=on |
|
| 02EED9 |
RTS |
return |
|
| 02EEDA |
CLC |
c=off |
|
| 02EEDB |
RTS |
return |
|
この中で気になるのは一番最後のSRで、$7E2061の値をAレジスタにセットして#$0x1Fでマスクしていません。上位ビットは毒や猛毒状態、アイテムを使用するとONになるようなので、この場合には意図しない場所のアドレスの値から値を取ってくることになります。その後は職業IDを取得してスーパースターならONにするということをしているようです。このSRを使っている箇所がないか探してみたところ、以下のSRがヒットしました。
| 略 |
|
|
|
| 025862 |
JSL $C2E966 |
SR: $02E966 引数:1#$64 |
|
| 略 |
|
|
|
この前後では例によって「戦闘参加者」「死人は除外」「麻痺中は除外」などの条件で対象者がいるかを判定する情報を作成しています。その中でSR:$02EEC1がコールされるわけですが、上位ビットがONになっているスーパースターは対象外になるorスーパースターでもないのに対象になる可能性があります。もともと発生確率はあまり高くない(熟練度8でも1/16・ボス戦では発動しない)のであまり表面化しないのかもしれません。基本的にはDQ6_Extendedでは元のゲーム性には手を付けないというのがお約束ですが、意図しないアドレスの値を参照するということもあり、仲間キャラクター数増加の対処の一環として今回のバージョンでこの問題は修正しています。
(2016-08-06追記)
rc2に差し替えました。戦闘中のアイテム使用部分に関して9bit化が漏れていたので修正しました。また、リリース予定日を月末に変えています。
(2016-08-13追記)
rc3に差し替えました。戦闘中装備しなおした後のステータスリセット時の処理に潜在的な問題が見つかったので修正しました。
(2016-08-31追記)
正式リリース版に差し替えました。rc3から変更はありません。
コメント
いつも楽しく拝見&お世話になっております。
DQ6 Extended 0.9.1を使わせていただいて
SFCGENEditorで改造を楽しんでいます。
戦闘行動の欄にメラなどの呪文や特技の性能を弄れるところがありますが
呪文や特技のグループ化や全体化はどうやって設定するのでしょうか?
AI判断用の所を見ると
バギ系、ギラ系、ヒャダルコが02となっており
これがグループ対象なのかと推測しましたがためしにヒャドを02に変えても変化せず・・・。
かといって他にそれらしい設定欄もないのでわからなくなってしまいました。
戦闘行動の単体化、グループ化、全体化の設定の仕方をお教えください。
(お暇なときでいいので・・・)
単に定義が漏れているだけです。戦闘行動の7バイト目下位2ビットが相当します。DQ6 Extended 0.9.1にバグが有るようなので近々リリースを行う予定ですが、そこに含めます。
正式リリース版にテストパッチを当ててプレイしているのですが
敵を状態異常にした時にフリーズしてしまいます
http://www.dotup.org/uploda/www.dotup.xxxx.html
(注:管理者がURLを変更しました)
↑のステートセーブではモコモコ獣Eを麻痺状態にしていますが
コマンドを選び戦闘に入った瞬間フリーズします(逃げるを選べば問題ない)
snes9x151d3d_asを使用しています
ステートの送付ありがとうございました。手元でも現象が発生することを確認しました。デバッグを開始します。