So I've been looking through the act selector menu (which is like 95% ASM code), and it turns out that it's pretty easy to move stuff around. You can even add stuff if you rewrite some of the code.
The 2D objects like the text, coin counter, and the wooden course image are all drawn by the function 0x80177518 (ROM: 0x2279D8) at the Geo Layout 0x18 command at the ROM address 0x2A659C.
002A659C / 1400047C [ 18 00 00 00 80 17 75 18 ]
The act select stars are a 0x24 object with the behavior 0x13003048
00 08 00 00
11 01 00 01
0C 00 00 00 80 17 6B 20 // ROM: 0x226FE0, Creates menu stars
08 00 00 00
0C 00 00 00 80 17 6D F0 // ROM: 0x2272B0, Rotate current star & select act
09 00 00 00
The 100 coin star that appears in the menu has it's own function at 0x80176A74. It only takes 1 parameter, which is the level's collected star data (byte).
You can also enable the act selector every course in the game by changing the byte value at 0x6F3B.
0x6F38: SLTI AT, T8, 0x0010
Basically what this line is doing is to check if the course number is smaller than 16. The regular course numbers go from 1 to 15, but there are actually 25 (0 to 24) defined courses in the game. Course 0 is normally ignored. If you tried to enable the act selector for course #0, then the game will crash. The other courses are fine though.
Course #0 = Castle grounds, Castle courtyard, and Inside Castle
Course #16 = Bowser 1 course & Bowser 1 fight
Course #17 = Bowser 2 course & Bowser 2 fight
Course #18 = Bowser 3 course & Bowser 3 fight
Course #19 = Princess's secret slide
Course #20 = Metal Cap
Course #21 = Wing Cap
Course #22 = Vanish Cap
Course #23 = Rainbow Clouds
Course #24 = Secret aquarium
Here are my notes so far (unorganized and a little messy):
Act selector menu: http://pastebin.com/raw/VeS4qaZP
function 0x80177518 disassembled (using queueRAM's tool): http://pastebin.com/raw/qQmKrqjP