ポケモン第三世代には通常プレイでは付与できない大会限定のリボンや

そもそも没になった幻のリボンがデータ上存在するのですが

せっかくのポケハック環境ですからこれを付与出来たらすごく素敵だなーと思ってまして。

 

しかしスクリプトとしては方法が見つかっておらず現時点で判明してるのは

任意コード実行を使用した方法となっております。

↓参考サイト

Em任意コード実行によるリボンの付与【手持ち書き換えコード】 - 哀しき獣の村

 

で、このボックス名を利用する方法なのですが

文字コードを解析したところ16スクリプトによる変数書き込みと23スクリプトによるアセンブリコード起動でもって

実現していたみたいなのでこれを適切な場所に配置すればポケハック環境で実行できるのでは・・・?

と思って試してみたのですが上手くいかず。どうしたものかと困っていたところ

ころさんがアセンブリコードを書いてくださいました。

元々FRのデータアドレスを元に書いてくださったのですがFRではリボンを確認する手段が存在しないので

EMにおける該当データのアドレスをうちがなんとか見つけてリファインしました。

アセンブリ書けないけど数値探すのは得意分野です・・・!

後はこのasmをthumb.datに放り込みましてバイナリデータ化したものがこちらです。

 

・手持ち1匹目に特殊リボンを付与するアセンブリ

※アセンブリは4の倍数のアドレス(下1ケタが0 4 8 C)に配置しないと大変なことになります

80 B5 04 48 48 21 04 4A 04 4F 00 F0 01 F8 80 BD 38 47 00 00 90 41 02 02 78 72 03 02 75 A7 06 08

 

でもってこちらのアセンブリを起動する簡単なスクリプトがこちら。

・フラグ8000に0001(リボン付与)を書き込みアドレス@@@@@@に配置したアセンブリを起動

※アセンブリは4の倍数のアドレス(下1ケタが0 4 8 C)に配置しないと大変なことになります

16 00 80 01 00 23 @@+1 @@ @@ 08
 

こちらのアセンブリコードを実行すると手持ちの1匹目に特殊リボンが付与されます。

元のアセンブリがフラグ8000を参照して付与or剥奪を決めてたので

16 00 80 01 00で先にフラグに書き込みしてから23スクリプトでアセンブリを起動する形となります。

ちなみに赤字部分が該当する特殊リボンを決めてる部分となります。

48:マリンリボン(没リボン)

49:ランドリボン(没リボン)

50:スカイリボン(没リボン)

51:カントリーリボン(2004年・2005年・2007年のポケモンフェスタ内で開催された全国地区大会「ポケモンリーグ」の優勝者の使用ポケモンのみに付与)

52:ナショナルリボン(ポケモンコロシアム、ポケモンXDでリライブしたポケモンに付与)

53:アースリボン(ポケモンコロシアム、ポケモンXDでシナリオモードのバトル山をブース1から100まで受付に戻らず、パソコンで手持ちポケモンを入れ替えずにクリアすると手持ちのポケモン全てに付与。)

54:ワールドリボン(2004年・2005年の全国大会「ポケモンリーグ」で日本一になった者の使用ポケモンのみに付与)

以上7つのリボンを付与できます。一気に付与したい場合はアセンブリを7個貼って23スクリプトを7連続発動させましょう。

ちなみにこの状態で付与した特殊リボンは説明文が表示されず、他に説明文のあるリボンがあればその説明文が表示、なければ何も表示されないです。

ポケモンコロシアム経由のナショナルリボンとかは

すべての こんなんを のりこえた きねんリボン

みたいな説明文が表示されるのですが

この辺はイベント変数4F06〜4F09にて設定されていますので

16スクリプトで書き換える必要があります。

※当該リボンを取得前に書き換えても反映されないのでリボンを付与してから書き換えましょう

・特殊リボンの説明文設定

16 06 4F @1 @2 @1マリンリボン、@2ランドリボン

16 07 4F @3 @4 @3スカイリボン、@4カントリーリボン

16 08 4F @5 @6 @5ナショナルリボン(本家2C)、@6アースリボン(本家2D)

16 06 4F @7 00 @7ワールドリボン

@1~@7の数値(説明文)

[01]:2003年 地方 大会 優勝 記念リボン
[02]:2003年 全国 大会 優勝 記念リボン
[03]:2003年 ワールドカップ 優勝 記念リボン
[04]:2003年 地方 大会 準優勝 記念リボン
[05]:2003年 全国 大会 準優勝 記念リボン
[06]:2003年 ワールドカップ 準優勝 記念リボン
[07]:2003年 地方 大会 ベスト4 記念リボン
[08]:2003年 全国 大会 ベスト4 記念リボン
[09]:2003年 ワールドカップ ベスト4 記念リボン
[0A]:2004年 地方 大会 優勝 記念リボン
[0B]:2004年 全国 大会 優勝 記念リボン
[0C]:2004年 ワールドカップ 優勝 記念リボン
[0D]:2004年 地方 大会 準優勝 記念リボン
[0E]:2004年 全国 大会 準優勝 記念リボン
[0F]:2004年 ワールドカップ 準優勝 記念リボン
[10]:2004年 地方 大会 ベスト4 記念リボン
[11]:2004年 全国 大会 ベスト4 記念リボン
[12]:2004年 ワールドカップ ベスト4 記念リボン
[13]:2005年 地方 大会 優勝 記念リボン
[14]:2005年 全国 大会 優勝 記念リボン
[15]:2005年 ワールドカップ 優勝 記念リボン
[16]:2005年 地方 大会 準優勝 記念リボン
[17]:2005年 全国 大会 準優勝 記念リボン
[18]:2005年 ワールドカップ 準優勝 記念リボン
[19]:2005年 地方 大会 ベスト4 記念リボン
[1A]:2005年 全国 大会 ベスト4 記念リボン
[1B]:2005年 ワールドカップ ベスト4 記念リボン
[1C]:ポケモン バトル カップ 優勝 記念リボン
[1D]:ポケモン バトル カップ 準優勝 記念リボン
[1E]:ポケモン バトル カップ ベスト4 記念リボン
[1F]:ポケモン バトル カップ 参加 記念リボン
[20]:ポケモン リーグ 優勝 記念リボン
[21]:ポケモン リーグ 準優勝 記念リボン
[22]:ポケモン リーグ ベスト4 記念リボン
[23]:ポケモン リーグ 参加 記念リボン
[24]:アドバンス カップ 優勝 記念リボン
[25]:アドバンス カップ 準優勝 記念リボン
[26]:アドバンス カップ ベスト4 記念リボン
[27]:アドバンス カップ 参加 記念リボン
[28]:ポケモンの 大会に 参加した 記念リボン
[29]:ポケモンの イベントに 参加した 記念リボン
[2A]:ポケモンの お祭りに 参加した 記念リボン
[2B]:困難に 打ち勝った 記念リボン
[2C]:全ての 困難を 乗り越えた 記念リボン
[2D]:100人抜き 達成 記念リボン
[2E]:暗闇の塔 クリア 記念リボン
[2F]:紅の塔 クリア 記念リボン
[30]:鉄の塔 クリア 記念リボン
[31]:最後の塔 クリア 記念リボン
[32]:伝説を 作った 記念リボン
[33]:ポケモンセンタートウキョー 記念リボン
[34]:ポケモンセンターオーサカ 記念リボン
[35]:ポケモンセンターナゴヤ 記念リボン
[36]:ポケモンセンターニューヨーク 記念リボン
[37]:夏休み 記念リボン
[38]:冬休み 記念リボン
[39]:春休み 記念リボン
[3A]:クリスマス 記念リボン
[3B]:記念日 記念リボン
[3C]:頑張った 記念の リボン
[3D]:友達 いっぱい 記念リボン
[3E]:元気 いっぱい 記念リボン
[3F]:大好きな ポケモンに 付けてあげる 記念リボン
[40]:ポケモンが 大好きな ことを 証明する リボン

と、こんな感じでちゃんと説明文が表示されます。参加してない大会の優勝記録が捏造されました。

ちなみにうち的に面白い説明文が「〇〇の塔クリア記念リボン」系ですね。

くらやみ、くれない、くろがね、さいごの4つの塔が存在しクリアすることで付与されそうですが

当然ながら第三世代にそのようなダンジョンは存在しませんし実装もされませんでした。

モチーフになってそうなポケモンもいなさそうな名前ですしいったいどんなイベントを作る気だったのか不思議でなりませんね。

 

ということでこのアセンブリを使えば

追加ダンジョンとか裏ボスを撃破した時にご褒美リボン付与みたいなイベントが組めそうです。

特別なリボン付与ってなんか素敵な気持ちになりますし是非皆様も実装してみてはいかがでしょうか。

そして改めましてアセンブリを書いてくださったころさんにBIG感謝をささげます。

ではではー