The English version is here:
📄RAM Writer in Pokémon Yellow (JP)
バイナリエディタは、初代ポケモンにおける任意コード実行の究極の到達点とも言えるツールです。このエディタを使用すると、ゲーム内のあらゆるメモリの読み書きが可能になります。さらに、プログラムを記述し、実行させることもできます。これにより、テトリスやオセロなどのゲームを遊ぶことも可能になる、非常に強力なツールです。
本記事は以下の動画の解説となります。
バイナリエディタ導入手順
環境
ポケットモンスター ピカチュウの日本語版のみに対応しています。ポケットモンスター 赤・緑・青や日本語版以外のバージョンには対応していません。またさいしょからはじめることを前提としセーブをする際に特定のタイミングで強制リセットを行うSRAM Glitchを使う方法となります。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となります。
以下の手順2における25番目のどうぐの種類によってバージョンを判定することもできます。
- 25番目のどうぐが「ぬ゙のづ」であればv1.1、v1.2、v1.3のいずれか。
- 25番目のどうぐが「ぬ゙のづ」でなければv1.0。
今回の手順においてv1.1、v1.2、v1.3による違いはありません。
手順1: さいしょからはじめてSRAM Glitchを行う
- タイトル画面で↑+B+SELECTを同時に押して、セーブデータを消去します。
- 主人公の名前を「がんョぜメ」にし、ライバルの名前を「てんんオオ」にします。
- スタートボタンを押してメニューを開きレポートを選択します。
- レポートにかきこみますか?に対して「はい」を押してから特定のタイミングで強制リセットをします。
- A+B+START+SELECTを同時に押すソフトリセットでは機能しません。
- 強制リセットのタイミングは、「はい/いいえ」の表示が消えてから「ポケモンレポートにかきこんでいます 」に変わる前です。
- SRAM Glitchを成功させるための強制リセットのタイミングは猶予4フレームで、「はい」を押してから31~34フレーム後となります。
- つづきからはじめることができ、手持ちのポケモンを開くことができる場合はSRAM Glitchに成功しています。そうでない場合は 1. からやり直してください。
手順2: タマムシマンション屋上部屋に向かう
- 手持ちのポケモンを開き、1番目のポケモンと9番目のポケモンを交換します。 これにより、どうぐの所持数が255になります。
- せっていを開き以下のようにします。⚙はなしのはやさ:おそい
せんとうアニメ:じっくりみる
しあいのルール:かちぬきタイプ
サウンド:イヤホン2
- v1.0の場合は手持ちのどうぐ欄を開きます。
- 14番目と20番目の間にあるどうぐのうちどれか1つを26番目のはやぶさバッヂと入れ替えます。
- 25番目のどうぐと34番目のどうぐを入れ替えます。
- 35、36番目のどうぐについては以下のようになっているのでこれを目印にして25番目のどうぐと34番目のどうぐと入れ替えると良いです。🔍35番目のどうぐ:モンスターボール×4
36番目のどうぐ:モンスターボール×16
- 35、36番目のどうぐについては以下のようになっているのでこれを目印にして25番目のどうぐと34番目のどうぐと入れ替えると良いです。
- 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
- 35、36番目のどうぐについては以下のようになっているのでこれを目印にして25番目のどうぐと34番目のどうぐと入れ替えると良いです。
- 家から出ることでタマムシシティ屋上部屋に移動することができます。
手順3: 簡易版バイナリエディタ導入
無限イーブイモード導入
- イーブイを入手しニックネームを「ヅずゆデの」にしてはやぶさバッヂを使います。これによりイーブイのモンスターボールが出現します。
- イーブイを入手しニックネームを「ゴづ」にしてはやぶさバッヂを使います。これによりイーブイのモンスターボールが再度出現します。
- イーブイを入手しニックネームを「がやぜカ」にしてはやぶさバッヂを使います。これにより好きなだけイーブイを入手することができる状態になります。
簡易版バイナリエディタ導入
イーブイを入手し、以下の順番でニックネームをつけます。
- よメボデの
- よザれリん
- ぼダメギて
- へはんち
- だいなひだ
- れじよダリ
- めかんざダ
- ダれサんダ
- ダめッんど
- ううゾダグ
- へたんへ◯
- v1.0: へたんへそ
- v1.1~v1.3(VC): へたんへた
- へたんボぷ
- ぱへたんぴ
- キづごヅー
- てケんダム
- ダだギムツ
- ぼヂてケん
- ぜーダだグ
- づひせがゆ
- よヂづよく
イーブイにニックネームをつけ終わったらはやぶさバッヂを使うと簡易版バイナリエディタが起動します。
簡易版バイナリエディタ
これ以降、はやぶさバッヂを使うたびに簡易版バイナリエディタを起動することができます。
左側の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 |
バイナリエディタ
これ以降は簡易版バイナリエディタを起動してからセレクトボタンを押すたびに、バイナリエディタを起動することができます。
↑: アドレス-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番目は以下のようになっています。
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