match func_80070750

This commit is contained in:
Fazana
2022-04-27 12:33:05 +01:00
parent f617bce3d2
commit 7c4d2eb64f
3 changed files with 59 additions and 115 deletions
-110
View File
@@ -1,110 +0,0 @@
glabel func_80052388
/* 052F88 80052388 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 052F8C 8005238C AFBF0014 */ sw $ra, 0x14($sp)
/* 052F90 80052390 AFA70034 */ sw $a3, 0x34($sp)
/* 052F94 80052394 C486000C */ lwc1 $f6, 0xc($a0)
/* 052F98 80052398 C4C4000C */ lwc1 $f4, 0xc($a2)
/* 052F9C 8005239C C48A0014 */ lwc1 $f10, 0x14($a0)
/* 052FA0 800523A0 46062301 */ sub.s $f12, $f4, $f6
/* 052FA4 800523A4 C4C80014 */ lwc1 $f8, 0x14($a2)
/* 052FA8 800523A8 460C6402 */ mul.s $f16, $f12, $f12
/* 052FAC 800523AC 460A4381 */ sub.s $f14, $f8, $f10
/* 052FB0 800523B0 C7A60034 */ lwc1 $f6, 0x34($sp)
/* 052FB4 800523B4 00001825 */ move $v1, $zero
/* 052FB8 800523B8 460E7482 */ mul.s $f18, $f14, $f14
/* 052FBC 800523BC 46128100 */ add.s $f4, $f16, $f18
/* 052FC0 800523C0 4606203C */ c.lt.s $f4, $f6
/* 052FC4 800523C4 00000000 */ nop
/* 052FC8 800523C8 4500004D */ bc1f .L80052500
/* 052FCC 800523CC 8FBF0014 */ lw $ra, 0x14($sp)
/* 052FD0 800523D0 AFA40028 */ sw $a0, 0x28($sp)
/* 052FD4 800523D4 AFA5002C */ sw $a1, 0x2c($sp)
/* 052FD8 800523D8 AFA60030 */ sw $a2, 0x30($sp)
/* 052FDC 800523DC E7AC0020 */ swc1 $f12, 0x20($sp)
/* 052FE0 800523E0 0C01C1D4 */ jal func_80070750
/* 052FE4 800523E4 E7AE001C */ swc1 $f14, 0x1c($sp)
/* 052FE8 800523E8 8FA40028 */ lw $a0, 0x28($sp)
/* 052FEC 800523EC 34018000 */ li $at, 32768
/* 052FF0 800523F0 848E0000 */ lh $t6, ($a0)
/* 052FF4 800523F4 8FA5002C */ lw $a1, 0x2c($sp)
/* 052FF8 800523F8 31CFFFFF */ andi $t7, $t6, 0xffff
/* 052FFC 800523FC 004F1823 */ subu $v1, $v0, $t7
/* 053000 80052400 00611821 */ addu $v1, $v1, $at
/* 053004 80052404 34018001 */ li $at, 32769
/* 053008 80052408 8FA60030 */ lw $a2, 0x30($sp)
/* 05300C 8005240C C7AC0020 */ lwc1 $f12, 0x20($sp)
/* 053010 80052410 C7AE001C */ lwc1 $f14, 0x1c($sp)
/* 053014 80052414 0061082A */ slt $at, $v1, $at
/* 053018 80052418 14200003 */ bnez $at, .L80052428
/* 05301C 8005241C 3C01FFFF */ lui $at, (0xFFFF0001 >> 16) # lui $at, 0xffff
/* 053020 80052420 34210001 */ ori $at, (0xFFFF0001 & 0xFFFF) # ori $at, $at, 1
/* 053024 80052424 00611821 */ addu $v1, $v1, $at
.L80052428:
/* 053028 80052428 28618000 */ slti $at, $v1, -0x8000
/* 05302C 8005242C 10200002 */ beqz $at, .L80052438
/* 053030 80052430 3401FFFF */ li $at, 65535
/* 053034 80052434 00611821 */ addu $v1, $v1, $at
.L80052438:
/* 053038 80052438 28613001 */ slti $at, $v1, 0x3001
/* 05303C 8005243C 14200003 */ bnez $at, .L8005244C
/* 053040 80052440 2861D000 */ slti $at, $v1, -0x3000
/* 053044 80052444 24033000 */ li $v1, 12288
/* 053048 80052448 2861D000 */ slti $at, $v1, -0x3000
.L8005244C:
/* 05304C 8005244C 10200002 */ beqz $at, .L80052458
/* 053050 80052450 00000000 */ nop
/* 053054 80052454 2403D000 */ li $v1, -12288
.L80052458:
/* 053058 80052458 80B801E7 */ lb $t8, 0x1e7($a1)
/* 05305C 8005245C A4A3016C */ sh $v1, 0x16c($a1)
/* 053060 80052460 3319003F */ andi $t9, $t8, 0x3f
/* 053064 80052464 2B21001F */ slti $at, $t9, 0x1f
/* 053068 80052468 10200002 */ beqz $at, .L80052474
/* 05306C 8005246C 00000000 */ nop
/* 053070 80052470 A4A0016C */ sh $zero, 0x16c($a1)
.L80052474:
/* 053074 80052474 8CC50064 */ lw $a1, 0x64($a2)
/* 053078 80052478 AFA40028 */ sw $a0, 0x28($sp)
/* 05307C 8005247C 0C01C1D4 */ jal func_80070750
/* 053080 80052480 AFA5002C */ sw $a1, 0x2c($sp)
/* 053084 80052484 8FA40028 */ lw $a0, 0x28($sp)
/* 053088 80052488 34018001 */ li $at, 32769
/* 05308C 8005248C 84880000 */ lh $t0, ($a0)
/* 053090 80052490 8FA5002C */ lw $a1, 0x2c($sp)
/* 053094 80052494 3109FFFF */ andi $t1, $t0, 0xffff
/* 053098 80052498 00491823 */ subu $v1, $v0, $t1
/* 05309C 8005249C 0061082A */ slt $at, $v1, $at
/* 0530A0 800524A0 14200003 */ bnez $at, .L800524B0
/* 0530A4 800524A4 3C01FFFF */ lui $at, (0xFFFF0001 >> 16) # lui $at, 0xffff
/* 0530A8 800524A8 34210001 */ ori $at, (0xFFFF0001 & 0xFFFF) # ori $at, $at, 1
/* 0530AC 800524AC 00611821 */ addu $v1, $v1, $at
.L800524B0:
/* 0530B0 800524B0 28618000 */ slti $at, $v1, -0x8000
/* 0530B4 800524B4 10200002 */ beqz $at, .L800524C0
/* 0530B8 800524B8 3401FFFF */ li $at, 65535
/* 0530BC 800524BC 00611821 */ addu $v1, $v1, $at
.L800524C0:
/* 0530C0 800524C0 28613001 */ slti $at, $v1, 0x3001
/* 0530C4 800524C4 14200003 */ bnez $at, .L800524D4
/* 0530C8 800524C8 2861D000 */ slti $at, $v1, -0x3000
/* 0530CC 800524CC 24033000 */ li $v1, 12288
/* 0530D0 800524D0 2861D000 */ slti $at, $v1, -0x3000
.L800524D4:
/* 0530D4 800524D4 10200002 */ beqz $at, .L800524E0
/* 0530D8 800524D8 00000000 */ nop
/* 0530DC 800524DC 2403D000 */ li $v1, -12288
.L800524E0:
/* 0530E0 800524E0 80AA01E7 */ lb $t2, 0x1e7($a1)
/* 0530E4 800524E4 A4A3016C */ sh $v1, 0x16c($a1)
/* 0530E8 800524E8 314B001F */ andi $t3, $t2, 0x1f
/* 0530EC 800524EC 2961000A */ slti $at, $t3, 0xa
/* 0530F0 800524F0 10200002 */ beqz $at, .L800524FC
/* 0530F4 800524F4 24030001 */ li $v1, 1
/* 0530F8 800524F8 A4A0016C */ sh $zero, 0x16c($a1)
.L800524FC:
/* 0530FC 800524FC 8FBF0014 */ lw $ra, 0x14($sp)
.L80052500:
/* 053100 80052500 27BD0028 */ addiu $sp, $sp, 0x28
/* 053104 80052504 03E00008 */ jr $ra
/* 053108 80052508 00601025 */ move $v0, $v1
+7 -4
View File
@@ -413,7 +413,7 @@ typedef struct LevelModelSegment {
/* 0x1E */ s16 numberOfTriangles;
/* 0x20 */ s16 numberOfBatches;
u8 pad22[0x09];
/* 0x2B */ s8 unk2B;
/* 0x2B */ s8 unk2B;
u8 pad2C[4];
/* 0x30 */ s16 unk30;
/* 0x32 */ s16 unk32;
@@ -454,7 +454,7 @@ typedef struct LevelModel {
u8 pad1C[4];
/* 0x20 */ s32 unk20; //spriteIndex?
u8 pad24[0x14];
/* 0x38 */ u32 minimapColor;
/* 0x38 */ u32 minimapColor;
u8 pad3C[0xC];
/* 0x48 */ s32 modelSize;
} LevelModel;
@@ -836,7 +836,9 @@ typedef struct Object_Racer {
/* 0x162 */ s16 unk162;
/* 0x164 */ s16 unk164;
/* 0x166 */ s16 unk166;
/* 0x168 */ u8 pad168[0xA];
/* 0x168 */ u8 pad168[0x4];
/* 0x166 */ s16 unk16C;
/* 0x168 */ u8 pad16E[0x4];
/* 0x172 */ u8 balloon_type;
/* 0x173 */ u8 balloon_quantity;
/* 0x174 */ u8 balloon_level;
@@ -877,7 +879,8 @@ typedef struct Object_Racer {
/* 0x1E2 */ s8 unk1E2;
/* 0x1E3 */ u8 pad1E3[0x3];
/* 0x1E6 */ s8 drift_direction;
/* 0x1E7 */ u8 pad1E7[0x6];
/* 0x1E7 */ s8 unk1E7;
/* 0x1E8 */ u8 pad1E8[0x5];
/* 0x1ED */ s8 squish_timer;
/* 0x1EE */ u8 pad1EE[0x1];
/* 0x1EF */ u8 boost_sound;
+52 -1
View File
@@ -576,7 +576,58 @@ void func_8005234C(unk8005234C *arg0) {
}
}
GLOBAL_ASM("asm/non_matchings/racer/func_80052388.s")
extern s16 func_80070750(f32 y, f32 x);
s32 func_80052388(Object* obj1, Object_Racer* arg1, Object* obj2, f32 distance) {
s32 rotation;
f32 diffX;
f32 diffZ;
s32 ret = FALSE;
diffX = obj2->segment.trans.x_position - obj1->segment.trans.x_position;
diffZ = obj2->segment.trans.z_position - obj1->segment.trans.z_position;
if ((diffX * diffX) + (diffZ * diffZ) < distance) {
rotation = (func_80070750(diffX, diffZ) - (obj1->segment.trans.y_rotation & 0xFFFF)) + 0x8000;
if (rotation > 0x8000) {
rotation += 0xFFFF0001;
}
if (rotation < -0x8000) {
rotation += 0xFFFF;
}
if (rotation > 0x3000) {
rotation = 0x3000;
}
if (rotation < -0x3000) {
rotation = -0x3000;
}
arg1->unk16C = rotation;
if ((arg1->unk1E7 & 0x3F) < 0x1F) {
arg1->unk16C = 0;
}
arg1 = (struct Object_Racer *) obj2->unk64;
rotation = func_80070750(diffX, diffZ) - (obj1->segment.trans.y_rotation & 0xFFFF);
if (rotation > 0x8000) {
rotation += 0xFFFF0001;
}
if (rotation < -0x8000) {
rotation += 0xFFFF;
}
if (rotation > 0x3000) {
rotation = 0x3000;
}
if (rotation < -0x3000) {
rotation = -0x3000;
}
arg1->unk16C = rotation;
if (ret) {}
ret = TRUE;
if ((arg1->unk1E7 & 0x1F) < 0xA) {
arg1->unk16C = 0;
}
}
return ret;
}
GLOBAL_ASM("asm/non_matchings/racer/func_8005250C.s")
// action seems to be 1 when you're reversing, if you hit the horn, it's 4, and if you introduce yourself to a brick wall, it's 3 then 6.