User Tools

Site Tools


super_mario_64:geometry_layout_commands

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
super_mario_64:geometry_layout_commands [2018/10/19 06:06]
David [09: Set Background Frustum Matrix] Added documentation on geometry layout command 0x09
super_mario_64:geometry_layout_commands [2018/10/19 08:00]
David Added documentation for the geometry layout commands: [06: Store Current Node Pointer To Table (Unused)] and [07: Set/OR/AND Node Flags (Unused)]
Line 89: Line 89:
 ---- ----
  
-==== 06: Unused ====+==== 06: Store Current Node Pointer To Table (Unused==== 
 + 
 +''​06 00 [<color darkred>​XX XX</​color>​]''​ 
 + 
 +Stores the pointer of the last node into the table at address (*0x8038BCAC). This table is usually empty except for the first entry (index 0), which holds the pointer to the node created by the geo layout 0x0F command. The size of the table is defined by the geo layout 0x08 command. 
 + 
 +| <color darkred>​X</​color>​ | Index in table to store pointer | 
 + 
 +  Example in a geometry layout: 
 +  0A 01 002D 0064 4E20 8029AA3C // Set camera frustum (FOV = 45, Near = 100, Far = 20000) 
 +  06 00 00 01 // Store pointer of the 0x0A command node to address ((*0x8038BCAC) + 4)
  
 ---- ----
  
-==== 07: Unused ====+==== 07: Set/OR/AND Node Flags (Unused==== 
 + 
 +''​06 [<color darkred>​OP</​color>​] [<color darkgreen>​VV VV</​color>​]''​ 
 + 
 +Does an operation on the flags of the current node. (Flags are at offset 0x02 of the GraphNode structure) 
 + 
 +| <color darkred>​OP</​color>​ | Operation (0 = Set flags to value, 1 = OR flags with value, 2 = AND flags with value) | 
 +| <color darkgreen>​V</​color>​ | Value | 
 + 
 +  Example in a geometry layout: 
 +  0A 01 002D 0064 4E20 8029AA3C // Set camera frustum (FOV = 45, Near = 100, Far = 20000) 
 +  07 00 00 01 // Set Node flags of 0x0A command to be 0x0001 
 +  07 01 01 00 // OR Node flags with 0x0100 
 +  07 02 00 01 // AND Node flags with 0x0001
  
 ---- ----
Line 102: Line 125:
 ''​08 00 00 [<color darkgrey>​AA</​color>​] [<color darkred>​XX XX</​color>​] [<color darkgreen>​YY YY</​color>​] [<color darkblue>​WW WW</​color>​] [<color purple>​HH HH</​color>​]''​ ''​08 00 00 [<color darkgrey>​AA</​color>​] [<color darkred>​XX XX</​color>​] [<color darkgreen>​YY YY</​color>​] [<color darkblue>​WW WW</​color>​] [<color purple>​HH HH</​color>​]''​
  
-| <color darkgrey>​A</​color>​ | Either 00 (mario faceor 0A (all other levels) |+| <color darkgrey>​A</​color>​ | Number of entries ​(minus 2to allocate in pointer table at address ​(*0x8038BCAC). Usually set to 0x0A for levels, and 0 for mario face. Used with the geometry layout 0x06 command.  ​|
 | <color darkred>​X</​color>​ | X position | | <color darkred>​X</​color>​ | X position |
 | <color darkgreen>​Y</​color>​ | Y position | | <color darkgreen>​Y</​color>​ | Y position |
super_mario_64/geometry_layout_commands.txt · Last modified: 2019/11/03 14:23 by jesusyoshi54