ここでは改造コードについてのことやニンテンドーDSの改造コードの初心者講座みたいなものを載せています。


▼改造コードって?

ゲームがなかなか進まない・・・。
ゲームを骨の髄まで遊びつくしたい・・・。
そんなときは改造コードの出番です。
パーツや隠し機能がすべてオープンできたり、キャラのステータスを変えたりすることなどが簡単に!、できます。
但し、改造コードを使った状態でWi-Fiやワイヤレス通信やダウンロード通信で通信対戦するのは犯罪ですので、絶対止めましょう!

▼管理人がコードサーチを行う上で使用しているもの

■ROM吸い出し環境
DS本体(初期型シルバーorLite)+neo3SD+M3Simplyでやってます~
■コードサーチ環境
  • エミュレータ+emuhaste(Imaha486氏作・Windows用アプリケーション)
  • ndsdis2(Imaha486氏作・Windows用アプリケーション)による逆アセンブルデータ解析
  • DS本体+PAR(英語版ファーム)+TrainerToolkit(Datel社製)
Imaha486さんのツールはIRREGULAR CHILDで入手できます。

▼コードを使うためにコード以外で必要なものは

もちろん、DS本体・ゲームカートリッジ・PARなどの改造ツールが必要な事は当たり前ですが、それぞれのツールごとに
改造ツール名称 必要なもの
PAR ゲームコード・ゲームID
ワザポン ゲームID・マスターコード
コードフリーク マスターコード
が、必要です。  
以上のものがなければ、コードが使えなかったり、カートリッジを自動認識してくれません。

▼PAR用のゲームコード・ゲームIDってどうすればわかるの?


当然ですが、すでに内蔵済みタイトルやネット配信されているものについては、最初から登録されているので調べる
必要はないですが、新規にタイトルを登録する場合は、必要になってきますね。
ま、調べると言ってもとても簡単な作業でOKです。

  1. DSまたはDS LiteにPARをセットして電源をON。
  2. PARが起動し「ゲームカードに差し替えてください」とメッセージが出たら、PARを抜いてゲームカートリッジと交換。
  3. 登録されていないゲームのカートリッジを差し込むと、「ゲームタイトルフメイ」と表示されるはずです。
  4. この際、画面左下に「AxxJ-xxxxxxxx」と表示されたものがゲームコード・ゲームIDです。
  5. PC入力の場合は、左4ケタの英数字をゲームコード欄に、右8ケタの英数字をゲームID欄に入力。
  6. 直接入力の場合は、「AxxJ-xxxxxxxx」をそのまま入力。(※-ハイフンは忘れずに!!)

以上でOKです♪ちなみにゲームコードはゲームカートリッジ裏面印字の左4ケタと同じです。

▼ワザポン用のゲームID・マスターコードってどうすればわかるの?


◆ゲームIDについて
ゲームIDは、「AxxJ0y0z」という書式になっています。左4ケタは、PARで言う「ゲームコード」またはゲームカートリッジ
裏面印字の左4ケタの英数字となります。
「y」は、バージョンを示す数値で、ゲームカートリッジ裏面印字の左から6ケタ目の数値です。
ゲームカートリッジ裏面には、「AxxJNxJxx」という形で印字してありますが、「N」の右横の数値が「y」です。
「z」は、0(Wi-Fi非対応ゲーム),1(Wi-Fi対応ゲーム)となります。

◆マスターコードについて
※今のところマスターコードは、PC及びROM吸い出し環境がないと調べることができません。
(必要なもの)
  • ゲームのROMファイル(※違法にDLしたROMファイルはくれぐれも使用しないように!!)
  • ndsdis2(Imaha486氏作・Windows用アプリケーション)…Imaha486氏のサイトIRREGULAR CHILD
  • DSエミュレータ(逆アセンブルできるもの)

  1. ndsdis2でROMファイルを逆アセンブルし、テキストファイルに出力。(ndsdis2の使用方法は省略)
  2. 出力されたテキストファイルをテキストエディタ(メモ帳ではダメ!!おススメ→TeraPad)で開きます。
  3. アドレス02380000以降(基本的には02383000以降でOK)で、数値が「E8BD4000」となっているアドレスを検索。
  4. 該当アドレス付近が以下のようになっているものが当たり…マスターコードのアドレスとなります。

0238xxxx E12FFF12
0238xxxx E59F101C
0238xxxx E5910000
0238xxxx E3800001
0238xxxx E5810000
0238xxxx E28DD004
0238xxxx E8BD4000☆
0238xxxx E12FFF1E

多くの場合、マスタコードアドレスは「02383D40」「02383C60」が用いられているようです。
  1. 次にマスターコードの右8ケタの数値についてですが、多くの場合に用いられている
「02383D40 037FBB90」「02383C60 037FBAB0」をもとに、4で導き出したアドレスとの差を右側数値に
加算減算すれば、ほとんどの場合使用することができます。
まれにズレがある場合もありますが、右側の数値は、逆アセンブルで導きだしたマスターコードアドレスと同じ
処理を行っているARM7のメモリ領域のアドレスを示していますので、エミュレータを使用して探すことが可能です。
例)DeSmuMEでROMファイルを読み込んだ後、Tools→Disassemblerで「ARM7 Disassembler」を開き、
加算減算して求めた数値(先頭の0は除く…例えば37FBB90)を入力し「GO」をクリックすると該当アドレスへ
ジャンプしますので、その付近で4.と同じ数値の羅列がある部分を探します。
該当部分の数値「E8BD4000」となっているアドレスがマスターコード右側の数値となります。


最近上記パターンでは見つけられないタイトルが出てきています。
  • おさわり探偵 小沢里奈 シーズン2 1/2(にとにぶんのいち)
  • ゲームで出ましたっ!パワパフガールズZ
  • ゼルダの伝説 夢幻の砂時計
  • NANAライブスタッフ大募集!~初心者歓迎~
  • ちゅ~かな雀士 てんほー牌娘 Remix
  • 家庭教師ヒットマン REBORN!DS フレイムランブル 骸 強襲!
  • DEATH NOTE ~Lを継ぐ者~
  • タッチ!ボンバーマンランド スターボンバーのミラクル★ワールド
  • アイドル雀士 スーチーパイⅢ Remix
  • すばらしきこのせかい
etc.
ここには敢えて書きませんが、これらは同じパターンになっています。
ワザポンのゲームテックにも投稿していますので、ウラワザ通信に記載されたマスターコードや
ゲームラボに掲載されたマスターコードをもとに検証してみれば、わかると思います。

※まれに、ゲームによっては、マスターコードの常駐先を指定しないといけないものもあり、マスターコードが2行にわたる場合があります。 例)おいでよどうぶつの森(ADMJN0Jxx) 02380A88 037F87FC 00000000 023FF090

▼コードフリーク用のマスターコードってどうすればわかるの?


◆マスタコードのタイプについて
コードフリーク用のマスターコードには大きく分けて2種類のタイプが存在します。
1つは「暗号化タイプ」、もう1つは「非暗号化(生コード)タイプ」です。
アクションネットやAR誌で公開されているマスターコードはすべて前者「暗号化タイプ」のもので、その場合使用する
コード自体も「暗号化」されたものしか使用することができません。
私自身AR誌には生コードタイプで投稿していますが、掲載される際には暗号化されて掲載されています。
後者の「非暗号化(生コード)タイプ」であれば、自分でサーチしたコードをそのまま使用することができます。

◆「非暗号化(生コード)タイプ」のマスタコードについて
「暗号化」「非暗号化」ともマスタコードは2行で構成されています。
1行目はゲームの自動認識のためのもので、2行目が実質的にマスターコードと言われる部分になると思われます。

1行目は、ゲームカートリッジをコードフリークにセット→コードフリークをDSに差し込んで電源ON、メニューが表示
されたら、「コード管理」→「ゲーム登録」でゲーム名を入力して「OK」をタッチすると自動で表示されます。
ただし、先頭「0」は、「以降暗号化コードを使いますよ」という設定になるため、生コードタイプにするためには
先頭の「0」を「8」に変更する必要があります。

2行目は、AR誌2007.06(Vol.48)号にて紹介されている汎用の「F23800F4 223FC000」を試してみるのも
良いでしょう。効果がない場合の対処法も掲載されています。(ndsdis2による逆アセンブルデータが必要)

2行目については、複数のタイプが存在していて、右側8ケタの先頭数値によってタイプが変わってくるようです。
私の場合は、AR誌記載の「安定した汎用」ではなく別のタイプを用いています。
自分で使用している感覚としては、汎用と比べて不安定ということは一切ないですね。
私の使用しているタイプは、ワザポンと同じくndsdis2による逆アセンブルデータが必要となります。
具体的にはココに書かなくても、気づく方はいるでしょう。
ゲームラボの「スパロボW」の特集記事にもチラリと紹介されていましたしね…。

※ワザポンと同じく、まれに2行目の右側8ケタ(常駐先)を変更しないといけないものがあります。例)おいでよどうぶつの森(ADMJN0Jxx)8000871E 41444D4A F2380A88 023FF090

▼コードフリーク用コードが効かないのは何故?

コードが効かない原因はいろいろあります。
  1. コードの入力ミス
  2. コード自体が間違っている
  3. マスターコードが間違っている

1の場合は、自己チェックで再度確認すれば解決できますね。

2の場合は、使用者がサーチ技術やコードに関する知識がないと判断できませんね。当サイト掲載のコードに
ついては、一応実機検証の上で掲載していますが、検証の必要のないと判断したものは省略しているものも
ありますし、すべてのシチュエーションで検証している訳ではないので、一部効果があらわれなかったり不具合が
発生する場合も考えられます。また、こちらの記載ミスもないとは言い切れません。その場合はご容赦ください。

3の場合についても使用者がサーチ技術やコードに関する知識がないと判断できませんね。
当サイト掲載のコードフリーク用コードはすべてRAW(未暗号化)形式ですので、マスターコードに関しても
RAW形式のものを使用しなければ、コードの効果を得ることはできません。
当サイト掲載のマスターコードはすべてRAW形式で、実機での検証も行っていますが、前項目で述べたように
RAW形式といってもマスターコードは1種類ではありません。
当サイト掲載のコードフリーク用コードをお使いの際は、当サイト掲載のマスターコードもしくは他のRAW形式の
マスターコードを必ず使用してください。
コードフリーク本体に初期内蔵されているタイトルやサイバーガジェットのWi-Fiアップグレードによって追加された
タイトル、またはARオンライン秘技コード掲示板掲載分より自分でタイトルを登録したものについては、すべて
マスターコード・コードともに暗号化されたものですので、そこへ当サイト掲載のコードを追加しても使用することは
できません。すでに暗号化コードが登録されているタイトルで当サイトのコードを使用される際は、別タイトルとして
ゲーム登録し、マスターコード・コードともにRAW形式のものをご使用ください。

▼PARとコードフリークのコード形式の違いって?

PARとコードフリークのコード形式の違いを簡単にまとめてみました。。。。。
コードフリーク用コードはすべてRAW(未暗号化)コードが大前提です。
また、すべての形式について記載できないので、よく使うものについて抽出しています。
あくまで管理人の我流で理解している部分があり、勉強不足で間違っている部分があるかもしれませんが、
その点はご容赦くださいませvv

コードは内容の左(上)側がPAR、右(下)側はコードフリークです。
■8ビット数値書き込みコード
アドレスxxxxxxxに数値yy<00~FF(10進数0~255)>を
書き込む 2xxxxxxx 000000yy 0xxxxxxx 000000yy
■16ビット数値書き込みコード
アドレスxxxxxxxに数値yyyy<0000~FFFF
(10進数0~65535)>を書き込む
1xxxxxxx 0000yyyy 1xxxxxxx 0000yyyy
■32ビット数値書き込みコード
アドレスxxxxxxxに数値yyyyyyyy<00000000~FFFFFFFF
(10進数0~4294967295)>を書き込む 0xxxxxxx yyyyyyyy 2xxxxxxx yyyyyyyy
■シリアル(連続書き込み)コード
※PARコードは正確には「シリアル」という表現は正しくないの
ですが、同じ効果という意味合いで同列に記載しておきます。

(1)8ビット数値の連続書き込み
アドレスxxxxxxxからtttttttt+1回(CFはttt回)、
8ビット数値yyをアドレスuuuuuuuu+1(CFはuuuu)の間隔で、数値yyにvvvvvvvv加算しながら書き込む



(2)16ビット数値の連続書き込み
アドレスxxxxxxxからtttttttt+1回(CFはttt回)、
16ビット数値yyyyをアドレスuuuuuuuu+2(CFはuuuu*2)の
間隔で、数値yyyyにvvvvvvvv加算しながら書き込む



(3)32ビット数値の連続書き込み
アドレスxxxxxxxからtttttttt+1回(CFはttt回)、
32ビット数値yyyyyyyyをアドレスuuuuuuuu+4(CFはuuuu*4)
の間隔で、数値yyyyyyyyにvvvvvvvv加算しながら書き込む



【具体例-1】
下記のようにアドレス02156380から32ビット数値63636363を
アドレス4hごとに8回連続で書き込む場合
02156380 63636363
02156384 63636363
02156388 63636363
0215638C 63636363
02156390 63636363
02156394 63636363
02156398 63636363
0215639C 63636363

【具体例-2】
下記のようにアドレス02156380から16ビット数値270Fを
アドレス100hごとに8回連続で書き込む場合
12156380 0000270F
12156480 0000270F
12156580 0000270F
12156680 0000270F
12156780 0000270F
12156880 0000270F
12156980 0000270F
12156A80 0000270F

【具体例-3】
下記のようにアドレス02156380から8ビット数値を
アドレス10hごとに+1hしながら8回連続で書き込む場合
22156380 00000001
22156390 00000002
221563A0 00000003
221563B0 00000004
221563C0 00000005
221563D0 00000006
221563E0 00000007
221563F0 00000008


(1)
D5000000 000000yy
C0000000 tttttttt
D8000000 0xxxxxxx
DC000000 uuuuuuuu
D4000000 vvvvvvvv
D2000000 00000000
(2)
D5000000 0000yyyy
C0000000 tttttttt
D7000000 0xxxxxxx
DC000000 uuuuuuuu
D4000000 vvvvvvvv
D2000000 00000000
(3)
D5000000 yyyyyyyy
C0000000 tttttttt
D6000000 0xxxxxxx
DC000000 uuuuuuuu
D4000000 vvvvvvvv
D2000000 00000000

【具体例-1】
D5000000 63636363
C0000000 00000007
D6000000 02156380
D2000000 00000000

※「DC」「D4」は数値が「00000000」となるため省略できます。


【具体例-2】
D5000000 0000270F
C0000000 00000007
D7000000 02156380
DC000000 000000FE
D2000000 00000000

※「D4」は数値が
「00000000」となるため省略できます。


【具体例-3】
D5000000 00000001
C0000000 00000007
D8000000 02156380
DC000000 0000000F
D4000000 00000001
D2000000 00000000


(1)
4xxxxxxx 2tttuuuu
000000yy vvvvvvvv




(2)
4xxxxxxx 1tttuuuu
0000yyyy vvvvvvvv




(3)
4xxxxxxx 0tttuuuu
yyyyyyyy vvvvvvvv





【具体例-1】
42156380 00080001
63636363 00000000









【具体例-2】
42156380 10080080
0000270F 00000000









【具体例-3】
42156380 20080010
00000001 00000001
■コピーコード
※コードフリークの場合、バイトコピーで指定したアドレスから
指定したバイト分、別のアドレスへコピーするという効果ですが
ここではPARコードとの比較のため使用法を限定して記載
させていただきます。

(1)8ビット数値コピー
アドレスxxxxxxxに格納されている8ビット数値をアドレス
yyyyyyyに書き込む


(2)16ビット数値コピー
アドレスxxxxxxxに格納されている16ビット数値をアドレス
yyyyyyyに書き込む

(3)32ビット数値コピー
アドレスxxxxxxxに格納されている32ビット数値をアドレス
yyyyyyyに書き込む

【具体例】
アドレス02156384に16ビット数値xxxxでHP最大値が、
アドレス02156380に16ビット数値yyyyでHP現在値が
下記のように格納されている場合
12156380 0000yyyy
12156384 0000xxxx
xxxxの数値をyyyyにコピーすることでHP現在値が常に
最大値と同じ数値になり「HPへらない」コードができます。




(1)
023FE4D8 0A000003
DB000000 0xxxxxxx
D8000000 0yyyyyyy
D2000000 00000000
(2)
DA000000 0xxxxxxx
D7000000 0yyyyyyy
D2000000 00000000
(3)
D9000000 0xxxxxxx
D6000000 0yyyyyyy
D2000000 00000000

【具体例】
DA000000 02156384
D7000000 02156380
D2000000 00000000




(1)
5xxxxxxx 00000001
0yyyyyyy 00000000


(2)
5xxxxxxx 00000002
0yyyyyyy 00000000

(3)
5xxxxxxx 00000004
0yyyyyyy 00000000


【具体例】
52156384 00000002
02156380 00000000
■変動アドレスコード
※勝手にネーミング。。。コードフリークではポインターコードと
呼ぶようですが……

通常の単純書き込み(0~2)コードで済むようなコード内容でも
ゲームによっては、そのアドレスがゲーム起動毎に、またシーン別
で変動する設定になっているものがあります。
ただ変動するといっても、それは規則的に変動するようになって
います。
ある固定アドレスに起点となるアドレス(ベースアドレス)が随時
書き込まれ、そのアドレスをもとに一定の場所に数値が格納
される仕組みです。
変動が2重3重にかかっている場合もあるのですが、
コードフリークでは通常そういった形式には対応できない
(プログラムコードを組み込む必要がある)ので、ここでは
そういったパターンは割愛させていただきました。

(1)8ビット数値書き込み
アドレスzzzzzzzに格納されている数値をオフセット(ベースアド
レス)として~つまり、そのアドレスをアドレス00000000として
おきかえる~アドレスxxxxxxx(ベースアドレスからの距離)に
8ビット数値yyを書き込む

(2)16ビット数値書き込み
アドレスzzzzzzzに格納されている数値をオフセット(ベースアド
レス)として~つまり、そのアドレスをアドレス00000000として
おきかえる~アドレスxxxxxxx(ベースアドレスからの距離)に
16ビット数値yyyyを書き込む

(3)32ビット数値書き込み
アドレスzzzzzzzに格納されている数値をオフセット(ベースアド
レス)として~つまり、そのアドレスをアドレス00000000として
おきかえる~アドレスxxxxxxx(ベースアドレスからの距離)に
32ビット数値yyyyyyyyを書き込む

【具体例-1】
オフセット(ベースアドレス)が02135680に格納されている場合、
ある時はアドレスアドレス022643A4に、ある時はアドレス
02264294に所持金の数値yyyyyyyyが格納されていると
仮定します。
02135680 02264120 … ベース1
022643A4 yyyyyyyy … ベース1の時の所持金
02135680 02264010 … ベース2
02264294 yyyyyyyy … ベース2の時の所持金
この場合、ベースアドレスから所持金の格納されているアドレス
までの距離は+184hで一定となっています。
変動する所持金のアドレスに常に所持金MAX(この場合
999999とします)の数値を書き込む

【具体例-2】
上記具体例-1で所持金アドレス+8hのアドレスに
ランクポイントの数値が16ビットで格納されていると仮定し、
所持金MAXとポイントMAX(この場合9999とします)の数値を
同時に書き込む















(1)
Bzzzzzzz 00000000
2xxxxxxx 000000yy
D2000000 00000000


(2)
Bzzzzzzz 00000000
1xxxxxxx 0000yyyy
D2000000 00000000


(3)
Bzzzzzzz 00000000
0xxxxxxx yyyyyyyy
D2000000 00000000



【具体例-1】
B2135680 00000000
00000184 000F423F
D2000000 00000000










【具体例-2】
B2135680 00000000
00000184 000F423F
1000018C 0000270F
D2000000 00000000















(1)
6zzzzzzz 000000yy
0xxxxxxx 00000000



(2)
6zzzzzzz 0000yyyy
0xxxxxxx 10000000



(3)
6zzzzzzz yyyyyyyy
0xxxxxxx 20000000




【具体例-1】
62135680 000F423F
00000184 20000000











【具体例-2】
62135680 000F423F
00000184 20000000
62135680 0000270F
0000018C 10000000
■キー(ボタン)判定コード
常にコードの効果がが作動していると問題のある場合は、
キー判定を用いることにより、指定したキーを押したときのみ
コードの効果を得るようにすることができます。

(1)A,B,→,←,↑,↓,R,Lを判定に用いる場合
コードxxxxxxxx yyyyyyyyをボタンを押した時のみ発動
<PARの場合>
zzzzはFFFFから判定に使用するキーの数値を減算
A(-0001),B(-0002),→(-0010),←(-0020),↑(-0040),
↓(-0080),R(-0100),L(-0200)
複数のキーを判定に使用する場合は合計を減算
<コードフリークの場合>
zzzzは0000に判定に使用するキーの数値を加算
A(+0001),B(+0002),→(+0010),←(+0020),↑(+0040),
↓(+0080),R(+0100),L(+0200)
複数のキーを判定に使用する場合は合計を加算
ttは、判定コードの下に続く判定コードの対象となるコードの
行数を入れる。

(2)X,Yを判定に用いる場合
コードxxxxxxxx yyyyyyyyをボタンを押した時のみ発動
<PARの場合>
zzzzはFFFFから判定に使用するキーの数値を減算
X(-0001),Y(-0002)
複数のキーを判定に使用する場合は合計を減算
<コードフリークの場合>
zzzzは0000に判定に使用するキーの数値を加算
X(+0400),Y(+0800)
複数のキーを判定に使用する場合は合計を加算
ttは、判定コードの下に続く判定コードの対象となるコードの
行数を入れる。



(1)
94000130 zzzz0000
xxxxxxxx yyyyyyyy
D0000000 00000000











(2)
94000136 zzzz0000
xxxxxxxx yyyyyyyy
D0000000 00000000



(1)
D4000130 tt40zzzz
xxxxxxxx yyyyyyyy












(2)
D27FFFA8 tt40zzzz
xxxxxxxx yyyyyyyy
■16ビット条件判定コード
キー判定と同じように、特定のアドレスに格納されている数値
を基準にコードの効果が発動するようにすることができます。
基本的なもののみ記載しておきます。

(1)アドレスxxxxxxxに格納されている数値がyyyyと等しい
場合に以下のコード(uuuuuuuu vvvvvvvv)を実行
コードフリークの場合ttは、判定コードの下に続く判定コードの
対象となるコードの行数を入れる。

(2)アドレスxxxxxxxに格納されている数値がyyyyより小さい
場合に以下のコード(uuuuuuuu vvvvvvvv)を実行
コードフリークの場合ttは、判定コードの下に続く判定コードの
対象となるコードの行数を入れる。

(3)アドレスxxxxxxxに格納されている数値がyyyyより大きい
場合に以下のコード(uuuuuuuu vvvvvvvv)を実行
コードフリークの場合ttは、判定コードの下に続く判定コードの
対象となるコードの行数を入れる。



(1)
9xxxxxxx 0000yyyy
uuuuuuuu vvvvvvvv
D0000000 00000000

(2)
7xxxxxxx 0000yyyy
uuuuuuuu vvvvvvvv
D0000000 00000000

(3)
8xxxxxxx 0000yyyy
uuuuuuuu vvvvvvvv
D0000000 00000000

(1)
Dxxxxxxx tt00yyyy
uuuuuuuu vvvvvvvv


(2)
Dxxxxxxx tt20yyyy
uuuuuuuu vvvvvvvv


(3)
Dxxxxxxx tt30yyyy
uuuuuuuu vvvvvvvv



▼DSの改造コードツールがほしくなった!

ゲーム取り扱い店で置いてあるはず(今は、ほとんどコードフリークタイプⅡしかおいていませんが・・・。)です。
それでもなかったら、下からネットで買いましょう!

このツール名はコードフリークタイプⅡです。コードの使用以外に、セーブデータのバックアップも出来ます。DSの改造コードツールでは機能数はトップです!それなのに値段はお手ごろです。改造コード初心者から改造コード上級者までなじめるかと思います。

このツール名はワザポンです。このツールの最大の強みはパソコン不要!という所です。インターフェースも直感的です。ですがプラスアルファの機能がないので、初心者向け~初級者向けでしょうか。

このツール名はプロアクションリプレイMAX2です。改造コードの有名会社デイテルが作っているので使いやすいです。ただし、値段が高いのが難点でしょうか。

このツール名はコードリンクスです。このツールは変わった機能があります。それは声で改造コードが入力できることです!なので改造コードを楽チンに入力できます。
最終更新:2009年05月20日 20:31