SSBM Decomp
Loading...
Searching...
No Matches
ground.c File Reference
#include "ground.h"
#include <Runtime/platform.h>
#include <math.h>
#include <stdbool.h>
#include "grbattle.h"
#include "grbigblue.h"
#include "grbigblueroute.h"
#include "grcastle.h"
#include "grcorneria.h"
#include "grdatfiles.h"
#include "grdisplay.h"
#include "grfigure1.h"
#include "grfigure2.h"
#include "grfigure3.h"
#include "grfigureget.h"
#include "grflatzone.h"
#include "grfourside.h"
#include "grgarden.h"
#include "grgreatbay.h"
#include "grgreens.h"
#include "grheal.h"
#include "grhomerun.h"
#include "gricemt.h"
#include "grinishie1.h"
#include "grinishie2.h"
#include "grizumi.h"
#include "grkinokoroute.h"
#include "grkongo.h"
#include "grkraid.h"
#include "grlast.h"
#include "grmaterial.h"
#include "grmutecity.h"
#include "groldkongo.h"
#include "groldpupupu.h"
#include "groldyoshi.h"
#include "gronett.h"
#include "grpstadium.h"
#include "grpura.h"
#include "grpushon.h"
#include "grrcruise.h"
#include "grshrine.h"
#include "grshrineroute.h"
#include "grstory.h"
#include "grtcaptain.h"
#include "grtclink.h"
#include "grtdonkey.h"
#include "grtdrmario.h"
#include "grtemblem.h"
#include "grtest.h"
#include "grtfalco.h"
#include "grtfox.h"
#include "grtgamewatch.h"
#include "grtganon.h"
#include "grticeclimber.h"
#include "grtkirby.h"
#include "grtkoopa.h"
#include "grtlink.h"
#include "grtluigi.h"
#include "grtmario.h"
#include "grtmars.h"
#include "grtmewtwo.h"
#include "grtness.h"
#include "grtpeach.h"
#include "grtpichu.h"
#include "grtpikachu.h"
#include "grtpurin.h"
#include "grtsamus.h"
#include "grtseak.h"
#include "grtyoshi.h"
#include "grtzelda.h"
#include "grvenom.h"
#include "gryorster.h"
#include "grzebes.h"
#include "grzebesroute.h"
#include "inlines.h"
#include "stage.h"
#include <dolphin/gx.h>
#include <dolphin/mtx.h>
#include <melee/cm/camera.h>
#include <melee/ft/ftdevice.h>
#include <melee/ft/ftlib.h>
#include <melee/gm/gm_unsplit.h>
#include <melee/it/it_26B1.h>
#include <melee/it/it_3F14.h>
#include <melee/it/itzako.h>
#include <melee/it/kinds/itcoin.h>
#include <melee/it/types.h>
#include <melee/lb/lb_00B0.h>
#include <melee/lb/lb_00F9.h>
#include <melee/lb/lbaudio_ax.h>
#include <melee/lb/lbdvd.h>
#include <melee/lb/lbshadow.h>
#include <melee/lb/lbspdisplay.h>
#include <melee/lb/lbvector.h>
#include <melee/mp/mpcoll.h>
#include <melee/mp/mplib.h>
#include <melee/mp/types.h>
#include <melee/pl/player.h>
#include <melee/sc/types.h>
#include <melee/ty/toy.h>
#include <melee/ty/tydisplay.h>
#include <sysdolphin/baselib/cobj.h>
#include <sysdolphin/baselib/debug.h>
#include <sysdolphin/baselib/fog.h>
#include <sysdolphin/baselib/gobj.h>
#include <sysdolphin/baselib/gobjgxlink.h>
#include <sysdolphin/baselib/gobjobject.h>
#include <sysdolphin/baselib/gobjplink.h>
#include <sysdolphin/baselib/gobjproc.h>
#include <sysdolphin/baselib/gobjuserdata.h>
#include <sysdolphin/baselib/jobj.h>
#include <sysdolphin/baselib/lobj.h>
#include <sysdolphin/baselib/memory.h>
#include <sysdolphin/baselib/particle.h>
#include <sysdolphin/baselib/psstructs.h>
#include <sysdolphin/baselib/random.h>
#include <sysdolphin/baselib/spline.h>
#include <sysdolphin/baselib/wobj.h>

Data Structures

struct  Ground_801C0FB8_cur
struct  Ground_801C10B8_temp_r3
union  Ground_801C466C_r28_carrier

Macros

#define RANDI_MAX   (100)
#define sqrtf_store(x, y)
#define FOG_ASSERT(line, cond)

Functions

static void Ground_OnStart (void)
static void Ground_801BFFAC (int)
static void mem_free (void *ptr)
static bool Ground_801C0A70 (Vec3 *pos)
static void Ground_801C0C2C (HSD_GObj *)
static void Ground_801C1CD0 (HSD_GObj *)
static void Ground_801C1D38 (HSD_GObj *)
static void Ground_801C1E2C (HSD_GObj *gobj, intptr_t code)
static void Ground_801C1E94 (void)
static LightList ** Ground_801C20E0 (UnkArchiveStruct *, LightList **)
static bool Ground_801C24F8 (StKind stkind, u32, s32 *)
static void Ground_801C28CC (s32 *, StKind stkind)
static void Ground_801C2BBC (Ground_GObj *map_gobj, int index)
static void Ground_801C2BD4 (void *)
static void Ground_801C34AC (s32, HSD_JObj *, struct HSD_Joint *)
static void Ground_801C466C (void)
static void Ground_801C55AC (Ground *)
static void Ground_801C5878 (void)
void Ground_801BFFB0 (void)
static void zeroBuffer (void)
void Ground_801C0378 (int arg0)
float Ground_801C0498 (void)
static Ground * alloc_user_data_ground (void)
void Ground_SetParamY (float y)
s32 Ground_801C0508 (void)
void Ground_801C052C (GXColor *arg0)
void Ground_801C0544 (GXColor *arg0)
void Ground_801C055C (GXColor *arg0)
void Ground_801C0574 (GXColor *arg0)
void Ground_801C058C (GXColor *arg0)
void Ground_801C05A4 (GXColor *arg0)
void Ground_801C05BC (GXColor *arg0)
void Ground_801C05D4 (GXColor *arg0)
void Ground_801C05EC (GXColor *arg0)
GXColor * Ground_801C0604 (void)
GXColor * Ground_801C0618 (void)
GXColor * Ground_801C062C (void)
GXColor * Ground_801C0640 (void)
GXColor * Ground_801C0654 (void)
GXColor * Ground_801C0668 (void)
GXColor * Ground_801C067C (void)
GXColor * Ground_801C0690 (void)
GXColor * Ground_801C06A4 (void)
void Ground_801C06B8 (GrKind arg0)
void Ground_801C0754 (StageIdPair *pair)
void Ground_801C0800 (StageIdPair *pair)
void Ground_OnLoad (StageIdPair *pair)
void Ground_801C0FB8 (StageIdPair *pair)
void Ground_DemoInit (StageIdPair *pair, s32 arg1)
void Ground_801C10B8 (HSD_GObj *arg0, HSD_GObjEvent arg1)
void Ground_801C1154 (void)
void Ground_801C1158 (void)
void Ground_801C11AC (HSD_GObj *gobj)
static HSD_Joint * Ground_801C126C (HSD_Joint *node, s32 *depth)
HSD_JObj * Ground_801C13D0 (s32 arg0, s32 depth)
static HSD_JObj * get_jobj_inline (float phi_f0)
Ground_GObj * Ground_GetStageGObj (int map_id)
HSD_GObj * Ground_801C1A20 (HSD_Joint *arg0, s32 arg1)
void Ground_801C1D6C (u32 arg0)
u32 Ground_801C1D84 (void)
u32 Ground_801C1D98 (void)
u32 Ground_801C1DAC (void)
u32 Ground_801C1DC0 (void)
int Ground_801C1DD4 (void)
void Ground_801C1DE4 (s32 *arg0, s32 *arg1)
void Ground_801C1E00 (s32 arg0)
s32 Ground_801C1E18 (void)
HSD_GObj * Ground_801C1E84 (void)
static HSD_FogDesc * foo (void)
 void Camera_SetBackgroundColor(u8, u8, u8); /* extern ‍/ UnkStruct3 grDatFiles_801C6330(int); /* extern ‍/ void Ground_801C1E2C(HSD_GObj, intptr_t); /* extern *‍/ extern s8 HSD_GObj_FogKind; extern float @330;
void Ground_ApplyStageBackgroundColor (void)
void Ground_801C205C (GXColor *color)
bool Ground_801C2090 (GXColor *color)
f32 Ground_801C20D0 (void)
static bool find_light_override (UnkArchiveStruct *archive, HSD_LightDesc *desc, bool *b6, bool *b7, bool *b5)
static bool find_light_override_in_dat (UnkStageDat *dat, UnkStageDat *array_dat, HSD_LightDesc *desc, bool *b6, bool *b7, bool *b5)
void Ground_801C2374 (HSD_LObj *lobj)
HSD_Spline * Ground_801C247C (s32 arg0, s32 arg1)
bool Ground_801C28AC (StKind stkind, u32 arg1, s32 *arg2)
static void panicMissingStageParam (StKind stkind, s32 count)
s32 * Ground_801C2AD8 (void)
float Ground_801C2AE8 (StKind stkind)
Ground_GObj * Ground_GetMapGObj (int map_id)
bool Ground_801C2C8C (void *arg0)
HSD_JObj * Ground_801C2CF4 (s32 i)
void Ground_801C2D0C (s32 i, HSD_JObj *jobj)
bool Ground_801C2D24 (enum_t arg0, Vec3 *arg1)
bool Ground_InitMapColl (HSD_JObj *jobj, s32 arg1)
 Binds each collision joint of map map_id to a joint of jobj, syncs it to the model, and re-enables the map's collision if it was removed.
bool Ground_UpdateMapColl (Ground_GObj *arg0)
 Re-syncs the collision joints of the map to its animated model.
bool Ground_801C3128 (int gobj_id, void(*arg1)(int))
bool Ground_801C3214 (int gobj_id)
bool Ground_801C3260 (s32 arg0)
void Ground_801C32AC (int gobj_id)
s32 Ground_801C32D4 (s32 arg0, s32 arg1)
s32 Ground_801C33C0 (s32 arg0, s32 arg1)
void Ground_801C36F4 (int map_id, HSD_JObj *root, UNK_T joint)
void Ground_801C3880 (f32 val)
void Ground_801C3890 (f32 val)
void Ground_801C38A0 (f32 val)
void Ground_801C38AC (f32 val)
void Ground_801C38BC (f32 x, f32 y)
void Ground_801C38D0 (f32 tilt, f32 pan, f32 a, f32 b)
void Ground_801C38EC (f32 depth, f32 zoom)
void Ground_801C3900 (f32 arg8, f32 arg9, f32 argA, f32 argB, f32 up, f32 down, f32 left, f32 right)
void Ground_801C392C (f32 x, f32 y, f32 z, f32 fov, f32 vert, f32 horz)
void Ground_801C3950 (f32 zoom)
void Ground_801C3960 (f32 ratio)
void Ground_801C3970 (f32 smooth)
void Ground_801C3980 (f32 top)
void Ground_801C3990 (f32 bottom)
void Ground_801C39A0 (f32 left)
void Ground_801C39B0 (f32 right)
void Ground_801C39C0 (void)
void Ground_801C3BB4 (void)
s32 Ground_801C3D44 (void *arg0, f32 arg8, f32 arg9)
s32 Ground_801C3DB4 (void *arg0, f32 arg8, f32 arg9)
static HSD_AObj * Ground_801C3E18 (HSD_JObj *jobj)
f32 Ground_801C3F20 (HSD_JObj *arg0)
HSD_JObj * Ground_801C3FA4 (HSD_GObj *gobj, int depth)
HSD_JObj * Ground_801C4100 (HSD_JObj *jobj)
s32 Ground_801C4210 (void)
void Ground_801C42AC (void)
void Ground_801C4338 (void)
void Ground_801C4368 (f32 *slope, f32 *intercept)
void Ground_801C438C (f32 val)
void Ground_801C43A4 (UNK_T arg0)
bool Ground_801C43C4 (void *arg0)
void Ground_801C445C (HSD_LObj *lobj)
static void Ground_801C461C (HSD_GObj *gobj)
static void Ground_801C4640 (HSD_GObj *gobj, intptr_t unused)
HSD_GObj * Ground_801C498C (void)
LightList ** Ground_801C49B4 (void)
void * Ground_GetYakumonoParam (void)
static void removeStageGObj (HSD_GObj *gobj)
void Ground_801C4A08 (HSD_GObj *gobj)
 Stage destroy ground gobj.
void Ground_801C4B50 (HSD_Spline *spline, Vec3 *arg1, Vec3 *result, f32 arg8)
bool Ground_801C4D70 (HSD_GObj *arg0, Vec3 *arg1, f32 arg8)
bool Ground_801C4DA0 (Vec3 *arg0, f32 *arg1)
bool Ground_801C4DD0 (void)
bool Ground_801C4E20 (void)
void Ground_801C4E70 (HSD_JObj *arg0, HSD_JObj *arg1, HSD_JObj *arg2, HSD_JObj *arg3, HSD_JObj *arg4, HSD_JObj *arg5)
void Ground_801C4FAC (HSD_CObj *cobj)
void Ground_801C53EC (u32 arg0)
void Ground_801C5414 (int arg0, int arg1)
void Ground_801C5440 (Ground *gp, s32 i, u32 arg2)
bool Ground_801C54DC (Ground *gp, s32 i)
void Ground_801C5544 (Ground *gp, s32 i)
void Ground_801C5630 (Ground *gp, s32 i, f32 val)
void Ground_801C5694 (Ground *gp, s32 i, f32 val)
lbColl_80008D30_arg1 * Ground_801C5700 (int i)
void Ground_801C5740 (s32 arg0)
void Ground_801C5750 (void)
s32 Ground_801C5764 (void)
s32 Ground_801C5774 (void)
void Ground_801C5784 (s32 arg0)
s32 Ground_801C5794 (void)
Fighter_GObj * Ground_GetP1Fighter (void)
Fighter_GObj * Ground_GetP1Fighter2 (void)
f32 Ground_801C57F0 (int arg0)
void Ground_EnableMatchCamera (void)
 Restores the in-match camera mode after unpause.
s32 Ground_801C5840 (void)
static void initSinglePlayerDisplay (StageInfo *stageinfo)
Item_GObj * Ground_801C58E0 (s32 arg0, s32 arg1)
int Ground_801C5940 (void)
void Ground_801C5A28 (void)
void Ground_801C5A60 (void)
void Ground_801C5A84 (s32 arg0)
s32 Ground_801C5A94 (void)
void Ground_801C5AA4 (bool arg0)
bool Ground_801C5ABC (void)
u32 Ground_801C5AD0 (s32 i)
void Ground_801C5AEC (Vec3 *v, Vec3 *arg1, Vec3 *arg2, Vec3 *arg3)

Variables

StageInfo stage_info
static StageData Ground_StageData
static StageData * stage_datas [111]
static u8 * Ground_804D6950
static ssize_t const buffer_size = 64
static ssize_t const Gr_CObj_Max = ARRAY_SIZE(stage_info.x694)
static BobOmbRain const Ground_803B7DEC = { 0, 0, 0, 0, 0, 6 }
static HSD_Joint const Ground_803B7E0C
static const int BGM_Undefined = -1
static s16 Ground_804D6954
static UNUSED u32 unk_words []
static HSD_LightAnim Ground_803E065C [] = { 0 }
static HSD_WObjDesc Ground_803E066C
static HSD_LightAnim * Ground_804D4500 []
static float Ground_804D4508 = 16.0f
static HSD_LightDesc Ground_803E0680
static HSD_LightAnim Ground_803E069C [] = { 0 }
static HSD_LightDesc Ground_803E06AC
static LightList Ground_804D450C
static HSD_LightAnim * Ground_804D4514 []
static LightList Ground_804D451C
static LightList * Ground_803E06C8 []
static int unused_ints [] = { 1, 1, 0, 0, 0, 180, 0, 0, 0 }

Detailed Description

Todo
Don't hardcode 8

Macro Definition Documentation

◆ RANDI_MAX

#define RANDI_MAX   (100)

◆ sqrtf_store

#define sqrtf_store ( x,
y )
Value:
float sqrtf(float)
Definition math_ppc.h:11
int x
Definition types.h:0

◆ FOG_ASSERT

#define FOG_ASSERT ( line,
cond )
Value:
((cond) ? (void) 0 : __assert("fog.h", line, #cond))
void __assert(const char *str, u32 arg1, const char *arg2)
Definition debug.c:39
Todo
replace with fog.h inlines

Function Documentation

◆ Ground_OnStart()

void Ground_OnStart ( void )
static

◆ Ground_801BFFAC()

void Ground_801BFFAC ( int arg0)
static

◆ mem_free()

void mem_free ( void * ptr)
static

◆ Ground_801C0A70()

bool Ground_801C0A70 ( Vec3 * pos)
static

◆ Ground_801C0C2C()

void Ground_801C0C2C ( HSD_GObj * arg0)
static

◆ Ground_801C1CD0()

void Ground_801C1CD0 ( HSD_GObj * gobj)
static

◆ Ground_801C1D38()

void Ground_801C1D38 ( HSD_GObj * gobj)
static

◆ Ground_801C1E2C()

void Ground_801C1E2C ( HSD_GObj * gobj,
intptr_t code )
static

◆ Ground_801C1E94()

void Ground_801C1E94 ( void )
static

◆ Ground_801C20E0()

LightList ** Ground_801C20E0 ( UnkArchiveStruct * archive,
LightList ** lightset )
static

◆ Ground_801C24F8()

bool Ground_801C24F8 ( StKind stkind,
u32 arg1,
s32 * arg2 )
static
Todo
phi_r30 probably belongs to an inline.
Todo
Weird comparison, but typing StageParam::x10 as signed doesn't match and neither does typing BGM_Undefined as unsigned.
Todo
Even weirder.

◆ Ground_801C28CC()

void Ground_801C28CC ( s32 * arg0,
StKind stkind )
static

◆ Ground_801C2BBC()

void Ground_801C2BBC ( Ground_GObj * map_gobj,
int index )
static

◆ Ground_801C2BD4()

void Ground_801C2BD4 ( void * arg0)
static

◆ Ground_801C34AC()

void Ground_801C34AC ( s32 map_id,
HSD_JObj * root,
struct HSD_Joint * joint )
static

◆ Ground_801C466C()

void Ground_801C466C ( void )
static

◆ Ground_801C55AC()

void Ground_801C55AC ( Ground * gp)
static

◆ Ground_801C5878()

void Ground_801C5878 ( void )
static

◆ Ground_801BFFB0()

void Ground_801BFFB0 ( void )

◆ zeroBuffer()

void zeroBuffer ( void )
static

◆ Ground_801C0378()

void Ground_801C0378 ( int arg0)

◆ Ground_801C0498()

float Ground_801C0498 ( void )

◆ alloc_user_data_ground()

Ground * alloc_user_data_ground ( void )
static

◆ Ground_SetParamY()

void Ground_SetParamY ( float y)

◆ Ground_801C0508()

s32 Ground_801C0508 ( void )

◆ Ground_801C052C()

void Ground_801C052C ( GXColor * arg0)

◆ Ground_801C0544()

void Ground_801C0544 ( GXColor * arg0)

◆ Ground_801C055C()

void Ground_801C055C ( GXColor * arg0)

◆ Ground_801C0574()

void Ground_801C0574 ( GXColor * arg0)

◆ Ground_801C058C()

void Ground_801C058C ( GXColor * arg0)

◆ Ground_801C05A4()

void Ground_801C05A4 ( GXColor * arg0)

◆ Ground_801C05BC()

void Ground_801C05BC ( GXColor * arg0)

◆ Ground_801C05D4()

void Ground_801C05D4 ( GXColor * arg0)

◆ Ground_801C05EC()

void Ground_801C05EC ( GXColor * arg0)

◆ Ground_801C0604()

GXColor * Ground_801C0604 ( void )

◆ Ground_801C0618()

GXColor * Ground_801C0618 ( void )

◆ Ground_801C062C()

GXColor * Ground_801C062C ( void )

◆ Ground_801C0640()

GXColor * Ground_801C0640 ( void )

◆ Ground_801C0654()

GXColor * Ground_801C0654 ( void )

◆ Ground_801C0668()

GXColor * Ground_801C0668 ( void )

◆ Ground_801C067C()

GXColor * Ground_801C067C ( void )

◆ Ground_801C0690()

GXColor * Ground_801C0690 ( void )

◆ Ground_801C06A4()

GXColor * Ground_801C06A4 ( void )

◆ Ground_801C06B8()

void Ground_801C06B8 ( GrKind arg0)

◆ Ground_801C0754()

void Ground_801C0754 ( StageIdPair * pair)

◆ Ground_801C0800()

void Ground_801C0800 ( StageIdPair * pair)

◆ Ground_OnLoad()

void Ground_OnLoad ( StageIdPair * pair)

◆ Ground_801C0FB8()

void Ground_801C0FB8 ( StageIdPair * pair)

◆ Ground_DemoInit()

void Ground_DemoInit ( StageIdPair * pair,
s32 arg1 )

◆ Ground_801C10B8()

void Ground_801C10B8 ( HSD_GObj * arg0,
HSD_GObjEvent arg1 )

◆ Ground_801C1154()

void Ground_801C1154 ( void )

◆ Ground_801C1158()

void Ground_801C1158 ( void )

◆ Ground_801C11AC()

void Ground_801C11AC ( HSD_GObj * gobj)

◆ Ground_801C126C()

HSD_Joint * Ground_801C126C ( HSD_Joint * node,
s32 * depth )
static

◆ Ground_801C13D0()

HSD_JObj * Ground_801C13D0 ( s32 arg0,
s32 depth )

◆ get_jobj_inline()

HSD_JObj * get_jobj_inline ( float phi_f0)
static

◆ Ground_GetStageGObj()

Ground_GObj * Ground_GetStageGObj ( int map_id)
Bug
alloc_user_data_ground returns the block uncleared and nothing below zeroes it, so any field a stage's callbacks read before its on_init writes it sees stale heap contents.

◆ Ground_801C1A20()

HSD_GObj * Ground_801C1A20 ( HSD_Joint * arg0,
s32 arg1 )

◆ Ground_801C1D6C()

void Ground_801C1D6C ( u32 arg0)

◆ Ground_801C1D84()

u32 Ground_801C1D84 ( void )

◆ Ground_801C1D98()

u32 Ground_801C1D98 ( void )

◆ Ground_801C1DAC()

u32 Ground_801C1DAC ( void )

◆ Ground_801C1DC0()

u32 Ground_801C1DC0 ( void )

◆ Ground_801C1DD4()

int Ground_801C1DD4 ( void )

◆ Ground_801C1DE4()

void Ground_801C1DE4 ( s32 * arg0,
s32 * arg1 )

◆ Ground_801C1E00()

void Ground_801C1E00 ( s32 arg0)

◆ Ground_801C1E18()

s32 Ground_801C1E18 ( void )

◆ Ground_801C1E84()

HSD_GObj * Ground_801C1E84 ( void )

◆ foo()

HSD_FogDesc * foo ( void )
inlinestatic

void Camera_SetBackgroundColor(u8, u8, u8); /* extern ‍/ UnkStruct3 grDatFiles_801C6330(int); /* extern ‍/ void Ground_801C1E2C(HSD_GObj, intptr_t); /* extern *‍/ extern s8 HSD_GObj_FogKind; extern float @330;

◆ Ground_ApplyStageBackgroundColor()

void Ground_ApplyStageBackgroundColor ( void )

◆ Ground_801C205C()

void Ground_801C205C ( GXColor * color)

◆ Ground_801C2090()

bool Ground_801C2090 ( GXColor * color)

◆ Ground_801C20D0()

f32 Ground_801C20D0 ( void )

◆ find_light_override()

bool find_light_override ( UnkArchiveStruct * archive,
HSD_LightDesc * desc,
bool * b6,
bool * b7,
bool * b5 )
inlinestatic

◆ find_light_override_in_dat()

bool find_light_override_in_dat ( UnkStageDat * dat,
UnkStageDat * array_dat,
HSD_LightDesc * desc,
bool * b6,
bool * b7,
bool * b5 )
inlinestatic

◆ Ground_801C2374()

void Ground_801C2374 ( HSD_LObj * lobj)

◆ Ground_801C247C()

HSD_Spline * Ground_801C247C ( s32 arg0,
s32 arg1 )

◆ Ground_801C28AC()

bool Ground_801C28AC ( StKind stkind,
u32 arg1,
s32 * arg2 )

◆ panicMissingStageParam()

void panicMissingStageParam ( StKind stkind,
s32 count )
static

◆ Ground_801C2AD8()

s32 * Ground_801C2AD8 ( void )

◆ Ground_801C2AE8()

float Ground_801C2AE8 ( StKind stkind)

◆ Ground_GetMapGObj()

Ground_GObj * Ground_GetMapGObj ( int map_id)

◆ Ground_801C2C8C()

bool Ground_801C2C8C ( void * arg0)

◆ Ground_801C2CF4()

HSD_JObj * Ground_801C2CF4 ( s32 i)

◆ Ground_801C2D0C()

void Ground_801C2D0C ( s32 i,
HSD_JObj * jobj )

◆ Ground_801C2D24()

bool Ground_801C2D24 ( enum_t arg0,
Vec3 * arg1 )

◆ Ground_InitMapColl()

bool Ground_InitMapColl ( HSD_JObj * jobj,
s32 map_id )

Binds each collision joint of map map_id to a joint of jobj, syncs it to the model, and re-enables the map's collision if it was removed.

Returns
whether the map has any collision joints.

◆ Ground_UpdateMapColl()

bool Ground_UpdateMapColl ( Ground_GObj * arg0)

Re-syncs the collision joints of the map to its animated model.

Runs at most once per frame per joint and only while the map's collision is enabled.

Returns
whether any joint was updated.

◆ Ground_801C3128()

bool Ground_801C3128 ( int gobj_id,
void(* arg1 )(int) )
Todo
Unused variable; is this an argument?
Todo
cur cannot be swapped below max, hinting at a missing inline function.

◆ Ground_801C3214()

bool Ground_801C3214 ( int gobj_id)

◆ Ground_801C3260()

bool Ground_801C3260 ( s32 arg0)

◆ Ground_801C32AC()

void Ground_801C32AC ( int gobj_id)

◆ Ground_801C32D4()

s32 Ground_801C32D4 ( s32 arg0,
s32 arg1 )
Todo
Shared inline with Ground_801C33C0.
Todo
Might be an inline starting here.

◆ Ground_801C33C0()

s32 Ground_801C33C0 ( s32 arg0,
s32 arg1 )
Attention
x and z being swapped compared to Ground_801C32D4 is the only difference.
Todo
Might be an inline starting here.

◆ Ground_801C36F4()

void Ground_801C36F4 ( int map_id,
HSD_JObj * root,
UNK_T joint )

◆ Ground_801C3880()

void Ground_801C3880 ( f32 val)

◆ Ground_801C3890()

void Ground_801C3890 ( f32 val)

◆ Ground_801C38A0()

void Ground_801C38A0 ( f32 val)

◆ Ground_801C38AC()

void Ground_801C38AC ( f32 val)

◆ Ground_801C38BC()

void Ground_801C38BC ( f32 x,
f32 y )

◆ Ground_801C38D0()

void Ground_801C38D0 ( f32 tilt,
f32 pan,
f32 a,
f32 b )

◆ Ground_801C38EC()

void Ground_801C38EC ( f32 depth,
f32 zoom )

◆ Ground_801C3900()

void Ground_801C3900 ( f32 arg8,
f32 arg9,
f32 argA,
f32 argB,
f32 up,
f32 down,
f32 left,
f32 right )

◆ Ground_801C392C()

void Ground_801C392C ( f32 x,
f32 y,
f32 z,
f32 fov,
f32 vert,
f32 horz )

◆ Ground_801C3950()

void Ground_801C3950 ( f32 zoom)

◆ Ground_801C3960()

void Ground_801C3960 ( f32 ratio)

◆ Ground_801C3970()

void Ground_801C3970 ( f32 smooth)

◆ Ground_801C3980()

void Ground_801C3980 ( f32 top)

◆ Ground_801C3990()

void Ground_801C3990 ( f32 bottom)

◆ Ground_801C39A0()

void Ground_801C39A0 ( f32 left)

◆ Ground_801C39B0()

void Ground_801C39B0 ( f32 right)

◆ Ground_801C39C0()

void Ground_801C39C0 ( void )

◆ Ground_801C3BB4()

void Ground_801C3BB4 ( void )

◆ Ground_801C3D44()

s32 Ground_801C3D44 ( void * arg0,
f32 arg8,
f32 arg9 )

◆ Ground_801C3DB4()

s32 Ground_801C3DB4 ( void * arg0,
f32 arg8,
f32 arg9 )

◆ Ground_801C3E18()

HSD_AObj * Ground_801C3E18 ( HSD_JObj * jobj)
static

◆ Ground_801C3F20()

f32 Ground_801C3F20 ( HSD_JObj * arg0)

◆ Ground_801C3FA4()

HSD_JObj * Ground_801C3FA4 ( HSD_GObj * gobj,
int depth )

◆ Ground_801C4100()

HSD_JObj * Ground_801C4100 ( HSD_JObj * jobj)
Todo
Why isn't this emitted to jobj.c?

◆ Ground_801C4210()

s32 Ground_801C4210 ( void )
Todo
With a hard-coded range for i, very unlikely it's not returning an enum. Probably preset joints (accesses a list of HSD_JObj).

◆ Ground_801C42AC()

void Ground_801C42AC ( void )

◆ Ground_801C4338()

void Ground_801C4338 ( void )

◆ Ground_801C4368()

void Ground_801C4368 ( f32 * slope,
f32 * intercept )

◆ Ground_801C438C()

void Ground_801C438C ( f32 val)

◆ Ground_801C43A4()

void Ground_801C43A4 ( UNK_T arg0)

◆ Ground_801C43C4()

bool Ground_801C43C4 ( void * arg0)

◆ Ground_801C445C()

void Ground_801C445C ( HSD_LObj * lobj)

◆ Ground_801C461C()

void Ground_801C461C ( HSD_GObj * gobj)
static

◆ Ground_801C4640()

void Ground_801C4640 ( HSD_GObj * gobj,
intptr_t unused )
static

◆ Ground_801C498C()

HSD_GObj * Ground_801C498C ( void )

◆ Ground_801C49B4()

LightList ** Ground_801C49B4 ( void )

◆ Ground_GetYakumonoParam()

void * Ground_GetYakumonoParam ( void )

◆ removeStageGObj()

void removeStageGObj ( HSD_GObj * gobj)
inlinestatic

◆ Ground_801C4A08()

void Ground_801C4A08 ( HSD_GObj * gobj)

Stage destroy ground gobj.

◆ Ground_801C4B50()

void Ground_801C4B50 ( HSD_Spline * spline,
Vec3 * arg1,
Vec3 * result,
f32 arg8 )
Parameters
[in]spline
[in]arg1
[out]result
[in]arg8

◆ Ground_801C4D70()

bool Ground_801C4D70 ( HSD_GObj * arg0,
Vec3 * arg1,
f32 arg8 )

◆ Ground_801C4DA0()

bool Ground_801C4DA0 ( Vec3 * arg0,
f32 * arg1 )

◆ Ground_801C4DD0()

bool Ground_801C4DD0 ( void )

◆ Ground_801C4E20()

bool Ground_801C4E20 ( void )

◆ Ground_801C4E70()

void Ground_801C4E70 ( HSD_JObj * arg0,
HSD_JObj * arg1,
HSD_JObj * arg2,
HSD_JObj * arg3,
HSD_JObj * arg4,
HSD_JObj * arg5 )

◆ Ground_801C4FAC()

void Ground_801C4FAC ( HSD_CObj * cobj)

◆ Ground_801C53EC()

void Ground_801C53EC ( u32 arg0)

◆ Ground_801C5414()

void Ground_801C5414 ( int arg0,
int arg1 )

◆ Ground_801C5440()

void Ground_801C5440 ( Ground * gp,
s32 i,
u32 arg2 )

◆ Ground_801C54DC()

bool Ground_801C54DC ( Ground * gp,
s32 i )

◆ Ground_801C5544()

void Ground_801C5544 ( Ground * gp,
s32 i )

◆ Ground_801C5630()

void Ground_801C5630 ( Ground * gp,
s32 i,
f32 val )

◆ Ground_801C5694()

void Ground_801C5694 ( Ground * gp,
s32 i,
f32 val )

◆ Ground_801C5700()

lbColl_80008D30_arg1 * Ground_801C5700 ( int i)

◆ Ground_801C5740()

void Ground_801C5740 ( s32 arg0)

◆ Ground_801C5750()

void Ground_801C5750 ( void )

◆ Ground_801C5764()

s32 Ground_801C5764 ( void )

◆ Ground_801C5774()

s32 Ground_801C5774 ( void )

◆ Ground_801C5784()

void Ground_801C5784 ( s32 arg0)

◆ Ground_801C5794()

s32 Ground_801C5794 ( void )

◆ Ground_GetP1Fighter()

Fighter_GObj * Ground_GetP1Fighter ( void )

◆ Ground_GetP1Fighter2()

Fighter_GObj * Ground_GetP1Fighter2 ( void )

◆ Ground_801C57F0()

f32 Ground_801C57F0 ( int arg0)
Parameters
arg0Unused by the implementation; the game's only caller (fn_80180C60 at 0x80180C88) materializes an explicit 0 argument, so the original signature takes a parameter.

◆ Ground_EnableMatchCamera()

void Ground_EnableMatchCamera ( void )

Restores the in-match camera mode after unpause.

Selects standard or fixed camera according to the stage's GroundParam::x4C_fixed_cam parameter. Both underlying calls only set the camera mode, without additional setup. Used when a paused match resumes and no StartMeleeRules::on_unpause_override is installed.

◆ Ground_801C5840()

s32 Ground_801C5840 ( void )

◆ initSinglePlayerDisplay()

void initSinglePlayerDisplay ( StageInfo * stageinfo)
inlinestatic

◆ Ground_801C58E0()

Item_GObj * Ground_801C58E0 ( s32 arg0,
s32 arg1 )

◆ Ground_801C5940()

int Ground_801C5940 ( void )

◆ Ground_801C5A28()

void Ground_801C5A28 ( void )

◆ Ground_801C5A60()

void Ground_801C5A60 ( void )

◆ Ground_801C5A84()

void Ground_801C5A84 ( s32 arg0)

◆ Ground_801C5A94()

s32 Ground_801C5A94 ( void )

◆ Ground_801C5AA4()

void Ground_801C5AA4 ( bool arg0)

◆ Ground_801C5ABC()

bool Ground_801C5ABC ( void )

◆ Ground_801C5AD0()

u32 Ground_801C5AD0 ( s32 i)

◆ Ground_801C5AEC()

void Ground_801C5AEC ( Vec3 * v,
Vec3 * arg1,
Vec3 * arg2,
Vec3 * arg3 )

Variable Documentation

◆ stage_info

StageInfo stage_info

◆ Ground_StageData

StageData Ground_StageData
static
Initial value:
= {
0,
0,
0,
}
static void Ground_OnStart(void)
Definition ground.c:206
static void Ground_801BFFAC(int)
Definition ground.c:208
#define NULL
Definition stddef.h:19

◆ stage_datas

StageData* stage_datas[111]
static

◆ Ground_804D6950

u8* Ground_804D6950
static

◆ buffer_size

ssize_t const buffer_size = 64
static

◆ Gr_CObj_Max

ssize_t const Gr_CObj_Max = ARRAY_SIZE(stage_info.x694)
static

◆ Ground_803B7DEC

BobOmbRain const Ground_803B7DEC = { 0, 0, 0, 0, 0, 6 }
static

◆ Ground_803B7E0C

HSD_Joint const Ground_803B7E0C
static
Initial value:
= {
NULL, 0, NULL, NULL, NULL,
{ 0, 0, 0 }, { 1, 1, 1 }, { 0, 0, 0 }, NULL, NULL,
}

◆ BGM_Undefined

const int BGM_Undefined = -1
static

◆ Ground_804D6954

s16 Ground_804D6954
static

◆ unk_words

UNUSED u32 unk_words[]
static
Todo
Flags maybe? Is this used by base pointer anywhere? Not stripped by mwcc.

◆ Ground_803E065C

HSD_LightAnim Ground_803E065C[] = { 0 }
static

◆ Ground_803E066C

HSD_WObjDesc Ground_803E066C
static
Initial value:
= {
{ 0.57f, 0.57f, 0.57f },
}

◆ Ground_804D4500

HSD_LightAnim* Ground_804D4500[]
static
Initial value:
= {
}
static HSD_LightAnim Ground_803E065C[]
Definition ground.c:2584

◆ Ground_804D4508

float Ground_804D4508 = 16.0f
static

◆ Ground_803E0680

HSD_LightDesc Ground_803E0680
static
Initial value:
= {
(1 << 0) | (1 << 2) | (1 << 3),
0,
{ 0xFF, 0xFF, 0xFF, 0xFF },
}
static float Ground_804D4508
Definition ground.c:2596
static HSD_WObjDesc Ground_803E066C
Definition ground.c:2585

◆ Ground_803E069C

HSD_LightAnim Ground_803E069C[] = { 0 }
static

◆ Ground_803E06AC

HSD_LightDesc Ground_803E06AC
static
Initial value:
= {
NULL, NULL, (1 << 2), 0, { 0xFF, 0xFF, 0xFF, 0xFF }, NULL, NULL, NULL
}

◆ Ground_804D450C

LightList Ground_804D450C
static
Initial value:
= {
}
static HSD_LightAnim * Ground_804D4500[]
Definition ground.c:2591
static HSD_LightDesc Ground_803E0680
Definition ground.c:2598

◆ Ground_804D4514

HSD_LightAnim* Ground_804D4514[]
static
Initial value:
= {
}
static HSD_LightAnim Ground_803E069C[]
Definition ground.c:2609

◆ Ground_804D451C

LightList Ground_804D451C
static
Initial value:
= {
}
static HSD_LightDesc Ground_803E06AC
Definition ground.c:2610
static HSD_LightAnim * Ground_804D4514[]
Definition ground.c:2618

◆ Ground_803E06C8

LightList* Ground_803E06C8[]
static
Initial value:
= {
}
static LightList Ground_804D450C
Definition ground.c:2614
static LightList Ground_804D451C
Definition ground.c:2622

◆ unused_ints

int unused_ints[] = { 1, 1, 0, 0, 0, 180, 0, 0, 0 }
static
Todo
Is this used by base pointer anywhere? Not stripped by mwcc.