======== 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
===== References =====
* http://smwc.me/1309025
* http://pastebin.com/raw/VeS4qaZP