SSBM Decomp
Loading...
Searching...
No Matches
gricemt.c File Reference
#include "gricemt.static.h"

Data Structures

struct  grIceMt_YakumonoParam
struct  GrIm825C
struct  IceMtRowData
 Ice Mountain row data - 12 bytes each. More...
struct  GrIm588
struct  grIceMt_FA364_State

Macros

#define ICEMT_FIELD_MAX   6
#define BLOCK_COLL_JOBJ_MAX   20

Functions

static void order_sdata2 (void)
static void order_data0 (void)
void grIceMt_801F6868 (bool id)
void grIceMt_801F686C (void)
static bool rand_zero (s32 n)
void grIceMt_801F7080 (void)
void grIceMt_801F71DC (void)
bool grIceMt_801F71E0 (void)
HSD_GObjgrIceMt_801F71E8 (int gobj_id)
static void order_data1 (void)
void grIceMt_801F72D4 (Ground_GObj *gobj)
bool grIceMt_801F75DC (Ground_GObj *arg0)
void grIceMt_801F75E4 (Ground_GObj *arg0)
void grIceMt_801F75E8 (Ground_GObj *arg0)
void fn_801F75EC (HSD_GObj *arg0)
void grIceMt_801F75FC (Ground_GObj *arg0)
bool grIceMt_801F7720 (Ground_GObj *arg0)
void grIceMt_801F7728 (Ground_GObj *gobj)
void grIceMt_801F77AC (Ground_GObj *arg0)
void fn_801F77B0 (HSD_GObj *arg0)
void grIceMt_801F785C (Ground_GObj *gobj)
bool grIceMt_801F796C (Ground_GObj *arg0)
void grIceMt_801F7A2C (Ground_GObj *arg0)
void grIceMt_801F7D90 (Ground_GObj *arg0)
void grIceMt_801F7D94 (Ground_GObj *arg0)
bool grIceMt_801F7EE0 (Ground_GObj *arg0)
void grIceMt_801F7EE8 (Ground_GObj *arg0)
void grIceMt_801F7F1C (Ground_GObj *gobj)
void grIceMt_801F7F70 (Ground_GObj *arg0)
bool grIceMt_801F8154 (Ground_GObj *param1)
void grIceMt_801F815C (Ground_GObj *param1)
void grIceMt_801F81B4 (Ground_GObj *gobj)
void grIceMt_801F8208 (Ground_GObj *arg0)
bool grIceMt_801F835C (Ground_GObj *param1)
void grIceMt_801F8364 (Ground_GObj *arg0)
void grIceMt_801F8398 (Ground_GObj *gobj)
void grIceMt_801F83EC (Ground_GObj *arg0)
bool grIceMt_801F85BC (Ground_GObj *param1)
void grIceMt_801F85C4 (Ground_GObj *gobj)
void grIceMt_801F8608 (Ground_GObj *gobj)
void grIceMt_801F865C (Ground_GObj *arg0)
bool grIceMt_801F87C0 (Ground_GObj *param1)
void grIceMt_801F87C8 (Ground_GObj *param1)
void grIceMt_801F87FC (Ground_GObj *gobj)
void grIceMt_801F8850 (Ground_GObj *arg0)
bool grIceMt_801F89A4 (Ground_GObj *arg0)
void grIceMt_801F89AC (Ground_GObj *param1)
void grIceMt_801F89E0 (Ground_GObj *gobj)
void grIceMt_801F8A34 (Ground_GObj *gobj)
bool grIceMt_801F8B08 (Ground_GObj *arg0)
void grIceMt_801F8B10 (Ground_GObj *arg0)
void grIceMt_801F8C60 (Ground_GObj *arg0)
void fn_801F8C64 (Item_GObj *gobj, Ground *u1, Vec3 *u2, HSD_GObj *u3, f32 u4)
void grIceMt_801F8CDC (Ground_GObj *gobj, s16 *joint_indices, int block_num, HSD_GObj **output_array)
 Creates material items and attaches them to Entity05 platform JObjs.
static s32 grIceMt_GetRandomIndex (s32 max, s32 *list)
static void grIceMt_GetRandomTimer (s32 *out)
s32 fn_801F8E58 (Ground_GObj *arg0, s32 *out)
int fn_801F9038 (Ground_GObj *gobj)
s32 fn_801F9150 (HSD_GObj *arg0, s32 *out)
int fn_801F91A8 (Ground_GObj *gobj)
void grIceMt_801F91EC (HSD_GObj *param_1, s16 *param_2, int param_3, int param_4, int param_5, int param_6, int param_7, mpLib_JointCollisionCallback param_8)
void grIceMt_801F929C (HSD_GObj *arg0, void *arg1)
void fn_801F9338 (void *user_data, int joint_id, CollData *coll, int coll_x50, mpLib_GroundEnum ground_kind, float delta_y)
 Joint collision callback for ground surfaces.
void fn_801F9448 (void *user_data, int joint_id, CollData *coll, int coll_x50, mpLib_GroundEnum ground_kind, float delta_y)
 Joint collision callback for ground surfaces.
void fn_801F9558 (void *user_data, int joint_id, CollData *coll, int coll_x50, mpLib_GroundEnum ground_kind, float delta_y)
 Joint collision callback for ground surfaces.
void grIceMt_801F9668 (float arg8)
float grIceMt_801F96E0 (struct grIceMt_GroundVars *arg0, float farg0)
void grIceMt_801F98A8 (Ground_GObj *param1)
f32 grIceMt_801F993C (s32 arg0, s32 arg1)
static HSD_GObjgrIceMt_801F71E8_inner2 (int id)
static HSD_GObjgrIceMt_801F71E8_noinline2 (int id)
int grIceMt_801F9ACC (Ground_GObj *gobj, float y, GrIceMtSegmentLookup ev, Ground_GObj *arg3)
static HSD_JObj ** grIceMt_FA0BC_jobjs (Ground *g)
void grIceMt_801FA0BC (s16 *arg0)
bool grIceMt_801FA364 (void *state_, f32 *out, HSD_GObjEvent cb_, Ground_GObj *gobj)
int fn_801FA4CC (int num)
int grIceMt_801FA500 (HSD_GObj *arg0, HSD_JObj *arg1)
void grIceMt_801FA6D8 (HSD_GObj *param1)
void grIceMt_801FA728 (Vec3 *arg0)
void grIceMt_801FA7F0 (void *user_data, int joint_id, CollData *coll, int coll_x50, mpLib_GroundEnum ground_kind, float delta_y)
 Joint collision callback for ground surfaces.
void grIceMt_801FA854 (void)
DynamicsDescgrIceMt_801FA8F8 (enum_t id)
bool grIceMt_801FA900 (Vec3 *a, int id, HSD_JObj *jobj)

Variables

static struct grIceMt_YakumonoParamyakumono_param
HSD_GObjgrIm_804D69F0
HSD_GObjgrIm_804D69EC
HSD_GObjgrIm_804D69E8
const GrIm825C grIm_803B825C = { { 1, 2, 3, 4 }, 5 }
IceMtRowData grIm_803E4068 [6]
GrJoint grIm_803E40B0 []
s16 grIm_803E4544 []
StageCallbacks grIm_StageCallbacks []
StageData grIm_StageData
static const GrIm588 grIm_804DB588 = { 1, 2 }
static const GrIm588 grIm_804DB58C = { 1, 2 }
static const GrIm588 grIm_804DB590 = { 1, 2 }
static const GrIm588 grIm_804DB594 = { 3, 4 }
static const GrIm588 grIm_804DB598 = { 1, 2 }
static const GrIm588 grIm_804DB59C = { 3, 4 }
static const GrIm588 grIm_804DB5A0 = { 1, 2 }
static const GrIm588 grIm_804DB5A4 = { 3, 4 }

Macro Definition Documentation

◆ ICEMT_FIELD_MAX

#define ICEMT_FIELD_MAX   6

◆ BLOCK_COLL_JOBJ_MAX

#define BLOCK_COLL_JOBJ_MAX   20

Function Documentation

◆ order_sdata2()

void order_sdata2 ( void )
static

◆ order_data0()

void order_data0 ( void )
static

◆ grIceMt_801F6868()

void grIceMt_801F6868 ( bool id)

◆ grIceMt_801F686C()

void grIceMt_801F686C ( void )

◆ rand_zero()

bool rand_zero ( s32 n)
inlinestatic

◆ grIceMt_801F7080()

void grIceMt_801F7080 ( void )

◆ grIceMt_801F71DC()

void grIceMt_801F71DC ( void )

◆ grIceMt_801F71E0()

bool grIceMt_801F71E0 ( void )

◆ grIceMt_801F71E8()

HSD_GObj * grIceMt_801F71E8 ( int gobj_id)

◆ order_data1()

void order_data1 ( void )
static

◆ grIceMt_801F72D4()

void grIceMt_801F72D4 ( Ground_GObj * gobj)
Todo
Unrolled loop?

◆ grIceMt_801F75DC()

bool grIceMt_801F75DC ( Ground_GObj * arg0)

◆ grIceMt_801F75E4()

void grIceMt_801F75E4 ( Ground_GObj * arg0)

◆ grIceMt_801F75E8()

void grIceMt_801F75E8 ( Ground_GObj * arg0)

◆ fn_801F75EC()

void fn_801F75EC ( HSD_GObj * arg0)

◆ grIceMt_801F75FC()

void grIceMt_801F75FC ( Ground_GObj * arg0)
Note
This function treats xF4 area as s16 indices during initialization. The same memory is later interpreted as pointers by other functions.
Todo
sizeof surrounding struct
Todo
sizeof surrounding struct

◆ grIceMt_801F7720()

bool grIceMt_801F7720 ( Ground_GObj * arg0)

◆ grIceMt_801F7728()

void grIceMt_801F7728 ( Ground_GObj * gobj)

◆ grIceMt_801F77AC()

void grIceMt_801F77AC ( Ground_GObj * arg0)

◆ fn_801F77B0()

void fn_801F77B0 ( HSD_GObj * arg0)

◆ grIceMt_801F785C()

void grIceMt_801F785C ( Ground_GObj * gobj)

◆ grIceMt_801F796C()

bool grIceMt_801F796C ( Ground_GObj * arg0)

◆ grIceMt_801F7A2C()

void grIceMt_801F7A2C ( Ground_GObj * arg0)

◆ grIceMt_801F7D90()

void grIceMt_801F7D90 ( Ground_GObj * arg0)

◆ grIceMt_801F7D94()

void grIceMt_801F7D94 ( Ground_GObj * arg0)

◆ grIceMt_801F7EE0()

bool grIceMt_801F7EE0 ( Ground_GObj * arg0)

◆ grIceMt_801F7EE8()

void grIceMt_801F7EE8 ( Ground_GObj * arg0)

◆ grIceMt_801F7F1C()

void grIceMt_801F7F1C ( Ground_GObj * gobj)

◆ grIceMt_801F7F70()

void grIceMt_801F7F70 ( Ground_GObj * arg0)

◆ grIceMt_801F8154()

bool grIceMt_801F8154 ( Ground_GObj * param1)

◆ grIceMt_801F815C()

void grIceMt_801F815C ( Ground_GObj * param1)

◆ grIceMt_801F81B4()

void grIceMt_801F81B4 ( Ground_GObj * gobj)

◆ grIceMt_801F8208()

void grIceMt_801F8208 ( Ground_GObj * arg0)

◆ grIceMt_801F835C()

bool grIceMt_801F835C ( Ground_GObj * param1)

◆ grIceMt_801F8364()

void grIceMt_801F8364 ( Ground_GObj * arg0)

◆ grIceMt_801F8398()

void grIceMt_801F8398 ( Ground_GObj * gobj)

◆ grIceMt_801F83EC()

void grIceMt_801F83EC ( Ground_GObj * arg0)

◆ grIceMt_801F85BC()

bool grIceMt_801F85BC ( Ground_GObj * param1)

◆ grIceMt_801F85C4()

void grIceMt_801F85C4 ( Ground_GObj * gobj)

◆ grIceMt_801F8608()

void grIceMt_801F8608 ( Ground_GObj * gobj)

◆ grIceMt_801F865C()

void grIceMt_801F865C ( Ground_GObj * arg0)

◆ grIceMt_801F87C0()

bool grIceMt_801F87C0 ( Ground_GObj * param1)

◆ grIceMt_801F87C8()

void grIceMt_801F87C8 ( Ground_GObj * param1)

◆ grIceMt_801F87FC()

void grIceMt_801F87FC ( Ground_GObj * gobj)
Todo
Rename: This is callback3 (destroy) for row 5 in grIm_StageCallbacks. Destroys HSD_GObj* stored in icemt2.xF8[0-4].

◆ grIceMt_801F8850()

void grIceMt_801F8850 ( Ground_GObj * arg0)

◆ grIceMt_801F89A4()

bool grIceMt_801F89A4 ( Ground_GObj * arg0)

◆ grIceMt_801F89AC()

void grIceMt_801F89AC ( Ground_GObj * param1)

◆ grIceMt_801F89E0()

void grIceMt_801F89E0 ( Ground_GObj * gobj)

◆ grIceMt_801F8A34()

void grIceMt_801F8A34 ( Ground_GObj * gobj)

◆ grIceMt_801F8B08()

bool grIceMt_801F8B08 ( Ground_GObj * arg0)

◆ grIceMt_801F8B10()

void grIceMt_801F8B10 ( Ground_GObj * arg0)

◆ grIceMt_801F8C60()

void grIceMt_801F8C60 ( Ground_GObj * arg0)

◆ fn_801F8C64()

void fn_801F8C64 ( Item_GObj * gobj,
Ground * u1,
Vec3 * u2,
HSD_GObj * u3,
f32 u4 )

◆ grIceMt_801F8CDC()

void grIceMt_801F8CDC ( Ground_GObj * gobj,
s16 * joint_indices,
int block_num,
HSD_GObj ** output_array )

Creates material items and attaches them to Entity05 platform JObjs.

Parameters
gobjThe Entity05 Ground_GObj
joint_indicesArray of joint indices to get parent JObjs from
countNumber of items to create (max 20)
output_arrayArray to store created Item_GObj pointers

◆ grIceMt_GetRandomIndex()

s32 grIceMt_GetRandomIndex ( s32 max,
s32 * list )
inlinestatic

◆ grIceMt_GetRandomTimer()

void grIceMt_GetRandomTimer ( s32 * out)
inlinestatic

◆ fn_801F8E58()

s32 fn_801F8E58 ( Ground_GObj * arg0,
s32 * out )

◆ fn_801F9038()

int fn_801F9038 ( Ground_GObj * gobj)

◆ fn_801F9150()

s32 fn_801F9150 ( HSD_GObj * arg0,
s32 * out )

◆ fn_801F91A8()

int fn_801F91A8 ( Ground_GObj * gobj)

◆ grIceMt_801F91EC()

void grIceMt_801F91EC ( HSD_GObj * param_1,
s16 * param_2,
int param_3,
int param_4,
int param_5,
int param_6,
int param_7,
mpLib_JointCollisionCallback param_8 )

◆ grIceMt_801F929C()

void grIceMt_801F929C ( HSD_GObj * arg0,
void * arg1 )

◆ fn_801F9338()

void fn_801F9338 ( void * user_data,
int joint_id,
CollData * coll,
int coll_x50,
mpLib_GroundEnum ground_kind,
float delta_y )

Joint collision callback for ground surfaces.

Parameters
user_dataSaved untyped data attached to the callback.
coll_x50Unknown, sourced from CollData::x50. dist according to fn_801FC9AC?
delta_yRelative y-offset since the collision started, equal to coll->cur_pos.y - coll->last_pos.y

◆ fn_801F9448()

void fn_801F9448 ( void * user_data,
int joint_id,
CollData * coll,
int coll_x50,
mpLib_GroundEnum ground_kind,
float delta_y )

Joint collision callback for ground surfaces.

Parameters
user_dataSaved untyped data attached to the callback.
coll_x50Unknown, sourced from CollData::x50. dist according to fn_801FC9AC?
delta_yRelative y-offset since the collision started, equal to coll->cur_pos.y - coll->last_pos.y

◆ fn_801F9558()

void fn_801F9558 ( void * user_data,
int joint_id,
CollData * coll,
int coll_x50,
mpLib_GroundEnum ground_kind,
float delta_y )

Joint collision callback for ground surfaces.

Parameters
user_dataSaved untyped data attached to the callback.
coll_x50Unknown, sourced from CollData::x50. dist according to fn_801FC9AC?
delta_yRelative y-offset since the collision started, equal to coll->cur_pos.y - coll->last_pos.y

◆ grIceMt_801F9668()

void grIceMt_801F9668 ( float arg8)

◆ grIceMt_801F96E0()

float grIceMt_801F96E0 ( struct grIceMt_GroundVars * arg0,
float farg0 )

◆ grIceMt_801F98A8()

void grIceMt_801F98A8 ( Ground_GObj * param1)
Note
Checks bit 6 of icemt2.xC4 (as byte) - clears it and does cleanup.

◆ grIceMt_801F993C()

f32 grIceMt_801F993C ( s32 arg0,
s32 arg1 )

◆ grIceMt_801F71E8_inner2()

HSD_GObj * grIceMt_801F71E8_inner2 ( int id)
inlinestatic

◆ grIceMt_801F71E8_noinline2()

HSD_GObj * grIceMt_801F71E8_noinline2 ( int id)
inlinestatic

◆ grIceMt_801F9ACC()

int grIceMt_801F9ACC ( Ground_GObj * gobj,
float y,
GrIceMtSegmentLookup ev,
Ground_GObj * arg3 )

◆ grIceMt_FA0BC_jobjs()

HSD_JObj ** grIceMt_FA0BC_jobjs ( Ground * g)
inlinestatic

◆ grIceMt_801FA0BC()

void grIceMt_801FA0BC ( s16 * arg0)

◆ grIceMt_801FA364()

bool grIceMt_801FA364 ( void * state_,
f32 * out,
HSD_GObjEvent cb_,
Ground_GObj * gobj )

◆ fn_801FA4CC()

int fn_801FA4CC ( int num)

◆ grIceMt_801FA500()

int grIceMt_801FA500 ( HSD_GObj * arg0,
HSD_JObj * arg1 )

◆ grIceMt_801FA6D8()

void grIceMt_801FA6D8 ( HSD_GObj * param1)

◆ grIceMt_801FA728()

void grIceMt_801FA728 ( Vec3 * arg0)

◆ grIceMt_801FA7F0()

void grIceMt_801FA7F0 ( void * user_data,
int joint_id,
CollData * coll,
int coll_x50,
mpLib_GroundEnum ground_kind,
float delta_y )

Joint collision callback for ground surfaces.

Parameters
user_dataSaved untyped data attached to the callback.
coll_x50Unknown, sourced from CollData::x50. dist according to fn_801FC9AC?
delta_yRelative y-offset since the collision started, equal to coll->cur_pos.y - coll->last_pos.y

◆ grIceMt_801FA854()

void grIceMt_801FA854 ( void )

◆ grIceMt_801FA8F8()

DynamicsDesc * grIceMt_801FA8F8 ( enum_t id)

◆ grIceMt_801FA900()

bool grIceMt_801FA900 ( Vec3 * a,
int id,
HSD_JObj * jobj )

Variable Documentation

◆ yakumono_param

struct grIceMt_YakumonoParam* yakumono_param
static

◆ grIm_804D69F0

HSD_GObj* grIm_804D69F0

◆ grIm_804D69EC

HSD_GObj* grIm_804D69EC

◆ grIm_804D69E8

HSD_GObj* grIm_804D69E8

◆ grIm_803B825C

const GrIm825C grIm_803B825C = { { 1, 2, 3, 4 }, 5 }

◆ grIm_803E4068

IceMtRowData grIm_803E4068[6]
Initial value:
= {
{ 1, 180.0f, -180.0f }, { 2, 190.0f, -180.0f }, { 3, 190.0f, -195.0f },
{ 4, 195.0f, -185.0f }, { 5, 190.0f, -200.0f }, { 6, 180.0f, -190.0f },
}

◆ grIm_803E40B0

GrJoint grIm_803E40B0[]

◆ grIm_803E4544

s16 grIm_803E4544[]
Initial value:
= {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 215, 216,
}

◆ grIm_StageCallbacks

StageCallbacks grIm_StageCallbacks[]

◆ grIm_StageData

StageData grIm_StageData
Initial value:
= {
"/GrIm.dat",
1,
195,
}
void grIceMt_801F7080(void)
Definition gricemt.c:401
bool grIceMt_801F71E0(void)
Definition gricemt.c:448
bool grIceMt_801FA900(Vec3 *a, int id, HSD_JObj *jobj)
Definition gricemt.c:1982
void grIceMt_801F6868(bool id)
Definition gricemt.c:266
StageCallbacks grIm_StageCallbacks[]
Definition gricemt.c:162
void grIceMt_801F686C(void)
Definition gricemt.c:271
GrJoint grIm_803E40B0[]
Definition gricemt.c:88
void grIceMt_801F71DC(void)
Definition gricemt.c:446
DynamicsDesc * grIceMt_801FA8F8(enum_t id)
Definition gricemt.c:1977
@ Gr_Kind_Icemt
Definition forward.h:77

◆ grIm_804DB588

const GrIm588 grIm_804DB588 = { 1, 2 }
static

◆ grIm_804DB58C

const GrIm588 grIm_804DB58C = { 1, 2 }
static

◆ grIm_804DB590

const GrIm588 grIm_804DB590 = { 1, 2 }
static

◆ grIm_804DB594

const GrIm588 grIm_804DB594 = { 3, 4 }
static

◆ grIm_804DB598

const GrIm588 grIm_804DB598 = { 1, 2 }
static

◆ grIm_804DB59C

const GrIm588 grIm_804DB59C = { 3, 4 }
static

◆ grIm_804DB5A0

const GrIm588 grIm_804DB5A0 = { 1, 2 }
static

◆ grIm_804DB5A4

const GrIm588 grIm_804DB5A4 = { 3, 4 }
static