GAME BOYソフトのFRAM・nvSRAM化

(はてなブログに書いたものとは別な書き方ですが、内容は大体同じです。こちらに詳しく説明した分もあります。)

FRAM化、nvSRAM化って何?
 ゲームボーイソフトのセーブデータは、コロコロカービィ等EEPROMを使うMBC7ソフトやセーブ機能の無いソフトを除くと、全てCR系ボタン電池+SRAMの保存方式である。CR系ボタン電池は正規ソフトだと30年ほど長持ちした個体があるものの、最終的に電力が尽きる為、電池無しでセーブデータを保存したいニーズが生じる。そこでFRAM化・nvSRAM化というSRAMをFRAM・nvSRAMに交換してセーブデータを保存し続ける方法が誕生される。

FRAMとは?
 FRAMは、ferroelectric random access memoryの略称で、外部電力供給無しでデジタルデータを保存できる材料の一種である。読込・書込の速さの上限等はSRAMと違うが、元のSRAMは70nsと比較的遅いので、現在のFRAMの速度は十分対応できる。
 しかし、多くのFRAM製品は「1回の『指示』で訪問できるのはアドレス1つ・データ1つのみ」と、SRAMの「1回の『指示』でアドレス・データを連続訪問」とは違う為、FRAMが元のSRAMと同じことをしないと不具合が生じてしまうソフトがある。このような不具合は電気回路の追加・再構築によりSRAMの挙動を真似することで問題を解消可能だが、Analogue Pocket・FPGBC等互換機に動作できない場合があるので、このタイプのソフトをFRAM化する際は純正GB・GBC・GBAに使うことを前提として良い。該当するソフトはポケモンシリーズ、スーパーマリオランド2 6つの金貨等が挙げられる。
 また、原因不明な不具合も存在する。その場合はFRAM化を諦めて、nvSRAM化をすることがオススメ。該当するソフトはときめきメモリアルPOCKETなど。

nvSRAMとは?
 nvSRAMは、non-volatile SRAMの略称で、1つのSRAMセルに1つの不揮発性ユニットを加え、オートセーブ機能等を使って電源が切れる時にデータをSRAMから不揮発性ユニットにコピーして保存する「SRAMと不揮発性ユニットを一つにまとめる」材料である。通電時の挙動はSRAMと全く同じなので、FRAMのような挙動の違いによる不具合は生じない。
 但し現在ではゲームボーイソフトに使える28-SOIC規格のnvSRAMの製造が全て打ち切ったので、求められる製品は全て在庫限りや信頼性の無いジャンク品・リユース品である。
 また、nvSRAMのデータセーブ方式は「自動保存」と「手動保存」2種類がある。GBソフトの性質上「自動保存」でないとデータはセーブできないので、「手動保存」専用の型番が使えない上、「自動保存」の為に追加で回路を作らなければならない。
 なお、「nvSRAM」は「NVSRAM」と違うものである。両方ともSRAM+不揮発性ユニットを一つにまとめた製品だが、大文字の「NVSRAM」の不揮発性ユニットは内蔵バッテリーの絡むもの、小文字の「nvSRAM」の不揮発性ユニットはEEPROMと似ているものである。

FRAM、nvSRAMの寿命はいくつある?
 FRAMは1回の読込で寿命が1回カウントされる。常温・常圧で10兆回の読込に耐えられるものだが、ポケモン等SRAM(FRAM)がセーブデータ専用だけでなく拡張メモリとしても使われるゲームには、他のソフトの1回通電で1回の読込に対して、1回通電で何千回の読込が行われるので、寿命は10兆回から10億回まで落ちる。
 nvSRAMのSRAM部分は寿命が無限大であるが、不揮発性ユニット部分の寿命は100万回と、上記の「ポケモンFRAM化」の10億回よりも短い。nvSRAMの動作方式(自動保存)は「通電→読込→電源切れ→オートセーブで書込」なので、毎回の通電は寿命の1回にカウントされる。その為、nvSRAM化ソフトを使うときには極力に頻繁な電源ON/OFF操作を避けるべき。
 また、高温になると、寿命は急激に減少されるので、陽射し・キッチン・こだつ等熱源から離れるべき。

FRAM化の操作
 基本的にはそのままSRAMと交換してOK。
 ヒートガンでの作業が綺麗で薦められたが、中級者以上なら半田で十分。
 しかし、そのままだと機種変更(GBC→初代GB等)の時にセーブデータが消えるリスクがある為、対策としてVDDとCEの間に10kΩのPull-up抵抗を付けるほうが良い。
 ポケモンシリーズ・6つの金貨等のさらにSRAM挙動を模倣する為に必要な回路構築は、下記の図のようにして下さい。

ポケモン、6つの金貨等の追加回路構築
(別用意するORゲートIC, 抵抗, コンデンサーの取付は必須)
(RTCの無いゲームはコンデンサー不要)
(コンデンサーは0.1μFだと大きすぎるので小さくするのが良い)
(Analogue Pocket・FPGBCに動作不可)
(動作可能な改良版はs君が開発したが、金銀以外未テスト)

参考先: obskyr.io, reddit, R君, s君, おせろチャンネル, etc.

nvSRAM化の操作
 FRAMと比べてかなり複雑である。
 まずSRAMと交換。
 次はnvSRAMチップのdatasheetに従って、電源が切れる時のセーブ機能(自動保存機能、AutoStoreに呼ばれる)に必要なコンデンサー・抵抗で外部回路を作り出す。
 (GBソフトはnvSRAMの「手動保存」機能を使用できず、AutoStore(自動保存)でないとセーブデータは不揮発性ユニットに保存できない。そのため、手動保存だけしか使えないSTK11C88は使用できないので注意。)
 また、nvSRAMの挙動はSRAMと一緒であるものの、回路の安全性を保つ為、VDD-CEまたはVDD-WE間のPull-up抵抗(10kΩ)の取付は必須である。

よく使われたFRAMチップ
(殆どがRAMTRON, Cypress, お互い微妙に互換性の差あり)

※下記価格の10%〜20%で売られているものは高確率で寿命を迎えるリユース品であるので、例え10枚から2枚以上の良品があっても、本気でプレイするソフトにはケチらないで新品を使うべき。

FM18W08-SG
・32KB 3.3V / 5V 両用モデル、汎用性が最も高い
・ドラクエ3の中断セーブ機能には問題ない模様
・Digi-Key、Mouserの正規品は¥1904/枚(2024年)

FM16W08-SG
・8KB 3.3V / 5V 両用モデル
・新品の値段はFM18W08-SGの半分
・Digi-Key、Mouserの正規品は¥947/枚(2024年)

FM1808B-SG
・32KB 5V専用モデル
・5V環境のGBソフトに最適だが、先輩モデルのFM1808-70-SGに現れた個別ソフトの動作不具合については未検証
・Digi-Key、Mouserの正規品は¥1960/枚(2024年)

FM1808-70-SG
・32KB 5V専用モデル
・FM1808B-SGの先輩モデル
・N64ポケモンスタジアムシリーズの正常動作にはこれを指定しなければならないと言われる
・但しドラクエ3の中断セーブ機能に不具合あり
・生産が打ち切った為、ほぼジャンク品・リユース品である

FM28V020-SG
・32KB 3.3V専用モデル
・3.3V環境のGBAソフトのFRAM化に最適(任天堂公式が採用したFujitsu MB85R256の代用品として)
・SRAMのような「1回の『指令』でアドレス・データを連続訪問する」ことは可能だが、5V環境のGBソフトに無理矢理作動させると過電圧稼働による寿命減やAnalogue Pocket等非純正ハードに不具合を起こすことがある
・Digi-Key、Mouserの正規品は¥1927/枚(2024年)

FM28V100-TG
・128KB 3.3V専用モデル
・市販の128KB FRAM nvSRAMは3.3V専用しかいない為、フラッシュカードの製造に採用された場合には必ずLevel Shifterの組んだ回路がある
・最大耐圧は4.5Vと低い為、無理矢理Level Shifterの無いアダプタを使って、ポケモンクリスタル・超GALS!寿蘭・GBメモリカートリッジ等に装着させると過電圧稼働による寿命減・突然死のリスクが高い。その為、VDDを接続せずに使うことが視野に入っている(この状態では全てのピンの電圧が4.3Vになる)
・Digi-Key、Mouserの正規品は¥3278/枚(2024年)

FM20L08-60-TG
・128KB 3.3V専用モデル
・FM28V100-TGの先輩モデル
・最大耐圧が5.0Vと比較的高い為、ポケモンクリスタルのFRAM化(要アダプタ)に適している(VDDを接続せずに使うなら各ピンの電圧は4.3Vで最も安全)
・生産が打ち切った為、ほぼジャンク品・リユース品であることに注意

Fujitsu MB85R256
・32KB 3.3V専用モデル
・任天堂が公式にGBAソフトに採用したもの
・最大耐圧が4.6Vと低く、無理矢理GBソフトに作動させると過電圧稼働による寿命減のリスクが高い
・生産が打ち切った為、ほぼGBA純正ソフトから抜かれたリユース品である

よく使われたnvSRAMチップ

STK12C68
・8KB 5V専用モデル

STK15C88
・32KB 5V専用モデル
・追加回路が無くても電池切れの時のオートセーブ機能あり

STK11C88
・オートセーブ機能が無い為、フラッシュカードのデザイン以外には使えない
 (手動セーブはGBソフトのままでは実現できず、外部のFPGA/CPLDから手動セーブ機能を提供させる必要がある)

STK14CA8
・128KB 3.3V専用モデル
・サイズ的にポケモンクリスタル等とは互換性があるものの、最大耐圧は4.1Vと非常に低く、VDDをつけずに各ピン4.3Vで無理矢理作動させても過電圧稼働による寿命減・突然死のリスクが高い

この記事が気に入ったらサポートをしてみませんか?