Merge branch 'DavidSM64:master' into main

This commit is contained in:
Fazana
2022-04-27 10:11:34 +01:00
committed by GitHub
9 changed files with 743 additions and 886 deletions
+521 -203
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -269,7 +269,7 @@ void func_800A0B74(void) {
GLOBAL_ASM("asm/non_matchings/game_ui/func_800A0BD4.s")
void func_800A0DC0(s32 arg0, Object *arg1, s32 arg2) {
Object_64 *temp = arg1->unk64;
Object_Racer *temp = &arg1->unk64->racer;
func_80068508(1);
func_800A0EB4(temp, arg2);
@@ -297,7 +297,7 @@ GLOBAL_ASM("asm/non_matchings/game_ui/func_800A0EB4.s")
GLOBAL_ASM("asm/non_matchings/game_ui/func_800A1248.s")
void func_800A1428(s32 arg0, Object *arg1, s32 arg2) {
Object_64 *temp = arg1->unk64;
Object_Racer *temp = &arg1->unk64->racer;
if (temp->unk1D8 == 0) {
func_80068508(1);
func_800A3CE4(arg0, arg2);
+133 -173
View File
File diff suppressed because it is too large Load Diff
+2 -302
View File
@@ -35,12 +35,6 @@ typedef struct Object_3C_80034B74 {
u8 unkD;
} Object_3C_80034B74;
typedef struct Object_64_80034B74 {
u8 pad0[0x1FE];
u8 unk1FE;
u8 unk1FF;
} Object_64_80034B74;
typedef struct unk8003564C {
s8 unk0;
s8 unk1;
@@ -49,11 +43,6 @@ typedef struct unk8003564C {
s16 unk6;
} unk8003564C;
typedef struct Object_64_8003564C {
u8 pad0[4];
Object *unk4;
} Object_64_8003564C;
typedef struct unk80035E20 {
u8 pad0[0x40];
s32 unk40;
@@ -62,29 +51,6 @@ typedef struct unk80035E20 {
s32 unk7C;
} unk80035E20;
typedef struct Object_64_80035E34 {
u8 pad0[0x1D6];
s8 unk1D6;
} Object_64_80035E34;
typedef struct Object_64_80035F6C {
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
s32 unk14;
s32 unk18;
s32 unk1C;
s16 *unk20;
u8 *unk24;
} Object_64_80035F6C;
typedef struct Object_64_80035F6C_2 {
u8 pad0[3];
s8 unk3;
} Object_64_80035F6C_2;
typedef struct unk80037578 {
u8 pad0[0x78];
s32 unk78;
@@ -104,15 +70,6 @@ typedef struct LevelObjectEntry800376E0 {
s8 unkA;
} LevelObjectEntry800376E0;
typedef struct Object_64_800376E0 {
s16 segmentId;
s16 unk2;
s16 unk4;
s16 unk6;
s16 unk8;
s16 unkA;
} Object_64_800376E0;
typedef struct unk80037D08_arg0_64 {
u8 pad0[0x2A];
s16 unk2A;
@@ -131,30 +88,6 @@ typedef struct Object_60_800380F8 {
Object *unkC;
} Object_60_800380F8;
typedef struct Object_64_Snowball {
u8 pad0[0x20];
u32 unk20;
s16 unk24;
u8 pad28[0x12];
s8 unk38;
} Object_64_Snowball;
typedef struct Object_64_80038710 {
u8 pad0[0x30];
s8 unk30;
u8 pad31[0x13];
s8 unk44;
} Object_64_80038710;
typedef struct Object_64_800387CC {
u8 pad0[0x148];
Object *unk148;
} Object_64_800387CC;
typedef struct Object_64_800388D4 {
s16 unk0;
} Object_64_800388D4;
typedef struct unk80038B74 {
u8 pad0[8];
s8 unk8;
@@ -165,15 +98,6 @@ typedef struct Object_3C_80038DC4 {
s8 unk8;
} Object_3C_80038DC4;
typedef struct Object_64_80038E3C {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s8 unk14;
} Object_64_80038E3C;
typedef struct unk80039160 {
u8 pad0[0x78];
s32 unk78;
@@ -186,17 +110,6 @@ typedef struct unk80039190 {
s32 unk7C;
} unk80039190;
typedef struct Object_64_8003C1E0 {
f32 unk0;
u8 pad4[4];
s32 unk8;
u8 padC[3];
s8 unkF;
u8 pad10[2];
u8 unk12;
u8 unk13;
} Object_64_8003C1E0;
typedef struct unk8003CF18 {
u8 pad1A[0x78];
f32 unk78;
@@ -214,10 +127,6 @@ typedef struct unk8003D3EC {
u16 unk18;
} unk8003D3EC;
typedef struct Object_64_8003DF08 {
s16 unk0;
} Object_64_8003DF08;
typedef struct unk8003FC44 {
s8 unk0;
s8 unk1;
@@ -227,31 +136,6 @@ typedef struct unk8003FC44 {
s8 unk7;
} unk8003FC44;
typedef struct Object_64_8003FEF4 {
u8 unk0;
u8 pad1;
u16 unk2;
u16 unk4;
u16 unk6;
union {
struct {
u8 unk8;
u8 unk9;
u8 unkA;
u8 padB;
} unk_struct;
s32 unk8_word;
} unk_union;
u8 unkC;
u8 unkD;
u8 unkE;
u8 unkF;
u8 unk10;
u8 unk11;
u8 unk12;
} Object_64_8003FEF4;
typedef struct LevelObjectEntry8003FEF4 {
LevelObjectEntryCommon common;
u8 unk8;
@@ -273,22 +157,6 @@ typedef struct LevelObjectEntry8004001C {
u8 unkA;
} LevelObjectEntry8004001C;
typedef struct Object_64_8004001C {
u16 pad0;
s16 unk2;
u8 unk4;
u8 unk5;
} Object_64_8004001C;
typedef struct Object_64_800400A4 {
s16 unk0;
s16 pad2;
s16 unk4;
s16 unk6;
s16 unk8;
s16 unkA;
} Object_64_800400A4;
typedef struct unk80040800 {
u8 pad0[0x78];
f32 unk78;
@@ -325,32 +193,6 @@ typedef struct Object_3C_80042178 {
u16 unkA;
} Object_3C_80042178;
typedef struct Object_64_80042210 {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
f32 unk10;
u8 unk14;
u8 unk15;
u8 pad16[3];
u8 unk19;
u8 pad1A[6];
f32 unk20;
f32 unk24;
u8 pad28[8];
f32 unk30;
} Object_64_80042210;
typedef struct Object_64_80042998 {
u8 pad0[0x70];
u8 unk70;
u8 pad71;
u8 unk72;
u8 pad73;
f32 unk74;
} Object_64_80042998;
typedef struct unk80042A1C {
u8 pad0[0x78];
f32 unk78;
@@ -369,128 +211,6 @@ typedef struct Object_50_Scenery {
//void func_80072348(s16 obj, u8 arg1);
typedef struct Object_64_Exit {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s8 unk14;
} Object_64_Exit;
typedef struct Object_64_Racer {
s16 unk0;
u8 pad2;
s8 unk3;
u8 pad4[0x104];
s32 unk108;
u8 pad10C[0x40];
Object *unk14C;
u8 pad150[0x33];
s8 unk183;
s8 pad184;
s8 unk185;
u8 pad186[0x4D];
s8 unk1D3;
u8 pad1D4[0x4];
s8 unk1D8;
u8 pad1D9[0x9];
s8 unk1E2;
u8 pad1E3[0x12];
u8 unk1F5;
u8 pad1F6[0xA];
s8 unk200;
u8 pad201[0x2];
s8 unk203;
u8 pad204[0x8];
u8 unk20C;
} Object_64_Racer;
typedef struct Object_64_Bonus {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s8 unk14;
} Object_64_Bonus;
typedef struct Object_64_ModeChange {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s8 unk14;
} Object_64_ModeChange;
typedef struct Object_64_GoldenBalloon {
f32 unk0;
u8 pad4[0x8];
u8 unkC;
u8 unkD;
u8 unkE;
u8 unkF;
s8 unk10;
f32 unk14;
} Object_64_GoldenBalloon;
typedef struct Object_64_Door {
f32 unk0;
u8 pad4[0x4];
s32 unk8;
s16 padA;
s8 unkE;
u8 unkF;
u8 unk10;
u8 unk11;
u8 unk12;
u8 unk13;
u8 unk14;
} Object_64_Door;
typedef struct Object_64_Trigger {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
s32 unk10;
s8 unk14;
} Object_64_Trigger;
typedef Object Object_64_Animation;
typedef struct Object_64_Audio {
/* 0x00 */ u16 unk0;
/* 0x02 */ u16 unk2;
/* 0x04 */ u8 unk4;
/* 0x05 */ u8 unk5;
/* 0x06 */ u8 unk6;
/* 0x07 */ u8 unk7;
/* 0x08 */ s32 unk8;
/* 0x0C */ u8 unkC;
/* 0x0D */ u8 unkD;
} Object_64_Audio;
typedef struct Object_64_MidiFade {
u8 unk0;
u8 unk1;
u8 unk2;
f32 unk4;
f32 unk8;
f32 unkC;
f32 unk10;
f32 unk14;
f32 unk18;
f32 unk1C;
f32 unk20;
f32 unk24;
f32 unk28;
f32 unk2C;
u8 unk2F[16];
u8 unk40;
} Object_64_MidiFade;
typedef struct unk80041A90_MidiFade {
s16 unk0; // Y rotation
s16 unk2; // X rotation
@@ -501,26 +221,6 @@ typedef struct unk80041A90_MidiFade {
f32 unk14;
} unk80041A90_MidiFade;
typedef struct Object_64_MidiFadePoint {
u16 unk0;
u16 unk2;
f32 unk4;
f32 unk8;
u8 unkC[16];
u8 unk1C;
} Object_64_MidiFadePoint;
typedef struct Object_64_PosArrow {
s16 unk0;
u8 pad4[0x14E];
Object *unk150;
} Object_64_PosArrow;
typedef struct Object_64_Banana {
u8 pad0[4];
Object *spawner;
} Object_64_Banana;
// Unsure about the signed/unsigned with these arrays.
extern u16 D_800DC970[4];
extern u16 D_800DC978[4];
@@ -668,12 +368,12 @@ void obj_loop_goldenballoon(Object *obj, s32 speed);
s32 func_8001C524(f32 x, f32 y, f32 z, s32 arg3);
s32 func_8001CC48(s32, s32, s32);
void func_8001C6C4(Object_64_GoldenBalloon *obj64, Object *obj, f32, f32, s32);
void func_8001C6C4(Object_GoldenBalloon *obj64, Object *obj, f32, f32, s32);
void func_8000CBF0(Object*, s32);
void func_8001EE74();
void func_8001EFA4(Object*, Object_64_Animation*);
void func_8001EFA4(Object*, Object_Animation*);
void func_8001F23C(Object *obj, LevelObjectEntry_Animation *entry);
s32 func_8001F3EC(s32);
s32 func_80021600(s32);
+20 -20
View File
@@ -620,7 +620,7 @@ void func_8000E2B4(void) {
LevelObjectEntry8000E2B4 sp2C;
Settings *settings;
Object *player;
Object_64 *player_64;
Object_Racer *player_64;
s16 object_id;
if (D_8011AD44 == 0) {
@@ -653,13 +653,13 @@ void func_8000E2B4(void) {
(*gObjectStructArrayPtr)[0] = (s32) player;
*D_8011AEEC = (s32) player;
*D_8011AEE8 = player;
player_64 = player->unk64;
player_64 = &player->unk64->racer;
player_64->unk1D6 = (s8) D_8011AD45;
player_64->unk0_a.unk0_b.unk2 = (u8)0;
player_64->unk2 = (u8)0;
player_64->unk1D7 = (s8) D_8011AD45;
player_64->unk0_a.unk0_b.unk0 = (u16)0;
player_64->playerIndex = (u16)0;
player_64->unk118 = 0;
player_64->unk0_a.unk0_b.unk3 = (s8) settings->racers[0].character;
player_64->characterId = (s8) settings->racers[0].character;
if (get_filtered_cheats() & CHEAT_BIG_CHARACTERS) {
player->segment.trans.scale *= 1.4f;
}
@@ -850,16 +850,16 @@ void func_80011AD0(Object *this) {
//L80011B10
if (this->unk7C.word < 0)
break;
func_80011960(this, this->unk64->unk20, 4, this->unk64,
2, this->unk64->unk24, 11, 0, 1.0f);
func_80011960(this, this->unk64->obj80011AD0.unk20, 4, this->unk64,
2, this->unk64->obj80011AD0.unk24, 11, 0, 1.0f);
break;
case 61:
//L80011B58
offset = (this->unk64->unkFC * 6);
offset = (this->unk64->obj80011AD0.unkFC * 6);
offset *= 5;
offset = offset * 2 + 0x80;
func_80011960(this, offset, 6, this->unk64, 8, this->unk64->unkF8, 10, 0, 1.0f);
func_80011960(this, offset, 6, this->unk64, 8, this->unk64->obj80011AD0.unkF8, 10, 0, 1.0f);
break;
case 3: //L80011BB4
@@ -867,16 +867,16 @@ void func_80011AD0(Object *this) {
if (this->segment.unk3C_a.unk3C->unkD < 0) {
tmp_f0 += 4294967296.0f;
}
offset = (this->unk64->unkFC * 6);
offset = (this->unk64->obj80011AD0.unkFC * 6);
offset *= 5;
offset = offset * 2 + 0x80;
func_80011960(this, offset, 6, this->unk64, 8, this->unk64->unkF8, 26, 0, tmp_f0 * D_800E5550);
func_80011960(this, offset, 6, this->unk64, 8, this->unk64->obj80011AD0.unkF8, 26, 0, tmp_f0 * D_800E5550);
break;
case 89: //L80011C38
if (this->unk78 == 0)
break;
if (this->unk64->unk70 > 0 || 0.0f < this->unk64->unk74) {
if (this->unk64->obj80011AD0.unk70 > 0 || 0.0f < this->unk64->obj80011AD0.unk74) {
func_800135B8(this);
}
break;
@@ -936,7 +936,7 @@ void func_80012D5C(Gfx **dlist, Mtx **mats, VertexList **verts, Object *object)
void func_80012E28(Object *this) {
s32 unused1;
Object_64 *sp_20;
Object_Racer *sp_20;
f32 tmp_f2;
f32 sp_1c;
f32 tmp_f0;
@@ -944,7 +944,7 @@ void func_80012E28(Object *this) {
if (this->behaviorId == 1) {
sp_20 = this->unk64;
sp_20 = &this->unk64->racer;
this->segment.trans.y_rotation += sp_20->unk160;
this->segment.trans.x_rotation += sp_20->unk162;
this->segment.trans.z_rotation += sp_20->unk164;
@@ -968,7 +968,7 @@ void func_80012E28(Object *this) {
void func_80012F30(Object *arg0) {
if (arg0->behaviorId == 1) {
Object_64 *object_64 = arg0->unk64;
Object_Racer *object_64 = &arg0->unk64->racer;
arg0->segment.trans.y_rotation -= object_64->unk160;
arg0->segment.trans.x_rotation -= object_64->unk162;
arg0->segment.trans.z_rotation -= object_64->unk164;
@@ -995,9 +995,9 @@ void render_object(Object *this) {
void func_80013548(Object *arg0) {
if ((arg0->segment.trans.unk6 & 0x8000) == 0 && arg0->segment.header->behaviorId == 1) {
arg0->segment.trans.x_position -= arg0->unk64->unk78;
arg0->segment.trans.y_position -= arg0->unk64->unk7C;
arg0->segment.trans.z_position -= arg0->unk64->unk80;
arg0->segment.trans.x_position -= arg0->unk64->racer.unk78;
arg0->segment.trans.y_position -= arg0->unk64->racer.unk7C;
arg0->segment.trans.z_position -= arg0->unk64->racer.unk80;
}
}
@@ -1432,10 +1432,10 @@ UNUSED void func_800228DC(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2) {
}
void func_800228EC(s32 arg0) {
Object_64 *object_64;
Object_Racer *object_64;
D_8011AEF7 = 3;
object_64 = get_object_struct(0)->unk64;
object_64 = &get_object_struct(0)->unk64->racer;
object_64->unk190 = 0;
object_64->unk192 = 0;
object_64->unk193 = 0;
+42 -84
View File
@@ -197,24 +197,7 @@ s8 D_8011D5BC;
GLOBAL_ASM("asm/non_matchings/racer/func_80042D20.s")
GLOBAL_ASM("asm/non_matchings/racer/func_80043ECC.s")
typedef struct Object_64_80044170 {
char unk0[0x2C];
f32 unk2C;
char unk30[0x124];
s32 unk154;
char unk158[0x72];
s8 unk1CA;
char unk1CB[0x3];
u8 unk1CE;
char unk1CF[0x13];
s8 unk1E2;
char unk1E3[0x30];
s8 unk213;
s8 unk214;
s8 unk215;
} Object_64_80044170;
void func_80044170(Object *arg0, Object_64_80044170 *arg1, s32 arg2) {
void func_80044170(Object *arg0, Object_Racer *arg1, s32 arg2) {
s32 raceType;
raceType = get_current_level_race_type();
@@ -233,14 +216,14 @@ void func_80044170(Object *arg0, Object_64_80044170 *arg1, s32 arg2) {
break;
}
if (arg1->unk214 == 0 && arg1->unk2C < -0.5) {
if (arg1->unk214 == 0 && arg1->velocity < -0.5) {
arg1->unk215 -= arg2;
if (arg1->unk215 < 0) {
arg1->unk215 = 0;
}
}
if (arg1->unk2C > -1.0 && arg1->unk214 == 0 && D_8011D540 == 0 && D_8011D544 == 0.0f && arg1->unk1E2 != 0 && arg1->unk215 == 0) {
if (arg1->velocity > -1.0 && arg1->unk214 == 0 && D_8011D540 == 0 && D_8011D544 == 0.0f && arg1->unk1E2 != 0 && arg1->unk215 == 0) {
arg1->unk213 += arg2;
if (arg1->unk213 > 60) {
@@ -304,7 +287,7 @@ GLOBAL_ASM("asm/non_matchings/racer/func_800494E0.s")
GLOBAL_ASM("asm/non_matchings/racer/func_80049794.s")
// Something Plane related.
void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64) {
void func_8004C0A0(s32 arg0, Object *planeObj, Object_Racer *planeObj64) {
s32 temp_v1;
s32 phi_v0;
@@ -339,13 +322,13 @@ void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64) {
}
}
void func_8004C140(Object *obj, Object_64_8004C140 *obj64) {
void func_8004C140(Object *obj, Object_Racer *obj64) {
s8 phi_v1;
s8 temp;
if (obj64->unk0 == -1) {
if (obj64->playerIndex == -1) {
phi_v1 = 0;
} else {
phi_v1 = obj64->unk185;
phi_v1 = obj64->bananas;
}
temp = obj64->unk187;
if (temp == 0 || obj64->unk18E > 0) {
@@ -365,16 +348,16 @@ void func_8004C140(Object *obj, Object_64_8004C140 *obj64) {
case 1:
case 2:
if (phi_v1 != 0) {
obj64->unk1DB = 0x28;
obj64->spinout_timer = 0x28;
} else {
obj64->unk1DB = 0x3C;
obj64->spinout_timer = 0x3C;
}
break;
case 3:
if (phi_v1 != 0) {
obj64->unk1DB = 0x28;
obj64->spinout_timer = 0x28;
} else {
obj64->unk1DB = 0x3C;
obj64->spinout_timer = 0x3C;
}
break;
case 6:
@@ -391,7 +374,7 @@ GLOBAL_ASM("asm/non_matchings/racer/func_8004C2B0.s")
GLOBAL_ASM("asm/non_matchings/racer/func_8004CC20.s")
GLOBAL_ASM("asm/non_matchings/racer/func_8004D590.s")
void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_64_8004D95C *obj64) {
void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_Racer *obj64) {
s16 sp26;
if (obj64->unk118 != 0) {
@@ -406,14 +389,14 @@ void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_64_8004D95C *obj64) {
obj64->unk1D6 = obj64->unk1D7;
obj->segment.unk3B = 0;
if (obj64->unk1D6 == 0xA) {
if (obj64->someObject != NULL) {
obj64->someObject->segment.trans.x_position = obj->segment.trans.x_position;
obj64->someObject->segment.trans.y_position = obj->segment.trans.y_position;
obj64->someObject->segment.trans.z_position = obj->segment.trans.z_position;
obj64->someObject->segment.unk2C.half.lower = obj->segment.unk2C.half.lower;
obj64->someObject->segment.trans.y_rotation = obj->segment.trans.y_rotation;
obj64->someObject->segment.trans.x_rotation = obj->segment.trans.x_rotation;
obj64->someObject->segment.trans.z_rotation = obj->segment.trans.z_rotation;
if (obj64->unk154 != NULL) {
obj64->unk154->segment.trans.x_position = obj->segment.trans.x_position;
obj64->unk154->segment.trans.y_position = obj->segment.trans.y_position;
obj64->unk154->segment.trans.z_position = obj->segment.trans.z_position;
obj64->unk154->segment.unk2C.half.lower = obj->segment.unk2C.half.lower;
obj64->unk154->segment.trans.y_rotation = obj->segment.trans.y_rotation;
obj64->unk154->segment.trans.x_rotation = obj->segment.trans.x_rotation;
obj64->unk154->segment.trans.z_rotation = obj->segment.trans.z_rotation;
obj->segment.unk3B = 0;
obj->segment.unk18 = sp26 + arg0;
func_80061C0C(obj);
@@ -452,43 +435,29 @@ GLOBAL_ASM("asm/non_matchings/racer/func_8004F7F4.s")
#ifdef NON_EQUIVALENT
typedef struct Object_64_80050754 {
u8 unk0[0x2C];
f32 unk2C;
f32 unk30;
u8 unk34[0x114];
/* 0x148 */ Object *someObj;
u8 unk14C[0x54];
/* 0x1A0 */ s16 unk1A0;
/* 0x1A2 */ s16 unk1A2;
/* 0x1A4 */ s16 unk1A4;
u8 unk1A6[0x4C];
/* 0x1F2 */ s8 unk1F2;
} Object_64_80050754;
// Mainly has regalloc issues.
void func_80050754(Object *obj, Object_64_80050754 *obj64, f32 arg2) {
void func_80050754(Object *obj, Object_Racer *obj64, f32 arg2) {
f32 xDiff, yDiff, zDiff;
Object *someObj;
obj->segment.unk3B = 0;
obj->segment.unk18 = 0x28;
someObj = obj64->someObj;
someObj = obj64->unk148;
xDiff = someObj->segment.trans.x_position - obj->segment.trans.x_position;
yDiff = someObj->segment.trans.y_position - obj->segment.trans.y_position;
zDiff = someObj->segment.trans.z_position - obj->segment.trans.z_position;
func_80011570(obj, xDiff, yDiff, zDiff);
obj->segment.trans.y_rotation = obj64->someObj->segment.trans.y_rotation;
obj->segment.trans.x_rotation = obj64->someObj->segment.trans.x_rotation;
obj->segment.trans.z_rotation = obj64->someObj->segment.trans.z_rotation;
obj->segment.trans.y_rotation = obj64->unk148->segment.trans.y_rotation;
obj->segment.trans.x_rotation = obj64->unk148->segment.trans.x_rotation;
obj->segment.trans.z_rotation = obj64->unk148->segment.trans.z_rotation;
obj64->unk1A4 = obj->segment.trans.z_rotation;
obj64->unk1A0 = obj->segment.trans.y_rotation;
obj->segment.x_velocity = xDiff / arg2;
obj->segment.y_velocity = yDiff / arg2;
obj->segment.z_velocity = zDiff / arg2;
obj64->unk1F2 = 0;
obj64->unk2C = 0.0f;
obj64->unk30 = 0.0f;
obj64->velocity = 0.0f;
obj64->lateral_velocity = 0.0f;
}
#else
GLOBAL_ASM("asm/non_matchings/racer/func_80050754.s")
@@ -521,7 +490,7 @@ void func_8005234C(unk8005234C *arg0) {
GLOBAL_ASM("asm/non_matchings/racer/func_80052388.s")
GLOBAL_ASM("asm/non_matchings/racer/func_8005250C.s")
void func_80052988(Object *arg0, Object_64 *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7) {
void func_80052988(Object *arg0, Object_Racer *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7) {
arg5 *= arg7;
if ((D_8011D55C == -1) && (arg2 >= 3)) {
@@ -584,9 +553,9 @@ void func_80052988(Object *arg0, Object_64 *arg1, s32 arg2, s32 arg3, s32 arg4,
GLOBAL_ASM("asm/non_matchings/racer/func_80052B64.s")
GLOBAL_ASM("asm/non_matchings/racer/func_80052D7C.s")
void func_80053478(Object_64_80053478 *obj) {
void func_80053478(Object_Racer *obj) {
s32 phi_v0;
f32 phi_f0 = obj->unk2C;
f32 phi_f0 = obj->velocity;
if (phi_f0 < 0.0) {
phi_f0 = -phi_f0;
@@ -598,13 +567,13 @@ void func_80053478(Object_64_80053478 *obj) {
if (phi_f0 < 0.0) {
phi_f0 = 0.0f;
}
if (obj->unk1E6 != 0) {
if (obj->drift_direction != 0) {
phi_v0 = phi_f0 * 68.0f;
} else {
phi_v0 = phi_f0 * 58.0f;
}
D_8011D554 -= (obj->unk1E1 * phi_v0);
if (obj->unk2C > 0.0f) {
if (obj->velocity > 0.0f) {
D_8011D554 = -D_8011D554;
}
}
@@ -624,7 +593,7 @@ void func_800535C4(unk800535C4 *arg0, unk800535C4_2 *arg1) {
guMtxXFMF(mf, 0.0f, -1.0f, 0.0f, &arg1->ox, &arg1->oy, &arg1->oz);
}
void func_80053664(Object_64 *arg0) {
void func_80053664(Object_Racer *arg0) {
if (arg0->throttle > 0.0) {
arg0->throttle -= 0.1;
}
@@ -653,13 +622,13 @@ GLOBAL_ASM("asm/non_matchings/racer/func_80054FD0.s")
GLOBAL_ASM("asm/non_matchings/racer/func_80055A84.s")
GLOBAL_ASM("asm/non_matchings/racer/func_80055EC0.s")
void play_char_horn_sound(Object *obj, Object_64 *obj64) {
void play_char_horn_sound(Object *obj, Object_Racer *obj64) {
if (get_filtered_cheats() & CHEAT_HORN_CHEAT) {
// Play character voice instead of horn.
func_800570B8(obj, 0x162, 8, 0x82);
} else {
// Play character's horn sound
func_80057048(obj, obj64->unk0_a.unk0_b.unk3 + 0x156);
func_80057048(obj, obj64->characterId + 0x156);
}
}
@@ -667,35 +636,24 @@ GLOBAL_ASM("asm/non_matchings/racer/func_8005698C.s")
GLOBAL_ASM("asm/non_matchings/racer/func_80056E2C.s")
void func_80057048(Object *obj, s32 arg1) {
Object_64 *obj64 = obj->unk64;
Object_Racer *obj64 = &obj->unk64->racer;
if (D_8011D55C != -1 && obj64->unk108 == 0) {
func_80001EA8(arg1, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, NULL);
}
}
void func_800570A4(Object *obj, s32 arg1, s32 arg2) {
Object_64_unk800570A4 *temp = obj->unk64;
Object_Racer *temp = &obj->unk64->racer;
temp->unk20E = arg1;
temp->unk210 = arg2;
}
#ifdef NON_EQUIVALENT
typedef struct Object_64_800570B8 {
u8 pad0[3];
s8 unk3;
u8 pad4[0x20];
s32 unk24;
u16 unk28;
u16 unk2A;
u8 pad2C[0xDC];
s32 unk108;
} Object_64_800570B8;
void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3) {
s32 phi_t0;
Object_64_800570B8 *obj64;
Object_Racer *obj64;
obj64 = obj->unk64;
obj64 = &obj->unk64->racer;
if ((obj64->unk108 == 0) && ((!(arg3 & 0x80)) || (D_8011D55C != -1))) {
if (arg3 == 2) {
if ((obj64->unk24 != 0) && (arg1 != obj64->unk2A)) {
@@ -706,7 +664,7 @@ void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3) {
if (obj64->unk24 == 0) {
if (arg3 != 3 || get_random_number_from_range(0, 1) != 0) {
obj64->unk2A = arg1;
arg1 += obj64->unk3;
arg1 += obj64->characterId;
arg2--;
phi_t0 = (get_random_number_from_range(0, arg2) * 12) + arg1;
if (arg2 > 0) {
@@ -727,7 +685,7 @@ GLOBAL_ASM("asm/non_matchings/racer/func_800570B8.s")
GLOBAL_ASM("asm/non_matchings/racer/func_80057220.s")
void func_800575EC(Object *obj, Object_64_800575EC *obj64) {
void func_800575EC(Object *obj, Object_Racer *obj64) {
Matrix mf;
D_8011D510.y_rotation = obj->segment.trans.y_rotation;
@@ -765,7 +723,7 @@ void func_800579B0(unk800579B0 *arg0, UNUSED s32 arg1, f32 arg2) {
GLOBAL_ASM("asm/non_matchings/racer/func_80057A40.s")
void func_800580B4(Object *obj, Object_64_800580B4 *obj64, s32 arg2, f32 arg3) {
void func_800580B4(Object *obj, Object_Racer *obj64, s32 arg2, f32 arg3) {
f32 xPos, yPos, zPos;
if ((D_8011D55C != -1) && (obj64->unk1D8 != 1)) {
if (arg2 != gCameraObject->unk36) {
+11 -87
View File
@@ -22,45 +22,6 @@ typedef struct ObjectCamera {
/* 0x0036 */ s16 unk36;
} ObjectCamera;
/* Unknown size */
typedef struct Object_64_8004C0A0 {
u8 pad0[0x1D7];
s8 unk1D7;
u8 pad1D8[9];
s8 unk1E1;
u8 pad1E2[0x10];
u8 unk1F2;
} Object_64_8004C0A0;
typedef struct Object_64_8004C140 {
s16 unk0;
u8 pad2[0x183];
s8 unk185;
u8 unk186;
s8 unk187;
u8 pad188[4];
s16 unk18C;
s16 unk18E;
u8 pad190[0x39];
u8 unk1C9;
u8 pad1CA[0xC];
s8 unk1D6;
u8 pad1D7[4];
s8 unk1DB;
u8 pad1DC[0x28];
s16 unk204;
} Object_64_8004C140;
typedef struct Object_64_8004D95C {
u8 unk0[0x118];
s32 unk118;
u8 unk11C[0x38];
Object *someObject;
u8 unk158[0x7E];
s8 unk1D6;
s8 unk1D7;
} Object_64_8004D95C;
typedef struct unk8004F77C {
u8 unk0[0x20A];
u8 unk20A;
@@ -72,15 +33,6 @@ typedef struct unk8005234C {
s16 unk16C;
} unk8005234C;
typedef struct Object_64_80053478 {
u8 unk0[0x2C];
f32 unk2C;
u8 unk30[0x1B1];
s8 unk1E1;
u8 unk1E2[4];
s8 unk1E6;
} Object_64_80053478;
/* Unknown Size */
typedef struct unk800535C4 {
s16 unk0;
@@ -99,46 +51,18 @@ typedef struct unk800535C4_2 {
/* 0x1A4 */ s16 unk1A4;
} unk800535C4_2;
/* Unknown Size */
typedef struct Object_64_unk800570A4 {
u8 unk0[0x108];
s32 unk108;
u8 unk10C[0x102];
s16 unk20E;
s8 unk210;
} Object_64_unk800570A4;
/* Unknown Size */
typedef struct unk80056930 {
u8 unk0[0x3];
s8 unk3;
} unk80056930;
/* Unknown size */
typedef struct Object_64_800575EC {
/* 0x00 */ u8 pad0[0x38];
/* 0x38 */ f32 ox1;
/* 0x3C */ f32 oy1;
/* 0x40 */ f32 oz1;
/* 0x44 */ f32 ox2;
/* 0x48 */ f32 oy2;
/* 0x4C */ f32 oz2;
/* 0x50 */ f32 ox3;
/* 0x54 */ f32 oy3;
/* 0x58 */ f32 oz3;
} Object_64_800575EC;
/* Unknown Size */
typedef struct unk800579B0 {
u8 unk0[0x1E1];
s8 unk1E1;
} unk800579B0;
typedef struct Object_64_800580B4 {
u8 unk0[0x1D8];
s8 unk1D8;
} Object_64_800580B4;
/* Unknown Size */
typedef struct unk8005C270 {
u8 unk0[0x190];
@@ -198,23 +122,23 @@ void func_8006FC30(Matrix, ObjectTransform *); // asm func
void func_8006FE74(Matrix *, ObjectTransform *); // Non Matching ?
s32 func_80044450(s32 arg0);
void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64);
void func_8004C140(Object *obj, Object_64_8004C140 *obj64);
void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_64_8004D95C *obj64);
void func_8004C0A0(s32 arg0, Object *planeObj, Object_Racer *planeObj64);
void func_8004C140(Object *obj, Object_Racer *obj64);
void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_Racer *obj64);
void func_8004F77C(unk8004F77C *arg0);
s32 func_80052188(void);
void func_800521B8(s32 arg0);
void func_8005234C(unk8005234C *arg0);
void func_80052988(Object *arg0, Object_64 *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7);
void func_80053478(Object_64_80053478 *obj);
void func_80052988(Object *arg0, Object_Racer *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7);
void func_80053478(Object_Racer *obj);
void func_800535C4(unk800535C4 *arg0, unk800535C4_2 *arg1);
void func_80053664(Object_64 *arg0);
void play_char_horn_sound(Object *obj, Object_64 *obj64);
void func_80053664(Object_Racer *arg0);
void play_char_horn_sound(Object *obj, Object_Racer *obj64);
void func_80057048(Object *obj, s32 arg1);
void func_800570A4(Object *obj, s32 arg1, s32 arg2);
void func_800575EC(Object *obj, Object_64_800575EC *obj64);
void func_800575EC(Object *obj, Object_Racer *obj64);
void func_800579B0(unk800579B0 *arg0, s32 arg1, f32 arg2);
void func_800580B4(Object *obj, Object_64_800580B4 *obj64, s32 arg2, f32 arg3);
void func_800580B4(Object *obj, Object_Racer *obj64, s32 arg2, f32 arg3);
void get_timestamp_from_frames(s32 frameCount, s32 *minutes, s32 *seconds, s32 *hundredths);
void func_800598D0(void);
void func_80059944(void);
@@ -233,7 +157,7 @@ void func_8005C25C(void);
//Non Matching
void set_ghost_position_and_rotation(Object *obj);
void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3);
void func_800576E0(Object *obj, Object_64_8004C140 *obj64, s32 arg2);
void func_80057A40(Object *obj, Object_64_800580B4 *obj64, f32 arg2);
void func_800576E0(Object *obj, Object_Racer *obj64, s32 arg2);
void func_80057A40(Object *obj, Object_Racer *obj64, f32 arg2);
#endif
+2 -5
View File
@@ -181,6 +181,7 @@ s32 func_800249E0(s32 arg0) {
}
#ifdef NON_EQUIVALENT
void func_8002C0C4(s32 modelId);
void func_800249F0(u32 arg0, u32 arg1, s32 arg2, u32 arg3, u32 arg4, u32 arg5, u32 arg6) {
s32 i;
s32 tmp_a2;
@@ -1178,10 +1179,6 @@ void func_8003093C(s32 arg0) {
#ifdef NON_EQUIVALENT
//unk8011D388 D_8011D388[4];
typedef struct Object_64_FogChanger {
s16 unk0;
} Object_64_FogChanger;
typedef struct Object_3C_FogChanger {
u8 pad0[0x2];
s16 unk2;
@@ -1227,7 +1224,7 @@ void obj_loop_fogchanger(Object* obj) {
index = -1;
if (sp40 != NULL) {
tempObj = sp40[i]; // Might be a player object?
temp_v0 = ((Object_64_FogChanger*)tempObj->unk64)->unk0;
temp_v0 = tempObj->unk64->fog_changer.unk0;
if ((temp_v0 >= 0) && (temp_v0 < MAXCONTROLLERS) && (obj != D_8011D388[i].unk34)) {
index = temp_v0;
x = tempObj->segment.trans.x_position;
+10 -10
View File
@@ -149,8 +149,8 @@ void func_80032C7C(Object *object) {
s16 phi_a0, phi_a1;
unk800DC950 *entry;
if (object->header->unk3D == 0) {
switch (object->header->modelType) {
if (object->segment.header->unk3D == 0) {
switch (object->segment.header->modelType) {
case OBJECT_MODEL_TYPE_3D_MODEL: // 3D Model
sp64 = 2;
break;
@@ -164,9 +164,9 @@ void func_80032C7C(Object *object) {
break;
}
sp82 = object->trans.x_position;
sp80 = object->trans.y_position;
sp7E = object->trans.z_position;
sp82 = object->segment.trans.x_position;
sp80 = object->segment.trans.y_position;
sp7E = object->segment.trans.z_position;
D_800DC968 = 0;
for (i = 0; i < D_800DC95C; i++) {
entry = D_800DC950[i];
@@ -183,9 +183,9 @@ void func_80032C7C(Object *object) {
D_800DC968 = D_800DC968 + 1;
}
} else {
D_8011D4C4 = entry->unk10 - object->trans.x_position;
D_8011D4C8 = entry->unk14 - object->trans.y_position;
D_8011D4CC = entry->unk18 - object->trans.z_position;
D_8011D4C4 = entry->unk10 - object->segment.trans.x_position;
D_8011D4C8 = entry->unk14 - object->segment.trans.y_position;
D_8011D4CC = entry->unk18 - object->segment.trans.z_position;
if (entry->unk0 == 2) {
D_8011D4C8 = 0.0f;
}
@@ -199,7 +199,7 @@ void func_80032C7C(Object *object) {
if (f20 > 0.0f) {
f20 *= func_80033A14(entry);
if (f20 > 0.0f) {
if (object->header->unk71 != 0) {
if (object->segment.header->unk71 != 0) {
if (D_8011D4C0 > 0.0f) {
temp = 1.0f / sqrtf(D_8011D4C0);
D_8011D4C4 *= temp;
@@ -227,7 +227,7 @@ void func_80032C7C(Object *object) {
}
}
if (object->header->unk71 != 0) {
if (object->segment.header->unk71 != 0) {
if (D_800DC968 == 0) {
object->unk54->unk7 = 0;
object->unk54->unk11 = 0;