| ホーム/トップ/基本操作/メニューバー/SABS/SMILE研究室/特別講座/解析資料/ |
|
特別講座
1-ポーズマップ改造 まず、バイナリエディタが無いと話になりませんので、ベクター辺りで適当にDLしましょう。 ちなみに管理者はhgBedというソフトを使っています。 DLしたら、スーパーメトロイドのROMを開いてみましょう。訳のワカラン文字列がズラァァァァァァと並んでると思います。 これは16進法といい、10進法が0〜9まで行ったら位が上がるのに対し、16進数は0〜16まで行ったら位が上がる、といった進法です。 通常は「00,01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F」と表記します。 それから、基本的にデータは上書きで行います。 設定やらオプションやらで「上書き」のところにチェックを入れておきましょう。 設定が完了したら、今度は実際に書き換えてみます。 左側のアドレスが「1A8200」の部分まで移動してみましょう。 なにやら「1F 00」という数字が並んでいます。 その中に、「CE 0C」という文字列があると思います。とりあえず「CE」の部分を「10」にでも変えてみましょう。 そしたらブリンスタへ行ってみましょう。 ウヒョオ!カワッタ(゜∀゜) もうこうなったら全部「10 0C」の支配下にしてしまいましょう。 (#0w0)ウェイイイイイイイイ(死 ここで覚えておきたいのが、数値の並び方の法則です。 基本形は、2Byte単位(1Byte=「00」などの文字列)でブロックの情報が保存されています。 最初の1Byteは配置するブロック、次の1Byteはブロックの向きが設定されています。 ブロックの向きは、「0C」がそのまま、「4C」が左右反転、「8C」が上下反転となっています。 マップデータが保存されている範囲は、 ・1A8200〜1A91FF:ブリンスタ ・1A9200〜1AA1FF:クレテリア ・1AA200〜1AB1FF:ノルフェア ・1AB200〜1AC1FF:難破船 ・1AC200〜1AD1FF:マリーディア ・1AD200〜1AE1FF:ツーリアン ・1AE200〜1AF1FF:スペースコロニー となっています。 基本が分かったら、後は配置したいブロックを配置するだけです。 とりあえず、有効なブロックリストを掲示しておきます。 また、全てを改造できるわけではなく、以下のような制約があります。 ・マップ部屋やセーブ部屋などに配置さていれるアイコンは配置できない ・マップデータロードでロードされる座標は変えられない とまぁ長々と書きましたが、 2-チェックサム改造 SNES9xを起動したとき、オリジナルでは白い文字が表示されますが、 改造後だと黄色の文字に変わってしまって、気に食わない人、いませんか? 実は白文字から黄文字に変わってしまうのは、「チェックサム」という物が、改造後には変わってしまうことが原因です。 ここでは、その「チェックサム」を指定する方法を説明します。 そもそも、チェックサムとは何なのか。 チェックサムとは、ROMが改造されていないか、正常なROMになっているか、という事をチェックする機能です。 さてさて、では実際に改造に取り組んでみます。 まず、チェックサムを正常にしたいROMを開いてROM情報を見ます。 ![]() 見事にエラーが発生しています。 ここで注目してもらいたいのが、「Actual Checksum」という項目です。 この数値を特定のアドレスに指定することで、チェックサムを指定することが出来ます。 次に、「Actual Checksum」の値をビット反転させてください。 ビット反転の手順は、 16進数を2進数に変換→その数値の「0」と「1」を反転→出来た数値を再び16進数に変換 という感じです。 16進数を2進数に変換する方法が分からない場合は、アクセサリの「電卓」機能を使うと良いでしょう。 数値が出来上がったら、バイナリエディタで「81DC」まで移動してください。 そこに、「20 07 DF F8」という数値があると思います。 これがROM内で指定されているチェックサムの数値です(ROM情報の「Header ChecksumHeader」「Checksum Compliment」と同じ数値)。 ここに、先程作った2つの数値を、反転数値→通常数値の順で書き込みます。 といっても、普通に書き込んだら駄目です。 「FE31」だったら「31FE」と言うように、2文字づつ上下を反転させて書き込んでください。 書き込んだら、ROMを起動して確認してみてください。 ![]() はい変わったー 最初に表示される文字が白くなっていたら成功です。 とまぁ長々と書きましたが、これを変えなくてもゲームプレイに支障は無いです。 暇があったらドゾー 3-スクロールの編集 ここでは、今まで不可能だった、「S」アイテムによるスクロールの制限の方法を解説します。 まず、例として、部屋「$792FD」を使用します。 部屋を開いたら、一番左端にある「S」アイテムをクリック、編集画面を開きます。 開いたら、そこに書いてあるIndex2とIndexの値を覚えます。 そして、Index2の値とIndexの値をつなげた値に$70200を足します(十六進数、ヘッダ無しの場合は$70000)。$9399+$70200=$79599となります。 数値が出たら、バイナリエディタでスーパーメトロイドのROMを開き、アドレス「$79599」まで移動します。 そこに、「$00 01 80」という文字列があると思います。これがスクロールを制御している文字列です。 では、実際にどのように変えていけば良いのか。 最初の1Byte($00)は変えるスクリーンを示しています。 ではこの「$00」とはどのスクリーンを示しているのか。以下の図をご覧ください。 ![]() 一番左上から始まり、一番右に達したら一段下がり、また一番右に達したら・・・と言う風に続いています。 さて、この図の中に$00は何処にあるでしょうか。一番左上にありますね。 よって、この1Byteは一番左上のスクリーンを変える、という事を示しています。 真ん中の1Byte(01)は最初の1Byteで指定したスクリーンをどう変えるか、という事を示しています。 「$00」はスクロールしない(SMILEで見ると赤)、「$01」は少しスクロール(SMILEで見ると青)、「$02」はスクロール全開(SMILEで見ると緑)を示しています。 最後の1Byte($80)は命令の終了を意味します。命令の最後には必ずこれが付いていますので、覚えておいてください。 大体の命令が3Byte単位で記録されていますが、中には複数のスクリーンを変える命令も存在します。 Index2$93、Index$8Fの「S」アイテムの命令が保存されているところ($7958F)までバイナリエディタで移動します。 そこに、「$00 00 02 00 06 02 80」という文字列があると思います。 さっきと違って文字が増えていますが、基本は変わっていません。 これは、「$00」スクリーンを「$00」に、「$02」スクリーンを「$00」に、「$06」スクリーンを「$02」に変えるという事を示しています。 これから分かるように、命令は「変えるスクリーン→それをどう変えるか→変えるスクリーン・・・命令終了」という様な並び方になっています。 また、新しい命令を追加したい場合は、「$7EBA0」に書き込んでください。 書き込んだら、書き込んだアドレスから$70200を引いた値を、それぞれ「S」アイテムのIndex2とIndexに設定、配置してください。 文章構成だめぽorz |
