Site cover image

🐾flag3

ポケットモンスター ピカチュウ バイナリエディタ

English version is here:

📄Arrow icon of a page linkRAM Writer in Pokémon Yellow (JP)

バイナリエディタは、初代ポケモンにおける任意コード実行の究極の到達点とも言えるツールです。このエディタを使用すると、ゲーム内のあらゆるメモリの読み書きが可能になります。さらに、プログラムを記述し、実行させることもできます。これにより、テトリスやオセロなどのゲームを遊ぶことも可能になる、非常に強力なツールです。

本記事は以下の動画の解説となります。

バイナリエディタ導入手順

環境

ポケットモンスター ピカチュウの日本語版のみに対応しています。ポケットモンスター 赤・緑・青や日本語版以外のバージョンには対応していません。またさいしょからはじめるを前提としセーブをする際に特定のタイミングで強制リセットを行うSRAM Glitchを用いるチャートとなります。

バージョンの違い

ポケットモンスター ピカチュウにはv1.0、v1.1、v1.2、v1.3が存在します。カートリッジの表面のパッケージシール右下に刻まれている刻印によってどのバージョンであるかを判定することができます。

  • 刻印が数字のみまたは数字+Aであればv1.0。
  • 刻印が数字+Bであればv1.1。
  • 刻印が数字+Cであればv1.2。
  • 刻印が数字+Dであればv1.3。

なお3DSのVCはv1.3となります。

以下の手順における23番目のどうぐの種類によってバージョンを判定することもできます。

  • 23番目のどうぐが「ジャック」であればv1.0。
  • 23番目のどうぐが「ポケモン」であればv1.1、v1.2、v1.3のいずれか。

今回の手順においてv1.1、v1.2、v1.3による違いはありません。

手順1: さいしょからはじめてSRAM Glitchを行う

  1. タイトル画面で↑+B+SELECTを同時に押して、セーブデータを消去します。
  2. 主人公の名前を「がんョぜメ」にし、ライバルの名前を「てんんオオ」にします。
  3. スタートボタンを押してメニューを開きレポートを選択します。
  4. レポートにかきこみますか?に対して「はい」を押してから特定のタイミングで強制リセットをします。
    • A+B+START+SELECTを同時に押すソフトリセットでは機能しません。
    • 強制リセットのタイミングは、「はい/いいえ」の表示が消えてから「ポケモンレポートにかきこんでいます 」に変わる前です。
      • SRAM Glitchを成功させるための強制リセットのタイミングは猶予4フレームで、「はい」を押してから31~34フレーム後となります。
  5. つづきからはじめることができ、手持ちのポケモンを開くことができる場合はSRAM Glitchに成功しています。そうでない場合は 1. からやり直してください。

手順2: タマムシマンション屋上部屋に向かう

  • 手持ちのポケモンを開き、1番目のポケモンと9番目のポケモンを交換します。 これにより、どうぐの所持数が255になります。
  • せっていを開き、以下のようにします。
    はなしのはやさ:おそい

    せんとうアニメ:じっくりみる

    しあいのルール:かちぬきタイプ

    サウンド:イヤホン2

  • v1.0の場合はどうぐ欄を開きます。
    • 14番目と20番目の間にあるどうぐのうちどれか1つを26番目のはやぶさバッヂと入れ替えます。
    • 25番目のどうぐと34番目のどうぐを入れ替えます。
      • 35、36番目のどうぐについては以下のようになっているのでこれを目印にして25番目のどうぐと34番目のどうぐと入れ替えると良いです。
        🔍
        35番目のどうぐ:モンスターボール×4

        36番目のどうぐ:モンスターボール×16

  • v1.1~v1.3(VC)の場合はパソコンからどうぐをあずけるを選択します。
    • 1番目のやめるを1個預けます。
    • 14番目と20番目の間にあるどうぐのうちどれか1つを26番目のはやぶさバッヂと入れ替えます。
    • 22番目のカードキーを預けます。これを6回行います。
    • 23番目のポケモンを1個預けます。
    • 24番目のわざマシン22を1個預けます。
    • 25番目のどうぐと34番目のどうぐを入れ替えます。
      • 35、36番目のどうぐについては以下のようになっているのでこれを目印にして25番目のどうぐと34番目のどうぐと入れ替えると良いです。
        🔍
        35番目のどうぐ:モンスターボール×4

        36番目のどうぐ:モンスターボール×16

  • 家から出ることでタマムシシティ屋上部屋に移動することができます。

手順3: 簡易版バイナリエディタ導入

無限イーブイモード導入
  1. イーブイを入手しニックネームを「ヅずゆデの」にしてはやぶさバッヂを使います。これによりイーブイのモンスターボールが出現します。
  2. イーブイを入手しニックネームを「ゴづ」にしてはやぶさバッヂを使います。これによりイーブイのモンスターボールが再度出現します。
  3. イーブイを入手しニックネームを「がやぜカ」にしてはやぶさバッヂを使います。これにより好きなだけイーブイを入手することができる状態になります。
簡易版バイナリエディタ導入

イーブイを入手し、以下の順番でニックネームをつけます。

📛
イーブイに付けるニックネームリスト
  1. よメボデの
  2. よザれリん
  3. ぼダメギて
  4. へはんち
  5. だいなひだ
  6. れじよダリ
  7. めかんざダ
  8. ダれサんダ
  9. ダめッんど
  10. ううゾダグ
  11. へたんへ◯
    • v1.0: へたんへそ
    • v1.1~v1.3(VC): へたんへた
  12. へたんボぷ
  13. ぱへたんぴ
  14. キづごヅー
  15. てケんダム
  16. ダだギムツ
  17. ぼヂてケん
  18. ぜーダだグ
  19. づひせがゆ
  20. よヂづよく

イーブイにニックネームをつけ終わったらはやぶさバッヂを使うと簡易版バイナリエディタが起動します。

簡易版バイナリエディタ

これ以降、はやぶさバッヂを使うたびに簡易版バイナリエディタを起動することができます。

Image in a image block

左側のD5E3が書き換えようとしているメモリのアドレスで、右の00がその中身です。

🎮
簡易版バイナリエディタ操作方法

B: アドレス-01

A: アドレス+01

↑: 中身-01

↓: 中身+01

←: 中身-10

→: 中身+10

START: 終了

SELECT: D62Cからのコードを実行(プログラム入力するまで押さないように注意)

手順4: バイナリエディタ導入

簡易版バイナリエディタを使用してバイナリエディタのプログラムを入力していきます。入力を終えたらセレクトボタンを押すことでバイナリエディタを起動することができます。バイナリエディタを起動する前に一旦スタートボタンを押して簡易版バイナリエディタを終了させてセーブすることをお勧めします。

アドレス中身
D5E9CD
D5EAv1.0: 3F
v1.1~v1.3(VC): 40
D5EB38
D5ECF0
D5EDB3
D5EE01
D5EF01
D5F000
D5F107
D5F238
D5F318
D5F40B
D5F50B
D5F607
D5F738
D5F813
D5F90E
D5FAF0
D5FB07
D5FC38
D5FD0E
D5FE01
D5FF10
D60000
D60107
D60238
D60308
D60407
D60538
D60603
D60707
D608D0
D609E9
D60AE1
D60BC9
D60C79
D60DCB
D60E43
D60F20
D61006
D611CB
D6124B
D61320
D61405
D61509
D616C9
D61786
D61877
D619C9
D61A84
D61B67
D61CC9
D61DF5
D61ECB
D61F37
D620CD
D62124
D622D6
D623F1
D624E6
D6250F
D626C6
D627F6
D628F6
D62960
D62A22
D62BC9
D62C21
D62D00
D62ED0
D62FCD
D630E9
D631D5
D632E5
D63311
D634F8
D635FF
D63619
D637E5
D638D1
D63921
D63AAB
D63BC3
D63C01
D63D0C
D63E00
D63F36
D6407C
D64123
D6427A
D643CD
D6441D
D645D6
D6467B
D647CD
D6481D
D649D6
D64A36
D64B7F
D64C23
D64D1A
D64ECD
D64F1D
D650D6
D65113
D65236
D6537C
D65409
D6557C
D656FE
D657C5
D65820
D659E5
D65A3E
D65BED
D65CEA
D65D4B
D65EC4
D65FE1
D66018
D661CD

バイナリエディタ

これ以降は簡易版バイナリエディタを起動してからセレクトボタンを押すたびに、バイナリエディタを起動することができます。

Image in a image block
🎮
バイナリエディタ操作方法

↑: アドレス-01

↓: アドレス+01

←: アドレス-10

→: アドレス+10

B+↑: アドレス-100

B+↓: アドレス+100

B+←: アドレス-1000

B+→: アドレス+1000

A+↑: 中身-01

A+↓: 中身+01

A+←: 中身-10

A+→: 中身+10

START: 終了

SELECT: 現在のアドレスからのコードを実行(注意して使用してください)

バイナリエディタを使って以下のように書き換えを行うと、はやぶさバッヂを使うたびに、バイナリエディタを直接起動することができるようになります。

v1.0

アドレス中身
DDCAC3
DDCB2C
DDCCD6

v1.1~v1.3(VC)

アドレス中身
D4CA0E
D4CB62
D4CC04
D4CD09
D4CEE9
D4CF63
D4D0FF

手順5: 通常の状態に戻す

さいしょからはじめた場合はバイナリエディタの導入で様々な副作用が発生しています。

  • 現在地
  • 主人公の名前
  • ライバルの名前
  • 手持ちのポケモンの情報
  • ポケモンずかんの情報
  • どうぐ欄の情報
  • イーブイ取得のフラグ
  • ボックスの情報
  • パソコンに預けているどうぐ欄の情報(v1.1~v1.3(VC))
現在地

タマムシマンション屋上部屋でアドレスD330、D331、D334、D335の中身を00にしてから部屋の外に出るとマサラタウンに移動することができます。

主人公とライバルの名前

バイナリエディタを使ってアドレスD000~D00Dの中身を以下のように書き換えてください。

アドレスv1.0v1.1~v1.3(VC)
D0003E3E
D0010101
D0022121
D003主人公の名前: 5F
ライバルの名前: B3
主人公の名前: 5F
ライバルの名前: B3
D0046767
D005CDCD
D0067D7E
D0073E3E
D008CDCD
D009FD02
D00A2F30
D00BC3C3
D00CCDCE
D00D3D3D

書き変えたらカーソルをアドレスD000に合わせてセレクトボタンを押すことで主人公またはライバルの名前を決めることができます。主人公とライバルの名前を両方とも変更させたい場合はD003を変更して再度実行するようにしてください。

手持ちとポケモンずかんとどうぐ欄とイーブイ取得のフラグ

バイナリエディタを使ってアドレスD010~D033の中身を以下のように書き換えてください。

アドレス中身
D01001
D011A8
D01201
D01321
D01423
D015D1
D016AF
D01722
D0180B
D01978
D01AB1
D01B20
D01CF9
D01DEA
D01E36
D01FCC
D020EA
D02192
D022D5
D0233D
D024EA
D02524
D026D1
D027EA
D028A2
D029D2
D02A3E
D02B16
D02CEA
D02D2D
D02ED5
D02F06
D03065
D031C3
D03238
D0333E

書き換えたらカーソルをアドレスD010に合わせてセレクトボタンを押すことでプログラムを実行することができます。このプログラムは以下の効果があります。

  • 手持ちのポケモンを0匹にする。
  • ポケモンずかんの情報を初期化する。
  • どうぐをはやぶさバッヂのみにする。
  • イーブイの入手に関係するフラグを初期化する。
ボックスの情報

アドレスD9B2の中身を00に、アドレスD9B3の中身をFFにすることでボックスに預けているポケモンを0匹にすることができます。ただしv1.0の場合はボックスに預けているポケモンを0匹にしないでそのままにしておくことを推奨します。

パソコンに預けているどうぐの情報(v1.1~v1.3(VC))

アドレスD4B9からD4C9までを以下のようにすることでパソコンに預けているどうぐの情報を正常なものにすることができます。1番目から11番目のどうぐは引き出さないようにしてください。

0B C9 01 CA 01 CB 01 CC 01 CD 01 CE 01 CF 01 D0 01

使用上の注意

v1.0の場合はボックスに預けているポケモンの5匹目のおやの名前を「がんてじよ」にしてはやぶさバッヂを使うようにしてください。特にボックスを切り換えるとボックスに預けているポケモンが変化してしまうことに注意してください。上記の手順ではやぶさバッヂからバイナリエディタを直接起動することができるようになっていればボックスに預けているポケモンの5匹目のおやの名前は「がんてじよ」になっています。

v1.1~v1.3(VC)の場合はパソコンに預けているどうぐの9番目から11番目を変更しないようにしてください。上記の手順ではやぶさバッヂからバイナリエディタを直接起動することができるようになっていればパソコンに預けているどうぐの9番目から11番目は以下のようになっています。

🔍
9番目のどうぐ:ねむけざまし×98

10番目のどうぐ:モンスターボール×9

11番目のどうぐ:わざマシン33

バージョンに依らずアドレスD5E9~D661はバイナリエディタで編集しないようにしてください。

技術的補足

SRAM Glitch

タイトル画面で↑+B+SELECTを同時に押して、セーブデータを消去すると、SRAM領域が全てFFで埋め尽くされます。その後、さいしょからはじめてセーブをする際に特定のタイミングで強制リセットをすると、手持ちのポケモンのデータに対応するアドレスD123からD27Aまでの中身が全てFFで埋め尽くされます。アドレスD123は手持ちのポケモンの数を格納しており、中身がFFになることで手持ちのポケモンの数を255にすることができます。

ポケモンの入れ替え操作

SRAM Glitchを行った後、1番目のポケモンと9番目のポケモンを入れ替えることでどうぐの所持数を255にすることができます。9番目のポケモンのステータスに対応するアドレスはD28BからD2B6、9番目のポケモンのニックネームに対応するアドレスはD287からD28Cであり、1番目のポケモンと9番目のポケモンを入れ替えることでアドレスD287からD2B6までの中身をFFにすることができます。アドレスD2A1はどうぐの所持数を格納しており、中身がFFになることでどうぐの所持数を255にすることができます。

はやぶさバッヂの効果

はやぶさバッヂを使うとv1.0ではアドレスDDCAへ、v1.1~v1.3(VC)ではアドレスD4CAへジャンプします。アドレスDDCAはボックスに預けているポケモンの5匹目のおやの名前の3文字目を格納しており、アドレスD4CAはパソコンに預けているどうぐの9番目の種類を格納しています。バイナリエディタ導入後はボックスに預けているポケモンやパソコンに預けているどうぐを固定することで、これらのアドレスが変化するのを防ぐことができます。

どうぐ欄の操作

どうぐ欄の操作ではどのバージョンにも共通して以下のことを行っています。

  • 14~20番目のどうぐと26番目のはやぶさバッヂを入れ替える。
  • 25番目のどうぐと34番目のどうぐを入れ替える。

25、26、34番目のどうぐに対応するアドレスは以下のようになっています。

番号種類個数
25D2D2D2D3
26D2D4D2D5
34D2E4D2E5

14~20番目のどうぐと26番目のはやぶさバッヂの入れ替え操作は、はやぶさバッヂの入手と文字送り速度の最大化を目的としています。アドレスD2D4はオプションに関する情報が格納されており、せっていを手順の通りにすると26番目がはやぶさバッヂとなります。またアドレスD2D4の0~3ビットは文字を表示させた後に遅延させるフレーム数に対応しています。14~20番目と26番目のどうぐを入れ替えることでアドレスD2D4の0~3ビットを0にし文字を表示させた後に遅延させるフレーム数を最も短くしています。

25番目のどうぐと34番目のどうぐの入れ替え操作は、家の出口をタマムシマンション屋上部屋にすることを目的としています。アドレスD2E4は直前のマップの内部番号を格納しています。一方でアドレスD2D2、D2D3はそれぞれライバルの名前の5文字目と終端が格納されています。このためライバルの5文字目を調整することで移動先を変更することができます。タマムシマンション屋上部屋の内部番号は84であるため、タマムシマンション屋上部屋に移動するためにライバルの名前の5文字目を84に対応する「オ」にしています。

パソコンに預けるどうぐ

v1.1~v1.3(VC)についてはどうぐ操作をする際に追加で以下のことを行っています。

  • 1番目のやめるを預ける。
  • 22番目のカードキーを6回預ける。
  • 23番目のポケモンを1個預ける。
  • 24番目のわざマシン22を1個預ける。

これらの操作は、パソコンに預けているどうぐの9番目をポケモン×1、10番目をわざマシン22にすることが目的です。パソコンに預けているどうぐの9、10番目に対応するアドレスは以下のようになります。以上の操作をすることでアドレスD4CAの中身をC3、アドレスD4CBの中身を01、アドレスD4CCの中身をDEにしています。このようにすることではやぶさバッヂでアドレスD4CAを実行する際に C3 01 DE が実行されアドレスDE01にジャンプするという命令にすることができます。

パソコンのどうぐ種類個数
9D4CAD4CB
10D4CCD4CD

どうぐの22番目から24番目に対応するアドレスは以下のようになります。22番目がカードキーとなっている理由はアドレスD2CCにカードキーの内部番号である30が格納されているからであり、最初のおこづかいが3000円であることに由来します。どうぐの23番目、24番目に対応するアドレスD2CEからD2D1まではライバルの名前の1~4文字目に対応しています。上記の操作でD4CA以降を C3 01 DE にするためにライバルの名前の1文字目を「て」、3文字目を「ん」としています。

手持ちのどうぐ種類個数
22D2CCD2CD
23D2CED2CF
24D2D0D2D1

無限イーブイモード

説明

アドレスD54Dの中身を02から変更することでイーブイを取得する際に消滅するオブジェクトを変更することができます。またイーブイを再度入手ができるようにアドレスD52Dの5ビット目を0にしています。アドレスDE64を実行する際、aレジスタにはCA、bcレジスタには00C8、hlレジスタにはv1.0の場合はDDCA、v1.1~v1.3(VC)の場合はD4CAが格納されているので、はやぶさバッヂを使用する際の効果は以下のようになります。

  • 1回目のはやぶさバッジ:アドレスD52Dの中身をCAにする。
  • 2回目のはやぶさバッヂ(v1.0):アドレスDE92の中身をCAにし、アドレスD52Dの中身を14にする。
  • 2回目のはやぶさバッヂ(v1.1~v1.3(VC)):アドレスD592の中身をCAにし、アドレスD52Dの中身を1Fにする。
  • 3回目のはやぶさバッヂ:アドレスD54Dの中身を1Eにし、アドレスD52Dの中身をCBにする。
WRA1:D4CA C3 01 DE         jp   DE01

WRA1:DE64 26 D4            ld   h,D4
WRA1:DE66 2E 85            ld   l,85
WRA1:DE68 50               ld   d,b
WRA1:DE69 AC               xor  h
WRA1:DE6A 09               add  hl,bc
WRA1:DE6B 32               ldd  (hl),a
WRA1:DE6C 50               ld   d,b
WRA1:DE6D BB               cp   e
WRA1:DE6E 19               add  hl,de
WRA1:DE6F AC               xor  h
WRA1:DE70 11 2D D5         ld   de,D52D
WRA1:DE73 12               ld   (de),a
WRA1:DE74 C9               ret  
WRA1:DE75 50               ld   d,b
バイナリ
D4CA:
C3 01 DE

DE64:
26 D4 2E 85 50 AC
09 32 50 BB 19 AC
11 2D D5 12 C9 50

簡易版バイナリエディタ

説明

簡易版バイナリエディタはhlレジスタが指しているアドレスとその中身を出力するプログラムです。キーの入力でhlレジスタの指すアドレスとその中身を変化させるようにしています。

アドレスDE9Dの中身はv1.0ではBF、v1.1~v1.3(VC)ではC0となります。

WRA1:D4CA C3 01 DE         jp   DE01

WRA1:DDCA AF               xor  a

WRA1:DE01 2E A0            ld   l,A0

WRA1:DE34 26 DE            ld   h,DE
WRA1:DE36 AF               xor  a
WRA1:DE37 2E A0            ld   l,A0
WRA1:DE39 50               ld   d,b

WRA1:DE64 D6 10            sub  a,10
WRA1:DE66 32               ldd  (hl),a
WRA1:DE67 D6 B8            sub  a,B8
WRA1:DE69 50               ld   d,b
WRA1:DE6A 32               ldd  (hl),a
WRA1:DE6B CB BE            res  7,(hl)
WRA1:DE6D 26 D5            ld   h,D5
WRA1:DE6F 50               ld   d,b
WRA1:DE70 2E E3            ld   l,E3
WRA1:DE72 0F               rrca 
WRA1:DE73 30 07            jr   nc,DE7C
WRA1:DE75 50               ld   d,b
WRA1:DE76 3E 10            ld   a,10
WRA1:DE78 C3 88 DE         jp   DE88
WRA1:DE7B 50               ld   d,b
WRA1:DE7C 0F               rrca 
WRA1:DE7D 30 06            jr   nc,DE85
WRA1:DE7F 9F               sbc  a
WRA1:DE80 91               sub  c
WRA1:DE81 50               ld   d,b
WRA1:DE82 C3 88 DE         jp   DE88
WRA1:DE85 0F               rrca 
WRA1:DE86 9F               sbc  a
WRA1:DE87 50               ld   d,b
WRA1:DE88 86               add  (hl)
WRA1:DE89 32               ldd  (hl),a
WRA1:DE8A 2A               ldi  a,(hl)
WRA1:DE8B 11 E3 50         ld   de,50E3
WRA1:DE8E 44               ld   b,h
WRA1:DE8F CD C0 DE         call DEC0
WRA1:DE92 45               ld   b,l
WRA1:DE93 50               ld   d,b
WRA1:DE94 CD C0 DE         call DEC0
WRA1:DE97 1C               inc  e
WRA1:DE98 46               ld   b,(hl)
WRA1:DE99 50               ld   d,b
WRA1:DE9A CD C0 DE         call DEC0
WRA1:DE9D CD ?? 50         call 50??
WRA1:DEA0 B3               or   e
WRA1:DEA1 B3               or   e
WRA1:DEA2 0E 0F            ld   c,0F
WRA1:DEA4 07               rlca 
WRA1:DEA5 50               ld   d,b
WRA1:DEA6 0F               rrca 
WRA1:DEA7 D2 AC DE         jp   nc,DEAC
WRA1:DEAA 34               inc  (hl)
WRA1:DEAB 50               ld   d,b
WRA1:DEAC 0F               rrca 
WRA1:DEAD DA 8A DE         jp   c,DE8A
WRA1:DEB0 0F               rrca 
WRA1:DEB1 50               ld   d,b
WRA1:DEB2 D2 B6 DE         jp   nc,DEB6
WRA1:DEB5 2B               dec  hl
WRA1:DEB6 0F               rrca 
WRA1:DEB7 50               ld   d,b
WRA1:DEB8 DA 2C D6         jp   c,D62C
WRA1:DEBB 0F               rrca 
WRA1:DEBC D8               ret  c
WRA1:DEBD 50               ld   d,b
WRA1:DEBE 30 B2            jr   nc,DE72
WRA1:DEC0 C5               push bc
WRA1:DEC1 CB 30            swap b
WRA1:DEC3 50               ld   d,b
WRA1:DEC4 CD CA DE         call DECA
WRA1:DEC7 C1               pop  bc
WRA1:DEC8 50               ld   d,b
WRA1:DEC9 50               ld   d,b
WRA1:DECA 3E 0F            ld   a,0F
WRA1:DECC A0               and  b
WRA1:DECD 06 C3            ld   b,C3
WRA1:DECF 50               ld   d,b
WRA1:DED0 D6 0A            sub  a,0A
WRA1:DED2 DA D8 DE         jp   c,DED8
WRA1:DED5 50               ld   d,b
WRA1:DED6 D6 A0            sub  a,A0
WRA1:DED8 1C               inc  e
WRA1:DED9 12               ld   (de),a
WRA1:DEDA C9               ret  
WRA1:DEDB 50               ld   d,b
バイナリ
D4CA:
C3 01 DE

DDCA:
AF

DE01:
2E A0

DE34:
26 DE AF 2E A0 50

DE64:
D6 10 32 D6 B8 50
32 CB BE 26 D5 50
2E E3 0F 30 07 50
3E 10 C3 88 DE 50
0F 30 06 9F 91 50
C3 88 DE 0F 9F 50
86 32 2A 11 E3 50
44 CD C0 DE 45 50
CD C0 DE 1C 46 50
CD C0 DE CD ?? 50
B3 B3 0E 0F 07 50
0F D2 AC DE 34 50
0F DA 8A DE 0F 50
D2 B6 DE 2B 0F 50
DA 2C D6 0F D8 50
30 B2 C5 CB 30 50
CD CA DE C1 50 50
3E 0F A0 06 C3 50
D6 0A DA D8 DE 50
D6 A0 1C 12 C9 50

バイナリエディタ

説明

バイナリエディタはhlレジスタが指しているアドレスを含む18個のアドレスとその中身を出力するプログラムとなっています。アドレスD62Cを実行することでバイナリエディタを起動することができるようになっています。アドレスD5E9からD66Eまでの134バイトは未使用領域であり、この領域にバイナリエディタのプログラムを記述しています。

アドレスD5EAの中身はv1.0では3F、v1.1~v1.3(VC)では40となります。

WRA1:D5E9 CD ?? 38         call 38??
WRA1:D5EC F0 B3            ld   a,(ff00+B3)
WRA1:D5EE 01 01 00         ld   bc,0001
WRA1:D5F1 07               rlca 
WRA1:D5F2 38 18            jr   c,D60C
WRA1:D5F4 0B               dec  bc
WRA1:D5F5 0B               dec  bc
WRA1:D5F6 07               rlca 
WRA1:D5F7 38 13            jr   c,D60C
WRA1:D5F9 0E F0            ld   c,F0
WRA1:D5FB 07               rlca 
WRA1:D5FC 38 0E            jr   c,D60C
WRA1:D5FE 01 10 00         ld   bc,0010
WRA1:D601 07               rlca 
WRA1:D602 38 08            jr   c,D60C
WRA1:D604 07               rlca 
WRA1:D605 38 03            jr   c,D60A
WRA1:D607 07               rlca 
WRA1:D608 D0               ret  nc
WRA1:D609 E9               jp   hl
WRA1:D60A E1               pop  hl
WRA1:D60B C9               ret  
WRA1:D60C 79               ld   a,c
WRA1:D60D CB 43            bit  0,e
WRA1:D60F 20 06            jr   nz,D617
WRA1:D611 CB 4B            bit  1,e
WRA1:D613 20 05            jr   nz,D61A
WRA1:D615 09               add  hl,bc
WRA1:D616 C9               ret  
WRA1:D617 86               add  (hl)
WRA1:D618 77               ld   (hl),a
WRA1:D619 C9               ret  
WRA1:D61A 84               add  h
WRA1:D61B 67               ld   h,a
WRA1:D61C C9               ret  
WRA1:D61D F5               push af
WRA1:D61E CB 37            swap a
WRA1:D620 CD 24 D6         call D624
WRA1:D623 F1               pop  af
WRA1:D624 E6 0F            and  a,0F
WRA1:D626 C6 F6            add  a,F6
WRA1:D628 F6 60            or   a,60
WRA1:D62A 22               ldi  (hl),a
WRA1:D62B C9               ret  
WRA1:D62C 21 00 D0         ld   hl,D000
WRA1:D62F CD E9 D5         call D5E9
WRA1:D632 E5               push hl
WRA1:D633 11 F8 FF         ld   de,FFF8
WRA1:D636 19               add  hl,de
WRA1:D637 E5               push hl
WRA1:D638 D1               pop  de
WRA1:D639 21 AB C3         ld   hl,C3AB
WRA1:D63C 01 0C 00         ld   bc,000C
WRA1:D63F 36 7C            ld   (hl),7C
WRA1:D641 23               inc  hl
WRA1:D642 7A               ld   a,d
WRA1:D643 CD 1D D6         call D61D
WRA1:D646 7B               ld   a,e
WRA1:D647 CD 1D D6         call D61D
WRA1:D64A 36 7F            ld   (hl),7F
WRA1:D64C 23               inc  hl
WRA1:D64D 1A               ld   a,(de)
WRA1:D64E CD 1D D6         call D61D
WRA1:D651 13               inc  de
WRA1:D652 36 7C            ld   (hl),7C
WRA1:D654 09               add  hl,bc
WRA1:D655 7C               ld   a,h
WRA1:D656 FE C5            cp   a,C5
WRA1:D658 20 E5            jr   nz,D63F
WRA1:D65A 3E ED            ld   a,ED
WRA1:D65C EA 4B C4         ld   (C44B),a
WRA1:D65F E1               pop  hl
WRA1:D660 18 CD            jr   D62F
バイナリ
                           CD ?? 38 F0 B3 01 01
00 07 38 18 0B 0B 07 38 13 0E F0 07 38 0E 01 10
00 07 38 08 07 38 03 07 D0 E9 E1 C9 79 CB 43 20
06 CB 4B 20 05 09 C9 86 77 C9 84 67 C9 F5 CB 37
CD 24 D6 F1 E6 0F C6 F6 F6 60 22 C9 21 00 D0 CD
E9 D5 E5 11 F8 FF 19 E5 D1 21 AB C3 01 0C 00 36
7C 23 7A CD 1D D6 7B CD 1D D6 36 7F 23 1A CD 1D
D6 13 36 7C 09 7C FE C5 20 E5 3E ED EA 4B C4 E1
18 CD

主人公とライバルの名前変更のプログラム

説明

主人公やライバルの名前を選択するプログラムを直接呼び出しています。ただし呼び出した後に姿がポケモンのアイコンになったりマップの表示が壊れたりするので、元に戻すための処理を入れています。アドレスD003の中身は主人公の名前を変更するならば5F、ライバルの名前を変更するならばB3となります。

v1.0

WRA1:D000 3E 01            ld   a,01
WRA1:D002 21 ?? 67         ld   hl,67??
WRA1:D005 CD 7D 3E         call 3E7D
WRA1:D008 CD FD 2F         call 2FFD
WRA1:D00B C3 CD 3D         jp   3DCD

v1.1~v1.3(VC)

WRA1:D000 3E 01            ld   a,01
WRA1:D002 21 ?? 67         ld   hl,67??
WRA1:D005 CD 7E 3E         call 3E7E
WRA1:D008 CD 02 30         call 3002
WRA1:D00B C3 CE 3D         jp   3DCE
バイナリ

v1.0

3E 01 21 ?? 67 CD 7D 3E CD FD 2F C3 CD 3D

v1.1~v1.3(VC)

3E 01 21 ?? 67 CD 7E 3E CD 02 30 C3 CE 3D

手持ちのポケモンとポケモンずかんとどうぐ欄とイーブイ取得のフラグに関するプログラム

説明

以下のことを実現するプログラムとなっています。

  • アドレスD123からD2CBまでの中身を00にし手持ちのポケモンとポケモンずかんとどうぐ欄に関する情報を初期化する。
  • アドレスCC36の中身を00にしどうぐ欄のスクロールを一番上にする。
  • アドレスD592の中身を00にしはやぶさバッヂ2回目の効果を修正する。
  • アドレスD124とD2A2の中身をFFにし手持ちのポケモンとどうぐ欄の終端を作る。
  • アドレスD52Dの中身を16にしイーブイ取得のフラグを初期化する。
  • はやぶさバッヂを入手し、どうぐ欄をはやぶさバッヂのみにする。
WRA1:D010 01 A8 01         ld   bc,01A8
WRA1:D013 21 23 D1         ld   hl,D123
WRA1:D016 AF               xor  a
WRA1:D017 22               ldi  (hl),a
WRA1:D018 0B               dec  bc
WRA1:D019 78               ld   a,b
WRA1:D01A B1               or   c
WRA1:D01B 20 F9            jr   nz,D016
WRA1:D01D EA 36 CC         ld   (CC36),a
WRA1:D020 EA 92 D5         ld   (D592),a
WRA1:D023 3D               dec  a
WRA1:D024 EA 24 D1         ld   (D124),a
WRA1:D027 EA A2 D2         ld   (D2A2),a
WRA1:D02A 3E 16            ld   a,16
WRA1:D02C EA 2D D5         ld   (D52D),a
WRA1:D02F 06 65            ld   b,65
WRA1:D031 C3 38 3E         jp   3E38
バイナリ
01 A8 01 21 23 D1 AF 22 0B 78 B1 20 F9 EA 36 CC
EA 92 D5 3D EA 24 D1 EA A2 D2 3E 16 EA 2D D5 06
65 C3 38 3E

参考文献

日本語

英語