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 [2019/10/14 15:58] – Changed confusing 'event headers' to clearer 'state conditions' 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 483: | 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, | ||