mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
match func_80070750
This commit is contained in:
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user