Site cover image

🐾 flag3

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

The English version is here:

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

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

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

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

環境

ポケットモンスター ピカチュウの日本語版のみに対応しています。ポケットモンスター 赤・緑・青や日本語版以外のバージョンには対応していません。またさいしょからはじめることを前提としセーブをする際に特定のタイミングで強制リセットを行うSRAM Glitchを使う方法となります。SRAM Glitchを使わない方法やポケットモンスター 赤・緑・青におけるバイナリエディタ導入については以下の記事をご覧ください。

📄Arrow icon of a page linkポケットモンスター ピカチュウ バイナリエディタ レポートバグなし

📄Arrow icon of a page linkポケットモンスター 赤・緑・青 バイナリエディタ

バージョンの違い

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

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

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

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

  • 25番目のどうぐが「ぬ゙のづ」であればv1.1、v1.2、v1.3のいずれか。
  • 25番目のどうぐが「ぬ゙のづ」でなければv1.0。

今回の手順において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: バイナリエディタ導入

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

アドレス 中身
D5E9 CD
D5EA v1.0: 3F
v1.1~v1.3(VC): 40
D5EB 38
D5EC F0
D5ED B3
D5EE 01
D5EF 01
D5F0 00
D5F1 07
D5F2 38
D5F3 18
D5F4 0B
D5F5 0B
D5F6 07
D5F7 38
D5F8 13
D5F9 0E
D5FA F0
D5FB 07
D5FC 38
D5FD 0E
D5FE 01
D5FF 10
D600 00
D601 07
D602 38
D603 08
D604 07
D605 38
D606 03
D607 07
D608 D0
D609 E9
D60A E1
D60B C9
D60C 79
D60D CB
D60E 43
D60F 20
D610 06
D611 CB
D612 4B
D613 20
D614 05
D615 09
D616 C9
D617 86
D618 77
D619 C9
D61A 84
D61B 67
D61C C9
D61D F5
D61E CB
D61F 37
D620 CD
D621 24
D622 D6
D623 F1
D624 E6
D625 0F
D626 C6
D627 F6
D628 F6
D629 60
D62A 22
D62B C9
D62C 21
D62D 00
D62E D0
D62F CD
D630 E9
D631 D5
D632 E5
D633 11
D634 F8
D635 FF
D636 19
D637 E5
D638 D1
D639 21
D63A AB
D63B C3
D63C 01
D63D 0C
D63E 00
D63F 36
D640 7C
D641 23
D642 7A
D643 CD
D644 1D
D645 D6
D646 7B
D647 CD
D648 1D
D649 D6
D64A 36
D64B 7F
D64C 23
D64D 1A
D64E CD
D64F 1D
D650 D6
D651 13
D652 36
D653 7C
D654 09
D655 7C
D656 FE
D657 C5
D658 20
D659 E5
D65A 3E
D65B ED
D65C EA
D65D 4B
D65E C4
D65F E1
D660 18
D661 CD

バイナリエディタ

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

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

アドレス 中身
DDCA C3
DDCB 2C
DDCC D6

v1.1~v1.3(VC)

アドレス 中身
D4CA 0E
D4CB 62
D4CC 04
D4CD 09
D4CE E9
D4CF 63
D4D0 FF

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

バイナリエディタの導入で様々な副作用が発生しています。

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

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

主人公とライバルの名前

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

アドレス v1.0 v1.1~v1.3(VC)
D000 3E 3E
D001 01 01
D002 21 21
D003 主人公の名前: 5F
ライバルの名前: B3
主人公の名前: 5F
ライバルの名前: B3
D004 67 67
D005 CD CD
D006 7D 7E
D007 3E 3E
D008 CD CD
D009 FD 02
D00A 2F 30
D00B C3 C3
D00C CD CE
D00D 3D 3D

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

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

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

アドレス 中身
D010 01
D011 A6
D012 01
D013 21
D014 CA
D015 D2
D016 AF
D017 32
D018 0B
D019 78
D01A B1
D01B 20
D01C F9
D01D 2B
D01E 77
D01F EA
D020 36
D021 CC
D022 EA
D023 92
D024 D5
D025 3E
D026 16
D027 EA
D028 2D
D029 D5
D02A 06
D02B 65
D02C C3
D02D 38
D02E 3E

書き換えたらカーソルをアドレス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番目のどうぐに対応するアドレスは以下のようになっています。

番号 種類 個数
25 D2D2 D2D3
26 D2D4 D2D5
34 D2E4 D2E5

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にジャンプするという命令にすることができます。

パソコンのどうぐ 種類 個数
9 D4CA D4CB
10 D4CC D4CD

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

手持ちのどうぐ 種類 個数
22 D2CC D2CD
23 D2CE D2CF
24 D2D0 D2D1

無限イーブイモード

説明

アドレス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とD125からD2CBまでの中身を00にし手持ちのポケモンとポケモンずかんと手持ちのどうぐ欄に関する情報を初期化する。
  • アドレスCC36の中身を00にしどうぐ欄のスクロールを一番上にする。
  • アドレスD592の中身を00にしはやぶさバッヂ2回目の効果を修正する。
  • アドレスD52Dの中身を16にしイーブイ取得のフラグを初期化する。
  • はやぶさバッヂを入手し、手持ちのどうぐ欄をはやぶさバッヂのみにする。
WRA1:D010 01 A6 01         ld   bc,01A6
WRA1:D013 21 CA D2         ld   hl,D2CA
WRA1:D016 AF               xor  a
WRA1:D017 32               ldd  (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 2B               dec  hl
WRA1:D01E 77               ld   (hl),a
WRA1:D01F EA 36 CC         ld   (CC36),a
WRA1:D022 EA 92 D5         ld   (D592),a
WRA1:D025 3E 16            ld   a,16
WRA1:D027 EA 2D D5         ld   (D52D),a
WRA1:D02A 06 65            ld   b,65
WRA1:D02C C3 38 3E         jp   3E38
バイナリ
01 A6 01 21 CA D2 AF 32 0B 78 B1 20 F9 2B 77 EA 
36 CC EA 92 D5 3E 16 EA 2D D5 06 65 C3 38 3E

参考文献

日本語

英語