User Tools

Site Tools

“It's not copyright infringement - You can see the differences in the pixels”

super:technical_information:data_structures

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
super:technical_information:data_structures [2019/07/07 14:25]
p.jboy [Enemy population]
super:technical_information:data_structures [2019/10/14 15:58] (current)
p.jboy Changed confusing 'event headers' to clearer 'state conditions'
Line 10: Line 10:
   |  |  |  |  |  |  |  |   ​____________ CRE bitset   |  |  |  |  |  |  |  |   ​____________ CRE bitset
   |  |  |  |  |  |  |  |  |   ​_________ Door list pointer   |  |  |  |  |  |  |  |  |   ​_________ Door list pointer
-  |  |  |  |  |  |  |  |  |  |     ​____ ​Event header ​list+  |  |  |  |  |  |  |  |  |  |     ​____ ​State conditions ​list
   |  |  |  |  |  |  |  |  |  |    |   |  |  |  |  |  |  |  |  |  |    |
   |  |  |  |  |  |  |  |  |  |    |   |  |  |  |  |  |  |  |  |  |    |
Line 18: Line 18:
 They are variable length (due to the event header list) with ''​E5E6''​ as a terminator. They are variable length (due to the event header list) with ''​E5E6''​ as a terminator.
  
-The **event header ​list** defines conditions to load alternative state headers, they are checked //in order// and the first event header ​whose check passes ​is to determine ​the state header to load. +The **state conditions ​list** defines conditions to load alternative state headers, they are checked //in order// and the first state condition ​whose check passes ​determines ​the state header to load. 
-Due to this, event headers ​must be specified in backwards chronological order.+Due to this, state conditions ​must be specified in backwards chronological order.
  
 <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 ​downwards when the camera is at the top of the room +  * The **up scroller** defines the threshold Y position that Samus needs to exceed (relative to the screen) for the screen to start scrolling ​downwards when the camera is at the top of the room 
-  * The **down scroller** defines the threshold Y position that Samus needs to exceed (relative to the screen) for the screen to start scolling ​upwards when the camera is at the bottom of the room+  * The **down scroller** defines the threshold Y position that Samus needs to exceed (relative to the screen) for the screen to start scrolling ​upwards when the camera is at the bottom of the room
   * 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 ​list ===== +===== State conditions ​list ===== 
-   ​______________ ​Event condition +   ​______________ ​State condition 
-  |     ​_________ ​Event condition parameters+  |     ​_________ ​State condition parameters
   |    |      ___ State header pointer   |    |      ___ State header pointer
   |    |     |   |    |     |
-  eeee [...] ssss ; First event header +  eeee [...] ssss ; First state condition 
-  eeee [...] ssss ; Second ​event header +  eeee [...] ssss ; Second ​state condition 
-  [...]           ; Other event headers +  [...]           ; Other state conditions 
-  E5E6            ; Default ​event header ​(terminator)+  E5E6            ; Default ​state condition ​(terminator)
  
-**Events ​conditions** are two-byte pointers to code in bank $8F that may have parameters ​depending on the event in question+**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 ​header is used to load the room. 
-The only exception is event condition $E5E6, the default ​event, which doesn'​t have a **state header pointer** (the default state header simply follows this event header instead).+The only exception is state condition $E5E6, the default, which doesn'​t have a **state header pointer** (the default state header simply follows this state condition ​header instead).
  
-<hidden List of events ​used in Super Metroid>+<hidden List of state conditions ​used in Super Metroid>
 ^ Condition ^ Parameters ^ Description ^ ^ Condition ^ Parameters ^ Description ^
 | $E5E6 | | Default | | $E5E6 | | Default |
super/technical_information/data_structures.txt · Last modified: 2019/10/14 15:58 by p.jboy