2012年3月27日火曜日

MD Rammy FlashROM16Mbitカートリッジ製作

MBM29F800TA基板2個と74HC00を1個追加して、16bitモードで16Mbitカートリッジが作れる、とYoGirlさんに教えていただいたので、昨夜から作業をしてました。

PICT7018

今回ベースで使ったのは、これまたどこでも安く手に入るシャイニング・フォースⅡです。

16MbitマスクROM仕様基板で、ランドストーカーも同じ基板使ってます。

PICT7015

この変換基板のピンホールは結構軟いので、力を入れると剥がれやすいので注意が必要ですね。

元から付いてるピンだと短すぎるので、全部抜いて新規にピンを挿す必要があります(^-^;

PICT7017

穴径が小さいので、1/6抵抗で使われてるようなφ0.4のスズメッキ線でないとキツイ。

綺麗にハンダが取れればφ0.5でも通るんだけど、2個合わせる事を考えるとφ0.4が作業的にベスト。

上では適当な基板2枚を下に置いて、とりあえず1枚だけ足を出すようにしてハンダ付けした。

/CEだけは未接続で、先に適当な長さで配線しておく。

左4ピンは邪魔だから切除。

PICT7022

だいたいこんな感じになる。

高さ的に余裕かなぁ、って思ったけど、2枚で丁度いいぐらいの高さでした。

PICT7023

バックアップRAM付き基板だとスペースが無いので、上のような配置に。

新規で付けた74HC00の接続方法はYoGirlさんの所を参照してください。

んで、肝心の動作ですが、コメントにも書いたように、このままでは現状2枚目のデバイスの書き込み動作ができない、といったところです。

これは、/CEをスワップすることで書き込めるようになります。

今後の実験次第ですが、少なくともスイッチ切り替えだけで済みますね。

あ、読み込みはちゃんと16Mbitで認識します(^-^)

Sweet Rammyでランドストーカーを書き込み、Retrodeで読み込んでチェックサム一致する事を確認しました~

ってなわけで、一応、16Mbitカートリッジは作れました。

8bitモードの配線&コマンド操作すれば読み書き共に1回でできるはずです。

【変更&追記】

Sweet Rammy v0.10が公開されたのでテストした結果、ELコマンドで2枚目のデバイスの先頭アドレス(8Mbitなら0x100000)を指定すれば消去できるようになりました(^-^)

(8bitデバイス×2個でHigh&Low接続してる場合はel.000000だけでOK)

が、デバイスを跨いでの書き込みはできないため、デバイス2個使うようなデータを書き込む場合は先にデータを半分に分けて書き込む必要があります。

MBM29F800TA×2枚に16Mbitのデータを書き込む際のコマンドの例を書くと、

pb.000016 ←16bitアクセス指定

pt.00029f ←29Fシリーズデバイス指定

el.000000 ←1枚目のMBM29F800TAをフォーマット

el.100000 ←2枚目のMBM29F800TAをフォーマット

pw.000000 ←書き込みアドレスを0x000000指定

wd.100000 ←8Mbit分のデータ書き込み

pw.100000 ←書き込みアドレスを0x100000指定

wd.100000 ←8Mbit分のデータ書き込み

といった感じに。

物理的なスイッチ操作が無くなっただけでも便利になりました。

が、一つ問題もありまして。

rammy010err

MBM29F800TA×2個カートリッジの操作した直後にAM29F040B×2個カートリッジを操作したところ、YoGirlさんと同じく、症状は異なりますが動作が可笑しくなりました。

上の画像ではel.000000してから先頭2Byte書き込んでMFID読もうとして止まってしまったところ。

どうも0x000000に常に0x00がセットされたままでフォーマットしても消えず・・・

あ、コメで書き込みできないって書いたけど書き込みは一応できてるかw

一旦0.08でフォーマットしたら以後使えるようにはなりましたが。

念のため、16bitカートリッジと8bitカートリッジを「連続で続けて」操作する場合はご注意を、という事で。

Rammy立ち上げなおして別々で使えば問題は無いです。

.

序に、もう一個。

PICT7027

できるとは思っていたけど一応テスト。

MX29F800TTC-90でも問題なく読み書きできました。

/CEから線1本出てるけど、これは後で親子亀するかもしれない時の為の延長線です(笑

0.5ピッチの親子亀はやったことが無いのでできるか自信が無いけど、果たして?

2012年3月25日日曜日

MD Rammy FlashROM8Mbitカートリッジ製作

ぶっちゃけYoGirlさんが書かれてるもの(03/14/2012)と同じですw

作り方が若干異なるし、折角作ったので作り方を載せておこうかな、と。

PICT6971

ベースで使うゲームはシャイニング&ザ・ダクネス。

このゲームは8Mbit(1MByte)+SRAM64Kbit(8KByte)仕様の基板を使ってます。

当時人気があって数が出回っているので、オフでも105円前後、ネットショップ駿河屋ではこれ書いてる現在12円です(笑

この基板にaitendoで売ってるMBM29F800TA(DIP変換基板付き)を取り付けて8MbitFlashカートリッジを作る事にします。

YoGirlさんも書いておられるように、MBM29F800TA基板は高さがあるため、そのまま取り付けたのではケースに収める事ができません。

って事で、ちゃんとケースに収められる加工を写真を多用して順番に説明を。

PICT6972

まず基本のマスクROMの取り外しをします。

ROM取りには普通のハンダ吸い取り器かハンダシュッ太郎、メンドイけどハンダ吸い取り線とかを使います。

・・・どうせ使わないマスクROMなので、ペンチで足をぶった切って取る、という荒業でも可(笑

上写真で赤く囲った箇所、後で1本線を裏へ通すのに使うので、ハンダが盛ってあったら吸い取っておく。

パターンカットなどは無いので、基板側の準備はこれで終わり。

PICT6976

次、MBM29F800TA基板の足を豪快に全てへし折ります!

引っこ抜く感じではなく、ペンチで挟んで左右に振りながら3ピンづつぐらい折れば簡単に折れます。

PICT6977 PICT6978

この状態で、まだ表面(ROM側)にピンが残ってますが、このピンを裏面へ出し、基板へ挿す事にします。

あ、気をつけないと、指に2.54ピッチで穴が開きます(笑

ハンカチとかで保護しながらやったほうがいいかも(^-^;

PICT6981a

全てのピンをハンダごてで暖めながら、表から裏へ押し込んでいきます。

当然ハンダごての熱でハンダが溶けてるので力はいりません。

ハンダごての先端まで突っ込んで、なるべく裏へピンが出るように(2.5ミリ前後出るハズ)

PICT6984

全てのピンが裏へ出せたら、基板のピン番号で書くと1~3ピン、46~48ピンの足を抜くor切断します。

上の写真で説明してるように、1、2、47、48ピン部分は必要ないし、後で説明するけどケースに引っ掛からないためにも切断しておいてもいいです。

切断しない場合は後で簡単なケースの加工が必要になります。

PICT6986

このまま基板に取り付けることが可能ですが、ほぼ基板にくっついた状態になるため、ショート保護のためにシールなどを貼っておくと良い。

貼らなくてもよっぽど大丈夫とは思うけど、念のためにね。

PICT6988

で、全ての足をハンダ付けします。

ちょっと見難いですが、基板に挿すと足があまり出ませんw

ほぼツライチの箇所もできると思いますが、ハンダはちゃんと付くでしょう。

心配なら後でテスター使ってチェックする。

PICT6991

全てのピンのハンダ付けが終わったら、上写真のように45ピンと46ピンを適当なゴミになったスズメッキ線などを使ってショートさせます。

元々の45ピンはNCで、MD基板に取り付けた事によりVccが入ってますが問題は無いです。

ソコへ46ピン(/RESET)を繋げる、ということですね。

【補足】

8MbitマスクROMを使ってる基板は42ピンがVccと繋がってるのでこの配線で良いですが、16MbitマスクROM使ってる基板を使う場合はカートリッジコネクタのB8(A1からの表記でいうとA20)へ繋がってるので、46ピンを別の箇所からVcc取る必要があります。

PICT6992

次、MBM29F800TA基板の3ピン(/WE)をSRAMの27ピン(/WE)へ繋げます。

適当な配線材を使ってスルーホールから裏側へ通し、

PICT6993

SRAMの27ピンへ繋ぐ。

PICT6996

以上でハンダ付け作業まで全て終わりです。

MBM29F800TA基板を切断してない人は、ケースの加工が必要です。

PICT6997

若干ですがねじ穴に掛かってしまうので少し削ります。

PICT6998

こんな感じで加工すれば、ちゃんとねじも締まります。

PICT7014

最後、自分の好きなようにラベルを作って貼れば完成~\(^-^)/

因みに、この接続方法でFlashROM8Mbitの読み書きは勿論の事、SRAM64Kbitの読み書き=バックアップも対応してます。

(シャイニング&ザ・ダクネスを少しプレイして確認済み)

このMBM29F800TA基板の取り付け方だと、2段重ねにしても全然余裕でケースに収められますね。

あ、それだとアドレスバスずらして8bitモード用の配線じゃないといけないかw

これはその内作ってみますかね。

と、そんなとこかな~

SRAM64Kbyteカートリッジも楽だけど、金額や工作難易度、容量からしてコッチ作ったほうが楽ですね(笑

電池も要らないし、これ書いてる現在ではaitendoで単価99円(2個まで?)で買えるようなので、作れる人はお一つ作ってみてはいかが?

2012年3月23日金曜日

Rammy v0.09でMDがFlashROMライターに!

遂にココまでできるようになってしまいました!\(^-^)/

ナントナント、Sweet Rammy Ver.0.09でFlashROMの書き込みコマンドが正式に実装され、簡単に、しかも高速(RammyでSRAMへの書き込みと同等)できるようになりました~!

PICT6969

一言、すげぇぇぇ~~~!!

・・・ちょっとお言葉が悪いですが、実際に触るとよくわかっていただけると思います(笑

いやホントに、マジな話、皆さんご存知のようにメガドライブは20年以上も前にセガが「ゲーム機」として世に出したハードです。

ゲーム機なんですよ、ゲーム機

それが、

PICT6968

これらのROMライターの仲間入りになっちゃうんです~

(本来の目的が違うものも含まれてます(^-^;)

・・・とまぁ、ちょっと大袈裟な感もありますが、ウソではないですw

書き込みできるFlashROMは8bitバスと16bitバスの29F系か49F系(対応していないものもあるかもしれません)のデバイスと範囲は小さいですが、それでも16bitバスの32Mbit(4MByte)のサイズまで普通に書き込めるのは大きな利点でしょう。

実際問題、16bitデバイスの書き込みができるROMライタを普通に買おうとすると安くても1万5千円前後します。

・・・ま、自作すれば超使えて安く上がるものもあるけどね(写真にヒントあり?)

v0.08では1Byte送信するごとに沢山のコマンドを入力(orマクロで送信)してましたが、v0.09ではRammy内部でコマンド部分を処理するので、速度的にはかなり向上してます。

前回のv0.08では16bitデバイスに64K近く書き込んで40分程度掛かっていたのに対し、v0.09では8Mbit(1MByte)を10分で書き込みできます。

v0.09では8bitデバイス×2個仕様でも、16bitデバイス1個仕様でも書き込み速度は同じですが、8bitアクセスか16bitアクセスかで若干コマンドが異なります。

他のROMライターでは、TOP2049で8Mbitが2分程度、Willemのプログラマーも同程度、GB Cart Flasherが4分程度、といった感じで、これらと比べたらさすがに遅いですが、それでも十分実用レベルで使える範囲内だと思います。

っていうか、ROM焼き専用機と比較するのはフェアじゃない(笑

何度も書きますがゲーム機です!

まだ試してはいませんが、3Vのレギュレータ挟めばおそらく3V仕様のデバイスも書き込みできるでしょう。

rammy0090

↑8bitデバイスの消去と書き込みの基本型。

AM29F040B×2個で試してますが、ウチでは消去で4、5秒で終わります。

rammy0091

↑16bitデバイスの消去と書き込みの基本型。

MBM29F800TAで試してますが、消去は7~14秒ぐらいで終了。

上の画像を見てもらうとわかると思いますが、8bitと16bitでのコマンドの違いは「pb.コマンド」だけです。

それと、書き込みをする際には常に消去する癖をつけておいたほうがいいかもしれませんね。

マクロで消去からデータ送信までを書いておくとか。

仕様上、8bitデバイス1個での書き込みはできないので、もしメガドライブで他の8bitマシンのデータを焼く、とかを考えるのであれば、同じデバイスを2個用意しないといけませんので注意を。

【補足】

消去&書き込み時間は、デバイスによって異なりますので、上の例はあくまで参考に、ということで。

.

いやぁ、Sweet Rammyが出始めのころに、もしかしてFlashROMの書き込みが?的な事を書いた事がありますが、見事に実現してしまいましたね(笑

FlashROMがそれなりに安く手に入る現在、工作する人にとってはなかなか使えるハードだと思いますが、どうでしょうか。

メガドライブ本体は数百円で買えるし・・・多少の工作は必要だけど、作ってしまえばセーブデータ読み書き&SRAMカセット読み書き&FlashROMカセット読み書き&EEPROM読み書きができる、操作側のプラットホームは新旧のPCの大半が使える、と。

スバラシイですね。

毎度ながら、YoGirlさん、素晴しいものを開発&提供していただきありがとうございますm(_ _)m

あ、ラミーちゃんとラミンちゃんにも感謝しなきゃねw

そんなわけで、かなりの完成度に仕上がったv0.09、関心のある方は是非お試しを。

メガドライバー以外でもメガドライブ好きになっちゃうかもよぉ~!?(笑

PICT6967

*details of Sweet Rammy should look at this homepage.

外国の人も是非~(笑

次はSound Rammyも構想中だそうなので・・・その時は甥っ子と姪っ子にIPodとウォークマン借りよう。

2012年3月21日水曜日

MD Rammy SRAM64KByteカートリッジ製作

んでは昨日の続きで、メガドライブ用SRAM64KByteカートリッジを作る例を紹介します。

あ~、64KByteかよ~・・・と馬鹿にしてはいけません。

部品代は安いし、便利なSweet Rammyのv0.08が動くんですから~

使えない大容量よりも使える小容量なのだw

(MBM29F800TAのが安くて簡単だろ、ってのはこの際忘れてください(笑)

って事で順番に。

PICT6943

ベースで使うのは32KByteSRAMを使っている三国志Ⅲ(他に32KByte載ってるゲームは昨日を参照)

PICT6961

32KByteSRAMを使ったゲーム基板はおそらく上のようなタイプのハズ。

PICT6944

マスクROMを取り外し、別に用意した32KByteSRAMを取り付けるのですが、今回は基板の裏側へ取り付けることにします。

というのも、マスクROMは42ピン(or40ピン)で、SRAMは28ピン、A7~A0のピン以外は配線引き回さないといけないから、裏に付けたほうが楽かな、と。

sram62256 ←62256のピン配列

I/O1~I/O8がデータバスで、それぞれD0~D7と置き換えて解釈してください。

余談だけど、データバスの書かれ方は他にもQ0とかがあるし、1から表記や0から表記など、メーカーによって様々です。

このデータバスと、/WE(27ピン)は配線材を使って接続する事になります。

PICT6957

もう一つ、最初ボケッとしてて取り忘れちゃったんだけど、左上の74HC00も取り外してください。

(74HC00は色々と使えるので保存しておきましょう)

PICT6946

元々載ってるSRAMの裏に別のSRAMを取り付けるのですが、接続してはいけないピンもあるため、その箇所だけは最初にピンをカットしておく。

PICT6948

でもって新規で取り付けるSRAMの足を全部伸ばして、

(伸ばすと程よく上側にピンが反ってくれるからね)

PICT6949

元々曲がっていた付近でピンを全てカットする。

PICT6951

先に短く切っておいたピン、9箇所以外をはんだ付けする。

SRAMは裏向きに取り付けるので、向きを間違えないように。

(上写真で言うと左側に1番ピンが来る)

PICT6952

でもってまずはデータバスの配線ですが、新規で付けたSRAMのD0~D7を、それぞれ基板のD8~D15へ繋ぐ。

PICT6955

新規で付けたSRAMの/WE(27ピン)を、基板コネクタのB29へ繋ぐ。

PICT6960

最後、元々74HC00が載ってた1、2番ピン(どちらでも可)と、8番ピンを繋ぐ。

PICT6963

すると、基板裏はこんな感じになって完成です。

基板裏面はケースとの隙間がそんなに無いので、なるべくSRAMは基板にくっつけるようにしたほうが良いかな。

srammy008

出来上がったら「AT.000001」とコマンドを打って、wdコマンドでデータを送るだけです。

(状態によりPRとPWの値が000000じゃなかった場合は、手打ちでpr.000000と、pw.000000のコマンドを送ればOK)

これでサイズピッタリのSweet Rammy v0.08のカートリッジが出来上がり~、となる。

工作的にはそんなに難しくないと思うので、作れる環境のある人は是非作ってみてくださいませ。

と、作りながらRammy無しでのSRAMへの書き込みも考えてたけどいい案が浮かばない・・・(-_-;

何か無いかな~

Sweet Rammy 0.08公開

Sweet Rammyの新しいバージョンが公開されました(^-^)

v0.08でのアップ内容は公式ページで書いてある通り、

・メガドライブの画面上でもコンソールが表示され、動作確認ができる

・Sweet RammyのROM本体が64KByteに収まる

の2点です。

今回のバージョンアップではAVRのプログラムの更新はありません。

丁度Sweet Rammyで遊んでたトコなので、早々に軽く動作確認を。

PICT6938

今までのROMのサイズは128KByteで、今回公開されたv0.08も128KByteですが、単純に半分にぶった切って前半64KByteにしても動きます。

初期画面はやや中央気味に表示され、下段にコンソール表示が待機状態に。

PICT6940

PCからコマンドを送ると画面が上部へスクロールしていきます。

PICT6941

RDコマンドで読み込むと、画面右下にプログレスバーが現れて進行状況を確認できます。

WDコマンド(書き込み)では表示されません。

PICT6942

んで、FlashROMへの書き込みはどうか試したんだけど・・・コマンドが多すぎてウェイトが掛かり、転送速度そのものが落ちてしまいますね(^-^;

これは今後改善される・・・のでしょうか?

って言うより書き込み機能自体が改善されちゃいそうな雰囲気でメッチャ期待です!(笑

次、Sweet RammyのROM本体サイズが64KByteになる利点を。

現在のFlashRammy方式で書き込むにも時間が短縮できますが・・・そんな事より、これはYoGirlさんも書いておられますが、安値で手に入る32KByte(62256等)のSRAMを2個使う事でRammyのカセットが作れる、って事です。

ベースとして使うカセットは、

・A列車で行イこうMD

・三国志Ⅱ

・ヨーロッパ戦線

・バハムート戦記

・デビルズコース

・アドバンスド大戦略

・三国志Ⅲ

・36グレイトホールズ

・サージングオーラ

・信長の野望・武将風雲録

・ペブルビーチの波涛

上のカセットはSRAMが32KByteのものを使ってる(まだあるかも)ので、マスクROMを外し、違う32KByteのSRAMをもう一つ載せてしまえば良い、と。

32KByteのDIPタイプのSRAMはスーファミの競馬や光栄のゲームなど(105円以下で買えるハズ)に載ってるし、簡単に手に入ります。

と、ココまで書きましたが時間が無いので、製作はまた今度、と言うことで。

問題は、Rammy無しで最初にSRAMにどうやって書き込むか、だな・・・

ま、そんなところでリアルタイムな確認報告でした。

2012年3月19日月曜日

Sweet Rammy – Flash Rammy

久しぶりに・・・

どうも先月から無気力状態に陥りまして、メールやコメントのレス遅れてしまいました。関係者様、ゴメンナサイでしたm(_ _)m

・・・まだダメダメなのでまた空間できるかも(ぉ

って言っても何もやってなかったわけではなく、むしろ「工作のみ」に没頭して現実逃避してた感じです。

それはまた追々として、本題に。

PICT6934

Sweet RammyでFlashROMカートリッジが作れる、って事で試してみました。

上のMBM29F800TAの方は以前作ってたけどコマンド送信が上手くいかず放置してたもので、高さを考えてないのでケースには収まりません。

下のAM29F040B×2個仕様は昨日作ったもので、YoGirlさんと同じ8bit×2個仕様基板で作ったのでは芸が無い(?)ってことで、SONICやぷよぷよで使われてる40pin使用基板に2個載せた。

ROM弄った事ある人はわかると思うけど、データバスと/WE以外は2個とも同じ箇所へ配線するだけ。

PLCCデバイス使うと結局配線伸ばしてはんだ付けしないといけないから、8bit×2個仕様基板が無い人は上のように。

・・・ちょっとごちゃごちゃするけれども。

でもって一度動くROMを焼いてみよう、と思ったところ、1Byte書き込むのにコマンドが多くいちいち入力は無理、ということでプログラムしてみた。

ttlflash00

8bit×2個仕様だと128KByte書き込むのに100分以上掛かる(一度のコマンドで1Byteしか書けない)計算になるのでちょっとパスして、16bitデバイス用(一度のコマンドで2Byte書ける)の自動書き込みマクロ生成ツールを。

サンプルで、YoGirlさんが作られたラスタースクロールのデモを。

Teratermのマクロ用バッファ(?)が1MByte前後しかなく、数メガで生成されるマクロだとフリーズしてしまうため、分割仕様に。

どうしてもマクロのコマンドのサイズが大きくなるので、ファイル一つのサイズは馬鹿でかくなってしまう・・・

この問題はマクロから直にROM操作してデータ取り出すようにできれば解決できるかもしれない・・・けど、現状上手くできない。

とりあえず上の例だと31個のファイルができたんだけど、実際には64K以下のデータしかないので、書き込むファイルは全部で13個で済んだ。

最初にトリムしてからマクロ生成のがいいかも。

ttlflash01 

個別に書き込むのはメンドイからもう一つinclude用マクロ作って自動化・・・ぶっちゃけ時間はものすごく掛かって、64K近く書き込んで40分程度掛かってます。

(8bit×2個仕様だと倍以上掛かります)

PICT6932

んで、メガドライブとSweet RammyでFlashROM焼いて無事起動確認できました(^-^)

速度的には現状仕方の無い事だとして、メガドライブ本体を使ってROM焼きができてしまうことにはとても感動ですね。

理論的にはメガドラ標準で32Mbitまでは普通に書き込めるので、時間と根気さえあれば・・・

現状では128KByte程度が使える範囲内・・・かな?

128KByteっていうと、NEOGEOのBIOSも焼けますね(ぉ

多分使う人居ないと思うからマクロ生成ツールはアップしてないけど、使いたい人が居たらご連絡を。