小ネタ 2006-001
NintendoDSのカートリッジのセーブデータの解析 その3
NintendoDSのゲームカートリッジに保存されているセーブデータの読み出しと書き込み方法について解析した結果の記録。
1. ハードウェア
前回のハードウェアでは読み出せないDSソフト(おいでよどうぶつの森,マリオカートDS,赤ちゃんはどこからくるの等)が出てきたので、回路を修正した。回路図は下記の通り。
読み出せなかった原因はカートリッジの15番ピンと16番ピンの信号がROMの信号と兼用になっているので、最近のどうぶつの森などのROMの信号と衝突するようになってしまったためである。以前のROMは衝突しなかった。
対策は、ROMのCS端子にちゃんとDISABLEの信号を入れてやることである。あと、RESET端子も接続した。
MaxDriveやBBMEも同様に改造すればよいと思われる。
改良した読み出し/書き込み器の写真(下) 、前に作った旧型(写真 上)
(後日加筆 2006.1.25)
EZ-USBはディスコンらしい?
2. ソフトウェア
発売されたニンテンドーDS用ソフトを調べてみたところ、セーブ用に5種類のメモリが存在していることが分かった。今後も種類が増えていくはずでなので、その都度ソフトを作り直さなければならないだろう。
現時点の5種類のメモリは、シリアルEEPROM M95040とM95640とM95512、シリアルフラッシュLE25FW203とM45PE20である。この5つを判別して読み出すためのソフトを作製した。
(2006.2.1 加筆 M45PE40が追加された。)
あと、前回までのソフトの動作が低速だったのを、十倍さんのBBMEのファームウェアを使わせて頂いて高速化した。
[ NintendoDS セーブデータ 読み書きソフト v1.2 (download) ]
[ ソースコード (download) ]
(2006.1.21 ※注意) 上記のv1.2には、M45PE20に対して正常に読み書きできないというバグがありました。修正するまでしばらくお待ち下さい。
まだ詳しくは不明ですが、DSのファームウェアに使っている初期のM45PE20の場合にBBMEによる高速読み書きができないようです。
赤ちゃんはどこからくるの?のセーブ用に使っているM45PE20の場合には正常に読み書きできるようなので、M45PE20に違いがあるのかもしれない。
少し調べるのに時間が掛かりそうです。DSのファームウェアのM45PE20をこのソフトで書き換えるような人は居ないと思うけど、注意して下さい。
(2006.1.25 ※注意) 上記のv1.2のバグについてですが、テキスト形式で保存したファイルが正常に書き込みできないという症状です。コンパイラのバージョンを変えたことによりsscanf関数の挙動が変わってしまいました。修正したv1.3を作成しました。M45PE20に関しては勘違いでした。
[ NintendoDS セーブデータ 読み書きソフト v1.3 (download) ]
[ ソースコード (download) ]
マリオカートDS、おいでよどうぶつの森のデータも読み書きすることができた。
マリオカートは、日本版から読み出したセーブデータを英語版に書き込んで動作させることができた。セーブデータ形式は全く同じになっているらしい。
タイムアタックのゴーストデータが配信されているが、これを取り出して交換できるようになると面白そうだ。ただし、セーブデータはどうも暗号化されているようなので難しいかもしれない。
Wi-Fi対戦する前にセーブデータをバックアップしておけば、負けても戦績を元に戻すことができる。面倒くさいが。
どうぶつの森は、英語版の改造ツールが出ている。日本語版とセーブデータ形式が異なるが、日本語版のデータの改造にも一部対応しているみたいだ。
(後日加筆 2006.2.1)
えいご漬けにシリアルフラッシュM45PE40が使われていたので、対応した。新しいDS Liteのファームウェア用のメモリもこのチップになると思われる。
[ NintendoDS セーブデータ 読み書きソフト v1.4 (download) ]
[ ソースコード (download) ]
(後日加筆 2006.3.15)
M45PE40が新しいDS Liteのファームウェアのチップになると思っていたが、実機を調べたら従来通り25FW203だった。ただし、v1.4で書き込みできなかった。BBMEファームウェアを導入する前の低速なバージョンだと書き込みできた。原因はまだ分からない。
3. ゲームソフトのセーブデータの解析
ゲームソフトのセーブ方式を調べた結果をまとめてみることにする。
ソフト名 |
日本版/北米版 |
セーブ方式 |
容量 |
備考 |
Electro Plankton |
JP |
none |
0 |
|
Metroid Prime Hunters - First Hunt |
US |
M95040 |
4k bit |
|
SPRUNG |
US |
M95040 |
4k bit |
|
Nanostray |
US |
M95040 |
4k bit |
|
Metroid Pinball |
US |
M95040 |
4k bit |
|
Shougun Empire REAL-TIME CONFLICT |
US |
M95040 |
4k bit |
|
研修医 天堂独太 |
JP |
M95040 |
4k bit |
|
探偵癸生川凌介事件譚 仮面幻影殺人事件 |
JP |
M95040 |
4k bit |
|
キャッチ! タッチ! ヨッシー |
JP |
M95040 |
4k bit |
2重化 |
スペースインベーダーDS |
JP |
M95040 |
4k bit |
|
パックピクス |
JP |
M95040 |
4k bit |
|
パックンロール |
JP |
M95040 |
4k bit |
|
ディグダグDS |
JP |
M95040 |
4k bit |
|
ゴールデンアイDS |
JP |
M95040 |
4k bit |
|
Feel the Magic XY/XX |
US |
M95640 |
64k bit |
|
Ridge Racer DS |
US |
M95640 |
64k bit |
|
WarioWare Touched! |
US |
M95640 |
64k bit |
2重化 |
Zoo Keeper |
US |
M95640 |
64k bit |
|
Puyo Pop Fever |
US |
M95640 |
64k bit |
|
直感ヒトフデ |
JP |
M95640 |
64k bit |
2重化 |
スーパーマリオ64DS |
JP |
M95640 |
64k bit |
2重化 |
麻雀大会 |
JP |
M95640 |
64k bit |
|
ミスタードリラー Drill Sprits |
JP |
M95640 |
64k bit |
|
アナザーコード |
JP |
M95640 |
64k bit |
|
ザ・アーブズ シムズ・イン・ザ・シティ |
JP |
M95640 |
64k bit |
|
メテオス |
JP |
M95640 |
64k bit |
|
Cool104Joker&SETLINE |
JP |
M95640 |
64k bit |
|
遊戯王デュエルモンスターズ ナイトメアトラバドール |
JP |
M95640 |
64k bit |
|
超執刀カドゥケウス |
JP |
M95640 |
64k bit |
|
押忍! 闘え! 応援団 |
JP |
M95640 |
64k bit |
|
サバイバルキッズ |
JP |
M95640 |
64k bit |
|
やわらか頭塾 |
JP |
M95640 |
64k bit |
|
Jump Super Stars |
JP |
M95640 |
64k bit |
|
らき★すた萌えドリル |
JP |
M95640 |
64k bit |
|
ビューティフルジョー スクラッチ |
JP |
M95640 |
64k bit |
|
悪魔城ドラキュラ 蒼月の十字架 |
JP |
M95640 |
64k bit |
|
だれでも遊び大全 |
JP |
M95640 |
64k bit |
|
Samu's Deep Sea Adventures |
US |
|
|
訂正 |
スーパープリンセスピーチ |
JP |
M95512 |
512k bit |
|
Sprinter Cell CT |
US |
LE25FW203 |
2M bit |
|
MarioKart DS |
US |
LE25FW203 |
2M bit |
|
大合奏! バンドブラザーズ |
JP |
LE25FW203 |
2M bit |
|
Nintendogs 柴犬 |
JP |
LE25FW203 |
2M bit |
|
脳を鍛える大人のDSトレーニング |
JP |
LE25FW203 |
2M bit |
|
ぐるぐる投げっと |
JP |
LE25FW203 |
2M bit |
|
SDガンダムGジェネレーションDS |
JP |
LE25FW203 |
2M bit |
|
タッチde楽勝 パチスロ宣言 リオデカーニバル |
JP |
LE25FW203 |
2M bit |
|
おいでよどうぶつの森 |
JP |
LE25FW203 |
2M bit |
|
マリオカートDS |
JP |
LE25FW203 |
2M bit |
|
赤ちゃんはどこからくるの? |
JP |
M45PE20 |
2M bit |
|
もっと脳を鍛える大人のDSトレーニング |
JP |
M45PE20 |
2M bit |
|
えいご漬け |
JP |
M45PE40 |
4M bit |
(余談)
「赤ちゃんはどこからくるの?」のセーブデータの読み出しが出来なかったので上記の対策のためにカートリッジを分解して調べてみたところ、ゲーム本体の記録用にいつものマスクROMとは違う部品が使われているのを発見した。
(余談2)
当たり前なのだが、「エレクトロプランクトン」のセーブデータが読み出しできない。そもそもセーブ機能がついていないからである。基板はわざわざ専用のものを製造している。汎用の基板を流用してセーブ用ICを実装しないで製造すれば安く済むのに不思議だ。このゲームのクリエイターがセーブ機能を付けないと言ったときに、誰かが反対したのでではないだろうか?
で、その理由として「セーブ機能を付けないカートリッジは特注なのでコストがかかる」と。でも、結局そのコストを呑んでソフトの値段を上げることで押し切って、このゲームカートリッジができたんじゃあないだろうか。そんな風に想像してしまった。
(後日加筆 2006.1.22)
BBME-IFについても、これを入手したので、上記と同様に改造してマリオカートDSやおいでよどうぶつの森のデータを読み出せるようにすることができた。
10kΩの抵抗を5番と8番の間にハンダ付けし、4番と5番を短絡するようにハンダ付けした。
(ActionReplay MaxDUOも同様に改造できるらしい。日本向けのMaxDriveも同じと思われる)
(後日加筆 2006.2.17)
先日も書いたが、えいご漬けのセーブ用メモリはM45PE40である。データシートを見るとパッケージが2種類存在する。従来のソフトの2MbitのM45PE20はSOパッケージが使われていたが、えいご漬けはVDFPNという珍しいパッケージ形状の品物が実装されていた。
基板からM45PE40を取り外してみたが、いちおうICの裏側が金属プレート部分は基板のフットプリント部分と導通しないように取り付けてあった。とはいえちょっと危なげな実装に見える。
4人分のセーブデータのために4MbitのM45PE40を使っている。贅沢な仕様だ。PCソフトから短期間で移植したのでPC版の仕様からあまり減らせなかったのだろうか?
ちなみに1人で遊ぶには2MbitのM45PE20でも構わないようだ。取り外したM45PE40の代わりにM45PE20を取り付けたが、ちゃんと動作している。しばらく2Mbitのまま使ってみて定期的にデータを吸い上げて使用領域をチェックしてみるか。
取り外したM45PE40は、DIPタイプの8ピンの変換基板に実装した。前にDSのファームウェア用M45PE20をICソケット化する改造をしたのだが、そのDSに取り付けるためである。中国版iQueDSは既にM45PE40をファームウェアに使っているそうだ。来月発売のDS-LiteにM45PE40が使われているのではないかと予想したので、ファームウェアの差し替え実験に用意してみた。
ちなみにM45PE20は在庫が潤沢なようで普通に購入することができた。安かったのでつい30個も買ってしまった。何に使うんだ。
それに対してM45PE40は入手難である。SOパッケージ版はDS-Lite本体に使うために品薄で、えいご漬けは仕方なくVDFPNパッケージのものを使ったのではないだろうか?
あるいは、単純に部品の高さが基板の右側だけ高くなるというのを避けるためかもしれない。