mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Decomp func_80044170
This commit is contained in:
@@ -1,202 +0,0 @@
|
||||
glabel func_80044170
|
||||
/* 044D70 80044170 27BDFFE0 */ addiu $sp, $sp, -0x20
|
||||
/* 044D74 80044174 AFBF0014 */ sw $ra, 0x14($sp)
|
||||
/* 044D78 80044178 AFA60028 */ sw $a2, 0x28($sp)
|
||||
/* 044D7C 8004417C AFA40020 */ sw $a0, 0x20($sp)
|
||||
/* 044D80 80044180 0C01AF66 */ jal get_current_level_race_type
|
||||
/* 044D84 80044184 AFA50024 */ sw $a1, 0x24($sp)
|
||||
/* 044D88 80044188 8FA40020 */ lw $a0, 0x20($sp)
|
||||
/* 044D8C 8004418C 8FA50024 */ lw $a1, 0x24($sp)
|
||||
/* 044D90 80044190 24010040 */ li $at, 64
|
||||
/* 044D94 80044194 10410008 */ beq $v0, $at, .L800441B8
|
||||
/* 044D98 80044198 00403825 */ move $a3, $v0
|
||||
/* 044D9C 8004419C 24010041 */ li $at, 65
|
||||
/* 044DA0 800441A0 10410005 */ beq $v0, $at, .L800441B8
|
||||
/* 044DA4 800441A4 24010042 */ li $at, 66
|
||||
/* 044DA8 800441A8 1041000C */ beq $v0, $at, .L800441DC
|
||||
/* 044DAC 800441AC 8FA60028 */ lw $a2, 0x28($sp)
|
||||
/* 044DB0 800441B0 10000012 */ b .L800441FC
|
||||
/* 044DB4 800441B4 8FA60028 */ lw $a2, 0x28($sp)
|
||||
.L800441B8:
|
||||
/* 044DB8 800441B8 8FA60028 */ lw $a2, 0x28($sp)
|
||||
/* 044DBC 800441BC AFA50024 */ sw $a1, 0x24($sp)
|
||||
/* 044DC0 800441C0 0C01111F */ jal func_8004447C
|
||||
/* 044DC4 800441C4 AFA7001C */ sw $a3, 0x1c($sp)
|
||||
/* 044DC8 800441C8 8FA50024 */ lw $a1, 0x24($sp)
|
||||
/* 044DCC 800441CC 8FA7001C */ lw $a3, 0x1c($sp)
|
||||
/* 044DD0 800441D0 10000011 */ b .L80044218
|
||||
/* 044DD4 800441D4 80AE0214 */ lb $t6, 0x214($a1)
|
||||
/* 044DD8 800441D8 8FA60028 */ lw $a2, 0x28($sp)
|
||||
.L800441DC:
|
||||
/* 044DDC 800441DC AFA50024 */ sw $a1, 0x24($sp)
|
||||
/* 044DE0 800441E0 0C0114A8 */ jal func_800452A0
|
||||
/* 044DE4 800441E4 AFA7001C */ sw $a3, 0x1c($sp)
|
||||
/* 044DE8 800441E8 8FA50024 */ lw $a1, 0x24($sp)
|
||||
/* 044DEC 800441EC 8FA7001C */ lw $a3, 0x1c($sp)
|
||||
/* 044DF0 800441F0 10000009 */ b .L80044218
|
||||
/* 044DF4 800441F4 80AE0214 */ lb $t6, 0x214($a1)
|
||||
/* 044DF8 800441F8 8FA60028 */ lw $a2, 0x28($sp)
|
||||
.L800441FC:
|
||||
/* 044DFC 800441FC AFA50024 */ sw $a1, 0x24($sp)
|
||||
/* 044E00 80044200 0C011712 */ jal func_80045C48
|
||||
/* 044E04 80044204 AFA7001C */ sw $a3, 0x1c($sp)
|
||||
/* 044E08 80044208 8FA50024 */ lw $a1, 0x24($sp)
|
||||
/* 044E0C 8004420C 8FA7001C */ lw $a3, 0x1c($sp)
|
||||
/* 044E10 80044210 00000000 */ nop
|
||||
/* 044E14 80044214 80AE0214 */ lb $t6, 0x214($a1)
|
||||
.L80044218:
|
||||
/* 044E18 80044218 44805000 */ mtc1 $zero, $f10
|
||||
/* 044E1C 8004421C 15C00012 */ bnez $t6, .L80044268
|
||||
/* 044E20 80044220 3C01BFE0 */ li $at, 0xBFE00000 # -1.750000
|
||||
/* 044E24 80044224 C4A4002C */ lwc1 $f4, 0x2c($a1)
|
||||
/* 044E28 80044228 44814800 */ mtc1 $at, $f9
|
||||
/* 044E2C 8004422C 44804000 */ mtc1 $zero, $f8
|
||||
/* 044E30 80044230 460021A1 */ cvt.d.s $f6, $f4
|
||||
/* 044E34 80044234 4628303C */ c.lt.d $f6, $f8
|
||||
/* 044E38 80044238 8FA30028 */ lw $v1, 0x28($sp)
|
||||
/* 044E3C 8004423C 4500000A */ bc1f .L80044268
|
||||
/* 044E40 80044240 00000000 */ nop
|
||||
/* 044E44 80044244 80AF0215 */ lb $t7, 0x215($a1)
|
||||
/* 044E48 80044248 00000000 */ nop
|
||||
/* 044E4C 8004424C 01E3C023 */ subu $t8, $t7, $v1
|
||||
/* 044E50 80044250 A0B80215 */ sb $t8, 0x215($a1)
|
||||
/* 044E54 80044254 80B90215 */ lb $t9, 0x215($a1)
|
||||
/* 044E58 80044258 00000000 */ nop
|
||||
/* 044E5C 8004425C 07210002 */ bgez $t9, .L80044268
|
||||
/* 044E60 80044260 00000000 */ nop
|
||||
/* 044E64 80044264 A0A00215 */ sb $zero, 0x215($a1)
|
||||
.L80044268:
|
||||
/* 044E68 80044268 C4B0002C */ lwc1 $f16, 0x2c($a1)
|
||||
/* 044E6C 8004426C 3C01BFF0 */ li $at, 0xBFF00000 # -1.875000
|
||||
/* 044E70 80044270 44815800 */ mtc1 $at, $f11
|
||||
/* 044E74 80044274 460084A1 */ cvt.d.s $f18, $f16
|
||||
/* 044E78 80044278 4632503C */ c.lt.d $f10, $f18
|
||||
/* 044E7C 8004427C 8FA30028 */ lw $v1, 0x28($sp)
|
||||
/* 044E80 80044280 80A20214 */ lb $v0, 0x214($a1)
|
||||
/* 044E84 80044284 4500003B */ bc1f .L80044374
|
||||
/* 044E88 80044288 00435023 */ subu $t2, $v0, $v1
|
||||
/* 044E8C 8004428C 14400038 */ bnez $v0, .L80044370
|
||||
/* 044E90 80044290 3C088012 */ lui $t0, %hi(D_8011D540) # $t0, 0x8012
|
||||
/* 044E94 80044294 8D08D540 */ lw $t0, %lo(D_8011D540)($t0)
|
||||
/* 044E98 80044298 3C018012 */ lui $at, %hi(D_8011D544) # $at, 0x8012
|
||||
/* 044E9C 8004429C 15000035 */ bnez $t0, .L80044374
|
||||
/* 044EA0 800442A0 00435023 */ subu $t2, $v0, $v1
|
||||
/* 044EA4 800442A4 44802000 */ mtc1 $zero, $f4
|
||||
/* 044EA8 800442A8 C426D544 */ lwc1 $f6, %lo(D_8011D544)($at)
|
||||
/* 044EAC 800442AC 00000000 */ nop
|
||||
/* 044EB0 800442B0 46062032 */ c.eq.s $f4, $f6
|
||||
/* 044EB4 800442B4 00000000 */ nop
|
||||
/* 044EB8 800442B8 4500002E */ bc1f .L80044374
|
||||
/* 044EBC 800442BC 00435023 */ subu $t2, $v0, $v1
|
||||
/* 044EC0 800442C0 80A901E2 */ lb $t1, 0x1e2($a1)
|
||||
/* 044EC4 800442C4 00000000 */ nop
|
||||
/* 044EC8 800442C8 1120002A */ beqz $t1, .L80044374
|
||||
/* 044ECC 800442CC 00435023 */ subu $t2, $v0, $v1
|
||||
/* 044ED0 800442D0 80AA0215 */ lb $t2, 0x215($a1)
|
||||
/* 044ED4 800442D4 00000000 */ nop
|
||||
/* 044ED8 800442D8 15400026 */ bnez $t2, .L80044374
|
||||
/* 044EDC 800442DC 00435023 */ subu $t2, $v0, $v1
|
||||
/* 044EE0 800442E0 80AB0213 */ lb $t3, 0x213($a1)
|
||||
/* 044EE4 800442E4 240E003C */ li $t6, 60
|
||||
/* 044EE8 800442E8 01636021 */ addu $t4, $t3, $v1
|
||||
/* 044EEC 800442EC A0AC0213 */ sb $t4, 0x213($a1)
|
||||
/* 044EF0 800442F0 80AD0213 */ lb $t5, 0x213($a1)
|
||||
/* 044EF4 800442F4 240F0078 */ li $t7, 120
|
||||
/* 044EF8 800442F8 29A1003D */ slti $at, $t5, 0x3d
|
||||
/* 044EFC 800442FC 14200019 */ bnez $at, .L80044364
|
||||
/* 044F00 80044300 30F80040 */ andi $t8, $a3, 0x40
|
||||
/* 044F04 80044304 A0A00213 */ sb $zero, 0x213($a1)
|
||||
/* 044F08 80044308 A0AE0214 */ sb $t6, 0x214($a1)
|
||||
/* 044F0C 8004430C 17000007 */ bnez $t8, .L8004432C
|
||||
/* 044F10 80044310 A0AF0215 */ sb $t7, 0x215($a1)
|
||||
/* 044F14 80044314 80B901CA */ lb $t9, 0x1ca($a1)
|
||||
/* 044F18 80044318 00000000 */ nop
|
||||
/* 044F1C 8004431C 27280001 */ addiu $t0, $t9, 1
|
||||
/* 044F20 80044320 31090003 */ andi $t1, $t0, 3
|
||||
/* 044F24 80044324 1000000F */ b .L80044364
|
||||
/* 044F28 80044328 A0A901CA */ sb $t1, 0x1ca($a1)
|
||||
.L8004432C:
|
||||
/* 044F2C 8004432C 24010040 */ li $at, 64
|
||||
/* 044F30 80044330 10E10003 */ beq $a3, $at, .L80044340
|
||||
/* 044F34 80044334 24010041 */ li $at, 65
|
||||
/* 044F38 80044338 14E1000A */ bne $a3, $at, .L80044364
|
||||
/* 044F3C 8004433C 00000000 */ nop
|
||||
.L80044340:
|
||||
/* 044F40 80044340 90A401CE */ lbu $a0, 0x1ce($a1)
|
||||
/* 044F44 80044344 240100FF */ li $at, 255
|
||||
/* 044F48 80044348 10810006 */ beq $a0, $at, .L80044364
|
||||
/* 044F4C 8004434C 00000000 */ nop
|
||||
/* 044F50 80044350 0C007485 */ jal func_8001D214
|
||||
/* 044F54 80044354 AFA50024 */ sw $a1, 0x24($sp)
|
||||
/* 044F58 80044358 8FA50024 */ lw $a1, 0x24($sp)
|
||||
/* 044F5C 8004435C 00000000 */ nop
|
||||
/* 044F60 80044360 ACA20154 */ sw $v0, 0x154($a1)
|
||||
.L80044364:
|
||||
/* 044F64 80044364 80A20214 */ lb $v0, 0x214($a1)
|
||||
/* 044F68 80044368 1000000A */ b .L80044394
|
||||
/* 044F6C 8004436C 00000000 */ nop
|
||||
.L80044370:
|
||||
/* 044F70 80044370 00435023 */ subu $t2, $v0, $v1
|
||||
.L80044374:
|
||||
/* 044F74 80044374 A0AA0214 */ sb $t2, 0x214($a1)
|
||||
/* 044F78 80044378 80A20214 */ lb $v0, 0x214($a1)
|
||||
/* 044F7C 8004437C A0A00213 */ sb $zero, 0x213($a1)
|
||||
/* 044F80 80044380 04410004 */ bgez $v0, .L80044394
|
||||
/* 044F84 80044384 00000000 */ nop
|
||||
/* 044F88 80044388 A0A00214 */ sb $zero, 0x214($a1)
|
||||
/* 044F8C 8004438C 80A20214 */ lb $v0, 0x214($a1)
|
||||
/* 044F90 80044390 00000000 */ nop
|
||||
.L80044394:
|
||||
/* 044F94 80044394 10400012 */ beqz $v0, .L800443E0
|
||||
/* 044F98 80044398 3C038012 */ lui $v1, %hi(D_8011D534) # $v1, 0x8012
|
||||
/* 044F9C 8004439C 3C028012 */ lui $v0, %hi(D_8011D528) # $v0, 0x8012
|
||||
/* 044FA0 800443A0 2442D528 */ addiu $v0, %lo(D_8011D528) # addiu $v0, $v0, -0x2ad8
|
||||
/* 044FA4 800443A4 8C4D0000 */ lw $t5, ($v0)
|
||||
/* 044FA8 800443A8 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff
|
||||
/* 044FAC 800443AC 2463D534 */ addiu $v1, %lo(D_8011D534) # addiu $v1, $v1, -0x2acc
|
||||
/* 044FB0 800443B0 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff
|
||||
/* 044FB4 800443B4 8C6B0000 */ lw $t3, ($v1)
|
||||
/* 044FB8 800443B8 01A17024 */ and $t6, $t5, $at
|
||||
/* 044FBC 800443BC 3C048012 */ lui $a0, %hi(D_8011D538) # $a0, 0x8012
|
||||
/* 044FC0 800443C0 2484D538 */ addiu $a0, %lo(D_8011D538) # addiu $a0, $a0, -0x2ac8
|
||||
/* 044FC4 800443C4 AC4E0000 */ sw $t6, ($v0)
|
||||
/* 044FC8 800443C8 240FFFCE */ li $t7, -50
|
||||
/* 044FCC 800443CC 35D94000 */ ori $t9, $t6, 0x4000
|
||||
/* 044FD0 800443D0 000B6023 */ negu $t4, $t3
|
||||
/* 044FD4 800443D4 AC6C0000 */ sw $t4, ($v1)
|
||||
/* 044FD8 800443D8 AC8F0000 */ sw $t7, ($a0)
|
||||
/* 044FDC 800443DC AC590000 */ sw $t9, ($v0)
|
||||
.L800443E0:
|
||||
/* 044FE0 800443E0 3C038012 */ lui $v1, %hi(D_8011D534) # $v1, 0x8012
|
||||
/* 044FE4 800443E4 2463D534 */ addiu $v1, %lo(D_8011D534) # addiu $v1, $v1, -0x2acc
|
||||
/* 044FE8 800443E8 8C620000 */ lw $v0, ($v1)
|
||||
/* 044FEC 800443EC 3C048012 */ lui $a0, %hi(D_8011D538) # $a0, 0x8012
|
||||
/* 044FF0 800443F0 2841004C */ slti $at, $v0, 0x4c
|
||||
/* 044FF4 800443F4 14200003 */ bnez $at, .L80044404
|
||||
/* 044FF8 800443F8 2484D538 */ addiu $a0, %lo(D_8011D538) # addiu $a0, $a0, -0x2ac8
|
||||
/* 044FFC 800443FC 2402004B */ li $v0, 75
|
||||
/* 045000 80044400 AC620000 */ sw $v0, ($v1)
|
||||
.L80044404:
|
||||
/* 045004 80044404 2841FFB5 */ slti $at, $v0, -0x4b
|
||||
/* 045008 80044408 10200002 */ beqz $at, .L80044414
|
||||
/* 04500C 8004440C 2409FFB5 */ li $t1, -75
|
||||
/* 045010 80044410 AC690000 */ sw $t1, ($v1)
|
||||
.L80044414:
|
||||
/* 045014 80044414 8C820000 */ lw $v0, ($a0)
|
||||
/* 045018 80044418 240BFFB5 */ li $t3, -75
|
||||
/* 04501C 8004441C 2841004C */ slti $at, $v0, 0x4c
|
||||
/* 045020 80044420 14200004 */ bnez $at, .L80044434
|
||||
/* 045024 80044424 2841FFB5 */ slti $at, $v0, -0x4b
|
||||
/* 045028 80044428 2402004B */ li $v0, 75
|
||||
/* 04502C 8004442C AC820000 */ sw $v0, ($a0)
|
||||
/* 045030 80044430 2841FFB5 */ slti $at, $v0, -0x4b
|
||||
.L80044434:
|
||||
/* 045034 80044434 10200003 */ beqz $at, .L80044444
|
||||
/* 045038 80044438 8FBF0014 */ lw $ra, 0x14($sp)
|
||||
/* 04503C 8004443C AC8B0000 */ sw $t3, ($a0)
|
||||
/* 045040 80044440 8FBF0014 */ lw $ra, 0x14($sp)
|
||||
.L80044444:
|
||||
/* 045044 80044444 27BD0020 */ addiu $sp, $sp, 0x20
|
||||
/* 045048 80044448 03E00008 */ jr $ra
|
||||
/* 04504C 8004444C 00000000 */ nop
|
||||
|
||||
+95
-4
@@ -34,7 +34,7 @@ f32 D_800DCB60[14] = {
|
||||
};
|
||||
|
||||
s32 D_800DCB98 = 0; // Currently unknown, might be a different type.
|
||||
f32 D_800DCB9C[19] = {
|
||||
f32 D_800DCB9C[19] = {
|
||||
0.004f, 0.007f, 0.0099999999f, 0.004f,
|
||||
0.0099999999f, 0.0099999999f, 0.0099999999f, 0.0099999999f,
|
||||
0.0099999999f, 0.0099999999f, 0.004f, 0.004f,
|
||||
@@ -142,7 +142,7 @@ s32 D_8011D534;
|
||||
s32 D_8011D538;
|
||||
s32 D_8011D53C;
|
||||
s32 D_8011D540;
|
||||
s32 D_8011D544;
|
||||
f32 D_8011D544;
|
||||
s32 D_8011D548;
|
||||
s32 D_8011D54C;
|
||||
s16 D_8011D550;
|
||||
@@ -195,7 +195,98 @@ s8 D_8011D5BC;
|
||||
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80042D20.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80043ECC.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80044170.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) {
|
||||
s32 raceType;
|
||||
|
||||
raceType = get_current_level_race_type();
|
||||
|
||||
switch (raceType) {
|
||||
case 0x40:
|
||||
case 0x41:
|
||||
func_8004447C(arg0, arg1, arg2);
|
||||
break;
|
||||
case 0x42:
|
||||
func_800452A0(arg0, arg1, arg2);
|
||||
break;
|
||||
default:
|
||||
// last argument was required for match, might not really exist
|
||||
func_80045C48(arg0, arg1, arg2, raceType);
|
||||
break;
|
||||
}
|
||||
|
||||
if (arg1->unk214 == 0 && arg1->unk2C < -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) {
|
||||
arg1->unk213 += arg2;
|
||||
|
||||
if (arg1->unk213 > 0x3C) {
|
||||
arg1->unk213 = 0;
|
||||
arg1->unk214 = 0x3C;
|
||||
arg1->unk215 = 0x78;
|
||||
|
||||
if ((raceType & 0x40) == 0) {
|
||||
arg1->unk1CA = (arg1->unk1CA + 1) & 3;
|
||||
} else if (raceType == 0x40 || raceType == 0x41) {
|
||||
if (arg1->unk1CE != 0xFF) {
|
||||
arg1->unk154 = func_8001D214(arg1->unk1CE);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
arg1->unk214 -= arg2;
|
||||
arg1->unk213 = 0;
|
||||
|
||||
if (arg1->unk214 < 0) {
|
||||
arg1->unk214 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (arg1->unk214 != 0) {
|
||||
D_8011D534 *= -1;
|
||||
D_8011D528 &= ~0x8000;
|
||||
D_8011D538 = -0x32;
|
||||
D_8011D528 |= 0x4000;
|
||||
}
|
||||
|
||||
if (D_8011D534 > 0x4B) {
|
||||
D_8011D534 = 0x4B;
|
||||
}
|
||||
|
||||
if (D_8011D534 < -0x4B) {
|
||||
D_8011D534 = -0x4B;
|
||||
}
|
||||
|
||||
if (D_8011D538 > 0x4B) {
|
||||
D_8011D538 = 0x4B;
|
||||
}
|
||||
|
||||
if (D_8011D538 < -0x4B) {
|
||||
D_8011D538 = -0x4B;
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_80044450(s32 arg0) {
|
||||
return get_random_number_from_range(0, 99) < arg0;
|
||||
@@ -775,7 +866,7 @@ s32 func_800599B8(s32 arg0, s32 arg1, s16 arg2, s32 arg3, s32 arg4) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads T.T. ghost node data into gGhostData[2].
|
||||
* Loads T.T. ghost node data into gGhostData[2].
|
||||
* Returns 0 if successful, or 1 if an error occured.
|
||||
*/
|
||||
s32 load_tt_ghost(s32 ghostOffset, s32 size, s16 *outTime) {
|
||||
|
||||
Reference in New Issue
Block a user