• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Character Selection Screen Documentation

thekugelmeister

Smash Rookie
Joined
May 24, 2016
Messages
1
CSS Documentation

I can't explain why I decided to start here, but I chose to start my exploration of Melee development with the CSS. After a lot of scrubbing through forums searching for relevant information, I had compiled a good chunk of relevant information and had gotten a good start on describing things that I couldn't personally find information on somewhere else.

Then over the last few weeks, I began noticing people asking questions about the CSS and SSS in a number of different places (with varying degrees of having those questions answered). I know that I'm not going to be able to finish this project this week in particular, but since there seemed to be some interest I figured that I should post my compiled findings in case it helped anyone with their own work.

NOTES:
  1. This is my first attempt at getting information out in a comprehensible manner for this forum. Let me know if I'm a) doing it wrong b) unclear c) wasting my time because someone else has done it already
  2. My work on characterizing the joint/bone structures is incomplete but underway. Hopefully I can continue working on this some time next week.
TODO:
  1. Figure out what coordinate spaces each joint/bone is placed in; I don't want to have to go through by hand and figure out the limits on where I can place each individual icon just because I can't map between relevant spaces.
  2. Figure out what some of those unknown structures are (especially the ones which I think should be related to the CSPs).
  3. Given all information on the structure of the screen, write a script for modifying the appropriate files completely in a sane manner, such that someone could rebuild the CSS easily

CSS Selection Regions
Credit to Achilles1515

The interactable areas for each icon on the CSS are loaded into memory from Start.dol. Changing the appropriate values here only changes where you can place your selection puck, not the placement of the icon itself. Doing both alterations in concert will most likely have the desired effect.

...Unless of course you are sadistic and want to see people cry in frustration as they try to pick Fox, only to be assigned Kirby. But you didn't get that idea from me...

Code:
---------------------------------------------
---RAM Addresses for CSS selection regions---
---------------------------------------------
For each character, a region of 7 words controls the selectable region
for that character on the CSS.

Word Definitions (in order of increasing RAM address for a given region):
* Character Specification (Byes: AA BB CC DD)-
   - AA = CSP to show
   - BB = Character that is chosen upon selecting that icon
   - CC = Selectability (00 --> not selectable, 02 --> selectable)
   - DD = UNKNOWN
* UNKNOWN
* UNKNOWN
* X-min of selectable region (float)
* X-max of selectable region (float)
* Y-max of selectable region (float)
* Y-min of selectable region (float)

Start.dol offsets / RAM Addresses By Character (1st word in region):
+----------------+-----------------+----------------+
|Characters      |Start.dol offsets|RAM Addresses   |
|==========      |=================|=============   |
+----------------+-----------------+----------------+
|Dr. Mario       |003edb30         |003f0b24        |
+----------------+-----------------+----------------+
|Mario           |003edb4c         |003f0b40        |
+----------------+-----------------+----------------+
|Luigi           |003edb68         |003f0b5c        |
+----------------+-----------------+----------------+
|Bowser          |003edb84         |003f0b78        |
+----------------+-----------------+----------------+
|Peach           |003edba0         |003f0b94        |
+----------------+-----------------+----------------+
|Yoshi           |003edbbc         |003f0bb0        |
+----------------+-----------------+----------------+
|DK              |003edbd8         |003f0bcc        |
+----------------+-----------------+----------------+
|C. Falcon       |003edbf4         |003f0be8        |
+----------------+-----------------+----------------+
|Ganondorf       |003edc10         |003f0c04        |
+----------------+-----------------+----------------+
|Falco           |003edc2c         |003f0c20        |
+----------------+-----------------+----------------+
|Fox             |0033edc48        |003f0c3c        |
+----------------+-----------------+----------------+
|Ness            |003edc64         |003f0c58        |
+----------------+-----------------+----------------+
|Ice Climbers    |003edc80         |003f0c74        |
+----------------+-----------------+----------------+
|Kirby           |003edc9c         |003f0c90        |
+----------------+-----------------+----------------+
|Samus           |003edcb8         |003f0cac        |
+----------------+-----------------+----------------+
|Zelda           |003edcd4         |003f0cc8        |
+----------------+-----------------+----------------+
|Link            |003edcf0         |003f0ce4        |
+----------------+-----------------+----------------+
|Young Link      |003edd0c         |003f0d00        |
+----------------+-----------------+----------------+
|Pichu           |003edd28         |003f0d1c        |
+----------------+-----------------+----------------+
|Pikachu         |003edd44         |003f0d38        |
+----------------+-----------------+----------------+
|Jigglypuff      |003edd60         |003f0d54        |
+----------------+-----------------+----------------+
|Mewtwo          |003edd7c         |003f0d70        |
+----------------+-----------------+----------------+
|Mr. Game & Watch|003edd98         |003f0d8c        |
+----------------+-----------------+----------------+
|Marth           |003eddb4         |003f0da8        |
+----------------+-----------------+----------------+
|Roy             |003eddd0         |003f0dc4        |
+----------------+-----------------+----------------+

CSS Bone Documentation

This is the meat of what I have accomplished. Thanks to Achilles' identification of this function and its role, I was able to construct a list of bones loaded for CSS display. Then I was able to spend a good while adjusting values in these bone structures and using the results to determine what each bone represented.
NOTE: This process is not in any way complete. There are some holes in my understanding which need filling, and therefore some of these bones have not yet been identified. Furthermore, I am only part of the way through this process. Specifically, I am currently working on identifying parts of the CSPs. Below are listed the fruits of my labor.
Code:
*****These joints start at file offset 0x4688 in MnSlChr.dat
*****Therefore subtract 0x80bec720 from these offsets for file offsets
80bf0da8
80bf0de8
80bf0e28    first one @ z = -3893
80bf0e68
80bf0ea8
80bf0ee8    last one @ z = -3893
80bf0f28
80bf0f68    first one @ z = -4090
80bf0fa8
80bf0fe8
80bf1028    last one @ z = -4090
80bf1068
80bf10a8    first one @ z = -186
80bf10e8
80bf1128
80bf1168    last one @ z = -186
80bf11a8
80bf11e8    first one @ z = 287
80bf1228
80bf1268
80bf12a8    last one @ z = 287
80bf12e8

*****These joints start at file offset 0x358288 in MnSlChr.dat
*****Therefore subtract 0x80bec460 from these offsets for file offsets
****************************

80f446e8    The entire CSS (minus the "Survival" etc. message at the top)
80f44728    Underlay...? It's the grey stuff at the top and bottom, including "VS"

****************************

80f44768    The set of the 6 "extra" CSS icons

NOTE: These bone structures come in pairs, and editing different things in each of them affects the icon differently.
80f447a8    Dr. Mario
80f447e8    ????

80f44828    Ganondorf
80f44868    ????

80f448a8    Falco
80f448e8   ????

80f44928    Young Link
80f44968   ????

80f449a8    Pichu
80f449e8   ????

80f44a28    Roy
80f44a68   ????

****************************

80f44aa8    The set of the CSS icons in the main area

80f44ae8    Mario
80f44b28    Luigi
80f44b68    Bowser
80f44ba8    Peach
80f44be8    Yoshi
80f44c28    DK
80f44c68    C. Falcon
80f44ca8    Fox
80f44ce8    Ness
80f44d28    Ice Climbers
80f44d68    Kirby
80f44da8    Samus
80f44de8    Zelda
80f44e28    Link
80f44e68    Pikachu
80f44ea8    Jigglypuff
80f44ee8    Mewtwo
80f44f28    Mr. Game & Watch
80f44f68    Marth

****************************

80f44fa8    "MELEE" and the back button
80f44fe8    "MELEE"

80f45028    ????
80f45068    ????

80f450a8    "BACK" on back button

****************************

80f450e8    All CSP Borders
80f45128    P1 CSP Border
80f45168    P2 CSP Border
80f451a8    P3 CSP Border
80f451e8    P4 CSP Border

80f45228    All series icons in backgrounds of CSPs
80f45268    P1
80f452a8    P2
80f452e8    P3
80f45328    P4

80f45368    All CSPs
80f453a8    P1
80f453e8    P2
80f45428    P3
80f45468    P4

80f454a8    All Team Color Indicators
80f454e8    P1
80f45528    P2
80f45568    P3
80f455a8    P4

80f455e8    All Lower 3rd Backgrounds for CSPs (inc. CPU Level stuff)

80f45628    CPU Level Stuff for P1
80f45698    CPU Level Background for P1 (top section?)
80f456d8    CPU Level Slider for P1
80f45718    ????
80f45758    ...Also CPU Level Slider for P1...?
80f457c8    CPU Level Background for P1 (bottom section?)

80f45808    CPU Level Stuff for P2
80f45878    CPU Level Background for P2 (top section?)
80f458b8    CPU Level Slider for P2
80f458f8    ????                                      
80f45938    ...Also CPU Level Slider for P2...?       
80f459a8    CPU Level Background for P2 (bottom section?)

80f459e8    CPU Level Stuff for P3
80f45a58    CPU Level Background for P3 (top section?)
80f45a98    CPU Level Slider for P3
80f45ad8    ????                                      
80f45b18    ...Also CPU Level Slider for P3...?
80f45b88    CPU Level Background for P3 (bottom section?)

80f45bc8    CPU Level Stuff for P4
80f45c38    CPU Level Background for P4 (top section?)
80f45c78    CPU Level Slider for P4
80f45cb8    ????                                      
80f45cf8    ...Also CPU Level Slider for P4...?
80f45d68    CPU Level Background for P4 (bottom section?)

80f45da8    All Character Name Backgrounds on CSPs

80f45de8    ????
80f45e28    ????
80f45e68    ????
80f45ea8    ????
80f45ee8    ????
80f45f28    ????
80f45f68    ????
80f45fa8    ????

tatatat0's MnSlChr.dat Offsets
In the SSBM Data Sheet, there is a list of offsets into MnSlChr.dat compiled by tatatat0. I have yet to go through these offsets and figure out how they correlate with the information that I have found thus far. However, much of what is included there looks very promising and helpful!

Texture Initialization Calls
Credit to Punkline

These codes are cute and may prove a useful starting place for exploring texture initialization on the CSS (or otherwise...?)
Code:
----------------------------------
---Texture Initialization Calls---
----------------------------------

0x802644d8: CSS Background
0x8026459c: CSS Panel (?)
Making these nops prevents textures from loading in; black background,
no foreground (except CSPs...?)

Gecko Codes for doing these:
[Gecko]
+$Do not load CSS Background
042644d8 60000000
+$Do not load CSS Panel
0426459c 60000000
 
Last edited:
Top Bottom