This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
super_mario_64:level_commands [2017/07/09 12:31] david [24: Place Object] Updated behavior parameters info |
super_mario_64:level_commands [2017/12/03 14:10] (current) david Added info on command 0x1C |
||
---|---|---|---|
Line 314: | Line 314: | ||
---- | ---- | ||
- | ==== 1C: ?? ==== | + | ==== 1C: Level & Memory Cleanup ==== |
- | Always follows 0x12 command. Used near end of level layout. | + | |
''1C 04 00 00'' | ''1C 04 00 00'' | ||
+ | |||
+ | * Frees data in pool allocated from level script | ||
+ | * Cleanups level related stuff (level objects, pointers, etc) | ||
+ | * Cleanups geometry layout data | ||
+ | * Cleanups all 8 area structs | ||
+ | |||
+ | More detailed notes can be found here: [[https://pastebin.com/raw/GjDsJYqq]] | ||
---- | ---- | ||
Line 328: | Line 334: | ||
---- | ---- | ||
- | ==== 1E: ?? ==== | + | ==== 1E: Allocate Level Data From Pool ==== |
- | Command used near the end of level layout. Maybe builds level collision? | + | |
+ | Allocates data from the pool and reset a couple variables | ||
''1E 04 00 00'' | ''1E 04 00 00'' | ||
+ | |||
+ | * Reallocates memory for the geometry layout node system. | ||
+ | * Allocates 0xDAC0 bytes and stores pointer to 0x8038EE98. Not sure what this is, but it is related to collision. | ||
+ | * Allocates memory for collision data. Vanilla SM64 allocates enough space for only 2,300 collision triangles. Newer versions of Skelux's SM64 editor allocate enough space for 32,767 triangles. | ||
+ | * Sets halfword at address 0x8036125C to 0. (0x8036125C seems to be just a flag that is set when Mario enters into area #2 of any level) | ||
+ | * Sets byte at address 0x803613FE to 0. (0x803613FE seems to be a read-only byte that tells you how many red coins Mario has collected so far) | ||
+ | |||
+ | More detailed notes can be found here: [[https://pastebin.com/raw/XkCfkFyT]] | ||
---- | ---- |