SSBM Decomp
Loading...
Searching...
No Matches
mpcoll.c File Reference
#include "mp/mpcoll.h"
#include "math.h"
#include "platform.h"
#include "stdbool.h"
#include <placeholder.h>
#include "db/db.h"
#include "ft/ftlib.h"
#include "ftCommon/forward.h"
#include "gr/grdynamicattr.h"
#include "it/it_26B1.h"
#include "lb/lb_00B0.h"
#include "lb/lbvector.h"
#include "mp/forward.h"
#include "mp/mplib.h"
#include <dolphin/os/OSError.h>
#include <baselib/debug.h>
#include <baselib/gobj.h>
#include <MSL/trigf.h>

Macros

#define Collide_LeftWallPush   0x1
 
#define Collide_LeftWallHug   0x20
 
#define Collide_LeftWallMask   0x3F
 
#define Collide_RightWallPush   0x40
 
#define Collide_RightWallHug   0x800
 
#define Collide_RightWallMask   0xFC0
 
#define Collide_CeilingPush   0x2000
 
#define Collide_CeilingHug   0x4000
 
#define Collide_FloorPush   0x8000
 
#define Collide_FloorHug   0x10000
 
#define Collide_LeftEdge   0x100000
 
#define Collide_RightEdge   0x200000
 
#define Collide_Edge   0x800000
 
#define Collide_LeftLedgeGrab   0x1000000
 
#define Collide_RightLedgeGrab   0x2000000
 
#define Collide_LeftLedgeSlip   0x10000000
 
#define Collide_RightLedgeSlip   0x20000000
 
#define CollisionFlagAir_StayAirborne   0x1
 
#define CollisionFlagAir_PlatformPassCallback   0x2
 
#define CollisionFlagAir_CanGrabLedge   0x4
 
#define EXPAND_ECB_FOR(joint)
 
#define SOLUTION   0
 
#define M_TAU   6.283185307179586
 

Functions

void mpColl_80041C78 (void)
 
void mpColl_80041C8C (CollData *cd)
 
void clamp_above (float *value, float min)
 
void clamp_below (float *value, float max)
 
void mpColl_80041DD0 (CollData *cd, u32 flags)
 
void mpColl_80041EE4 (CollData *cd)
 "Coll_InitECB"
 
void mpColl_80042078 (CollData *cd, HSD_GObj *gobj, HSD_JObj *arg1, HSD_JObj *arg2, HSD_JObj *arg3, HSD_JObj *arg4, HSD_JObj *arg5, HSD_JObj *arg6, HSD_JObj *arg7, float arg9)
 
void mpColl_8004220C (CollData *cd, HSD_GObj *gobj, float arg1, float arg2, float arg3, float arg4)
 
void mpColl_80042374 (CollData *coll, float arg8, float arg9, float argA)
 
void mpColl_80042384 (CollData *cd)
 
void update_min_max (float *min, float *max, float val)
 
void mpColl_800424DC (CollData *cd, u32 flags)
 
void update_min_max_2 (float *min, float *max, float val)
 
void clamp_above_2 (float *value, float min)
 
void clamp_below_2 (float *value, float max)
 
void mpColl_8004293C (CollData *cd)
 
void mpColl_80042C58 (CollData *coll, ftCollisionBox *arg1)
 
static void mpColl_80042D24_inline (CollData *coll, enum_t i)
 
void mpColl_80042D24 (CollData *coll)
 
void Vec2_Interpolate (float time, Vec2 *dest, Vec2 *src)
 
void mpColl_80042DB0 (CollData *ecb, float time)
 
void mpColl_80043268 (CollData *coll, s32 arg1, s32 arg2, float arg8)
 
static void func_80043324_inline2 (CollData *coll, s32 arg1, s32 arg2, float arg8)
 
static void func_80043324_inline (CollData *coll, s32 arg1, s32 arg2, float arg8)
 
void mpColl_80043324 (CollData *coll, s32 arg1, s32 arg2)
 
void mpColl_80043558 (CollData *coll, s32 arg1)
 
void mpColl_80043670 (CollData *coll)
 
void mpColl_80043680 (CollData *coll, Vec3 *arg1)
 
void mpColl_800436D8 (CollData *coll, int arg1)
 
static float six (void)
 
void mpColl_800436E4 (CollData *coll, float arg1)
 
float max_inline (float a, float b)
 
bool mpColl_80043754 (mpColl_Callback arg0, CollData *arg1, u32 arg2)
 
void mpColl_800439FC (CollData *arg0)
 
void mpColl_80043ADC (CollData *arg0)
 
bool mpColl_80043BBC (CollData *arg0, s32 *arg1)
 
void mpColl_80043C6C (CollData *arg0, s32 arg1, s32 arg2)
 
bool mpColl_80043E90 (CollData *coll, s32 *arg1)
 
void mpColl_80043F40 (CollData *arg0, s32 arg1, s32 arg2)
 
static bool mpColl_80044164_inline (CollData *cd, int *p_ledge_id)
 
bool mpColl_80044164 (CollData *cd, int *p_ledge_id)
 
bool mpColl_80046904 (CollData *coll, u32 flags)
 mpColl_800443C4
 
static bool fn_80046F78_inline (CollData *coll, int *sp14)
 
bool fn_80046F78 (CollData *coll, u32 arg1)
 
static bool inline0 (CollData *coll, int i, bool j)
 
static bool inline4 (CollData *coll, int i)
 
static bool inline2 (CollData *coll, int i)
 
static bool inline3 (CollData *coll, int i)
 
static bool inline1 (CollData *coll, int i, bool(*arg1)(Fighter_GObj *, int), Fighter_GObj *arg2)
 
bool mpColl_800471F8 (CollData *coll)
 
bool mpColl_8004730C (CollData *coll, ftCollisionBox *arg1)
 
bool mpColl_800473CC (CollData *coll)
 
bool mpColl_800474E0 (CollData *coll)
 
bool mpColl_800475F4 (CollData *coll, ftCollisionBox *arg1)
 
bool mpColl_800476B4 (CollData *coll, bool(*arg1)(Fighter_GObj *, enum_t), Fighter_GObj *gobj)
 
bool mpColl_800477E0 (CollData *coll)
 
bool mpColl_800478F4 (CollData *coll)
 
bool mpColl_80047A08 (CollData *coll, ftCollisionBox *arg1)
 
bool mpColl_80047AC8 (CollData *coll, bool(*arg1)(Fighter_GObj *, int), Fighter_GObj *arg2)
 
bool mpColl_80047BF4 (CollData *coll, bool(*arg1)(Fighter_GObj *, int), Fighter_GObj *arg2)
 
bool mpColl_80047D20 (CollData *coll, bool(*arg1)(Fighter_GObj *, int), Fighter_GObj *arg2)
 
bool mpColl_80047E14 (CollData *coll, bool(*arg1)(Fighter_GObj *, int), Fighter_GObj *arg2)
 
bool mpColl_80047F40 (CollData *coll, bool(*arg1)(Fighter_GObj *, int), Fighter_GObj *arg2)
 
bool mpColl_8004806C (CollData *coll, bool(*arg1)(Fighter_GObj *, int), Fighter_GObj *arg2)
 
bool mpColl_80048160 (CollData *coll)
 
bool mpColl_80048274 (CollData *coll)
 
bool mpColl_80048388 (CollData *coll)
 
bool mpColl_80048464 (CollData *coll)
 
bool mpColl_80048578 (CollData *coll)
 
bool mpColl_80048654 (CollData *coll)
 
bool mpColl_80048768 (CollData *coll)
 
bool mpColl_80048844 (CollData *coll, f32 arg1)
 
bool mpColl_800488F4 (CollData *arg0)
 
bool mpColl_8004AB80 (CollData *arg0)
 mpColl_80048AB0
 
bool fn_8004ACE4 (CollData *arg0, int arg1)
 
bool mpColl_8004B108 (CollData *coll)
 
bool mpColl_8004B21C (CollData *coll, ftCollisionBox *arg1)
 
bool mpColl_8004B2DC (CollData *coll)
 
bool mpColl_8004B3F0 (CollData *coll, ftCollisionBox *arg1)
 
bool mpColl_8004B4B0 (CollData *coll)
 
bool mpColl_8004B5C4 (CollData *coll)
 
bool mpColl_8004B6D8 (CollData *arg0)
 
bool mpColl_8004C750 (CollData *coll)
 mpColl_8004B894
 
float mpColl_8004CA6C (CollData *coll)
 mpColl_8004C864
 
bool mpColl_8004CAA0 (CollData *coll, Vec3 *arg1)
 
bool mpColl_8004CAE8 (CollData *coll, Vec3 *arg1)
 
bool mpColl_8004CB30 (CollData *coll, Vec3 *arg1)
 
bool mpColl_8004CB78 (CollData *coll, Vec3 *arg1)
 
bool mpColl_8004CBC0 (CollData *coll)
 
void mpColl_8004CBE8 (CollData *coll)
 
void mpColl_8004CBF4 (CollData *coll)
 
bool mpColl_8004D024 (Vec3 *arg0)
 mpColl_8004CC00
 

Variables

static bool mpColl_804D649C
 
static bool(* mpColl_804D64A0 )(Fighter_GObj *, int)
 
static Fighter_GObj * mpColl_804D64A4
 
static Event mpColl_804D64A8
 
int mpColl_804D64AC
 
const float mpColl_804D7F9C = -F32_MAX
 
const float mpColl_804D7FA0 = F32_MAX
 
const float flt_804D7FF8 = 5.0f
 
const f64 flt_804D8000 = -0.75
 
const f64 flt_804D8008 = 0.75
 
const float flt_804D8010 = -3.0f
 
const float flt_804D7FD8 = 6.0f
 
char dummy_string_data [] = "i<MPCOLL_WALLID_MAX"
 

Macro Definition Documentation

◆ Collide_LeftWallPush

#define Collide_LeftWallPush   0x1
Todo:
This is the same as MPCOLL_RIGHTWALL, etc. Pick a naming convention.

◆ Collide_LeftWallHug

#define Collide_LeftWallHug   0x20

◆ Collide_LeftWallMask

#define Collide_LeftWallMask   0x3F

◆ Collide_RightWallPush

#define Collide_RightWallPush   0x40

◆ Collide_RightWallHug

#define Collide_RightWallHug   0x800

◆ Collide_RightWallMask

#define Collide_RightWallMask   0xFC0

◆ Collide_CeilingPush

#define Collide_CeilingPush   0x2000

◆ Collide_CeilingHug

#define Collide_CeilingHug   0x4000

◆ Collide_FloorPush

#define Collide_FloorPush   0x8000

◆ Collide_FloorHug

#define Collide_FloorHug   0x10000

◆ Collide_LeftEdge

#define Collide_LeftEdge   0x100000

◆ Collide_RightEdge

#define Collide_RightEdge   0x200000

◆ Collide_Edge

#define Collide_Edge   0x800000

◆ Collide_LeftLedgeGrab

#define Collide_LeftLedgeGrab   0x1000000

◆ Collide_RightLedgeGrab

#define Collide_RightLedgeGrab   0x2000000

◆ Collide_LeftLedgeSlip

#define Collide_LeftLedgeSlip   0x10000000

◆ Collide_RightLedgeSlip

#define Collide_RightLedgeSlip   0x20000000

◆ CollisionFlagAir_StayAirborne

#define CollisionFlagAir_StayAirborne   0x1

◆ CollisionFlagAir_PlatformPassCallback

#define CollisionFlagAir_PlatformPassCallback   0x2

◆ CollisionFlagAir_CanGrabLedge

#define CollisionFlagAir_CanGrabLedge   0x4

◆ EXPAND_ECB_FOR

#define EXPAND_ECB_FOR (   joint)
Value:
lb_8000B1CC(joint, NULL, &vec); \
dx = vec.x - temp_x; \
dy = vec.y - temp_y; \
update_min_max(&left_x, &right_x, dx); \
update_min_max(&bottom_y, &top_y, dy);
void lb_8000B1CC(HSD_JObj *arg0, Vec3 *pos0, Vec3 *pos1)
JObj_GetWorldPos(r3=JObj,r4=UnkPointer,r5=StoreResult)
Definition lb_00B0.c:109
#define NULL
Definition stddef.h:19

◆ SOLUTION

#define SOLUTION   0

◆ M_TAU

#define M_TAU   6.283185307179586

Function Documentation

◆ mpColl_80041C78()

void mpColl_80041C78 ( void  )

◆ mpColl_80041C8C()

void mpColl_80041C8C ( CollData cd)

◆ clamp_above()

void clamp_above ( float *  value,
float  min 
)
inline

◆ clamp_below()

void clamp_below ( float *  value,
float  max 
)
inline

◆ mpColl_80041DD0()

void mpColl_80041DD0 ( CollData cd,
u32  flags 
)

◆ mpColl_80041EE4()

void mpColl_80041EE4 ( CollData cd)

"Coll_InitECB"

◆ mpColl_80042078()

void mpColl_80042078 ( CollData cd,
HSD_GObj gobj,
HSD_JObj arg1,
HSD_JObj arg2,
HSD_JObj arg3,
HSD_JObj arg4,
HSD_JObj arg5,
HSD_JObj arg6,
HSD_JObj arg7,
float  arg9 
)

◆ mpColl_8004220C()

void mpColl_8004220C ( CollData cd,
HSD_GObj gobj,
float  arg1,
float  arg2,
float  arg3,
float  arg4 
)

◆ mpColl_80042374()

void mpColl_80042374 ( CollData coll,
float  arg8,
float  arg9,
float  argA 
)

◆ mpColl_80042384()

void mpColl_80042384 ( CollData cd)

◆ update_min_max()

void update_min_max ( float *  min,
float *  max,
float  val 
)
inline

◆ mpColl_800424DC()

void mpColl_800424DC ( CollData cd,
u32  flags 
)

◆ update_min_max_2()

void update_min_max_2 ( float *  min,
float *  max,
float  val 
)
inline

◆ clamp_above_2()

void clamp_above_2 ( float *  value,
float  min 
)
inline

◆ clamp_below_2()

void clamp_below_2 ( float *  value,
float  max 
)
inline

◆ mpColl_8004293C()

void mpColl_8004293C ( CollData cd)

◆ mpColl_80042C58()

void mpColl_80042C58 ( CollData coll,
ftCollisionBox arg1 
)

◆ mpColl_80042D24_inline()

static void mpColl_80042D24_inline ( CollData coll,
enum_t  i 
)
inlinestatic

◆ mpColl_80042D24()

void mpColl_80042D24 ( CollData coll)

◆ Vec2_Interpolate()

void Vec2_Interpolate ( float  time,
Vec2 *  dest,
Vec2 *  src 
)
inline

◆ mpColl_80042DB0()

void mpColl_80042DB0 ( CollData ecb,
float  time 
)

◆ mpColl_80043268()

void mpColl_80043268 ( CollData coll,
s32  arg1,
s32  arg2,
float  arg8 
)

◆ func_80043324_inline2()

static void func_80043324_inline2 ( CollData coll,
s32  arg1,
s32  arg2,
float  arg8 
)
inlinestatic

◆ func_80043324_inline()

static void func_80043324_inline ( CollData coll,
s32  arg1,
s32  arg2,
float  arg8 
)
inlinestatic

◆ mpColl_80043324()

void mpColl_80043324 ( CollData coll,
s32  arg1,
s32  arg2 
)

◆ mpColl_80043558()

void mpColl_80043558 ( CollData coll,
s32  arg1 
)
Todo:
dummy stack in func_80043324_inline2 breaks this function

◆ mpColl_80043670()

void mpColl_80043670 ( CollData coll)

◆ mpColl_80043680()

void mpColl_80043680 ( CollData coll,
Vec3 *  arg1 
)

◆ mpColl_800436D8()

void mpColl_800436D8 ( CollData coll,
int  arg1 
)

◆ six()

static float six ( void  )
static

◆ mpColl_800436E4()

void mpColl_800436E4 ( CollData coll,
float  arg1 
)

◆ max_inline()

float max_inline ( float  a,
float  b 
)
inline

◆ mpColl_80043754()

bool mpColl_80043754 ( mpColl_Callback  arg0,
CollData arg1,
u32  arg2 
)

◆ mpColl_800439FC()

void mpColl_800439FC ( CollData arg0)

◆ mpColl_80043ADC()

void mpColl_80043ADC ( CollData arg0)

◆ mpColl_80043BBC()

bool mpColl_80043BBC ( CollData arg0,
s32 *  arg1 
)

◆ mpColl_80043C6C()

void mpColl_80043C6C ( CollData arg0,
s32  arg1,
s32  arg2 
)

◆ mpColl_80043E90()

bool mpColl_80043E90 ( CollData coll,
s32 *  arg1 
)

◆ mpColl_80043F40()

void mpColl_80043F40 ( CollData arg0,
s32  arg1,
s32  arg2 
)

◆ mpColl_80044164_inline()

static bool mpColl_80044164_inline ( CollData cd,
int *  p_ledge_id 
)
inlinestatic

◆ mpColl_80044164()

bool mpColl_80044164 ( CollData cd,
int *  p_ledge_id 
)

◆ mpColl_80046904()

◆ fn_80046F78_inline()

static bool fn_80046F78_inline ( CollData coll,
int *  sp14 
)
inlinestatic

◆ fn_80046F78()

bool fn_80046F78 ( CollData coll,
u32  arg1 
)

◆ inline0()

static bool inline0 ( CollData coll,
int  i,
bool  j 
)
inlinestatic

◆ inline4()

static bool inline4 ( CollData coll,
int  i 
)
inlinestatic

◆ inline2()

static bool inline2 ( CollData coll,
int  i 
)
inlinestatic

◆ inline3()

static bool inline3 ( CollData coll,
int  i 
)
inlinestatic

◆ inline1()

static bool inline1 ( CollData coll,
int  i,
bool(*)(Fighter_GObj *, int)  arg1,
Fighter_GObj *  arg2 
)
inlinestatic

◆ mpColl_800471F8()

bool mpColl_800471F8 ( CollData coll)

◆ mpColl_8004730C()

bool mpColl_8004730C ( CollData coll,
ftCollisionBox arg1 
)

◆ mpColl_800473CC()

bool mpColl_800473CC ( CollData coll)

◆ mpColl_800474E0()

bool mpColl_800474E0 ( CollData coll)

◆ mpColl_800475F4()

bool mpColl_800475F4 ( CollData coll,
ftCollisionBox arg1 
)

◆ mpColl_800476B4()

bool mpColl_800476B4 ( CollData coll,
bool(*)(Fighter_GObj *, enum_t arg1,
Fighter_GObj *  gobj 
)

◆ mpColl_800477E0()

bool mpColl_800477E0 ( CollData coll)

◆ mpColl_800478F4()

bool mpColl_800478F4 ( CollData coll)

◆ mpColl_80047A08()

bool mpColl_80047A08 ( CollData coll,
ftCollisionBox arg1 
)

◆ mpColl_80047AC8()

bool mpColl_80047AC8 ( CollData coll,
bool(*)(Fighter_GObj *, int)  arg1,
Fighter_GObj *  arg2 
)

◆ mpColl_80047BF4()

bool mpColl_80047BF4 ( CollData coll,
bool(*)(Fighter_GObj *, int)  arg1,
Fighter_GObj *  arg2 
)

◆ mpColl_80047D20()

bool mpColl_80047D20 ( CollData coll,
bool(*)(Fighter_GObj *, int)  arg1,
Fighter_GObj *  arg2 
)

◆ mpColl_80047E14()

bool mpColl_80047E14 ( CollData coll,
bool(*)(Fighter_GObj *, int)  arg1,
Fighter_GObj *  arg2 
)

◆ mpColl_80047F40()

bool mpColl_80047F40 ( CollData coll,
bool(*)(Fighter_GObj *, int)  arg1,
Fighter_GObj *  arg2 
)

◆ mpColl_8004806C()

bool mpColl_8004806C ( CollData coll,
bool(*)(Fighter_GObj *, int)  arg1,
Fighter_GObj *  arg2 
)

◆ mpColl_80048160()

bool mpColl_80048160 ( CollData coll)

◆ mpColl_80048274()

bool mpColl_80048274 ( CollData coll)

◆ mpColl_80048388()

bool mpColl_80048388 ( CollData coll)

◆ mpColl_80048464()

bool mpColl_80048464 ( CollData coll)

◆ mpColl_80048578()

bool mpColl_80048578 ( CollData coll)

◆ mpColl_80048654()

bool mpColl_80048654 ( CollData coll)

◆ mpColl_80048768()

bool mpColl_80048768 ( CollData coll)

◆ mpColl_80048844()

bool mpColl_80048844 ( CollData coll,
f32  arg1 
)

◆ mpColl_800488F4()

bool mpColl_800488F4 ( CollData arg0)

◆ mpColl_8004AB80()

◆ fn_8004ACE4()

bool fn_8004ACE4 ( CollData arg0,
int  arg1 
)

◆ mpColl_8004B108()

bool mpColl_8004B108 ( CollData coll)

◆ mpColl_8004B21C()

bool mpColl_8004B21C ( CollData coll,
ftCollisionBox arg1 
)

◆ mpColl_8004B2DC()

bool mpColl_8004B2DC ( CollData coll)

◆ mpColl_8004B3F0()

bool mpColl_8004B3F0 ( CollData coll,
ftCollisionBox arg1 
)

◆ mpColl_8004B4B0()

bool mpColl_8004B4B0 ( CollData coll)

◆ mpColl_8004B5C4()

bool mpColl_8004B5C4 ( CollData coll)

◆ mpColl_8004B6D8()

bool mpColl_8004B6D8 ( CollData arg0)

◆ mpColl_8004C750()

◆ mpColl_8004CA6C()

float mpColl_8004CA6C ( CollData coll)

◆ mpColl_8004CAA0()

bool mpColl_8004CAA0 ( CollData coll,
Vec3 *  arg1 
)

◆ mpColl_8004CAE8()

bool mpColl_8004CAE8 ( CollData coll,
Vec3 *  arg1 
)

◆ mpColl_8004CB30()

bool mpColl_8004CB30 ( CollData coll,
Vec3 *  arg1 
)

◆ mpColl_8004CB78()

bool mpColl_8004CB78 ( CollData coll,
Vec3 *  arg1 
)

◆ mpColl_8004CBC0()

bool mpColl_8004CBC0 ( CollData coll)

◆ mpColl_8004CBE8()

void mpColl_8004CBE8 ( CollData coll)

◆ mpColl_8004CBF4()

void mpColl_8004CBF4 ( CollData coll)

◆ mpColl_8004D024()

bool mpColl_8004D024 ( Vec3 *  arg0)

Variable Documentation

◆ mpColl_804D649C

bool mpColl_804D649C
static

◆ mpColl_804D64A0

bool(* mpColl_804D64A0) (Fighter_GObj *, int) ( Fighter_GObj *  ,
int   
)
static

◆ mpColl_804D64A4

Fighter_GObj* mpColl_804D64A4
static

◆ mpColl_804D64A8

Event mpColl_804D64A8
static

◆ mpColl_804D64AC

int mpColl_804D64AC

◆ mpColl_804D7F9C

const float mpColl_804D7F9C = -F32_MAX
Todo:
float order hack

◆ mpColl_804D7FA0

const float mpColl_804D7FA0 = F32_MAX

◆ flt_804D7FF8

const float flt_804D7FF8 = 5.0f

◆ flt_804D8000

const f64 flt_804D8000 = -0.75

◆ flt_804D8008

const f64 flt_804D8008 = 0.75

◆ flt_804D8010

const float flt_804D8010 = -3.0f

◆ flt_804D7FD8

const float flt_804D7FD8 = 6.0f
Todo:
float order hack

◆ dummy_string_data

char dummy_string_data[] = "i<MPCOLL_WALLID_MAX"