User Tools

Site Tools


super_mario_64:star_select_rendering

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

super_mario_64/star_select_rendering.txt · Last modified: 2018/10/14 12:52 by miles