SSBM Decomp
Loading...
Searching...
No Matches
gm_1601.c File Reference
#include "gm_1601.h"
#include <Runtime/platform.h>
#include <melee/ft/forward.h>
#include <melee/pl/forward.h>
#include <placeholder.h>
#include <stddef.h>
#include "forward.h"
#include "gm_1601.static.h"
#include "gm_unsplit.h"
#include "gmmain_lib.h"
#include "gmscene.h"
#include "gmstamina.h"
#include "types.h"
#include <dolphin/pad.h>
#include <melee/cm/camera.h>
#include <melee/gr/ground.h>
#include <melee/gr/stage.h>
#include <melee/if/ifstatus.h>
#include <melee/lb/lb_00B0.h>
#include <melee/lb/lb_013B.h>
#include <melee/lb/lbaudio_ax.h>
#include <melee/lb/lblanguage.h>
#include <melee/lb/lbtime.h>
#include <melee/mn/mnstagesel.h>
#include <melee/mn/types.h>
#include <melee/pl/player.h>
#include <melee/pl/plbonus.h>
#include <melee/pl/plbonuslib.h>
#include <melee/sc/types.h>
#include <melee/ty/toy.h>
#include <sysdolphin/baselib/controller.h>
#include <sysdolphin/baselib/gobjplink.h>
#include <sysdolphin/baselib/hsd_3924.h>
#include <sysdolphin/baselib/hsd_3982.h>
#include <sysdolphin/baselib/jobj.h>
#include <sysdolphin/baselib/random.h>
#include <sysdolphin/baselib/sislib.h>
#include <sysdolphin/baselib/video.h>

Data Structures

struct  lbl_803D5168_t
struct  gm_stats
struct  fn_80165AC0_loser_bits
struct  fn_8016719C_xC_bits

Functions

static f32 fn_80166A8C (Vec3 *, Vec3 *)
int gm_801601C4 (s8 arg0)
int gm_80160244 (s8 arg0)
static int gm_801601C4_inner (s8 arg0)
static int gm_801601C4_noinline (s8 arg0)
static int gm_80160244_inner (s8 arg0)
static int gm_80160244_noinline (s8 arg0)
void gm_801602C0 (s8 arg0)
void gm_801603B0 (void)
u32 fn_80160400 (CharacterKind ckind)
 gets character victory theme id
char * gm_80160438 (s32 ckind)
 gets character result anim path
bool gm_80160474 (CharacterKind ckind, GameModeKind mode)
char * gm_801604DC (CharacterKind ckind, GameModeKind mode)
 gets characters trophy model
char * gm_80160564 (CharacterKind ckind, GameModeKind mode)
u8 gm_SelKindToUnlockIndex (SelectableCharacterKind selkind)
 Returns the index used in the bitmask to represent whether or not the provided character is unlocked.
s8 gm_CKindToUnlockIndex (CharacterKind ckind)
 Returns the index used in the bitmask to represent whether or not the provided character is unlocked.
static u8 get_unlockable_selkind_by_bit_index (int unlock_bit_index)
u8 gm_GetCKindByUnlockIndex (int unlockable_character_bit_index)
u8 fn_80160710 (int arg0)
StKind gm_GetChallengerStKind (SelectableCharacterKind selkind)
u8 fn_801607A8 (int arg0)
u8 fn_801607F4 (int arg0)
u8 fn_80160840 (u8 arg0)
u32 gm_80160854 (u8 slot, u8 team, u8 is_teams, u8 slot_type)
 gets the player hud color index
GXColor gm_80160968 (u32 arg0)
 gets the player hud color
const char * gm_80160980 (u8 ckind)
 Get SJIS character name for a given CharacterKind.
const char * fn_801609E0 (u8 ckind)
const char * gm_80160A60 (int arg0)
static void gm_80160B40_init_text (HSD_Text *text, HSD_Text **tmp_text)
void gm_80160B40 (HSD_Text *text, u8 ckind, u8 arg2)
void gm_80160C90 (HSD_Text *text, u8 fighter_id, u8 arg2)
void fn_80160DE8 (HSD_JObj *arg0, u8 arg1, s32 arg2, u8 arg3, f32 farg0, f32 farg1)
f32 fn_80160F58 (u8 ckind)
s32 fn_80161004 (MatchEnd *match_end)
s32 fn_80161154 (MatchEnd *arg0)
static u32 fn_80161C90_count_players (MatchEnd *match_end)
void fn_80161C90 (MatchEnd *arg0, int arg1, u16 *arg2)
void fn_80162068 (MatchEnd *match_end)
void fn_80162170 (MatchEnd *arg0)
s32 gm_801623A4 (MatchEnd *arg0)
int gm_801623D8 (void)
void gm_801623FC (int arg0)
s32 gm_8016247C (s32 arg0)
void gm_80162574 (u8 arg0, u8 arg1)
void gm_SetupHumanResultsScreen (u8 arg0, u8 arg1)
u32 gm_GetVsPlayMatchTotal (void)
u32 gm_80162800 (MatchEnd *end)
void gm_SetupResultsScreenPlayTime (u32 arg0, u32 arg1)
s32 gm_80162968 (u32 seconds)
s32 gm_801629B4 (s32 amount)
s32 gm_GetPlayTime (void)
s32 gm_80162A4C (s32 amount)
struct gmm_x1868_1A8_t * gm_80162A98 (s32 arg0)
void gm_RecordSelfDestructs (s32 amount)
void gm_IncrementPowerCount (void)
int gm_80162BD8 (u8 arg0)
bool fn_80162BFC (s8 ckind, int arg1)
s32 gm_80162C48 (void)
bool fn_80162CCC (void)
bool gm_80162D1C (void)
u8 gm_80162D6C (void)
int gm_80162DD4 (u8 i)
s32 fn_80162DF8 (u8 ckind, u32 arg1)
s32 gm_80162E44 (void)
bool gm_80162EC8 (void)
bool gm_80162F18 (void)
u8 gm_80162F68 (void)
int gm_80162FD0 (u8 i)
bool fn_80162FF4 (u8 ckind, u32 arg1)
s32 gm_80163040 (void)
bool fn_801630C4 (void)
bool gm_80163114 (void)
u8 gm_80163164 (void)
u32 gm_801631CC (u8 i)
u32 gm_801631F0 (void)
u16 gm_80163274 (u8 i)
bool gm_80163298 (s8 c_kind, u16 arg1)
s32 gm_8016332C (u8 arg0)
void gm_80163374 (u8 arg0, u8 *arg1, u8 *arg2, u8 *arg3, u8 *arg4)
bool gm_801634D4 (u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3)
bool gm_8016365C (u8 arg0)
s32 gm_80163690 (u8 arg0)
void gm_801636D8 (u8 arg0, u8 *arg1, u8 *arg2, u8 *arg3, u8 *arg4)
bool gm_80163838 (u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3)
bool gm_801639C0 (u8 arg0)
int gm_801639F4 (u8 arg0)
void gm_80163A3C (u8 arg0, u8 *arg1, u8 *arg2, u8 *arg3, u8 *arg4)
bool gm_80163B9C (u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3)
bool fn_80163D24 (void)
bool fn_80163D74 (void)
u16 gm_Get3MinMultimanHighscore (u8 i)
int gm_Get3MinMultimanTotalHighscore (void)
 Get total number of KOs.
u16 gm_Get15MinMultimanHighscore (u8 i)
int gm_Get15MinMultimanTotalHighscore (void)
int gm_GetEndlessHighscore (u8 i)
int gm_GetEndlessTotalHighscore (void)
int gm_GetCruelHighscore (u8 i)
int gm_GetCruelTotalHighscore (void)
int fn_80163FA4 (u8 arg0)
u8 gm_SelKindToCKind (u8 selkind)
 Convert a SelectableCharacterKind into its CharacterKind.
u8 gm_CKindToSelKind (u8 ckind)
 Convert a CharacterKind into its SelectableCharacterKind.
bool gm_8016403C (u8 item)
void fn_801640B0 (u64 *item_mask)
float fn_8016419C (u8 arg0)
float fn_801641B4 (u8 arg0)
u16 gm_801641CC (u8 arg0)
void gm_801641E4 (u8 stage, u8 enable)
bool gm_IsStageUnlocked (u16 stkind)
bool fn_801642A0 (void)
bool gm_80164330 (s32 arg0)
bool gm_80164430 (u16 arg0)
void gm_80164504 (u16 stkind)
bool gm_80164600 (void)
 Are all stages unlocked?
void gm_8016468C (void)
void gm_801647D0 (void)
int gm_801647F8 (u8 arg0)
bool gm_IsCKindUnlocked (u8 ckind)
 Is a specific character unlocked?
void gm_UnlockCKind (CharacterKind ckind)
void gm_80164A0C (u8 ckind)
 Lock character?
bool gm_80164ABC (void)
 Are all unlockable characters unlocked?
static bool is_character_unlocked (u8 n, const u16 *mask)
bool fn_80164B48 (void)
void gm_80164F18 (void)
void gm_8016505C (void)
bool gm_80165084 (void)
void fn_801650E8 (void)
void gm_EnablePlayerPauseCamera (int playerSlot, int playerId)
 Enables the pause camera for the given player.
void fn_80165190 (s32 slot, s32 arg1)
void fn_801651FC (s32 slot, s32 arg1)
void gm_80165268 (int unused)
void gm_80165290 (int x)
void fn_801652B0 (s32 arg0, s32 arg1)
void * fn_801652D8 (void)
HSD_GObjgm_80165388 (u16 arg0, u8 arg1, u8 arg2, s32 arg3)
 creates the develop mode stress test
void gm_801653C8 (HSD_GObj *gobj)
 frees the develop mode stress test
f32 fn_801653E8 (u8 arg0)
s32 fn_80165418 (MatchEnd *match_end)
s32 fn_801654A0 (MatchEnd *match_end)
s32 fn_80165548 (MatchEnd *me, s32 arg1, s32 team)
u32 fn_801656A8 (MatchEnd *arg0, u32 arg1)
static s32 fn_8016588C_clamp (s32 v)
s32 fn_8016588C (MatchEnd *match_end, s32 player_slot)
s32 fn_80165AC0 (MatchEnd *arg0)
MatchEndfn_80165D60 (MatchEnd *arg0)
void fn_80165E7C (MatchEnd *arg0)
s32 fn_80165FA4 (MatchEnd *arg0)
s32 fn_801661E0 (MatchEnd *arg0)
void gm_80166378 (MatchEnd *arg0_raw)
float fn_80166A8C (register Vec3 *src, register Vec3 *dst)
s32 gm_80166A98 (MatchEnd *arg0, u8 arg1, s8 arg2, u8 arg3, s8 arg4, u8 arg5, s8 arg6, u8 arg7, u8 arg_sp8, u8 arg_spC)
u32 fn_80166CBC (MatchEnd *arg0, ssize_t index)
void gm_80166CCC (MatchEnd *arg0, MatchEnd *arg1)
bool gm_MatchHasMultipleWinners (MatchEnd *end)
int fn_80167194 (MatchEnd *me)
void fn_8016719C (s32 slot, s32 subchar)
void gm_80167320 (int slot, bool arg1)
void gm_80167470 (s32 arg0, s32 arg1)
void gm_801674C4 (s8 arg0, u8 arg1, s8 arg2, s8 arg3, GmRouteCallback arg4)
void fn_8016758C (void)
static int get_idx (void)
s32 fn_80167638 (s32 arg0, Vec3 *arg1, Vec3 *arg2)
void gm_801677C0 (struct gm_801677C0_s *arg0)
void gm_801677E8 (s8 arg0)
u8 gm_801677F0 (void)
bool gm_RumbleEnabledForPlayer (int port, int nametag)
void gm_80167858 (int port, int nametag, int arg2, int arg3)
void gm_801678F8 (int port, int arg1, int arg2)
void gm_SetupPlayerDefaults (struct PlayerInitData *player)
void gm_SetupAllPlayerDefaults (struct PlayerInitData *player)
void gm_SetupRulesDefaults (struct StartMeleeRules *rules)
void gm_InitVsMode (VsModeData *vs)
void gm_80167BC8 (VsModeData *vs_data)
static int pad_inline (SSSData *arg0, int base)
static int get_flag_unk (u16 temp_r30)
void gm_80167FC4 (SSSData *arg0)
s8 gm_801685D4 (u8 arg0, u8 arg1)
void gm_80168638 (MatchEnd *arg0)
void gm_80168710 (MatchEnd *arg0, VsModeData *arg1)
s32 gm_801688AC (MatchEnd *arg0)
int gm_80168940 (MatchEnd *match_end)
void gm_8016895C (HSD_JObj *arg0, DynamicModelDesc *arg1, int idx)
void fn_801689E4 (HSD_JObj *arg0, DynamicModelDesc *arg1, int idx)
void fn_80168A6C (void *arg0, void *arg1, s32 idx)
f32 gm_80168B34 (CharacterKind ckind, int arg1, int arg2)
float gm_80168BF8 (int arg0)
void gm_80168C5C (u32 arg0)
void fn_80168E54 (s8 arg0, s8 arg1, u8 arg2, u8 arg3)
void fn_80168F2C (s8 ignored)
void fn_80168F7C (void)
void gm_80168F88 (void)
void gm_LoadAnnouncer (void)
 UnclePunch: Audio_LoadAnnouncer.
void fn_80169000 (MatchEnd *arg0, u8 *arg1)
u8 gm_GetNumCostumesForCKind (u8 ckind)
u8 gm_80169264 (u8 ckind)
u8 gm_80169290 (u8 ckind)
u8 gm_801692BC (u8 ckind)
void gm_801692E8 (u32 secs, datetime *datetime)

Variables

char * lbl_803D4D74 []
 JP character names.
char * lbl_803D4FDC []
 US character names.
char * lbl_803D5060 []
char * lbl_803D50E4 []
static struct lbl_803D5168_t lbl_803D5168 []
struct { 
   u8   ncolors 
   u8   x1 
   u8   x2 
   u8   x3 
lbl_803D51A0 [CKind_Playable_Count]
static struct ResultAnimEntry lbl_803D53A8 [0x1B]
static struct VictoryTheme ckind_victory_themes [0x1B]

Function Documentation

◆ fn_80166A8C() [1/2]

f32 fn_80166A8C ( Vec3 * ,
Vec3 *  )
static

◆ gm_801601C4()

int gm_801601C4 ( s8 arg0)

◆ gm_80160244()

int gm_80160244 ( s8 arg0)

◆ gm_801601C4_inner()

int gm_801601C4_inner ( s8 arg0)
inlinestatic

◆ gm_801601C4_noinline()

int gm_801601C4_noinline ( s8 arg0)
inlinestatic

◆ gm_80160244_inner()

int gm_80160244_inner ( s8 arg0)
inlinestatic

◆ gm_80160244_noinline()

int gm_80160244_noinline ( s8 arg0)
inlinestatic

◆ gm_801602C0()

void gm_801602C0 ( s8 arg0)

◆ gm_801603B0()

void gm_801603B0 ( void )

◆ fn_80160400()

u32 fn_80160400 ( CharacterKind ckind)

gets character victory theme id

◆ gm_80160438()

char * gm_80160438 ( s32 ckind)

gets character result anim path

◆ gm_80160474()

bool gm_80160474 ( CharacterKind ckind,
GameModeKind mode )

◆ gm_801604DC()

char * gm_801604DC ( CharacterKind ckind,
GameModeKind mode )

gets characters trophy model

◆ gm_80160564()

char * gm_80160564 ( CharacterKind ckind,
GameModeKind mode )

◆ gm_SelKindToUnlockIndex()

u8 gm_SelKindToUnlockIndex ( SelectableCharacterKind selkind)

Returns the index used in the bitmask to represent whether or not the provided character is unlocked.

◆ gm_CKindToUnlockIndex()

s8 gm_CKindToUnlockIndex ( CharacterKind ckind)

Returns the index used in the bitmask to represent whether or not the provided character is unlocked.

◆ get_unlockable_selkind_by_bit_index()

u8 get_unlockable_selkind_by_bit_index ( int unlock_bit_index)
inlinestatic

◆ gm_GetCKindByUnlockIndex()

u8 gm_GetCKindByUnlockIndex ( int unlockable_character_bit_index)

◆ fn_80160710()

u8 fn_80160710 ( int arg0)

◆ gm_GetChallengerStKind()

StKind gm_GetChallengerStKind ( SelectableCharacterKind selkind)

◆ fn_801607A8()

u8 fn_801607A8 ( int arg0)

◆ fn_801607F4()

u8 fn_801607F4 ( int arg0)

◆ fn_80160840()

u8 fn_80160840 ( u8 arg0)

◆ gm_80160854()

u32 gm_80160854 ( u8 slot,
u8 team,
u8 is_teams,
u8 slot_type )

gets the player hud color index

◆ gm_80160968()

GXColor gm_80160968 ( u32 arg0)

gets the player hud color

◆ gm_80160980()

const char * gm_80160980 ( u8 ckind)

Get SJIS character name for a given CharacterKind.

◆ fn_801609E0()

const char * fn_801609E0 ( u8 ckind)

◆ gm_80160A60()

const char * gm_80160A60 ( int arg0)

◆ gm_80160B40_init_text()

void gm_80160B40_init_text ( HSD_Text * text,
HSD_Text ** tmp_text )
inlinestatic

◆ gm_80160B40()

void gm_80160B40 ( HSD_Text * text,
u8 ckind,
u8 arg2 )

◆ gm_80160C90()

void gm_80160C90 ( HSD_Text * text,
u8 fighter_id,
u8 arg2 )

◆ fn_80160DE8()

void fn_80160DE8 ( HSD_JObj * arg0,
u8 arg1,
s32 arg2,
u8 arg3,
f32 farg0,
f32 farg1 )

◆ fn_80160F58()

f32 fn_80160F58 ( u8 ckind)

◆ fn_80161004()

s32 fn_80161004 ( MatchEnd * match_end)

◆ fn_80161154()

s32 fn_80161154 ( MatchEnd * arg0)

◆ fn_80161C90_count_players()

u32 fn_80161C90_count_players ( MatchEnd * match_end)
inlinestatic

◆ fn_80161C90()

void fn_80161C90 ( MatchEnd * arg0,
int arg1,
u16 * arg2 )

◆ fn_80162068()

void fn_80162068 ( MatchEnd * match_end)

◆ fn_80162170()

void fn_80162170 ( MatchEnd * arg0)

◆ gm_801623A4()

s32 gm_801623A4 ( MatchEnd * arg0)

◆ gm_801623D8()

int gm_801623D8 ( void )

◆ gm_801623FC()

void gm_801623FC ( int arg0)

◆ gm_8016247C()

s32 gm_8016247C ( s32 arg0)

◆ gm_80162574()

void gm_80162574 ( u8 arg0,
u8 arg1 )

◆ gm_SetupHumanResultsScreen()

void gm_SetupHumanResultsScreen ( u8 arg0,
u8 arg1 )

◆ gm_GetVsPlayMatchTotal()

u32 gm_GetVsPlayMatchTotal ( void )

◆ gm_80162800()

u32 gm_80162800 ( MatchEnd * end)

◆ gm_SetupResultsScreenPlayTime()

void gm_SetupResultsScreenPlayTime ( u32 arg0,
u32 arg1 )

◆ gm_80162968()

s32 gm_80162968 ( u32 seconds)

◆ gm_801629B4()

s32 gm_801629B4 ( s32 amount)

◆ gm_GetPlayTime()

s32 gm_GetPlayTime ( void )

◆ gm_80162A4C()

s32 gm_80162A4C ( s32 amount)

◆ gm_80162A98()

struct gmm_x1868_1A8_t * gm_80162A98 ( s32 arg0)

◆ gm_RecordSelfDestructs()

void gm_RecordSelfDestructs ( s32 amount)

◆ gm_IncrementPowerCount()

void gm_IncrementPowerCount ( void )

◆ gm_80162BD8()

int gm_80162BD8 ( u8 arg0)

◆ fn_80162BFC()

bool fn_80162BFC ( s8 ckind,
int arg1 )

◆ gm_80162C48()

s32 gm_80162C48 ( void )

◆ fn_80162CCC()

bool fn_80162CCC ( void )

◆ gm_80162D1C()

bool gm_80162D1C ( void )

◆ gm_80162D6C()

u8 gm_80162D6C ( void )

◆ gm_80162DD4()

int gm_80162DD4 ( u8 i)

◆ fn_80162DF8()

s32 fn_80162DF8 ( u8 ckind,
u32 arg1 )

◆ gm_80162E44()

s32 gm_80162E44 ( void )

◆ gm_80162EC8()

bool gm_80162EC8 ( void )

◆ gm_80162F18()

bool gm_80162F18 ( void )

◆ gm_80162F68()

u8 gm_80162F68 ( void )

◆ gm_80162FD0()

int gm_80162FD0 ( u8 i)

◆ fn_80162FF4()

bool fn_80162FF4 ( u8 ckind,
u32 arg1 )

◆ gm_80163040()

s32 gm_80163040 ( void )

◆ fn_801630C4()

bool fn_801630C4 ( void )

◆ gm_80163114()

bool gm_80163114 ( void )

◆ gm_80163164()

u8 gm_80163164 ( void )

◆ gm_801631CC()

u32 gm_801631CC ( u8 i)

◆ gm_801631F0()

u32 gm_801631F0 ( void )

◆ gm_80163274()

u16 gm_80163274 ( u8 i)

◆ gm_80163298()

bool gm_80163298 ( s8 c_kind,
u16 arg1 )

◆ gm_8016332C()

s32 gm_8016332C ( u8 arg0)

◆ gm_80163374()

void gm_80163374 ( u8 arg0,
u8 * arg1,
u8 * arg2,
u8 * arg3,
u8 * arg4 )

◆ gm_801634D4()

bool gm_801634D4 ( u8 * arg0,
u8 * arg1,
u8 * arg2,
u8 * arg3 )

◆ gm_8016365C()

bool gm_8016365C ( u8 arg0)

◆ gm_80163690()

s32 gm_80163690 ( u8 arg0)

◆ gm_801636D8()

void gm_801636D8 ( u8 arg0,
u8 * arg1,
u8 * arg2,
u8 * arg3,
u8 * arg4 )

◆ gm_80163838()

bool gm_80163838 ( u8 * arg0,
u8 * arg1,
u8 * arg2,
u8 * arg3 )

◆ gm_801639C0()

bool gm_801639C0 ( u8 arg0)

◆ gm_801639F4()

int gm_801639F4 ( u8 arg0)

◆ gm_80163A3C()

void gm_80163A3C ( u8 arg0,
u8 * arg1,
u8 * arg2,
u8 * arg3,
u8 * arg4 )

◆ gm_80163B9C()

bool gm_80163B9C ( u8 * arg0,
u8 * arg1,
u8 * arg2,
u8 * arg3 )

◆ fn_80163D24()

bool fn_80163D24 ( void )

◆ fn_80163D74()

bool fn_80163D74 ( void )

◆ gm_Get3MinMultimanHighscore()

u16 gm_Get3MinMultimanHighscore ( u8 i)

◆ gm_Get3MinMultimanTotalHighscore()

int gm_Get3MinMultimanTotalHighscore ( void )

Get total number of KOs.

◆ gm_Get15MinMultimanHighscore()

u16 gm_Get15MinMultimanHighscore ( u8 i)

◆ gm_Get15MinMultimanTotalHighscore()

int gm_Get15MinMultimanTotalHighscore ( void )

◆ gm_GetEndlessHighscore()

int gm_GetEndlessHighscore ( u8 i)

◆ gm_GetEndlessTotalHighscore()

int gm_GetEndlessTotalHighscore ( void )

◆ gm_GetCruelHighscore()

int gm_GetCruelHighscore ( u8 i)

◆ gm_GetCruelTotalHighscore()

int gm_GetCruelTotalHighscore ( void )

◆ fn_80163FA4()

int fn_80163FA4 ( u8 arg0)

◆ gm_SelKindToCKind()

u8 gm_SelKindToCKind ( u8 selkind)

Convert a SelectableCharacterKind into its CharacterKind.

Indexes selkind_to_ckind_map with selkind. SELKIND_ZELDA_SEAK resolves to #CharacterKind::CKind_Zelda; the Sheik half is dropped because SelectableCharacterKind collapses Zelda/Sheik into a single slot.

Parameters
[in]selkindA SelectableCharacterKind (e.g. the CSS slot index).
Returns
The CharacterKind backing the requested selectable character.
See also
gm_CKindToSelKind for the inverse (lossy) mapping.
selkind_to_ckind_map

◆ gm_CKindToSelKind()

u8 gm_CKindToSelKind ( u8 ckind)

Convert a CharacterKind into its SelectableCharacterKind.

Indexes ckind_to_selkind_map with ckind. Both #CharacterKind::CKind_Zelda and #CharacterKind::CKind_Seak collapse onto SELKIND_ZELDA_SEAK, so this direction is lossy with respect to the Zelda/Sheik split, not to mention all the non-playable characters.

Parameters
[in]ckindA CharacterKind.
Returns
The SelectableCharacterKind representing the CSS slot for ckind.
See also
gm_SelKindToCKind for the inverse mapping.
ckind_to_selkind_map

◆ gm_8016403C()

bool gm_8016403C ( u8 item)

◆ fn_801640B0()

void fn_801640B0 ( u64 * item_mask)

◆ fn_8016419C()

float fn_8016419C ( u8 arg0)

◆ fn_801641B4()

float fn_801641B4 ( u8 arg0)

◆ gm_801641CC()

u16 gm_801641CC ( u8 arg0)

◆ gm_801641E4()

void gm_801641E4 ( u8 stage,
u8 enable )

◆ gm_IsStageUnlocked()

bool gm_IsStageUnlocked ( u16 stkind)

◆ fn_801642A0()

bool fn_801642A0 ( void )

◆ gm_80164330()

bool gm_80164330 ( s32 arg0)

◆ gm_80164430()

bool gm_80164430 ( u16 arg0)

◆ gm_80164504()

void gm_80164504 ( u16 stkind)

◆ gm_80164600()

bool gm_80164600 ( void )

Are all stages unlocked?

◆ gm_8016468C()

void gm_8016468C ( void )

◆ gm_801647D0()

void gm_801647D0 ( void )

◆ gm_801647F8()

int gm_801647F8 ( u8 arg0)

◆ gm_IsCKindUnlocked()

bool gm_IsCKindUnlocked ( u8 ckind)

Is a specific character unlocked?

character unlocked check

Is a specific character unlocked?

◆ gm_UnlockCKind()

void gm_UnlockCKind ( CharacterKind ckind)

◆ gm_80164A0C()

void gm_80164A0C ( u8 ckind)

Lock character?

◆ gm_80164ABC()

bool gm_80164ABC ( void )

Are all unlockable characters unlocked?

Remarks
Gekko codes which unlock all characters change this to return true.

◆ is_character_unlocked()

bool is_character_unlocked ( u8 n,
const u16 * mask )
inlinestatic

◆ fn_80164B48()

bool fn_80164B48 ( void )

◆ gm_80164F18()

void gm_80164F18 ( void )

◆ gm_8016505C()

void gm_8016505C ( void )

◆ gm_80165084()

bool gm_80165084 ( void )

◆ fn_801650E8()

void fn_801650E8 ( void )

◆ gm_EnablePlayerPauseCamera()

void gm_EnablePlayerPauseCamera ( int playerSlot,
int playerId )

Enables the pause camera for the given player.

If playerSlot is -1, switches to the pause camera with slot 0xB and id 5 (see Camera_SetUpPauseCamera). Otherwise, switches only when the slot is a human or CPU with an active entity.

Parameters
[in]playerSlotPlayer slot to center the pause camera on.
[in]playerIdController port / player id of the pauser.

◆ fn_80165190()

void fn_80165190 ( s32 slot,
s32 arg1 )

◆ fn_801651FC()

void fn_801651FC ( s32 slot,
s32 arg1 )

◆ gm_80165268()

void gm_80165268 ( int unused)

◆ gm_80165290()

void gm_80165290 ( int x)

◆ fn_801652B0()

void fn_801652B0 ( s32 arg0,
s32 arg1 )

◆ fn_801652D8()

void * fn_801652D8 ( void )

◆ gm_80165388()

HSD_GObj * gm_80165388 ( u16 arg0,
u8 arg1,
u8 arg2,
s32 arg3 )

creates the develop mode stress test

◆ gm_801653C8()

void gm_801653C8 ( HSD_GObj * gobj)

frees the develop mode stress test

◆ fn_801653E8()

f32 fn_801653E8 ( u8 arg0)

◆ fn_80165418()

s32 fn_80165418 ( MatchEnd * match_end)

◆ fn_801654A0()

s32 fn_801654A0 ( MatchEnd * match_end)

◆ fn_80165548()

s32 fn_80165548 ( MatchEnd * me,
s32 arg1,
s32 team )

◆ fn_801656A8()

u32 fn_801656A8 ( MatchEnd * arg0,
u32 arg1 )

◆ fn_8016588C_clamp()

s32 fn_8016588C_clamp ( s32 v)
inlinestatic

◆ fn_8016588C()

s32 fn_8016588C ( MatchEnd * match_end,
s32 player_slot )

◆ fn_80165AC0()

s32 fn_80165AC0 ( MatchEnd * arg0)

◆ fn_80165D60()

MatchEnd * fn_80165D60 ( MatchEnd * arg0)

◆ fn_80165E7C()

void fn_80165E7C ( MatchEnd * arg0)

◆ fn_80165FA4()

s32 fn_80165FA4 ( MatchEnd * arg0)

◆ fn_801661E0()

s32 fn_801661E0 ( MatchEnd * arg0)

◆ gm_80166378()

void gm_80166378 ( MatchEnd * arg0_raw)

◆ fn_80166A8C() [2/2]

float fn_80166A8C ( register Vec3 * src,
register Vec3 * dst )

◆ gm_80166A98()

s32 gm_80166A98 ( MatchEnd * arg0,
u8 arg1,
s8 arg2,
u8 arg3,
s8 arg4,
u8 arg5,
s8 arg6,
u8 arg7,
u8 arg_sp8,
u8 arg_spC )

◆ fn_80166CBC()

u32 fn_80166CBC ( MatchEnd * arg0,
ssize_t index )

◆ gm_80166CCC()

void gm_80166CCC ( MatchEnd * arg0,
MatchEnd * arg1 )

◆ gm_MatchHasMultipleWinners()

bool gm_MatchHasMultipleWinners ( MatchEnd * end)

◆ fn_80167194()

int fn_80167194 ( MatchEnd * me)

◆ fn_8016719C()

void fn_8016719C ( s32 slot,
s32 subchar )

◆ gm_80167320()

void gm_80167320 ( int slot,
bool arg1 )

◆ gm_80167470()

void gm_80167470 ( s32 arg0,
s32 arg1 )

◆ gm_801674C4()

void gm_801674C4 ( s8 arg0,
u8 arg1,
s8 arg2,
s8 arg3,
GmRouteCallback arg4 )

◆ fn_8016758C()

void fn_8016758C ( void )

◆ get_idx()

int get_idx ( void )
inlinestatic

◆ fn_80167638()

s32 fn_80167638 ( s32 arg0,
Vec3 * arg1,
Vec3 * arg2 )

◆ gm_801677C0()

void gm_801677C0 ( struct gm_801677C0_s * arg0)

◆ gm_801677E8()

void gm_801677E8 ( s8 arg0)

◆ gm_801677F0()

u8 gm_801677F0 ( void )

◆ gm_RumbleEnabledForPlayer()

bool gm_RumbleEnabledForPlayer ( int port,
int nametag )

◆ gm_80167858()

void gm_80167858 ( int port,
int nametag,
int arg2,
int arg3 )

◆ gm_801678F8()

void gm_801678F8 ( int port,
int arg1,
int arg2 )

◆ gm_SetupPlayerDefaults()

void gm_SetupPlayerDefaults ( struct PlayerInitData * player)

◆ gm_SetupAllPlayerDefaults()

void gm_SetupAllPlayerDefaults ( struct PlayerInitData * player)

◆ gm_SetupRulesDefaults()

void gm_SetupRulesDefaults ( struct StartMeleeRules * rules)

◆ gm_InitVsMode()

void gm_InitVsMode ( VsModeData * vs)

◆ gm_80167BC8()

void gm_80167BC8 ( VsModeData * vs_data)

◆ pad_inline()

int pad_inline ( SSSData * arg0,
int base )
inlinestatic

◆ get_flag_unk()

int get_flag_unk ( u16 temp_r30)
inlinestatic

◆ gm_80167FC4()

void gm_80167FC4 ( SSSData * arg0)

◆ gm_801685D4()

s8 gm_801685D4 ( u8 arg0,
u8 arg1 )

◆ gm_80168638()

void gm_80168638 ( MatchEnd * arg0)

◆ gm_80168710()

void gm_80168710 ( MatchEnd * arg0,
VsModeData * arg1 )

◆ gm_801688AC()

s32 gm_801688AC ( MatchEnd * arg0)

◆ gm_80168940()

int gm_80168940 ( MatchEnd * match_end)

◆ gm_8016895C()

void gm_8016895C ( HSD_JObj * arg0,
DynamicModelDesc * arg1,
int idx )

◆ fn_801689E4()

void fn_801689E4 ( HSD_JObj * arg0,
DynamicModelDesc * arg1,
int idx )

◆ fn_80168A6C()

void fn_80168A6C ( void * arg0,
void * arg1,
s32 idx )

◆ gm_80168B34()

f32 gm_80168B34 ( CharacterKind ckind,
int arg1,
int arg2 )

◆ gm_80168BF8()

float gm_80168BF8 ( int arg0)

◆ gm_80168C5C()

void gm_80168C5C ( u32 arg0)

◆ fn_80168E54()

void fn_80168E54 ( s8 arg0,
s8 arg1,
u8 arg2,
u8 arg3 )

◆ fn_80168F2C()

void fn_80168F2C ( s8 ignored)

◆ fn_80168F7C()

void fn_80168F7C ( void )

◆ gm_80168F88()

void gm_80168F88 ( void )

◆ gm_LoadAnnouncer()

void gm_LoadAnnouncer ( void )

UnclePunch: Audio_LoadAnnouncer.

◆ fn_80169000()

void fn_80169000 ( MatchEnd * arg0,
u8 * arg1 )
Todo
Matching tactic: indexing both arrays (rather than walking *hp++ = *sp++ through named locals) makes both copy pointers compiler-created webs, which outrank the standings induction variable and let the source pointer take r3.
Todo
Matching tactic: this dead read manufactures one extra interference edge on the long-lived &handicaps[positions[0]] web. That pushes its degree at simplify-stack visit time from 28 to 29 (== K), so it is deferred a pass, coloured earlier, and takes r3 instead of r6 – which is the whole tail register assignment.
Todo
Matching tactic: reuse the loop index for the first copy to steer MWCC's instruction scheduling without changing the generated accesses.

◆ gm_GetNumCostumesForCKind()

u8 gm_GetNumCostumesForCKind ( u8 ckind)
Parameters
ckindCharacterKind
Todo
Matching tactic: pad the pre-inline statement count so MWCC keeps direct calls to this accessor instead of auto-inlining them.

◆ gm_80169264()

u8 gm_80169264 ( u8 ckind)

◆ gm_80169290()

u8 gm_80169290 ( u8 ckind)

◆ gm_801692BC()

u8 gm_801692BC ( u8 ckind)

◆ gm_801692E8()

void gm_801692E8 ( u32 secs,
datetime * datetime )

Variable Documentation

◆ lbl_803D4D74

char* lbl_803D4D74[]

JP character names.

◆ lbl_803D4FDC

char* lbl_803D4FDC[]

US character names.

◆ lbl_803D5060

char* lbl_803D5060[]
Initial value:
= {
NULL, NULL, "フォックス", NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, "サムス", NULL,
}
#define NULL
Definition stddef.h:14

◆ lbl_803D50E4

char* lbl_803D50E4[]
Initial value:
= {
NULL, NULL, "Fox", NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Samus", NULL,
}

◆ lbl_803D5168

struct lbl_803D5168_t lbl_803D5168[]
static
Initial value:
= {
{ 0x22, 0x00 }, { 0x24, 0x01 }, { 0x27, 0x02 }, { 0x38, 0x03 },
{ 0x29, 0x04 }, { 0x2A, 0x05 }, { 0x2B, 0x06 }, { 0x2C, 0x07 },
{ 0x21, 0x08 }, { 0x2D, 0x09 }, { 0x2E, 0x0A }, { 0x2F, 0x0B },
{ 0x30, 0x0C }, { 0x32, 0x0D }, { 0x28, 0x0E }, { 0x33, 0x0F },
{ 0x34, 0x10 }, { 0x36, 0x11 }, { 0x37, 0x12 }, { 0x35, 0x13 },
{ 0x26, 0x14 }, { 0x23, 0x15 }, { 0x25, 0x16 }, { 0x39, 0x17 },
{ 0x31, 0x18 }, { 0x3A, 0x19 }, { 0x48, 0x00 }, { 0 },
}

◆ ncolors

u8 ncolors

◆ x1

u8 x1

◆ x2

u8 x2

◆ x3

u8 x3

◆ [struct]

struct { ... } lbl_803D51A0[CKind_Playable_Count]
Initial value:
= {
{ 0x06, 0x02, 0x05, 0x04 }, { 0x05, 0x02, 0x03, 0x04 },
{ 0x04, 0x01, 0x02, 0x03 }, { 0x04, 0x01, 0x02, 0x03 },
{ 0x06, 0x03, 0x02, 0x04 }, { 0x04, 0x01, 0x02, 0x00 },
{ 0x05, 0x01, 0x02, 0x00 }, { 0x04, 0x03, 0x02, 0x00 },
{ 0x05, 0x00, 0x03, 0x04 }, { 0x05, 0x01, 0x00, 0x02 },
{ 0x04, 0x01, 0x02, 0x03 }, { 0x04, 0x00, 0x02, 0x03 },
{ 0x05, 0x00, 0x03, 0x04 }, { 0x04, 0x01, 0x02, 0x03 },
{ 0x04, 0x03, 0x00, 0x01 }, { 0x05, 0x01, 0x02, 0x03 },
{ 0x05, 0x00, 0x04, 0x03 }, { 0x06, 0x01, 0x02, 0x00 },
{ 0x05, 0x01, 0x02, 0x03 }, { 0x05, 0x01, 0x02, 0x03 },
{ 0x04, 0x01, 0x02, 0x03 }, { 0x05, 0x01, 0x02, 0x00 },
{ 0x05, 0x01, 0x02, 0x03 }, { 0x05, 0x01, 0x02, 0x03 },
{ 0x04, 0x01, 0x02, 0x03 }, { 0x05, 0x01, 0x02, 0x03 },
}

◆ lbl_803D53A8

struct ResultAnimEntry lbl_803D53A8[0x1B]
static

◆ ckind_victory_themes

struct VictoryTheme ckind_victory_themes[0x1B]
static