upergrafx_20180712.pacで確認したところ、不具合が解消されている様に見えますが、いかがでしょうか?
現状優先度低かつ資料不足で困ってるというところです.
最新のソースと開発機ですが録画しておきました.
https://youtu.be/w5y0QffussU
CDDA のタイミングに関しては今年から一切手をいれておりませんので別件の修正に関連して改善するとは思えません.
動画内時刻 6:35 以前の前半パートは映像と音が同時であるシーンが少ないのでずれてても問題なさそうです.
6:35から9:54 は少しずれてると思います.
10:00 以降は判断しやすくずれております.
資料不足に関しては実機から撮ったと明言した動画をあげている人がいないので比較できる素材がどれかわからないということです. これはPCEエミュレータの開発者の人としゃべっていて、これと2作目はシーンが長すぎるのかずれるという話を聞いていまして、実機で取った動画でないと精度の点で信用できないためです.
実機とソフトはあるのですが、動画をキャプチャする環境がありません。テレビ画面をスマホで直撮りするくらいしか出来ませんが、それでもお役に立ちますでしょうか?
内容を見てわたしが文句をいうかもしれませんが撮影していただけるのでしたら貴重な資料となります.
この問題は現在優先度低となっておりますので、撮影いただいたけれでもすぐに改善できないことをご了承ください.
下記が前半の昔話のシーン. これもずれているかもしれないが映像の内容が音と一致しなくても気付かない.
drive stop
08> 00100E 01-> 6280
08> 001012 2D-> 6280
D8> track09
D9> track10 play+IRQ2
audio play
drive stop
ここからが後半の戦場と港のシーン. 戦場のシーンはわずかにずれているが、港のシーンは露骨にずれる.
08> 00200E 04-> 6280
08> 002012 70-> 6280
08> 002082 20-> ADPCM RAM 02
D8> track10
D9> track11 play+IRQ2
audio play
戦場のシーンのずれはおそらく seek 時間の再現が必要.
戦場から港のシーンで画面真っ黒の時間が長いが、この間も CDDA は停まっていないので、 ADPCM 用 RAM から VRAM へデータ転送をしていると思われる.
ADPCM 用 RAM は実機の場合は DRAM の refresh があるから待ち時間が発生する. VRAM へのデータ転送もレンダリングを停めてないなら待ち時間が発生する.
VRAM のほうは待ち時間がないと仮定しても, DRAM の wait が結構でかいので SRAM を使っている機材ではそこでずれると思われる.
港のシーンの読み込み時間の再現は困難のため、patch を作成することが無難と思われる. patch を作成する場合は CDDA を停めて、港のシーンが開始したときに CDDA を MSF 指定で再生するのが適切と思われる.
以上より保留にする.
seektime, readtime の実装ができたので動画にとって比較した.
DUO-RX 実機, ユーザーに撮影してもらったもの
https://youtu.be/yOhzmbgunZQ
UperGrafx 20181228.pac
https://youtu.be/vvE1LAfxQL4
暖炉の映像で同期をとったもの
https://youtu.be/S2kb3Sv2oPo
戦場の映像で同期をとったもの
https://youtu.be/lEremfqJ9Js
戦場の映像で同期をとったものの考察.
以前から港のシーンでやたらとずれるので戦場と港の切り替えで同期がずれるのだろうと思っていたが意外なことにこの切り替えシーンの所要時間はまったく同じだった. よって ADPCM RAM の読み込み時間が違うという予想ははずれた.
暖炉の映像で同期をとったものの考察.
- 気づきづらいだけで最初のシーンから音がずれている
- 暖炉から戦場の読み込み時間が少し異なる.
戦場の開始:
- upergrafx 側は絵がでるのが遅いが、音は早い
- DUO-RX 側は絵が出るのが早いが、音は遅い