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化で逆に不具合が生じるソフトは存在している(ポケモンシリーズ、スーパーマリオランド2 6つの金貨など)。このような不具合は電気回路の追加・再構築によりFRAMをSRAMの挙動に真似させることで解消可能だが、逆にこの回路によってAnalogue Pocket・FPGBC等互換機に動作できない場合があるので、このタイプのソフトをFRAM化する際は純正GB・GBC・GBA以外に使わないほうが良い
 また、原因不明な不具合も存在する。その場合はFRAM化を諦めて、nvSRAM化をすることがオススメ。

nvSRAMとは?
 nvSRAMは、non-volatile SRAMの略称で、1つのSRAMセルに1つの不揮発性ユニットを加え、オートセーブ機能等を使って電源が切れる時にデータを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つの金貨等の追加回路構築
(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枚以上の良品があっても、本気でプレイするソフトにはケチらないで新品を使うべき。
※筆者は10枚の中で10枚とも不良品のことを遭遇したので、現在新品のある型番は新品でしか使わない。

FM18W08-SG
・32KB 3.3V / 5V 両用モデル、汎用性が最も高い
・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専用モデル
・AutoStore(自動保存)に必要な追加回路は他の型番よりシンプル

STK11C88
・オートセーブ機能が無い為、フラッシュカード以外には使えない
 (手動セーブはGBソフトのままで実現できず、datasheetを従ってROMにパッチを作って適用しないと全く利用できないから)

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

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