CODE SQUARE -ゲーム改造コード-

たぶん更新しないゲーム改造コードのページ - 改造コードの置き場 -



アクセスアップ・SEO対策・検索エンジン登録

メイン

2006年02月22日

デバッグモードサーチ法 メニュー型編

 メニュー型とは、呼び名の通りゲームのメニュー項目にデバッグモードが隠されているタイプです。たとえば、スタートメニューやステータスメュー、バトルメニューなどのメニュー項目にデバッグモードが隠されています。メニューには、どの項目が選択されているかを特定の番号で判定しています。たとえば、スタートメニューに

    はじめから
    つづきから
    設定

と3つのメニューが表示されている場合、各項目には、上から順に「0」「1」「2」というようにメニュー番号が割り当てられています。メニュー型の場合、このメニュー番号に特定の数値をセットすることで、デバッグモードに入ることができます。

 具体的には、メニューの選択項目を変えながら増減サーチを繰り返します。そして、メニュー番号のアドレスがサーチできたら、そこに「3」「4」など表示されているメニュー項目に割り振られている番号より大きな番号をセットして、デバッグモードに入るかを確認します。

デバッグモードサーチ法 マップ型編

 マップ型とは、画面を切り替えることで、デバッグモードに入ることができるタイプのことです。一般的に「デバッグルーム」と呼ばれています。
 RPG系の場合、画面ごとにマップ番号(ルーム番号)が割り当てられています。たとえば、アイテム屋は「10H」、武器屋は「11H」という具合にマップ番号が割り振られています。このマップ番号をサーチすれば、デバッグルームを発見できます。
 具体的には、画面を切替えながら(アイテム屋、武器屋などに出入りする)増減サーチなどを繰り返し行います。このとき、特定の場所を基準にするのがポイントです。そして、マップ番号のアドレスがサーチできたら、任意のデータをセットしながら、画面を切り替えデバッグルームに入れるかを見ていきます。たとえば、FF8はマップ番号「49H」、テイルズ オブ ファンタジアはマップ番号「5H」がデバッグルームになります。

デバッグモードサーチ法 フラグ型編

 フラグ型とは、特定のアドレスに「0」「1」とフラグを立てることで、デバッグモードに入るタイプです。
 フラグ型の場合、まずデバッグモードがあるか確認します。まず、文字列検索で、「デバッグ」「テスト」「セレクト」「Debug」「DEBUG」「debug」「TEST」「SELECT」といったありがちな文字列を検索します。また、メモリダンプを眺めて、通常PLAYでは表示されない文字列などを見つけます。ただし、特殊な文字コードを使用しているゲームの場合には、簡単には見つけることはできません。

 そして、文字列が見つかったら、文字列のポインタ(先頭文字のアドレス)を参照している場所をサーチします。後はプログラムを追いかけて、どのアドレスにフラグを立てるか解析していきます。

続きを読む "デバッグモードサーチ法 フラグ型編" »

符号拡張

ポインタを参照しているアドレスを探す場合、「符号拡張」に注意する必要があります。
 たとえば、「ときメモ」の場合、デバッグ文字列は、次のようにテーブルに配置されています。

 8013e740 00 00 00 00 14 cd 13 80 1c cd 13 80 24 cd 13 80 ・・・・・ヘ・?・ヘ・?$ヘ・?
 8013e750 28 cd 13 80 30 cd 13 80 34 cd 13 80 3c cd 13 80 (ヘ・?0ヘ・?4ヘ・?<ヘ・?
 8013e760 40 cd 13 80 44 cd 13 80 4c cd 13 80 54 cd 13 80 @ヘ・?Dヘ・?Lヘ・?Tヘ・?
 8013e770 58 cd 13 80 60 cd 13 80 68 cd 13 80 74 cd 13 80 Xヘ・?`ヘ・?hヘ・?tヘ・?
 8013e780 7c cd 13 80 ac cd 13 80 b8 cd 13 80 c0 cd 13 80 |ヘ・?ャヘ・?クヘ・?タヘ・?

 このテーブルのポインタを参照しているところをサーチみると、次のルーチンがサーチできます。

続きを読む "符号拡張" »

ジャンプテーブルを使った分岐

 プログラムの分岐方法には、「ジャンプテーブル」と呼ばれるテーブルを使った分岐方法があります。ジャンプテーブルは、次のようなアドレスの配列になります。
 80010900 fc e0 01 80 0c e1 01 80 18 e1 01 80 34 e1 01 80

 プログラムでは、このジャンプテーブルを使って、次のような分岐処理を行います。

 8001e0c0 lui v0,#$8001
 8001e0c4 addiu s5,v0,#$0900 //s5=#$80010900:ジャンプテーブルのポインタをロード
 8001e0c8 lui s1,#$8009
 8001e0cc addiu s1,s1,#$0000 //s1=#$80097000
 8001e0d0 lw v1,$7bb0(s1) //ジャンプ先を決定する基準値をロード
 8001e0d4 nop
 8001e0d8 sltiu v0,v1,#$0003
 8001e0dc beq v0,zero,$8001e12dc //v1>3より大きかったら$8001e12dcにジャンプ
 8001e0e0 nop
 8001e0e4 sll v0,v1,#02 //v1×4:オフセットの計算
 8001e0e8 addu v0,v0,s5 //v0=v0+s5:ジャンプテーブルのポインタ+オフセット
 8001e0ec lw v0,$0000(v0) //ジャンプアドレスをロード
 8001e0f0 nop
 8001e0f4 jr v0 //v0番地にジャンプ
 8001e0f8 nop
 8001e0fc lw v0,$7bb0(s1)
 8001e100 sw s4,$7bb0(s1)
 8001e104 j $8001e214
 8001e108 sw s3,$0008(s0)
 8001e10c addiu a0,zero,#$0028
 8001e110 j $8001e240
 8001e114 addu a1,zero,zero
 8001e118 addiu a0,zero,#$001c
 8001e11c jal $800288d4
 8001e120 addu a1,zero,zero
 8001e124 lw v0,$7bb0(s1)
 8001e128 sw s2,$7bb0(s1)
 8001e12c j $8001e214
 8001e130 sw s3,$0008(s0)
 8001e134 lw v0,$7bb4(s1)
 上のソースの場合、レジスタv1にって次のように分岐します・

 v1=0のとき、8001e0fcにジャンプ
 v1=1のとき、8001e10cにジャンプ
 v1=2のとき、8001e118にジャンプ
 v1=3のとき、8001e134にジャンプ

続きを読む "ジャンプテーブルを使った分岐" »

コントローラの判定処理

 一般的にコントローラのボタン(キー)を押したとき判定処理は、次のようになっています。
 lui v0,#$8010
 lhu v0,$0000       //v0レジスタにキーコードを格納
 nop
 andi v0,v0,#0020
 bne v0,zero,$800CD000 //キーコード判定して分岐処理※

 ※キーコードが20Hだったら次の行へ、でなかったら8000CD000へジャンプ

 フラグ型のデバッグモードでは、SELECT+L1でデバッグモードONといったのがほとんどなので、この判定処理を覚えておくと良いでしょう。

続きを読む "コントローラの判定処理" »

GBA PARマスターコードのサーチ方法(暫定版)

[Top]
GBA PARマスターコードのサーチ方法(暫定版)
■用意するもの

 ・バイナリエディタ(SFXなど)
 ・デバッガ付きエミュレータ(batgbaがお勧めかな・・)


■サーチ手順

 まず、バイナリエディタで、ROMファイルを開いて、0x04000130という数値を検索します。
 SFXなら「l04000130h」で検索すればOKです。

 いくつかの候補が見つかりますが、とりあえず一番最初のオフセットアドレスに注目してください。
 以下の例では0000680Hになります。


続きを読む "GBA PARマスターコードのサーチ方法(暫定版)" »

GBAゲーム改造の手引き

■GBAのPARコード生成ツール-----ダウンロード

 GBA用のPARが発売されたはいいが、あいかわらず暗号化されている・・(--;)
 ということで、コードの暗号化・複合化を行うプログラムを作成してみました。
 このツールを使うと、VisualBoy Advance(以下VBA)でサーチしたコードをPAR用のコードに変換することができます。(あいかわらずDOS窓用です・・・)

 とりあえず、参考になるとは思いますので、ソースも置いておきます。
 誰かGUIなツールを作成してください。(^^;)

   GBAのPARコード生成ツールソース


 なお、適当に作成しましたので、正常に変換できない場合もあるかもしれません。


続きを読む "GBAゲーム改造の手引き" »

PS2ゲーム解析の手引き

PS2のプログラム改造がなんとかできるような環境が整ってきたので、プログラム改造方法についてのHowToを公開します。

まず、以下のHPから、PS2の逆アセンブラ「PS2DIS」と「改造支援ツール」を入手してください。

 ここは PS2 Linux 関係の日本語ページ

PS2DISは非常に便利です。逆参照でサブルーチン、ポインタを追いかけることができるので、比較的容易にプログラムを解析できます。

続きを読む "PS2ゲーム解析の手引き" »

Contact Us | ©2006 G'sSQUARE-G-Poket.com | Powered byMovable Type 3.21-ja