mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Make Object_3C a LevelObjectEntry.
This commit is contained in:
@@ -140,6 +140,12 @@ typedef struct LevelObjectEntry_Door {
|
||||
typedef struct LevelObjectEntry_FogChanger {
|
||||
/* 0x00 */ LevelObjectEntryCommon common;
|
||||
/* 0x08 */ u8 unk8;
|
||||
/* 0x09 */ u8 unk9;
|
||||
/* 0x0A */ u8 unkA;
|
||||
/* 0x0B */ u8 unkB;
|
||||
/* 0x0C */ s16 unkC;
|
||||
/* 0x0E */ s16 unkE;
|
||||
/* 0x10 */ s16 unk10;
|
||||
} LevelObjectEntry_FogChanger;
|
||||
|
||||
typedef struct LevelObjectEntry_AiNode {
|
||||
@@ -230,6 +236,12 @@ typedef struct LevelObjectEntry_Buoy_PirateShip {
|
||||
typedef struct LevelObjectEntry_Weather {
|
||||
/* 0x00 */ LevelObjectEntryCommon common;
|
||||
/* 0x08 */ s16 unk8;
|
||||
/* 0x0A */ s16 unkA;
|
||||
/* 0x0C */ s16 unkC;
|
||||
/* 0x0E */ s16 unkE;
|
||||
/* 0x10 */ u8 unk10;
|
||||
/* 0x11 */ u8 unk11;
|
||||
/* 0x12 */ s16 unk12;
|
||||
} LevelObjectEntry_Weather;
|
||||
|
||||
typedef struct LevelObjectEntry_Bridge_WhaleRamp {
|
||||
@@ -413,6 +425,12 @@ typedef struct LevelObjectEntry_DynamicLightingObject {
|
||||
|
||||
typedef struct LevelObjectEntry_EffectBox {
|
||||
/* 0x00 */ LevelObjectEntryCommon common;
|
||||
/* 0x08 */ u8 unk8;
|
||||
/* 0x09 */ u8 unk9;
|
||||
/* 0x0A */ u8 unkA;
|
||||
/* 0x0B */ u8 unkB;
|
||||
/* 0x0C */ u8 unkC;
|
||||
/* 0x0D */ u8 unkD;
|
||||
} LevelObjectEntry_EffectBox;
|
||||
|
||||
typedef struct LevelObjectEntry_TrophyCab {
|
||||
@@ -494,6 +512,7 @@ typedef struct LevelObjectEntry_Snowball {
|
||||
|
||||
typedef struct LevelObjectEntry_Teleport {
|
||||
/* 0x00 */ LevelObjectEntryCommon common;
|
||||
/* 0x08 */ s8 unk8;
|
||||
} LevelObjectEntry_Teleport;
|
||||
|
||||
typedef struct LevelObjectEntry_Lighthouse_RocketSignpost {
|
||||
@@ -509,6 +528,8 @@ typedef struct LevelObjectEntry_Windsail {
|
||||
|
||||
typedef struct LevelObjectEntry_RangeTrigger {
|
||||
/* 0x00 */ LevelObjectEntryCommon common;
|
||||
/* 0x08 */ u16 unk8;
|
||||
/* 0x0A */ u16 unkA;
|
||||
} LevelObjectEntry_RangeTrigger;
|
||||
|
||||
typedef struct LevelObjectEntry_Fireball_Octoweapon {
|
||||
@@ -569,4 +590,102 @@ typedef struct LevelObjectEntry8000E2B4 {
|
||||
s16 unkE;
|
||||
} LevelObjectEntry8000E2B4;
|
||||
|
||||
typedef struct LevelObjectEntry80011AD0 {
|
||||
LevelObjectEntryCommon common;
|
||||
u8 pad8[0x6];
|
||||
u8 unkD;
|
||||
} LevelObjectEntry80011AD0;
|
||||
|
||||
typedef struct LevelObjectEntry {
|
||||
union {
|
||||
LevelObjectEntry_Racer racer;
|
||||
LevelObjectEntry_Scenery scenery;
|
||||
LevelObjectEntry_Fish fish;
|
||||
LevelObjectEntry_Animator animator;
|
||||
LevelObjectEntry_Weapon weapon;
|
||||
LevelObjectEntry_Smoke smoke;
|
||||
LevelObjectEntry_Exit exit;
|
||||
LevelObjectEntry_Audio audio;
|
||||
LevelObjectEntry_AudioLine audioLine;
|
||||
LevelObjectEntry_CameraControl cameraControl;
|
||||
LevelObjectEntry_SetupPoint setupPoint;
|
||||
LevelObjectEntry_Dino_Whale dino_whale;
|
||||
LevelObjectEntry_Checkpoint checkpoint;
|
||||
LevelObjectEntry_Door door;
|
||||
LevelObjectEntry_FogChanger fogChanger;
|
||||
LevelObjectEntry_AiNode aiNode;
|
||||
LevelObjectEntry_WeaponBalloon weaponBalloon;
|
||||
LevelObjectEntry_AudioSeqLine audioSeqLine;
|
||||
LevelObjectEntry_BombExplosion bombExplosion;
|
||||
LevelObjectEntry_WBalloonPop balloonPop;
|
||||
LevelObjectEntry_Unknown25 unk25;
|
||||
LevelObjectEntry_SkyControl skyControl;
|
||||
LevelObjectEntry_AudioReverb audioReverb;
|
||||
LevelObjectEntry_Torch_Mist torch_mist;
|
||||
LevelObjectEntry_TexScroll texScroll;
|
||||
LevelObjectEntry_ModeChange modeChange;
|
||||
LevelObjectEntry_StopWatchMan tt;
|
||||
LevelObjectEntry_Banana banana;
|
||||
LevelObjectEntry_RgbaLight rgbaLighting;
|
||||
LevelObjectEntry_Buoy_PirateShip buoy_pirateShip;
|
||||
LevelObjectEntry_Weather weather;
|
||||
LevelObjectEntry_Bridge_WhaleRamp bridge_whaleRamp;
|
||||
LevelObjectEntry_RampSwitch rampSwitch;
|
||||
LevelObjectEntry_SeaMonster seaMonster;
|
||||
LevelObjectEntry_Bonus bonus;
|
||||
LevelObjectEntry_LensFlare lensFlare;
|
||||
LevelObjectEntry_LensFlareSwitch lensFlareSwitch;
|
||||
LevelObjectEntry_CollectEgg collectEgg;
|
||||
LevelObjectEntry_EggCreator eggCreator;
|
||||
LevelObjectEntry_CharacterFlag characterFlag;
|
||||
LevelObjectEntry_Animation animation;
|
||||
LevelObjectEntry_InfoPoint infoPoint;
|
||||
LevelObjectEntry_Trigger trigger;
|
||||
LevelObjectEntry_AirZippers_WaterZippers airzipper_waterzipper;
|
||||
LevelObjectEntry_Unknown58 unk58;
|
||||
LevelObjectEntry_WaveGenerator waverGenerator;
|
||||
LevelObjectEntry_Butterfly butterfly;
|
||||
LevelObjectEntry_Parkwarden taj;
|
||||
LevelObjectEntry_WorldKey worldKey;
|
||||
LevelObjectEntry_BananaCreator bananaCreator;
|
||||
LevelObjectEntry_TreasureSucker treasureSucker;
|
||||
LevelObjectEntry_Log log;
|
||||
LevelObjectEntry_LavaSpurt lavaSpurt;
|
||||
LevelObjectEntry_PosArrow posArrow;
|
||||
LevelObjectEntry_HitTester hitTester;
|
||||
LevelObjectEntry_MidiFade midiFade;
|
||||
LevelObjectEntry_DynamicLightingObject dynamicLighting;
|
||||
LevelObjectEntry_EffectBox effectBox;
|
||||
LevelObjectEntry_TrophyCab trophyCabinet;
|
||||
LevelObjectEntry_Bubbler bubbler;
|
||||
LevelObjectEntry_FlyCoin flyCoin;
|
||||
LevelObjectEntry_GoldenBalloon goldenBalloon;
|
||||
LevelObjectEntry_Laserbolt laserbolt;
|
||||
LevelObjectEntry_Lasergun lasergun;
|
||||
LevelObjectEntry_GroundZipper groundZipper;
|
||||
LevelObjectEntry_OverridePos overridePos;
|
||||
LevelObjectEntry_WizpigShip wizpigShip;
|
||||
LevelObjectEntry_SilverCoin silverCoin;
|
||||
LevelObjectEntry_Boost boost;
|
||||
LevelObjectEntry_WardenSmoke tajSmoke;
|
||||
LevelObjectEntry_Unknown94 unk94;
|
||||
LevelObjectEntry_Unknown96 unk96;
|
||||
LevelObjectEntry_Snowball snowball;
|
||||
LevelObjectEntry_Teleport teleport;
|
||||
LevelObjectEntry_Lighthouse_RocketSignpost lighthouse_signpost;
|
||||
LevelObjectEntry_Windsail windsail;
|
||||
LevelObjectEntry_RangeTrigger rangeTrigger;
|
||||
LevelObjectEntry_Fireball_Octoweapon fireball_octoweapon;
|
||||
LevelObjectEntry_Frog frog;
|
||||
LevelObjectEntry_SilverCoinAdv2 silverCoinAdv2;
|
||||
LevelObjectEntry_TTDoor ttDoor;
|
||||
LevelObjectEntry_MidiFadePoint midiFadePoint;
|
||||
LevelObjectEntry_OctoBubble octoBubble;
|
||||
LevelObjectEntry_LevelName levelName;
|
||||
LevelObjectEntry_Midichset midichset;
|
||||
LevelObjectEntry8000E2B4 unk8000E2B4;
|
||||
LevelObjectEntry80011AD0 unk80011AD0;
|
||||
};
|
||||
} LevelObjectEntry;
|
||||
|
||||
#endif
|
||||
|
||||
+2
-11
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "types.h"
|
||||
#include "enums.h"
|
||||
#include "level_object_entries.h"
|
||||
|
||||
// Stolen from PD
|
||||
// This hacky structure allows coords to be accessed using
|
||||
@@ -554,16 +555,6 @@ typedef struct LevelModel {
|
||||
/* 0x48 */ s32 modelSize;
|
||||
} LevelModel;
|
||||
|
||||
typedef struct Object_3C {
|
||||
u8 pad0[0x2];
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s8 unk8;
|
||||
u8 pad9[0x4];
|
||||
u8 unkD;
|
||||
} Object_3C;
|
||||
|
||||
typedef enum {
|
||||
OBJECT_MODEL_TYPE_3D_MODEL,
|
||||
OBJECT_MODEL_TYPE_SPRITE_BILLBOARD,
|
||||
@@ -1387,7 +1378,7 @@ typedef struct ObjectSegment {
|
||||
/* 0x003B */ s8 unk3B;
|
||||
|
||||
union {
|
||||
/* 0x003C */ Object_3C* unk3C;
|
||||
/* 0x003C */ LevelObjectEntry* level_entry;
|
||||
/* 0x003C */ f32 unk3C_f;
|
||||
} unk3C_a;
|
||||
|
||||
|
||||
+29
-44
@@ -446,7 +446,7 @@ void obj_loop_effectbox(Object *obj, s32 speed) {
|
||||
Object **objList;
|
||||
Object_EffectBox *curObj64;
|
||||
s32 numberOfObjects;
|
||||
Object_3C_80034B74 *obj3C;
|
||||
LevelObjectEntry_EffectBox *level_entry;
|
||||
s32 i;
|
||||
f32 xDiff;
|
||||
f32 yDiff;
|
||||
@@ -458,13 +458,13 @@ void obj_loop_effectbox(Object *obj, s32 speed) {
|
||||
f32 temp4;
|
||||
f32 temp5;
|
||||
|
||||
obj3C = obj->segment.unk3C_a.unk3C;
|
||||
level_entry = &obj->segment.unk3C_a.level_entry->effectBox;
|
||||
objList = get_racer_objects(&numberOfObjects);
|
||||
temp0 = sine_s((obj3C->unkB << 8) * -1);
|
||||
temp1 = cosine_s((obj3C->unkB << 8) * -1);
|
||||
temp2 = obj3C->unk8 * 3;
|
||||
temp3 = obj3C->unk9 * 3;
|
||||
temp4 = obj3C->unkA * 3;
|
||||
temp0 = sine_s((level_entry->unkB << 8) * -1);
|
||||
temp1 = cosine_s((level_entry->unkB << 8) * -1);
|
||||
temp2 = level_entry->unk8 * 3;
|
||||
temp3 = level_entry->unk9 * 3;
|
||||
temp4 = level_entry->unkA * 3;
|
||||
for (i = 0; i < numberOfObjects; i++)
|
||||
{
|
||||
xDiff = objList[i]->segment.trans.x_position - obj->segment.trans.x_position;
|
||||
@@ -476,8 +476,8 @@ void obj_loop_effectbox(Object *obj, s32 speed) {
|
||||
temp5 = (-xDiff * temp1) + (zDiff * temp0);
|
||||
if ((-temp4 < temp5) && (temp5 < temp4)) {
|
||||
curObj64 = &objList[i]->unk64->effect_box;
|
||||
curObj64->unk1FE = obj3C->unkC;
|
||||
curObj64->unk1FF = obj3C->unkD;
|
||||
curObj64->unk1FE = level_entry->unkC;
|
||||
curObj64->unk1FF = level_entry->unkD;
|
||||
temp5 = temp3 / 2;
|
||||
if ((temp5 < yDiff) && (curObj64->unk1FE == 1)) {
|
||||
temp5 = (1.0 - ((yDiff - temp5) / temp5));
|
||||
@@ -552,13 +552,13 @@ void obj_loop_trophycab(Object *obj, s32 speed) {
|
||||
obj->unk7C.word = 1;
|
||||
if ((settings->trophies >> (((settings->worldId - 1) ^ 0) * 2)) & 3) {
|
||||
sp44.objectID = 128;
|
||||
sp44.x = obj->segment.unk3C_a.unk3C->unk2;
|
||||
sp44.y = obj->segment.unk3C_a.unk3C->unk4;
|
||||
sp44.z = obj->segment.unk3C_a.unk3C->unk6;
|
||||
sp44.x = obj->segment.unk3C_a.level_entry->trophyCabinet.common.x;
|
||||
sp44.y = obj->segment.unk3C_a.level_entry->trophyCabinet.common.y;
|
||||
sp44.z = obj->segment.unk3C_a.level_entry->trophyCabinet.common.z;
|
||||
sp44.size = 8;
|
||||
trophyObj = spawn_object(&sp44, 1);
|
||||
if (trophyObj) {
|
||||
trophyObj->segment.unk3C_a.unk3C = (void *) 0;
|
||||
trophyObj->segment.unk3C_a.level_entry = NULL;
|
||||
trophyObj->segment.trans.y_rotation = obj->segment.trans.y_rotation;
|
||||
}
|
||||
}
|
||||
@@ -684,7 +684,7 @@ void obj_loop_eggcreator(Object *obj, UNUSED s32 speed) {
|
||||
Object_EggCreator *someObj64 = &someObj->unk64->egg_creator;
|
||||
someObj64->unk4 = obj;
|
||||
obj->unk78 = someObj;
|
||||
someObj->segment.unk3C_a.unk3C = 0;
|
||||
someObj->segment.unk3C_a.level_entry = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1441,9 +1441,9 @@ void obj_init_teleport(Object *obj, UNUSED LevelObjectEntry_Teleport *entry) {
|
||||
|
||||
void obj_loop_teleport(Object *obj, UNUSED s32 speed) {
|
||||
if (obj->unk78 != 0) {
|
||||
Object_3C_80038DC4 *temp = obj->segment.unk3C_a.unk3C;
|
||||
LevelObjectEntry_Teleport *level_entry = &obj->segment.unk3C_a.level_entry->teleport;
|
||||
if (obj->unk4C->unk13 < 0x78) {
|
||||
func_8006F338(temp->unk8);
|
||||
func_8006F338(level_entry->unk8);
|
||||
obj->unk78 = 0;
|
||||
play_sound_global(SOUND_WHOOSH2, NULL);
|
||||
func_80000FDC(SOUND_VOICE_TT_FUTURE_FUN_LAND, 0, 1.0f);
|
||||
@@ -1749,7 +1749,7 @@ void obj_init_goldenballoon(Object *obj, LevelObjectEntry_GoldenBalloon *entry)
|
||||
}
|
||||
|
||||
void obj_loop_goldenballoon(Object *obj, s32 speed) {
|
||||
Object_3C *obj3C;
|
||||
LevelObjectEntry *levelEntry;
|
||||
Object_4C *obj4C;
|
||||
Object_Racer *racer;
|
||||
Object_GoldenBalloon *obj64;
|
||||
@@ -1772,8 +1772,8 @@ void obj_loop_goldenballoon(Object *obj, s32 speed) {
|
||||
}
|
||||
speedf = sp2C;
|
||||
settings = get_settings();
|
||||
obj3C = obj->segment.unk3C_a.unk3C;
|
||||
flag = 0x10000 << obj3C->unk8;
|
||||
levelEntry = obj->segment.unk3C_a.level_entry;
|
||||
flag = 0x10000 << levelEntry->goldenBalloon.unk8;
|
||||
if (settings->courseFlagsPtr[settings->courseId] & flag) {
|
||||
if (obj->unk7C.word > 0) {
|
||||
obj->unk74 = 2;
|
||||
@@ -2046,7 +2046,7 @@ void obj_loop_bananacreator(Object *obj, s32 speed) {
|
||||
newBananaObj = spawn_object(&newEntry, 1);
|
||||
obj->unk7C.word = 1;
|
||||
if (newBananaObj) {
|
||||
newBananaObj->segment.unk3C_a.unk3C = 0;
|
||||
newBananaObj->segment.unk3C_a.level_entry = NULL;
|
||||
newBananaObj64 = &newBananaObj->unk64->banana;
|
||||
newBananaObj64->spawner = obj;
|
||||
func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position - 14.0f, obj->segment.trans.z_position, 44, 34, 0.25f, 0);
|
||||
@@ -2272,7 +2272,7 @@ void func_8003FC44(f32 arg0, f32 arg1, f32 arg2, s32 arg3, s32 arg4, f32 arg5, s
|
||||
someObj = spawn_object(&sp24, 1);
|
||||
if (someObj != NULL) {
|
||||
someObj->segment.trans.scale *= 3.5 * arg5;
|
||||
someObj->segment.unk3C_a.unk3C = NULL;
|
||||
someObj->segment.unk3C_a.level_entry = NULL;
|
||||
someObj->segment.x_velocity = 0.0f;
|
||||
someObj->segment.y_velocity = 0.0f;
|
||||
someObj->segment.z_velocity = 0.0f;
|
||||
@@ -2413,21 +2413,6 @@ void obj_init_weather(Object *obj, LevelObjectEntry_Weather *entry) {
|
||||
#ifdef NON_EQUIVALENT
|
||||
void func_800ABC5C(s32, s32, s32, s32, s32, s32); /* extern */
|
||||
|
||||
typedef struct Object_3C_Weather {
|
||||
u8 pad0[0x2];
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s8 unk8;
|
||||
u8 unk9;
|
||||
s16 unkA;
|
||||
s16 unkC;
|
||||
s16 unkE;
|
||||
u8 unk10;
|
||||
u8 unk11;
|
||||
s16 unk12;
|
||||
} Object_3C_Weather;
|
||||
|
||||
// Has stack & regalloc issues.
|
||||
void obj_loop_weather(Object *obj, s32 speed) {
|
||||
s32 sp54;
|
||||
@@ -2436,7 +2421,7 @@ void obj_loop_weather(Object *obj, s32 speed) {
|
||||
Object **objects;
|
||||
Object **lastObj;
|
||||
Object *curObj;
|
||||
Object_3C_Weather *obj3c;
|
||||
LevelObjectEntry_Weather *level_entry;
|
||||
f32 temp_f0;
|
||||
f32 new_var;
|
||||
f32 temp_f2;
|
||||
@@ -2454,9 +2439,9 @@ void obj_loop_weather(Object *obj, s32 speed) {
|
||||
temp_f0 = obj->segment.trans.x_position - curObj->segment.trans.x_position;
|
||||
temp_f2 = obj->segment.trans.z_position - curObj->segment.trans.z_position;
|
||||
new_var = obj->unk78f;
|
||||
obj3c = obj->segment.unk3C_a.unk3C;
|
||||
level_entry = &obj->segment.unk3C_a.level_entry->weather;
|
||||
if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) <= (new_var * 1.0f)){
|
||||
func_800ABC5C(obj3c->unkA * 256, obj3c->unkC * 256, obj3c->unkE * 256, obj3c->unk10 * 257, obj3c->unk11 * 257, (s32) obj3c->unk12);
|
||||
func_800ABC5C(level_entry->unkA * 256, level_entry->unkC * 256, level_entry->unkE * 256, level_entry->unk10 * 257, level_entry->unk11 * 257, (s32) level_entry->unk12);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2618,7 +2603,7 @@ void obj_loop_bubbler(Object *obj, s32 speed) {
|
||||
|
||||
void obj_init_boost(Object *obj, LevelObjectEntry_Boost *entry) {
|
||||
obj->unk64 = (s32)get_misc_asset(MISC_ASSET_UNK14) + (entry->unk8[0] << 7);
|
||||
obj->segment.unk3C_a.unk3C = NULL;
|
||||
obj->segment.unk3C_a.level_entry = NULL;
|
||||
}
|
||||
|
||||
void obj_init_unknown94(UNUSED Object *obj, UNUSED LevelObjectEntry_Unknown94 *entry, UNUSED s32 arg2) {
|
||||
@@ -2632,12 +2617,12 @@ void obj_init_rangetrigger(UNUSED Object *obj, UNUSED LevelObjectEntry_RangeTrig
|
||||
|
||||
void obj_loop_rangetrigger(Object *obj, s32 speed) {
|
||||
UNUSED s32 temp;
|
||||
Object_3C_80042178 *obj3C;
|
||||
LevelObjectEntry_RangeTrigger *level_entry;
|
||||
unk80042178 sp20;
|
||||
|
||||
obj3C = obj->segment.unk3C_a.unk3C;
|
||||
if (func_80016DE8(obj->segment.trans.x_position, 0, obj->segment.trans.z_position, (f32)obj3C->unk8, 1, &sp20) > 0) {
|
||||
obj->unk74 = obj3C->unkA;
|
||||
level_entry = &obj->segment.unk3C_a.level_entry->rangeTrigger;
|
||||
if (func_80016DE8(obj->segment.trans.x_position, 0, obj->segment.trans.z_position, (f32)level_entry->unk8, 1, &sp20) > 0) {
|
||||
obj->unk74 = level_entry->unkA;
|
||||
} else {
|
||||
obj->unk74 = 0;
|
||||
}
|
||||
|
||||
@@ -24,16 +24,6 @@ typedef struct unk80034B4C {
|
||||
s32 unk78;
|
||||
} unk80034B4C;
|
||||
|
||||
typedef struct Object_3C_80034B74 {
|
||||
u8 pad0[0x8];
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
} Object_3C_80034B74;
|
||||
|
||||
typedef struct unk8003564C {
|
||||
s8 unk0;
|
||||
s8 unk1;
|
||||
@@ -92,11 +82,6 @@ typedef struct unk80038B74 {
|
||||
s8 unk8;
|
||||
} unk80038B74;
|
||||
|
||||
typedef struct Object_3C_80038DC4 {
|
||||
u8 pad0[8];
|
||||
s8 unk8;
|
||||
} Object_3C_80038DC4;
|
||||
|
||||
typedef struct unk80039160 {
|
||||
u8 pad0[0x78];
|
||||
s32 unk78;
|
||||
@@ -186,12 +171,6 @@ typedef struct unk8004210C {
|
||||
s32 unk64;
|
||||
} unk8004210C;
|
||||
|
||||
typedef struct Object_3C_80042178 {
|
||||
u8 pad0[8];
|
||||
u16 unk8;
|
||||
u16 unkA;
|
||||
} Object_3C_80042178;
|
||||
|
||||
typedef struct unk80042A1C {
|
||||
u8 pad0[0x78];
|
||||
f32 unk78;
|
||||
|
||||
+4
-4
@@ -674,7 +674,7 @@ void func_8000E2B4(void) {
|
||||
if (get_filtered_cheats() & CHEAT_SMALL_CHARACTERS) {
|
||||
player->segment.trans.scale *= 0.714f;
|
||||
}
|
||||
player->segment.unk3C_a.unk3C = 0;
|
||||
player->segment.unk3C_a.level_entry = NULL;
|
||||
player->segment.trans.y_rotation = D_8011AD4C;
|
||||
player->segment.trans.y_position = D_8011AD48;
|
||||
}
|
||||
@@ -702,10 +702,10 @@ GLOBAL_ASM("asm/non_matchings/objects/func_8000E4E8.s")
|
||||
s32 func_8000E558(Object *arg0){
|
||||
s32 temp_v0;
|
||||
s32 new_var, new_var2;
|
||||
if (arg0->segment.unk3C_a.unk3C == 0) {
|
||||
if (arg0->segment.unk3C_a.level_entry == NULL) {
|
||||
return TRUE;
|
||||
}
|
||||
temp_v0 = arg0->segment.unk3C_a.unk3C;
|
||||
temp_v0 = arg0->segment.unk3C_a.level_entry;
|
||||
new_var2 = D_8011AE98[0];
|
||||
if ((temp_v0 >= new_var2) && (((D_8011AEA0 * 8) + new_var2) >= temp_v0)) {
|
||||
return FALSE;
|
||||
@@ -1037,7 +1037,7 @@ void func_80011AD0(Object *this) {
|
||||
break;
|
||||
|
||||
case 3: //L80011BB4
|
||||
tmp_f0 = this->segment.unk3C_a.unk3C->unkD;
|
||||
tmp_f0 = this->segment.unk3C_a.level_entry->unk80011AD0.unkD;
|
||||
offset = (this->unk64->obj80011AD0.unkFC * 6);
|
||||
offset *= 5;
|
||||
offset *= 2;
|
||||
|
||||
+2
-2
@@ -1496,7 +1496,7 @@ void update_player_racer(Object* obj, s32 updateRate) {
|
||||
newObject.size = 8;
|
||||
tempRacer->unk15C = spawn_object(&newObject, 1);
|
||||
if (tempRacer->unk15C) {
|
||||
tempRacer->unk15C->segment.unk3C_a.unk3C = 0;
|
||||
tempRacer->unk15C->segment.unk3C_a.level_entry = NULL;
|
||||
tempRacer->unk15C->segment.unk38.half.lower = 128;
|
||||
}
|
||||
}
|
||||
@@ -3623,7 +3623,7 @@ void racer_enter_door(Object_Racer* racer, s32 updateRate) {
|
||||
if (racer->transitionTimer > 0) {
|
||||
racer->transitionTimer -= updateRate;
|
||||
if (racer->transitionTimer <= 0) {
|
||||
func_8006D968((s8* ) racer->unk108->segment.unk3C_a.unk3C);
|
||||
func_8006D968((s8* ) racer->unk108->segment.unk3C_a.level_entry);
|
||||
racer->transitionTimer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
+11
-25
@@ -484,7 +484,7 @@ void func_80027FC4(s32 arg0) {
|
||||
sp20.objectID = arg0;
|
||||
D_8011B0B8 = spawn_object(&sp20, 2);
|
||||
if (D_8011B0B8 != 0) {
|
||||
D_8011B0B8->segment.unk3C_a.unk3C = 0;
|
||||
D_8011B0B8->segment.unk3C_a.level_entry = NULL;
|
||||
D_8011B0B8->unk4A = -1;
|
||||
}
|
||||
}
|
||||
@@ -1348,20 +1348,6 @@ void func_8003093C(s32 arg0) {
|
||||
#ifdef NON_EQUIVALENT
|
||||
//unk8011D388 D_8011D388[4];
|
||||
|
||||
typedef struct Object_3C_FogChanger {
|
||||
u8 pad0[0x2];
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
s16 unkC;
|
||||
s16 unkE;
|
||||
s16 unk10;
|
||||
} Object_3C_FogChanger;
|
||||
|
||||
void obj_loop_fogchanger(Object* obj) {
|
||||
s32 temp_v0;
|
||||
s32 index;
|
||||
@@ -1372,13 +1358,13 @@ void obj_loop_fogchanger(Object* obj) {
|
||||
s32 temp_a3, temp_t0, temp_t1, temp_a1;
|
||||
s32 temp;
|
||||
Object **sp40;
|
||||
Object_3C_FogChanger *sp44;
|
||||
LevelObjectEntry_FogChanger *level_entry;
|
||||
Object *tempObj;
|
||||
unk8011D388 *temp_v0_3;
|
||||
ObjectSegment *phi_s3;
|
||||
|
||||
sp40 = NULL;
|
||||
sp44 = obj->segment.unk3C_a.unk3C;
|
||||
level_entry = &obj->segment.unk3C_a.level_entry->fogChanger;
|
||||
phi_s3 = NULL;
|
||||
|
||||
// check_if_showing_cutscene_camera() returns the bool gCutsceneCameraActive. 1 if camera is controlled by cutscene, 0 if controlled by racer.
|
||||
@@ -1408,15 +1394,15 @@ void obj_loop_fogchanger(Object* obj) {
|
||||
x -= obj->segment.trans.x_position;
|
||||
z -= obj->segment.trans.z_position;
|
||||
if (((x * x) + (z * z)) < obj->unk78f) {
|
||||
phi_a0 = sp44->unkC;
|
||||
phi_v1 = sp44->unkE;
|
||||
temp_a3 = sp44->unk9;
|
||||
temp_t0 = sp44->unkA;
|
||||
temp_t1 = sp44->unkB;
|
||||
temp_a1 = sp44->unk10;
|
||||
phi_a0 = level_entry->unkC;
|
||||
phi_v1 = level_entry->unkE;
|
||||
temp_a3 = level_entry->unk9;
|
||||
temp_t0 = level_entry->unkA;
|
||||
temp_t1 = level_entry->unkB;
|
||||
temp_a1 = level_entry->unk10;
|
||||
if (phi_v1 < phi_a0) {
|
||||
phi_v1 = sp44->unkC;
|
||||
phi_a0 = sp44->unkE;
|
||||
phi_v1 = level_entry->unkC;
|
||||
phi_a0 = level_entry->unkE;
|
||||
}
|
||||
if (phi_v1 >= 0x400) {
|
||||
phi_v1 = 0x3FF;
|
||||
|
||||
Reference in New Issue
Block a user