小ネタ 2005-007

NintendoDSのカートリッジのセーブデータの解析 その2


1. ソフトウェア製作

現在までにいくつか発売されたニンテンドーDS用ソフトを調べてみたところ、セーブ用に3種類のメモリが存在していることが分かった。 GameboyAdvanceの場合、かなりの種類のセーブ用メモリの種別が存在している。最近ではファミコンミニのシリーズがセーブ方式を変えたのでマジコンとかエミュとかで動作しないということがあった。DSのゲームカートリッジの場合にも今後必ず種類が増えていくはずでなので、その都度ソフトを作り直さなければならないだろう。

現時点の3種類のメモリは、シリアルEEPROM M95040とM95640、シリアルフラッシュLE25FW203である。この3つを判別して読み出すためのソフトを作製した。 書き込みについては、まだフラッシュメモリの消去に対応していないので、EEPROMの書き込みしかできない。あと、動作速度も遅い。 まだ改良には時間が掛かりそうなので、とりあえず、この段階で公開しておくことにする。

[ NintendoDS セーブデータ 読み書きソフト v1.00 (download) ]
[ ソースコード (download) ]


(後日加筆 2005.8.12)

シリアルフラッシュM45PE20とLE215FW203に対応した。一応は対応してみたものの、容量が大きいフラッシュメモリの読み書きはかなり遅い。それに比べてBBMEはかなり速いので、そのくらいまで改良したい。そのうち。

[ NintendoDS セーブデータ 読み書きソフト v1.01 (download) ]
[ ソースコード (download) ]
[ 使い方 ]
(後日加筆 2005.9.9) 上記のリンク先が間違っていたので直しました。

(後日加筆 2006.1.9) 新しい種類のセーブメモリに対応などの改良したものを[こちらのページ]で作製している。




2. ハードウェア製作 (追加)

MINI EZ-USBキットを使わずに、EZ-USBチップ搭載の機器を改造して*安価*にセーブデータ読み書き器を製作してみた。
回路は前回のまま。


左から 従来のMini EZ-USB、 IOデータ製USB-PDCの改造品、シャープ製CE-PD03の改造品


IOデータ製USB-PDCの改造、EEPROMとRS-232CレベルコンバートICとその周辺の抵抗,コンデンサを取り外した。


シャープ製CE-PD03の改造、EEPROMとコネクタを取り外した。

ゲームカートリッジとのコンタクト部分については今回新たに製作しなかったが、ICテストクリップの中身を流用して作るのが良さそうだと思った。



3. ゲームソフトのセーブデータの解析

今回、新たに海外版リッジレーサーDSというゲームを入手したので、セーブデータを調べてみた。データの先頭部分が全部0xFFである。セーブ形式の判定のために先頭部分で判別するソフトを作ってあったのだが、このせいでうまく判別できなかったため、修正が必要だった。PSP版リッジのようにゴーストカーのデータが保存されてたりするとデータ交換するのが楽しいのだが、DS版にはそういうのはないのが残念である。

いまのところセーブデータを吸い出して改造したり交換したりして楽しめるDSソフトがほとんど存在しない。DSソフトもまだ出始めだからなあ。唯一データの吸い出しに意味がありそうなのは大合奏バンドブラザーズの作曲データである。

あと、直感ヒトフデの自作面データについて、パスワードでちまちまとやりとりするのが面倒なので一気に100面全部まとめて交換できるのはメリットがあるかもしれない。

そのうちRPGやポケモンが出たらデータの改造で所持金や経験値とかのステータスを好きなようにいじれるので、セーブデータ改造の面白みがでてくるだろう。イベント限定とかのレアポケモンとかは価値が下がってしまうかも。


(後日加筆 2005.2.27)

 他に、2本のゲームソフトについて調べてみた。
キャッチタッチヨッシーのゲームカートリッジのセーブ用ICはM95040である。セーブ領域の前半256バイトと後半256バイトが同じ内容になっている。国産の多くのソフトがセーブ中事故対策として2重化して保存しているようだ。
アナザーコードのゲームカートリッジのセーブ用ICはM95640である。これは2重化していなかった。
 あと、書き忘れたがリッジレーサーDSのセーブ用ICはM95640である。



(後日加筆 2005.5.1)

 ある程度のまとまった数のソフトが出たので、調べた結果をまとめてみることにする。



ソフト名

日本版/北米版

セーブ方式

容量

備考

Metroid Prime Hunters - First Hunt

US

M95040

4k bit


SPRUNG

US

M95040

4k bit


研修医 天堂独太

JP

M95040

4k bit


探偵癸生川凌介事件譚 仮面幻影殺人事件

JP

M95040

4k bit


キャッチ! タッチ! ヨッシー

JP

M95040

4k bit

2重化

スペースインベーダー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重化

直感ヒトフデ

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


大合奏! バンドブラザーズ

JP

LE25FW203

2M bit


Nintendogs 柴犬

JP

LE25FW203

2M bit




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

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

・発売されたばかりのNintendogsだが、これはカートリッジが3種類存在するということだ。1つのカートリッジでは最初の犬種が限られていて、遊んでやり込んで金が貯まると増えていくものらしい。手っ取り早く増やすために他のプレイヤーとすれ違い通信などすると増やせるということだ。隠れキャラのレアな犬種とかあるのだろうか? 解析が進むと楽に所持金を増やしたり犬種を増やしたりすることが可能になるだろう。


(後日加筆 2005.5.7)

Xport2.0という特殊な開発用ハードウェアを用いて、SPI方式の機器をNintendoDSに接続して制御するのを試してみた。これを応用すればDS本体を使ってPC無しでセーブデータの吸い出しや改造ができるかもしれない。



(後日加筆 2005.5.30)

ちゃんとしたDSカートリッジ用ソケット部品を使って、もう1台製作してみた。コンタクト部の安定感が断然良い。


新しく作ったもの(左)、PassMeの基板を中継してDSカートリッジを挿したところ(右)


つづく