> ### ■ ランダムワープ式改造マリオ・製作支援パッチ

> > ★ はじめに
> > スーパーマリオはご存知の通り、1-1からスタートしてゴールを目指すゲームです。従って、必然的に「1-1」を一番たくさんプレーすることになり、後半の面に行くにつれてその回数は減っていきます。さらに、土管などへ入ったあとのワープ先はプログラム上で最初から決められており、その点に関して自由度はありません。
> > 無論、これはこれで何の問題もないのですが、数人でリレーマリオを合作・改造するような場合、担当ワールドによって不平等が生じますし、なにより、自分で自分の作ったマリオをプレーする時に、進む先がどうなっているか全部分かっているのでまったく新鮮味がありません。これはそれを解決するためのパッチです。
> > ただし「パッチ」と銘打ってあるものの、基本的に汎用性はないものと考えて下さい。要するに、作りかけの改造マリオやすでに完成済みの作品に、あとからこのパッチをあて直したりは出来ないということです。また、内部プログラム自体をかなり書き換えているので、純粋なROMイメージ (40,976Byte) にパッチをあてないと、予期せぬバグや誤作動の原因となります。バグのサポートまでは出来ませんのであしからず……
> > ★ 製作支援パッチ (2003/11/8 β版) のダウンロード
> > IPS差分ファイルと説明書 (このページのindex.html) が入っています。
> > ★ 主な特徴
> > ・ 土管に入ると、21個のステージのいずれかにランダムでワープする。
> > ・ 即死天井 & 即死床 (トゲ) が使える。
> > ・ コインの獲得枚数によって最終ステージの分岐設定ができる。
> > ・ グラフィックは「スーパーマリオ2」と「旧・神風マリオ」のものを流用。
> > ・ すべての地形・敵オブジェクトを整理フォーマット済み。
> > この他、「毒キノコ」や「ルイージゲーム」がデフォルトで使用可能となっていますが、いずれも
> > わいわいの巣 にて単体の汎用パッチが配布されています。
> > ★ 正常動作のための条件 【重要】
> > ・ ステージ上のどこかに敵オブジェクトキラー (プクプク) 連続を必ず 1つ以上
> > 設置すること。 ※ 注1
> > ・ SMB Utilityなどのツールでステージの属性 (城・地下・地上・海) を絶対に
> > 変更しないこと。
> > ・ ステージ上に地形オブジェクト城を置かないこと。 ※ 注2
> > ・ ステージ上に地形オブジェクトポール (旗) を置かないこと。
> > ・ 即死天井 & 即死床 (トゲ) は、地下 + 橙色のアスレチック面でのみ使用する
> > こと。また、このステージではコインは設置できない。 ※ 注3
> > ※ 注1 …… ランダムワープの改造プログラムを起動させるための目印。キラー自体は出ない。
> > ※ 注2 …… 例外として、0ページ目に 1つだけ「飾り」として設置することは可能。
> > ※ 注3 …… 10コインや、?ブロック・隠しブロックの1枚コインなどは設置可能。
> > ★ 補足
> > ゲーム自体は1-1で終わりです。ピーチエンディング (?) を見るためには、ステージNo,22 (63H) で斧を取る必要があります。それ以外のステージで斧を取った場合、再び1-1の最初に戻されます。
> > 最終ステージのクリアフラグチェックは、バイナリエディタのアドレスで、
> > 0x00438h 63h
> > 0x0047Ah 63h
> > でやっており、変更は可能ですが、今回のようなケースでは変える意味がないと思います (他の部分も辻褄合わせで修正しないといけないので手間も増える)
> > ステージNo,22へ行くためには、ランダム土管に入る前に特定枚数のコインを獲得しておかなければなりません。デフォルトでは「11・33・55・77・99」の奇数のゾロ目の時、約1/7の確率でステージNo,22へワープするように設定してあります。
> > 具体的なアドレスは、
> > 0x05302h 63h (99)
> > 0x05306h 4Dh (77)
> > 0x0530Ah 37h (55)
> > 0x0530Eh 21h (33)
> > 0x05312h 0Bh (11)
> > となっていますので、数値を変更してやれば別の枚数に設定することもできます。
> > (例 : 63h(99) 62h(98) 61h(97) 60h(96) 5Fh(95) で95枚以上の時にワープ)
> > なお、獲得コインはマリオ (ルイージ) が死亡するごとに 0にリセットされます。
> > 海面からはランダムワープすることができません。連続キラーを設置すると横泳ぎの連続プクプクが出てしまうからです。ランダムワープで行ける21個のステージの中に海面はありませんが、ボーナスステージなどに海面を使いたいという場合は、海から一度「ルーム間移動命令」で地上・地下・城のどこかへ移動させ、そこから改めてランダムワープするようにして下さい。
> > 「ルーム間移動命令」を使用する場合、注意しなければならないことがあります。それは移動先のページ指定です。ランダムワープは、移動先のルームナンバーに直接乱数を叩き込んでいるだけなので、移動先のページ指定まではできません。従って、ワープ後は常に 0ページ目に移動します。ところが、「ルーム間移動命令」で 0ページ以外、たとえば 3ページ目に指定したとすると、以後ランダムワープを行うたびに各ステージの 3ページ目に移動してしまいます。ややこしいので、「ルーム間移動命令」でも 0ページに統一しておくといいと思います。
> > ランダムワープ自体は、「入れる土管」「横から入る土管」「逆L字土管」「長い逆L字土管」「豆の木」のいずれの手段でも可能です。ただ、マリオの出現パターンによっては、見た目に美しくない状況もありますので、オリジナルマップを作る際はそのあたりを考慮した方がよいでしょう。特に豆の木を使った場合、出現地点に横位置 3・縦位置 9の土管があるとフリーズしてゲームが進まなくなるので要注意です。いちいち考えるのが面倒な人は、最初から「横から入る土管」「逆L字土管」「長い逆L字土管」の 3種類だけを使うようにしておけば問題ありません。
> > ランダムワープで行くことのできる21個のステージは、以下のアドレスでルームナンバーが管理されています。
> > 0x07C0Ah 21h (01)
> > 0x07C16h 23h (02)
> > 0x07C22h 24h (03)
> > 0x07C2Eh 25h (04)
> > 0x07C3Ah 26h (05)
> > 0x07C46h 27h (06)
> > 0x07C52h 28h (07)
> > 0x07C5Eh 2Ah (08)
> > 0x07C6Ah 2Ch (09)
> > 0x07C76h 2Dh (10)
> > 0x07C82h 30h (11)
> > 0x07C8Eh 31h (12)
> > 0x07C9Ah 40h (13)
> > 0x07CA6h 41h (14)
> > 0x07CB2h 42h (15)
> > 0x07CBEh 43h (16)
> > 0x07CCAh 44h (17)
> > 0x07CD6h 45h (18)
> > 0x07CE5h 60h (19) …… 特定枚数のコイン獲得で 63h (22) に変換
> > 0x07CF1h 61h (20) …… 特定枚数のコイン獲得で 63h (22) に変換
> > 0x07CF9h 62h (21) …… 特定枚数のコイン獲得で 63h (22) に変換
> > 21個もステージが必要ない場合や、ワープ先の確率に偏りを持たせたい場合などは、ここの数値を書き換えて下さい。単純に同じ値にすれば、出現確率は倍になります。
> > なお、応用事例として、この部分のプログラムではjmp命令先をすべて個別に設定しているので (デフォルトではすべて同じアドレスになっているが)、ステージごとに何らかのイベントを起こすことも可能です。もちろん、それらのイベントはすべてアセンブラソースで書く必要がありますが……
> > 即死天井 & 即死床 (トゲ) は、前述どおり、地下 + 橙色のアスレチック面でしか使えません (デフォルトで地下面はすべて橙色のアスレチック面に設定してあります)
> > それぞれのオブジェクト対象は、
> > に指定変更してあります。このうち、右向きのトゲ (横から入る土管) だけは長さ 3で固定です。特に不便はないと思います。どうしてもという場合、右向きトゲのオブジェクトは「1B」なので、なにか不要な地形オブジェクト (レンガキノコなど) を変更すれば長さ 1単位で編集できます。
> > ★ おまけ
> > このパッチを使った製作事例として、簡単な改造品を公開しておきます。
> > 主に「スーパーマリオ1」「2」「VSマリオ」からの移植マップです (一部オリジナル)
> > ★ SMBメドレー (2003/11/8 正規版) のダウンロード

> 2003.11.8 公開

> ###
> 戻る