問題の場面にいくまで長い待ちが必要なので保留にする
ゲーム開始時に loading がでて、本来はいくつかのセクタを読んだ時点で、
ADPCMのボイスを出すようになっている. このボイス処理がないのか、
デモの後の ADPCM のボイスがでない、そのような関連性が予想される.
<BTS:3>の問題を直すとなおるかもしれない
twitter @yamada_arthur 氏の書込みを転載.
PCE(SCD)てきぱきワーキンラブ(NECホームエレクトロニクス)のゲームモード選択画面で左+セレクト+ランを同時に押すと「てすと」の項目が出現します。「てすと」にカーソルを合わせてⅠを押すとおまけモード(全メニュー選択可能)が出現。Ⅰ+Ⅱを同時に押すとおまけモードの隠し項目がて選択可能。左+セレクトを押しながらⅠを押すとプレイ中に以下のコマンドが使用可能になります。
・個人情報画面でキャラを選んでパラメータを表示させ、セレクト+Ⅰを押して離すとパラメータを変更できる。
・スケジュール実行を選択したらすぐにセレクト押しっぱなしでメインシナリオ、ラン押しっぱなしでサブシナリオの選択メニューが出現し、選んだシナリオが始まる。
・アドベンチャーパートの特定の選択肢を上か下を押しながら決定すると上だとキャラが指示に従い、下だと従わない。
ためしてみたらすぐに問題の場面にいけるようになった.
デバッグ可能として状態を変更.
こちらに書くべき項目を <BTS:67> に書いてしまった.
両方共に関連性のあるひどいバグ.
該当部のソースコードを mednafen と MAME で確認したところ実装がことなった.
mednafen は address 0x1ff80d への write で data bit7 == 1 の場合は bit6:0 = 0 とする.
MAME は ADPCM 再生完了後に同アドレスのレジスタを bit6:5 = 0 とする.
MAME の実装はハードウェアとして実装しづらい. 実装するなら playflag を bit6:5 に振って AND を通すのが簡単だが、詳細が異なりそう.
とりあえず mednafen と同じ実装にした.
これによりタイトル画面,LOADING画面,一部シーンの ADPCM がでたが、ゲーム最初の ADPCM は相変わらずでない. 再度解析が必要である.
ゲーム本編最初のADPCMボイスが出ない理由を軽く調査したが、レジスタの操作手順がおかしい. ADPCM RAM への DMA 転送(非公式レジスタ利用)など複数の問題が複合して起きている可能性がある.
調査を続行し、難易度を鑑定することが必要.
このソフトからのADPCM管理レジスタの操作方法があまりにもひどい.
このソフトの対応は正規の手順を踏んでいるソフトを直してから検討する.
状態を再度保留に変更.
状態を変更するまで動作確認除外ソフトに指定する.
<BTS:80> の対応で結構動くようになったみたいだがまだ停まる.
<BTS:17> の ADPCM RAM controller の dead lock を修正したらかなり安定するようになった. ただしおまけモードを回したら止まってしまうものが相変わらず存在する.
止まったのはテレビでもみよーっと.