乱数表をリセットする際に乱数の現在位置はリセットしないように変更

乱数表をリセットする際に、乱数の現在位置をリセットしないように変更しました。

変更の目的

原作では乱数表をリセットしたあとは、常に乱数表の先頭から読み取られます。戦闘アニメがリアルの場合はマップに戻るたびに乱数表がリセットされるため、使用される乱数が偏り、プレイヤーにとって不利な当たり外れが発生しやすいと言われていました。

今回の変更によって、少なくとも常に同じ乱数を読むということはなくなったと思います。リセット後の乱数表に55個ある乱数のいずれかを参照するに留まることから完全にシャッフルできるわけではありませんが、やらないよりはマシでしょう。

具体的に何をやったのか

以下の処理を nop で潰しました。

80:B14A  9C A2 04	stz	$04A2		; RNIndex

JSL $80:B146 が乱数表をリセットする処理であり、$7e04A2 に保存されている乱数の参照位置を0にしているのが上記の処理です。

乱数調整について

従来の乱数調整は乱数の参照位置がリセットされることを前提としているため、そのやり方は通用しなくなりました。メモリビューアで見れば乱数の参照位置は一発で分かりますが、ゲームプレイ中に乱数を特定することはかなり困難になったかと思います。