「スーパーマリオワールド」のセーブ領域を利用してカスタムコードを実行できる方法が見つかる

「スーパーマリオワールド」にはプレイデータを3つセーブすることができますが、この領域を利用して、セーブデータを読み込むだけで自作のカスタムコードが実行可能になるという方法があることがわかりました。この方法だと、カートリッジやスーパーファミコン本体に手を加える必要はありません。
Jailbreaking Super Mario World to Install a Hex Editor & Mod Loader - YouTube

方法を報告するセス・ブリング氏。ただ、見つけたのはCooper Harasyn氏だとのこと。

スーパーマリオワールドのカートリッジ内には、ゲーム自体のデータが入っているROMとデータを保存するための領域があります。ROMは「Read Only Memory」の略であり、文字通り読み出し専用ですが、データ保存領域は書き込みをすることが可能。そこでHarasyn氏は、この領域に自分の作ったデータを書き込みました。

このカートリッジをスーパーファミコンに挿して起動。

そして「MARIO C」のデータを読み込むと……

画面が一度切り替わり、画面の真ん中あたりまで数字とアルファベットの羅列が出現。これはヘックスエディタ。

表示されている文字は16進数の「0」から「F」で、それぞれ2進数の「0000」から「1111」に対応しています。

たとえば、上の赤い矢印が指す2ケタの数字はマリオの状態を意味します。

「02」はマントマリオ

「03」はファイアーマリオ、というように切り替わります。

また、この部分にはクリアフラグがあり……

「01」に書き換えると、まだステージの途中なのにクリアしたことになりました。


ちなみに、表示されている文字のうち、前半のこの部分はインストーラーで……

この部分がヘックスエディタだとのこと。

セーブ領域を利用すれば、独自の「改造」内容を適用することもできます。

ファイアバーをまるでムチのように使いこなすマリオ

オブジェクトを持ち上げることができ、それを使って敵を倒すこともできます。

敵すらも持ち上げられます。

ジャンプしながら空中にヨッシーを引き上げるマリオ

マウスも利用でき……

クリックした敵をどこかへぽいっと捨てたりできます。

本来は固定されているブロックすらも動かしてしまうマリオ。

こうしたことを、カートリッジも本体も改造することなく行える、というのが大きなポイントだとのことです。

「ジェイルブレイク」状態のマリオをプレイするブリング氏。発売からすでに27年が経過したゲームですが、なおもカートリッジに可能性が秘められていたとは思いませんでした。

・関連記事
スーパーマリオワールドを2分36秒でクリア、完全に人間業の領域を突破 - GIGAZINE
スーパーマリオワールドをクッパを倒さず謎のミニゲーム経由で爆速クリア - GIGAZINE
何度やってもマリオの幻の「-1面」に突入できない女性が力業で再現 - GIGAZINE
・関連コンテンツ
You can read the machine translated English article You can find a way to execute custom cod….