From 9fd84ea645e7ab717020735191a4c08a407922d7 Mon Sep 17 00:00:00 2001 From: tonyspumoni <94409037+tonyspumoni@users.noreply.github.com> Date: Fri, 18 Nov 2022 17:22:19 -0700 Subject: [PATCH] Some racer matches and other stuff (#287) * some matches * match func_8000FBCC * match 3 funcs * update score * fix undone name * add back remvoed UNUSED, and match func_8007C860 * remove forgotten file * update score 1 more time * actually update score --- README.md | 16 ++-- asm/non_matchings/objects/func_8000FBCC.s | 44 ---------- asm/non_matchings/objects/func_8001B834.s | 82 ------------------ asm/non_matchings/objects/func_8001B974.s | 49 ----------- .../textures_sprites/func_8007C860.s | 19 ----- .../textures_sprites/func_8007C8A0.s | 20 ----- include/structs.h | 2 +- src/objects.c | 85 ++++++++++++++++++- src/objects.h | 2 +- src/racer.c | 22 ++--- src/textures_sprites.c | 13 +-- 11 files changed, 104 insertions(+), 250 deletions(-) delete mode 100644 asm/non_matchings/objects/func_8000FBCC.s delete mode 100644 asm/non_matchings/objects/func_8001B834.s delete mode 100644 asm/non_matchings/objects/func_8001B974.s delete mode 100644 asm/non_matchings/textures_sprites/func_8007C860.s delete mode 100644 asm/non_matchings/textures_sprites/func_8007C8A0.s diff --git a/README.md b/README.md index 8f3bed00..8a97e5a9 100644 --- a/README.md +++ b/README.md @@ -120,20 +120,20 @@ s32 is_drumstick_unlocked(void) { ``` -As of November 15, 2022, this is our current score: +As of November 18, 2022, this is our current score: ``` ================================================================= ADVENTURE ONE (ASM -> C Decompilation) - ------------------------ 37.60% Complete ------------------------ - # Decompiled functions: 1342 - # GLOBAL_ASM remaining: 494 - # NON_MATCHING functions: 11 - # NON_EQUIVALENT WIP functions: 93 + ------------------------ 37.71% Complete ------------------------ + # Decompiled functions: 1348 + # GLOBAL_ASM remaining: 488 + # NON_MATCHING functions: 9 + # NON_EQUIVALENT WIP functions: 92 -------------------------- Game Status -------------------------- Balloons: 18/47, Keys: 2/4, Trophies: 1/5 T.T. Amulets: 2/4, Wizpig Amulets: 1/4 ----------------------------------------------------------------- - We are collecting silver coins in Walrus Cove. (7/8 silver coins) + We are collecting silver coins in Walrus Cove. (8/8 silver coins) ================================================================= ADVENTURE TWO (Cleanup & Documentation) ------------------------ 9.24% Complete ------------------------ @@ -145,7 +145,7 @@ As of November 15, 2022, this is our current score: ----------------------------------------------------------------- We are racing in Jungle Falls. (Lap 1/3) ================================================================= - ``` +``` --- diff --git a/asm/non_matchings/objects/func_8000FBCC.s b/asm/non_matchings/objects/func_8000FBCC.s deleted file mode 100644 index 164cdf29..00000000 --- a/asm/non_matchings/objects/func_8000FBCC.s +++ /dev/null @@ -1,44 +0,0 @@ -glabel func_8000FBCC -/* 0107CC 8000FBCC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0107D0 8000FBD0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0107D4 8000FBD4 AC850050 */ sw $a1, 0x50($a0) -/* 0107D8 8000FBD8 ACA00004 */ sw $zero, 4($a1) -/* 0107DC 8000FBDC 8C830040 */ lw $v1, 0x40($a0) -/* 0107E0 8000FBE0 00803025 */ move $a2, $a0 -/* 0107E4 8000FBE4 846E0032 */ lh $t6, 0x32($v1) -/* 0107E8 8000FBE8 00000000 */ nop -/* 0107EC 8000FBEC 11C0000A */ beqz $t6, .L8000FC18 -/* 0107F0 8000FBF0 00000000 */ nop -/* 0107F4 8000FBF4 84640034 */ lh $a0, 0x34($v1) -/* 0107F8 8000FBF8 AFA60018 */ sw $a2, 0x18($sp) -/* 0107FC 8000FBFC 0C01EB9D */ jal load_texture -/* 010800 8000FC00 AFA5001C */ sw $a1, 0x1c($sp) -/* 010804 8000FC04 8FA5001C */ lw $a1, 0x1c($sp) -/* 010808 8000FC08 8FA60018 */ lw $a2, 0x18($sp) -/* 01080C 8000FC0C ACA20004 */ sw $v0, 4($a1) -/* 010810 8000FC10 8CC30040 */ lw $v1, 0x40($a2) -/* 010814 8000FC14 00000000 */ nop -.L8000FC18: -/* 010818 8000FC18 C4640004 */ lwc1 $f4, 4($v1) -/* 01081C 8000FC1C 8CB80004 */ lw $t8, 4($a1) -/* 010820 8000FC20 240FFFFF */ li $t7, -1 -/* 010824 8000FC24 A4AF0008 */ sh $t7, 8($a1) -/* 010828 8000FC28 3C018012 */ lui $at, %hi(D_8011AE50) # $at, 0x8012 -/* 01082C 8000FC2C E4A40000 */ swc1 $f4, ($a1) -/* 010830 8000FC30 AC38AE50 */ sw $t8, %lo(D_8011AE50)($at) -/* 010834 8000FC34 8CD90040 */ lw $t9, 0x40($a2) -/* 010838 8000FC38 8FBF0014 */ lw $ra, 0x14($sp) -/* 01083C 8000FC3C 87280032 */ lh $t0, 0x32($t9) -/* 010840 8000FC40 24020010 */ li $v0, 16 -/* 010844 8000FC44 11000007 */ beqz $t0, .L8000FC64 -/* 010848 8000FC48 00000000 */ nop -/* 01084C 8000FC4C 8CA90004 */ lw $t1, 4($a1) -/* 010850 8000FC50 00000000 */ nop -/* 010854 8000FC54 15200003 */ bnez $t1, .L8000FC64 -/* 010858 8000FC58 00000000 */ nop -/* 01085C 8000FC5C 10000001 */ b .L8000FC64 -/* 010860 8000FC60 00001025 */ move $v0, $zero -.L8000FC64: -/* 010864 8000FC64 03E00008 */ jr $ra -/* 010868 8000FC68 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/asm/non_matchings/objects/func_8001B834.s b/asm/non_matchings/objects/func_8001B834.s deleted file mode 100644 index d3d0e87c..00000000 --- a/asm/non_matchings/objects/func_8001B834.s +++ /dev/null @@ -1,82 +0,0 @@ -glabel func_8001B834 -/* 01C434 8001B834 3C028012 */ lui $v0, %hi(D_8011AED0) # $v0, 0x8012 -/* 01C438 8001B838 8C42AED0 */ lw $v0, %lo(D_8011AED0)($v0) -/* 01C43C 8001B83C 00803025 */ move $a2, $a0 -/* 01C440 8001B840 1C400004 */ bgtz $v0, .L8001B854 -/* 01C444 8001B844 00000000 */ nop -/* 01C448 8001B848 44800000 */ mtc1 $zero, $f0 -/* 01C44C 8001B84C 03E00008 */ jr $ra -/* 01C450 8001B850 00000000 */ nop - -.L8001B854: -/* 01C454 8001B854 84A40190 */ lh $a0, 0x190($a1) -/* 01C458 8001B858 84C70190 */ lh $a3, 0x190($a2) -/* 01C45C 8001B85C 44801000 */ mtc1 $zero, $f2 -/* 01C460 8001B860 0087082A */ slt $at, $a0, $a3 -/* 01C464 8001B864 10200007 */ beqz $at, .L8001B884 -/* 01C468 8001B868 00001825 */ move $v1, $zero -/* 01C46C 8001B86C 00C04025 */ move $t0, $a2 -/* 01C470 8001B870 00A03025 */ move $a2, $a1 -/* 01C474 8001B874 84C70190 */ lh $a3, 0x190($a2) -/* 01C478 8001B878 85040190 */ lh $a0, 0x190($t0) -/* 01C47C 8001B87C 01002825 */ move $a1, $t0 -/* 01C480 8001B880 24030001 */ li $v1, 1 -.L8001B884: -/* 01C484 8001B884 80C90192 */ lb $t1, 0x192($a2) -/* 01C488 8001B888 00E4082A */ slt $at, $a3, $a0 -/* 01C48C 8001B88C 00E05025 */ move $t2, $a3 -/* 01C490 8001B890 10200010 */ beqz $at, .L8001B8D4 -/* 01C494 8001B894 01204025 */ move $t0, $t1 -/* 01C498 8001B898 3C078012 */ lui $a3, %hi(D_8011AECC) # $a3, 0x8012 -/* 01C49C 8001B89C 8CE7AECC */ lw $a3, %lo(D_8011AECC)($a3) -/* 01C4A0 8001B8A0 240B003C */ li $t3, 60 -.L8001B8A4: -/* 01C4A4 8001B8A4 010B0019 */ multu $t0, $t3 -/* 01C4A8 8001B8A8 254A0001 */ addiu $t2, $t2, 1 -/* 01C4AC 8001B8AC 25080001 */ addiu $t0, $t0, 1 -/* 01C4B0 8001B8B0 0144082A */ slt $at, $t2, $a0 -/* 01C4B4 8001B8B4 00007012 */ mflo $t6 -/* 01C4B8 8001B8B8 00EE7821 */ addu $t7, $a3, $t6 -/* 01C4BC 8001B8BC C5E40020 */ lwc1 $f4, 0x20($t7) -/* 01C4C0 8001B8C0 15020002 */ bne $t0, $v0, .L8001B8CC -/* 01C4C4 8001B8C4 46041080 */ add.s $f2, $f2, $f4 -/* 01C4C8 8001B8C8 00004025 */ move $t0, $zero -.L8001B8CC: -/* 01C4CC 8001B8CC 1420FFF5 */ bnez $at, .L8001B8A4 -/* 01C4D0 8001B8D0 00000000 */ nop -.L8001B8D4: -/* 01C4D4 8001B8D4 3C078012 */ lui $a3, %hi(D_8011AECC) # $a3, 0x8012 -/* 01C4D8 8001B8D8 2528FFFF */ addiu $t0, $t1, -1 -/* 01C4DC 8001B8DC 8CE7AECC */ lw $a3, %lo(D_8011AECC)($a3) -/* 01C4E0 8001B8E0 05010002 */ bgez $t0, .L8001B8EC -/* 01C4E4 8001B8E4 240B003C */ li $t3, 60 -/* 01C4E8 8001B8E8 2448FFFF */ addiu $t0, $v0, -1 -.L8001B8EC: -/* 01C4EC 8001B8EC 010B0019 */ multu $t0, $t3 -/* 01C4F0 8001B8F0 C4C800A8 */ lwc1 $f8, 0xa8($a2) -/* 01C4F4 8001B8F4 80A80192 */ lb $t0, 0x192($a1) -/* 01C4F8 8001B8F8 00000000 */ nop -/* 01C4FC 8001B8FC 2508FFFF */ addiu $t0, $t0, -1 -/* 01C500 8001B900 0000C012 */ mflo $t8 -/* 01C504 8001B904 00F8C821 */ addu $t9, $a3, $t8 -/* 01C508 8001B908 C7260020 */ lwc1 $f6, 0x20($t9) -/* 01C50C 8001B90C 00000000 */ nop -/* 01C510 8001B910 46083282 */ mul.s $f10, $f6, $f8 -/* 01C514 8001B914 05010002 */ bgez $t0, .L8001B920 -/* 01C518 8001B918 460A1080 */ add.s $f2, $f2, $f10 -/* 01C51C 8001B91C 2448FFFF */ addiu $t0, $v0, -1 -.L8001B920: -/* 01C520 8001B920 010B0019 */ multu $t0, $t3 -/* 01C524 8001B924 C4B200A8 */ lwc1 $f18, 0xa8($a1) -/* 01C528 8001B928 00006012 */ mflo $t4 -/* 01C52C 8001B92C 00EC6821 */ addu $t5, $a3, $t4 -/* 01C530 8001B930 C5B00020 */ lwc1 $f16, 0x20($t5) -/* 01C534 8001B934 00000000 */ nop -/* 01C538 8001B938 46128102 */ mul.s $f4, $f16, $f18 -/* 01C53C 8001B93C 10600002 */ beqz $v1, .L8001B948 -/* 01C540 8001B940 46041081 */ sub.s $f2, $f2, $f4 -/* 01C544 8001B944 46001087 */ neg.s $f2, $f2 -.L8001B948: -/* 01C548 8001B948 46001006 */ mov.s $f0, $f2 -/* 01C54C 8001B94C 03E00008 */ jr $ra -/* 01C550 8001B950 00000000 */ nop diff --git a/asm/non_matchings/objects/func_8001B974.s b/asm/non_matchings/objects/func_8001B974.s deleted file mode 100644 index b64a2a60..00000000 --- a/asm/non_matchings/objects/func_8001B974.s +++ /dev/null @@ -1,49 +0,0 @@ -glabel func_8001B974 -/* 01C554 8001B954 3C028012 */ lui $v0, %hi(D_8011AED0) # $v0, 0x8012 -/* 01C558 8001B958 8C42AED0 */ lw $v0, %lo(D_8011AED0)($v0) -/* 01C55C 8001B95C 00000000 */ nop -/* 01C560 8001B960 1C400004 */ bgtz $v0, .L8001B974 -/* 01C564 8001B964 00000000 */ nop -/* 01C568 8001B968 44800000 */ mtc1 $zero, $f0 -/* 01C56C 8001B96C 03E00008 */ jr $ra -/* 01C570 8001B970 00000000 */ nop - -.L8001B974: -/* 01C574 8001B974 80850192 */ lb $a1, 0x192($a0) -/* 01C578 8001B978 44801000 */ mtc1 $zero, $f2 -/* 01C57C 8001B97C 00A2082A */ slt $at, $a1, $v0 -/* 01C580 8001B980 1020000D */ beqz $at, .L8001B9B8 -/* 01C584 8001B984 00A01825 */ move $v1, $a1 -/* 01C588 8001B988 3C0E8012 */ lui $t6, %hi(D_8011AECC) # $t6, 0x8012 -/* 01C58C 8001B98C 00037900 */ sll $t7, $v1, 4 -/* 01C590 8001B990 8DCEAECC */ lw $t6, %lo(D_8011AECC)($t6) -/* 01C594 8001B994 01E37823 */ subu $t7, $t7, $v1 -/* 01C598 8001B998 000F7880 */ sll $t7, $t7, 2 -/* 01C59C 8001B99C 01CF3021 */ addu $a2, $t6, $t7 -.L8001B9A0: -/* 01C5A0 8001B9A0 C4C40020 */ lwc1 $f4, 0x20($a2) -/* 01C5A4 8001B9A4 24630001 */ addiu $v1, $v1, 1 -/* 01C5A8 8001B9A8 0062082A */ slt $at, $v1, $v0 -/* 01C5AC 8001B9AC 24C6003C */ addiu $a2, $a2, 0x3c -/* 01C5B0 8001B9B0 1420FFFB */ bnez $at, .L8001B9A0 -/* 01C5B4 8001B9B4 46041080 */ add.s $f2, $f2, $f4 -.L8001B9B8: -/* 01C5B8 8001B9B8 3C068012 */ lui $a2, %hi(D_8011AECC) # $a2, 0x8012 -/* 01C5BC 8001B9BC 24A3FFFF */ addiu $v1, $a1, -1 -/* 01C5C0 8001B9C0 8CC6AECC */ lw $a2, %lo(D_8011AECC)($a2) -/* 01C5C4 8001B9C4 04610003 */ bgez $v1, .L8001B9D4 -/* 01C5C8 8001B9C8 0003C100 */ sll $t8, $v1, 4 -/* 01C5CC 8001B9CC 2443FFFF */ addiu $v1, $v0, -1 -/* 01C5D0 8001B9D0 0003C100 */ sll $t8, $v1, 4 -.L8001B9D4: -/* 01C5D4 8001B9D4 0303C023 */ subu $t8, $t8, $v1 -/* 01C5D8 8001B9D8 0018C080 */ sll $t8, $t8, 2 -/* 01C5DC 8001B9DC 00D8C821 */ addu $t9, $a2, $t8 -/* 01C5E0 8001B9E0 C7260020 */ lwc1 $f6, 0x20($t9) -/* 01C5E4 8001B9E4 C48800A8 */ lwc1 $f8, 0xa8($a0) -/* 01C5E8 8001B9E8 00000000 */ nop -/* 01C5EC 8001B9EC 46083282 */ mul.s $f10, $f6, $f8 -/* 01C5F0 8001B9F0 460A1080 */ add.s $f2, $f2, $f10 -/* 01C5F4 8001B9F4 46001006 */ mov.s $f0, $f2 -/* 01C5F8 8001B9F8 03E00008 */ jr $ra -/* 01C5FC 8001B9FC 00000000 */ nop diff --git a/asm/non_matchings/textures_sprites/func_8007C860.s b/asm/non_matchings/textures_sprites/func_8007C860.s deleted file mode 100644 index cf98bb0b..00000000 --- a/asm/non_matchings/textures_sprites/func_8007C860.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_8007C860 -/* 07D460 8007C860 04800006 */ bltz $a0, .L8007C87C -/* 07D464 8007C864 3C0E8012 */ lui $t6, %hi(gNumberOfLoadedTextures) # $t6, 0x8012 -/* 07D468 8007C868 8DCE6330 */ lw $t6, %lo(gNumberOfLoadedTextures)($t6) -/* 07D46C 8007C86C 3C0F8012 */ lui $t7, %hi(gTextureCache) # $t7, 0x8012 -/* 07D470 8007C870 008E082A */ slt $at, $a0, $t6 -/* 07D474 8007C874 14200003 */ bnez $at, .L8007C884 -/* 07D478 8007C878 00000000 */ nop -.L8007C87C: -/* 07D47C 8007C87C 03E00008 */ jr $ra -/* 07D480 8007C880 2402FFFF */ li $v0, -1 -.L8007C884: -/* 07D484 8007C884 8DEF6328 */ lw $t7, %lo(gTextureCache)($t7) -/* 07D488 8007C888 0004C8C0 */ sll $t9, $a0, 3 -/* 07D48C 8007C88C 01F94021 */ addu $t0, $t7, $t9 -/* 07D490 8007C890 8D020000 */ lw $v0, ($t0) -/* 07D494 8007C894 00000000 */ nop -/* 07D498 8007C898 03E00008 */ jr $ra -/* 07D49C 8007C89C 00000000 */ nop \ No newline at end of file diff --git a/asm/non_matchings/textures_sprites/func_8007C8A0.s b/asm/non_matchings/textures_sprites/func_8007C8A0.s deleted file mode 100644 index 4c2a625d..00000000 --- a/asm/non_matchings/textures_sprites/func_8007C8A0.s +++ /dev/null @@ -1,20 +0,0 @@ -# Unused -glabel func_8007C8A0 -/* 07D4A0 8007C8A0 04800006 */ bltz $a0, .L8007C8BC -/* 07D4A4 8007C8A4 3C0E8012 */ lui $t6, %hi(D_80126358) # $t6, 0x8012 -/* 07D4A8 8007C8A8 8DCE6358 */ lw $t6, %lo(D_80126358)($t6) -/* 07D4AC 8007C8AC 3C0F8012 */ lui $t7, %hi(gSpriteCache) # $t7, 0x8012 -/* 07D4B0 8007C8B0 008E082A */ slt $at, $a0, $t6 -/* 07D4B4 8007C8B4 14200003 */ bnez $at, .L8007C8C4 -/* 07D4B8 8007C8B8 00000000 */ nop -.L8007C8BC: -/* 07D4BC 8007C8BC 03E00008 */ jr $ra -/* 07D4C0 8007C8C0 2402FFFF */ li $v0, -1 -.L8007C8C4: -/* 07D4C4 8007C8C4 8DEF634C */ lw $t7, %lo(gSpriteCache)($t7) -/* 07D4C8 8007C8C8 0004C8C0 */ sll $t9, $a0, 3 -/* 07D4CC 8007C8CC 01F94021 */ addu $t0, $t7, $t9 -/* 07D4D0 8007C8D0 8D020000 */ lw $v0, ($t0) -/* 07D4D4 8007C8D4 00000000 */ nop -/* 07D4D8 8007C8D8 03E00008 */ jr $ra -/* 07D4DC 8007C8DC 00000000 */ nop diff --git a/include/structs.h b/include/structs.h index aef0e453..4a84c1e7 100644 --- a/include/structs.h +++ b/include/structs.h @@ -1013,7 +1013,7 @@ typedef struct Object_Racer { /* 0x18A */ s16 unk18A; /* 0x18C */ s16 unk18C; /* 0x18E */ s16 shieldTimer; - /* 0x190 */ s16 unk190; + /* 0x190 */ s16 courseCheckpoint; /* 0x192 */ s8 checkpoint; /* 0x193 */ s8 lap; /* 0x194 */ s8 unk194; diff --git a/src/objects.c b/src/objects.c index 4af2831a..f7c7c20d 100644 --- a/src/objects.c +++ b/src/objects.c @@ -790,7 +790,26 @@ s32 func_8000FAC4(Object *obj, s32 arg1) { return ((obj->segment.header->unk57 << 5) + 3) & ~3; } -GLOBAL_ASM("asm/non_matchings/objects/func_8000FBCC.s") +s32 func_8000FBCC(Object *arg0, Object_60 *arg1) { + s32 var_v0; + ObjectHeader *objHeader; + + arg0->unk50 = (Object_50*) arg1; + arg1->unk4 = NULL; + objHeader = ((ObjectSegment*) arg0)->header; + if (objHeader->unk32) { + arg1->unk4 = load_texture((s32) ((Object_Taj*)objHeader)->unk34); + objHeader = ((ObjectSegment*)arg0)->header; + } + ((Object_50*) arg1)->unk0 = (f32) objHeader->unk4; + ((Object_50*) arg1)->unk8 = -1; + D_8011AE50 = (s32) ((Object_60*)arg1)->unk4; + var_v0 = 16; + if ((((ObjectSegment*) arg0)->header->unk32) && (arg1->unk4 == NULL)) { + return 0; + } + return var_v0; +} s32 func_8000FC6C(struct_8000FC6C_3 *arg0, struct_8000FC6C *arg1) { arg0->unk58 = arg1; @@ -1639,8 +1658,66 @@ Object *func_8001B7A8(Object *arg0, s32 arg1, f32 *arg2) { return temp_v1; } -GLOBAL_ASM("asm/non_matchings/objects/func_8001B834.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8001B974.s") +f32 func_8001B834(Object_Racer *racer1, Object_Racer *racer2) { + Object_Racer *temp_racer; + f32 var_f2; + s32 r1_ccp; + s32 temp_lo; + s32 var_v1; + s32 r1_lcp; + + if (D_8011AED0 <= 0) { + return 0.0f; + } + var_f2 = 0.0f; + var_v1 = FALSE; + if (racer2->courseCheckpoint < racer1->courseCheckpoint) { + temp_racer = racer1; + racer1 = racer2; + racer2 = temp_racer; + var_v1 = TRUE; + } + r1_lcp = racer1->checkpoint; + for (r1_ccp = racer1->courseCheckpoint; r1_ccp < racer2->courseCheckpoint; r1_ccp++) { + var_f2 += D_8011AECC[r1_lcp++].unk20; + if (r1_lcp == D_8011AED0) { + r1_lcp = 0; + } + } + r1_lcp = racer1->checkpoint - 1; + if (r1_lcp < 0) { + r1_lcp = D_8011AED0 - 1; + } + var_f2 += (D_8011AECC[r1_lcp].unk20 * racer1->checkpoint_distance); + r1_lcp = racer2->checkpoint - 1; + if (r1_lcp < 0) { + r1_lcp = D_8011AED0 - 1; + } + var_f2 -= (D_8011AECC[r1_lcp].unk20 * racer2->checkpoint_distance); + if (var_v1) { + var_f2 = -var_f2; + } + return var_f2; +} + +UNUSED f32 func_8001B974(Object_Racer* racer) { + f32 distLeft; + s32 lapChkPts; + + if (D_8011AED0 <= 0) { + return 0.0f; + } + distLeft = 0.0f; + for (lapChkPts = racer->checkpoint; lapChkPts < D_8011AED0; lapChkPts++) { + distLeft += D_8011AECC[lapChkPts].unk20; + } + lapChkPts = racer->checkpoint - 1; + if (lapChkPts < 0) { + lapChkPts = D_8011AED0 - 1; + } + distLeft += (D_8011AECC[lapChkPts].unk20 * racer->checkpoint_distance); + return distLeft; +} // Returns a pointer to some struct that is 0x3C bytes long. unknown8011AECC *func_8001BA00(s32 arg0) { @@ -2072,7 +2149,7 @@ void func_800228EC(s32 arg0) { D_8011AEF7 = 3; object_64 = &get_racer_object(0)->unk64->racer; - object_64->unk190 = 0; + object_64->courseCheckpoint = 0; object_64->checkpoint = 0; object_64->lap = 0; object_64->unk1BA = 0; diff --git a/src/objects.h b/src/objects.h index a3ff9d05..1bf108d8 100644 --- a/src/objects.h +++ b/src/objects.h @@ -360,7 +360,7 @@ s32 func_8001B650(void); s32 func_8001B738(s32 controllerIndex); u8 has_ghost_to_save(); void func_8001B790(void); -f32 func_8001B834(Object *arg0, s32); +f32 func_8001B834(Object_Racer *racer1, Object_Racer *racer2); unknown8011AECC *func_8001BA00(s32 arg0); unknown8011AECC *func_8001BA1C(s32 arg0, s32 arg1); s32 func_8001BA64(); diff --git a/src/racer.c b/src/racer.c index a6ecd8e4..e6bcb241 100644 --- a/src/racer.c +++ b/src/racer.c @@ -1474,7 +1474,7 @@ void update_player_racer(Object* obj, s32 updateRate) { tempRacer->checkpoint++; if (tempRacer->checkpoint >= temp_v0_17) { tempRacer->checkpoint = 0; - if (tempRacer->unk190 > 0) { + if (tempRacer->courseCheckpoint > 0) { if (tempRacer->lap < 120) { tempRacer->lap++; } @@ -1513,8 +1513,8 @@ void update_player_racer(Object* obj, s32 updateRate) { } } } - if (tempRacer->unk190 < (header->laps + 3) * temp_v0_17) { - tempRacer->unk190++; + if (tempRacer->courseCheckpoint < (header->laps + 3) * temp_v0_17) { + tempRacer->courseCheckpoint++; } tempRacer->unk1A8 = 10000; } else { @@ -3826,14 +3826,14 @@ void func_8005A6F0(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR racer->checkpoint++; if (racer->checkpoint >= temp_v0_10) { racer->checkpoint = 0; - if (racer->unk190 > 0) { + if (racer->courseCheckpoint > 0) { if (racer->lap < 120) { racer->lap++; } } } - if (racer->unk190 < ((levelHeader->laps + 3) * temp_v0_10)) { - racer->unk190++; + if (racer->courseCheckpoint < ((levelHeader->laps + 3) * temp_v0_10)) { + racer->courseCheckpoint++; } racer->unk1A8 = 10000; } else { @@ -4092,16 +4092,16 @@ void func_8005B818(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR racer->checkpoint += 1; if (racer->checkpoint >= sp11C) { racer->checkpoint = 0; - if (racer->unk190 > 0) { + if (racer->courseCheckpoint > 0) { temp_v0_3 = racer->lap; if (temp_v0_3 < 0x78) { racer->lap = temp_v0_3 + 1; } } } - temp_v0_4 = racer->unk190; + temp_v0_4 = racer->courseCheckpoint; if (temp_v0_4 < ((levelHeader->laps + 3) * sp11C)) { - racer->unk190 = temp_v0_4 + 1; + racer->courseCheckpoint = temp_v0_4 + 1; } racer->unk1A8 = 10000; } else { @@ -4191,7 +4191,7 @@ void func_8005C270(Object_Racer *racer) { } } - if (racer->unk190 > -0x7D00) { - racer->unk190--; + if (racer->courseCheckpoint > -0x7D00) { + racer->courseCheckpoint--; } } diff --git a/src/textures_sprites.c b/src/textures_sprites.c index 7f1c73d7..1d10fa71 100644 --- a/src/textures_sprites.c +++ b/src/textures_sprites.c @@ -1391,28 +1391,19 @@ GLOBAL_ASM("asm/non_matchings/textures_sprites/get_texture_size_from_id.s") GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007C660.s") -#ifdef NON_MATCHING UNUSED s32 func_8007C860(s32 spriteIndex) { if ((spriteIndex < 0) || (spriteIndex >= gNumberOfLoadedTextures)) { return -1; } - return gTextureCache[spriteIndex].id; + return ((TextureCacheEntry *) ((s32*) gTextureCache + spriteIndex * 2))->id; } -#else -GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007C860.s") -#endif -#ifdef NON_MATCHING UNUSED s32 func_8007C8A0(s32 spriteIndex) { if ((spriteIndex < 0) || (spriteIndex >= D_80126358)) { return -1; } - // I need to skip a register here. - return gSpriteCache[spriteIndex].id; + return ((SpriteCacheEntry*) ((s32*) gSpriteCache + spriteIndex * 2))->id; } -#else -GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007C8A0.s") -#endif #ifdef NON_EQUIVALENT s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 *numFramesOut, s32 *formatOut, s32 *sizeOut) {