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/05/31 14:51] – [Door header] Noted negative Samus door offset p.jboy | super:technical_information:data_structures [2020/06/16 20:51] – [Level data] Update to BTS list p.jboy | ||
---|---|---|---|
Line 10: | Line 10: | ||
| | | | | | | | | | | | | | | | | | ||
| | | | | | | | | | | | | | | | | | | | ||
- | | | | | | | | | | | | + | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | ||
| | | | | | | | | | | | | | | | | | | | | | | | ||
Line 18: | Line 18: | ||
They are variable length (due to the event header list) with '' | They are variable length (due to the event header list) with '' | ||
- | The **event header | + | The **state conditions |
- | Due to this, event headers | + | Due to this, state conditions |
<hidden **Area indices**> | <hidden **Area indices**> | ||
Line 37: | Line 37: | ||
* The **room width** may not exceed 15 due to the way block collision calculations are implemented | * The **room width** may not exceed 15 due to the way block collision calculations are implemented | ||
* **Room width** * **room height** may not exceed 0x50 due to memory constraints | * **Room width** * **room height** may not exceed 0x50 due to memory constraints | ||
- | * The **up scroller** defines the threshold Y position that Samus needs to exceed (relative to the screen) for the screen to start scolling | + | * The **up scroller** defines the threshold Y position that Samus needs to exceed (relative to the screen) for the screen to start scrolling |
- | * The **down scroller** defines the threshold Y position that Samus needs to exceed (relative to the screen) for the screen to start scolling | + | * The **down scroller** defines the threshold Y position that Samus needs to exceed (relative to the screen) for the screen to start scrolling |
* The **CRE bitset** defines some flags that affect how the CRE is loaded during door transitions: | * The **CRE bitset** defines some flags that affect how the CRE is loaded during door transitions: | ||
Line 45: | Line 45: | ||
| 4 | Load extra large tileset | | | 4 | Load extra large tileset | | ||
- | ===== Event header | + | ===== State conditions |
- | | + | |
- | | | + | | |
| | ___ State header pointer | | | ___ State header pointer | ||
| | | | | | | | ||
- | eeee [...] ssss ; First event header | + | eeee [...] ssss ; First state condition |
- | eeee [...] ssss ; Second | + | eeee [...] ssss ; Second |
- | [...] ; Other event headers | + | [...] ; Other state conditions |
- | E5E6 ; Default | + | E5E6 ; Default |
- | **Events | + | **State conditions** are two-byte pointers to code in bank $8F that may have parameters. |
- | If the check defined in the **event conditions** is passed, the **state header pointer** in that event header is used to load the room. | + | If the check defined in the **state conditions** is passed, the **state header pointer** in that state condition |
- | The only exception is event condition $E5E6, the default | + | The only exception is state condition $E5E6, the default, which doesn' |
- | <hidden List of events | + | <hidden List of state conditions |
^ Condition ^ Parameters ^ Description ^ | ^ Condition ^ Parameters ^ Description ^ | ||
| $E5E6 | | Default | | | $E5E6 | | Default | | ||
Line 316: | Line 316: | ||
| ::: | ::: | 2 || Air only. Air spike (10h damage) | | | ::: | ::: | 2 || Air only. Air spike (10h damage) | | ||
| ::: | ::: | 3 || Solid only. Draygon' | | ::: | ::: | 3 || Solid only. Draygon' | ||
+ | | ::: | ::: | Eh || Solid only. X-rayable block (used in Blue Brinstar boulder room) | | ||
| ::: | ::: | Fh || Solid only. Enemy breakable block (used in Shaktool' | | ::: | ::: | Fh || Solid only. Enemy breakable block (used in Shaktool' | ||
| 3 / Bh | Special | 0 || 1x1 respawning crumble block | | | 3 / Bh | Special | 0 || 1x1 respawning crumble block | | ||
Line 346: | Line 347: | ||
| ::: | ::: | ::: | 82h | Respawning speed block, slower crumble animation | | | ::: | ::: | ::: | 82h | Respawning speed block, slower crumble animation | | ||
| ::: | ::: | ::: | 83h | Speed block, slower crumble animation | | | ::: | ::: | ::: | 83h | Speed block, slower crumble animation | | ||
- | | ::: | ::: | ::: | 84h | Respawning speed block (used by dechora | + | | ::: | ::: | ::: | 84h | Respawning speed block (used by dachora |
| ::: | ::: | ::: | 85h | Speed boost block | | | ::: | ::: | ::: | 85h | Speed boost block | | ||
| ::: | ::: | Norfair | 83h | Lower Norfair chozo hand trigger | | | ::: | ::: | Norfair | 83h | Lower Norfair chozo hand trigger | | ||
Line 375: | Line 376: | ||
| ::: | ::: | 9 || Power bomb block | | | ::: | ::: | 9 || Power bomb block | | ||
| ::: | ::: | Ah || Respawning super missile block | | | ::: | ::: | Ah || Respawning super missile block | | ||
- | | ::: | ::: | Bh || Super missile block | | + | | ::: | ::: | Bh || Super missile block | |
+ | | ::: | ::: | Ch || Fake super missile block (solid block but shows super missile block when x-rayed) | | ||
+ | | ::: | ::: | Dh || Fake super missile block | | ||
+ | | ::: | ::: | Eh || Fake super missile block | | ||
+ | | ::: | ::: | Fh || Fake super missile block | | ||
| ::: | ::: | 10h || Gate blocks | | | ::: | ::: | 10h || Gate blocks | | ||
| ::: | ::: | 40h || Blue door facing left | | | ::: | ::: | 40h || Blue door facing left | | ||
Line 392: | Line 397: | ||
| ::: | ::: | 4Dh || Right orange gate trigger | | | ::: | ::: | 4Dh || Right orange gate trigger | | ||
| ::: | ::: | 4Fh || Critters escape block | | | ::: | ::: | 4Fh || Critters escape block | | ||
+ | | Eh | Grapple block | 0 || Generic grapple block | | ||
+ | | ::: | ::: | 1 || Respawning crumbling grapple block | | ||
+ | | ::: | ::: | 2 || Non-respawning crumbling grapple block | | ||
+ | | ::: | ::: | 80h+ || Grapple-through block | | ||
</ | </ | ||
Line 473: | Line 482: | ||
| | | | ||
| | | | | | ||
- | | | | | + | | | | |
| | | | | | | | | | ||
- | | | | | | | + | | | | | | |
| | | | | | | | | | | | | | ||
- | | | | | | | | _ General purpose parameter (speed2 | + | | | | | | | | _ General purpose parameter (speed 2 in SMILE) |
| | | | | | | | | | | | | | | | | | ||
iiii xxxx yyyy oooo pppp gggg aaaa bbbb ; First enemy | iiii xxxx yyyy oooo pppp gggg aaaa bbbb ; First enemy | ||
Line 483: | Line 492: | ||
[...] ; 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, | ||