19:トップをねらえ!Vol.1/ADPCM処理で停まる

最終状態:完了
report#19.1
投稿者:na6ko
時刻:2018-02-08 15:32:08
状態:新規
頻度:必ず起きる
再現方法:
目次からはじめから始めるを選ぶ
2015年12月20日、父が死んだと無限ループ
report#19.2
投稿者:na6ko
時刻:2018-02-08 15:33:08
状態:保留
頻度:必ず起きる
問題の場面にいくまで毎回1曲必要があるため調査効率が悪い.
よって保留.
report#19.3
投稿者:na6ko
時刻:2018-03-25 19:58:49
状態:保留
頻度:必ず起きる
BOOT時にIボタンを押しっぱなしで曲は飛ばせることが判明.
曲は飛ばせるけど目次のボイスは飛ばせない...

問題の2015年12月20日、父が死んだのボイス再生は下記の要素はわかった.
- length が 0x6000 で再生開始をしている. 
- IRQ2 は使っていない
- ADPCM controller の status register をみていない (??)
- 追記の開始条件は mednafen の debugger の機能が貧弱で追えない
- 追記するタイミングは ADPCM play length をみる限りけっこうバラバラ

このソフトはMAMEでは動かないし, mednafen は特に trace がないので解析不可能. ほかのエミュレータを調べた方がいいかもしれない.
report#19.4
投稿者:na6ko
時刻:2018-03-31 00:23:50
状態:保留
頻度:必ず起きる
<BTS:8>のaddress 0x1ff803.r.3の実装の変更により、動作状況が変わった.
ADPCM無限再生自体はかわらないが、IRQの入り方が変わったのか、進行は進むようになった.
report#19.5
投稿者:na6ko
時刻:2018-07-22 15:36:17
状態:受付済
頻度:必ず起きる
原因が判明したので状態を受付済みに変更.

このプログラムは再生中への ADPCM 用 RAM へ 6280 から意図的に書いている.
原因は <BTS:35> と同じと思われ.
それとは別に過剰に CD-ROM へ READ コマンドを発行しているので、 6280 からの追記に対応しても別の問題で同期が取れない可能性がある.
report#19.6
投稿者:na6ko
時刻:2018-07-22 22:45:34
状態:修正済
頻度:必ず起きる
ADPCM 再生中に 6280 から ADPCM 用 RAM へ書き込むために、書込み管理、タスク優先度設定などを大幅に書き直した.
また 6280 からのアクセスで address 0xffff->0x0000 の処理が抜けていたので追加.
以上の処理によって改善した.

このゲームとしては修正済みにするが、 <BTS:35> はなぜか完全によくならないのが懸念点.
report#19.7
投稿者:na6ko
時刻:2018-08-22 18:36:00
状態:完了
頻度:必ず起きる
終了