SSBM Decomp
Loading...
Searching...
No Matches
grbigblue.c File Reference
#include "grbigblue.h"
#include <Runtime/platform.h>
#include <placeholder.h>
#include "grbigblue.static.h"
#include "grdisplay.h"
#include "grfzerocar.h"
#include "grmaterial.h"
#include "ground.h"
#include <math.h>
#include "grzakogenerator.h"
#include "inlines.h"
#include "stage.h"
#include "types.h"
#include <melee/cm/camera.h>
#include <melee/gm/gmscene.h>
#include <melee/it/it_26B1.h>
#include <melee/it/itspawn.h>
#include <melee/it/types.h>
#include <melee/lb/lb_00B0.h>
#include <melee/lb/lb_00F9.h>
#include <melee/lb/lbvector.h>
#include <melee/mp/mplib.h>
#include <sysdolphin/baselib/debug.h>
#include <sysdolphin/baselib/gobjgxlink.h>
#include <sysdolphin/baselib/gobjproc.h>
#include <sysdolphin/baselib/jobj.h>
#include <sysdolphin/baselib/memory.h>
#include <sysdolphin/baselib/random.h>

Data Structures

struct  grBb_ItemKindList
struct  grBb_Data803E2D78
struct  grBb_Data803E2EB8
struct  grBb_GroundStateFlag
struct  grBb_ByteBits
union  grBigBlue_CarPhysics
union  grBb_CarGround

Macros

#define Gr_Fzero_Car_Max   30

Functions

static void fn_801E8560 (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_801EF60C (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 grBigBlue_801E57BC (bool arg)
void grBigBlue_801E57C0 (void)
void grBigBlue_801E59C8 (void)
void grBigBlue_801E59CC (void)
bool grBigBlue_801E59F0 (void)
HSD_GObjgrBigBlue_801E59F8 (s32 id)
void grBigBlue_801E5AE4 (Ground_GObj *gobj)
bool grBigBlue_801E5B10 (Ground_GObj *arg)
void grBigBlue_801E5B18 (Ground_GObj *arg)
void grBigBlue_801E5B1C (Ground_GObj *arg)
void grBigBlue_801E5B20 (Ground_GObj *gobj)
bool grBigBlue_801E6114 (Ground_GObj *arg)
void grBigBlue_801E611C (Ground_GObj *arg)
void grBigBlue_801E6120 (Ground_GObj *arg)
void fn_801E6124 (Ground_GObj *gobj)
void grBigBlue_801E613C (Ground_GObj *gobj)
bool grBigBlue_801E61BC (Ground_GObj *arg)
void grBigBlue_801E61C4 (Ground_GObj *gobj)
void grBigBlue_801E61FC (Ground_GObj *arg)
void grBigBlue_801E6200 (Ground_GObj *gobj)
bool grBigBlue_801E6288 (Ground_GObj *arg)
void grBigBlue_801E6290 (Ground_GObj *arg)
void grBigBlue_801E6294 (Ground_GObj *arg)
void grBigBlue_801E6298 (Ground_GObj *gobj)
bool grBigBlue_801E6354 (Ground_GObj *arg)
void grBigBlue_801E635C (Ground_GObj *arg)
void grBigBlue_801E6360 (Ground_GObj *arg)
void grBigBlue_801E6364 (Ground_GObj *gobj)
bool grBigBlue_801E687C (Ground_GObj *arg)
void grBigBlue_801E6884 (Ground_GObj *gobj)
void grBigBlue_801E68B8 (Ground_GObj *gobj)
void grBigBlue_801E6904 (Ground_GObj *gobj)
bool grBigBlue_801E6C58 (Ground_GObj *arg)
static f32 grBigBlue_LaneSpeed (s32 idx)
void grBigBlue_801E6C60 (Ground_GObj *gobj)
void grBigBlue_801E855C (Ground_GObj *arg)
bool grBigBlue_801E8794 (void *exclude, Vec3 *pos, bool checkSecondary, f32 rangeX, f32 rangeY)
void grBigBlue_801E8978 (int index, void *data, void *extra)
void * grBigBlue_801E89DC (int arg)
void grBigBlue_801E8A1C (int idx)
static f32 grBigBlue_801E8B84_noinline_1 (f32 right, f32 left, f32 bottom, f32 top)
static f32 grBigBlue_801E8B84_noinline_2 (f32 right, f32 left, f32 bottom, f32 top)
f32 grBigBlue_801E8B84 (f32 right, f32 left, f32 bottom, f32 top)
static f32 grBigBlue_801E8B84_noinline (f32 right, f32 left, f32 bottom, f32 top)
f32 grBigBlue_801E8D04 (void)
void grBigBlue_801E8D64 (Ground_GObj *gobj)
bool grBigBlue_801E93D0 (Ground_GObj *arg)
static s32 grBigBlue_CountCars (void)
void grBigBlue_801E93D8 (Ground_GObj *gobj)
void grBigBlue_801E9F38 (Ground_GObj *arg)
void grBigBlue_801E9F3C (Ground_GObj *gobj)
bool grBigBlue_801EA054 (Ground_GObj *arg)
static int randi (int max)
void grBigBlue_801EA05C (Ground_GObj *gobj)
void grBigBlue_801EAB4C (Ground_GObj *arg)
bool grBigBlue_801EAB50 (Vec3 *pos, s32 flag, f32 rangeX, f32 rangeY)
s32 grBigBlue_801EACE8 (HSD_JObj *exclude, Vec3 *point, f32 *out_y, f32 half_range_x, f32 half_range_y)
void grBigBlue_801EB004 (Ground_GObj *gobj)
void grBigBlue_801EB4AC (Ground_GObj *gobj)
void grBigBlue_801EBAF8 (Ground_GObj *gobj)
f32 grBigBlue_801EC58C (Vec3 *pos, Vec3 *normal_out, f32 half_height)
static void grBigBlue_801EC6C0_inline2 (s32 range, s32 *result)
static void grBigBlue_801EC6C0_inline (Ground *gp, s32 car_idx, s32 line_idx)
void grBigBlue_801EC6C0 (Ground_GObj *gobj)
static void grBigBlue_FindClosestCar (Ground *gp, s32 *found_ten, s32 *closest_lane)
void grBigBlue_801ECB50 (Ground_GObj *gobj)
void grBigBlue_801ED694 (Ground_GObj *gobj, s32 lane)
s32 grBigBlue_801EDF44 (Ground_GObj *gobj, s32 index)
static s32 grBigBlue_801EE398_sfx (void)
static void grBigBlue_801EE398_select (Ground *gp, s32 count, s32 *output)
static void grBigBlue_801EE398_inline (Ground *gp, s32 arg1, s32 arg2, s32 *result, Vec3 *pos)
s32 grBigBlue_801EE398 (Ground_GObj *gobj, s32 arg1, s32 arg2)
bool grBigBlue_801EEF00 (Ground_GObj *gobj, s32 index)
void grBigBlue_801EF424 (Ground_GObj *gobj)
void grBigBlue_801EF7D8 (Vec3 *pos)
bool grBigBlue_801EF844 (enum_t line_id)
void fn_801EFB9C (HSD_GObj *gobj, int pass)
DynamicsDescgrBigBlue_801EFC0C (enum_t arg)
bool grBigBlue_801EFC14 (Vec3 *a, int b, HSD_JObj *jobj)

Variables

static grBb_YakumonoParamyakumono_param
GrJoint grBb_803E2938 []
grBb_Data803E2D78 grBb_803E2D78
grBb_Data803E2EB8 grBb_803E2EB8
StageCallbacks grBb_StageCallbacks []
static const Vec3 grBb_803B8108 = { -1.0F, 0.0F, 0.0F }
static const Vec3 grBb_803B8114 = { 56.0F, 40.0F, 24.0F }
static const grBb_ItemKindList grBb_803B8120
const grBb_LineIds grBb_803B8134
StageData grBb_StageData
static s16 grBb_803E2D84 []
static s16 grBb_803E2DC0 []
static s16 lbl_803E2DFC []
static grBb_TrackEntry grBb_TrackEntries [12]
u32 lbl_803E3010 []

Macro Definition Documentation

◆ Gr_Fzero_Car_Max

#define Gr_Fzero_Car_Max   30

Function Documentation

◆ fn_801E8560()

void fn_801E8560 ( 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_801EF60C()

void fn_801EF60C ( 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

◆ grBigBlue_801E57BC()

void grBigBlue_801E57BC ( bool arg)

◆ grBigBlue_801E57C0()

void grBigBlue_801E57C0 ( void )

◆ grBigBlue_801E59C8()

void grBigBlue_801E59C8 ( void )

◆ grBigBlue_801E59CC()

void grBigBlue_801E59CC ( void )

◆ grBigBlue_801E59F0()

bool grBigBlue_801E59F0 ( void )

◆ grBigBlue_801E59F8()

HSD_GObj * grBigBlue_801E59F8 ( s32 id)

◆ grBigBlue_801E5AE4()

void grBigBlue_801E5AE4 ( Ground_GObj * gobj)

◆ grBigBlue_801E5B10()

bool grBigBlue_801E5B10 ( Ground_GObj * arg)

◆ grBigBlue_801E5B18()

void grBigBlue_801E5B18 ( Ground_GObj * arg)

◆ grBigBlue_801E5B1C()

void grBigBlue_801E5B1C ( Ground_GObj * arg)

◆ grBigBlue_801E5B20()

void grBigBlue_801E5B20 ( Ground_GObj * gobj)

◆ grBigBlue_801E6114()

bool grBigBlue_801E6114 ( Ground_GObj * arg)

◆ grBigBlue_801E611C()

void grBigBlue_801E611C ( Ground_GObj * arg)

◆ grBigBlue_801E6120()

void grBigBlue_801E6120 ( Ground_GObj * arg)

◆ fn_801E6124()

void fn_801E6124 ( Ground_GObj * gobj)

◆ grBigBlue_801E613C()

void grBigBlue_801E613C ( Ground_GObj * gobj)

◆ grBigBlue_801E61BC()

bool grBigBlue_801E61BC ( Ground_GObj * arg)

◆ grBigBlue_801E61C4()

void grBigBlue_801E61C4 ( Ground_GObj * gobj)

◆ grBigBlue_801E61FC()

void grBigBlue_801E61FC ( Ground_GObj * arg)

◆ grBigBlue_801E6200()

void grBigBlue_801E6200 ( Ground_GObj * gobj)

◆ grBigBlue_801E6288()

bool grBigBlue_801E6288 ( Ground_GObj * arg)

◆ grBigBlue_801E6290()

void grBigBlue_801E6290 ( Ground_GObj * arg)

◆ grBigBlue_801E6294()

void grBigBlue_801E6294 ( Ground_GObj * arg)

◆ grBigBlue_801E6298()

void grBigBlue_801E6298 ( Ground_GObj * gobj)

◆ grBigBlue_801E6354()

bool grBigBlue_801E6354 ( Ground_GObj * arg)

◆ grBigBlue_801E635C()

void grBigBlue_801E635C ( Ground_GObj * arg)

◆ grBigBlue_801E6360()

void grBigBlue_801E6360 ( Ground_GObj * arg)

◆ grBigBlue_801E6364()

void grBigBlue_801E6364 ( Ground_GObj * gobj)

◆ grBigBlue_801E687C()

bool grBigBlue_801E687C ( Ground_GObj * arg)

◆ grBigBlue_801E6884()

void grBigBlue_801E6884 ( Ground_GObj * gobj)

◆ grBigBlue_801E68B8()

void grBigBlue_801E68B8 ( Ground_GObj * gobj)

◆ grBigBlue_801E6904()

void grBigBlue_801E6904 ( Ground_GObj * gobj)

◆ grBigBlue_801E6C58()

bool grBigBlue_801E6C58 ( Ground_GObj * arg)

◆ grBigBlue_LaneSpeed()

f32 grBigBlue_LaneSpeed ( s32 idx)
inlinestatic

◆ grBigBlue_801E6C60()

void grBigBlue_801E6C60 ( Ground_GObj * gobj)

◆ grBigBlue_801E855C()

void grBigBlue_801E855C ( Ground_GObj * arg)

◆ grBigBlue_801E8794()

bool grBigBlue_801E8794 ( void * exclude,
Vec3 * pos,
bool checkSecondary,
f32 rangeX,
f32 rangeY )

◆ grBigBlue_801E8978()

void grBigBlue_801E8978 ( int index,
void * data,
void * extra )

◆ grBigBlue_801E89DC()

void * grBigBlue_801E89DC ( int arg)

◆ grBigBlue_801E8A1C()

void grBigBlue_801E8A1C ( int idx)

◆ grBigBlue_801E8B84_noinline_1()

f32 grBigBlue_801E8B84_noinline_1 ( f32 right,
f32 left,
f32 bottom,
f32 top )
static

◆ grBigBlue_801E8B84_noinline_2()

f32 grBigBlue_801E8B84_noinline_2 ( f32 right,
f32 left,
f32 bottom,
f32 top )
static

◆ grBigBlue_801E8B84()

f32 grBigBlue_801E8B84 ( f32 right,
f32 left,
f32 bottom,
f32 top )

◆ grBigBlue_801E8B84_noinline()

f32 grBigBlue_801E8B84_noinline ( f32 right,
f32 left,
f32 bottom,
f32 top )
static

◆ grBigBlue_801E8D04()

f32 grBigBlue_801E8D04 ( void )

◆ grBigBlue_801E8D64()

void grBigBlue_801E8D64 ( Ground_GObj * gobj)

◆ grBigBlue_801E93D0()

bool grBigBlue_801E93D0 ( Ground_GObj * arg)

◆ grBigBlue_CountCars()

s32 grBigBlue_CountCars ( void )
inlinestatic

◆ grBigBlue_801E93D8()

void grBigBlue_801E93D8 ( Ground_GObj * gobj)

◆ grBigBlue_801E9F38()

void grBigBlue_801E9F38 ( Ground_GObj * arg)

◆ grBigBlue_801E9F3C()

void grBigBlue_801E9F3C ( Ground_GObj * gobj)

◆ grBigBlue_801EA054()

bool grBigBlue_801EA054 ( Ground_GObj * arg)

◆ randi()

int randi ( int max)
inlinestatic

◆ grBigBlue_801EA05C()

void grBigBlue_801EA05C ( Ground_GObj * gobj)

◆ grBigBlue_801EAB4C()

void grBigBlue_801EAB4C ( Ground_GObj * arg)

◆ grBigBlue_801EAB50()

bool grBigBlue_801EAB50 ( Vec3 * pos,
s32 flag,
f32 rangeX,
f32 rangeY )

◆ grBigBlue_801EACE8()

s32 grBigBlue_801EACE8 ( HSD_JObj * exclude,
Vec3 * point,
f32 * out_y,
f32 half_range_x,
f32 half_range_y )

◆ grBigBlue_801EB004()

void grBigBlue_801EB004 ( Ground_GObj * gobj)

◆ grBigBlue_801EB4AC()

void grBigBlue_801EB4AC ( Ground_GObj * gobj)

◆ grBigBlue_801EBAF8()

void grBigBlue_801EBAF8 ( Ground_GObj * gobj)

◆ grBigBlue_801EC58C()

f32 grBigBlue_801EC58C ( Vec3 * pos,
Vec3 * normal_out,
f32 half_height )

◆ grBigBlue_801EC6C0_inline2()

void grBigBlue_801EC6C0_inline2 ( s32 range,
s32 * result )
inlinestatic

◆ grBigBlue_801EC6C0_inline()

void grBigBlue_801EC6C0_inline ( Ground * gp,
s32 car_idx,
s32 line_idx )
inlinestatic

◆ grBigBlue_801EC6C0()

void grBigBlue_801EC6C0 ( Ground_GObj * gobj)

◆ grBigBlue_FindClosestCar()

void grBigBlue_FindClosestCar ( Ground * gp,
s32 * found_ten,
s32 * closest_lane )
inlinestatic

◆ grBigBlue_801ECB50()

void grBigBlue_801ECB50 ( Ground_GObj * gobj)

◆ grBigBlue_801ED694()

void grBigBlue_801ED694 ( Ground_GObj * gobj,
s32 lane )
Todo
The collision scratch vector sits four bytes low.

◆ grBigBlue_801EDF44()

s32 grBigBlue_801EDF44 ( Ground_GObj * gobj,
s32 index )

◆ grBigBlue_801EE398_sfx()

s32 grBigBlue_801EE398_sfx ( void )
inlinestatic

◆ grBigBlue_801EE398_select()

void grBigBlue_801EE398_select ( Ground * gp,
s32 count,
s32 * output )
inlinestatic

◆ grBigBlue_801EE398_inline()

void grBigBlue_801EE398_inline ( Ground * gp,
s32 arg1,
s32 arg2,
s32 * result,
Vec3 * pos )
inlinestatic

◆ grBigBlue_801EE398()

s32 grBigBlue_801EE398 ( Ground_GObj * gobj,
s32 arg1,
s32 arg2 )

◆ grBigBlue_801EEF00()

bool grBigBlue_801EEF00 ( Ground_GObj * gobj,
s32 index )

◆ grBigBlue_801EF424()

void grBigBlue_801EF424 ( Ground_GObj * gobj)

◆ grBigBlue_801EF7D8()

void grBigBlue_801EF7D8 ( Vec3 * pos)

◆ grBigBlue_801EF844()

bool grBigBlue_801EF844 ( enum_t line_id)

◆ fn_801EFB9C()

void fn_801EFB9C ( HSD_GObj * gobj,
int pass )

◆ grBigBlue_801EFC0C()

DynamicsDesc * grBigBlue_801EFC0C ( enum_t arg)

◆ grBigBlue_801EFC14()

bool grBigBlue_801EFC14 ( Vec3 * a,
int b,
HSD_JObj * jobj )

Variable Documentation

◆ yakumono_param

grBb_YakumonoParam* yakumono_param
static

◆ grBb_803E2938

GrJoint grBb_803E2938[]
Initial value:
= {
{ 36, 34, 10 }, { 37, 34, 10 }, { 38, 34, 7 }, { 39, 34, 7 },
{ 40, 34, 7 }, { 41, 34, 14 }, { 42, 34, 14 }, { 43, 34, 14 },
{ 44, 34, 15 }, { 45, 34, 15 }, { 46, 34, 15 }, { 47, 34, 16 },
{ 48, 34, 16 }, { 49, 34, 16 }, { 52, 34, 32 }, { 53, 34, 32 },
{ 54, 34, 32 }, { 55, 34, 35 }, { 56, 34, 35 }, { 57, 34, 35 },
{ 58, 34, 38 }, { 59, 34, 38 }, { 60, 34, 38 }, { 61, 34, 41 },
{ 62, 34, 41 }, { 63, 34, 41 }, { 64, 34, 44 }, { 65, 34, 44 },
}

◆ grBb_803E2D78

grBb_Data803E2D78 grBb_803E2D78
extern

◆ grBb_803E2EB8

grBb_Data803E2EB8 grBb_803E2EB8
extern

◆ grBb_StageCallbacks

StageCallbacks grBb_StageCallbacks[]

◆ grBb_803B8108

const Vec3 grBb_803B8108 = { -1.0F, 0.0F, 0.0F }
static

◆ grBb_803B8114

const Vec3 grBb_803B8114 = { 56.0F, 40.0F, 24.0F }
static

◆ grBb_803B8120

const grBb_ItemKindList grBb_803B8120
static
Initial value:
= { {
} }
@ It_Kind_RabbitC
Definition forward.h:166
@ It_Kind_Kusudama
Definition forward.h:139
@ It_Kind_Sword
Definition forward.h:147
@ It_Kind_F_Flower
Definition forward.h:160
@ It_Kind_S_Scope
Definition forward.h:156

◆ grBb_803B8134

const grBb_LineIds grBb_803B8134
Initial value:
= { {
33, 35, 38, 39, 40, 36, 37, 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,
} }

◆ grBb_StageData

StageData grBb_StageData
Initial value:
= {
"/GrBb.dat",
(1 << 0),
}
void grBigBlue_801E57BC(bool arg)
Definition grbigblue.c:217
DynamicsDesc * grBigBlue_801EFC0C(enum_t arg)
Definition grbigblue.c:4585
void grBigBlue_801E57C0(void)
Definition grbigblue.c:219
bool grBigBlue_801EFC14(Vec3 *a, int b, HSD_JObj *jobj)
Definition grbigblue.c:4590
bool grBigBlue_801E59F0(void)
Definition grbigblue.c:284
GrJoint grBb_803E2938[]
Definition grbigblue.c:135
StageCallbacks grBb_StageCallbacks[]
Definition grbigblue.c:148
void grBigBlue_801E59C8(void)
Definition grbigblue.c:277
void grBigBlue_801E59CC(void)
Definition grbigblue.c:279
@ Gr_Kind_BigBlue
Definition forward.h:78
#define ARRAY_SIZE(arr)
Definition platform.h:202

◆ grBb_803E2D84

s16 grBb_803E2D84[]
static
Initial value:
= {
0x0004, 0x0005, 0x0006, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C,
0x000D, 0x000E, 0x0003, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013,
0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B,
0x001C, 0x001D, 0x0025, 0x0026, 0x0027, 0x0028,
}

◆ grBb_803E2DC0

s16 grBb_803E2DC0[]
static
Initial value:
= {
0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008,
0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010,
0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018,
0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E,
}

◆ lbl_803E2DFC

s16 lbl_803E2DFC[]
static
Initial value:
= {
0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A,
0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, 0x0012,
0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A,
0x001B, 0x001C, 0x001D, 0x001E, 0x001F, 0x0020,
}

◆ grBb_TrackEntries

grBb_TrackEntry grBb_TrackEntries[12]
static
Initial value:
= {
{ 4, 6, 5, 0, { 0, 0, 0 } }, { 19, 21, 20, 0, { 0, 0, 0 } },
{ 7, 9, 8, 0, { 0, 0, 0 } }, { 10, 12, 11, 0, { 0, 0, 0 } },
{ 44, 46, 45, 0, { 0, 0, 0 } }, { 1, 3, 2, 0, { 0, 0, 0 } },
{ 32, 34, 33, 0, { 0, 0, 0 } }, { 35, 37, 36, 0, { 0, 0, 0 } },
{ 38, 40, 39, 0, { 0, 0, 0 } }, { 41, 43, 42, 0, { 0, 0, 0 } },
{ 29, 31, 30, 0, { 0, 0, 0 } }, { 13, 18, 17, 0, { 0, 0, 0 } },
}

◆ lbl_803E3010

u32 lbl_803E3010[]
Initial value:
= {
0x0006DDD2,
0x0006DDD3,
0x0006DDD4,
0x0006DDD5,
}