コードサーチの基礎

改造コードサーチの基礎

DS改造コードを探す際は、主に以下のツールを利用する。

DS実機 + Datelトレーナーツールキット

Datelトレーナーツールキットを利用し、DSとPCをリンクすることで、
専用のツールを用いて改造コードをサーチ可能。
サーチ速度は遅いが、環境に左右されずに確実にサーチ作業を行うことができ、
プレイ中にリアルタイムで改造コードをチェックすることもできる。

DSエミュレータ + メモリエディタ

当初はデモプログラム程度しか動かなかったDSエミュレータも、
現在では市販ソフトが動作するレベルに達しており、それに伴って、
DSエミュレータを利用したコードサーチが主流となっている。
メモリエディタは汎用的なものを使っても一応はサーチできるが、
DSエミュレータ対応(実機と同じアドレス表記)のものもあるので、
そちらを用いると良い。 ※詳細は後述

逆アセンブラ

DISARM・ndsdis2などの逆アセンブラを用いてプログラムコードを直接解析する。
使いこなせば、通常の改造コードではありえない効果を得ることができるが、
サーチ前に最低限のARMプログラミングの知識はほしいところ。
と言っても、これを書いてる当人は中級者程度の技量しかないので、
ちょっと頑張れば誰でも挑める程度のものだったりする。
詳細は逆アセンブラを用いたコードサーチで解説しているのでご一読を。

DS改造コードサーチには以下のメモリエディタを使用する。

メモリエディタ "hasteDS" (Irregular Child)

hasteds

DSエミュレータ専用に特化したサーチツール。
no$gba、iDeaS、DeSmuMe、NeeDS、NeonDSに対応しており、
キャラクターステータスMAX・アイテム全取得・所持金MAXといった
一般的な改造コードであれば、このツールだけで十分サーチが可能。
ただし、このプログラムそのものは「dipstar補助ソフト」として作られているため、
改造コード書式がDSアクションリプレイと異なるので注意するべし。
  • DipStar
0XXXXXXX 000000YY ... アドレスXXXXXXXに1バイトYYを書込
1XXXXXXX 0000YYYY ... アドレスXXXXXXXに2バイトYYYYを書込
2XXXXXXX YYYYYYYY ... アドレスXXXXXXXに4バイトYYYYYYYYを書込
  • ACTION REPLAY DS
2XXXXXXX 000000YY ... アドレスXXXXXXXに1バイトYYを書込
1XXXXXXX 0000YYYY ... アドレスXXXXXXXに2バイトYYYYを書込
0XXXXXXX YYYYYYYY ... アドレスXXXXXXXに4バイトYYYYYYYYを書込
※DS改造コードWikiより抜粋

メモリエディタ "emuhaste" (Irregular Child)

hasteDSの後継で、DSエミュレータだけでなく、PS2やDreamCastのコードサーチも可能。
DSエミュレータはNo$gba、iDeaS、DeSmuMEの3種類のみの対応となっているが、
ユーザ自身で「コンフィグファイル」を作成し、追加してやることで対応可能。
(ユーザ自身で対応エミュレータを増やせることがemuhaste最大の利点)。
また「0-2コード効果反転」を有効にすることでコード書式がDSアクションリプレイ互換になり、
可変式アドレスを採用しているゲームに必要な「オフセット変更(Bコード)」を実装しているので、
汎用と謳いつつもDSコードサーチに適した仕様となっている。
レイアウトが若干hasteDSと異なるが、サーチ方法はほとんど変わっていない。

emuhasteサーチ手順と動画(DivX)

(その1)パラメータサーチ emuhaste01.avi
「直感ヒトフデ」でスコア99999999化する改造コードをサーチする手順。
数値入力のエディトボックスに L0 とか L720 と打っているが、このLは32bit(0~4294967295)の意味。
マリオのコインみたいに小さな値であれば S = 8bit(0~255) 、
キャラのステータスのようにほどほどの値であれば M = 16bit(0~65535) を使うと良い。
(その2)増減サーチ emuhaste02.avi
「Newスーパーマリオブラザーズ」で本来選べないカーソル位置をムリヤリ選択する動画。
カーソル位置だけでなくエネルギーゲージのように、目に数値として見えない値は
こうやって探す必要があり、動画のようにサーチ候補がいくつも該当することがあるが、
その場合は、それっぽいものを勘で適当に試してみるしかない。
なお、上のパラメータサーチ項で説明した S / M / L は
emuhaste左下にあるBYTE WORD DWORDラジオボタンがその効果をもつ。
(大抵のカーソル位置は1バイトでも表現できるので BYTE を用いた)。

ボタン判定(キー判定)コードについて

このWikiにアップされている改造コードには「セレクトボタンを押すと~」とか「L+上ボタンで~」のように、
ボタン入力に反応して発動するものがあるが、これはアドレス04000130(もしくは04000136)に格納されたボタン入力情報と、
9から始まる改造コード(9 + アドレス7桁 + 16ビットマスク + 16ビット判定値)の組み合わせで実現している。
また、各パラメータには以下の値が割り当てられている(MSB/LSBの説明が面倒なので思いっきり端折る)。
ボタン名称 A B セレクト スタート R L
1 2 4 8 16 32 64 128 256 512
これらの値を足して16進数にしたものがキーコードとなる。
A+Bボタン同時押しであれば 1 + 2 = 3 で、94000130 00000003。
この下にA+Bボタンを押したときだけ発動させたいコードを記述し、最後にD0000000 00000000で閉じればOK。
別タイプでA+B同時押し "94000130 FFFC0000" みたいなのもあるが、これはマスクとの演算結果が0になるように
しているだけで、効果は上のものと変わらない。


計算が面倒くせぇ!な人はARDSのキー判定コードを作る支援ツールを使うと良い。

最終更新:2010年01月09日 22:15
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。