2011年3月31日木曜日

ファミコン マッパー0のFlashカートリッジ製作方法

マッパー3のフラッシュカートリッジ製作方法はこちら

今回マッパー0のFlashカートリッジを作る機会が出来たので、折角ですから制作方法を書いてみたいと思います。

ちょっと贅沢な使い方ですが、マッパー0の基板に直接AM29F040Bを取り付けします。

マッパー0では使用するデバイスによって74xx00は必要ないですが、今回使うAM29F040Bの場合は必要です。

【使う材料】

・マッパー0(HVC-NROM)の基板

・FlashROM(AM29F040B)×2個

・74xx00(NANDゲートIC、xxの部分はLSやHCなどで)

・工作に必要な道具類など

【使用する基板の選択】

PICT5860

マッパー0(NROM)はファミコン初期に使われていたメモリコントローラなどの小細工が一切無いタイプのものですが、使われている基板は各ソフトメーカー独自の基板含めていろいろあります。

PICT5854

写真以外にもあると思いますが、基板にはマスクROMと呼ばれる書き込みできないデバイスが2個、基本メインプログラムが入っているPRG-ROM(256Kbit=32KByte、又は128Kbit=16MByte)と、キャラクターデータが入ってるCHR-ROM(64Kbit=8KByte)が載っています。

PICT5867

マッパー0のFlashカートリッジ製作で最も使いやすいものはHVC-NROM-256K-02基板。

PICT5866

他にはHVC-NROM-03とサンソフトの基板も候補に上げられますが、HVC-NROM-256K-02基板よりも若干手を加えなければいけません。

HVC-NROM-03はPRG-ROMが16KByte用の基板なので、PRG-ROMの27pinとPCB(=基板)の35pinを追加接続する必要があります。

サンソフトの基板はHVC基板(Nintendo純正基板)とROMの取り付けが表裏逆になる為、後述する基板の加工(一部切り落とし)を工夫する必要があります。

PICT5859

基板の探し方としては上の写真を参考に書くと、端子が金色で先端部分が緑でないもの、を探すとHVC-NROM-256K-02基板かHVC-NROM-03を引く確立は90%以上、さらに事前にPRG-ROMが32KByteのゲームを調べておけばHVC-NROM-256K-02基板だけに的が絞れるでしょう。

【追記:20110402/00.02】

コネクタをチェックした後はカートリッジの中をのぞいてROMの足がちゃんと見えるか確認しましょう。

中には黒つぶしタイプも存在するので注意です。

慣れるとカセットを持っただけで重さで判断できるようになります(笑

PICT5855

端子が銀色(サンソフト以外)の基板はパターンが剥離してたりして質が悪いのでおすすめしません

今回の製作例では無難なところでHVC-NROM-256K-02基板を使います。

【キャラクター表示方法の切り替え】

ファミコンではキャラクターの表示方法で垂直ミラー(Vertical)表示と水平ミラー(Horizontal)表示の2通りの表示方法が使われていますが、マッパー0(&2&3)ではその切り替えを基板上で行います。

vhchange

基板を見るとV、Hと書かれたパターンがあり、どちらかをPCBの18pinと接続することにより表示方法が変わります。

VとPCB-18pin接続で水平ミラー表示、HとPCB-18pin接続で垂直ミラー表示となります。

当然ながらゲーム製作時にどちらか決まっているのでゲームプレイ時には合わせないと正常に表示されませんが、Kazzoで書き込む際にはどちらでも構いません。

【殻割りとマスクROMの取り外し】

この項は軽く流します。

殻割りにはいろいろな方法がありますが、ばくてんさんトコで紹介されてるビデオが簡単、かつお手軽かもしれません。

まずはマスクROMを取り外さなければいけませんが、今後2度と使わないつもりなら、ニッパーなどでマスクROMの足を全て切ってからハンダを取り除いても構いませんが、ハンダ吸い取り器で取ると綺麗に取れます。

序に、V/Hの切り替えが必要な人は、通常どちらかがショートしてるので、マスクROMを取り除いた序にハンダを吸い取っておきましょう。

【AM29F040Bと74xx00の加工】

PICT5872

マッパー0の基板はPRG-ROM、CHR-ROM共に28pinデバイスが取り付けられているので、32pinのデバイスをそのまま取り付けることができません。

基板にはメモリデバイスの尻合わせ取り付けするので、2個共に、1、2、31、32ピンの足を浮かせる必要があります。

PRG-ROM側に取り付けるAM29F040Bはさらに22、24ピンも浮かせます。

040bprg 040bchr

長さ的に必要ない先端部分は短くカットしても構いません。

一応、Vccへ接続するピンは3つの足を上のように繋げる必要はありません。

好きな箇所のVccへそれぞれ入れればOKです。

次に74LS00の足を加工しますが、その前に少し説明を。

nand0

使用するNAND回路は上の1回路のみですが、使用しない入力ピンは誤動作、ICの破壊を防ぐためVccかGNDへ接続しておきます。

(LSは必要ないかもだけど癖付けのためおすすめします)

nand1

今回の配線は上のように。

74xx00

7pin(GND)は基板に固定するため元のままで、未使用ピンはカット、他は伸ばしてハンダ付けします。

【基板へ取り付け】

PICT5862 PICT5864

配線する主要な線の信号名だけ写真に記しておきます。

V/Hの切り替えスイッチ付ける人は先に取り付けておくといいかもしれません。

後からだとCHR-ROM側に載せたAM29F040Bが邪魔でハンダ付けしにくくなります。

(表からハンダし難い場合は裏のパターンにハンダ付けも可能です)

スイッチの取り付けは各自好きな方法で。

今回はH(垂直ミラー)固定で作ります

PICT5885

伸ばした足以外を全てをデバイスの尻合わせでハンダ付けします。

CHR-ROM側のAM29F040Bの31ピンをPCB-47ピンへ接続します。

この時、あまり広範囲にハンダを盛らないように気をつけましょう。

PICT5903

PRG-ROM側のAM29F040Bの31ピンをPCB-14ピンへ接続。

各AM29F040BのVccは適当なところへ全て接続。

PICT5901

74LS00のGNDは固定の意味も兼ねて基板の空きホールへ接続。

Vccは適当なところから持ってくる。

PICT5904

上のほうに載せた74xx00の配線表に沿って24(/OE)、31ピン(/WE)を接続。

22ピン(/CE)を、元々24ピンが入ってたピンホールへ接続。

以上で基板の製作は終わりです。

【ケースの加工】

28pinデバイスの箇所に32pinデバイスを無理やり取り付けしてるので、そのままではケースに収めれませんから、少しケースも削ります。

PICT5892 PICT5893

丸で囲った部分を、AM29F040Bが当たらないように削除します。

端子に取り付けた配線を噛ませないよう、該当する部分も削っておきます。

PICT5897 PICT5896

PICT5898

無理なく収めることが出来れば完成です。

【読み込み&書き込みテスト】

正常に使えるかどうか、Kazzo+Anagoを使ってテストします。

PICT5907

まず、AnagoGUI用のマッパー0(nrom)とマッパー3(cnrom)用のスクリプトを左のファイル置き場からダウンロードします。

ファイル名はn_cn_GUI_script.zipです。

AnagoGUIではダンプとプログラムのスクリプトは一つに統合されてます。

anagoguicn

今回はマッパー0なので、nrom_GUI.afを使います。

読み込み、書き込みが正常に出来ることを確認しましょう。

上画像の右、書き込みでワーニングメッセージ出てますが、ミラーリングが合わないとなっているだけです。

V/Hが違っていてもデータの書き込みには全く影響しないので、書き込み時には特に気にしなくても構いません。

終わり。

【追記:20110402/23.30】

マッパー0にはPRG-ROMの容量が16KByteのものも存在しますが、今回作ったPRG-ROM32KByte仕様のカートリッジでも問題なく動かせます。


ファミコン マッパー0フラッシュカートリッジの怪

ファミコンのマッパー0フラッシュカートリッジの制作方法を書くための前置きです。

以前マッパー1基板(HVC-SLROM)を流用して製作したマッパー0のフラッシュカートリッジを作りましたが、製作後にna6koさんから、0の場合はバンク切り替えが無いから74xx00は要らないよ~とメールで回答を頂いてました。

その後再製作せず現在に至ったわけですが、作る機会ができたので74xx00を使わない方法で製作してみました。

まず、AM29F040Bを使わずに、他の余ってるデバイスで作ろうと、PRG-ROMにMX29F002(MASK10)を、CHR-ROMにW29C010(MASK14)を使って作ってみた。

(先に74xx00付きのソケット仕様基板で動作確認してから直付けしてます)

PICT5905

すると、あっさりと動いて一安心。

写真の接続ではPRG-ROM、CHR-ROM共に1、2、32ピンを足を浮かせてVccへ、31ピンも足を浮かせてそれぞれPCB14ピン、47ピンへ配線してあるだけで、他の足は基板のパターンカット一切無しで繋いでます。

これで正常に読み書きできる。

なら問題ないだろうと、お気楽にAM29F040Bを2個使って作ってみたところ・・・PRG-ROM側がどうやっても書き込みできなかった(-_-;

/CE、/WE、/OEの状態が順にLLHで書き込み出来るはずなんだけど。

これらのピンの配線をいろいろ変えたりしてみても正常には書き込めず・・・

仕方がないので急遽74LS00を接続してテストしてみたところ、無事書き込みできた。

Kazzo1.0でも2.1でも同じ動作をする。

ってことで、現状の結論として、AM29F040B使ってマッパー0のフラッシュカートリッジを作る場合は74xx00を使ったほうが安定すると思われます。

バンク切り替えは無いので、実際にはNAND回路1個使うだけですが。

その辺は次回に。

タイミング的な問題だけなら、もしかするとクライアント側で直るかも?ですかね >na6koさん

因みに、00無しで動作した写真の基板のPRGに付けたMX29F002をCHRに持ってくと書き込みできないんだよね(^-^;

MASK14のデバイスでも書き込める場合もあるし、いろいろ試すと試しただけ混乱してくる(笑

PC(USB)の環境によっても変化あるのかもかなぁ?

次は制作方法を書きますが、無難にAM29F040B×2個+74xx00仕様での方法を書きますってことで。

2011年3月25日金曜日

27C322(16bit)を8bitデバイスとして使う

私は32MbitのEPROM、27C322(16bit-bus)を沢山持ってます。

PICT5829

写真はメガドラ弄ってるときに安く入手したものの一部。

で、ネットを徘徊してる時にコチラで8bitデバイスとして使える方法が載っていたことに気が付いた。

リンク先の人はこの方法をテストしてないとのことだったので動くかどうかは定かではなかったけれども。

今までスーファミのカートリッジを弄ったこと無かったけど、手っ取り早く32Mbit-8bit-busを確認するには丁度いいってことで、スーファミのカートリッジを弄ってました(笑

PICT5838 PICT5840

スーファミ以外でも使う可能性が無くも無いので、とりあえず取り外し可能なタイプで。

74xx245は74xx645でも可。

スイッチについては後述。

PICT5841

配線がごちゃごちゃしてますが、ぶっちゃけロジックの向き間違えたので結果こうなっちゃいました(^-^;

ほんとはもうちょっとスッキリできる。

245(645)を2段重ねにすればさらにスッキリでき、スーファミなら全部カセット内に収めることも可能。

んで、早々に出来るかクロノトリガーを27C322に焼いて試したところ、初回テストでは動かなかった(笑

原因としては、この回路では上位バイトと下位バイトを交互に続けて読み込めるわけではなく、上位バイト16Mbit読んだ後に下位バイト16Mbitを読み込む、という切り替えになってるからなのでした。

3228mbc3

正常なクロノのデータと、27C322に書き込み後ホンコンで吸い出したクロノのデータを比較してみると、0x00000から1バイトおきにデータを読み、0x200000から0x00001から1バイトおきに読んでるのが確認できる。

・・・書き方へたでわからないかな?(^-^;

まぁ、とりあえずデータがズレて読み出されるわけなので正常に動くわけが無いよねw

ってことで、バイナリを8bit仕様で正常に動かせるようにコンバータを作った。

ファイルは一昨日左のファイル置き場へ既にアップ済みです。

(サーバの不具合なのか、エラーになる場合があるようですので、その場合は何度かトライしてください)

3228mbc1

メインは3228mbc.exeで、27C322が32Mbitなので32Mbitのデータまで対応してます。

48Mbitのゲームなら32Mbitと16Mbitに、64Mbitなら半分に切ってからコンバートする必要がある。

16Mbit以下のデータの場合は仕様上データサイズが倍になります。

使わないデータ領域は全て0xFFで埋めます。

16Mbit以上のデータは32Mbit固定になります。

4Mbit(512KByteね)のデータなら8Mbitのデータが作成されますが、ROMライタで焼く際に8Mbit以降のデータを0xFF等で埋めるようにすればOK。

3222in1.exeはオマケ・・・というか、仕様上、上位バイトと下位バイトを別々に使うことが出来るので、16Mbit以下のデータを焼く場合は2個1できるように序に作った(笑

スイッチが付いてるのはそのためで、74xx139の4pin、5pinをスワップして上位バイトで使うか、下位バイトで使うか選択してます。

3228mbc6

スイッチは2回路2接点タイプを使えば1個で済む。

2個1で作成されるファイルサイズは32Mbit固定です。

3228mbc2

で、データ一つの場合は322_8bit.binが作成され、2個1の場合は32282in1.binが作成されるので、そのままROMライタで焼くだけ。

3228mbc4

クロノの場合はこんな感じで。

3228mbc5

2個1の場合はこんな感じになる。

データの並びがどうなってるかよ~く見てね(笑

こうすることで、無事スーファミで正常に動かすことが出来た(^-^)

もちろんセーブも問題ないし、スーファミで読めるんだから当然ながらホンコンなどでも正常なデータとして出てくる。

コンバートはちょっとメンドイけども、32Mbit容量で16bit-busのデバイスを8bit-busで使えるのでそれなりに使えるんではないかなぁ~と。

まぁ、しかし、27C322を持ってる人と、対応するROMライタを持ってる人は限られてしまうかな(^-^;

運よく既に作ったけどお蔵入り状態の人は試していただければ。

因みにクロノはHiROMでマリコレ、ゼルダはLoROMです。

今回スーファミ基板弄って感じたことは、デバイスの容量問題は別として、ファミコンよりも簡単だ、ということですかね。

変なマッパー概念が無いためか、配線もそんなに難しくない。

SA-1とか特殊チップ積んでるものもあるけど、SA-1の場合は16bit-bus仕様のROM使ってるから27C322がそのまま使えるしぃ~。

メガドラの次に簡単な感じがしましたw

ファミコンのFlashカートリッジ作ったことある人は安心してスーファミに手を出してください(笑

.

ところで、例の地震の影響で先週の東京行きは中止になりました。

ホテル代とかは全て返金されたので、そのお金で東京にいる兄のところへ物資を送ったり、募金したりしました。

いろいろと思う事はありますが・・・一刻も早く全てが収束することを願います。

そんなことで東京へ行けなくて残念なわけだったのですが、おかげで嬉しいことがありました!

PICT5842

なんと、某氏さん(許可とってないので一応伏せます(笑)が私が持ってなかったゼルダコレクションを譲ってくれました~\(^-^)/

これは超嬉しかったw

おかげさまでGCの非売品ソフトコンプ(無理w)へ一歩近づきました(笑

感謝感謝です(-人-)

これはその内ねこかぶさんのツールを使っていろいろと遊んでみたいと思います(ぉ

N64のデータ書き換えて遊べるんだったよね?確か。

PICT5843

それと、オマケで被爆対策な玉w

いざという時はコレ飲んで逃げます(笑

あ、一応補足しておくと、個人での入手は医者を通さないと無理だそうです(^-^;

ぶっちゃけ賞味期限(?)が切れてるそうなので、まぁ、お守りですね。

使わないのが一番ですから~

みなさん元気に、前向きで行きましょ~

2011年3月5日土曜日

USB-Blasterもどきがver.UPしてた

去年EVERDRIVEの為に作ったUSB-Blasterもどきが2つもバージョンアップしてた(^-^;

最新のバージョン0.7からは使用するPICがPIC18F14k50に変更されてるので、前のPIC18F2550の場合は0.6で終わりかな?

PICT5828

一つは直接はんだ付けしちゃったから0.4のままで、分離できるヤツを0.6へバージョンアップした。

PIC18F14k50は値段が安いし製作もそんなに難しくないので、工作できる人は本家買うより作ったほうがいいかも~

ROMを増量使用テスト(訂正済み)+その他

ネタ元はslpcatさんが製作されたEPROM4個載せたスーファミカートリッジ。

私は1つのデバイスを複数に分けて使うことはやっていたけれども、複数のデバイスを1つに見せかけて使う方法は試したことがなかったのでやってみました。

PICT5826

テストで使ったデバイスは秋月で売られてる2MのPLCCのもの。

2コ1をするためのロジックは74xx139で、ベース基板はMMC3(TN-ROM)を使用。

en29f002

配線的には上の感じ。

ROMの/OE以外は全て同じ信号同士を配線する。

PICT5827

実際に作るとこんな感じになって、ちゃんと4Mデバイスとして使用できる。

74xx139は4個のデバイスを制御×2回路あるので、2Mデバイス使えばファミコンでPRG、CHR共に8Mづつ使えることになるねw

・・・配線はめっちゃ大変だと思うけど(笑

74xx139は、今回の使用環境ではモトローラの74LS139しか正常に動かなかった(^-^;

・・・なぜでせう?

スーファミで使うとか、他のデバイスに変えるとか、素直に4個繋げて/RESET使うの止めるとかすれば問題ないのかもしれない。

【訂正】

na6koさんのご指摘により配線を少し変更しました。

おかげでどのメーカーの74xx139でも正常に動かすことが出来るようになりました。

na6koさん、感謝ですm(_ _)m

一番左の空きソケットはスーファミ用メモリアドレスデコーダー(MAD-1)を使えないか試すためのもので・・・まだ使えていない(^-^;

ま、今回のテストで小容量の余ったデバイスを有効利用できることがわかった。

いざって時には使えるワザかな?

この方法はFlashROMやEEPROMに限らず、SRAMでも同じように使えるから便利かも。

あ、因みにAnagoはEN29F002Tの書き込みも対応してますが、上の状態ではKazzoで直接書き込み出来ません。

/CEを分離して/OEもそれぞれ入れるようにして、一個ずつ書き込む必要がある。

.

次、ネオポケFlashカートリッジの進行状況について。

・・・全然進んでません(爆

とりあえずEPM3032は到着してますが、使おうとしてるメモリが今月末予定になっててどのみち作れない(←いいわけです

LinkerのEPM3032も読んでないから読まないとなぁ・・・

.

PICT5821

動作が不安定になってジャンク送りにしたLGのDVDマルチドライブの基板を何気に見たらMX29LV160(8/16対応)が載っていた。

16Mbitデバイスは使い道があるから、ジャンクのドライブとか残ってる人は見てみるといいかも。

.

PICT5819

昨日オフで見つけたプレクのプレミアム。

x24,x48,x52のドライブはよく目にするものの、プレミアムを発見したのは初めて。

ありがたいことに書き込みも全く問題なく、とっても満足な一品(^-^)

左の首都高バトル'94はDSP1チップを取るために購入。

SuperEVERDRIVEで使えるかな、と。

.

今月の19、20と久しぶりに東京へ行くことになりまして、19日はアキバを散策できるはず。

じもぴーな方にも多分来ていただけると思うので、穴場を無理やり教えてもらおうかと考えてたりw(←30%冗談

aitendoは休みだけど直営店は開いてるそうなので行かないとね。

パチって相変わらず時間不定なんだろうか?

それより、とっても大事な疑問が。

アキバに普通の喫茶店って存在してるんでしょうか?

コーヒーが絶対的に飲みたくなるので必須事項なんですが、流石にメイド喫茶は気が引けるからなぁ・・・

カンは嫌なので、無ければどっかで買ってかないと。

何にしても久しぶりのアキバはどう変わっているのかとても楽しみな反面、怖くて引いてしまいそうな気がしないでもないけど、果たして?

.

あと、昨日からDCでViiゲー吸い出した記事へやけに人が飛んでくるなぁ、と思ったら、どうも私は変態らしい(笑

否定できないので・・・変態でごめんなさい(^-^;