diff --git a/include/level_object_entries.h b/include/level_object_entries.h index b7e830e7..1f9d4f54 100644 --- a/include/level_object_entries.h +++ b/include/level_object_entries.h @@ -26,6 +26,9 @@ typedef struct LevelObjectEntry_Fish { typedef struct LevelObjectEntry_Animator { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s8 unk8; + /* 0x09 */ s8 unk9; + /* 0x0A */ s8 unkA; } LevelObjectEntry_Animator; typedef struct LevelObjectEntry_Weapon { @@ -38,30 +41,52 @@ typedef struct LevelObjectEntry_Smoke { typedef struct LevelObjectEntry_Exit { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 pad8[8]; + /* 0x10 */ u8 unk10; + /* 0x11 */ u8 unk11; + /* 0x12 */ u8 pad12[6]; + /* 0x18 */ s8 unk18; } LevelObjectEntry_Exit; typedef struct LevelObjectEntry_Audio { /* 0x00 */ LevelObjectEntryCommon common; } LevelObjectEntry_Audio; -typedef struct LevelObjectEntry_Audioline { +typedef struct LevelObjectEntry_AudioLine { /* 0x00 */ LevelObjectEntryCommon common; -} LevelObjectEntry_Audioline; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u16 unkA; + /* 0x0C */ u8 unkC; + /* 0x0D */ u8 unkD; + /* 0x0E */ u16 unkE; + /* 0x10 */ u8 unk10; + /* 0x11 */ u8 unk11; + /* 0x12 */ u8 unk12; + /* 0x13 */ u8 unk13; +} LevelObjectEntry_AudioLine; typedef struct LevelObjectEntry_CameraControl { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s8 unk8; } LevelObjectEntry_CameraControl; -typedef struct LevelObjectEntry_Setuppoint { +typedef struct LevelObjectEntry_SetupPoint { /* 0x00 */ LevelObjectEntryCommon common; -} LevelObjectEntry_Setuppoint; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u8 unkA; +} LevelObjectEntry_SetupPoint; -typedef struct LevelObjectEntry_DinoWhale { +typedef struct LevelObjectEntry_Dino_Whale { /* 0x00 */ LevelObjectEntryCommon common; -} LevelObjectEntry_DinoWhale; +} LevelObjectEntry_Dino_Whale; typedef struct LevelObjectEntry_Checkpoint { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u8 unkA; } LevelObjectEntry_Checkpoint; typedef struct LevelObjectEntry_Door { @@ -70,10 +95,13 @@ typedef struct LevelObjectEntry_Door { typedef struct LevelObjectEntry_FogChanger { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; } LevelObjectEntry_FogChanger; typedef struct LevelObjectEntry_AiNode { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; } LevelObjectEntry_AiNode; #define BALLOON_TYPE_BOOST 0 @@ -107,10 +135,15 @@ typedef struct LevelObjectEntry_Unknown25 { typedef struct LevelObjectEntry_SkyControl { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; } LevelObjectEntry_SkyControl; typedef struct LevelObjectEntry_AudioReverb { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u8 unkA; } LevelObjectEntry_AudioReverb; typedef struct LevelObjectEntry_Torch_Mist { @@ -121,10 +154,16 @@ typedef struct LevelObjectEntry_Torch_Mist { typedef struct LevelObjectEntry_TexScroll { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s16 unk8; + /* 0x0A */ s8 unkA; + /* 0x0B */ s8 unkB; } LevelObjectEntry_TexScroll; typedef struct LevelObjectEntry_ModeChange { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u8 unkA; } LevelObjectEntry_ModeChange; typedef struct LevelObjectEntry_StopWatchMan { @@ -139,20 +178,24 @@ typedef struct LevelObjectEntry_RgbaLight { /* 0x00 */ LevelObjectEntryCommon common; } LevelObjectEntry_RgbaLight; -typedef struct LevelObjectEntry_Bouy_PirateShip { +typedef struct LevelObjectEntry_Buoy_PirateShip { /* 0x00 */ LevelObjectEntryCommon common; -} LevelObjectEntry_Bouy_PirateShip; +} LevelObjectEntry_Buoy_PirateShip; typedef struct LevelObjectEntry_Weather { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s16 unk8; } LevelObjectEntry_Weather; typedef struct LevelObjectEntry_Bridge_WhaleRamp { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; } LevelObjectEntry_Bridge_WhaleRamp; typedef struct LevelObjectEntry_RampSwitch { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; } LevelObjectEntry_RampSwitch; typedef struct LevelObjectEntry_SeaMonster { @@ -161,6 +204,9 @@ typedef struct LevelObjectEntry_SeaMonster { typedef struct LevelObjectEntry_Bonus { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u8 unkA; } LevelObjectEntry_Bonus; typedef struct LevelObjectEntry_LensFlare { @@ -169,6 +215,7 @@ typedef struct LevelObjectEntry_LensFlare { typedef struct LevelObjectEntry_LensFlareSwitch { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s16 unk8; } LevelObjectEntry_LensFlareSwitch; typedef struct LevelObjectEntry_CollectEgg { @@ -181,6 +228,10 @@ typedef struct LevelObjectEntry_EggCreator { typedef struct LevelObjectEntry_CharacterFlag { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s16 unk8; + /* 0x0A */ s16 unkA; + /* 0x0C */ s16 unkC; + /* 0x0E */ s16 unkE; } LevelObjectEntry_CharacterFlag; typedef struct LevelObjectEntry_Animation { @@ -189,6 +240,8 @@ typedef struct LevelObjectEntry_Animation { typedef struct LevelObjectEntry_InfoPoint { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8[3]; + /* 0x0B */ u8 unkB; } LevelObjectEntry_InfoPoint; typedef struct LevelObjectEntry_Trigger { @@ -197,6 +250,9 @@ typedef struct LevelObjectEntry_Trigger { typedef struct LevelObjectEntry_AirZippers_WaterZippers { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u8 unkA; } LevelObjectEntry_AirZippers_WaterZippers; typedef struct LevelObjectEntry_Unknown58 { @@ -217,6 +273,7 @@ typedef struct LevelObjectEntry_Parkwarden { typedef struct LevelObjectEntry_WorldKey { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; } LevelObjectEntry_WorldKey; typedef struct LevelObjectEntry_BananaCreator { @@ -225,14 +282,20 @@ typedef struct LevelObjectEntry_BananaCreator { typedef struct LevelObjectEntry_TreasureSucker { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s8 unk8; } LevelObjectEntry_TreasureSucker; typedef struct LevelObjectEntry_Log { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u8 unkA; } LevelObjectEntry_Log; typedef struct LevelObjectEntry_LavaSpurt { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; } LevelObjectEntry_LavaSpurt; typedef struct LevelObjectEntry_PosArrow { @@ -262,6 +325,9 @@ typedef struct LevelObjectEntry_TrophyCab { typedef struct LevelObjectEntry_Bubbler { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u16 unkA; } LevelObjectEntry_Bubbler; typedef struct LevelObjectEntry_FlyCoin { @@ -290,9 +356,9 @@ typedef struct LevelObjectEntry_GroundZipper { /* 0x00 */ LevelObjectEntryCommon common; } LevelObjectEntry_GroundZipper; -typedef struct LevelObjectEntry_OverRidePos { +typedef struct LevelObjectEntry_OverridePos { /* 0x00 */ LevelObjectEntryCommon common; -} LevelObjectEntry_OverRidePos; +} LevelObjectEntry_OverridePos; typedef struct LevelObjectEntry_WizpigShip { /* 0x00 */ LevelObjectEntryCommon common; @@ -304,6 +370,7 @@ typedef struct LevelObjectEntry_SilverCoin { typedef struct LevelObjectEntry_Boost { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s8 unk8[1]; } LevelObjectEntry_Boost; typedef struct LevelObjectEntry_WardenSmoke { @@ -328,7 +395,10 @@ typedef struct LevelObjectEntry_Teleport { typedef struct LevelObjectEntry_Lighthouse_RocketSignpost { /* 0x00 */ LevelObjectEntryCommon common; -} LevelObjectEntry_Lighthouse; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u8 unkA; +} LevelObjectEntry_Lighthouse_RocketSignpost; typedef struct LevelObjectEntry_Windsail { /* 0x00 */ LevelObjectEntryCommon common; @@ -344,6 +414,8 @@ typedef struct LevelObjectEntry_Fireball_Octoweapon { typedef struct LevelObjectEntry_Frog { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s16 unk8; + /* 0x0A */ u8 unkA; } LevelObjectEntry_Frog; typedef struct LevelObjectEntry_SilverCoinAdv2 { @@ -352,6 +424,13 @@ typedef struct LevelObjectEntry_SilverCoinAdv2 { typedef struct LevelObjectEntry_TTDoor { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u8 unkA; + /* 0x0B */ u8 unkB; + /* 0x0C */ u8 unkC; + /* 0x0D */ u8 padD; + /* 0x0E */ s8 unkE; } LevelObjectEntry_TTDoor; typedef struct LevelObjectEntry_MidiFadePoint { @@ -364,10 +443,15 @@ typedef struct LevelObjectEntry_OctoBubble { typedef struct LevelObjectEntry_LevelName { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s8 unk8; + /* 0x09 */ s8 unk9; } LevelObjectEntry_LevelName; typedef struct LevelObjectEntry_Midichset { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u16 unk8; + /* 0x0A */ u8 unkA; + /* 0x0B */ u8 unkB; } LevelObjectEntry_Midichset; #endif diff --git a/src/object_functions.c b/src/object_functions.c index b02fe9db..fc48b85d 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -469,7 +469,7 @@ void obj_loop_torch_mist(Object *obj, s32 speed) { obj->unk18 += obj->unk78 * speed; } -void obj_init_effectbox(Object *obj, u8 *entry) { +void obj_init_effectbox(Object *obj, LevelObjectEntry_EffectBox *entry) { } #ifdef NON_EQUIVALENT @@ -500,8 +500,8 @@ void obj_loop_effectbox(Object *obj, s32 speed) { obj3C = obj->unk3C_a.unk3C; objList = get_object_struct_array(&numberOfObjects); - temp0 = func_800707F8((((0, obj3C->unkB)) << 8) * (-1)); - temp1 = func_800707C4((obj3C->unkB << 8) * (-1)); + temp0 = func_800707F8((obj3C->unkB << 8) * -1); + temp1 = func_800707C4((obj3C->unkB << 8) * -1); temp2 = obj3C->unk8 * 3; temp3 = obj3C->unk9 * 3; temp4 = obj3C->unkA * 3; @@ -632,11 +632,17 @@ void obj_loop_trophycab(Object *obj, s32 speed) { sqrtf((xDiff * xDiff) + (zDiff * zDiff)); // Distance on X & Z axes. Not used? new_var2 = settings->bosses; - new_var2 |= 0x800; // Why OR with 0x800? + + /** + * Future Fun Land doesn't have a boss rematch, so this OR is needed so that + * trophy race becomes avaliable after all the balloons have been collected. + */ + new_var2 |= 0x800; // Check if all the balloons have been collected. isTrophyRaceAvaliable = (settings->balloonsPtr[settings->worldId] < 8) ^ 1; if (isTrophyRaceAvaliable) { + // Check if the boss rematch has been beaten. isTrophyRaceAvaliable = ((1 << (settings->worldId + 6)) & new_var2) != 0; } @@ -708,7 +714,7 @@ void obj_loop_trophycab(Object *obj, s32 speed) { GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_trophycab.s") #endif -void obj_init_collectegg(Object *obj, u8 *entry) { +void obj_init_collectegg(Object *obj, LevelObjectEntry_CollectEgg *entry) { obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0x14; @@ -717,7 +723,7 @@ void obj_init_collectegg(Object *obj, u8 *entry) { GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_collectegg.s") -void obj_init_eggcreator(Object *obj, u8 *entry) { +void obj_init_eggcreator(Object *obj, LevelObjectEntry_EggCreator *entry) { } void obj_loop_eggcreator(Object *obj, s32 speed) { @@ -740,7 +746,7 @@ void obj_loop_eggcreator(Object *obj, s32 speed) { } } -void obj_init_lighthouse_rocketsignpost(Object *obj, LevelObjectEntry8003572C *entry) { +void obj_init_lighthouse_rocketsignpost(Object *obj, LevelObjectEntry_Lighthouse_RocketSignpost *entry) { f32 phi_f0 = entry->unk9 & 0xFF; if (phi_f0 < 10) { phi_f0 = 10; @@ -758,15 +764,16 @@ void obj_init_lighthouse_rocketsignpost(Object *obj, LevelObjectEntry8003572C *e } void obj_loop_rocketsignpost(Object *obj, s32 speed) { - Object *someObj; - Object_4C *temp_v1; + Object *playerObj; + Object_4C *obj4C; - someObj = get_object_struct(0); - if (someObj != NULL) { - temp_v1 = obj->unk4C; - if (temp_v1->unk13 < 0xC8) { - if (someObj == temp_v1->unk0) { - if ((get_buttons_pressed_from_player(0) & Z_TRIG) || someObj == obj->unk5C->unk100) { + playerObj = get_object_struct(0); + if (playerObj != NULL) { + obj4C = obj->unk4C; + if (obj4C->unk13 < 0xC8) { + if (playerObj == obj4C->unk0) { + // Detect if the player honks or slams into the signpost. + if ((get_buttons_pressed_from_player(0) & Z_TRIG) || playerObj == obj->unk5C->unk100) { func_8006F29C(); } } @@ -775,7 +782,7 @@ void obj_loop_rocketsignpost(Object *obj, s32 speed) { obj->unk4C->unk13 = 0xFF; } -void obj_init_airzippers_waterzippers(Object *obj, LevelObjectEntry8003588C *entry) { +void obj_init_airzippers_waterzippers(Object *obj, LevelObjectEntry_AirZippers_WaterZippers *entry) { ObjectHeader *objHeader; f32 phi_f0; @@ -803,7 +810,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_airzippers_waterzippers.s" GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_groundzipper.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_groundzipper.s") -void obj_init_unknown58(Object *obj, u8 *entry) { +void obj_init_unknown58(Object *obj, LevelObjectEntry_Unknown58 *entry) { obj->unk78 = 0; obj->unk7C.word = obj->header; } @@ -835,7 +842,7 @@ void obj_loop_unknown58(Object *obj, s32 speed) { } } -void obj_init_characterflag(Object *obj, unk80035EF8 *entry) { +void obj_init_characterflag(Object *obj, LevelObjectEntry_CharacterFlag *entry) { f32 phi_f0; obj->unk78 = (s32)entry->unkE; obj->unk7C.word = -1; @@ -882,7 +889,7 @@ void obj_loop_characterflag(Object *obj, s32 speed) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80036040.s") -void obj_init_stopwatchman(Object *obj, u8 *entry) { +void obj_init_stopwatchman(Object *obj, LevelObjectEntry_StopWatchMan *entry) { Object_64 *temp; obj->unk4C->unk14 = 1; obj->unk4C->unk11 = 0; @@ -909,9 +916,9 @@ void func_80036BCC(u16 arg0, s32 arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_fish.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_fish.s") -void obj_init_lavaspurt(Object *obj, u8 *entry) { - obj->unk78 = entry[9] * 2; - obj->unk7C.word = entry[8]; +void obj_init_lavaspurt(Object *obj, LevelObjectEntry_LavaSpurt *entry) { + obj->unk78 = entry->unk9 * 2; + obj->unk7C.word = entry->unk8; } void obj_loop_lavaspurt(Object *obj, s32 speed) { @@ -928,13 +935,13 @@ void obj_loop_lavaspurt(Object *obj, s32 speed) { } } -void obj_init_posarrow(Object *obj, u8 *entry) { +void obj_init_posarrow(Object *obj, LevelObjectEntry_PosArrow *entry) { obj->unk6 |= 0x4000; } GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_posarrow.s") -void obj_init_animator(Object *obj, LevelObjectEntry800376E0 *entry, s32 arg2) { +void obj_init_animator(Object *obj, LevelObjectEntry_Animator *entry, s32 arg2) { Object_64_800376E0 *obj64; LevelModel *levelModel; s16 segmentBatchCount; @@ -980,14 +987,14 @@ void obj_loop_dooropener(Object *obj, s32 speed) { func_800235D0(phi_a0); } -void obj_init_overridepos(Object *obj, u8 *entry) { +void obj_init_overridepos(Object *obj, LevelObjectEntry_OverridePos *entry) { } /* Unused? */ void func_80037D60(s32 arg0, s32 arg1) { } -void obj_init_wizpigship(Object *obj, u8 *entry) { +void obj_init_wizpigship(Object *obj, LevelObjectEntry_WizpigShip *entry) { } GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_wizpigship.s") @@ -1010,7 +1017,7 @@ void obj_loop_vehicleanim(Object *obj, s32 speed) { } } -void obj_init_hittester(Object *obj, u8 *entry) { +void obj_init_hittester(Object *obj, LevelObjectEntry_HitTester *entry) { obj->unk4C->unk14 = 0x81; obj->unk4C->unk11 = 2; obj->unk4C->unk10 = 0x14; @@ -1021,21 +1028,21 @@ void obj_loop_hittester(Object *obj, s32 speed) { func_8001F460(obj, speed, obj); } -void obj_init_dynamic_lighting_object(Object *obj, u8 *entry) { +void obj_init_dynamic_lighting_object(Object *obj, LevelObjectEntry_DynamicLightingObject *entry) { obj->unk4C->unk14 = 1; obj->unk4C->unk11 = 2; obj->unk4C->unk10 = 0x14; obj->unk4C->unk12 = 0; } -void obj_init_unknown96(Object *obj, u8 *entry) { +void obj_init_unknown96(Object *obj, LevelObjectEntry_Unknown96 *entry) { obj->unk4C->unk14 = 0x81; obj->unk4C->unk11 = 2; obj->unk4C->unk10 = 0x14; obj->unk4C->unk12 = 0; } -void obj_init_snowball(Object *obj, u8 *entry) { +void obj_init_snowball(Object *obj, LevelObjectEntry_Snowball *entry) { obj->unk4C->unk14 = 1; obj->unk4C->unk11 = 2; obj->unk4C->unk10 = 0x14; @@ -1111,8 +1118,8 @@ void obj_loop_animcar(Object *obj, s32 speed) { } } -void obj_init_infopoint(Object *obj, u8 *entry) { - if (entry[9] != 0) { +void obj_init_infopoint(Object *obj, LevelObjectEntry_InfoPoint *entry) { + if (entry->unk8[1] != 0) { obj->unk4C->unk14 = 0x21; } else { obj->unk4C->unk14 = 0x22; @@ -1120,9 +1127,9 @@ void obj_init_infopoint(Object *obj, u8 *entry) { obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0xF; obj->unk4C->unk12 = 0; - obj->unk78 = (entry[10] << 16) | entry[8]; // Not sure about the values here. - obj->unk7C.word = entry[9]; - obj->y_rotation = entry[11] << 10; // Not sure about the values here. + obj->unk78 = (entry->unk8[2] << 16) | entry->unk8[0]; // Not sure about the values here. + obj->unk7C.word = entry->unk8[1]; + obj->y_rotation = entry->unkB << 10; // Not sure about the values here. } void obj_loop_infopoint(Object *obj, s32 speed) { @@ -1149,7 +1156,7 @@ void obj_loop_infopoint(Object *obj, s32 speed) { } } -void obj_init_smoke(Object *obj, u8 *entry) { +void obj_init_smoke(Object *obj, LevelObjectEntry_Smoke *entry) { } void obj_loop_smoke(Object *obj, s32 speed) { @@ -1167,7 +1174,7 @@ void obj_loop_smoke(Object *obj, s32 speed) { } } -void obj_init_unknown25(Object *obj, u8 *entry) { +void obj_init_unknown25(Object *obj, LevelObjectEntry_Unknown25 *entry) { } void obj_loop_unknown25(Object *obj, s32 speed) { @@ -1178,7 +1185,7 @@ void obj_loop_unknown25(Object *obj, s32 speed) { } } -void obj_init_wardensmoke(Object *obj, u8 *entry) { +void obj_init_wardensmoke(Object *obj, LevelObjectEntry_WardenSmoke *entry) { } void obj_loop_wardensmoke(Object *obj, s32 speed) { @@ -1218,7 +1225,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_bombexplosion.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_bombexplosion.s") -void obj_init_teleport(Object *obj, u8 *entry) { +void obj_init_teleport(Object *obj, LevelObjectEntry_Teleport *entry) { obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0xF; @@ -1240,7 +1247,7 @@ void obj_loop_teleport(Object *obj, s32 speed) { } } -void obj_init_exit(Object *obj, LevelObjectEntry80038E3C *entry) { +void obj_init_exit(Object *obj, LevelObjectEntry_Exit *entry) { f32 phi_f0; Object_64_80038E3C *obj64; phi_f0 = entry->unk10 & 0xFF; @@ -1265,25 +1272,25 @@ void obj_init_exit(Object *obj, LevelObjectEntry80038E3C *entry) { GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_exit.s") -void obj_init_cameracontrol(Object *obj, s8 *entry) { - obj->unk78 = entry[8]; +void obj_init_cameracontrol(Object *obj, LevelObjectEntry_CameraControl *entry) { + obj->unk78 = entry->unk8; func_80011390(); } void obj_loop_cameracontrol(Object *obj, s32 speed) { } -void obj_init_setuppoint(Object *obj, u8 *entry) { +void obj_init_setuppoint(Object *obj, LevelObjectEntry_SetupPoint *entry) { s32 temp; - obj->unk78 = entry[8]; - obj->unk7C.word = entry[9]; - obj->y_rotation = entry[10] << 6 << 4; // Not sure about the values here. + obj->unk78 = entry->unk8; + obj->unk7C.word = entry->unk9; + obj->y_rotation = entry->unkA << 6 << 4; // Not sure about the values here. } void obj_loop_setuppoint(Object *obj, s32 speed) { } -void obj_init_dino_whale(Object *obj, u8 *entry) { +void obj_init_dino_whale(Object *obj, LevelObjectEntry_Dino_Whale *entry) { obj->unk4C->unk14 = 1; obj->unk4C->unk11 = 3; obj->unk4C->unk10 = 0x14; @@ -1310,7 +1317,7 @@ void obj_loop_dino_whale(Object *obj, s32 speed) { } } -void obj_init_parkwarden(Object *obj, u8 *entry) { +void obj_init_parkwarden(Object *obj, LevelObjectEntry_Parkwarden *entry) { Object_64 *temp; obj->unk4C->unk14 = (u16)1; obj->unk4C->unk11 = (u8)0; @@ -1350,21 +1357,21 @@ f32 func_8003ACAC(void) { return D_8011D4D0; } -void obj_init_checkpoint(Object *obj, u8 *entry, s32 arg2) { - f32 phi_f0 = (s32)(entry[8] & 0xFF); +void obj_init_checkpoint(Object *obj, LevelObjectEntry_Checkpoint *entry, s32 arg2) { + f32 phi_f0 = (s32)(entry->unk8 & 0xFF); if (phi_f0 < 5.0f) { phi_f0 = 5.0f; } phi_f0 /= 64; obj->scale = phi_f0; - obj->y_rotation = entry[10] << 6 << 4; // Not sure about the values here. + obj->y_rotation = entry->unkA << 6 << 4; // Not sure about the values here. func_80011390(); } void obj_loop_checkpoint(Object *obj, s32 speed) { } -void obj_init_modechange(Object *obj, LevelObjectEntry8003AD34 *entry) { +void obj_init_modechange(Object *obj, LevelObjectEntry_ModeChange *entry) { f32 phi_f0; Object_64_8003AD34 *obj64; phi_f0 = entry->unk8 & 0xFF; @@ -1389,8 +1396,7 @@ void obj_init_modechange(Object *obj, LevelObjectEntry8003AD34 *entry) { GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_modechange.s") -// Exactly the same as obj_init_modechange -void obj_init_bonus(Object *obj, LevelObjectEntry8003AD34 *entry) { +void obj_init_bonus(Object *obj, LevelObjectEntry_Bonus *entry) { f32 phi_f0; Object_64_8003AD34 *obj64; phi_f0 = entry->unk8 & 0xFF; @@ -1419,7 +1425,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_goldenballoon.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_door.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_door.s") -void obj_init_ttdoor(Object *obj, LevelObjectEntry8003C1E0 *entry) { +void obj_init_ttdoor(Object *obj, LevelObjectEntry_TTDoor *entry) { f32 temp_f0; Object_64_8003C1E0 *obj64; f32 phi_f0; @@ -1453,10 +1459,10 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_ttdoor.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_trigger.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_trigger.s") -void obj_init_bridge_whaleramp(Object *obj, u8 *entry) { +void obj_init_bridge_whaleramp(Object *obj, LevelObjectEntry_Bridge_WhaleRamp *entry) { Object_64 *temp = obj->unk64; - obj->unk3A = entry[8]; - obj->y_rotation = entry[9] << 6 << 4; + obj->unk3A = entry->unk8; + obj->y_rotation = entry->unk9 << 6 << 4; temp->unk0_a.unk0 = obj->y_position; obj->unk4C->unk14 = 0x21; obj->unk4C->unk11 = 2; @@ -1470,12 +1476,12 @@ void obj_init_bridge_whaleramp(Object *obj, u8 *entry) { GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_bridge_whaleramp.s") -void obj_init_rampswitch(Object *obj, u8 *entry) { +void obj_init_rampswitch(Object *obj, LevelObjectEntry_RampSwitch *entry) { obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0x14; obj->unk4C->unk12 = 0; - obj->unk78 = entry[8]; + obj->unk78 = entry->unk8; } void obj_loop_rampswitch(Object *obj, s32 speed) { @@ -1485,25 +1491,25 @@ void obj_loop_rampswitch(Object *obj, s32 speed) { obj->unk4C->unk13 = (u8)0xFF; } -void obj_init_seamonster(Object *obj, u8 *entry) { +void obj_init_seamonster(Object *obj, LevelObjectEntry_SeaMonster *entry) { } void obj_loop_seamonster(Object *obj, s32 speed) { } -void obj_init_fogchanger(Object *obj, u8 *entry) { +void obj_init_fogchanger(Object *obj, LevelObjectEntry_FogChanger *entry) { f32 temp_f0; - temp_f0 = entry[8] * 8.0f; + temp_f0 = entry->unk8 * 8.0f; temp_f0 = temp_f0 * temp_f0; obj->unk78f = temp_f0; } -void obj_init_skycontrol(Object *obj, u8 *entry) { +void obj_init_skycontrol(Object *obj, LevelObjectEntry_SkyControl *entry) { obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; - obj->unk4C->unk10 = entry[9]; - obj->unk78 = entry[8]; - obj->unk7C.word = entry[9]; + obj->unk4C->unk10 = entry->unk9; + obj->unk78 = entry->unk8; + obj->unk7C.word = entry->unk9; } void obj_loop_skycontrol(Object *obj, s32 speed) { @@ -1512,36 +1518,36 @@ void obj_loop_skycontrol(Object *obj, s32 speed) { } } -void obj_init_ainode(Object *obj, u8 *entry) { - if (entry[9] == 0xFF) { - entry[9] = func_8001C48C(obj) & 0xFF; +void obj_init_ainode(Object *obj, LevelObjectEntry_AiNode *entry) { + if (entry->unk9 == 0xFF) { + entry->unk9 = func_8001C48C(obj) & 0xFF; } - func_8001D1BC(entry[9]); + func_8001D1BC(entry->unk9); func_8001D1AC(); } void obj_loop_ainode(Object *obj, s32 speed) { } -void obj_init_treasuresucker(Object *obj, s8 *entry) { +void obj_init_treasuresucker(Object *obj, LevelObjectEntry_TreasureSucker *entry) { obj->unk18 = 0x78; - obj->unk78 = (entry[8] - 1) & 3; + obj->unk78 = (entry->unk8 - 1) & 3; } GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_treasuresucker.s") -void obj_init_flycoin(Object *obj, u8 *entry) { +void obj_init_flycoin(Object *obj, LevelObjectEntry_FlyCoin *entry) { } GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_flycoin.s") -void obj_init_coincreator(Object *obj, u8 *entry) { +void obj_init_coincreator(Object *obj, LevelObjectEntry_BananaCreator *entry) { obj->unk18 = 0x64; } GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_coincreator.s") -void obj_init_coin(Object *obj, u8 *entry) { +void obj_init_coin(Object *obj, LevelObjectEntry_Banana *entry) { obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0x1E; @@ -1554,7 +1560,7 @@ void obj_init_coin(Object *obj, u8 *entry) { GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_coin.s") -void obj_init_silvercoin_adv2(Object *obj, u8 *entry) { +void obj_init_silvercoin_adv2(Object *obj, LevelObjectEntry_SilverCoinAdv2 *entry) { obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0x1E; @@ -1573,7 +1579,7 @@ void obj_init_silvercoin_adv2(Object *obj, u8 *entry) { } } -void obj_init_silvercoin(Object *obj, u8 *entry) { +void obj_init_silvercoin(Object *obj, LevelObjectEntry_SilverCoin *entry) { obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0x1E; @@ -1594,7 +1600,7 @@ void obj_init_silvercoin(Object *obj, u8 *entry) { GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_silvercoin.s") -void obj_init_worldkey(Object *obj, unk8003DE74 *entry) { +void obj_init_worldkey(Object *obj, LevelObjectEntry_WorldKey *entry) { Settings *settings; obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; @@ -1700,13 +1706,13 @@ void obj_init_weaponballoon(Object *obj, LevelObjectEntry_WeaponBalloon *entry) GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_weaponballoon.s") -void obj_init_wballoonpop(Object *obj, u8 *entry) { +void obj_init_wballoonpop(Object *obj, LevelObjectEntry_WBalloonPop *entry) { } void obj_loop_wballoonpop(Object *obj, s32 speed) { } -void obj_init_weapon(Object *obj, u8 *entry) { +void obj_init_weapon(Object *obj, LevelObjectEntry_Weapon *entry) { obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0x18; @@ -1715,18 +1721,18 @@ void obj_init_weapon(Object *obj, u8 *entry) { obj->unk7C.word = 0; } -void obj_loop_weapon(Object *obj) { +void obj_loop_weapon(Object *obj, s32 speed) { Object_64 *obj64 = obj->unk64; switch (obj64->unk18) { case 0: case 1: - func_8003E694(); + func_8003E694(obj, speed); break; case 2: case 3: case 10: case 11: - func_8003F2E8(); + func_8003F2E8(obj, speed); break; } return; @@ -1777,7 +1783,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003FC44.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_audio.s") -void obj_init_audioline(Object *obj, LevelObjectEntry8003FEF4 *entry) { +void obj_init_audioline(Object *obj, LevelObjectEntry_AudioLine *entry) { Object_64_8003FEF4 *obj64; obj64 = obj->unk64; @@ -1798,7 +1804,7 @@ void obj_init_audioline(Object *obj, LevelObjectEntry8003FEF4 *entry) { gParticlePtrList_addObject(obj); } -void obj_init_audioreverb(Object *obj, LevelObjectEntry8004001C *entry) { +void obj_init_audioreverb(Object *obj, LevelObjectEntry_AudioReverb *entry) { s32 temp; Object_64_8004001C *obj64 = (Object_64_8004001C *)obj->unk64; obj64->unk2 = entry->unk8; @@ -1809,7 +1815,7 @@ void obj_init_audioreverb(Object *obj, LevelObjectEntry8004001C *entry) { gParticlePtrList_addObject(obj); } -void obj_init_texscroll(Object *obj, LevelObjectEntry800400A4 *entry, s32 arg2) { +void obj_init_texscroll(Object *obj, LevelObjectEntry_TexScroll *entry, s32 arg2) { Object_64_800400A4 *obj64; LevelModel *levelModel; s16 numberOfTexturesInLevel; @@ -1834,11 +1840,11 @@ void obj_init_texscroll(Object *obj, LevelObjectEntry800400A4 *entry, s32 arg2) GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_texscroll.s") -void obj_init_rgbalight(Object *obj, u8 *entry, s32 arg2) { +void obj_init_rgbalight(Object *obj, LevelObjectEntry_RgbaLight *entry, s32 arg2) { obj->unk64 = func_80031CAC(obj, entry); } -void obj_init_buoy_pirateship(Object *obj, u8 *entry, s32 arg2) { +void obj_init_buoy_pirateship(Object *obj, LevelObjectEntry_Buoy_PirateShip *entry, s32 arg2) { obj->unk64 = func_800BE654(obj->unk2E, obj->x_position, obj->z_position); obj->unk4C->unk14 = 1; obj->unk4C->unk11 = 0; @@ -1853,7 +1859,7 @@ void obj_loop_buoy_pirateship(Object *obj, s32 speed) { obj->unk18 += speed * 8; } -void obj_init_log(Object *obj, LevelObjectEntry8004049C *entry, s32 arg2) { +void obj_init_log(Object *obj, LevelObjectEntry_Log *entry, s32 arg2) { f32 phi_f0; obj->unk64 = func_800BE654(obj->unk2E, obj->x_position, obj->z_position); obj->unk4C->unk14 = 1; @@ -1871,25 +1877,25 @@ void obj_init_log(Object *obj, LevelObjectEntry8004049C *entry, s32 arg2) { GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_log.s") -void obj_init_weather(Object *obj, s16 *entry) { - f32 temp = entry[4]; +void obj_init_weather(Object *obj, LevelObjectEntry_Weather *entry) { + f32 temp = entry->unk8; temp *= temp; obj->unk78f = temp; } GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_weather.s") -void obj_init_lensflare(Object *obj, u8 *entry) { +void obj_init_lensflare(Object *obj, LevelObjectEntry_LensFlare *entry) { func_800AC8A8(obj); } -void obj_init_lensflareswitch(Object *obj, s16 *entry, s32 arg2) { +void obj_init_lensflareswitch(Object *obj, LevelObjectEntry_LensFlareSwitch *entry, s32 arg2) { func_800ACF60(obj); - obj->scale = entry[4]; + obj->scale = entry->unk8; obj->scale /= 40.0f; } -void obj_init_wavegenerator(Object *obj, u8 *entry, s32 arg2) { +void obj_init_wavegenerator(Object *obj, LevelObjectEntry_WaveGenerator *entry, s32 arg2) { func_800BF524(obj); //waves.c } @@ -1898,14 +1904,14 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_butterfly.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_midifade.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_midifadepoint.s") -void obj_init_midichset(Object *obj, unk80042014_arg1 *entry) { +void obj_init_midichset(Object *obj, LevelObjectEntry_Midichset *entry) { unk80042014_arg0_64 *temp = obj->unk64; temp->unk0 = entry->unk8; temp->unk2 = entry->unkA; temp->unk3 = entry->unkB; } -void obj_init_bubbler(Object *obj, unk8004203C_arg1 *entry) { +void obj_init_bubbler(Object *obj, LevelObjectEntry_Bubbler *entry) { func_800AF134(obj->unk6C, entry->unk9, entry->unk8, 0, 0, 0); obj->unk78 = entry->unkA; } @@ -1921,18 +1927,18 @@ void obj_loop_bubbler(Object *obj, s32 speed) { } } -void obj_init_boost(Object *obj, s8 *entry) { - obj->unk64 = (s32)get_misc_asset(0x14) + (entry[8] << 7); +void obj_init_boost(Object *obj, LevelObjectEntry_Boost *entry) { + obj->unk64 = (s32)get_misc_asset(0x14) + (entry->unk8[0] << 7); obj->unk3C_a.unk3C = NULL; } -void obj_init_unknown94(Object *obj, u8 *entry, s32 arg2) { +void obj_init_unknown94(Object *obj, LevelObjectEntry_Unknown94 *entry, s32 arg2) { } void obj_loop_unknown94(Object *obj, s32 speed) { } -void obj_init_rangetrigger(Object *obj, u8 *entry) { +void obj_init_rangetrigger(Object *obj, LevelObjectEntry_RangeTrigger *entry) { } void obj_loop_rangetrigger(Object *obj, s32 speed) { @@ -1949,7 +1955,7 @@ void obj_loop_rangetrigger(Object *obj, s32 speed) { func_800AFC3C(obj, speed); } -void obj_init_frog(Object *obj, LevelObjectEntry80042210 *entry) { +void obj_init_frog(Object *obj, LevelObjectEntry_Frog *entry) { Object_64_80042210 *obj64; obj64 = (Object_64_80042210 *)obj->unk64; @@ -1967,6 +1973,10 @@ void obj_init_frog(Object *obj, LevelObjectEntry80042210 *entry) { if (obj64->unk15) { obj->unk3A = 1; + /** + * Don't spawn the chicken frog if drumstick is already unlocked, or + * if the player hasn't completed the trophy races yet. + */ if (is_drumstick_unlocked() || (get_settings()->trophies & 0xFF) != 0xFF) { gParticlePtrList_addObject(obj); } @@ -1996,10 +2006,10 @@ void obj_loop_pigrocketeer(Object *obj, s32 speed) { } } -void obj_init_levelname(Object *obj, s8 *entry) { - obj->unk78f = entry[9] * 8.0f; +void obj_init_levelname(Object *obj, LevelObjectEntry_LevelName *entry) { + obj->unk78f = entry->unk9 * 8.0f; obj->unk78f *= obj->unk78f; - obj->unk7C.half.upper = entry[8]; + obj->unk7C.half.upper = entry->unk8; obj->unk7C.half.lower = 0; if (is_in_tracks_mode()) { gParticlePtrList_addObject(obj); diff --git a/src/object_functions.h b/src/object_functions.h index 6ae9b157..217db4b7 100644 --- a/src/object_functions.h +++ b/src/object_functions.h @@ -50,22 +50,6 @@ typedef struct Object_64_8003564C { Object *unk4; } Object_64_8003564C; -/* Size: 12 bytes */ -typedef struct LevelObjectEntry8003572C { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; -} LevelObjectEntry8003572C; - -/* Size: 12 bytes */ -typedef struct LevelObjectEntry8003588C { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; -} LevelObjectEntry8003588C; - typedef struct unk80035E20 { u8 pad0[0x40]; s32 unk40; @@ -79,13 +63,6 @@ typedef struct Object_64_80035E34 { s8 unk1D6; } Object_64_80035E34; -typedef struct unk80035EF8 { - u8 pad0[0xA]; - s16 unkA; - s16 unkC; - s16 unkE; -} unk80035EF8; - typedef struct Object_64_80035F6C { s32 unk0; s32 unk4; @@ -184,15 +161,6 @@ typedef struct Object_3C_80038DC4 { s8 unk8; } Object_3C_80038DC4; -typedef struct LevelObjectEntry80038E3C { - LevelObjectEntryCommon common; - u8 pad8[8]; - u8 unk10; - u8 unk11; - u8 pad12[6]; - s8 unk18; -} LevelObjectEntry80038E3C; - typedef struct Object_64_80038E3C { f32 unk0; f32 unk4; @@ -214,13 +182,6 @@ typedef struct unk80039190 { s32 unk7C; } unk80039190; -typedef struct LevelObjectEntry8003AD34 { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; -} LevelObjectEntry8003AD34; - typedef struct Object_64_8003AD34 { f32 unk0; f32 unk4; @@ -230,17 +191,6 @@ typedef struct Object_64_8003AD34 { s8 unk14; } Object_64_8003AD34; -typedef struct LevelObjectEntry8003C1E0 { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; - u8 unkB; - u8 unkC; - u8 padD; - s8 unkE; -} LevelObjectEntry8003C1E0; - typedef struct Object_64_8003C1E0 { f32 unk0; u8 pad4[4]; @@ -269,11 +219,6 @@ typedef struct unk8003D3EC { u16 unk18; } unk8003D3EC; -typedef struct unk8003DE74 { - u8 pad0[8]; - u8 unk8; -} unk8003DE74; - typedef struct Object_64_8003DF08 { s16 unk0; } Object_64_8003DF08; @@ -340,14 +285,6 @@ typedef struct Object_64_8004001C { u8 unk5; } Object_64_8004001C; -/* Size: 12 bytes */ -typedef struct LevelObjectEntry800400A4 { - LevelObjectEntryCommon common; - s16 unk8; - s8 unkA; - s8 unkB; -} LevelObjectEntry800400A4; - typedef struct Object_64_800400A4 { s16 unk0; s16 pad2; @@ -357,14 +294,6 @@ typedef struct Object_64_800400A4 { s16 unkA; } Object_64_800400A4; -/* Size: 12 bytes */ -typedef struct LevelObjectEntry8004049C { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; -} LevelObjectEntry8004049C; - typedef struct unk80040800 { u8 pad0[0x78]; f32 unk78; @@ -401,20 +330,6 @@ typedef struct Object_3C_80042178 { u16 unkA; } Object_3C_80042178; -typedef struct unk8004203C_arg1 { - u8 pad0[0x8]; - u8 unk8; - u8 unk9; - u16 unkA; -} unk8004203C_arg1; - -/* Size: 12 bytes */ -typedef struct LevelObjectEntry80042210 { - LevelObjectEntryCommon common; - s16 unk8; - u8 unkA; -} LevelObjectEntry80042210; - typedef struct Object_64_80042210 { f32 unk0; f32 unk4; @@ -481,107 +396,107 @@ void obj_init_lasergun(Object *obj, LevelObjectEntry_Lasergun *entry); void obj_init_laserbolt(Object *obj, LevelObjectEntry_Laserbolt *entry); void obj_init_torch_mist(Object *obj, LevelObjectEntry_Torch_Mist *entry); void obj_loop_torch_mist(Object *obj, s32 speed); -void obj_init_effectbox(Object *obj, u8 *entry); +void obj_init_effectbox(Object *obj, LevelObjectEntry_EffectBox *entry); void obj_init_trophycab(Object *obj, LevelObjectEntry_TrophyCab *entry); -void obj_init_collectegg(Object *obj, u8 *entry); -void obj_init_eggcreator(Object *obj, u8 *entry); +void obj_init_collectegg(Object *obj, LevelObjectEntry_CollectEgg *entry); +void obj_init_eggcreator(Object *obj, LevelObjectEntry_EggCreator *entry); void obj_loop_eggcreator(Object *obj, s32 speed); -void obj_init_lighthouse_rocketsignpost(Object *obj, LevelObjectEntry8003572C *entry); +void obj_init_lighthouse_rocketsignpost(Object *obj, LevelObjectEntry_Lighthouse_RocketSignpost *entry); void obj_loop_rocketsignpost(Object *obj, s32 speed); -void obj_init_airzippers_waterzippers(Object *obj, LevelObjectEntry8003588C *entry); -void obj_init_unknown58(Object *obj, u8 *entry); +void obj_init_airzippers_waterzippers(Object *obj, LevelObjectEntry_AirZippers_WaterZippers *entry); +void obj_init_unknown58(Object *obj, LevelObjectEntry_Unknown58 *entry); void obj_loop_unknown58(Object *obj, s32 speed); -void obj_init_characterflag(Object *obj, unk80035EF8 *entry); +void obj_init_characterflag(Object *obj, LevelObjectEntry_CharacterFlag *entry); void obj_loop_characterflag(Object *obj, s32 speed); -void obj_init_stopwatchman(Object *obj, u8 *entry); +void obj_init_stopwatchman(Object *obj, LevelObjectEntry_StopWatchMan *entry); void func_80036BCC(u16 arg0, s32 arg1); -void obj_init_lavaspurt(Object *obj, u8 *entry); -void obj_init_posarrow(Object *obj, u8 *entry); -void obj_init_animator(Object *obj, LevelObjectEntry800376E0 *entry, s32 arg2); +void obj_init_lavaspurt(Object *obj, LevelObjectEntry_LavaSpurt *entry); +void obj_init_posarrow(Object *obj, LevelObjectEntry_PosArrow *entry); +void obj_init_animator(Object *obj, LevelObjectEntry_Animator *entry, s32 arg2); void obj_loop_animobject(Object *obj, s32 speed); void obj_loop_dooropener(Object *obj, s32 speed); -void obj_init_overridepos(Object *obj, u8 *entry); +void obj_init_overridepos(Object *obj, LevelObjectEntry_OverridePos *entry); void func_80037D60(s32 arg0, s32 arg1); -void obj_init_wizpigship(Object *obj, u8 *entry); -void obj_init_hittester(Object *obj, u8 *entry); +void obj_init_wizpigship(Object *obj, LevelObjectEntry_WizpigShip *entry); +void obj_init_hittester(Object *obj, LevelObjectEntry_HitTester *entry); void obj_loop_hittester(Object *obj, s32 speed); -void obj_init_dynamic_lighting_object(Object *obj, u8 *entry); -void obj_init_unknown96(Object *obj, u8 *entry); -void obj_init_snowball(Object *obj, u8 *entry); +void obj_init_dynamic_lighting_object(Object *obj, LevelObjectEntry_DynamicLightingObject *entry); +void obj_init_unknown96(Object *obj, LevelObjectEntry_Unknown96 *entry); +void obj_init_snowball(Object *obj, LevelObjectEntry_Snowball *entry); void func_80038330(s32 arg0, s32 arg1); void obj_loop_animcamera(Object *obj, s32 speed); void func_800387C0(s32 arg0, s32 arg1); void obj_loop_animcar(Object *obj, s32 speed); -void obj_init_infopoint(Object *obj, u8 *entry); +void obj_init_infopoint(Object *obj, LevelObjectEntry_InfoPoint *entry); void obj_loop_infopoint(Object *obj, s32 speed); -void obj_init_smoke(Object *obj, u8 *entry); +void obj_init_smoke(Object *obj, LevelObjectEntry_Smoke *entry); void obj_loop_smoke(Object *obj, s32 speed); -void obj_init_unknown25(Object *obj, u8 *entry); +void obj_init_unknown25(Object *obj, LevelObjectEntry_Unknown25 *entry); void obj_loop_unknown25(Object *obj, s32 speed); -void obj_init_wardensmoke(Object *obj, u8 *entry); +void obj_init_wardensmoke(Object *obj, LevelObjectEntry_WardenSmoke *entry); void obj_loop_wardensmoke(Object *obj, s32 speed); -void obj_init_teleport(Object *obj, u8 *entry); +void obj_init_teleport(Object *obj, LevelObjectEntry_Teleport *entry); void obj_loop_teleport(Object *obj, s32 speed); -void obj_init_exit(Object *obj, LevelObjectEntry80038E3C *entry); -void obj_init_cameracontrol(Object *obj, s8 *entry); +void obj_init_exit(Object *obj, LevelObjectEntry_Exit *entry); +void obj_init_cameracontrol(Object *obj, LevelObjectEntry_CameraControl *entry); void obj_loop_cameracontrol(Object *obj, s32 speed); -void obj_init_setuppoint(Object *obj, u8 *entry); +void obj_init_setuppoint(Object *obj, LevelObjectEntry_SetupPoint *entry); void obj_loop_setuppoint(Object *obj, s32 speed); -void obj_init_dino_whale(Object *obj, u8 *entry); +void obj_init_dino_whale(Object *obj, LevelObjectEntry_Dino_Whale *entry); void obj_loop_dino_whale(Object *obj, s32 speed); -void obj_init_parkwarden(Object *obj, u8 *entry); +void obj_init_parkwarden(Object *obj, LevelObjectEntry_Parkwarden *entry); void func_80039320(s16 arg0); void func_8003AC3C(u16 arg0, s32 arg1); void obj_loop_gbparkwarden(Object *obj, s32 speed); f32 func_8003ACAC(void); -void obj_init_checkpoint(Object *obj, u8 *entry, s32 arg2); +void obj_init_checkpoint(Object *obj, LevelObjectEntry_Checkpoint *entry, s32 arg2); void obj_loop_checkpoint(Object *obj, s32 speed); -void obj_init_modechange(Object *obj, LevelObjectEntry8003AD34 *entry); -void obj_init_bonus(Object *obj, LevelObjectEntry8003AD34 *entry); -void obj_init_ttdoor(Object *obj, LevelObjectEntry8003C1E0 *entry); -void obj_init_bridge_whaleramp(Object *obj, u8 *entry); -void obj_init_rampswitch(Object *obj, u8 *entry); +void obj_init_modechange(Object *obj, LevelObjectEntry_ModeChange *entry); +void obj_init_bonus(Object *obj, LevelObjectEntry_Bonus *entry); +void obj_init_ttdoor(Object *obj, LevelObjectEntry_TTDoor *entry); +void obj_init_bridge_whaleramp(Object *obj, LevelObjectEntry_Bridge_WhaleRamp *entry); +void obj_init_rampswitch(Object *obj, LevelObjectEntry_RampSwitch *entry); void obj_loop_rampswitch(Object *obj, s32 speed); -void obj_init_seamonster(Object *obj, u8 *entry); +void obj_init_seamonster(Object *obj, LevelObjectEntry_SeaMonster *entry); void obj_loop_seamonster(Object *obj, s32 speed); -void obj_init_fogchanger(Object *obj, u8 *entry); -void obj_init_skycontrol(Object *obj, u8 *entry); +void obj_init_fogchanger(Object *obj, LevelObjectEntry_FogChanger *entry); +void obj_init_skycontrol(Object *obj, LevelObjectEntry_SkyControl *entry); void obj_loop_skycontrol(Object *obj, s32 speed); -void obj_init_ainode(Object *obj, u8 *entry); +void obj_init_ainode(Object *obj, LevelObjectEntry_AiNode *entry); void obj_loop_ainode(Object *obj, s32 speed); -void obj_init_treasuresucker(Object *obj, s8 *entry); -void obj_init_flycoin(Object *obj, u8 *entry); -void obj_init_coincreator(Object *obj, u8 *entry); -void obj_init_coin(Object *obj, u8 *entry); -void obj_init_silvercoin_adv2(Object *obj, u8 *entry); -void obj_init_silvercoin(Object *obj, u8 *entry); -void obj_init_worldkey(Object *obj, unk8003DE74 *entry); +void obj_init_treasuresucker(Object *obj, LevelObjectEntry_TreasureSucker *entry); +void obj_init_flycoin(Object *obj, LevelObjectEntry_FlyCoin *entry); +void obj_init_coincreator(Object *obj, LevelObjectEntry_BananaCreator *entry); +void obj_init_coin(Object *obj, LevelObjectEntry_Banana *entry); +void obj_init_silvercoin_adv2(Object *obj, LevelObjectEntry_SilverCoinAdv2 *entry); +void obj_init_silvercoin(Object *obj, LevelObjectEntry_SilverCoin *entry); +void obj_init_worldkey(Object *obj, LevelObjectEntry_WorldKey *entry); void obj_loop_worldkey(Object *worldKeyObj, s32 speed); -void obj_init_wballoonpop(Object *obj, u8 *entry); +void obj_init_wballoonpop(Object *obj, LevelObjectEntry_WBalloonPop *entry); void obj_loop_wballoonpop(Object *obj, s32 speed); -void obj_init_weapon(Object *obj, u8 *entry); -void obj_loop_weapon(Object *obj); +void obj_init_weapon(Object *obj, LevelObjectEntry_Weapon *entry); +void obj_loop_weapon(Object *obj, s32 speed); void func_8003F0D0(void); void func_8003F0DC(void); -void obj_init_audioline(Object *obj, LevelObjectEntry8003FEF4 *entry); -void obj_init_audioreverb(Object *obj, LevelObjectEntry8004001C *entry); -void obj_init_texscroll(Object *obj, LevelObjectEntry800400A4 *entry, s32 arg2); -void obj_init_rgbalight(Object *obj, u8 *entry, s32 arg2); -void obj_init_buoy_pirateship(Object *obj, u8 *entry, s32 arg2); +void obj_init_audioline(Object *obj, LevelObjectEntry_AudioLine *entry); +void obj_init_audioreverb(Object *obj, LevelObjectEntry_AudioReverb *entry); +void obj_init_texscroll(Object *obj, LevelObjectEntry_TexScroll *entry, s32 arg2); +void obj_init_rgbalight(Object *obj, LevelObjectEntry_RgbaLight *entry, s32 arg2); +void obj_init_buoy_pirateship(Object *obj, LevelObjectEntry_Buoy_PirateShip *entry, s32 arg2); void obj_loop_buoy_pirateship(Object *obj, s32 speed); -void obj_init_log(Object *obj, LevelObjectEntry8004049C *entry, s32 arg2); -void obj_init_wavegenerator(Object *obj, u8 *entry, s32 arg2); -void obj_init_midichset(Object *obj, unk80042014_arg1 *entry); -void obj_init_bubbler(Object *obj, unk8004203C_arg1 *entry); +void obj_init_log(Object *obj, LevelObjectEntry_Log *entry, s32 arg2); +void obj_init_wavegenerator(Object *obj, LevelObjectEntry_WaveGenerator *entry, s32 arg2); +void obj_init_midichset(Object *obj, LevelObjectEntry_Midichset *entry); +void obj_init_bubbler(Object *obj, LevelObjectEntry_Bubbler *entry); void obj_loop_bubbler(Object *obj, s32 speed); -void obj_init_boost(Object *obj, s8 *entry); -void obj_init_unknown94(Object *obj, u8 *entry, s32 arg2); +void obj_init_boost(Object *obj, LevelObjectEntry_Boost *entry); +void obj_init_unknown94(Object *obj, LevelObjectEntry_Unknown94 *entry, s32 arg2); void obj_loop_unknown94(Object *obj, s32 speed); -void obj_init_rangetrigger(Object *obj, u8 *entry); +void obj_init_rangetrigger(Object *obj, LevelObjectEntry_RangeTrigger *entry); void obj_loop_rangetrigger(Object *obj, s32 speed); -void obj_init_frog(Object *obj, LevelObjectEntry80042210 *entry); +void obj_init_frog(Object *obj, LevelObjectEntry_Frog *entry); void obj_loop_pigrocketeer(Object *obj, s32 speed); -void obj_init_levelname(Object *obj, s8 *entry); +void obj_init_levelname(Object *obj, LevelObjectEntry_LevelName *entry); void obj_loop_wizghosts(Object *obj, s32 speed); //Non Matching diff --git a/src/unknown_00BC20.c b/src/unknown_00BC20.c index 76c7f3a8..9810a3d8 100644 --- a/src/unknown_00BC20.c +++ b/src/unknown_00BC20.c @@ -820,8 +820,9 @@ s32 func_800113BC() { GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800113CC.s") -s32 func_80011560(void) { +s32 func_80011560(void) { //! @bug The developers probably intended this to be a void function. D_800DC848 = 1; + // No return value! } GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80011570.s") @@ -1508,264 +1509,264 @@ void func_800235D0(s32 arg0) { GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800235DC.s") -void run_object_init_func(Object *obj, void *entry) { +void run_object_init_func(Object *obj, void *entry, s32 arg2) { obj->behaviorId = obj->header->behaviorId; switch (obj->behaviorId - 1) { // Why the minus 1? case 0: - obj_init_racer(obj, entry); + obj_init_racer(obj, (LevelObjectEntry_Racer *)entry); break; case 1: obj_init_scenery(obj, (LevelObjectEntry_Scenery*)entry); break; case 2: - obj_init_fish(obj, entry); + obj_init_fish(obj, (LevelObjectEntry_Fish *)entry); break; case 3: - obj_init_animator(obj, entry); + obj_init_animator(obj, (LevelObjectEntry_Animator *)entry, arg2); break; case 5: - obj_init_smoke(obj, entry); + obj_init_smoke(obj, (LevelObjectEntry_Smoke *)entry); break; case 24: - obj_init_unknown25(obj, entry); + obj_init_unknown25(obj, (LevelObjectEntry_Unknown25 *)entry); break; case 21: - obj_init_bombexplosion(obj, entry); + obj_init_bombexplosion(obj, (LevelObjectEntry_BombExplosion *)entry); break; case 6: - obj_init_exit(obj, entry); + obj_init_exit(obj, (LevelObjectEntry_Exit *)entry); break; case 7: - obj_init_audio(obj, entry); + obj_init_audio(obj, (LevelObjectEntry_Audio *)entry); break; case 8: case 18: - obj_init_audioline(obj, entry); + obj_init_audioline(obj, (LevelObjectEntry_AudioLine *)entry); break; case 26: - obj_init_audioreverb(obj, entry); + obj_init_audioreverb(obj, (LevelObjectEntry_AudioReverb *)entry); break; case 9: - obj_init_cameracontrol(obj, entry); + obj_init_cameracontrol(obj, (LevelObjectEntry_CameraControl *)entry); break; case 10: - obj_init_setuppoint(obj, entry); + obj_init_setuppoint(obj, (LevelObjectEntry_SetupPoint *)entry); break; case 11: - obj_init_dino_whale(obj, entry); + obj_init_dino_whale(obj, (LevelObjectEntry_Dino_Whale *)entry); break; case 12: - obj_init_checkpoint(obj, entry); + obj_init_checkpoint(obj, (LevelObjectEntry_Checkpoint *)entry, arg2); break; case 29: - obj_init_modechange(obj, entry); + obj_init_modechange(obj, (LevelObjectEntry_ModeChange *)entry); break; case 40: - obj_init_bonus(obj, entry); + obj_init_bonus(obj, (LevelObjectEntry_Bonus *)entry); break; case 13: - obj_init_door(obj, entry); + obj_init_door(obj, (LevelObjectEntry_Door *)entry); break; case 110: - obj_init_ttdoor(obj, entry); + obj_init_ttdoor(obj, (LevelObjectEntry_TTDoor *)entry); break; case 14: - obj_init_fogchanger(obj, entry); + obj_init_fogchanger(obj, (LevelObjectEntry_FogChanger *)entry); break; case 15: - obj_init_ainode(obj, entry); + obj_init_ainode(obj, (LevelObjectEntry_AiNode *)entry); break; case 16: - obj_init_weaponballoon(obj, entry); + obj_init_weaponballoon(obj, (LevelObjectEntry_WeaponBalloon *)entry); break; case 22: - obj_init_wballoonpop(obj, entry); + obj_init_wballoonpop(obj, (LevelObjectEntry_WBalloonPop *)entry); break; case 4: case 17: - obj_init_weapon(obj, entry); + obj_init_weapon(obj, (LevelObjectEntry_Weapon *)entry); break; case 25: - obj_init_skycontrol(obj, entry); + obj_init_skycontrol(obj, (LevelObjectEntry_SkyControl *)entry); break; case 27: - obj_init_torch_mist(obj, entry); + obj_init_torch_mist(obj, (LevelObjectEntry_Torch_Mist *)entry); break; case 28: - obj_init_texscroll(obj, entry); + obj_init_texscroll(obj, (LevelObjectEntry_TexScroll *)entry, arg2); break; case 30: - obj_init_stopwatchman(obj, entry); + obj_init_stopwatchman(obj, (LevelObjectEntry_StopWatchMan *)entry); break; case 31: - obj_init_coin(obj, entry); + obj_init_coin(obj, (LevelObjectEntry_Banana *)entry); break; case 32: - obj_init_rgbalight(obj, entry); + obj_init_rgbalight(obj, (LevelObjectEntry_RgbaLight *)entry, arg2); break; case 35: - obj_init_buoy_pirateship(obj, entry); + obj_init_buoy_pirateship(obj, (LevelObjectEntry_Buoy_PirateShip *)entry, arg2); break; case 66: - obj_init_log(obj, entry); + obj_init_log(obj, (LevelObjectEntry_Log *)entry, arg2); break; case 36: - obj_init_weather(obj, entry); + obj_init_weather(obj, (LevelObjectEntry_Weather *)entry); break; case 37: - obj_init_bridge_whaleramp(obj, entry); + obj_init_bridge_whaleramp(obj, (LevelObjectEntry_Bridge_WhaleRamp *)entry); break; case 38: - obj_init_rampswitch(obj, entry); + obj_init_rampswitch(obj, (LevelObjectEntry_RampSwitch *)entry); break; case 39: - obj_init_seamonster(obj, entry); + obj_init_seamonster(obj, (LevelObjectEntry_SeaMonster *)entry); break; case 42: - obj_init_lensflare(obj, entry); + obj_init_lensflare(obj, (LevelObjectEntry_LensFlare *)entry); break; case 43: - obj_init_lensflareswitch(obj, entry); + obj_init_lensflareswitch(obj, (LevelObjectEntry_LensFlareSwitch *)entry); break; case 44: - obj_init_collectegg(obj, entry); + obj_init_collectegg(obj, (LevelObjectEntry_CollectEgg *)entry); break; case 45: - obj_init_eggcreator(obj, entry); + obj_init_eggcreator(obj, (LevelObjectEntry_EggCreator *)entry); break; case 46: - obj_init_characterflag(obj, entry); + obj_init_characterflag(obj, (LevelObjectEntry_CharacterFlag *)entry); break; case 48: - obj_init_animation(obj, entry); + obj_init_animation(obj, (LevelObjectEntry_Animation *)entry); break; case 51: - obj_init_infopoint(obj, entry); + obj_init_infopoint(obj, (LevelObjectEntry_InfoPoint *)entry); break; case 54: - obj_init_trigger(obj, entry); + obj_init_trigger(obj, (LevelObjectEntry_Trigger *)entry); break; case 56: case 92: - obj_init_airzippers_waterzippers(obj, entry); + obj_init_airzippers_waterzippers(obj, (LevelObjectEntry_AirZippers_WaterZippers *)entry); break; case 57: - obj_init_unknown58(obj, entry); + obj_init_unknown58(obj, (LevelObjectEntry_Unknown58 *)entry); break; case 58: - obj_init_wavegenerator(obj, entry); + obj_init_wavegenerator(obj, (LevelObjectEntry_WaveGenerator *)entry, arg2); break; case 60: - obj_init_butterfly(obj, entry); + obj_init_butterfly(obj, (LevelObjectEntry_Butterfly *)entry); break; case 61: - obj_init_parkwarden(obj, entry); + obj_init_parkwarden(obj, (LevelObjectEntry_Parkwarden *)entry); break; case 63: - obj_init_worldkey(obj, entry); + obj_init_worldkey(obj, (LevelObjectEntry_WorldKey *)entry); break; case 64: - obj_init_coincreator(obj, entry); + obj_init_coincreator(obj, (LevelObjectEntry_BananaCreator *)entry); break; case 65: - obj_init_treasuresucker(obj, entry); + obj_init_treasuresucker(obj, (LevelObjectEntry_TreasureSucker *)entry); break; case 67: - obj_init_lavaspurt(obj, entry); + obj_init_lavaspurt(obj, (LevelObjectEntry_LavaSpurt *)entry); break; case 68: - obj_init_posarrow(obj, entry); + obj_init_posarrow(obj, (LevelObjectEntry_PosArrow *)entry); break; case 69: case 102: - obj_init_hittester(obj, entry); + obj_init_hittester(obj, (LevelObjectEntry_HitTester *)entry); break; case 71: case 94: case 103: - obj_init_dynamic_lighting_object(obj, entry); + obj_init_dynamic_lighting_object(obj, (LevelObjectEntry_DynamicLightingObject *)entry); break; case 95: case 100: - obj_init_unknown96(obj, entry); + obj_init_unknown96(obj, (LevelObjectEntry_Unknown96 *)entry); break; case 96: case 101: - obj_init_snowball(obj, entry); + obj_init_snowball(obj, (LevelObjectEntry_Snowball *)entry); break; case 70: - obj_init_midifade(obj, entry); + obj_init_midifade(obj, (LevelObjectEntry_MidiFade *)entry); break; case 111: - obj_init_midifadepoint(obj, entry); + obj_init_midifadepoint(obj, (LevelObjectEntry_MidiFadePoint *)entry); break; case 117: - obj_init_midichset(obj, entry); + obj_init_midichset(obj, (LevelObjectEntry_Midichset *)entry); break; case 72: - obj_init_effectbox(obj, entry); + obj_init_effectbox(obj, (LevelObjectEntry_EffectBox *)entry); break; case 73: - obj_init_trophycab(obj, entry); + obj_init_trophycab(obj, (LevelObjectEntry_TrophyCab *)entry); break; case 74: - obj_init_bubbler(obj, entry); + obj_init_bubbler(obj, (LevelObjectEntry_Bubbler *)entry); break; case 75: - obj_init_flycoin(obj, entry); + obj_init_flycoin(obj, (LevelObjectEntry_FlyCoin *)entry); break; case 76: - obj_init_goldenballoon(obj, entry); + obj_init_goldenballoon(obj, (LevelObjectEntry_GoldenBalloon *)entry); break; case 77: - obj_init_laserbolt(obj, entry); + obj_init_laserbolt(obj, (LevelObjectEntry_Laserbolt *)entry); break; case 78: - obj_init_lasergun(obj, entry); + obj_init_lasergun(obj, (LevelObjectEntry_Lasergun *)entry); break; case 81: - obj_init_groundzipper(obj, entry); + obj_init_groundzipper(obj, (LevelObjectEntry_GroundZipper *)entry); break; case 82: - obj_init_overridepos(obj, entry); + obj_init_overridepos(obj, (LevelObjectEntry_OverridePos *)entry); break; case 83: - obj_init_wizpigship(obj, entry); + obj_init_wizpigship(obj, (LevelObjectEntry_WizpigShip *)entry); break; case 88: - obj_init_boost(obj, entry); + obj_init_boost(obj, (LevelObjectEntry_Boost *)entry); break; case 87: - obj_init_silvercoin(obj, entry); + obj_init_silvercoin(obj, (LevelObjectEntry_SilverCoin *)entry); break; case 89: - obj_init_wardensmoke(obj, entry); + obj_init_wardensmoke(obj, (LevelObjectEntry_WardenSmoke *)entry); break; case 93: - obj_init_unknown94(obj, entry); + obj_init_unknown94(obj, (LevelObjectEntry_Unknown94 *)entry, arg2); break; case 97: - obj_init_teleport(obj, entry); + obj_init_teleport(obj, (LevelObjectEntry_Teleport *)entry); break; case 98: case 99: - obj_init_lighthouse_rocketsignpost(obj, entry); + obj_init_lighthouse_rocketsignpost(obj, (LevelObjectEntry_Lighthouse_RocketSignpost *)entry); break; case 104: - obj_init_rangetrigger(obj, entry); + obj_init_rangetrigger(obj, (LevelObjectEntry_RangeTrigger *)entry); break; case 107: case 115: - obj_init_fireball_octoweapon(obj, entry); + obj_init_fireball_octoweapon(obj, (LevelObjectEntry_Fireball_Octoweapon *)entry); break; case 108: - obj_init_frog(obj, entry); + obj_init_frog(obj, (LevelObjectEntry_Frog *)entry); break; case 109: - obj_init_silvercoin_adv2(obj, entry); + obj_init_silvercoin_adv2(obj, (LevelObjectEntry_SilverCoinAdv2 *)entry); break; case 116: - obj_init_levelname(obj, entry); + obj_init_levelname(obj, (LevelObjectEntry_LevelName *)entry); break; } } diff --git a/src/unknown_00BC20.h b/src/unknown_00BC20.h index 95b6a414..530b51ab 100644 --- a/src/unknown_00BC20.h +++ b/src/unknown_00BC20.h @@ -4,6 +4,7 @@ #include "types.h" #include "structs.h" #include "f3ddkr.h" +#include "object_functions.h" /* Size: 0x8 bytes */ typedef struct unknown800DC6F0 { @@ -211,7 +212,7 @@ s8 func_8002341C(void); s32 func_80023568(void); s8 func_800235C0(void); void func_800235D0(s32 arg0); -void run_object_init_func(Object *arg0, void *arg1); +void run_object_init_func(Object *arg0, void *arg1, s32 arg2); void run_object_loop_func(Object *obj, s32 arg1); void func_8002458C(s32 arg0); s16 *func_80024594(s32 *arg0, s32 *arg1);