目次
OW Sprite Toolとは
OWに置けるスプライトを、カスタムスプライトに上書きできます。
ダウンロード
作者のCarol氏のサイトでダウンできます。
さっそく挿入してみよう!
下準備
必要なもの
- ROM(不正ROM以外なら何でもいいようです)
- ActivePerl 実際無くてもいいようですが、プログラムを高速に動作させるのには必要。 ここからダウンできます。
使い方
ここでは例として「触れるとセーブポイントがでるスプライト」を挿入しましょう。
-
まずはリストファイルを書きましょう。
0 savepoint.asm 1111111 0 ***.asm 1001110 -
表
0 ジュゲム 1 青い鳥 2 プクプク 3 パックンフラワー 4 動く雲 5 コクッパ 6 煙 7 クッパ城の看板 8 クッパ 9 テレサ
真ん中のファイル名は挿入するスプライトのファイル名です。
最後の数字の列は、各マップの使用の有効と無効です。 左から順に、全体マップ、ヨースター島、バニラドーム、迷いの森、クッパの谷、スペシャルゾーン、スターロードの数字で、0なら無効、1なら有効です。
表 全 ヨ バ 迷 ク ス ス 体 ー ニ い ッ ぺ タ マ ス ラ の パ シ ー ッ タ ド 森 の ャ ロ プ ー ー 谷 ル ー 島 ム ゾ ド ー ン 数字 0 0 0 0 0 0 0 0 savepoint.asm 0001000 -
挿入!
リストファイルとROMをOWspritetool.plかOWspritetool.exeと同じフォルダに置きます。 挿入には、OWspritetool.plかOWspritetool.exeを使用します。 ActivePerlをインストールした人はOWspritetool.plで起動できます。無い人はOWspritetool.exeで起動できますが若干こちらの方が起動が遅いです。
今日はここまで。
readme.docが読めない!
開けない環境の方に、のっけときました。 ()のところには、図がのるべきところと、その内容を示しています。 説明が適当ですw
OW Sprite Tool ver. 1.00 1. 内容 ・OWspritetool.pl、OWspritetool.exe プログラム本体です。どちらも実質同じ物なのですが、OWspritetool.plの方はPerl環境をインストールする必要があります。 下のActivePerlを入れればOKです。 http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.822-MSWin32-x86-280952.msi OWspritetool.exeの方はPerl環境でなくても動作します。しかしながら、 OWspritetool.plをexeファイルにしたもので、起動が若干遅いです。実行速度は同じです。好きな方を使ってください。 2. 使い方 ROM及びリストファイルをOWspritetool.plあるいはOWspritetool.exeと同じフォルダにおき、OWspriteフォルダの中にカスタムスプライトのソースを入れて、プログラ ムを実行して下さい。ROMファイル名、続いてリストファイル名が尋ねられるので入力して下さい。あるいは、C:\>OWspritetool ROM.smc list.txtの様に入力して起動して下さい。 リストファイルは以下の様に記述します。 0 a.asm 1000000 1 b.asm 1111111 4 c.asm 0010000 初めの数字は書き換え元のスプライトを意味します。Lunar Magicのスプライト設定のプルダウンメニューに表示される順になっていて、 0 ジュゲム 1 青い鳥 2 プクプク 3 パックンフラワー 4 動く雲 5 コクッパ 6 煙 7 クッパ城看板 8 クッパ 9 テレサ に対応しています。 2つめにはカスタムスプライトのasmファイルを指定し、3つめでそのスプライトが有効なマップを7桁の2進数で指定します。左から順に、全体マップ、ヨースター島、バニラドーム、迷いの森、クッパの谷、スペシャルゾーン、スターロードに対応していて、1でスプライトがそのマップで有効に、0で無効になります。 例の1行目の場合、ジュゲムをa.asmのスプライトに書き換え、有効範囲を全体マップのみにしています。 3. OWのスプライト用ExGFXの設定の仕方 ROMをバイナリエディタで開いて、PCアドレス0x2B07の箇所を見て下さい。 10 0F 1C 1Dと並んでいます。順にSP1~SP4に対応しています。この数字を80~FFに書き換えれば、それに対応したExGFXが使えます。100番以降は使えないので気をつけて下さい。 標準のスプライトで使われているのは、SP1の大部分とSP2の!ブロックの箇所だけです。サンプルスプライト用のGFXタイルはSP2向けなので、0Fの所を書き換えて下さい。 なお、変更する前にLunar MagicのOWエディタを開いていて、それを保存するとこの箇所も上書きされて戻ってしまうので気をつけて下さい。 4.Lunar Magicでのカスタムスプライトの配置の仕方 ここが一番難しいところです。 OWでのオリジナルスプライトの配置方法を知っている事が前提です。Lunar Magicは、オリジナルのスプライトが配置しやすいインターフェースになっているので、逆にカスタムスプライトの位置を指定するのは難しくなっています。 ・書き換え元がジュゲム、青い鳥、パックンフラワー、動く雲、お化けの場合 Lunar Magicで見ると、全体マップとサブマップはひと続きになっているように見えます。しかしながら実際は完全に独立しています。そしてそれぞれで同じ座標空間を用いています。 (鬼畜王の全体マップとサブマップ画像) ジュゲム、青い鳥、パックンフラワー、動く雲の場合は、Lunar Magicでは全体マップ上にしか配置できません。しかしながら座標は共通ですので、例えば全体マップの左側真ん中あたり に配置した場合はサブマップ側のバニラドームにも同じスプライトが存在し、右上あたりに配置したスプライトはクッパの谷にも存在します。同じスプライトが両方に現れている訳なので、全体マップ側でスプライトが移動したり消えたりしたら、サブマップ側でも同じ事が起きているわけです。 全体マップのみに配置したい場合は、リストファイルの7桁の数字を1000000とすればサブマップ側には出現しません。逆にサブマップ側のみに配置したい場合、例えばクッパの谷に配置したい場合、全体マップの右上の対応する箇所に設置し、0000100とすれば、クッパの谷でのみスプライトが動作します。 マリオから離れていても効果を与えるようなスプライトの場合、例えばサブマップでのみ効果を与えたければ、適当な場所に配置し、0111111とすればサブマップどこにいても効果が出るし、スターロードでのみ効果が得たければ、0000001とすれば良いわけです。 なお、お化けの場合は全体マップの方のお化けがスプライト座標の元となり、サブマップの方のお化けは幾ら動かしても無意味です。 ・書き換え元がクッパ城の看板、クッパの場合 丁度逆のパターンです。これらのスプライトはサブマップにしか配置できません。全体マップに配置したい場合は、サブマップの対応する箇所に配置し、1000000などとして下さい。 ・書き換え元がプクプク、コクッパ、煙の場合 一番問題となるパターンです。Lunar Magicではこれらのスプライトを挿入すると、2つ、ないしは3つのグラフィックが表示されます。しかしながら、このどれを動かしても実際の座標は 変化しません。 そこで一旦パックンフラワーなどの分かり易いスプライトを挿入し、位置を決定します。その後に挿入スプライトをプクプクなどに変更して下さい。 (パックンフラワーをセット)(それを設置)(ぷくぷく*3に上書き) ・全体マップとサブマップの位置対応が分かりにくい時 書き換え元がパックンフラワーなどのスプライトをサブマップに配置したい…あるいは、書き換え元がクッパなどのスプライトを全体マップで使いたい… そういったときに目的の場所にキチンと配置するのはかなりの手間となります。そこで上と同じ方法で、前者の場合はまずクッパなどを挿入して配置してから元のスプライトに戻す、後者の場合はパックンフラワーなどを挿入してから元のスプライトに戻せば、簡単に正しい位置に設置できます。 5.注意点 ・動く雲について OWに配置されるスプライトは、Lunar Magicのスプライトリストで表示される分が全てではありません。デフォルトで動く雲が3体挿入されます。これらは消せません。 従って、動く雲を書き換える場合は注意が必要です。これらデフォルト分の座標は画面外はるか下方ですので、グラフィックを描画するだけか、マリオと触れることで反応するカスタムスプライトに書き換えるのであれば、無視できます。 しかしながら、マリオの座標を動かすなど、常に効果を発揮し続けるスプライトの場合は気をつけなければいけません。Lunar Magic上に表示されている以外に、3体分のスプライトの重複効果を考慮してください。 逆に、重複しても問題ない効果ならこのデフォルトの雲を使えばいいので、スプライトリストに空きが出来るというメリットもあります。 ・オープニングに変なスプライトが表示される時は オリジナルのスプライトでも起こりうるSMWの仕様です。原因はスプライトリストの最後の3つに挿入されたスプライトです。この最後の3つが全体マップで有効な場合、オープニングの初めに一定時間動作します。これには当然グラフィック描画処理も含まれます。 (スプライトリスト編集のスクショのABCに赤枠) オリジナルのスプライトでも起こりうるSMWの仕様です。原因はスプライトリストの最後の3つに挿入されたスプライトです。この最後の3つが全体マップで有効な場合、オープニングの初めに一定時間動作します。これには当然グラフィック描画処理も含まれます。 全体マップの赤枠箇所の位置にグラフィックを描画するスプライトが含まれている場合、オープニング画面でも描画されてしまいます。 (全体マップの画像がある。赤枠は左側の縦の真ん中よりちょい下に画面の表示される大きさ。) テレサ程度の大きさなら余り気になりませんが、巨大なグラフィックをこの位置に描画するスプライトは、リストの終わり3つ以外に入れた方が良いでしょう。また、音楽を変えたりマリオを操作したりするコマンド系スプライトは、当然この赤枠の中になくてもオープニング中に効果が出てしまいますので、絶対に終わり3つには入れないで下さい。ただしサブマップにしか効果が出ないスプライトは全く問題ありません。 ROMをいじれば、オープニング中にスプライトを呼び出すことを阻止できますが、その場合はオリジナルのテレサがサブマップで正常に動作しなくなってしまいます。 6.サンプルスプライトについて ・マリオブラザーズ3の戦車 ファイル:tank.asm 説明:必ずコースタイル上に設置して下さい。 マリオが触れると強制的にそのステージがスタートします。ステージをクリアするとスプライトは消滅します。 ソース内のオプションで、ステージミス時の動作を選択できます。ゲームオーバーかクリアするまで強制的にそのステージを連続でやらせるか、タイルの鍵ゴール時の移動方向で設定された方角へ追い返すか、です。後者の場合は分岐ステージに設置しない方が良いです。 既知のバグ:2人プレー時で、かつオプションでミス時に追い返す設定をした場合、 ミスした方のプレイヤーでなく、もう一方が移動させられてしまいます。 ・マリオブラザーズ3の手 ファイル:hand.asm 説明:必ずコースタイル上に設置して下さい。 マリオが触れると50%の確率でアニメーションの後に強制的にそのステージがスタートします。ステージをクリアするとスプライトは消滅します。 既知のバグ:2人プレー時で、かつ両プレイヤーがこのスプライトが配置されている同じタイル上に居り、その状態で一方がそのステージで残機が無くなってゲームオーバーになった場合、画面にモザイクがかかった状態になってしまいます。 ・マリオブラザーズ3の魔法の笛 ファイル:tornado.asm 説明:コマンド型です。OW上でLボタンを押すと、竜巻が現れ特定の場所に ワープさせます。ワープ先は、土管/ワープスターの移動先として登録されている必要があります。そしてソース内で、そこへの移動元の番号を設定します。 オプションで特定のイベント番号成立後にのみ効果が出るようにできます。 ・高速移動 ファイル:fast.asm 説明:コマンド型です。OW上でのマリオの移動速度を、ヨッシーの有り・無し 別に設定できます。速度は1倍速~256倍速の間で設定できます。 ・スーパードンキーコング2の矢印 ファイル:navi.asm 説明:コマンド型です。現在マリオが移動できる方向へ矢印が表示されます。 Lunar Magic上で表示されない、いわゆるステルスルートにも対応しています。 既知のバグ:土管の上では矢印が表示されません。 これは単にソースを書いているときに土管の存在を忘れていただけです。 ・ファイナルファンタジー6のセーブポイント ファイル:savepoint.asm 説明:触れるとセーブウインドウが表示されます。 オプションで特定のイベント番号成立後にのみ効果が出るようにできます。 ・ファイナルファンタジー5の飛空艇 ファイル:airship.asm 説明:全体マップ上で飛空艇と重なった状態でRボタンを押すと飛び立ち、 全体マップ上を自在に飛び回れます。もう一度Rボタンを押すと着地します。 オプションで特定のイベント番号成立後にのみ出現するようにできます。 また、飛行時の音楽や、着地可能タイルの設定もできます。着地可能タイルは、 1. 未出現ワープスターのみ着陸不可能 2. 加えて未出現コースも着陸不可能 3. さらに加えて土管、何もないタイル、城、クッパ城にも着陸不可能 の3種類から選択できます。3つ目は、先のステージまでワープできないようにするためです。従ってこの目的の場合、初めから出現している砦やお化け屋敷でなく、イベントで出現するものを使った方が良いと思います。 また、出現後のセーブデータロード時の設定も選択できます。ゲーム再開後初めて全体画面に出たときに、飛空艇をマリオの位置までワープさせるか、Lunar Magicで配置した場所にとどまるか、です。 後者の場合、飛空艇で無人島に移動してセーブし、ロードすると飛空艇が初期位置に戻ってしまうので帰れなくなってしまう恐れがあるからです。前者はそのための暫定処置です。そのようなOWにしなければいいのですが、ASMが得意な方は、OWスプライトの座標もセーブ出来るようにしてみてはどうでしょう。 ・空飛ぶヨッシー ファイル:wingyoshi.asm 説明:コマンド型です。OW上でヨッシーに乗った状態でRボタンを押すと飛び立ち、 マップ上を自在に飛び回れます。もう一度Rボタンを押すと着地します。 オプションはロード時の処理が無いこと以外は飛空艇と同じで、加えて青ヨッシー限定にするかの選択もできます。 飛空艇との違いは、サブマップでも飛べることと、飛ぶために飛空艇まで戻る必要が無い代わりにヨッシーに乗っていることが条件ということです。 飛行ヨッシーでなければいけないコースを設置する場合は、そのコース内でヨッシーを手に入れるようにしておかないと戻れなくなってしまう恐れがあります。