小ネタ 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

M95512
M95040

512k bit
4kbit

訂正
スーパープリンセスピーチ

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




・全部を分解して調べたわけではないので、互換品とかの理由で間違っている可能性があるかもしれない。

・2重化してセーブというのは、セーブメモリを前半と後半の半分に分けて、同じデータを2箇所にセーブする方式のことである。自動セーブする頻度が高いゲームでは、突然の電源断などでデータが壊れるのを防ぐための対策として採用されているようだ。


(余談)
 「赤ちゃんはどこからくるの?」のセーブデータの読み出しが出来なかったので上記の対策のためにカートリッジを分解して調べてみたところ、ゲーム本体の記録用にいつものマスク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パッケージのものを使ったのではないだろうか?

 あるいは、単純に部品の高さが基板の右側だけ高くなるというのを避けるためかもしれない。


続く
(ポケモン ダイヤモンド・パール用の新しいセーブデータ記録用IC LE25FW403とか)