ゲームボーイ(GAMEBOY)ソフトのFRAM、nvSRAM化
2024年5月 nvSRAMの記述間違いと一部誤字修正
(この文章はnote.comに書いている文章とは言い方が違いますが、内容は大体同じです。)
令和に入ってからGB、GBAのIPS画面改造が全世界に流行しています。それを伴ってゲームソフトの電池レス化の需要も増えています。
GBソフトの電池レス化方法は主にSRAMをFRAMもしくはnvSRAMに交換するのですが、ソフトにより単純な交換で効かなく、追加で回路を作り、またはICの変更が必要な場合があります。
FRAM / nvSRAM
FRAMの基本知識は各自wikipediaに参照してください。
FRAMは電池無しでセーブデータを保存するICですが、以下2つの注意点があります。
・寿命は書込回数でなく、読込回数としてカウントされる
(しかし推定読込回数は10億回〜10兆回レベルと非常に高いので、ポケモンのような大量な読込をするソフトをいっぱいプレイしても生涯でも10億回に達するわけがなく、中古品でなければ寿命への心配は要りません。)
・データを連続してアクセスする場合、毎回アクセスの終わりにCE(Chip Enable)をOFFし、次回のアクセスに再度ONにする必要がある。即ちSRAMのようにCEをずっとONにしてデータを連続アクセスすることができない
→この理由でポケモン金銀等のソフトをFRAM化する際、OR gate回路の追加作成が必要になります。
(FM16、FM18シリーズ限定。FM28シリーズや富士通のMB85R256はSRAMの挙動と同じである為この制限を受けませんが、動作電圧は3.3V定格のため、5V環境のGB/GBCソフトに動作させると壊れる恐れがあります。)
上記2つの問題点を回避する為、nvSRAMが採用されます。
nvSRAMは1つのセルにSRAMと不揮発性ユニット(EEPROMっぽい)が同時に含まれるICです。通電の時にデータが「不揮発性ユニット→SRAM」に読み取り、そしてSRAMの部分が働き、電源が切れる時にデータが「SRAM→不揮発性ユニット」に「自動保存」する (AutoStoreと呼ぶ) という機構で、電池無しでセーブデータを保存することができます。
SRAMと同じ動作方式なので、ポケモン金銀等に使う場合にはOR gate回路の追加作成が不要であり、沢山のデータを読み込んでいても寿命を消耗することがありません。また、FRAM化の際に原因不明な故障が出るソフトには、nvSRAM化が安心安全な電池レス化手段になります。しかし、nvSRAMもnvSRAMならではの問題があります。
・今でも大量生産されているFRAMと違い、殆どのnvSRAMはEOL(End Of Life 品切れ)になった為、信頼できる新品の入手は極めて困難
・GBソフトでのセーブデータ保存は「自動保存」機能でしか利用できない為、寿命は電源ON/OFF回数としてカウント、最大100万回程度でFRAMよりやや劣る
・「自動保存」に必要な電量を保つ為、VCAP回路の追加作成が必須(STK15C88の場合、5V→GND間での超大容量コンデンサーの取付がこの回路に該当する)
・「自動保存」ができないチップ(STK11C68、STK11C88)も存在しており、間違い購入に注意
(これらのチップの保存手段は「手動保存」一択のみ。自分自身でフラッシュカードをデザインしない限り、「手動保存」はできません。わかりやすいフロアチャート:)

一般的に使われるFRAM ICは
・FM16W08 (3.3V 5V 両用) 8KB
・FM18W08 (3.3V 5V 両用) 32KB
・FM1808B (5V) 32KB
・FM1808-70 (5V 古いモデル) 32KB
・FM28V020 (3.3V) 32KB
・FM28V100 (3.3V) 128KB
・FM20L08 (3.3V 古いモデル 耐圧高め) 128KB
・MB85R256 (3.3V GBAソフトに公式で採用されたもの) 32KB
一般的に使われるnvSRAM ICは
・STK12C68 (5V) 8KB
・STK15C88 (5V) 32KB
・STK14CA8 (3.3V) 128KB ※耐圧が低い為非推奨
また、GBソフトには、FRAM / nvSRAM化の際、VDD-CE間10kΩのプルアップ抵抗を付ける必要があります。FRAMに抵抗を付けなかった場合、機種変更の時にセーブデータの全消が起こる報告があります。(nvSRAMではプルアップ抵抗の取付が義務化されますが、一部の型番はVDD-WE間で取付しても良いと変わります。)
AliExpressなど中国からの販売品について
中国には、底無しにコスト削減を拘る文化があります。
その考え方をベースにして、日本をはじめ世界各地からジャンクを輸入し、ジャンクPCBからICを取り外して販売することを長年やっています。
その為、中国から販売するFRAM/nvSRAMは異常に安いのです。全てジャンクからサルベージされたものなのです。稀に大企業から処分された不要な新品の備品もありますが、ジャンクPCBから外された余命の少ない中古品がメインになります。
EOLになった品物がどこでも売らず、中国市場が最後の入手手段という側面もありますが、生産中の製品については中国のジャンク品より何倍の値段が掛かっても、大人しくDigi-KeyやMouser等大企業から新品を注文するほうが賢明です。
(参考:FM18W08 中国フリマ 160円、Digi-Key 1770円)
GB・MBC1 / MBC5 / MBC6
殆どのソフトはSRAMをFRAMに交換するだけで動作できます。しかし、以下のソフトは不具合の報告があります。
・スーパーマリオランド 6つの金貨 (OR gate 必須)
・Wizardry シリーズの一部 (OR gate 必須)
・ドラゴンクエストⅢ (中断データ不具合の報告あり、詳細不明、恐らく中国FRAMに関与)
・ときめきメモリアル POCKET カルチャー編 スポーツ編 (長時間プレイで突然にフリーズ→データ全消、電池に戻ると発生しなくなる、原因不明だがFM28V020を使っても駄目なので OR gate には関与しない模様、恐らく中国FRAMに関与)
・超GALS!寿蘭、ゲームボーイウォーズ3、GBメモリカートリッジなど (128KB FRAM nvSRAM ICは全て3.3Vの為、ROMを自作PCBに引越す以外には安心安全な電池レス化方法が存在しません)
なお、MBC5の海外版ポケモンピカチュウも理論上OR gateは必要ですが、無くても不具合が出なさそうです。
GB・MBC2
MBC2はSRAMがMBCに内蔵される為、電池レス化にはROMをMBC1ソフトのPCBに引越しさせる必要があります。
MBC2のゲームは最大256KB ROM・4KB RAMである為、512KB ROM・8KB RAM仕様のDECNタイプのMBC1基板に移植するのがオススメです。DFCN(1MB/8KB)・DEDN(512KB/32KB)基板に移植するのはオーバースペックですが、浪費しても構わないなら好きにしていいです。
GB・MBC3
MBC3はポケモンの代名詞である為、OR gate回路の追加作成が必要です。
OR gate回路は、MBC3ソフトのRTC(時計機能)と同じタイミングでCEのON/OFFをコントロールして、FRAMの連続アクセスを失敗させないようにする方法です。作り方はredditか私がnote.comに書いている本文の別バージョンにあります。
3.3V定格のFRAM(FM28V020、MB85R256等)はSRAMと同じ挙動なので、VDDを接続せずに3.3V FRAMを使う場合(この状態で実際のIC動作電圧は4.3V)にはOR gate回路の作成が不要になります。しかし、3.3V FRAMは最大輸入電圧が4.6V前後と低い為、5Vの環境で長時間動作すると、寿命が短縮されます。
ポケモンでないMBC3のゲームは詳しく知りません。
GB・MBC30
ポケモンクリスタルの日本版でしか使われません。セーブデータのサイズは64KBであるものの、5Vの128KB FRAMもnvSRAMも存在しない為、安心安全な電池レス化方法は存在しません。
現状、VDDを接続せず、もしくは変換された3.3Vに接続した自作アダプタでFM28V100を乗る方法がデメリットの一番少ない方法となります。
(前述の通り、VDDを接続せずにFRAM/nvSRAMを取り付ける場合、実際のIC動作電圧は4.3Vになります。VDDを3.3Vに接続する場合も同じ。FM28V100(最大4.5V)、FM20L08(最大5.0V)では耐えますが、耐圧の低いSTK14CA8(最大4.1V)では寿命が短縮される可能性が高いです。)
GB・MBC7
既にEEPROMセーブ方式である為、電池レス化の必要がありません。
GBAソフトは全て3.3Vの環境であり、3.3VのFRAMも全てSRAMと同じ挙動である為、そのまま交換してよいと思います。