SSBM Decomp
Loading...
Searching...
No Matches
grbigblue.c File Reference
#include "grbigblue.h"
#include "grbigblue.static.h"
#include "grdisplay.h"
#include "grfzerocar.h"
#include "grmaterial.h"
#include "ground.h"
#include <platform.h>
#include "cm/camera.h"
#include "gm/gm_1A45.h"
#include "gr/grzakogenerator.h"
#include "gr/inlines.h"
#include "gr/stage.h"
#include "gr/types.h"
#include "it/it_266F.h"
#include "it/it_26B1.h"
#include "lb/lb_00B0.h"
#include "lb/lb_00F9.h"
#include "lb/lbvector.h"
#include "mp/mplib.h"
#include "MSL/math_ppc.h"
#include <math.h>
#include <trigf.h>
#include <baselib/gobjgxlink.h>
#include <baselib/gobjproc.h>
#include <baselib/jobj.h>
#include <baselib/memory.h>
#include <baselib/random.h>

Macros

#define M_TAU   6.283185307179586
 

Functions

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)
 
void grBigBlue_801E855C (Ground_GObj *arg)
 grBigBlue_801E6C60
 
void fn_801E8560 (Ground *gp, s32 param, CollData *coll, s32 time_param, s32 env, f32 force)
 
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)
 
f32 grBigBlue_801E8B84 (f32 right, f32 left, f32 bottom, f32 top)
 
void grBigBlue_801E8D04 (void)
 
void grBigBlue_801E8D64 (Ground_GObj *gobj)
 
bool grBigBlue_801E93D0 (Ground_GObj *arg)
 
void grBigBlue_801E9F38 (Ground_GObj *arg)
 grBigBlue_801E93D8
 
void grBigBlue_801E9F3C (Ground_GObj *gobj)
 
bool grBigBlue_801EA054 (Ground_GObj *arg)
 
void grBigBlue_801EAB4C (Ground_GObj *arg)
 grBigBlue_801EA05C
 
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)
 
f32 grBigBlue_801EC58C (Vec3 *pos, Vec3 *normal_out, f32 half_height)
 grBigBlue_801EBAF8
 
void grBigBlue_801EC6C0 (Ground_GObj *gobj)
 
void grBigBlue_801ED694 (Ground_GObj *gobj, s32 lane)
 grBigBlue_801ECB50
 
s32 grBigBlue_801EDF44 (Ground_GObj *gobj, s32 index)
 
bool grBigBlue_801EEF00 (Ground_GObj *gobj, s32 index)
 grBigBlue_801EE398
 
void grBigBlue_801EF424 (Ground_GObj *gobj)
 
void fn_801EF60C (Ground *gp, s32 joint_id, CollData *coll, s32 time_param, s32 env, f32 force)
 
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

ItemKind grBb_803B8120 [5]
 
grBb_LineIds grBb_803B8134
 
static grBb_YakumonoParamsgrBb_804D69C8
 
u8 tmpPadData [168] = { 0 }
 
StageCallbacks grBb_803E29E0 []
 
static const Vec3 grBb_803B8108 = { 0.5F, 0.0F, 0.0F }
 
static const Vec3 grBb_803B8114 = { 56.0F, 40.0F, 24.0F }
 
static grBb_TrackEntry grBb_TrackEntries [12]
 

Macro Definition Documentation

◆ M_TAU

#define M_TAU   6.283185307179586

Function Documentation

◆ 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)
Todo:
Currently 99.98% match - near-perfect

◆ grBigBlue_801E6C58()

bool grBigBlue_801E6C58 ( Ground_GObj arg)

◆ grBigBlue_801E855C()

void grBigBlue_801E855C ( Ground_GObj arg)

◆ fn_801E8560()

void fn_801E8560 ( Ground gp,
s32  param,
CollData coll,
s32  time_param,
s32  env,
f32  force 
)
Todo:
Currently 87.65% match - register allocation and stack offset

◆ grBigBlue_801E8794()

bool grBigBlue_801E8794 ( void *  exclude,
Vec3 *  pos,
bool  checkSecondary,
f32  rangeX,
f32  rangeY 
)
Todo:
Currently 90.70% match - needs register allocation fix

◆ 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)
Todo:
Currently 79.9% match - platform/store use lwzx/stwx instead of add+lwz/stw (addressing mode difference), candPtr init missing slwi+add

◆ grBigBlue_801E8B84()

f32 grBigBlue_801E8B84 ( f32  right,
f32  left,
f32  bottom,
f32  top 
)
Todo:
Currently 94.71% match - needs pointer advancement and i variable

◆ grBigBlue_801E8D04()

void grBigBlue_801E8D04 ( void  )

◆ grBigBlue_801E8D64()

void grBigBlue_801E8D64 ( Ground_GObj gobj)

◆ grBigBlue_801E93D0()

bool grBigBlue_801E93D0 ( Ground_GObj arg)

◆ grBigBlue_801E9F38()

void grBigBlue_801E9F38 ( Ground_GObj arg)

◆ grBigBlue_801E9F3C()

void grBigBlue_801E9F3C ( Ground_GObj gobj)

◆ grBigBlue_801EA054()

bool grBigBlue_801EA054 ( Ground_GObj arg)

◆ 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 
)
Todo:
Currently 98.17% match - car section generates fnmsubs instead of fmuls+fsubs; compiler fuses multiply-subtract differently than target

◆ grBigBlue_801EB004()

void grBigBlue_801EB004 ( Ground_GObj gobj)
Todo:
Currently 94.90% match - needs bitfield struct for rlwimi generation and stack frame fix (120 vs 112 bytes)

◆ grBigBlue_801EB4AC()

void grBigBlue_801EB4AC ( Ground_GObj gobj)
Todo:
Currently partial match - needs register allocation and bitfield rlwimi fixes.

◆ grBigBlue_801EC58C()

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

◆ grBigBlue_801EC6C0()

void grBigBlue_801EC6C0 ( Ground_GObj gobj)
Todo:
Currently 90.40% match - needs register allocation fix (stmw r24 vs r23) and bitfield write pattern fix (rlwinm+ori vs rlwimi)

◆ grBigBlue_801ED694()

void grBigBlue_801ED694 ( Ground_GObj gobj,
s32  lane 
)

grBigBlue_801ECB50

Todo:
Currently partial match - complex car physics simulation

◆ grBigBlue_801EDF44()

s32 grBigBlue_801EDF44 ( Ground_GObj gobj,
s32  index 
)
Todo:
Currently 87.41% match - compiler CSEs gp+offset into one register (4 NV regs) instead of keeping them separate (5 NV regs, stmw r27)

◆ grBigBlue_801EEF00()

bool grBigBlue_801EEF00 ( Ground_GObj gobj,
s32  index 
)

grBigBlue_801EE398

Todo:
Currently 83.62% match - compiler CSEs gp+offset into one register (3 NV regs) instead of keeping them separate (4 NV regs with r28 for case 4)

◆ grBigBlue_801EF424()

void grBigBlue_801EF424 ( Ground_GObj gobj)
Todo:
Currently 98.03% match - float register allocation off by 1

◆ fn_801EF60C()

void fn_801EF60C ( Ground gp,
s32  joint_id,
CollData coll,
s32  time_param,
s32  env,
f32  force 
)
Todo:
Currently 99.98% match - assert string relocation offset

◆ grBigBlue_801EF7D8()

void grBigBlue_801EF7D8 ( Vec3 *  pos)
Todo:
Currently 96.3% match - needs separate float literals for x vs y/z

◆ 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

◆ grBb_803B8120

ItemKind grBb_803B8120[5]
extern

◆ grBb_803B8134

grBb_LineIds grBb_803B8134
extern

◆ grBb_804D69C8

grBb_YakumonoParams* grBb_804D69C8
static

◆ tmpPadData

u8 tmpPadData[168] = { 0 }

◆ grBb_803E29E0

StageCallbacks grBb_803E29E0[]

◆ grBb_803B8108

const Vec3 grBb_803B8108 = { 0.5F, 0.0F, 0.0F }
static

◆ grBb_803B8114

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

◆ 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 } },
}