0420名無しの挑戦状
2017/08/17(木) 23:30:55.03ID:Ph4mliVp64KBモードの場合はVDPと68Kの接続は16bitで処理も16bitだけど
VRAMが8bitだから読み書きは16bitを8bit2回に分けて書いてる。
128KBモードの場合だと2回に分ける必要がなくなるからアクセス速度が上がるってカラクリ。
結局この転送が使えるのはテラドライブだけだけどね。
Z80のワークRAMが欲しいなって思ったのは、Z80が68Kエリアを参照するプログラムを書いた場合だと
VDPがDMA転送中はZ80が68Kエリアを参照しないようにZ80にバスリクエストを掛けて停止させる必要がある。
PCMを使うソフトだとその間はPCMデータが送れずにPCM再生タイミングが狂ってしまってダミ声の原因になってる。
メガドライブはFM音源の割り込みを利用していないのだけど、仮に割り込みが68K、Z80どちらかに繋がれていたとしても、
DMA転送中はこちらが優先になってPCMデータは結局送れない。
さらにPCMデータはカートリッジに有る為に絶対に68KエリアをZ80が参照しなくとダメなんだよね。
ちなみにDMA転送中以外で68KとZ80が同時にカートリッジエリアにアクセスした場合は早い者勝ちで
後からアクセスしてきた方は待たされる。
Z80のワークRAMがもうちょっと大きければPCMデータを予め書いておいて
DMA転送中はこちらのデータを使う事できっちりしたタイミングで送れるんじゃないかな?と思った。
今だったらZ80の小さなワークRAMでもソフトウェアADPCMで何とかいけそうな気がしないでもないけどね。