dgrfactory / spcplay

SNES SPC700 Player + Improved SNESAPU.DLL
https://dgrfactory.jp/spcplay/
GNU General Public License v2.0
142 stars 7 forks source link

SNESAPUCallbackで設定するコールバック関数 effect = CBE_DSPREG の仕様がサイトの説明と異なる。 #21

Closed GodGnilda closed 4 years ago

GodGnilda commented 4 years ago

不具合の内容

SNESAPUCallbackProc で設定するコールバック関数 effect = CBE_DSPREG の仕様が @dgrfactory 様のサイトの説明では

addr | DSP レジスタのアドレス (0x00~0x7F)

となっていますが、実際はアドレスの範囲チェック前に呼び出されるため 0x80 - 0xFF の値を指定可能になっています。 想定していないアプリは誤動作や異常終了する可能性があります。

DSP レジスタアドレス 0x80 への書き込み要求

dgrfactory commented 4 years ago

@GodGnilda さん 再度、不具合をご報告いただきまして、誠にありがとうございます。 事象を確認することができましたので、リビジョン https://github.com/dgrfactory/spcplay/commit/983d93e9ea6d56445e5641ad88c7cb3a1973964d にて修正いたしました。

修正内容:

本修正を含む SNESAPU.DLL は、以下よりダウンロード可能です。 snesapu-v2.18.2.7141.zip

どうぞ、よろしくお願いいたします。

GodGnilda commented 4 years ago

範囲外のアドレスが指定された場合にコールバックが行われないことと、value の上位 24 ビットが 0 クリアされていることを確認いたしました。 value の上位  24 ビットが 0 クリアされている

ご修正いただきありがとうございます。