From 658ab3f5f0e9029da51dc2c9a8c7311c2c165a5f Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Thu, 12 Oct 2023 08:35:23 -0400 Subject: [PATCH] Update makefile, and include many new matches (#421) * Fix the sins of the past * Fix makefile extra messages, and add a patching option * Match func_8001955C * Match func_80016500 * Match func_8000C8F8 * WIP func_8000CC7C * Removed old competing misc asset enums, and migrated to the better standard. * Fix last commit * Minor documenting of an unused asset. * Match func_8001B4FC * Match func_8009963C * Match render_enter_filename_ui * Match randomise_ai_racer_slots * Fix NON_EQUIVALENT builds * Update README * A little text documenting * Update src/menu.c Co-authored-by: David Benepe * Remove already matched asm file --------- Co-authored-by: David Benepe --- .gitmodules | 3 + Makefile | 23 +- README.md | 18 +- asm/assets/assets.s | 54 +- asm/non_matchings/menu/func_8009963C.s | 186 ----- .../menu/randomise_ai_racer_slots.s | 142 ---- .../menu/render_enter_filename_ui.s | 271 ------- asm/non_matchings/objects/func_8000C8F8.s | 191 ----- asm/non_matchings/objects/func_80016500.s | 159 ----- asm/non_matchings/objects/func_8001955C.s | 186 ----- asm/non_matchings/objects/func_8001B4FC.s | 89 --- asm/non_matchings/thread0_epc/thread0_Main.s | 71 -- extract-ver/us_1.0.config.json | 45 ++ include/asset_enums.h | 18 +- include/enums.h | 80 --- include/level_object_entries.h | 9 + include/object_properties.h | 4 +- include/sound_ids.h | 2 +- include/structs.h | 4 +- src/game.c | 8 +- src/menu.c | 260 ++++--- src/menu.h | 8 +- src/object_functions.c | 8 +- src/objects.c | 672 +++++++++++++++++- src/objects.h | 6 +- src/racer.c | 58 +- src/thread3_main.c | 2 +- tools/Flips | 1 + tools/Makefile | 14 +- tools/ido-static-recomp | 2 +- tools/python/first_diff.py | 2 +- 31 files changed, 962 insertions(+), 1634 deletions(-) delete mode 100644 asm/non_matchings/menu/func_8009963C.s delete mode 100644 asm/non_matchings/menu/randomise_ai_racer_slots.s delete mode 100644 asm/non_matchings/menu/render_enter_filename_ui.s delete mode 100644 asm/non_matchings/objects/func_8000C8F8.s delete mode 100644 asm/non_matchings/objects/func_80016500.s delete mode 100644 asm/non_matchings/objects/func_8001955C.s delete mode 100644 asm/non_matchings/objects/func_8001B4FC.s delete mode 100644 asm/non_matchings/thread0_epc/thread0_Main.s create mode 160000 tools/Flips diff --git a/.gitmodules b/.gitmodules index dd9459f5..6a724e7f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "tools/asm_processor"] path = tools/asm_processor url = https://github.com/simonlindholm/asm-processor.git +[submodule "tools/Flips"] + path = tools/Flips + url = https://github.com/Alcaro/Flips.git diff --git a/Makefile b/Makefile index 8379b389..0ac4f1a3 100755 --- a/Makefile +++ b/Makefile @@ -96,21 +96,6 @@ $(error Missing submodule ido-static-recomp. Please run 'git submodule update -- endif endif -# List of IDO tools required for the repo. -# NOTE: If you are adding a tool here, make sure to update the Makefile in `/tools/ido-static-recomp/`! -RECOMP_TOOLS := cc cfe uopt ugen as1 ujoin uld usplit umerge - -RECOMP_DIR := $(RECOMP_PROJECT)build/5.3/out/ -RECOMP_TOOLS_PATHS = $(addprefix $(RECOMP_DIR),$(RECOMP_TOOLS)) - -# Checks if all the recomp tools exist. -$(foreach p,$(RECOMP_TOOLS_PATHS),$(if $(wildcard $(p)),,$(info $(p) does not exist!) $(eval runRecomp:=yes))) - -# If any of the tools do not exist, then recomp needs to run to build them. -ifeq ($(runRecomp),yes) - DUMMY != cd $(RECOMP_PROJECT) && make setup && make VERSION=5.3 && cp build/5.3/out/usr/bin/cc build/5.3/out/cc && cp build/5.3/out/usr/lib/* build/5.3/out/ && cd ../../ >&2 || echo FAIL -endif - ######## Extract Assets & Microcode ######## DUMMY != python3 ./tools/python/check_if_need_to_extract.py $(VERSION) >&2 || echo FAIL @@ -146,7 +131,7 @@ endif endif AS = $(CROSS)as -CC := $(RECOMP_DIR)cc +CC := tools/ido-static-recomp/build/5.3/out/cc CPP := cpp -P -Wno-trigraphs -I include LD = $(CROSS)ld OBJDUMP = $(CROSS)objdump @@ -177,6 +162,7 @@ LDFLAGS = undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/dkr. # N64 tools TOOLS_DIR = ./tools +FLIPS = $(TOOLS_DIR)/Flips/flips EMULATOR = mupen64plus EMU_FLAGS = --noosd LOADER = loader64 @@ -337,7 +323,6 @@ distclean: rm -rf assets rm -rf ucode rm -rf dkr.ld - rm -rf tools/ido-static-recomp/{,.[!.],..?}* # Deletes all files, including hidden ones. $(MAKE) -C tools distclean clean_lib: @@ -438,6 +423,10 @@ test: $(BUILD_DIR)/$(TARGET).z64 load: $(BUILD_DIR)/$(TARGET).z64 $(LOADER) $(LOADER_FLAGS) $< +ROM := $(BUILD_DIR)/$(TARGET).z64 +patch: $(ROM) + $(FLIPS) --create --bps ./baseroms/dkr.z64 $(ROM) $(BUILD_DIR)/$(TARGET).bps + .PHONY: all clean distclean default diff test # Remove built-in rules, to improve performance diff --git a/README.md b/README.md index 6a42db19..09246980 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time. -As of October 10, 2023, this is our current score: +As of October 11, 2023, this is our current score: -    Decomp progress: 58.00% +    Decomp progress: 58.51%     Documentation progress: 33.35% @@ -128,20 +128,20 @@ s32 is_drumstick_unlocked(void) { ``` -As of October 10th, 2023, this is our current score: +As of October 11th, 2023, this is our current score: ``` =================================================================== ADVENTURE ONE (ASM -> C Decompilation) - ------------------------- 58.00% Complete ------------------------- - # Decompiled functions: 1606 - # GLOBAL_ASM remaining: 232 - # NON_MATCHING functions: 11 - # NON_EQUIVALENT WIP functions: 59 + ------------------------- 58.51% Complete ------------------------- + # Decompiled functions: 1613 + # GLOBAL_ASM remaining: 225 + # NON_MATCHING functions: 10 + # NON_EQUIVALENT WIP functions: 58 --------------------------- Game Status --------------------------- Balloons: 28/47, Keys: 3/4, Trophies: 2/5 T.T. Amulets: 3/4, Wizpig Amulets: 2/4 ------------------------------------------------------------------- - We are collecting silver coins in Pirate Lagoon. (2/8 silver coins) + We are collecting silver coins in Pirate Lagoon. (5/8 silver coins) =================================================================== ADVENTURE TWO (Cleanup & Documentation) ------------------------- 33.35% Complete ------------------------- diff --git a/asm/assets/assets.s b/asm/assets/assets.s index e6ef54d6..df2120ad 100755 --- a/asm/assets/assets.s +++ b/asm/assets/assets.s @@ -8481,20 +8481,20 @@ glabel ASSET_MISC_3 .incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_3.bin" glabel ASSET_MISC_4 .incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_4.bin" -glabel ASSET_MISC_5 -.incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_5.bin" -glabel ASSET_MISC_6 -.incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_6.bin" -glabel ASSET_MISC_7 -.incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_7.bin" +glabel ASSET_MISC_TRICKY_BOSS_DATA +.incbin "./build/us_1.0/assets/misc/unlabeled/tricky_boss_data.bin" +glabel ASSET_MISC_BLUEY_BOSS_DATA +.incbin "./build/us_1.0/assets/misc/unlabeled/bluey_boss_data.bin" +glabel ASSET_MISC_SMOKEY_BOSS_DATA +.incbin "./build/us_1.0/assets/misc/unlabeled/smokey_boss_data.bin" glabel ASSET_MISC_8 .incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_8.bin" -glabel ASSET_MISC_9 -.incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_9.bin" -glabel ASSET_MISC_10 -.incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_10.bin" -glabel ASSET_MISC_11 -.incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_11.bin" +glabel ASSET_MISC_RACER_WEIGHT +.incbin "./build/us_1.0/assets/misc/unlabeled/racer_weight_data.bin" +glabel ASSET_MISC_RACER_HANDLING +.incbin "./build/us_1.0/assets/misc/unlabeled/racer_handling_data.bin" +glabel ASSET_MISC_RACER_UNUSED_11 +.incbin "./build/us_1.0/assets/misc/unlabeled/racer_unused_11_data.bin" glabel ASSET_MISC_12 .incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_12.bin" glabel ASSET_MISC_13 @@ -8513,10 +8513,10 @@ glabel ASSET_MISC_19 .incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_19.bin" glabel ASSET_MISC_20 .incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_20.bin" -glabel ASSET_MISC_21 -.incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_21.bin" -glabel ASSET_MISC_22 -.incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_22.bin" +glabel ASSET_MISC_SHIELD_DATA +.incbin "./build/us_1.0/assets/misc/unlabeled/shield_data.bin" +glabel ASSET_MISC_MAGNET_DATA +.incbin "./build/us_1.0/assets/misc/unlabeled/magnet_data.bin" glabel ASSET_MISC_23 .incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_23.bin" glabel ASSET_MISC_24 @@ -8583,8 +8583,8 @@ glabel ASSET_MISC_54 .incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_54.bin" glabel ASSET_MISC_55 .incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_55.bin" -glabel ASSET_MISC_56 -.incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_56.bin" +glabel ASSET_MISC_RACER_HITBOX_SIZE +.incbin "./build/us_1.0/assets/misc/unlabeled/racer_hitbox_size.bin" glabel ASSET_MISC_57 .incbin "./build/us_1.0/assets/misc/unlabeled/unknown_15_57.bin" glabel ASSET_MISC_58 @@ -8622,13 +8622,13 @@ glabel ASSET_MISC_TABLE .word (ASSET_MISC_2 - ASSET_MISC) / 4 .word (ASSET_MISC_3 - ASSET_MISC) / 4 .word (ASSET_MISC_4 - ASSET_MISC) / 4 -.word (ASSET_MISC_5 - ASSET_MISC) / 4 -.word (ASSET_MISC_6 - ASSET_MISC) / 4 -.word (ASSET_MISC_7 - ASSET_MISC) / 4 +.word (ASSET_MISC_TRICKY_BOSS_DATA - ASSET_MISC) / 4 +.word (ASSET_MISC_BLUEY_BOSS_DATA - ASSET_MISC) / 4 +.word (ASSET_MISC_SMOKEY_BOSS_DATA - ASSET_MISC) / 4 .word (ASSET_MISC_8 - ASSET_MISC) / 4 -.word (ASSET_MISC_9 - ASSET_MISC) / 4 -.word (ASSET_MISC_10 - ASSET_MISC) / 4 -.word (ASSET_MISC_11 - ASSET_MISC) / 4 +.word (ASSET_MISC_RACER_WEIGHT - ASSET_MISC) / 4 +.word (ASSET_MISC_RACER_HANDLING - ASSET_MISC) / 4 +.word (ASSET_MISC_RACER_UNUSED_11 - ASSET_MISC) / 4 .word (ASSET_MISC_12 - ASSET_MISC) / 4 .word (ASSET_MISC_13 - ASSET_MISC) / 4 .word (ASSET_MISC_14 - ASSET_MISC) / 4 @@ -8638,8 +8638,8 @@ glabel ASSET_MISC_TABLE .word (ASSET_MISC_18 - ASSET_MISC) / 4 .word (ASSET_MISC_19 - ASSET_MISC) / 4 .word (ASSET_MISC_20 - ASSET_MISC) / 4 -.word (ASSET_MISC_21 - ASSET_MISC) / 4 -.word (ASSET_MISC_22 - ASSET_MISC) / 4 +.word (ASSET_MISC_SHIELD_DATA - ASSET_MISC) / 4 +.word (ASSET_MISC_MAGNET_DATA - ASSET_MISC) / 4 .word (ASSET_MISC_23 - ASSET_MISC) / 4 .word (ASSET_MISC_24 - ASSET_MISC) / 4 .word (ASSET_MISC_25 - ASSET_MISC) / 4 @@ -8673,7 +8673,7 @@ glabel ASSET_MISC_TABLE .word (ASSET_MISC_53 - ASSET_MISC) / 4 .word (ASSET_MISC_54 - ASSET_MISC) / 4 .word (ASSET_MISC_55 - ASSET_MISC) / 4 -.word (ASSET_MISC_56 - ASSET_MISC) / 4 +.word (ASSET_MISC_RACER_HITBOX_SIZE - ASSET_MISC) / 4 .word (ASSET_MISC_57 - ASSET_MISC) / 4 .word (ASSET_MISC_58 - ASSET_MISC) / 4 .word (ASSET_MISC_59 - ASSET_MISC) / 4 diff --git a/asm/non_matchings/menu/func_8009963C.s b/asm/non_matchings/menu/func_8009963C.s deleted file mode 100644 index e57c0165..00000000 --- a/asm/non_matchings/menu/func_8009963C.s +++ /dev/null @@ -1,186 +0,0 @@ -glabel func_8009963C -/* 09A23C 8009963C 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 09A240 80099640 3C098012 */ lui $t1, %hi(D_801264D4) # $t1, 0x8012 -/* 09A244 80099644 252964D4 */ addiu $t1, %lo(D_801264D4) # addiu $t1, $t1, 0x64d4 -/* 09A248 80099648 AFBF0014 */ sw $ra, 0x14($sp) -/* 09A24C 8009964C AD200000 */ sw $zero, ($t1) -/* 09A250 80099650 0C0078A7 */ jal get_misc_asset -/* 09A254 80099654 2404001C */ li $a0, 28 -/* 09A258 80099658 3C098012 */ lui $t1, %hi(D_801264D4) # $t1, 0x8012 -/* 09A25C 8009965C 3C078012 */ lui $a3, %hi(D_801264DC) # $a3, 0x8012 -/* 09A260 80099660 3C1F8012 */ lui $ra, %hi(D_801264EC) # $ra, 0x8012 -/* 09A264 80099664 3C0B8012 */ lui $t3, %hi(D_80126540) # $t3, 0x8012 -/* 09A268 80099668 252964D4 */ addiu $t1, %lo(D_801264D4) # addiu $t1, $t1, 0x64d4 -/* 09A26C 8009966C 00403025 */ move $a2, $v0 -/* 09A270 80099670 256B6540 */ addiu $t3, %lo(D_80126540) # addiu $t3, $t3, 0x6540 -/* 09A274 80099674 27FF64EC */ addiu $ra, %lo(D_801264EC) # addiu $ra, $ra, 0x64ec -/* 09A278 80099678 24E764DC */ addiu $a3, %lo(D_801264DC) # addiu $a3, $a3, 0x64dc -/* 09A27C 8009967C 00005025 */ move $t2, $zero -/* 09A280 80099680 27AD0044 */ addiu $t5, $sp, 0x44 -/* 09A284 80099684 240500FF */ li $a1, 255 -.L80099688: -/* 09A288 80099688 90E40000 */ lbu $a0, ($a3) -/* 09A28C 8009968C 00000000 */ nop -/* 09A290 80099690 10A40022 */ beq $a1, $a0, .L8009971C -/* 09A294 80099694 00000000 */ nop -/* 09A298 80099698 904E0000 */ lbu $t6, ($v0) -/* 09A29C 8009969C 00004025 */ move $t0, $zero -/* 09A2A0 800996A0 10AE000F */ beq $a1, $t6, .L800996E0 -/* 09A2A4 800996A4 00487821 */ addu $t7, $v0, $t0 -/* 09A2A8 800996A8 904F0000 */ lbu $t7, ($v0) -/* 09A2AC 800996AC 00401821 */ addu $v1, $v0, $zero -/* 09A2B0 800996B0 11E4000B */ beq $t7, $a0, .L800996E0 -/* 09A2B4 800996B4 00487821 */ addu $t7, $v0, $t0 -.L800996B8: -/* 09A2B8 800996B8 90780001 */ lbu $t8, 1($v1) -/* 09A2BC 800996BC 25080001 */ addiu $t0, $t0, 1 -/* 09A2C0 800996C0 10B80006 */ beq $a1, $t8, .L800996DC -/* 09A2C4 800996C4 24630001 */ addiu $v1, $v1, 1 -/* 09A2C8 800996C8 00C8C821 */ addu $t9, $a2, $t0 -/* 09A2CC 800996CC 932E0000 */ lbu $t6, ($t9) -/* 09A2D0 800996D0 00000000 */ nop -/* 09A2D4 800996D4 15C4FFF8 */ bne $t6, $a0, .L800996B8 -/* 09A2D8 800996D8 00000000 */ nop -.L800996DC: -/* 09A2DC 800996DC 00487821 */ addu $t7, $v0, $t0 -.L800996E0: -/* 09A2E0 800996E0 91F80000 */ lbu $t8, ($t7) -/* 09A2E4 800996E4 03EA7021 */ addu $t6, $ra, $t2 -/* 09A2E8 800996E8 10B8000C */ beq $a1, $t8, .L8009971C -/* 09A2EC 800996EC 00000000 */ nop -/* 09A2F0 800996F0 8D2C0000 */ lw $t4, ($t1) -/* 09A2F4 800996F4 0008C0C0 */ sll $t8, $t0, 3 -/* 09A2F8 800996F8 016CC821 */ addu $t9, $t3, $t4 -/* 09A2FC 800996FC A32A0000 */ sb $t2, ($t9) -/* 09A300 80099700 91CF0000 */ lbu $t7, ($t6) -/* 09A304 80099704 000C7040 */ sll $t6, $t4, 1 -/* 09A308 80099708 01F8C821 */ addu $t9, $t7, $t8 -/* 09A30C 8009970C 01AE7821 */ addu $t7, $t5, $t6 -/* 09A310 80099710 A5F90000 */ sh $t9, ($t7) -/* 09A314 80099714 25980001 */ addiu $t8, $t4, 1 -/* 09A318 80099718 AD380000 */ sw $t8, ($t1) -.L8009971C: -/* 09A31C 8009971C 254A0001 */ addiu $t2, $t2, 1 -/* 09A320 80099720 29410006 */ slti $at, $t2, 6 -/* 09A324 80099724 1420FFD8 */ bnez $at, .L80099688 -/* 09A328 80099728 24E70001 */ addiu $a3, $a3, 1 -/* 09A32C 8009972C 8D2C0000 */ lw $t4, ($t1) -/* 09A330 80099730 97A70046 */ lhu $a3, 0x46($sp) -/* 09A334 80099734 258AFFFF */ addiu $t2, $t4, -1 -/* 09A338 80099738 1940003D */ blez $t2, .L80099830 -/* 09A33C 8009973C 00000000 */ nop -/* 09A340 80099740 97A40044 */ lhu $a0, 0x44($sp) -/* 09A344 80099744 00000000 */ nop -.L80099748: -/* 09A348 80099748 19400034 */ blez $t2, .L8009981C -/* 09A34C 8009974C 00004025 */ move $t0, $zero -/* 09A350 80099750 31420001 */ andi $v0, $t2, 1 -/* 09A354 80099754 1040000E */ beqz $v0, .L80099790 -/* 09A358 80099758 00E4082A */ slt $at, $a3, $a0 -/* 09A35C 8009975C 1020000B */ beqz $at, .L8009978C -/* 09A360 80099760 24080001 */ li $t0, 1 -/* 09A364 80099764 3C068012 */ lui $a2, %hi(D_80126540) # $a2, 0x8012 -/* 09A368 80099768 3C0E8012 */ lui $t6, %hi(D_80126541) # $t6, 0x8012 -/* 09A36C 8009976C 91CE6541 */ lbu $t6, %lo(D_80126541)($t6) -/* 09A370 80099770 90C66540 */ lbu $a2, %lo(D_80126540)($a2) -/* 09A374 80099774 00802825 */ move $a1, $a0 -/* 09A378 80099778 3C018012 */ lui $at, %hi(D_80126541) # $at, 0x8012 -/* 09A37C 8009977C 30E4FFFF */ andi $a0, $a3, 0xffff -/* 09A380 80099780 30A7FFFF */ andi $a3, $a1, 0xffff -/* 09A384 80099784 A02E6540 */ sb $t6, %lo(D_80126540)($at) -/* 09A388 80099788 A0266541 */ sb $a2, %lo(D_80126541)($at) -.L8009978C: -/* 09A38C 8009978C 110A0023 */ beq $t0, $t2, .L8009981C -.L80099790: -/* 09A390 80099790 0008C840 */ sll $t9, $t0, 1 -/* 09A394 80099794 27AF0044 */ addiu $t7, $sp, 0x44 -/* 09A398 80099798 032F1821 */ addu $v1, $t9, $t7 -/* 09A39C 8009979C A7A40044 */ sh $a0, 0x44($sp) -/* 09A3A0 800997A0 A7A70046 */ sh $a3, 0x46($sp) -.L800997A4: -/* 09A3A4 800997A4 94640002 */ lhu $a0, 2($v1) -/* 09A3A8 800997A8 94690000 */ lhu $t1, ($v1) -/* 09A3AC 800997AC 01681021 */ addu $v0, $t3, $t0 -/* 09A3B0 800997B0 0089082A */ slt $at, $a0, $t1 -/* 09A3B4 800997B4 10200009 */ beqz $at, .L800997DC -/* 09A3B8 800997B8 00803825 */ move $a3, $a0 -/* 09A3BC 800997BC 90460000 */ lbu $a2, ($v0) -/* 09A3C0 800997C0 90580001 */ lbu $t8, 1($v0) -/* 09A3C4 800997C4 A4640000 */ sh $a0, ($v1) -/* 09A3C8 800997C8 3124FFFF */ andi $a0, $t1, 0xffff -/* 09A3CC 800997CC A4690002 */ sh $t1, 2($v1) -/* 09A3D0 800997D0 00803825 */ move $a3, $a0 -/* 09A3D4 800997D4 A0460001 */ sb $a2, 1($v0) -/* 09A3D8 800997D8 A0580000 */ sb $t8, ($v0) -.L800997DC: -/* 09A3DC 800997DC 94690004 */ lhu $t1, 4($v1) -/* 09A3E0 800997E0 01681021 */ addu $v0, $t3, $t0 -/* 09A3E4 800997E4 0127082A */ slt $at, $t1, $a3 -/* 09A3E8 800997E8 10200007 */ beqz $at, .L80099808 -/* 09A3EC 800997EC 00000000 */ nop -/* 09A3F0 800997F0 90460001 */ lbu $a2, 1($v0) -/* 09A3F4 800997F4 904E0002 */ lbu $t6, 2($v0) -/* 09A3F8 800997F8 A4690002 */ sh $t1, 2($v1) -/* 09A3FC 800997FC A4640004 */ sh $a0, 4($v1) -/* 09A400 80099800 A0460002 */ sb $a2, 2($v0) -/* 09A404 80099804 A04E0001 */ sb $t6, 1($v0) -.L80099808: -/* 09A408 80099808 97A40044 */ lhu $a0, 0x44($sp) -/* 09A40C 8009980C 97A70046 */ lhu $a3, 0x46($sp) -/* 09A410 80099810 25080002 */ addiu $t0, $t0, 2 -/* 09A414 80099814 150AFFE3 */ bne $t0, $t2, .L800997A4 -/* 09A418 80099818 24630004 */ addiu $v1, $v1, 4 -.L8009981C: -/* 09A41C 8009981C 254AFFFF */ addiu $t2, $t2, -1 -/* 09A420 80099820 1D40FFC9 */ bgtz $t2, .L80099748 -/* 09A424 80099824 00000000 */ nop -/* 09A428 80099828 A7A70046 */ sh $a3, 0x46($sp) -/* 09A42C 8009982C A7A40044 */ sh $a0, 0x44($sp) -.L80099830: -/* 09A430 80099830 19800027 */ blez $t4, .L800998D0 -/* 09A434 80099834 3C048012 */ lui $a0, %hi(D_80126508) # $a0, 0x8012 -/* 09A438 80099838 3C198012 */ lui $t9, %hi(D_80126520) # $t9, 0x8012 -/* 09A43C 8009983C 27236520 */ addiu $v1, $t9, %lo(D_80126520) -/* 09A440 80099840 3C058012 */ lui $a1, %hi(D_80126540) # $a1, 0x8012 -/* 09A444 80099844 3C068012 */ lui $a2, %hi(D_80126510) # $a2, 0x8012 -/* 09A448 80099848 3C078012 */ lui $a3, %hi(D_80126518) # $a3, 0x8012 -/* 09A44C 8009984C 000C7840 */ sll $t7, $t4, 1 -/* 09A450 80099850 3C0A8012 */ lui $t2, %hi(D_801264F8) # $t2, 0x8012 -/* 09A454 80099854 3C098012 */ lui $t1, %hi(D_801264E4) # $t1, 0x8012 -/* 09A458 80099858 3C088012 */ lui $t0, %hi(D_801264DC) # $t0, 0x8012 -/* 09A45C 8009985C 250864DC */ addiu $t0, %lo(D_801264DC) # addiu $t0, $t0, 0x64dc -/* 09A460 80099860 252964E4 */ addiu $t1, %lo(D_801264E4) # addiu $t1, $t1, 0x64e4 -/* 09A464 80099864 254A64F8 */ addiu $t2, %lo(D_801264F8) # addiu $t2, $t2, 0x64f8 -/* 09A468 80099868 01E35821 */ addu $t3, $t7, $v1 -/* 09A46C 8009986C 24E76518 */ addiu $a3, %lo(D_80126518) # addiu $a3, $a3, 0x6518 -/* 09A470 80099870 24C66510 */ addiu $a2, %lo(D_80126510) # addiu $a2, $a2, 0x6510 -/* 09A474 80099874 24A56540 */ addiu $a1, %lo(D_80126540) # addiu $a1, $a1, 0x6540 -/* 09A478 80099878 24846508 */ addiu $a0, %lo(D_80126508) # addiu $a0, $a0, 0x6508 -.L8009987C: -/* 09A47C 8009987C 90A20000 */ lbu $v0, ($a1) -/* 09A480 80099880 24630002 */ addiu $v1, $v1, 2 -/* 09A484 80099884 0102C021 */ addu $t8, $t0, $v0 -/* 09A488 80099888 930E0000 */ lbu $t6, ($t8) -/* 09A48C 8009988C 01227821 */ addu $t7, $t1, $v0 -/* 09A490 80099890 91F90000 */ lbu $t9, ($t7) -/* 09A494 80099894 03E2C021 */ addu $t8, $ra, $v0 -/* 09A498 80099898 00027840 */ sll $t7, $v0, 1 -/* 09A49C 8009989C A08E0000 */ sb $t6, ($a0) -/* 09A4A0 800998A0 A0D90000 */ sb $t9, ($a2) -/* 09A4A4 800998A4 930E0000 */ lbu $t6, ($t8) -/* 09A4A8 800998A8 014FC821 */ addu $t9, $t2, $t7 -/* 09A4AC 800998AC 97380000 */ lhu $t8, ($t9) -/* 09A4B0 800998B0 006B082B */ sltu $at, $v1, $t3 -/* 09A4B4 800998B4 24840001 */ addiu $a0, $a0, 1 -/* 09A4B8 800998B8 24A50001 */ addiu $a1, $a1, 1 -/* 09A4BC 800998BC 24C60001 */ addiu $a2, $a2, 1 -/* 09A4C0 800998C0 24E70001 */ addiu $a3, $a3, 1 -/* 09A4C4 800998C4 A0EEFFFF */ sb $t6, -1($a3) -/* 09A4C8 800998C8 1420FFEC */ bnez $at, .L8009987C -/* 09A4CC 800998CC A478FFFE */ sh $t8, -2($v1) -.L800998D0: -/* 09A4D0 800998D0 8FBF0014 */ lw $ra, 0x14($sp) -/* 09A4D4 800998D4 27BD0058 */ addiu $sp, $sp, 0x58 -/* 09A4D8 800998D8 03E00008 */ jr $ra -/* 09A4DC 800998DC 00000000 */ nop - diff --git a/asm/non_matchings/menu/randomise_ai_racer_slots.s b/asm/non_matchings/menu/randomise_ai_racer_slots.s deleted file mode 100644 index a5578893..00000000 --- a/asm/non_matchings/menu/randomise_ai_racer_slots.s +++ /dev/null @@ -1,142 +0,0 @@ -glabel randomise_ai_racer_slots -/* 08C73C 8008BB3C 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 08C740 8008BB40 AFBF0034 */ sw $ra, 0x34($sp) -/* 08C744 8008BB44 AFB60030 */ sw $s6, 0x30($sp) -/* 08C748 8008BB48 AFB00018 */ sw $s0, 0x18($sp) -/* 08C74C 8008BB4C 00808025 */ move $s0, $a0 -/* 08C750 8008BB50 AFB5002C */ sw $s5, 0x2c($sp) -/* 08C754 8008BB54 AFB40028 */ sw $s4, 0x28($sp) -/* 08C758 8008BB58 AFB30024 */ sw $s3, 0x24($sp) -/* 08C75C 8008BB5C AFB20020 */ sw $s2, 0x20($sp) -/* 08C760 8008BB60 AFB1001C */ sw $s1, 0x1c($sp) -/* 08C764 8008BB64 0C027B34 */ jal is_drumstick_unlocked -/* 08C768 8008BB68 24160007 */ li $s6, 7 -/* 08C76C 8008BB6C 10400002 */ beqz $v0, .L8008BB78 -/* 08C770 8008BB70 00000000 */ nop -/* 08C774 8008BB74 24160008 */ li $s6, 8 -.L8008BB78: -/* 08C778 8008BB78 0C027B2E */ jal is_tt_unlocked -/* 08C77C 8008BB7C 00000000 */ nop -/* 08C780 8008BB80 10400002 */ beqz $v0, .L8008BB8C -/* 08C784 8008BB84 2A010008 */ slti $at, $s0, 8 -/* 08C788 8008BB88 26D60001 */ addiu $s6, $s6, 1 -.L8008BB8C: -/* 08C78C 8008BB8C 10200017 */ beqz $at, .L8008BBEC -/* 08C790 8008BB90 3C188012 */ lui $t8, %hi(gCharacterIdSlots) # $t8, 0x8012 -/* 08C794 8008BB94 1A00000F */ blez $s0, .L8008BBD4 -/* 08C798 8008BB98 00008825 */ move $s1, $zero -/* 08C79C 8008BB9C 3C0E8012 */ lui $t6, %hi(gCharacterIdSlots) # $t6, 0x8012 -/* 08C7A0 8008BBA0 25CE63F0 */ addiu $t6, %lo(gCharacterIdSlots) # addiu $t6, $t6, 0x63f0 -/* 08C7A4 8008BBA4 000E9821 */ addu $s3, $zero, $t6 -/* 08C7A8 8008BBA8 020E1021 */ addu $v0, $s0, $t6 -/* 08C7AC 8008BBAC 24030009 */ li $v1, 9 -.L8008BBB0: -/* 08C7B0 8008BBB0 826F0000 */ lb $t7, ($s3) -/* 08C7B4 8008BBB4 26730001 */ addiu $s3, $s3, 1 -/* 08C7B8 8008BBB8 146F0002 */ bne $v1, $t7, .L8008BBC4 -/* 08C7BC 8008BBBC 0262082B */ sltu $at, $s3, $v0 -/* 08C7C0 8008BBC0 24110001 */ li $s1, 1 -.L8008BBC4: -/* 08C7C4 8008BBC4 10200003 */ beqz $at, .L8008BBD4 -/* 08C7C8 8008BBC8 00000000 */ nop -/* 08C7CC 8008BBCC 1220FFF8 */ beqz $s1, .L8008BBB0 -/* 08C7D0 8008BBD0 00000000 */ nop -.L8008BBD4: -/* 08C7D4 8008BBD4 16200005 */ bnez $s1, .L8008BBEC -/* 08C7D8 8008BBD8 24030009 */ li $v1, 9 -/* 08C7DC 8008BBDC 3C018012 */ lui $at, %hi(gCharacterIdSlots) # $at, 0x8012 -/* 08C7E0 8008BBE0 00300821 */ addu $at, $at, $s0 -/* 08C7E4 8008BBE4 A02363F0 */ sb $v1, %lo(gCharacterIdSlots)($at) -/* 08C7E8 8008BBE8 26100001 */ addiu $s0, $s0, 1 -.L8008BBEC: -/* 08C7EC 8008BBEC 2A010008 */ slti $at, $s0, 8 -/* 08C7F0 8008BBF0 10200042 */ beqz $at, .L8008BCFC -/* 08C7F4 8008BBF4 02009025 */ move $s2, $s0 -/* 08C7F8 8008BBF8 271863F0 */ addiu $t8, %lo(gCharacterIdSlots) # addiu $t8, $t8, 0x63f0 -/* 08C7FC 8008BBFC 3C148012 */ lui $s4, %hi(gCurrCharacterSelectData) # $s4, 0x8012 -/* 08C800 8008BC00 269463CC */ addiu $s4, %lo(gCurrCharacterSelectData) # addiu $s4, $s4, 0x63cc -/* 08C804 8008BC04 02189821 */ addu $s3, $s0, $t8 -/* 08C808 8008BC08 2415000E */ li $s5, 14 -.L8008BC0C: -/* 08C80C 8008BC0C 00002025 */ move $a0, $zero -.L8008BC10: -/* 08C810 8008BC10 02C02825 */ move $a1, $s6 -/* 08C814 8008BC14 00008825 */ move $s1, $zero -/* 08C818 8008BC18 0C01BE53 */ jal get_random_number_from_range -/* 08C81C 8008BC1C 00008025 */ move $s0, $zero -/* 08C820 8008BC20 00550019 */ multu $v0, $s5 -/* 08C824 8008BC24 8E990000 */ lw $t9, ($s4) -/* 08C828 8008BC28 32450003 */ andi $a1, $s2, 3 -/* 08C82C 8008BC2C 00004012 */ mflo $t0 -/* 08C830 8008BC30 03284821 */ addu $t1, $t9, $t0 -/* 08C834 8008BC34 852A000C */ lh $t2, 0xc($t1) -/* 08C838 8008BC38 1A40002A */ blez $s2, .L8008BCE4 -/* 08C83C 8008BC3C A26A0000 */ sb $t2, ($s3) -/* 08C840 8008BC40 10A0000D */ beqz $a1, .L8008BC78 -/* 08C844 8008BC44 00A02025 */ move $a0, $a1 -/* 08C848 8008BC48 3C0B8012 */ lui $t3, %hi(gCharacterIdSlots) # $t3, 0x8012 -/* 08C84C 8008BC4C 256B63F0 */ addiu $t3, %lo(gCharacterIdSlots) # addiu $t3, $t3, 0x63f0 -/* 08C850 8008BC50 82630000 */ lb $v1, ($s3) -/* 08C854 8008BC54 020B1021 */ addu $v0, $s0, $t3 -.L8008BC58: -/* 08C858 8008BC58 804C0000 */ lb $t4, ($v0) -/* 08C85C 8008BC5C 26100001 */ addiu $s0, $s0, 1 -/* 08C860 8008BC60 15830002 */ bne $t4, $v1, .L8008BC6C -/* 08C864 8008BC64 00000000 */ nop -/* 08C868 8008BC68 24110001 */ li $s1, 1 -.L8008BC6C: -/* 08C86C 8008BC6C 1490FFFA */ bne $a0, $s0, .L8008BC58 -/* 08C870 8008BC70 24420001 */ addiu $v0, $v0, 1 -/* 08C874 8008BC74 1212001B */ beq $s0, $s2, .L8008BCE4 -.L8008BC78: -/* 08C878 8008BC78 3C0D8012 */ lui $t5, %hi(gCharacterIdSlots) # $t5, 0x8012 -/* 08C87C 8008BC7C 25AD63F0 */ addiu $t5, %lo(gCharacterIdSlots) # addiu $t5, $t5, 0x63f0 -/* 08C880 8008BC80 82630000 */ lb $v1, ($s3) -/* 08C884 8008BC84 020D1021 */ addu $v0, $s0, $t5 -/* 08C888 8008BC88 024D2021 */ addu $a0, $s2, $t5 -.L8008BC8C: -/* 08C88C 8008BC8C 804E0000 */ lb $t6, ($v0) -/* 08C890 8008BC90 00000000 */ nop -/* 08C894 8008BC94 15C30002 */ bne $t6, $v1, .L8008BCA0 -/* 08C898 8008BC98 00000000 */ nop -/* 08C89C 8008BC9C 24110001 */ li $s1, 1 -.L8008BCA0: -/* 08C8A0 8008BCA0 804F0001 */ lb $t7, 1($v0) -/* 08C8A4 8008BCA4 00000000 */ nop -/* 08C8A8 8008BCA8 15E30002 */ bne $t7, $v1, .L8008BCB4 -/* 08C8AC 8008BCAC 00000000 */ nop -/* 08C8B0 8008BCB0 24110001 */ li $s1, 1 -.L8008BCB4: -/* 08C8B4 8008BCB4 80580002 */ lb $t8, 2($v0) -/* 08C8B8 8008BCB8 00000000 */ nop -/* 08C8BC 8008BCBC 17030002 */ bne $t8, $v1, .L8008BCC8 -/* 08C8C0 8008BCC0 00000000 */ nop -/* 08C8C4 8008BCC4 24110001 */ li $s1, 1 -.L8008BCC8: -/* 08C8C8 8008BCC8 80590003 */ lb $t9, 3($v0) -/* 08C8CC 8008BCCC 24420004 */ addiu $v0, $v0, 4 -/* 08C8D0 8008BCD0 17230002 */ bne $t9, $v1, .L8008BCDC -/* 08C8D4 8008BCD4 00000000 */ nop -/* 08C8D8 8008BCD8 24110001 */ li $s1, 1 -.L8008BCDC: -/* 08C8DC 8008BCDC 1444FFEB */ bne $v0, $a0, .L8008BC8C -/* 08C8E0 8008BCE0 00000000 */ nop -.L8008BCE4: -/* 08C8E4 8008BCE4 1620FFCA */ bnez $s1, .L8008BC10 -/* 08C8E8 8008BCE8 00002025 */ move $a0, $zero -/* 08C8EC 8008BCEC 26520001 */ addiu $s2, $s2, 1 -/* 08C8F0 8008BCF0 24010008 */ li $at, 8 -/* 08C8F4 8008BCF4 1641FFC5 */ bne $s2, $at, .L8008BC0C -/* 08C8F8 8008BCF8 26730001 */ addiu $s3, $s3, 1 -.L8008BCFC: -/* 08C8FC 8008BCFC 8FBF0034 */ lw $ra, 0x34($sp) -/* 08C900 8008BD00 8FB00018 */ lw $s0, 0x18($sp) -/* 08C904 8008BD04 8FB1001C */ lw $s1, 0x1c($sp) -/* 08C908 8008BD08 8FB20020 */ lw $s2, 0x20($sp) -/* 08C90C 8008BD0C 8FB30024 */ lw $s3, 0x24($sp) -/* 08C910 8008BD10 8FB40028 */ lw $s4, 0x28($sp) -/* 08C914 8008BD14 8FB5002C */ lw $s5, 0x2c($sp) -/* 08C918 8008BD18 8FB60030 */ lw $s6, 0x30($sp) -/* 08C91C 8008BD1C 03E00008 */ jr $ra -/* 08C920 8008BD20 27BD0038 */ addiu $sp, $sp, 0x38 - diff --git a/asm/non_matchings/menu/render_enter_filename_ui.s b/asm/non_matchings/menu/render_enter_filename_ui.s deleted file mode 100644 index 53ca11e9..00000000 --- a/asm/non_matchings/menu/render_enter_filename_ui.s +++ /dev/null @@ -1,271 +0,0 @@ -glabel render_enter_filename_ui -/* 098518 80097918 444EF800 */ cfc1 $t6, $31 -/* 09851C 8009791C 3C018012 */ lui $at, %hi(D_80126C50) # $at, 0x8012 -/* 098520 80097920 C4206C50 */ lwc1 $f0, %lo(D_80126C50)($at) -/* 098524 80097924 35C10003 */ ori $at, $t6, 3 -/* 098528 80097928 38210002 */ xori $at, $at, 2 -/* 09852C 8009792C 44C1F800 */ ctc1 $at, $31 -/* 098530 80097930 3C014220 */ li $at, 0x42200000 # 40.000000 -/* 098534 80097934 46000124 */ cvt.w.s $f4, $f0 -/* 098538 80097938 44818000 */ mtc1 $at, $f16 -/* 09853C 8009793C 44022000 */ mfc1 $v0, $f4 -/* 098540 80097940 44CEF800 */ ctc1 $t6, $31 -/* 098544 80097944 44823000 */ mtc1 $v0, $f6 -/* 098548 80097948 27BDFF88 */ addiu $sp, $sp, -0x78 -/* 09854C 8009794C 46803220 */ cvt.s.w $f8, $f6 -/* 098550 80097950 241900A0 */ li $t9, 160 -/* 098554 80097954 AFBF0044 */ sw $ra, 0x44($sp) -/* 098558 80097958 46080281 */ sub.s $f10, $f0, $f8 -/* 09855C 8009795C AFA40078 */ sw $a0, 0x78($sp) -/* 098560 80097960 46105482 */ mul.s $f18, $f10, $f16 -/* 098564 80097964 AFBE0040 */ sw $fp, 0x40($sp) -/* 098568 80097968 AFB7003C */ sw $s7, 0x3c($sp) -/* 09856C 8009796C AFB60038 */ sw $s6, 0x38($sp) -/* 098570 80097970 444FF800 */ cfc1 $t7, $31 -/* 098574 80097974 AFB50034 */ sw $s5, 0x34($sp) -/* 098578 80097978 35E10003 */ ori $at, $t7, 3 -/* 09857C 8009797C 38210002 */ xori $at, $at, 2 -/* 098580 80097980 44C1F800 */ ctc1 $at, $31 -/* 098584 80097984 AFB40030 */ sw $s4, 0x30($sp) -/* 098588 80097988 46009124 */ cvt.w.s $f4, $f18 -/* 09858C 8009798C AFB3002C */ sw $s3, 0x2c($sp) -/* 098590 80097990 44182000 */ mfc1 $t8, $f4 -/* 098594 80097994 44CFF800 */ ctc1 $t7, $31 -/* 098598 80097998 03384023 */ subu $t0, $t9, $t8 -/* 09859C 8009799C AFB20028 */ sw $s2, 0x28($sp) -/* 0985A0 800979A0 AFB10024 */ sw $s1, 0x24($sp) -/* 0985A4 800979A4 AFB00020 */ sw $s0, 0x20($sp) -/* 0985A8 800979A8 AFA8006C */ sw $t0, 0x6c($sp) -/* 0985AC 800979AC 00002025 */ move $a0, $zero -/* 0985B0 800979B0 00002825 */ move $a1, $zero -/* 0985B4 800979B4 00003025 */ move $a2, $zero -/* 0985B8 800979B8 00003825 */ move $a3, $zero -/* 0985BC 800979BC 0C0310F3 */ jal set_text_background_colour -/* 0985C0 800979C0 AFA2005C */ sw $v0, 0x5c($sp) -/* 0985C4 800979C4 0C0310BB */ jal set_text_font -/* 0985C8 800979C8 00002025 */ move $a0, $zero -/* 0985CC 800979CC 24090080 */ li $t1, 128 -/* 0985D0 800979D0 AFA90010 */ sw $t1, 0x10($sp) -/* 0985D4 800979D4 00002025 */ move $a0, $zero -/* 0985D8 800979D8 00002825 */ move $a1, $zero -/* 0985DC 800979DC 00003025 */ move $a2, $zero -/* 0985E0 800979E0 0C0310E1 */ jal set_text_colour -/* 0985E4 800979E4 240700FF */ li $a3, 255 -/* 0985E8 800979E8 3C11800E */ lui $s1, %hi(gMenuText) # $s1, 0x800e -/* 0985EC 800979EC 2631F4A0 */ addiu $s1, %lo(gMenuText) # addiu $s1, $s1, -0xb60 -/* 0985F0 800979F0 3C10800E */ lui $s0, %hi(D_800E0F90) # $s0, 0x800e -/* 0985F4 800979F4 8E2A0000 */ lw $t2, ($s1) -/* 0985F8 800979F8 26100F90 */ addiu $s0, %lo(D_800E0F90) # addiu $s0, $s0, 0xf90 -/* 0985FC 800979FC 8E060000 */ lw $a2, ($s0) -/* 098600 80097A00 3C138012 */ lui $s3, %hi(sMenuCurrDisplayList) # $s3, 0x8012 -/* 098604 80097A04 267363A0 */ addiu $s3, %lo(sMenuCurrDisplayList) # addiu $s3, $s3, 0x63a0 -/* 098608 80097A08 240B000C */ li $t3, 12 -/* 09860C 80097A0C 8D470020 */ lw $a3, 0x20($t2) -/* 098610 80097A10 AFAB0010 */ sw $t3, 0x10($sp) -/* 098614 80097A14 02602025 */ move $a0, $s3 -/* 098618 80097A18 240500A2 */ li $a1, 162 -/* 09861C 80097A1C 0C031110 */ jal draw_text -/* 098620 80097A20 24C6FFEA */ addiu $a2, $a2, -0x16 -/* 098624 80097A24 240C00FF */ li $t4, 255 -/* 098628 80097A28 AFAC0010 */ sw $t4, 0x10($sp) -/* 09862C 80097A2C 240400FF */ li $a0, 255 -/* 098630 80097A30 24050080 */ li $a1, 128 -/* 098634 80097A34 240600FF */ li $a2, 255 -/* 098638 80097A38 0C0310E1 */ jal set_text_colour -/* 09863C 80097A3C 24070060 */ li $a3, 96 -/* 098640 80097A40 8E2D0000 */ lw $t5, ($s1) -/* 098644 80097A44 8E060000 */ lw $a2, ($s0) -/* 098648 80097A48 240E000C */ li $t6, 12 -/* 09864C 80097A4C 8DA70020 */ lw $a3, 0x20($t5) -/* 098650 80097A50 AFAE0010 */ sw $t6, 0x10($sp) -/* 098654 80097A54 02602025 */ move $a0, $s3 -/* 098658 80097A58 240500A0 */ li $a1, 160 -/* 09865C 80097A5C 0C031110 */ jal draw_text -/* 098660 80097A60 24C6FFE8 */ addiu $a2, $a2, -0x18 -/* 098664 80097A64 3C1E800E */ lui $fp, %hi(gFileNameValidChars) # $fp, 0x800e -/* 098668 80097A68 3C178012 */ lui $s7, %hi(D_80126C6C) # $s7, 0x8012 -/* 09866C 80097A6C 3C14800E */ lui $s4, %hi(D_800E0F8C) # $s4, 0x800e -/* 098670 80097A70 8E120000 */ lw $s2, ($s0) -/* 098674 80097A74 8FA3006C */ lw $v1, 0x6c($sp) -/* 098678 80097A78 8FA2005C */ lw $v0, 0x5c($sp) -/* 09867C 80097A7C AFA00060 */ sw $zero, 0x60($sp) -/* 098680 80097A80 26940F8C */ addiu $s4, %lo(D_800E0F8C) # addiu $s4, $s4, 0xf8c -/* 098684 80097A84 26F76C6C */ addiu $s7, %lo(D_80126C6C) # addiu $s7, $s7, 0x6c6c -/* 098688 80097A88 27DE0F6C */ addiu $fp, %lo(gFileNameValidChars) # addiu $fp, $fp, 0xf6c -.L80097A8C: -/* 09868C 80097A8C 8FAF0060 */ lw $t7, 0x60($sp) -/* 098690 80097A90 00608825 */ move $s1, $v1 -/* 098694 80097A94 11E00006 */ beqz $t7, .L80097AB0 -/* 098698 80097A98 00408025 */ move $s0, $v0 -/* 09869C 80097A9C 2471FFD8 */ addiu $s1, $v1, -0x28 -/* 0986A0 80097AA0 2450FFFF */ addiu $s0, $v0, -1 -/* 0986A4 80097AA4 2415FFD8 */ li $s5, -40 -/* 0986A8 80097AA8 10000003 */ b .L80097AB8 -/* 0986AC 80097AAC 2416FFFF */ li $s6, -1 -.L80097AB0: -/* 0986B0 80097AB0 24150028 */ li $s5, 40 -/* 0986B4 80097AB4 24160001 */ li $s6, 1 -.L80097AB8: -/* 0986B8 80097AB8 2A21FFF1 */ slti $at, $s1, -0xf -/* 0986BC 80097ABC 14200055 */ bnez $at, .L80097C14 -/* 0986C0 80097AC0 2A210150 */ slti $at, $s1, 0x150 -/* 0986C4 80097AC4 10200054 */ beqz $at, .L80097C18 -/* 0986C8 80097AC8 8FB90060 */ lw $t9, 0x60($sp) -.L80097ACC: -/* 0986CC 80097ACC 06010002 */ bgez $s0, .L80097AD8 -/* 0986D0 80097AD0 00002025 */ move $a0, $zero -/* 0986D4 80097AD4 2410001E */ li $s0, 30 -.L80097AD8: -/* 0986D8 80097AD8 2A01001F */ slti $at, $s0, 0x1f -/* 0986DC 80097ADC 14200002 */ bnez $at, .L80097AE8 -/* 0986E0 80097AE0 00002825 */ move $a1, $zero -/* 0986E4 80097AE4 00008025 */ move $s0, $zero -.L80097AE8: -/* 0986E8 80097AE8 8EF90000 */ lw $t9, ($s7) -/* 0986EC 80097AEC 00003025 */ move $a2, $zero -/* 0986F0 80097AF0 8F380000 */ lw $t8, ($t9) -/* 0986F4 80097AF4 24070080 */ li $a3, 128 -/* 0986F8 80097AF8 1618000A */ bne $s0, $t8, .L80097B24 -/* 0986FC 80097AFC 240900FF */ li $t1, 255 -/* 098700 80097B00 240800FF */ li $t0, 255 -/* 098704 80097B04 AFA80010 */ sw $t0, 0x10($sp) -/* 098708 80097B08 240400FF */ li $a0, 255 -/* 09870C 80097B0C 240500FF */ li $a1, 255 -/* 098710 80097B10 240600FF */ li $a2, 255 -/* 098714 80097B14 0C0310E1 */ jal set_text_colour -/* 098718 80097B18 00003825 */ move $a3, $zero -/* 09871C 80097B1C 10000004 */ b .L80097B30 -/* 098720 80097B20 2A01001C */ slti $at, $s0, 0x1c -.L80097B24: -/* 098724 80097B24 0C0310E1 */ jal set_text_colour -/* 098728 80097B28 AFA90010 */ sw $t1, 0x10($sp) -/* 09872C 80097B2C 2A01001C */ slti $at, $s0, 0x1c -.L80097B30: -/* 098730 80097B30 1020000F */ beqz $at, .L80097B70 -/* 098734 80097B34 00000000 */ nop -/* 098738 80097B38 0C0310BB */ jal set_text_font -/* 09873C 80097B3C 24040002 */ li $a0, 2 -/* 098740 80097B40 03D05021 */ addu $t2, $fp, $s0 -/* 098744 80097B44 914B0000 */ lbu $t3, ($t2) -/* 098748 80097B48 240C000C */ li $t4, 12 -/* 09874C 80097B4C AFAC0010 */ sw $t4, 0x10($sp) -/* 098750 80097B50 02602025 */ move $a0, $s3 -/* 098754 80097B54 02202825 */ move $a1, $s1 -/* 098758 80097B58 02403025 */ move $a2, $s2 -/* 09875C 80097B5C 02803825 */ move $a3, $s4 -/* 098760 80097B60 0C031110 */ jal draw_text -/* 098764 80097B64 A28B0000 */ sb $t3, ($s4) -/* 098768 80097B68 10000024 */ b .L80097BFC -/* 09876C 80097B6C 02358821 */ addu $s1, $s1, $s5 -.L80097B70: -/* 098770 80097B70 0C0310BB */ jal set_text_font -/* 098774 80097B74 00002025 */ move $a0, $zero -/* 098778 80097B78 2401001C */ li $at, 28 -/* 09877C 80097B7C 1601000A */ bne $s0, $at, .L80097BA8 -/* 098780 80097B80 02602025 */ move $a0, $s3 -/* 098784 80097B84 3C07800F */ lui $a3, %hi(D_800E8244) # $a3, 0x800f -/* 098788 80097B88 240D000C */ li $t5, 12 -/* 09878C 80097B8C AFAD0010 */ sw $t5, 0x10($sp) -/* 098790 80097B90 24E78244 */ addiu $a3, %lo(D_800E8244) # addiu $a3, $a3, -0x7dbc -/* 098794 80097B94 02202825 */ move $a1, $s1 -/* 098798 80097B98 0C031110 */ jal draw_text -/* 09879C 80097B9C 02403025 */ move $a2, $s2 -/* 0987A0 80097BA0 10000016 */ b .L80097BFC -/* 0987A4 80097BA4 02358821 */ addu $s1, $s1, $s5 -.L80097BA8: -/* 0987A8 80097BA8 2401001D */ li $at, 29 -/* 0987AC 80097BAC 1601000B */ bne $s0, $at, .L80097BDC -/* 0987B0 80097BB0 02602025 */ move $a0, $s3 -/* 0987B4 80097BB4 3C07800F */ lui $a3, %hi(D_800E8248) # $a3, 0x800f -/* 0987B8 80097BB8 240E000C */ li $t6, 12 -/* 0987BC 80097BBC AFAE0010 */ sw $t6, 0x10($sp) -/* 0987C0 80097BC0 24E78248 */ addiu $a3, %lo(D_800E8248) # addiu $a3, $a3, -0x7db8 -/* 0987C4 80097BC4 02602025 */ move $a0, $s3 -/* 0987C8 80097BC8 02202825 */ move $a1, $s1 -/* 0987CC 80097BCC 0C031110 */ jal draw_text -/* 0987D0 80097BD0 02403025 */ move $a2, $s2 -/* 0987D4 80097BD4 10000009 */ b .L80097BFC -/* 0987D8 80097BD8 02358821 */ addu $s1, $s1, $s5 -.L80097BDC: -/* 0987DC 80097BDC 3C07800F */ lui $a3, %hi(D_800E824C) # $a3, 0x800f -/* 0987E0 80097BE0 240F000C */ li $t7, 12 -/* 0987E4 80097BE4 AFAF0010 */ sw $t7, 0x10($sp) -/* 0987E8 80097BE8 24E7824C */ addiu $a3, %lo(D_800E824C) # addiu $a3, $a3, -0x7db4 -/* 0987EC 80097BEC 02202825 */ move $a1, $s1 -/* 0987F0 80097BF0 0C031110 */ jal draw_text -/* 0987F4 80097BF4 02403025 */ move $a2, $s2 -/* 0987F8 80097BF8 02358821 */ addu $s1, $s1, $s5 -.L80097BFC: -/* 0987FC 80097BFC 2A21FFF1 */ slti $at, $s1, -0xf -/* 098800 80097C00 14200004 */ bnez $at, .L80097C14 -/* 098804 80097C04 02168021 */ addu $s0, $s0, $s6 -/* 098808 80097C08 2A210150 */ slti $at, $s1, 0x150 -/* 09880C 80097C0C 1420FFAF */ bnez $at, .L80097ACC -/* 098810 80097C10 00000000 */ nop -.L80097C14: -/* 098814 80097C14 8FB90060 */ lw $t9, 0x60($sp) -.L80097C18: -/* 098818 80097C18 8FA2005C */ lw $v0, 0x5c($sp) -/* 09881C 80097C1C 8FA3006C */ lw $v1, 0x6c($sp) -/* 098820 80097C20 24010002 */ li $at, 2 -/* 098824 80097C24 27380001 */ addiu $t8, $t9, 1 -/* 098828 80097C28 1701FF98 */ bne $t8, $at, .L80097A8C -/* 09882C 80097C2C AFB80060 */ sw $t8, 0x60($sp) -/* 098830 80097C30 3C048012 */ lui $a0, %hi(D_80126C74) # $a0, 0x8012 -/* 098834 80097C34 27B00050 */ addiu $s0, $sp, 0x50 -/* 098838 80097C38 8C846C74 */ lw $a0, %lo(D_80126C74)($a0) -/* 09883C 80097C3C 0C025DF4 */ jal trim_filename_string -/* 098840 80097C40 02002825 */ move $a1, $s0 -/* 098844 80097C44 12000026 */ beqz $s0, .L80097CE0 -/* 098848 80097C48 3C04800E */ lui $a0, %hi(D_800E0F9C) # $a0, 0x800e -/* 09884C 80097C4C 8C840F9C */ lw $a0, %lo(D_800E0F9C)($a0) -/* 098850 80097C50 0C0310BB */ jal set_text_font -/* 098854 80097C54 00000000 */ nop -/* 098858 80097C58 24080080 */ li $t0, 128 -/* 09885C 80097C5C AFA80010 */ sw $t0, 0x10($sp) -/* 098860 80097C60 00002025 */ move $a0, $zero -/* 098864 80097C64 00002825 */ move $a1, $zero -/* 098868 80097C68 00003025 */ move $a2, $zero -/* 09886C 80097C6C 0C0310E1 */ jal set_text_colour -/* 098870 80097C70 240700FF */ li $a3, 255 -/* 098874 80097C74 3C11800E */ lui $s1, %hi(D_800E0F94) # $s1, 0x800e -/* 098878 80097C78 3C12800E */ lui $s2, %hi(D_800E0F98) # $s2, 0x800e -/* 09887C 80097C7C 26520F98 */ addiu $s2, %lo(D_800E0F98) # addiu $s2, $s2, 0xf98 -/* 098880 80097C80 26310F94 */ addiu $s1, %lo(D_800E0F94) # addiu $s1, $s1, 0xf94 -/* 098884 80097C84 8E250000 */ lw $a1, ($s1) -/* 098888 80097C88 8E460000 */ lw $a2, ($s2) -/* 09888C 80097C8C 2409000C */ li $t1, 12 -/* 098890 80097C90 AFA90010 */ sw $t1, 0x10($sp) -/* 098894 80097C94 02602025 */ move $a0, $s3 -/* 098898 80097C98 02003825 */ move $a3, $s0 -/* 09889C 80097C9C 24A50001 */ addiu $a1, $a1, 1 -/* 0988A0 80097CA0 0C031110 */ jal draw_text -/* 0988A4 80097CA4 24C60003 */ addiu $a2, $a2, 3 -/* 0988A8 80097CA8 240A00FF */ li $t2, 255 -/* 0988AC 80097CAC AFAA0010 */ sw $t2, 0x10($sp) -/* 0988B0 80097CB0 240400FF */ li $a0, 255 -/* 0988B4 80097CB4 240500FF */ li $a1, 255 -/* 0988B8 80097CB8 240600FF */ li $a2, 255 -/* 0988BC 80097CBC 0C0310E1 */ jal set_text_colour -/* 0988C0 80097CC0 00003825 */ move $a3, $zero -/* 0988C4 80097CC4 8E250000 */ lw $a1, ($s1) -/* 0988C8 80097CC8 8E460000 */ lw $a2, ($s2) -/* 0988CC 80097CCC 240B000C */ li $t3, 12 -/* 0988D0 80097CD0 AFAB0010 */ sw $t3, 0x10($sp) -/* 0988D4 80097CD4 02602025 */ move $a0, $s3 -/* 0988D8 80097CD8 0C031110 */ jal draw_text -/* 0988DC 80097CDC 02003825 */ move $a3, $s0 -.L80097CE0: -/* 0988E0 80097CE0 8FBF0044 */ lw $ra, 0x44($sp) -/* 0988E4 80097CE4 8FB00020 */ lw $s0, 0x20($sp) -/* 0988E8 80097CE8 8FB10024 */ lw $s1, 0x24($sp) -/* 0988EC 80097CEC 8FB20028 */ lw $s2, 0x28($sp) -/* 0988F0 80097CF0 8FB3002C */ lw $s3, 0x2c($sp) -/* 0988F4 80097CF4 8FB40030 */ lw $s4, 0x30($sp) -/* 0988F8 80097CF8 8FB50034 */ lw $s5, 0x34($sp) -/* 0988FC 80097CFC 8FB60038 */ lw $s6, 0x38($sp) -/* 098900 80097D00 8FB7003C */ lw $s7, 0x3c($sp) -/* 098904 80097D04 8FBE0040 */ lw $fp, 0x40($sp) -/* 098908 80097D08 03E00008 */ jr $ra -/* 09890C 80097D0C 27BD0078 */ addiu $sp, $sp, 0x78 - diff --git a/asm/non_matchings/objects/func_8000C8F8.s b/asm/non_matchings/objects/func_8000C8F8.s deleted file mode 100644 index bacc3bdb..00000000 --- a/asm/non_matchings/objects/func_8000C8F8.s +++ /dev/null @@ -1,191 +0,0 @@ -glabel func_8000C8F8 -/* 00D4F8 8000C8F8 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 00D4FC 8000C8FC AFBF0024 */ sw $ra, 0x24($sp) -/* 00D500 8000C900 AFB20020 */ sw $s2, 0x20($sp) -/* 00D504 8000C904 AFB1001C */ sw $s1, 0x1c($sp) -/* 00D508 8000C908 AFB00018 */ sw $s0, 0x18($sp) -/* 00D50C 8000C90C AFA40058 */ sw $a0, 0x58($sp) -/* 00D510 8000C910 0C01BAA4 */ jal get_settings -/* 00D514 8000C914 AFA5005C */ sw $a1, 0x5c($sp) -/* 00D518 8000C918 90580049 */ lbu $t8, 0x49($v0) -/* 00D51C 8000C91C 8C4F0004 */ lw $t7, 4($v0) -/* 00D520 8000C920 0018C880 */ sll $t9, $t8, 2 -/* 00D524 8000C924 01F94021 */ addu $t0, $t7, $t9 -/* 00D528 8000C928 8D030000 */ lw $v1, ($t0) -/* 00D52C 8000C92C 9450000C */ lhu $s0, 0xc($v0) -/* 00D530 8000C930 30690004 */ andi $t1, $v1, 4 -/* 00D534 8000C934 2D230001 */ sltiu $v1, $t1, 1 -/* 00D538 8000C938 10600007 */ beqz $v1, .L8000C958 -/* 00D53C 8000C93C 360E0820 */ ori $t6, $s0, 0x820 -/* 00D540 8000C940 904B0048 */ lbu $t3, 0x48($v0) -/* 00D544 8000C944 240C0001 */ li $t4, 1 -/* 00D548 8000C948 016C6804 */ sllv $t5, $t4, $t3 -/* 00D54C 8000C94C 01AE1824 */ and $v1, $t5, $t6 -/* 00D550 8000C950 0003702B */ sltu $t6, $zero, $v1 -/* 00D554 8000C954 01C01825 */ move $v1, $t6 -.L8000C958: -/* 00D558 8000C958 3C108012 */ lui $s0, %hi(gIsSilverCoinRace) # $s0, 0x8012 -/* 00D55C 8000C95C 2610AE03 */ addiu $s0, %lo(gIsSilverCoinRace) # addiu $s0, $s0, -0x51fd -/* 00D560 8000C960 A2030000 */ sb $v1, ($s0) -/* 00D564 8000C964 904F0049 */ lbu $t7, 0x49($v0) -/* 00D568 8000C968 8C580004 */ lw $t8, 4($v0) -/* 00D56C 8000C96C 000FC880 */ sll $t9, $t7, 2 -/* 00D570 8000C970 03194021 */ addu $t0, $t8, $t9 -/* 00D574 8000C974 8D090000 */ lw $t1, ($t0) -/* 00D578 8000C978 00000000 */ nop -/* 00D57C 8000C97C 312A0002 */ andi $t2, $t1, 2 -/* 00D580 8000C980 15400002 */ bnez $t2, .L8000C98C -/* 00D584 8000C984 00000000 */ nop -/* 00D588 8000C988 A2000000 */ sb $zero, ($s0) -.L8000C98C: -/* 00D58C 8000C98C 0C0270B4 */ jal is_in_tracks_mode -/* 00D590 8000C990 00000000 */ nop -/* 00D594 8000C994 10400002 */ beqz $v0, .L8000C9A0 -/* 00D598 8000C998 00000000 */ nop -/* 00D59C 8000C99C A2000000 */ sb $zero, ($s0) -.L8000C9A0: -/* 00D5A0 8000C9A0 0C01AF66 */ jal get_current_level_race_type -/* 00D5A4 8000C9A4 00000000 */ nop -/* 00D5A8 8000C9A8 10400002 */ beqz $v0, .L8000C9B4 -/* 00D5AC 8000C9AC 3C018012 */ lui $at, %hi(D_8011AD3E) # $at, 0x8012 -/* 00D5B0 8000C9B0 A2000000 */ sb $zero, ($s0) -.L8000C9B4: -/* 00D5B4 8000C9B4 A020AD3E */ sb $zero, %lo(D_8011AD3E)($at) -/* 00D5B8 8000C9B8 24043000 */ li $a0, 12288 -/* 00D5BC 8000C9BC 0C01C327 */ jal allocate_from_main_pool_safe -/* 00D5C0 8000C9C0 3405FFFF */ li $a1, 65535 -/* 00D5C4 8000C9C4 8FA3005C */ lw $v1, 0x5c($sp) -/* 00D5C8 8000C9C8 3C0B8012 */ lui $t3, %hi(D_8011AEB0) # $t3, 0x8012 -/* 00D5CC 8000C9CC 00036080 */ sll $t4, $v1, 2 -/* 00D5D0 8000C9D0 3C0D8012 */ lui $t5, %hi(D_8011AE98) # $t5, 0x8012 -/* 00D5D4 8000C9D4 3C0F8012 */ lui $t7, %hi(D_8011AEA0) # $t7, 0x8012 -/* 00D5D8 8000C9D8 256BAEB0 */ addiu $t3, %lo(D_8011AEB0) # addiu $t3, $t3, -0x5150 -/* 00D5DC 8000C9DC 25ADAE98 */ addiu $t5, %lo(D_8011AE98) # addiu $t5, $t5, -0x5168 -/* 00D5E0 8000C9E0 25EFAEA0 */ addiu $t7, %lo(D_8011AEA0) # addiu $t7, $t7, -0x5160 -/* 00D5E4 8000C9E4 8FB80058 */ lw $t8, 0x58($sp) -/* 00D5E8 8000C9E8 018B2821 */ addu $a1, $t4, $t3 -/* 00D5EC 8000C9EC 018D8821 */ addu $s1, $t4, $t5 -/* 00D5F0 8000C9F0 244E0010 */ addiu $t6, $v0, 0x10 -/* 00D5F4 8000C9F4 018F9021 */ addu $s2, $t4, $t7 -/* 00D5F8 8000C9F8 3C018012 */ lui $at, %hi(D_8011AEA8) # $at, 0x8012 -/* 00D5FC 8000C9FC ACA20000 */ sw $v0, ($a1) -/* 00D600 8000CA00 AE2E0000 */ sw $t6, ($s1) -/* 00D604 8000CA04 AE400000 */ sw $zero, ($s2) -/* 00D608 8000CA08 002C0821 */ addu $at, $at, $t4 -/* 00D60C 8000CA0C AFA20048 */ sw $v0, 0x48($sp) -/* 00D610 8000CA10 AFA50028 */ sw $a1, 0x28($sp) -/* 00D614 8000CA14 24040014 */ li $a0, 20 -/* 00D618 8000CA18 0C01DB16 */ jal load_asset_section_from_rom -/* 00D61C 8000CA1C AC38AEA8 */ sw $t8, %lo(D_8011AEA8)($at) -/* 00D620 8000CA20 8C590000 */ lw $t9, ($v0) -/* 00D624 8000CA24 2405FFFF */ li $a1, -1 -/* 00D628 8000CA28 00403025 */ move $a2, $v0 -/* 00D62C 8000CA2C 10B90006 */ beq $a1, $t9, .L8000CA48 -/* 00D630 8000CA30 00002025 */ move $a0, $zero -/* 00D634 8000CA34 00C01825 */ move $v1, $a2 -.L8000CA38: -/* 00D638 8000CA38 8C680004 */ lw $t0, 4($v1) -/* 00D63C 8000CA3C 24840001 */ addiu $a0, $a0, 1 -/* 00D640 8000CA40 14A8FFFD */ bne $a1, $t0, .L8000CA38 -/* 00D644 8000CA44 24630004 */ addiu $v1, $v1, 4 -.L8000CA48: -/* 00D648 8000CA48 8FA90058 */ lw $t1, 0x58($sp) -/* 00D64C 8000CA4C 2484FFFF */ addiu $a0, $a0, -1 -/* 00D650 8000CA50 0124082A */ slt $at, $t1, $a0 -/* 00D654 8000CA54 14200002 */ bnez $at, .L8000CA60 -/* 00D658 8000CA58 24040015 */ li $a0, 21 -/* 00D65C 8000CA5C AFA00058 */ sw $zero, 0x58($sp) -.L8000CA60: -/* 00D660 8000CA60 8FAA0058 */ lw $t2, 0x58($sp) -/* 00D664 8000CA64 00000000 */ nop -/* 00D668 8000CA68 000A6080 */ sll $t4, $t2, 2 -/* 00D66C 8000CA6C 004C1821 */ addu $v1, $v0, $t4 -/* 00D670 8000CA70 8C700000 */ lw $s0, ($v1) -/* 00D674 8000CA74 8C6B0004 */ lw $t3, 4($v1) -/* 00D678 8000CA78 02002825 */ move $a1, $s0 -/* 00D67C 8000CA7C 01703823 */ subu $a3, $t3, $s0 -/* 00D680 8000CA80 10E0004A */ beqz $a3, .L8000CBAC -/* 00D684 8000CA84 8FBF0024 */ lw $ra, 0x24($sp) -/* 00D688 8000CA88 AFA6003C */ sw $a2, 0x3c($sp) -/* 00D68C 8000CA8C 0C031877 */ jal get_asset_uncompressed_size -/* 00D690 8000CA90 AFA70054 */ sw $a3, 0x54($sp) -/* 00D694 8000CA94 8FAD0048 */ lw $t5, 0x48($sp) -/* 00D698 8000CA98 8FA70054 */ lw $a3, 0x54($sp) -/* 00D69C 8000CA9C 01A27021 */ addu $t6, $t5, $v0 -/* 00D6A0 8000CAA0 01C72823 */ subu $a1, $t6, $a3 -/* 00D6A4 8000CAA4 24A50020 */ addiu $a1, $a1, 0x20 -/* 00D6A8 8000CAA8 AFA50034 */ sw $a1, 0x34($sp) -/* 00D6AC 8000CAAC 24040015 */ li $a0, 21 -/* 00D6B0 8000CAB0 0C01DB9A */ jal load_asset_to_address -/* 00D6B4 8000CAB4 02003025 */ move $a2, $s0 -/* 00D6B8 8000CAB8 8FA40034 */ lw $a0, 0x34($sp) -/* 00D6BC 8000CABC 8FA50048 */ lw $a1, 0x48($sp) -/* 00D6C0 8000CAC0 0C031886 */ jal gzip_inflate -/* 00D6C4 8000CAC4 00000000 */ nop -/* 00D6C8 8000CAC8 8FA4003C */ lw $a0, 0x3c($sp) -/* 00D6CC 8000CACC 0C01C450 */ jal free_from_memory_pool -/* 00D6D0 8000CAD0 00000000 */ nop -/* 00D6D4 8000CAD4 8FAF0028 */ lw $t7, 0x28($sp) -/* 00D6D8 8000CAD8 8FA80048 */ lw $t0, 0x48($sp) -/* 00D6DC 8000CADC 8DF80000 */ lw $t8, ($t7) -/* 00D6E0 8000CAE0 8FAA005C */ lw $t2, 0x5c($sp) -/* 00D6E4 8000CAE4 27190010 */ addiu $t9, $t8, 0x10 -/* 00D6E8 8000CAE8 AE390000 */ sw $t9, ($s1) -/* 00D6EC 8000CAEC 8D090000 */ lw $t1, ($t0) -/* 00D6F0 8000CAF0 3C018012 */ lui $at, %hi(D_8011AEC0) # $at, 0x8012 -/* 00D6F4 8000CAF4 AE490000 */ sw $t1, ($s2) -/* 00D6F8 8000CAF8 AC2AAEC0 */ sw $t2, %lo(D_8011AEC0)($at) -/* 00D6FC 8000CAFC 8E4C0000 */ lw $t4, ($s2) -/* 00D700 8000CB00 00008025 */ move $s0, $zero -/* 00D704 8000CB04 19800014 */ blez $t4, .L8000CB58 -/* 00D708 8000CB08 00000000 */ nop -.L8000CB0C: -/* 00D70C 8000CB0C 8E240000 */ lw $a0, ($s1) -/* 00D710 8000CB10 0C003A95 */ jal spawn_object -/* 00D714 8000CB14 24050001 */ li $a1, 1 -/* 00D718 8000CB18 8E230000 */ lw $v1, ($s1) -/* 00D71C 8000CB1C 8E4E0000 */ lw $t6, ($s2) -/* 00D720 8000CB20 90640001 */ lbu $a0, 1($v1) -/* 00D724 8000CB24 00000000 */ nop -/* 00D728 8000CB28 308B003F */ andi $t3, $a0, 0x3f -/* 00D72C 8000CB2C 020B8021 */ addu $s0, $s0, $t3 -/* 00D730 8000CB30 01636821 */ addu $t5, $t3, $v1 -/* 00D734 8000CB34 020E082A */ slt $at, $s0, $t6 -/* 00D738 8000CB38 1420FFF4 */ bnez $at, .L8000CB0C -/* 00D73C 8000CB3C AE2D0000 */ sw $t5, ($s1) -/* 00D740 8000CB40 8FAF0028 */ lw $t7, 0x28($sp) -/* 00D744 8000CB44 00000000 */ nop -/* 00D748 8000CB48 8DF80000 */ lw $t8, ($t7) -/* 00D74C 8000CB4C 00000000 */ nop -/* 00D750 8000CB50 27190010 */ addiu $t9, $t8, 0x10 -/* 00D754 8000CB54 AE390000 */ sw $t9, ($s1) -.L8000CB58: -/* 00D758 8000CB58 3C018012 */ lui $at, %hi(D_8011AE70) # $at, 0x8012 -/* 00D75C 8000CB5C AC20AE70 */ sw $zero, %lo(D_8011AE70)($at) -/* 00D760 8000CB60 24100001 */ li $s0, 1 -/* 00D764 8000CB64 3C118012 */ lui $s1, %hi(D_8011ADAC) # $s1, 0x8012 -/* 00D768 8000CB68 3C018012 */ lui $at, %hi(D_8011ADC0) # $at, 0x8012 -/* 00D76C 8000CB6C 2631ADAC */ addiu $s1, %lo(D_8011ADAC) # addiu $s1, $s1, -0x5254 -/* 00D770 8000CB70 AC30ADC0 */ sw $s0, %lo(D_8011ADC0)($at) -/* 00D774 8000CB74 8E280000 */ lw $t0, ($s1) -/* 00D778 8000CB78 00000000 */ nop -/* 00D77C 8000CB7C 15000009 */ bnez $t0, .L8000CBA4 -/* 00D780 8000CB80 00000000 */ nop -/* 00D784 8000CB84 0C004013 */ jal gParticlePtrList_flush -/* 00D788 8000CB88 00000000 */ nop -/* 00D78C 8000CB8C 0C005FA6 */ jal func_80017E98 -/* 00D790 8000CB90 00000000 */ nop -/* 00D794 8000CB94 0C006F15 */ jal func_8001BC54 -/* 00D798 8000CB98 00000000 */ nop -/* 00D79C 8000CB9C 0C007A4F */ jal func_8001E93C -/* 00D7A0 8000CBA0 00000000 */ nop -.L8000CBA4: -/* 00D7A4 8000CBA4 AE300000 */ sw $s0, ($s1) -/* 00D7A8 8000CBA8 8FBF0024 */ lw $ra, 0x24($sp) -.L8000CBAC: -/* 00D7AC 8000CBAC 8FB00018 */ lw $s0, 0x18($sp) -/* 00D7B0 8000CBB0 8FB1001C */ lw $s1, 0x1c($sp) -/* 00D7B4 8000CBB4 8FB20020 */ lw $s2, 0x20($sp) -/* 00D7B8 8000CBB8 03E00008 */ jr $ra -/* 00D7BC 8000CBBC 27BD0058 */ addiu $sp, $sp, 0x58 - diff --git a/asm/non_matchings/objects/func_80016500.s b/asm/non_matchings/objects/func_80016500.s deleted file mode 100644 index 96b33411..00000000 --- a/asm/non_matchings/objects/func_80016500.s +++ /dev/null @@ -1,159 +0,0 @@ -glabel func_80016500 -/* 017100 80016500 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 017104 80016504 AFBF001C */ sw $ra, 0x1c($sp) -/* 017108 80016508 AFB00018 */ sw $s0, 0x18($sp) -/* 01710C 8001650C AFA40040 */ sw $a0, 0x40($sp) -/* 017110 80016510 C4A4002C */ lwc1 $f4, 0x2c($a1) -/* 017114 80016514 00A08025 */ move $s0, $a1 -/* 017118 80016518 E7A40030 */ swc1 $f4, 0x30($sp) -/* 01711C 8001651C 80AE01D6 */ lb $t6, 0x1d6($a1) -/* 017120 80016520 84A201A0 */ lh $v0, 0x1a0($a1) -/* 017124 80016524 15C0000B */ bnez $t6, .L80016554 -/* 017128 80016528 00022023 */ negu $a0, $v0 -/* 01712C 8001652C 80AF01E6 */ lb $t7, 0x1e6($a1) -/* 017130 80016530 00000000 */ nop -/* 017134 80016534 11E00007 */ beqz $t7, .L80016554 -/* 017138 80016538 00022023 */ negu $a0, $v0 -/* 01713C 8001653C 8CB8010C */ lw $t8, 0x10c($a1) -/* 017140 80016540 00000000 */ nop -/* 017144 80016544 00581021 */ addu $v0, $v0, $t8 -/* 017148 80016548 0002CC00 */ sll $t9, $v0, 0x10 -/* 01714C 8001654C 00191403 */ sra $v0, $t9, 0x10 -/* 017150 80016550 00022023 */ negu $a0, $v0 -.L80016554: -/* 017154 80016554 00044C00 */ sll $t1, $a0, 0x10 -/* 017158 80016558 00092403 */ sra $a0, $t1, 0x10 -/* 01715C 8001655C 0C01C1FE */ jal coss_f -/* 017160 80016560 AFA40020 */ sw $a0, 0x20($sp) -/* 017164 80016564 8FA40020 */ lw $a0, 0x20($sp) -/* 017168 80016568 0C01C1F1 */ jal sins_f -/* 01716C 8001656C E7A0002C */ swc1 $f0, 0x2c($sp) -/* 017170 80016570 8FAB0040 */ lw $t3, 0x40($sp) -/* 017174 80016574 C7A2002C */ lwc1 $f2, 0x2c($sp) -/* 017178 80016578 C566001C */ lwc1 $f6, 0x1c($t3) -/* 01717C 8001657C C56A0024 */ lwc1 $f10, 0x24($t3) -/* 017180 80016580 46023202 */ mul.s $f8, $f6, $f2 -/* 017184 80016584 860D0000 */ lh $t5, ($s0) -/* 017188 80016588 2401FFFF */ li $at, -1 -/* 01718C 8001658C 46005402 */ mul.s $f16, $f10, $f0 -/* 017190 80016590 46104480 */ add.s $f18, $f8, $f16 -/* 017194 80016594 E6120030 */ swc1 $f18, 0x30($s0) -/* 017198 80016598 8FAC0040 */ lw $t4, 0x40($sp) -/* 01719C 8001659C 00000000 */ nop -/* 0171A0 800165A0 C584001C */ lwc1 $f4, 0x1c($t4) -/* 0171A4 800165A4 C5880024 */ lwc1 $f8, 0x24($t4) -/* 0171A8 800165A8 46002187 */ neg.s $f6, $f4 -/* 0171AC 800165AC 46003282 */ mul.s $f10, $f6, $f0 -/* 0171B0 800165B0 00000000 */ nop -/* 0171B4 800165B4 46024402 */ mul.s $f16, $f8, $f2 -/* 0171B8 800165B8 46105480 */ add.s $f18, $f10, $f16 -/* 0171BC 800165BC 11A1005E */ beq $t5, $at, .L80016738 -/* 0171C0 800165C0 E612002C */ swc1 $f18, 0x2c($s0) -/* 0171C4 800165C4 C7A40030 */ lwc1 $f4, 0x30($sp) -/* 0171C8 800165C8 C606002C */ lwc1 $f6, 0x2c($s0) -/* 0171CC 800165CC 3C014160 */ li $at, 0x41600000 # 14.000000 -/* 0171D0 800165D0 44815000 */ mtc1 $at, $f10 -/* 0171D4 800165D4 46062201 */ sub.s $f8, $f4, $f6 -/* 0171D8 800165D8 460A4402 */ mul.s $f16, $f8, $f10 -/* 0171DC 800165DC 444EF800 */ cfc1 $t6, $31 -/* 0171E0 800165E0 00000000 */ nop -/* 0171E4 800165E4 35C10003 */ ori $at, $t6, 3 -/* 0171E8 800165E8 38210002 */ xori $at, $at, 2 -/* 0171EC 800165EC 44C1F800 */ ctc1 $at, $31 -/* 0171F0 800165F0 00000000 */ nop -/* 0171F4 800165F4 460084A4 */ cvt.w.s $f18, $f16 -/* 0171F8 800165F8 44029000 */ mfc1 $v0, $f18 -/* 0171FC 800165FC 44CEF800 */ ctc1 $t6, $31 -/* 017200 80016600 04410002 */ bgez $v0, .L8001660C -/* 017204 80016604 00000000 */ nop -/* 017208 80016608 00021023 */ negu $v0, $v0 -.L8001660C: -/* 01720C 8001660C 24420023 */ addiu $v0, $v0, 0x23 -/* 017210 80016610 28410080 */ slti $at, $v0, 0x80 -/* 017214 80016614 14200002 */ bnez $at, .L80016620 -/* 017218 80016618 2404000D */ li $a0, 13 -/* 01721C 8001661C 2402007F */ li $v0, 127 -.L80016620: -/* 017220 80016620 820301F6 */ lb $v1, 0x1f6($s0) -/* 017224 80016624 26050220 */ addiu $a1, $s0, 0x220 -/* 017228 80016628 1460000B */ bnez $v1, .L80016658 -/* 01722C 8001662C 00000000 */ nop -/* 017230 80016630 0C000741 */ jal play_sound_global -/* 017234 80016634 AFA20038 */ sw $v0, 0x38($sp) -/* 017238 80016638 8FA20038 */ lw $v0, 0x38($sp) -/* 01723C 8001663C 8E050220 */ lw $a1, 0x220($s0) -/* 017240 80016640 2404000D */ li $a0, 13 -/* 017244 80016644 0C0007EE */ jal func_80001FB8 -/* 017248 80016648 304600FF */ andi $a2, $v0, 0xff -/* 01724C 8001664C 8FA20038 */ lw $v0, 0x38($sp) -/* 017250 80016650 820301F6 */ lb $v1, 0x1f6($s0) -/* 017254 80016654 00000000 */ nop -.L80016658: -/* 017258 80016658 14600010 */ bnez $v1, .L8001669C -/* 01725C 8001665C 28410038 */ slti $at, $v0, 0x38 -/* 017260 80016660 1420000F */ bnez $at, .L800166A0 -/* 017264 80016664 28410038 */ slti $at, $v0, 0x38 -/* 017268 80016668 820F01D8 */ lb $t7, 0x1d8($s0) -/* 01726C 8001666C 24050012 */ li $a1, 18 -/* 017270 80016670 15E00006 */ bnez $t7, .L8001668C -/* 017274 80016674 00000000 */ nop -/* 017278 80016678 86040000 */ lh $a0, ($s0) -/* 01727C 8001667C 0C01C8D2 */ jal func_80072348 -/* 017280 80016680 AFA20038 */ sw $v0, 0x38($sp) -/* 017284 80016684 8FA20038 */ lw $v0, 0x38($sp) -/* 017288 80016688 00000000 */ nop -.L8001668C: -/* 01728C 8001668C 921801F3 */ lbu $t8, 0x1f3($s0) -/* 017290 80016690 00000000 */ nop -/* 017294 80016694 37190008 */ ori $t9, $t8, 8 -/* 017298 80016698 A21901F3 */ sb $t9, 0x1f3($s0) -.L8001669C: -/* 01729C 8001669C 28410038 */ slti $at, $v0, 0x38 -.L800166A0: -/* 0172A0 800166A0 14200005 */ bnez $at, .L800166B8 -/* 0172A4 800166A4 240501C2 */ li $a1, 450 -/* 0172A8 800166A8 8FA40040 */ lw $a0, 0x40($sp) -/* 0172AC 800166AC 24060008 */ li $a2, 8 -/* 0172B0 800166B0 0C015C2E */ jal play_random_character_voice -/* 0172B4 800166B4 24070001 */ li $a3, 1 -.L800166B8: -/* 0172B8 800166B8 C7A40030 */ lwc1 $f4, 0x30($sp) -/* 0172BC 800166BC C606002C */ lwc1 $f6, 0x2c($s0) -/* 0172C0 800166C0 86040000 */ lh $a0, ($s0) -/* 0172C4 800166C4 46062201 */ sub.s $f8, $f4, $f6 -/* 0172C8 800166C8 2409001E */ li $t1, 30 -/* 0172CC 800166CC 4448F800 */ cfc1 $t0, $31 -/* 0172D0 800166D0 00000000 */ nop -/* 0172D4 800166D4 35010003 */ ori $at, $t0, 3 -/* 0172D8 800166D8 38210002 */ xori $at, $at, 2 -/* 0172DC 800166DC 44C1F800 */ ctc1 $at, $31 -/* 0172E0 800166E0 00000000 */ nop -/* 0172E4 800166E4 460042A4 */ cvt.w.s $f10, $f8 -/* 0172E8 800166E8 44035000 */ mfc1 $v1, $f10 -/* 0172EC 800166EC 44C8F800 */ ctc1 $t0, $31 -/* 0172F0 800166F0 04610003 */ bgez $v1, .L80016700 -/* 0172F4 800166F4 28610004 */ slti $at, $v1, 4 -/* 0172F8 800166F8 00031823 */ negu $v1, $v1 -/* 0172FC 800166FC 28610004 */ slti $at, $v1, 4 -.L80016700: -/* 017300 80016700 14200002 */ bnez $at, .L8001670C -/* 017304 80016704 00000000 */ nop -/* 017308 80016708 24030003 */ li $v1, 3 -.L8001670C: -/* 01730C 8001670C A20901F6 */ sb $t1, 0x1f6($s0) -/* 017310 80016710 0C01997A */ jal set_active_camera -/* 017314 80016714 AFA3003C */ sw $v1, 0x3c($sp) -/* 017318 80016718 0C01A748 */ jal get_active_camera_segment -/* 01731C 8001671C 00000000 */ nop -/* 017320 80016720 8FA3003C */ lw $v1, 0x3c($sp) -/* 017324 80016724 00000000 */ nop -/* 017328 80016728 44838000 */ mtc1 $v1, $f16 -/* 01732C 8001672C 00000000 */ nop -/* 017330 80016730 468084A0 */ cvt.s.w $f18, $f16 -/* 017334 80016734 E4520030 */ swc1 $f18, 0x30($v0) -.L80016738: -/* 017338 80016738 8FBF001C */ lw $ra, 0x1c($sp) -/* 01733C 8001673C 8FB00018 */ lw $s0, 0x18($sp) -/* 017340 80016740 03E00008 */ jr $ra -/* 017344 80016744 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/non_matchings/objects/func_8001955C.s b/asm/non_matchings/objects/func_8001955C.s deleted file mode 100644 index 437a4b13..00000000 --- a/asm/non_matchings/objects/func_8001955C.s +++ /dev/null @@ -1,186 +0,0 @@ -.late_rodata -glabel D_800E5630 -.double 500.0 - -.text -glabel func_8001955C -/* 01A15C 8001955C 27BDFF40 */ addiu $sp, $sp, -0xc0 -/* 01A160 80019560 AFB60040 */ sw $s6, 0x40($sp) -/* 01A164 80019564 3C168012 */ lui $s6, %hi(gNumberOfCheckpoints) # $s6, 0x8012 -/* 01A168 80019568 8ED6AED0 */ lw $s6, %lo(gNumberOfCheckpoints)($s6) -/* 01A16C 8001956C AFA600C8 */ sw $a2, 0xc8($sp) -/* 01A170 80019570 30CE00FF */ andi $t6, $a2, 0xff -/* 01A174 80019574 01C03025 */ move $a2, $t6 -/* 01A178 80019578 AFBF0044 */ sw $ra, 0x44($sp) -/* 01A17C 8001957C AFB5003C */ sw $s5, 0x3c($sp) -/* 01A180 80019580 AFB40038 */ sw $s4, 0x38($sp) -/* 01A184 80019584 AFB30034 */ sw $s3, 0x34($sp) -/* 01A188 80019588 AFB20030 */ sw $s2, 0x30($sp) -/* 01A18C 8001958C AFB1002C */ sw $s1, 0x2c($sp) -/* 01A190 80019590 AFB00028 */ sw $s0, 0x28($sp) -/* 01A194 80019594 E7B70020 */ swc1 $f23, 0x20($sp) -/* 01A198 80019598 E7B60024 */ swc1 $f22, 0x24($sp) -/* 01A19C 8001959C E7B50018 */ swc1 $f21, 0x18($sp) -/* 01A1A0 800195A0 E7B4001C */ swc1 $f20, 0x1c($sp) -/* 01A1A4 800195A4 16C00003 */ bnez $s6, .L800195B4 -/* 01A1A8 800195A8 AFA400C0 */ sw $a0, 0xc0($sp) -/* 01A1AC 800195AC 10000088 */ b .L800197D0 -/* 01A1B0 800195B0 00001025 */ move $v0, $zero -.L800195B4: -/* 01A1B4 800195B4 24A2FFFE */ addiu $v0, $a1, -2 -/* 01A1B8 800195B8 04410002 */ bgez $v0, .L800195C4 -/* 01A1BC 800195BC 00408825 */ move $s1, $v0 -/* 01A1C0 800195C0 00568821 */ addu $s1, $v0, $s6 -.L800195C4: -/* 01A1C4 800195C4 44879000 */ mtc1 $a3, $f18 -/* 01A1C8 800195C8 8FAF00D0 */ lw $t7, 0xd0($sp) -/* 01A1CC 800195CC 46809520 */ cvt.s.w $f20, $f18 -/* 01A1D0 800195D0 448F9000 */ mtc1 $t7, $f18 -/* 01A1D4 800195D4 00C0A025 */ move $s4, $a2 -/* 01A1D8 800195D8 468095A0 */ cvt.s.w $f22, $f18 -/* 01A1DC 800195DC 27B200A4 */ addiu $s2, $sp, 0xa4 -/* 01A1E0 800195E0 27B30094 */ addiu $s3, $sp, 0x94 -/* 01A1E4 800195E4 27B00084 */ addiu $s0, $sp, 0x84 -/* 01A1E8 800195E8 27B50094 */ addiu $s5, $sp, 0x94 -.L800195EC: -/* 01A1EC 800195EC 02202025 */ move $a0, $s1 -/* 01A1F0 800195F0 0C006E87 */ jal find_next_checkpoint_node -/* 01A1F4 800195F4 02802825 */ move $a1, $s4 -/* 01A1F8 800195F8 C448001C */ lwc1 $f8, 0x1c($v0) -/* 01A1FC 800195FC C44A0008 */ lwc1 $f10, 8($v0) -/* 01A200 80019600 C4460010 */ lwc1 $f6, 0x10($v0) -/* 01A204 80019604 460A4482 */ mul.s $f18, $f8, $f10 -/* 01A208 80019608 26310001 */ addiu $s1, $s1, 1 -/* 01A20C 8001960C 26520004 */ addiu $s2, $s2, 4 -/* 01A210 80019610 26100004 */ addiu $s0, $s0, 4 -/* 01A214 80019614 46149102 */ mul.s $f4, $f18, $f20 -/* 01A218 80019618 46043200 */ add.s $f8, $f6, $f4 -/* 01A21C 8001961C E648FFFC */ swc1 $f8, -4($s2) -/* 01A220 80019620 C452001C */ lwc1 $f18, 0x1c($v0) -/* 01A224 80019624 C44A0014 */ lwc1 $f10, 0x14($v0) -/* 01A228 80019628 46169182 */ mul.s $f6, $f18, $f22 -/* 01A22C 8001962C 46065100 */ add.s $f4, $f10, $f6 -/* 01A230 80019630 E6640000 */ swc1 $f4, ($s3) -/* 01A234 80019634 C4520000 */ lwc1 $f18, ($v0) -/* 01A238 80019638 C448001C */ lwc1 $f8, 0x1c($v0) -/* 01A23C 8001963C 46009287 */ neg.s $f10, $f18 -/* 01A240 80019640 460A4182 */ mul.s $f6, $f8, $f10 -/* 01A244 80019644 C4520018 */ lwc1 $f18, 0x18($v0) -/* 01A248 80019648 46143102 */ mul.s $f4, $f6, $f20 -/* 01A24C 8001964C 46049200 */ add.s $f8, $f18, $f4 -/* 01A250 80019650 16360002 */ bne $s1, $s6, .L8001965C -/* 01A254 80019654 E608FFFC */ swc1 $f8, -4($s0) -/* 01A258 80019658 00008825 */ move $s1, $zero -.L8001965C: -/* 01A25C 8001965C 1615FFE3 */ bne $s0, $s5, .L800195EC -/* 01A260 80019660 26730004 */ addiu $s3, $s3, 4 -/* 01A264 80019664 C7AA00D4 */ lwc1 $f10, 0xd4($sp) -/* 01A268 80019668 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 01A26C 8001966C 44811800 */ mtc1 $at, $f3 -/* 01A270 80019670 44801000 */ mtc1 $zero, $f2 -/* 01A274 80019674 460051A1 */ cvt.d.s $f6, $f10 -/* 01A278 80019678 46261481 */ sub.d $f18, $f2, $f6 -/* 01A27C 8001967C 44806000 */ mtc1 $zero, $f12 -/* 01A280 80019680 46209520 */ cvt.s.d $f20, $f18 -/* 01A284 80019684 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 01A288 80019688 460CA03C */ c.lt.s $f20, $f12 -/* 01A28C 8001968C 27A400A4 */ addiu $a0, $sp, 0xa4 -/* 01A290 80019690 45000002 */ bc1f .L8001969C -/* 01A294 80019694 00002825 */ move $a1, $zero -/* 01A298 80019698 46006506 */ mov.s $f20, $f12 -.L8001969C: -/* 01A29C 8001969C 4600A121 */ cvt.d.s $f4, $f20 -/* 01A2A0 800196A0 4624103C */ c.lt.d $f2, $f4 -/* 01A2A4 800196A4 00000000 */ nop -/* 01A2A8 800196A8 45000003 */ bc1f .L800196B8 -/* 01A2AC 800196AC 00000000 */ nop -/* 01A2B0 800196B0 4481A000 */ mtc1 $at, $f20 -/* 01A2B4 800196B4 00000000 */ nop -.L800196B8: -/* 01A2B8 800196B8 4406A000 */ mfc1 $a2, $f20 -/* 01A2BC 800196BC 0C00898F */ jal cubic_spline_interpolation -/* 01A2C0 800196C0 27A70070 */ addiu $a3, $sp, 0x70 -/* 01A2C4 800196C4 4406A000 */ mfc1 $a2, $f20 -/* 01A2C8 800196C8 E7A00080 */ swc1 $f0, 0x80($sp) -/* 01A2CC 800196CC 27A40094 */ addiu $a0, $sp, 0x94 -/* 01A2D0 800196D0 00002825 */ move $a1, $zero -/* 01A2D4 800196D4 0C00898F */ jal cubic_spline_interpolation -/* 01A2D8 800196D8 27A7006C */ addiu $a3, $sp, 0x6c -/* 01A2DC 800196DC 4406A000 */ mfc1 $a2, $f20 -/* 01A2E0 800196E0 46000586 */ mov.s $f22, $f0 -/* 01A2E4 800196E4 27A40084 */ addiu $a0, $sp, 0x84 -/* 01A2E8 800196E8 00002825 */ move $a1, $zero -/* 01A2EC 800196EC 0C00898F */ jal cubic_spline_interpolation -/* 01A2F0 800196F0 27A70068 */ addiu $a3, $sp, 0x68 -/* 01A2F4 800196F4 C7A20070 */ lwc1 $f2, 0x70($sp) -/* 01A2F8 800196F8 C7AE006C */ lwc1 $f14, 0x6c($sp) -/* 01A2FC 800196FC 46021202 */ mul.s $f8, $f2, $f2 -/* 01A300 80019700 C7B00068 */ lwc1 $f16, 0x68($sp) -/* 01A304 80019704 E7A00078 */ swc1 $f0, 0x78($sp) -/* 01A308 80019708 460E7282 */ mul.s $f10, $f14, $f14 -/* 01A30C 8001970C 00000000 */ nop -/* 01A310 80019710 46108482 */ mul.s $f18, $f16, $f16 -/* 01A314 80019714 460A4180 */ add.s $f6, $f8, $f10 -/* 01A318 80019718 0C0326B4 */ jal sqrtf -/* 01A31C 8001971C 46123300 */ add.s $f12, $f6, $f18 -/* 01A320 80019720 44802000 */ mtc1 $zero, $f4 -/* 01A324 80019724 3C01800E */ lui $at, %hi(D_800E5630 + 4) # $at, 0x800e -/* 01A328 80019728 46040032 */ c.eq.s $f0, $f4 -/* 01A32C 8001972C 00000000 */ nop -/* 01A330 80019730 45010011 */ bc1t .L80019778 -/* 01A334 80019734 00000000 */ nop -/* 01A338 80019738 C4295630 */ lwc1 $f9, %lo(D_800E5630)($at) -/* 01A33C 8001973C C4285634 */ lwc1 $f8, %lo(D_800E5630 + 4)($at) -/* 01A340 80019740 460002A1 */ cvt.d.s $f10, $f0 -/* 01A344 80019744 00000000 */ nop -/* 01A348 80019748 462A4183 */ div.d $f6, $f8, $f10 -/* 01A34C 8001974C C7A20070 */ lwc1 $f2, 0x70($sp) -/* 01A350 80019750 C7AE006C */ lwc1 $f14, 0x6c($sp) -/* 01A354 80019754 C7B00068 */ lwc1 $f16, 0x68($sp) -/* 01A358 80019758 46203520 */ cvt.s.d $f20, $f6 -/* 01A35C 8001975C 46141082 */ mul.s $f2, $f2, $f20 -/* 01A360 80019760 00000000 */ nop -/* 01A364 80019764 46147382 */ mul.s $f14, $f14, $f20 -/* 01A368 80019768 E7A20070 */ swc1 $f2, 0x70($sp) -/* 01A36C 8001976C 46148402 */ mul.s $f16, $f16, $f20 -/* 01A370 80019770 E7AE006C */ swc1 $f14, 0x6c($sp) -/* 01A374 80019774 E7B00068 */ swc1 $f16, 0x68($sp) -.L80019778: -/* 01A378 80019778 C7B20080 */ lwc1 $f18, 0x80($sp) -/* 01A37C 8001977C C7A40070 */ lwc1 $f4, 0x70($sp) -/* 01A380 80019780 8FB800C0 */ lw $t8, 0xc0($sp) -/* 01A384 80019784 46049200 */ add.s $f8, $f18, $f4 -/* 01A388 80019788 C70A000C */ lwc1 $f10, 0xc($t8) -/* 01A38C 8001978C 8FB900D8 */ lw $t9, 0xd8($sp) -/* 01A390 80019790 460A4181 */ sub.s $f6, $f8, $f10 -/* 01A394 80019794 24020001 */ li $v0, 1 -/* 01A398 80019798 E7260000 */ swc1 $f6, ($t9) -/* 01A39C 8001979C C7B2006C */ lwc1 $f18, 0x6c($sp) -/* 01A3A0 800197A0 C7080010 */ lwc1 $f8, 0x10($t8) -/* 01A3A4 800197A4 4612B100 */ add.s $f4, $f22, $f18 -/* 01A3A8 800197A8 8FA800DC */ lw $t0, 0xdc($sp) -/* 01A3AC 800197AC 46082281 */ sub.s $f10, $f4, $f8 -/* 01A3B0 800197B0 E50A0000 */ swc1 $f10, ($t0) -/* 01A3B4 800197B4 C7B20068 */ lwc1 $f18, 0x68($sp) -/* 01A3B8 800197B8 C7A60078 */ lwc1 $f6, 0x78($sp) -/* 01A3BC 800197BC C7080014 */ lwc1 $f8, 0x14($t8) -/* 01A3C0 800197C0 46123100 */ add.s $f4, $f6, $f18 -/* 01A3C4 800197C4 8FA900E0 */ lw $t1, 0xe0($sp) -/* 01A3C8 800197C8 46082281 */ sub.s $f10, $f4, $f8 -/* 01A3CC 800197CC E52A0000 */ swc1 $f10, ($t1) -.L800197D0: -/* 01A3D0 800197D0 8FBF0044 */ lw $ra, 0x44($sp) -/* 01A3D4 800197D4 C7B50018 */ lwc1 $f21, 0x18($sp) -/* 01A3D8 800197D8 C7B4001C */ lwc1 $f20, 0x1c($sp) -/* 01A3DC 800197DC C7B70020 */ lwc1 $f23, 0x20($sp) -/* 01A3E0 800197E0 C7B60024 */ lwc1 $f22, 0x24($sp) -/* 01A3E4 800197E4 8FB00028 */ lw $s0, 0x28($sp) -/* 01A3E8 800197E8 8FB1002C */ lw $s1, 0x2c($sp) -/* 01A3EC 800197EC 8FB20030 */ lw $s2, 0x30($sp) -/* 01A3F0 800197F0 8FB30034 */ lw $s3, 0x34($sp) -/* 01A3F4 800197F4 8FB40038 */ lw $s4, 0x38($sp) -/* 01A3F8 800197F8 8FB5003C */ lw $s5, 0x3c($sp) -/* 01A3FC 800197FC 8FB60040 */ lw $s6, 0x40($sp) -/* 01A400 80019800 03E00008 */ jr $ra -/* 01A404 80019804 27BD00C0 */ addiu $sp, $sp, 0xc0 - diff --git a/asm/non_matchings/objects/func_8001B4FC.s b/asm/non_matchings/objects/func_8001B4FC.s deleted file mode 100644 index c356444d..00000000 --- a/asm/non_matchings/objects/func_8001B4FC.s +++ /dev/null @@ -1,89 +0,0 @@ -glabel func_8001B4FC -/* 01C0FC 8001B4FC 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 01C100 8001B500 3C01800E */ lui $at, %hi(gBeatStaffGhost) # $at, 0x800e -/* 01C104 8001B504 A020C738 */ sb $zero, %lo(gBeatStaffGhost)($at) -/* 01C108 8001B508 AFBF001C */ sw $ra, 0x1c($sp) -/* 01C10C 8001B50C AFB00018 */ sw $s0, 0x18($sp) -/* 01C110 8001B510 3C01800E */ lui $at, %hi(gTimeTrialStaffGhost) # $at, 0x800e -/* 01C114 8001B514 00808025 */ move $s0, $a0 -/* 01C118 8001B518 0C01BAA4 */ jal get_settings -/* 01C11C 8001B51C A020C734 */ sb $zero, %lo(gTimeTrialStaffGhost)($at) -/* 01C120 8001B520 AFA20020 */ sw $v0, 0x20($sp) -/* 01C124 8001B524 0C01AC2B */ jal get_map_default_vehicle -/* 01C128 8001B528 02002025 */ move $a0, $s0 -/* 01C12C 8001B52C 3C0E8012 */ lui $t6, %hi(D_8011AE82) # $t6, 0x8012 -/* 01C130 8001B530 85CEAE82 */ lh $t6, %lo(D_8011AE82)($t6) -/* 01C134 8001B534 00000000 */ nop -/* 01C138 8001B538 144E003C */ bne $v0, $t6, .L8001B62C -/* 01C13C 8001B53C 8FBF001C */ lw $ra, 0x1c($sp) -/* 01C140 8001B540 0C0078A7 */ jal get_misc_asset -/* 01C144 8001B544 2404001C */ li $a0, 28 -/* 01C148 8001B548 24040018 */ li $a0, 24 -/* 01C14C 8001B54C 0C0078A7 */ jal get_misc_asset -/* 01C150 8001B550 AFA20028 */ sw $v0, 0x28($sp) -/* 01C154 8001B554 8FA80028 */ lw $t0, 0x28($sp) -/* 01C158 8001B558 2407FFFF */ li $a3, -1 -/* 01C15C 8001B55C 810F0000 */ lb $t7, ($t0) -/* 01C160 8001B560 8FAD0020 */ lw $t5, 0x20($sp) -/* 01C164 8001B564 10EF000B */ beq $a3, $t7, .L8001B594 -/* 01C168 8001B568 00003025 */ move $a2, $zero -/* 01C16C 8001B56C 81180000 */ lb $t8, ($t0) -/* 01C170 8001B570 01002021 */ addu $a0, $t0, $zero -/* 01C174 8001B574 12180008 */ beq $s0, $t8, .L8001B598 -/* 01C178 8001B578 0106C821 */ addu $t9, $t0, $a2 -.L8001B57C: -/* 01C17C 8001B57C 80850001 */ lb $a1, 1($a0) -/* 01C180 8001B580 24C60001 */ addiu $a2, $a2, 1 -/* 01C184 8001B584 10E50003 */ beq $a3, $a1, .L8001B594 -/* 01C188 8001B588 24840001 */ addiu $a0, $a0, 1 -/* 01C18C 8001B58C 1605FFFB */ bne $s0, $a1, .L8001B57C -/* 01C190 8001B590 00000000 */ nop -.L8001B594: -/* 01C194 8001B594 0106C821 */ addu $t9, $t0, $a2 -.L8001B598: -/* 01C198 8001B598 83290000 */ lb $t1, ($t9) -/* 01C19C 8001B59C 00065040 */ sll $t2, $a2, 1 -/* 01C1A0 8001B5A0 10E90021 */ beq $a3, $t1, .L8001B628 -/* 01C1A4 8001B5A4 004A5821 */ addu $t3, $v0, $t2 -/* 01C1A8 8001B5A8 3C0E8012 */ lui $t6, %hi(D_8011AE82) # $t6, 0x8012 -/* 01C1AC 8001B5AC 85CEAE82 */ lh $t6, %lo(D_8011AE82)($t6) -/* 01C1B0 8001B5B0 00104840 */ sll $t1, $s0, 1 -/* 01C1B4 8001B5B4 000E7880 */ sll $t7, $t6, 2 -/* 01C1B8 8001B5B8 01AFC021 */ addu $t8, $t5, $t7 -/* 01C1BC 8001B5BC 8F19003C */ lw $t9, 0x3c($t8) -/* 01C1C0 8001B5C0 956C0000 */ lhu $t4, ($t3) -/* 01C1C4 8001B5C4 03295021 */ addu $t2, $t9, $t1 -/* 01C1C8 8001B5C8 954B0000 */ lhu $t3, ($t2) -/* 01C1CC 8001B5CC 00000000 */ nop -/* 01C1D0 8001B5D0 018B082A */ slt $at, $t4, $t3 -/* 01C1D4 8001B5D4 14200015 */ bnez $at, .L8001B62C -/* 01C1D8 8001B5D8 8FBF001C */ lw $ra, 0x1c($sp) -/* 01C1DC 8001B5DC 0C027AC2 */ jal get_eeprom_settings -/* 01C1E0 8001B5E0 AFA6002C */ sw $a2, 0x2c($sp) -/* 01C1E4 8001B5E4 8FA6002C */ lw $a2, 0x2c($sp) -/* 01C1E8 8001B5E8 240E0010 */ li $t6, 16 -/* 01C1EC 8001B5EC 00CE6804 */ sllv $t5, $t6, $a2 -/* 01C1F0 8001B5F0 000DC7C3 */ sra $t8, $t5, 0x1f -/* 01C1F4 8001B5F4 00585024 */ and $t2, $v0, $t8 -/* 01C1F8 8001B5F8 15400005 */ bnez $t2, .L8001B610 -/* 01C1FC 8001B5FC 006D5824 */ and $t3, $v1, $t5 -/* 01C200 8001B600 15600003 */ bnez $t3, .L8001B610 -/* 01C204 8001B604 240F0001 */ li $t7, 1 -/* 01C208 8001B608 3C01800E */ lui $at, %hi(gBeatStaffGhost) # $at, 0x800e -/* 01C20C 8001B60C A02FC738 */ sb $t7, %lo(gBeatStaffGhost)($at) -.L8001B610: -/* 01C210 8001B610 0C006CBC */ jal func_8001B2F0 -/* 01C214 8001B614 02002025 */ move $a0, $s0 -/* 01C218 8001B618 14400003 */ bnez $v0, .L8001B628 -/* 01C21C 8001B61C 24090001 */ li $t1, 1 -/* 01C220 8001B620 3C01800E */ lui $at, %hi(gTimeTrialStaffGhost) # $at, 0x800e -/* 01C224 8001B624 A029C734 */ sb $t1, %lo(gTimeTrialStaffGhost)($at) -.L8001B628: -/* 01C228 8001B628 8FBF001C */ lw $ra, 0x1c($sp) -.L8001B62C: -/* 01C22C 8001B62C 3C02800E */ lui $v0, %hi(gTimeTrialStaffGhost) # $v0, 0x800e -/* 01C230 8001B630 9042C734 */ lbu $v0, %lo(gTimeTrialStaffGhost)($v0) -/* 01C234 8001B634 8FB00018 */ lw $s0, 0x18($sp) -/* 01C238 8001B638 03E00008 */ jr $ra -/* 01C23C 8001B63C 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/thread0_epc/thread0_Main.s b/asm/non_matchings/thread0_epc/thread0_Main.s deleted file mode 100644 index 43d31a87..00000000 --- a/asm/non_matchings/thread0_epc/thread0_Main.s +++ /dev/null @@ -1,71 +0,0 @@ -glabel thread0_Main -/* 0B7BC4 800B6FC4 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0B7BC8 800B6FC8 AFB40028 */ sw $s4, 0x28($sp) -/* 0B7BCC 800B6FCC 3C148013 */ lui $s4, %hi(D_80129790) # $s4, 0x8013 -/* 0B7BD0 800B6FD0 26949790 */ addiu $s4, %lo(D_80129790) # addiu $s4, $s4, -0x6870 -/* 0B7BD4 800B6FD4 AFBF002C */ sw $ra, 0x2c($sp) -/* 0B7BD8 800B6FD8 AFB00018 */ sw $s0, 0x18($sp) -/* 0B7BDC 800B6FDC AFA40038 */ sw $a0, 0x38($sp) -/* 0B7BE0 800B6FE0 3C058013 */ lui $a1, %hi(D_801297A8) # $a1, 0x8013 -/* 0B7BE4 800B6FE4 AFB30024 */ sw $s3, 0x24($sp) -/* 0B7BE8 800B6FE8 AFB20020 */ sw $s2, 0x20($sp) -/* 0B7BEC 800B6FEC AFB1001C */ sw $s1, 0x1c($sp) -/* 0B7BF0 800B6FF0 00008025 */ move $s0, $zero -/* 0B7BF4 800B6FF4 24A597A8 */ addiu $a1, %lo(D_801297A8) # addiu $a1, $a1, -0x6858 -/* 0B7BF8 800B6FF8 02802025 */ move $a0, $s4 -/* 0B7BFC 800B6FFC 0C032208 */ jal osCreateMesgQueue -/* 0B7C00 800B7000 24060008 */ li $a2, 8 -/* 0B7C04 800B7004 2404000C */ li $a0, 12 -/* 0B7C08 800B7008 02802825 */ move $a1, $s4 -/* 0B7C0C 800B700C 0C0332EC */ jal osSetEventMesg -/* 0B7C10 800B7010 24060008 */ li $a2, 8 -/* 0B7C14 800B7014 2404000A */ li $a0, 10 -/* 0B7C18 800B7018 02802825 */ move $a1, $s4 -/* 0B7C1C 800B701C 0C0332EC */ jal osSetEventMesg -/* 0B7C20 800B7020 24060002 */ li $a2, 2 -/* 0B7C24 800B7024 3C058013 */ lui $a1, %hi(D_801297E8) # $a1, 0x8013 -/* 0B7C28 800B7028 3C068013 */ lui $a2, %hi(D_801297C8) # $a2, 0x8013 -/* 0B7C2C 800B702C 24C697C8 */ addiu $a2, %lo(D_801297C8) # addiu $a2, $a2, -0x6838 -/* 0B7C30 800B7030 24A597E8 */ addiu $a1, %lo(D_801297E8) # addiu $a1, $a1, -0x6818 -/* 0B7C34 800B7034 24040096 */ li $a0, 150 -/* 0B7C38 800B7038 0C031800 */ jal osCreatePiManager -/* 0B7C3C 800B703C 24070008 */ li $a3, 8 -/* 0B7C40 800B7040 2413FFF7 */ li $s3, -9 -/* 0B7C44 800B7044 3C120800 */ lui $s2, 0x800 -/* 0B7C48 800B7048 27B10034 */ addiu $s1, $sp, 0x34 -/* 0B7C4C 800B704C 02802025 */ move $a0, $s4 -.L800B7050: -/* 0B7C50 800B7050 02202825 */ move $a1, $s1 -/* 0B7C54 800B7054 0C0322EC */ jal osRecvMesg -/* 0B7C58 800B7058 24060001 */ li $a2, 1 -/* 0B7C5C 800B705C 0C0270C3 */ jal get_filtered_cheats -/* 0B7C60 800B7060 00000000 */ nop -/* 0B7C64 800B7064 00527024 */ and $t6, $v0, $s2 -/* 0B7C68 800B7068 11C0FFF9 */ beqz $t6, .L800B7050 -/* 0B7C6C 800B706C 02802025 */ move $a0, $s4 -/* 0B7C70 800B7070 8FAF0034 */ lw $t7, 0x34($sp) -/* 0B7C74 800B7074 00000000 */ nop -/* 0B7C78 800B7078 020F8025 */ or $s0, $s0, $t7 -/* 0B7C7C 800B707C 32180008 */ andi $t8, $s0, 8 -/* 0B7C80 800B7080 17000003 */ bnez $t8, .L800B7090 -/* 0B7C84 800B7084 32190002 */ andi $t9, $s0, 2 -/* 0B7C88 800B7088 1320FFF1 */ beqz $t9, .L800B7050 -/* 0B7C8C 800B708C 02802025 */ move $a0, $s4 -.L800B7090: -/* 0B7C90 800B7090 0C02DC34 */ jal func_800B70D0 -/* 0B7C94 800B7094 02138024 */ and $s0, $s0, $s3 -/* 0B7C98 800B7098 0C02DC51 */ jal func_800B7144 -/* 0B7C9C 800B709C 00000000 */ nop -/* 0B7CA0 800B70A0 0C02DC6C */ jal func_800B71B0 -/* 0B7CA4 800B70A4 00000000 */ nop -/* 0B7CA8 800B70A8 1000FFE9 */ b .L800B7050 -/* 0B7CAC 800B70AC 02802025 */ move $a0, $s4 -/* 0B7CB0 800B70B0 8FBF002C */ lw $ra, 0x2c($sp) -/* 0B7CB4 800B70B4 8FB00018 */ lw $s0, 0x18($sp) -/* 0B7CB8 800B70B8 8FB1001C */ lw $s1, 0x1c($sp) -/* 0B7CBC 800B70BC 8FB20020 */ lw $s2, 0x20($sp) -/* 0B7CC0 800B70C0 8FB30024 */ lw $s3, 0x24($sp) -/* 0B7CC4 800B70C4 8FB40028 */ lw $s4, 0x28($sp) -/* 0B7CC8 800B70C8 03E00008 */ jr $ra -/* 0B7CCC 800B70CC 27BD0038 */ addiu $sp, $sp, 0x38 - diff --git a/extract-ver/us_1.0.config.json b/extract-ver/us_1.0.config.json index 4ec20efa..67fea2b4 100755 --- a/extract-ver/us_1.0.config.json +++ b/extract-ver/us_1.0.config.json @@ -15381,6 +15381,46 @@ "files-default-folder": "unlabeled", "default-build-id-prefix": "ASSET_MISC_", "files": [ + { + "index": 5, + "filename": "tricky_boss_data", + "build-id": "ASSET_MISC_TRICKY_BOSS_DATA" + }, + { + "index": 6, + "filename": "bluey_boss_data", + "build-id": "ASSET_MISC_BLUEY_BOSS_DATA" + }, + { + "index": 7, + "filename": "smokey_boss_data", + "build-id": "ASSET_MISC_SMOKEY_BOSS_DATA" + }, + { + "index": 9, + "filename": "racer_weight_data", + "build-id": "ASSET_MISC_RACER_WEIGHT" + }, + { + "index": 10, + "filename": "racer_handling_data", + "build-id": "ASSET_MISC_RACER_HANDLING" + }, + { + "index": 11, + "filename": "racer_unused_11_data", + "build-id": "ASSET_MISC_RACER_UNUSED_11" + }, + { + "index": 21, + "filename": "shield_data", + "build-id": "ASSET_MISC_SHIELD_DATA" + }, + { + "index": 22, + "filename": "magnet_data", + "build-id": "ASSET_MISC_MAGNET_DATA" + }, { "index": 26, "filename": "tracks_menu_ids", @@ -15471,6 +15511,11 @@ "filename": "RacerStats_Unknown2", "build-id": "ASSET_MISC_RACERSTATS_UNKNOWN2" }, + { + "index": 56, + "filename": "racer_hitbox_size", + "build-id": "ASSET_MISC_RACER_HITBOX_SIZE" + }, { "index": 65, "filename": "magic_codes", diff --git a/include/asset_enums.h b/include/asset_enums.h index eea34000..b8934f3d 100644 --- a/include/asset_enums.h +++ b/include/asset_enums.h @@ -3054,13 +3054,13 @@ typedef enum { ASSET_MISC_2, ASSET_MISC_3, ASSET_MISC_4, - ASSET_MISC_5, - ASSET_MISC_6, - ASSET_MISC_7, + ASSET_MISC_TRICKY_BOSS_DATA, + ASSET_MISC_BLUEY_BOSS_DATA, + ASSET_MISC_SMOKEY_BOSS_DATA, ASSET_MISC_8, - ASSET_MISC_9, - ASSET_MISC_10, - ASSET_MISC_11, + ASSET_MISC_RACER_WEIGHT, + ASSET_MISC_RACER_HANDLING, + ASSET_MISC_RACER_UNUSED_11, ASSET_MISC_12, ASSET_MISC_13, ASSET_MISC_14, @@ -3070,8 +3070,8 @@ typedef enum { ASSET_MISC_18, ASSET_MISC_19, ASSET_MISC_20, - ASSET_MISC_21, - ASSET_MISC_22, + ASSET_MISC_SHIELD_DATA, + ASSET_MISC_MAGNET_DATA, ASSET_MISC_23, ASSET_MISC_24, ASSET_MISC_25, @@ -3105,7 +3105,7 @@ typedef enum { ASSET_MISC_53, ASSET_MISC_54, ASSET_MISC_55, - ASSET_MISC_56, + ASSET_MISC_RACER_HITBOX_SIZE, ASSET_MISC_57, ASSET_MISC_58, ASSET_MISC_59, diff --git a/include/enums.h b/include/enums.h index 8e85e2eb..cca5a8bf 100644 --- a/include/enums.h +++ b/include/enums.h @@ -102,86 +102,6 @@ typedef enum AlignmentFlags { ALIGN_BOTTOM_RIGHT = VERT_ALIGN_BOTTOM | HORZ_ALIGN_RIGHT } AlignmentFlags; -typedef enum MiscAsset { - MISC_ASSET_UNK00, - MISC_ASSET_UNK01, - MISC_ASSET_UNK02, - MISC_ASSET_UNK03, - MISC_ASSET_UNK04, - MISC_ASSET_UNK05, //Tricky boss - MISC_ASSET_UNK06, //Bluey boss - MISC_ASSET_UNK07, //Smokey boss - MISC_ASSET_UNK08, - MISC_RACER_WEIGHT, - MISC_RACER_HANDLING, - MISC_ASSET_UNK0B, - MISC_ASSET_UNK0C, - MISC_ASSET_UNK0D, - MISC_ASSET_UNK0E, - MISC_ASSET_UNK0F, - MISC_ASSET_UNK10, - MISC_ASSET_UNK11, - MISC_ASSET_UNK12, - MISC_ASSET_UNK13, - MISC_ASSET_UNK14, - MISC_ASSET_SHIELD_DATA, - MISC_ASSET_MAGNET_DATA, - MISC_ASSET_UNK17, - MISC_ASSET_UNK18, - MISC_ASSET_UNK19, - MISC_ASSET_UNK1A, - MISC_ASSET_UNK1B, - MISC_ASSET_UNK1C, - MISC_ASSET_UNK1D, - MISC_ASSET_UNK1E, - MISC_ASSET_UNK1F, - MISC_ASSET_UNK20, - MISC_ASSET_UNK21, - MISC_ASSET_UNK22, - MISC_ASSET_UNK23, - MISC_ASSET_UNK24, - MISC_ASSET_UNK25, - MISC_ASSET_UNK26, - MISC_ASSET_UNK27, - MISC_ASSET_UNK28, - MISC_ASSET_UNK29, - MISC_ASSET_UNK2A, - MISC_ASSET_UNK2B, - MISC_ASSET_UNK2C, - MISC_ASSET_UNK2D, - MISC_ASSET_UNK2E, - MISC_ASSET_UNK2F, - MISC_ASSET_UNK30, - MISC_ASSET_UNK31, - MISC_ASSET_UNK32, - MISC_ASSET_UNK33, - MISC_ASSET_UNK34, - MISC_ASSET_UNK35, - MISC_ASSET_UNK36, - MISC_ASSET_UNK37, - MISC_ASSET_RACER_HITBOX_SIZE, - MISC_ASSET_UNK39, - MISC_ASSET_UNK3A, - MISC_ASSET_UNK3B, - MISC_ASSET_UNK3C, - MISC_ASSET_UNK3D, - MISC_ASSET_UNK3E, - MISC_ASSET_UNK3F, - MISC_ASSET_UNK40, - MISC_ASSET_UNK41, - MISC_ASSET_TITLE_DEMOS, - MISC_ASSET_UNK43, - MISC_ASSET_UNK44, - MISC_ASSET_UNK45, - MISC_ASSET_UNK46, - MISC_ASSET_UNK47, - MISC_ASSET_UNK48, - MISC_ASSET_UNK49, - MISC_ASSET_UNK4A, - MISC_ASSET_UNK4B, - MISC_ASSET_UNK4C -} MiscAsset; - typedef enum SurfaceType { SURFACE_DEFAULT, SURFACE_GRASS, diff --git a/include/level_object_entries.h b/include/level_object_entries.h index 7f3f0d7f..5c1ec8a0 100644 --- a/include/level_object_entries.h +++ b/include/level_object_entries.h @@ -702,6 +702,15 @@ typedef struct LevelObjectEntry_CharacterSelect { s8 unk30; } LevelObjectEntry_CharacterSelect; +// Size: 0x10 bytes +typedef struct LevelObjectEntry_Unk8000CC7C { + LevelObjectEntryCommon common; + s16 unk8; + s16 unkA; + s16 unkC; + s16 unkE; +} LevelObjectEntry_Unk8000CC7C; + typedef struct LevelObjectEntry { union { LevelObjectEntry_Racer racer; diff --git a/include/object_properties.h b/include/object_properties.h index 1de924d6..d874e66e 100644 --- a/include/object_properties.h +++ b/include/object_properties.h @@ -150,8 +150,8 @@ typedef struct ObjPropertyRacer { } ObjPropertyRacer; typedef struct ObjPropertySetupPoint { - s32 unk0; - s32 unk4; + s32 unk0; + s32 unk4; } ObjPropertySetupPoint; typedef struct ObjProperties { diff --git a/include/sound_ids.h b/include/sound_ids.h index f3e4cb2b..f04d40e8 100644 --- a/include/sound_ids.h +++ b/include/sound_ids.h @@ -29,7 +29,7 @@ enum SoundID { /* 0x000A */ SOUND_UNK_0A, /* 0x000B */ SOUND_UNK_0B, /* 0x000C */ SOUND_CRASH, -/* 0x000D */ SOUND_CRASH2, // Not the same as the last, sounds like a cymbal or something. +/* 0x000D */ SOUND_CRASH_CHARACTER, /* 0x000E */ SOUND_BALLOON_POP, /* 0x000F */ SOUND_PLOP, // Dropping a landmine /* 0x0010 */ SOUND_UNK_10, diff --git a/include/structs.h b/include/structs.h index b28ced15..e84318ef 100644 --- a/include/structs.h +++ b/include/structs.h @@ -720,7 +720,7 @@ typedef struct ObjectHeader { /* 0x0C */ f32 scale; /* 0x10 */ s32 *modelIds; /* 0x14 */ s32 *vehiclePartIds; - /* 0x18 */ s8 *vehiclePartIndices; + /* 0x18 */ s8 *vehiclePartIndices; /* 0x1C */ ObjHeaderParticleEntry *objectParticles; s32 pad20; /* 0x24 */ ObjectHeader24 *unk24; @@ -761,7 +761,7 @@ typedef struct ObjectHeader { /* 0x60 */ char internalName[16]; /* 0x70 */ u8 unk70; /* 0x71 */ u8 unk71; - /* 0x71 */ u8 unk72; + /* 0x72 */ u8 unk72; u8 pad73[0x5]; } ObjectHeader; diff --git a/src/game.c b/src/game.c index 7132df43..268e0c3a 100644 --- a/src/game.c +++ b/src/game.c @@ -332,7 +332,7 @@ s32 get_hub_area_id(s32 worldId) { if (worldId < 0 || worldId >= gNumberOfWorlds) { worldId = 0; } - hubAreaIds = (s8 *)get_misc_asset(MISC_ASSET_UNK1B); //hub_area_ids + hubAreaIds = (s8 *)get_misc_asset(ASSET_MISC_HUB_AREA_IDS); return hubAreaIds[worldId]; } @@ -426,7 +426,7 @@ void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, Vehicle vehicl D_800DD330 = 2; } } - someAsset = (s8 *) get_misc_asset(MISC_ASSET_UNK43); + someAsset = (s8 *) get_misc_asset(ASSET_MISC_67); for (var_s0 = 0; levelId != someAsset[var_s0]; var_s0 += 2) { } levelId = someAsset[var_s0 + 1]; entranceId = cutsceneId; @@ -442,7 +442,7 @@ void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, Vehicle vehicl // Trigger World Key unlocking Challenge Door cutscene. push_level_property_stack(levelId, entranceId, vehicleId, cutsceneId); settings->cutsceneFlags |= CUTSCENE_DINO_DOMAIN_KEY << (var_s0 + 31); - someAsset = (s8 *) get_misc_asset(MISC_ASSET_UNK44); + someAsset = (s8 *) get_misc_asset(ASSET_MISC_68); levelId = someAsset[var_s0 - 1]; entranceId = 0; cutsceneId = CUTSCENE_ID_UNK_5; @@ -456,7 +456,7 @@ void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, Vehicle vehicl entranceId = 0; cutsceneId = CUTSCENE_NONE; settings->cutsceneFlags |= CUTSCENE_WIZPIG_FACE; - levelId = ((s8 *) get_misc_asset(MISC_ASSET_UNK44))[4]; + levelId = ((s8 *) get_misc_asset(ASSET_MISC_68))[4]; } } } diff --git a/src/menu.c b/src/menu.c index 4a6db759..24dfb3ce 100644 --- a/src/menu.c +++ b/src/menu.c @@ -113,33 +113,25 @@ SavefileInfo gSavefileInfo[4]; s32 D_801264D0; s32 D_801264D4; s8 gDialogueSubmenu; -u8 *D_801264DC; //gGhostLevelIDs? +u8 D_801264DC[4]; //gGhostLevelIDs? s8 D_801264E0; s8 D_801264E1; s8 sCurrentMenuID; -u8 *D_801264E4; //gGhostSomethings? +u8 D_801264E4[4]; //gGhostSomethings? s32 D_801264E8; -u8 *D_801264EC; //gGhostVehicleIds? +u8 D_801264EC[4]; //gGhostVehicleIds? s32 D_801264F0[2]; -s16 *D_801264F8[3]; //gGhostChecksums? +u16 D_801264F8[6]; //gGhostChecksums? s8 sDialogueOptionMax; -s32 D_80126508; -s16 D_8012650C; +u8 D_80126508[6]; s8 gDialogueOptionYOffset; -s32 D_80126510; -s16 D_80126514; +u8 D_80126510[6]; s8 gDialogueItemSelection; -s32 D_80126518; -s32 D_8012651C; -s32 D_80126520; -s32 D_80126524; -s32 D_80126528; -s32 D_8012652C; +u8 D_80126518[6]; +u16 D_80126520[6]; Settings *gSavefileData[4]; -s8 D_80126540; -s8 D_80126541; -s32 D_80126544; +u8 D_80126540[8]; s32 gMultiplayerSelectedNumberOfRacersCopy; // Saved version gMultiplayerSelectedNumberOfRacers? TextureHeader *gMenuTextures[128]; // lookup table? TEXTURES u8 D_80126750[128]; // Seems to be a boolean for "This texture exists" for the above array. @@ -273,7 +265,7 @@ unk80126C54 D_80126C54; u8 D_80126C58[20]; s32 *D_80126C6C; s32 gNumOnscreenMagicCodes; -char *D_80126C74; +char *D_80126C74; // gFileName? s32 D_80126C78; s32 D_80126C7C; s16 D_80126C80[32]; @@ -1867,7 +1859,7 @@ void func_80081218(void) { gSavefileData[3] = (u8 *)gSavefileData[2] + sp20; gSavefileData[3]->courseFlagsPtr = (u8 *)gSavefileData[3] + sizeof(Settings); gSavefileData[3]->balloonsPtr = (u8 *)gSavefileData[3]->courseFlagsPtr + sp28; - gCheatsAssetData = get_misc_asset(MISC_ASSET_UNK41); + gCheatsAssetData = get_misc_asset(ASSET_MISC_MAGIC_CODES); gNumberOfCheats = (s32)(*gCheatsAssetData); gMenuText = allocate_from_main_pool_safe(1024 * sizeof(char *), COLOUR_TAG_WHITE); load_menu_text(LANGUAGE_ENGLISH); @@ -2630,7 +2622,7 @@ void menu_title_screen_init(void) { reset_sound_volume(FALSE); set_time_trial_enabled(FALSE); gTitleDemoIndex = 0; - sTitleScreenDemoIds = (s8 *) get_misc_asset(MISC_ASSET_TITLE_DEMOS); + sTitleScreenDemoIds = (s8 *) get_misc_asset(ASSET_MISC_TITLE_SCREEN_DEMO_IDS); numberOfPlayers = sTitleScreenDemoIds[DEMO_PLAYER_COUNT]; gTitleDemoTimer = 0; if (numberOfPlayers == -2) { @@ -5175,52 +5167,43 @@ void func_8008B758(s8 *activePlayers) { } } -#ifdef NON_EQUIVALENT - -// Should be functionally equivalent void randomise_ai_racer_slots(s32 arg0) { + s32 foundIt; s32 i, j; s32 numCharacters; - s32 s1; numCharacters = 7; if (is_drumstick_unlocked()) { - numCharacters = 8; + numCharacters++; } if (is_tt_unlocked()) { numCharacters++; } if (arg0 < 8) { - s1 = FALSE; - for (i = 0; (i < arg0) && (!s1); i++) { - if (gCharacterIdSlots[i] == 9) { - s1 = TRUE; + foundIt = FALSE; + for (i = 0; i < arg0 && !foundIt; i++) { + if (gCharacterIdSlots[i] == 9) { // I think 9 is the character id for Diddy Kong? + foundIt = TRUE; } } - if (!s1) { + if (!foundIt) { gCharacterIdSlots[arg0] = 9; arg0++; } } - i = arg0; - while (i < 8) { - s1 = FALSE; // Check for duplicate racer id. - gCharacterIdSlots[i] = (*gCurrCharacterSelectData)[get_random_number_from_range(0, numCharacters)].voiceID; - for (j = 0; j < i; j++) { - if (gCharacterIdSlots[i] == gCharacterIdSlots[j]) { - s1 = TRUE; // Duplicate found! + + for (i = arg0; i < 8; i++) { + do { + gCharacterIdSlots[i] = (*gCurrCharacterSelectData)[get_random_number_from_range(0, numCharacters)].voiceID; + for (j = 0, foundIt = FALSE; j < i; j++) { + if (gCharacterIdSlots[j] == gCharacterIdSlots[i]) { + foundIt = TRUE; + } } - } - if (s1) { - continue; // Redo if duplicate was found. - } - i++; + } while (foundIt); } } -#else -GLOBAL_ASM("asm/non_matchings/menu/randomise_ai_racer_slots.s") -#endif s32 menu_character_select_loop(s32 updateRate) { s32 i; @@ -6177,7 +6160,7 @@ s32 menu_file_select_loop(s32 updateRate) { if (gIsInAdventureTwo) { settings->cutsceneFlags |= CUTSCENE_ADVENTURE_TWO; } - func_8009ABD8((s8 *)get_misc_asset(MISC_ASSET_UNK19), 0, gNumberOfActivePlayers, 0, 0, NULL); + func_8009ABD8((s8 *) get_misc_asset(ASSET_MISC_25), 0, gNumberOfActivePlayers, 0, 0, NULL); menu_init(MENU_NEWGAME_CINEMATIC); return MENU_RESULT_CONTINUE; } @@ -7118,7 +7101,7 @@ s32 func_80092BE0(s32 mapId) { s32 index; s32 temp; - trackIdArray = (s8 *)get_misc_asset(MISC_ASSET_UNK1C); + trackIdArray = (s8 *) get_misc_asset(ASSET_MISC_MAIN_TRACKS_IDS); index = 0; temp = -1; @@ -8181,61 +8164,69 @@ void trim_filename_string(char* input, char* output) { *output = '\0'; } -void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, char *arg5, s32 arg6) { +void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, char *fileName, s32 arg6) { D_800E0F90 = arg0; D_800E0F94 = arg1; D_800E0F98 = arg2; D_800E0F9C = arg3; D_80126C6C = arg4; - D_80126C74 = arg5; + D_80126C74 = fileName; D_80126C78 = arg6; D_800E0FA0 = 0; - D_80126C50 = (f32)*D_80126C6C; + D_80126C50 = (f32) *D_80126C6C; D_80126C48 = FALSE; D_80126C3C = 0; D_80126C34 = 0; load_font(ASSET_FONTS_BIGFONT); } -#ifdef NON_EQUIVALENT -// Minor differences, and is very close. -// Draw menu for "Enter your initials" when starting a new game. -// The text entry is a horizontal list of characters you scroll through. -// Visual Aid: https://imgur.com/llVwdTy -void render_enter_filename_ui(UNUSED s32 unused) { - s32 sp6C; - s32 i; - s32 pad; - s32 temp_f4; - s32 yPos; +/** + * Draw menu for "Enter your initials" when starting a new game. + * The text entry is a horizontal list of characters you scroll through. + * Visual Aid: https://imgur.com/llVwdTy +*/ +void render_enter_filename_ui(UNUSED s32 updateRate) { + s32 xIncrement; + s32 charIndexIncrement; + s32 xStart; s32 charIndex; - char *fileName; - s32 xPos; - s32 xPosOffset; - s32 charIndexOffset; + s32 x; + s32 i; + s32 startCharacterIndex; + s32 y; + char *trimmedTextPtr; + char trimmedTextBuffer[4]; - temp_f4 = D_80126C50; - sp6C = SCREEN_WIDTH_HALF - (s32) ((D_80126C50 - temp_f4) * 40); + startCharacterIndex = D_80126C50; + xStart = SCREEN_WIDTH_HALF - (s32) ((D_80126C50 - (f32) startCharacterIndex) * 40); set_text_background_colour(0, 0, 0, 0); set_text_font(ASSET_FONTS_FUNFONT); + + // Draw "Enter Initials" shadow set_text_colour(0, 0, 0, 255, 128); draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF + 2, D_800E0F90 - 22, gMenuText[ASSET_MENU_TEXT_ENTERINITIALS], ALIGN_MIDDLE_CENTER); + + // Draw "Enter Initials" text set_text_colour(255, 128, 255, 96, 255); draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF, D_800E0F90 - 24, gMenuText[ASSET_MENU_TEXT_ENTERINITIALS], ALIGN_MIDDLE_CENTER); - yPos = D_800E0F90; - for (i = 0; i < 2; i++) { - xPos = sp6C; - charIndex = temp_f4; - if (i != 0) { - xPos -= 40; - charIndex--; - xPosOffset = -40; - charIndexOffset = -1; + + y = D_800E0F90; + + // Doesn't match with a for loop. + i = 0; + while (i < 2) { + x = xStart; + charIndex = startCharacterIndex; + if (i != 0) { + x = xStart - 40; + charIndex = startCharacterIndex - 1; + xIncrement = -40; + charIndexIncrement = -1; } else { - xPosOffset = 40; - charIndexOffset = 1; + xIncrement = 40; + charIndexIncrement = 1; } - while ((xPos >= -15) && (xPos < 336)) { + while(((x >= -15) && (x < 336))) { if (charIndex < 0) { charIndex = 30; } @@ -8250,33 +8241,33 @@ void render_enter_filename_ui(UNUSED s32 unused) { if (charIndex < 28) { set_text_font(ASSET_FONTS_BIGFONT); D_800E0F8C = gFileNameValidChars[charIndex]; - draw_text(&sMenuCurrDisplayList, xPos, yPos, &D_800E0F8C, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, x, y, &D_800E0F8C, ALIGN_MIDDLE_CENTER); } else { set_text_font(ASSET_FONTS_FUNFONT); if (charIndex == 28) { - draw_text(&sMenuCurrDisplayList, xPos, yPos, &D_800E8244 /* "SP" */, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, x, y, (char *) &D_800E8244 /* "SP" */, ALIGN_MIDDLE_CENTER); } else if (charIndex == 29) { - draw_text(&sMenuCurrDisplayList, xPos, yPos, &D_800E8248 /* "DEL" */, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, x, y, (char *) &D_800E8248 /* "DEL" */, ALIGN_MIDDLE_CENTER); } else { - draw_text(&sMenuCurrDisplayList, xPos, yPos, &D_800E824C /* "OK" */, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, x, y, (char *) &D_800E824C /* "OK" */, ALIGN_MIDDLE_CENTER); } } - xPos += xPosOffset; - charIndex += charIndexOffset; + x += xIncrement; + charIndex += charIndexIncrement; } + i++; } - trim_filename_string(D_80126C74, fileName); - if (fileName != NULL) { + trimmedTextPtr = trimmedTextBuffer; + trim_filename_string(D_80126C74, trimmedTextPtr); + + if (trimmedTextPtr != NULL) { set_text_font(D_800E0F9C); set_text_colour(0, 0, 0, 255, 128); - draw_text(&sMenuCurrDisplayList, D_800E0F94 + 1, D_800E0F98 + 3, fileName, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, D_800E0F94 + 1, D_800E0F98 + 3, trimmedTextBuffer, ALIGN_MIDDLE_CENTER); set_text_colour(255, 255, 255, 0, 255); - draw_text(&sMenuCurrDisplayList, D_800E0F94, D_800E0F98, fileName, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, D_800E0F94, D_800E0F98, trimmedTextBuffer, ALIGN_MIDDLE_CENTER); } } -#else -GLOBAL_ASM("asm/non_matchings/menu/render_enter_filename_ui.s") -#endif s32 menu_enter_filename_loop(s32 updateRate) { s32 var_v0_2; @@ -8356,7 +8347,7 @@ s32 menu_enter_filename_loop(s32 updateRate) { if (*temp_a1 < 29) { D_80126C74[D_800E0FA0] = gFileNameValidChars[*temp_a1]; D_800E0FA0++; - D_80126C74[D_800E0FA0] = 0; + D_80126C74[D_800E0FA0] = '\0'; play_sound_global(SOUND_SELECT2, NULL); if (D_800E0FA0 >= D_80126C78) { *D_80126C6C = 30; @@ -8364,11 +8355,11 @@ s32 menu_enter_filename_loop(s32 updateRate) { } else if (*temp_a1 == 29) { if (D_800E0FA0 > 0) { D_800E0FA0--; - D_80126C74[D_800E0FA0] = 0; + D_80126C74[D_800E0FA0] = '\0'; } play_sound_global(SOUND_MENU_BACK3, NULL); } else { - if ((D_800E0FA0 != 0) || (D_80126C74[0] == 0)) { + if ((D_800E0FA0 != 0) || (D_80126C74[0] == '\0')) { for (var_v1 = D_800E0FA0; var_v1 < D_80126C78; var_v1++) { D_80126C74[var_v1] = 32; } @@ -8381,7 +8372,7 @@ s32 menu_enter_filename_loop(s32 updateRate) { if (D_800E0FA0 > 0) { D_800E0FA0--; } - D_80126C74[D_800E0FA0] = 0; + D_80126C74[D_800E0FA0] = '\0'; play_sound_global(SOUND_MENU_BACK3, NULL); } else { var_v0_2 = *temp_a1; @@ -8407,7 +8398,7 @@ s32 menu_enter_filename_loop(s32 updateRate) { D_80126C48 = TRUE; } else if (buttonsPressed & B_BUTTON) { D_800E0FA0--; - D_80126C74[D_800E0FA0] = 0; + D_80126C74[D_800E0FA0] = '\0'; play_sound_global(SOUND_MENU_BACK3, NULL); } render_enter_filename_ui(updateRate); @@ -8840,7 +8831,50 @@ s32 get_trophy_race_world_id(void) { return gTrophyRaceWorldId; } -GLOBAL_ASM("asm/non_matchings/menu/func_8009963C.s") +void func_8009963C(void) { + u8 *mainTrackIds; + s32 i; + s32 j; + u16 sp44[4]; + u16 swap; + u16 swapByte; + UNUSED s32 pad; + + D_801264D4 = 0; + mainTrackIds = (u8 *) get_misc_asset(ASSET_MISC_MAIN_TRACKS_IDS); + + for(i = 0; i < 6; i++) { + if (D_801264DC[i] != 0xFF) { + for(j = 0; mainTrackIds[j] != 0xFF && mainTrackIds[j] != D_801264DC[i]; j++) {} + if (mainTrackIds[j] != 0xFF) { + D_80126540[D_801264D4] = i; + sp44[D_801264D4] = (j * 8) + D_801264EC[i]; + D_801264D4++; + } + } + } + + for(i = D_801264D4-1; i > 0; i--) { + for (j = 0; j < i; j++) { + if(sp44[j+1] < sp44[j]) { + swap = sp44[j]; + sp44[j] = sp44[j+1]; + sp44[j+1] = swap; + swapByte = D_80126540[j]; + D_80126540[j] = D_80126540[j+1]; + D_80126540[j+1] = swapByte; + } + } + } + + for(i = 0; i < D_801264D4; i++) { + D_80126508[i] = D_801264DC[D_80126540[i]]; + D_80126510[i] = D_801264E4[D_80126540[i]]; + D_80126518[i] = D_801264EC[D_80126540[i]]; + D_80126520[i] = D_801264F8[D_80126540[i]]; + } +} + GLOBAL_ASM("asm/non_matchings/menu/func_800998E0.s") #ifdef NON_EQUIVALENT @@ -9035,7 +9069,7 @@ void func_8009ABD8(s8 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s8 *arg5) { arg0++; } - if ((phi_v1 == 0) && (get_misc_asset(MISC_ASSET_UNK19) == (s32 *)arg0)) { + if ((phi_v1 == 0) && (get_misc_asset(ASSET_MISC_25) == (s32 *)arg0)) { D_8012684C = TRUE; } else { D_8012684C = FALSE; @@ -9783,8 +9817,8 @@ void set_menu_id_if_option_equal(s32 IDToCheck, s32 IDToSet) { */ s32 taj_menu_loop(void) { s32 sp2C; - s32 buttonsPressed; // sp28 - Settings *settings; // sp24 + s32 buttonsPressed; + Settings *settings; settings = get_settings(); if (gNextTajChallengeMenu && sCurrentMenuID == 0) { @@ -9833,6 +9867,10 @@ s32 taj_menu_loop(void) { switch (sCurrentMenuID) { case 0: + // Hello Friend! + // If you wish to change your vehicle, then summon me with your horn. + // Either stop on the pad or beep when I am close to you! + // Press A To Continue set_current_text(ASSET_GAME_TEXT_7); sCurrentMenuID = 1; D_800DF4D8 = 1; @@ -9900,28 +9938,28 @@ s32 taj_menu_loop(void) { sCurrentMenuID = 0x63; } break; - case -3: - case -2: - case -1: - set_current_text(ASSET_GAME_TEXT_8 - sCurrentMenuID); //Wouldn't this be ASSET_GAME_TEXT_9? + case -3: // Plane Challenge - To Test your flying skills you must race me around the Island!! + case -2: // Hover Challenge - To Test your driving skills you must race me around the Island!! + case -1: // Car Challenge - To Test your driving skills you must race me around the Island!! + set_current_text(ASSET_GAME_TEXT_8 - sCurrentMenuID); // 9, 10, 11 sCurrentMenuID = 4; break; case -4: - set_current_text(ASSET_GAME_TEXT_17); + set_current_text(ASSET_GAME_TEXT_17); // MY SKILLS ARE GREATER! - Better luck next time. - TRY AGAIN. gNextTajChallengeMenu = 0; sCurrentMenuID = 1; gDialogueSubmenu = 3; break; case -5: - set_current_text(ASSET_GAME_TEXT_21); + set_current_text(ASSET_GAME_TEXT_21); // Well Done! - You are a skilled racer. gNextTajChallengeMenu = 0; sCurrentMenuID = 7; gDialogueSubmenu = 0; break; - case -8: - case -7: - case -6: - set_current_text(ASSET_GAME_TEXT_12 - sCurrentMenuID); + case -8: // Well done! - Take this as a reward. - That was my last challenge. You have done well. + case -7: // Well done! - Take this as a reward. - I'll See You Later. + case -6: // Well done! - Take this as a reward. - I'll See You Later. + set_current_text(ASSET_GAME_TEXT_12 - sCurrentMenuID); // 18, 19, 20 sCurrentMenuID = 6; gDialogueSubmenu = 0; break; diff --git a/src/menu.h b/src/menu.h index ba3a6879..523b126f 100644 --- a/src/menu.h +++ b/src/menu.h @@ -372,7 +372,7 @@ void menu_results_init(void); void func_800976CC(void); void decompress_filename_string(u32 compressedFilename, char *output, s32 length); s32 compress_filename_string(char *filename, s32 length); -void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, char *arg5, s32 arg6); +void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, char *fileName, s32 arg6); void unload_big_font_4(void); void func_80098208(void); void draw_trophy_race_text(UNUSED s32 updateRate); @@ -476,13 +476,15 @@ s32 menu_options_loop(s32 updateRate); void func_8008B4C8(void); void func_8008B758(s8 *activePlayers); s32 menu_audio_options_loop(s32 updateRate); +void func_8009963C(void); +void render_enter_filename_ui(UNUSED s32 updateRate); +void randomise_ai_racer_slots(s32 arg0); // Non Matching functions below here void load_menu_text(s32 language); // Non Matching void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2); s32 menu_controller_pak_loop(s32 updateRate); void render_magic_codes_list_menu_text(s32 arg0); -void randomise_ai_racer_slots(s32 arg0); void menu_game_select_init(void); void render_file_select_menu(s32 arg0); void func_8008FF1C(s32 updateRate); @@ -511,7 +513,6 @@ s32 func_800998E0(s32 arg0); void func_80081218(void); void func_80080580(Gfx **dlist, s32 startX, s32 startY, s32 width, s32 height, s32 borderWidth, s32 borderHeight, s32 colour, TextureHeader *tex); void func_800853D0(unk800861C8 *arg0, s32 arg1, s32 arg2); -void render_enter_filename_ui(UNUSED s32 unused); void func_8008D8BC(s32 updateRate); void renderTrackSelect(s32 arg0, s32 arg1, s8 *arg2, s8 *arg3, s32 arg4, s32 arg5, s32 arg6, DrawTexture *arg7, s32 arg8); //Possible names @@ -520,7 +521,6 @@ s32 func_80095728(Gfx **gfx, MatrixS **mtx, Vertex **vtx, s32 updateRate); s32 func_8008F618(Gfx **dlist, MatrixS **mat); void func_80093D40(UNUSED s32 updateRate); void func_80080BC8(Gfx **); -void func_8009963C(void); void func_80081C04(s32 num, s32 x, s32 y, u8 r, u8 g, u8 b, u8 a, u8 font, u8 alignment); void func_80080E90(Gfx **dList, s32 startX, s32 startY, s32 width, s32 height, s32 borderWidth, s32 borderHeight, s32 colour0, s32 colour1, s32 colour2, s32 colour3); void func_80084854(void); diff --git a/src/object_functions.c b/src/object_functions.c index d93ff80a..ee0456bd 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -4101,7 +4101,7 @@ void obj_loop_weaponballoon(Object *obj, s32 updateRate) { racer->balloon_level = 2; levelMask = 2; } - balloonAsset = (s8 *) get_misc_asset(MISC_ASSET_UNK0C); + balloonAsset = (s8 *) get_misc_asset(ASSET_MISC_12); prevQuantity = racer->balloon_quantity; racer->balloon_quantity = balloonAsset[(racer->balloon_type * 10) + (racer->balloon_level * 2) + 1]; racer->unk209 |= 1; @@ -4425,12 +4425,12 @@ void homing_rocket_prevent_overshoot(Object *obj, s32 updateRate, Object_Weapon } else { rocket->hitObj = targetObj; rocket->forwardVel = -25.0f; - sp58 = NULL; + sp58 = FALSE; } angle = (arctan2_f(diffX, diffZ) - 0x8000) & 0xFFFF; angleDiff = angle - (obj->segment.trans.y_rotation & 0xFFFF); WRAP(angleDiff, -0x8000, 0x8000); - if (sp58 != NULL) { + if (sp58) { obj->segment.trans.y_rotation += (angleDiff * updateRate) >> shift; angleDiff = sineY - (obj->segment.trans.x_rotation & 0xFFFF); WRAP(angleDiff, -0x8000, 0x8000); @@ -4938,7 +4938,7 @@ void obj_loop_bubbler(Object *obj, s32 updateRate) { } void obj_init_boost(Object *obj, LevelObjectEntry_Boost *entry) { - obj->unk64 = (Object_64 *) ((s32) get_misc_asset(MISC_ASSET_UNK14) + (entry->unk8[0] << 7)); + obj->unk64 = (Object_64 *) ((s32) get_misc_asset(ASSET_MISC_20) + (entry->unk8[0] << 7)); obj->segment.level_entry = NULL; } diff --git a/src/objects.c b/src/objects.c index 5b463f7b..09966241 100644 --- a/src/objects.c +++ b/src/objects.c @@ -28,6 +28,8 @@ #include "controller.h" #include "game_text.h" #include "audiosfx.h" +#include "unknown_005740.h" +#include "vehicle_misc.h" #define MAX_CHECKPOINTS 60 #define OBJECT_POOL_SIZE 0x15800 @@ -53,7 +55,7 @@ s16 D_800DC724 = 0x2A30; s16 D_800DC728 = -1; s16 D_800DC72C = 0; u8 gHasGhostToSave = 0; -u8 gTimeTrialStaffGhost = 0; +u8 gTimeTrialStaffGhost = FALSE; u8 gBeatStaffGhost = FALSE; s8 D_800DC73C = 0; s8 D_800DC740 = 0; @@ -224,7 +226,7 @@ s16 gCutsceneID; s16 D_8011AE7C; s8 D_8011AE7E; s16 gTTGhostTimeToBeat; -s16 D_8011AE82; +s16 D_8011AE82; //Current Vehicle being used in track? s16 gMapDefaultVehicle; // Vehicle enum s32 D_8011AE88; Gfx *gObjectCurrDisplayList; @@ -314,7 +316,7 @@ void func_8000B290(void) { D_800DC74C[0] = 0; D_800DC74C[1] = 0; } - var_s0 = (struct TempStruct9 *) get_misc_asset(MISC_ASSET_UNK14); + var_s0 = (struct TempStruct9 *) get_misc_asset(ASSET_MISC_20); for (i = 0; i < 10; i++) { temp_a0_2 = var_s0[i].unk78; if (temp_a0_2 != 0) { @@ -570,16 +572,14 @@ s32 normalise_time(s32 timer) { } } -#ifdef NON_MATCHING -//Really close to matching. Looks like it's just regalloc left, but there's a couple of fakematch stuff in there. void func_8000C8F8(s32 arg0, s32 arg1) { s32 assetSize; Settings *settings; s32 i; - s32 *asset; + s32 *mem; s32 var_s0; u32 assetOffset; - s32 *assetTable; + u32 *objMapTable; UNUSED s32 pad; u8 *compressedAsset; s32 temp_t3; @@ -599,37 +599,34 @@ void func_8000C8F8(s32 arg0, s32 arg1) { } D_8011AD3E = 0; - asset = allocate_from_main_pool_safe(0x3000, COLOUR_TAG_BLUE); - D_8011AEB0[arg1] = asset; - D_8011AE98[arg1] = (u8 *)(D_8011AEB0[arg1] + 4); //Some structs unk4? + mem = allocate_from_main_pool_safe(0x3000, COLOUR_TAG_BLUE); + D_8011AEB0[arg1] = mem; + D_8011AE98[arg1] = (u8 *) (D_8011AEB0[arg1] + 4); D_8011AEA0[arg1] = 0; D_8011AEA8[arg1] = arg0; - assetTable = (s32 *) load_asset_section_from_rom(ASSET_LEVEL_OBJECT_MAPS_TABLE); - for (i = 0; assetTable[i] != -1; i++) { } - - //REGALLOC DIFF START - if (arg0 >= (i - 1)) { + objMapTable = (u32 *) load_asset_section_from_rom(ASSET_LEVEL_OBJECT_MAPS_TABLE); + for (i = 0; objMapTable[i] != 0xFFFFFFFF; i++) { } + i--; + if (arg0 >= i) { arg0 = 0; } - assetOffset = (&assetTable[arg0])[0]; - assetSize = (&assetTable[arg0])[1]; - assetSize -= assetOffset; - //REGALLOC DIFF END + assetOffset = objMapTable[arg0]; + assetSize = objMapTable[arg0+1] - assetOffset; if (assetSize != 0) { - compressedAsset = (u8 *) asset; + compressedAsset = (u8 *) mem; compressedAsset = ((compressedAsset + get_asset_uncompressed_size(ASSET_LEVEL_OBJECT_MAPS, assetOffset)) - (0, assetSize)) + 0x20; load_asset_to_address(ASSET_LEVEL_OBJECT_MAPS, (u32) compressedAsset, assetOffset, assetSize); - gzip_inflate(compressedAsset, (u8 *) asset); - free_from_memory_pool(assetTable); - D_8011AE98[arg1] = (u8 *)(D_8011AEB0[arg1] + 4); - D_8011AEA0[arg1] = *asset; + gzip_inflate(compressedAsset, (u8 *) mem); + free_from_memory_pool(objMapTable); + D_8011AE98[arg1] = (u8 *) (D_8011AEB0[arg1] + 4); + D_8011AEA0[arg1] = *mem; D_8011AEC0 = arg1; for (var_s0 = 0; var_s0 < D_8011AEA0[arg1]; var_s0 += temp_t3) { spawn_object((LevelObjectEntryCommon *) D_8011AE98[arg1], 1); D_8011AE98[arg1] = &D_8011AE98[arg1][temp_t3 = D_8011AE98[arg1][1] & 0x3F]; } - D_8011AE98[arg1] = (u8 *)(D_8011AEB0[arg1] + 4); + D_8011AE98[arg1] = (u8 *) (D_8011AEB0[arg1] + 4); D_8011AE70 = 0; D_8011ADC0 = 1; if (D_8011ADAC == 0) { @@ -641,9 +638,6 @@ void func_8000C8F8(s32 arg0, s32 arg1) { D_8011ADAC = 1; } } -#else -GLOBAL_ASM("asm/non_matchings/objects/func_8000C8F8.s") -#endif // Reset all values of D_8011AE08 to NULL void func_8000CBC0(void) { @@ -678,8 +672,479 @@ s32 func_8000CC20(Object *obj) { return NextFreeIndex; } -// Has a jump table +#ifdef NON_EQUIVALENT +void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { + s32 numPlayers; // sp144 + enum GameMode gameMode; + s32 cutsceneID; //sp130 + s8* miscAsset16; + s8 sp11C[8]; + s8 sp114[8]; + s32 spF4[8]; + s32 spD4[8]; + s32 spB4[8]; + s32 sp94[8]; + LevelHeader* levelHeader; + ObjectSegment* cutsceneCameraSegment; // sp74 + s16 objectId; + s8 sp127; + u8 raceType; + s8 tempVehicle; + u8 var_a1; + s32 isChallengeMode; // sp64 + s32 i6; // sp54 + LevelObjectEntry_Unk8000CC7C* entry; + Object* curObj; + Object* curRacerObj; + Object* newRacerObj; + Object_Racer *curRacer; + Settings* settings; + s32 spawnObjFlags; + s32 racerPos; + s32 i2; + s32 j; + s32 var_s4; + s32 tajFlags; + + D_8011AD20 = 0; + D_8011ADB0 = 0; + gFirstTimeFinish = 0; + gNumRacers = 0; + D_8011AF00 = 0; + set_taj_status(0); + levelHeader = get_current_level_header(); + raceType = levelHeader->race_type; + if (raceType == RACETYPE_CUTSCENE_1 || raceType == RACETYPE_CUTSCENE_2) { + return; + } + if (raceType == RACETYPE_BOSS || raceType & RACETYPE_CHALLENGE) { + gIsTimeTrial = 0; + gTimeTrialEnabled = 0; + } + cutsceneID = -1; + if (is_time_trial_enabled() && raceType == RACETYPE_DEFAULT) { + cutsceneCameraSegment = get_cutscene_camera_segment(); + cutsceneID = (u8) cutsceneCameraSegment->object.animationID; + cutsceneCameraSegment->object.animationID = 1; + } + gameMode = get_game_mode(); + settings = get_settings(); + miscAsset16 = (s8*) get_misc_asset(3); + D_8011AE82 = D_8011ADC5; + tajFlags = settings->courseFlagsPtr[settings->courseId]; + if (!(tajFlags & 1)) { // Check if the player has not visited the course yet. + settings->courseFlagsPtr[settings->courseId] = tajFlags | 1; + D_8011AF00 = 2; + } + if (raceType != RACETYPE_DEFAULT) { + D_8011AF00 = 2; + } + for(i2 = 0; i2 < 8; i2++) { + spB4[i2] = 0; + spF4[i2] = 0; + spD4[i2] = 0; + } + for(i2 = 0; i2 < gObjectCount; i2++) { + curObj = gObjPtrList[i2]; + if (!(curObj->segment.trans.flags & OBJ_FLAGS_DEACTIVATED)) { + if (curObj->behaviorId == BHV_SETUP_POINT) { + if (arg1 == curObj->properties.setupPoint.unk4) { + if (curObj->properties.setupPoint.unk0 < 8) { + spF4[curObj->properties.setupPoint.unk0] = curObj->segment.trans.x_position; + spD4[curObj->properties.setupPoint.unk0] = curObj->segment.trans.y_position; + spB4[curObj->properties.setupPoint.unk0] = curObj->segment.trans.z_position; + sp94[curObj->properties.setupPoint.unk0] = curObj->segment.trans.y_rotation; + } + tempVehicle = curObj->segment.level_entry->setupPoint.vehicle; + if (tempVehicle != -1) { + vehicle = tempVehicle; + } + } + } + } + } + D_8011ADC5 = vehicle; + D_8011AE82 = D_8011ADC5; + numPlayers = arg2 + 1; + gNumRacers = 8; + D_800DC740 = 0; + if (is_two_player_adventure_race()) { + numPlayers = 2; + D_800DC740 = 1; + set_scene_viewport_num(1); + } + if (raceType == RACETYPE_HUBWORLD) { + gTimeTrialEnabled = 0; + } + + gIsTimeTrial = gTimeTrialEnabled; + if (gIsTimeTrial) { + raceType = RACETYPE_HUBWORLD; // ??? + } + isChallengeMode = raceType & RACETYPE_CHALLENGE; + if (raceType == RACETYPE_HUBWORLD || numPlayers >= 3) { + gNumRacers = numPlayers; + if (get_level_property_stack_pos() == 0 && D_800DC708 != 0) { + sp94[0] += D_800DC708; + D_800DC708 = 0; + } + } else if (numPlayers == 2) { + gNumRacers = get_multiplayer_racer_count(); + } + + if (isChallengeMode != 0) { + gNumRacers = 4; + } + D_8011AD3C = 0; + if (raceType == RACETYPE_BOSS) { + gNumRacers = 2; + numPlayers = 1; + D_8011AD3C = 1; + } + D_800DC71C = 0; + if (gameMode == GAMEMODE_MENU && raceType == RACETYPE_DEFAULT) { + gNumRacers = 6; + D_800DC71C = 1; + D_8011AD3C = 2; + } + + for(i2 = 0; i2 < gNumRacers; i2++) { + sp11C[i2] = 0; + } + + var_a1 = 0; + for(i2 = 0; i2 < numPlayers; i2++) { + racerPos = settings->racers[i2].starting_position; + if (racerPos < gNumRacers) { + if (sp11C[racerPos] == 0) { + sp11C[racerPos] = 1; + continue; + } + } + sp114[var_a1++] = (u16) i2; + } + + for (i2 = numPlayers; i2 < gNumRacers; i2++) { + racerPos = settings->racers[i2].starting_position; + if (racerPos < gNumRacers) { + if (sp11C[racerPos] == 0) { + sp11C[racerPos] = 1; + continue; + } + } + sp114[var_a1++] = (u16) i2; + } + + for (i6 = 0; i6 < var_a1; i6++) { + for (j = 0; j < gNumRacers; j++) { + if (sp11C[j] == 0) { + sp11C[j] = 1; + settings->racers[sp114[i6]].starting_position = j; + j = gNumRacers; + } + } + } + if (((!(&curObj->segment.trans)) && (!(&curObj->segment.trans))) && (!(&curObj->segment.trans))) {} + entry = allocate_from_main_pool_safe(sizeof(LevelObjectEntry_Unk8000CC7C), COLOUR_TAG_YELLOW); + entry->unkC = 0; + entry->unkA = 0; + entry->unk8 = 0; + if (levelHeader->vehicle == VEHICLE_CAR) { + gIsNonCarRacers = FALSE; + } else { + gIsNonCarRacers = TRUE; + } + sp127 = -1; + i2 = gNumRacers; + D_8011AD24[1] = levelHeader->unkB8; + for (i6 = 0; i6 < gNumRacers; i6++) { + var_s4 = i6; + if (raceType != RACETYPE_HUBWORLD && isChallengeMode == 0 && D_8011AD3C == 0) { + var_s4 = 0; + // This might not be a for loop? + for(j = 0; j < gNumRacers; j++) { + if (i6 == settings->racers[j].starting_position) { + var_s4 = j; + j = i2; + } + } + } + if (var_s4 < numPlayers) { + entry->unkE = var_s4; + } else { + entry->unkE = 4; + } + if (raceType != RACETYPE_HUBWORLD || entry->unkE != 4) { + spawnObjFlags = 1; + if (D_8011AD3C == 1) { + if (i6 == 0) { + vehicle = gBossVehicles[D_8011AD24[1]].playerVehicle; + } else { + vehicle = gBossVehicles[D_8011AD24[1]].playerVehicle; + } + } else if (D_8011AD3C == 2) { + vehicle = levelHeader->vehicle; + } else { + if (entry->unkE == 4 || is_two_player_adventure_race()) { + vehicle = get_player_selected_vehicle(PLAYER_ONE); + } else if (numPlayers >= 2) { + vehicle = get_player_selected_vehicle(entry->unkE); + } + } + + // Are these assignments correct? Seems weird. + if (D_8011AD3C == 2) { + objectId = D_800DC7A8[D_800DC840[i6] + (vehicle * 10)]; + } else if (vehicle < 5) { + objectId = D_800DC7A8[(settings->racers[var_s4].character) + (vehicle * 10)]; + } else { + objectId = D_800DC7B8[vehicle]; + } + + entry->common.objectID = objectId; + entry->common.size = ((objectId & 0x100) >> 1) | 0x10; + entry->common.x = spF4[i6]; + entry->common.y = spD4[i6]; + entry->common.z = spB4[i6]; + entry->unkC = sp94[i6]; + if (entry->unkE == 4) { + func_800619F4(1); + } + if (entry->unkE == 4) { + spawnObjFlags = 5; + if (numPlayers >= 2) { + spawnObjFlags |= 8; + } + } + if (entry->unkE != 4) { + if (numPlayers == 1) { + spawnObjFlags |= 0x10; + } + } + if (vehicle >= VEHICLE_TRICKY) { + spawnObjFlags = 1; + func_800619F4(0); + } + newRacerObj = spawn_object((LevelObjectEntryCommon*)entry, spawnObjFlags); + newRacerObj->segment.trans.y_rotation = sp94[i6]; + (*gRacers)[i6] = newRacerObj; + gRacersByPosition[i6] = newRacerObj; + gRacersByPort[var_s4] = newRacerObj; + curRacer = &newRacerObj->unk64->racer; + newRacerObj->segment.level_entry = NULL; + curRacer->vehicleID = vehicle; + curRacer->vehicleIDPrev = vehicle; + if (sp127 != -1 && sp127 != vehicle) { + D_8011AD20 = 1; + } + sp127 = vehicle; + if (curRacer->vehicleID == VEHICLE_PLANE || curRacer->vehicleID == VEHICLE_SMOKEY || curRacer->vehicleID == VEHICLE_PTERODACTYL) { + gIsNonCarRacers = TRUE; + } + curRacer->unk1CB = vehicle; + tempVehicle = curRacer->unk1CB; + if (tempVehicle < VEHICLE_CAR || tempVehicle > VEHICLE_PLANE) { + curRacer->unk1CB = 0; + } + curRacer->unk2 = var_s4; + curRacer->characterId = settings->racers[var_s4].character; + if (D_8011AD3C == 2) { + curRacer->characterId = D_800DC840[i6]; + } else { + curRacer->characterId = settings->racers[var_s4].character; + } + if (raceType == RACETYPE_CHALLENGE_BATTLE) { + curRacer->bananas = 8; + } else { + curRacer->bananas = 0; + } + if (get_filtered_cheats() & CHEAT_START_WITH_10_BANANAS && !isChallengeMode) { + if (curRacer->playerIndex != PLAYER_COMPUTER) { + curRacer->bananas = 10; + } + } + if ((gameMode != GAMEMODE_MENU || D_8011AD3C == 2) && vehicle < VEHICLE_TRICKY) { + curRacer->unk118 = func_80004B40(curRacer->characterId, curRacer->vehicleID); + } else { + curRacer->unk118 = NULL; + } + + newRacerObj->interactObj->pushForce = miscAsset16[curRacer->characterId] + 1; + switch (curRacer->vehicleID) { + case VEHICLE_TRICKY: + case VEHICLE_BLUEY: + case VEHICLE_SMOKEY: + case VEHICLE_PTERODACTYL: + case VEHICLE_SNOWBALL: + case VEHICLE_BUBBLER: + case VEHICLE_WIZPIG: + case VEHICLE_ROCKET: + func_8005C2F0(newRacerObj, curRacer); + break; + default: + break; + } + } + } + var_s4 = 0; + if (raceType != RACETYPE_BOSS) { + D_8011AD3C = 0; + } + if (D_8011AD3C != 0) { + D_8011AD20 = 0; + } + if (get_game_mode() == GAMEMODE_INGAME) { + for(j = 0; j < gObjectCount; j++) { + curObj = gObjPtrList[j]; + tajFlags = curObj->segment.header->flags; + if ((tajFlags & 0x20) && (gIsTimeTrial)) { + free_object(curObj); + } else if ((tajFlags & 0x40) && (numPlayers >= 2)) { + free_object(curObj); + } + } + } + gGhostObj = 0; + free_tt_ghost_data(); + D_8011AD38 = -1; + if ((gIsTimeTrial) && (numPlayers == 1)) { + func_80059944(); + D_8011AD38 = func_8001B668(0); + gHasGhostToSave = 0; + if (D_800DC728 >= 5) { + D_800DC728 = 0; + } + if (func_8001B288() != 0) { + objectId = D_800DC7A8[(D_800DC728 * 10) + D_800DC72C]; + entry->common.size = ((objectId & 0x100) >> 1) | 0x10; + entry->common.objectID = objectId; + entry->common.x = spF4[0]; + entry->common.y = spD4[0]; + entry->common.z = spB4[0]; + entry->unkC = sp94[0]; + newRacerObj = spawn_object((LevelObjectEntryCommon*) entry, 1); + newRacerObj->segment.level_entry = NULL; + newRacerObj->behaviorId = BHV_UNK_3A; + newRacerObj->shadow->scale = 0.01f; + newRacerObj->interactObj->flags = 0; + D_8011AD34 = newRacerObj; + newRacerObj->unk64->racer.transparency = 0x60; + } + if (func_8001B4FC(get_current_map_id()) != 0) { + objectId = D_800DC7B8[gMapDefaultVehicle * 10]; + entry->common.size = ((objectId & 0x100) >> 1) | 0x10; + entry->common.objectID = objectId; + entry->common.x = spF4[0]; + entry->common.y = spD4[0]; + entry->common.z = spB4[0]; + entry->unkC = sp94[0]; + newRacerObj = spawn_object((LevelObjectEntryCommon*) entry, 1); + newRacerObj->segment.level_entry = NULL; + newRacerObj->behaviorId = BHV_UNK_3A; + newRacerObj->shadow->scale = 0.01f; + newRacerObj->interactObj->flags = 0; + gGhostObj = newRacerObj; + newRacerObj->unk64->racer.transparency = 0x60; + } + } + D_8011ADB0 = 100; + for (j = 0; j < gNumRacers; j++) { + curRacerObj = (*gRacers)[j]; + curRacer = &curRacerObj->unk64->racer; + for(i2 = 0; i2 < 10; i2++) { + update_player_racer(curRacerObj, LOGIC_30FPS); // Simulate 10 updates? + } + if (curRacer->playerIndex == PLAYER_COMPUTER) { + var_s4 = (var_s4 + 1) & 1; + for (i2 = 0; i2 < curRacerObj->segment.header->numberOfModelIds; i2++) { + if (curRacerObj->unk68[i2] != NULL) { + if (curRacerObj->unk68[i2]->unk20 != 0) { + curRacerObj->unk68[i2]->unk20 = (var_s4 * 2); + } + } + } + } else { + // curRacer is a human racer. + for (i2 = 0; i2 < curRacerObj->segment.header->numberOfModelIds; i2++) { + if (curRacerObj->unk68[i2] != NULL) { + if (curRacerObj->unk68[i2]->unk20 != 0) { + curRacerObj->unk68[i2]->unk20 = 0; + } + } + } + } + if (get_filtered_cheats() & CHEAT_BIG_CHARACTERS) { + curRacerObj->segment.trans.scale *= 1.4f; + } + if (get_filtered_cheats() & CHEAT_SMALL_CHARACTERS) { + curRacerObj->segment.trans.scale *= 0.714f; + } + curRacer->stretch_height_cap = 1.0f; + curRacer->stretch_height = 1.0f; + } + if (raceType == RACETYPE_DEFAULT || isChallengeMode || gIsTimeTrial || D_8011AD3C) { + D_8011ADB0 = 80; + } else { + D_8011ADB0 = 0; + } + if (raceType == RACETYPE_DEFAULT && numPlayers == 1 && !is_in_adventure_two()) { + if (is_two_player_adventure_race() == 0) { + for(i2 = 0; i2 < 3; i2++) { + entry->common.objectID = BHV_ANIMATED_OBJECT; + entry->common.size = 8; + entry->common.x = 0; + entry->common.y = 0; + entry->common.z = 0; + newRacerObj = spawn_object((LevelObjectEntryCommon*)entry, 1); + newRacerObj->properties.common.unk0 = i2; + newRacerObj->segment.level_entry = NULL; + } + } + } + D_8011AD4E = 0; + D_8011ADB4 = 0; + set_next_taj_challenge_menu(0); + if (settings->worldId == WORLD_CENTRAL_AREA) { + if (!is_in_tracks_mode()) { + var_s4 = 0; + miscAsset16 = (s8*)get_misc_asset(ASSET_MISC_16); + tajFlags = settings->tajFlags; + + // settings->balloonsPtr[0] is the total balloon count. + if (!(tajFlags & TAJ_FLAGS_CAR_CHAL_UNLOCKED) && (settings->balloonsPtr[0] >= miscAsset16[0])) { + var_s4 = 1; + } else if (!(tajFlags & TAJ_FLAGS_HOVER_CHAL_UNLOCKED) && (settings->balloonsPtr[0] >= miscAsset16[1])) { + var_s4 = 2; + } else if (!(tajFlags & TAJ_FLAGS_PLANE_CHAL_UNLOCKED) && (settings->balloonsPtr[0] >= miscAsset16[2])) { + var_s4 = 3; + } + + if (var_s4) { + set_taj_voice_line(SOUND_VOICE_TAJ_CHALLENGE_RACE); + settings->tajFlags |= 1 << (var_s4 + 31); + set_taj_status(2); + set_next_taj_challenge_menu(var_s4); + safe_mark_write_save_file(get_save_file_index()); + } + } + } + *D_8011AD24 = 1; + if (cutsceneID >= 0) { + cutsceneCameraSegment->object.animationID = cutsceneID; + } + if (func_8000E148() != 0) { + func_80072298(0); + D_8011ADB0 = 0; + start_level_music(1.0f); + } + set_free_queue_state(0); + free_from_memory_pool(entry); + set_free_queue_state(2); + +} +#else GLOBAL_ASM("asm/non_matchings/objects/func_8000CC7C.s") +#endif /** * Return an error status for the controller pak. @@ -2636,7 +3101,7 @@ void render_racer_shield(Gfx **dList, MatrixS **mtx, Vertex **vtxList, Object *o if (vehicleID >= NUMBER_OF_PLAYER_VEHICLES) { vehicleID = VEHICLE_CAR; } - shield = ((struct RacerShieldGfx *) get_misc_asset(MISC_ASSET_SHIELD_DATA)); + shield = ((struct RacerShieldGfx *) get_misc_asset(ASSET_MISC_SHIELD_DATA)); vehicleID = (vehicleID * 10) + var_a2; shield = shield + vehicleID; gShieldEffectObject->segment.trans.x_position = shield->x_position; @@ -2702,7 +3167,7 @@ void render_racer_magnet(Gfx **dList, MatrixS **mtx, Vertex **vtxList, Object *o gObjectCurrDisplayList = *dList; gObjectCurrMatrix = *mtx; gObjectCurrVertexList = *vtxList; - magnet = (f32 *) get_misc_asset(MISC_ASSET_MAGNET_DATA); + magnet = (f32 *) get_misc_asset(ASSET_MISC_MAGNET_DATA); vehicleID = racer->vehicleID; if (vehicleID < VEHICLE_CAR || vehicleID >= NUMBER_OF_PLAYER_VEHICLES) { vehicleID = VEHICLE_CAR; @@ -3006,7 +3471,62 @@ void process_object_interactions(void) { } GLOBAL_ASM("asm/non_matchings/objects/func_800159C8.s") -GLOBAL_ASM("asm/non_matchings/objects/func_80016500.s") + +void func_80016500(Object *obj, Object_Racer *racer) { + s32 sp3C; + s32 angle; + UNUSED s32 pad; + f32 startVelocity; + f32 cosAngle; + f32 sinAngle; + + startVelocity = racer->velocity; + angle = racer->steerVisualRotation; + if (racer->vehicleID == VEHICLE_CAR) { + if (racer->drift_direction != 0) { + angle += racer->unk10C; + angle = (s16)angle; + } + } + cosAngle = coss_f(-angle); + sinAngle = sins_f(-angle); + racer->lateral_velocity = ( obj->segment.x_velocity * cosAngle) + (obj->segment.z_velocity * sinAngle); + racer->velocity = (-obj->segment.x_velocity * sinAngle) + (obj->segment.z_velocity * cosAngle); + if (racer->playerIndex != -1) { + angle = (startVelocity - racer->velocity) * 14.0f; + if (angle < 0) { + angle = -angle; + } + angle += 35; + if (angle >= 128) { + angle = 127; + } + if (racer->unk1F6 == 0) { + play_sound_global(SOUND_CRASH_CHARACTER, &racer->unk220); + func_80001FB8(SOUND_CRASH_CHARACTER, (s32 *) racer->unk220, angle); + } + if (racer->unk1F6 == 0 && angle >= 56) { + if (!racer->raceFinished) { + func_80072348(racer->playerIndex, 18); + } + racer->unk1F3 |= 8; + } + if (angle >= 56) { + play_random_character_voice(obj, SOUND_VOICE_CHARACTER_NEGATIVE, 8, 1); + } + sp3C = (startVelocity - racer->velocity); + if (sp3C < 0) { + sp3C = -sp3C; + } + if (sp3C >= 4) { + sp3C = 3; + } + racer->unk1F6 = 30; + set_active_camera(racer->playerIndex); + get_active_camera_segment()->object.distanceToCamera = sp3C; + } +} + GLOBAL_ASM("asm/non_matchings/objects/func_80016748.s") void func_80016BC4(Object *obj) { @@ -3172,7 +3692,65 @@ Object *find_taj_object(void) { } GLOBAL_ASM("asm/non_matchings/objects/func_80018CE0.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8001955C.s") + +//Rocket Path +s32 func_8001955C(Object *obj, s32 checkpoint, u8 arg2, s32 arg3, s32 arg4, f32 checkpointDist, f32 *outX, f32 *outY, f32 *outZ) { + s32 numCheckpoints; + s32 checkpointIndex; + s32 i; + f32 xData[4]; + f32 yData[4]; + f32 zData[4]; + f32 xSpline; + f32 temp2; + f32 zSpline; + f32 ySpline; + f32 dx; + f32 dy; + f32 dz; + CheckpointNode *checkpointNode; + + numCheckpoints = gNumberOfCheckpoints; + if (numCheckpoints == 0) { + return FALSE; + } + checkpointIndex = checkpoint - 2; + if (checkpointIndex < 0) { + checkpointIndex += numCheckpoints; + } + for(i = 0; i < 4; i++) { + checkpointNode = find_next_checkpoint_node(checkpointIndex, arg2); + xData[i] = checkpointNode->x + (checkpointNode->scale * checkpointNode->rotationZFrac * arg3); + yData[i] = checkpointNode->y + (checkpointNode->scale * arg4); + zData[i] = checkpointNode->z + (checkpointNode->scale * -checkpointNode->rotationXFrac * arg3); + checkpointIndex += 1; + if (checkpointIndex == numCheckpoints) { + checkpointIndex = 0; + } + } + temp2 = (1.0 - checkpointDist); + if (temp2 < 0.0f) { + temp2 = 0.0f; + } + if (temp2 > 1.0) { + temp2 = 1.0f; + } + xSpline = cubic_spline_interpolation(xData, 0, temp2, &dx); + ySpline = cubic_spline_interpolation(yData, 0, temp2, &dy); + zSpline = cubic_spline_interpolation(zData, 0, temp2, &dz); + temp2 = sqrtf((dx * dx) + (dy * dy) + (dz * dz)); + if (temp2 != 0.0f) { + temp2 = 500.0 / temp2; + dx *= temp2; + dy *= temp2; + dz *= temp2; + } + *outX = (xSpline + dx) - obj->segment.trans.x_position; + *outY = (ySpline + dy) - obj->segment.trans.y_position; + *outZ = (zSpline + dz) - obj->segment.trans.z_position; + return TRUE; +} + GLOBAL_ASM("asm/non_matchings/objects/func_80019808.s") /** @@ -3315,7 +3893,33 @@ void tt_ghost_beaten(s32 arg0, s16 *playerId) { play_time_trial_end_message(playerId); } -GLOBAL_ASM("asm/non_matchings/objects/func_8001B4FC.s") +u8 func_8001B4FC(s32 trackId) { + s32 i; + s8 *mainTrackIds; + u16 *temp_v0; + Settings *settings; + + gBeatStaffGhost = FALSE; + gTimeTrialStaffGhost = FALSE; + settings = get_settings(); + if (get_map_default_vehicle(trackId) == D_8011AE82) { + mainTrackIds = (s8 *) get_misc_asset(ASSET_MISC_MAIN_TRACKS_IDS); + temp_v0 = (u16 *) get_misc_asset(ASSET_MISC_24); + for (i = 0; mainTrackIds[i] != -1 && trackId != mainTrackIds[i]; i++) { } + if (mainTrackIds[i] != -1) { + if (temp_v0[i] >= settings->courseTimesPtr[D_8011AE82][trackId]) { + //Check if TT has been beaten? + if (!(get_eeprom_settings() & ((1 << 4) << i) )) { + gBeatStaffGhost = TRUE; + } + if (func_8001B2F0(trackId) == 0) { + gTimeTrialStaffGhost = TRUE; + } + } + } + } + return gTimeTrialStaffGhost; +} /** * Return the time trial ghost object. diff --git a/src/objects.h b/src/objects.h index 9c133bd3..59e4e828 100644 --- a/src/objects.h +++ b/src/objects.h @@ -467,6 +467,10 @@ void func_8001EFA4(Object *, Object *); Object *func_80016C68(f32 x, f32 y, f32 z, f32 maxDistCheck, s32 dontCheckYAxis); void func_8002125C(Object *charSelectObj, LevelObjectEntry_CharacterSelect *entry, Object_CharacterSelect *charSelect, UNUSED s32 index); void func_80021104(Object *obj, Object_Animation *animObj, LevelObjectEntry_Animation *entry); +s32 func_8001955C(Object *obj, s32 checkpoint, u8 arg2, s32 arg3, s32 arg4, f32 checkpointDist, f32 *outX, f32 *outY, f32 *outZ); +void func_80016500(Object *obj, Object_Racer *racer); +void func_8000C8F8(s32, s32); +u8 func_8001B4FC(s32 trackId); s8 set_course_finish_flags(Settings *settings); void process_object_interactions(void); void render_3d_model(Object *obj); @@ -505,14 +509,12 @@ void func_80008438(Object**, s32, s32); void func_8001E6EC(s8); void func_8001E89C(void); void func_800230D0(Object*, Object_Racer*); -s32 func_8001955C(Object*, s8, u8, s16, s32, f32, f32*, f32*, f32*); void func_80010994(s32 updateRate); void func_800159C8(Object *, Object *); void func_80016748(Object *, Object *); void func_80011264(ObjectModel *, Object *); void func_800245F0(ObjectModel *, Object *, f32); //asm func in unknown_0251F0 s32 func_80061D30(Object *); //asm func in unknown_062930 -void func_8000C8F8(s32, s32); Object *func_8000FD54(s32); s32 func_80014B50(s32 arg0, s32 arg1, f32 arg2, u32 arg3); diff --git a/src/racer.c b/src/racer.c index 5d5c11ca..501579c6 100644 --- a/src/racer.c +++ b/src/racer.c @@ -189,7 +189,7 @@ f32 *gCurrentRacerMiscAssetPtr; f32 *D_8011D568; f32 gCurrentRacerWeightStat; f32 gCurrentRacerHandlingStat; -f32 D_8011D574; +f32 gCurrentRacerUnusedMiscAsset11; // Set, but never read f32 gRacerMagnetVelX; f32 gRacerMagnetVelZ; u8 D_8011D580; @@ -252,8 +252,8 @@ void func_80042D20(Object *obj, Object_Racer *racer, s32 updateRate) { s16 temp_v0_10; sp6E = racer->unk1CA; - miscAsset1 = (s8 *) get_misc_asset(MISC_ASSET_UNK01); - miscAsset2 = (s8 *) get_misc_asset(MISC_ASSET_UNK02); + miscAsset1 = (s8 *) get_misc_asset(ASSET_MISC_1); + miscAsset2 = (s8 *) get_misc_asset(ASSET_MISC_2); header = get_current_level_header(); racerGroup = get_racer_objects_by_position(&numRacers); sp54 = get_ai_behaviour_table(); @@ -347,7 +347,7 @@ void func_80042D20(Object *obj, Object_Racer *racer, s32 updateRate) { if ((f32) (s16) ((racer->aiSkill - 2) << 2) <= 300.0f - D_8011D544) { gCurrentRacerInput |= A_BUTTON; } - miscAsset4 = (u8 *) get_misc_asset(MISC_ASSET_UNK0C); + miscAsset4 = (u8 *) get_misc_asset(ASSET_MISC_12); if (racer->balloon_level < 3) { balloonType = miscAsset4[racer->balloon_type * 3 + racer->balloon_level]; } else { @@ -413,7 +413,7 @@ void func_80042D20(Object *obj, Object_Racer *racer, s32 updateRate) { racer->unk209 |= 2; } if (racer->unk209 & 4) { - gCurrentRacerInput &= 0xFFFF7FFF; + gCurrentRacerInput &= ~A_BUTTON; } } else { racer->unk209 &= ~2; @@ -422,7 +422,7 @@ void func_80042D20(Object *obj, Object_Racer *racer, s32 updateRate) { } } if (racer->unk209 & 4) { - gCurrentRacerInput &= 0xFFFF7FFF; + gCurrentRacerInput &= ~A_BUTTON; } if (racer->unk1C6 == 0) { if (racer->unk1C9 == 4 || racer->unk1C9 == 5) { @@ -516,7 +516,7 @@ void func_80042D20(Object *obj, Object_Racer *racer, s32 updateRate) { if (racer->raceFinished != FALSE) { racer->boostTimer = 0; racer->unk213 = 0; - gCurrentRacerInput &= 0xFFFF7FFF; + gCurrentRacerInput &= ~A_BUTTON; gCurrentRacerInput |= B_BUTTON; if (racer->velocity > -0.3) { gCurrentRacerInput |= A_BUTTON; @@ -592,7 +592,7 @@ void increment_ai_behaviour_chances(Object *obj, Object_Racer *racer, s32 update } else { sBalloonLevelAI = 0; } - test = (s8 *) get_misc_asset(MISC_ASSET_UNK0C); + test = (s8 *) get_misc_asset(ASSET_MISC_12); if ((gCurrentButtonsReleased & Z_TRIG) && racer->balloon_quantity) { if (racer->balloon_level < 3) { balloonType = test[racer->balloon_type * 3 + racer->balloon_level]; @@ -1078,7 +1078,7 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r var_f18 = 0.0f; } if (var_a3_2 != 0) { - temp_f0 = ((f32 *) get_misc_asset(MISC_ASSET_UNK20))[var_a3_2]; + temp_f0 = ((f32 *) get_misc_asset(ASSET_MISC_32))[var_a3_2]; var_f18 *= temp_f0; spFC /= temp_f0; racer->magnetTimer = 0; @@ -1347,7 +1347,7 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r } } if (gCurrentPlayerIndex != PLAYER_COMPUTER && racer->boostTimer == 0 && gNumViewports < 2) { - asset20 = &((Asset20 *) get_misc_asset(MISC_ASSET_UNK14))[racer->unk2]; + asset20 = &((Asset20 *) get_misc_asset(ASSET_MISC_20))[racer->unk2]; i = ((racer->boostType & EMPOWER_BOOST) >> 2) + 10; if (i > 10) { if (asset20->unk70 > 0 || asset20->unk74 > 0.0) { @@ -2306,15 +2306,15 @@ void update_player_racer(Object *obj, s32 updateRate) { } else { tempRacer->unk18C = 0; } - gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(MISC_RACER_WEIGHT); + gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(ASSET_MISC_RACER_WEIGHT); gCurrentRacerWeightStat = gCurrentRacerMiscAssetPtr[tempRacer->characterId] * 0.45; if (tempRacer->bubbleTrapTimer > 0) { gCurrentRacerWeightStat = -0.02f; } - gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(MISC_RACER_HANDLING); + gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(ASSET_MISC_RACER_HANDLING); gCurrentRacerHandlingStat = gCurrentRacerMiscAssetPtr[tempRacer->characterId]; - gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(MISC_ASSET_UNK0B); - D_8011D574 = gCurrentRacerMiscAssetPtr[tempRacer->characterId]; + gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(ASSET_MISC_RACER_UNUSED_11); + gCurrentRacerUnusedMiscAsset11 = gCurrentRacerMiscAssetPtr[tempRacer->characterId]; if (tempRacer->unk1FE == 3) { gCurrentRacerWeightStat *= (f32) tempRacer->unk1FF / 256; } @@ -2655,7 +2655,7 @@ void update_player_racer(Object *obj, s32 updateRate) { if (tempRacer->unk150 && gRaceStartTimer == 0) { s8 *yAsset; tempRacer->unk150->segment.trans.x_position = obj->segment.trans.x_position; - yAsset = (s8 *) get_misc_asset(MISC_ASSET_UNK00); + yAsset = (s8 *) get_misc_asset(ASSET_MISC_0); tempRacer->unk150->segment.trans.y_position = obj->segment.trans.y_position + yAsset[tempRacer->characterId]; tempRacer->unk150->segment.trans.z_position = obj->segment.trans.z_position; @@ -2917,7 +2917,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } // Handle drifting if (racer->drifting) { - gCurrentRacerInput = (gCurrentRacerInput & 0xFFFF7FFF); + gCurrentRacerInput &= ~A_BUTTON; gCurrentRacerInput |= B_BUTTON; gCurrentStickY = -70; sp60 = TRUE; @@ -3104,7 +3104,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR if (surfaceType == SURFACE_SAND && racer->velocity < -2.0 && racer->raceFinished == FALSE) { func_80072348(racer->playerIndex, 0); } - miscAsset = (f32 *) get_misc_asset(MISC_ASSET_UNK08); + miscAsset = (f32 *) get_misc_asset(ASSET_MISC_8); // Degrade lateral velocity if (gCurrentPlayerIndex != PLAYER_COMPUTER) { if (!(racer->velocity > -2.0) && racer->drift_direction == 0 && !racer->raceFinished) { @@ -3132,7 +3132,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR racer->lateral_velocity *= tempVel; gCurrentSurfaceType = surfaceType; if (stoneWheels != 0) { - miscAsset = (f32 *) get_misc_asset(MISC_ASSET_UNK20); + miscAsset = (f32 *) get_misc_asset(ASSET_MISC_32); topSpeed *= miscAsset[stoneWheels]; racer->magnetTimer = 0; racer->lateral_velocity = 0.0f; @@ -3282,7 +3282,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR if (gCurrentPlayerIndex != PLAYER_COMPUTER) { if (racer->wheel_surfaces[0] != SURFACE_NONE) { D_8011D550 = D_800DCCCC[racer->wheel_surfaces[0]]; - *((s16*) &D_8011D552) = racer->unk1E0; // necessary because a different function expects a char. + *((s16 *) &D_8011D552) = racer->unk1E0; // necessary because a different function expects a char. racer->unk1E0 = 0; } } @@ -3410,7 +3410,7 @@ void func_8005250C(Object* obj, Object_Racer* racer, s32 updateRate) { angleVel = 0; if (racer->balloon_quantity > 0) { - balloonAsset = (s8 *) get_misc_asset(MISC_ASSET_UNK0C); + balloonAsset = (s8 *) get_misc_asset(ASSET_MISC_12); angleVel = balloonAsset[(racer->balloon_type * 10) + (racer->balloon_level * 2)]; } @@ -4243,7 +4243,7 @@ void onscreen_ai_racer_physics(Object *obj, Object_Racer *racer, UNUSED s32 upda if (obj->segment.trans.y_position > gCurrentCourseHeight) { obj->segment.trans.y_position = gCurrentCourseHeight; } - racerSize = (f32 *) get_misc_asset(MISC_ASSET_RACER_HITBOX_SIZE); + racerSize = (f32 *) get_misc_asset(ASSET_MISC_RACER_HITBOX_SIZE); surface = SURFACE_NONE; radius = racerSize[racer->vehicleIDPrev]; tempPos.x = obj->segment.trans.x_position; @@ -4393,7 +4393,7 @@ void handle_racer_items(Object *obj, Object_Racer *racer, UNUSED s32 updateRate) play_char_horn_sound(obj, racer); } } else { - miscAsset = (s8 *) get_misc_asset(MISC_ASSET_UNK0C); + miscAsset = (s8 *) get_misc_asset(ASSET_MISC_12); weaponID = miscAsset[(racer->balloon_type * 10) + (racer->balloon_level * 2)]; if (miscAsset[(racer->balloon_type * 10) + (racer->balloon_level * 2)] == WEAPON_NONE) { racer->balloon_quantity = 0; @@ -5839,15 +5839,15 @@ void update_AI_racer(Object *obj, Object_Racer *racer, s32 updateRate, f32 updat } else { racer->unk18C = 0; } - gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(MISC_RACER_WEIGHT); + gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(ASSET_MISC_RACER_WEIGHT); gCurrentRacerWeightStat = gCurrentRacerMiscAssetPtr[racer->characterId] * 0.45; if (racer->bubbleTrapTimer > 0) { gCurrentRacerWeightStat = -0.02f; } - gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(MISC_RACER_HANDLING); + gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(ASSET_MISC_RACER_HANDLING); gCurrentRacerHandlingStat = gCurrentRacerMiscAssetPtr[racer->characterId]; - gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(MISC_ASSET_UNK0B); - D_8011D574 = gCurrentRacerMiscAssetPtr[racer->characterId]; + gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(ASSET_MISC_RACER_UNUSED_11); + gCurrentRacerUnusedMiscAsset11 = gCurrentRacerMiscAssetPtr[racer->characterId]; xPos = obj->segment.trans.x_position; yPos = obj->segment.trans.y_position; zPos = obj->segment.trans.z_position; @@ -5923,7 +5923,7 @@ void update_AI_racer(Object *obj, Object_Racer *racer, s32 updateRate, f32 updat racer->unk88 -= racer->unk88 * 0.0625 * updateRateF; } gCurrentRacerHandlingStat = 1; - gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(MISC_ASSET_UNK21); + gCurrentRacerMiscAssetPtr = (f32 *) get_misc_asset(ASSET_MISC_RACERSTATS_UNKNOWN0); D_8011D568 = (f32 *) get_misc_asset(obj->segment.header->unk5D); if ((obj->segment.y_velocity < 4.0) && ((racer->groundedWheels >= 3) || (racer->buoyancy != 0.0))) { racer->unk1F1 = 0; @@ -6076,7 +6076,7 @@ void update_AI_racer(Object *obj, Object_Racer *racer, s32 updateRate, f32 updat if ((racer->unk150 != NULL) && (gRaceStartTimer == 0)) { s8 *temp; racer->unk150->segment.trans.x_position = obj->segment.trans.x_position; - temp = (s8 *) get_misc_asset(MISC_ASSET_UNK00); + temp = (s8 *) get_misc_asset(ASSET_MISC_0); racer->unk150->segment.trans.y_position = obj->segment.trans.y_position + temp[racer->characterId]; racer->unk150->segment.trans.z_position = obj->segment.trans.z_position; racer->unk150->segment.trans.scale = obj->segment.object.distanceToCamera / 265.0f; @@ -6138,7 +6138,7 @@ void func_8005B818(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR CheckpointNode *checkpoint; s32 i; - gCurrentRacerMiscAssetPtr = get_misc_asset(MISC_ASSET_UNK21); + gCurrentRacerMiscAssetPtr = get_misc_asset(ASSET_MISC_RACERSTATS_UNKNOWN0); levelHeader = get_current_level_header(); sp11C = get_checkpoint_count(); if (sp11C != 0) { diff --git a/src/thread3_main.c b/src/thread3_main.c index 29baad00..89671a51 100644 --- a/src/thread3_main.c +++ b/src/thread3_main.c @@ -1150,7 +1150,7 @@ void clear_lap_records(Settings *settings, s32 flags) { u16 *temp_v0; get_number_of_levels_and_worlds(&numLevels, &numWorlds); - temp_v0 = (u16 *) get_misc_asset(MISC_ASSET_UNK17); + temp_v0 = (u16 *) get_misc_asset(ASSET_MISC_23); for (i = 0; i < NUMBER_OF_SAVE_FILES; i++) { for (j = 0; j < numLevels; j++) { index = (j * 12) + (i * 4); diff --git a/tools/Flips b/tools/Flips new file mode 160000 index 00000000..fdd5c6e3 --- /dev/null +++ b/tools/Flips @@ -0,0 +1 @@ +Subproject commit fdd5c6e34285beef5b9be759c9b91390df486c66 diff --git a/tools/Makefile b/tools/Makefile index fd2cc523..97165c8d 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -16,10 +16,13 @@ default: all n64crc_SOURCES := n64crc.c -all: $(PROGRAMS) +all: $(PROGRAMS) recomp flips +# make clean for flips doesn't work, so just manually delete it on a clean. clean: rm -Rf $(PROGRAMS) $(BUILD_DIR) + @make -C ido-static-recomp clean VERSION=5.3 + rm -f Flips/flips distclean: clean @@ -44,5 +47,14 @@ $(BUILD_DIR)/%.o: %.cpp dkr_assets_tool: $(dkr_assets_tool_OBJ_FILES) $(CXX) $^ -o $@ $(CXXFLAGS) $(LDFLAGS) -lpthread +#recomp likes to echo some strings on all calls to make, the >/dev/null will silence them. +recomp: + @make -C ido-static-recomp VERSION=5.3 RELEASE=1 setup >/dev/null + @make -C ido-static-recomp VERSION=5.3 RELEASE=1 >/dev/null + +#Builds the CLI only version of flips. It will complain about it being debug, but this makes it much faster compile. +flips: + @make -s -C Flips TARGET=cli + .PHONY: all clean distclean default diff --git a/tools/ido-static-recomp b/tools/ido-static-recomp index d14d08e5..461f6b5f 160000 --- a/tools/ido-static-recomp +++ b/tools/ido-static-recomp @@ -1 +1 @@ -Subproject commit d14d08e5aecd97a5e4ecafc3937b4e81f257c165 +Subproject commit 461f6b5f14606655bc0abd1c92f2508f60b1417c diff --git a/tools/python/first_diff.py b/tools/python/first_diff.py index 879e66aa..fa68016a 100644 --- a/tools/python/first_diff.py +++ b/tools/python/first_diff.py @@ -35,7 +35,7 @@ if args.make: check_call(["ninja", "baseroms/dkr.z64"]) baseimg = f"baseroms/dkr.z64" -basemap = f"expected/build//us_1.0/dkr.map" +basemap = f"expected/build/us_1.0/dkr.map" myimg = f"build/us_1.0/dkr.z64" mymap = f"build/us_1.0/dkr.map"