2017 031234567891011121314151617181920212223242526272829302017 05












MMC5 フラッシュカートリッジ作成 

今まで色々なマッパーのフラッシュカートリッジを作成してきましたが、MMC5(マッパー5)はまだ作成していませんでした。MM5に対応した自作ゲームやハックロムもほとんどなかったので作成してなかったわけですが…
8Mbitのflashrom(MBM29F080 TSOP 40pin)の在庫が発見できたので作成してみることにしました。

MMC5にはの4種類の基板があり、詳細はこちら →
unagi flashmemory-SRAM cartridge hiki

今回はETROMを使用して、さらにW-RAM-0を64kbitから256Kbitへ変更すれば互換性もアップ。
ETROMの基板を使用しているゲームは現時点で判明している光栄のゲーム5本
信長の野望 戦国群雄伝
維新の嵐
水滸伝
ランペルール [ETROM-02]
大航海時代 [ETROM-02]

MMC5は最大で PRGROM:8Mbit CHRROM:8Mbit まで対応しているので、最大容量で作成。
作成方法は他のフラッシュカートリッジとほとんど変わりませんのでピンアサインと写真だけ載せておきます。
たぶん作る人はそんなにいないと思うので、過去記事をみて作成の参考にしてください(^-^;;
もちろんAM29F040B(4Mbit)のflashromでも作成できます。 

■SRAM(W-RAM-0)を64kbit→256kbitへ交換
wram0-01.jpg    wram0-02.jpg 64kbitのSRAMを取り外し
SRAMの256kbit(64256等)はスーパーファミコンのバッテリーバックアップカセットについてますのでそれから拝借。

s-256SRAM02.jpg 1pinと26pinを折り曲げて、あとはそのまま基板へハンダ付けします。

s-256SRAM01.jpg    wram0-03.jpg
SRAMの1pinをWRAM A14へ、26pinをWRAM A13 へ配線すれば完成!
 
8MbitのflashromはほとんどがTSOPタイプなので変換基板が必要です。
ハンダ付けの方法や変換基板の入手先等は過去の記事で…
MBM29F080 とかデバイスの購入先
TSOPデバイスのハンダづけ

MASKROM-PIN.png    mmc5-flash01.jpg  各種ROM・基板側ピンアサインと作成例
※青い部品はセラミックコンデンサ(0.1μF) 画面にノイズが出て安定しなかったので VCC-GND間に取り付け。

せっかくなのでCHRROMに最大容量を使用していて、KZ-Sさんが公開されている ファミコン版AIR をkazzo+anagoで書き込んでみたけれど、残念ながら動作せず。

MMC5_Flash.png 以前作成したMMC5用のラベルも置いておきます

さて次はめっさつさんが沙羅曼蛇を弄られているようなので、VRC3のフラッシュカートリッジでも作成しようかな。
関連記事
ACR WEB ブログランキング参加してます

なんと!

すみませんMMC5とは、プログラムロム(P-ROM)も1Mバイトまで対応していたのですか?
資料とかを読むと512kまでばかりと書いていたもので、これが本当ならうれしいです。
PROMとCROMで2Mバイトもいけるじゃありませんか!
[ 2011/05/27 13:45 ] [ 編集 ]

>akaneさん

ファミコンのプログラム等を作られているのですか??

MMC5はPRG,CHRとも8Mbit(1Mbyte)まで対応してますので大容量ですね(^-^

メタルスレイダーグローリーでさえ(PRG:4Mbit CHR:4Mbit)ですから。
実際に最大容量まで使用されているゲームはありませんが、しっかりと配線はありますので
接続すれば使用できるようになりますよ。

[ 2011/05/27 13:54 ] [ 編集 ]

返信のほうありがとうございます。
8K*64個のバンクで合計512KBのアクセスが限界と聞いてまして。エミュレーターでの実験による切り替えでもそんな風に出てましたのでがっかりしていたのですよ。
もしかしたら、実機では1Mバイトアクセスできるボードがあるんでしょうか。そうだとしたらエミュレーター側も対応してくれるといいのですがと思っております。


一年前のプログラムですが、こんな感じです。時間があるときお試しください。
(´・ω・)つhttp://www1.axfc.net/uploader/Sc/so/238374
[ 2011/05/27 15:04 ] [ 編集 ]

>akaneさん

あ、このプログラムはすでに試してますw
確か一度リセットしないと、実機でちゃんと表示されなかったと思います。

バンク切り替え等の詳しいことはわかりませんが、MMC5のチップが制御してます。
それとファミコン版AIRデモ(PRG:64Kbyte CHR:1Mbyte)はエミュでも動いてますよ
VirtuaNESのみですが。
[ 2011/05/27 17:48 ] [ 編集 ]

ちょっと話は違うのですがkazzoでMDC5のカートリッジ(AM29F040B)書き込めますか?
書き込もうとすると1ブロック(0x2000?)書いた時点でコンペアエラーになるので
書き込めてないような気がします。
以前作ったW29C040のカートリッジは問題なく書けますし、MBM29F016で最上位ビットを
つぶしたカートリッジも書けました。
配線が間違ってるのかなと思い3個程作ってみましたが症状同じ。
W29C040のカートリッジと見比べても配線は同じなんですけどねぇ。わからん。
MDC5は開発中止ということでどこに聞いていいかわからずここに書いてしまいました。
ホンコンで無いとだめなのかな?そんな事ないですよね。
[ 2011/07/11 22:50 ] [ 編集 ]

>zaksさん

スクリプトはmmc5.afを使われてますか?
MDC5に書き込む場合はmmc5.afのスクリプトで問題なく書き込めています。
古いスクリプトを使われているのでしたら、最新のスクリプトで試してみてください。

MDC5用でスクリプトを作成するならこんな感じで。mdc5.af

/*
MDC5書き込みスクリプト

SRAM 初期化
ST + SEL を押しながら電源を入れて SEL を押す

disk side change
下記の入力があったら disk を交換したとする
SEL + A,A,A: change side A
SEL + B,B,B: change side B
SEL + ST,ST,ST: swap disk 前編/後編

*/
board <- {
mappernum = 5,
cpu_rom = {
size_base = 2 * mega, size_max = 8 * mega,
banksize = 0x2000
},
cpu_ram = {
size_base = 0x2000, size_max = 0x8000,
banksize = 0x2000
},
ppu_rom = {
size_base = 2 * mega, size_max = 8 * mega,
banksize = 0x0800
},
ppu_ramfind = true, vram_mirrorfind = false
};
function program_initalize(d, cpu_banksize, ppu_banksize)
{
cpu_command(d, 0x0000, 0x8000, cpu_banksize);
cpu_command(d, 0x2aaa, 0xa000, cpu_banksize);
cpu_command(d, 0x5555, 0xc000, 0x4000);
cpu_write(d, 0x5100, 3);
cpu_write(d, 0x5113, 0);
cpu_write(d, 0x5114, 0x80);
cpu_write(d, 0x5115, 0x81);
cpu_write(d, 0x5116, 0x82);
}
function cpu_transfer(d, start, end, cpu_banksize)
{
for(local i = start; i < end - 1; i += 1){
cpu_write(d, 0x5114, 0x80 | i);
cpu_program(d, 0x8000, cpu_banksize);
}
//$e000- は書き込みが安定しないので末尾 page として $7f を指定する。
cpu_write(d, 0x5114, 0x80 | 0x7f);
cpu_program(d, 0x8000, cpu_banksize);
}

function ppu_transfer(d, start, end, ppu_banksize)
{}
[ 2011/07/12 02:11 ] [ 編集 ]

アドバイスありがとうございます。
スクリプトはmmc5.afを使っていました。今回のmdc5.afでも症状変わらずでした。
AM29F040B以外のMDC5カートリッジは書き換えできるだけに謎が深まります。

とりあえず放置してnamcot163でも作ってみますw
[ 2011/07/13 17:39 ] [ 編集 ]

試しにAM29F040Bの31ピン(/WE)の接続を外したら書き込みできました。なんでだ!?
kazzoはキットで購入したので私の作り方が悪いのかもしれませんね。
[ 2011/07/13 21:10 ] [ 編集 ]

>zaksさん

/WEを外して書き込めるわけはないんですけど…何ででしょうねw
キットで購入されたのであれば、細かい部品が多いので半田不良の
可能性もありそうですね。
[ 2011/07/14 00:45 ] [ 編集 ]

コメントの投稿














管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://bakutendo.blog87.fc2.com/tb.php/224-bede6106