User Tools

Site Tools


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 revisionPrevious revision
Next revisionBoth sides next revision
super:technical_information:data_structures [2019/07/07 14:25] – [Enemy population] p.jboysuper:technical_information:data_structures [2019/10/14 15:58] – Changed confusing 'event headers' to clearer 'state conditions' p.jboy
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: 2024/03/22 16:09 by p.jboy