爆発音のSEがほとんど聞こえない位小さく再生される。1面の後半で出てくる顔のついた戦艦や、変形する敵を倒した時は普通の音量で再生されるので比較しやすい。
確認しましたが、問題の音が鳴っているが音量が小さいってことであってますよね? (自信がない)
聞き取りづらい ADPCM の音が鳴っているのはなんとなくわかるんですが、音が出ていないのか ADPCM の音量が小さいのかこの音だけの ADPCM の音の出力がなぜか小さいで調査箇所がかわります.
簡単に調査する限りでは MSM5205 の音声デコードが間違っていると思います.
確認しましたが、問題の音が鳴っているが音量が小さいってことであってますよ
ね?
→はい、極端に小さい音で爆発音が鳴っていると思います。(文字で書くと、"ボカァーン"って感じ。)1面を通してプレイしてみましたが、この現象はこの敵を倒した時だけ発生していると思います。
早いご返事ありがとうございます.
パラメータはわかったのでソフト上で直接wavfileを出してみたんですが、特に変わったこともなかったです. ついで ADPCM の音声調節レジスタにも変な処理は見つかりませんでした.
人の声の音量は正常に見えますのでこの効果音のみがおかしいというのが謎です. 他の効果音の音声が小さいということはなくこの1種類のみが変なのでしょうか?
パラメータ
#08> 0014A8 20->ADPCM RAM 02
read address 0x4937
length 0x1028
0x1ff80e.w = 0x0c
0x1ff80f.w = 0
他の効果音の音声が小さいということはなくこの1種類のみが変なのでしょうか?
→
はい。実機のCDROMで確認してみましたが、実機では大きい音で再生されます。
1種類だけかと聞いたのは他に音量が小さくなる効果音があれば傾向を調査したいと考えております.
この問題はすぐに直せないかもしれませんので、次回のマスターアップには修正が間に合わないことになりそうです.
通してプレイしたところ、効果音が小さく再生されるものが結構あったのでまとめます。(upergrafx_20180429.pac、upergrafx_20180504.pacで確認)
●撃破音が小さく再生される
・3面前半に出る赤い大型敵
・3面後半に出る黒い大型敵
・4面前半に出るクモ型の敵
・5面後半で天井から落ちてくるガレキ(落ちる前に破壊した時のみ)
・7面前半に出る中/大型敵全部
●ダメージボイスが小さく再生される
・5面中ボス
・5面ボス(時々大きく再生される)
・7面中ボス
普通にやってると確認が大変なので、隠しコマンドを紹介します。
●面セレクト
オプション画面で、
上、上、下、下、左、右、左、右、Ⅱ、Ⅱと押すと、
オプション画面の一番下に面セレクトの項目が出る。
●体力回復
オプション画面で、
上、下、左、右、Ⅱ、Ⅰ、Ⅱ、Ⅰ、セレクト、セレクト、上、下と押す。
見た目は変わらないが、ゲームプレイ中にセレクトを押すと、体力と武器溜めエネルギーが最大になる。(何度でも使用可)
リストアップありがとうございます.
このソフトだけADPCMの再生が変というのは気になります. しかし、ここは解析に手間がかかる場所で修正は時間をかけてやらせてください.
<BTS:67> のソース上の無駄に複雑な記述の削除によって改善しました.
具体的に悪い部分は追っていませんので経過を見ます.
ソース上でなぜ改善したか軽く調査したところ, fifo の reset 条件を変更したことが大きいと思われる. ただし完全な分岐点はいまところ未判明.
ADPCM controller -> fifo -> MSM5205
また MSM5205 に渡すデータの先頭 0x200 byte が欠落していると音量が低めになっていることが判明. それらが関連していると思われる.
ADPCM controller の再生条件を細かく変えていると問題が直ったり直らなかったりするのでちゃんと理由を調べて直すことにした.
状態を受付済みに変更.
MSM5205 へ送る FIFO の CLR 条件を変更したら直った.
変更前: address 0x1ff80d data w7 == 1 OR w5 == 0 OR w5 == 0->1
変更後: address 0x1ff80d data w7 == 1 OR w5 == 0->1
原因は fifo の CLR フラグの更新が遅いので, ADPCM controller から送られている ADPCM DATA の先頭が欠落している(何バイト欠落しているかは未調査).
ADPCM controller は 36MHz で動作, MSM5205 などの音量ブロックの動作は 2.8MHz で動作していてとても遅い.該当 address の write 送信と fifo の書込みは 36MHz -> 2.8 MHz と落ちるため、そのフラグが反映されるまでに fifo へ書込みを行なうが CLR が有効な状態で書かれていて欠落する.
#10 のように先頭から最大 0x200 byte ものデータが欠落して可能映画あるのに他のソフトで気付かなかったことも修正が遅くなった原因.
エンディングまで通してプレイして、不具合が全て解消されているのを確認しました。