###スーパーメトロイド解析資料### ・SMILEで行えることも書いてありますが、スーパーメトロイドの構造を理解するには全ての情報を知っておいたほうが  よりスムーズに構造を理解できると思ったので、あえて分割はしませんでした。  SMILEで行えないことが多々書いてあるので、暇な方は読んでみてください。  この文章はSMILEを極めた人向けの文章ですので、SMILEで改造できる部分はSMILEで使っている英単語を使っています。 ・アドレスの指定はヘッダを無視するので削ったほうが便利です。  ヘッダの削り方は、スーパーメトロイドのROMをバイナリエディタで開き、$000000〜$0001FFまでを削除するだけです。  この文章はヘッダを削ったROMを使用していることを前提としています。 ・SNESのメモリアドレスはバンク+4桁のアドレスによって表されます。  メモリアドレス→ROMアドレスは計算式によって求められます。  色々と面倒なのでSMILE内蔵の機能またはLunar Address(http://fusoya.panicus.org/)を使ってください。 ・02バイト以上で情報を管理している場合、$1234という数値は$34 12、$ABCDEFという数値は$EF CD ABと、  情報を01バイトずつ分割し、最下位のバイトから記入されています。 ・16進数の数字の前には$を付けます。 ・バンクは「<>」で囲みます。 -----------------------------------------部屋情報---------------------------------------- ・全体の単位は不定 ・Room Properties,State Properties,Pointersと並んでいる ■Room Properties<$8F> 1,アドレス ・SMILEのルームID 2,法則 ・11バイト単位  01バイト   Room Index  02バイト   地域  03バイト   X  04バイト   Y  05バイト   Width  06バイト   Height  07バイト   Up scroller  08バイト   Down scroller  09バイト   Unknown 4  10-11バイト Door Out<$8F> 3,例 ・スターシップ部屋(ルームID$0791F8)  $0791F8 00 00 17 00 09 05 70 A0 00 7B 92       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | | Door Out($8F927B=$07927B)       | | | | | | | | Unknown 4       | | | | | | | Down scroller       | | | | | | Up scroller       | | | | | Height       | | | | Width       | | | Y       | | X       | 地域       Room Index ■State Properties<$8F> 1,アドレス ・Room Propertiesのすぐ後 2,法則 ・1つにつき05バイト単位  01-02バイト チェックするイベントの分類<$8F>   $FF E5=Tourian Boss 1 をチェック   $12 E6=各種イベントを起こしたかをチェック   $29 E6=ボスの撃破フラグをチェック   $40 E6=Morph をチェック   $52 E6=Morph&Missiles をチェック   $69 E6=Power Bombs をチェック   $78 E6=Speed Booster をチェック  03バイト   チェックするイベントの内容(SMILEで見ると上から$00,$01,$02…となっている)  04-05バイト チェックに引っかかった場合に読み込むPointersのアドレス<$8F>  必要事項を書き込んだ後、$E6 E5で次の26バイトを部屋のSTANDARD状態のPointersとして読み込む 3,例 ・スターシップ部屋Events 1(ルームID$0791F8)  $079203 12 E6 0E 61 92       ↑ ↑ ↑ ↑ ↑       | | | チェックに引っかかった場合に読み込むPointersのアドレス($8F9261=$079261)       | | チェックするイベントの内容       チェックするイベントの分類($8FE612=$07E612) ■Pointers<$8F> 1,アドレス ・State Propertiesのすぐ後 2,法則 ・1つにつき26バイト単位  01-03バイト Level Data<何処でも、オリジナルでは$C2〜$CEまで?を使用>  04バイト   Graphic Set  05バイト   Music(右)  06バイト   Music(左)  07-08バイト FX1<$83>  09-10バイト Enemy Population<$A1>  11-12バイト Enemy Set<$B4>  13-14バイト Layer 2 Scroll  15-16バイト Scroll<$8F>  17-18バイト Unknown1  19-20バイト FX2<$8F>  21-22バイト PLM<$8F>  23-24バイト BG_Data<$8F>  25-26バイト Layer1_2<$8F> 3,例 ・スターシップ部屋STANDARD(ルームID$0791F8)  $079213 BB C2 C2 00 06 05 C0 80 3D 88 93 81 81 01 83 92 00 00 16 C1 00 80 6A B7 C9 91       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | | | | | | | | | | | | | | | | | Layer 1_2($8F91C9=$0791C9)       | | | | | | | | | | | | | | | | | | | | | | BG_Data($8FB76A=$07B76A)       | | | | | | | | | | | | | | | | | | | | PLM($8F8000=$078000)       | | | | | | | | | | | | | | | | | | FX2($8FC116=$07C116)       | | | | | | | | | | | | | | | | Unknown1       | | | | | | | | | | | | | | Scroll($8F9283=$079283)       | | | | | | | | | | | | Layer 2 Scroll       | | | | | | | | | | Enemy Set($B48193=$1A0193)       | | | | | | | | Enemy Population($A1883D=$10883D)       | | | | | | FX1($8380C0=$0180C0)       | | | | | Music(左)       | | | | Music(右)       | | | Graphic Set       Level Data($C2C2BB=$2142BB) -----------------------------------------ドア関連---------------------------------------- ■Door Out<$8F> 1,アドレス ・SMILEのPointersから 2,法則 ・1つのドアにつき02バイト単位 ・01-02バイト ドア情報のアドレス(ドアエディット時にドアリストをダブルクリックしたときに出る数値)<$83> ・命令終了はなし、数は無制限  SMILEでは、アドレスとして認識できる数値だけ読み込まれる 3,例  スターシップ部屋(ルームID$791F8)  $8F927B(メモリ)=$07927B(ROM)  $07927B 16 89 22 89 2E 89 3A 89       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | Door $03のアドレス($83893A=$01893A)       | | | | Door $02のアドレス($83892E=$01892E)       | | Door $01のアドレス($838922=$018922)       Door $00のアドレス($838916=$018916) ■ドア情報<$83> 1,アドレス ・SMILEでDoor Edit時にドアリストをダブルクリックしたときに出る数値、もしくはDoor Outのアドレスへ移動した先に書いてある数値 2,法則 ・1つのドアにつき12バイト単位  01-02バイト RoomID<$8F>  03バイト   BitFlag  04バイト   Direction  05バイト   Xi  06バイト   Yi  07バイト   X  08バイト   Y  09-10バイト Distance from door  11-12バイト Scroll pointer<$8F> 3,例 ・スターシップ部屋左上Door $00(ルームID$0792B3)  ドア情報は$838946=$018946にあると分かる  $018916 F8 91 00 04 01 26 00 02 00 80 97 B9       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | | | | |       | | | | | | | | | | | |       | | | | | | | | | | | |       | | | | | | | | | | Scroll pointer($8FB997=$07B997)       | | | | | | | | Distance from door       | | | | | | | Y       | | | | | | X       | | | | | Yi       | | | | Xi       | | | Direction       | | BitFlag       RoomID($8F91F8=$0791F8) ■Scroll pointer<$8F> 1,アドレス ・ドア情報のScroll pointerから 2,法則 ・11バイト単位  01バイト   命令開始($08)  05バイト   書き込むスクロールの値   $00=赤(スクロール不可)   $01=青(地形中心スクロール)   $02=緑(サムス中心スクロール)  07-09バイト 書き込むアドレス(RAMアドレス)   RAMアドレス$7ECD20が始点(ここにScrollで設定したスクリーン$00のスクロールの数値が書き込まれる。以降スクリーン$01,02…と順に書き込まれていく)   上記のアドレスから、変えたいスクリーンのRAMアドレスを割り出す   リアルタイムでメモリを観覧できるソフト(SNESGTなど)で直接RAMアドレスを見てみると状況を把握しやすい  11バイト   命令終了($60) ・05バイトと07-09バイト以外は変えないほうが良い ・複数の数値を複数のアドレスに書き込む命令も存在する 3,例  スターシップ部屋左上(ルームID$0792B3)  $8FB997(メモリ)=$07B997(ROM)  $07B997 08 E2 20 A9 01 8F 33 CD 7E 28 60             ↑  ↑ ↑ ↑             |  書き込むアドレス(RAMアドレス)             変えるスクロールの値 ☆逆アセンブル解析結果  07B997 08 PHP  07B998 E2 20 SEP #$20  07B99A A9 01 LDA #$01 ; "A" = 1    書き込むスクロール値  07B99C 8F 33 CD 7E STA $7ECD33 ; $7ECD33 = "A" 書き込むアドレス(RAMアドレス)  07B9A0 28 PLP  07B9A1 60 RTS 4,特殊なScroll pointerの作り方(上級者向け)  (0)バイナリエディタでスーパーメトロイドを開く。  (1)適当なScroll pointerの一連の数値をコピーする。  (2)コピーしたデータを$07E99A以降の未使用領域に貼り付ける。  (3)貼り付けたら、05バイトと07-09バイトの値を好きなように変える。  (4)貼り付けた領域のバンクを抜いたメモリアドレスをSMILEのドアエディットの『Scroll pointer』欄に書き込む(※)。  (5)保存したら完了。  ※例えば$07E9A0に貼り付けた場合、変換すると$8FE9A0となり、置換する数値は$E9 A0となる。   アドレスの変換はLunar Address(http://fusoya.panicus.org/)を使う。 ・例えば、  05バイトを$0F、07-09バイトを$77 0A 7Eにするとゲートを通ったらハイパービーム取得。  05バイトを$04、07-09バイトを$3F 0B 7Eにするとゲートを通ったらブルースーツ取得。  05バイトを$00、07-09バイトを$28 D8 7Eにするとゲートを通ったら鳥人像撃破フラグ初期化。  簡単に言えば改造コードをゲーム内で実行してしまう機能。 ・サンプル  ブルースーツゲート     $08 E2 20 A9 04 8F 3F 0B 7E 28 60  ブルースーツ解除ゲート   $08 E2 20 A9 00 8F 3F 0B 7E 28 60  ハイパービームゲート    $08 E2 20 A9 00 8F D0 0C 7E A9 0F 8F 77 0A 7E A9 09 8F A6 09 7E 28 60  ハイパービーム解除ゲート  $08 E2 20 A9 00 8F 77 0A 7E A9 00 8F A6 09 7E 28 60  シャインスパーク発動ゲート $08 E2 20 A9 C9 8F 1C 0A 7E A9 08 8F 42 0B 7E 28 60  鳥人像撃破フラグ初期化   $08 E2 20 A9 00 8F 28 D8 7E 28 60   シャインスパーク発動ゲートはバグ多し -----------------------------------------地形関連---------------------------------------- ■Level Data<何処でも、オリジナルでは$C2〜$CEまで?を使用> 1,アドレス ・SMILEのPointersから 2,法則 ・地形→背景→BTSの順番で保存? ・1つのブロックを配置しただけで何十バイトも変化・影響する ・ただの透過ブロック(X-Ray Air)はROM側で指定されて配置されているわけではない? ・ブロックが少なければ広い部屋も問題なく作れる ・SMILEで編集できる背景はここに記録されている ・詳細不明 ■BG_Data<$8F> 1,アドレス ・SMILEのPointersから 2,法則 ・27バイト単位  03-05バイト 背景データのアドレス(05バイトはバンク)  上記以外は全域でほぼ共通している 3,例 ・スターシップ左上(ルームID$0792B3)  $8FB899(メモリ)=$07B899(ROM)  $07B899 04 00 C4 82 BA 00 40 02 00 00 40 7E 00 48 00 08 02 00 00 40 7E 00 4C 00 08 00 00          ↑ ↑ ↑          背景データのアドレス($BA82C4=$1D02C4) ■背景データ<何処でも、オリジナルでは$B9〜$BAまで?を使用> 1,アドレス ・BG_Dataのアドレスに書いてある数値 2,法則 ・12バイトまたは11バイト単位?  最初の01バイトは特別な設定のようだ  最初の04バイトが何かの設定?  05バイトから$XC aa XD bb XE cc XF ddというような並びが多い   これが地形の配置のようだ   チップは横一列に並ぶ   $XCなどの部分でチップ郡指定   $aaなどの部分で前の1バイトのチップ郡のパレットや反転などを指定(詳しくは下記)   上位4ビットがパレットの指定と反転   反転の種類が4種類とパレットが8種類   パレットは2種類ずつ指定される?   下位4ビットがパレットの選出とチップの設定   $0〜7がパレット1で$0〜7それぞれに対応したチップを配置、$8〜Fがパレット2で$8〜Fそれぞれに対応したチップを設置 ・チップとパレットを指定する部分がまだある?  チップは1/4,パレットは1/2に限定するよう指定している部分があるはず ・$ddの部分が無い場合は前の塊の尻から読み込む? ・背景の並べ方も設定されているようだ ・詳細不明 ■Layer1_2<$8F> 1,アドレス ・SMILEのPointersから 2,法則 ・単位は不明  01バイト単位? ・同じアドレスが示されている場合が多い ・$60が多い ・詳細不明 --------------------------------------スクロール関連------------------------------------- ■Scroll<$8F> 1,アドレス ・SMILEのPointersから 2,法則 ・単位は不定 ・書き込んである数値によって部屋の左上(スクリーン$00)から順にスクロール値が適応される  $00=赤(スクロール不可)  $01=青(地形中心スクロール)  $02=緑(サムス中心スクロール) ・命令終了はなし 3,例 ・スターシップ部屋(ルームID$0791F8)  $8F9283(メモリ)=$079283(ROM)  $079283 00 00 02 ……       ↑ ↑ ↑       | | スクリーン02のスクロール値       | スクリーン01のスクロール値       スクリーン00のスクロール値 ■スクロールアイテム<$8F> 1,アドレス ・スクロールPLMのUnknownの値とIndexの値をつなげた値 2,法則 ・1つのスクリーンにつき02バイト単位  01バイト   変えるスクリーン  02バイト   置き換えるスクロール値  $80で命令終了 ・詳しくは解説ページ参照 3,例 ・スターシップ部屋(ルームID$0791F8)  $8F92B0(メモリ)=$0792B0(ROM)  $0792B0 13 01 80       ↑ ↑ ↑       | | 命令終了       | 置き換えるスクロール値       変えるスクリーン -----------------------------------------FX1関連----------------------------------------- ■FX1<$83> 1,アドレス ・SMILEのPointersから 2,法則 ・16バイト単位  01-02バイト Select  03-04バイト Surface Start  05-06バイト Surface New  07-08バイト Surface Speed  09バイト   Surface Delay  10バイト   Layer3Type  11バイト   A/BのA  12バイト   A/BのB  13バイト   C(※)  14バイト   Palette FX(※)  15バイト   Animate Tile(※)  16バイト   Palette Bland ※これらの数値は2進数変換して各設定のON/OFFを切り替えている  例えば$C1と入力すれば、2進数では11000001なので、SMILEで見ると下2つと上1つのチェックボックスが入っているはず 3,例 ・スターシップ部屋STANDARD(ルームID$0792B3)  $8380C0(メモリ)=$0180C0(ROM)  $0180C0 00 00 FF FF FF FF 00 00 00 0A 02 0E 00 01 00 22       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | | | | | | | | Palette Bland       | | | | | | | | | | | | | | Animate Tile       | | | | | | | | | | | | | Palette FX       | | | | | | | | | | | | C       | | | | | | | | | | | A/BのB       | | | | | | | | | | A/BのA       | | | | | | | | | Layer3Type       | | | | | | | | Surface Delay       | | | | | | Surface Speed       | | | | Surface New       | | Surface Start       Select ■FX2<$8F> 1,アドレス ・SMILEのPointersから 2,法則 ・10バイト単位 ・数値が何を示しているかは不明 ・解析する必要性もなさそうなので放置 -----------------------------------------敵関連------------------------------------------ ■Enemy DNA<$A0> 1,アドレス ・SMILEの敵ID 2,法則 ・64バイト単位  01-02バイト Anim  03-04バイト Palette  05-06バイト HP  07-08バイト Damege  09-10バイト Width  11-12バイト Height  13バイト   Enemy Bank  14バイト   Hurt Flash  15バイト   Sound  16バイト   1  17-18バイト 2  19-20バイト AI  21-22バイト 4  23-24バイト 5  25-26バイト Graph  27-28バイト Grapple  29-30バイト B  31-32バイト ice  33-34バイト xray  35バイト   Death Anim  36-37バイト F  38-39バイト G  40バイト   H  41-42バイト PB Reaction  43-44バイト I  45-46バイト J  47-48バイト K  49-50バイト Enemy Touch  51-52バイト Enemy Shot  53-54バイト N  55-57バイト Enemy Tiles<何処でも、オリジナルでは$AC〜$B1,$B6〜$B7までを使用>   メモリアドレスを指定  58バイト   Layer  59-60バイト Item Drop<$B4>  61-62バイト Vulnerable<$B4>  63-64バイト 敵の名前のアドレス<$B4> ・特別にバンクが設定されているアドレス以外は、13バイトの「Enemy Bank」の数値をバンクとする。 3,例 ・ズーマー(敵ID$DCFF)  $A0DCFF(メモリ)=$105CFF(ROM)  $105CFF 00 06 B0 E5 0F 00 05 00 08 00 08 00 A3 00 23 00 00 00 69 E6 01 00 01 00 C2 E6 0A 80 4C 80 41 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 23 80 2D 80 00 00 00 80 AE 05 24 F2 48 EC DB E1       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 敵の名前のアドレス($B4E1DB=$1AE1DB)       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Vulnerable($B4EC48=$1A6C48)       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Item Drop($B4F224=$1A7224)       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Layer       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enemy Tiles($AE8000=$170000)       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |  N       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enemy Shot($A3802D=$11802D)       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enemy Touch($A38023=$118023)       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |  K       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |  J       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |  I       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PB Reaction(指定なし)       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | H       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |  G       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |  F       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Death Anim       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | xray       | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |ice($A38041=$118041)       | | | | | | | | | | | | | | | | | | | | | | | | | | | | B($A3804C=$11804C)       | | | | | | | | | | | | | | | | | | | | | | | | | | Grapple($A3800A=$11800A)       | | | | | | | | | | | | | | | | | | | | | | | | Graph($A3E6C2=$11E6C2)       | | | | | | | | | | | | | | | | | | | | | |  5       | | | | | | | | | | | | | | | | | | | |  4       | | | | | | | | | | | | | | | | | | AI($A3E669=$11E669)       | | | | | | | | | | | | | | | |  2       | | | | | | | | | | | | | | | 1       | | | | | | | | | | | | | | Sound       | | | | | | | | | | | | | Hurt Flash       | | | | | | | | | | | | Enemy Bank       | | | | | | | | | | Height       | | | | | | | | Width       | | | | | | Damege       | | | | HP       | | Palette($A3E5B0=$11E5B0)       Anim ■敵AI 1,リドリー<$A6> ・$1321C1   尻尾の攻撃力 ・$132217   尻尾の攻撃力(スペースコロニー) 2,マザーブレイン<$A9> ・$14870F   マザーブレイン第1形態の体力 ・$148D68   マザーブレイン第2形態の体力  体力を高くすると最初から赤ビームを使ってくる ・$14BFB1   マザーブレイン第3形態の体力 3,ベビーメトロイド<$A9> ・$14F032   ベビーメトロイドが来るまでの時間 ・$14F0E0   サイドホッパーが干からびるまでの時間 ■Enemy Population<$A1> 1,アドレス ・SMILEのPointersから 2,法則 ・1体につき16バイト単位  01-02バイト 設置する敵のアドレス  03バイト   X軸  04バイト   X軸で、スクリーン幾つ目かを現す  05バイト   Y軸  06バイト   Y軸で、スクリーン幾つ目かを現す  07-08バイト Orientation  09-10バイト Special  11-12バイト Graphic Unknown  13-14バイト Speed  15-16バイト Speed2  敵の配置が終わったら一旦$FF FFで区切る  区切った後  Enemies to clear this room   この数値を書いたら配置終了 ・敵の配置は結構ギリギリ、総数を変えるとほぼ確実に前後の敵に影響が出る 3,例 ・スターシップ部屋右上(ルームID$0793AA)  $A180D5(メモリ)=$1080D5(ROM)  $1080D5 BF E9 88 00 D8 00 00 00 00 28 00 00 00 00 00 00 (敵2,3体目省略) FF FF 03       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑         ↑ ↑ ↑       | | | | | | | | | | | | | | | |         | | Enemies to clear this room       | | | | | | | | | | | | | | | |         区切り       | | | | | | | | | | | | | | Speed2       | | | | | | | | | | | | Speed       | | | | | | | | | | Graphic Unknown       | | | | | | | | Special       | | | | | | Orientation       | | | | | Y軸で、スクリーン幾つ目かを現す       | | | | Y軸       | | | X軸で、スクリーン幾つ目かを現す       | | X軸       設置する敵のアドレス ■Enemy Set<$B4> 1,アドレス ・SMILEのPointersから 2,法則 ・1体につき04バイト  01-02バイト Enemies allowed in this room  03-04バイト New counter value  $FF FFで配置終了 3,例 ・スターシップ部屋右上(ルームID$0793AA)  $B4801F(メモリ)=$1A001F(ROM)  $1A001F BF E9 01 00 BF D7 01 00 FF FF       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | 配置終了       | | | | | | New counter value(2体目)       | | | | Enemies allowed in this room(2体目)       | | New counter value(1体目)       Enemies allowed in this room(1体目) ----------------------------------------PLM関連------------------------------------------ ■PLMIDの移動先について<$84> 1,アドレス ・SMILEのPLMID 2,法則 ・04バイトでアドレスを2つ指摘  01-02バイト SMILEでPLMを選択したときウィンドウ左上の左側に出るアドレス  03-04バイト SMILEでPLMを選択したときウィンドウ左上の右側に出るアドレス 3,サンプル ・これを$026FD4に貼り付け、PLMID$EFD4を配置すれば、PLMに触れた瞬間にブルースーツを取得(スクロールPLMを利用)。  71 B3 E0 EF FF FF FF FF FF FF FF FF 補足:$84B371=$023371 $84EFE0=$026FE0  01 00 62 AF B4 86 F0 EF 24 87 8A AF FF FF FF FF 補足:07-08バイトで下の行のアドレスを指摘している  08 E2 20 A9 04 8F 3F 0B 7E 28 60 補足:ブルースーツを取得する命令 Scroll pointerも参考に ■PLM Definition<$84> 1,アドレス ・SMILEでPLMを選択したときウィンドウ左上の右側に出るアドレス 2,法則(1) ・98バイト単位程度(ドア系、弱点はガラス管も)  11-12バイト ドアの弱点のアドレス   $26 BD=パワーボム   $50 BD=ミサイル   $88 BD=スーパーミサイル  15-16バイト パレットのアドレス  21バイト   Save Hits 3,例(1)  レッドゲート左向き($024318)  $024318 72 8A B1 C4 24 8A 2A C3 C1 86 50 BD 01 00 E7 A8 B4 86 91 8A 05 ……                      ↑ ↑    ↑ ↑       ↑                      | |    | |       Save Hits                      | |    パレットのアドレス                      ドアの弱点のアドレス 2,法則(2) ・46バイト単位(能力アイテム系)  04バイト   PLMの画像   $80=ボム   $81=グラビティスーツ   $82=スプリングボール   $83=バリアスーツ   $84=ハイジャンプブーツ   $85=スクリューアタック   $86=スペースジャンプ   $87=モーフィングボール   $88=グラップリングビーム   $89=Xレイスコープ   $8A=スピードブースター   $8B=チャージビーム   $8C=アイスビーム   $8D=ウェーブビーム   $8E=プラズマ   $8F=スペイザー   $90=リザーブタンク  05-12バイト パレットの配置   それぞれに対応したパレット群をパレットとして適用する   例えば、$02と書き込めば、SMILEの「Graphics Editor」で見ると3行目の「パレット群2」からパレット情報を読み込む  19-20バイト 取るアイテム  37バイト   アイテムを取ったときの効果音   $00=無音   $01=セーブ再開音   $02=アイテム取得音   $03=エレベータールーム   $04=ボスを倒した後の背景音?   $05=効果音変えない   $06=ミサイル発射音?   $07=無音になる(ドアを通るとフリーズ)   $08=ミサイル発射音+Xレイ音?   $09=上に同じ   $0A=ミサイル発射音?   以下同じような音の繰り返し   $0F=聞いたことがない奇音   $10以降は無音  38-39バイト RAMアドレスへの書き込みの命令が保存されているアドレス(39バイトがItem)<$84>  40-41バイト Value  42バイト   出すメッセージの選択   $00=フリーズ   $01=ENERGY TANK   $02=MISSILE   $03=SUPER MISSILE   $04=POWER BOMB   $05=GRAPPLING BEAM   $06=X-RAY SCOPE   $07=VARIA SUIT   $08=SPRING BALL   $09=MORPHING BALL   $0A=SCREW ATTACK   $0B=HI-JUMP BOOTS   $0C=SPACE JUMP   $0D=SPEED BOOSTER   $0E=CHARGE BEAM   $0F=ICE BEAM   $10=WAVE BEAM   $11=SPAZER   $12=PLASMA BEAM   $13=BOMB   $14=MAP DATA ACCESS COMPLETED.   $15=ENERGY RECHARGE COMPLETED.   $16=MISSILE RELOAD COMPLETED.   $17=WOULD YOU LIKE TO SAVE?   $18=SAVE COMPLETED.   $19=RESERVE TANK   $1A=GRAVITY SUIT   $1B=バグる   $1C=WOULD YOU LIKE TO SAVE?→SAVE COMPLETED.   $1D=バグメッセージ   以降フリーズ  $DFで命令終了  上記以外は不明 3,例 ・ボム($02612D)  $02612D  64 87 00 80 00 00 00 00 00 00 00 00 7C 88 57 E1 24 8A 4D E1 C1 86 89 DF 4F E0 67 E0 24 87 45 E1 99 88 DD 8B 02 F3 88 00 10 13 24 87 A9 DF            ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑          ↑ ↑                         ↑ ↑ ↑ ↑ ↑ ↑     ↑            | | | | | | | | |          | |                         | | | | | |     命令終了            | | | | | | | | |          | |                         | | | | | 出すメッセージの選択            | | | | | | | | |          | |                         | | | Value            | | | | | | | | |          | |                         | RAMアドレスへの書き込みの命令が保存されているアドレス($8488F3=$0208F3)            | | | | | | | | |          | |                         アイテムを取ったときの効果音            | | | | | | | | |          取るアイテム            |パ レ ッ ト の 配 置            PLMの画像 ☆メモ  ビームのRAMアドレスへの書き込みの命令が保存されているアドレスは$0208B0〜$0208F2  能力アイテムのRAMアドレスへの書き込みの命令が保存されているアドレスは$0208F3〜$020919  ここの数値をコピーして未使用の領域に貼り付け、そのアドレスをメモリアドレス化して38-39バイトに書き込む。  貼り付けた数値を改変すれば、独自の命令を実行することが出来る。  $026FD3以降が未使用領域  詳しくは、ハイパービームのアイテム化またはブルースーツのアイテム化参照。 ■ガラス管爆発後の描写<$84> 1,アドレス ・$02198Fから 2,法則 ・1行につき28バイト単位  01-02バイト 行数  03-04バイト 不明(読み込むブロックの桁数?)  05-28バイト 配置するブロック   02バイト毎に1ブロック ・3行目と4行目の間に以下の数値が入る  $00 00 01 00 41 01 ・6行で終了 ・左上のブロックだけは何故か改変しても反映されない  PLM自体の画像としてここだけ別に設定されている? 3,例  $02198F 00 00 0C 00 41 81 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 41 85       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | |              ブロックの配置       | | 不明(読み込むブロックの桁数?)       行数  他の行も同じ法則で並ぶ ■ハイパービームのアイテム化<$84> 1,全ビームハイパービーム化  $0208B4と$0208B7の$A8 09を$77 0Aに変える 2-1,アドレス ・$026180   チャージ ・$0261AE   アイス ・$026238   ウェーブ ・$026266   スペイザー ・$02635D   プラズマ ・$02657D   ボール内チャージ ・$0265B8   ボール内アイス ・$026672   ボール内ウェーブ ・$0266AD   ボール内スペイザー ・$0267E1   ボール内プラズマ ・$026A66   壁チャージ ・$026AA7   壁アイス ・$026B6A   壁ウェーブ ・$026BAB   壁スペイザー ・$026CFD   壁プラズマ 2-2,ビーム毎のハイパービームの作り方(上級者向け)  (0)バイナリエディタでスーパーメトロイドを開く。  (1)$0208B0〜$0208F2の範囲をコピーする。  (2)コピーしたデータを$026FD3以降の未使用領域に貼り付ける。  (3)貼り付けたら、05-06バイトと08-09バイトの$A8 09を$77 0Aに変える。  (4)各ビームの設定が保存してあるアドレス(2-1参照)の$B0 88の部分を、貼り付けた領域のバンクを抜いたメモリアドレスと置換する(※)。  (5)上記の次の部分に$0F 00と書き込む。  (6)保存したら完了。  ※例えば$026FE0に貼り付けた場合、変換すると$84EFE0となり、置換する数値は$E0 EFとなる。   アドレスの変換はLunar Address(http://fusoya.panicus.org/)を使う。 ・プラズマビームだとビーム画像がおかしくならないのでお勧め。 ・同様の理論でブルースーツのアイテム化も可能。 ・ビームグラフィックも正常にするためには$7E09A6を$09にしなくてはならない ・チャージを強制解除するために$7E0CD0を$00にしなくてはならない ☆メモ  $A8 09リスト  ・$00B2F5   不明  ・$012184   ポーズ画面のビームアイコンの表示/非表示  ・$012BC0   不明  ・$012FCA   ビームの切り替えの可能/不可能  ・$01326B   不明  ・$01345F   カーソルの移動の可能/不可能  ・$013492   不明  ・$0208B4   ビームアイコンの数が複数/1個  ・$0208B7   ビーム値を書き込むアドレス  これ以降は未調査、特に調べる必要もないか ■ブルースーツのアイテム化<$84> 1-1,アドレス ・$026152   ボム ・$0261DC   ハイジャンプ ・$02620A   スピードブースター ・$026294   スプリング ・$0262C8   バリア ・$0262FD   グラビティ ・$0263B8   スペースジャンプ ・$0263E6   スクリューアタック ・$026414   モーフィングボール ・$026542   ボール内ボム ・$0265F3   ボール内ハイジャンプ ・$02662E   ボール内スピードブースター ・$0266E8   ボール内スプリング ・$026725   ボール内バリア ・$026767   ボール内グラビティ ・$026856   ボール内スペースジャンプ ・$026891   ボール内スクリューアタック ・$0268CC   ボール内モーフィングボール ・$026A25   壁ボム ・$026AE8   壁ハイジャンプ ・$026B29   壁スピードブースター ・$026BEC   壁スプリング ・$026C2F   壁バリア ・$026C77   壁グラビティ ・$026D7E   壁スペースジャンプ ・$026DBF   壁スクリューアタック ・$026E00   壁モーフィングボール 1-2,アイテム毎のブルースーツの作り方(上級者向け)  0,バイナリエディタでスーパーメトロイドを開く。  1,$0208F3〜$020919の範囲をコピーする。  2,コピーしたデータを$026FD3以降の未使用領域に貼り付ける。  3,貼り付けたら、02-03バイトと08-09バイトの$A2 09を$3F 0Bに、11-12バイトと17-18バイトの$A4 09を$3F 0Bに変える。  4,各ビームの設定が保存してあるアドレス(1-1参照)の$F3 88の部分を、貼り付けた領域のバンクを抜いたメモリアドレスと置換する(※)。  5,上記の次の部分に$04 00と書き込む。  6,保存したら完了。  ※例えば$026FE0に貼り付けた場合、変換すると$84EFE0となり、置換する数値は$E0 EFとなる。   アドレスの変換はLunar Address(http://fusoya.panicus.org/)を使う。 ・同様の理論でハイパービームのアイテム化も可能。 ■PLM<$8F> 1,アドレス ・SMILEのPointersから 2,法則 ・1個につき06バイト単位  01-02バイト 設置するPLMのアドレス<$84>  03バイト   X軸(※)  04バイト   Y軸(※)  05バイト   Index  06バイト   Unknown  $00 00で命令終了 ※上位4ビットがスクリーン幾つ目かを現し、下位4ビットがそのスクリーン内での軸を現す 3,例 ・スターシップ部屋右上(ルームID$0793AA)  $8F81CC(メモリ)=$0781CC(ROM)  $0781CC E3 EE 1D 07 00 00 00 00       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | |       | | | | | | | |       | | | | | | 命令終了       | | | | | |       | | | | | Unknown       | | | | Index       | | | Y軸       | | X軸       | |       設置するPLMのアドレス($84EEE3=$026EE3) ----------------------------------------ボスフラグ--------------------------------------- ■ボスフラグ ・下に記載してあるRAMアドレスに指定された数値をプラスすると「ボスを撃破した」というフラグが立つ。  $7ED820  クレテリア&ツーリアン 像の状態(未調査) ゼーベタイトの状態(+$08毎に1つずつ消滅) マザーブレインガラスケースの状態(+$04でガラスケースが無くなる)  $7ED821  クレテリア       像の状態(未調査)  $7ED828  クレテリア       鳥人像(+$04)  $7ED829  ブリンスタ       クレイド(+$01) スポアスポーン(+$02)  $7ED82A  ノルフェア       リドリー(+$01) クロコマイアー(+$02) 金色の鳥人(+$04)  $7ED82B  難破船         ファントゥーン(+$01)  $7ED82C  マリーディア      ドレイゴン(+$01) ボツーン(+$02)  $7ED82D  ツーリアン       マザーブレイン(+$02)  $7ED82E  スペースコロニー    コロニーのリドリー(+$01) ・これを利用し、Scroll pointerでフラグの初期化が可能。  脱出時など後戻りできない状況で配置することが望ましいか。 ・サンプル  $08 E2 20 A9 00 8F 28 D8 7E 28 60         ↑  ↑ ↑ ↑         |  書き込むアドレス         変える値  クレテリア(鳥人像)のボス撃破フラグを初期化する。 ------------------------------------Area Load Station------------------------------------ ■Area Load Station<$80> 1,アドレス ・$0044C5から 2,法則 ・14バイト単位  01-02バイト RoomID(any)  03-04バイト Room Load  05-06バイト Unknown  07-08バイト Scroll X  09-10バイト Scroll Y  11-12バイト Samus Y(from top)  13-14バイト Samus X(from middle) ・index$00の設定が終わったらindex$01,$02,$03……と続いていき、index$12まで設定したらRegionが変わる 3,例  クレテリア  $0044C5 F8 91 6A 89 00 00 00 04 00 04 40 00 00 00       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | | | | | Samus X(from middle)       | | | | | | | | | | Samus Y(from top)       | | | | | | | | Scroll Y       | | | | | | Scroll X       | | | | Unknown       | | Room Load       RoomID(any) ----------------------------------------Samus Poses-------------------------------------- ■Poses Transitions(Controller Input)<$91> 1,アドレス ・$089EE2にアドレス(SMILEの「Samus Poses」のTransition Pointerのアドレスと同じ)のリストがある  登録されているアドレスそれぞれに対応する動作IDの値は、Kejardon氏の表(http://drewseph.zophar.net/Kejardon/TransitionTable.txt)を参照(※)  ※この表のY軸+X軸が、Samus Posesのプルダウンで登録されている数値になる   $07のアドレスは、Y軸0・X軸7の場所で確認できる   $70のアドレスは、Y軸7・X軸0の場所で確認できる   この値を仮に『動作ID』とする   また、SMILEの「Samus Poses」のTransition Pointerでも確認できる 2,法則 ・1つの動作につき06バイト単位  01-02バイト New Keys JustPressed  03-04バイト Current Keys Pressed  05-06バイト 01-02バイトと03-04バイトで設定したキーを押すと取る行動の動作ID  他にも取らせたい行動があるならば同じ法則で続けて書き込む  $FF FFで命令終了 3,例 ・Facing forward, ala Evelator pose.(動作ID$00)  $91A0DE(メモリ)=$08A0DE(ROM)  $08A0DE 00 00 00 01 26 00 00 00 00 02 25 00 FF FF       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | | | | | 命令終了       | | | | | | | | | | 設定したキーを押すと取る行動の動作ID(2つ目)       | | | | | | | | Current Keys Pressed(2つ目)       | | | | | | New Keys JustPressed(2つ目)       | | | | 設定したキーを押すと取る行動の動作ID(1つ目)       | | Current Keys Pressed(1つ目)       New Keys JustPressed(1つ目) ■Poses Properties 1,アドレス ・$08B629から(ここが動作ID$00) 2,法則 ・08バイト単位  01バイト   Facing  02バイト   Movement  03バイト   Default Pose  04バイト   Fire to  05バイト   Vertical offset  06バイト   -unused-(左)  07バイト   Vertical radius  08バイト   -unused-(右) ・以降、動作ID$01,$02,$03……と続いていく 3,例 ・Facing forward, ala Evelator pose.(動作ID$00)  $08B629 00 00 FF FF 08 00 18 00       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | -unused-(右)       | | | | | | Vertical radius       | | | | | -unused-(左)       | | | | Vertical offset       | | | Fire to       | | Default Pose       | Movement       Facing --------------------------------------Game Behavior-------------------------------------- ■Game Behavior<$80> 1,アドレス ・$001287   Red PowerBomb($32→$81) ・$001E0E   Ceres Timer ・$001E21   Zebes Timer ・$00B2CE   Energy ・$00B2E0   Super Missile ・$00B2E9   Power Bomb ■Game Behavior<$82> 1,アドレス ・$016EBB   Show Intro($07→$05) ■Game Behavior<$84> 1,アドレス ・$0247C7   Blue Door Power Bombing($D0→$80) ■Game Behavior<$86> 1,アドレス ・$0370BC   Energy ・$0370CB   Big Energy ・$0370DA   Power Bomb ・$0370E9   Missile ・$0370F8   Super Missile 2,法則 ・11バイト単位  01-02バイト 回復する量  04バイト   アイテム毎に違うが詳細不明  08バイト   アイテムをとったときの音 ・上記以外の部分は共通 ■Game Behavior<$90> 1,アドレス ・$082C3D   Max Beams ・$082C66   Max Missiles ・$083F9B   Bomb Timer ・$0840F4   Max Bombs ・$086A5B   Disabled Start Button   $00=Crateria   $01=Brinstar   $02=Norfair   $03=Wrecked Ship   $04=Maridia   $05=Tourian   $06=Ceres   $07=Debug   $08=None ■Game Behavior<$A6> 1,アドレス ・$1326ED   Fake Ridley Hits ----------------------------------------Map Editor--------------------------------------- ■Map Editor<$B5> 1,アドレス ・$1A8000   ブリンスタ ・$1A9000   クレテリア ・$1AA000   ノルフェア ・$1AB000   難破船 ・$1AC000   マリーディア ・$1AD000   ツーリアン ・$1AE000   スペースコロニー 2,法則 ・02バイトで1つの配置  01バイト   配置するブロック  02バイト   属性   $0C=そのまま   $4C=左右反転   $8C=上下反転  $1F 00は何も配置しない ・座標はX,Yそれぞれ0から、Xがある程度まで達したらY座標がプラスされる? ・マップデータロードでロードされる座標は決まっている? ・詳しくは解説ページ参照 --------------------------------------Graphics Editor------------------------------------ (未調査) ----------------------------------------Beauty Salon------------------------------------- (未調査) ----------------------------------------Text Editor-------------------------------------- ■Green Text<$8C> 1,アドレス ・$06438Fから 2,法則 ・06バイトで1文字 ■Ceres Escape<$A6> 1,アドレス ・$134450付近 2,法則 ・バイナリエディタで見れば一目瞭然 ■Ceres Escape<$A6> 1,アドレス ・$1344A0付近 2,法則 ・バイナリエディタで見れば一目瞭然 ■Area Name<$82> 1,アドレス ・$01166Fから 2,法則 ・02バイトで1文字  01バイト   文字  02バイト   属性   $38まで=そのまま   $78まで=左右反転   $B8まで=上下反転   $F8まで=左右・上下反転 -----------------------------------デモシーンのドア登録---------------------------------- ■デモシーンのドア登録<$82> 1,アドレス ・$010774から 2,法則 ・1つのデモにつき18バイト単位  01-02バイト 読み込む部屋のルームID  03-04バイト 読み込むドア情報のアドレス  05-06バイト 不明  07バイト   X軸  08バイト   X軸で、スクリーン幾つ目かを現す  09バイト   Y軸  10バイト   Y軸で、スクリーン幾つ目かを現す  11バイト   X軸2?  12バイト   X軸2?  13バイト   Y軸2?  14バイト   Y軸2?  15-16バイト デモの長さ(大きいほど長い)  17-18バイト 不明(多くのデモで共通) ・以降、デモ2つ目の設定、3つ目の設定……と続く  $FF FFで終了し、そのすぐ後からデモ群2の設定となる ・操作命令は別の場所で設定されているようだ 3,例 ・スポスポ前の部屋のデモシーンのドア登録($010798)  $010798 9C 9D C6 8D 00 00 00 01 00 00 BB 00 E0 FF 7A 01 24 89       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | | | | | | | | | 不明(多くのデモで共通)       | | | | | | | | | | | | | | デモの長さ(大きいほど長い)       | | | | | | | | | | | | Y軸2?       | | | | | | | | | | X軸2?       | | | | | | | | | Y軸で、スクリーン幾つ目かを現す       | | | | | | | | Y軸       | | | | | | | X軸で、スクリーン幾つ目かを現す       | | | | | | X軸       | | | | 不明       | | 読み込むドア情報のアドレス       読み込む部屋のルームID -----------------------------------------アイコン---------------------------------------- ■アドレス指定箇所<$82> 1,アドレス ・$01474D   エリアネームアイコン ・$0147CB   ボスアイコン ・$0147DB   ミサイルリロード ・$0147EB   エネルギーリチャージ ・$0147FB   マップロード ・$01480B   セーブポイント ・$014853   スターシップ 2,法則 ・12バイト単位(02バイト毎に各エリアの軸指定箇所のアドレス)  01-02バイト クレテリア  03-04バイト ブリンスタ  05-06バイト ノルフェア  07-08バイト 難破船  09-10バイト マリーディア  11-12バイト ツーリアン 3,例 ・セーブアイコン  $01480B 53 C8 BD C8 23 C9 91 C9 F3 C9 51 CA       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | | | ツーリアン($82CA51=$014A51)       | | | | | | | | マリーディア($82C9F3=$0149F3)       | | | | | | 難破船($82C991=$014991)       | | | | ノルフェア($82C923=$014923)       | | ブリンスタ($82C8BD=$0148BD)       クレテリア($82C853=$014853) ■軸指定箇所<$82> 1,アドレス ・上記の『アドレス指定箇所』参照 2,法則 ・04バイトで1つのアイコン(始点がindex$00のアイコン)  01-02バイト X軸  03-04バイト Y軸  $FE FFはエントリー無し ・軸は+$08毎に1スクリーンずつ右にずれる ・以降、同じ法則でindex$01,$02,$03……と続く  登録数はindex$07まで? ・指定した軸が再開する部屋の軸と±2スクリーン以上矛盾しているとアイコンが正しく表示されない 3,例 ・クレテリアのセーブアイコン  $014853 D8 00 28 00 90 00 38 00 FE FF FE FF ……       ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑       | | | | | | | | エントリー無し       | | | | | | Y軸(index$01)       | | | | X軸(index$01)       | | Y軸(index$00)       X軸(index$00) --------------------------------------テキストデータ------------------------------------- ■テキストデータ<$85> 1,アドレス ・$028000($02877E?)以降 2,法則 ・単位は不明 ・02バイトで一文字  01バイト   ダッシュ=$CF   A=$E0   B=$E1   C=$E2   D=$E3   E=$E4   F=$E5   G=$E6   H=$E7   I=$E8   J=$E9   K=$EA   L=$EB   M=$EC   N=$ED   O=$EE   P=$EF   Q=$F0   R=$F1   S=$F2   T=$F3   U=$F4   V=$F5   W=$F6   X=$F7   Y=$F8   Z=$F9  02バイト   紫色=$28   緑色=$38   黄色=$3C  番外   無し=$0E 00   空欄=$4E 28 3,例 ・SPAZERと検索したいなら  $F2 28 EF 28 E0 28 F9 28 E4 28 F1 28  と検索すれば出てくるはず ☆メモ ・白文字   $C5 28=setの左半分   $C6 28=setの右半分   $C7 28=it   $C8 28=&  白文字は定型文のようだ -------------------------------------サムスの基本設定------------------------------------ ■基本設定<$90> 1,アドレス (0)FX1の攻撃力 ・$081E8C   溶岩の攻撃力 ・$081E90   塩酸の攻撃力 (1)垂直方向 ・$081E97   スペースジャンプの受付タイミング ・$081EA1   重力 ・$081EB8   ジャンプ力 ・$081EC4   ハイジャンプ力 ・$081ED0   キッククライム力 ・$081EDC   ハイキッククライム力 ・$081EE8   ダメージの反動力 ・$081EF4   ボムジャンプ力 (2)水平方向(地上1) ・$081F01   ダッシュ(ノーマル,SB共通)力 ・$081F0D   スピードブースター力 ・$081F18   ノーマルダッシュ力 ・$081F25   ??? ・$081F31   ??? ・$081F3D   ??? ・$081F49   ??? (3)水平方向(地上2) ・$081F55   ??? ・$081F61   歩行力 ・$081F6D   垂直ジャンプの移動力 ・$081F79   回転ジャンプの移動力 ・$081F85   モーフィングボールの移動力 ・$081F91   ??? ・$081F9D   落下中の移動力 ・$081FA9   ??? ・$081FB5   モーフィングボール落下中の移動力 ・$081FC1   ??? ・$081FCD   横方向のダメージの反動力 ・$081FD9   ??? ・$081FE4   ??? ・$081FF1   ??? ・$081FFD   ??? ・$082009   ??? ・$082015   ??? ・$082021   スプリングボールの移動力 ・$08202D   スプリングボールジャンプ中の移動力 ・$082039   スプリングボール落下中の移動力 ・$082045   キッククライム(ノーマル,ハイジャンプ共通)の移動力 ・$082051   ??? ・$08205D   ??? ・$082069   ??? ・$082075   ??? ・$082081   高速離脱の移動力 (4)水平方向(水中) ・$08208D   ??? ・$082099   歩行力 ・$0820A6   垂直ジャンプの移動力 ・$0820B1   回転ジャンプの移動力 ・$0820BD   モーフィングボールの移動力 ・$0820C9   ??? ・$0820D5   落下中の移動力 ・$0820E1   ??? ・$0820ED   モーフィングボール落下中の移動力 ・$0820F9   ??? ・$082105   横方向のダメージの反動力 ・$082111   ??? ・$08211D   ??? ・$082129   ??? ・$082135   ??? ・$082141   ??? ・$08214D   ??? ・$082159   スプリングボールの移動力 ・$082165   スプリングボールジャンプ中の移動力 ・$082171   スプリングボール落下中の移動力 ・$08217C   キッククライム(ノーマル,ハイジャンプ共通)の移動力 ・$082189   ??? ・$082195   ??? ・$0821A1   ??? ・$0821AD   ??? ・$0821B9   高速離脱の移動力 ・$0821C5   ??? ・$0821D1   ??? (5)水平方向(溶岩・塩酸内) ・$0821DD   ??? ・$0821E9   歩行力 ・$0821F5   垂直ジャンプの移動力 ・$082201   回転ジャンプの移動力 ・$08220D   モーフィングボールの移動力 ・$082219   ??? ・$082225   落下中の移動力 ・$082231   ??? ・$08223D   モーフィングボール落下中の移動力 ・$082249   ??? ・$082255   横方向のダメージの反動力 ・$082261   ??? ・$08226D   ??? ・$082279   ??? ・$082285   ??? ・$082291   ??? ・$08229D   ??? ・$0822A9   スプリングボールの移動力 ・$0822B5   スプリングボールジャンプ中の移動力 ・$0822C1   スプリングボール落下中の移動力 ・$0822CD   キッククライム(ノーマル,ハイジャンプ共通)の移動力 ・$0822D9   ??? ・$0822E5   ??? ・$0822F1   ??? ・$0822FD   ??? ・$082309   高速離脱の移動力 ・$082315   ??? ・$082321   ??? ※水中と溶岩・塩酸内ではダッシュによる加速が無いので、ダッシュ力などのステータスは存在しない 2,法則 ・12バイト単位(受付タイミング、攻撃力系以外) (攻撃力系)  01-02バイト ダメージ/秒 (受付タイミング系)  01-02バイト 地上でのスペースジャンプ受付開始時間(大きいほど受付開始までの時間がが長い)  03-04バイト 地上でのスペースジャンプ受付可能時間(大きいほど受付可能時間が長い)  05-06バイト 水中と溶岩・塩酸内でのスペースジャンプ受付開始時間  07-08バイト 水中と溶岩・塩酸内でのスペースジャンプ受付可能時間  09-10バイト キッククライム受付範囲 (ジャンプ力系)  01-02バイト 地上の〜力  03-04バイト 水中の〜力  05-06バイト 溶岩・塩酸内の〜力  07-08バイト 区切り($00 00)  09-10バイト 地上での上昇スピードの抵抗(大きいほど少なくなる)  11-12バイト 水中での上昇スピードの抵抗  スプリングボール、スペースジャンプは通常のジャンプと同じ分類のようだ (ダッシュ系)  01-02バイト 初速度  07-08バイト 加速度 (スピードブースター系)  01-02バイト 最大速 (歩行力系)  01-02バイト 初速度  03-04バイト 抵抗  05-06バイト 最大速  09-10バイト キーを離したときの止まりやすさ(大きいほど止まりやすい)  11-12バイト キーを離したときの止まりやすさ2 (移動力系)  01-02バイト 進みにくさ(大きいほど進みにくい)  03-04バイト 加速度  05-06バイト 最大速  07-08バイト 抵抗  09-10バイト ターン時の進みにくさ(大きいほど進みにくい) ☆メモ ・地上の移動力系の11-12バイトは殆ど$00 80で終わる ・水中の移動力系の11-12バイトは殆ど$00 08で終わる ・溶岩・塩酸内の移動力系の11-12バイトは殆ど$00 40で終わる →これらを意識すると数値が見やすい -----------------------------------------武器関連---------------------------------------- ■武器の設定<$90> 1,アドレス ・$084254   ビーム発射間隔 ・$084264   チャージ発射後にビームを撃てるようになるまでの間隔 ・$08427B   ミサイル発射間隔 ・$08427C   スーパーミサイル発射間隔 ・$08427D   パワーボム発射間隔?(パワーボムが1発しか置けない為確認とれず) ・$08427F   ボム発射間隔 ・$084283   ビームオート発射間隔 ・$08428F   ビーム発射時の効果音 ・$0842A7   チャージビーム発射時の効果音 ・$0842C1   ミサイル発射時の効果音 ・$0842C2   スーパーミサイル発射時の効果音 2,法則 ・ビーム系の配列  01,ノーマル  02,ウェイブ  03,アイス  04,アイス/ウェイブ  05,スペイザー  06,スペイザー/ウェイブ  07,スペイザー/アイス  08,スペイザー/ウェイブ/アイス/  09,プラズマ  10,プラズマ/ウェイブ  11,プラズマ/アイス  12,プラズマ/ウェイブ/アイス ・ビーム発射間隔系は01バイト毎に1ビーム  数値が小さいほど発射間隔が早い ・ビーム発射時の効果音は02バイト毎に1ビーム  $01 00=パワーボム  $03 00=ミサイル  $04 00=スーパーミサイル  $05 00=グラップリングビーム(発射時)  $06 00=グラップリングビーム(グラップ時)  $07 00=グラップリングビーム(発射時ショート)  $08 00=チャージ音  $09 00=Xレイ  $0B 00=ノーマルビーム  $0C 00=アイス  $0D 00=ウェイブ  $0E 00=アイス/ウェイブ  $0F 00=スペイザー  $10 00=スペイザー/アイス  $11 00=スペイザー/ウェイブ/アイス/  $12 00=スペイザー/ウェイブ  $13 00=プラズマ  $14 00=プラズマ/アイス  $15 00=プラズマ/ウェイブ/アイス  $16 00=プラズマ/ウェイブ  $17 00=ノーマルビームチャージ  $18 00=アイスチャージ  $19 00=ウェイブチャージ  $1A 00=アイス/ウェイブチャージ  $1B 00=スペイザーチャージ  $1C 00=スペイザー/アイスチャージ  $1D 00=スペイザー/ウェイブ/アイスチャージ  $1E 00=スペイザー/ウェイブチャージ  $1F 00=プラズマチャージ  $20 00=プラズマ/アイスチャージ  $21 00=プラズマ/ウェイブ/アイスチャージ  $22 00=プラズマ/ウェイブチャージ  $23 00=ダイヤモンドダスト  $24 00=ダイヤモンドダスト(ヒット・終了時)  $25 00=スターダストシャワー  $26 00=スターダストシャワー(終了時)  $27 00=エメラルドスプラッシュ  $28 00=アステロイドベルト  $2A 00=回転ジャンプ音  $2E 00=セーブ音  $2F 00=回転ジャンプ音  $30 00=回転ジャンプ音  $31 00=回転ジャンプ音  $33 00=スクリューアタック音  $35 00=ダメージ音  $36 00=ポーズマップ移動音  $37 00=武器切り替え音  $38 00=ポーズ画面切り替え音  $39 00=武器切り替え終了音  $3B 00=ブースト状態初期の音?  $3D 00=自壊ブロック崩壊音  $3E 00=スペースジャンプ音  $3F 00=スペースジャンプ音  $40 00=マザーブレインのハイパービーム音  $41 00=チャージ音(完全チャージ時)  $42 00=敵の声  上記以降の数値は、音楽が止まったり無音 ■武器の攻撃力<$93> 1,アドレス ・$098431   ノーマルビーム ・$0984B5   ウェイブ ・$09849F   アイス ・$0984E1   アイス/ウェイブ ・$098447   スペイザー ・$0984F7   スペイザー/ウェイブ ・$09845D   スペイザー/アイス ・$098473   スペイザー/ウェイブ/アイス/ ・$0984CB   プラズマ ・$09850D   プラズマ/ウェイブ ・$098523   プラズマ/アイス ・$098489   プラズマ/ウェイブ/アイス ・$098539   プラズマ/スペイザー ・$0985D3   プラズマ/スペイザー/ウェイブ ・$0985A7   プラズマ/スペイザー/アイス ・$0985E9   プラズマ/スペイザー/ウェイブ/アイス ・$098539   ノーマルビームチャージ ・$0985D3   ウェイブチャージ ・$0985A7   アイスチャージ ・$0985E9   アイス/ウェイブチャージ ・$09854F   スペイザーチャージ ・$0985FF   スペイザー/ウェイブチャージ ・$098565   スペイザー/アイスチャージ ・$09857B   スペイザー/ウェイブ/アイスチャージ ・$0985BD   プラズマチャージ ・$09862B   プラズマ/ウェイブチャージ ・$098615   プラズマ/アイスチャージ ・$098591   プラズマ/ウェイブ/アイスチャージ ・$098641   ミサイル(プラズマ/スペイザーチャージ&プラズマ/スペイザー/ウェイブチャージ) ・$098657   スーパーミサイル(プラズマ/スペイザー/アイスチャージ) ・$098671   プラズマ/スペイザー/ウェイブ/アイスチャージ ・$098689   アステロイドベルト ・$0985A7   ダイヤモンドダスト ・$09868D   スターダストシャワー ・$0986AB   スターダストシャワー(フィニッシュ時) ・$098685   エメラルドスプラッシュ 2,法則 ・02バイトで攻撃力を示す ・この近辺には武器の画像の並べ方や当たり判定の設定がある。詳細不明 ■シャインスパークダメージ無し 1,アドレス  $0850CE   $CE→$AD  $0850FD   $CE→$AD  $085129   $CE→$AD -------------------------------------------メモ------------------------------------------ ・小ネタ  $00FF00に、   Special thanks      2   Genji Kubota      &  all debug staff.  と書いてある。 ・シャイン関連  $08DAC8   次項の為にシャインスパークタイマーの値を読み込む  $08DACB   シャインスパーク準備状態になった後、その効果音を鳴らし始めるタイミング         シャインスパークタイマーがここに書き込んである数値と同じになった瞬間に効果音を鳴らす  $08DAD1   鳴らす効果音  $08DADA   シャインスパークタイマーを減らす処理  $08F7BC   シャインスパークタイマーの初期値  $08F7BF   シャインスパークタイマーを書き込むRAMアドレス  $08F7C2   サムスをシャイン可能にするために書き込む値  $08F7C5   サムスをシャイン可能にするために書き込む値を書き込むRAMアドレス ・RAM  $7E0A1C   サムスの状態   ここにSamus Posesのプルダウンで登録されている値を書き込むことでサムスが行動を起こす  $7E0A1E   サムスの向き  $7E0A1F   サムスの行動  $7E0A68   シャインスパークタイマー   初期値=$B4  $7E0AA2   Aボタンを押してからシャインが始まるまで/壁に当たってからシャインが終わるまでの時間  $7E0ACC   ここに値$01が書き込まれるとサムスがシャイン可能になる  $7E0B42   サムスのスピード   初速=$08   最速=$0F  $7EC180〜  $7EC19F   サムスのパレット  $7EC000   付近が地形データの読み込み場所?  $7EC060   付近が効果音? ・SPCデータはバイナリのデータをそのままブチ抜いた物の様だ  バイナリで検索をかければ特定可能  どのような形式で記録されているかは不明  他のゲームと差し替えが出来る?