client (0.6.2 anago only) | 2010-11-19 20:00 |
kazzo (0.1.3) | 2010-03-13 00:09 |
DISK DRIVE へのアクセス方法での問題は下記です。
CPU area $6000-$dfff は DRAM ですが、kazzo からはまともなアクセスができませんでした。6502 simlulated read/write waveform でも同様でした。
PPU area 0x0000-0x1fff は SRAM なので読み書きできます。
$4025, $4026, $4032 あたりを BIOS をまねて下記のように制御してみました。C の write timing でドライブのモーターが停まります。ヘッドが最内周に移動するタイミングでとまっているので $4032.1 が正しくとれているはずです。
A init B motor_on C read_start_mark D IRQ_ENABLE E read_end_mark | A | B | C | D | | E | D.0bit|LLL|HHHHHH|HHH|HHH| |HHHHHHLLL| T.1bit|HHH|HHHLLL|LLL|LLL| |LLLLLLLLL| R.2bit|HHH|HHHHHH|HHH|HHH| |HHHHHHHHH| B.4bit|LLL|LLLLLL|LLL|LLL| |LLLHHHLLL| 1.5bit|HHH|HHHHHH|HHH|HHH| |HHHHHHHHH| S.6bit|LLL|LLLLLL|HHH|HHH| |HHHHHHLLL| I.7bit|LLL|LLLLLL|LLL|HHH| |HHHHHHLLL| Note | | | | | | 1 2 | *1. readdata, end of head == 0 *2. readdata, block end mark exist == 0停まった直後に無理矢理書き直すと、モーターが再始動し DRQ が発生するのですが、USB の通信がきれてしまいます。きれる理由は割り込みの制御が悪いのか、電源の問題なのかは調査手段がないので詰まっています。
詳細は firmware の disk_process.c をご覧下さい。
RAM adapter の DRAM 同様アクセスできません。
battery backup RAM は実際のカートリッジには制御レジスタがあるのですが、エミュレータでは実装されてない(アクセスし放題)とか RAM の容量が適当な場合が多く、実際のカートリッジにフィードバックできません。
Namco, Taito 専用カートリッジだとソフト個別にばらばらというのもざらで、マッパ番号が役に立たないなどエミュレータと本物の違いがよくわかるところです。
さらに前述の問題もありますので、RAM のアクセスに関しては Copy NES を利用するのが最善解ではないかと思っています。