flag3

ポケットモンスター ファイアレッド・リーフグリーン 殿堂入り(任意コード実行)

The English version is here:

📄Arrow icon of a page linkHall of Fame in Pokémon FireRed/LeafGreen (JP) (Arbitrary Code Execution)

本記事はポケットモンスター ファイアレッド・リーフグリーンで任意コード実行を用いて殿堂入りする方法について紹介します。バグあり(セーブ中リセットなし)でなるべく早く殿堂入りを目指すRTAのAny% No Save Corruptionのカテゴリーで使うことができます。

殿堂入り手順

環境

ポケットモンスター ファイアレッド・リーフグリーンの日本語版のみに対応しています。日本語版以外のバージョンには対応していません。GBA版とSwitch版の両方に対応しています。

バージョンの違い

GBA版のポケットモンスター ファイアレッド・リーフグリーンはそれぞれにv1.0とv1.1が存在します。カートリッジの基板に刻まれている数字によってどのバージョンであるかを判定することができます。

  • 末尾の数字が20であればv1.0。
  • 末尾の数字が30であればv1.1。

準備

  • はたきおとすを覚えたポケモン
    • ゲーム内交換で入手できるカモネギ(じんすけ)はレベル21ではたきおとすを覚えます
  • リサイクルを覚えたポケモン
    • ゲーム内交換で入手できるバリヤード(バリヤン)はレベル33でリサイクルを覚えます
  • 消費アイテム(例:きのみ)
    • HP50%以下で発動するオレンのみが最適です
      • オレンのみは25ばんどうろで入手することができます
  • メール
    • タマムシデパートで50円で購入することができます
    • 7個以上用意してください

手順1: 材料ポケモン用意

リーフグリーンのゲーム内交換で入手できるニドラン♂(ニドくん)の経験値を466、488、493のいずれかに調整したものを使うのが、材料ポケモンの最も簡単な入手方法です。以下に当てはまる場合はデテロニーさんの解説動画またはfinalさんの記事をご参照ください。

  • ファイアレッドを使用している
  • ニドくんをすでに持っていて経験値を466、488、493にするのが困難
  • ニドくんがすでに進化している

なお、ゲーム交換で入手したニドくんは性格値が0x4C970B9E、トレーナーIDが63184であるため、経験値を別の値に調整することで材料ポケモンとして使用することができます。

手順2: メールバグ

以下の3匹のポケモンを手持ちに用意し先頭2匹を以下の1と2のポケモンにしてください。

  1. 消費アイテムをもたせた任意のポケモン
  2. はたきおとすを覚えたポケモン
  3. メールをもたせたリサイクルを覚えたポケモン(メッセージは何でも可)

ダブルバトルを開始します。開始する前にセーブをすることをおすすめします。ダブルバトルでは以下の手順を実行してください。

  1. ポケモンに消費アイテムを使わせる。
  2. アイテムを消費したら、そのポケモンをメールをもたせたリサイクルを覚えたポケモンに入れ換える。
  3. メールをもたせたリサイクルを覚えたポケモンにはたきおとすを使用しメールをはたきおとす。
  4. リサイクルを使用し消費アイテムを拾う。
  5. 戦闘を終了させる。

手持ちを確認して、リサイクルを覚えたポケモンがメールをもっていなければメールバグに成功です。リサイクルを覚えたポケモンにメールをもたせなおしてください。

手順3: バグポケモン入手

手順1で入手した材料ポケモンをボックス3の1番目に入れ手持ちを6匹にしてください。

Image in a image block

6匹全員にメールをもたせます(メッセージは何でも可)。6匹目にメールを渡そうとすると、???が入力されたメール画面が表示されます。

リーフグリーンを使用していて材料ポケモンがニドくんである場合はメールの3番目と5番目を以下のものにしてください。表中の_____は?????となっている言葉をけしてください。

経験値 3番目 5番目
466 ポケモンゲット _____
488 レッド _____
493 レベル _____
Image in a image block
Image in a image block
Image in a image block

ファイアレッドを使用していたり別の素材ポケモンを使用している場合はデテロニーさんが作成したFRLG任意コード実行用バグポケモン作製用計算機、もしくはfinalさんのSpecies Word FinderとChecksum Adjustment Calculatorをお使いください。

手順4: 殿堂入り

ボックス12~14にはポケモンを預けないようにし、手持ちのポケモンを4匹以下にしてください。手持ちを5匹以上にすると殿堂入りの途中でフリーズします。

使っているソフトのバージョンとバグポケモンの種族IDに応じてボックスの名前を付けてください。下の三角形をクリックすることで表示される表でバグポケモンの種族IDに対応する型を確認し、その型のボックス名を設定してください。なお経験値466、488、493のニドくんをバグポケモンにした場合はARM-2型を使ってください。

ファイアレッド種族ID
種族ID
0x03F8 ARM-2型
0x060C ARM-2型
0x15BC ARM-0型
0x1626 ARM-0型
0x4312 Thumb型
0x4317 Thumb型
0x4D12 ARM-0型
0x7912 Thumb型
0x89FA Thumb型
0xA253 Thumb型
0xB2A9 ARM-0型
0xC7FE Thumb型
0xC950 ARM-0型
0xCAA2 ARM-2型
0xCD48 Thumb型
0xCF8B Thumb型
0xD624 Thumb型
0xDD37 Thumb型
0xE07C Thumb型
0xE472 ARM-0型
0xE69D ARM-0型
0xFF3B ARM-2型
0xFF41 ARM-2型
0xFF61 ARM-2型
0xFF6B Thumb型
0xFF78 ARM-0型
0xFF79 Thumb型
0xFF7B Thumb型
0xFF7E Thumb型
0xFF81 Thumb型
0xFF83 Thumb型
0xFF86 Thumb型
0xFF8B Thumb型
0xFF8E Thumb型
0xFF96 Thumb型
0xFF99 Thumb型
0xFF9B Thumb型
0xFF9E Thumb型
0xFFA1 Thumb型
0xFFA3 Thumb型
0xFFAB Thumb型
0xFFAE Thumb型
0xFFB1 Thumb型
0xFFB3 Thumb型
0xFFB6 Thumb型
0xFFB9 Thumb型
0xFFBB Thumb型
0xFFC3 Thumb型
0xFFC6 Thumb型
0xFFC9 Thumb型
0xFFCE Thumb型
0xFFD3 Thumb型
0xFFF8 ARM-0型
0xFFF9 Thumb型
リーフグリーン種族ID
種族ID
0x03F8 ARM-2型
0x060C ARM-2型
0x15BC ARM-0型
0x1626 ARM-0型
0x3D88 ARM-2型
0x4D1B Thumb型
0xBCB2 Thumb型
0xC290 Thumb型
0xC6AA ARM-2型
0xCFAD ARM-2型
0xD45D ARM-2型
0xD628 Thumb型
0xEA20 ARM-0型
0xEB51 Thumb型
0xFBED ARM-0型
0xFF11 ARM-2型
0xFF37 ARM-2型
0xFF41 ARM-2型
0xFF57 ARM-2型
0xFF5C ARM-2型
0xFF61 ARM-2型
0xFF6C Thumb型
0xFF79 Thumb型
0xFF7C Thumb型
0xFF7F Thumb型
0xFF81 Thumb型
0xFF84 Thumb型
0xFF87 Thumb型
0xFF8C Thumb型
0xFF8F Thumb型
0xFF97 Thumb型
0xFF99 Thumb型
0xFF9C Thumb型
0xFF9F Thumb型
0xFFA1 Thumb型
0xFFA4 Thumb型
0xFFAC Thumb型
0xFFAF Thumb型
0xFFB1 Thumb型
0xFFB4 Thumb型
0xFFB7 Thumb型
0xFFB9 Thumb型
0xFFBC Thumb型
0xFFC4 Thumb型
0xFFC7 Thumb型
0xFFC9 Thumb型
0xFFCE ARM-0型
0xFFD1 Thumb型
0xFFF9 Thumb型

型に応じて以下のいずれかを使用してください。

ARM-0型

ボックス1: []
ボックス2: [     まqた]
ボックス3: [ぁm〇〇しく]

ARM-2型

ボックス1: []
ボックス2: [     まqた]
ボックス3: [ぁmしく〇〇]

Thumb型

ボックス1: [ ぶ び〇〇しく]

〇〇 は使用中のバージョンに応じて以下の値に置き換えてください。

バージョン 〇〇
GBA版ファイアレッドv1.0 『」
GBA版ファイアレッドv1.1 す♂
Switch版ファイアレッド 『y
GBA版リーフグリーンv1.0 ュ」
GBA版リーフグリーンv1.1 m」
Switch版リーフグリーン ュy

なおSwitch版のARM-0型、ARM-2型についてはボックス1の名前がデフォルトの ボックス1 でも良いです。

ボックス12~14にポケモンが預けられていない状態でボックスを整理するから任意のポケモンをつかみ、バグポケモンの上に移動し入れ換えることで殿堂入りとなります。

なお殿堂入り後はバグポケモンが消滅することに気をつけてください。

コード

GBA版ファイアレッドv1.0のみ記述します。殿堂入りの関数アドレス0x080CB4B0をThumb命令で実行するものとなっております。

ARM-0

02031618 <.data>:
 2031618:	e51f0000 	ldr	r0, [pc, #-0]	@ 0x2031620
 203161c:	e12fff10 	bx	r0
 2031620:	080cb4b1 	stmdaeq	ip, {r0, r4, r5, r7, sl, ip, sp, pc}
バイナリ
00 00 1F E5 10 FF 2F E1 B1 B4 0C 08

Thumb

0203160c <.data>:
 203160c:	4800      	ldr	r0, [pc, #0]	@ (0x2031610)
 203160e:	4700      	bx	r0
 2031610:	b4b1      	push	{r0, r4, r5, r7}
 2031612:	080c      	lsrs	r4, r1, #32
バイナリ
00 48 00 47 B1 B4 0C 08

謝辞

Switch版において殿堂入りの関数アドレスを特定してくれたぼんじりさんに感謝します。

参考文献

手順1で紹介した文献に加えて以下を参考にしています。