DSハッカー
<注意>
ページの内容あるいは使用方法に関して「(株)ゲームテック」に問い合わせることは絶対にしないでください。
<ゲーム改造ツールとは?>
ゲーム改造ツール(ワザポンなど)はゲームプレイヤーのキャラクタを無敵にしたり、通常は取得できないようなアイテムを簡単に取得したり、楽をしてゲームのエンディングにたどり着いたりするための、ゲームをより楽しむための便利な道具です。
<改造コードとは?>
ゲーム改造ツール(ワザポンなど)は改造コードと呼ばれる16進数のデータを使用して、特別な効果を得られるようにしています。改造コードはマスターコードと呼ばれるゲーム全体で共通して使用されるコードと、ワザコードと呼ばれる特定の効果を得るためのコードに分類されます。改造コードはゲームのタイトル、バージョン毎に必要になります。
<サーチツールとは?>
サーチツールはゲーム動作中のゲームのワークエリア(変数領域)の内容を取得して、ゲームの進行状況でどのように変化するかを調べるツールです。特定のワークエリアのアドレスと書き込まれる内容を調べることで、改造コードを作成することが出来ます。
<必要なもの>
カメレオンUSB、DS−RAMアダプタはこちらのページから購入できます
<使い方>
DS本体とカメロンUSB+DS-RAMアダプタを接続します。
更にカメレオンUSBとPCをUSBケーブルで接続します。
サーチを行うゲームのマスターコードに、サーチツール用のプログラムを常駐させるコード「00000002
00000000」を追加します。
(注意:サーチを行うゲームのマスターコードが必要です。ワザポン用のマスターコードは、雑誌やワザポンのユーザ登録を行うと無料でメール配信される「ワザポンウラワザ通信」などを参照してください。マスターコードのサーチツールの公開は現在検討中です。)
ワザポンの最初のメニュー画面からゲームを起動します。
ゲームが開始されたら、Windowsのコマンドプロンプト(DOS窓)からサーチツール(wzpmon.exe)を起動します。
(サーチツールで2000000番地のメモリーをダンプ(表示)したところ)
あとはサーチツールのコマンドを使用してコードをサーチします。
ゲームがハングしたりすると、USBの通信キューにごみがたまり、正常に通信できなくなる場合があります。
そのような場合はUSBケーブルを抜き差ししてから、再度wzpmonを実行してみてください。
サーチツールの終了方法は、ESCキーを押してから「Ctrl + C」で終了してください。
<サーチツールのコマンド>
サーチ系
SCL addr1 addr1 | サーチクリア(Clear)addr1からaddr2をサーチ対象エリアに設定して、今までのサーチ結果を破棄します。 通常この後に数値サーチを行います。addr1 addr2を省略するとメモリ全体(02000000-023fffff)を範囲とします。 サーチ範囲はサーチが絞りこまれることで自動的に狭まります。(サーチ範囲が広いとメモリ読み出しに時間がかかる) |
SCG addr1 addr1 | サーチクリアとメモリゲット(Clear & Get)addr1からaddr2をサーチ対象エリアに設定して、今までのサーチ結果を破棄します。同時にメモリー内容の取得も行います。 通常この後に増減・不動サーチなどを行います。addr1 addr2を省略するとメモリ全体(02000000-023fffff)を範囲とします。 サーチ範囲はサーチが絞りこまれることで自動的に狭まります。(サーチ範囲が広いとメモリ読み出しに時間がかかる) |
SL |
ヒットリスト表示。サーチ結果の全表示を行います。 (サーチコマンドでヒットが10件以下の場合は自動で表示します) |
SVD n | 10進数値nをサーチします。(Value Decimal) |
SVH n | 16進数値nをサーチします。(Valu Hex) |
SUP | 増加したものをサーチします。(UP) |
SDW | 減少したものをサーチします。(Down) |
SUC | 不動のものをサーチします。(Un Changed) |
SCH | 変化したものをサーチします。(Change) |
SM1 | サーチ対象をバイト |
SM2 | サーチ対象をハーフワード(2byte) |
SM4 | サーチ対象をワード(4byte) |
SMS | サーチ対象を符号付で |
SMU | サーチ対象を符号無しで |
メモリダンプコマンド
D addr len |
SMnコマンドで設定しているサーチ対象のバイト長でaddrからlenバイトダンプします。 lenは省略すると100hバイトです。 |
DB addr len | バイトダンプ |
DH addr len | ハーフワード |
DW addr len | ワードダンプ |
メモリエディトコマンド
E addr val1 val2 val3 ... | SMnコマンドで設定しているサーチ対象のバイト長でaddrからval1,...を書き込みます。 |
EB addr val1 val2 val3 ... | バイトエディット |
EH addr val1 val2 val3 ... | ハーフワードエディット |
EW addr val1 val2 val3 ... | ワードエディト |
wzpmon.exeのコマンドはこれで全てです。
これでは不十分、あるいはGUIでサーチをしたいという人もいると思います。
そんな方にはwzpmonソースコード(Visual C++ 4.0用)を公開しますので、
独自の機能を追加してより使いやすいものにしてください。
<ワザポンのコード体系>
マスターコードセクション
1行目 | xxxxxxxx yyyyyyyy | ゲームをフックするアドレスxxxxxxxxはロード時のアドレス、yyyyyyyyは展開時のアドレスになります。 dipstarなどで使用できるマスターコードアドレスはxxxxxxxxとyyyyyyyyを同じにします。 |
2行目以降 | 00000000 yyyyyyyy | コードの常駐アドレスをyyyyyyyyに変更します。(デフォルトは23fe000) |
2行目以降 | 00000001 yyyyyyyy | コードが有効になるまでの呼び出し回数の指定。(デフォルトは00000200) |
2行目以降 | 00000002 00000000 | サーチツール用のプログラムを常駐させる |
2行目以降 | 00000003 yyyyyyyy | ARM7の開始アドレスをyyyyyyyyに変更 |
2行目以降 | 00000004 yyyyyyyy | ARM9の開始アドレスをyyyyyyyyに変更 |
マスターコードには以下のコードを書くことが出来ます。
条件判定コード(3,4,5,6,7,8,9,A)
マスターコードセクションの条件判定コードは、全ての技コードに対して有効です。
つまり、ここに書かれた条件判定が不成立の場合は全ての技コードが実行されません。
(ゲームの開始を判定するコードなどを置くと効果的です)
書き込みコマンド(0,1,2,E)
マスターコードセクションの書き込みコマンドは、ゲームロード直後に実行されます。
ゲーム開始後は実行されませんので、固定的なパッチなどに使用できます。
(コードは常駐されませんので、常駐エリアの節約になります)
<コード一覧>
0xxxxxxx yyyyyyyy | メモリ[xxxxxxx]に32bit値yyyyyyyyを書き込む |
1xxxxxxx 0000yyyy | メモリ[xxxxxxx]に16bit値yyyyを書き込む |
2xxxxxxx 000000yy | メモリ[xxxxxxx]に8bit値yyを書き込む |
(条件文は不成立の場合条件文以下のコードは実行しない) | |
3xxxxxxx yyyyyyyy | 32bit if(yyyyyyyy > [xxxxxxx]) |
4xxxxxxx yyyyyyyy | 32bit if(yyyyyyyy < [xxxxxxx]) |
5xxxxxxx yyyyyyyy | 32bit if(yyyyyyyy == [xxxxxxx]) |
6xxxxxxx yyyyyyyy | 32bit if(yyyyyyyy != [xxxxxxx]) |
7xxxxxxx zzzzyyyy | 16bit if((~zzzz & [xxxxxxx])>yyyy) |
8xxxxxxx zzzzyyyy | 16bit if((~zzzz & [xxxxxxx])<yyyy) |
9xxxxxxx zzzzyyyy | 16bit if((~zzzz & [xxxxxxx])==yyyy) |
Axxxxxxx zzzzyyyy | 16bit if((~zzzz & [xxxxxxx])!=yyyy) |
Bxxxxxxx 00000000 | メモリ[xxxxxxx]にあるアドレスをオフセットとして以降の書き込みコマンドを実行(ポインタ書き込み) |
D2000000 yyyyyyyy | オフセットをyyyyyyyyに設定。以降の書き込みコマンドに使用される。 |
Exxxxxxx yyyyyyyy aaaaaaaa bbbbbbbb .. |
メモリ[xxxxxxx]からyyyyyyyy byte(8の倍数) 以降に続くデータ(aaaaaaaa ...)を書き込む |
Fxxxxxxx yyyyyyyy | yyyyyyyy byteを [zzzzzzzz] から [xxxxxxx] にコピーする(zzzzzzzzはオフセット) |