SSBM Decomp
Loading...
Searching...
No Matches
gricemt.c File Reference
#include "gricemt.h"
#include <Runtime/platform.h>
#include <sysdolphin/baselib/forward.h>
#include <placeholder.h>
#include "forward.h"
#include "grdatfiles.h"
#include "grlib.h"
#include "grmaterial.h"
#include "ground.h"
#include "grzakogenerator.h"
#include "inlines.h"
#include "stage.h"
#include "types.h"
#include <dolphin/types.h>
#include <melee/cm/camera.h>
#include <melee/ef/efsync.h>
#include <melee/ft/ftlib.h>
#include <melee/gm/gm_1601.h>
#include <melee/it/inlines.h>
#include <melee/it/it_26B1.h>
#include <melee/it/types.h>
#include <melee/lb/lb_00B0.h>
#include <melee/mp/mplib.h>
#include <sysdolphin/baselib/debug.h>
#include <sysdolphin/baselib/gobj.h>
#include <sysdolphin/baselib/gobjproc.h>
#include <sysdolphin/baselib/jobj.h>
#include <sysdolphin/baselib/random.h>

Data Structures

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

Macros

#define ICEMT_FIELD_MAX   (ARRAY_SIZE(icemt_field))
#define BLOCK_COLL_JOBJ_MAX   20

Typedefs

typedef int(* GrIceMtCb) (Ground_GObj *gobj, int *out)

Functions

static void fn_801F8C64 (Item_GObj *gobj, Ground *u1, Vec3 *u2, HSD_GObj *u3, f32 u4)
static 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)
static 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.
static 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.
static 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.
static float grIceMt_801F96E0 (struct grIceMt_GObj9_GObj10_UnderUpperIdPair *, float)
static void onJointCollision (void *user_data, int joint_id, CollData *coll, int coll_x50, mpLib_GroundEnum ground_kind, float delta_y)
 Joint collision callback for ground surfaces.
static void grIceMt_801F6868 (bool id)
static void grIceMt_801F686C (void)
static void grIceMt_801F7080 (void)
static void grIceMt_801F71DC (void)
static bool grIceMt_801F71E0 (void)
static Ground_GObjsetupStageCallbacks (int gobj_id)
static void stageGObj0_OnInit (Ground_GObj *)
static bool stageGObj0_Callback1 (Ground_GObj *)
static void stageGObj0_GObjProc (Ground_GObj *)
static void stageGObj0_Callback3 (Ground_GObj *)
static void fn_801F75EC (Ground_GObj *)
static void stageGObj9_OnInit (Ground_GObj *)
static bool stageGObj9_Callback1 (Ground_GObj *)
static void stageGObj9_GObjProc (Ground_GObj *)
static void stageGObj9_Callback3 (Ground_GObj *)
static void stageGObj10_UnkGroundCallback (Ground_GObj *)
static void stageGObj10_OnInit (Ground_GObj *)
static bool stageGObj10_Callback1 (Ground_GObj *)
static void stageGObj10_GObjProc (Ground_GObj *)
static void stageGObj10_Callback3 (Ground_GObj *)
static void stageGObj1_OnInit (Ground_GObj *)
static bool stageGObj1_Callback1 (Ground_GObj *)
static void stageGObj1_GObjProc (Ground_GObj *)
static void stageGObj1_Callback3 (Ground_GObj *)
static void stageGObj2_OnInit (Ground_GObj *)
static bool stageGObj2_Callback1 (Ground_GObj *)
static void stageGObj2_GObjProc (Ground_GObj *)
static void stageGObj2_Callback3 (Ground_GObj *)
static void stageGObj3_OnInit (Ground_GObj *)
static bool stageGObj3_Callback1 (Ground_GObj *)
static void stageGObj3_GObjProc (Ground_GObj *)
static void stageGObj3_Callback3 (Ground_GObj *)
static void stageGObj4_OnInit (Ground_GObj *)
static bool stageGObj4_Callback1 (Ground_GObj *param1)
static void stageGObj4_GObjProc (Ground_GObj *)
static void stageGObj4_Callback3 (Ground_GObj *)
static void stageGObj5_OnInit (Ground_GObj *)
static bool stageGObj5_Callback1 (Ground_GObj *)
static void stageGObj5_GObjProc (Ground_GObj *)
static void stageGObj5_Callback3 (Ground_GObj *)
static void stageGObj6_OnInit (Ground_GObj *)
static bool stageGObj6_Callback1 (Ground_GObj *)
static void stageGObj6_GObjProc (Ground_GObj *)
static void stageGObj6_Callback3 (Ground_GObj *)
static void stageGObj8_OnInit (Ground_GObj *)
static bool stageGObj8_Callback1 (Ground_GObj *)
static void stageGObj8_GObjProc (Ground_GObj *)
static void stageGObj8_Callback3 (Ground_GObj *)
static 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 int fn_801F8E58 (Ground_GObj *, int *out)
static int fn_801F9038 (Ground_GObj *)
static int fn_801F9150 (Ground_GObj *gobj, int *out)
static int fn_801F91A8 (Ground_GObj *)
static void grIceMt_801F929C (HSD_GObj *arg0, void *arg1)
static void grIceMt_801F9668 (float)
static void grIceMt_801F98A8 (HSD_GObj *param1)
static float grIceMt_801F993C (int under_id, int upper_id)
static bool grIceMt_801F9ACC (struct grIceMt_GObj9_GObj10_UnderUpperIdPair *seg_, float y, GrIceMtSegmentLookup ev, Ground_GObj *arg3)
static void grIceMt_801FA0BC (struct grIceMt_GObj9_GObj10_UnderUpperIdPair *ids)
static bool grIceMt_801FA364 (struct grIceMt_FA364_State *state, float *out, GrIceMtCb cb, Ground_GObj *gobj)
static int fn_801FA4CC (int num)
static int grIceMt_801FA500 (HSD_GObj *, HSD_JObj *)
static void grIceMt_801FA854 (void)
static DynamicsDescgrIceMt_801FA8F8 (enum_t id)
static bool grIceMt_801FA900 (Vec3 *a, int id, HSD_JObj *jobj)
static bool rand_zero (s32 n)
static s32 grIceMt_GetRandomIndex (s32 max, s32 *list)
static void grIceMt_GetRandomTimer (int *out)
static HSD_JObj ** grIceMt_FA0BC_jobjs (Ground *g)
void grIceMt_801FA6D8 (void)
void grIceMt_801FA728 (Vec3 *arg0)

Variables

static const Vec3 grIm_803B8220 []
static HSD_GObjgrIm_804D69E8
static HSD_GObjgrIm_804D69EC
static HSD_GObjgrIm_804D69F0
static struct grIceMt_YakumonoParamyakumono_param
const GrIm825C grIm_803B825C = { { 1, 2, 3, 4 }, 5 }
IceMtRowData icemt_field []
GrJoint grIm_803E40B0 []
s16 grIm_803E4544 []
static StageCallbacks stage_callbacks []
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   (ARRAY_SIZE(icemt_field))

◆ BLOCK_COLL_JOBJ_MAX

#define BLOCK_COLL_JOBJ_MAX   20

Typedef Documentation

◆ GrIceMtCb

typedef int(* GrIceMtCb) (Ground_GObj *gobj, int *out)

Function Documentation

◆ fn_801F8C64()

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

◆ 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 )
static

◆ fn_801F9338()

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

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 )
static

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 )
static

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_801F96E0()

float grIceMt_801F96E0 ( struct grIceMt_GObj9_GObj10_UnderUpperIdPair * arg0,
float y )
static

◆ onJointCollision()

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

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_801F6868()

void grIceMt_801F6868 ( bool id)
static

◆ grIceMt_801F686C()

void grIceMt_801F686C ( void )
static

◆ grIceMt_801F7080()

void grIceMt_801F7080 ( void )
static

◆ grIceMt_801F71DC()

void grIceMt_801F71DC ( void )
static

◆ grIceMt_801F71E0()

bool grIceMt_801F71E0 ( void )
static

◆ setupStageCallbacks()

Ground_GObj * setupStageCallbacks ( int gobj_id)
static

◆ stageGObj0_OnInit()

void stageGObj0_OnInit ( Ground_GObj * gobj)
static

◆ stageGObj0_Callback1()

bool stageGObj0_Callback1 ( Ground_GObj * arg0)
static

◆ stageGObj0_GObjProc()

void stageGObj0_GObjProc ( Ground_GObj * arg0)
static

◆ stageGObj0_Callback3()

void stageGObj0_Callback3 ( Ground_GObj * arg0)
static

◆ fn_801F75EC()

void fn_801F75EC ( Ground_GObj * gobj)
static

◆ stageGObj9_OnInit()

void stageGObj9_OnInit ( Ground_GObj * gobj)
static

◆ stageGObj9_Callback1()

bool stageGObj9_Callback1 ( Ground_GObj * arg0)
static

◆ stageGObj9_GObjProc()

void stageGObj9_GObjProc ( Ground_GObj * gobj)
static

◆ stageGObj9_Callback3()

void stageGObj9_Callback3 ( Ground_GObj * gobj)
static

◆ stageGObj10_UnkGroundCallback()

void stageGObj10_UnkGroundCallback ( Ground_GObj * gobj)
static

◆ stageGObj10_OnInit()

void stageGObj10_OnInit ( Ground_GObj * gobj)
static

◆ stageGObj10_Callback1()

bool stageGObj10_Callback1 ( Ground_GObj * gobj)
static

◆ stageGObj10_GObjProc()

void stageGObj10_GObjProc ( Ground_GObj * arg0)
static

◆ stageGObj10_Callback3()

void stageGObj10_Callback3 ( Ground_GObj * gobj)
static

◆ stageGObj1_OnInit()

void stageGObj1_OnInit ( Ground_GObj * gobj)
static

◆ stageGObj1_Callback1()

bool stageGObj1_Callback1 ( Ground_GObj * arg0)
static

◆ stageGObj1_GObjProc()

void stageGObj1_GObjProc ( Ground_GObj * arg0)
static

◆ stageGObj1_Callback3()

void stageGObj1_Callback3 ( Ground_GObj * gobj)
static

◆ stageGObj2_OnInit()

void stageGObj2_OnInit ( Ground_GObj * arg0)
static

◆ stageGObj2_Callback1()

bool stageGObj2_Callback1 ( Ground_GObj * param1)
static

◆ stageGObj2_GObjProc()

void stageGObj2_GObjProc ( Ground_GObj * param1)
static

◆ stageGObj2_Callback3()

void stageGObj2_Callback3 ( Ground_GObj * gobj)
static

◆ stageGObj3_OnInit()

void stageGObj3_OnInit ( Ground_GObj * arg0)
static

◆ stageGObj3_Callback1()

bool stageGObj3_Callback1 ( Ground_GObj * param1)
static

◆ stageGObj3_GObjProc()

void stageGObj3_GObjProc ( Ground_GObj * arg0)
static

◆ stageGObj3_Callback3()

void stageGObj3_Callback3 ( Ground_GObj * gobj)
static

◆ stageGObj4_OnInit()

void stageGObj4_OnInit ( Ground_GObj * arg0)
static

◆ stageGObj4_Callback1()

bool stageGObj4_Callback1 ( Ground_GObj * param1)
static

◆ stageGObj4_GObjProc()

void stageGObj4_GObjProc ( Ground_GObj * gobj)
static

◆ stageGObj4_Callback3()

void stageGObj4_Callback3 ( Ground_GObj * gobj)
static

◆ stageGObj5_OnInit()

void stageGObj5_OnInit ( Ground_GObj * arg0)
static

◆ stageGObj5_Callback1()

bool stageGObj5_Callback1 ( Ground_GObj * param1)
static

◆ stageGObj5_GObjProc()

void stageGObj5_GObjProc ( Ground_GObj * param1)
static

◆ stageGObj5_Callback3()

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

◆ stageGObj6_OnInit()

void stageGObj6_OnInit ( Ground_GObj * arg0)
static

◆ stageGObj6_Callback1()

bool stageGObj6_Callback1 ( Ground_GObj * arg0)
static

◆ stageGObj6_GObjProc()

void stageGObj6_GObjProc ( Ground_GObj * param1)
static

◆ stageGObj6_Callback3()

void stageGObj6_Callback3 ( Ground_GObj * gobj)
static

◆ stageGObj8_OnInit()

void stageGObj8_OnInit ( Ground_GObj * gobj)
static

◆ stageGObj8_Callback1()

bool stageGObj8_Callback1 ( Ground_GObj * arg0)
static

◆ stageGObj8_GObjProc()

void stageGObj8_GObjProc ( Ground_GObj * arg0)
static

◆ stageGObj8_Callback3()

void stageGObj8_Callback3 ( Ground_GObj * arg0)
static

◆ grIceMt_801F8CDC()

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

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

◆ fn_801F8E58()

int fn_801F8E58 ( Ground_GObj * arg0,
int * out )
static

◆ fn_801F9038()

int fn_801F9038 ( Ground_GObj * gobj)
static

◆ fn_801F9150()

int fn_801F9150 ( Ground_GObj * gobj,
int * out )
static

◆ fn_801F91A8()

int fn_801F91A8 ( Ground_GObj * gobj)
static

◆ grIceMt_801F929C()

void grIceMt_801F929C ( HSD_GObj * arg0,
void * arg1 )
static

◆ grIceMt_801F9668()

void grIceMt_801F9668 ( float arg0)
static

◆ grIceMt_801F98A8()

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

◆ grIceMt_801F993C()

float grIceMt_801F993C ( int under_id,
int upper_id )
static

◆ grIceMt_801F9ACC()

bool grIceMt_801F9ACC ( struct grIceMt_GObj9_GObj10_UnderUpperIdPair * seg_,
float y,
GrIceMtSegmentLookup ev,
Ground_GObj * arg3 )
static

◆ grIceMt_801FA0BC()

void grIceMt_801FA0BC ( struct grIceMt_GObj9_GObj10_UnderUpperIdPair * ids)
static

◆ grIceMt_801FA364()

bool grIceMt_801FA364 ( struct grIceMt_FA364_State * state,
float * out,
GrIceMtCb cb,
Ground_GObj * gobj )
static

◆ fn_801FA4CC()

int fn_801FA4CC ( int num)
static

◆ grIceMt_801FA500()

int grIceMt_801FA500 ( HSD_GObj * arg0,
HSD_JObj * arg1 )
static

◆ grIceMt_801FA854()

void grIceMt_801FA854 ( void )
static

◆ grIceMt_801FA8F8()

DynamicsDesc * grIceMt_801FA8F8 ( enum_t id)
static

◆ grIceMt_801FA900()

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

◆ rand_zero()

bool rand_zero ( s32 n)
inlinestatic

◆ grIceMt_GetRandomIndex()

s32 grIceMt_GetRandomIndex ( s32 max,
s32 * list )
inlinestatic

◆ grIceMt_GetRandomTimer()

void grIceMt_GetRandomTimer ( int * out)
inlinestatic

◆ grIceMt_FA0BC_jobjs()

HSD_JObj ** grIceMt_FA0BC_jobjs ( Ground * g)
inlinestatic

◆ grIceMt_801FA6D8()

void grIceMt_801FA6D8 ( void )

◆ grIceMt_801FA728()

void grIceMt_801FA728 ( Vec3 * arg0)

Variable Documentation

◆ grIm_803B8220

const Vec3 grIm_803B8220[]
static
Initial value:
= {
{ 0.0f, 0.0f, 0.0f }, { -8.0f, 15.0f, 0.0f }, { 8.0f, 15.0f, 0.0f },
{ -24.0f, 15.0f, 0.0f }, { 24.0f, 15.0f, 0.0f },
}

◆ grIm_804D69E8

HSD_GObj* grIm_804D69E8
static

◆ grIm_804D69EC

HSD_GObj* grIm_804D69EC
static

◆ grIm_804D69F0

HSD_GObj* grIm_804D69F0
static

◆ yakumono_param

struct grIceMt_YakumonoParam* yakumono_param
static

◆ grIm_803B825C

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

◆ icemt_field

IceMtRowData icemt_field[]
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,
}

◆ stage_callbacks

StageCallbacks stage_callbacks[]
static

◆ grIm_StageData

StageData grIm_StageData
Initial value:
= {
"/GrIm.dat",
(1 << 0),
}
static StageCallbacks stage_callbacks[]
Definition grheal.c:81
static void grIceMt_801F7080(void)
Definition gricemt.c:543
static bool grIceMt_801F71E0(void)
Definition gricemt.c:590
static bool grIceMt_801FA900(Vec3 *a, int id, HSD_JObj *jobj)
Definition gricemt.c:2077
static void grIceMt_801F6868(bool id)
Definition gricemt.c:408
static void grIceMt_801F686C(void)
Definition gricemt.c:410
GrJoint grIm_803E40B0[]
Definition gricemt.c:230
static void grIceMt_801F71DC(void)
Definition gricemt.c:588
static DynamicsDesc * grIceMt_801FA8F8(enum_t id)
Definition gricemt.c:2072
@ Gr_Kind_Icemt
Definition forward.h:81
#define ARRAY_SIZE(arr)
Definition platform.h:202

◆ 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