This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
super:technical_information:data_structures [2019/02/21 03:03] – Palette FX objects p.jboy | super:technical_information:data_structures [2019/07/07 14:25] – [Enemy population] p.jboy | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Room header ====== | ====== Room header ====== | ||
- | _______________________________________ | + | ____________________________________ |
- | | ____________________________________ | + | | _________________________________ |
- | | | _________________________________ | + | | | ______________________________ |
- | | | | ______________________________ | + | | | | ___________________________ |
- | | | | | ___________________________ | + | | | | | ________________________ |
- | | | | | | ________________________ | + | | | | | | _____________________ |
- | | | | | | | _____________________ | + | | | | | | | __________________ |
- | | | | | | | | __________________ | + | | | | | | | | _______________ |
- | | | | | | | | | _______________ | + | | | | | | | | | ____________ |
- | | | | | | | | | | ____________ | + | | | | | | | | | | _________ |
- | | | | | | | | | | | _______ Optional event headers | + | | | | | | | | | | | ____ Event header list |
- | | | | | | | | | | | | _ Mandatory event header, specifies that the default state follows this room header | + | | | | | | | | | | | | |
- | | | | | | | | | | | | + | | | | | | | | | | | | |
- | ii aa xx yy ww hh uu dd cc dddd [...] E5E6 | + | ii aa xx yy ww hh uu dd cc dddd [...] |
Room headers define rooms, they exist in bank $8F and room header pointers are what SMILE displays as a dropdown box for room selection. | Room headers define rooms, they exist in bank $8F and room header pointers are what SMILE displays as a dropdown box for room selection. | ||
- | They are variable length (due to the optional | + | They are variable length (due to the event header list) with '' |
- | The **event | + | The **event |
Due to this, event headers must be specified in backwards chronological order. | Due to this, event headers must be specified in backwards chronological order. | ||
Line 45: | Line 45: | ||
| 4 | Load extra large tileset | | | 4 | Load extra large tileset | | ||
- | ===== Event header ===== | + | ===== Event header |
- | ____________ | + | ______________ |
- | | _______ | + | | _________ |
- | | | | + | | | |
| | | | | | | | ||
- | eeee [...] ssss | + | eeee [...] ssss ; First event header |
+ | eeee [...] ssss ; Second event header | ||
+ | [...] ; Other event headers | ||
+ | E5E6 ; Default event header (terminator) | ||
- | **Events** are two-byte pointers to code in bank $8F that may have parameters depending on the event in question. | + | **Events |
- | If the check defined in the event is passed, the state header pointer | + | If the check defined in the **event conditions** |
- | The only exception is event $E5E6, the default event, which doesn' | + | The only exception is event condition |
<hidden List of events used in Super Metroid> | <hidden List of events used in Super Metroid> | ||
- | ^ Event ^ Event parameters | + | ^ Condition |
| $E5E6 | | Default | | | $E5E6 | | Default | | ||
| $E5EB | '' | | $E5EB | '' | ||
Line 86: | Line 89: | ||
| Eh | Zebes timebomb set | | | Eh | Zebes timebomb set | | ||
| Fh | Critters escaped | | | Fh | Critters escaped | | ||
- | | 10 | 1st Metroid hall cleared | | + | | 10h | 1st Metroid hall cleared | |
- | | 11 | 1st Metroid shaft cleared | | + | | 11h | 1st Metroid shaft cleared | |
- | | 12 | 2nd Metroid hall cleared | | + | | 12h | 2nd Metroid hall cleared | |
- | | 13 | 2nd Metroid shaft cleared | | + | | 13h | 2nd Metroid shaft cleared | |
- | | 14 | //Unused// | | + | | 14h | //Unused// | |
- | | 15 | Outran speed booster lavaquake | | + | | 15h | Outran speed booster lavaquake | |
Boss bits are given as follows: | Boss bits are given as follows: | ||
Line 128: | Line 131: | ||
Door headers define doors, they exist in bank $83 and have a fixed length of 12 bytes. | Door headers define doors, they exist in bank $83 and have a fixed length of 12 bytes. | ||
The **door ASM** can execute any arbitrary ASM and is often used to set scroll values for the new room where the door would normally be hidden inside a red scroll. | The **door ASM** can execute any arbitrary ASM and is often used to set scroll values for the new room where the door would normally be hidden inside a red scroll. | ||
+ | If the **distance from door to spawn Samus** is negative (8000h..FFFFh), | ||
The **elevator properties** are as follows: | The **elevator properties** are as follows: | ||
Line 133: | Line 137: | ||
| 0x80 | Door is an elevator | | | 0x80 | Door is an elevator | | ||
| 0x40 | Switch map to new area | | | 0x40 | Switch map to new area | | ||
- | | 0x0i | Marks elevator i as used | | + | | 0x0i | Marks elevator |
The **orientation** values are as follows: | The **orientation** values are as follows: | ||
Line 153: | Line 157: | ||
| | | | | | | | | | | | | | | | ||
| | | | | | | | | | | | | | | | | | ||
- | | | | | | | | | | ________________________ | + | | | | | | | | | | __________________________ |
- | | | | | | | | | | | | + | | | | | | | | | | | _____________________ |
- | | | | | | | | | | | | ______________ | + | | | | | | | | | | | | ________________ |
- | | | | | | | | | | | | | _________ | + | | | | | | | | | | | | | ___________ |
- | | | | | | | | | | | | | | ____ Library background | + | | | | | | | | | | | | | | ______ |
- | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | |
- | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | |
llllll tt MM mm ffff eeee EEEE xx yy ssss xxxx AAAA pppp bbbb aaaa | llllll tt MM mm ffff eeee EEEE xx yy ssss xxxx AAAA pppp bbbb aaaa | ||
Line 479: | Line 483: | ||
[...] ; Other enemies | [...] ; Other enemies | ||
FFFF ; Terminator | FFFF ; Terminator | ||
- | | + | |
Enemy population defines the placement of enemies, as well as some generic and enemy specific properties. | Enemy population defines the placement of enemies, as well as some generic and enemy specific properties. | ||
- | They' | + | They' |
The **initialisation parameter** is overwritten by generic enemy routines and so is often only used during enemy initialisation, | The **initialisation parameter** is overwritten by generic enemy routines and so is often only used during enemy initialisation, | ||
Line 549: | Line 553: | ||
The **X/Y position** is specified in (16px x 16px) block units. | The **X/Y position** is specified in (16px x 16px) block units. | ||
The **block** uses the level data block format, except that the block type is ignored. | The **block** uses the level data block format, except that the block type is ignored. | ||
+ | |||
+ | Note that [[http:// | ||
==== PLM population ==== | ==== PLM population ==== |