dgrfactory / spcplay

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

SPC700.asm の ResetSPC で ARAM $00E1 の値が 0x80 で上書きされる。 #31

Closed GodGnilda closed 3 years ago

GodGnilda commented 3 years ago

ResetSPC の Enable ROM reading のコメントがある行の命令 Mov byte [EAX-0Fh],80h で ARAM $00E1 の値が 0xFF から 0x80 に上書きされるようです。

Timer status is preserved, other bits are reset のコメントがある行の次の行の命令 Or byte [EAX+1],80h で既に IPL ROM 読み込みフラグがオンに設定されているようです。

dgrfactory commented 3 years ago

@GodGnilda さん このたびは、不具合をご報告いただきまして、誠にありがとうございます。

以下リリースにおいて修正を行いました。 たいへんお手数ですが、ご確認いただきますようお願い申し上げます。 https://github.com/dgrfactory/spcplay/releases/tag/2.18.4.7375

SNESAPU v3.0 から初期化処理の移植時、古い SNESAPU v2.0 のコードの削除忘れによるものでした。 Mov byte [EAX-0Fh],80hEAX = $100 であることが前提のコードとなっており、EAX = $F0 を前提とした新しいコードである Or byte [EAX+1],80h と処理の意図が重複するため、古い方のコードを削除いたしました。

GodGnilda commented 3 years ago

@dgrfactory 様

初期化直後の ARAM $00E1 の値が 0xFF であることを確認いたしました。

20210615_ResetSPC

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

dgrfactory commented 3 years ago

@GodGnilda さん 早速ご確認いただきまして、ありがとうございます。 このたびはご迷惑おかけし、申し訳ありません。

dgrfactory commented 3 years ago

修正版がリリースされました。 クローズします。 https://github.com/dgrfactory/spcplay/releases/tag/2.18.4.7379