簡易メモリエディタを利用したダイパの任意コード実行用のコード一覧

やり方解説ではありません。ほぼデテロニー氏のマーキングACEの解説サイトのプログラムを簡易メモリエディタ用に直しただけ。自分用のメモで無断なので怒られたら非公開にします。

動的RAM始点特定

マーキングしたポケモンのIDが動的RAM始点アドレスの下位2バイトに変化

34,003,632×1
3,891,097,380
41,827,200×1
34,637,848

ピープログラムの実行(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進数で入力

種族変更(い)

ポケモンの種族を変更。全国図鑑の図鑑番号で指定。

34,003,632×1
2,151,182,112
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,790,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任意コード実行のメモリ書き換え高速化【簡易メモリエディタ】 - 哀しき獣の村
セーブファイル編集 - ポケットモンスター ダイヤモンド・パール 改造・解析まとめ