MAMEでも停まりました. 天使の詩と似てると思ったのですがこちらはよくわかりません.
CD loading 途中に vblank 割り込みがかかり、PC $4061 に jump するのだが、元のプログラムがその付近の load する際に vblnak 割り込みの禁止を忘れている.
load 時間が本物のPCEと同じであればこのようなバグは起きないと思われるが、タイミングがシビアかつ危険な状態になっている.
正常
E870: bbs1 $F5 $E86D
E86D: jmp ($2202)
4061: pha
4062: phx
4063: phy
異常
E870: bbs1 $F5 $E86D
E86D: jmp ($2202)
4061: adc #$00
4063: sta $01
4065: phy
パッチの方針としては PC $515F を実行した辺りで割り込みフラグの address $2202 の data を $06 から $04 にすれば動作する.
資料がないためload時間の再現は現段階では不可,よって保留とする.
mednafen pce_fast module でも再現.
CD読み込み時間を等速か高速に選べる設定を追加.
初期設定値は等速となり、その場合は改善した.
潜在的なバグは修正していないので、タイマーの値を変えるとまた停まる可能性があることに注意.
原因が同じため2つのソフトのIDを統合.
潜在的なバグが再発する可能性があるので終了にせず様子見をする.
昨日の SEEKTIMER 実装の影響はなく2つのソフトとも問題の部分では正常動作をする.