Table of Contents
Star Select Rendering
The star select screen is rendered using a combination of geo layout functions and behaviors for the stars. Much of the screen uses custom asm to generate the F3D display lists.
The main menu level script (2A6120-2A65B0) contains the level script for the act selector starting at 2A6238. This includes a check on course number (asm 8024BE14), a geo layout for the star select screen (seg 14000408, ROM 2A6528), and a behavior for the spinning stars (seg 13003048, ROM 21CE48).
Level Script
The level script for the star act selector starts at 0x2A6238 and is part of the main menu level script (2A6120-2A65B0).
2A6238 [118]: AccumAsm1 11 08 0000 8024BE14 2A6240 [120]: CondJump 0C 0C 0200 00000000 140001C0 2A624C [12C]: StartLoad 1B 04 0000 2A6250 [130]: LoadASM 16 10 0000 8016F000 0021F4C0 00269EA0 2A6260 [140]: MIO0->Seg 18 0C 0007 002A65B0 002ABCA0 2A626C [14C]: EndLoad 1D 04 0000 2A6270 [150]: StartArea 1F 08 0200 14000408 2A6278 [158]: PlaceObj 24 18 1F00 24181F00 0000FF9C 00000000 00000000 04000000 13003048 2A6290 [170]: Collision 2E 08 0000 0700DE30 2A6298 [178]: EndArea 20 04 0000 2A629C [17C]: AllocPool 1E 04 0000 2A62A0 [180]: 29 04 0200 2A62A4 [184]: FadeColor 33 08 0010 FFFFFF00 2A62AC [18C]: Delay03 03 04 0010 2A62B0 [190]: Music37 37 04 000D 2A62B4 [194]: AccumAsm1 11 08 0000 80177560 2A62BC [19C]: AccumAsm2 12 08 0000 80177610 2A62C4 [1A4]: GetPut 3C 04 0002 2A62C8 [1A8]: 38 04 00BE 2A62CC [1AC]: FadeColor 33 08 0110 FFFFFF00 2A62D4 [1B4]: Delay03 03 04 0010 2A62D8 [1B8]: Cleanup 1C 04 0000 2A62DC [1BC]: Delay04 04 04 0001 2A62E0 [1C0]: EndLevel 02 04 0000
Geo Layout
The geo layout for the act selector is defined by the StartArea 0x1F level command above. (seg 14000408, ROM 2A6528)
2A6528: [ 08 00 00 0A 00A00078 00A00078 ] // Set screen rendering area 2A6534: [ 04 00 00 00 ] 2A6538: [ 0C 00 00 00 ] 2A653C: [ 04 00 00 00 ] 2A6540: [ 09 00 00 64 ] 2A6544: [ 04 00 00 00 ] 2A6548: [ 19 00 FFFF 00000000 // Draw solid color background (RGBA) 2A6550: [ 05 00 00 00 ] 2A6554: [ 05 00 00 00 ] 2A6558: [ 0C 01 00 00 ] 2A655C: [ 04 00 00 00 ] 2A6560: [ 0A 00 002D 0064 61A8 ] 2A6568: [ 04 00 00 00 ] 2A656C: [ 0F 00 0000 0000 0000 03E8 0000 0000 0000 00000000 ] 2A6580: [ 04 00 00 00 ] 2A6584: [ 17 00 00 00 ] // Setup display lists for level objects 2A6588: [ 05 00 00 00 ] 2A658C: [ 05 00 00 00 ] 2A6590: [ 05 00 00 00 ] 2A6594: [ 0C 00 00 00 ] 2A6598: [ 04 00 00 00 ] 2A659C: [ 18 00 00 00 80177518 ] // Create display list(s) from the ASM function 0x80177518 2A65A4: [ 05 00 00 00 ] 2A65A8: [ 05 00 00 00 ] 2A65AC: [ 01 00 00 00 ] // End geometry layout
Star Behavior Script
The rotating star behavior (seg 13003048, ROM 21CE48) contains two ASM routines 80176B20 and 80176DF0 which generate the act selection stars and rotate the selected star.
21CE48 [3048]: 00 08 00 00 21CE4C [304C]: 11 01 00 01 21CE50 [3050]: 0C 00 00 00 80176B20 // ROM: 0x226FE0, Creates menu stars 21CE58 [3058]: 08 00 00 00 21CE5C [305C]: 0C 00 00 00 80176DF0 // ROM: 0x2272B0, Rotate stars/select act 21CE64 [3064]: 09 00 00 00