SSBM Decomp
Loading...
Searching...
No Matches
mncharsel.c File Reference

Data Structures

struct  MnSelectChrModels
struct  MnSelectChrDataTable
struct  CSSCursorData
struct  CSSCharModel

Macros

#define ICONROWHT_TOP_TOP   20.0F
 Can't be enum bc float, but reused values.
#define ICONROWHT_MID_TOP   13.0F
#define ICONROWHT_BTM_TOP   6.0F
#define ICONROWHT_BTM_BTM   (-1.0F)
#define ICONROWY_TOP   20.2F
 Where each icon row is drawn, as opposed to the bounds it is hit-tested against above.
#define ICONROWY_BTM   5.8F
#define ICONBNDS_COL0_L   (-30.0F)
 Can't be enum bc float, but reused values.
#define ICONBNDS_COL1_L   (-24.4F)
#define ICONBNDS_COL2_L   (-17.4F)
#define ICONBNDS_COL3_L   (-10.4F)
#define ICONBNDS_COL4_L   (-3.4F)
#define ICONBNDS_COL5_L   3.6F
#define ICONBNDS_COL6_L   10.6F
#define ICONBNDS_COL7_L   17.6F
#define ICONBNDS_COL8_L   24.4F
#define ICONBNDS_COL8_R   30.2F
#define show_kos(x, y)

Functions

TextKerningmnCharSel_8025BC20 (TextKerning *arg0, u32 arg1)
void mnCharSel_8025BD30 (void)
static f32 loadStickValue (const s8 *value)
static void getStickDelta (int port, f32 *dx, f32 *dy)
static void drawTimeText (HSD_Text *x, HSD_Text *y, int hours, int minutes, int seconds, int microseconds)
static u32 getClassicHighscore (u8 hud)
static u32 getAdventureHighscore (u8 hud)
static u32 getAllStarHighscore (u8 hud)
static f32 toMeters (f32 cm)
 Centimetres to metres, truncated to one decimal place.
static f32 toFeet (f32 cm)
 Centimetres to feet, truncated to one decimal place.
static HSD_JObjinline3 (int i, float x)
void mnCharSel_8025C020 (int arg0)
void mnCharSel_8025D1C4 (int port, int mode)
static void sethidden (HSD_JObj *jobj, bool hidden)
static HSD_JObjanimateJoint (HSD_JObj *root, u8 joint, u32 mask, f32 frame)
static HSD_JObjanimateJointPadded (HSD_JObj *root, u8 joint, u32 mask, f32 frame)
static HSD_JObjanimateJointLeadingPad (HSD_JObj *root, u8 joint, u32 mask, f32 frame)
void mnCharSel_8025D5AC (int door, int frame, bool hidden)
static bool isDuplicateCostumeWith (int door, CSSData *css, u8 door_count)
static CSSDataloadCSSValue (CSSData *volatile *css)
static bool equalU8 (u8 lhs, u8 rhs)
static bool isDuplicateCostumeCached (int door)
 Variant of isDuplicateCostume that reads the base door's icon and costume once before the scan.
static bool isDuplicateCostumeExact (int door)
static bool isDuplicateCostume (int door)
bool mnCharSel_8025DAA0 (int door)
static void pickUniqueCostume (int door)
static s32 getHandicapValue (int port)
void mnCharSel_8025DB34 (u8 arg0)
void mnCharSel_8025EE8C (u8 idx)
static void updateStockIcons (struct CSSDoorsData2 *stock_data, HSD_JObj **stock_jobj, s32 i)
void fn_8025F0E0 (HSD_GObj *gobj)
void fn_8025FAC0 (HSD_GObj *gobj)
void fn_8025FB2C (HSD_GObj *gobj)
static s32 getIconOffset (u32 icon_idx)
static s32 getPlayerForDoor (u8 door)
void mnCharSel_8025FB50 (u8 door, s32 arg1)
s32 mnCharSel_8025FDEC (u8 door)
void mnCharSel_CostumeChange (int door, u32 input)
static void updateCursorDisplay (HSD_JObj *jobj, struct CSSCursorData *cursor, HSD_JObj **state_jobj, HSD_JObj **color_jobj)
static void updateGrabbedSlider (struct CSSCursorData *cursor, CSSDoor *door, s32 door_idx, u32 trigger, HSD_JObj **slider_jobj, Point3d *pos, bool is_handicap)
static void cycleTeam (struct CSSCursorData *cursor, CSSDoor *dp, s32 di)
 Advances the door's team colour when the cursor clicks its team box.
void mnCharSel_CursorThink (HSD_GObj *gobj)
static int getDoorCount (CSSData *css)
static void animateCharModel (HSD_JObj *jobj, f32 frame)
void fn_80262648 (HSD_GObj *gobj)
void fn_80262F44 (HSD_GObj *gobj)
void fn_80263354 (HSD_GObj *gobj)
void fn_802633B0 (HSD_GObj *gobj)
void mnCharSel_80264070 (void)
void fn_8026407C (HSD_GObj *gobj)
s32 mnCharSel_802640A0 (void)
void mnCharSel_Scene_OnEnter (void *arg0)
void mnCharSel_Scene_OnFrame (void)
void mnCharSel_Scene_OnExit (void *unused)

Variables

static u8 mnCharSel_804D50C8 [4] = { 1, 2, 4, 8 }
static u8 mnCharSel_804D50CC [4] = { 1, 0, 0, 2 }
static u8 mnCharSel_804D50D0 [8] = { 2, 0, 1, 0, 5, 3, 4, 0 }
static u8 mnCharSel_804D50D8 [8] = { 2, 0, 8, 1, 7, 7, 7, 7 }
static u8 mnCharSel_804D50E0 [3] = { 0, 1, 3 }
static CSSDatamnCharSel_804D6CB0
static MnSelectChrDataTablecss_data_table
static HSD_GObjmnCharSel_804D6CB8
static HSD_GObjmnCharSel_804D6CBC
static HSD_JObjmnCharSel_804D6CC0
static HSD_JObjmnCharSel_804D6CC4
static HSD_JObjmnCharSel_804D6CC8
static HSD_JObjmnCharSel_804D6CCC
static HSD_ArchivemnCharSel_804D6CD0
static HSD_ArchivemnCharSel_804D6CD4
static MnSelectChrModelscss_models
static HSD_TextmnCharSel_804D6CDC
static HSD_TextmnCharSel_804D6CE0
static HSD_TextmnCharSel_804D6CE4
static HSD_TextmnCharSel_804D6CE8
static u32 mnCharSel_804D6CEC
static s8 mnCharSel_804D6CF0
static s8 mnCharSel_804D6CF1
static u8 mnCharSel_804D6CF2
static u8 mnCharSel_804D6CF3
static s8 mnCharSel_804D6CF4
static u8 mnCharSel_804D6CF5
 number of (open? valid?) CSS doors
static u8 mnCharSel_804D6CF6
 ::CSSPendingSceneChangeKind
static u8 mnCharSel_804D6CF7
static u8 mnCharSel_804D6CF8
static s8 mnCharSel_804D6CF9
static CSSIconsData mnCharSel_803F0A48
static CSSIcon icons [25+1]
static CSSDoorsData mnCharSel_803F0DFC
static CSSTag mnCharSel_803F0E8C [4]
static struct CSSDoorsMisc mnCharSel_803F0EBC
static struct CSSDoorsData2 data2
static struct CSSCursorDatamnCharSel_804A0BC0 [4]
static struct CSSCharModelmnCharSel_804A0BD0 [4]
static const GXColor mnCharSel_804DC560 = { 255, 255, 255, 255 }
 Nametag list think callback - handles scrolling through nametag list.
static const GXColor mnCharSel_804DC564 = { 100, 100, 100, 255 }
static const GXColor mnCharSel_804DC580 = { 255, 255, 0, 255 }
static const GXColor mnCharSel_804DC584 = { 20, 80, 160, 255 }
static const GXColor mnCharSel_804DC588 = { 60, 140, 80, 255 }
static const GXColor mnCharSel_804DC58C = { 160, 160, 0, 255 }
static const GXColor mnCharSel_804DC590 = { 180, 80, 0, 255 }
static const GXColor mnCharSel_804DC594 = { 220, 0, 0, 255 }

Macro Definition Documentation

◆ ICONROWHT_TOP_TOP

#define ICONROWHT_TOP_TOP   20.0F

Can't be enum bc float, but reused values.

◆ ICONROWHT_MID_TOP

#define ICONROWHT_MID_TOP   13.0F

◆ ICONROWHT_BTM_TOP

#define ICONROWHT_BTM_TOP   6.0F

◆ ICONROWHT_BTM_BTM

#define ICONROWHT_BTM_BTM   (-1.0F)

◆ ICONROWY_TOP

#define ICONROWY_TOP   20.2F

Where each icon row is drawn, as opposed to the bounds it is hit-tested against above.

◆ ICONROWY_BTM

#define ICONROWY_BTM   5.8F

◆ ICONBNDS_COL0_L

#define ICONBNDS_COL0_L   (-30.0F)

Can't be enum bc float, but reused values.

◆ ICONBNDS_COL1_L

#define ICONBNDS_COL1_L   (-24.4F)

◆ ICONBNDS_COL2_L

#define ICONBNDS_COL2_L   (-17.4F)

◆ ICONBNDS_COL3_L

#define ICONBNDS_COL3_L   (-10.4F)

◆ ICONBNDS_COL4_L

#define ICONBNDS_COL4_L   (-3.4F)

◆ ICONBNDS_COL5_L

#define ICONBNDS_COL5_L   3.6F

◆ ICONBNDS_COL6_L

#define ICONBNDS_COL6_L   10.6F

◆ ICONBNDS_COL7_L

#define ICONBNDS_COL7_L   17.6F

◆ ICONBNDS_COL8_L

#define ICONBNDS_COL8_L   24.4F

◆ ICONBNDS_COL8_R

#define ICONBNDS_COL8_R   30.2F

◆ show_kos

#define show_kos ( x,
y )
Value:
? HSD_SisLib_803A70A0((x), 0, "%d \x90\x6c\x94\xb2\x82\xab", (y)) \
: HSD_SisLib_803A70A0((x), 0, "%d \x82\x6a\x82\x6e\x82\x93", (y)))
s32 HSD_SisLib_803A70A0(HSD_Text *text, s32 entry_idx, char *fmt,...)
Definition hsd_3A64.c:352
bool lbLang_IsSavedLanguageJP(void)
Definition lblanguage.c:42

Function Documentation

◆ mnCharSel_8025BC20()

TextKerning * mnCharSel_8025BC20 ( TextKerning * arg0,
u32 arg1 )

◆ mnCharSel_8025BD30()

void mnCharSel_8025BD30 ( void )

◆ loadStickValue()

f32 loadStickValue ( const s8 * value)
inlinestatic

◆ getStickDelta()

void getStickDelta ( int port,
f32 * dx,
f32 * dy )
inlinestatic

◆ drawTimeText()

void drawTimeText ( HSD_Text * x,
HSD_Text * y,
int hours,
int minutes,
int seconds,
int microseconds )
inlinestatic

◆ getClassicHighscore()

u32 getClassicHighscore ( u8 hud)
inlinestatic

◆ getAdventureHighscore()

u32 getAdventureHighscore ( u8 hud)
inlinestatic

◆ getAllStarHighscore()

u32 getAllStarHighscore ( u8 hud)
inlinestatic

◆ toMeters()

f32 toMeters ( f32 cm)
inlinestatic

Centimetres to metres, truncated to one decimal place.

◆ toFeet()

f32 toFeet ( f32 cm)
inlinestatic

Centimetres to feet, truncated to one decimal place.

◆ inline3()

HSD_JObj * inline3 ( int i,
float x )
inlinestatic

◆ mnCharSel_8025C020()

void mnCharSel_8025C020 ( int arg0)

◆ mnCharSel_8025D1C4()

void mnCharSel_8025D1C4 ( int port,
int mode )

◆ sethidden()

void sethidden ( HSD_JObj * jobj,
bool hidden )
inlinestatic

◆ animateJoint()

HSD_JObj * animateJoint ( HSD_JObj * root,
u8 joint,
u32 mask,
f32 frame )
inlinestatic

◆ animateJointPadded()

HSD_JObj * animateJointPadded ( HSD_JObj * root,
u8 joint,
u32 mask,
f32 frame )
inlinestatic

◆ animateJointLeadingPad()

HSD_JObj * animateJointLeadingPad ( HSD_JObj * root,
u8 joint,
u32 mask,
f32 frame )
inlinestatic

◆ mnCharSel_8025D5AC()

void mnCharSel_8025D5AC ( int door,
int frame,
bool hidden )

◆ isDuplicateCostumeWith()

bool isDuplicateCostumeWith ( int door,
CSSData * css,
u8 door_count )
inlinestatic

◆ loadCSSValue()

CSSData * loadCSSValue ( CSSData *volatile * css)
inlinestatic

◆ equalU8()

bool equalU8 ( u8 lhs,
u8 rhs )
inlinestatic

◆ isDuplicateCostumeCached()

bool isDuplicateCostumeCached ( int door)
inlinestatic

Variant of isDuplicateCostume that reads the base door's icon and costume once before the scan.

◆ isDuplicateCostumeExact()

bool isDuplicateCostumeExact ( int door)
inlinestatic

◆ isDuplicateCostume()

bool isDuplicateCostume ( int door)
inlinestatic

◆ mnCharSel_8025DAA0()

bool mnCharSel_8025DAA0 ( int door)

◆ pickUniqueCostume()

void pickUniqueCostume ( int door)
inlinestatic

◆ getHandicapValue()

s32 getHandicapValue ( int port)
inlinestatic

◆ mnCharSel_8025DB34()

void mnCharSel_8025DB34 ( u8 arg0)

◆ mnCharSel_8025EE8C()

void mnCharSel_8025EE8C ( u8 idx)

◆ updateStockIcons()

void updateStockIcons ( struct CSSDoorsData2 * stock_data,
HSD_JObj ** stock_jobj,
s32 i )
inlinestatic

◆ fn_8025F0E0()

void fn_8025F0E0 ( HSD_GObj * gobj)

◆ fn_8025FAC0()

void fn_8025FAC0 ( HSD_GObj * gobj)

◆ fn_8025FB2C()

void fn_8025FB2C ( HSD_GObj * gobj)

◆ getIconOffset()

s32 getIconOffset ( u32 icon_idx)
inlinestatic

◆ getPlayerForDoor()

s32 getPlayerForDoor ( u8 door)
inlinestatic

◆ mnCharSel_8025FB50()

void mnCharSel_8025FB50 ( u8 door,
s32 arg1 )

◆ mnCharSel_8025FDEC()

s32 mnCharSel_8025FDEC ( u8 door)

◆ mnCharSel_CostumeChange()

void mnCharSel_CostumeChange ( int door,
u32 input )

◆ updateCursorDisplay()

void updateCursorDisplay ( HSD_JObj * jobj,
struct CSSCursorData * cursor,
HSD_JObj ** state_jobj,
HSD_JObj ** color_jobj )
inlinestatic

◆ updateGrabbedSlider()

void updateGrabbedSlider ( struct CSSCursorData * cursor,
CSSDoor * door,
s32 door_idx,
u32 trigger,
HSD_JObj ** slider_jobj,
Point3d * pos,
bool is_handicap )
inlinestatic

◆ cycleTeam()

void cycleTeam ( struct CSSCursorData * cursor,
CSSDoor * dp,
s32 di )
inlinestatic

Advances the door's team colour when the cursor clicks its team box.

◆ mnCharSel_CursorThink()

void mnCharSel_CursorThink ( HSD_GObj * gobj)

◆ getDoorCount()

int getDoorCount ( CSSData * css)
inlinestatic

◆ animateCharModel()

void animateCharModel ( HSD_JObj * jobj,
f32 frame )
inlinestatic

◆ fn_80262648()

void fn_80262648 ( HSD_GObj * gobj)

◆ fn_80262F44()

void fn_80262F44 ( HSD_GObj * gobj)

◆ fn_80263354()

void fn_80263354 ( HSD_GObj * gobj)

◆ fn_802633B0()

void fn_802633B0 ( HSD_GObj * gobj)

◆ mnCharSel_80264070()

void mnCharSel_80264070 ( void )

◆ fn_8026407C()

void fn_8026407C ( HSD_GObj * gobj)

◆ mnCharSel_802640A0()

s32 mnCharSel_802640A0 ( void )

◆ mnCharSel_Scene_OnEnter()

void mnCharSel_Scene_OnEnter ( void * arg0)

◆ mnCharSel_Scene_OnFrame()

void mnCharSel_Scene_OnFrame ( void )

◆ mnCharSel_Scene_OnExit()

void mnCharSel_Scene_OnExit ( void * unused)

Variable Documentation

◆ mnCharSel_804D50C8

u8 mnCharSel_804D50C8[4] = { 1, 2, 4, 8 }
static

◆ mnCharSel_804D50CC

u8 mnCharSel_804D50CC[4] = { 1, 0, 0, 2 }
static

◆ mnCharSel_804D50D0

u8 mnCharSel_804D50D0[8] = { 2, 0, 1, 0, 5, 3, 4, 0 }
static

◆ mnCharSel_804D50D8

u8 mnCharSel_804D50D8[8] = { 2, 0, 8, 1, 7, 7, 7, 7 }
static

◆ mnCharSel_804D50E0

u8 mnCharSel_804D50E0[3] = { 0, 1, 3 }
static

◆ mnCharSel_804D6CB0

CSSData* mnCharSel_804D6CB0
static

◆ css_data_table

MnSelectChrDataTable* css_data_table
static

◆ mnCharSel_804D6CB8

HSD_GObj* mnCharSel_804D6CB8
static

◆ mnCharSel_804D6CBC

HSD_GObj* mnCharSel_804D6CBC
static

◆ mnCharSel_804D6CC0

HSD_JObj* mnCharSel_804D6CC0
static

◆ mnCharSel_804D6CC4

HSD_JObj* mnCharSel_804D6CC4
static

◆ mnCharSel_804D6CC8

HSD_JObj* mnCharSel_804D6CC8
static

◆ mnCharSel_804D6CCC

HSD_JObj* mnCharSel_804D6CCC
static

◆ mnCharSel_804D6CD0

HSD_Archive* mnCharSel_804D6CD0
static

◆ mnCharSel_804D6CD4

HSD_Archive* mnCharSel_804D6CD4
static

◆ css_models

MnSelectChrModels* css_models
static

◆ mnCharSel_804D6CDC

HSD_Text* mnCharSel_804D6CDC
static

◆ mnCharSel_804D6CE0

HSD_Text* mnCharSel_804D6CE0
static

◆ mnCharSel_804D6CE4

HSD_Text* mnCharSel_804D6CE4
static

◆ mnCharSel_804D6CE8

HSD_Text* mnCharSel_804D6CE8
static

◆ mnCharSel_804D6CEC

u32 mnCharSel_804D6CEC
static

◆ mnCharSel_804D6CF0

s8 mnCharSel_804D6CF0
static

◆ mnCharSel_804D6CF1

s8 mnCharSel_804D6CF1
static

◆ mnCharSel_804D6CF2

u8 mnCharSel_804D6CF2
static

◆ mnCharSel_804D6CF3

u8 mnCharSel_804D6CF3
static

◆ mnCharSel_804D6CF4

s8 mnCharSel_804D6CF4
static

◆ mnCharSel_804D6CF5

u8 mnCharSel_804D6CF5
static

number of (open? valid?) CSS doors

◆ mnCharSel_804D6CF6

u8 mnCharSel_804D6CF6
static

::CSSPendingSceneChangeKind

◆ mnCharSel_804D6CF7

u8 mnCharSel_804D6CF7
static

◆ mnCharSel_804D6CF8

u8 mnCharSel_804D6CF8
static

◆ mnCharSel_804D6CF9

s8 mnCharSel_804D6CF9
static

◆ mnCharSel_803F0A48

CSSIconsData mnCharSel_803F0A48
static

◆ icons

CSSIcon icons[25+1]
static

◆ mnCharSel_803F0DFC

CSSDoorsData mnCharSel_803F0DFC
static
Initial value:
= {
{ { 0x2E, 0x33, 0x38, 0x85, 0x29, 0xA6, 0x3D, 0x41,
0x40, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -35.6, -28.6, -26.8, -21.0F },
{ 0x2F, 0x34, 0x39, 0x8D, 0x2A, 0xA8, 0x43, 0x47,
0x46, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -19.4, -13.4, -11.4, -6.0F },
{ 0x30, 0x35, 0x3A, 0x95, 0x2B, 0xAA, 0x49, 0x4D, 0x4C, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -4.2, 2.2, 3.5, 9.4 },
{ 0x31, 0x36, 0x3B, 0x9D, 0x2C, 0xAC, 0x4F, 0x53,
0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 11.0F, 17.0F, 19.0F, 24.6 } },
}

◆ mnCharSel_803F0E8C

CSSTag mnCharSel_803F0E8C[4]
static
Initial value:
= {
{ NULL, 0x70, 0x73, 0x74, 0x72, 0x71 },
{ NULL, 0x75, 0x78, 0x79, 0x77, 0x76 },
{ NULL, 0x7A, 0x7D, 0x7E, 0x7C, 0x7B },
{ NULL, 0x7F, 0x82, 0x83, 0x81, 0x80 },
}
#define NULL
Definition stddef.h:14

◆ mnCharSel_803F0EBC

struct CSSDoorsMisc mnCharSel_803F0EBC
static
Initial value:
= {
0, 0, 0, 0, 0x4A, 0x4D, 0x4E, 0x4C, 0x4B, 0, 0, 0,
0x2F, 0x01, 0, 0, 0, NULL, -10.9, -4.2, 12.5, 19.6, -6.8, -12.1,
}

◆ data2

struct CSSDoorsData2 data2
static
Initial value:
= {
{ 0x35, 0x39, 0x36, 0x38, 0x37 },
0,
0,
0,
-2.2,
3.7,
13.7,
19.3,
-12.4,
-16.6,
{
{ NULL, -22.5, 0x57 },
{ NULL, -7.1, 0x5D },
{ NULL, 8.3, 0x63 },
{ NULL, 23.7, 0x69 },
},
}

◆ mnCharSel_804A0BC0

struct CSSCursorData* mnCharSel_804A0BC0[4]
static

◆ mnCharSel_804A0BD0

struct CSSCharModel* mnCharSel_804A0BD0[4]
static

◆ mnCharSel_804DC560

const GXColor mnCharSel_804DC560 = { 255, 255, 255, 255 }
static

Nametag list think callback - handles scrolling through nametag list.

◆ mnCharSel_804DC564

const GXColor mnCharSel_804DC564 = { 100, 100, 100, 255 }
static

◆ mnCharSel_804DC580

const GXColor mnCharSel_804DC580 = { 255, 255, 0, 255 }
static

◆ mnCharSel_804DC584

const GXColor mnCharSel_804DC584 = { 20, 80, 160, 255 }
static

◆ mnCharSel_804DC588

const GXColor mnCharSel_804DC588 = { 60, 140, 80, 255 }
static

◆ mnCharSel_804DC58C

const GXColor mnCharSel_804DC58C = { 160, 160, 0, 255 }
static

◆ mnCharSel_804DC590

const GXColor mnCharSel_804DC590 = { 180, 80, 0, 255 }
static

◆ mnCharSel_804DC594

const GXColor mnCharSel_804DC594 = { 220, 0, 0, 255 }
static