バイナリエディタ(第二世代)

バイナリエディタ
メモリエディタ、RAMエディタとも。
RAMを自由自在に編集できるプログラム。任意コード実行の最高到達点の一つ。
これがあればもはや書き換え系のコードをいちいち作成する必要性がなくなり、任意コード実行用のプログラムの書き込みも非常に容易になる。
思わぬ範囲まで効果が及ぶ可能性があるので危険が伴います。実験・使用・使用後のセーブには充分注意しましょう。
現在このページに書かれているバイナリエディタは日本版クリスタル用のもののみであり、金銀や海外版には対応していないことに注意してください。
 
作成の準備
まずは以下のコードを用意する。任意コード実行環境の用意は別途事前にやっておくこと。
@[Cr]
がりぜクごぺぽじごぺなむじごデざ
ョべづぜクどたじじどの

これはアイテムポケット一番目の数を下位、二番目の数を上位としたアドレスに三番目の数を書き込むコードとなっている。
これを使ってまずは簡易版バイナリエディタを打ち込んでいく。
別に豪華版バイナリエディタを直接このコードで入力しても問題は無いが、豪華版よりも簡易版の方がプログラムサイズが小さいため、打ち込む手間が少なくて済む。

簡易版バイナリエディタ
導入
以下の内容を指定のアドレスに打ち込む。
 
16進数版
de8a
cd b2 0f 06 d0 57 21 46 c5 7a cd 9d 2f cd ad de
23 78 cd ad de 79 cd ad de 23 0a cd ad de cd c6
de 18 e3 c5 0e 02 47 cb 30 3e 0f 18 02
 
deb9
a0 c6 f6 30 02 d6 a0 22 0d 20 ed c1 c9 c5 cd 1b
35 c1 cb 7f 20 1d cb 77 20 1b cb 6f 20 19 cb 67
20 17 cb 5f 20 15 cb 57 20 13 cb 4f 20 11 cb 47
20 11 c9 0b c9 03 c9 05 c9 04 c9 14 c9 15 c9 f1
c3 ad 2f 21 50 c5 3e ec 77 0a 5f 18 0b
 
df11
c5 cd 1b 35 c1 cb 7f 20 0e cb 77 20 0d cb 47 20
12 cb 4f 20 10 18 e9 1d 18 01 1c 7b 2e 4e cd ad
de 18 dd 7b 02 3e ed 77 c9
 
10進数版
de8a (138 222)
No [0] 
0 205
1 178
2 15
3 6
4 208
5 87
6 33
7 70
8 197
9 122
10 205
11 157
12 47
13 205
14 73
15 222
16 35
17 120
18 205
19 173
20 222
21 121
22 205
23 173
24 222
25 35
26 10
27 205
28 173
29 222
30 205
31 198
32 222
33 24
34 227
35 197
36 14
37 2
38 71
39 203
40 48
41 62
42 15
43 24
44 2
 
deb9 (185 222)
No [0] 
0 160
1 198
2 246
3 48
4 2
5 214
6 160
7 34
8 13
9 32
10 237
11 193
12 201
13 197
14 205
15 27
16 53
17 193
18 203
19 127
20 32
21 29
22 203
23 119
24 32
25 27
26 203
27 111
28 32
29 25
30 203
31 103
32 32
33 23
34 203
35 95
36 32
37 21
38 203
39 87
40 32
41 19
42 203
43 79
44 32
45 17
46 203
47 71
48 32
49 17
50 201
51 11
52 201
53 3
54 201
55 5
56 201
57 4
58 201
59 20
60 201
61 21
62 201
63 241
64 195
65 173
66 47
67 33
68 80
69 197
70 62
71 236
72 119
73 10
74 95
75 24
76 11
 
df11 (17 223)
No [0] 
0 197
1 205
2 27
3 53
4 193
5 203
6 127
7 32
8 14
9 203
10 119
11 32
12 13
13 203
14 71
15 32
16 18
17 203
18 79
19 32
20 16
21 24
22 233
23 29
24 24
25 1
26 28
27 123
28 46
29 78
30 205
31 173
32 222
33 24
34 221
35 123
36 2
37 62
38 237
39 119
40 201
 
10進数版データの作成に、れんだ様の固定長配列ビューアを使用しました。

打ち込みに関する注意
打ち込みに使用したRAM領域は「育て屋爺さんが預かっているポケモン」「育て屋婆さんが預かっているポケモン」「育て屋が預かっているタマゴの中身」「虫取り大会で捕まえたポケモン」の領域を使用している。なので育て屋を使ったり虫取り大会に参加したりするとバイナリエディタが壊れてしまうので注意。
特に育て屋の婆さんに関しては「話しかけたことがあるフラグ」の領域も使用しているため話しかけることすらしてはいけない。詳しい説明は省くが虫取り大会も参加するだけでアウトである。

画面表示
左から順に
1. sRAMバンクナンバー(表記上は00h~ffhまでに見えるが、中身は00h~0fhをループしている。)
2. 現在のアドレス
3. 現在のアドレスの中身
4. 書き込みモード時であることを示す表示、書き込みモード時以外は表示されないか黒い三角となる。

操作方法
十字キー上下でアドレスの下位バイト増減、左右で上位バイト増減、スタートとセレクトでsRAMバンクの切り替え、Bボタンでバイナリエディタを終了、Aボタンで指定されたアドレスに書き込むモードに切り替える。
書き込みモード時は、十字キー上下で数字の増減、Bで書き込みキャンセル、Aで書き込み。

説明
一度に1バイト分しか表示されない、バンク切り替え機能はsRAM専用でありROMバンクは切り替えられないなど、容量削減のために機能がかなり制限されているが、主な目的であるsRAM、wRAMの書き換えは問題なく行える。
ちなみにバグ図鑑およびべんりボタンでの実行の場合は画面が真っ白になってしまうので、以下のコードを使って実行してやるとよい。
@[Cr]
がわひしョオぜマ
ひすまてサん

豪華版バイナリエディタ
簡易版バイナリエディタを使って、以下の内容をd2b1に書き込む。
d2b1は戦闘時に敵パーティの中身が入る領域。すなわち単にそのアドレスに書き込むだけでは戦闘が行われるたびにいちいち書き込み直さなければならない。
なので実際に書き込むのはsRAMにして、実行する際にsRAMからd2b1にコピーするようなプログラムを使用するのが良いだろう。

3e 5c 21 d7 5b cf cd c5 0f 3e 02 21 76 56 cf f0
9d f5 af 3c e0 aa 21 57 df 2a 47 2a 4f 56 c5 3e
ed ea e2 c4 7a cd 9d 2f d7 21 a0 c4 cd 05 d3 d5
11 14 00 19 d1 1e 10 78 cd 05 d3 79 cd 05 d3 23
0a cd 05 d3 03 d5 11 0d 00 19 d1 1d 20 e9 c1 cd
21 d3 18 ca c5 0e 02 47 cb 30 3e 0f a0 c6 f6 30
02 c6 21 22 0d 20 f1 c1 af c9 cd 4d 0a f0 a9 c9
cd 1b d3 a7 20 fa cd 1b d3 67 f0 a4 cb 57 20 1e
cb 5f 20 28 cb 7c 20 36 cb 74 20 34 cb 6c 20 32
cb 64 20 33 cb 4c 20 36 cb 44 20 5f 18 d8 cb 6c
20 48 cb 64 20 46 cb 44 20 35 18 e8 cb 7c 20 3e
cb 74 20 3c cb 6c 20 3a cb 64 20 3a 18 d6 03 c9
0b c9 21 f0 ff 18 03 21 10 00 09 44 4d c9 f1 f1
d7 af e0 aa 21 57 df 78 22 79 22 72 c3 ad 2f c5
d5 7a 21 02 00 09 cf d1 c1 c9 15 c9 14 c9 05 c9
04 c9 3e f0 18 02 3e 10 80 47 c9 03 03 0a 5f cd
1b d3 a7 20 fa 21 e2 c4 3e ec 22 cd 1b d3 cb 7f
20 16 cb 77 20 15 cb 6f 20 14 cb 67 20 14 cb 47
20 1a cb 4f 20 18 18 e3 1d 18 0b 1c 18 08 3e f0
18 02 3e 10 8b 5f 7b cd 05 d3 18 c3 7b 02 0b 0b
c9

画面表示
左から順に
1. ROM、sRAMバンクナンバー
2. アドレス
3. カーソル、書き込みモード時は白抜きになる
4. 左のアドレスに格納されている値

操作方法
基本として、十字キー上下で下桁の増減、左右で上桁の増減となる。
セレクトを押しながら十字キーを押すとアドレス上位バイトの値を編集できる。
スタートを押しながら十字キーを押すとバンクナンバーを編集できるが、上桁の増減はできない。
スタートもセレクトも押さずに十字キーを押すとアドレス下位バイトの値を編集できる。
Aボタンを押すと書き込みモードに切り替え。
Bボタンでバイナリエディタを終了する。
書き込みモード時は、十字キーでアドレスの中身を編集、Bで書き込みキャンセル、Aで書き込み。
スタートを押しながらAボタンを押すと、カーソルの位置のアドレスからプログラムを実行する。

説明
16バイト分同時表示や桁ごとの増減、ROMバンク切り替え、プログラムの実行などの高度な機能が実装されており、簡易版よりもはるかに便利なものとなっている反面、容量が約二倍になっている。例え簡易版バイナリエディタであったとしても入力に手間がかかるのは事実なので、打ち込みには相応の覚悟が必要である。
ちなみにvRAMおよびwRAMのバンク切り替え機能は付いていないが、これはどちらも必要になる状況が非常に限られている上、実装に非常に手間と容量がかかるためである。

 

豪華版バイナリエディタ V2
上記のバイナリエディタの改良版。さらに様々な機能が実装されてより便利になった。こちらは金銀にも対応している。
書き込む先は以前のものと同じ戦闘時に敵パーティの中身が入る領域。実行する際にsRAMからコピーするようなプログラムを使用するのが良いだろう。

金銀版 書き込み先はdcc7
cd a8 34 11 b2 4e 21 00 90 01 23 3e cd 76 0e cd
b4 0e cd 87 0d cd 95 0d cd b8 33 f0 9f f5 21 bb
d1 2a 47 2a 4f 56 3e ed ea e2 c3 c5 7a cd 9d 30
d7 21 a0 c3 cd 26 dd d5 11 14 00 19 d1 1e 10 78
cd 26 dd 79 cd 26 dd 23 0a cd 26 dd 03 d5 11 0d
00 19 d1 1d 20 e9 c1 cd ad 30 cd 37 dd 18 cc c5
0e 02 47 cb 30 3e 0f a0 c6 f6 22 0d 20 f5 c1 c9
c5 cd f4 36 c1 67 f0 aa cb 57 20 1e cb 5f 20 30
cb 7c 20 3e cb 74 20 3c cb 6c 20 3a cb 64 20 3b
cb 4c 20 3e cb 44 20 6c 18 d6 cb 7c 20 4b cb 74
20 49 cb 6c 20 47 cb 64 20 47 cb 44 20 30 18 e0
cb 7c 20 42 cb 74 20 40 cb 6c 20 3e cb 64 20 3f
18 ce 03 c9 0b c9 21 f0 ff 18 03 21 10 00 09 44
4d c9 21 bb d1 78 22 79 22 72 f1 f1 d7 c9 c5 d5
7a 21 02 00 09 cf d1 c1 c9 15 c9 14 c9 3e f0 18
02 3e 10 82 57 c9 05 c9 04 c9 21 00 f0 18 cf 21
00 10 18 ca 03 03 0a 5f 21 e2 c3 3e ec 77 c5 cd
f4 36 c1 cb 7f 20 1a cb 77 20 19 cb 6f 20 19 cb
67 20 19 cb 57 20 1a cb 4f 20 27 cb 47 20 1a 18
dd 1d 18 01 1c 7b 18 0b 3e f0 18 02 3e 10 83 18
01 af 5f 23 cd 26 dd 18 bf 7a cd 9d 30 7b 02 cd
ad 30 3e ed 77 0b 0b c9

クリスタル 書き込み先はd2b1
cd c5 32 11 c0 4d 21 00 90 01 22 3e cd c6 0d cd
c5 0f cd 3b 0e cd 49 0e cd cc 31 f0 9d f5 21 92
d4 2a 47 2a 4f 56 3e ed ea e2 c4 c5 7a cd 9d 2f
d7 21 a0 c4 cd 10 d3 d5 11 14 00 19 d1 1e 10 78
cd 10 d3 79 cd 10 d3 23 0a cd 10 d3 03 d5 11 0d
00 19 d1 1d 20 e9 c1 cd ad 2f cd 21 d3 18 cc c5
0e 02 47 cb 30 3e 0f a0 c6 f6 22 0d 20 f5 c1 c9
c5 cd 1b 35 c1 67 f0 a9 cb 5f 20 1e cb 57 20 30
cb 7c 20 3e cb 74 20 3c cb 6c 20 3a cb 64 20 3b
cb 4c 20 3e cb 44 20 6c 18 d6 cb 7c 20 4b cb 74
20 49 cb 6c 20 47 cb 64 20 47 cb 44 20 30 18 e0
cb 7c 20 42 cb 74 20 40 cb 6c 20 3e cb 64 20 3f
18 ce 03 c9 0b c9 21 f0 ff 18 03 21 10 00 09 44
4d c9 21 92 d4 78 22 79 22 72 f1 f1 d7 c9 c5 d5
7a 21 02 00 09 cf d1 c1 c9 15 c9 14 c9 3e f0 18
02 3e 10 82 57 c9 05 c9 04 c9 21 00 f0 18 cf 21
00 10 18 ca 03 03 0a 5f 21 e2 c4 3e ec 77 c5 cd
1e 35 c1 cb 7f 20 1a cb 77 20 19 cb 6f 20 19 cb
67 20 19 cb 57 20 1a cb 4f 20 27 cb 47 20 1a 18
dd 1d 18 01 1c 7b 18 0b 3e f0 18 02 3e 10 83 18
01 af 5f 23 cd 10 d3 18 bf 7a cd 9d 2f 7b 02 cd
ad 2f 3e ed 77 0b 0b c9

画面表示と操作方法はほとんど以前のものと変わらないが、バンクの上桁を操作できるようになったのと、入力モード時にセレクトを押すことで値を00hにすることができるようになった。

最終更新:2021年04月16日 16:15