現在、ブログでのコメントの返信は停止しております
返信を希望されるコメントについてはお手数ですがYouTubeの当方のチャンネルに投稿されている適当な動画に書き込みくださいますようお願いします【Em汎用コード用サンプルコード一覧】
ここではEmの汎用コード用に作製した有用性の高いサンプルコードについて纏めている。
汎用コードの概説及びEm汎用コード環境の導入手順、スクリプトコードの入力方法については
こちらを参照。
尚、字形の紛らわしい文字については、注釈がない限り以下を前提としている。
<参考>
・文字コード
https://wikiwiki.jp/pokemonhack/文字コード・スクリプトコード
https://wikiwiki.jp/pokemonhack/イベントスクリプト・SPコード
https://wikiwiki.jp/pokemonhack/Specialコード【スクリプトオンリー系】
スクリプトコードのみで構成された任意コードの一覧である。
・所持金加算
#スクリプト
c90[ゾ]により、所持金を①①①①円増やす。
所持金は上限999999円(0x000F423F)で打ち止めされるので、所持金MAXにしたいだけならば適当な大きい値を指定すればよい。
<例>
ボックス名1:[ゾソソソソ ]
①①①①=[ソソソソ]=0x5F5F5F5F:1600085855円
・所持BP加算
#スクリプト
c25[ゆ]によるSPコード0x01C7[Mあ]の実行により、所持BPを①①BP増やす。
加算する値①①は、c16[に]によりイベント変数0x8004[えィ]へと代入することで指定する。
所持BPは上限9999BP(0x270F)で打ち止めされるので、所持BPMAXにしたいだけならば適当な大きい値を指定すればよい。
<例>
ボックス名1:[にえィイイゆMあ]
①①=[イイ]=0x5252:21074BP
・任意アイテム入手
#スクリプト
c49[べ]により、パソコン内に任意のアイテム⑴⑴を任意の個数⑵⑵追加する。
⑴⑴や⑵⑵にはイベント変数を利用可能。
<例>
ボックス名1:[べお sう]
⑴⑴=[お ]=0x0005:サファリボール
⑵⑵=[sう]=0x03E7:999個
ボックス名1:[ああああに ぞ]
ボックス名2:[べで ぞ]
⑴⑴=[で ]=0x0044:不思議な飴
⑵⑵=[ ぞ]=0x4000:イベント変数0x4000
→イベント変数0x4000=[終終]=0xFFFF:65535個
<参考>
https://wikiwiki.jp/pokemonhack/アイテムコード
・フラグオンチケット類入手
#スクリプト
・夢幻のチケット
※夢幻のチケット配達員出現
・神秘のチケット
・オーロラチケット
・古びた海図
ボックス名1:[あああああああお]
ボックス名2:[Yソく]
c05[お]により、ROM内に用意されたスクリプトへジャンプすることでフラグオンのチケット類をその場で入手する。
夢幻のチケットに関しては、c28[る]によりポケセン2Fに配達員を出現させるフラグを立てて、直接配達員から受け取る方法もある。
・固定シンボルポケモン復活
#スクリプト
・①①の文字
[ダ ]:ルギア
[ヂ ]:ホウオウ
[。あ]:デオキシス
[Aあ]:レジロック
[Bあ]:レジアイス
[Cあ]:レジスチル
[Dあ]:カイオーガ
[Eあ]:グラードン
[Fあ]:レックウザ
[Oあ]:孤島ラティ
[Pあ]:ミュウ
c2A[れ]により、捕獲や撃破によってオンになった各固定シンボルポケモンの消失フラグ①①を折ることで、ポケモンを復活させる。
<参考>
https://www.pokecommunity.com/showthread.php?p=8321200#post8321200
・孤島ラティ切り替え
#スクリプト
・ラティアス
・ラティオス
ボックス名1:[れ…に]
or
ボックス名1:[にaぞ ]
南の孤島に出現するラティの種類を決めるフラグ0x16B0[…に]を、c29[る]により立てることでラティアス、c2A[れ]により折ることでラティオスに切り替える。
このフラグはイベント変数0x40D5[aぞ]に属しており、厳密には0x40D5内の値が0x0000の時にのみラティオスとなり、それ以外の値の時は全てラティアスとなる。
c2Aによるラティオス化が上手くいかない場合は、c16[に]による後者のコードを使用すると確実である。
尚、徘徊ラティの種類は切り替わらない。
・任意技教え
#スクリプト
ボックス名1:[ロ①②③③]
or
ボックス名1:[に ィ ロ ビ]
ボックス名2:[にあィ①② ビ]
ボックス名3:[にいィ③③ ビ]
ボックス名4:[ぬいィ❸❸にうィ]
ボックス名5:[アおリメうい]
c7B[ロ]により、手持ち①匹目の技②番目を任意の技③③に変更する。
技の指定にイベント変数を利用出来ないので、前者のコードでは使用出来ない文字コードを含む技コードの技は覚えさせられない。
使用出来ない文字コードの値を指定する場合は後者のコードを使い、以下のようにコードを分解し、c17[ぬ]を併用して③③に❸❸を加算する形で、使用出来る文字同士を足し合わせることで対応する。
B7[円],B8[.],B9[╳] | = | B0[…] | + | 07[き],08[く],09[け] |
EF[▼]〜FF[終] | = | E0[l] | + | 0F[そ]〜1F[ま] |
<例>
ボックス名1:[ロいう5 ]
①=[い]=0x02:手持ち3匹目
②=[う]=0x03:技4番目
③③=[5 ]=0x00A6:スケッチ
ボックス名1:[に ィ ロ ビ]
ボックス名2:[にあィお ビ]
ボックス名3:[にいィl ビ]
ボックス名4:[ぬいィふ にうィ]
①=[お]=0x05:手持ち6匹目
②=[ ]=0x00:技1番目
③③=[l ]=0x00E0
❸❸=[ふ ]=0x001C
③③+❸❸=0x00E0+0x001C=0x00FC:猫騙し
<参考>
https://wikiwiki.jp/pokemonhack/技コード
・出会った場所変更
#スクリプト
cD2[X]により、手持ち⑴⑴匹目の出会った場所をマップ名ID②に変更する。
⑴⑴にはイベント変数を利用可能だが、あまり有用性はない。
<例>
ボックス名1:[Xい び]
⑴⑴=[い ]=0x0002:手持ち3匹目
②=[び]=0x47:マボロシ島
ボックス名1:[Xい ]
⑴⑴=[い ]=0x0002:手持ち3匹目
②=[終]=0xFF:運命的な出会い
<参考>
https://m.bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_III)
・マボロシ島出現
#スクリプト
ボックス名1:[のやぞぎオ]
ボックス1/1番目:任意のポケモン
c19[の]により、マボロシ島出現判定値であるイベント変数0x4024[やぞ]に、ボックス1の1番目に配置したポケモンの性格値下位2バイトを司るイベント変数0x5538[ぎオ]の値をコピーする。
コード実行後にその任意のポケモンを手持ちに加えることで、そのポケモンの性格値下位2バイトとマボロシ島出現判定値が一致する為、マボロシ島が出現する。
・日替わりイベント開催
#スクリプト
・①①の文字
[あい]:頑張り屋半額セール
[いい]:ゲームコーナーサービスデー
[うい]:掘り出し市
[えい]:ブレンド名人
c16[に]により、日替わりイベントを司るイベント変数の1つ0x4BDA[fぱ]に、各イベントの対応値①①を代入することでそのイベントを開催させる。
複数開催させる場合は、イベント変数0x4BDAの他にも0x4BDC[hぱ],0x4BDE[jぱ],0x4BE0[lぱ]を使用することで追加が可能。
0x0000[ ]を代入すれば中止となる。
・改良型タマゴバグ
#スクリプト
ボックス名1:[ぬ@@①①]
ボックス1/1番目:材料ポケモン
・@@の文字
[ぐオ]:性格値上位2バイト破損
[ごオ]:裏ID破損
・①①の文字
[ ぞ]:+0x4000
[ F]:−0x4000(+0xC000)
c17[ぬ]により、ボックス1の1番目に配置したポケモンの性格値上位2バイトを司るイベント変数0x5539[ぐオ]や裏IDを司る0x553B[ごオ]に、0x4000[ ぞ]や0xC000[ F]を加算することで、タマゴバグにおける性格値や裏IDの破損を再現する。
従来との違いは、0x4000をXORするのではなく加算/減算することであり、より柔軟に性格値や裏IDを変化させることが可能。
・裏ID特定
#スクリプト
ボックス名1:[ォいごオ ビ]
ボックス名2:[ヌネふいい]
ボックス1/1番目:特定したいロムのポケモン
ボックス1の1番目に配置したポケモンの裏IDを10進法の値でそのままメッセージウィンドウ上に表示する。
自己産のポケモンは勿論他人産のポケモンでも調べられるので、他ロムの裏IDの調査も可能。
・国籍変更
#スクリプト
ボックス名1:[にだオ①①]
ボックス1/1番目:変更したいポケモン
・①①の文字
[あい]:日本
[いい]:北米
[うい]:フランス
[えい]:イタリア
[おい]:ドイツ
[かい]:韓国※実質没国籍
[きい]:スペイン
c16[に]により、ボックス1の1番目に配置したポケモンの国籍を司るイベント変数0x5541[だオ]に、各国籍の対応値①①を代入することでそのポケモンの国籍を変更する。
尚、第3世代には韓国版ソフトがなく、第4世代は韓国版は韓国版としか通信交換(ポケシフターも含む)が出来ないことからその他各国版にはそもそも韓国籍のデータ自体が存在せず無国籍扱い(ポケムーバーで弾かれる)となるので、韓国籍は反映されることがない実質的な没国籍となる。
<参考>
https://bulbapedia.bulbagarden.net/wiki/Pokémon_data_structure_in_Generation_III#Language
・特性切り替え
#スクリプト
ボックス名1:[ぬばオ ィ ビ]
ボックス名2:[ぬ@@ ィ]
ボックス1/1番目:切り替えたいポケモン
・@@の文字(Mブロック配列位置別)
1番目:[ぱオ]
2番目:[アオ]
3番目:[キオ]
4番目:[スオ]
ボックス1の1番目に配置したポケモンの特性を司るイベント変数@@を操作することで、特性をもう片方の特性に切り替える。
対応するイベント変数はMブロックの配列位置によって4パターンに分かれる。
特性2が設定されていないポケモンに使用すると特性なしになる。
・努力値全能力全振り
#スクリプト
ボックス名1:[ああああに ぞ]
ボックス名2:[ね ぞ@@ ビ]
ボックス名3:[の@@ ぞ ビ]
ボックス名4:[ぬばオ]
ボックス1/1番目:全振りしたいポケモン
・@@の文字(Eブロック配列位置別:HA用,BS用,CD用順)
1番目:[ぶオ],[べオ],[ぼオ]
2番目:[ぺオ],[ぽオ],[っオ]
3番目:[エオ],[オオ],[カオ]
4番目:[コオ],[サオ],[シオ]
ボックス1の1番目に配置したポケモンの努力値を司るイベント変数@@を操作することで、HA,BS,CDの組み合わせで一度に2箇所の能力の努力値を255振りさせる。
対応するイベント変数はEブロックの配列位置によって4パターンに分かれ、更にHA用,BS用,CD用の3種に分かれている。
3種全てを実行することで全能力全振りとなる。
条件として、全振りする2箇所の能力の努力値は0である必要がある。
・ポケモンタマゴ化
#スクリプト
ボックス名1:[ぬばオ ぞ]
ボックス1/1番目:タマゴ化したいポケモン
↓
ボックス名1:[ねだオ お]
ボックス1/1番目:ダメタマゴ化したポケモン
ポケモンがダメタマゴ化した際にタマゴフラグが自動でオンになることを利用して、まず前者のコードでポケモンを態とダメタマゴ化させ、その後に後者のコードでダメタマゴフラグをオフにすることで、ポケモンをタマゴ状態に変化させる。
後者のコードは、対象のポケモンが前者のコードによりダメタマゴ化したことを直接見て確認してから実行する必要がある。
因みに、孵化歩数は対象のポケモンの懐き度に依存しており、孵化歩数を少なくするには対象の懐き度を予め下げておくと良い。
・育て屋タマゴ任意性格値指定
#スクリプト
ボックス名1:[にbぺ①① ビ]
ボックス名2:[にcぺ②②]
+
[ぬbぺ❶❶],[ぬcぺ❷❷]
c16[に]により、育て屋で見つかるタマゴの性格値下位2バイトを司るイベント変数0x4ED6[bぺ]や上位2バイトを司る0x4ED7[cぺ]に、任意の値①①,②②を代入することで、任意の性格値のタマゴを生成させる。
使用出来ない文字コードの値を指定する場合は、以下のようにコードを分解し、c17[ぬ]を併用して①①,②②に❶❶,❷❷を加算する形で、使用出来る文字同士を足し合わせることで対応する。
B7[円],B8[.],B9[╳] | = | B0[…] | + | 07[き],08[く],09[け] |
EF[▼]〜FF[終] | = | E0[l] | + | 0F[そ]〜1F[ま] |
<例>
ボックス名1:[にbぺTl ビ]
ボックス名2:[ぬbぺ は ビ]
ボックス名3:[にcぺ。j]
①①=[Tl]=0xE0CE
❶❶=[ は]=0x1A00
①①+❶❶=0xE0CE+0x1A00=0xFACE
②②=[。j]=0xDEAD
→性格値:0xDEADFACE
FA[続]のように使用出来ない文字コードは、E0[l]と1A[は]に分解して、c17[ぬ]の併用により足し合わせて対応する。
・徘徊ポケモンデータ書き換え
#スクリプト
・種族変更
・個体値変更
ボックス名1:[にみぽ①① ビ]
ボックス名2:[にむぽ②②]
+
[ぬみぽ❶❶],[ぬむぽ❷❷]
・性格値変更
ボックス名1:[にめぽ①① ビ]
ボックス名2:[にもぽ②②]
+
[ぬめぽ❶❶],[ぬもぽ❷❷]
・レベル変更&状態異常(眠り,凍り,麻痺重複)付与
・現在HP1化
・徘徊ポケモン復活
c16[に]により、徘徊ポケモンの各種データを司るそれぞれのイベント変数に、任意の値を代入することでデータを書き換え、徘徊ポケモンを自由にカスタマイズする。
使用出来ない文字コードの値を指定する方法は
育て屋タマゴ任意性格値指定にて記述した方法に同じ。
これらを併用することで、性格値と個体値の組み合わせが自由な全ての種族のポケモンを任意のレベルで入手することが可能。
因みに、種族を変更した場合の徘徊ポケモンの現在位置は、変更後の種族の図鑑の分布から確認出来るようなる(つまり、変更後の種族を未発見であると現在位置の確認が出来ない)。
・夢幻のチケットお裾分け
#スクリプト
ボックス名1:[にBウほ ビ]
ボックス名2:[にDウおお ビ]
ボックス名3:[にEウてあ]
夢幻のチケットを他のRSEmのロムにお裾分け出来るようにする。
お裾分けする場合は、配布する側(コード実行側)のロムをホスト(通信ケーブル青色プラグ接続)とし、受け取る側をゲスト(灰色プラグ接続)としてレコードコーナーで通信をする。
通信で受け取った夢幻のチケットはその場でフラグオンとなり使用可能になる。
上記コードは夢幻のチケットを5回お裾分け可能に設定してあるが、各イベント変数に代入する値を変更することで配布するアイテムや回数を変更することが出来る。
詳しくは下記の有志研究者の方の書き込みを参照していただきたい。
<参考>
https://pokemonbbs.com/sp/poke/read.cgi?no=1260854&l=711-713
・RTCリセットモード起動
#スクリプト
RTCリセットモードを起動出来るようにし、RTCを変更することで電池交換施工ロム等の時計関連イベントの復活を可能にする。
コード的には、c16[に]によりイベント変数0x402C[わぞ]に値0x0920[みけ]を代入し、c29[る]によりフラグ0x08C2[Hく]を立てている。
コード実行後にレポートを書いて保存すると、以降はゲーム起動時にタイトル画面からRTCリセットモードの起動が可能になる。
起動にはタイトル画面にて「十字ボタン←」,「Bボタン」,「SELECTボタン」を同時入力する。
RTCを変更するとその場でレポートが書かれ、コードの効果が切れる(再びRTCリセットモードを起動出来るようにするには再度コードの実行が必要)。
<参考>
https://pokemonbbs.com/sp/poke/read.cgi?no=1260854&l=705
・手持ちポケモンNN変更
#スクリプト
ボックス名1:[Lいす ビ]
ボックス名2:[おネふいい]
ボックス名14:[ゆポ らゆペ ]
※[ペ]は片仮名
コード実行後に手持ち選択画面が開かれ、ポケモンを選択するとNN変更画面に移行して選択したポケモンのNN変更を行う。
手持ち選択時にキャンセルをするとボックス2の24番目付近のポケモンが破損するので注意が必要。
NN変更には通常の姓名判断師によるものと同じUIが使われるが、通常とは異なり親情報が一致していなくても変更が可能である。
・手持ちタマゴ強制孵化
#スクリプト
ボックス名1:[Lいす ビ]
ボックス名2:[おネふいい]
ボックス名14:[ゆポ らゆH ]
コード実行後に手持ち選択画面が開かれ、タマゴを選択すると孵化ムービー画面に移行して選択したタマゴの強制孵化を行う。
手持ち選択時にキャンセルをするとボックス2の24番目付近のポケモンが破損するので注意が必要。
タマゴではないポケモンを選択すると、そのポケモンの強制孵化が行われ、親情報が一新された上でLv5に再生成される。
因みにダメタマゴに対して強制孵化を行うと、本来の種族とは関係なく必ず内部番号0x019Cのバグポケモン(グラフィックはタマゴ)が孵化する。
・任意性格値ダメタマゴ生成
#スクリプト
ボックス名1:[にぎオ①① ビ]
ボックス名2:[にぐオ②②]
ボックス1/1番目:空きor不要なポケモン
+
[ぬぎオ❶❶],[ぬぐオ❷❷]
ボックス1の1番目に、下位2バイトは①①、上位2バイトは②②の性格値を持つダメタマゴを生成する。
使用出来ない文字コードの値を指定する方法は
育て屋タマゴ任意性格値指定にて記述した方法に同じ。
生成したダメタマゴに対して
手持ちタマゴ強制孵化コードを実行すると、元の性格値は引き継いだまま内部番号0x019Cのバグポケモン(グラフィックはタマゴ)が孵化する。
0x019Cに対しては
手持ちポケモンデータ書き換えコードの使用が有効である為、これらのコードを併用することで任意の性格値のポケモンを作製することが出来る。
<例>
ボックス名1:[にぎオ…l ビ]
ボックス名2:[ぬぎオ つ ビ]
ボックス名3:[にぐオlB ビ]
ボックス名4:[ぬぐオは ]
①①=[…l]=0xE0B0
❶❶=[ つ]=0x1200
①①+❶❶=0xE0B0+0x1200=0xF2B0
②②=[lB]=0xBCE0
❷❷=[は ]=0x001A
②②+❷❷=0xBCE0+0x001A=0xBCFA
→性格値:0xBCFAF2B0
F2[Ö]のように使用出来ない文字コードは、E0[l]と12[つ]に分解して、c17[ぬ]の併用により足し合わせて対応する。
上記の指定により、性格値0xBCFAF2B0のダメタマゴが生成され、このダメタマゴを強制孵化することで同じく性格値0xBCFAF2B0の0x019Cを入手出来る。
【プログラムメイン系】
ボックス名5以降に記述したプログラムコードが主体の任意コードの一覧である。
プログラムコードを実行する為に、ボックス名1には以下のようにスクリプトコード[もけぬうい]を入力していることが前提となる。
#スクリプト
・ID変更
#プログラム
ボックス名5:[かッンNテぞけノ]
ボックス名6:[アぱゥひし l]
ボックス名7:[ゴゥぃBFC]
ボックス名8:[アlコ う]
ボックス名9:[①②③④❶❷❸❹]
主人公のIDを、①②で指定した値の表ID、③④で指定した値の裏IDに変更する。
❶❷❸❹は基本的に00[ ]を入力するが、①②③④に使用出来ない文字コードの入力が必要になった時に、その文字コードを以下のように使用出来る文字コード2つに分解し、片割れを対応する位置に入力する。
B7[円],B8[.],B9[╳] | = | B0[…] | + | 07[き],08[く],09[け] |
EF[▼]〜FF[終] | = | E0[l] | + | 0F[そ]〜1F[ま] |
<例>
ボックス名9:[ll まま ]
①②=[ll]=0xE0E0
③④=[ ]=0x0000
❶❷=[まま]=0x1F1F
❸❹=[ ]=0x0000
①②+❶❷=0xE0E0+0x1F1F=0xFFFF:表ID65535
③④+❸❹=0x0000+0x0000=0x0000:裏ID00000
ボックス名9:[ぐぃ…ま け ]
①②=[ぐぃ]=0x3039
③④=[…ま]=0x1FB0
❶❷=[ ]=0x0000
❸❹=[け ]=0x0009
①②+❶❷=0x3039+0x0000=0x3039:表ID12345
③④+❸❹=0x1FB0+0x0009=0x1FB9:裏ID08121
・TN変更
#プログラム
ボックス名5:[かッンNけノねG]
ボックス名6:[アぃBFC]
ボックス名7:不問
ボックス名8:[アlコ う]
ボックス名9:[①②③④⑤⑥⑦]
主人公のTNを、ボックス名9に入力した文字列①②③④⑤⑥⑦に変更する。
指定出来る文字数は最大7文字までであり、8文字目まで入力するとトレーナーカード等にクラッシュなどの不具合を生じるようになるので注意が必要。
・主人公性別・容姿変更
#プログラム
ボックス名5:[@むかぶ ノあメ]
ボックス名6:[アぃBFC]
ボックス名7:不問
ボックス名8:[アlコ う]
@に入力した文字コードに従って主人公の性別・容姿を変更する。
正規値は男主人公の0x00[ ]、女主人公の0x01[あ]の2パターンのみとなる。
それ以外の値を入力するとその他のシンボルに容姿を変更出来るが、不正値故に不具合が生じることがあるので注意が必要。
<参考>
https://plaza.rakuten.co.jp/kazanliyuu/4016/?iphone=pcpage
・徘徊ポケモン現在位置変更
#プログラム
ボックス名5:[@むあぶぞけあモ]
ボックス名6:[りラぞぃBFC]
@に入力した文字コードに従って徘徊ポケモンの現在位置を変更する。
@で指定する値はマップ番号で、バンク番号は0x00を想定している。
マップ番号の値は概ねマップ名IDの値に準拠している。
101番道路など本来の徘徊ラティ出没経路以外のマップも指定可能。
<参考>
https://m.bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_III)
・任意ポロック生成
#プログラム
ボックス名5:[かッンNOネくめ]
ボックス名6:[アついぶぇ l]
ボックス名7:[アねねGぃBFC]
ボックス名8:[アlコ う]
ボックス名9:[色辛渋甘苦酸滑う]
ボックス名9の各項目で指定したパラメータのポロックをポロックケース内の1番目に生成(上書き)する。
使用出来る文字コードの都合上、指定出来るパラメータの最大値は各々238(0xEE[z])となるので、コンディションMAXを狙うなら最低2個の投与が必要となる。
<例>
ボックス名9:[せzzzzz う]
色=[せ]=0x0E:金色
辛,渋,甘,苦,酸=[z]=0xEE:238
滑=[ ]=0x00:0
・強制色違い化
#プログラム
ボックス名5:[く0zOてネぃめ]
ボックス名6:[アぶネクぞ l]
ボックス名7:[カケばぞーっえげ]
ボックス名8:[アきWぱタせl]
ボックス名9:[クぢいいクぢいい]
ボックス名10:[アzsヤぢいい]
手持ち3匹目:色違いにしたいポケモン
手持ち3匹目のポケモンの親IDをそのポケモンの性格値と同じ値に変更し、色違い条件を強制的に満たさせることでそのポケモンを色違いに変化させる。
親ID変更コードの応用コードで、表IDは性格値の下位2バイト、裏IDは上位2バイトの値をコピーする。
性格値の書き換えは起こらないので性別や性格、その他48バイトデータ等は元のポケモンから変化しない。
ただし、当然ながら親情報は個体毎(性格値毎)に異なるものになる。
【任意乱数値指定系】
ボックス名5以降に任意の乱数値を指定するプログラムコードを記述し、そのプログラムと、乱数を使用するスクリプトとを併用した任意コードの一覧である。
任意乱数値指定コードは以下の通りである。
#プログラム
ボックス名5:[かッンNテぞさタ]
ボックス名6:[アぃBFC]
ボックス名7:不問
ボックス名8:[アlコ う]
ボックス名9:[①②③④❶❷❸❹]
①②③④で任意の乱数値を指定する。
❶❷❸❹は基本的に00[ ]を入力するが、①②③④に使用出来ない文字コードの入力が必要になった時に、その文字コードを以下のように使用出来る文字コード2つに分解し、片割れを対応する位置に入力する。
B7[円],B8[.],B9[╳] | = | B0[…] | + | 07[き],08[く],09[け] |
EF[▼]〜FF[終] | = | E0[l] | + | 0F[そ]〜1F[ま] |
指定する乱数値については、特定の乱数調整ツールや以下のサイトにて検索可能。
・指定初期シードの各フレームの乱数値出力
http://2style.jp/bowline/ds/tool/random/rand2sta.html・指定個体の使用乱数値出力及び乱数値逆算
http://2style.jp/bowline/ds/tool/random/inverse.htmlスクリプトコード[もけぬうい]([もけぬ終い])で上記プログラムを実行し、その直後に乱数を使用するスクリプトを実行することで、そのスクリプトに使用される乱数値を特定のものにすることが出来る。
ただし、実際に使用される乱数値は、Emの場合ボックス名9で指定した乱数値seed[n]の[n+2]となるので、目的の乱数値をスクリプトに使用させるには目的の乱数値seed[n]の[n−2]の乱数値を指定する必要がある。
・任意ポケモンエンカウント
#スクリプト
ボックス名1:[あああああもけぬ]
ボックス名2:[い♀①①②③③ビ]
ボックス名3:[ゆぢあ]
種族①①、レベル②、持ち物③③のポケモンを任意の乱数値で個体生成し、その個体とエンカウントする。
種族の指定にイベント変数を利用出来ないので、使用出来ない文字コードを含む種族コードのポケモンとはエンカウント出来ない。
また、個体生成は現状メソッド1のみで、他のメソッドを使用することは出来ない。
<例>
#スクリプト
ボックス名2:[い♀ャ ト ビ]
①①=[ャ ]=0x0084:メタモン
②=[ト]=0x64:Lv100
③③=[ ]=0x0000:なし
#プログラム
ボックス名9:[にlLz ぬ ]
①②=[にl]=0xE016
③④=[Lz]=0xEEC6
❶❷=[ ぬ]=0x1700
❸❹=[ ]=0x0000
①②+❶❷=0xE016+0x1700=0xF716
③④+❸❹=0xEEC6+0x0000=0xEEC6
→指定乱数値:0xEEC6F716
→目標乱数値:0x91A90F70
上記の指定により、乱数値0x91A90F70により生成されるLv100素直6Vメタモンとエンカウントする。
<参考>
https://m.bulbapedia.bulbagarden.net/wiki/List_of_Pokémon_by_index_number_(Generation_III)
・任意ポケモンイベント入手
#スクリプト
ボックス名1:[あああああもけぬ]
ボックス名2:[い ル⑴⑴②⑶⑶]
種族⑴⑴、レベル②、持ち物⑶⑶のポケモンを任意の乱数値で個体生成し、その個体をイベント入手する。
種族や持ち物の指定にイベント変数を利用出来るので、使用出来ない文字コードを含む種族コードのポケモンでもc16[に]とc17[ぬ]の併用により指定することが出来る。
こちらも個体生成は現状メソッド1のみで可能。
また、イベント入手したポケモンはモンスターボール入りで固定となる。
<例>
#スクリプト
ボックス名1:[に ぞl ビ]
ボックス名2:[ぬ ぞひ もけぬ]
ボックス名3:[い ル ぞお ]
⑴⑴=[ ぞ]=0x4000:イベント変数0x4000
→イベント変数0x4000=[l ]+[ひ ]=0x00E0+0x001B=0x00FB:セレビィ
②=[お]=0x05:Lv5
⑶⑶=[ ]=0x0000:なし
#プログラム
ボックス名9:[Qトゅl と]
①②=[Qト]=0x64CB
③④=[ゅl]=0xE035
❶❷=[ ]=0x0000
❸❹=[ と]=0x1400
①②+❶❷=0x64CB+0x0000=0x64CB
③④+❸❹=0xE035+0x1400=0xF435
→指定乱数値:0xF43564CB
→目標乱数値:0xD07CF0AD
上記の指定により、乱数値0xD07CF0ADにより生成されるLv5臆病5VA7セレビィをイベント入手する。
<参考>
https://m.bulbapedia.bulbagarden.net/wiki/List_of_Pokémon_by_index_number_(Generation_III)
・フラグ付きポケモンエンカウント
#スクリプト
ボックス名1:[にえィ①① ビ]
ボックス名2:[におィ②② ビ]
ボックス名3:[にかィ③③もけぬ]
ボックス名4:[いゆkあゆがあ]
種族①①、レベル②②、持ち物③③のフラグ付きポケモンを任意の乱数値で個体生成し、その個体とエンカウントする。
種族の指定はイベント変数0x8004[えィ]で行うので、c17[ぬ]と併用することで使用出来ない文字コードを含む種族コードのポケモンも指定することが出来る。
因みに、Emに出現するフラグ付きポケモンは、孤島ラティ,ミュウ,デオキシス,ルギア,ホウオウの以上である。
<例>
#スクリプト
ボックス名1:[にえィビ ビ]
ボックス名2:[におィほ ビ]
ボックス名3:[にかィうあもけぬ]
ボックス名4:[いゆkあゆがあ]
①①=[ビ ]=0x0097:ミュウ
②②=[ほ ]=0x001E:Lv30
③③=[うあ]=0x0103:マッハ自転車
#プログラム
ボックス名9:[ゲィr♀ ]
①②=[ゲィ]=0x808A
③④=[r♀]=0xB6E6
❶❷=[ ]=0x0000
❸❹=[ ]=0x0000
①②+❶❷=0x808A+0x0000=0x808A
③④+❸❹=0xB6E6+0x0000=0xB6E6
→指定乱数値:0xB6E6808A
→目標乱数値:0x82B03804
上記の指定により、乱数値0x82B03804により生成されるLv30陽気5VC0ミュウ@マッハ自転車とエンカウントする。
戦闘BGMは自動でミュウ専用のものに切り替わる。
#スクリプト
ボックス名1:[にえィl ビ]
ボックス名2:[ぬえィは ビ]
ボックス名3:[におィば もけぬ]
ボックス名4:[いゆkあゆがあ]
①①=[l ]+[は ]=0x00E0+0x001A=0x00FA:ホウオウ
②②=[ば ]=0x0046:Lv70
③③=未指定=0x0000:なし
#プログラム
ボックス名9:[っニば6 ]
①②=[っニ]=0x6650
③④=[ば6]=0xA746
❶❷=[ ]=0x0000
❸❹=[ ]=0x0000
①②+❶❷=0x6650+0x0000=0x6650
③④+❸❹=0xA746+0x0000=0xA746
→指定乱数値:0xA7466650
→目標乱数値:0x3D8A923A
上記の指定により、乱数値0x3D8A923Aにより生成されるLv70意地っ張り5VC24ホウオウとエンカウントする。
戦闘BGMは自動でカントー伝説系のものに切り替わる。
<参考>
https://m.bulbapedia.bulbagarden.net/wiki/List_of_Pokémon_by_index_number_(Generation_III)
・徘徊ラティ個体生成
#スクリプト
ボックス名1:[にえィ①①もけぬ]
ボックス名2:[いゆりあ]
徘徊ラティを任意の乱数値で個体生成し、その個体情報を徘徊ポケモンデータに保存して、ラティを徘徊させる。
①①に0x0000[ ]を入力することでラティアス、0x0001[あ ]を入力することでラティオスが徘徊する。
こちらも個体生成はメソッド1で行われる。
<例>
#スクリプト
ボックス名1:[にえィあ もけぬ]
ボックス名2:[いゆりあ]
①①=[あ ]=0x0001:ラティオス
#プログラム
ボックス名9:[…ラR♂け ]
①②=[…ラ]=0x77B0
③④=[R♂]=0xB5CC
❶❷=[け ]=0x0009
❸❹=[ ]=0x0000
①②+❶❷=0x77B0+0x0009=0x77B9
③④+❸❹=0xB5CC+0x0000=0xB5CC
→指定乱数値:0xB5CC77B9
→目標乱数値:0x6F72E04B
上記の指定により、乱数値0x6F72E04Bにより生成されるLv40控えめ6Vラティオスが徘徊する。
個体情報は徘徊ポケモンデータに保存される。
・育て屋タマゴ受け取り
#スクリプト
ボックス名1:[あああああもけぬ]
ボックス名2:[いおリラゆく]
育て屋に預けたポケモンの進化系初期形態のタマゴを任意の乱数値で個体生成し、それを手持ちに加える。
事前に
育て屋タマゴ任意性格値指定コードを実行していれば、指定した性格値のタマゴが受け取れる(未指定だと性格値0x00000000(頑張り屋)のタマゴとなる)。
このコードでは、育て屋にメタモン+αと預けることで、伝説ポケやメタモン(α=メタモン)などのタマゴ未発見グループのタマゴも入手可能。
<例>
#プログラム
ボックス名9:[ュWソは ]
①②=[ュW]=0xD185
③④=[ソは]=0x1A5F
❶❷=[ ]=0x0000
❸❹=[ ]=0x0000
①②+❶❷=0xD185+0x0000=0xD185
③④+❸❹=0x1A5F+0x0000=0x1A5F
→指定乱数値:0x1A5FD185
→目標乱数値:0xBEFF6CF7
上記の指定により、乱数値0xBEFF6CF7(73781F)により生成される個体値31-後-後-31-先-31のポケモンのタマゴを入手する。
先親と後親の個体値の組み合わせにより、6Vや5VA0、めざ氷理想個体などに出来る。
【その他混合系】
スクリプトコードとプログラムコードをそれぞれ駆使して構成された任意コードの一覧である。
・手持ちポケモン野生出現
#スクリプト
#プログラム
ボックス名5:[けぶくべぇめさk]
ボックス名6:[アぃBFC]
ボックス名7-8:不問
ボックス名9:[tづいいクぢいい]
手持ち3匹目:出現させたいポケモン
手持ち3匹目のポケモンを野生ポケモンとして出現させる。
出現させる個体が自己産(親IDが一致)のポケモンであれば、RSのボール交換バグの要領で捕獲することが出来、捕獲したポケモンを元の個体とは別に入手出来る。
捕獲した個体はボールとTN(親性別含む)以外のデータは全て引き継がれる。
・手持ちポケモンデータ書き換え
・イベント変数0x8000参照
#スクリプト
ボックス名1:[に ィ①① ビ]
ボックス名2:[もけぬうい]
+
[ぬ ィ❶❶],[にあィ②②],[ぬあィ❷❷]
#プログラム
ボックス名5:[く0COおぅズば]
ボックス名6:[ア@む6ば]
ボックス名7-8:不問
ボックス名9:[クぢいいリメうい]
ボックス名10:[アアアヤ6かく]
手持ち3匹目:書き換えたいポケモン
・テキスト変数3参照
#スクリプト
ボックス名1:[Lいす ビ]
ボックス名2:[もけぬうい]
ボックス名14:[①②③④⑤⑥⑦⑧]
#プログラム
ボックス名5:[く0COおぅズば]
ボックス名6:[ア@む6ば]
ボックス名7-8:不問
ボックス名9:[クぢいいネふいい]
ボックス名10:[アアアヤ6かく]
手持ち3匹目:書き換えたいポケモン
・@の文字
一覧
[ ]:性格値(4バイト)※変更不可(ダメタマゴ化する)
[あ]:ID値(4バイト)※変更不可(ダメタマゴ化する)
[い]:NN(10バイト)
[う]:国籍(1バイト)
[え]:ダメタマゴフラグ(1ビット)
[お]:正規ポケモン判定フラグ(1ビット)
[か]:正規タマゴ判定フラグ(1ビット)
[き]:TN(7バイト)
[く]:マーキング(1バイト)
[け]:チェックサム(2バイト)
[こ]:不明(2バイト)
[さ]:種族(2バイト)
[し]:持ち物(2バイト)
[す]:技1(2バイト)
[せ]:技2(2バイト)
[そ]:技3(2バイト)
[た]:技4(2バイト)
[ち]:技1PP(1バイト)
[つ]:技2PP(1バイト)
[て]:技3PP(1バイト)
[と]:技4PP(1バイト)
[な]:追加PP(1バイト)
[に]:格好良さ(1バイト)
[ぬ]:美しさ(1バイト)
[ね]:可愛さ(1バイト)
[の]:経験値(4バイト)
[は]:HP努力値(1バイト)
[ひ]:攻撃努力値(1バイト)
[ふ]:防御努力値(1バイト)
[へ]:素早さ努力値(1バイト)
[ほ]:特攻努力値(1バイト)
[ま]:特防努力値(1バイト)
[み]:懐き度(1バイト)
[む]:賢さ(1バイト)
[め]:ポケルス(1バイト)
[も]:出会った場所(1バイト)
[や]:入手レベル(7ビット)
[ゆ]:出身バージョン(4ビット)
[よ]:ボール(4ビット)
[ら]:HP個体値(5ビット)
[り]:攻撃個体値(5ビット)
[る]:防御個体値(5ビット)
[れ]:素早さ個体値(5ビット)
[ろ]:特攻個体値(5ビット)
[わ]:特防個体値(5ビット)
[を]:タマゴフラグ(1ビット)
[ん]:特性(1ビット)
[ぁ]:逞しさ(1バイト)
[ぃ]:毛艶(1バイト)
[ぅ]:親性別(1ビット)
[ぇ]:クールリボン系統(3ビット)
[ぉ]:ビューティリボン系統(3ビット)
[ゃ]:キュートリボン系統(3ビット)
[ゅ]:ジーニアスリボン系統(3ビット)
[ょ]:パワフルリボン系統(3ビット)
[が]:状態異常(1バイト)
[ぎ]:レベル(1バイト)
[ぐ]:現在HP実数値(2バイト)
[げ]:最大HP実数値(2バイト)
[ご]:攻撃実数値(2バイト)
[ざ]:防御実数値(2バイト)
[じ]:素早さ実数値(2バイト)
[ず]:特攻実数値(2バイト)
[ぜ]:特防実数値(2バイト)
[ぞ]:所持メールID?
[だ]:種族グラフィックID?(2バイト)※変更不可
[ぢ]:総個体値(30ビット≒4バイト)
[づ]:チャンプリボン(1ビット)
[で]:ウイニングリボン(1ビット)
[ど]:ビクトリーリボン(1ビット)
[ば]:ブロマイドリボン(1ビット)
[び]:がんばリボン(1ビット)
[ぶ]:マリンリボン(1ビット)
[べ]:ランドリボン(1ビット)
[ぼ]:スカイリボン(1ビット)
[ぱ]:カントリーリボン(1ビット)
[ぴ]:ナショナルリボン(1ビット)
[ぷ]:アースリボン(1ビット)
[ぺ]:ワールドリボン(1ビット)
[ぽ]:不明
[っ]:イベントフラグ(1ビット)
[ア]〜[ク]:不明
@に入力した文字コードに従って、手持ち3匹目のポケモンの各種データを参照先で指定した任意の値に書き換える。
前者のコードの参照先はイベント変数0x8000[ ィ]であり、c16[に]により代入した2バイト以内の任意の値①①をセットする。
必要であればイベント変数0x8001[あィ]を併用して任意の値②②を代入し、①①と合わせて計4バイトまでの値を指定する。
使用出来ない文字コードの値を指定する方法は
育て屋タマゴ任意性格値指定にて記述した方法に同じ。
後者のコードの参照先はテキスト変数3であり、cC6[L]により代入したボックス名14の8バイト以内の任意の値①②③④⑤⑥⑦⑧をセットする。
こちらは使用出来ない文字コードの値に関しては指定することが出来ないが、8バイトまでの値に対応している為NN(8文字まで)やTN等の変更をする場合に役に立つ。
努力値や個体値、ボールや出身バージョン等の変更やリボンの付与などが可能であり、事実上どんなポケモンでも再現することが出来る。
ただし、性格値とID値については実質変更出来ないので、何かしらのポケモンを再現する場合は元にするポケモンの性格値だけは予め繕っておく必要がある。
尚、ID値については
親ID変更コードを使用することで変更が可能。
このコードによる各種リボンの書き換えについては別途
こちらに纏めている。
リボンは第3世代発祥であり、現行世代まで引き継がれる要素で、その入手可能個数の観点から第3世代のポケモンが最も優位に立てる分野であるので、是非活用されたい。
<参考>
https://wikiwiki.jp/pokemonhack/アセンブリ関数#r783400d
・親ID変更
#スクリプト
ボックス名1:[に ィ①① ビ]
ボックス名2:[にあィ②② ビ]
ボックス名3:[もけぬうい]
+
[ぬ ィ❶❶],[ぬあィ❷❷]
or
ボックス名1:[の ィげオ ビ]
ボックス名2:[のあィごオ ビ]
ボックス名3:[もけぬうい]
ボックス1/1番目:目的の親IDを持つポケモン
#プログラム
ボックス名5:[く0zOてネぃめ]
ボックス名6:[アぶネクぞ l]
ボックス名7:[カケばぞーっえげ]
ボックス名8:[アきWぱタせl]
ボックス名9:[クぢいいリメうい]
ボックス名10:[アzsヤぢいい]
手持ち3匹目:変更したいポケモン
手持ち3匹目のポケモンの親IDを、c16[に]により代入した①①の表ID、②②の裏IDに変更する。
使用出来ない文字コードの値を指定する方法は
育て屋タマゴ任意性格値指定にて記述した方法に同じ。
また、c19[の]による後者のコードでは、ボックス1の1番目に置いたポケモンの親IDと全く同じIDをコピー出来る。
手持ちポケモンデータ書き換えコードによるID値変更では、暗号化データの更新が行われず対象のポケモンがダメタマゴ化してしまう為に実質的に変更出来なかったが、このコードでは暗号化データの再マスキングも正常に行うのでダメタマゴ化を回避してのID値の書き換えが可能となっている。
また、性格値の書き換えは起こらないので性別や性格、その他48バイトデータ等は元のポケモンから変化しない。
このコードの応用で、親IDを対象のポケモンの性格値からコピーすることで色違いの条件を満たし、どんなポケモンでも強制的に色違いに変化させる
強制色違い化コードがある。
また、このコードのボックス名9の[クぢいい]の部分を[エぢいい]に変更すれば、親IDではなく性格値の書き換えが可能となる(無論ブロック配列パターンを考慮しなければ真面に使い熟すことは出来ない)。
<例>
#スクリプト
ボックス名1:[に ィぱぺ ビ]
ボックス名2:[にあィ ビ]
①①=[ぱぺ]=0x4E4B:表ID20043
②②=[ ]=0x0000:裏ID00000
表IDと裏IDの両方に使用出来ない文字コードを含む値を指定する場合、まずは各イベント変数へ目的の値を代入するスクリプトコードのみの実行をし、その後速やかにボックス名1への[もけぬうい]の入力及び親ID変更コードのプログラムコードの実行を行う。
・セーブデータ複製
#スクリプト
ボックス名1:[ぉ ビ]
ボックス名2:[もけぬうい]
#プログラム
ボックス名5:[くぱはギベうのィ]
ボックス名6:[アうぶあぐ l]
ボックス名7:[あタあネきWVb]
ボックス名8:[いはィミび]
ボックス名9:[ い えzs]
※[ベ]は片仮名
このコードを実行したロムのセーブデータを他のロムに複製する。
セーブデータ複製の詳細については下記の考案者であるぼんじりさんのブログを参照していただきたい。
<参考>
https://bzl.hatenablog.com/entry/2019/07/20/025151
・実機バイナリエディタ起動
#スクリプト
ボックス名1:[あああああもけぬ]
ボックス名2:[いりぃ もむV]
ボックス名3:[いら]
#プログラム
ボックス名5:[げッャむけいぞは]
ボックス名6:[アけべほめ l]
ボックス名7:[つあさkぃBFC]
ボックス名8-9:不問
ボックス名10:[アアアみVうい]
ぼんじりさん考案のEm用実機バイナリエディタを汎用コードを使用して起動する。
実機バイナリエディタの詳細については下記の考案者であるぼんじりさんのブログを参照していただきたい。
<参考>
https://bzl.hatenablog.com/entry/2019/09/29/182642
スポンサーサイト