簡易メモリエディタを利用したダイパの任意コード実行用のコード一覧
やり方解説ではありません。ほぼデテロニー氏のマーキングACEの解説サイトのプログラムを簡易メモリエディタ用に直しただけ。自分用のメモで無断なので怒られたら非公開にします。
- 動的RAM始点特定
- コピープログラムの実行(Cブロック呼び出し)(デ)
- コンディション変更(げ~し)
- ボール変更(ラ、ロ)
- フラグ付与(ソ、ゾ)
- 技変更(ふ~へ)
- 経験値変更(ぇ)
- 個体値変更(ゅ~り、C)
- 持ち物変更(ぅ)
- 種族変更(い)
- 入手レベル変更(親性別指定)(リ、ル)
- 出会った場所変更(ョ、チ)
- 卵入手場所(ユ、チ)
- 出身バージョン変更(ト)
- 努力値変更(が~け)
- 特性変更(ぉ)
- エンカウントタイプ変更(レ)
- 親TN変更
- NN変更
- 親ID変更(う)
- リボン変更
- なつき度変更(え)
- 性格値変更(○)
- 国籍変更(か)
- リタイア追加(通常世界)
- 任意乱数値指定
- 任意ポケモンの化石受け取り
- マーキングプログラム正常化
コピープログラムの実行(Cブロック呼び出し)(デ)
デテロニー氏のサイトにあるコピープログラムの実行用。コードを書き込んだポケモンの右隣にコピーしたいポケモンを置き、コードを書き込んだポケモンにマーキング。マーキングで指定した数+1匹増える。マーキングなしだと1匹増やす。増やしたいポケモンにマーキングしないよう注意。ポケモンがいない場所をコピーすれば指定した数ポケモンを消去できる。
34,003,632×1
18,103
マーキング
マーキング | 増える数 |
---|---|
なし | +0匹 |
◯ | +1匹 |
△ | +2匹 |
▢ | +4匹 |
♡ | +8匹 |
☆ | +16匹 |
◇ | +32匹 |
コンディション変更(げ~し)
34,003,632×1
*1
41,827,200×1
コンディションの数値を10進数で入力
*1 どのコンディションを変更したいか指定
かっこよさ(げ) 1,975,021,344
うつくしさ(こ) 1,979,215,648
かわいさ (ご) 1,983,409,952
かしこさ (さ) 1,987,604,256
たくましさ(ざ) 1,991,798,560
けづや (し) 1,995,992,864
ボール変更(ラ、ロ)
マーキングによってボールの種類を指定。ボールが格納されている領域は2つあり、それぞれ①、②とすると①にはDPt産のポケモンは①の領域のみにボールの種類が格納されており、②は未使用。HGSS産のポケモンの場合、ガンテツボール、コンペボール以外のボールであれば、①、②に同じボールが格納されている。ガンテツボール、コンペボールの場合は、①にモンスターボールが、②にそのボールの種類が格納されている。例外として、配布ポケモンの場合はHGSS産であっても①の領域のみ使われているっぽい。過去作産のポケモンはDPtを通して輸送するかHGSSを通して輸送するかで使う領域が変わると予想しているが、DPtのパルパークは制限がうざいので未検証。HGSSを通して輸送した場合には①、②の両方に同じボールが格納されている模様。ドリームボールも指定でき5世代に送ると反映されるようだが未検証。
34,003,632×1
*2
マーキング
*2 ①を変更する際は1,992,849,440(ラ)、②を変更する際には2,005,432,352(ロ)
ボール | 16進数 | マーキング | 文字 |
---|---|---|---|
なし | 0x00 | なし | ○(まる) |
マスターボール | 0x01 | ◯ | □(しかく) |
ハイパーボール | 0x02 | △ | ぁ |
スーパーボール | 0x03 | ◯、△ | あ |
モンスターボール | 0x04 | ▢ | ぃ |
サファリボール | 0x05 | ◯、▢ | い |
ネットボール | 0x06 | △、▢ | ぅ |
ダイブボール | 0x07 | ◯、△、▢ | う |
ネストボール | 0x08 | ♡ | ぇ |
リピートボール | 0x09 | ◯、♡ | え |
タイマーボール | 0x0A | △、♡ | ぉ |
ゴージャスボール | 0x0B | ◯、△、♡ | お |
プレミアボール | 0x0C | ▢、♡ | か |
ダークボール | 0x0D | ◯、▢、♡ | が |
ヒールボール | 0x0E | △、▢、♡ | き |
クイックボール | 0x0F | ◯、△、▢、♡ | ぎ |
プレシャスボール | 0x10 | ☆ | く |
スピードボール | 0x11 | ◯、☆ | ぐ |
レベルボール | 0x12 | △、☆ | け |
ルアーボール | 0x13 | ◯、△、☆ | げ |
ヘビーボール | 0x14 | ▢、☆ | こ |
ラブラブボール | 0x15 | ◯、▢、☆ | ご |
フレンドボール | 0x16 | △、▢、☆ | さ |
ムーンボール | 0x17 | ◯、△、▢、☆ | ざ |
コンペボール | 0x18 | ♡、☆ | し |
ドリームボール | 0x19 | ◯、♡、☆ | じ |
フラグ付与(ソ、ゾ)
運命的な出会いフラグ、性別フラグの付与。運命的な出会いのフラグを付与したいだけの場合でも、該当する性別を必ずマーキングすること。対象が♂の場合は性別フラグのためのマーキングは必要なし。
34,003,632×1
1,982,363,680
マーキング
フラグの種類 | マーキング |
---|---|
運命的な出会い(ソ) | ◯ |
♀フラグ(ゾ) | △ |
無性別フラグ(ゾ) | ▢ |
技変更(ふ~へ)
技コードはこちらのサイト参照。
わざリスト - ポケットモンスター ダイヤモンド・パール 改造・解析まとめ
34,003,632×1
*3
41,827,200×1
技コードを10進数で入力
*3 何番目の技を変更するか指定
1番目(ふ) 2,150,133,536
2番目(ぶ) 2,154,327,840
3番目(ぷ) 2,158,522,144
4番目(へ) 2,162,716,448
経験値変更(ぇ)
その名の通り。そういえば本来の上限を超える数値を入力したらどうなるか検証してない。
34,003,632×1
1,622,699,808
41,827,200×1
経験値を10進数で入力
個体値変更(ゅ~り、C)
4バイトの容量でXYdddddcccccsssssbbbbbaaaaahhhhhを10進数に
X:NN変更フラグ
Y:卵フラグ→1にすると卵化する
h ~s→個体値2進数
H(ゅ)、A(ゆ)、B(ょ)、S(よ)、C(ら)、D(り)、総個体値(C)
34,003,632×1
1,630,039,840
41,827,200×1
*4
*4 全てNN変更なし、非卵前提で
6V→1,073,741,823(◎◎◎ま)
5VA0→1,073,740,831(ぞ♥︎◎ま)
5VS0→1,072,726,015(◎ノ+ま)
5VAS0→1,072,725,023(ぞニ+ま)
4VA2B30→1,073,739,871(ギ.◎ま)
持ち物変更(ぅ)
アイテムコードは下記サイト参照。16進数なので10進数に変換してから入力。
アイテムリスト - ポケットモンスター ダイヤモンド・パール 改造・解析まとめ
34,003,632×1
2,155,376,416
41,827,200×1
アイテムコードを10進数で入力
入手レベル変更(親性別指定)(リ、ル)
入手レベル。1バイト。地味に最上位ビットでは親の性別を指定している(0:男、1:女)ので、男の場合は10進数そのまま、女の場合は128を加算した数字を入力。
入手レベル(リ)、親性別(ル)
34,003,632×1
1,997,041,440
41,827,200×1
入手レベル(親性別含む)を10進数で入力
出会った場所変更(ョ、チ)
マップコードは下記サイト参照。英語だが、wikiで検索するとマップの英語名が載ってる。
List of locations by index number (Generation IV) - Bulbapedia, the community-driven Pokémon encyclopedia
なお、出会った場所を格納する領域は2箇所用意されており、①DP産の捕まえた場所が保存される場所(ョ)、②HGSS産の捕まえた場所(チ)が保存される場所と分けられている。DP産のポケモンの場合、②は未使用。HGSS産のポケモンをDPに輸送した場合、①には遠い場所(3002)、②にHGSSのマップコードが入っている。HGSSにいるときについては未検証。例外として配布ポケモンの場合はHGSS産であろうと①の領域のみ使用され、DPに送ろうとも遠い場所にならない。なお、過去作産のポケモンの場合、出身バージョンが捕獲したバージョン、出会った場所がパルパーク(55)となっている。
34,003,632×1
*5
41,827,200×1
マップコードを10進数で入力
*5 ①を変更する際は2,198,368,032、②を変更する際は2,213,048,096
卵入手場所(ユ、チ)
卵がかえった場所の変更はひとつ上の出会った場所変更コードを利用。入手場所は出会った場所と同じく、①DP(ユ)、②HGSS(チ)の2つの領域が用意されており使い分けも一緒。基本的にはそだてやふうふ(2000)もしくは通信交換(2002)のどちらかのはず。
34,003,632×1
*6
41,827,200×1
マップコードを10進数で入力
*6 ①を変更する際には2,194,173,728、②を変更する際には2,208,853,792
出身バージョン変更(ト)
マーキングによって出身バージョンを選択。一応BW、BW2も選択可能。
34,003,632×1
1,978,693,664
マーキング
バージョン | 16進数 | マーキング | 文字 |
---|---|---|---|
サファイア | 0x01 | ◯ | □(しかく) |
ルビー | 0x02 | △ | ぁ |
エメラルド | 0x03 | ◯、△ | あ |
ファイアレッド | 0x04 | ▢ | ぃ |
リーフグリーン | 0x05 | ◯、▢ | い |
ハートゴールド | 0x07 | ◯、△、▢ | う |
ソウルシルバー | 0x08 | ♡ | ぇ |
ダイヤモンド | 0x0A | △、♡ | ぉ |
パール | 0x0B | ◯、△、♡ | お |
プラチナ | 0x0C | ▢、♡ | か |
コロシアム、XD | 0x0F | ◯、△、▢、♡ | ぎ |
ホワイト | 0x14 | ▢、☆ | こ |
ブラック | 0x15 | ◯、▢、☆ | ご |
ホワイト2 | 0x16 | △、▢、☆ | さ |
ブラック2 | 0x17 | ◯、△、▢、☆ | ざ |
努力値変更(が~け)
全ステータスに努力値255振りとかも可能。
34,003,632×1
*7
41,827,200×1
振りたい数値を10進数で入力
*7 HP(が)→1,949,855,520、A(き)→1,954,049,824、B(ぎ)→1,958,244,128、C(ぐ)→1,966,632,736、D(け)→1,970,827,040、S(く)→1,962,438,432
特性変更(ぉ)
特性コードは下記のサイト参照。16進数表記なので10進数になおしてから入力。
リスト集 - ポケットモンスター ダイヤモンド・パール 改造・解析まとめ
34,003,632×1
1,937,272,608
41,827,200×1
特性コードを10進数で入力
エンカウントタイプ変更(レ)
何故か4世代産のポケモンのみに存在するデータ。
34,003,632×1
2,001,238,048
マーキング
エンカウントタイプ | 16進数 | マーキング | 文字 |
---|---|---|---|
パルパーク、卵、配布 | 0x00 | なし | ○(まる) |
いわくだき | 0x01 | ◯ | □(しかく) |
草むら | 0x02 | △ | ぁ |
ディアパル | 0x04 | ▢ | ぃ |
洞窟、始まりの間 | 0x05 | ◯、▢ | い |
波乗り、釣り | 0x07 | ◯、△、▢ | う |
建物内、ニビラティ | 0x09 | ◯、♡ | え |
大湿原、サファリ | 0xA | △、♡ | ぉ |
御三家、化石、ゲーム内イベント | 0xC | ▢、♡ | か |
シント遺跡3竜 | 0x18 | ♡、☆ | し |
もう少し種類がありそうだが未検証
親TN変更
文字コードは下記のサイト参照。1文字目:0x1234、2文字目:0xabcdの場合、0xabcd1234を10進数変換してから入力。最後はFFFFが、それ以降は0が入っている(全部で8文字分容量あり)。ただし例外として配布ポケモンはFFFFの後も全てFFFFで埋まっている。
http://pokeanalyze.half-moon.org/46.html
34,003,632×1
3,780,916,336
41,827,200×1
文字コード2文字分を10進数変換して入力
なお、34,003,632×1→3,764,567,536で姓名判断師でTN変更ができる。
また、動的RAM始点特定で調べた変更後の表ID+36,110,968×1でTNを直接変更できる
NN変更
ほぼ上記のTN変更と同じ。全部で11文字分容量がある。
34,003,632×1
3,775,476,848
41,827,200×1
文字コード2文字分を10進数変換して入力
なお、33,847,952×1→0で姓名判断師で親違いの場合もNN変更が可能になる。
親ID変更(う)
表ID:0x282E、裏ID:0xE05Cに変更したい場合、0xE05C282Eを10進数変換したものを入力
34,003,632×1
1,618,505,504
41,827,200×1
変更したいIDを10進数変換して入力
なお、動的RAM始点特定で調べた変更後の表ID+36,110,986×1で直接トレーナーのID変更が可能
リボン変更
全部書くと力尽きそうなのでクラシックリボンを付ける場合だけ
34,003,632×1
2,012,749,828
なつき度変更(え)
卵の場合、孵化の残りサイクル数となる。
34,003,632×1
1,933,078,304
41,827,200×1
変更したい値
性格値変更(○)
ブロック配列が同じ性格値への変更でないと色々と不都合が生じる。ブロック配列については下記サイト参照。このコードを実行する場合は、ボックスに預けた状態で行うことを推奨。
https://projectpokemon.org/home/docs/gen-4/pkm-structure-r65/
34,003,632×1
3,887,296,289
41,827,200×1
任意の性格値を10進数で入力
国籍変更(か)
34,003,632×1
1,945,663,520
マーキング
国籍 | 16進数 | マーキング | 文字 |
---|---|---|---|
日本 | 0x01 | ◯ | □(しかく) |
北米 | 0x02 | △ | ぁ |
フランス | 0x03 | ◯、△ | あ |
イタリア | 0x04 | ▢ | ぃ |
ドイツ | 0x05 | ◯、▢ | い |
スペイン | 0x07 | ◯、△、▢ | う |
韓国 | 0x08 | ♡ | ぇ |
リタイア追加(通常世界)
メニュー画面にリタイアを追加する。始まりの間で使えばアルセウスを呼べる。動的RAM始点特定で調べた変更後の表IDに191,216を加算したアドレスにスプリクトを書き込み、現在地をマップID333に変更(変更後の表ID+5,196×1→333)後にリタイア実行で入力したスプリクトを実行できる。
33,787,708×1
192
任意乱数値指定
乱数調整もどきができる。目的の個体の入手のために必要な乱数値は下記のサイトで調べる。
https://web.archive.org/web/20220302072858/http://2style.jp/bowline/ds/tool/random/inverse.html
入力するのは1つ前の乱数値となるため、個体値等から検索する場合は事前消費数に1を入力、性格値から調べる場合には下のタブで1個前のシードを逆算してから入力。
35,415,464×1
1個前の乱数値を10進数で入力
任意ポケモンの化石受け取り
上の任意乱数値指定と組み合わせると便利。化石を預ける必要もない。炭鉱博物館はNPC消費が発生しない。
動的RAM始点特定で調べた変更後の表ID+36,114,712×1
図鑑番号を10進数で入力
マーキングプログラム正常化
ポケモンに普通にマーキングしたいときに
34,003,632×1
1,941,469,216
多分これらで好きなポケモンの偽装ができる。ろくに見直してないので数字の10個くらいは間違っている可能性あり。
参考サイト様
DP任意コード実行の解説 - 哀しき獣の村
DP任意コード実行のメモリ書き換え高速化【簡易メモリエディタ】 - 哀しき獣の村
セーブファイル編集 - ポケットモンスター ダイヤモンド・パール 改造・解析まとめ