問題の場面にいくまで毎回1曲必要があるため調査効率が悪い.
よって保留.
BOOT時にIボタンを押しっぱなしで曲は飛ばせることが判明.
曲は飛ばせるけど目次のボイスは飛ばせない...
問題の2015年12月20日、父が死んだのボイス再生は下記の要素はわかった.
- length が 0x6000 で再生開始をしている.
- IRQ2 は使っていない
- ADPCM controller の status register をみていない (??)
- 追記の開始条件は mednafen の debugger の機能が貧弱で追えない
- 追記するタイミングは ADPCM play length をみる限りけっこうバラバラ
このソフトはMAMEでは動かないし, mednafen は特に trace がないので解析不可能. ほかのエミュレータを調べた方がいいかもしれない.
<BTS:8>のaddress 0x1ff803.r.3の実装の変更により、動作状況が変わった.
ADPCM無限再生自体はかわらないが、IRQの入り方が変わったのか、進行は進むようになった.
原因が判明したので状態を受付済みに変更.
このプログラムは再生中への ADPCM 用 RAM へ 6280 から意図的に書いている.
原因は <BTS:35> と同じと思われ.
それとは別に過剰に CD-ROM へ READ コマンドを発行しているので、 6280 からの追記に対応しても別の問題で同期が取れない可能性がある.
ADPCM 再生中に 6280 から ADPCM 用 RAM へ書き込むために、書込み管理、タスク優先度設定などを大幅に書き直した.
また 6280 からのアクセスで address 0xffff->0x0000 の処理が抜けていたので追加.
以上の処理によって改善した.
このゲームとしては修正済みにするが、 <BTS:35> はなぜか完全によくならないのが懸念点.