diff --git a/include/actor_types.h b/include/actor_types.h index 4b8c11436..450befb6a 100644 --- a/include/actor_types.h +++ b/include/actor_types.h @@ -1,3 +1,6 @@ +#ifndef ACTOR_TYPES_H +#define ACTOR_TYPES_H + #include #include #include @@ -320,3 +323,5 @@ struct BananaActor { /* 0x24 */ Vec3f velocity; /* 0x30 */ UnkActorInner unk30; }; // size = 0x70 + +#endif diff --git a/include/functions.h b/include/functions.h index f4558e4e2..6ad785b6e 100644 --- a/include/functions.h +++ b/include/functions.h @@ -3,13 +3,11 @@ #include "common_structs.h" -s32 random_int(u16); void mio0decode(u8* arg0, u8* arg1); void func_8000F2DC(void); void func_8000F628(void); void func_8000EEDC(void); -f32 func_802AE1C0(f32 arg0, f32 arg1, f32 arg2); void func_802B6540(f32* arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4); void func_80295BF8(s32 arg0); void func_8005D6C0(Player* player); diff --git a/src/code_80027D00.c b/src/code_80027D00.c index fe83b7d34..81f1e7ff3 100644 --- a/src/code_80027D00.c +++ b/src/code_80027D00.c @@ -3,6 +3,7 @@ #include #include "variables.h" #include "kart_attributes.h" +#include "memory.h" #include "code_80027D00.h" #include "code_8008C1D0.h" diff --git a/src/code_800393C0.c b/src/code_800393C0.c index 6dace5ab7..50d7f696a 100644 --- a/src/code_800393C0.c +++ b/src/code_800393C0.c @@ -1,6 +1,7 @@ #include "global.h" #include #include "kart_attributes.h" +#include "memory.h" extern s16 D_80165560[]; extern s32* D_800E3C50[]; diff --git a/src/code_80280000.c b/src/code_80280000.c index 0177e8b85..e83c26a6d 100644 --- a/src/code_80280000.c +++ b/src/code_80280000.c @@ -27,7 +27,6 @@ extern s32 D_802874A0; extern u16 atan2s(f32, f32); extern u16 D_80164714, D_80164716, D_80164718; extern u16 D_800DC5E4; -extern u32 D_800DC524; extern u32 D_800DC50C; extern u32 D_802874FC; diff --git a/src/code_80281C40.c b/src/code_80281C40.c index efae661e2..a899f9844 100644 --- a/src/code_80281C40.c +++ b/src/code_80281C40.c @@ -18,7 +18,6 @@ extern s32 D_802874FC; extern u32 gMenuSelectionFromEndingSequence; extern s32 D_80287554; extern u16 gIsInQuitToMenuTransition; -extern u32 D_800DC524; extern Gfx D_00284F70[]; extern Gfx D_00284EE0[]; diff --git a/src/code_80296A50.c b/src/code_80296A50.c index bd5a399fd..5ceb4fb97 100644 --- a/src/code_80296A50.c +++ b/src/code_80296A50.c @@ -6,43 +6,10 @@ #include #include #include - -f32 sins(u16); /* extern */ -f32 coss(u16); /* extern */ -void func_800C99E0(Vec3f, s32); // audio external -f32 func_802B80D0(Vec3f, Vec3f, u16, f32, f32, f32); // extern -void func_800C98B8(Vec3f, Vec3f, u32); // extern -void func_8029794C(Vec3f, Vec3s, f32); -s32 func_802B4FF8(Mat4, s32); - -void func_802B5F74(Mat4, Vec3f, Vec3s); -void func_802B5F00(Mat4, f32); - -void mtxf_translate(Mat4, Vec3f); /* extern */ -void vec3s_set(Vec3s, s16, s16, s16); -void vec3f_set(Vec3f, f32, f32, f32); -s16 func_8029EC88(Vec3f, Vec3s, Vec3f, s16); - -extern Player gPlayers[]; -extern Player *gPlayerOne; -extern struct Controller gControllers[]; - -extern s32 gActiveScreenMode; - -extern Camera *camera1; -extern struct Actor gActorList[]; -extern Gfx *gDisplayListHead; -extern s32 gModeSelection; -extern s16 gCurrentCourseId; -extern f32 D_80150130[]; -extern u16 D_801637B8[]; -extern Lights1 D_800DC610[]; - -extern f32 gCourseDirection; - -extern uintptr_t gSegmentTable[]; - -extern s8 D_0D004E38[]; +#include "math_util.h" +#include "memory.h" +#include "code_802B0210.h" +#include "code_80296A50.h" s32 D_802BA050; s32 D_802BA054; @@ -212,7 +179,7 @@ loop_34: #else GLOBAL_ASM("asm/non_matchings/code_actors/func_80296A50.s") #endif -void func_802ADDC8(UnkActorInner*, f32, f32, f32, f32); + #ifdef MIPS_TO_C //generated by m2c commit 685418adfeb3794409e47b45ac5cab60b17d23fd ? func_80296A50(struct Actor *); /* extern */ @@ -439,18 +406,6 @@ void func_802972B8(Camera *arg0, struct Actor *arg1) { } } -extern s8 D_0D001C20[]; -extern s8 D_0D001C88[]; -extern s8 D_0D001B90[]; -extern s8 D_0D001BD8[]; -extern s32 D_800DC50C; -extern Vec3f D_8015F8D0; -extern s32 D_801625EC; -extern s32 D_801625F0; -extern s32 D_801625F4; - -extern u16 D_800DC5BC; - void func_80297340(Camera *arg0) { Mat4 sp38; s16 temp = D_8015F8D0[2]; @@ -518,8 +473,6 @@ void func_802976D8(Vec3s arg0) { arg0[2] = 0; } -s16 atan2s(f32, f32); // extern - void func_802976EC(UnkActorInner *arg0, Vec3s arg1) { f32 x, y, z; @@ -538,8 +491,6 @@ void func_802976EC(UnkActorInner *arg0, Vec3s arg1) { arg1[2] = atan2s(x, y); } -f32 func_802ABE30(f32, f32, f32, u16); // extern - void func_80297760(struct Actor *arg0, Vec3f arg1) { arg1[0] = arg0->pos[0]; arg1[1] = arg0->pos[1]; @@ -579,9 +530,7 @@ void func_80297818(void) { } } -UNUSED func_80297944(void) {}; - -extern Gfx D_0D007B20[]; +UNUSED void func_80297944(void) {}; void func_8029794C(Vec3f arg0, Vec3s arg1, f32 arg2) { Mat4 sp20; @@ -596,8 +545,6 @@ void func_8029794C(Vec3f arg0, Vec3s arg1, f32 arg2) { } } -void func_802976EC(UnkActorInner*, Vec3s); - void func_802979F8(struct Actor *arg0, f32 arg1) { Vec3f sp24; Vec3s sp1C; @@ -610,13 +557,6 @@ void func_802979F8(struct Actor *arg0, f32 arg1) { } } -extern s8 D_06013C00[]; -extern s8 D_06013CA0[]; -extern s8 D_06013D20[]; -extern s8 D_06013DA0[]; -extern s8 D_06013E20[]; -extern f32 D_802B95F8; - #ifdef MISSING_RODATA // jpt_802B95FC void func_80297A50(Camera *camera, Mat4 arg1, struct Actor *arg2) { @@ -652,8 +592,6 @@ void func_80297A50(Camera *camera, Mat4 arg1, struct Actor *arg2) { #endif GLOBAL_ASM("asm/non_matchings/code_actors/func_80297A50.s") -extern f64 D_802B9610; - void update_obj_yoshi_valley_egg(struct YoshiValleyEgg *egg) { egg->pathRot += 0x5B; egg->pos[0] = egg->pathCenter[0] + (sins(egg->pathRot) * egg->pathRadius); @@ -916,8 +854,6 @@ void update_obj_paddle_wheel(struct PaddleWheelBoat *boat) { boat->wheelRot += 0x38E; } -extern void func_800C9D80(Vec3f *arg0, Vec3f *arg1, u32 arg2); // extern - // wheels void update_obj_train_engine(struct TrainCar *arg0) { arg0->wheelRot -= 0x666; @@ -983,11 +919,6 @@ void update_obj_piranha_plant(struct PiranhaPlant *arg0) { } } -extern s8 D_06006990[]; -extern s8 D_0600D850[]; -extern f32 D_802B9624; -extern f32 D_802B9628; -extern s32 D_802BA058; // Mario Raceway Load piranha plant textures? void func_80298328(Camera *arg0, Mat4 arg1, struct PiranhaPlant *arg2) { s32 pad; @@ -1258,11 +1189,6 @@ block_17: GLOBAL_ASM("asm/non_matchings/code_actors/func_802986B4.s") #endif -void func_800C9060(Player*, s32); /* extern */ -void func_800C90F4(Player*, s32); /* extern */ -s32 func_8029EEB8(Player*, Vec3f, f32, f32, f32); /* extern */ -extern s8 D_06013F78[]; -extern f32 D_802B964C; // 0.8f //static f32 D_802B964C = 0.8f; #ifdef RO_DATA // Needs D_802B964C imported to match void func_80298AC0(Player *player) { @@ -1477,13 +1403,6 @@ block_29: GLOBAL_ASM("asm/non_matchings/code_actors/func_80298D7C.s") #endif -extern Gfx D_06006A68[]; -extern Gfx D_0D004C68[]; - -extern f32 D_802B9658; // = 16000000.0; // static -extern f32 D_802B965C; // = 250000.0f; // static -extern f32 D_802B96B4; - void func_80299144(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; s16 temp_v0 = arg2->flags; @@ -1506,9 +1425,6 @@ void func_80299144(Camera *camera, Mat4 arg1, struct Actor *arg2) { gSPDisplayList(gDisplayListHead++, D_06006A68); } } -extern f32 D_802B9660; -extern f32 D_802B9664; -extern Gfx D_06015B48[]; void func_8029930C(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; @@ -1533,10 +1449,6 @@ void func_8029930C(Camera *camera, Mat4 arg1, struct Actor *arg2) { } } -extern f32 D_802B9668; -extern f32 D_802B966C; -extern Gfx D_0600D4A0[]; - void func_802994D4(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; s16 temp_v0 = arg2->flags; @@ -1560,9 +1472,6 @@ void func_802994D4(Camera *camera, Mat4 arg1, struct Actor *arg2) { } } -extern f32 D_802B9670; -extern Gfx D_06013F20[]; - void func_8029969C(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; s16 temp_v0 = arg2->flags; @@ -1586,10 +1495,6 @@ void func_8029969C(Camera *camera, Mat4 arg1, struct Actor *arg2) { } } -extern f32 D_802B9674; -extern f32 D_802B9678; -extern Gfx D_0600FC70[]; - void func_80299864(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; s16 temp_v0 = arg2->flags; @@ -1613,10 +1518,6 @@ void func_80299864(Camera *camera, Mat4 arg1, struct Actor *arg2) { } } -extern f32 D_802B967C; -extern f32 D_802B9680; -extern Gfx D_0600D578[]; - void func_80299A2C(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; s16 temp_v0 = arg2->flags; @@ -1640,10 +1541,6 @@ void func_80299A2C(Camera *camera, Mat4 arg1, struct Actor *arg2) { } } -extern f32 D_802B9684; -extern f32 D_802B9688; -extern Gfx D_060090C8[]; - void func_80299BF4(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; s16 temp_v0 = arg2->flags; @@ -1667,9 +1564,6 @@ void func_80299BF4(Camera *camera, Mat4 arg1, struct Actor *arg2) { } } -extern f32 D_802B968C; -extern f32 D_802B9690; -extern Gfx D_060075A0[]; void func_80299DBC(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; s16 temp_v0 = arg2->flags; @@ -1692,10 +1586,6 @@ void func_80299DBC(Camera *camera, Mat4 arg1, struct Actor *arg2) { } } -extern f32 D_802B9694; -extern f32 D_802B9698; -extern Gfx D_06008528[]; - void func_80299EDC(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; s16 temp_v0 = arg2->flags; @@ -1718,10 +1608,6 @@ void func_80299EDC(Camera *camera, Mat4 arg1, struct Actor *arg2) { } } -extern f32 D_802B969C; -extern f32 D_802B96A0; -extern Gfx D_06008628[]; - void func_80299FFC(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; s16 temp_v0 = arg2->flags; @@ -1744,10 +1630,6 @@ void func_80299FFC(Camera *camera, Mat4 arg1, struct Actor *arg2) { } } -extern f32 D_802B96A4; -extern f32 D_802B96A8; -extern Gfx D_06008728[]; - void func_8029A11C(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; s16 temp_v0 = arg2->flags; @@ -1770,8 +1652,6 @@ void func_8029A11C(Camera *camera, Mat4 arg1, struct Actor *arg2) { } } -extern Gfx D_06013BB8[]; - void func_8029A23C(Camera *camera, Mat4 arg1, struct Actor *actor) { uintptr_t addr; @@ -1790,11 +1670,6 @@ void func_8029A23C(Camera *camera, Mat4 arg1, struct Actor *actor) { gSPDisplayList(gDisplayListHead++, D_06013BB8); } -extern Gfx D_0D005338[]; -extern Gfx D_0D005368[]; -extern f32 D_802B96AC; // static = 490000.0f; -extern f32 D_802B96B0; // static = 40000.0f; - void func_8029A3AC(Camera *camera, Mat4 arg1, struct ShellActor *shell) { s16 pad; u16 temp_t8; @@ -1871,12 +1746,6 @@ void func_8029A828(Camera *arg0, Mat4 arg1, struct ShellActor *arg2) { func_8029A3AC(arg0, arg1, arg2); } -extern s8 D_0D004B48[]; -extern s8 D_0D004BD8[]; -extern f32 D_802B96B4; -extern s16 D_8015F6EE; -extern s16 D_8015F6EC; - void func_8029A8F4(Camera *arg0, Mat4 arg1, struct BananaActor *arg2) { s32 pad[3]; Vec3s sp7C; @@ -2027,17 +1896,6 @@ void func_8029AC18(Camera *camera, Mat4 arg1, struct Actor *arg2) { GLOBAL_ASM("asm/non_matchings/code_actors/func_8029AC18.s") #endif -void mtxf_translate(Mat4, Vec3f); // extern -void func_802B59DC(Mat4, s32); // extern -void func_802B71CC(Mat4, Mat4, Mat4); // extern -void vec3f_set(Vec3f, f32, f32, f32); // extern -extern s8 D_0600E058[]; -extern s8 D_0600E730[]; -extern s8 D_0600FC28[]; -extern s8 D_800DC628[]; -extern s8 D_800DC630[]; -extern f32 D_802B96DC; - void func_8029AE1C(Camera *arg0, struct PaddleWheelBoat *boat, Mat4 arg2, u16 arg3) { s32 pad[3]; Vec3f sp120; @@ -2073,18 +1931,6 @@ void func_8029AE1C(Camera *arg0, struct PaddleWheelBoat *boat, Mat4 arg2, u16 ar } } -extern s8 D_06023858[]; -extern s8 D_060238A0[]; -extern s8 D_060238E8[]; -extern f32 D_802B96E0; -extern f32 D_802B96E4; -extern f32 D_802B96E8; -extern f32 D_802B96EC; - -extern s8 toads_turnpike_dl_0[]; -extern s8 toads_turnpike_dl_1[]; -extern s8 toads_turnpike_dl_2[]; - void func_8029B06C(Camera *arg0, struct Actor *arg1) { s32 pad[6]; Mat4 spD8; @@ -2126,16 +1972,6 @@ void func_8029B06C(Camera *arg0, struct Actor *arg1) { } } -extern f32 D_802B96F0; -extern f32 D_802B96F4; -extern f32 D_802B96F8; -extern f32 D_802B96FC; - - -extern s8 toads_turnpike_dl_3[]; -extern s8 toads_turnpike_dl_4[]; -extern s8 toads_turnpike_dl_5[]; - void func_8029B2E4(Camera *arg0, struct Actor *arg1) { s32 pad[6]; Mat4 spC8; @@ -2168,16 +2004,6 @@ void func_8029B2E4(Camera *arg0, struct Actor *arg1) { } } -extern f32 D_802B9700; -extern f32 D_802B9704; -extern f32 D_802B9708; -extern f32 D_802B970C; - -//s32 func_802B4FF8(Mat4, s32); -extern s8 toads_turnpike_dl_10[]; -extern s8 toads_turnpike_dl_11[]; -extern s8 toads_turnpike_dl_9[]; - void func_8029B4E0(Camera *arg0, struct Actor *arg1) { s32 pad[6]; Mat4 spC8; @@ -2211,15 +2037,6 @@ void func_8029B4E0(Camera *arg0, struct Actor *arg1) { } } -extern f32 D_802B9710; -extern f32 D_802B9714; -extern f32 D_802B9718; -extern f32 D_802B971C; - -extern Gfx toads_turnpike_dl_6[]; -extern Gfx toads_turnpike_dl_7[]; -extern Gfx toads_turnpike_dl_8[]; - void func_8029B6EC(Camera *camera, struct Actor* arg1) { s32 pad[6]; Mat4 spC8; @@ -2252,20 +2069,6 @@ void func_8029B6EC(Camera *camera, struct Actor* arg1) { } } -extern Gfx D_0601B978[]; -extern Gfx D_0601C0F0[]; -extern Gfx D_0601D160[]; -extern Gfx D_0601D670[]; -extern Gfx D_0601E480[]; -extern Gfx D_0601E910[]; -extern Gfx D_06022D28[]; -extern Gfx D_06022D70[]; -extern Gfx D_06022DB8[]; -extern f32 D_802B9720;// = 9e6.0f; -extern f32 D_802B9724;// = 122500.0f; -extern f32 D_802B9728;// = 640000.0f; -extern f32 D_802B972C;// = 1440000.0f; - void func_8029B8E8(Camera *camera, struct TrainCar *actor) { s32 pad[3]; Vec3f sp160; @@ -2382,15 +2185,6 @@ void func_8029B8E8(Camera *camera, struct TrainCar *actor) { gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } -extern Gfx D_0601F228[]; -extern Gfx D_0601F708[]; -extern Gfx D_0601FAF8[]; -extern Gfx D_06022D28[]; -extern f32 D_802B9730; -extern f32 D_802B9734; -extern f32 D_802B9738; -extern f32 D_802B973C; - void func_8029BFB0(Camera *camera, struct TrainCar *actor) { Mat4 sp120; Vec3f sp160; @@ -2461,19 +2255,6 @@ void func_8029BFB0(Camera *camera, struct TrainCar *actor) { gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } -extern Gfx D_06020A08[]; -extern Gfx D_06020A20[]; -extern Gfx D_06021220[]; -extern Gfx D_06021550[]; -extern Gfx D_06021A80[]; -extern Gfx D_06021C90[]; -extern Gfx D_06022D28[]; -extern Gfx D_06022DB8[]; -extern f32 D_802B9740; -extern f32 D_802B9744; -extern f32 D_802B9748; -extern f32 D_802B974C; - void func_8029C3CC(Camera *camera, struct TrainCar *actor) { Mat4 sp120; Vec3f sp160; @@ -2589,12 +2370,6 @@ void func_8029C3CC(Camera *camera, struct TrainCar *actor) { gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } -extern Gfx D_06006F88[]; -extern Gfx D_06006FE0[]; - -extern f32 D_802B9750; // static = 4000000.0f; -extern f32 D_802B9754; // static = 250000.0f; - void func_8029CA90(Camera *camera, struct FallingRock *rock) { Vec3s sp98; Vec3f sp8C; @@ -2703,8 +2478,6 @@ void func_8029CF0C(struct ActorSpawnData *spawnData, struct FallingRock *rock) { vec3s_set(rock->rot, 0, 0, 0); } -void func_802AAAAC(UnkActorInner*); - void place_falling_rocks(struct ActorSpawnData *spawnData) { s32 addr = SEGMENT_NUMBER2(spawnData); s32 offset = SEGMENT_OFFSET(spawnData); @@ -2973,10 +2746,6 @@ void place_segment_06(u32 arg0) { GLOBAL_ASM("asm/non_matchings/code_actors/place_segment_06.s") #endif -extern u16 random_u16(); /* extern */ -extern f32 func_802AE1C0(f32, f32, f32); -extern s16 gPlaceItemBoxes; - void place_all_item_boxes(struct ActorSpawnData *spawnData) { s16 temp_s1; f32 temp_f0; @@ -3640,9 +3409,6 @@ block_50: GLOBAL_ASM("asm/non_matchings/code_actors/func_8029E890.s") #endif -void func_80296D10(struct Actor *, f32 *, s16 *, f32 *, s32); /* extern */ -s16 func_8029E890(f32 *, s16 *, f32 *, s16); /* extern */ - s16 func_8029EC88(Vec3f pos, Vec3s rot, Vec3f velocity, s16 actorType) { s32 index; @@ -4116,8 +3882,6 @@ block_36: GLOBAL_ASM("asm/non_matchings/code_actors/func_8029F69C.s") #endif -extern f32 D_802B98AC; - s32 func_8029FB80(Player *arg0, struct Actor *arg1) { f32 temp_f0; f32 temp_f12_2; @@ -4157,8 +3921,6 @@ s32 func_8029FB80(Player *arg0, struct Actor *arg1) { return 1; } -extern f32 D_802B98B0; - s32 func_8029FCA4(struct Actor *arg0, struct Actor *arg1) { f32 temp_f0; f32 temp_f12_2; @@ -4341,8 +4103,6 @@ GLOBAL_ASM("asm/non_matchings/code_actors/func_8029FDC8.s") #endif void func_802A00E8(struct Actor *arg0, struct Actor *arg1) { - - switch(arg0->type) { case ACTOR_GREEN_SHELL: if ((arg0->state == 0) || (arg0->state == 4)) { @@ -4403,16 +4163,12 @@ void func_802A00E8(struct Actor *arg0, struct Actor *arg1) { return; } break; - } arg0->flags |= 0x100; func_800C98B8(arg0->pos, arg0->velocity, 0x19018010); } -s32 func_8029FCA4(struct Actor*, struct Actor*); // extern -void func_8029FDC8(struct Actor*); - void func_802A0350(struct Actor *arg0, struct Actor *arg1) { if (func_8029FCA4(arg0, arg1) == 1) { if ((arg0->type == ACTOR_BLUE_SPINY_SHELL) && (arg1->type == ACTOR_BLUE_SPINY_SHELL)) { @@ -4706,8 +4462,6 @@ void func_802A0450(Player *player, struct Actor *actor) { GLOBAL_ASM("asm/non_matchings/code_actors/func_802A0450.s") #endif -extern Player gPlayers[]; - void func_802A0D54(void) { struct Actor *temp_a1; s32 i, j; @@ -4732,9 +4486,6 @@ void func_802A0D54(void) { } } -extern u16 gNumPermanentActors; -void func_802A0350(struct Actor*, struct Actor*); - void func_802A0E44(void) { struct Actor *phi_s0; struct Actor *temp_a1; @@ -4792,9 +4543,6 @@ void func_802A0E44(void) { } } -f32 func_802ABEAC(UnkActorInner*, Vec3f); -extern f32 D_802B99CC; - void func_802A1064(struct FakeItemBox *fake_item_box) { if (fake_item_box - (struct FakeItemBox*)gActorList <= (u32)ACTOR_LIST_SIZE) { if (((fake_item_box->flags & 0x8000) != 0) && (fake_item_box->type == ACTOR_FAKE_ITEM_BOX)) { @@ -4805,11 +4553,6 @@ void func_802A1064(struct FakeItemBox *fake_item_box) { } } -extern f32 D_802B99D0; -extern f32 D_802B99D4; - -void func_802B4E30(struct Actor*); - void update_obj_fake_item_box(struct FakeItemBox *fake_item_box) { u32 temp_v1 = fake_item_box->playerId; Player *temp_v0_4 = &gPlayers[temp_v1]; @@ -4933,9 +4676,6 @@ void update_obj_item_box_hot_air_balloon(struct ItemBox *itemBox) { } } -extern f32 D_802B99D8; -extern f32 D_802B99DC; - void update_obj_item_box(struct ItemBox *itemBox) { switch (itemBox->state) { case 0: @@ -5573,9 +5313,6 @@ block_42: GLOBAL_ASM("asm/non_matchings/code_actors/func_802A1EA0.s") #endif -extern s8 D_0600CA60[]; -extern f32 D_802B9A28; - void func_802A269C(Camera *arg0, struct Actor *arg1) { Mat4 sp38; f32 unk = func_802B80D0(arg0->pos, arg1->pos, arg0->rotX[1], 0, D_80150130[arg0 - camera1], D_802B9A28); @@ -5592,11 +5329,6 @@ void func_802A269C(Camera *arg0, struct Actor *arg1) { } } -extern s8 D_06016D70[]; -extern s8 D_06017FA8[]; -extern f32 D_802B9A2C; -extern s32 D_800DC50C; - void func_802A27A0(Camera *arg0, Mat4 arg1, struct YoshiValleyEgg *egg, u16 arg3) { Mat4 sp60; Vec3s sp5C; @@ -5642,9 +5374,6 @@ void func_802A27A0(Camera *arg0, Mat4 arg1, struct YoshiValleyEgg *egg, u16 arg3 } } -extern s8 D_06009330[]; - - void func_802A29BC(Camera *arg0, Mat4 arg1, struct Actor *arg2) { Mat4 sp40; f32 unk; @@ -5664,13 +5393,6 @@ void func_802A29BC(Camera *arg0, Mat4 arg1, struct Actor *arg2) { s32 D_802B8850[] = {0, 0, 0}; s16 D_802B885C[] = {0, 0, 0}; -//s16 filla; - -extern s8 D_06010AE8[]; -extern s8 D_06010C10[]; -extern s8 D_06010D38[]; -extern s8 D_802B8864[]; - void func_802A2AD0(Camera *arg0, struct Actor *arg1) { Vec3s sp80 = {0, 0, 0}; @@ -5697,13 +5419,6 @@ void func_802A2AD0(Camera *arg0, struct Actor *arg1) { gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } -extern s8 D_060185F8[]; -extern s8 D_060186B8[]; -extern s8 D_06018948[]; -extern s8 D_06018A08[]; -extern s8 D_06018C98[]; -extern s8 D_06018D58[]; - void func_802A2C78(Camera *arg0, Mat4 arg1, struct Actor *arg2) { Vec3s spA8 = {0, 0, 0}; Mat4 sp68; @@ -5753,10 +5468,6 @@ void func_802A2C78(Camera *arg0, Mat4 arg1, struct Actor *arg2) { } } -void func_802A171C(Camera*, struct Actor*); // extern -void func_802A1EA0(Camera*, struct Actor*); // extern -extern s32 D_8015F8DC; - void func_802A2F34(struct UnkStruct_800DC5EC *arg0) { Camera *temp_s1 = arg0->camera; struct Actor *phi_s0; @@ -5784,37 +5495,6 @@ void func_802A2F34(struct UnkStruct_800DC5EC *arg0) { } } -void func_802986B4(Camera*, Mat4, struct Actor*); -void func_80298D7C(Camera*, Mat4, struct Actor*); -void func_802A27A0(Camera*, Mat4, struct YoshiValleyEgg*, u16); -//void func_8029AE1C(Camera*, Mat4, struct Actor*, u16); - -extern Mat4 D_801502C0; -extern s32 D_8015F8E0; - -void func_802994D4(Camera *, Mat4, struct Actor*); /* extern */ -void func_8029969C(Camera *, Mat4, struct Actor*); /* extern */ -void func_80299864(Camera *, Mat4, struct Actor*); /* extern */ -void func_80299A2C(Camera *, Mat4, struct Actor*); /* extern */ -void func_80299BF4(Camera *, Mat4, struct Actor*); /* extern */ -void func_80299DBC(Camera *, Mat4, struct Actor*); /* extern */ -void func_80299EDC(Camera *, Mat4, struct Actor*); /* extern */ -void func_80299FFC(Camera *, Mat4, struct Actor*); /* extern */ -void func_8029A11C(Camera *, Mat4, struct Actor*); /* extern */ -void func_8029A8F4(Camera *, Mat4, struct BananaActor*); /* extern */ -void func_8029AC18(Camera *, Mat4, struct Actor*); /* extern */ -//void func_8029AE1C(Camera *, struct Actor*, Mat4, u16); /* extern */ -void func_8029B06C(Camera *, struct Actor*); /* extern */ -void func_8029B2E4(Camera *, struct Actor*); /* extern */ -void func_8029B6EC(Camera *, struct Actor*); /* extern */ -void func_8029B4E0(Camera *, struct Actor*); /* extern */ -void func_80297A50(Camera *, Mat4, struct Actor*); -void func_802A269C(Camera *, struct Actor*); /* extern */ -void func_802A29BC(Camera *, Mat4, struct Actor*); /* extern */ -void func_802A2AD0(Camera *, struct Actor*); /* extern */ -void func_802A2C78(Camera *, Mat4, struct Actor*); /* extern */ - -extern void func_80297340(Camera*); void func_802A3008(struct UnkStruct_800DC5EC *arg0) { Camera *temp_s1 = arg0->camera; u16 sp92 = arg0->pathCounter; diff --git a/src/code_80296A50.h b/src/code_80296A50.h new file mode 100644 index 000000000..76fec38b0 --- /dev/null +++ b/src/code_80296A50.h @@ -0,0 +1,315 @@ +#ifndef CODE_80296A50_H +#define CODE_80296A50_H + +#include "types.h" +#include "actor_types.h" + +void func_80296D10(struct Actor *, f32 *, s16 *, f32 *, s32); +void func_80297230(Camera*, struct Actor*); +void func_802972B8(Camera*, struct Actor*); +void func_80297340(Camera*); +void func_80297524(intptr_t, s32, s32); +void func_802976D8(Vec3s); +void func_802976EC(UnkActorInner*, Vec3s); +void func_80297760(struct Actor*, Vec3f); +void func_802977B0(Player*); +void func_802977E4(Player*); +void func_80297818(); +void func_80297944(); +void func_8029794C(Vec3f, Vec3s, f32); +void func_802979F8(struct Actor*, f32); +void func_80297A50(Camera*, Mat4, struct Actor*); +void update_obj_yoshi_valley_egg(struct YoshiValleyEgg*); +void update_obj_trees_cacti_shrubs(struct Actor*); +void update_obj_kiwano_fruit(struct KiwanoFruit*); +void update_obj_paddle_wheel(struct PaddleWheelBoat*); +void update_obj_train_engine(struct TrainCar*); +void update_obj_train_car1(struct TrainCar*); +void update_obj_train_car2(struct TrainCar*); +void update_obj_piranha_plant(struct PiranhaPlant*); +void func_80298328(Camera*, Mat4, struct PiranhaPlant*); +void func_802986B4(Camera*, Mat4, struct Actor*); +void func_80298D7C(Camera*, Mat4, struct Actor*); +void func_80299144(Camera*, Mat4, struct Actor*); +void func_8029930C(Camera*, Mat4, struct Actor*); +void func_802994D4(Camera*, Mat4, struct Actor*); +void func_8029969C(Camera*, Mat4, struct Actor*); +void func_80299864(Camera*, Mat4, struct Actor*); +void func_80299A2C(Camera*, Mat4, struct Actor*); +void func_80299BF4(Camera*, Mat4, struct Actor*); +void func_80299DBC(Camera*, Mat4, struct Actor*); +void func_80299EDC(Camera*, Mat4, struct Actor*); +void func_80299FFC(Camera*, Mat4, struct Actor*); +void func_8029A11C(Camera*, Mat4, struct Actor*); +void func_8029A23C(Camera*, Mat4, struct Actor*); +void func_8029A3AC(Camera*, Mat4, struct ShellActor*); +void func_8029A690(Camera*, Mat4, struct ShellActor*); +void func_8029A75C(Camera*, Mat4, struct ShellActor*); +void func_8029A828(Camera*, Mat4, struct ShellActor*); +void func_8029A8F4(Camera*, Mat4, struct BananaActor*); +void update_obj_wario_stadium_sign(struct Actor*); +void update_obj_railroad_crossing(struct RailroadCrossing*); +void update_obj_mario_raceway_sign(struct Actor*); +void func_8029AC18(Camera*, Mat4, struct Actor*); +void func_8029AE1C(Camera*, struct PaddleWheelBoat*, Mat4, u16); +void func_8029B06C(Camera*, struct Actor*); +void func_8029B2E4(Camera*, struct Actor*); +void func_8029B4E0(Camera*, struct Actor*); +void func_8029B6EC(Camera*, struct Actor*); +void func_8029B8E8(Camera*, struct TrainCar*); +void func_8029BFB0(Camera*, struct TrainCar*); +void func_8029C3CC(Camera*, struct TrainCar*); +void func_8029CA90(Camera*, struct FallingRock*); +void place_piranha_plants(struct ActorSpawnData*); +void place_palm_trees(struct ActorSpawnData*); +void func_8029CF0C(struct ActorSpawnData*, struct FallingRock*); +void place_falling_rocks(struct ActorSpawnData*); +void update_obj_falling_rocks(struct FallingRock*); +void place_all_item_boxes(struct ActorSpawnData*); +void init_kiwano_fruit(); +void destroy_all_actors(); +void func_8029E7DC(struct Actor*); +void destroy_actor(struct Actor*); +s16 func_8029E890(f32 *, s16 *, f32 *, s16); +s16 func_8029EC88(Vec3f, Vec3s, Vec3f, s16); +s32 func_8029EEB8(Player*, Vec3f, f32, f32, f32); +s32 func_8029FB80(Player*, struct Actor*); +s32 func_8029FCA4(struct Actor*, struct Actor*); +void func_8029FDC8(struct Actor*); +void func_802A00E8(struct Actor*, struct Actor*); +void func_802A0350(struct Actor*, struct Actor*); +void func_802A0450(Player*, struct Actor*); +void func_802A0D54(); +void func_802A0E44(); +void func_802A1064(struct FakeItemBox*); +void update_obj_fake_item_box(struct FakeItemBox*); +void func_802A14BC(f32, f32, f32); +void update_obj_item_box_hot_air_balloon(struct ItemBox*); +void update_obj_item_box(struct ItemBox*); +void func_802A171C(Camera*, struct Actor*); +void func_802A1EA0(Camera*, struct Actor*); +void func_802A269C(Camera*, struct Actor*); +void func_802A27A0(Camera*, Mat4, struct YoshiValleyEgg*, u16); +void func_802A29BC(Camera*, Mat4, struct Actor*); +void func_802A2AD0(Camera*, struct Actor*); +void func_802A2C78(Camera*, Mat4, struct Actor*); +void func_802A2F34(struct UnkStruct_800DC5EC*); +void func_802A3008(struct UnkStruct_800DC5EC*); +void update_simple_objects(); + +// audio/external.c +extern void func_800C98B8(Vec3f, Vec3f, u32); +extern void func_800C9060(Player*, s32); +extern void func_800C90F4(Player*, s32); +extern void func_800C99E0(Vec3f, s32); +extern void func_800C9D80(Vec3f*, Vec3f*, u32); + +extern struct Actor gActorList[]; +extern Player gPlayers[]; +extern u16 gNumActors; +extern u16 gNumPermanentActors; + +extern Player *gPlayerOne; +extern struct Controller gControllers[]; + +extern s32 gActiveScreenMode; + +extern Camera *camera1; +extern struct Actor gActorList[]; +extern Gfx *gDisplayListHead; +extern s32 gModeSelection; +extern s16 gCurrentCourseId; +extern f32 D_80150130[]; +extern u16 D_801637B8[]; +extern Lights1 D_800DC610[]; + +extern f32 gCourseDirection; + +extern uintptr_t gSegmentTable[]; +extern s16 gPlaceItemBoxes; + +extern f32 D_802B95F8; +extern f32 D_802B9624; +extern f32 D_802B9628; +extern f32 D_802B964C; +extern f32 D_802B9658; +extern f32 D_802B965C; +extern f32 D_802B9660; +extern f32 D_802B9664; +extern f32 D_802B9668; +extern f32 D_802B966C; +extern f32 D_802B9670; +extern f32 D_802B9674; +extern f32 D_802B9678; +extern f32 D_802B967C; +extern f32 D_802B9680; +extern f32 D_802B9684; +extern f32 D_802B9688; +extern f32 D_802B968C; +extern f32 D_802B9690; +extern f32 D_802B9694; +extern f32 D_802B9698; +extern f32 D_802B969C; +extern f32 D_802B96A0; +extern f32 D_802B96A4; +extern f32 D_802B96A8; +extern f32 D_802B96AC; +extern f32 D_802B96B0; +extern f32 D_802B96B4; +extern f32 D_802B96B4; +extern f32 D_802B96DC; +extern f32 D_802B96E0; +extern f32 D_802B96E4; +extern f32 D_802B96E8; +extern f32 D_802B96EC; +extern f32 D_802B96F0; +extern f32 D_802B96F4; +extern f32 D_802B96F8; +extern f32 D_802B96FC; +extern f32 D_802B9700; +extern f32 D_802B9704; +extern f32 D_802B9708; +extern f32 D_802B970C; +extern f32 D_802B9710; +extern f32 D_802B9714; +extern f32 D_802B9718; +extern f32 D_802B971C; +extern f32 D_802B9720;// = 9e6.0f; +extern f32 D_802B9724;// = 122500.0f; +extern f32 D_802B9728;// = 640000.0f; +extern f32 D_802B972C;// = 1440000.0f; +extern f32 D_802B9730; +extern f32 D_802B9734; +extern f32 D_802B9738; +extern f32 D_802B973C; +extern f32 D_802B9740; +extern f32 D_802B9744; +extern f32 D_802B9748; +extern f32 D_802B974C; +extern f32 D_802B9750; // static = 4000000.0f; +extern f32 D_802B9754; // static = 250000.0f; +extern f32 D_802B98AC; +extern f32 D_802B98B0; +extern f32 D_802B99CC; +extern f32 D_802B99D0; +extern f32 D_802B99D4; +extern f32 D_802B99D8; +extern f32 D_802B99DC; +extern f32 D_802B9A28; +extern f32 D_802B9A2C; + +extern f64 D_802B9610; + +extern Gfx D_06006A68[]; +extern Gfx D_06006F88[]; +extern Gfx D_06006FE0[]; +extern Gfx D_060075A0[]; +extern Gfx D_06008528[]; +extern Gfx D_06008628[]; +extern Gfx D_06008728[]; +extern Gfx D_060090C8[]; +extern Gfx D_0600D4A0[]; +extern Gfx D_0600D578[]; +extern Gfx D_0600FC70[]; +extern Gfx D_06013BB8[]; +extern Gfx D_06013F20[]; +extern Gfx D_06015B48[]; +extern Gfx D_0601B978[]; +extern Gfx D_0601C0F0[]; +extern Gfx D_0601D160[]; +extern Gfx D_0601D670[]; +extern Gfx D_0601E480[]; +extern Gfx D_0601E910[]; +extern Gfx D_0601F228[]; +extern Gfx D_0601F708[]; +extern Gfx D_0601FAF8[]; +extern Gfx D_06020A08[]; +extern Gfx D_06020A20[]; +extern Gfx D_06021220[]; +extern Gfx D_06021550[]; +extern Gfx D_06021A80[]; +extern Gfx D_06021C90[]; +extern Gfx D_06022D28[]; +extern Gfx D_06022D28[]; +extern Gfx D_06022D28[]; +extern Gfx D_06022D70[]; +extern Gfx D_06022DB8[]; +extern Gfx D_06022DB8[]; + +extern Gfx D_0D004C68[]; +extern Gfx D_0D005338[]; +extern Gfx D_0D005368[]; +extern Gfx D_0D007B20[]; + +extern Gfx toads_turnpike_dl_0[]; +extern Gfx toads_turnpike_dl_1[]; +extern Gfx toads_turnpike_dl_2[]; +extern Gfx toads_turnpike_dl_3[]; +extern Gfx toads_turnpike_dl_4[]; +extern Gfx toads_turnpike_dl_5[]; +extern Gfx toads_turnpike_dl_6[]; +extern Gfx toads_turnpike_dl_7[]; +extern Gfx toads_turnpike_dl_8[]; +extern Gfx toads_turnpike_dl_9[]; +extern Gfx toads_turnpike_dl_10[]; +extern Gfx toads_turnpike_dl_11[]; + +extern Mat4 D_801502C0; + +extern s16 D_8015F6EC; +extern s16 D_8015F6EE; + +extern s32 D_800DC50C; +extern s32 D_800DC50C; +extern s32 D_8015F8DC; +extern s32 D_8015F8E0; +extern s32 D_801625EC; +extern s32 D_801625F0; +extern s32 D_801625F4; +extern s32 D_802BA058; + +extern s8 D_06006990[]; +extern s8 D_06009330[]; +extern s8 D_0600CA60[]; +extern s8 D_0600D850[]; +extern s8 D_0600E058[]; +extern s8 D_0600E730[]; +extern s8 D_0600FC28[]; +extern s8 D_06010AE8[]; +extern s8 D_06010C10[]; +extern s8 D_06010D38[]; +extern s8 D_06013C00[]; +extern s8 D_06013CA0[]; +extern s8 D_06013D20[]; +extern s8 D_06013DA0[]; +extern s8 D_06013E20[]; +extern s8 D_06013F78[]; +extern s8 D_06016D70[]; +extern s8 D_06017FA8[]; +extern s8 D_060185F8[]; +extern s8 D_060186B8[]; +extern s8 D_06018948[]; +extern s8 D_06018A08[]; +extern s8 D_06018C98[]; +extern s8 D_06018D58[]; +extern s8 D_06023858[]; +extern s8 D_060238A0[]; +extern s8 D_060238E8[]; + +extern s8 D_0D001B90[]; +extern s8 D_0D001BD8[]; +extern s8 D_0D001C20[]; +extern s8 D_0D001C88[]; +extern s8 D_0D004B48[]; +extern s8 D_0D004BD8[]; +extern s8 D_0D004E38[]; +extern s8 D_0D004E68[]; +extern s8 D_800DC628[]; +extern s8 D_800DC630[]; +extern s8 D_802B8864[]; + +extern u16 D_800DC5BC; + +extern Vec3f D_8015F8D0; + +#endif diff --git a/src/code_802B0210.c b/src/code_802B0210.c index ffd55c7aa..0428e62ba 100644 --- a/src/code_802B0210.c +++ b/src/code_802B0210.c @@ -2,8 +2,8 @@ #include #include #include - -void *vec3f_copy(Vec3f, Vec3f); // extern +#include "math_util.h" +#include "code_802B0210.h" void func_802B0210(UnkActorInner *arg0, UnkActorInner *arg1) { arg1->unk30 = arg0->unk30; @@ -21,8 +21,6 @@ void func_802B0210(UnkActorInner *arg0, UnkActorInner *arg1) { vec3f_copy(arg1->unk60, arg0->unk60); } -extern struct Actor gActorList[]; - void func_802B02B4(struct ShellActor *shell, s32 shellType) { struct TripleShellParent *parent = &gActorList[shell->parentIndex]; @@ -130,12 +128,6 @@ void func_802B04E8(s32 arg0, s16 arg1) { GLOBAL_ASM("asm/non_matchings/code_802B0210/func_802B04E8.s") #endif -extern void func_800C9060(s32, s32); /* extern */ -extern void func_802B0464(s16); /* extern */ -extern void func_802B04E8(struct BananaActor *, s16); /* extern */ - -extern Player gPlayers[]; - void func_802B0570(struct BananaActor *banana) { struct BananaBunchParent *temp_v0_2; diff --git a/src/code_802B0210.h b/src/code_802B0210.h new file mode 100644 index 000000000..316fa8c08 --- /dev/null +++ b/src/code_802B0210.h @@ -0,0 +1,28 @@ +#ifndef CODE_802B0210_H +#define CODE_802B0210_H + +#include "types.h" +#include "actor_types.h" + +void func_802B0210(UnkActorInner*, UnkActorInner*); +void func_802B02B4(struct ShellActor*, s32); +void func_802B0464(s16); +void func_802B04E8(struct BananaActor*, s16); +void func_802B0570(struct BananaActor*); +s32 func_802B09C0(s16); +void update_obj_banana_bunch(struct BananaBunchParent*); +s32 func_802B0E14(s16); +void update_obj_triple_shell(struct TripleShellParent*, s16); +void update_obj_green_shell(struct ShellActor*); +void update_obj_red_blue_shell(struct ShellActor*); +void update_obj_banana(struct BananaActor*); +void func_802B30EC(); +void func_802B4E30(struct Actor*); + +// audio/external.c +extern void func_800C9060(Player*, s32); + +extern struct Actor gActorList[]; +extern Player gPlayers[]; + +#endif diff --git a/src/main.c b/src/main.c index 96a33caba..e0b067e9e 100644 --- a/src/main.c +++ b/src/main.c @@ -16,7 +16,6 @@ void func_8008C214(void); void func_80091B78(void); void func_802A4D18(void); -void move_segment_table_to_dmem(void); void func_802A3E3C(void); void func_802A4160(void); void func_802A41D4(void); @@ -24,7 +23,6 @@ void func_802A3CB0(void); void audio_init(); void profiler_log_gfx_time(enum ProfilerGfxEvent eventID); void profiler_log_vblank_time(void); -void create_thread(OSThread *thread, OSId id, void (*entry)(void *), void *arg, void *sp, OSPri pri); void create_debug_thread(void); void start_debug_thread(void); @@ -33,17 +31,6 @@ extern void func_80057A50(s32 arg0, s32 arg1, char arg2[8], s16 arg3); struct SPTask *create_next_audio_frame_task(void); - -extern void dma_copy(u8 *dest, u8 *arg1, u32 size); -extern s32 func_802A7D70(u8 *arg0, u8 *arg1); -extern void func_802A7CF0(u32 arg0, u32 arg1); - -extern s32 D_800DC524; -extern s32 gActiveScreenMode; - - -extern f32 D_800DC594; - struct VblankHandler *gVblankHandler1 = NULL; struct VblankHandler *gVblankHandler2 = NULL; @@ -165,8 +152,6 @@ u32 gGfxSPTaskStack[256]; OSMesg D_8015F3E0[32]; OSMesgQueue D_8015F460; -extern s16 sController1Unplugged; - s32 D_800DC50C = 0xffff; u16 D_800DC510 = 0; u16 D_800DC514 = 0; @@ -196,8 +181,8 @@ s32 D_800DC568 = 0; s32 D_800DC56C[8] = {0}; s16 sNumVBlanks = 0; UNUSED s16 D_800DC590 = 0; -float D_800DC594 = 0.0f; -float gCourseTimer = 0.0f; +f32 D_800DC594 = 0.0f; +f32 gCourseTimer = 0.0f; extern u64 rspbootTextStart[], rspbootTextEnd[]; @@ -225,9 +210,6 @@ extern u32 *D_801978D0; // Segment? Keeps track of segmented addresses? //extern u16 gFramebuffer1; //extern u16 gFramebuffer2; -extern void thread5_game_logic(); -extern void thread4_audio(); - extern s16 gCurrentlyLoadedCourseId; extern s16 gCurrentCourseId; @@ -251,17 +233,6 @@ extern s32 gPlayerWinningIndex; extern s32 gEnableResourceMeters; -// Declarations (in this file) -void thread1_idle(void *arg0); -void thread3_video(void *arg0); - -// Message IDs -#define MESG_SP_COMPLETE 100 -#define MESG_DP_COMPLETE 101 -#define MESG_VI_VBLANK 102 -#define MESG_START_GFX_SPTASK 103 -#define MESG_NMI_REQUEST 104 - void create_thread(OSThread *thread, OSId id, void (*entry)(void *), void *arg, void *sp, OSPri pri) { thread->next = NULL; thread->queue = NULL; @@ -1126,8 +1097,6 @@ void func_80002684(void) { } } -extern s32 D_800DC600; -extern s32 D_8015F8B8, D_8015F8BC, D_8015F8C0, D_8015F8C4, D_8015F8C8, D_8015F8CC; //extern u8 _networkSegmentRomStart; void thread5_game_logic(s32 arg0) { osCreateMesgQueue(&D_8014EF88, &D_8014F00C, 1); diff --git a/src/main.h b/src/main.h index cd15cbb32..1889f350a 100644 --- a/src/main.h +++ b/src/main.h @@ -3,6 +3,13 @@ #include "types.h" +// Message IDs +#define MESG_SP_COMPLETE 100 +#define MESG_DP_COMPLETE 101 +#define MESG_VI_VBLANK 102 +#define MESG_START_GFX_SPTASK 103 +#define MESG_NMI_REQUEST 104 + #define MTX_POOL_SIZE 0x0683 #define GFX_POOL_SIZE 0x1D4C struct GfxPool { @@ -11,10 +18,56 @@ struct GfxPool { /* 0x28B20 */ struct SPTask spTask; }; // size = 0x28B70 +void create_thread(OSThread*, OSId, void (*entry)(void *), void*, void*, OSPri); +void main_func(); +void thread1_idle(void*); +void setup_mesg_queues(); +void start_sptask(s32); +void func_800006E8(); +void init_controllers(); +void func_80000934(s32); +void read_controllers(); +void func_80000BEC(); +void func_80000C0C(OSMesg); +void send_display_list(struct SPTask*); +void func_80000CA8(); +void func_80000CE8(); +void *clear_framebuffer(s32); +void rendering_init(); +void config_gfx_pool(); +void display_and_vsync(); +void func_8000105C(); +void func_800010CC(); +void dma_copy(u8*, u8*, u32); +void init_game(); +void func_80001ECC(); +void interrupt_gfx_sptask(); +void func_80001FAC(); +void func_800020D8(s32, struct VblankHandler*, OSMesgQueue*, OSMesg*); +void start_gfx_sptask(); +void func_80002168(); +void func_80002284(); +void *func_800022DC(); +void thread3_video(void*); +void func_800025D4(); +void func_80002600(); +void func_8000262C(); +void func_80002658(); +void func_80002684(); +void thread5_game_logic(s32); +void thread4_audio(s32); + extern struct GfxPool *gGfxPool; extern OSIoMesg gDmaIoMesg; extern OSMesg gMainReceivedMesg; extern OSMesgQueue gDmaMesgQueue; +extern s32 D_800DC524; +extern s32 gActiveScreenMode; +extern f32 D_800DC594; +extern s32 D_800DC600; +extern s32 D_8015F8B8, D_8015F8BC, D_8015F8C0, D_8015F8C4, D_8015F8C8, D_8015F8CC; + +extern s16 sController1Unplugged; #endif diff --git a/src/math_util.h b/src/math_util.h index 702d32e6e..bb56c77ba 100644 --- a/src/math_util.h +++ b/src/math_util.h @@ -14,17 +14,39 @@ #define sqr(x) ((x) * (x)) -s32 func_802B4FF8(Mat4, s32); +s32 func_802B4FF8(Mat4, s32); +f32 func_802B51E8(Vec3f, Vec3f); +u32 func_802B5224(Vec3f, Vec3f); +u32 func_802B5258(Vec3f, Vec3s); +void vec3f_set(Vec3f, f32, f32, f32); +void vec3s_set(Vec3s, s16, s16, s16); +void *vec3f_copy(Vec3f, Vec3f); +void vec3s_copy(Vec3s, Vec3s); +void *sm64_vec3f_set(Vec3f, f32, f32, f32); void mtxf_identity(Mat4); void func_802B5398(Mat4, Mat4, s32); void func_802B5450(Mat4, Mat4, Mat4); void func_802B54EC(Mat4, Mat4, Mat4); void mtxf_translate(Mat4, Vec3f); +void func_802B59DC(Mat4, s32); +void func_802B5F74(Mat4, Vec3f, Vec3s); +f32 func_802B80D0(Vec3f, Vec3f, u16, f32, f32, f32); void func_802B5F00(Mat4, f32); void func_802B71CC(Mat4, Mat4, Mat4); void func_802B75F8(Mtx*, Mat4); - -u16 atan2s(f32, f32); +u16 atan2_lookup(f32, f32); +u16 atan2s(f32, f32); +f32 func_802B79B8(f32, f32); +u16 func_802B7B50(f32, f32); +void func_802B7C18(f32); +s16 func_802B7C40(f32); +void func_802B7C6C(f32); +s16 func_802B7CA8(f32); +void func_802B7CE8(f32); +s16 func_802B7D28(f32); +u16 random_u16(); +s32 random_int(u16); +s16 func_802B7F34(f32, f32, f32, f32); f32 sins(u16); f32 coss(u16); diff --git a/src/memory.c b/src/memory.c index aaafd507a..e393c42b2 100644 --- a/src/memory.c +++ b/src/memory.c @@ -15,50 +15,15 @@ //#include "segment_symbols.h" //#include "segments.h" -#define ALIGN4(val) (((val) + 0x3) & ~0x3) -#define ALIGN16(val) (((val) + 0xF) & ~0xF) -#define ALIGN32(val) (((val) + 0xF) & ~0xF) -struct MainPoolState { - u32 freeSpace; - struct MainPoolBlock *listHeadL; - struct MainPoolBlock *listHeadR; - struct MainPoolState *prev; -}; - -struct MainPoolBlock { - struct MainPoolBlock *prev; - struct MainPoolBlock *next; -}; - -extern uintptr_t gSegmentTable[16]; - -extern s32 D_801502A0; s32 D_802BA270; s32 D_802BA274; u32 sPoolFreeSpace; struct MainPoolBlock *sPoolListHeadL; struct MainPoolBlock *sPoolListHeadR; -extern u32 gPrevLoadedAddress; -extern s32 gPrevMainThreadTask; - -extern Gfx *gDisplayListHead; -extern u32 D_8015F724; -extern u32 gHeapEndPtr; - -extern struct D_80150158 gD_80150158[]; - struct MainPoolState *gMainPoolState = NULL; -struct UnkStruct_802B8CD4 { - s16 unk0; - s16 unk2; - s32 unk4; - s32 unk8; - s32 fill; -}; - struct UnkStruct_802B8CD4 D_802B8CD4[] = { 0 }; @@ -102,7 +67,6 @@ void func_802A7CF0(s32 start, s32 end) { gPrevLoadedAddress = start; } - s32 func_802A7D1C(s32 arg0) { s32 addr; @@ -119,9 +83,6 @@ UNUSED void func_802A7D54(s32 arg0, s32 arg1) { gD_80150158[arg0].unk8 = arg1; } -void dma_copy(s32, s32, s32); // extern -s32 func_802A7D1C(s32 arg0); // extern - s32 func_802A7D70(s32 arg0, s32 arg1) { s32 temp_v0; s32 temp_a2 = arg1 - arg0; @@ -334,18 +295,17 @@ UNUSED u32 func_802A82AC(s32 arg0) { return phi_v1; } -s32 func_802A82E4(s32 arg0, s32 arg1) { - s32 sp24; - s32 sp1C; +s32 func_802A82E4(u8 *start, u8 *end) { + s32 dest; + u32 size; - sp1C = ALIGN16(arg1 - arg0); - sp24 = gPrevLoadedAddress; - dma_copy(sp24, arg0, sp1C); - gPrevLoadedAddress += sp1C; - return sp24; + size = ALIGN16(end - start); + dest = gPrevLoadedAddress; + dma_copy(dest, start, size); + gPrevLoadedAddress += size; + return dest; } -extern u8 _other_texturesSegmentRomStart[]; // unused mio0 decode func. UNUSED s32 func_802A8348(s32 arg0, s32 arg1, s32 arg2) { s32 offset; @@ -2319,9 +2279,6 @@ f32 func_802ABE30(f32 arg0, f32 arg1, f32 arg2, u16 arg3) { return ((tile->height * arg0) + (tile->rotation * arg2) + tile->height2) / -tile->gravity; } -f32 func_802ABE30(f32, f32, f32, u16); // extern - - f32 func_802ABEAC(UnkActorInner *arg0, Vec3f arg1) { if (arg0->unk34 == 1) { return func_802ABE30(arg1[0], arg1[1], arg1[2], arg0->unk3A); diff --git a/src/memory.h b/src/memory.h index 0738fec11..431d37e89 100644 --- a/src/memory.h +++ b/src/memory.h @@ -1,22 +1,27 @@ #ifndef MEMORY_H #define MEMORY_H +#include "types.h" +struct MainPoolBlock { + struct MainPoolBlock *prev; + struct MainPoolBlock *next; +}; -#define MEMORY_POOL_LEFT 0 -#define MEMORY_POOL_RIGHT 1 -extern struct MemoryPool *gEffectsMemoryPool; +struct MainPoolState { + u32 freeSpace; + struct MainPoolBlock *listHeadL; + struct MainPoolBlock *listHeadR; + struct MainPoolState *prev; +}; -s32 func_802A7B70(s32 segment); -uintptr_t set_segment_base_addr(s32 segment, void *addr); -void *get_segment_base_addr(s32 segment); -s32 lookup_item(u32 segment); -s8 func_802ABD10(u16); -s16 func_802ABD40(u16); -s16 func_802ABD7C(u16); -s16 func_802ABDB8(u16); -s16 func_802ABDF4(u16); -f32 func_802ABE30(f32, f32, f32, u16); +struct UnkStruct_802B8CD4 { + s16 unk0; + s16 unk2; + s32 unk4; + s32 unk8; + s32 fill; +}; struct AllocOnlyPool { s32 totalSpace; @@ -25,5 +30,77 @@ struct AllocOnlyPool { u8 *freePtr; }; +#define MEMORY_POOL_LEFT 0 +#define MEMORY_POOL_RIGHT 1 + +#define ALIGN4(val) (((val) + 0x3) & ~0x3) +#define ALIGN16(val) (((val) + 0xF) & ~0xF) +#define ALIGN32(val) (((val) + 0xF) & ~0xF) + +s32 func_802A7B70(s32); +uintptr_t set_segment_base_addr(s32, void*); +void *get_segment_base_addr(s32); +s32 lookup_item(u32); +void move_segment_table_to_dmem(); +void func_802A7CF0(s32, s32); +s32 func_802A7D1C(s32); +void func_802A7D54(s32, s32); +s32 func_802A7D70(s32, s32); +void main_pool_init(u32, u32); +void *main_pool_alloc(u32, u32); +u32 main_pool_free(void*); +void *main_pool_realloc(void*, u32); +s32 main_pool_available(); +u32 main_pool_push_state(); +u32 main_pool_pop_state(); +void *func_802A80B0(u8*, u8*, u8*); +void *load_segment(s32, u8*, u8*, u32); +void *func_802A8190(s32, s32); +void func_802A81EC(); +struct AllocOnlyPool *alloc_only_pool_init(u32, u32); +u32 func_802A82AC(s32); +s32 func_802A82E4(u8*, u8*); +s32 func_802A8348(s32, s32, s32); +s32 func_802A841C(s32, s32, s32); +s32 func_802A84F4(s32, u32, u32); +u32 MIO0_0F(s32, u32, u32); +void func_802A8844(); +void func_802A884C(Gfx*, u8, s8); +void func_802A8940(Gfx*, u8*, u8); +void func_802A89C0(Gfx*, u8, u8); +void func_802A8A04(Gfx*, u8, u8); +void func_802A8A70(Gfx*, u8, u8); +void func_802A8ADC(Gfx*, u8, u8); +void func_802A8B48(Gfx*, u8, u8); +void func_802A8BB4(Gfx*, u8, u8); +void func_802A8C20(Gfx*, u8, u8); +void func_802A8C8C(Gfx*, u8, u8); +void func_802A8CF8(Gfx*, u8, u8); +void func_802A8D64(Gfx*, u8, u8); +void func_802A8DD0(Gfx*, u8, u8); +void func_802A8E3C(Gfx*, u8, u8); +void func_802A8EA8(Gfx*, u8, u8); +void func_802A8F14(Gfx*, u8, u8); +void func_802A94D8(Gfx*, u8, u8); +void func_802A9544(Gfx*, u8, u8); +void func_802AAAAC(UnkActorInner*); +s8 func_802ABD10(u16); +s16 func_802ABD40(u16); +s16 func_802ABD7C(u16); +s16 func_802ABDB8(u16); +s16 func_802ABDF4(u16); +f32 func_802ABE30(f32, f32, f32, u16); +f32 func_802ABEAC(UnkActorInner*, Vec3f); +void func_802ADDC8(UnkActorInner*, f32, f32, f32, f32); +f32 func_802AE1C0(f32, f32, f32); + +// main.c +extern struct D_80150158 gD_80150158[]; +extern s32 D_801502A0; +extern u32 D_8015F724; +extern u32 gPrevLoadedAddress; +extern u32 gHeapEndPtr; + +extern u8 _other_texturesSegmentRomStart[]; #endif // MEMORY_H