ファミコンはご存知のように8ビットマシンで、Kazzoでは8ビット仕様のFlashROM(以下デバイス)しか書き込むことができません(2014年5月25日現在のAnago最新版[unagi_client_windows_0.6.2])。
現在では8ビットオンリーなデバイスは入手が難しく、16/8ビット仕様のデバイスのほうがまだ手に入りやすいので、書き込みできるようにしてみました。
ただし、ここで書く方法はクライアント(anago_wx.exe)と各マッパー用のスクリプトのコマンドを書き換えなければいけないので、変更したファイルは16/8デバイス専用として使うことになります。
それぞれファイル名を変えて同じフォルダへ置いておけば、オリジナルのファイルと問題なく共存できます。
それと、16/8デバイスの基本的なことを書いておくと、ByteピンをHで16ビット(Word)モード、Lで8ビット(Byte)モードになり、8ビットモードで使う場合、アドレスバスをずらして接続(D15/A-1→Ao、A0→A1・・・A18→A19のように)する必要があります。
8ビットモードで余ったデータバス(D8~D14)はHigh-Z(考え方的には未使用状態)なので、未配線のままでOK。
.
今回の例では、MMC5(PRG&CHR共に最大1MByte[8Mbit]使える)のカセットをMDC5仕様にして、PRGのみMX29F800Tを使う前提で書きます。
ではやり方。
まずクライアントanago_wx.exe(MD5: 3d63754d378d2cabbe6e3353475a8dee)をバイナリエディタで開き、
&H1FB32から2Byte、&H1FB3Aから2Byteの計4Byteを、上画像のように、
AA2A → 5555
5555 → AAAA
と変更し、ファイル名を適当に変えて保存する。
次にスクリプトの変更。
スクリプト内にある0x2aaaを0x5555へ、0x5555を0xAAAAに、0x02AAを0x0555、0x0555を0x0AAAに、上画像のように全て変更する。
他のマッパー用スクリプト内にも同じような記述があると思うので、適時変更する。
これで、このクライアントとスクリプトは16/8デバイスを書き込む専用のファイルになります。
(因みに読み込みは元のクライアントと同じように使用可能)
もう一つ、クライアントと同じフォルダにflashdevice.nutというファイルがあるので、その中のdevice <- {}の間に、
device <- {
["MBM29F800T"] = {
capacity = 8 * mega, pagesize = 1,
erase_wait = 8000, erase_require = true,
retry = false,
id_manufacurer = 0x04, id_device = 0xD6,
command_mask = MASK_A10
},
["MX29F800T"] = {
capacity = 8 * mega, pagesize = 1,
erase_wait = 8000, erase_require = true,
retry = false,
id_manufacurer = 0xc2, id_device = 0xD6,
command_mask = MASK_A10
},
};
上の紫色の文字を追記して保存する。
このファイルはオリジナルのクライアントと共有して使います。
以上でソフトの準備は完了です。
あとはハードですが・・・ここでは面倒なので手抜きしますが、各デバイスのピンアサインなどを調べ、アドレスバスに注意しながら配線すればOKです。
上画像の赤い基板が今回の例の部分。
変更したクライアント&スクリプトを使い、compareにチェックを入れて書き込みテストして、問題なく正常に終了すれば完成です。
Kazzo(ファミコンのMMC5の最大)では1度に8Mしか書き込みできないけど、アダプタ仕様にしておけば汎用ライタとしても使えると思います。
以上、配線が少々メンドイですが、MBM29F800Tなど、16/8デバイスが余ってる人は活用してみては。
.
【追記】
上と関係ないけど、ファミコン関連の写真。
ファミコンカセット仕様のHard Drivin'。
ピッタリカセット内に収められますね。