ac_ball link

This commit is contained in:
Prakxo
2024-01-09 18:38:12 +01:00
parent f279c6c962
commit a0e63ba650
14 changed files with 967 additions and 156 deletions
+24
View File
@@ -8,6 +8,30 @@
extern "C" {
#endif
typedef void (*BALL_PROCESS_PROC)(ACTOR*, GAME*);
typedef struct actor_ball_s {
ACTOR actor_class;
ClObjPipe_c ball_pipe;
u8 pad[0x40];
xyz_t bgpos;
ACTOR* collider;
BALL_PROCESS_PROC process_proc;
int unk1E4;
f32 ball_y;
f32 ball_max_speed;
f32 ball_acceleration;
f32 ball_speed;
int type;
s16 timer;
s16 unk1FE;
s_xyz angle;
s16 unk206;
s16 unk208;
s16 unk20A;
s16 unk20C;
} BALL_ACTOR;
extern ACTOR_PROFILE Ball_Profile;
#ifdef __cplusplus
+1 -1
View File
@@ -19,7 +19,7 @@ typedef struct gyoei_init_s {
typedef int (*aGYO_make_proc)(aGYO_Init_c*);
typedef void (*aGYO_dt_proc)(ACTOR*, GAME*);
typedef void (*aGYO_ballcheck_proc)(xyz_t*, s16);
typedef void (*aGYO_ballcheck_proc)(xyz_t*, f32, s16);
typedef void (*aGYO_hitcheck_proc)(xyz_t*, s16);
typedef int (*aGYO_chk_live_proc)(int, int, GAME*);
typedef int (*aGYO_search_near_proc)(f32, f32);
+1 -1
View File
@@ -6,6 +6,6 @@
u32 qrand(void);
void sqrand(u32);
f32 fqrand(void);
f64 fqrand2(void);
f32 fqrand2(void);
#endif
+45 -45
View File
@@ -161,60 +161,60 @@ typedef struct mco_work_s {
extern McoWork mco_work;
typedef void (*CollisionOCFunction)(GAME_PLAY*, CollisionCheck_c*, ClObj_c*,ClObj_c*);
typedef int (*CollisionOCClear)(GAME_PLAY*, ClObj_c*);
typedef int (*CollisionClearFunction)(GAME_PLAY*, ClObj_c*);
typedef void (*CollisionOCFunction)(GAME*, CollisionCheck_c*, ClObj_c*,ClObj_c*);
typedef int (*CollisionOCClear)(GAME*, ClObj_c*);
typedef int (*CollisionClearFunction)(GAME*, ClObj_c*);
extern void CollisionCheck_workTrisElemCenter(ClObjTrisElem_c *, xyz_t *);
extern int ClObj_ct(GAME_PLAY *, ClObj_c *);
extern int ClObj_dt(GAME_PLAY *, ClObj_c *);
extern int ClObj_set4(GAME_PLAY *, ClObj_c *, ACTOR *, ClObjData_c *);
extern void ClObj_OCClear(GAME_PLAY *, ClObj_c *);
extern int ClObj_ct(GAME *, ClObj_c *);
extern int ClObj_dt(GAME *, ClObj_c *);
extern int ClObj_set4(GAME *, ClObj_c *, ACTOR *, ClObjData_c *);
extern void ClObj_OCClear(GAME *, ClObj_c *);
extern int ClObjElem_ct(ClObjElem_c *);
extern int ClObjElem_set(ClObjElem_c *, ClObjElemData_c *);
extern void ClObjElem_OCClear(GAME_PLAY *, ClObjElem_c *);
extern int ClObjJntSphElem_OCClear(GAME_PLAY *, ClObjJntSphElem_c *);
extern int ClObjJntSph_OCClear(GAME_PLAY *, ClObj_c *);
extern int ClObjPipeAttr_ct(GAME_PLAY *, ClObjPipeAttr_c *);
extern int ClObjPipeAttr_dt(GAME_PLAY *, ClObjPipeAttr_c *);
extern int ClObjPipeAttr_set(GAME_PLAY *, ClObjPipeAttr_c *, ClObjPipeAttr_c *);
extern int ClObjPipe_ct(GAME_PLAY *, ClObjPipe_c *);
extern int ClObjPipe_dt(GAME_PLAY *, ClObjPipe_c *);
extern int ClObjPipe_set5(GAME_PLAY *, ClObjPipe_c *, ACTOR *, ClObjPipeData_c *);
extern int ClObjPipe_OCClear(GAME_PLAY *, ClObj_c *);
extern int ClObjTrisElemAttr_ct(GAME_PLAY *, ClObjTrisElemAttr_c *);
extern int ClObjTrisElemAttr_dt(GAME_PLAY *, ClObjTrisElemAttr_c *);
extern int ClObjTrisElemAttr_set(GAME_PLAY *, ClObjTrisElemAttr_c *, ClObjTrisElemAttrData_c *);
extern int ClObjTrisElem_ct(GAME_PLAY *, ClObjTrisElem_c *);
extern int ClObjTrisElem_dt(GAME_PLAY *, ClObjTrisElem_c *);
extern int ClObjTrisElem_set(GAME_PLAY *, ClObjTrisElem_c *, ClObjTrisElemData_c *);
extern int ClObjTrisElem_OCClear(GAME_PLAY *, ClObjTrisElem_c *);
extern int ClObjTris_ct(GAME_PLAY *, ClObjTris_c *);
extern int ClObjTris_dt_nzf(GAME_PLAY *, ClObjTris_c *);
extern int ClObjTris_set5_nzm(GAME_PLAY *, ClObjTris_c *, ACTOR *, ClObjTrisData_c *, ClObjTrisElem_c *);
extern int ClObjTris_OCClear(GAME_PLAY *, ClObj_c *);
extern void CollisionCheck_ct(GAME_PLAY *, CollisionCheck_c *);
extern void CollisionCheck_dt(GAME_PLAY *, CollisionCheck_c *);
extern void CollisionCheck_clear(GAME_PLAY *, CollisionCheck_c *);
extern int CollisionCheck_setOC(GAME_PLAY *, CollisionCheck_c *, ClObj_c *);
extern void ClObjElem_OCClear(GAME *, ClObjElem_c *);
extern int ClObjJntSphElem_OCClear(GAME *, ClObjJntSphElem_c *);
extern int ClObjJntSph_OCClear(GAME *, ClObj_c *);
extern int ClObjPipeAttr_ct(GAME *, ClObjPipeAttr_c *);
extern int ClObjPipeAttr_dt(GAME *, ClObjPipeAttr_c *);
extern int ClObjPipeAttr_set(GAME *, ClObjPipeAttr_c *, ClObjPipeAttr_c *);
extern int ClObjPipe_ct(GAME *, ClObjPipe_c *);
extern int ClObjPipe_dt(GAME *, ClObjPipe_c *);
extern int ClObjPipe_set5(GAME *, ClObjPipe_c *, ACTOR *, ClObjPipeData_c *);
extern int ClObjPipe_OCClear(GAME *, ClObj_c *);
extern int ClObjTrisElemAttr_ct(GAME *, ClObjTrisElemAttr_c *);
extern int ClObjTrisElemAttr_dt(GAME *, ClObjTrisElemAttr_c *);
extern int ClObjTrisElemAttr_set(GAME *, ClObjTrisElemAttr_c *, ClObjTrisElemAttrData_c *);
extern int ClObjTrisElem_ct(GAME *, ClObjTrisElem_c *);
extern int ClObjTrisElem_dt(GAME *, ClObjTrisElem_c *);
extern int ClObjTrisElem_set(GAME *, ClObjTrisElem_c *, ClObjTrisElemData_c *);
extern int ClObjTrisElem_OCClear(GAME *, ClObjTrisElem_c *);
extern int ClObjTris_ct(GAME *, ClObjTris_c *);
extern int ClObjTris_dt_nzf(GAME *, ClObjTris_c *);
extern int ClObjTris_set5_nzm(GAME *, ClObjTris_c *, ACTOR *, ClObjTrisData_c *, ClObjTrisElem_c *);
extern int ClObjTris_OCClear(GAME *, ClObj_c *);
extern void CollisionCheck_ct(GAME *, CollisionCheck_c *);
extern void CollisionCheck_dt(GAME *, CollisionCheck_c *);
extern void CollisionCheck_clear(GAME *, CollisionCheck_c *);
extern int CollisionCheck_setOC(GAME *, CollisionCheck_c *, ClObj_c *);
extern int get_type(u8);
extern void CollisionCheck_setOC_HitInfo(ClObj_c *, ClObjElem_c *, xyz_t *, ClObj_c *, ClObjElem_c *, xyz_t *, f32);
extern void CollisionCheck_OC_JntSph_Vs_JntSph(GAME_PLAY *, CollisionCheck_c *, ClObj_c *, ClObj_c *);
extern void CollisionCheck_OC_JntSph_Vs_Pipe(GAME_PLAY *, CollisionCheck_c *, ClObj_c *, ClObj_c *);
extern void CollisionCheck_OC_Pipe_Vs_JntSph(GAME_PLAY *, CollisionCheck_c *, ClObj_c *, ClObj_c *);
extern void CollisionCheck_OC_Pipe_Vs_Pipe(GAME_PLAY *, CollisionCheck_c *, ClObj_c *, ClObj_c *);
extern void CollisionCheck_OC_JntSph_Vs_JntSph(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *);
extern void CollisionCheck_OC_JntSph_Vs_Pipe(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *);
extern void CollisionCheck_OC_Pipe_Vs_JntSph(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *);
extern void CollisionCheck_OC_Pipe_Vs_Pipe(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *);
extern int CollisionCheck_Check1ClObjNoOC(ClObj_c *);
extern int CollisionCheck_Check2ClObjNoOC(ClObj_c *, ClObj_c *);
extern void CollisionCheck_OC(GAME_PLAY *, CollisionCheck_c *);
extern void CollisionCheck_setOCC_HitInfo(GAME_PLAY *, ClObj_c *, ClObjTrisElem_c *, xyz_t *, ClObj_c *, ClObjElem_c *, xyz_t *, xyz_t *);
extern void CollisionCheck_OCC_Tris_Vs_JntSph(GAME_PLAY *, CollisionCheck_c *, ClObjTris_c *, ClObjJntSph_c *);
extern void CollisionCheck_OCC_Tris_Vs_Pipe(GAME_PLAY *, CollisionCheck_c *, ClObjTris_c *, ClObjPipe_c *);
extern void CollisionCheck_OC(GAME *, CollisionCheck_c *);
extern void CollisionCheck_setOCC_HitInfo(GAME *, ClObj_c *, ClObjTrisElem_c *, xyz_t *, ClObj_c *, ClObjElem_c *, xyz_t *, xyz_t *);
extern void CollisionCheck_OCC_Tris_Vs_JntSph(GAME *, CollisionCheck_c *, ClObjTris_c *, ClObjJntSph_c *);
extern void CollisionCheck_OCC_Tris_Vs_Pipe(GAME *, CollisionCheck_c *, ClObjTris_c *, ClObjPipe_c *);
extern int CollisionCheck_Check1ClObjNoOCC(ClObj_c *);
extern void CollisionCheck_OCC(GAME_PLAY *, CollisionCheck_c *);
extern int ClObjTrisElem_OCCClear(GAME_PLAY *, ClObjTrisElem_c *);
extern int ClObj_OCCClear(GAME_PLAY *, ClObj_c *);
extern int ClObjTris_OCCClear(GAME_PLAY *, ClObj_c *);
extern int CollisionCheck_setOCC(GAME_PLAY *, CollisionCheck_c *, ClObj_c *);
extern void CollisionCheck_OCC(GAME *, CollisionCheck_c *);
extern int ClObjTrisElem_OCCClear(GAME *, ClObjTrisElem_c *);
extern int ClObj_OCCClear(GAME *, ClObj_c *);
extern int ClObjTris_OCCClear(GAME *, ClObj_c *);
extern int CollisionCheck_setOCC(GAME *, CollisionCheck_c *, ClObj_c *);
extern void CollisionCheck_Status_ct(Status_c *);
extern void CollisionCheck_Status_Clear(Status_c *);
extern void CollisionCheck_Status_set3(Status_c *, StatusData_c *);
+3
View File
@@ -21,6 +21,7 @@ extern "C" {
#define SHT_MINV (1.0f / SHT_MAX)
#define ABS(x) (((x) >= 0) ? (x) : -(x))
#define SQ(x) ((x)*(x))
#define CLAMP_MAX(x, min) ((min) < (x) ? (min) : (x))
/* radians -> short angle */
#define RAD2SHORT_ANGLE(rad) ((s16)(int)((rad) * (65536.0f / (2.0f * F_PI))))
@@ -33,6 +34,8 @@ extern "C" {
/* degrees -> short angle */
#define DEG2SHORT_ANGLE(deg) ((s16)((deg) * (65536.0f / 360.0f)))
#define DEG2SHORT_ANGLE2(deg) ((int)((deg) * (65536.0f / 360.0f)))
/* short angle -> degrees */
#define SHORT2DEG_ANGLE(s) ((((f32)(s)) / (65536.0f / 360.0f)))
+1
View File
@@ -1704,6 +1704,7 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define ETC_START 0x8000
#define ETC_AIRPLANE ETC_START
#define ETC_BALL (ETC_START + 1)
#define ETC_BOXTRICK (ETC_START + 4)
#define ETC_BOXMANAGER (ETC_START + 5)
#define ETC_SNOWMAN_BALL_A (ETC_START + 13)