理解できなくても出来る任意コード実行解説【ポケモン初代】

バンク解禁されて初代vcからバンク使ってSMに輸送できるようになったが、いまだに任意コード実行について解説されてるサイトがろくに見つからなかったので書いてみました(自分がこの記事を書いてから1ヶ月以内に他にも解説サイトが2、3できましたが)。準備段階でセレクトバグを使うので、セレクトバグが修正されているピカ版ではこの通りには出来ません。ただピカ版でやりたい人はググれば所謂森地図による任意コード実行について解説してくれてるサイトがあるのでそのサイトに従いましょう。

そして一応のお断り。これを書いてる本人もそこまで詳しく理解していないので注意。なのでこのサイトの通りにやって何か問題あっても知りません自己責任。あと根本的にこればバグ技だということも一応お忘れなく。

 

・まず任意コード実行とは?

根本的に任意コード実行という言葉を知らない人も多いはず。初代ポケモンでは5かいバグなんて呼び方もされている。先に書いたように作者本人がにわかなので詳しい説明は他の人に丸投げしてみる。

任意コード実行についてわかりやすく説明してくれてる動画なのでこれ見るの推奨。まあ自分なりにわかりやすく解説してみると、本来アイテムを使用するとアイテムごとに決められた領域から命令を読み取り、その命令を実行することでアイテムの効果が発揮される。このアイテムの命令ってのは当然プレーヤーがいじることは出来ない領域にあるのだが、一部のバグアイテムには本来ありえないはずのプレーヤーが自由に操作出来る部分をアイテムの命令として読み込んじゃうものがある。なので自由に操作できる部分を書き換えて命令を書き込み、そのバグアイテムを利用することで自分があらかじめ書き込んだ効果を得られるというもの。任意のバグを自分でつくるバグ。多分こんな感じ。わかりにくかったらすまん。まあタイトル通り理解してなくても書いてある通りにさえすれば大丈夫大丈夫。初代のバグの知識が一切なくても出来るを目標に書きます。

 

・準備

上の動画様でもあるように任意コード実行に利用できるアイテムはいくつかあるが、そのなかでもなかよしバッヂが一番使いやすいのでここではなかよしバッヂを使った任意コード実行について説明する。といっても大体は動画の通りにやればおk。動画と違うのは、アイテムよりもNNを使ってコードを書いたほうが便利なので育て屋に預けるポケモンのNNが違うということ。

 

1.サファリに入ってすぐに出る。(サファリボールの残数を30にする)

2.育て屋に特定のNNをつけたポケモンを預ける。この預けるポケモンのNNによってどこからコードを読み込むか指定する。仮にここで預けるポケモンをAとすると、このAは預けてすぐに引きとっても預けっぱなしでも大丈夫。最後に預けたポケモンがAではない状態でなかよしバッヂを使うと十中八九フリーズするので注意。なかよしバッヂを使ってコード実行する人は、育て屋を使った後はすぐにAを預けなおす癖をつけましょう。

そして肝心のAのNNですが、ここでは「てウんのの」とします。これで選択中のボックス6匹目からコードを書き込めば読み込んでくれます。ちなみにボックス1匹目からコードを書きたい人は「て[0x64]んのの」を預けましょう(こちらの方が便利)。この[0x64]ってのは16進数で64に該当する文字って意味で見る画面によってはアルファベットのEになる文字。当然入力可能な文字ではないのでバグを使って自分で用意しましょう。14番目セレクト使っておじぞうバッヂを222個名前に埋め込ばおk。それ以上は解説すると長くなるので省略。

 

3.なかよしバッヂを入手する

なかよしバッヂはバグアイテムなので通常のプレイではゲットできません。なのでゲットするのにバグを用いるわけですが、初代にはバグが多すぎてどの手段でゲットするのか悩むレベルですwまあここでは一番楽で汎用性が高い道具欄31番目による発掘を説明します。

①バグの生贄のポケモンとアイテムを1種ずつ用意。どんなポケモンでもいいですがNNは「-----」とかにしときましょう。

②手持ちのアイテム欄の13番目の道具でセレクト押してから戦闘に入りポケモンを選択→生贄のポケモンでAボタンを押します。ポケモンがバグるので戦闘から逃げる。この時生贄のポケモンは先頭以外に配置しましょう。

③特定の場所に行き、道具欄のやめるより下に行けるようになっているので上から31番目の道具を見る。この時場所がただしければ31番目の道具がなかよしバッヂになっているので、これとあらかじめ用意していたいらない生贄用のアイテムとを交換。この時下を押してもスクロールできなくなる時がありますが、そんなときはBボタンを何度か押しましょう。木が左上にある場所だとならないので安全。

④マップがバグって移動できないようになるので空を飛ぶなりテレポートなりで脱出。その後②と同じように13番目でセレクトを押してから戦闘に入りバグらしたポケモンでAボタンを押して終了。バグの生贄にしたポケモンはステータスを見ずに逃がした方が無難です。

 

ここで問題になるのが③に書いた特定の場所。これは上にリンクを貼った動画様にもありますが一応ここでも。

             

                                               f:id:nakayoshibaddi:20170222110635p:plain

  

ご覧のように壁の中なので壁抜けアイテムを使いましょう。カントー中走り回りましたが木が左上にあってなかよしバッヂを発掘できる場所が他にありませんでした。壁抜けアイテムについてはググったらたくさん出てくると思うのでここでは省略。でも一応壁抜けなしで発掘できる場所も紹介。    

          

             f:id:nakayoshibaddi:20170214161050p:plain

グレンのポケモン屋敷の一階。こっちは木がない分多少スクロールがもたつくかも。Bボタン何回か押して頑張ってください。

脱出要因に穴を掘る持ちか穴抜けのひもが必要。

 

 

 ・コード配置

 機械語とかわかる人なら自分で書けばいいが、自分みたいにわからない人は先人が書いてくれたコードを利用しましょう。今からいくつか紹介していくので、そのようにNNをつけたポケモンを選択中のボックスの6匹目(育て屋に預けるポケモンのNNを「て[0x64]んのの」にした人は1匹目)から順番に配置してください。そしてなかよしバッヂを使うとあら不思議。

 

・手持ち1匹目の個体値努力値MAX

知ってると超便利。これで初代の厳選育成は1分で済みます。

がむぜぺョ 
べづづづづ
づづづづづ
づづづの

 

・手持ち1匹目の攻撃努力値を0に

物理技を使わないポケモン用。初めに紹介した努力値個体値maxのコードを実行してから使いましょう。

ョがむぜパ
ずづづの

 

・手持ち1匹目の攻撃の個体値を1、防御の個体値をFに

上のに続けて。

レがむぜぷ
ぼガにビづ

 

・超壁抜け

他の方法としては32番目セレクト、毒サファリ、ニビの誘導男など種類がありますが、他のどれよりも使いやすくて便利です。一応解説しておくと、超壁抜けとはあたり判定を無視して壁をすり抜けられる状態になること。エリア外に出るとフリーズします。空を飛ぶ、野生との戦闘では解除されないが、トレーナーとの戦闘、建物の出入り、波乗りをすると解除されます。肝心のコードは下記のサイト参照。

5かいで超壁抜け

5かいじゃなくてなかよしバッヂでも問題なく使用できるのでご心配なく。

 

・図鑑完成

続けてこちらのサイト参照。

ついに パーフェクトな プログラムの かんせいじゃ!

これでデータが飛んでも安心???

 

・任意のポケモン出現

手持ち4番目の道具の道具の個数が0個でない時に使うと3番目と4番目の道具が0個(個数の0個は256個と同じ意味)に、4番目の個数が0個の時に使うと3番目の道具の個数と同じ内部番号のポケモンが出現します。

この内部番号ってのは図鑑番号とは別物なので注意。例えばミュウの図鑑番号は151ですが、内部番号は21みたいな感じで。ポケモンの内部番号は下記のサイト参照。

内部コード

要するに3番目のアイテムの個数が21個、4番目が0個の時につかうとミュウが出ます。レベルは最後に参照したポケモンのレベルと同じです。

がめぜワョ
せぐガづず
づのずずか
ぜどじがみ
じづの

 

・TN変更

ライバルの名前と違いTNのデータは手持ちのポケモンの上にあるのでセレクトバグでは弄れませんでしたが、任意コード実行なら問題なし。TNが手持ち1匹目のポケモンのNNと同じになります。

がめぜらョ
ぶぺゾさな
ひすべゾギ
ぺヅむむに
ひでののの

 

・殿堂入りデータ消去

バグ使いあるあるの殿堂入りのデータがぶっ壊れたときはこれにて解決。

がゆぜプョ
ひべづの

 

・メッセージを最速に

通常、メッセージの文字と文字が表示されるまでの間の時間は、せっていのはやいで1F、ふつうで3F、おそいで5Fですが、これを使うとはやいより速い0Fになります。設定を見るとふつうに戻っちゃうので注意。ちなみにここら辺はセレクトバグでも弄れるので興味のある方は試してみても面白いかも。

ぼダぞがめ
ぜやルづの

 

・7世代に送ったら色個体に(金銀仕様対応ver)

手持ち4体目のAの個体値を3、残りの個体値をAにします。これでバンク使って7世代に送れば見事色個体に(金銀VC発売前にムーバーの使用が変更され、色個体になる基準が金銀準拠となったのでそれに合わせて書き直しています)。ちなみに本来個体値4Fしかありえないミュウも色に出来ます。まあありえない個体なので初代産色ミュウは全部バグ産。

がむぜひレ
ぼワぶづレ
ぼばづの

 

・TID変更

5番目の道具の個数が0個でない場合に使うと3~5番目の道具の個数を0個に、5番目の道具の個数が0個の場合はTIDを3番目の個数×256+4番目の個数に変更します。
例としてTIDを55555に変更したい場合、55555=217×256+3なので、3番目のアイテムの個数を217個に、4番目を3個にして実行すればOKです。

がめぜンョ
せぐグづず
づずづのず
ずばずぷそ
ぜるづョア
づの

 

・道具変更

3番目の道具が0個以外の場合に使うと3番目の道具の個数が0個に、0個の場合に使うと3番目の道具の種類が道具番号+1されたものに変化します(例:タウンマップ→自転車)。

 がめぜレば
レぐガョじ
づのどの 

 

・技変更

手持ち4番目の道具の個数が0個以外の場合に使うと3~4番目の道具が0個に、4番目の道具が0個の場合に使うと、手持ち6体目のポケモンの1番目の技が3番目の道具の個数に対応した技に変化します。

がめぜワば
レぐグョじ
づずづのず
ばヅダめデ

 

 

・おしまい

サファリのボール残数を30個に、育て屋に必要なNNのポケモンを最後に預けた状態で上記のコードをボックスに順に配置し、なかよしバッヂを使うと効果が得られます。コードはネットで探したら他にも色々出てくるから暇な人は探してみても面白いかも。今回書いたのはだいたい2chからの引用。勿論作れる人は自分で新しいバグを作ってみてもよし。なんでも出来ちゃうバグこと任意コード実行をこれからもよろしく!

 

任意コード実行でバイナリエディタを作って遊んでみた動画。

www.youtube.com

 

www.youtube.com

 

 

[追記]

セレクトバグでのやり方はわからないけど「て[0x64]んのの」を用意してボックスの1匹目からコードを書きたい人向けのお話し。任意コード実行の中にはNNを変更するコードもあるのでそれを使って[0x64]の文字を用意しよう。具体的なレシピはこちら。

ゾAひぢゼ
ひぢギめな
ゅぼ1に2
づの

これにより手持ち6匹目のポケモンのNNを変更出来る。Aに入れる文字により何番目の文字を変更するかを指定する。1文字目なら「カ」、2文字目なら「キ」のように以下クケコサと続く。

そして1と2に入る文字のコードの和により変更する文字を決定する。[0x64]は10進数だと100に相当するので、1に「ぐ」(10進数で40)、2に「ぶ」(10進数で60)を入れると[0x64]がつくれる。ちなみに1と2の間の「に」を「よ」に変更すると、変更される文字が1と2の和ではなく差になる。

結論だけ言うと、「て?んのの」(?はなんでもいい)とNNを付けたポケモンを手持ち6匹目に用意、

ゾキひぢゼ
ひぢギめな
ゅぼぐにぶ
づの

のコードを実行すると6匹目のNNが「て[0x64]んのの」になり、こいつを育て屋に預けるとボックス1匹目からコードを実行できる。

 

 

昔のポケモントリビアとかバグの動画上げてるのでチャンネル登録よろしく!

www.youtube.com