From 03c54b030b2f500749df24ea68a93d780b13c47a Mon Sep 17 00:00:00 2001 From: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Tue, 3 May 2022 19:26:32 +0100 Subject: [PATCH] match func_800570B8 --- asm/non_matchings/racer/func_800570B8.s | 99 ------------------------- src/racer.c | 42 +++++------ 2 files changed, 17 insertions(+), 124 deletions(-) delete mode 100644 asm/non_matchings/racer/func_800570B8.s diff --git a/asm/non_matchings/racer/func_800570B8.s b/asm/non_matchings/racer/func_800570B8.s deleted file mode 100644 index eccd6912..00000000 --- a/asm/non_matchings/racer/func_800570B8.s +++ /dev/null @@ -1,99 +0,0 @@ -glabel func_800570B8 -/* 057CB8 800570B8 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 057CBC 800570BC AFBF002C */ sw $ra, 0x2c($sp) -/* 057CC0 800570C0 AFB30028 */ sw $s3, 0x28($sp) -/* 057CC4 800570C4 AFB20024 */ sw $s2, 0x24($sp) -/* 057CC8 800570C8 AFB10020 */ sw $s1, 0x20($sp) -/* 057CCC 800570CC AFB0001C */ sw $s0, 0x1c($sp) -/* 057CD0 800570D0 AFA40038 */ sw $a0, 0x38($sp) -/* 057CD4 800570D4 AFA60040 */ sw $a2, 0x40($sp) -/* 057CD8 800570D8 8C920064 */ lw $s2, 0x64($a0) -/* 057CDC 800570DC 00E08025 */ move $s0, $a3 -/* 057CE0 800570E0 8E4F0108 */ lw $t7, 0x108($s2) -/* 057CE4 800570E4 00A09825 */ move $s3, $a1 -/* 057CE8 800570E8 15E00046 */ bnez $t7, .L80057204 -/* 057CEC 800570EC 30F80080 */ andi $t8, $a3, 0x80 -/* 057CF0 800570F0 13000004 */ beqz $t8, .L80057104 -/* 057CF4 800570F4 3C198012 */ lui $t9, %hi(D_8011D55C) # $t9, 0x8012 -/* 057CF8 800570F8 8F39D55C */ lw $t9, %lo(D_8011D55C)($t9) -/* 057CFC 800570FC 2401FFFF */ li $at, -1 -/* 057D00 80057100 13210040 */ beq $t9, $at, .L80057204 -.L80057104: -/* 057D04 80057104 24010002 */ li $at, 2 -/* 057D08 80057108 1601000C */ bne $s0, $at, .L8005713C -/* 057D0C 8005710C 00000000 */ nop -/* 057D10 80057110 8E440024 */ lw $a0, 0x24($s2) -/* 057D14 80057114 00000000 */ nop -/* 057D18 80057118 10800008 */ beqz $a0, .L8005713C -/* 057D1C 8005711C 00000000 */ nop -/* 057D20 80057120 9649002A */ lhu $t1, 0x2a($s2) -/* 057D24 80057124 00000000 */ nop -/* 057D28 80057128 12690004 */ beq $s3, $t1, .L8005713C -/* 057D2C 8005712C 00000000 */ nop -/* 057D30 80057130 0C0025BE */ jal func_800096F8 -/* 057D34 80057134 00000000 */ nop -/* 057D38 80057138 AE400024 */ sw $zero, 0x24($s2) -.L8005713C: -/* 057D3C 8005713C 8E4A0024 */ lw $t2, 0x24($s2) -/* 057D40 80057140 24010003 */ li $at, 3 -/* 057D44 80057144 15400030 */ bnez $t2, .L80057208 -/* 057D48 80057148 8FBF002C */ lw $ra, 0x2c($sp) -/* 057D4C 8005714C 16010005 */ bne $s0, $at, .L80057164 -/* 057D50 80057150 00002025 */ move $a0, $zero -/* 057D54 80057154 0C01BE53 */ jal get_random_number_from_range -/* 057D58 80057158 24050001 */ li $a1, 1 -/* 057D5C 8005715C 1040002A */ beqz $v0, .L80057208 -/* 057D60 80057160 8FBF002C */ lw $ra, 0x2c($sp) -.L80057164: -/* 057D64 80057164 A653002A */ sh $s3, 0x2a($s2) -/* 057D68 80057168 8FB10040 */ lw $s1, 0x40($sp) -/* 057D6C 8005716C 824B0003 */ lb $t3, 3($s2) -/* 057D70 80057170 2631FFFF */ addiu $s1, $s1, -1 -/* 057D74 80057174 02202825 */ move $a1, $s1 -/* 057D78 80057178 00002025 */ move $a0, $zero -/* 057D7C 8005717C 0C01BE53 */ jal get_random_number_from_range -/* 057D80 80057180 026B9821 */ addu $s3, $s3, $t3 -/* 057D84 80057184 2410000C */ li $s0, 12 -/* 057D88 80057188 00500019 */ multu $v0, $s0 -/* 057D8C 8005718C 00006012 */ mflo $t4 -/* 057D90 80057190 01931821 */ addu $v1, $t4, $s3 -/* 057D94 80057194 1A20000D */ blez $s1, .L800571CC -/* 057D98 80057198 00604025 */ move $t0, $v1 -/* 057D9C 8005719C 964D0028 */ lhu $t5, 0x28($s2) -/* 057DA0 800571A0 00000000 */ nop -/* 057DA4 800571A4 146D0009 */ bne $v1, $t5, .L800571CC -/* 057DA8 800571A8 00002025 */ move $a0, $zero -.L800571AC: -/* 057DAC 800571AC 0C01BE53 */ jal get_random_number_from_range -/* 057DB0 800571B0 02202825 */ move $a1, $s1 -/* 057DB4 800571B4 00500019 */ multu $v0, $s0 -/* 057DB8 800571B8 964F0028 */ lhu $t7, 0x28($s2) -/* 057DBC 800571BC 00007012 */ mflo $t6 -/* 057DC0 800571C0 01D34021 */ addu $t0, $t6, $s3 -/* 057DC4 800571C4 110FFFF9 */ beq $t0, $t7, .L800571AC -/* 057DC8 800571C8 00002025 */ move $a0, $zero -.L800571CC: -/* 057DCC 800571CC 8FB80038 */ lw $t8, 0x38($sp) -/* 057DD0 800571D0 24190004 */ li $t9, 4 -/* 057DD4 800571D4 8F05000C */ lw $a1, 0xc($t8) -/* 057DD8 800571D8 8F060010 */ lw $a2, 0x10($t8) -/* 057DDC 800571DC 8F070014 */ lw $a3, 0x14($t8) -/* 057DE0 800571E0 26490024 */ addiu $t1, $s2, 0x24 -/* 057DE4 800571E4 AFA90014 */ sw $t1, 0x14($sp) -/* 057DE8 800571E8 AFA80034 */ sw $t0, 0x34($sp) -/* 057DEC 800571EC AFB90010 */ sw $t9, 0x10($sp) -/* 057DF0 800571F0 0C002556 */ jal func_80009558 -/* 057DF4 800571F4 3104FFFF */ andi $a0, $t0, 0xffff -/* 057DF8 800571F8 8FA80034 */ lw $t0, 0x34($sp) -/* 057DFC 800571FC 00000000 */ nop -/* 057E00 80057200 A6480028 */ sh $t0, 0x28($s2) -.L80057204: -/* 057E04 80057204 8FBF002C */ lw $ra, 0x2c($sp) -.L80057208: -/* 057E08 80057208 8FB0001C */ lw $s0, 0x1c($sp) -/* 057E0C 8005720C 8FB10020 */ lw $s1, 0x20($sp) -/* 057E10 80057210 8FB20024 */ lw $s2, 0x24($sp) -/* 057E14 80057214 8FB30028 */ lw $s3, 0x28($sp) -/* 057E18 80057218 03E00008 */ jr $ra -/* 057E1C 8005721C 27BD0038 */ addiu $sp, $sp, 0x38 - diff --git a/src/racer.c b/src/racer.c index 4d929b96..aed54782 100644 --- a/src/racer.c +++ b/src/racer.c @@ -988,40 +988,32 @@ void func_800570A4(Object *obj, s32 arg1, s32 arg2) { temp->unk210 = arg2; } -#ifdef NON_EQUIVALENT -void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3) { - s32 phi_t0; - Object_Racer *obj64; +void func_800570B8(Object* obj, s32 arg1, s32 arg2, s32 arg3) { + s32 temp_v1; + Object_64* temp_s2; - obj64 = &obj->unk64->racer; - if ((obj64->unk108 == 0) && ((!(arg3 & 0x80)) || (D_8011D55C != -1))) { + temp_s2 = obj->unk64; + if ((temp_s2->racer.unk108 == 0) && ((!(arg3 & 0x80)) || (D_8011D55C != -1))) { if (arg3 == 2) { - if ((obj64->unk24 != 0) && (arg1 != obj64->unk2A)) { - func_800096F8(obj64->unk24); - obj64->unk24 = 0; + if ((temp_s2->racer.unk24 != 0) && (arg1 != temp_s2->racer.unk2A)) { + func_800096F8(temp_s2->racer.unk24); + temp_s2->racer.unk24 = 0; } } - if (obj64->unk24 == 0) { - if (arg3 != 3 || get_random_number_from_range(0, 1) != 0) { - obj64->unk2A = arg1; - arg1 += obj64->characterId; - arg2--; - phi_t0 = (get_random_number_from_range(0, arg2) * 12) + arg1; - if (arg2 > 0) { - while (phi_t0 == obj64->unk28) { - phi_t0 = (get_random_number_from_range(0, arg2) * 12) + arg1; - } + if ((temp_s2->racer.unk24 == 0) && ((arg3 != 3) || (get_random_number_from_range(0, 1) != 0))) { + temp_s2->racer.unk2A = arg1; + arg1 += temp_s2->racer.characterId; + temp_v1 = (get_random_number_from_range(0, arg2 - 1) * 12) + arg1; + if (arg2 - 1 > 0) { + while (temp_v1 == temp_s2->racer.unk28) { + temp_v1 = (get_random_number_from_range(0, arg2 - 1) * 12) + arg1; } - //sp34 = phi_t0; - func_80009558(phi_t0, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, &obj64->unk24); - obj64->unk28 = phi_t0; } + func_80009558(temp_v1, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, &temp_s2->racer.unk24); + temp_s2->racer.unk28 = temp_v1; } } } -#else -GLOBAL_ASM("asm/non_matchings/racer/func_800570B8.s") -#endif GLOBAL_ASM("asm/non_matchings/racer/func_80057220.s")