diff --git a/.gitmodules b/.gitmodules index e302c97b..8c18c84a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "tools/ido-static-recomp"] path = tools/ido-static-recomp - url = https://github.com/Emill/ido-static-recomp + url = https://github.com/decompals/ido-static-recomp diff --git a/Makefile b/Makefile index 338d7afd..531e1472 100755 --- a/Makefile +++ b/Makefile @@ -18,6 +18,9 @@ endif ifeq ($(NON_MATCHING),1) DEFINES += NON_MATCHING=1 endif +ifeq ($(NON_EQUIVALENT),1) + DEFINES += NON_EQUIVALENT=1 +endif # Whether to hide commands or not VERBOSE ?= 0 @@ -87,7 +90,7 @@ $(foreach p,$(RECOMP_TOOLS_PATHS),$(if $(wildcard $(p)),,$(info $(p) does not ex # If any of the tools do not exist, then recomp needs to run to build them. ifeq ($(runRecomp),yes) - DUMMY != cd $(RECOMP_PROJECT) && python3 build.py ido/5.3 -O2 && cd ../../ >&2 || echo FAIL + DUMMY != cd $(RECOMP_PROJECT) && python3 build.py ido/5.3 -O2 && cp build5.3/out/usr/bin/cc build5.3/out/cc && cp build5.3/out/usr/lib/* build5.3/out/ && cd ../../ >&2 || echo FAIL endif ######## Extract Assets & Microcode ######## @@ -144,16 +147,19 @@ else endif MIPSISET := -mips1 -OPT_FLAGS := -O2 +OPT_FLAGS := -O2 -Xfullwarn #include -Xfullwarn here since it's not supported with -O3 INCLUDE_DIRS := include $(BUILD_DIR) $(BUILD_DIR)/include src include/libc . C_DEFINES := $(foreach d,$(DEFINES),-D$(d)) DEF_INC_CFLAGS := $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(C_DEFINES) + +#IDO Warnings to Ignore. These are coding style warnings we don't follow +IDO_IGNORE_WARNINGS = -woff 838,649,624 ASFLAGS = -mtune=vr4300 -march=vr4300 -mabi=32 $(foreach d,$(DEFINES),--defsym $(d)) INCLUDE_CFLAGS := -I include -I $(BUILD_DIR) -I src -I . -I include/libc -CFLAGS = -c -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm -Xfullwarn -signed -DNDEBUG $(OPT_FLAGS) $(MIPSISET) $(INCLUDE_CFLAGS) $(DEF_INC_CFLAGS) +CFLAGS = -c -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm -signed -DNDEBUG $(OPT_FLAGS) $(MIPSISET) $(INCLUDE_CFLAGS) $(DEF_INC_CFLAGS) $(IDO_IGNORE_WARNINGS) LDFLAGS = undefined_syms.txt -T $(LD_SCRIPT) -Map $(BUILD_DIR)/dkr.map ####################### Other Tools ######################### @@ -308,14 +314,14 @@ ALL_ASSETS_BUILT += $(patsubst $(UCODE_IN_DIR)/%.bin,$(UCODE_OUT_DIR)/%.bin,$(UC ####################### LIBULTRA ######################### -$(BUILD_DIR)/lib/%.o: OPT_FLAGS := -O2 +$(BUILD_DIR)/lib/%.o: OPT_FLAGS := -O2 -Xfullwarn $(BUILD_DIR)/lib/src/al/%.o: OPT_FLAGS := -O3 -$(BUILD_DIR)/lib/src/os/%.o: OPT_FLAGS := -O1 -$(BUILD_DIR)/lib/src/os/osViMgr.o: OPT_FLAGS := -O2 -$(BUILD_DIR)/lib/src/os/osCreatePiManager.o: OPT_FLAGS := -O2 -$(BUILD_DIR)/lib/src/os/osMotor.o: OPT_FLAGS := -O2 +$(BUILD_DIR)/lib/src/os/%.o: OPT_FLAGS := -O1 -Xfullwarn +$(BUILD_DIR)/lib/src/os/osViMgr.o: OPT_FLAGS := -O2 -Xfullwarn +$(BUILD_DIR)/lib/src/os/osCreatePiManager.o: OPT_FLAGS := -O2 -Xfullwarn +$(BUILD_DIR)/lib/src/os/osMotor.o: OPT_FLAGS := -O2 -Xfullwarn $(BUILD_DIR)/lib/src/libc/xprintf.o : OPT_FLAGS := -O3 -$(BUILD_DIR)/lib/src/al/unknown_0C9C90.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0 +$(BUILD_DIR)/lib/src/al/unknown_0C9C90.o: OPT_FLAGS := -O2 -Xfullwarn -Wo,-loopunroll,0 #$(BUILD_DIR)/lib/src/libc/llcvt.o: OPT_FLAGS := #$(BUILD_DIR)/lib/src/libc/llcvt.o: MIPSISET := -mips3 32 @@ -324,7 +330,7 @@ $(BUILD_DIR)/lib/src/mips1/%.o: MIPSISET := -mips1 $(BUILD_DIR)/lib/src/os/osMotor.o: MIPSISET := -mips1 # asm-processor currently does not support -O3, so this is my workaround. -$(BUILD_DIR)/lib/src/al/global_asm/%.o: OPT_FLAGS := -O2 +$(BUILD_DIR)/lib/src/al/global_asm/%.o: OPT_FLAGS := -O2 -Xfullwarn ######################## Targets ############################# @@ -487,12 +493,12 @@ $(BUILD_DIR)/%.o: %.s | $(ALL_ASSETS_BUILT) $(BUILD_DIR)/%.o: %.c | $(ALL_ASSETS_BUILT) $(call print,Compiling:,$<,$@) @$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $< - $(V)$(CC) -c $(CFLAGS) -o $@ $< + $(V)$(CC) $(CFLAGS) -o $@ $< $(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c | $(ALL_ASSETS_BUILT) $(call print,Compiling:,$<,$@) @$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $< - $(V)$(CC) -c $(CFLAGS) -o $@ $< + $(V)$(CC) $(CFLAGS) -o $@ $< $(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) | $(ALL_ASSETS_BUILT) $(call print,Preprocessing linker script:,$<,$@) diff --git a/README.md b/README.md index 64eeb4da..abc18124 100755 --- a/README.md +++ b/README.md @@ -113,31 +113,31 @@ s32 is_drumstick_unlocked(void) { } ``` -As of Feburary 8th, 2022, this is our current score: +As of Feburary 23rd, 2022, this is our current score: ``` ===================================================================== ADVENTURE ONE (ASM -> C Decompilation) - -------------------------- 20.02% Complete -------------------------- - # Decompiled functions: 1026 - # GLOBAL_ASM remaining: 722 - # NON_MATCHING functions: 3 - # NON_EQUIVALENT WIP functions: 93 + -------------------------- 21.15% Complete -------------------------- + # Decompiled functions: 1048 + # GLOBAL_ASM remaining: 699 + # NON_MATCHING functions: 6 + # NON_EQUIVALENT WIP functions: 91 ---------------------------- Game Status ---------------------------- Balloons: 11/47, Keys: 1/4, Trophies: 0/5 T.T. Amulets: 1/4, Wizpig Amulets: 0/4 --------------------------------------------------------------------- - We are collecting silver coins in Hot Top Volcano. (1/8 silver coins) + We are collecting silver coins in Hot Top Volcano. (8/8 silver coins) ===================================================================== ADVENTURE TWO (Cleanup & Documentation) - -------------------------- 2.54% Complete -------------------------- - # Documented functions: 134 - # Undocumented remaining: 1614 + -------------------------- 2.73% Complete -------------------------- + # Documented functions: 141 + # Undocumented remaining: 1606 ---------------------------- Game Status ---------------------------- Balloons: 1/47, Keys: 0/4, Trophies: 0/5 T.T. Amulets: 0/4, Wizpig Amulets: 0/4 --------------------------------------------------------------------- We are collecting the second balloon on Timber's Island. - ===================================================================== + ===================================================================== ``` --- diff --git a/asm/non_matchings/game/func_8006A6B0.s b/asm/non_matchings/game/func_8006A6B0.s index 3328c7b4..2eb5bcc8 100644 --- a/asm/non_matchings/game/func_8006A6B0.s +++ b/asm/non_matchings/game/func_8006A6B0.s @@ -233,8 +233,8 @@ glabel func_8006A6B0 /* 06B614 8006AA14 AFA70050 */ sw $a3, 0x50($sp) /* 06B618 8006AA18 0C01C327 */ jal allocate_from_main_pool_safe /* 06B61C 8006AA1C 34A500FF */ ori $a1, (0xFFFF00FF & 0xFFFF) # ori $a1, $a1, 0xff -/* 06B620 8006AA20 3C038012 */ lui $v1, %hi(D_8012116C) # $v1, 0x8012 -/* 06B624 8006AA24 2463116C */ addiu $v1, %lo(D_8012116C) # addiu $v1, $v1, 0x116c +/* 06B620 8006AA20 3C038012 */ lui $v1, %hi(gLevelNames) # $v1, 0x8012 +/* 06B624 8006AA24 2463116C */ addiu $v1, %lo(gLevelNames) # addiu $v1, $v1, 0x116c /* 06B628 8006AA28 8FA40050 */ lw $a0, 0x50($sp) /* 06B62C 8006AA2C 3C05FFFF */ lui $a1, (0xFFFF00FF >> 16) # lui $a1, 0xffff /* 06B630 8006AA30 AC620000 */ sw $v0, ($v1) @@ -248,8 +248,8 @@ glabel func_8006A6B0 /* 06B650 8006AA50 00402825 */ move $a1, $v0 /* 06B654 8006AA54 0C01DB9A */ jal load_asset_to_address /* 06B658 8006AA58 00003025 */ move $a2, $zero -/* 06B65C 8006AA5C 3C038012 */ lui $v1, %hi(D_8012116C) # $v1, 0x8012 -/* 06B660 8006AA60 2463116C */ addiu $v1, %lo(D_8012116C) # addiu $v1, $v1, 0x116c +/* 06B65C 8006AA5C 3C038012 */ lui $v1, %hi(gLevelNames) # $v1, 0x8012 +/* 06B660 8006AA60 2463116C */ addiu $v1, %lo(gLevelNames) # addiu $v1, $v1, 0x116c /* 06B664 8006AA64 1A200035 */ blez $s1, .L8006AB3C /* 06B668 8006AA68 00003825 */ move $a3, $zero /* 06B66C 8006AA6C 32250003 */ andi $a1, $s1, 3 diff --git a/asm/non_matchings/game_ui/func_800A277C.s b/asm/non_matchings/game_ui/func_800A277C.s index 12dc2f5f..1a2193ae 100644 --- a/asm/non_matchings/game_ui/func_800A277C.s +++ b/asm/non_matchings/game_ui/func_800A277C.s @@ -55,7 +55,7 @@ glabel func_800A277C /* 0A33DC 800A27DC AFA900A8 */ sw $t1, 0xa8($sp) /* 0A33E0 800A27E0 27A40090 */ addiu $a0, $sp, 0x90 /* 0A33E4 800A27E4 00002825 */ move $a1, $zero -/* 0A33E8 800A27E8 0C003A95 */ jal func_8000EA54 +/* 0A33E8 800A27E8 0C003A95 */ jal spawn_object /* 0A33EC 800A27EC A3AB0090 */ sb $t3, 0x90($sp) /* 0A33F0 800A27F0 8E0D0000 */ lw $t5, ($s0) /* 0A33F4 800A27F4 8FA900A8 */ lw $t1, 0xa8($sp) @@ -90,7 +90,7 @@ glabel func_800A277C /* 0A3464 800A2864 AFA900A8 */ sw $t1, 0xa8($sp) /* 0A3468 800A2868 27A40088 */ addiu $a0, $sp, 0x88 /* 0A346C 800A286C 00002825 */ move $a1, $zero -/* 0A3470 800A2870 0C003A95 */ jal func_8000EA54 +/* 0A3470 800A2870 0C003A95 */ jal spawn_object /* 0A3474 800A2874 A3AB0088 */ sb $t3, 0x88($sp) /* 0A3478 800A2878 8E0D0000 */ lw $t5, ($s0) /* 0A347C 800A287C 8FA900A8 */ lw $t1, 0xa8($sp) @@ -477,7 +477,7 @@ glabel func_800A277C /* 0A3A14 800A2E14 AFA800BC */ sw $t0, 0xbc($sp) /* 0A3A18 800A2E18 27A500B4 */ addiu $a1, $sp, 0xb4 /* 0A3A1C 800A2E1C 27A600B0 */ addiu $a2, $sp, 0xb0 -/* 0A3A20 800A2E20 0C0165E4 */ jal func_80059790 +/* 0A3A20 800A2E20 0C0165E4 */ jal get_timestamp_from_frames /* 0A3A24 800A2E24 27A700AC */ addiu $a3, $sp, 0xac /* 0A3A28 800A2E28 8FAC003C */ lw $t4, 0x3c($sp) /* 0A3A2C 800A2E2C 3C01800E */ lui $at, %hi(D_800E2834) # $at, 0x800e diff --git a/asm/non_matchings/game_ui/func_800A6254.s b/asm/non_matchings/game_ui/func_800A6254.s index 83db5620..b0d63651 100644 --- a/asm/non_matchings/game_ui/func_800A6254.s +++ b/asm/non_matchings/game_ui/func_800A6254.s @@ -437,7 +437,7 @@ glabel L800A63D8 .L800A6890: /* 0A7490 800A6890 27A50040 */ addiu $a1, $sp, 0x40 /* 0A7494 800A6894 27A70038 */ addiu $a3, $sp, 0x38 -/* 0A7498 800A6898 0C0165E4 */ jal func_80059790 +/* 0A7498 800A6898 0C0165E4 */ jal get_timestamp_from_frames /* 0A749C 800A689C AFA80048 */ sw $t0, 0x48($sp) /* 0A74A0 800A68A0 3C098012 */ lui $t1, %hi(D_80126CDC) # $t1, 0x8012 /* 0A74A4 800A68A4 25296CDC */ addiu $t1, %lo(D_80126CDC) # addiu $t1, $t1, 0x6cdc @@ -454,7 +454,7 @@ glabel L800A63D8 /* 0A74D0 800A68D0 27A70038 */ addiu $a3, $sp, 0x38 /* 0A74D4 800A68D4 A30F02FC */ sb $t7, 0x2fc($t8) /* 0A74D8 800A68D8 8FA40048 */ lw $a0, 0x48($sp) -/* 0A74DC 800A68DC 0C0165E4 */ jal func_80059790 +/* 0A74DC 800A68DC 0C0165E4 */ jal get_timestamp_from_frames /* 0A74E0 800A68E0 00000000 */ nop /* 0A74E4 800A68E4 3C098012 */ lui $t1, %hi(D_80126CDC) # $t1, 0x8012 /* 0A74E8 800A68E8 25296CDC */ addiu $t1, %lo(D_80126CDC) # addiu $t1, $t1, 0x6cdc diff --git a/asm/non_matchings/game_ui/func_800A7B68.s b/asm/non_matchings/game_ui/func_800A7B68.s index 6e2c6c01..0c75c988 100644 --- a/asm/non_matchings/game_ui/func_800A7B68.s +++ b/asm/non_matchings/game_ui/func_800A7B68.s @@ -130,7 +130,7 @@ glabel func_800A7B68 /* 0A8948 800A7D48 27A50054 */ addiu $a1, $sp, 0x54 /* 0A894C 800A7D4C 27A60050 */ addiu $a2, $sp, 0x50 /* 0A8950 800A7D50 27A7004C */ addiu $a3, $sp, 0x4c -/* 0A8954 800A7D54 0C0165E4 */ jal func_80059790 +/* 0A8954 800A7D54 0C0165E4 */ jal get_timestamp_from_frames /* 0A8958 800A7D58 AFA90044 */ sw $t1, 0x44($sp) /* 0A895C 800A7D5C 8FB80048 */ lw $t8, 0x48($sp) /* 0A8960 800A7D60 8FA90044 */ lw $t1, 0x44($sp) diff --git a/asm/non_matchings/game_ui/func_800AA600.s b/asm/non_matchings/game_ui/func_800AA600.s index 16013755..f0e2152d 100644 --- a/asm/non_matchings/game_ui/func_800AA600.s +++ b/asm/non_matchings/game_ui/func_800AA600.s @@ -93,7 +93,7 @@ glabel func_800AA600 /* 0AB33C 800AA73C A3B8009D */ sb $t8, 0x9d($sp) /* 0AB340 800AA740 A7A000A0 */ sh $zero, 0xa0($sp) /* 0AB344 800AA744 A7A000A2 */ sh $zero, 0xa2($sp) -/* 0AB348 800AA748 0C003A95 */ jal func_8000EA54 +/* 0AB348 800AA748 0C003A95 */ jal spawn_object /* 0AB34C 800AA74C 00002825 */ move $a1, $zero /* 0AB350 800AA750 3C098012 */ lui $t1, %hi(D_80126CF4) # $t1, 0x8012 /* 0AB354 800AA754 860B0006 */ lh $t3, 6($s0) diff --git a/asm/non_matchings/main/func_80065D98.s b/asm/non_matchings/main/func_80065D98.s deleted file mode 100644 index 8bf6f38f..00000000 --- a/asm/non_matchings/main/func_80065D98.s +++ /dev/null @@ -1,40 +0,0 @@ -glabel func_80065D98 -/* 066998 80065D98 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 06699C 80065D9C AFBF001C */ sw $ra, 0x1c($sp) -/* 0669A0 80065DA0 0C02DBD4 */ jal func_800B6F50 -/* 0669A4 80065DA4 AFA40020 */ sw $a0, 0x20($sp) -/* 0669A8 80065DA8 3C0E8012 */ lui $t6, %hi(gThread3StackPointer) # $t6, 0x8012 -/* 0669AC 80065DAC 25CEF758 */ addiu $t6, %lo(gThread3StackPointer) # addiu $t6, $t6, -0x8a8 -/* 0669B0 80065DB0 3C048012 */ lui $a0, %hi(gThread3) # $a0, 0x8012 -/* 0669B4 80065DB4 3C068007 */ lui $a2, %hi(thread3_main) # $a2, 0x8007 -/* 0669B8 80065DB8 240F000A */ li $t7, 10 -/* 0669BC 80065DBC AFAF0014 */ sw $t7, 0x14($sp) -/* 0669C0 80065DC0 24C6C330 */ addiu $a2, %lo(thread3_main) # addiu $a2, $a2, -0x3cd0 -/* 0669C4 80065DC4 2484F910 */ addiu $a0, %lo(gThread3) # addiu $a0, $a0, -0x6f0 -/* 0669C8 80065DC8 AFAE0010 */ sw $t6, 0x10($sp) -/* 0669CC 80065DCC 24050003 */ li $a1, 3 -/* 0669D0 80065DD0 0C032214 */ jal osCreateThread -/* 0669D4 80065DD4 00003825 */ move $a3, $zero -/* 0669D8 80065DD8 3C028012 */ lui $v0, %hi(D_8011D758) # $v0, 0x8012 -/* 0669DC 80065DDC 2442D758 */ addiu $v0, %lo(D_8011D758) # addiu $v0, $v0, -0x28a8 -/* 0669E0 80065DE0 24180000 */ li $t8, 0 -/* 0669E4 80065DE4 24190000 */ li $t9, 0 -/* 0669E8 80065DE8 24080000 */ li $t0, 0 -/* 0669EC 80065DEC 24090000 */ li $t1, 0 -/* 0669F0 80065DF0 3C048012 */ lui $a0, %hi(gThread3) # $a0, 0x8012 -/* 0669F4 80065DF4 AC592004 */ sw $t9, 0x2004($v0) -/* 0669F8 80065DF8 AC582000 */ sw $t8, 0x2000($v0) -/* 0669FC 80065DFC AC490004 */ sw $t1, 4($v0) -/* 066A00 80065E00 AC480000 */ sw $t0, ($v0) -/* 066A04 80065E04 0C032268 */ jal osStartThread -/* 066A08 80065E08 2484F910 */ addiu $a0, %lo(gThread3) # addiu $a0, $a0, -0x6f0 -/* 066A0C 80065E0C 00002025 */ move $a0, $zero -/* 066A10 80065E10 0C033210 */ jal osSetThreadPri -/* 066A14 80065E14 00002825 */ move $a1, $zero -.L80065E18: -/* 066A18 80065E18 1000FFFF */ b .L80065E18 -/* 066A1C 80065E1C 00000000 */ nop -/* 066A20 80065E20 8FBF001C */ lw $ra, 0x1c($sp) -/* 066A24 80065E24 27BD0020 */ addiu $sp, $sp, 0x20 -/* 066A28 80065E28 03E00008 */ jr $ra -/* 066A2C 80065E2C 00000000 */ nop \ No newline at end of file diff --git a/asm/non_matchings/main/func_80065E30.s b/asm/non_matchings/main/func_80065E30.s deleted file mode 100644 index ae0cfe90..00000000 --- a/asm/non_matchings/main/func_80065E30.s +++ /dev/null @@ -1,31 +0,0 @@ -glabel func_80065E30 -/* 066A30 80065E30 3C028012 */ lui $v0, %hi(D_8011D758) # $v0, 0x8012 -/* 066A34 80065E34 2442D758 */ addiu $v0, %lo(D_8011D758) # addiu $v0, $v0, -0x28a8 -/* 066A38 80065E38 8C4F2004 */ lw $t7, 0x2004($v0) -/* 066A3C 80065E3C 8C4E2000 */ lw $t6, 0x2000($v0) -/* 066A40 80065E40 8C490004 */ lw $t1, 4($v0) -/* 066A44 80065E44 25F90001 */ addiu $t9, $t7, 1 -/* 066A48 80065E48 2F210001 */ sltiu $at, $t9, 1 -/* 066A4C 80065E4C 8C480000 */ lw $t0, ($v0) -/* 066A50 80065E50 01C1C021 */ addu $t8, $t6, $at -/* 066A54 80065E54 252B0001 */ addiu $t3, $t1, 1 -/* 066A58 80065E58 2D610001 */ sltiu $at, $t3, 1 -/* 066A5C 80065E5C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 066A60 80065E60 01015021 */ addu $t2, $t0, $at -/* 066A64 80065E64 AFBF0014 */ sw $ra, 0x14($sp) -/* 066A68 80065E68 AC582000 */ sw $t8, 0x2000($v0) -/* 066A6C 80065E6C AC592004 */ sw $t9, 0x2004($v0) -/* 066A70 80065E70 AC4A0000 */ sw $t2, ($v0) -/* 066A74 80065E74 170A0002 */ bne $t8, $t2, .L80065E80 -/* 066A78 80065E78 AC4B0004 */ sw $t3, 4($v0) -/* 066A7C 80065E7C 132B0003 */ beq $t9, $t3, .L80065E8C -.L80065E80: -/* 066A80 80065E80 3C04800E */ lui $a0, %hi(D_800E6ED0) # $a0, 0x800e -/* 066A84 80065E84 0C032755 */ jal rmonPrintf -/* 066A88 80065E88 24846ED0 */ addiu $a0, %lo(D_800E6ED0) # addiu $a0, $a0, 0x6ed0 -.L80065E8C: -/* 066A8C 80065E8C 8FBF0014 */ lw $ra, 0x14($sp) -/* 066A90 80065E90 27BD0018 */ addiu $sp, $sp, 0x18 -/* 066A94 80065E94 03E00008 */ jr $ra -/* 066A98 80065E98 00000000 */ nop -/* 066A9C 80065E9C 00000000 */ nop \ No newline at end of file diff --git a/asm/non_matchings/menu/draw_menu_elements.s b/asm/non_matchings/menu/draw_menu_elements.s index e6233292..0e0cd3cf 100644 --- a/asm/non_matchings/menu/draw_menu_elements.s +++ b/asm/non_matchings/menu/draw_menu_elements.s @@ -25,10 +25,10 @@ glabel draw_menu_elements /* 082E34 80082234 AFA40070 */ sw $a0, 0x70($sp) /* 082E38 80082238 1081018F */ beq $a0, $at, .L80082878 /* 082E3C 8008223C 0000A825 */ move $s5, $zero -/* 082E40 80082240 3C168012 */ lui $s6, %hi(D_801263A0) # $s6, 0x8012 -/* 082E44 80082244 26D663A0 */ addiu $s6, %lo(D_801263A0) # addiu $s6, $s6, 0x63a0 -/* 082E48 80082248 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 082E4C 8008224C 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 082E40 80082240 3C168012 */ lui $s6, %hi(sMenuCurrDisplayList) # $s6, 0x8012 +/* 082E44 80082244 26D663A0 */ addiu $s6, %lo(sMenuCurrDisplayList) # addiu $s6, $s6, 0x63a0 +/* 082E48 80082248 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 082E4C 8008224C 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 082E50 80082250 0C019FCB */ jal func_80067F2C /* 082E54 80082254 02C02025 */ move $a0, $s6 /* 082E58 80082258 8E110014 */ lw $s1, 0x14($s0) @@ -186,7 +186,7 @@ glabel L80082454 /* 083098 80082498 01093023 */ subu $a2, $t0, $t1 /* 08309C 8008249C 24C60078 */ addiu $a2, $a2, 0x78 /* 0830A0 800824A0 2645FF60 */ addiu $a1, $s2, -0xa0 -/* 0830A4 800824A4 0C020600 */ jal func_80081800 +/* 0830A4 800824A4 0C020600 */ jal show_timestamp /* 0830A8 800824A8 AFAC0018 */ sw $t4, 0x18($sp) /* 0830AC 800824AC 8FA40070 */ lw $a0, 0x70($sp) /* 0830B0 800824B0 100000DE */ b .L8008282C diff --git a/asm/non_matchings/menu/func_80083098.s b/asm/non_matchings/menu/func_80083098.s index fcb4f0fa..234a839f 100644 --- a/asm/non_matchings/menu/func_80083098.s +++ b/asm/non_matchings/menu/func_80083098.s @@ -42,10 +42,10 @@ glabel func_80083098 /* 083D38 80083138 00008825 */ move $s1, $zero /* 083D3C 8008313C 18800044 */ blez $a0, .L80083250 /* 083D40 80083140 3C108012 */ lui $s0, %hi(D_80126878) # $s0, 0x8012 -/* 083D44 80083144 3C168012 */ lui $s6, %hi(D_801263A0) # $s6, 0x8012 +/* 083D44 80083144 3C168012 */ lui $s6, %hi(sMenuCurrDisplayList) # $s6, 0x8012 /* 083D48 80083148 3C15800E */ lui $s5, %hi(D_800DF9F8) # $s5, 0x800e /* 083D4C 8008314C 26B5F9F8 */ addiu $s5, %lo(D_800DF9F8) # addiu $s5, $s5, -0x608 -/* 083D50 80083150 26D663A0 */ addiu $s6, %lo(D_801263A0) # addiu $s6, $s6, 0x63a0 +/* 083D50 80083150 26D663A0 */ addiu $s6, %lo(sMenuCurrDisplayList) # addiu $s6, $s6, 0x63a0 /* 083D54 80083154 26106878 */ addiu $s0, %lo(D_80126878) # addiu $s0, $s0, 0x6878 /* 083D58 80083158 24140005 */ li $s4, 5 .L8008315C: @@ -118,9 +118,9 @@ glabel func_80083098 /* 083E50 80083250 3C018012 */ lui $at, %hi(D_801268D8) # $at, 0x8012 /* 083E54 80083254 C43068D8 */ lwc1 $f16, %lo(D_801268D8)($at) /* 083E58 80083258 C6720004 */ lwc1 $f18, 4($s3) -/* 083E5C 8008325C 3C168012 */ lui $s6, %hi(D_801263A0) # $s6, 0x8012 +/* 083E5C 8008325C 3C168012 */ lui $s6, %hi(sMenuCurrDisplayList) # $s6, 0x8012 /* 083E60 80083260 4610903E */ c.le.s $f18, $f16 -/* 083E64 80083264 26D663A0 */ addiu $s6, %lo(D_801263A0) # addiu $s6, $s6, 0x63a0 +/* 083E64 80083264 26D663A0 */ addiu $s6, %lo(sMenuCurrDisplayList) # addiu $s6, $s6, 0x63a0 /* 083E68 80083268 4500008A */ bc1f .L80083494 /* 083E6C 8008326C 240500FF */ li $a1, 255 /* 083E70 80083270 C6680008 */ lwc1 $f8, 8($s3) diff --git a/asm/non_matchings/menu/func_8008377C.s b/asm/non_matchings/menu/func_8008377C.s index cee8d981..74b22e6e 100644 --- a/asm/non_matchings/menu/func_8008377C.s +++ b/asm/non_matchings/menu/func_8008377C.s @@ -15,10 +15,10 @@ glabel func_8008377C /* 0843B0 800837B0 AFB10028 */ sw $s1, 0x28($sp) /* 0843B4 800837B4 11C00073 */ beqz $t6, .L80083984 /* 0843B8 800837B8 AFA40058 */ sw $a0, 0x58($sp) -/* 0843BC 800837BC 3C168012 */ lui $s6, %hi(D_801263A0) # $s6, 0x8012 -/* 0843C0 800837C0 26D663A0 */ addiu $s6, %lo(D_801263A0) # addiu $s6, $s6, 0x63a0 -/* 0843C4 800837C4 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 0843C8 800837C8 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 0843BC 800837BC 3C168012 */ lui $s6, %hi(sMenuCurrDisplayList) # $s6, 0x8012 +/* 0843C0 800837C0 26D663A0 */ addiu $s6, %lo(sMenuCurrDisplayList) # addiu $s6, $s6, 0x63a0 +/* 0843C4 800837C4 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 0843C8 800837C8 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 0843CC 800837CC 0C019FCB */ jal func_80067F2C /* 0843D0 800837D0 02C02025 */ move $a0, $s6 /* 0843D4 800837D4 8E020000 */ lw $v0, ($s0) @@ -136,10 +136,10 @@ glabel func_8008377C /* 08457C 8008397C 1000000F */ b .L800839BC /* 084580 80083980 8FBF0044 */ lw $ra, 0x44($sp) .L80083984: -/* 084584 80083984 3C028012 */ lui $v0, %hi(D_80126874) # $v0, 0x8012 +/* 084584 80083984 3C028012 */ lui $v0, %hi(sTitleScreenDemoIds) # $v0, 0x8012 /* 084588 80083988 3C0D8012 */ lui $t5, %hi(D_80126864) # $t5, 0x8012 /* 08458C 8008398C 8DAD6864 */ lw $t5, %lo(D_80126864)($t5) -/* 084590 80083990 8C426874 */ lw $v0, %lo(D_80126874)($v0) +/* 084590 80083990 8C426874 */ lw $v0, %lo(sTitleScreenDemoIds)($v0) /* 084594 80083994 00000000 */ nop /* 084598 80083998 004D7021 */ addu $t6, $v0, $t5 /* 08459C 8008399C 81CF0000 */ lb $t7, ($t6) diff --git a/asm/non_matchings/menu/func_80084854.s b/asm/non_matchings/menu/func_80084854.s index 65f30c1a..5b989713 100644 --- a/asm/non_matchings/menu/func_80084854.s +++ b/asm/non_matchings/menu/func_80084854.s @@ -47,18 +47,18 @@ glabel func_80084854 /* 0854FC 800848FC 0006000D */ break 6 .L80084900: /* 085500 80084900 26310001 */ addiu $s1, $s1, 1 -/* 085504 80084904 3C128012 */ lui $s2, %hi(D_801263A0) # $s2, 0x8012 -/* 085508 80084908 265263A0 */ addiu $s2, %lo(D_801263A0) # addiu $s2, $s2, 0x63a0 +/* 085504 80084904 3C128012 */ lui $s2, %hi(sMenuCurrDisplayList) # $s2, 0x8012 +/* 085508 80084908 265263A0 */ addiu $s2, %lo(sMenuCurrDisplayList) # addiu $s2, $s2, 0x63a0 /* 08550C 8008490C 3C0F800E */ lui $t7, %hi(D_800DFAC8) # $t7, 0x800e /* 085510 80084910 00001012 */ mflo $v0 /* 085514 80084914 24590030 */ addiu $t9, $v0, 0x30 /* 085518 80084918 A1190000 */ sb $t9, ($t0) /* 08551C 8008491C 00440019 */ multu $v0, $a0 /* 085520 80084920 8CAB0000 */ lw $t3, ($a1) -/* 085524 80084924 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 +/* 085524 80084924 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 /* 085528 80084928 01716021 */ addu $t4, $t3, $s1 /* 08552C 8008492C 3C198012 */ lui $t9, %hi(gAudioOutputStrings) # $t9, 0x8012 -/* 085530 80084930 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 085530 80084930 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 085534 80084934 02402025 */ move $a0, $s2 /* 085538 80084938 00004812 */ mflo $t1 /* 08553C 8008493C 02699823 */ subu $s3, $s3, $t1 diff --git a/asm/non_matchings/menu/func_800853D0.s b/asm/non_matchings/menu/func_800853D0.s index 068e3208..d29cb677 100644 --- a/asm/non_matchings/menu/func_800853D0.s +++ b/asm/non_matchings/menu/func_800853D0.s @@ -317,7 +317,7 @@ glabel L80085828 /* 086458 80085858 8FA50084 */ lw $a1, 0x84($sp) .L8008585C: /* 08645C 8008585C 8FB90088 */ lw $t9, 0x88($sp) -/* 086460 80085860 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 086460 80085860 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 086464 80085864 240A0078 */ li $t2, 120 /* 086468 80085868 240B0040 */ li $t3, 64 /* 08646C 8008586C 240C0004 */ li $t4, 4 @@ -325,7 +325,7 @@ glabel L80085828 /* 086474 80085874 AFAE0018 */ sw $t6, 0x18($sp) /* 086478 80085878 AFAC0014 */ sw $t4, 0x14($sp) /* 08647C 8008587C AFAB0010 */ sw $t3, 0x10($sp) -/* 086480 80085880 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 086480 80085880 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 086484 80085884 240700A0 */ li $a3, 160 /* 086488 80085888 AFA9001C */ sw $t1, 0x1c($sp) /* 08648C 8008588C AFA80020 */ sw $t0, 0x20($sp) @@ -428,9 +428,9 @@ glabel L80085828 /* 086604 80085A04 00002025 */ move $a0, $zero /* 086608 80085A08 8FAA0068 */ lw $t2, 0x68($sp) .L80085A0C: -/* 08660C 80085A0C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08660C 80085A0C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 086610 80085A10 1140000F */ beqz $t2, .L80085A50 -/* 086614 80085A14 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 086614 80085A14 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 086618 80085A18 8FA60084 */ lw $a2, 0x84($sp) /* 08661C 80085A1C 8FA70088 */ lw $a3, 0x88($sp) /* 086620 80085A20 241900FF */ li $t9, 255 @@ -461,11 +461,11 @@ glabel L80085828 /* 086680 80085A80 240700FF */ li $a3, 255 /* 086684 80085A84 8FA50084 */ lw $a1, 0x84($sp) /* 086688 80085A88 8FA60088 */ lw $a2, 0x88($sp) -/* 08668C 80085A8C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08668C 80085A8C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 086690 80085A90 8FA70060 */ lw $a3, 0x60($sp) /* 086694 80085A94 2418000C */ li $t8, 12 /* 086698 80085A98 AFB80010 */ sw $t8, 0x10($sp) -/* 08669C 80085A9C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08669C 80085A9C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0866A0 80085AA0 24A50051 */ addiu $a1, $a1, 0x51 /* 0866A4 80085AA4 0C031110 */ jal draw_text /* 0866A8 80085AA8 24C60001 */ addiu $a2, $a2, 1 @@ -478,11 +478,11 @@ glabel L80085828 /* 0866C4 80085AC4 24070040 */ li $a3, 64 /* 0866C8 80085AC8 8FA50084 */ lw $a1, 0x84($sp) /* 0866CC 80085ACC 8FA60088 */ lw $a2, 0x88($sp) -/* 0866D0 80085AD0 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0866D0 80085AD0 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0866D4 80085AD4 8FA70060 */ lw $a3, 0x60($sp) /* 0866D8 80085AD8 2419000C */ li $t9, 12 /* 0866DC 80085ADC AFB90010 */ sw $t9, 0x10($sp) -/* 0866E0 80085AE0 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0866E0 80085AE0 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0866E4 80085AE4 24A5004F */ addiu $a1, $a1, 0x4f /* 0866E8 80085AE8 0C031110 */ jal draw_text /* 0866EC 80085AEC 24C6FFFF */ addiu $a2, $a2, -1 @@ -502,11 +502,11 @@ glabel L80085828 /* 086720 80085B20 240700FF */ li $a3, 255 /* 086724 80085B24 8FA50084 */ lw $a1, 0x84($sp) /* 086728 80085B28 8FA60088 */ lw $a2, 0x88($sp) -/* 08672C 80085B2C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08672C 80085B2C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 086730 80085B30 8FA70064 */ lw $a3, 0x64($sp) /* 086734 80085B34 240E0004 */ li $t6, 4 /* 086738 80085B38 AFAE0010 */ sw $t6, 0x10($sp) -/* 08673C 80085B3C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08673C 80085B3C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 086740 80085B40 24A50050 */ addiu $a1, $a1, 0x50 /* 086744 80085B44 0C031110 */ jal draw_text /* 086748 80085B48 24C60030 */ addiu $a2, $a2, 0x30 @@ -518,11 +518,11 @@ glabel L80085828 /* 086760 80085B60 0C0310E1 */ jal set_text_colour /* 086764 80085B64 240700FF */ li $a3, 255 /* 086768 80085B68 8FA60088 */ lw $a2, 0x88($sp) -/* 08676C 80085B6C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08676C 80085B6C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 086770 80085B70 8FA70064 */ lw $a3, 0x64($sp) /* 086774 80085B74 240F0004 */ li $t7, 4 /* 086778 80085B78 AFAF0010 */ sw $t7, 0x10($sp) -/* 08677C 80085B7C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08677C 80085B7C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 086780 80085B80 02002825 */ move $a1, $s0 /* 086784 80085B84 0C031110 */ jal draw_text /* 086788 80085B88 24C6002F */ addiu $a2, $a2, 0x2f diff --git a/asm/non_matchings/menu/func_80085B9C.s b/asm/non_matchings/menu/func_80085B9C.s index 13ef785b..e17beecb 100644 --- a/asm/non_matchings/menu/func_80085B9C.s +++ b/asm/non_matchings/menu/func_80085B9C.s @@ -50,12 +50,12 @@ glabel L80085C24 glabel L80085C30 /* 086830 80085C30 306F0008 */ andi $t7, $v1, 8 /* 086834 80085C34 11E00002 */ beqz $t7, .L80085C40 -/* 086838 80085C38 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 086838 80085C38 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08683C 80085C3C 24090001 */ li $t1, 1 .L80085C40: -/* 086840 80085C40 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 086844 80085C44 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 -/* 086848 80085C48 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 086840 80085C40 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 086844 80085C44 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 +/* 086848 80085C48 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08684C 80085C4C AFA6004C */ sw $a2, 0x4c($sp) /* 086850 80085C50 AFA70048 */ sw $a3, 0x48($sp) /* 086854 80085C54 AFA80044 */ sw $t0, 0x44($sp) @@ -77,11 +77,11 @@ glabel L80085C30 /* 086894 80085C94 240700FF */ li $a3, 255 /* 086898 80085C98 3C19800E */ lui $t9, %hi(gMenuText) # $t9, 0x800e /* 08689C 80085C9C 8F39F4A0 */ lw $t9, %lo(gMenuText)($t9) -/* 0868A0 80085CA0 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0868A0 80085CA0 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0868A4 80085CA4 240A000C */ li $t2, 12 /* 0868A8 80085CA8 8F270294 */ lw $a3, 0x294($t9) /* 0868AC 80085CAC AFAA0010 */ sw $t2, 0x10($sp) -/* 0868B0 80085CB0 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0868B0 80085CB0 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0868B4 80085CB4 240500A1 */ li $a1, 161 /* 0868B8 80085CB8 0C031110 */ jal draw_text /* 0868BC 80085CBC 24060023 */ li $a2, 35 @@ -94,11 +94,11 @@ glabel L80085C30 /* 0868D8 80085CD8 00003825 */ move $a3, $zero /* 0868DC 80085CDC 3C0C800E */ lui $t4, %hi(gMenuText) # $t4, 0x800e /* 0868E0 80085CE0 8D8CF4A0 */ lw $t4, %lo(gMenuText)($t4) -/* 0868E4 80085CE4 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0868E4 80085CE4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0868E8 80085CE8 240D000C */ li $t5, 12 /* 0868EC 80085CEC 8D870294 */ lw $a3, 0x294($t4) /* 0868F0 80085CF0 AFAD0010 */ sw $t5, 0x10($sp) -/* 0868F4 80085CF4 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0868F4 80085CF4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0868F8 80085CF8 240500A0 */ li $a1, 160 /* 0868FC 80085CFC 0C031110 */ jal draw_text /* 086900 80085D00 24060020 */ li $a2, 32 @@ -121,7 +121,7 @@ glabel L80085C30 /* 08693C 80085D3C 00195043 */ sra $t2, $t9, 1 /* 086940 80085D40 020A8021 */ addu $s0, $s0, $t2 .L80085D44: -/* 086944 80085D44 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 086944 80085D44 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 086948 80085D48 240B00FF */ li $t3, 255 /* 08694C 80085D4C 240C00FF */ li $t4, 255 /* 086950 80085D50 240D00FF */ li $t5, 255 @@ -130,7 +130,7 @@ glabel L80085C30 /* 08695C 80085D5C AFAD0018 */ sw $t5, 0x18($sp) /* 086960 80085D60 AFAC0014 */ sw $t4, 0x14($sp) /* 086964 80085D64 AFAB0010 */ sw $t3, 0x10($sp) -/* 086968 80085D68 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 086968 80085D68 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08696C 80085D6C 02202825 */ move $a1, $s1 /* 086970 80085D70 240600A0 */ li $a2, 160 /* 086974 80085D74 0C01E2AE */ jal render_textured_rectangle @@ -308,9 +308,9 @@ glabel L80085C30 /* 086BFC 80085FFC 0C0310E1 */ jal set_text_colour /* 086C00 80086000 00003825 */ move $a3, $zero /* 086C04 80086004 8FAF0044 */ lw $t7, 0x44($sp) -/* 086C08 80086008 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 086C08 80086008 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 086C0C 8008600C 11E00008 */ beqz $t7, .L80086030 -/* 086C10 80086010 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 086C10 80086010 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 086C14 80086014 3C07800F */ lui $a3, %hi(D_800E8208) # $a3, 0x800f /* 086C18 80086018 2418000C */ li $t8, 12 /* 086C1C 8008601C AFB80010 */ sw $t8, 0x10($sp) @@ -320,9 +320,9 @@ glabel L80085C30 /* 086C2C 8008602C 24060080 */ li $a2, 128 .L80086030: /* 086C30 80086030 8FAA0048 */ lw $t2, 0x48($sp) -/* 086C34 80086034 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 086C34 80086034 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 086C38 80086038 11400009 */ beqz $t2, .L80086060 -/* 086C3C 8008603C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 086C3C 8008603C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 086C40 80086040 3C19800E */ lui $t9, %hi(gMenuText) # $t9, 0x800e /* 086C44 80086044 8F39F4A0 */ lw $t9, %lo(gMenuText)($t9) /* 086C48 80086048 240B000C */ li $t3, 12 @@ -333,9 +333,9 @@ glabel L80085C30 /* 086C5C 8008605C 24060080 */ li $a2, 128 .L80086060: /* 086C60 80086060 8FAD0040 */ lw $t5, 0x40($sp) -/* 086C64 80086064 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 086C64 80086064 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 086C68 80086068 11A00005 */ beqz $t5, .L80086080 -/* 086C6C 8008606C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 086C6C 8008606C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 086C70 80086070 00002825 */ move $a1, $zero /* 086C74 80086074 00003025 */ move $a2, $zero /* 086C78 80086078 0C0316D6 */ jal render_dialogue_box diff --git a/asm/non_matchings/menu/func_800862C4.s b/asm/non_matchings/menu/func_800862C4.s index 988f9e8a..c3cbd4d8 100644 --- a/asm/non_matchings/menu/func_800862C4.s +++ b/asm/non_matchings/menu/func_800862C4.s @@ -140,8 +140,8 @@ glabel func_800862C4 /* 0870D4 800864D4 1420008B */ bnez $at, .L80086704 /* 0870D8 800864D8 28410007 */ slti $at, $v0, 7 /* 0870DC 800864DC 10200089 */ beqz $at, .L80086704 -/* 0870E0 800864E0 3C048012 */ lui $a0, %hi(D_80126A20) # $a0, 0x8012 -/* 0870E4 800864E4 24846A20 */ addiu $a0, %lo(D_80126A20) # addiu $a0, $a0, 0x6a20 +/* 0870E0 800864E0 3C048012 */ lui $a0, %hi(sControllerPakNotesFree) # $a0, 0x8012 +/* 0870E4 800864E4 24846A20 */ addiu $a0, %lo(sControllerPakNotesFree) # addiu $a0, $a0, 0x6a20 /* 0870E8 800864E8 8C8B0000 */ lw $t3, ($a0) /* 0870EC 800864EC 8E590000 */ lw $t9, ($s2) /* 0870F0 800864F0 8E8C0000 */ lw $t4, ($s4) diff --git a/asm/non_matchings/menu/func_80088938.s b/asm/non_matchings/menu/func_80088938.s index 313993a6..7a463c63 100644 --- a/asm/non_matchings/menu/func_80088938.s +++ b/asm/non_matchings/menu/func_80088938.s @@ -52,11 +52,11 @@ glabel func_80088938 /* 0895F8 800889F8 3C17800E */ lui $s7, %hi(gMenuText) # $s7, 0x800e /* 0895FC 800889FC 26F7F4A0 */ addiu $s7, %lo(gMenuText) # addiu $s7, $s7, -0xb60 /* 089600 80088A00 8EE90000 */ lw $t1, ($s7) -/* 089604 80088A04 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 089604 80088A04 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 089608 80088A08 240A000C */ li $t2, 12 /* 08960C 80088A0C 8D27008C */ lw $a3, 0x8c($t1) /* 089610 80088A10 AFAA0010 */ sw $t2, 0x10($sp) -/* 089614 80088A14 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 089614 80088A14 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 089618 80088A18 240500A1 */ li $a1, 161 /* 08961C 80088A1C 0C031110 */ jal draw_text /* 089620 80088A20 24060021 */ li $a2, 33 @@ -68,11 +68,11 @@ glabel func_80088938 /* 089638 80088A38 0C0310E1 */ jal set_text_colour /* 08963C 80088A3C 00003825 */ move $a3, $zero /* 089640 80088A40 8EEC0000 */ lw $t4, ($s7) -/* 089644 80088A44 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 089644 80088A44 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 089648 80088A48 240D000C */ li $t5, 12 /* 08964C 80088A4C 8D87008C */ lw $a3, 0x8c($t4) /* 089650 80088A50 AFAD0010 */ sw $t5, 0x10($sp) -/* 089654 80088A54 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 089654 80088A54 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 089658 80088A58 240500A0 */ li $a1, 160 /* 08965C 80088A5C 0C031110 */ jal draw_text /* 089660 80088A60 2406001E */ li $a2, 30 @@ -151,8 +151,8 @@ glabel func_80088938 /* 08977C 80088B7C 24060010 */ li $a2, 16 /* 089780 80088B80 0C03145A */ jal render_dialogue_text /* 089784 80088B84 AFB90010 */ sw $t9, 0x10($sp) -/* 089788 80088B88 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 08978C 80088B8C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 089788 80088B88 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 08978C 80088B8C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 089790 80088B90 00002825 */ move $a1, $zero /* 089794 80088B94 00003025 */ move $a2, $zero /* 089798 80088B98 0C0316D6 */ jal render_dialogue_box @@ -283,8 +283,8 @@ glabel func_80088938 /* 089978 80088D78 02803825 */ move $a3, $s4 /* 08997C 80088D7C 0C03145A */ jal render_dialogue_text /* 089980 80088D80 AFB30010 */ sw $s3, 0x10($sp) -/* 089984 80088D84 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 089988 80088D88 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 089984 80088D84 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 089988 80088D88 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08998C 80088D8C 00002825 */ move $a1, $zero /* 089990 80088D90 00003025 */ move $a2, $zero /* 089994 80088D94 0C0316D6 */ jal render_dialogue_box @@ -304,10 +304,10 @@ glabel func_80088938 /* 0899C8 80088DC8 10200018 */ beqz $at, .L80088E2C /* 0899CC 80088DCC 3C0B8012 */ lui $t3, %hi(D_801263BC) # $t3, 0x8012 /* 0899D0 80088DD0 8D6B63BC */ lw $t3, %lo(D_801263BC)($t3) -/* 0899D4 80088DD4 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0899D4 80088DD4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0899D8 80088DD8 316A0008 */ andi $t2, $t3, 8 /* 0899DC 80088DDC 11400031 */ beqz $t2, .L80088EA4 -/* 0899E0 80088DE0 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0899E0 80088DE0 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0899E4 80088DE4 3C05800E */ lui $a1, %hi(D_800E043C) # $a1, 0x800e /* 0899E8 80088DE8 240C00FF */ li $t4, 255 /* 0899EC 80088DEC 240D00FF */ li $t5, 255 @@ -321,9 +321,9 @@ glabel func_80088938 /* 089A0C 80088E0C 240600A0 */ li $a2, 160 /* 089A10 80088E10 0C01E2AE */ jal render_textured_rectangle /* 089A14 80088E14 26A70008 */ addiu $a3, $s5, 8 -/* 089A18 80088E18 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 089A18 80088E18 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 089A1C 80088E1C 0C01ECF4 */ jal func_8007B3D0 -/* 089A20 80088E20 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 089A20 80088E20 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 089A24 80088E24 1000001F */ b .L80088EA4 /* 089A28 80088E28 00000000 */ nop .L80088E2C: @@ -351,11 +351,11 @@ glabel func_80088938 /* 089A7C 80088E7C 00003825 */ move $a3, $zero /* 089A80 80088E80 8EE90000 */ lw $t1, ($s7) .L80088E84: -/* 089A84 80088E84 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 089A84 80088E84 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 089A88 80088E88 240B0004 */ li $t3, 4 /* 089A8C 80088E8C 8D2700CC */ lw $a3, 0xcc($t1) /* 089A90 80088E90 AFAB0010 */ sw $t3, 0x10($sp) -/* 089A94 80088E94 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 089A94 80088E94 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 089A98 80088E98 24058000 */ li $a1, -32768 /* 089A9C 80088E9C 0C031110 */ jal draw_text /* 089AA0 80088EA0 02A03025 */ move $a2, $s5 @@ -459,8 +459,8 @@ glabel func_80088938 /* 089C08 80089008 26310001 */ addiu $s1, $s1, 1 /* 089C0C 8008900C 1632FFCC */ bne $s1, $s2, .L80088F40 /* 089C10 80089010 26100004 */ addiu $s0, $s0, 4 -/* 089C14 80089014 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 089C18 80089018 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 089C14 80089014 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 089C18 80089018 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 089C1C 8008901C 00002825 */ move $a1, $zero /* 089C20 80089020 00003025 */ move $a2, $zero /* 089C24 80089024 0C0316D6 */ jal render_dialogue_box @@ -479,11 +479,11 @@ glabel func_80088938 /* 089C54 80089054 0C0310BB */ jal set_text_font /* 089C58 80089058 24040002 */ li $a0, 2 /* 089C5C 8008905C 8EE80000 */ lw $t0, ($s7) -/* 089C60 80089060 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 089C60 80089060 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 089C64 80089064 2409000C */ li $t1, 12 /* 089C68 80089068 8D0701F0 */ lw $a3, 0x1f0($t0) /* 089C6C 8008906C AFA90010 */ sw $t1, 0x10($sp) -/* 089C70 80089070 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 089C70 80089070 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 089C74 80089074 240500A0 */ li $a1, 160 /* 089C78 80089078 0C031110 */ jal draw_text /* 089C7C 8008907C 24060080 */ li $a2, 128 diff --git a/asm/non_matchings/menu/func_8008C698.s b/asm/non_matchings/menu/func_8008C698.s index f8b06498..e4e6030a 100644 --- a/asm/non_matchings/menu/func_8008C698.s +++ b/asm/non_matchings/menu/func_8008C698.s @@ -10,7 +10,7 @@ glabel func_8008C698 /* 08D2B8 8008C6B8 1020003C */ beqz $at, .L8008C7AC /* 08D2BC 8008C6BC 3C068012 */ lui $a2, %hi(D_801263BC) # $a2, 0x8012 /* 08D2C0 8008C6C0 8CC663BC */ lw $a2, %lo(D_801263BC)($a2) -/* 08D2C4 8008C6C4 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08D2C4 8008C6C4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08D2C8 8008C6C8 000670C0 */ sll $t6, $a2, 3 /* 08D2CC 8008C6CC 29C10100 */ slti $at, $t6, 0x100 /* 08D2D0 8008C6D0 14200003 */ bnez $at, .L8008C6E0 @@ -18,9 +18,9 @@ glabel func_8008C698 /* 08D2D8 8008C6D8 240F01FF */ li $t7, 511 /* 08D2DC 8008C6DC 01EE3023 */ subu $a2, $t7, $t6 .L8008C6E0: -/* 08D2E0 8008C6E0 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 08D2E4 8008C6E4 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 -/* 08D2E8 8008C6E8 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08D2E0 8008C6E0 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 08D2E4 8008C6E4 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 +/* 08D2E8 8008C6E8 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08D2EC 8008C6EC 0C019FCB */ jal func_80067F2C /* 08D2F0 8008C6F0 AFA6001C */ sw $a2, 0x1c($sp) /* 08D2F4 8008C6F4 3C048012 */ lui $a0, %hi(D_801263E0) # $a0, 0x8012 @@ -71,9 +71,9 @@ glabel func_8008C698 /* 08D394 8008C794 24040001 */ li $a0, 1 /* 08D398 8008C798 0C02087B */ jal draw_menu_elements /* 08D39C 8008C79C 3C063F80 */ lui $a2, 0x3f80 -/* 08D3A0 8008C7A0 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08D3A0 8008C7A0 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08D3A4 8008C7A4 0C0202F2 */ jal func_80080BC8 -/* 08D3A8 8008C7A8 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08D3A8 8008C7A8 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 .L8008C7AC: /* 08D3AC 8008C7AC 8FBF0014 */ lw $ra, 0x14($sp) /* 08D3B0 8008C7B0 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/asm/non_matchings/menu/func_8008DC7C.s b/asm/non_matchings/menu/func_8008DC7C.s deleted file mode 100644 index e8e95756..00000000 --- a/asm/non_matchings/menu/func_8008DC7C.s +++ /dev/null @@ -1,137 +0,0 @@ -glabel func_8008DC7C -/* 08E87C 8008DC7C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 08E880 8008DC80 AFBF0014 */ sw $ra, 0x14($sp) -/* 08E884 8008DC84 AFA40020 */ sw $a0, 0x20($sp) -/* 08E888 8008DC88 0C01A955 */ jal get_buttons_pressed_from_player -/* 08E88C 8008DC8C 00002025 */ move $a0, $zero -/* 08E890 8008DC90 3C0E800E */ lui $t6, %hi(gNumberOfActivePlayers) # $t6, 0x800e -/* 08E894 8008DC94 8DCEF4BC */ lw $t6, %lo(gNumberOfActivePlayers)($t6) -/* 08E898 8008DC98 3C058012 */ lui $a1, %hi(gControllersXAxisDirection) # $a1, 0x8012 -/* 08E89C 8008DC9C 80A5645C */ lb $a1, %lo(gControllersXAxisDirection)($a1) -/* 08E8A0 8008DCA0 24010002 */ li $at, 2 -/* 08E8A4 8008DCA4 15C1000B */ bne $t6, $at, .L8008DCD4 -/* 08E8A8 8008DCA8 00401825 */ move $v1, $v0 -/* 08E8AC 8008DCAC 24040001 */ li $a0, 1 -/* 08E8B0 8008DCB0 AFA2001C */ sw $v0, 0x1c($sp) -/* 08E8B4 8008DCB4 0C01A955 */ jal get_buttons_pressed_from_player -/* 08E8B8 8008DCB8 AFA50018 */ sw $a1, 0x18($sp) -/* 08E8BC 8008DCBC 3C0F8012 */ lui $t7, %hi(gControllersXAxisDirection+1) # $t7, 0x8012 -/* 08E8C0 8008DCC0 8FA3001C */ lw $v1, 0x1c($sp) -/* 08E8C4 8008DCC4 8FA50018 */ lw $a1, 0x18($sp) -/* 08E8C8 8008DCC8 81EF645D */ lb $t7, %lo(gControllersXAxisDirection+1)($t7) -/* 08E8CC 8008DCCC 00621825 */ or $v1, $v1, $v0 -/* 08E8D0 8008DCD0 00AF2821 */ addu $a1, $a1, $t7 -.L8008DCD4: -/* 08E8D4 8008DCD4 3C188012 */ lui $t8, %hi(D_80126494) # $t8, 0x8012 -/* 08E8D8 8008DCD8 8F186494 */ lw $t8, %lo(D_80126494)($t8) -/* 08E8DC 8008DCDC 30794000 */ andi $t9, $v1, 0x4000 -/* 08E8E0 8008DCE0 17000035 */ bnez $t8, .L8008DDB8 -/* 08E8E4 8008DCE4 306F9000 */ andi $t7, $v1, 0x9000 -/* 08E8E8 8008DCE8 13200007 */ beqz $t9, .L8008DD08 -/* 08E8EC 8008DCEC 30689000 */ andi $t0, $v1, 0x9000 -/* 08E8F0 8008DCF0 24040241 */ li $a0, 577 -/* 08E8F4 8008DCF4 0C000741 */ jal func_80001D04 -/* 08E8F8 8008DCF8 00002825 */ move $a1, $zero -/* 08E8FC 8008DCFC 3C018012 */ lui $at, %hi(D_80126488) # $at, 0x8012 -/* 08E900 8008DD00 10000057 */ b .L8008DE60 -/* 08E904 8008DD04 AC206488 */ sw $zero, %lo(D_80126488)($at) -.L8008DD08: -/* 08E908 8008DD08 11000017 */ beqz $t0, .L8008DD68 -/* 08E90C 8008DD0C 3C068012 */ lui $a2, %hi(D_8012648C) # $a2, 0x8012 -/* 08E910 8008DD10 3C068012 */ lui $a2, %hi(D_8012648C) # $a2, 0x8012 -/* 08E914 8008DD14 24C6648C */ addiu $a2, %lo(D_8012648C) # addiu $a2, $a2, 0x648c -/* 08E918 8008DD18 8CC90000 */ lw $t1, ($a2) -/* 08E91C 8008DD1C 3C0B8012 */ lui $t3, %hi(gSavefileInfo+1) # $t3, 0x8012 -/* 08E920 8008DD20 00095080 */ sll $t2, $t1, 2 -/* 08E924 8008DD24 01495023 */ subu $t2, $t2, $t1 -/* 08E928 8008DD28 000A5080 */ sll $t2, $t2, 2 -/* 08E92C 8008DD2C 016A5821 */ addu $t3, $t3, $t2 -/* 08E930 8008DD30 916B64A1 */ lbu $t3, %lo(gSavefileInfo+1)($t3) -/* 08E934 8008DD34 00002825 */ move $a1, $zero -/* 08E938 8008DD38 11600007 */ beqz $t3, .L8008DD58 -/* 08E93C 8008DD3C 24040241 */ li $a0, 577 -/* 08E940 8008DD40 0C000741 */ jal func_80001D04 -/* 08E944 8008DD44 240400EF */ li $a0, 239 -/* 08E948 8008DD48 240C0001 */ li $t4, 1 -/* 08E94C 8008DD4C 3C018012 */ lui $at, %hi(D_80126494) # $at, 0x8012 -/* 08E950 8008DD50 10000043 */ b .L8008DE60 -/* 08E954 8008DD54 AC2C6494 */ sw $t4, %lo(D_80126494)($at) -.L8008DD58: -/* 08E958 8008DD58 0C000741 */ jal func_80001D04 -/* 08E95C 8008DD5C 00002825 */ move $a1, $zero -/* 08E960 8008DD60 10000040 */ b .L8008DE64 -/* 08E964 8008DD64 8FBF0014 */ lw $ra, 0x14($sp) -.L8008DD68: -/* 08E968 8008DD68 24C6648C */ addiu $a2, %lo(D_8012648C) # addiu $a2, $a2, 0x648c -/* 08E96C 8008DD6C 8CC30000 */ lw $v1, ($a2) -/* 08E970 8008DD70 04A10005 */ bgez $a1, .L8008DD88 -/* 08E974 8008DD74 00601025 */ move $v0, $v1 -/* 08E978 8008DD78 18600003 */ blez $v1, .L8008DD88 -/* 08E97C 8008DD7C 246DFFFF */ addiu $t5, $v1, -1 -/* 08E980 8008DD80 ACCD0000 */ sw $t5, ($a2) -/* 08E984 8008DD84 01A01825 */ move $v1, $t5 -.L8008DD88: -/* 08E988 8008DD88 18A00005 */ blez $a1, .L8008DDA0 -/* 08E98C 8008DD8C 28610002 */ slti $at, $v1, 2 -/* 08E990 8008DD90 10200003 */ beqz $at, .L8008DDA0 -/* 08E994 8008DD94 246E0001 */ addiu $t6, $v1, 1 -/* 08E998 8008DD98 ACCE0000 */ sw $t6, ($a2) -/* 08E99C 8008DD9C 01C01825 */ move $v1, $t6 -.L8008DDA0: -/* 08E9A0 8008DDA0 1043002F */ beq $v0, $v1, .L8008DE60 -/* 08E9A4 8008DDA4 240400EB */ li $a0, 235 -/* 08E9A8 8008DDA8 0C000741 */ jal func_80001D04 -/* 08E9AC 8008DDAC 00002825 */ move $a1, $zero -/* 08E9B0 8008DDB0 1000002C */ b .L8008DE64 -/* 08E9B4 8008DDB4 8FBF0014 */ lw $ra, 0x14($sp) -.L8008DDB8: -/* 08E9B8 8008DDB8 11E00022 */ beqz $t7, .L8008DE44 -/* 08E9BC 8008DDBC 240400EF */ li $a0, 239 -/* 08E9C0 8008DDC0 0C000741 */ jal func_80001D04 -/* 08E9C4 8008DDC4 00002825 */ move $a1, $zero -/* 08E9C8 8008DDC8 3C068012 */ lui $a2, %hi(D_8012648C) # $a2, 0x8012 -/* 08E9CC 8008DDCC 24C6648C */ addiu $a2, %lo(D_8012648C) # addiu $a2, $a2, 0x648c -/* 08E9D0 8008DDD0 8CC40000 */ lw $a0, ($a2) -/* 08E9D4 8008DDD4 0C01BB2B */ jal func_8006ECAC -/* 08E9D8 8008DDD8 00000000 */ nop -/* 08E9DC 8008DDDC 3C068012 */ lui $a2, %hi(D_8012648C) # $a2, 0x8012 -/* 08E9E0 8008DDE0 24C6648C */ addiu $a2, %lo(D_8012648C) # addiu $a2, $a2, 0x648c -/* 08E9E4 8008DDE4 8CC30000 */ lw $v1, ($a2) -/* 08E9E8 8008DDE8 3C198012 */ lui $t9, %hi(gSavefileInfo) # $t9, 0x8012 -/* 08E9EC 8008DDEC 0003C080 */ sll $t8, $v1, 2 -/* 08E9F0 8008DDF0 0303C023 */ subu $t8, $t8, $v1 -/* 08E9F4 8008DDF4 0018C080 */ sll $t8, $t8, 2 -/* 08E9F8 8008DDF8 273964A0 */ addiu $t9, %lo(gSavefileInfo) # addiu $t9, $t9, 0x64a0 -/* 08E9FC 8008DDFC 03191021 */ addu $v0, $t8, $t9 -/* 08EA00 8008DE00 24080044 */ li $t0, 68 -/* 08EA04 8008DE04 2409004B */ li $t1, 75 -/* 08EA08 8008DE08 240A0052 */ li $t2, 82 -/* 08EA0C 8008DE0C A0400000 */ sb $zero, ($v0) -/* 08EA10 8008DE10 A0400001 */ sb $zero, 1($v0) -/* 08EA14 8008DE14 A4400002 */ sh $zero, 2($v0) -/* 08EA18 8008DE18 A0480004 */ sb $t0, 4($v0) -/* 08EA1C 8008DE1C A0490005 */ sb $t1, 5($v0) -/* 08EA20 8008DE20 A04A0006 */ sb $t2, 6($v0) -/* 08EA24 8008DE24 A0400007 */ sb $zero, 7($v0) -/* 08EA28 8008DE28 3C01800E */ lui $at, %hi(gSaveFileIndex) # $at, 0x800e -/* 08EA2C 8008DE2C AC23F4CC */ sw $v1, %lo(gSaveFileIndex)($at) -/* 08EA30 8008DE30 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 -/* 08EA34 8008DE34 AC2063E0 */ sw $zero, %lo(D_801263E0)($at) -/* 08EA38 8008DE38 3C018012 */ lui $at, %hi(D_80126488) # $at, 0x8012 -/* 08EA3C 8008DE3C 10000008 */ b .L8008DE60 -/* 08EA40 8008DE40 AC206488 */ sw $zero, %lo(D_80126488)($at) -.L8008DE44: -/* 08EA44 8008DE44 306B4000 */ andi $t3, $v1, 0x4000 -/* 08EA48 8008DE48 11600005 */ beqz $t3, .L8008DE60 -/* 08EA4C 8008DE4C 24040241 */ li $a0, 577 -/* 08EA50 8008DE50 0C000741 */ jal func_80001D04 -/* 08EA54 8008DE54 00002825 */ move $a1, $zero -/* 08EA58 8008DE58 3C018012 */ lui $at, %hi(D_80126494) # $at, 0x8012 -/* 08EA5C 8008DE5C AC206494 */ sw $zero, %lo(D_80126494)($at) -.L8008DE60: -/* 08EA60 8008DE60 8FBF0014 */ lw $ra, 0x14($sp) -.L8008DE64: -/* 08EA64 8008DE64 27BD0020 */ addiu $sp, $sp, 0x20 -/* 08EA68 8008DE68 03E00008 */ jr $ra -/* 08EA6C 8008DE6C 00000000 */ nop - diff --git a/asm/non_matchings/menu/func_8008FA54.s b/asm/non_matchings/menu/func_8008FA54.s index 7cc8785d..9d0a91ea 100644 --- a/asm/non_matchings/menu/func_8008FA54.s +++ b/asm/non_matchings/menu/func_8008FA54.s @@ -53,9 +53,9 @@ glabel func_8008FA54 /* 0906FC 8008FAFC 00000000 */ nop /* 090700 8008FB00 1249002F */ beq $s2, $t1, .L8008FBC0 /* 090704 8008FB04 00000000 */ nop -/* 090708 8008FB08 0C01AC75 */ jal func_8006B1D4 +/* 090708 8008FB08 0C01AC75 */ jal get_hub_area_id /* 09070C 8008FB0C 24040003 */ li $a0, 3 -/* 090710 8008FB10 0C01AF77 */ jal func_8006BDDC +/* 090710 8008FB10 0C01AF77 */ jal get_level_name /* 090714 8008FB14 00402025 */ move $a0, $v0 /* 090718 8008FB18 16420004 */ bne $s2, $v0, .L8008FB2C /* 09071C 8008FB1C 00002025 */ move $a0, $zero @@ -74,8 +74,8 @@ glabel func_8008FA54 /* 090748 8008FB48 0C0310E1 */ jal set_text_colour /* 09074C 8008FB4C AFAA0010 */ sw $t2, 0x10($sp) /* 090750 8008FB50 8FAB006C */ lw $t3, 0x6c($sp) -/* 090754 8008FB54 3C138012 */ lui $s3, %hi(D_801263A0) # $s3, 0x8012 -/* 090758 8008FB58 267363A0 */ addiu $s3, %lo(D_801263A0) # addiu $s3, $s3, 0x63a0 +/* 090754 8008FB54 3C138012 */ lui $s3, %hi(sMenuCurrDisplayList) # $s3, 0x8012 +/* 090758 8008FB58 267363A0 */ addiu $s3, %lo(sMenuCurrDisplayList) # addiu $s3, $s3, 0x63a0 /* 09075C 8008FB5C 240C000C */ li $t4, 12 /* 090760 8008FB60 02AB8023 */ subu $s0, $s5, $t3 /* 090764 8008FB64 2606FFAB */ addiu $a2, $s0, -0x55 @@ -102,8 +102,8 @@ glabel func_8008FA54 /* 0907B8 8008FBB8 0C031059 */ jal func_800C4164 /* 0907BC 8008FBBC 00002025 */ move $a0, $zero .L8008FBC0: -/* 0907C0 8008FBC0 3C138012 */ lui $s3, %hi(D_801263A0) # $s3, 0x8012 -/* 0907C4 8008FBC4 267363A0 */ addiu $s3, %lo(D_801263A0) # addiu $s3, $s3, 0x63a0 +/* 0907C0 8008FBC0 3C138012 */ lui $s3, %hi(sMenuCurrDisplayList) # $s3, 0x8012 +/* 0907C4 8008FBC4 267363A0 */ addiu $s3, %lo(sMenuCurrDisplayList) # addiu $s3, $s3, 0x63a0 /* 0907C8 8008FBC8 240400FF */ li $a0, 255 /* 0907CC 8008FBCC 240500FF */ li $a1, 255 /* 0907D0 8008FBD0 240600FF */ li $a2, 255 diff --git a/asm/non_matchings/menu/func_8008FF1C.s b/asm/non_matchings/menu/func_8008FF1C.s index 1598b0b0..93651082 100644 --- a/asm/non_matchings/menu/func_8008FF1C.s +++ b/asm/non_matchings/menu/func_8008FF1C.s @@ -103,9 +103,9 @@ glabel func_8008FF1C /* 090C98 80090098 0014A180 */ sll $s4, $s4, 6 /* 090C9C 8009009C 01098821 */ addu $s1, $t0, $t1 /* 090CA0 800900A0 26640001 */ addiu $a0, $s3, 1 -/* 090CA4 800900A4 0C01AC75 */ jal func_8006B1D4 +/* 090CA4 800900A4 0C01AC75 */ jal get_hub_area_id /* 090CA8 800900A8 0013A823 */ negu $s5, $s3 -/* 090CAC 800900AC 0C01AF77 */ jal func_8006BDDC +/* 090CAC 800900AC 0C01AF77 */ jal get_level_name /* 090CB0 800900B0 00402025 */ move $a0, $v0 /* 090CB4 800900B4 862A0000 */ lh $t2, ($s1) /* 090CB8 800900B8 2401FFFF */ li $at, -1 @@ -118,7 +118,7 @@ glabel func_8008FF1C /* 090CD4 800900D4 01726021 */ addu $t4, $t3, $s2 /* 090CD8 800900D8 018D8821 */ addu $s1, $t4, $t5 /* 090CDC 800900DC 82240000 */ lb $a0, ($s1) -/* 090CE0 800900E0 0C01AF77 */ jal func_8006BDDC +/* 090CE0 800900E0 0C01AF77 */ jal get_level_name /* 090CE4 800900E4 00000000 */ nop /* 090CE8 800900E8 1657000B */ bne $s2, $s7, .L80090118 /* 090CEC 800900EC AE020004 */ sw $v0, 4($s0) @@ -312,10 +312,10 @@ glabel func_8008FF1C /* 090FA4 800903A4 24050001 */ li $a1, 1 /* 090FA8 800903A8 0C026F57 */ jal func_8009BD5C /* 090FAC 800903AC 00000000 */ nop -/* 090FB0 800903B0 3C118012 */ lui $s1, %hi(D_801263A0) # $s1, 0x8012 -/* 090FB4 800903B4 263163A0 */ addiu $s1, %lo(D_801263A0) # addiu $s1, $s1, 0x63a0 -/* 090FB8 800903B8 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 090FBC 800903BC 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 090FB0 800903B0 3C118012 */ lui $s1, %hi(sMenuCurrDisplayList) # $s1, 0x8012 +/* 090FB4 800903B4 263163A0 */ addiu $s1, %lo(sMenuCurrDisplayList) # addiu $s1, $s1, 0x63a0 +/* 090FB8 800903B8 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 090FBC 800903BC 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 090FC0 800903C0 0C019FCB */ jal func_80067F2C /* 090FC4 800903C4 02202025 */ move $a0, $s1 /* 090FC8 800903C8 0C01ECF4 */ jal func_8007B3D0 diff --git a/asm/non_matchings/menu/func_80092E94.s b/asm/non_matchings/menu/func_80092E94.s index 11fb5e04..f3d5d966 100644 --- a/asm/non_matchings/menu/func_80092E94.s +++ b/asm/non_matchings/menu/func_80092E94.s @@ -19,8 +19,8 @@ glabel func_80092E94 /* 093AD4 80092ED4 3C18800E */ lui $t8, %hi(gTrackIdForPreview) # $t8, 0x800e /* 093AD8 80092ED8 8F18F4C4 */ lw $t8, %lo(gTrackIdForPreview)($t8) /* 093ADC 80092EDC 8C8F004C */ lw $t7, 0x4c($a0) -/* 093AE0 80092EE0 3C128012 */ lui $s2, %hi(D_801263A0) # $s2, 0x8012 -/* 093AE4 80092EE4 265263A0 */ addiu $s2, %lo(D_801263A0) # addiu $s2, $s2, 0x63a0 +/* 093AE0 80092EE0 3C128012 */ lui $s2, %hi(sMenuCurrDisplayList) # $s2, 0x8012 +/* 093AE4 80092EE4 265263A0 */ addiu $s2, %lo(sMenuCurrDisplayList) # addiu $s2, $s2, 0x63a0 /* 093AE8 80092EE8 01F8C821 */ addu $t9, $t7, $t8 /* 093AEC 80092EEC 83280002 */ lb $t0, 2($t9) /* 093AF0 80092EF0 8E430000 */ lw $v1, ($s2) @@ -34,8 +34,8 @@ glabel func_80092E94 /* 093B10 80092F10 AFA50060 */ sw $a1, 0x60($sp) /* 093B14 80092F14 0C026F57 */ jal func_8009BD5C /* 093B18 80092F18 AFA40050 */ sw $a0, 0x50($sp) -/* 093B1C 80092F1C 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 093B20 80092F20 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 093B1C 80092F1C 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 093B20 80092F20 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 093B24 80092F24 0C019FCB */ jal func_80067F2C /* 093B28 80092F28 02402025 */ move $a0, $s2 /* 093B2C 80092F2C 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e @@ -50,7 +50,7 @@ glabel func_80092E94 /* 093B50 80092F50 0C01AC3E */ jal func_8006B0F8 /* 093B54 80092F54 00000000 */ nop /* 093B58 80092F58 8FA40058 */ lw $a0, 0x58($sp) -/* 093B5C 80092F5C 0C01AF77 */ jal func_8006BDDC +/* 093B5C 80092F5C 0C01AF77 */ jal get_level_name /* 093B60 80092F60 AFA2005C */ sw $v0, 0x5c($sp) /* 093B64 80092F64 00408025 */ move $s0, $v0 /* 093B68 80092F68 0C0310BB */ jal set_text_font @@ -220,7 +220,7 @@ glabel func_80092E94 /* 093DF4 800931F4 AFA00018 */ sw $zero, 0x18($sp) /* 093DF8 800931F8 2405001A */ li $a1, 26 /* 093DFC 800931FC 24060035 */ li $a2, 53 -/* 093E00 80093200 0C020600 */ jal func_80081800 +/* 093E00 80093200 0C020600 */ jal show_timestamp /* 093E04 80093204 24070080 */ li $a3, 128 /* 093E08 80093208 8FAE0050 */ lw $t6, 0x50($sp) /* 093E0C 8009320C 3C188012 */ lui $t8, %hi(gPlayerSelectVehicle) # $t8, 0x8012 @@ -243,7 +243,7 @@ glabel func_80092E94 /* 093E50 80093250 AFA00018 */ sw $zero, 0x18($sp) /* 093E54 80093254 2405001A */ li $a1, 26 /* 093E58 80093258 24060021 */ li $a2, 33 -/* 093E5C 8009325C 0C020600 */ jal func_80081800 +/* 093E5C 8009325C 0C020600 */ jal show_timestamp /* 093E60 80093260 240700FF */ li $a3, 255 .L80093264: /* 093E64 80093264 3C068012 */ lui $a2, %hi(D_801263BC) # $a2, 0x8012 diff --git a/asm/non_matchings/menu/func_80094D28.s b/asm/non_matchings/menu/func_80094D28.s index a1710f36..d31a7826 100644 --- a/asm/non_matchings/menu/func_80094D28.s +++ b/asm/non_matchings/menu/func_80094D28.s @@ -19,11 +19,11 @@ glabel func_80094D28 /* 095950 80094D50 24010001 */ li $at, 1 /* 095954 80094D54 15C10006 */ bne $t6, $at, .L80094D70 /* 095958 80094D58 00408025 */ move $s0, $v0 -/* 09595C 80094D5C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 095960 80094D60 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 095964 80094D64 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 09595C 80094D5C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 095960 80094D60 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 095964 80094D64 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 095968 80094D68 0C019FCB */ jal func_80067F2C -/* 09596C 80094D6C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 09596C 80094D6C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 .L80094D70: /* 095970 80094D70 00002025 */ move $a0, $zero /* 095974 80094D74 0C019A25 */ jal func_80066894 diff --git a/asm/non_matchings/menu/func_80095624.s b/asm/non_matchings/menu/func_80095624.s deleted file mode 100644 index 89306211..00000000 --- a/asm/non_matchings/menu/func_80095624.s +++ /dev/null @@ -1,82 +0,0 @@ -.late_rodata -glabel jpt_800E8524 -.word L80095650, L800956C8, L800956C8, L80095668, L80095650, L80095668, L80095680, L80095698, L800956B0 - -.text -glabel func_80095624 -/* 096224 80095624 308E00FF */ andi $t6, $a0, 0xff -/* 096228 80095628 25CFFFFF */ addiu $t7, $t6, -1 -/* 09622C 8009562C 2DE10009 */ sltiu $at, $t7, 9 -/* 096230 80095630 10200025 */ beqz $at, .L800956C8 -/* 096234 80095634 000F7880 */ sll $t7, $t7, 2 -/* 096238 80095638 3C01800F */ lui $at, %hi(jpt_800E8524) # $at, 0x800f -/* 09623C 8009563C 002F0821 */ addu $at, $at, $t7 -/* 096240 80095640 8C2F8524 */ lw $t7, %lo(jpt_800E8524)($at) -/* 096244 80095644 00000000 */ nop -/* 096248 80095648 01E00008 */ jr $t7 -/* 09624C 8009564C 00000000 */ nop -glabel L80095650 -/* 096250 80095650 3C048012 */ lui $a0, %hi(D_80126C1C) # $a0, 0x8012 -/* 096254 80095654 3C18800E */ lui $t8, %hi(D_800E09D8) # $t8, 0x800e -/* 096258 80095658 271809D8 */ addiu $t8, %lo(D_800E09D8) # addiu $t8, $t8, 0x9d8 -/* 09625C 8009565C 24846C1C */ addiu $a0, %lo(D_80126C1C) # addiu $a0, $a0, 0x6c1c -/* 096260 80095660 1000001E */ b .L800956DC -/* 096264 80095664 AC980000 */ sw $t8, ($a0) -glabel L80095668 -/* 096268 80095668 3C048012 */ lui $a0, %hi(D_80126C1C) # $a0, 0x8012 -/* 09626C 8009566C 3C19800E */ lui $t9, %hi(D_800E09C4) # $t9, 0x800e -/* 096270 80095670 273909C4 */ addiu $t9, %lo(D_800E09C4) # addiu $t9, $t9, 0x9c4 -/* 096274 80095674 24846C1C */ addiu $a0, %lo(D_80126C1C) # addiu $a0, $a0, 0x6c1c -/* 096278 80095678 10000018 */ b .L800956DC -/* 09627C 8009567C AC990000 */ sw $t9, ($a0) -glabel L80095680 -/* 096280 80095680 3C048012 */ lui $a0, %hi(D_80126C1C) # $a0, 0x8012 -/* 096284 80095684 3C08800E */ lui $t0, %hi(D_800E0A04) # $t0, 0x800e -/* 096288 80095688 24846C1C */ addiu $a0, %lo(D_80126C1C) # addiu $a0, $a0, 0x6c1c -/* 09628C 8009568C 25080A04 */ addiu $t0, %lo(D_800E0A04) # addiu $t0, $t0, 0xa04 -/* 096290 80095690 10000012 */ b .L800956DC -/* 096294 80095694 AC880000 */ sw $t0, ($a0) -glabel L80095698 -/* 096298 80095698 3C048012 */ lui $a0, %hi(D_80126C1C) # $a0, 0x8012 -/* 09629C 8009569C 3C09800E */ lui $t1, %hi(D_800E0A14) # $t1, 0x800e -/* 0962A0 800956A0 24846C1C */ addiu $a0, %lo(D_80126C1C) # addiu $a0, $a0, 0x6c1c -/* 0962A4 800956A4 25290A14 */ addiu $t1, %lo(D_800E0A14) # addiu $t1, $t1, 0xa14 -/* 0962A8 800956A8 1000000C */ b .L800956DC -/* 0962AC 800956AC AC890000 */ sw $t1, ($a0) -glabel L800956B0 -/* 0962B0 800956B0 3C048012 */ lui $a0, %hi(D_80126C1C) # $a0, 0x8012 -/* 0962B4 800956B4 3C0A800E */ lui $t2, %hi(D_800E09EC) # $t2, 0x800e -/* 0962B8 800956B8 24846C1C */ addiu $a0, %lo(D_80126C1C) # addiu $a0, $a0, 0x6c1c -/* 0962BC 800956BC 254A09EC */ addiu $t2, %lo(D_800E09EC) # addiu $t2, $t2, 0x9ec -/* 0962C0 800956C0 10000006 */ b .L800956DC -/* 0962C4 800956C4 AC8A0000 */ sw $t2, ($a0) -.L800956C8: -glabel L800956C8 -/* 0962C8 800956C8 3C048012 */ lui $a0, %hi(D_80126C1C) # $a0, 0x8012 -/* 0962CC 800956CC 3C0B800E */ lui $t3, %hi(D_800E09B0) # $t3, 0x800e -/* 0962D0 800956D0 24846C1C */ addiu $a0, %lo(D_80126C1C) # addiu $a0, $a0, 0x6c1c -/* 0962D4 800956D4 256B09B0 */ addiu $t3, %lo(D_800E09B0) # addiu $t3, $t3, 0x9b0 -/* 0962D8 800956D8 AC8B0000 */ sw $t3, ($a0) -.L800956DC: -/* 0962DC 800956DC 8C820000 */ lw $v0, ($a0) -/* 0962E0 800956E0 3C058012 */ lui $a1, %hi(D_80126C24) # $a1, 0x8012 -/* 0962E4 800956E4 24A56C24 */ addiu $a1, %lo(D_80126C24) # addiu $a1, $a1, 0x6c24 -/* 0962E8 800956E8 00006080 */ sll $t4, $zero, 2 -/* 0962EC 800956EC ACA00000 */ sw $zero, ($a1) -/* 0962F0 800956F0 004C6821 */ addu $t5, $v0, $t4 -/* 0962F4 800956F4 8DAE0000 */ lw $t6, ($t5) -/* 0962F8 800956F8 00001825 */ move $v1, $zero -/* 0962FC 800956FC 11C00008 */ beqz $t6, .L80095720 -/* 096300 80095700 246F0001 */ addiu $t7, $v1, 1 -.L80095704: -/* 096304 80095704 000FC080 */ sll $t8, $t7, 2 -/* 096308 80095708 0058C821 */ addu $t9, $v0, $t8 -/* 09630C 8009570C ACAF0000 */ sw $t7, ($a1) -/* 096310 80095710 8F280000 */ lw $t0, ($t9) -/* 096314 80095714 01E01825 */ move $v1, $t7 -/* 096318 80095718 1500FFFA */ bnez $t0, .L80095704 -/* 09631C 8009571C 246F0001 */ addiu $t7, $v1, 1 -.L80095720: -/* 096320 80095720 03E00008 */ jr $ra -/* 096324 80095724 00000000 */ nop - diff --git a/asm/non_matchings/menu/func_80095728.s b/asm/non_matchings/menu/func_80095728.s index 0b899a0b..8dd22ebf 100644 --- a/asm/non_matchings/menu/func_80095728.s +++ b/asm/non_matchings/menu/func_80095728.s @@ -15,15 +15,15 @@ glabel func_80095728 /* 096348 80095748 AFA0004C */ sw $zero, 0x4c($sp) /* 09634C 8009574C AFA00044 */ sw $zero, 0x44($sp) /* 096350 80095750 8C8F0000 */ lw $t7, ($a0) -/* 096354 80095754 3C018012 */ lui $at, %hi(D_801263A0) # $at, 0x8012 -/* 096358 80095758 AC2F63A0 */ sw $t7, %lo(D_801263A0)($at) +/* 096354 80095754 3C018012 */ lui $at, %hi(sMenuCurrDisplayList) # $at, 0x8012 +/* 096358 80095758 AC2F63A0 */ sw $t7, %lo(sMenuCurrDisplayList)($at) /* 09635C 8009575C 8CB90000 */ lw $t9, ($a1) -/* 096360 80095760 3C018012 */ lui $at, %hi(D_801263A8) # $at, 0x8012 -/* 096364 80095764 AC3963A8 */ sw $t9, %lo(D_801263A8)($at) +/* 096360 80095760 3C018012 */ lui $at, %hi(sMenuCurrHudMat) # $at, 0x8012 +/* 096364 80095764 AC3963A8 */ sw $t9, %lo(sMenuCurrHudMat)($at) /* 096368 80095768 8CCD0000 */ lw $t5, ($a2) -/* 09636C 8009576C 3C018012 */ lui $at, %hi(D_801263AC) # $at, 0x8012 +/* 09636C 8009576C 3C018012 */ lui $at, %hi(sMenuCurrHudVerts) # $at, 0x8012 /* 096370 80095770 0C01BAA4 */ jal get_settings -/* 096374 80095774 AC2D63AC */ sw $t5, %lo(D_801263AC)($at) +/* 096374 80095774 AC2D63AC */ sw $t5, %lo(sMenuCurrHudVerts)($at) /* 096378 80095778 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 /* 09637C 8009577C 8DCE0300 */ lw $t6, %lo(osTvType)($t6) /* 096380 80095780 AFA2002C */ sw $v0, 0x2c($sp) @@ -559,8 +559,8 @@ glabel L80095EC8 /* 096B48 80095F48 3C048012 */ lui $a0, %hi(D_80126C1C) # $a0, 0x8012 /* 096B4C 80095F4C 24846C1C */ addiu $a0, %lo(D_80126C1C) # addiu $a0, $a0, 0x6c1c /* 096B50 80095F50 8C8E0000 */ lw $t6, ($a0) -/* 096B54 80095F54 3C0F800E */ lui $t7, %hi(D_800E0A04) # $t7, 0x800e -/* 096B58 80095F58 25EF0A04 */ addiu $t7, %lo(D_800E0A04) # addiu $t7, $t7, 0xa04 +/* 096B54 80095F54 3C0F800E */ lui $t7, %hi(sInsertControllerPakMenuText) # $t7, 0x800e +/* 096B58 80095F58 25EF0A04 */ addiu $t7, %lo(sInsertControllerPakMenuText) # addiu $t7, $t7, 0xa04 /* 096B5C 80095F5C 15CF0006 */ bne $t6, $t7, .L80095F78 /* 096B60 80095F60 00000000 */ nop /* 096B64 80095F64 0C025589 */ jal func_80095624 @@ -597,9 +597,9 @@ glabel L80095EC8 /* 096BD0 80095FD0 30789000 */ andi $t8, $v1, 0x9000 /* 096BD4 80095FD4 1300000B */ beqz $t8, .L80096004 /* 096BD8 80095FD8 306C4000 */ andi $t4, $v1, 0x4000 -/* 096BDC 80095FDC 3C19800E */ lui $t9, %hi(D_800E0A04) # $t9, 0x800e +/* 096BDC 80095FDC 3C19800E */ lui $t9, %hi(sInsertControllerPakMenuText) # $t9, 0x800e /* 096BE0 80095FE0 240D0001 */ li $t5, 1 -/* 096BE4 80095FE4 27390A04 */ addiu $t9, %lo(D_800E0A04) # addiu $t9, $t9, 0xa04 +/* 096BE4 80095FE4 27390A04 */ addiu $t9, %lo(sInsertControllerPakMenuText) # addiu $t9, $t9, 0xa04 /* 096BE8 80095FE8 14590004 */ bne $v0, $t9, .L80095FFC /* 096BEC 80095FEC AFAD0050 */ sw $t5, 0x50($sp) /* 096BF0 80095FF0 24070001 */ li $a3, 1 @@ -1117,7 +1117,7 @@ glabel L800964DC .L80096714: /* 097314 80096714 3C028012 */ lui $v0, %hi(gIgnorePlayerInput) # $v0, 0x8012 /* 097318 80096718 8C4263C4 */ lw $v0, %lo(gIgnorePlayerInput)($v0) -/* 09731C 8009671C 3C0D8012 */ lui $t5, %hi(D_801263A0) # $t5, 0x8012 +/* 09731C 8009671C 3C0D8012 */ lui $t5, %hi(sMenuCurrDisplayList) # $t5, 0x8012 /* 097320 80096720 1840000B */ blez $v0, .L80096750 /* 097324 80096724 00000000 */ nop /* 097328 80096728 8FAE0064 */ lw $t6, 0x64($sp) @@ -1131,16 +1131,16 @@ glabel L800964DC /* 097348 80096748 00000000 */ nop /* 09734C 8009674C AC2063C4 */ sw $zero, %lo(gIgnorePlayerInput)($at) .L80096750: -/* 097350 80096750 8DAD63A0 */ lw $t5, %lo(D_801263A0)($t5) +/* 097350 80096750 8DAD63A0 */ lw $t5, %lo(sMenuCurrDisplayList)($t5) /* 097354 80096754 8FB90058 */ lw $t9, 0x58($sp) -/* 097358 80096758 3C0C8012 */ lui $t4, %hi(D_801263A8) # $t4, 0x8012 +/* 097358 80096758 3C0C8012 */ lui $t4, %hi(sMenuCurrHudMat) # $t4, 0x8012 /* 09735C 8009675C AF2D0000 */ sw $t5, ($t9) /* 097360 80096760 8FAE005C */ lw $t6, 0x5c($sp) -/* 097364 80096764 8D8C63A8 */ lw $t4, %lo(D_801263A8)($t4) -/* 097368 80096768 3C0F8012 */ lui $t7, %hi(D_801263AC) # $t7, 0x8012 +/* 097364 80096764 8D8C63A8 */ lw $t4, %lo(sMenuCurrHudMat)($t4) +/* 097368 80096768 3C0F8012 */ lui $t7, %hi(sMenuCurrHudVerts) # $t7, 0x8012 /* 09736C 8009676C ADCC0000 */ sw $t4, ($t6) /* 097370 80096770 8FB80060 */ lw $t8, 0x60($sp) -/* 097374 80096774 8DEF63AC */ lw $t7, %lo(D_801263AC)($t7) +/* 097374 80096774 8DEF63AC */ lw $t7, %lo(sMenuCurrHudVerts)($t7) /* 097378 80096778 00000000 */ nop /* 09737C 8009677C AF0F0000 */ sw $t7, ($t8) /* 097380 80096780 8FBF0024 */ lw $ra, 0x24($sp) diff --git a/asm/non_matchings/menu/func_80096978.s b/asm/non_matchings/menu/func_80096978.s index 463af79c..eada8869 100644 --- a/asm/non_matchings/menu/func_80096978.s +++ b/asm/non_matchings/menu/func_80096978.s @@ -24,10 +24,10 @@ glabel func_80096978 /* 0975D0 800969D0 00001825 */ move $v1, $zero /* 0975D4 800969D4 2403000C */ li $v1, 12 .L800969D8: -/* 0975D8 800969D8 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 0975DC 800969DC 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 0975E0 800969E0 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 -/* 0975E4 800969E4 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0975D8 800969D8 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 0975DC 800969DC 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 0975E0 800969E0 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 +/* 0975E4 800969E4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0975E8 800969E8 0C019FCB */ jal func_80067F2C /* 0975EC 800969EC AFA30098 */ sw $v1, 0x98($sp) /* 0975F0 800969F0 44800000 */ mtc1 $zero, $f0 @@ -77,11 +77,11 @@ glabel func_80096978 /* 097698 80096A98 AFB90010 */ sw $t9, 0x10($sp) /* 09769C 80096A9C 3C08800E */ lui $t0, %hi(gMenuText) # $t0, 0x800e /* 0976A0 80096AA0 8D08F4A0 */ lw $t0, %lo(gMenuText)($t0) -/* 0976A4 80096AA4 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0976A4 80096AA4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0976A8 80096AA8 2409000C */ li $t1, 12 /* 0976AC 80096AAC 8D070084 */ lw $a3, 0x84($t0) /* 0976B0 80096AB0 AFA90010 */ sw $t1, 0x10($sp) -/* 0976B4 80096AB4 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0976B4 80096AB4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0976B8 80096AB8 24058000 */ li $a1, -32768 /* 0976BC 80096ABC 0C031110 */ jal draw_text /* 0976C0 80096AC0 24060022 */ li $a2, 34 @@ -116,9 +116,9 @@ glabel func_80096978 /* 097734 80096B34 00000000 */ nop .L80096B38: /* 097738 80096B38 8208005A */ lb $t0, 0x5a($s0) -/* 09773C 80096B3C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 09773C 80096B3C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 097740 80096B40 1500000E */ bnez $t0, .L80096B7C -/* 097744 80096B44 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 097744 80096B44 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 097748 80096B48 3C028012 */ lui $v0, %hi(D_801263BC) # $v0, 0x8012 /* 09774C 80096B4C 8C4263BC */ lw $v0, %lo(D_801263BC)($v0) /* 097750 80096B50 00000000 */ nop @@ -211,14 +211,14 @@ glabel func_80096978 /* 097898 80096C98 0C0310E1 */ jal set_text_colour /* 09789C 80096C9C 0000B025 */ move $s6, $zero /* 0978A0 80096CA0 8FAB0078 */ lw $t3, 0x78($sp) -/* 0978A4 80096CA4 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0978A4 80096CA4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0978A8 80096CA8 8FA50064 */ lw $a1, 0x64($sp) /* 0978AC 80096CAC 8FA6007C */ lw $a2, 0x7c($sp) /* 0978B0 80096CB0 240D000C */ li $t5, 12 /* 0978B4 80096CB4 8D670000 */ lw $a3, ($t3) /* 0978B8 80096CB8 AFAD0010 */ sw $t5, 0x10($sp) /* 0978BC 80096CBC 0C031110 */ jal draw_text -/* 0978C0 80096CC0 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0978C0 80096CC0 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0978C4 80096CC4 240C00FF */ li $t4, 255 /* 0978C8 80096CC8 AFAC0010 */ sw $t4, 0x10($sp) /* 0978CC 80096CCC 240400FF */ li $a0, 255 @@ -227,17 +227,17 @@ glabel func_80096978 /* 0978D8 80096CD8 0C0310E1 */ jal set_text_colour /* 0978DC 80096CDC 24070060 */ li $a3, 96 /* 0978E0 80096CE0 8FAE0078 */ lw $t6, 0x78($sp) -/* 0978E4 80096CE4 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0978E4 80096CE4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0978E8 80096CE8 8FA50068 */ lw $a1, 0x68($sp) /* 0978EC 80096CEC 8FA60074 */ lw $a2, 0x74($sp) /* 0978F0 80096CF0 240F000C */ li $t7, 12 /* 0978F4 80096CF4 8DC70000 */ lw $a3, ($t6) /* 0978F8 80096CF8 AFAF0010 */ sw $t7, 0x10($sp) /* 0978FC 80096CFC 0C031110 */ jal draw_text -/* 097900 80096D00 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 -/* 097904 80096D04 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 097900 80096D00 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 +/* 097904 80096D04 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 097908 80096D08 0C01ECF4 */ jal func_8007B3D0 -/* 09790C 80096D0C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 09790C 80096D0C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 097910 80096D10 0C01A142 */ jal func_80068508 /* 097914 80096D14 24040001 */ li $a0, 1 /* 097918 80096D18 0C01EFC7 */ jal func_8007BF1C diff --git a/asm/non_matchings/menu/func_80097918.s b/asm/non_matchings/menu/func_80097918.s index d653a0ac..6e29ecdd 100644 --- a/asm/non_matchings/menu/func_80097918.s +++ b/asm/non_matchings/menu/func_80097918.s @@ -57,8 +57,8 @@ glabel func_80097918 /* 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(D_801263A0) # $s3, 0x8012 -/* 098604 80097A04 267363A0 */ addiu $s3, %lo(D_801263A0) # addiu $s3, $s3, 0x63a0 +/* 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) diff --git a/asm/non_matchings/menu/func_80099E8C.s b/asm/non_matchings/menu/func_80099E8C.s index 7c2ab3d1..0b72d27a 100644 --- a/asm/non_matchings/menu/func_80099E8C.s +++ b/asm/non_matchings/menu/func_80099E8C.s @@ -6,11 +6,11 @@ glabel D_800E8570 glabel func_80099E8C /* 09AA8C 80099E8C 27BDFF10 */ addiu $sp, $sp, -0xf0 /* 09AA90 80099E90 AFB70054 */ sw $s7, 0x54($sp) -/* 09AA94 80099E94 3C178012 */ lui $s7, %hi(D_801263A0) # $s7, 0x8012 -/* 09AA98 80099E98 26F763A0 */ addiu $s7, %lo(D_801263A0) # addiu $s7, $s7, 0x63a0 +/* 09AA94 80099E94 3C178012 */ lui $s7, %hi(sMenuCurrDisplayList) # $s7, 0x8012 +/* 09AA98 80099E98 26F763A0 */ addiu $s7, %lo(sMenuCurrDisplayList) # addiu $s7, $s7, 0x63a0 /* 09AA9C 80099E9C AFBF005C */ sw $ra, 0x5c($sp) /* 09AAA0 80099EA0 AFA400F0 */ sw $a0, 0xf0($sp) -/* 09AAA4 80099EA4 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 +/* 09AAA4 80099EA4 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 /* 09AAA8 80099EA8 AFBE0058 */ sw $fp, 0x58($sp) /* 09AAAC 80099EAC AFB60050 */ sw $s6, 0x50($sp) /* 09AAB0 80099EB0 AFB5004C */ sw $s5, 0x4c($sp) @@ -19,7 +19,7 @@ glabel func_80099E8C /* 09AABC 80099EBC AFB20040 */ sw $s2, 0x40($sp) /* 09AAC0 80099EC0 AFB1003C */ sw $s1, 0x3c($sp) /* 09AAC4 80099EC4 AFB00038 */ sw $s0, 0x38($sp) -/* 09AAC8 80099EC8 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 09AAC8 80099EC8 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 09AACC 80099ECC 0C019FCB */ jal func_80067F2C /* 09AAD0 80099ED0 02E02025 */ move $a0, $s7 /* 09AAD4 80099ED4 3C0E8000 */ lui $t6, %hi(osTvType) # $t6, 0x8000 @@ -159,7 +159,7 @@ glabel func_80099E8C /* 09ACD4 8009A0D4 00004025 */ move $t0, $zero .L8009A0D8: /* 09ACD8 8009A0D8 93C40000 */ lbu $a0, ($fp) -/* 09ACDC 8009A0DC 0C01AF77 */ jal func_8006BDDC +/* 09ACDC 8009A0DC 0C01AF77 */ jal get_level_name /* 09ACE0 8009A0E0 AFA800EC */ sw $t0, 0xec($sp) /* 09ACE4 8009A0E4 904E0000 */ lbu $t6, ($v0) /* 09ACE8 8009A0E8 8FA800EC */ lw $t0, 0xec($sp) @@ -384,7 +384,7 @@ glabel func_80099E8C /* 09B034 8009A434 AFA00014 */ sw $zero, 0x14($sp) /* 09B038 8009A438 AFA00010 */ sw $zero, 0x10($sp) /* 09B03C 8009A43C 00003825 */ move $a3, $zero -/* 09B040 8009A440 0C020600 */ jal func_80081800 +/* 09B040 8009A440 0C020600 */ jal show_timestamp /* 09B044 8009A444 24A5FF89 */ addiu $a1, $a1, -0x77 /* 09B048 8009A448 240F00FF */ li $t7, 255 /* 09B04C 8009A44C 3C01800E */ lui $at, %hi(sMenuGuiOpacity) # $at, 0x800e @@ -404,7 +404,7 @@ glabel func_80099E8C /* 09B084 8009A484 AFAC0010 */ sw $t4, 0x10($sp) /* 09B088 8009A488 AFA00018 */ sw $zero, 0x18($sp) /* 09B08C 8009A48C 240700FF */ li $a3, 255 -/* 09B090 8009A490 0C020600 */ jal func_80081800 +/* 09B090 8009A490 0C020600 */ jal show_timestamp /* 09B094 8009A494 24A5FF87 */ addiu $a1, $a1, -0x79 /* 09B098 8009A498 8FB80074 */ lw $t8, 0x74($sp) /* 09B09C 8009A49C 8FAE00E4 */ lw $t6, 0xe4($sp) diff --git a/asm/non_matchings/menu/func_8009C6D4.s b/asm/non_matchings/menu/func_8009C6D4.s index 29c8047f..59dffd78 100644 --- a/asm/non_matchings/menu/func_8009C6D4.s +++ b/asm/non_matchings/menu/func_8009C6D4.s @@ -1,6 +1,6 @@ glabel func_8009C6D4 -/* 09D2D4 8009C6D4 3C08800E */ lui $t0, %hi(D_800DF750) # $t0, 0x800e -/* 09D2D8 8009C6D8 2508F750 */ addiu $t0, %lo(D_800DF750) # addiu $t0, $t0, -0x8b0 +/* 09D2D4 8009C6D4 3C08800E */ lui $t0, %hi(gAssetsMenuElementIds) # $t0, 0x800e +/* 09D2D8 8009C6D8 2508F750 */ addiu $t0, %lo(gAssetsMenuElementIds) # addiu $t0, $t0, -0x8b0 /* 09D2DC 8009C6DC 8D060000 */ lw $a2, ($t0) /* 09D2E0 8009C6E0 27BDFFC8 */ addiu $sp, $sp, -0x38 /* 09D2E4 8009C6E4 AFBF0014 */ sw $ra, 0x14($sp) @@ -13,8 +13,8 @@ glabel func_8009C6D4 /* 09D300 8009C700 24A5F754 */ addiu $a1, %lo(D_800DF754) # addiu $a1, $a1, -0x8ac /* 09D304 8009C704 A4A00000 */ sh $zero, ($a1) /* 09D308 8009C708 84A30000 */ lh $v1, ($a1) -/* 09D30C 8009C70C 3C08800E */ lui $t0, %hi(D_800DF750) # $t0, 0x800e -/* 09D310 8009C710 2508F750 */ addiu $t0, %lo(D_800DF750) # addiu $t0, $t0, -0x8b0 +/* 09D30C 8009C70C 3C08800E */ lui $t0, %hi(gAssetsMenuElementIds) # $t0, 0x800e +/* 09D310 8009C710 2508F750 */ addiu $t0, %lo(gAssetsMenuElementIds) # addiu $t0, $t0, -0x8b0 /* 09D314 8009C714 00037040 */ sll $t6, $v1, 1 /* 09D318 8009C718 AD020000 */ sw $v0, ($t0) /* 09D31C 8009C71C 004E7821 */ addu $t7, $v0, $t6 @@ -93,7 +93,7 @@ glabel func_8009C6D4 /* 09D428 8009C828 A7A00032 */ sh $zero, 0x32($sp) /* 09D42C 8009C82C 27A4002C */ addiu $a0, $sp, 0x2c /* 09D430 8009C830 00002825 */ move $a1, $zero -/* 09D434 8009C834 0C003A95 */ jal func_8000EA54 +/* 09D434 8009C834 0C003A95 */ jal spawn_object /* 09D438 8009C838 AFA70038 */ sw $a3, 0x38($sp) /* 09D43C 8009C83C 8FA70038 */ lw $a3, 0x38($sp) /* 09D440 8009C840 3C018012 */ lui $at, %hi(D_80126550) # $at, 0x8012 diff --git a/asm/non_matchings/menu/func_8009CA60.s b/asm/non_matchings/menu/func_8009CA60.s index 80fb8719..66be05e4 100644 --- a/asm/non_matchings/menu/func_8009CA60.s +++ b/asm/non_matchings/menu/func_8009CA60.s @@ -13,10 +13,10 @@ glabel func_8009CA60 /* 09D68C 8009CA8C 0005C080 */ sll $t8, $a1, 2 /* 09D690 8009CA90 01585021 */ addu $t2, $t2, $t8 /* 09D694 8009CA94 8D4A6550 */ lw $t2, %lo(D_80126550)($t2) -/* 09D698 8009CA98 3C19800E */ lui $t9, %hi(D_800DF750) # $t9, 0x800e +/* 09D698 8009CA98 3C19800E */ lui $t9, %hi(gAssetsMenuElementIds) # $t9, 0x800e /* 09D69C 8009CA9C 114000B4 */ beqz $t2, .L8009CD70 /* 09D6A0 8009CAA0 8FBF0024 */ lw $ra, 0x24($sp) -/* 09D6A4 8009CAA4 8F39F750 */ lw $t9, %lo(D_800DF750)($t9) +/* 09D6A4 8009CAA4 8F39F750 */ lw $t9, %lo(gAssetsMenuElementIds)($t9) /* 09D6A8 8009CAA8 00056040 */ sll $t4, $a1, 1 /* 09D6AC 8009CAAC 032C6821 */ addu $t5, $t9, $t4 /* 09D6B0 8009CAB0 85A20000 */ lh $v0, ($t5) @@ -32,27 +32,27 @@ glabel func_8009CA60 /* 09D6D8 8009CAD8 3C0F800E */ lui $t7, %hi(D_800DF468) # $t7, 0x800e /* 09D6DC 8009CADC A54C0000 */ sh $t4, ($t2) /* 09D6E0 8009CAE0 844D0002 */ lh $t5, 2($v0) -/* 09D6E4 8009CAE4 3C108012 */ lui $s0, %hi(D_801263A0) # $s0, 0x8012 +/* 09D6E4 8009CAE4 3C108012 */ lui $s0, %hi(sMenuCurrDisplayList) # $s0, 0x8012 /* 09D6E8 8009CAE8 A54D0002 */ sh $t5, 2($t2) /* 09D6EC 8009CAEC 844E0004 */ lh $t6, 4($v0) -/* 09D6F0 8009CAF0 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 +/* 09D6F0 8009CAF0 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 /* 09D6F4 8009CAF4 A54E0004 */ sh $t6, 4($t2) /* 09D6F8 8009CAF8 C444000C */ lwc1 $f4, 0xc($v0) -/* 09D6FC 8009CAFC 3C068012 */ lui $a2, %hi(D_801263AC) # $a2, 0x8012 +/* 09D6FC 8009CAFC 3C068012 */ lui $a2, %hi(sMenuCurrHudVerts) # $a2, 0x8012 /* 09D700 8009CB00 E544000C */ swc1 $f4, 0xc($t2) /* 09D704 8009CB04 C4460010 */ lwc1 $f6, 0x10($v0) /* 09D708 8009CB08 01403825 */ move $a3, $t2 /* 09D70C 8009CB0C E5460010 */ swc1 $f6, 0x10($t2) /* 09D710 8009CB10 C4480014 */ lwc1 $f8, 0x14($v0) -/* 09D714 8009CB14 260463A0 */ addiu $a0, $s0, %lo(D_801263A0) +/* 09D714 8009CB14 260463A0 */ addiu $a0, $s0, %lo(sMenuCurrDisplayList) /* 09D718 8009CB18 E5480014 */ swc1 $f8, 0x14($t2) /* 09D71C 8009CB1C C44A0008 */ lwc1 $f10, 8($v0) /* 09D720 8009CB20 3C0C800E */ lui $t4, %hi(sMenuGuiOpacity) # $t4, 0x800e /* 09D724 8009CB24 E54A0008 */ swc1 $f10, 8($t2) /* 09D728 8009CB28 8DEFF468 */ lw $t7, %lo(D_800DF468)($t7) -/* 09D72C 8009CB2C 24C663AC */ addiu $a2, %lo(D_801263AC) # addiu $a2, $a2, 0x63ac +/* 09D72C 8009CB2C 24C663AC */ addiu $a2, %lo(sMenuCurrHudVerts) # addiu $a2, $a2, 0x63ac /* 09D730 8009CB30 15E00007 */ bnez $t7, .L8009CB50 -/* 09D734 8009CB34 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 09D734 8009CB34 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 09D738 8009CB38 8058001D */ lb $t8, 0x1d($v0) /* 09D73C 8009CB3C 00000000 */ nop /* 09D740 8009CB40 A5580018 */ sh $t8, 0x18($t2) @@ -67,8 +67,8 @@ glabel func_8009CA60 /* 09D760 8009CB60 8FBF0024 */ lw $ra, 0x24($sp) .L8009CB64: /* 09D764 8009CB64 11A00034 */ beqz $t5, .L8009CC38 -/* 09D768 8009CB68 3C108012 */ lui $s0, %hi(D_801263A0) # $s0, 0x8012 -/* 09D76C 8009CB6C 261063A0 */ addiu $s0, %lo(D_801263A0) # addiu $s0, $s0, 0x63a0 +/* 09D768 8009CB68 3C108012 */ lui $s0, %hi(sMenuCurrDisplayList) # $s0, 0x8012 +/* 09D76C 8009CB6C 261063A0 */ addiu $s0, %lo(sMenuCurrDisplayList) # addiu $s0, $s0, 0x63a0 /* 09D770 8009CB70 8E020000 */ lw $v0, ($s0) /* 09D774 8009CB74 3C0FFA00 */ lui $t7, 0xfa00 /* 09D778 8009CB78 244E0008 */ addiu $t6, $v0, 8 @@ -101,11 +101,11 @@ glabel func_8009CA60 /* 09D7E4 8009CBE4 3C18800E */ lui $t8, %hi(D_800DF4B4) # $t8, 0x800e /* 09D7E8 8009CBE8 8F18F4B4 */ lw $t8, %lo(D_800DF4B4)($t8) /* 09D7EC 8009CBEC 8D6D0000 */ lw $t5, ($t3) -/* 09D7F0 8009CBF0 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 09D7F4 8009CBF4 3C068012 */ lui $a2, %hi(D_801263AC) # $a2, 0x8012 +/* 09D7F0 8009CBF0 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 09D7F4 8009CBF4 3C068012 */ lui $a2, %hi(sMenuCurrHudVerts) # $a2, 0x8012 /* 09D7F8 8009CBF8 000CC940 */ sll $t9, $t4, 5 -/* 09D7FC 8009CBFC 24C663AC */ addiu $a2, %lo(D_801263AC) # addiu $a2, $a2, 0x63ac -/* 09D800 8009CC00 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 09D7FC 8009CBFC 24C663AC */ addiu $a2, %lo(sMenuCurrHudVerts) # addiu $a2, $a2, 0x63ac +/* 09D800 8009CC00 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 09D804 8009CC04 AFAA0010 */ sw $t2, 0x10($sp) /* 09D808 8009CC08 02002025 */ move $a0, $s0 /* 09D80C 8009CC0C AFB80014 */ sw $t8, 0x14($sp) @@ -123,12 +123,12 @@ glabel func_8009CA60 /* 09D838 8009CC38 3C09800E */ lui $t1, %hi(sMenuGuiOpacity) # $t1, 0x800e /* 09D83C 8009CC3C 2529F764 */ addiu $t1, %lo(sMenuGuiOpacity) # addiu $t1, $t1, -0x89c /* 09D840 8009CC40 8D390000 */ lw $t9, ($t1) -/* 09D844 8009CC44 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 +/* 09D844 8009CC44 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 /* 09D848 8009CC48 2B2100FF */ slti $at, $t9, 0xff /* 09D84C 8009CC4C 1020000E */ beqz $at, .L8009CC88 -/* 09D850 8009CC50 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 -/* 09D854 8009CC54 3C108012 */ lui $s0, %hi(D_801263A0) # $s0, 0x8012 -/* 09D858 8009CC58 261063A0 */ addiu $s0, %lo(D_801263A0) # addiu $s0, $s0, 0x63a0 +/* 09D850 8009CC50 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 +/* 09D854 8009CC54 3C108012 */ lui $s0, %hi(sMenuCurrDisplayList) # $s0, 0x8012 +/* 09D858 8009CC58 261063A0 */ addiu $s0, %lo(sMenuCurrDisplayList) # addiu $s0, $s0, 0x63a0 /* 09D85C 8009CC5C 8E020000 */ lw $v0, ($s0) /* 09D860 8009CC60 3C18FA00 */ lui $t8, 0xfa00 /* 09D864 8009CC64 244D0008 */ addiu $t5, $v0, 8 @@ -141,8 +141,8 @@ glabel func_8009CA60 /* 09D880 8009CC80 1000000A */ b .L8009CCAC /* 09D884 8009CC84 AC4C0004 */ sw $t4, 4($v0) .L8009CC88: -/* 09D888 8009CC88 3C108012 */ lui $s0, %hi(D_801263A0) # $s0, 0x8012 -/* 09D88C 8009CC8C 261063A0 */ addiu $s0, %lo(D_801263A0) # addiu $s0, $s0, 0x63a0 +/* 09D888 8009CC88 3C108012 */ lui $s0, %hi(sMenuCurrDisplayList) # $s0, 0x8012 +/* 09D88C 8009CC8C 261063A0 */ addiu $s0, %lo(sMenuCurrDisplayList) # addiu $s0, $s0, 0x63a0 /* 09D890 8009CC90 8E020000 */ lw $v0, ($s0) /* 09D894 8009CC94 3C0DFA00 */ lui $t5, 0xfa00 /* 09D898 8009CC98 24590008 */ addiu $t9, $v0, 8 diff --git a/asm/non_matchings/menu/func_8009CD7C.s b/asm/non_matchings/menu/func_8009CD7C.s index 3182035e..6c80dbac 100644 --- a/asm/non_matchings/menu/func_8009CD7C.s +++ b/asm/non_matchings/menu/func_8009CD7C.s @@ -24,8 +24,8 @@ glabel func_8009CD7C /* 09D9D0 8009CDD0 0000B025 */ move $s6, $zero /* 09D9D4 8009CDD4 18C00058 */ blez $a2, .L8009CF38 /* 09D9D8 8009CDD8 0000B825 */ move $s7, $zero -/* 09D9DC 8009CDDC 3C118012 */ lui $s1, %hi(D_801263A0) # $s1, 0x8012 -/* 09D9E0 8009CDE0 263163A0 */ addiu $s1, %lo(D_801263A0) # addiu $s1, $s1, 0x63a0 +/* 09D9DC 8009CDDC 3C118012 */ lui $s1, %hi(sMenuCurrDisplayList) # $s1, 0x8012 +/* 09D9E0 8009CDE0 263163A0 */ addiu $s1, %lo(sMenuCurrDisplayList) # addiu $s1, $s1, 0x63a0 .L8009CDE4: /* 09D9E4 8009CDE4 8EB90038 */ lw $t9, 0x38($s5) /* 09D9E8 8009CDE8 2401FFFF */ li $at, -1 diff --git a/asm/non_matchings/menu/load_menu_text.s b/asm/non_matchings/menu/load_menu_text.s index 02572835..101e01dc 100644 --- a/asm/non_matchings/menu/load_menu_text.s +++ b/asm/non_matchings/menu/load_menu_text.s @@ -217,13 +217,13 @@ glabel load_menu_text /* 080834 8007FC34 24A5FB74 */ addiu $a1, %lo(D_800DFB74) # addiu $a1, $a1, -0x48c /* 080838 8007FC38 AD0B0004 */ sw $t3, 4($t0) /* 08083C 8007FC3C 8C8C0188 */ lw $t4, 0x188($a0) -/* 080840 8007FC40 3C01800E */ lui $at, %hi(D_800E09B0) # $at, 0x800e +/* 080840 8007FC40 3C01800E */ lui $at, %hi(sBadControllerPakMenuText) # $at, 0x800e /* 080844 8007FC44 AD0C000C */ sw $t4, 0xc($t0) /* 080848 8007FC48 8C8D0168 */ lw $t5, 0x168($a0) -/* 08084C 8007FC4C 3C09800E */ lui $t1, %hi(D_800E09EC) # $t1, 0x800e +/* 08084C 8007FC4C 3C09800E */ lui $t1, %hi(sCorruptDataMenuText) # $t1, 0x800e /* 080850 8007FC50 AC4D0000 */ sw $t5, ($v0) /* 080854 8007FC54 8C8E018C */ lw $t6, 0x18c($a0) -/* 080858 8007FC58 252909EC */ addiu $t1, %lo(D_800E09EC) # addiu $t1, $t1, 0x9ec +/* 080858 8007FC58 252909EC */ addiu $t1, %lo(sCorruptDataMenuText) # addiu $t1, $t1, 0x9ec /* 08085C 8007FC5C AC4E0004 */ sw $t6, 4($v0) /* 080860 8007FC60 8C8F0190 */ lw $t7, 0x190($a0) /* 080864 8007FC64 3C08800E */ lui $t0, %hi(D_800E09F8) # $t0, 0x800e @@ -280,10 +280,10 @@ glabel load_menu_text /* 080930 8007FD30 00000000 */ nop /* 080934 8007FD34 ACF80010 */ sw $t8, 0x10($a3) /* 080938 8007FD38 8C9901A0 */ lw $t9, 0x1a0($a0) -/* 08093C 8007FD3C 3C07800E */ lui $a3, %hi(D_800E09D8) # $a3, 0x800e +/* 08093C 8007FD3C 3C07800E */ lui $a3, %hi(sNoControllerPakMenuText) # $a3, 0x800e /* 080940 8007FD40 AC590000 */ sw $t9, ($v0) /* 080944 8007FD44 8C8A01A4 */ lw $t2, 0x1a4($a0) -/* 080948 8007FD48 24E709D8 */ addiu $a3, %lo(D_800E09D8) # addiu $a3, $a3, 0x9d8 +/* 080948 8007FD48 24E709D8 */ addiu $a3, %lo(sNoControllerPakMenuText) # addiu $a3, $a3, 0x9d8 /* 08094C 8007FD4C AC4A0004 */ sw $t2, 4($v0) /* 080950 8007FD50 8C8B01A8 */ lw $t3, 0x1a8($a0) /* 080954 8007FD54 00000000 */ nop @@ -307,10 +307,10 @@ glabel load_menu_text /* 08099C 8007FD9C 00000000 */ nop /* 0809A0 8007FDA0 ACD90004 */ sw $t9, 4($a2) /* 0809A4 8007FDA4 8C8A0130 */ lw $t2, 0x130($a0) -/* 0809A8 8007FDA8 3C06800E */ lui $a2, %hi(D_800E09C4) # $a2, 0x800e +/* 0809A8 8007FDA8 3C06800E */ lui $a2, %hi(sControllerPakFullMenuText) # $a2, 0x800e /* 0809AC 8007FDAC ACAA0014 */ sw $t2, 0x14($a1) /* 0809B0 8007FDB0 8C8B0130 */ lw $t3, 0x130($a0) -/* 0809B4 8007FDB4 24C609C4 */ addiu $a2, %lo(D_800E09C4) # addiu $a2, $a2, 0x9c4 +/* 0809B4 8007FDB4 24C609C4 */ addiu $a2, %lo(sControllerPakFullMenuText) # addiu $a2, $a2, 0x9c4 /* 0809B8 8007FDB8 ACAB0034 */ sw $t3, 0x34($a1) /* 0809BC 8007FDBC 8C8C0238 */ lw $t4, 0x238($a0) /* 0809C0 8007FDC0 00000000 */ nop @@ -319,10 +319,10 @@ glabel load_menu_text /* 0809CC 8007FDCC 00000000 */ nop /* 0809D0 8007FDD0 ACAD00B4 */ sw $t5, 0xb4($a1) /* 0809D4 8007FDD4 8C8E0130 */ lw $t6, 0x130($a0) -/* 0809D8 8007FDD8 3C05800E */ lui $a1, %hi(D_800E09B0) # $a1, 0x800e +/* 0809D8 8007FDD8 3C05800E */ lui $a1, %hi(sBadControllerPakMenuText) # $a1, 0x800e /* 0809DC 8007FDDC AC6E0014 */ sw $t6, 0x14($v1) /* 0809E0 8007FDE0 8C8F0130 */ lw $t7, 0x130($a0) -/* 0809E4 8007FDE4 24A509B0 */ addiu $a1, %lo(D_800E09B0) # addiu $a1, $a1, 0x9b0 +/* 0809E4 8007FDE4 24A509B0 */ addiu $a1, %lo(sBadControllerPakMenuText) # addiu $a1, $a1, 0x9b0 /* 0809E8 8007FDE8 AC6F0034 */ sw $t7, 0x34($v1) /* 0809EC 8007FDEC 8C980238 */ lw $t8, 0x238($a0) /* 0809F0 8007FDF0 00000000 */ nop @@ -334,18 +334,18 @@ glabel load_menu_text /* 080A08 8007FE08 00000000 */ nop /* 080A0C 8007FE0C AC6A00F4 */ sw $t2, 0xf4($v1) /* 080A10 8007FE10 8C8B0114 */ lw $t3, 0x114($a0) -/* 080A14 8007FE14 3C03800E */ lui $v1, %hi(D_800E09EC) # $v1, 0x800e -/* 080A18 8007FE18 AC2B09B0 */ sw $t3, %lo(D_800E09B0)($at) +/* 080A14 8007FE14 3C03800E */ lui $v1, %hi(sCorruptDataMenuText) # $v1, 0x800e +/* 080A18 8007FE18 AC2B09B0 */ sw $t3, %lo(sBadControllerPakMenuText)($at) /* 080A1C 8007FE1C 8C8C0110 */ lw $t4, 0x110($a0) -/* 080A20 8007FE20 3C01800E */ lui $at, %hi(D_800E09C4) # $at, 0x800e -/* 080A24 8007FE24 AC2C09C4 */ sw $t4, %lo(D_800E09C4)($at) +/* 080A20 8007FE20 3C01800E */ lui $at, %hi(sControllerPakFullMenuText) # $at, 0x800e +/* 080A24 8007FE24 AC2C09C4 */ sw $t4, %lo(sControllerPakFullMenuText)($at) /* 080A28 8007FE28 8C8D010C */ lw $t5, 0x10c($a0) -/* 080A2C 8007FE2C 3C01800E */ lui $at, %hi(D_800E09D8) # $at, 0x800e -/* 080A30 8007FE30 AC2D09D8 */ sw $t5, %lo(D_800E09D8)($at) +/* 080A2C 8007FE2C 3C01800E */ lui $at, %hi(sNoControllerPakMenuText) # $at, 0x800e +/* 080A30 8007FE30 AC2D09D8 */ sw $t5, %lo(sNoControllerPakMenuText)($at) /* 080A34 8007FE34 8C8E02E0 */ lw $t6, 0x2e0($a0) /* 080A38 8007FE38 AD200010 */ sw $zero, 0x10($t1) /* 080A3C 8007FE3C AD200014 */ sw $zero, 0x14($t1) -/* 080A40 8007FE40 246309EC */ addiu $v1, %lo(D_800E09EC) # addiu $v1, $v1, 0x9ec +/* 080A40 8007FE40 246309EC */ addiu $v1, %lo(sCorruptDataMenuText) # addiu $v1, $v1, 0x9ec /* 080A44 8007FE44 AD2E0000 */ sw $t6, ($t1) .L8007FE48: /* 080A48 8007FE48 8C4F02C4 */ lw $t7, 0x2c4($v0) @@ -366,9 +366,9 @@ glabel load_menu_text /* 080A84 8007FE84 8D2B0000 */ lw $t3, ($t1) /* 080A88 8007FE88 00003025 */ move $a2, $zero /* 080A8C 8007FE8C 11600007 */ beqz $t3, .L8007FEAC -/* 080A90 8007FE90 3C02800E */ lui $v0, %hi(D_800E0A04) # $v0, 0x800e -/* 080A94 8007FE94 3C03800E */ lui $v1, %hi(D_800E09EC) # $v1, 0x800e -/* 080A98 8007FE98 246309EC */ addiu $v1, %lo(D_800E09EC) # addiu $v1, $v1, 0x9ec +/* 080A90 8007FE90 3C02800E */ lui $v0, %hi(sInsertControllerPakMenuText) # $v0, 0x800e +/* 080A94 8007FE94 3C03800E */ lui $v1, %hi(sCorruptDataMenuText) # $v1, 0x800e +/* 080A98 8007FE98 246309EC */ addiu $v1, %lo(sCorruptDataMenuText) # addiu $v1, $v1, 0x9ec .L8007FE9C: /* 080A9C 8007FE9C 8C6C0004 */ lw $t4, 4($v1) /* 080AA0 8007FEA0 24C60001 */ addiu $a2, $a2, 1 @@ -380,13 +380,13 @@ glabel load_menu_text /* 080AB4 8007FEB4 012E7821 */ addu $t7, $t1, $t6 /* 080AB8 8007FEB8 ADED0000 */ sw $t5, ($t7) /* 080ABC 8007FEBC 8C98027C */ lw $t8, 0x27c($a0) -/* 080AC0 8007FEC0 24420A04 */ addiu $v0, %lo(D_800E0A04) # addiu $v0, $v0, 0xa04 +/* 080AC0 8007FEC0 24420A04 */ addiu $v0, %lo(sInsertControllerPakMenuText) # addiu $v0, $v0, 0xa04 /* 080AC4 8007FEC4 AC580000 */ sw $t8, ($v0) /* 080AC8 8007FEC8 8C990280 */ lw $t9, 0x280($a0) -/* 080ACC 8007FECC 3C03800E */ lui $v1, %hi(D_800E0A14) # $v1, 0x800e +/* 080ACC 8007FECC 3C03800E */ lui $v1, %hi(sInsertRumblePakMenuText) # $v1, 0x800e /* 080AD0 8007FED0 AC590004 */ sw $t9, 4($v0) /* 080AD4 8007FED4 8C8A0288 */ lw $t2, 0x288($a0) -/* 080AD8 8007FED8 24630A14 */ addiu $v1, %lo(D_800E0A14) # addiu $v1, $v1, 0xa14 +/* 080AD8 8007FED8 24630A14 */ addiu $v1, %lo(sInsertRumblePakMenuText) # addiu $v1, $v1, 0xa14 /* 080ADC 8007FEDC AC4A0008 */ sw $t2, 8($v0) /* 080AE0 8007FEE0 8C8B027C */ lw $t3, 0x27c($a0) /* 080AE4 8007FEE4 3C05800E */ lui $a1, %hi(gCautionMenuTextElements) # $a1, 0x800e diff --git a/asm/non_matchings/menu/menu_23_loop.s b/asm/non_matchings/menu/menu_23_loop.s index c0037d47..2093deb5 100644 --- a/asm/non_matchings/menu/menu_23_loop.s +++ b/asm/non_matchings/menu/menu_23_loop.s @@ -101,9 +101,9 @@ glabel menu_23_loop /* 09BA6C 8009AE6C 128E001D */ beq $s4, $t6, .L8009AEE4 /* 09BA70 8009AE70 00008025 */ move $s0, $zero /* 09BA74 8009AE74 3C16800E */ lui $s6, %hi(D_800E0AF0) # $s6, 0x800e -/* 09BA78 8009AE78 3C158012 */ lui $s5, %hi(D_801263A0) # $s5, 0x8012 +/* 09BA78 8009AE78 3C158012 */ lui $s5, %hi(sMenuCurrDisplayList) # $s5, 0x8012 /* 09BA7C 8009AE7C 80510000 */ lb $s1, ($v0) -/* 09BA80 8009AE80 26B563A0 */ addiu $s5, %lo(D_801263A0) # addiu $s5, $s5, 0x63a0 +/* 09BA80 8009AE80 26B563A0 */ addiu $s5, %lo(sMenuCurrDisplayList) # addiu $s5, $s5, 0x63a0 /* 09BA84 8009AE84 26D60AF0 */ addiu $s6, %lo(D_800E0AF0) # addiu $s6, $s6, 0xaf0 /* 09BA88 8009AE88 24120010 */ li $s2, 16 /* 09BA8C 8009AE8C 00117880 */ sll $t7, $s1, 2 diff --git a/asm/non_matchings/menu/menu_5_loop.s b/asm/non_matchings/menu/menu_5_loop.s deleted file mode 100644 index 3504220c..00000000 --- a/asm/non_matchings/menu/menu_5_loop.s +++ /dev/null @@ -1,290 +0,0 @@ -glabel menu_5_loop -/* 094200 80093600 3C0E8012 */ lui $t6, %hi(D_801263E0) # $t6, 0x8012 -/* 094204 80093604 8DCE63E0 */ lw $t6, %lo(D_801263E0)($t6) -/* 094208 80093608 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 09420C 8009360C AFBF0014 */ sw $ra, 0x14($sp) -/* 094210 80093610 05C10007 */ bgez $t6, .L80093630 -/* 094214 80093614 AFA40038 */ sw $a0, 0x38($sp) -/* 094218 80093618 3C02800E */ lui $v0, %hi(gTrackIdForPreview) # $v0, 0x800e -/* 09421C 8009361C 8C42F4C4 */ lw $v0, %lo(gTrackIdForPreview)($v0) -/* 094220 80093620 00000000 */ nop -/* 094224 80093624 344F0080 */ ori $t7, $v0, 0x80 -/* 094228 80093628 100000F4 */ b .L800939FC -/* 09422C 8009362C 01E01025 */ move $v0, $t7 -.L80093630: -/* 094230 80093630 0C01BAA4 */ jal get_settings -/* 094234 80093634 00000000 */ nop -/* 094238 80093638 3C19800E */ lui $t9, %hi(gTrackIdForPreview) # $t9, 0x800e -/* 09423C 8009363C 8F39F4C4 */ lw $t9, %lo(gTrackIdForPreview)($t9) -/* 094240 80093640 8C58004C */ lw $t8, 0x4c($v0) -/* 094244 80093644 00403025 */ move $a2, $v0 -/* 094248 80093648 03194021 */ addu $t0, $t8, $t9 -/* 09424C 8009364C 81040002 */ lb $a0, 2($t0) -/* 094250 80093650 AFA00028 */ sw $zero, 0x28($sp) -/* 094254 80093654 8C490004 */ lw $t1, 4($v0) -/* 094258 80093658 00045080 */ sll $t2, $a0, 2 -/* 09425C 8009365C 012A5821 */ addu $t3, $t1, $t2 -/* 094260 80093660 8D630000 */ lw $v1, ($t3) -/* 094264 80093664 00002825 */ move $a1, $zero -/* 094268 80093668 306C0002 */ andi $t4, $v1, 2 -/* 09426C 8009366C 11800002 */ beqz $t4, .L80093678 -/* 094270 80093670 306D0004 */ andi $t5, $v1, 4 -/* 094274 80093674 24050001 */ li $a1, 1 -.L80093678: -/* 094278 80093678 11A00002 */ beqz $t5, .L80093684 -/* 09427C 8009367C 00000000 */ nop -/* 094280 80093680 24050002 */ li $a1, 2 -.L80093684: -/* 094284 80093684 AFA40024 */ sw $a0, 0x24($sp) -/* 094288 80093688 AFA5001C */ sw $a1, 0x1c($sp) -/* 09428C 8009368C 0C01AC53 */ jal func_8006B14C -/* 094290 80093690 AFA60018 */ sw $a2, 0x18($sp) -/* 094294 80093694 8FA60018 */ lw $a2, 0x18($sp) -/* 094298 80093698 304E0040 */ andi $t6, $v0, 0x40 -/* 09429C 8009369C 11C00002 */ beqz $t6, .L800936A8 -/* 0942A0 800936A0 240F0001 */ li $t7, 1 -/* 0942A4 800936A4 AFAF0028 */ sw $t7, 0x28($sp) -.L800936A8: -/* 0942A8 800936A8 AFA00020 */ sw $zero, 0x20($sp) -/* 0942AC 800936AC 0C003932 */ jal is_time_trial_enabled -/* 0942B0 800936B0 AFA60018 */ sw $a2, 0x18($sp) -/* 0942B4 800936B4 8FA60018 */ lw $a2, 0x18($sp) -/* 0942B8 800936B8 1440000F */ bnez $v0, .L800936F8 -/* 0942BC 800936BC 00000000 */ nop -/* 0942C0 800936C0 8FB8001C */ lw $t8, 0x1c($sp) -/* 0942C4 800936C4 24010001 */ li $at, 1 -/* 0942C8 800936C8 1701000B */ bne $t8, $at, .L800936F8 -/* 0942CC 800936CC 00000000 */ nop -/* 0942D0 800936D0 90C20048 */ lbu $v0, 0x48($a2) -/* 0942D4 800936D4 24010005 */ li $at, 5 -/* 0942D8 800936D8 10410005 */ beq $v0, $at, .L800936F0 -/* 0942DC 800936DC 24080001 */ li $t0, 1 -/* 0942E0 800936E0 94D9000C */ lhu $t9, 0xc($a2) -/* 0942E4 800936E4 00484804 */ sllv $t1, $t0, $v0 -/* 0942E8 800936E8 03295024 */ and $t2, $t9, $t1 -/* 0942EC 800936EC 11400002 */ beqz $t2, .L800936F8 -.L800936F0: -/* 0942F0 800936F0 240B0001 */ li $t3, 1 -/* 0942F4 800936F4 AFAB0020 */ sw $t3, 0x20($sp) -.L800936F8: -/* 0942F8 800936F8 3C028012 */ lui $v0, %hi(D_801263BC) # $v0, 0x8012 -/* 0942FC 800936FC 244263BC */ addiu $v0, %lo(D_801263BC) # addiu $v0, $v0, 0x63bc -/* 094300 80093700 8FA40038 */ lw $a0, 0x38($sp) -/* 094304 80093704 8C4C0000 */ lw $t4, ($v0) -/* 094308 80093708 8FA5001C */ lw $a1, 0x1c($sp) -/* 09430C 8009370C 01846821 */ addu $t5, $t4, $a0 -/* 094310 80093710 31AE003F */ andi $t6, $t5, 0x3f -/* 094314 80093714 8FA60020 */ lw $a2, 0x20($sp) -/* 094318 80093718 0C024BA5 */ jal func_80092E94 -/* 09431C 8009371C AC4E0000 */ sw $t6, ($v0) -/* 094320 80093720 8FAF001C */ lw $t7, 0x1c($sp) -/* 094324 80093724 8FA40024 */ lw $a0, 0x24($sp) -/* 094328 80093728 29E10002 */ slti $at, $t7, 2 -/* 09432C 8009372C 10200005 */ beqz $at, .L80093744 -/* 094330 80093730 00000000 */ nop -/* 094334 80093734 0C01AC2B */ jal func_8006B0AC -/* 094338 80093738 00000000 */ nop -/* 09433C 8009373C 3C018012 */ lui $at, %hi(gPlayerSelectVehicle) # $at, 0x8012 -/* 094340 80093740 A02269C0 */ sb $v0, %lo(gPlayerSelectVehicle)($at) -.L80093744: -/* 094344 80093744 3C038012 */ lui $v1, %hi(gPlayerSelectVehicle) # $v1, 0x8012 -/* 094348 80093748 806369C0 */ lb $v1, %lo(gPlayerSelectVehicle)($v1) -/* 09434C 8009374C 8FA40024 */ lw $a0, 0x24($sp) -/* 094350 80093750 0C01AC3E */ jal func_8006B0F8 -/* 094354 80093754 AFA30034 */ sw $v1, 0x34($sp) -/* 094358 80093758 8FA30034 */ lw $v1, 0x34($sp) -/* 09435C 8009375C AFA20030 */ sw $v0, 0x30($sp) -/* 094360 80093760 0C02393B */ jal func_8008E4EC -/* 094364 80093764 AFA3002C */ sw $v1, 0x2c($sp) -/* 094368 80093768 3C06800E */ lui $a2, %hi(gMenuDelay) # $a2, 0x800e -/* 09436C 8009376C 24C6F47C */ addiu $a2, %lo(gMenuDelay) # addiu $a2, $a2, -0xb84 -/* 094370 80093770 8CC20000 */ lw $v0, ($a2) -/* 094374 80093774 8FA30034 */ lw $v1, 0x34($sp) -/* 094378 80093778 8FA40030 */ lw $a0, 0x30($sp) -/* 09437C 8009377C 8FA5002C */ lw $a1, 0x2c($sp) -/* 094380 80093780 1440007B */ bnez $v0, .L80093970 -/* 094384 80093784 3C078012 */ lui $a3, %hi(D_801263E0) # $a3, 0x8012 -/* 094388 80093788 24E763E0 */ addiu $a3, %lo(D_801263E0) # addiu $a3, $a3, 0x63e0 -/* 09438C 8009378C 8CF80000 */ lw $t8, ($a3) -/* 094390 80093790 8FA80020 */ lw $t0, 0x20($sp) -/* 094394 80093794 17000007 */ bnez $t8, .L800937B4 -/* 094398 80093798 3C028012 */ lui $v0, %hi(D_801267D8) # $v0, 0x8012 -/* 09439C 8009379C 15000005 */ bnez $t0, .L800937B4 -/* 0943A0 800937A0 00000000 */ nop -/* 0943A4 800937A4 8FB90028 */ lw $t9, 0x28($sp) -/* 0943A8 800937A8 00000000 */ nop -/* 0943AC 800937AC 1320002F */ beqz $t9, .L8009386C -/* 0943B0 800937B0 00000000 */ nop -.L800937B4: -/* 0943B4 800937B4 8C4267D8 */ lw $v0, %lo(D_801267D8)($v0) -/* 0943B8 800937B8 8FAA0028 */ lw $t2, 0x28($sp) -/* 0943BC 800937BC 30499000 */ andi $t1, $v0, 0x9000 -/* 0943C0 800937C0 11200011 */ beqz $t1, .L80093808 -/* 0943C4 800937C4 304C4000 */ andi $t4, $v0, 0x4000 -/* 0943C8 800937C8 11400006 */ beqz $t2, .L800937E4 -/* 0943CC 800937CC 240B0001 */ li $t3, 1 -/* 0943D0 800937D0 0C030C7B */ jal func_800C31EC -/* 0943D4 800937D4 24042710 */ li $a0, 10000 -/* 0943D8 800937D8 3C06800E */ lui $a2, %hi(gMenuDelay) # $a2, 0x800e -/* 0943DC 800937DC 24C6F47C */ addiu $a2, %lo(gMenuDelay) # addiu $a2, $a2, -0xb84 -/* 0943E0 800937E0 240B0001 */ li $t3, 1 -.L800937E4: -/* 0943E4 800937E4 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 0943E8 800937E8 ACCB0000 */ sw $t3, ($a2) -/* 0943EC 800937EC 0C030076 */ jal func_800C01D8 -/* 0943F0 800937F0 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 0943F4 800937F4 240400EF */ li $a0, 239 -/* 0943F8 800937F8 0C000741 */ jal func_80001D04 -/* 0943FC 800937FC 00002825 */ move $a1, $zero -/* 094400 80093800 1000007B */ b .L800939F0 -/* 094404 80093804 00000000 */ nop -.L80093808: -/* 094408 80093808 11800079 */ beqz $t4, .L800939F0 -/* 09440C 8009380C 24040241 */ li $a0, 577 -/* 094410 80093810 0C000741 */ jal func_80001D04 -/* 094414 80093814 00002825 */ move $a1, $zero -/* 094418 80093818 8FAD0020 */ lw $t5, 0x20($sp) -/* 09441C 8009381C 8FAE0028 */ lw $t6, 0x28($sp) -/* 094420 80093820 15A00004 */ bnez $t5, .L80093834 -/* 094424 80093824 8FAF0028 */ lw $t7, 0x28($sp) -/* 094428 80093828 11C0000E */ beqz $t6, .L80093864 -/* 09442C 8009382C 3C018012 */ lui $at, %hi(D_801263E0) # $at, 0x8012 -/* 094430 80093830 8FAF0028 */ lw $t7, 0x28($sp) -.L80093834: -/* 094434 80093834 00000000 */ nop -/* 094438 80093838 11E00003 */ beqz $t7, .L80093848 -/* 09443C 8009383C 00000000 */ nop -/* 094440 80093840 0C030C7B */ jal func_800C31EC -/* 094444 80093844 24042710 */ li $a0, 10000 -.L80093848: -/* 094448 80093848 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 09444C 8009384C 0C030076 */ jal func_800C01D8 -/* 094450 80093850 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 094454 80093854 2418FFFF */ li $t8, -1 -/* 094458 80093858 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 09445C 8009385C 10000064 */ b .L800939F0 -/* 094460 80093860 AC38F47C */ sw $t8, %lo(gMenuDelay)($at) -.L80093864: -/* 094464 80093864 10000062 */ b .L800939F0 -/* 094468 80093868 AC2063E0 */ sw $zero, %lo(D_801263E0)($at) -.L8009386C: -/* 09446C 8009386C 3C028012 */ lui $v0, %hi(D_801267D8) # $v0, 0x8012 -/* 094470 80093870 8C4267D8 */ lw $v0, %lo(D_801267D8)($v0) -/* 094474 80093874 00000000 */ nop -/* 094478 80093878 30484000 */ andi $t0, $v0, 0x4000 -/* 09447C 8009387C 1100000B */ beqz $t0, .L800938AC -/* 094480 80093880 30499000 */ andi $t1, $v0, 0x9000 -/* 094484 80093884 24040241 */ li $a0, 577 -/* 094488 80093888 0C000741 */ jal func_80001D04 -/* 09448C 8009388C 00002825 */ move $a1, $zero -/* 094490 80093890 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 094494 80093894 0C030076 */ jal func_800C01D8 -/* 094498 80093898 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 09449C 8009389C 2419FFFF */ li $t9, -1 -/* 0944A0 800938A0 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 0944A4 800938A4 10000052 */ b .L800939F0 -/* 0944A8 800938A8 AC39F47C */ sw $t9, %lo(gMenuDelay)($at) -.L800938AC: -/* 0944AC 800938AC 11200007 */ beqz $t1, .L800938CC -/* 0944B0 800938B0 240A0001 */ li $t2, 1 -/* 0944B4 800938B4 ACEA0000 */ sw $t2, ($a3) -/* 0944B8 800938B8 24040131 */ li $a0, 305 -/* 0944BC 800938BC 0C000741 */ jal func_80001D04 -/* 0944C0 800938C0 00002825 */ move $a1, $zero -/* 0944C4 800938C4 1000004A */ b .L800939F0 -/* 0944C8 800938C8 00000000 */ nop -.L800938CC: -/* 0944CC 800938CC 8FAB001C */ lw $t3, 0x1c($sp) -/* 0944D0 800938D0 3C028012 */ lui $v0, %hi(D_80126830) # $v0, 0x8012 -/* 0944D4 800938D4 29610002 */ slti $at, $t3, 2 -/* 0944D8 800938D8 14200045 */ bnez $at, .L800939F0 -/* 0944DC 800938DC 00000000 */ nop -/* 0944E0 800938E0 84426830 */ lh $v0, %lo(D_80126830)($v0) -/* 0944E4 800938E4 00000000 */ nop -/* 0944E8 800938E8 18400009 */ blez $v0, .L80093910 -/* 0944EC 800938EC 00000000 */ nop -.L800938F0: -/* 0944F0 800938F0 2463FFFF */ addiu $v1, $v1, -1 -/* 0944F4 800938F4 240C0001 */ li $t4, 1 -/* 0944F8 800938F8 006C6804 */ sllv $t5, $t4, $v1 -/* 0944FC 800938FC 01A47024 */ and $t6, $t5, $a0 -/* 094500 80093900 15C00003 */ bnez $t6, .L80093910 -/* 094504 80093904 00000000 */ nop -/* 094508 80093908 0461FFF9 */ bgez $v1, .L800938F0 -/* 09450C 8009390C 00000000 */ nop -.L80093910: -/* 094510 80093910 04410009 */ bgez $v0, .L80093938 -/* 094514 80093914 00000000 */ nop -.L80093918: -/* 094518 80093918 24630001 */ addiu $v1, $v1, 1 -/* 09451C 8009391C 240F0001 */ li $t7, 1 -/* 094520 80093920 006FC004 */ sllv $t8, $t7, $v1 -/* 094524 80093924 03044024 */ and $t0, $t8, $a0 -/* 094528 80093928 15000003 */ bnez $t0, .L80093938 -/* 09452C 8009392C 28610003 */ slti $at, $v1, 3 -/* 094530 80093930 1420FFF9 */ bnez $at, .L80093918 -/* 094534 80093934 00000000 */ nop -.L80093938: -/* 094538 80093938 04600003 */ bltz $v1, .L80093948 -/* 09453C 8009393C 28610003 */ slti $at, $v1, 3 -/* 094540 80093940 14200002 */ bnez $at, .L8009394C -/* 094544 80093944 00000000 */ nop -.L80093948: -/* 094548 80093948 00A01825 */ move $v1, $a1 -.L8009394C: -/* 09454C 8009394C 10650028 */ beq $v1, $a1, .L800939F0 -/* 094550 80093950 240400EB */ li $a0, 235 -/* 094554 80093954 00002825 */ move $a1, $zero -/* 094558 80093958 0C000741 */ jal func_80001D04 -/* 09455C 8009395C AFA30034 */ sw $v1, 0x34($sp) -/* 094560 80093960 8FA30034 */ lw $v1, 0x34($sp) -/* 094564 80093964 3C018012 */ lui $at, %hi(gPlayerSelectVehicle) # $at, 0x8012 -/* 094568 80093968 10000021 */ b .L800939F0 -/* 09456C 8009396C A02369C0 */ sb $v1, %lo(gPlayerSelectVehicle)($at) -.L80093970: -/* 094570 80093970 04410007 */ bgez $v0, .L80093990 -/* 094574 80093974 8FAA0038 */ lw $t2, 0x38($sp) -/* 094578 80093978 8FB90038 */ lw $t9, 0x38($sp) -/* 09457C 8009397C 00000000 */ nop -/* 094580 80093980 00594823 */ subu $t1, $v0, $t9 -/* 094584 80093984 10000005 */ b .L8009399C -/* 094588 80093988 ACC90000 */ sw $t1, ($a2) -/* 09458C 8009398C 8FAA0038 */ lw $t2, 0x38($sp) -.L80093990: -/* 094590 80093990 00000000 */ nop -/* 094594 80093994 004A5821 */ addu $t3, $v0, $t2 -/* 094598 80093998 ACCB0000 */ sw $t3, ($a2) -.L8009399C: -/* 09459C 8009399C 8CC20000 */ lw $v0, ($a2) -/* 0945A0 800939A0 00000000 */ nop -/* 0945A4 800939A4 2841001F */ slti $at, $v0, 0x1f -/* 0945A8 800939A8 10200003 */ beqz $at, .L800939B8 -/* 0945AC 800939AC 2841FFE2 */ slti $at, $v0, -0x1e -/* 0945B0 800939B0 1020000F */ beqz $at, .L800939F0 -/* 0945B4 800939B4 00000000 */ nop -.L800939B8: -/* 0945B8 800939B8 0C024E83 */ jal func_80093A0C -/* 0945BC 800939BC 00000000 */ nop -/* 0945C0 800939C0 3C0C800E */ lui $t4, %hi(gMenuDelay) # $t4, 0x800e -/* 0945C4 800939C4 8D8CF47C */ lw $t4, %lo(gMenuDelay)($t4) -/* 0945C8 800939C8 3C02800E */ lui $v0, %hi(gTrackIdForPreview) # $v0, 0x800e -/* 0945CC 800939CC 19800006 */ blez $t4, .L800939E8 -/* 0945D0 800939D0 00000000 */ nop -/* 0945D4 800939D4 8C42F4C4 */ lw $v0, %lo(gTrackIdForPreview)($v0) -/* 0945D8 800939D8 00000000 */ nop -/* 0945DC 800939DC 344D0080 */ ori $t5, $v0, 0x80 -/* 0945E0 800939E0 10000006 */ b .L800939FC -/* 0945E4 800939E4 01A01025 */ move $v0, $t5 -.L800939E8: -/* 0945E8 800939E8 10000004 */ b .L800939FC -/* 0945EC 800939EC 24020103 */ li $v0, 259 -.L800939F0: -/* 0945F0 800939F0 3C018012 */ lui $at, %hi(gIgnorePlayerInput) # $at, 0x8012 -/* 0945F4 800939F4 AC2063C4 */ sw $zero, %lo(gIgnorePlayerInput)($at) -/* 0945F8 800939F8 00001025 */ move $v0, $zero -.L800939FC: -/* 0945FC 800939FC 8FBF0014 */ lw $ra, 0x14($sp) -/* 094600 80093A00 27BD0038 */ addiu $sp, $sp, 0x38 -/* 094604 80093A04 03E00008 */ jr $ra -/* 094608 80093A08 00000000 */ nop - diff --git a/asm/non_matchings/menu/menu_character_select_loop.s b/asm/non_matchings/menu/menu_character_select_loop.s deleted file mode 100644 index 90e0e6b8..00000000 --- a/asm/non_matchings/menu/menu_character_select_loop.s +++ /dev/null @@ -1,191 +0,0 @@ -glabel menu_character_select_loop -/* 08C924 8008BD24 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 08C928 8008BD28 AFBF0014 */ sw $ra, 0x14($sp) -/* 08C92C 8008BD2C 0C022C83 */ jal draw_character_select_text -/* 08C930 8008BD30 AFA40030 */ sw $a0, 0x30($sp) -/* 08C934 8008BD34 8FA40030 */ lw $a0, 0x30($sp) -/* 08C938 8008BD38 0C02305A */ jal func_8008C168 -/* 08C93C 8008BD3C 00000000 */ nop -/* 08C940 8008BD40 0C02393B */ jal func_8008E4EC -/* 08C944 8008BD44 00000000 */ nop -/* 08C948 8008BD48 3C028012 */ lui $v0, %hi(D_801263DC) # $v0, 0x8012 -/* 08C94C 8008BD4C 3C048012 */ lui $a0, %hi(D_801263E0) # $a0, 0x8012 -/* 08C950 8008BD50 248463E0 */ addiu $a0, %lo(D_801263E0) # addiu $a0, $a0, 0x63e0 -/* 08C954 8008BD54 244263DC */ addiu $v0, %lo(D_801263DC) # addiu $v0, $v0, 0x63dc -/* 08C958 8008BD58 240A0001 */ li $t2, 1 -/* 08C95C 8008BD5C 24030002 */ li $v1, 2 -.L8008BD60: -/* 08C960 8008BD60 804E0000 */ lb $t6, ($v0) -/* 08C964 8008BD64 00000000 */ nop -/* 08C968 8008BD68 154E0002 */ bne $t2, $t6, .L8008BD74 -/* 08C96C 8008BD6C 00000000 */ nop -/* 08C970 8008BD70 A0430000 */ sb $v1, ($v0) -.L8008BD74: -/* 08C974 8008BD74 24420001 */ addiu $v0, $v0, 1 -/* 08C978 8008BD78 0044082B */ sltu $at, $v0, $a0 -/* 08C97C 8008BD7C 1420FFF8 */ bnez $at, .L8008BD60 -/* 08C980 8008BD80 00000000 */ nop -/* 08C984 8008BD84 3C03800E */ lui $v1, %hi(gMenuDelay) # $v1, 0x800e -/* 08C988 8008BD88 3C018012 */ lui $at, %hi(gIgnorePlayerInput) # $at, 0x8012 -/* 08C98C 8008BD8C 2463F47C */ addiu $v1, %lo(gMenuDelay) # addiu $v1, $v1, -0xb84 -/* 08C990 8008BD90 AC2063C4 */ sw $zero, %lo(gIgnorePlayerInput)($at) -/* 08C994 8008BD94 8C620000 */ lw $v0, ($v1) -/* 08C998 8008BD98 3C0F8012 */ lui $t7, %hi(gActivePlayersArray) # $t7, 0x8012 -/* 08C99C 8008BD9C 1440001B */ bnez $v0, .L8008BE0C -/* 08C9A0 8008BDA0 3C188012 */ lui $t8, %hi(gActivePlayersArray+1) # $t8, 0x8012 -/* 08C9A4 8008BDA4 3C198012 */ lui $t9, %hi(gActivePlayersArray+2) # $t9, 0x8012 -/* 08C9A8 8008BDA8 3C0C8012 */ lui $t4, %hi(gActivePlayersArray+3) # $t4, 0x8012 -/* 08C9AC 8008BDAC 818C63D7 */ lb $t4, %lo(gActivePlayersArray+3)($t4) -/* 08C9B0 8008BDB0 833963D6 */ lb $t9, %lo(gActivePlayersArray+2)($t9) -/* 08C9B4 8008BDB4 81EF63D4 */ lb $t7, %lo(gActivePlayersArray)($t7) -/* 08C9B8 8008BDB8 831863D5 */ lb $t8, %lo(gActivePlayersArray+1)($t8) -/* 08C9BC 8008BDBC A3AC0023 */ sb $t4, 0x23($sp) -/* 08C9C0 8008BDC0 A3B90022 */ sb $t9, 0x22($sp) -/* 08C9C4 8008BDC4 A3AF0020 */ sb $t7, 0x20($sp) -/* 08C9C8 8008BDC8 0C022CD6 */ jal func_8008B358 -/* 08C9CC 8008BDCC A3B80021 */ sb $t8, 0x21($sp) -/* 08C9D0 8008BDD0 3C0D800E */ lui $t5, %hi(gNumberOfActivePlayers) # $t5, 0x800e -/* 08C9D4 8008BDD4 3C0E800E */ lui $t6, %hi(gNumberOfReadyPlayers) # $t6, 0x800e -/* 08C9D8 8008BDD8 8DCEF480 */ lw $t6, %lo(gNumberOfReadyPlayers)($t6) -/* 08C9DC 8008BDDC 8DADF4BC */ lw $t5, %lo(gNumberOfActivePlayers)($t5) -/* 08C9E0 8008BDE0 00000000 */ nop -/* 08C9E4 8008BDE4 15AE0005 */ bne $t5, $t6, .L8008BDFC -/* 08C9E8 8008BDE8 00000000 */ nop -/* 08C9EC 8008BDEC 0C022D32 */ jal func_8008B4C8 -/* 08C9F0 8008BDF0 00000000 */ nop -/* 08C9F4 8008BDF4 10000078 */ b .L8008BFD8 -/* 08C9F8 8008BDF8 00001025 */ move $v0, $zero -.L8008BDFC: -/* 08C9FC 8008BDFC 0C022DD6 */ jal func_8008B758 -/* 08CA00 8008BE00 27A40020 */ addiu $a0, $sp, 0x20 -/* 08CA04 8008BE04 10000074 */ b .L8008BFD8 -/* 08CA08 8008BE08 00001025 */ move $v0, $zero -.L8008BE0C: -/* 08CA0C 8008BE0C 18400060 */ blez $v0, .L8008BF90 -/* 08CA10 8008BE10 00000000 */ nop -/* 08CA14 8008BE14 8FAF0030 */ lw $t7, 0x30($sp) -/* 08CA18 8008BE18 3C0C800E */ lui $t4, %hi(D_800DFFD0) # $t4, 0x800e -/* 08CA1C 8008BE1C 004FC021 */ addu $t8, $v0, $t7 -/* 08CA20 8008BE20 2B01001F */ slti $at, $t8, 0x1f -/* 08CA24 8008BE24 1420006B */ bnez $at, .L8008BFD4 -/* 08CA28 8008BE28 AC780000 */ sw $t8, ($v1) -/* 08CA2C 8008BE2C 8D8CFFD0 */ lw $t4, %lo(D_800DFFD0)($t4) -/* 08CA30 8008BE30 00005825 */ move $t3, $zero -/* 08CA34 8008BE34 15800007 */ bnez $t4, .L8008BE54 -/* 08CA38 8008BE38 3C0D800E */ lui $t5, %hi(gActiveMagicCodes) # $t5, 0x800e -/* 08CA3C 8008BE3C 8DADFD98 */ lw $t5, %lo(gActiveMagicCodes)($t5) -/* 08CA40 8008BE40 01405825 */ move $t3, $t2 -/* 08CA44 8008BE44 000D71C0 */ sll $t6, $t5, 7 -/* 08CA48 8008BE48 05C10002 */ bgez $t6, .L8008BE54 -/* 08CA4C 8008BE4C 00000000 */ nop -/* 08CA50 8008BE50 254B0001 */ addiu $t3, $t2, 1 -.L8008BE54: -/* 08CA54 8008BE54 0C02304A */ jal func_8008C128 -/* 08CA58 8008BE58 AFAB0024 */ sw $t3, 0x24($sp) -/* 08CA5C 8008BE5C 3C038012 */ lui $v1, %hi(gActivePlayersArray) # $v1, 0x8012 -/* 08CA60 8008BE60 3C078012 */ lui $a3, %hi(gPlayersCharacterArray) # $a3, 0x8012 -/* 08CA64 8008BE64 3C068012 */ lui $a2, %hi(D_801263CC) # $a2, 0x8012 -/* 08CA68 8008BE68 3C058012 */ lui $a1, %hi(gCharacterIdSlots) # $a1, 0x8012 -/* 08CA6C 8008BE6C 8FAB0024 */ lw $t3, 0x24($sp) -/* 08CA70 8008BE70 00002025 */ move $a0, $zero -/* 08CA74 8008BE74 24A563F0 */ addiu $a1, %lo(gCharacterIdSlots) # addiu $a1, $a1, 0x63f0 -/* 08CA78 8008BE78 24C663CC */ addiu $a2, %lo(D_801263CC) # addiu $a2, $a2, 0x63cc -/* 08CA7C 8008BE7C 24E763E8 */ addiu $a3, %lo(gPlayersCharacterArray) # addiu $a3, $a3, 0x63e8 -/* 08CA80 8008BE80 246363D4 */ addiu $v1, %lo(gActivePlayersArray) # addiu $v1, $v1, 0x63d4 -/* 08CA84 8008BE84 00001025 */ move $v0, $zero -/* 08CA88 8008BE88 24090004 */ li $t1, 4 -/* 08CA8C 8008BE8C 2408000E */ li $t0, 14 -.L8008BE90: -/* 08CA90 8008BE90 806F0000 */ lb $t7, ($v1) -/* 08CA94 8008BE94 00E2C821 */ addu $t9, $a3, $v0 -/* 08CA98 8008BE98 11E0000B */ beqz $t7, .L8008BEC8 -/* 08CA9C 8008BE9C 00000000 */ nop -/* 08CAA0 8008BEA0 832C0000 */ lb $t4, ($t9) -/* 08CAA4 8008BEA4 8CD80000 */ lw $t8, ($a2) -/* 08CAA8 8008BEA8 01880019 */ multu $t4, $t0 -/* 08CAAC 8008BEAC 00A4C821 */ addu $t9, $a1, $a0 -/* 08CAB0 8008BEB0 24840001 */ addiu $a0, $a0, 1 -/* 08CAB4 8008BEB4 00006812 */ mflo $t5 -/* 08CAB8 8008BEB8 030D7021 */ addu $t6, $t8, $t5 -/* 08CABC 8008BEBC 85CF000C */ lh $t7, 0xc($t6) -/* 08CAC0 8008BEC0 00000000 */ nop -/* 08CAC4 8008BEC4 A32F0000 */ sb $t7, ($t9) -.L8008BEC8: -/* 08CAC8 8008BEC8 24420001 */ addiu $v0, $v0, 1 -/* 08CACC 8008BECC 1449FFF0 */ bne $v0, $t1, .L8008BE90 -/* 08CAD0 8008BED0 24630001 */ addiu $v1, $v1, 1 -/* 08CAD4 8008BED4 0C022ECF */ jal randomise_ai_racer_slots -/* 08CAD8 8008BED8 AFAB0024 */ sw $t3, 0x24($sp) -/* 08CADC 8008BEDC 3C048012 */ lui $a0, %hi(gActivePlayersArray) # $a0, 0x8012 -/* 08CAE0 8008BEE0 0C01A916 */ jal assign_player_ids -/* 08CAE4 8008BEE4 248463D4 */ addiu $a0, %lo(gActivePlayersArray) # addiu $a0, $a0, 0x63d4 -/* 08CAE8 8008BEE8 3C0C800E */ lui $t4, %hi(gNumberOfActivePlayers) # $t4, 0x800e -/* 08CAEC 8008BEEC 8FAB0024 */ lw $t3, 0x24($sp) -/* 08CAF0 8008BEF0 8D8CF4BC */ lw $t4, %lo(gNumberOfActivePlayers)($t4) -/* 08CAF4 8008BEF4 240A0001 */ li $t2, 1 -/* 08CAF8 8008BEF8 3C01800E */ lui $at, %hi(gIsInTracksMode) # $at, 0x800e -/* 08CAFC 8008BEFC AC2AF4B8 */ sw $t2, %lo(gIsInTracksMode)($at) -/* 08CB00 8008BF00 016C082A */ slt $at, $t3, $t4 -/* 08CB04 8008BF04 14200018 */ bnez $at, .L8008BF68 -/* 08CB08 8008BF08 00000000 */ nop -/* 08CB0C 8008BF0C 0C0002C6 */ jal func_80000B18 -/* 08CB10 8008BF10 00000000 */ nop -/* 08CB14 8008BF14 24040027 */ li $a0, 39 -/* 08CB18 8008BF18 2405FFFF */ li $a1, -1 -/* 08CB1C 8008BF1C 0C01B8BA */ jal load_level_for_menu -/* 08CB20 8008BF20 00003025 */ move $a2, $zero -/* 08CB24 8008BF24 3C18800E */ lui $t8, %hi(gNumberOfActivePlayers) # $t8, 0x800e -/* 08CB28 8008BF28 8F18F4BC */ lw $t8, %lo(gNumberOfActivePlayers)($t8) -/* 08CB2C 8008BF2C 240A0001 */ li $t2, 1 -/* 08CB30 8008BF30 15580009 */ bne $t2, $t8, .L8008BF58 -/* 08CB34 8008BF34 3C0D800E */ lui $t5, %hi(gPlayerHasSeenCautionMenu) # $t5, 0x800e -/* 08CB38 8008BF38 8DADF498 */ lw $t5, %lo(gPlayerHasSeenCautionMenu)($t5) -/* 08CB3C 8008BF3C 00000000 */ nop -/* 08CB40 8008BF40 15A00005 */ bnez $t5, .L8008BF58 -/* 08CB44 8008BF44 00000000 */ nop -/* 08CB48 8008BF48 0C0204F4 */ jal menu_init -/* 08CB4C 8008BF4C 2404001C */ li $a0, 28 -/* 08CB50 8008BF50 10000021 */ b .L8008BFD8 -/* 08CB54 8008BF54 00001025 */ move $v0, $zero -.L8008BF58: -/* 08CB58 8008BF58 0C0204F4 */ jal menu_init -/* 08CB5C 8008BF5C 24040013 */ li $a0, 19 -/* 08CB60 8008BF60 1000001D */ b .L8008BFD8 -/* 08CB64 8008BF64 00001025 */ move $v0, $zero -.L8008BF68: -/* 08CB68 8008BF68 0C0002CA */ jal func_80000B28 -/* 08CB6C 8008BF6C 00000000 */ nop -/* 08CB70 8008BF70 0C020A2E */ jal func_800828B8 -/* 08CB74 8008BF74 00000000 */ nop -/* 08CB78 8008BF78 0C01B96F */ jal func_8006E5BC -/* 08CB7C 8008BF7C 00000000 */ nop -/* 08CB80 8008BF80 0C0204F4 */ jal menu_init -/* 08CB84 8008BF84 2404000F */ li $a0, 15 -/* 08CB88 8008BF88 10000013 */ b .L8008BFD8 -/* 08CB8C 8008BF8C 00001025 */ move $v0, $zero -.L8008BF90: -/* 08CB90 8008BF90 04410010 */ bgez $v0, .L8008BFD4 -/* 08CB94 8008BF94 00000000 */ nop -/* 08CB98 8008BF98 8FAE0030 */ lw $t6, 0x30($sp) -/* 08CB9C 8008BF9C 00000000 */ nop -/* 08CBA0 8008BFA0 004E7823 */ subu $t7, $v0, $t6 -/* 08CBA4 8008BFA4 29E1FFE2 */ slti $at, $t7, -0x1e -/* 08CBA8 8008BFA8 1020000A */ beqz $at, .L8008BFD4 -/* 08CBAC 8008BFAC AC6F0000 */ sw $t7, ($v1) -/* 08CBB0 8008BFB0 0C0002CA */ jal func_80000B28 -/* 08CBB4 8008BFB4 00000000 */ nop -/* 08CBB8 8008BFB8 0C02304A */ jal func_8008C128 -/* 08CBBC 8008BFBC 00000000 */ nop -/* 08CBC0 8008BFC0 240A0001 */ li $t2, 1 -/* 08CBC4 8008BFC4 3C01800E */ lui $at, %hi(gNumberOfActivePlayers) # $at, 0x800e -/* 08CBC8 8008BFC8 AC2AF4BC */ sw $t2, %lo(gNumberOfActivePlayers)($at) -/* 08CBCC 8008BFCC 0C0204F4 */ jal menu_init -/* 08CBD0 8008BFD0 00002025 */ move $a0, $zero -.L8008BFD4: -/* 08CBD4 8008BFD4 00001025 */ move $v0, $zero -.L8008BFD8: -/* 08CBD8 8008BFD8 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CBDC 8008BFDC 27BD0030 */ addiu $sp, $sp, 0x30 -/* 08CBE0 8008BFE0 03E00008 */ jr $ra -/* 08CBE4 8008BFE4 00000000 */ nop - diff --git a/asm/non_matchings/menu/menu_credits_loop.s b/asm/non_matchings/menu/menu_credits_loop.s index fec0b357..939c9978 100644 --- a/asm/non_matchings/menu/menu_credits_loop.s +++ b/asm/non_matchings/menu/menu_credits_loop.s @@ -90,11 +90,11 @@ glabel menu_credits_loop /* 09C064 8009B464 00029443 */ sra $s2, $v0, 0x11 /* 09C068 8009B468 32597FFF */ andi $t9, $s2, 0x7fff /* 09C06C 8009B46C 3C10800E */ lui $s0, %hi(D_800E0AF0) # $s0, 0x800e -/* 09C070 8009B470 3C178012 */ lui $s7, %hi(D_801263A0) # $s7, 0x8012 +/* 09C070 8009B470 3C178012 */ lui $s7, %hi(sMenuCurrDisplayList) # $s7, 0x8012 /* 09C074 8009B474 3C16800E */ lui $s6, %hi(D_800E0B18) # $s6, 0x800e /* 09C078 8009B478 03209025 */ move $s2, $t9 /* 09C07C 8009B47C 26D60B18 */ addiu $s6, %lo(D_800E0B18) # addiu $s6, $s6, 0xb18 -/* 09C080 8009B480 26F763A0 */ addiu $s7, %lo(D_801263A0) # addiu $s7, $s7, 0x63a0 +/* 09C080 8009B480 26F763A0 */ addiu $s7, %lo(sMenuCurrDisplayList) # addiu $s7, $s7, 0x63a0 /* 09C084 8009B484 26100AF0 */ addiu $s0, %lo(D_800E0AF0) # addiu $s0, $s0, 0xaf0 .L8009B488: /* 09C088 8009B488 00158C00 */ sll $s1, $s5, 0x10 @@ -294,7 +294,7 @@ glabel menu_credits_loop /* 09C350 8009B750 014C5821 */ addu $t3, $t2, $t4 /* 09C354 8009B754 81640000 */ lb $a0, ($t3) /* 09C358 8009B758 A3A6005B */ sb $a2, 0x5b($sp) -/* 09C35C 8009B75C 0C01AF77 */ jal func_8006BDDC +/* 09C35C 8009B75C 0C01AF77 */ jal get_level_name /* 09C360 8009B760 24150002 */ li $s5, 2 /* 09C364 8009B764 862D0000 */ lh $t5, ($s1) /* 09C368 8009B768 2643000E */ addiu $v1, $s2, 0xe diff --git a/asm/non_matchings/menu/menu_ghost_data_loop.s b/asm/non_matchings/menu/menu_ghost_data_loop.s deleted file mode 100644 index f32a73ed..00000000 --- a/asm/non_matchings/menu/menu_ghost_data_loop.s +++ /dev/null @@ -1,274 +0,0 @@ -glabel menu_ghost_data_loop -/* 09B3D4 8009A7D4 3C038012 */ lui $v1, %hi(D_801263BC) # $v1, 0x8012 -/* 09B3D8 8009A7D8 246363BC */ addiu $v1, %lo(D_801263BC) # addiu $v1, $v1, 0x63bc -/* 09B3DC 8009A7DC 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 09B3E0 8009A7E0 8C6E0000 */ lw $t6, ($v1) -/* 09B3E4 8009A7E4 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -/* 09B3E8 8009A7E8 8D220000 */ lw $v0, ($t1) -/* 09B3EC 8009A7EC 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 09B3F0 8009A7F0 01C47821 */ addu $t7, $t6, $a0 -/* 09B3F4 8009A7F4 AFB00018 */ sw $s0, 0x18($sp) -/* 09B3F8 8009A7F8 31F8003F */ andi $t8, $t7, 0x3f -/* 09B3FC 8009A7FC 2841FFED */ slti $at, $v0, -0x13 -/* 09B400 8009A800 00808025 */ move $s0, $a0 -/* 09B404 8009A804 AFBF001C */ sw $ra, 0x1c($sp) -/* 09B408 8009A808 1420000A */ bnez $at, .L8009A834 -/* 09B40C 8009A80C AC780000 */ sw $t8, ($v1) -/* 09B410 8009A810 28410014 */ slti $at, $v0, 0x14 -/* 09B414 8009A814 10200007 */ beqz $at, .L8009A834 -/* 09B418 8009A818 00000000 */ nop -/* 09B41C 8009A81C 0C0267A3 */ jal func_80099E8C -/* 09B420 8009A820 00000000 */ nop -/* 09B424 8009A824 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e -/* 09B428 8009A828 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 09B42C 8009A82C 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) -/* 09B430 8009A830 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -.L8009A834: -/* 09B434 8009A834 10400007 */ beqz $v0, .L8009A854 -/* 09B438 8009A838 00003825 */ move $a3, $zero -/* 09B43C 8009A83C 04410004 */ bgez $v0, .L8009A850 -/* 09B440 8009A840 00505021 */ addu $t2, $v0, $s0 -/* 09B444 8009A844 0050C823 */ subu $t9, $v0, $s0 -/* 09B448 8009A848 10000002 */ b .L8009A854 -/* 09B44C 8009A84C AD390000 */ sw $t9, ($t1) -.L8009A850: -/* 09B450 8009A850 AD2A0000 */ sw $t2, ($t1) -.L8009A854: -/* 09B454 8009A854 3C0B8012 */ lui $t3, %hi(gIgnorePlayerInput) # $t3, 0x8012 -/* 09B458 8009A858 8D6B63C4 */ lw $t3, %lo(gIgnorePlayerInput)($t3) -/* 09B45C 8009A85C 00003025 */ move $a2, $zero -/* 09B460 8009A860 15600020 */ bnez $t3, .L8009A8E4 -/* 09B464 8009A864 00004025 */ move $t0, $zero -/* 09B468 8009A868 8D2C0000 */ lw $t4, ($t1) -/* 09B46C 8009A86C 00008025 */ move $s0, $zero -/* 09B470 8009A870 1580001C */ bnez $t4, .L8009A8E4 -/* 09B474 8009A874 3C038012 */ lui $v1, %hi(gControllersXAxisDirection) # $v1, 0x8012 -/* 09B478 8009A878 3C058012 */ lui $a1, %hi(gControllersYAxisDirection) # $a1, 0x8012 -/* 09B47C 8009A87C 24A56464 */ addiu $a1, %lo(gControllersYAxisDirection) # addiu $a1, $a1, 0x6464 -/* 09B480 8009A880 2463645C */ addiu $v1, %lo(gControllersXAxisDirection) # addiu $v1, $v1, 0x645c -.L8009A884: -/* 09B484 8009A884 02002025 */ move $a0, $s0 -/* 09B488 8009A888 AFA30028 */ sw $v1, 0x28($sp) -/* 09B48C 8009A88C AFA50024 */ sw $a1, 0x24($sp) -/* 09B490 8009A890 AFA6003C */ sw $a2, 0x3c($sp) -/* 09B494 8009A894 AFA70040 */ sw $a3, 0x40($sp) -/* 09B498 8009A898 0C01A955 */ jal get_buttons_pressed_from_player -/* 09B49C 8009A89C AFA80038 */ sw $t0, 0x38($sp) -/* 09B4A0 8009A8A0 8FA30028 */ lw $v1, 0x28($sp) -/* 09B4A4 8009A8A4 8FA50024 */ lw $a1, 0x24($sp) -/* 09B4A8 8009A8A8 8FA6003C */ lw $a2, 0x3c($sp) -/* 09B4AC 8009A8AC 8FA70040 */ lw $a3, 0x40($sp) -/* 09B4B0 8009A8B0 8FA80038 */ lw $t0, 0x38($sp) -/* 09B4B4 8009A8B4 806D0000 */ lb $t5, ($v1) -/* 09B4B8 8009A8B8 80AE0000 */ lb $t6, ($a1) -/* 09B4BC 8009A8BC 26100001 */ addiu $s0, $s0, 1 -/* 09B4C0 8009A8C0 24010004 */ li $at, 4 -/* 09B4C4 8009A8C4 24630001 */ addiu $v1, $v1, 1 -/* 09B4C8 8009A8C8 24A50001 */ addiu $a1, $a1, 1 -/* 09B4CC 8009A8CC 00E23825 */ or $a3, $a3, $v0 -/* 09B4D0 8009A8D0 00CD3021 */ addu $a2, $a2, $t5 -/* 09B4D4 8009A8D4 1601FFEB */ bne $s0, $at, .L8009A884 -/* 09B4D8 8009A8D8 010E4021 */ addu $t0, $t0, $t6 -/* 09B4DC 8009A8DC 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 09B4E0 8009A8E0 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -.L8009A8E4: -/* 09B4E4 8009A8E4 3C068012 */ lui $a2, %hi(D_801263E0) # $a2, 0x8012 -/* 09B4E8 8009A8E8 24C663E0 */ addiu $a2, %lo(D_801263E0) # addiu $a2, $a2, 0x63e0 -/* 09B4EC 8009A8EC 8CC20000 */ lw $v0, ($a2) -/* 09B4F0 8009A8F0 24030001 */ li $v1, 1 -/* 09B4F4 8009A8F4 1040000A */ beqz $v0, .L8009A920 -/* 09B4F8 8009A8F8 00000000 */ nop -/* 09B4FC 8009A8FC 1043004E */ beq $v0, $v1, .L8009AA38 -/* 09B500 8009A900 30EB4000 */ andi $t3, $a3, 0x4000 -/* 09B504 8009A904 24010002 */ li $at, 2 -/* 09B508 8009A908 1041008B */ beq $v0, $at, .L8009AB38 -/* 09B50C 8009A90C 30F8D000 */ andi $t8, $a3, 0xd000 -/* 09B510 8009A910 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e -/* 09B514 8009A914 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) -/* 09B518 8009A918 10000096 */ b .L8009AB74 -/* 09B51C 8009A91C 00000000 */ nop -.L8009A920: -/* 09B520 8009A920 30E29000 */ andi $v0, $a3, 0x9000 -/* 09B524 8009A924 1040000B */ beqz $v0, .L8009A954 -/* 09B528 8009A928 3C058012 */ lui $a1, %hi(D_801264D4) # $a1, 0x8012 -/* 09B52C 8009A92C 24A564D4 */ addiu $a1, %lo(D_801264D4) # addiu $a1, $a1, 0x64d4 -/* 09B530 8009A930 8CAF0000 */ lw $t7, ($a1) -/* 09B534 8009A934 24180002 */ li $t8, 2 -/* 09B538 8009A938 19E00006 */ blez $t7, .L8009A954 -/* 09B53C 8009A93C 240400EF */ li $a0, 239 -/* 09B540 8009A940 ACD80000 */ sw $t8, ($a2) -/* 09B544 8009A944 0C000741 */ jal func_80001D04 -/* 09B548 8009A948 00002825 */ move $a1, $zero -/* 09B54C 8009A94C 10000036 */ b .L8009AA28 -/* 09B550 8009A950 00000000 */ nop -.L8009A954: -/* 09B554 8009A954 3C058012 */ lui $a1, %hi(D_801264D4) # $a1, 0x8012 -/* 09B558 8009A958 30F94000 */ andi $t9, $a3, 0x4000 -/* 09B55C 8009A95C 17200006 */ bnez $t9, .L8009A978 -/* 09B560 8009A960 24A564D4 */ addiu $a1, %lo(D_801264D4) # addiu $a1, $a1, 0x64d4 -/* 09B564 8009A964 1040000E */ beqz $v0, .L8009A9A0 -/* 09B568 8009A968 3C108012 */ lui $s0, %hi(D_80126498) # $s0, 0x8012 -/* 09B56C 8009A96C 8CAA0000 */ lw $t2, ($a1) -/* 09B570 8009A970 00000000 */ nop -/* 09B574 8009A974 1540000A */ bnez $t2, .L8009A9A0 -.L8009A978: -/* 09B578 8009A978 24030001 */ li $v1, 1 -/* 09B57C 8009A97C 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 09B580 8009A980 AD230000 */ sw $v1, ($t1) -/* 09B584 8009A984 0C030076 */ jal func_800C01D8 -/* 09B588 8009A988 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 09B58C 8009A98C 24040241 */ li $a0, 577 -/* 09B590 8009A990 0C000741 */ jal func_80001D04 -/* 09B594 8009A994 00002825 */ move $a1, $zero -/* 09B598 8009A998 10000023 */ b .L8009AA28 -/* 09B59C 8009A99C 00000000 */ nop -.L8009A9A0: -/* 09B5A0 8009A9A0 26106498 */ addiu $s0, %lo(D_80126498) # addiu $s0, $s0, 0x6498 -/* 09B5A4 8009A9A4 8E020000 */ lw $v0, ($s0) -/* 09B5A8 8009A9A8 05010010 */ bgez $t0, .L8009A9EC -/* 09B5AC 8009A9AC 00402025 */ move $a0, $v0 -/* 09B5B0 8009A9B0 8CAB0000 */ lw $t3, ($a1) -/* 09B5B4 8009A9B4 3C038012 */ lui $v1, %hi(D_801263D8) # $v1, 0x8012 -/* 09B5B8 8009A9B8 256CFFFF */ addiu $t4, $t3, -1 -/* 09B5BC 8009A9BC 004C082A */ slt $at, $v0, $t4 -/* 09B5C0 8009A9C0 1020000A */ beqz $at, .L8009A9EC -/* 09B5C4 8009A9C4 246363D8 */ addiu $v1, %lo(D_801263D8) # addiu $v1, $v1, 0x63d8 -/* 09B5C8 8009A9C8 8C6E0000 */ lw $t6, ($v1) -/* 09B5CC 8009A9CC 244D0001 */ addiu $t5, $v0, 1 -/* 09B5D0 8009A9D0 25CF0003 */ addiu $t7, $t6, 3 -/* 09B5D4 8009A9D4 01AF082A */ slt $at, $t5, $t7 -/* 09B5D8 8009A9D8 AE0D0000 */ sw $t5, ($s0) -/* 09B5DC 8009A9DC 14200003 */ bnez $at, .L8009A9EC -/* 09B5E0 8009A9E0 01A01025 */ move $v0, $t5 -/* 09B5E4 8009A9E4 25B8FFFE */ addiu $t8, $t5, -2 -/* 09B5E8 8009A9E8 AC780000 */ sw $t8, ($v1) -.L8009A9EC: -/* 09B5EC 8009A9EC 3C038012 */ lui $v1, %hi(D_801263D8) # $v1, 0x8012 -/* 09B5F0 8009A9F0 19000009 */ blez $t0, .L8009AA18 -/* 09B5F4 8009A9F4 246363D8 */ addiu $v1, %lo(D_801263D8) # addiu $v1, $v1, 0x63d8 -/* 09B5F8 8009A9F8 18400007 */ blez $v0, .L8009AA18 -/* 09B5FC 8009A9FC 2459FFFF */ addiu $t9, $v0, -1 -/* 09B600 8009AA00 8C6A0000 */ lw $t2, ($v1) -/* 09B604 8009AA04 AE190000 */ sw $t9, ($s0) -/* 09B608 8009AA08 032A082A */ slt $at, $t9, $t2 -/* 09B60C 8009AA0C 10200002 */ beqz $at, .L8009AA18 -/* 09B610 8009AA10 03201025 */ move $v0, $t9 -/* 09B614 8009AA14 AC790000 */ sw $t9, ($v1) -.L8009AA18: -/* 09B618 8009AA18 10820003 */ beq $a0, $v0, .L8009AA28 -/* 09B61C 8009AA1C 00002825 */ move $a1, $zero -/* 09B620 8009AA20 0C000741 */ jal func_80001D04 -/* 09B624 8009AA24 240400EB */ li $a0, 235 -.L8009AA28: -/* 09B628 8009AA28 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e -/* 09B62C 8009AA2C 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) -/* 09B630 8009AA30 10000050 */ b .L8009AB74 -/* 09B634 8009AA34 00000000 */ nop -.L8009AA38: -/* 09B638 8009AA38 11600007 */ beqz $t3, .L8009AA58 -/* 09B63C 8009AA3C 30EC9000 */ andi $t4, $a3, 0x9000 -/* 09B640 8009AA40 ACC00000 */ sw $zero, ($a2) -/* 09B644 8009AA44 24040241 */ li $a0, 577 -/* 09B648 8009AA48 0C000741 */ jal func_80001D04 -/* 09B64C 8009AA4C 00002825 */ move $a1, $zero -/* 09B650 8009AA50 10000035 */ b .L8009AB28 -/* 09B654 8009AA54 00000000 */ nop -.L8009AA58: -/* 09B658 8009AA58 1180002D */ beqz $t4, .L8009AB10 -/* 09B65C 8009AA5C 3C108012 */ lui $s0, %hi(D_80126498) # $s0, 0x8012 -/* 09B660 8009AA60 26106498 */ addiu $s0, %lo(D_80126498) # addiu $s0, $s0, 0x6498 -/* 09B664 8009AA64 8E040000 */ lw $a0, ($s0) -/* 09B668 8009AA68 0C026638 */ jal func_800998E0 -/* 09B66C 8009AA6C 00000000 */ nop -/* 09B670 8009AA70 1440001B */ bnez $v0, .L8009AAE0 -/* 09B674 8009AA74 24030001 */ li $v1, 1 -/* 09B678 8009AA78 3C058012 */ lui $a1, %hi(D_801264D4) # $a1, 0x8012 -/* 09B67C 8009AA7C 24A564D4 */ addiu $a1, %lo(D_801264D4) # addiu $a1, $a1, 0x64d4 -/* 09B680 8009AA80 8CA30000 */ lw $v1, ($a1) -/* 09B684 8009AA84 8E020000 */ lw $v0, ($s0) -/* 09B688 8009AA88 240400EF */ li $a0, 239 -/* 09B68C 8009AA8C 0043082A */ slt $at, $v0, $v1 -/* 09B690 8009AA90 14200003 */ bnez $at, .L8009AAA0 -/* 09B694 8009AA94 00000000 */ nop -/* 09B698 8009AA98 2462FFFF */ addiu $v0, $v1, -1 -/* 09B69C 8009AA9C AE020000 */ sw $v0, ($s0) -.L8009AAA0: -/* 09B6A0 8009AAA0 04410003 */ bgez $v0, .L8009AAB0 -/* 09B6A4 8009AAA4 3C038012 */ lui $v1, %hi(D_801263D8) # $v1, 0x8012 -/* 09B6A8 8009AAA8 AE000000 */ sw $zero, ($s0) -/* 09B6AC 8009AAAC 00001025 */ move $v0, $zero -.L8009AAB0: -/* 09B6B0 8009AAB0 246363D8 */ addiu $v1, %lo(D_801263D8) # addiu $v1, $v1, 0x63d8 -/* 09B6B4 8009AAB4 8C6E0000 */ lw $t6, ($v1) -/* 09B6B8 8009AAB8 00000000 */ nop -/* 09B6BC 8009AABC 004E082A */ slt $at, $v0, $t6 -/* 09B6C0 8009AAC0 10200002 */ beqz $at, .L8009AACC -/* 09B6C4 8009AAC4 00000000 */ nop -/* 09B6C8 8009AAC8 AC620000 */ sw $v0, ($v1) -.L8009AACC: -/* 09B6CC 8009AACC 0C000741 */ jal func_80001D04 -/* 09B6D0 8009AAD0 00002825 */ move $a1, $zero -/* 09B6D4 8009AAD4 3C068012 */ lui $a2, %hi(D_801263E0) # $a2, 0x8012 -/* 09B6D8 8009AAD8 1000000B */ b .L8009AB08 -/* 09B6DC 8009AADC 24C663E0 */ addiu $a2, %lo(D_801263E0) # addiu $a2, $a2, 0x63e0 -.L8009AAE0: -/* 09B6E0 8009AAE0 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 09B6E4 8009AAE4 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 09B6E8 8009AAE8 AC23F47C */ sw $v1, %lo(gMenuDelay)($at) -/* 09B6EC 8009AAEC 0C030076 */ jal func_800C01D8 -/* 09B6F0 8009AAF0 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 09B6F4 8009AAF4 24040241 */ li $a0, 577 -/* 09B6F8 8009AAF8 0C000741 */ jal func_80001D04 -/* 09B6FC 8009AAFC 00002825 */ move $a1, $zero -/* 09B700 8009AB00 3C068012 */ lui $a2, %hi(D_801263E0) # $a2, 0x8012 -/* 09B704 8009AB04 24C663E0 */ addiu $a2, %lo(D_801263E0) # addiu $a2, $a2, 0x63e0 -.L8009AB08: -/* 09B708 8009AB08 10000007 */ b .L8009AB28 -/* 09B70C 8009AB0C ACC00000 */ sw $zero, ($a2) -.L8009AB10: -/* 09B710 8009AB10 05010005 */ bgez $t0, .L8009AB28 -/* 09B714 8009AB14 240F0002 */ li $t7, 2 -/* 09B718 8009AB18 ACCF0000 */ sw $t7, ($a2) -/* 09B71C 8009AB1C 240400EB */ li $a0, 235 -/* 09B720 8009AB20 0C000741 */ jal func_80001D04 -/* 09B724 8009AB24 00002825 */ move $a1, $zero -.L8009AB28: -/* 09B728 8009AB28 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e -/* 09B72C 8009AB2C 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) -/* 09B730 8009AB30 10000010 */ b .L8009AB74 -/* 09B734 8009AB34 00000000 */ nop -.L8009AB38: -/* 09B738 8009AB38 13000006 */ beqz $t8, .L8009AB54 -/* 09B73C 8009AB3C 24040241 */ li $a0, 577 -/* 09B740 8009AB40 ACC00000 */ sw $zero, ($a2) -/* 09B744 8009AB44 0C000741 */ jal func_80001D04 -/* 09B748 8009AB48 00002825 */ move $a1, $zero -/* 09B74C 8009AB4C 10000006 */ b .L8009AB68 -/* 09B750 8009AB50 00000000 */ nop -.L8009AB54: -/* 09B754 8009AB54 19000004 */ blez $t0, .L8009AB68 -/* 09B758 8009AB58 240400EB */ li $a0, 235 -/* 09B75C 8009AB5C ACC30000 */ sw $v1, ($a2) -/* 09B760 8009AB60 0C000741 */ jal func_80001D04 -/* 09B764 8009AB64 00002825 */ move $a1, $zero -.L8009AB68: -/* 09B768 8009AB68 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e -/* 09B76C 8009AB6C 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) -/* 09B770 8009AB70 00000000 */ nop -.L8009AB74: -/* 09B774 8009AB74 3C018012 */ lui $at, %hi(gIgnorePlayerInput) # $at, 0x8012 -/* 09B778 8009AB78 AC2063C4 */ sw $zero, %lo(gIgnorePlayerInput)($at) -/* 09B77C 8009AB7C 2841001F */ slti $at, $v0, 0x1f -/* 09B780 8009AB80 14200006 */ bnez $at, .L8009AB9C -/* 09B784 8009AB84 8FBF001C */ lw $ra, 0x1c($sp) -/* 09B788 8009AB88 0C026AEB */ jal func_8009ABAC -/* 09B78C 8009AB8C 00000000 */ nop -/* 09B790 8009AB90 0C0204F4 */ jal menu_init -/* 09B794 8009AB94 2404000E */ li $a0, 14 -/* 09B798 8009AB98 8FBF001C */ lw $ra, 0x1c($sp) -.L8009AB9C: -/* 09B79C 8009AB9C 8FB00018 */ lw $s0, 0x18($sp) -/* 09B7A0 8009ABA0 27BD0048 */ addiu $sp, $sp, 0x48 -/* 09B7A4 8009ABA4 03E00008 */ jr $ra -/* 09B7A8 8009ABA8 00001025 */ move $v0, $zero - diff --git a/asm/non_matchings/menu/menu_title_screen_loop.s b/asm/non_matchings/menu/menu_title_screen_loop.s index 4ae68efe..0b8b7c55 100644 --- a/asm/non_matchings/menu/menu_title_screen_loop.s +++ b/asm/non_matchings/menu/menu_title_screen_loop.s @@ -62,8 +62,8 @@ glabel menu_title_screen_loop /* 0846AC 80083AAC AC2DF47C */ sw $t5, %lo(gMenuDelay)($at) .L80083AB0: /* 0846B0 80083AB0 25086864 */ addiu $t0, %lo(D_80126864) # addiu $t0, $t0, 0x6864 -/* 0846B4 80083AB4 3C028012 */ lui $v0, %hi(D_80126874) # $v0, 0x8012 -/* 0846B8 80083AB8 8C426874 */ lw $v0, %lo(D_80126874)($v0) +/* 0846B4 80083AB4 3C028012 */ lui $v0, %hi(sTitleScreenDemoIds) # $v0, 0x8012 +/* 0846B8 80083AB8 8C426874 */ lw $v0, %lo(sTitleScreenDemoIds)($v0) /* 0846BC 80083ABC 8D0E0000 */ lw $t6, ($t0) /* 0846C0 80083AC0 80590000 */ lb $t9, ($v0) /* 0846C4 80083AC4 004E7821 */ addu $t7, $v0, $t6 @@ -130,10 +130,10 @@ glabel menu_title_screen_loop /* 0847A8 80083BA8 00000000 */ nop .L80083BAC: /* 0847AC 80083BAC 8D180000 */ lw $t8, ($t0) -/* 0847B0 80083BB0 3C028012 */ lui $v0, %hi(D_80126874) # $v0, 0x8012 +/* 0847B0 80083BB0 3C028012 */ lui $v0, %hi(sTitleScreenDemoIds) # $v0, 0x8012 /* 0847B4 80083BB4 27190003 */ addiu $t9, $t8, 3 /* 0847B8 80083BB8 AD190000 */ sw $t9, ($t0) -/* 0847BC 80083BBC 8C426874 */ lw $v0, %lo(D_80126874)($v0) +/* 0847BC 80083BBC 8C426874 */ lw $v0, %lo(sTitleScreenDemoIds)($v0) /* 0847C0 80083BC0 2401FFFF */ li $at, -1 /* 0847C4 80083BC4 00591821 */ addu $v1, $v0, $t9 /* 0847C8 80083BC8 806A0000 */ lb $t2, ($v1) @@ -164,8 +164,8 @@ glabel menu_title_screen_loop /* 084820 80083C20 00000000 */ nop /* 084824 80083C24 3C088012 */ lui $t0, %hi(D_80126864) # $t0, 0x8012 /* 084828 80083C28 25086864 */ addiu $t0, %lo(D_80126864) # addiu $t0, $t0, 0x6864 -/* 08482C 80083C2C 3C028012 */ lui $v0, %hi(D_80126874) # $v0, 0x8012 -/* 084830 80083C30 8C426874 */ lw $v0, %lo(D_80126874)($v0) +/* 08482C 80083C2C 3C028012 */ lui $v0, %hi(sTitleScreenDemoIds) # $v0, 0x8012 +/* 084830 80083C30 8C426874 */ lw $v0, %lo(sTitleScreenDemoIds)($v0) /* 084834 80083C34 8D0F0000 */ lw $t7, ($t0) /* 084838 80083C38 80490000 */ lb $t1, ($v0) /* 08483C 80083C3C 004FC021 */ addu $t8, $v0, $t7 diff --git a/asm/non_matchings/menu/menu_track_select_loop.s b/asm/non_matchings/menu/menu_track_select_loop.s index 319cef00..4c060826 100644 --- a/asm/non_matchings/menu/menu_track_select_loop.s +++ b/asm/non_matchings/menu/menu_track_select_loop.s @@ -34,8 +34,8 @@ glabel menu_track_select_loop .L8008F2B0: /* 08FEB0 8008F2B0 0C02393B */ jal func_8008E4EC /* 08FEB4 8008F2B4 00000000 */ nop -/* 08FEB8 8008F2B8 3C058012 */ lui $a1, %hi(D_801263A0) # $a1, 0x8012 -/* 08FEBC 8008F2BC 24A563A0 */ addiu $a1, %lo(D_801263A0) # addiu $a1, $a1, 0x63a0 +/* 08FEB8 8008F2B8 3C058012 */ lui $a1, %hi(sMenuCurrDisplayList) # $a1, 0x8012 +/* 08FEBC 8008F2BC 24A563A0 */ addiu $a1, %lo(sMenuCurrDisplayList) # addiu $a1, $a1, 0x63a0 /* 08FEC0 8008F2C0 8CA30000 */ lw $v1, ($a1) /* 08FEC4 8008F2C4 3C0DB600 */ lui $t5, 0xb600 /* 08FEC8 8008F2C8 246C0008 */ addiu $t4, $v1, 8 @@ -196,8 +196,8 @@ glabel menu_track_select_loop /* 0900F8 8008F4F8 AC2A0FE8 */ sw $t2, %lo(gTrophyRaceWorldId)($at) /* 0900FC 8008F4FC 3C01800E */ lui $at, %hi(D_800DF450) # $at, 0x800e /* 090100 8008F500 A020F450 */ sb $zero, %lo(D_800DF450)($at) -/* 090104 8008F504 3C01800E */ lui $at, %hi(D_800E0FEC) # $at, 0x800e -/* 090108 8008F508 AC200FEC */ sw $zero, %lo(D_800E0FEC)($at) +/* 090104 8008F504 3C01800E */ lui $at, %hi(gTrophyRaceRound) # $at, 0x800e +/* 090108 8008F508 AC200FEC */ sw $zero, %lo(gTrophyRaceRound)($at) /* 09010C 8008F50C 0C0204F4 */ jal menu_init /* 090110 8008F510 24040014 */ li $a0, 20 /* 090114 8008F514 10000003 */ b .L8008F524 diff --git a/asm/non_matchings/menu/menu_trophy_race_rankings_init.s b/asm/non_matchings/menu/menu_trophy_race_rankings_init.s index 019dbc3a..fad66c55 100644 --- a/asm/non_matchings/menu/menu_trophy_race_rankings_init.s +++ b/asm/non_matchings/menu/menu_trophy_race_rankings_init.s @@ -22,8 +22,8 @@ glabel menu_trophy_race_rankings_init /* 099674 80098A74 3C04800E */ lui $a0, %hi(D_800E1040) # $a0, 0x800e /* 099678 80098A78 0C027229 */ jal allocate_menu_images /* 09967C 80098A7C 24841040 */ addiu $a0, %lo(D_800E1040) # addiu $a0, $a0, 0x1040 -/* 099680 80098A80 3C03800E */ lui $v1, %hi(D_800E0FEC) # $v1, 0x800e -/* 099684 80098A84 24630FEC */ addiu $v1, %lo(D_800E0FEC) # addiu $v1, $v1, 0xfec +/* 099680 80098A80 3C03800E */ lui $v1, %hi(gTrophyRaceRound) # $v1, 0x800e +/* 099684 80098A84 24630FEC */ addiu $v1, %lo(gTrophyRaceRound) # addiu $v1, $v1, 0xfec /* 099688 80098A88 8C620000 */ lw $v0, ($v1) /* 09968C 80098A8C 3C01800E */ lui $at, %hi(D_800E0FF0) # $at, 0x800e /* 099690 80098A90 3C05800E */ lui $a1, %hi(gTrophyRaceWorldId) # $a1, 0x800e diff --git a/asm/non_matchings/menu/menu_trophy_race_rankings_loop.s b/asm/non_matchings/menu/menu_trophy_race_rankings_loop.s index e77f5c80..44791016 100644 --- a/asm/non_matchings/menu/menu_trophy_race_rankings_loop.s +++ b/asm/non_matchings/menu/menu_trophy_race_rankings_loop.s @@ -240,8 +240,8 @@ glabel menu_trophy_race_rankings_loop /* 099F48 80099348 24040007 */ li $a0, 7 /* 099F4C 8009934C 0C031525 */ jal assign_dialogue_box_id /* 099F50 80099350 24040007 */ li $a0, 7 -/* 099F54 80099354 3C18800E */ lui $t8, %hi(D_800E0FEC) # $t8, 0x800e -/* 099F58 80099358 8F180FEC */ lw $t8, %lo(D_800E0FEC)($t8) +/* 099F54 80099354 3C18800E */ lui $t8, %hi(gTrophyRaceRound) # $t8, 0x800e +/* 099F58 80099358 8F180FEC */ lw $t8, %lo(gTrophyRaceRound)($t8) /* 099F5C 8009935C 8FAB002C */ lw $t3, 0x2c($sp) /* 099F60 80099360 2B010004 */ slti $at, $t8, 4 /* 099F64 80099364 10200005 */ beqz $at, .L8009937C @@ -344,7 +344,7 @@ glabel menu_trophy_race_rankings_loop /* 09A0C8 800994C8 AFAF003C */ sw $t7, 0x3c($sp) /* 09A0CC 800994CC 91640048 */ lbu $a0, 0x48($t3) /* 09A0D0 800994D0 AFAC0034 */ sw $t4, 0x34($sp) -/* 09A0D4 800994D4 0C01AC75 */ jal func_8006B1D4 +/* 09A0D4 800994D4 0C01AC75 */ jal get_hub_area_id /* 09A0D8 800994D8 AFAB002C */ sw $t3, 0x2c($sp) /* 09A0DC 800994DC 8FAB002C */ lw $t3, 0x2c($sp) /* 09A0E0 800994E0 3C03800E */ lui $v1, %hi(D_800DF450) # $v1, 0x800e diff --git a/asm/non_matchings/menu/menu_trophy_race_round_init.s b/asm/non_matchings/menu/menu_trophy_race_round_init.s index ab6cfb8d..2f284c7a 100644 --- a/asm/non_matchings/menu/menu_trophy_race_round_init.s +++ b/asm/non_matchings/menu/menu_trophy_race_round_init.s @@ -9,8 +9,8 @@ glabel menu_trophy_race_round_init /* 098E88 80098288 00408825 */ move $s1, $v0 /* 098E8C 8009828C 0C0078A7 */ jal get_misc_asset /* 098E90 80098290 2404001A */ li $a0, 26 -/* 098E94 80098294 3C03800E */ lui $v1, %hi(D_800E0FEC) # $v1, 0x800e -/* 098E98 80098298 8C630FEC */ lw $v1, %lo(D_800E0FEC)($v1) +/* 098E94 80098294 3C03800E */ lui $v1, %hi(gTrophyRaceRound) # $v1, 0x800e +/* 098E98 80098298 8C630FEC */ lw $v1, %lo(gTrophyRaceRound)($v1) /* 098E9C 8009829C 3C0E800E */ lui $t6, %hi(gTrophyRaceWorldId) # $t6, 0x800e /* 098EA0 800982A0 1460000E */ bnez $v1, .L800982DC /* 098EA4 800982A4 3C13800E */ lui $s3, %hi(gNumberOfActivePlayers) # $s3, 0x800e @@ -25,8 +25,8 @@ glabel menu_trophy_race_round_init /* 098EC4 800982C4 24630060 */ addiu $v1, $v1, 0x60 /* 098EC8 800982C8 1604FFFA */ bne $s0, $a0, .L800982B4 /* 098ECC 800982CC AC60FFF4 */ sw $zero, -0xc($v1) -/* 098ED0 800982D0 3C03800E */ lui $v1, %hi(D_800E0FEC) # $v1, 0x800e -/* 098ED4 800982D4 8C630FEC */ lw $v1, %lo(D_800E0FEC)($v1) +/* 098ED0 800982D0 3C03800E */ lui $v1, %hi(gTrophyRaceRound) # $v1, 0x800e +/* 098ED4 800982D4 8C630FEC */ lw $v1, %lo(gTrophyRaceRound)($v1) /* 098ED8 800982D8 00000000 */ nop .L800982DC: /* 098EDC 800982DC 8DCE0FE8 */ lw $t6, %lo(gTrophyRaceWorldId)($t6) diff --git a/asm/non_matchings/menu/menu_trophy_race_round_loop.s b/asm/non_matchings/menu/menu_trophy_race_round_loop.s deleted file mode 100644 index e5b867df..00000000 --- a/asm/non_matchings/menu/menu_trophy_race_round_loop.s +++ /dev/null @@ -1,119 +0,0 @@ -glabel menu_trophy_race_round_loop -/* 09919C 8009859C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0991A0 800985A0 AFBF0014 */ sw $ra, 0x14($sp) -/* 0991A4 800985A4 AFA40020 */ sw $a0, 0x20($sp) -/* 0991A8 800985A8 0C0078A7 */ jal get_misc_asset -/* 0991AC 800985AC 2404001A */ li $a0, 26 -/* 0991B0 800985B0 3C07800E */ lui $a3, %hi(D_800E0980) # $a3, 0x800e -/* 0991B4 800985B4 24E70980 */ addiu $a3, %lo(D_800E0980) # addiu $a3, $a3, 0x980 -/* 0991B8 800985B8 8CE30000 */ lw $v1, ($a3) -/* 0991BC 800985BC 8FAE0020 */ lw $t6, 0x20($sp) -/* 0991C0 800985C0 1060001A */ beqz $v1, .L8009862C -/* 0991C4 800985C4 AFA2001C */ sw $v0, 0x1c($sp) -/* 0991C8 800985C8 006E7823 */ subu $t7, $v1, $t6 -/* 0991CC 800985CC 1DE00017 */ bgtz $t7, .L8009862C -/* 0991D0 800985D0 ACEF0000 */ sw $t7, ($a3) -/* 0991D4 800985D4 3C19800E */ lui $t9, %hi(gTrophyRaceWorldId) # $t9, 0x800e -/* 0991D8 800985D8 8F390FE8 */ lw $t9, %lo(gTrophyRaceWorldId)($t9) -/* 0991DC 800985DC 3C09800E */ lui $t1, %hi(D_800E0FEC) # $t1, 0x800e -/* 0991E0 800985E0 00194080 */ sll $t0, $t9, 2 -/* 0991E4 800985E4 8D290FEC */ lw $t1, %lo(D_800E0FEC)($t1) -/* 0991E8 800985E8 01194023 */ subu $t0, $t0, $t9 -/* 0991EC 800985EC 00084040 */ sll $t0, $t0, 1 -/* 0991F0 800985F0 01095021 */ addu $t2, $t0, $t1 -/* 0991F4 800985F4 01425821 */ addu $t3, $t2, $v0 -/* 0991F8 800985F8 8163FFFA */ lb $v1, -6($t3) -/* 0991FC 800985FC 3C06800E */ lui $a2, %hi(D_800E0758) # $a2, 0x800e -/* 099200 80098600 00036040 */ sll $t4, $v1, 1 -/* 099204 80098604 00CC3021 */ addu $a2, $a2, $t4 -/* 099208 80098608 84C60758 */ lh $a2, %lo(D_800E0758)($a2) -/* 09920C 8009860C 2401FFFF */ li $at, -1 -/* 099210 80098610 10C10005 */ beq $a2, $at, .L80098628 -/* 099214 80098614 30C4FFFF */ andi $a0, $a2, 0xffff -/* 099218 80098618 0C000741 */ jal func_80001D04 -/* 09921C 8009861C 00002825 */ move $a1, $zero -/* 099220 80098620 3C07800E */ lui $a3, %hi(D_800E0980) # $a3, 0x800e -/* 099224 80098624 24E70980 */ addiu $a3, %lo(D_800E0980) # addiu $a3, $a3, 0x980 -.L80098628: -/* 099228 80098628 ACE00000 */ sw $zero, ($a3) -.L8009862C: -/* 09922C 8009862C 3C03800E */ lui $v1, %hi(gMenuDelay) # $v1, 0x800e -/* 099230 80098630 2463F47C */ addiu $v1, %lo(gMenuDelay) # addiu $v1, $v1, -0xb84 -/* 099234 80098634 8C620000 */ lw $v0, ($v1) -/* 099238 80098638 8FAD0020 */ lw $t5, 0x20($sp) -/* 09923C 8009863C 10400003 */ beqz $v0, .L8009864C -/* 099240 80098640 004D7021 */ addu $t6, $v0, $t5 -/* 099244 80098644 AC6E0000 */ sw $t6, ($v1) -/* 099248 80098648 01C01025 */ move $v0, $t6 -.L8009864C: -/* 09924C 8009864C 28410016 */ slti $at, $v0, 0x16 -/* 099250 80098650 10200006 */ beqz $at, .L8009866C -/* 099254 80098654 00000000 */ nop -/* 099258 80098658 8FA40020 */ lw $a0, 0x20($sp) -/* 09925C 8009865C 0C0260F0 */ jal func_800983C0 -/* 099260 80098660 00000000 */ nop -/* 099264 80098664 3C03800E */ lui $v1, %hi(gMenuDelay) # $v1, 0x800e -/* 099268 80098668 2463F47C */ addiu $v1, %lo(gMenuDelay) # addiu $v1, $v1, -0xb84 -.L8009866C: -/* 09926C 8009866C 3C0F8012 */ lui $t7, %hi(gIgnorePlayerInput) # $t7, 0x8012 -/* 099270 80098670 8DEF63C4 */ lw $t7, %lo(gIgnorePlayerInput)($t7) -/* 099274 80098674 00000000 */ nop -/* 099278 80098678 15E00014 */ bnez $t7, .L800986CC -/* 09927C 8009867C 00000000 */ nop -/* 099280 80098680 8C780000 */ lw $t8, ($v1) -/* 099284 80098684 00000000 */ nop -/* 099288 80098688 17000010 */ bnez $t8, .L800986CC -/* 09928C 8009868C 00000000 */ nop -/* 099290 80098690 0C02393B */ jal func_8008E4EC -/* 099294 80098694 00000000 */ nop -/* 099298 80098698 3C198012 */ lui $t9, %hi(D_801267E8) # $t9, 0x8012 -/* 09929C 8009869C 8F3967E8 */ lw $t9, %lo(D_801267E8)($t9) -/* 0992A0 800986A0 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 0992A4 800986A4 33289000 */ andi $t0, $t9, 0x9000 -/* 0992A8 800986A8 11000008 */ beqz $t0, .L800986CC -/* 0992AC 800986AC 00000000 */ nop -/* 0992B0 800986B0 0C030076 */ jal func_800C01D8 -/* 0992B4 800986B4 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 0992B8 800986B8 24090001 */ li $t1, 1 -/* 0992BC 800986BC 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 0992C0 800986C0 AC29F47C */ sw $t1, %lo(gMenuDelay)($at) -/* 0992C4 800986C4 0C000326 */ jal set_music_fade_timer -/* 0992C8 800986C8 2404FF80 */ li $a0, -128 -.L800986CC: -/* 0992CC 800986CC 3C03800E */ lui $v1, %hi(gMenuDelay) # $v1, 0x800e -/* 0992D0 800986D0 2463F47C */ addiu $v1, %lo(gMenuDelay) # addiu $v1, $v1, -0xb84 -/* 0992D4 800986D4 8C6A0000 */ lw $t2, ($v1) -/* 0992D8 800986D8 00001025 */ move $v0, $zero -/* 0992DC 800986DC 2941001F */ slti $at, $t2, 0x1f -/* 0992E0 800986E0 14200016 */ bnez $at, .L8009873C -/* 0992E4 800986E4 00000000 */ nop -/* 0992E8 800986E8 0C0261D5 */ jal func_80098754 -/* 0992EC 800986EC 00000000 */ nop -/* 0992F0 800986F0 3C0B800E */ lui $t3, %hi(gTrophyRaceWorldId) # $t3, 0x800e -/* 0992F4 800986F4 8D6B0FE8 */ lw $t3, %lo(gTrophyRaceWorldId)($t3) -/* 0992F8 800986F8 3C0D800E */ lui $t5, %hi(D_800E0FEC) # $t5, 0x800e -/* 0992FC 800986FC 000B6080 */ sll $t4, $t3, 2 -/* 099300 80098700 8DAD0FEC */ lw $t5, %lo(D_800E0FEC)($t5) -/* 099304 80098704 018B6023 */ subu $t4, $t4, $t3 -/* 099308 80098708 8FAF001C */ lw $t7, 0x1c($sp) -/* 09930C 8009870C 000C6040 */ sll $t4, $t4, 1 -/* 099310 80098710 018D7021 */ addu $t6, $t4, $t5 -/* 099314 80098714 01CFC021 */ addu $t8, $t6, $t7 -/* 099318 80098718 8319FFFA */ lb $t9, -6($t8) -/* 09931C 8009871C 3C01800E */ lui $at, %hi(gTrackIdToLoad) # $at, 0x800e -/* 099320 80098720 3C02800E */ lui $v0, %hi(gNumberOfActivePlayers) # $v0, 0x800e -/* 099324 80098724 AC39F4D4 */ sw $t9, %lo(gTrackIdToLoad)($at) -/* 099328 80098728 3C01800E */ lui $at, %hi(D_800DF478) # $at, 0x800e -/* 09932C 8009872C 24080001 */ li $t0, 1 -/* 099330 80098730 8C42F4BC */ lw $v0, %lo(gNumberOfActivePlayers)($v0) -/* 099334 80098734 10000003 */ b .L80098744 -/* 099338 80098738 AC28F478 */ sw $t0, %lo(D_800DF478)($at) -.L8009873C: -/* 09933C 8009873C 3C018012 */ lui $at, %hi(gIgnorePlayerInput) # $at, 0x8012 -/* 099340 80098740 AC2063C4 */ sw $zero, %lo(gIgnorePlayerInput)($at) -.L80098744: -/* 099344 80098744 8FBF0014 */ lw $ra, 0x14($sp) -/* 099348 80098748 27BD0020 */ addiu $sp, $sp, 0x20 -/* 09934C 8009874C 03E00008 */ jr $ra -/* 099350 80098750 00000000 */ nop - diff --git a/asm/non_matchings/menu/render_file_select_menu.s b/asm/non_matchings/menu/render_file_select_menu.s index 43a4173d..1eab6413 100644 --- a/asm/non_matchings/menu/render_file_select_menu.s +++ b/asm/non_matchings/menu/render_file_select_menu.s @@ -20,10 +20,10 @@ glabel render_file_select_menu .L8008CDB8: /* 08D9B8 8008CDB8 0C026F57 */ jal func_8009BD5C /* 08D9BC 8008CDBC 00000000 */ nop -/* 08D9C0 8008CDC0 3C178012 */ lui $s7, %hi(D_801263A0) # $s7, 0x8012 -/* 08D9C4 8008CDC4 26F763A0 */ addiu $s7, %lo(D_801263A0) # addiu $s7, $s7, 0x63a0 -/* 08D9C8 8008CDC8 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 08D9CC 8008CDCC 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 08D9C0 8008CDC0 3C178012 */ lui $s7, %hi(sMenuCurrDisplayList) # $s7, 0x8012 +/* 08D9C4 8008CDC4 26F763A0 */ addiu $s7, %lo(sMenuCurrDisplayList) # addiu $s7, $s7, 0x63a0 +/* 08D9C8 8008CDC8 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 08D9CC 8008CDCC 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 08D9D0 8008CDD0 0C019FCB */ jal func_80067F2C /* 08D9D4 8008CDD4 02E02025 */ move $a0, $s7 /* 08D9D8 8008CDD8 3C118012 */ lui $s1, %hi(gSavefileInfo) # $s1, 0x8012 diff --git a/asm/non_matchings/menu/render_magic_codes_list_menu_text.s b/asm/non_matchings/menu/render_magic_codes_list_menu_text.s index 7f755f03..e2e536d8 100644 --- a/asm/non_matchings/menu/render_magic_codes_list_menu_text.s +++ b/asm/non_matchings/menu/render_magic_codes_list_menu_text.s @@ -28,8 +28,8 @@ glabel render_magic_codes_list_menu_text /* 08B1D4 8008A5D4 3C17800E */ lui $s7, %hi(gMenuText) # $s7, 0x800e /* 08B1D8 8008A5D8 26F7F4A0 */ addiu $s7, %lo(gMenuText) # addiu $s7, $s7, -0xb60 /* 08B1DC 8008A5DC 8EEF0000 */ lw $t7, ($s7) -/* 08B1E0 8008A5E0 3C158012 */ lui $s5, %hi(D_801263A0) # $s5, 0x8012 -/* 08B1E4 8008A5E4 26B563A0 */ addiu $s5, %lo(D_801263A0) # addiu $s5, $s5, 0x63a0 +/* 08B1E0 8008A5E0 3C158012 */ lui $s5, %hi(sMenuCurrDisplayList) # $s5, 0x8012 +/* 08B1E4 8008A5E4 26B563A0 */ addiu $s5, %lo(sMenuCurrDisplayList) # addiu $s5, $s5, 0x63a0 /* 08B1E8 8008A5E8 2418000C */ li $t8, 12 /* 08B1EC 8008A5EC 8DE70050 */ lw $a3, 0x50($t7) /* 08B1F0 8008A5F0 AFB80010 */ sw $t8, 0x10($sp) diff --git a/asm/non_matchings/menu/render_magic_codes_ui.s b/asm/non_matchings/menu/render_magic_codes_ui.s index d47062c7..7fe24d86 100644 --- a/asm/non_matchings/menu/render_magic_codes_ui.s +++ b/asm/non_matchings/menu/render_magic_codes_ui.s @@ -16,8 +16,8 @@ glabel render_magic_codes_ui /* 08A2DC 800896DC 00003025 */ move $a2, $zero /* 08A2E0 800896E0 0C0310F3 */ jal set_text_background_colour /* 08A2E4 800896E4 00003825 */ move $a3, $zero -/* 08A2E8 800896E8 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 08A2EC 800896EC 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A2E8 800896E8 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 08A2EC 800896EC 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A2F0 800896F0 00002825 */ move $a1, $zero /* 08A2F4 800896F4 00003025 */ move $a2, $zero /* 08A2F8 800896F8 0C0316D6 */ jal render_dialogue_box @@ -33,11 +33,11 @@ glabel render_magic_codes_ui /* 08A320 80089720 240700FF */ li $a3, 255 /* 08A324 80089724 3C0F800E */ lui $t7, %hi(gMenuText) # $t7, 0x800e /* 08A328 80089728 8DEFF4A0 */ lw $t7, %lo(gMenuText)($t7) -/* 08A32C 8008972C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08A32C 8008972C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08A330 80089730 2418000C */ li $t8, 12 /* 08A334 80089734 8DE70044 */ lw $a3, 0x44($t7) /* 08A338 80089738 AFB80010 */ sw $t8, 0x10($sp) -/* 08A33C 8008973C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A33C 8008973C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A340 80089740 240500A1 */ li $a1, 161 /* 08A344 80089744 0C031110 */ jal draw_text /* 08A348 80089748 24060023 */ li $a2, 35 @@ -50,11 +50,11 @@ glabel render_magic_codes_ui /* 08A364 80089764 00003825 */ move $a3, $zero /* 08A368 80089768 3C09800E */ lui $t1, %hi(gMenuText) # $t1, 0x800e /* 08A36C 8008976C 8D29F4A0 */ lw $t1, %lo(gMenuText)($t1) -/* 08A370 80089770 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08A370 80089770 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08A374 80089774 240A000C */ li $t2, 12 /* 08A378 80089778 8D270044 */ lw $a3, 0x44($t1) /* 08A37C 8008977C AFAA0010 */ sw $t2, 0x10($sp) -/* 08A380 80089780 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A380 80089780 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A384 80089784 240500A0 */ li $a1, 160 /* 08A388 80089788 0C031110 */ jal draw_text /* 08A38C 8008978C 24060020 */ li $a2, 32 @@ -111,12 +111,12 @@ glabel render_magic_codes_ui /* 08A448 80089848 2A61005B */ slti $at, $s3, 0x5b .L8008984C: /* 08A44C 8008984C 1020000C */ beqz $at, .L80089880 -/* 08A450 80089850 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08A450 80089850 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08A454 80089854 240A000C */ li $t2, 12 /* 08A458 80089858 A3B3005C */ sb $s3, 0x5c($sp) /* 08A45C 8008985C A3A0005D */ sb $zero, 0x5d($sp) /* 08A460 80089860 AFAA0010 */ sw $t2, 0x10($sp) -/* 08A464 80089864 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A464 80089864 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A468 80089868 02202825 */ move $a1, $s1 /* 08A46C 8008986C 02803025 */ move $a2, $s4 /* 08A470 80089870 0C031110 */ jal draw_text @@ -125,13 +125,13 @@ glabel render_magic_codes_ui /* 08A47C 8008987C 00000000 */ nop .L80089880: /* 08A480 80089880 1617000C */ bne $s0, $s7, .L800898B4 -/* 08A484 80089884 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 08A488 80089888 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08A484 80089884 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 08A488 80089888 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08A48C 8008988C 3C07800F */ lui $a3, %hi(D_800E8210) # $a3, 0x800f /* 08A490 80089890 240B000C */ li $t3, 12 /* 08A494 80089894 AFAB0010 */ sw $t3, 0x10($sp) /* 08A498 80089898 24E78210 */ addiu $a3, %lo(D_800E8210) # addiu $a3, $a3, -0x7df0 -/* 08A49C 8008989C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A49C 8008989C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A4A0 800898A0 02202825 */ move $a1, $s1 /* 08A4A4 800898A4 0C031110 */ jal draw_text /* 08A4A8 800898A8 02803025 */ move $a2, $s4 @@ -142,7 +142,7 @@ glabel render_magic_codes_ui /* 08A4B8 800898B8 240C000C */ li $t4, 12 /* 08A4BC 800898BC AFAC0010 */ sw $t4, 0x10($sp) /* 08A4C0 800898C0 24E78214 */ addiu $a3, %lo(D_800E8214) # addiu $a3, $a3, -0x7dec -/* 08A4C4 800898C4 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A4C4 800898C4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A4C8 800898C8 02202825 */ move $a1, $s1 /* 08A4CC 800898CC 0C031110 */ jal draw_text /* 08A4D0 800898D0 02803025 */ move $a2, $s4 @@ -226,11 +226,11 @@ glabel render_magic_codes_ui /* 08A5EC 800899EC 240600FF */ li $a2, 255 /* 08A5F0 800899F0 0C0310E1 */ jal set_text_colour /* 08A5F4 800899F4 02003825 */ move $a3, $s0 -/* 08A5F8 800899F8 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08A5F8 800899F8 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08A5FC 800899FC 8E270000 */ lw $a3, ($s1) /* 08A600 80089A00 2409000C */ li $t1, 12 /* 08A604 80089A04 AFA90010 */ sw $t1, 0x10($sp) -/* 08A608 80089A08 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A608 80089A08 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A60C 80089A0C 24058000 */ li $a1, -32768 /* 08A610 80089A10 0C031110 */ jal draw_text /* 08A614 80089A14 02603025 */ move $a2, $s3 @@ -267,11 +267,11 @@ glabel render_magic_codes_ui /* 08A68C 80089A8C 3C028012 */ lui $v0, %hi(gCheatsAssetData) # $v0, 0x8012 /* 08A690 80089A90 3C0C800E */ lui $t4, %hi(gMenuText) # $t4, 0x800e /* 08A694 80089A94 8D8CF4A0 */ lw $t4, %lo(gMenuText)($t4) -/* 08A698 80089A98 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08A698 80089A98 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08A69C 80089A9C 240D000C */ li $t5, 12 /* 08A6A0 80089AA0 8D870048 */ lw $a3, 0x48($t4) /* 08A6A4 80089AA4 AFAD0010 */ sw $t5, 0x10($sp) -/* 08A6A8 80089AA8 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A6A8 80089AA8 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A6AC 80089AAC 24058000 */ li $a1, -32768 /* 08A6B0 80089AB0 0C031110 */ jal draw_text /* 08A6B4 80089AB4 24060090 */ li $a2, 144 @@ -283,10 +283,10 @@ glabel render_magic_codes_ui /* 08A6C8 80089AC8 24430002 */ addiu $v1, $v0, 2 /* 08A6CC 80089ACC 006E7821 */ addu $t7, $v1, $t6 /* 08A6D0 80089AD0 95F80002 */ lhu $t8, 2($t7) -/* 08A6D4 80089AD4 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08A6D4 80089AD4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08A6D8 80089AD8 2419000C */ li $t9, 12 /* 08A6DC 80089ADC AFB90010 */ sw $t9, 0x10($sp) -/* 08A6E0 80089AE0 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A6E0 80089AE0 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A6E4 80089AE4 24058000 */ li $a1, -32768 /* 08A6E8 80089AE8 24060090 */ li $a2, 144 /* 08A6EC 80089AEC 0C031110 */ jal draw_text @@ -296,12 +296,12 @@ glabel render_magic_codes_ui .L80089AFC: /* 08A6FC 80089AFC 16E2000C */ bne $s7, $v0, .L80089B30 /* 08A700 80089B00 24010006 */ li $at, 6 -/* 08A704 80089B04 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08A704 80089B04 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08A708 80089B08 3C078012 */ lui $a3, %hi(D_80126C58) # $a3, 0x8012 /* 08A70C 80089B0C 2409000C */ li $t1, 12 /* 08A710 80089B10 AFA90010 */ sw $t1, 0x10($sp) /* 08A714 80089B14 24E76C58 */ addiu $a3, %lo(D_80126C58) # addiu $a3, $a3, 0x6c58 -/* 08A718 80089B18 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A718 80089B18 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A71C 80089B1C 24058000 */ li $a1, -32768 /* 08A720 80089B20 0C031110 */ jal draw_text /* 08A724 80089B24 24060090 */ li $a2, 144 @@ -309,13 +309,13 @@ glabel render_magic_codes_ui /* 08A72C 80089B2C 8EAC0000 */ lw $t4, ($s5) .L80089B30: /* 08A730 80089B30 1441000A */ bne $v0, $at, .L80089B5C -/* 08A734 80089B34 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 08A734 80089B34 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 08A738 80089B38 3C0A800E */ lui $t2, %hi(gMenuText) # $t2, 0x800e /* 08A73C 80089B3C 8D4AF4A0 */ lw $t2, %lo(gMenuText)($t2) /* 08A740 80089B40 240B000C */ li $t3, 12 /* 08A744 80089B44 8D47004C */ lw $a3, 0x4c($t2) /* 08A748 80089B48 AFAB0010 */ sw $t3, 0x10($sp) -/* 08A74C 80089B4C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A74C 80089B4C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A750 80089B50 24058000 */ li $a1, -32768 /* 08A754 80089B54 0C031110 */ jal draw_text /* 08A758 80089B58 24060090 */ li $a2, 144 @@ -398,8 +398,8 @@ glabel render_magic_codes_ui /* 08A868 80089C68 27DE0001 */ addiu $fp, $fp, 1 /* 08A86C 80089C6C 17D4FFDB */ bne $fp, $s4, .L80089BDC /* 08A870 80089C70 26310004 */ addiu $s1, $s1, 4 -/* 08A874 80089C74 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 08A878 80089C78 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 08A874 80089C74 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 08A878 80089C78 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 08A87C 80089C7C 00002825 */ move $a1, $zero /* 08A880 80089C80 00003025 */ move $a2, $zero /* 08A884 80089C84 0C0316D6 */ jal render_dialogue_box diff --git a/asm/non_matchings/menu/render_track_select_setup_ui.s b/asm/non_matchings/menu/render_track_select_setup_ui.s index f2ef20ad..050a87c4 100644 --- a/asm/non_matchings/menu/render_track_select_setup_ui.s +++ b/asm/non_matchings/menu/render_track_select_setup_ui.s @@ -50,11 +50,11 @@ glabel render_track_select_setup_ui /* 091BD4 80090FD4 24050001 */ li $a1, 1 /* 091BD8 80090FD8 0C026F57 */ jal func_8009BD5C /* 091BDC 80090FDC 00000000 */ nop -/* 091BE0 80090FE0 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 091BE4 80090FE4 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012 -/* 091BE8 80090FE8 24A563A8 */ addiu $a1, %lo(D_801263A8) # addiu $a1, $a1, 0x63a8 +/* 091BE0 80090FE0 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 091BE4 80090FE4 3C058012 */ lui $a1, %hi(sMenuCurrHudMat) # $a1, 0x8012 +/* 091BE8 80090FE8 24A563A8 */ addiu $a1, %lo(sMenuCurrHudMat) # addiu $a1, $a1, 0x63a8 /* 091BEC 80090FEC 0C019FCB */ jal func_80067F2C -/* 091BF0 80090FF0 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 091BF0 80090FF0 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 091BF4 80090FF4 3C02800E */ lui $v0, %hi(gMenuDelay) # $v0, 0x800e /* 091BF8 80090FF8 8C42F47C */ lw $v0, %lo(gMenuDelay)($v0) /* 091BFC 80090FFC 3C03800E */ lui $v1, %hi(gMenuImageStack) # $v1, 0x800e @@ -134,7 +134,7 @@ glabel render_track_select_setup_ui /* 091D04 80091104 00000000 */ nop /* 091D08 80091108 3C04800E */ lui $a0, %hi(gTrackIdForPreview) # $a0, 0x800e /* 091D0C 8009110C 8C84F4C4 */ lw $a0, %lo(gTrackIdForPreview)($a0) -/* 091D10 80091110 0C01AF77 */ jal func_8006BDDC +/* 091D10 80091110 0C01AF77 */ jal get_level_name /* 091D14 80091114 AFA2007C */ sw $v0, 0x7c($sp) /* 091D18 80091118 00408025 */ move $s0, $v0 /* 091D1C 8009111C 0C0310BB */ jal set_text_font @@ -151,10 +151,10 @@ glabel render_track_select_setup_ui /* 091D48 80091148 00003025 */ move $a2, $zero /* 091D4C 8009114C 0C0310F3 */ jal set_text_background_colour /* 091D50 80091150 00003825 */ move $a3, $zero -/* 091D54 80091154 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 091D54 80091154 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 091D58 80091158 240C000C */ li $t4, 12 /* 091D5C 8009115C AFAC0010 */ sw $t4, 0x10($sp) -/* 091D60 80091160 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 091D60 80091160 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 091D64 80091164 24058000 */ li $a1, -32768 /* 091D68 80091168 2406002B */ li $a2, 43 /* 091D6C 8009116C 0C031110 */ jal draw_text @@ -210,10 +210,10 @@ glabel render_track_select_setup_ui .L8009122C: /* 091E2C 8009122C 26100700 */ addiu $s0, %lo(D_800E0700) # addiu $s0, $s0, 0x700 /* 091E30 80091230 86020004 */ lh $v0, 4($s0) -/* 091E34 80091234 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 091E34 80091234 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 091E38 80091238 0282082A */ slt $at, $s4, $v0 /* 091E3C 8009123C 10200003 */ beqz $at, .L8009124C -/* 091E40 80091240 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 091E40 80091240 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 091E44 80091244 10000002 */ b .L80091250 /* 091E48 80091248 0040A025 */ move $s4, $v0 .L8009124C: @@ -287,12 +287,12 @@ glabel render_track_select_setup_ui .L80091344: /* 091F44 80091344 3C0F800E */ lui $t7, %hi(gMenuText) # $t7, 0x800e /* 091F48 80091348 8DEFF4A0 */ lw $t7, %lo(gMenuText)($t7) -/* 091F4C 8009134C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 091F4C 8009134C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 091F50 80091350 01F1C021 */ addu $t8, $t7, $s1 /* 091F54 80091354 8F070248 */ lw $a3, 0x248($t8) /* 091F58 80091358 2419000C */ li $t9, 12 /* 091F5C 8009135C AFB90010 */ sw $t9, 0x10($sp) -/* 091F60 80091360 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 091F60 80091360 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 091F64 80091364 02532823 */ subu $a1, $s2, $s3 /* 091F68 80091368 0C031110 */ jal draw_text /* 091F6C 8009136C 02003025 */ move $a2, $s0 @@ -324,25 +324,25 @@ glabel render_track_select_setup_ui /* 091FD0 800913D0 3C09800E */ lui $t1, %hi(gMenuText) # $t1, 0x800e /* 091FD4 800913D4 8D29F4A0 */ lw $t1, %lo(gMenuText)($t1) /* 091FD8 800913D8 8FB00080 */ lw $s0, 0x80($sp) -/* 091FDC 800913DC 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 091FDC 800913DC 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 091FE0 800913E0 240B0008 */ li $t3, 8 /* 091FE4 800913E4 8D270024 */ lw $a3, 0x24($t1) /* 091FE8 800913E8 26100048 */ addiu $s0, $s0, 0x48 /* 091FEC 800913EC 02003025 */ move $a2, $s0 /* 091FF0 800913F0 AFAB0010 */ sw $t3, 0x10($sp) -/* 091FF4 800913F4 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 091FF4 800913F4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 091FF8 800913F8 0C031110 */ jal draw_text /* 091FFC 800913FC 24050038 */ li $a1, 56 /* 092000 80091400 3C0C800E */ lui $t4, %hi(gMenuText) # $t4, 0x800e /* 092004 80091404 8D8CF4A0 */ lw $t4, %lo(gMenuText)($t4) /* 092008 80091408 8FB20080 */ lw $s2, 0x80($sp) -/* 09200C 8009140C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 09200C 8009140C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092010 80091410 240D0008 */ li $t5, 8 /* 092014 80091414 8D870028 */ lw $a3, 0x28($t4) /* 092018 80091418 2652005C */ addiu $s2, $s2, 0x5c /* 09201C 8009141C 02403025 */ move $a2, $s2 /* 092020 80091420 AFAD0010 */ sw $t5, 0x10($sp) -/* 092024 80091424 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092024 80091424 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 092028 80091428 0C031110 */ jal draw_text /* 09202C 8009142C 24050038 */ li $a1, 56 /* 092030 80091430 8FCE0000 */ lw $t6, ($fp) @@ -367,10 +367,10 @@ glabel render_track_select_setup_ui /* 09207C 8009147C 02202825 */ move $a1, $s1 /* 092080 80091480 0C025DBE */ jal decompress_filename_string /* 092084 80091484 24060003 */ li $a2, 3 -/* 092088 80091488 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092088 80091488 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 09208C 8009148C 240D000C */ li $t5, 12 /* 092090 80091490 AFAD0010 */ sw $t5, 0x10($sp) -/* 092094 80091494 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092094 80091494 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 092098 80091498 240500FA */ li $a1, 250 /* 09209C 8009149C 02003025 */ move $a2, $s0 /* 0920A0 800914A0 0C031110 */ jal draw_text @@ -389,10 +389,10 @@ glabel render_track_select_setup_ui /* 0920D4 800914D4 02202825 */ move $a1, $s1 /* 0920D8 800914D8 0C025DBE */ jal decompress_filename_string /* 0920DC 800914DC 24060003 */ li $a2, 3 -/* 0920E0 800914E0 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0920E0 800914E0 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0920E4 800914E4 240C000C */ li $t4, 12 /* 0920E8 800914E8 AFAC0010 */ sw $t4, 0x10($sp) -/* 0920EC 800914EC 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0920EC 800914EC 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0920F0 800914F0 240500FA */ li $a1, 250 /* 0920F4 800914F4 02403025 */ move $a2, $s2 /* 0920F8 800914F8 0C031110 */ jal draw_text @@ -415,7 +415,7 @@ glabel render_track_select_setup_ui /* 09213C 8009153C AFA00018 */ sw $zero, 0x18($sp) /* 092140 80091540 24050016 */ li $a1, 22 /* 092144 80091544 24060035 */ li $a2, 53 -/* 092148 80091548 0C020600 */ jal func_80081800 +/* 092148 80091548 0C020600 */ jal show_timestamp /* 09214C 8009154C 24070080 */ li $a3, 128 /* 092150 80091550 3C0D8012 */ lui $t5, %hi(gPlayerSelectVehicle) # $t5, 0x8012 /* 092154 80091554 81AD69C0 */ lb $t5, %lo(gPlayerSelectVehicle)($t5) @@ -435,7 +435,7 @@ glabel render_track_select_setup_ui /* 09218C 8009158C AFA00018 */ sw $zero, 0x18($sp) /* 092190 80091590 24050016 */ li $a1, 22 /* 092194 80091594 24060021 */ li $a2, 33 -/* 092198 80091598 0C020600 */ jal func_80081800 +/* 092198 80091598 0C020600 */ jal show_timestamp /* 09219C 8009159C 240700FF */ li $a3, 255 /* 0921A0 800915A0 3C0D8012 */ lui $t5, %hi(D_801263E0) # $t5, 0x8012 /* 0921A4 800915A4 8DAD63E0 */ lw $t5, %lo(D_801263E0)($t5) @@ -453,20 +453,20 @@ glabel render_track_select_setup_ui /* 0921D4 800915D4 240700BA */ li $a3, 186 /* 0921D8 800915D8 0C0313B7 */ jal set_current_dialogue_box_coords /* 0921DC 800915DC 27060070 */ addiu $a2, $t8, 0x70 -/* 0921E0 800915E0 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 0921E4 800915E4 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0921E0 800915E0 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 0921E4 800915E4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0921E8 800915E8 00002825 */ move $a1, $zero /* 0921EC 800915EC 00003025 */ move $a2, $zero /* 0921F0 800915F0 0C0316D6 */ jal render_dialogue_box /* 0921F4 800915F4 24070007 */ li $a3, 7 /* 0921F8 800915F8 3C0F8012 */ lui $t7, %hi(D_801263E0) # $t7, 0x8012 /* 0921FC 800915FC 8DEF63E0 */ lw $t7, %lo(D_801263E0)($t7) -/* 092200 80091600 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092200 80091600 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092204 80091604 1DE00013 */ bgtz $t7, .L80091654 -/* 092208 80091608 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092208 80091608 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 09220C 8009160C 8FA70080 */ lw $a3, 0x80($sp) /* 092210 80091610 8FCA0000 */ lw $t2, ($fp) -/* 092214 80091614 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092214 80091614 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092218 80091618 3C05800E */ lui $a1, %hi(D_800E05B4) # $a1, 0x800e /* 09221C 8009161C 241900FF */ li $t9, 255 /* 092220 80091620 240900FF */ li $t1, 255 @@ -475,7 +475,7 @@ glabel render_track_select_setup_ui /* 09222C 8009162C AFA90014 */ sw $t1, 0x14($sp) /* 092230 80091630 AFB90010 */ sw $t9, 0x10($sp) /* 092234 80091634 24A505B4 */ addiu $a1, %lo(D_800E05B4) # addiu $a1, $a1, 0x5b4 -/* 092238 80091638 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092238 80091638 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 09223C 8009163C 24060088 */ li $a2, 136 /* 092240 80091640 24E70072 */ addiu $a3, $a3, 0x72 /* 092244 80091644 0C01E2AE */ jal render_textured_rectangle @@ -505,11 +505,11 @@ glabel render_track_select_setup_ui .L800916A0: /* 0922A0 800916A0 3C0E800E */ lui $t6, %hi(D_800E0414) # $t6, 0x800e /* 0922A4 800916A4 8DCE0414 */ lw $t6, %lo(D_800E0414)($t6) -/* 0922A8 800916A8 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0922A8 800916A8 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0922AC 800916AC 16AE0011 */ bne $s5, $t6, .L800916F4 -/* 0922B0 800916B0 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0922B0 800916B0 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0922B4 800916B4 8FC80000 */ lw $t0, ($fp) -/* 0922B8 800916B8 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0922B8 800916B8 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0922BC 800916BC 8E050004 */ lw $a1, 4($s0) /* 0922C0 800916C0 240F00FF */ li $t7, 255 /* 0922C4 800916C4 241900FF */ li $t9, 255 @@ -517,7 +517,7 @@ glabel render_track_select_setup_ui /* 0922CC 800916CC AFA90018 */ sw $t1, 0x18($sp) /* 0922D0 800916D0 AFB90014 */ sw $t9, 0x14($sp) /* 0922D4 800916D4 AFAF0010 */ sw $t7, 0x10($sp) -/* 0922D8 800916D8 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0922D8 800916D8 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0922DC 800916DC 24060068 */ li $a2, 104 /* 0922E0 800916E0 02E03825 */ move $a3, $s7 /* 0922E4 800916E4 0C01E2AE */ jal render_textured_rectangle @@ -595,8 +595,8 @@ glabel render_track_select_setup_ui /* 0923E8 800917E8 2445FFFE */ addiu $a1, $v0, -2 /* 0923EC 800917EC 0C0313B7 */ jal set_current_dialogue_box_coords /* 0923F0 800917F0 24470032 */ addiu $a3, $v0, 0x32 -/* 0923F4 800917F4 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 -/* 0923F8 800917F8 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0923F4 800917F4 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 +/* 0923F8 800917F8 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0923FC 800917FC 00002825 */ move $a1, $zero /* 092400 80091800 00003025 */ move $a2, $zero /* 092404 80091804 0C0316D6 */ jal render_dialogue_box @@ -605,7 +605,7 @@ glabel render_track_select_setup_ui /* 09240C 8009180C 86180002 */ lh $t8, 2($s0) /* 092410 80091810 8FAE0080 */ lw $t6, 0x80($sp) /* 092414 80091814 8FC80000 */ lw $t0, ($fp) -/* 092418 80091818 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092418 80091818 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 09241C 8009181C 8E250000 */ lw $a1, ($s1) /* 092420 80091820 86060000 */ lh $a2, ($s0) /* 092424 80091824 240F00FF */ li $t7, 255 @@ -614,7 +614,7 @@ glabel render_track_select_setup_ui /* 092430 80091830 AFA90018 */ sw $t1, 0x18($sp) /* 092434 80091834 AFB90014 */ sw $t9, 0x14($sp) /* 092438 80091838 AFAF0010 */ sw $t7, 0x10($sp) -/* 09243C 8009183C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 09243C 8009183C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 092440 80091840 030E3821 */ addu $a3, $t8, $t6 /* 092444 80091844 0C01E2AE */ jal render_textured_rectangle /* 092448 80091848 AFA8001C */ sw $t0, 0x1c($sp) @@ -675,7 +675,7 @@ glabel render_track_select_setup_ui /* 092510 80091910 16AD0011 */ bne $s5, $t5, .L80091958 /* 092514 80091914 3C0A800E */ lui $t2, %hi(gTrackIdForPreview) # $t2, 0x800e /* 092518 80091918 8FD90000 */ lw $t9, ($fp) -/* 09251C 8009191C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 09251C 8009191C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092520 80091920 8E450004 */ lw $a1, 4($s2) /* 092524 80091924 86060000 */ lh $a2, ($s0) /* 092528 80091928 241800FF */ li $t8, 255 @@ -684,7 +684,7 @@ glabel render_track_select_setup_ui /* 092534 80091934 AFAF0018 */ sw $t7, 0x18($sp) /* 092538 80091938 AFAE0014 */ sw $t6, 0x14($sp) /* 09253C 8009193C AFB80010 */ sw $t8, 0x10($sp) -/* 092540 80091940 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092540 80091940 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 092544 80091944 02E03825 */ move $a3, $s7 /* 092548 80091948 0C01E2AE */ jal render_textured_rectangle /* 09254C 8009194C AFB9001C */ sw $t9, 0x1c($sp) @@ -696,12 +696,12 @@ glabel render_track_select_setup_ui /* 092560 80091960 000A5880 */ sll $t3, $t2, 2 /* 092564 80091964 010B6021 */ addu $t4, $t0, $t3 /* 092568 80091968 8D8D0000 */ lw $t5, ($t4) -/* 09256C 8009196C 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 09256C 8009196C 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092570 80091970 31B80002 */ andi $t8, $t5, 2 /* 092574 80091974 13000011 */ beqz $t8, .L800919BC -/* 092578 80091978 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092578 80091978 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 09257C 8009197C 8FC90000 */ lw $t1, ($fp) -/* 092580 80091980 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092580 80091980 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092584 80091984 8E450008 */ lw $a1, 8($s2) /* 092588 80091988 86060000 */ lh $a2, ($s0) /* 09258C 8009198C 240E00FF */ li $t6, 255 @@ -710,7 +710,7 @@ glabel render_track_select_setup_ui /* 092598 80091998 AFB90018 */ sw $t9, 0x18($sp) /* 09259C 8009199C AFAF0014 */ sw $t7, 0x14($sp) /* 0925A0 800919A0 AFAE0010 */ sw $t6, 0x10($sp) -/* 0925A4 800919A4 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0925A4 800919A4 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0925A8 800919A8 02E03825 */ move $a3, $s7 /* 0925AC 800919AC 0C01E2AE */ jal render_textured_rectangle /* 0925B0 800919B0 AFA9001C */ sw $t1, 0x1c($sp) @@ -770,11 +770,11 @@ glabel render_track_select_setup_ui /* 09266C 80091A6C 3C11800E */ lui $s1, %hi(D_800E0624) # $s1, 0x800e /* 092670 80091A70 26310624 */ addiu $s1, %lo(D_800E0624) # addiu $s1, $s1, 0x624 /* 092674 80091A74 8FCB0000 */ lw $t3, ($fp) -/* 092678 80091A78 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092678 80091A78 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 09267C 80091A7C 240900FF */ li $t1, 255 /* 092680 80091A80 240A00FF */ li $t2, 255 /* 092684 80091A84 240800FF */ li $t0, 255 -/* 092688 80091A88 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092688 80091A88 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 09268C 80091A8C 24060095 */ li $a2, 149 /* 092690 80091A90 02E03825 */ move $a3, $s7 /* 092694 80091A94 00007012 */ mflo $t6 @@ -796,14 +796,14 @@ glabel render_track_select_setup_ui /* 0926D0 80091AD0 3C05800E */ lui $a1, %hi(D_800E0648) # $a1, 0x800e /* 0926D4 80091AD4 01960019 */ multu $t4, $s6 /* 0926D8 80091AD8 8FC90000 */ lw $t1, ($fp) -/* 0926DC 80091ADC 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0926DC 80091ADC 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0926E0 80091AE0 240E00FF */ li $t6, 255 /* 0926E4 80091AE4 240F00FF */ li $t7, 255 /* 0926E8 80091AE8 241900FF */ li $t9, 255 /* 0926EC 80091AEC AFB90018 */ sw $t9, 0x18($sp) /* 0926F0 80091AF0 AFAF0014 */ sw $t7, 0x14($sp) /* 0926F4 80091AF4 AFAE0010 */ sw $t6, 0x10($sp) -/* 0926F8 80091AF8 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0926F8 80091AF8 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0926FC 80091AFC 24060095 */ li $a2, 149 /* 092700 80091B00 02003825 */ move $a3, $s0 /* 092704 80091B04 00006812 */ mflo $t5 @@ -827,13 +827,13 @@ glabel render_track_select_setup_ui /* 092748 80091B48 810869C0 */ lb $t0, %lo(gPlayerSelectVehicle)($t0) /* 09274C 80091B4C 8FD90000 */ lw $t9, ($fp) /* 092750 80091B50 01160019 */ multu $t0, $s6 -/* 092754 80091B54 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092754 80091B54 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092758 80091B58 02E03825 */ move $a3, $s7 /* 09275C 80091B5C 241800FF */ li $t8, 255 /* 092760 80091B60 240E00FF */ li $t6, 255 /* 092764 80091B64 240F00FF */ li $t7, 255 /* 092768 80091B68 0200B825 */ move $s7, $s0 -/* 09276C 80091B6C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 09276C 80091B6C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 092770 80091B70 2406004F */ li $a2, 79 /* 092774 80091B74 00005812 */ mflo $t3 /* 092778 80091B78 000B6080 */ sll $t4, $t3, 2 @@ -853,11 +853,11 @@ glabel render_track_select_setup_ui .L80091BB0: /* 0927B0 80091BB0 00560019 */ multu $v0, $s6 /* 0927B4 80091BB4 8FD80000 */ lw $t8, ($fp) -/* 0927B8 80091BB8 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0927B8 80091BB8 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0927BC 80091BBC 240B00FF */ li $t3, 255 /* 0927C0 80091BC0 240C00FF */ li $t4, 255 /* 0927C4 80091BC4 240D00FF */ li $t5, 255 -/* 0927C8 80091BC8 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0927C8 80091BC8 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0927CC 80091BCC 240600B0 */ li $a2, 176 /* 0927D0 80091BD0 02E03825 */ move $a3, $s7 /* 0927D4 80091BD4 00004812 */ mflo $t1 @@ -870,9 +870,9 @@ glabel render_track_select_setup_ui /* 0927F0 80091BF0 0C01E2AE */ jal render_textured_rectangle /* 0927F4 80091BF4 AFB8001C */ sw $t8, 0x1c($sp) .L80091BF8: -/* 0927F8 80091BF8 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0927F8 80091BF8 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0927FC 80091BFC 0C01ECF4 */ jal func_8007B3D0 -/* 092800 80091C00 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092800 80091C00 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 092804 80091C04 3C0E800E */ lui $t6, %hi(gNumberOfActivePlayers) # $t6, 0x800e /* 092808 80091C08 8DCEF4BC */ lw $t6, %lo(gNumberOfActivePlayers)($t6) /* 09280C 80091C0C 8FAF0074 */ lw $t7, 0x74($sp) @@ -926,11 +926,11 @@ glabel render_track_select_setup_ui /* 0928C0 80091CC0 3C12800E */ lui $s2, %hi(D_800E06E4) # $s2, 0x800e /* 0928C4 80091CC4 265206E4 */ addiu $s2, %lo(D_800E06E4) # addiu $s2, $s2, 0x6e4 /* 0928C8 80091CC8 86430004 */ lh $v1, 4($s2) -/* 0928CC 80091CCC 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0928CC 80091CCC 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0928D0 80091CD0 2478FFF4 */ addiu $t8, $v1, -0xc /* 0928D4 80091CD4 0302082A */ slt $at, $t8, $v0 /* 0928D8 80091CD8 10200003 */ beqz $at, .L80091CE8 -/* 0928DC 80091CDC 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0928DC 80091CDC 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0928E0 80091CE0 10000002 */ b .L80091CEC /* 0928E4 80091CE4 2454000C */ addiu $s4, $v0, 0xc .L80091CE8: @@ -974,7 +974,7 @@ glabel render_track_select_setup_ui /* 092978 80091D78 86580000 */ lh $t8, ($s2) /* 09297C 80091D7C 8FA90080 */ lw $t1, 0x80($sp) /* 092980 80091D80 01EEC821 */ addu $t9, $t7, $t6 -/* 092984 80091D84 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092984 80091D84 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092988 80091D88 2408000C */ li $t0, 12 /* 09298C 80091D8C 8D470220 */ lw $a3, 0x220($t2) /* 092990 80091D90 01B82821 */ addu $a1, $t5, $t8 @@ -983,7 +983,7 @@ glabel render_track_select_setup_ui /* 09299C 80091D9C 24A50001 */ addiu $a1, $a1, 1 /* 0929A0 80091DA0 AFA80010 */ sw $t0, 0x10($sp) /* 0929A4 80091DA4 0C031110 */ jal draw_text -/* 0929A8 80091DA8 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 0929A8 80091DA8 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 0929AC 80091DAC 240B00FF */ li $t3, 255 /* 0929B0 80091DB0 AFAB0010 */ sw $t3, 0x10($sp) /* 0929B4 80091DB4 240400FF */ li $a0, 255 @@ -999,7 +999,7 @@ glabel render_track_select_setup_ui /* 0929DC 80091DDC 864D0000 */ lh $t5, ($s2) /* 0929E0 80091DE0 8FB90080 */ lw $t9, 0x80($sp) /* 0929E4 80091DE4 030F7021 */ addu $t6, $t8, $t7 -/* 0929E8 80091DE8 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 0929E8 80091DE8 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 0929EC 80091DEC 240A000C */ li $t2, 12 /* 0929F0 80091DF0 8D270220 */ lw $a3, 0x220($t1) /* 0929F4 80091DF4 018D2821 */ addu $a1, $t4, $t5 @@ -1008,7 +1008,7 @@ glabel render_track_select_setup_ui /* 092A00 80091E00 24A5FFFF */ addiu $a1, $a1, -1 /* 092A04 80091E04 AFAA0010 */ sw $t2, 0x10($sp) /* 092A08 80091E08 0C031110 */ jal draw_text -/* 092A0C 80091E0C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092A0C 80091E0C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 092A10 80091E10 0C01A142 */ jal func_80068508 /* 092A14 80091E14 24040001 */ li $a0, 1 /* 092A18 80091E18 0C01EFC7 */ jal func_8007BF1C @@ -1161,7 +1161,7 @@ glabel render_track_select_setup_ui /* 092C38 80092038 0C024AF8 */ jal func_80092BE0 /* 092C3C 8009203C 00000000 */ nop /* 092C40 80092040 04400013 */ bltz $v0, .L80092090 -/* 092C44 80092044 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092C44 80092044 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092C48 80092048 8FA70080 */ lw $a3, 0x80($sp) /* 092C4C 8009204C 8FCF0000 */ lw $t7, ($fp) /* 092C50 80092050 3C05800E */ lui $a1, %hi(D_800E0614) # $a1, 0x800e @@ -1172,14 +1172,14 @@ glabel render_track_select_setup_ui /* 092C64 80092064 AFAD0014 */ sw $t5, 0x14($sp) /* 092C68 80092068 AFB80010 */ sw $t8, 0x10($sp) /* 092C6C 8009206C 24A50614 */ addiu $a1, %lo(D_800E0614) # addiu $a1, $a1, 0x614 -/* 092C70 80092070 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092C70 80092070 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 092C74 80092074 240600CC */ li $a2, 204 /* 092C78 80092078 24E7007A */ addiu $a3, $a3, 0x7a /* 092C7C 8009207C 0C01E2AE */ jal render_textured_rectangle /* 092C80 80092080 AFAF001C */ sw $t7, 0x1c($sp) -/* 092C84 80092084 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092C84 80092084 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092C88 80092088 0C01ECF4 */ jal func_8007B3D0 -/* 092C8C 8009208C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092C8C 8009208C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 .L80092090: /* 092C90 80092090 3C0E8012 */ lui $t6, %hi(D_801269C8) # $t6, 0x8012 /* 092C94 80092094 8DCE69C8 */ lw $t6, %lo(D_801269C8)($t6) @@ -1216,10 +1216,10 @@ glabel render_track_select_setup_ui /* 092D04 80092104 AFAA0010 */ sw $t2, 0x10($sp) /* 092D08 80092108 3C088012 */ lui $t0, %hi(D_801269C8) # $t0, 0x8012 /* 092D0C 8009210C 8D0869C8 */ lw $t0, %lo(D_801269C8)($t0) -/* 092D10 80092110 3C048012 */ lui $a0, %hi(D_801263A0) # $a0, 0x8012 +/* 092D10 80092110 3C048012 */ lui $a0, %hi(sMenuCurrDisplayList) # $a0, 0x8012 /* 092D14 80092114 29010004 */ slti $at, $t0, 4 /* 092D18 80092118 14200005 */ bnez $at, .L80092130 -/* 092D1C 8009211C 248463A0 */ addiu $a0, %lo(D_801263A0) # addiu $a0, $a0, 0x63a0 +/* 092D1C 8009211C 248463A0 */ addiu $a0, %lo(sMenuCurrDisplayList) # addiu $a0, $a0, 0x63a0 /* 092D20 80092120 8FAB0080 */ lw $t3, 0x80($sp) /* 092D24 80092124 00000000 */ nop /* 092D28 80092128 25780018 */ addiu $t8, $t3, 0x18 diff --git a/asm/non_matchings/menu/tt_menu_loop.s b/asm/non_matchings/menu/tt_menu_loop.s index 14899740..4a51bbdb 100644 --- a/asm/non_matchings/menu/tt_menu_loop.s +++ b/asm/non_matchings/menu/tt_menu_loop.s @@ -542,8 +542,8 @@ glabel L8009E2E4 /* 09EEEC 8009E2EC 10000020 */ b .L8009E370 /* 09EEF0 8009E2F0 A02E64E2 */ sb $t6, %lo(sCurrentMenuID)($at) glabel L8009E2F4 -/* 09EEF4 8009E2F4 3C0B800E */ lui $t3, %hi(D_800E09D8) # $t3, 0x800e -/* 09EEF8 8009E2F8 256B09D8 */ addiu $t3, %lo(D_800E09D8) # addiu $t3, $t3, 0x9d8 +/* 09EEF4 8009E2F4 3C0B800E */ lui $t3, %hi(sNoControllerPakMenuText) # $t3, 0x800e +/* 09EEF8 8009E2F8 256B09D8 */ addiu $t3, %lo(sNoControllerPakMenuText) # addiu $t3, $t3, 0x9d8 /* 09EEFC 8009E2FC 3C018012 */ lui $at, %hi(D_801263A4) # $at, 0x8012 /* 09EF00 8009E300 AC2B63A4 */ sw $t3, %lo(D_801263A4)($at) /* 09EF04 8009E304 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 @@ -551,8 +551,8 @@ glabel L8009E2F4 /* 09EF0C 8009E30C 10000018 */ b .L8009E370 /* 09EF10 8009E310 A02D64E2 */ sb $t5, %lo(sCurrentMenuID)($at) glabel L8009E314 -/* 09EF14 8009E314 3C0F800E */ lui $t7, %hi(D_800E09C4) # $t7, 0x800e -/* 09EF18 8009E318 25EF09C4 */ addiu $t7, %lo(D_800E09C4) # addiu $t7, $t7, 0x9c4 +/* 09EF14 8009E314 3C0F800E */ lui $t7, %hi(sControllerPakFullMenuText) # $t7, 0x800e +/* 09EF18 8009E318 25EF09C4 */ addiu $t7, %lo(sControllerPakFullMenuText) # addiu $t7, $t7, 0x9c4 /* 09EF1C 8009E31C 3C018012 */ lui $at, %hi(D_801263A4) # $at, 0x8012 /* 09EF20 8009E320 AC2F63A4 */ sw $t7, %lo(D_801263A4)($at) /* 09EF24 8009E324 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 @@ -560,8 +560,8 @@ glabel L8009E314 /* 09EF2C 8009E32C 10000010 */ b .L8009E370 /* 09EF30 8009E330 A03864E2 */ sb $t8, %lo(sCurrentMenuID)($at) glabel L8009E334 -/* 09EF34 8009E334 3C19800E */ lui $t9, %hi(D_800E09EC) # $t9, 0x800e -/* 09EF38 8009E338 273909EC */ addiu $t9, %lo(D_800E09EC) # addiu $t9, $t9, 0x9ec +/* 09EF34 8009E334 3C19800E */ lui $t9, %hi(sCorruptDataMenuText) # $t9, 0x800e +/* 09EF38 8009E338 273909EC */ addiu $t9, %lo(sCorruptDataMenuText) # addiu $t9, $t9, 0x9ec /* 09EF3C 8009E33C 3C018012 */ lui $at, %hi(D_801263A4) # $at, 0x8012 /* 09EF40 8009E340 AC3963A4 */ sw $t9, %lo(D_801263A4)($at) /* 09EF44 8009E344 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 @@ -570,8 +570,8 @@ glabel L8009E334 /* 09EF50 8009E350 A02964E2 */ sb $t1, %lo(sCurrentMenuID)($at) .L8009E354: glabel L8009E354 -/* 09EF54 8009E354 3C0A800E */ lui $t2, %hi(D_800E09B0) # $t2, 0x800e -/* 09EF58 8009E358 254A09B0 */ addiu $t2, %lo(D_800E09B0) # addiu $t2, $t2, 0x9b0 +/* 09EF54 8009E354 3C0A800E */ lui $t2, %hi(sBadControllerPakMenuText) # $t2, 0x800e +/* 09EF58 8009E358 254A09B0 */ addiu $t2, %lo(sBadControllerPakMenuText) # addiu $t2, $t2, 0x9b0 /* 09EF5C 8009E35C 3C018012 */ lui $at, %hi(D_801263A4) # $at, 0x8012 /* 09EF60 8009E360 AC2A63A4 */ sw $t2, %lo(D_801263A4)($at) /* 09EF64 8009E364 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 diff --git a/asm/non_matchings/menu/update_controller_sticks.s b/asm/non_matchings/menu/update_controller_sticks.s deleted file mode 100644 index 15ba3922..00000000 --- a/asm/non_matchings/menu/update_controller_sticks.s +++ /dev/null @@ -1,159 +0,0 @@ -glabel update_controller_sticks -/* 09CB20 8009BF20 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 09CB24 8009BF24 AFB70034 */ sw $s7, 0x34($sp) -/* 09CB28 8009BF28 AFB60030 */ sw $s6, 0x30($sp) -/* 09CB2C 8009BF2C AFB30024 */ sw $s3, 0x24($sp) -/* 09CB30 8009BF30 AFB20020 */ sw $s2, 0x20($sp) -/* 09CB34 8009BF34 AFB1001C */ sw $s1, 0x1c($sp) -/* 09CB38 8009BF38 AFB00018 */ sw $s0, 0x18($sp) -/* 09CB3C 8009BF3C AFBE0038 */ sw $fp, 0x38($sp) -/* 09CB40 8009BF40 AFB5002C */ sw $s5, 0x2c($sp) -/* 09CB44 8009BF44 3C108012 */ lui $s0, %hi(gControllersXAxisDelay) # $s0, 0x8012 -/* 09CB48 8009BF48 3C118012 */ lui $s1, %hi(gControllersYAxisDelay) # $s1, 0x8012 -/* 09CB4C 8009BF4C 3C128012 */ lui $s2, %hi(gControllersXAxis) # $s2, 0x8012 -/* 09CB50 8009BF50 3C138012 */ lui $s3, %hi(gControllersYAxis) # $s3, 0x8012 -/* 09CB54 8009BF54 3C168012 */ lui $s6, %hi(gControllersXAxisDirection) # $s6, 0x8012 -/* 09CB58 8009BF58 3C178012 */ lui $s7, %hi(gControllersYAxisDirection) # $s7, 0x8012 -/* 09CB5C 8009BF5C AFBF003C */ sw $ra, 0x3c($sp) -/* 09CB60 8009BF60 AFB40028 */ sw $s4, 0x28($sp) -/* 09CB64 8009BF64 26F76464 */ addiu $s7, %lo(gControllersYAxisDirection) # addiu $s7, $s7, 0x6464 -/* 09CB68 8009BF68 26D6645C */ addiu $s6, %lo(gControllersXAxisDirection) # addiu $s6, $s6, 0x645c -/* 09CB6C 8009BF6C 2673646C */ addiu $s3, %lo(gControllersYAxis) # addiu $s3, $s3, 0x646c -/* 09CB70 8009BF70 26526468 */ addiu $s2, %lo(gControllersXAxis) # addiu $s2, $s2, 0x6468 -/* 09CB74 8009BF74 26316458 */ addiu $s1, %lo(gControllersYAxisDelay) # addiu $s1, $s1, 0x6458 -/* 09CB78 8009BF78 26106454 */ addiu $s0, %lo(gControllersXAxisDelay) # addiu $s0, $s0, 0x6454 -/* 09CB7C 8009BF7C 0000A825 */ move $s5, $zero -/* 09CB80 8009BF80 241EFFFF */ li $fp, -1 -.L8009BF84: -/* 09CB84 8009BF84 0C01A967 */ jal clamp_joystick_x_axis -/* 09CB88 8009BF88 02A02025 */ move $a0, $s5 -/* 09CB8C 8009BF8C 0040A025 */ move $s4, $v0 -/* 09CB90 8009BF90 0C01A978 */ jal clamp_joystick_y_axis -/* 09CB94 8009BF94 02A02025 */ move $a0, $s5 -/* 09CB98 8009BF98 2A81FFDD */ slti $at, $s4, -0x23 -/* 09CB9C 8009BF9C A2C00000 */ sb $zero, ($s6) -/* 09CBA0 8009BFA0 10200008 */ beqz $at, .L8009BFC4 -/* 09CBA4 8009BFA4 A2E00000 */ sb $zero, ($s7) -/* 09CBA8 8009BFA8 824E0000 */ lb $t6, ($s2) -/* 09CBAC 8009BFAC 00000000 */ nop -/* 09CBB0 8009BFB0 29C1FFDD */ slti $at, $t6, -0x23 -/* 09CBB4 8009BFB4 14200004 */ bnez $at, .L8009BFC8 -/* 09CBB8 8009BFB8 2A810024 */ slti $at, $s4, 0x24 -/* 09CBBC 8009BFBC A2DE0000 */ sb $fp, ($s6) -/* 09CBC0 8009BFC0 A2000000 */ sb $zero, ($s0) -.L8009BFC4: -/* 09CBC4 8009BFC4 2A810024 */ slti $at, $s4, 0x24 -.L8009BFC8: -/* 09CBC8 8009BFC8 14200008 */ bnez $at, .L8009BFEC -/* 09CBCC 8009BFCC 26B50001 */ addiu $s5, $s5, 1 -/* 09CBD0 8009BFD0 824F0000 */ lb $t7, ($s2) -/* 09CBD4 8009BFD4 24180001 */ li $t8, 1 -/* 09CBD8 8009BFD8 29E10024 */ slti $at, $t7, 0x24 -/* 09CBDC 8009BFDC 10200004 */ beqz $at, .L8009BFF0 -/* 09CBE0 8009BFE0 2841FFDD */ slti $at, $v0, -0x23 -/* 09CBE4 8009BFE4 A2D80000 */ sb $t8, ($s6) -/* 09CBE8 8009BFE8 A2000000 */ sb $zero, ($s0) -.L8009BFEC: -/* 09CBEC 8009BFEC 2841FFDD */ slti $at, $v0, -0x23 -.L8009BFF0: -/* 09CBF0 8009BFF0 10200008 */ beqz $at, .L8009C014 -/* 09CBF4 8009BFF4 26D60001 */ addiu $s6, $s6, 1 -/* 09CBF8 8009BFF8 82790000 */ lb $t9, ($s3) -/* 09CBFC 8009BFFC 00000000 */ nop -/* 09CC00 8009C000 2B21FFDD */ slti $at, $t9, -0x23 -/* 09CC04 8009C004 14200004 */ bnez $at, .L8009C018 -/* 09CC08 8009C008 28410024 */ slti $at, $v0, 0x24 -/* 09CC0C 8009C00C A2FE0000 */ sb $fp, ($s7) -/* 09CC10 8009C010 A2200000 */ sb $zero, ($s1) -.L8009C014: -/* 09CC14 8009C014 28410024 */ slti $at, $v0, 0x24 -.L8009C018: -/* 09CC18 8009C018 14200008 */ bnez $at, .L8009C03C -/* 09CC1C 8009C01C 00000000 */ nop -/* 09CC20 8009C020 82680000 */ lb $t0, ($s3) -/* 09CC24 8009C024 24090001 */ li $t1, 1 -/* 09CC28 8009C028 29010024 */ slti $at, $t0, 0x24 -/* 09CC2C 8009C02C 10200003 */ beqz $at, .L8009C03C -/* 09CC30 8009C030 00000000 */ nop -/* 09CC34 8009C034 A2E90000 */ sb $t1, ($s7) -/* 09CC38 8009C038 A2200000 */ sb $zero, ($s1) -.L8009C03C: -/* 09CC3C 8009C03C A2620000 */ sb $v0, ($s3) -/* 09CC40 8009C040 82630000 */ lb $v1, ($s3) -/* 09CC44 8009C044 26F70001 */ addiu $s7, $s7, 1 -/* 09CC48 8009C048 2861FFDD */ slti $at, $v1, -0x23 -/* 09CC4C 8009C04C 10200007 */ beqz $at, .L8009C06C -/* 09CC50 8009C050 28610024 */ slti $at, $v1, 0x24 -/* 09CC54 8009C054 822A0000 */ lb $t2, ($s1) -/* 09CC58 8009C058 00000000 */ nop -/* 09CC5C 8009C05C 254B0001 */ addiu $t3, $t2, 1 -/* 09CC60 8009C060 1000000A */ b .L8009C08C -/* 09CC64 8009C064 A22B0000 */ sb $t3, ($s1) -/* 09CC68 8009C068 28610024 */ slti $at, $v1, 0x24 -.L8009C06C: -/* 09CC6C 8009C06C 14200006 */ bnez $at, .L8009C088 -/* 09CC70 8009C070 00000000 */ nop -/* 09CC74 8009C074 822C0000 */ lb $t4, ($s1) -/* 09CC78 8009C078 00000000 */ nop -/* 09CC7C 8009C07C 258D0001 */ addiu $t5, $t4, 1 -/* 09CC80 8009C080 10000002 */ b .L8009C08C -/* 09CC84 8009C084 A22D0000 */ sb $t5, ($s1) -.L8009C088: -/* 09CC88 8009C088 A2200000 */ sb $zero, ($s1) -.L8009C08C: -/* 09CC8C 8009C08C 822E0000 */ lb $t6, ($s1) -/* 09CC90 8009C090 00000000 */ nop -/* 09CC94 8009C094 29C10010 */ slti $at, $t6, 0x10 -/* 09CC98 8009C098 14200003 */ bnez $at, .L8009C0A8 -/* 09CC9C 8009C09C 00000000 */ nop -/* 09CCA0 8009C0A0 A2600000 */ sb $zero, ($s3) -/* 09CCA4 8009C0A4 A2200000 */ sb $zero, ($s1) -.L8009C0A8: -/* 09CCA8 8009C0A8 A2540000 */ sb $s4, ($s2) -/* 09CCAC 8009C0AC 82420000 */ lb $v0, ($s2) -/* 09CCB0 8009C0B0 26730001 */ addiu $s3, $s3, 1 -/* 09CCB4 8009C0B4 2841FFDD */ slti $at, $v0, -0x23 -/* 09CCB8 8009C0B8 10200006 */ beqz $at, .L8009C0D4 -/* 09CCBC 8009C0BC 26310001 */ addiu $s1, $s1, 1 -/* 09CCC0 8009C0C0 820F0000 */ lb $t7, ($s0) -/* 09CCC4 8009C0C4 00000000 */ nop -/* 09CCC8 8009C0C8 25F80001 */ addiu $t8, $t7, 1 -/* 09CCCC 8009C0CC 1000000A */ b .L8009C0F8 -/* 09CCD0 8009C0D0 A2180000 */ sb $t8, ($s0) -.L8009C0D4: -/* 09CCD4 8009C0D4 28410024 */ slti $at, $v0, 0x24 -/* 09CCD8 8009C0D8 14200006 */ bnez $at, .L8009C0F4 -/* 09CCDC 8009C0DC 00000000 */ nop -/* 09CCE0 8009C0E0 82190000 */ lb $t9, ($s0) -/* 09CCE4 8009C0E4 00000000 */ nop -/* 09CCE8 8009C0E8 27280001 */ addiu $t0, $t9, 1 -/* 09CCEC 8009C0EC 10000002 */ b .L8009C0F8 -/* 09CCF0 8009C0F0 A2080000 */ sb $t0, ($s0) -.L8009C0F4: -/* 09CCF4 8009C0F4 A2000000 */ sb $zero, ($s0) -.L8009C0F8: -/* 09CCF8 8009C0F8 82090000 */ lb $t1, ($s0) -/* 09CCFC 8009C0FC 00000000 */ nop -/* 09CD00 8009C100 29210010 */ slti $at, $t1, 0x10 -/* 09CD04 8009C104 14200004 */ bnez $at, .L8009C118 -/* 09CD08 8009C108 24010004 */ li $at, 4 -/* 09CD0C 8009C10C A2400000 */ sb $zero, ($s2) -/* 09CD10 8009C110 A2000000 */ sb $zero, ($s0) -/* 09CD14 8009C114 24010004 */ li $at, 4 -.L8009C118: -/* 09CD18 8009C118 26520001 */ addiu $s2, $s2, 1 -/* 09CD1C 8009C11C 16A1FF99 */ bne $s5, $at, .L8009BF84 -/* 09CD20 8009C120 26100001 */ addiu $s0, $s0, 1 -/* 09CD24 8009C124 8FBF003C */ lw $ra, 0x3c($sp) -/* 09CD28 8009C128 8FB00018 */ lw $s0, 0x18($sp) -/* 09CD2C 8009C12C 8FB1001C */ lw $s1, 0x1c($sp) -/* 09CD30 8009C130 8FB20020 */ lw $s2, 0x20($sp) -/* 09CD34 8009C134 8FB30024 */ lw $s3, 0x24($sp) -/* 09CD38 8009C138 8FB40028 */ lw $s4, 0x28($sp) -/* 09CD3C 8009C13C 8FB5002C */ lw $s5, 0x2c($sp) -/* 09CD40 8009C140 8FB60030 */ lw $s6, 0x30($sp) -/* 09CD44 8009C144 8FB70034 */ lw $s7, 0x34($sp) -/* 09CD48 8009C148 8FBE0038 */ lw $fp, 0x38($sp) -/* 09CD4C 8009C14C 03E00008 */ jr $ra -/* 09CD50 8009C150 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/non_matchings/unknown_00BC20/calc_dynamic_lighting_for_object_1.s b/asm/non_matchings/objects/calc_dynamic_lighting_for_object_1.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/calc_dynamic_lighting_for_object_1.s rename to asm/non_matchings/objects/calc_dynamic_lighting_for_object_1.s diff --git a/asm/non_matchings/unknown_00BC20/calc_env_mapping_for_object.s b/asm/non_matchings/objects/calc_env_mapping_for_object.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/calc_env_mapping_for_object.s rename to asm/non_matchings/objects/calc_env_mapping_for_object.s diff --git a/asm/non_matchings/unknown_00BC20/catmull_rom_interpolation.s b/asm/non_matchings/objects/catmull_rom_interpolation.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/catmull_rom_interpolation.s rename to asm/non_matchings/objects/catmull_rom_interpolation.s diff --git a/asm/non_matchings/unknown_00BC20/decrypt_magic_codes.s b/asm/non_matchings/objects/decrypt_magic_codes.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/decrypt_magic_codes.s rename to asm/non_matchings/objects/decrypt_magic_codes.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000B020.s b/asm/non_matchings/objects/func_8000B020.s similarity index 98% rename from asm/non_matchings/unknown_00BC20/func_8000B020.s rename to asm/non_matchings/objects/func_8000B020.s index a94ecd7f..a019d555 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000B020.s +++ b/asm/non_matchings/objects/func_8000B020.s @@ -64,7 +64,7 @@ glabel func_8000B020 /* 00BD14 8000B114 A7A0005E */ sh $zero, 0x5e($sp) /* 00BD18 8000B118 A3B20060 */ sb $s2, 0x60($sp) /* 00BD1C 8000B11C 02E02025 */ move $a0, $s7 -/* 00BD20 8000B120 0C003A95 */ jal func_8000EA54 +/* 00BD20 8000B120 0C003A95 */ jal spawn_object /* 00BD24 8000B124 24050001 */ li $a1, 1 /* 00BD28 8000B128 1040001B */ beqz $v0, .L8000B198 /* 00BD2C 8000B12C AE220000 */ sw $v0, ($s1) @@ -112,7 +112,7 @@ glabel func_8000B020 /* 00BDD0 8000B1D0 A7A0005C */ sh $zero, 0x5c($sp) /* 00BDD4 8000B1D4 A7A0005E */ sh $zero, 0x5e($sp) /* 00BDD8 8000B1D8 02E02025 */ move $a0, $s7 -/* 00BDDC 8000B1DC 0C003A95 */ jal func_8000EA54 +/* 00BDDC 8000B1DC 0C003A95 */ jal spawn_object /* 00BDE0 8000B1E0 00002825 */ move $a1, $zero /* 00BDE4 8000B1E4 3C01800E */ lui $at, %hi(D_800DC75C) # $at, 0x800e /* 00BDE8 8000B1E8 3C108012 */ lui $s0, %hi(D_8011B078) # $s0, 0x8012 @@ -141,7 +141,7 @@ glabel func_8000B020 /* 00BE40 8000B240 A7A0005C */ sh $zero, 0x5c($sp) /* 00BE44 8000B244 A7A0005E */ sh $zero, 0x5e($sp) /* 00BE48 8000B248 02E02025 */ move $a0, $s7 -/* 00BE4C 8000B24C 0C003A95 */ jal func_8000EA54 +/* 00BE4C 8000B24C 0C003A95 */ jal spawn_object /* 00BE50 8000B250 00002825 */ move $a1, $zero /* 00BE54 8000B254 8FBF003C */ lw $ra, 0x3c($sp) /* 00BE58 8000B258 3C01800E */ lui $at, %hi(D_800DC764) # $at, 0x800e diff --git a/asm/non_matchings/unknown_00BC20/func_8000B290.s b/asm/non_matchings/objects/func_8000B290.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000B290.s rename to asm/non_matchings/objects/func_8000B290.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000B38C.s b/asm/non_matchings/objects/func_8000B38C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000B38C.s rename to asm/non_matchings/objects/func_8000B38C.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000B750.s b/asm/non_matchings/objects/func_8000B750.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000B750.s rename to asm/non_matchings/objects/func_8000B750.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000BADC.s b/asm/non_matchings/objects/func_8000BADC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000BADC.s rename to asm/non_matchings/objects/func_8000BADC.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000C718.s b/asm/non_matchings/objects/func_8000C718.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000C718.s rename to asm/non_matchings/objects/func_8000C718.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000C8F8.s b/asm/non_matchings/objects/func_8000C8F8.s similarity index 99% rename from asm/non_matchings/unknown_00BC20/func_8000C8F8.s rename to asm/non_matchings/objects/func_8000C8F8.s index 0b824aa0..bacc3bdb 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000C8F8.s +++ b/asm/non_matchings/objects/func_8000C8F8.s @@ -141,7 +141,7 @@ glabel func_8000C8F8 /* 00D708 8000CB08 00000000 */ nop .L8000CB0C: /* 00D70C 8000CB0C 8E240000 */ lw $a0, ($s1) -/* 00D710 8000CB10 0C003A95 */ jal func_8000EA54 +/* 00D710 8000CB10 0C003A95 */ jal spawn_object /* 00D714 8000CB14 24050001 */ li $a1, 1 /* 00D718 8000CB18 8E230000 */ lw $v1, ($s1) /* 00D71C 8000CB1C 8E4E0000 */ lw $t6, ($s2) diff --git a/asm/non_matchings/unknown_00BC20/func_8000CBF0.s b/asm/non_matchings/objects/func_8000CBF0.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000CBF0.s rename to asm/non_matchings/objects/func_8000CBF0.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000CC7C.s b/asm/non_matchings/objects/func_8000CC7C.s similarity index 99% rename from asm/non_matchings/unknown_00BC20/func_8000CC7C.s rename to asm/non_matchings/objects/func_8000CC7C.s index be199e1e..e38304ab 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000CC7C.s +++ b/asm/non_matchings/objects/func_8000CC7C.s @@ -797,7 +797,7 @@ glabel func_8000CC7C /* 00E37C 8000D77C 02C02025 */ move $a0, $s6 /* 00E380 8000D780 02202825 */ move $a1, $s1 /* 00E384 8000D784 AFA60054 */ sw $a2, 0x54($sp) -/* 00E388 8000D788 0C003A95 */ jal func_8000EA54 +/* 00E388 8000D788 0C003A95 */ jal spawn_object /* 00E38C 8000D78C AFA7005C */ sw $a3, 0x5c($sp) /* 00E390 8000D790 8FB80044 */ lw $t8, 0x44($sp) /* 00E394 8000D794 8FA60054 */ lw $a2, 0x54($sp) @@ -1083,7 +1083,7 @@ glabel L8000D98C /* 00E788 8000DB88 00000000 */ nop /* 00E78C 8000DB8C A6CF0006 */ sh $t7, 6($s6) /* 00E790 8000DB90 8FAD0094 */ lw $t5, 0x94($sp) -/* 00E794 8000DB94 0C003A95 */ jal func_8000EA54 +/* 00E794 8000DB94 0C003A95 */ jal spawn_object /* 00E798 8000DB98 A6CD000C */ sh $t5, 0xc($s6) /* 00E79C 8000DB9C 2418003A */ li $t8, 58 /* 00E7A0 8000DBA0 AC40003C */ sw $zero, 0x3c($v0) @@ -1130,7 +1130,7 @@ glabel L8000D98C /* 00E840 8000DC40 00000000 */ nop /* 00E844 8000DC44 A6CF0006 */ sh $t7, 6($s6) /* 00E848 8000DC48 8FAD0094 */ lw $t5, 0x94($sp) -/* 00E84C 8000DC4C 0C003A95 */ jal func_8000EA54 +/* 00E84C 8000DC4C 0C003A95 */ jal spawn_object /* 00E850 8000DC50 A6CD000C */ sh $t5, 0xc($s6) /* 00E854 8000DC54 2418003A */ li $t8, 58 /* 00E858 8000DC58 AC40003C */ sw $zero, 0x3c($v0) @@ -1313,7 +1313,7 @@ glabel L8000D98C /* 00EADC 8000DEDC A6C00004 */ sh $zero, 4($s6) /* 00EAE0 8000DEE0 A6C00006 */ sh $zero, 6($s6) /* 00EAE4 8000DEE4 02C02025 */ move $a0, $s6 -/* 00EAE8 8000DEE8 0C003A95 */ jal func_8000EA54 +/* 00EAE8 8000DEE8 0C003A95 */ jal spawn_object /* 00EAEC 8000DEEC 24050001 */ li $a1, 1 /* 00EAF0 8000DEF0 AC520078 */ sw $s2, 0x78($v0) /* 00EAF4 8000DEF4 26520001 */ addiu $s2, $s2, 1 diff --git a/asm/non_matchings/unknown_00BC20/func_8000E2B4.s b/asm/non_matchings/objects/func_8000E2B4.s similarity index 99% rename from asm/non_matchings/unknown_00BC20/func_8000E2B4.s rename to asm/non_matchings/objects/func_8000E2B4.s index fe152e73..064c2d7f 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000E2B4.s +++ b/asm/non_matchings/objects/func_8000E2B4.s @@ -73,7 +73,7 @@ glabel func_8000E2B4 /* 00EFA8 8000E3A8 0C01486E */ jal func_800521B8 /* 00EFAC 8000E3AC A7AA0038 */ sh $t2, 0x38($sp) /* 00EFB0 8000E3B0 27A4002C */ addiu $a0, $sp, 0x2c -/* 00EFB4 8000E3B4 0C003A95 */ jal func_8000EA54 +/* 00EFB4 8000E3B4 0C003A95 */ jal spawn_object /* 00EFB8 8000E3B8 24050011 */ li $a1, 17 /* 00EFBC 8000E3BC 3C0C8012 */ lui $t4, %hi(gObjectStructArrayPtr) # $t4, 0x8012 /* 00EFC0 8000E3C0 8D8CAEE4 */ lw $t4, %lo(gObjectStructArrayPtr)($t4) diff --git a/asm/non_matchings/unknown_00BC20/func_8000E4E8.s b/asm/non_matchings/objects/func_8000E4E8.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000E4E8.s rename to asm/non_matchings/objects/func_8000E4E8.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000E558.s b/asm/non_matchings/objects/func_8000E558.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000E558.s rename to asm/non_matchings/objects/func_8000E558.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000E5EC.s b/asm/non_matchings/objects/func_8000E5EC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000E5EC.s rename to asm/non_matchings/objects/func_8000E5EC.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000E79C.s b/asm/non_matchings/objects/func_8000E79C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000E79C.s rename to asm/non_matchings/objects/func_8000E79C.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000E898.s b/asm/non_matchings/objects/func_8000E898.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000E898.s rename to asm/non_matchings/objects/func_8000E898.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000F648.s b/asm/non_matchings/objects/func_8000F648.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000F648.s rename to asm/non_matchings/objects/func_8000F648.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000F758.s b/asm/non_matchings/objects/func_8000F758.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000F758.s rename to asm/non_matchings/objects/func_8000F758.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000F7EC.s b/asm/non_matchings/objects/func_8000F7EC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000F7EC.s rename to asm/non_matchings/objects/func_8000F7EC.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000F99C.s b/asm/non_matchings/objects/func_8000F99C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000F99C.s rename to asm/non_matchings/objects/func_8000F99C.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000FAC4.s b/asm/non_matchings/objects/func_8000FAC4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000FAC4.s rename to asm/non_matchings/objects/func_8000FAC4.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000FBCC.s b/asm/non_matchings/objects/func_8000FBCC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000FBCC.s rename to asm/non_matchings/objects/func_8000FBCC.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000FC6C.s b/asm/non_matchings/objects/func_8000FC6C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000FC6C.s rename to asm/non_matchings/objects/func_8000FC6C.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000FD54.s b/asm/non_matchings/objects/func_8000FD54.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8000FD54.s rename to asm/non_matchings/objects/func_8000FD54.s diff --git a/asm/non_matchings/unknown_00BC20/func_800101AC.s b/asm/non_matchings/objects/func_800101AC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800101AC.s rename to asm/non_matchings/objects/func_800101AC.s diff --git a/asm/non_matchings/unknown_00BC20/func_80010994.s b/asm/non_matchings/objects/func_80010994.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80010994.s rename to asm/non_matchings/objects/func_80010994.s diff --git a/asm/non_matchings/unknown_00BC20/func_80011134.s b/asm/non_matchings/objects/func_80011134.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80011134.s rename to asm/non_matchings/objects/func_80011134.s diff --git a/asm/non_matchings/unknown_00BC20/func_80011264.s b/asm/non_matchings/objects/func_80011264.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80011264.s rename to asm/non_matchings/objects/func_80011264.s diff --git a/asm/non_matchings/unknown_00BC20/func_800113CC.s b/asm/non_matchings/objects/func_800113CC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800113CC.s rename to asm/non_matchings/objects/func_800113CC.s diff --git a/asm/non_matchings/unknown_00BC20/func_80011570.s b/asm/non_matchings/objects/func_80011570.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80011570.s rename to asm/non_matchings/objects/func_80011570.s diff --git a/asm/non_matchings/unknown_00BC20/func_80011960.s b/asm/non_matchings/objects/func_80011960.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80011960.s rename to asm/non_matchings/objects/func_80011960.s diff --git a/asm/non_matchings/unknown_00BC20/func_80011AD0.s b/asm/non_matchings/objects/func_80011AD0.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80011AD0.s rename to asm/non_matchings/objects/func_80011AD0.s diff --git a/asm/non_matchings/unknown_00BC20/func_80012F94.s b/asm/non_matchings/objects/func_80012F94.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80012F94.s rename to asm/non_matchings/objects/func_80012F94.s diff --git a/asm/non_matchings/unknown_00BC20/func_800135B8.s b/asm/non_matchings/objects/func_800135B8.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800135B8.s rename to asm/non_matchings/objects/func_800135B8.s diff --git a/asm/non_matchings/unknown_00BC20/func_800138A8.s b/asm/non_matchings/objects/func_800138A8.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800138A8.s rename to asm/non_matchings/objects/func_800138A8.s diff --git a/asm/non_matchings/unknown_00BC20/func_80013A0C.s b/asm/non_matchings/objects/func_80013A0C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80013A0C.s rename to asm/non_matchings/objects/func_80013A0C.s diff --git a/asm/non_matchings/unknown_00BC20/func_80013DCC.s b/asm/non_matchings/objects/func_80013DCC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80013DCC.s rename to asm/non_matchings/objects/func_80013DCC.s diff --git a/asm/non_matchings/unknown_00BC20/func_80014090.s b/asm/non_matchings/objects/func_80014090.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80014090.s rename to asm/non_matchings/objects/func_80014090.s diff --git a/asm/non_matchings/unknown_00BC20/func_800143A8.s b/asm/non_matchings/objects/func_800143A8.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800143A8.s rename to asm/non_matchings/objects/func_800143A8.s diff --git a/asm/non_matchings/unknown_00BC20/func_80014814.s b/asm/non_matchings/objects/func_80014814.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80014814.s rename to asm/non_matchings/objects/func_80014814.s diff --git a/asm/non_matchings/unknown_00BC20/func_80014B50.s b/asm/non_matchings/objects/func_80014B50.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80014B50.s rename to asm/non_matchings/objects/func_80014B50.s diff --git a/asm/non_matchings/unknown_00BC20/func_80015348.s b/asm/non_matchings/objects/func_80015348.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80015348.s rename to asm/non_matchings/objects/func_80015348.s diff --git a/asm/non_matchings/unknown_00BC20/func_800155B8.s b/asm/non_matchings/objects/func_800155B8.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800155B8.s rename to asm/non_matchings/objects/func_800155B8.s diff --git a/asm/non_matchings/unknown_00BC20/func_800159C8.s b/asm/non_matchings/objects/func_800159C8.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800159C8.s rename to asm/non_matchings/objects/func_800159C8.s diff --git a/asm/non_matchings/unknown_00BC20/func_80016500.s b/asm/non_matchings/objects/func_80016500.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80016500.s rename to asm/non_matchings/objects/func_80016500.s diff --git a/asm/non_matchings/unknown_00BC20/func_80016748.s b/asm/non_matchings/objects/func_80016748.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80016748.s rename to asm/non_matchings/objects/func_80016748.s diff --git a/asm/non_matchings/unknown_00BC20/func_80016BC4.s b/asm/non_matchings/objects/func_80016BC4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80016BC4.s rename to asm/non_matchings/objects/func_80016BC4.s diff --git a/asm/non_matchings/unknown_00BC20/func_80016C68.s b/asm/non_matchings/objects/func_80016C68.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80016C68.s rename to asm/non_matchings/objects/func_80016C68.s diff --git a/asm/non_matchings/unknown_00BC20/func_80016DE8.s b/asm/non_matchings/objects/func_80016DE8.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80016DE8.s rename to asm/non_matchings/objects/func_80016DE8.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001709C.s b/asm/non_matchings/objects/func_8001709C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001709C.s rename to asm/non_matchings/objects/func_8001709C.s diff --git a/asm/non_matchings/unknown_00BC20/func_80017248.s b/asm/non_matchings/objects/func_80017248.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80017248.s rename to asm/non_matchings/objects/func_80017248.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001790C.s b/asm/non_matchings/objects/func_8001790C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001790C.s rename to asm/non_matchings/objects/func_8001790C.s diff --git a/asm/non_matchings/unknown_00BC20/func_80017978.s b/asm/non_matchings/objects/func_80017978.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80017978.s rename to asm/non_matchings/objects/func_80017978.s diff --git a/asm/non_matchings/unknown_00BC20/func_80017A18.s b/asm/non_matchings/objects/func_80017A18.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80017A18.s rename to asm/non_matchings/objects/func_80017A18.s diff --git a/asm/non_matchings/unknown_00BC20/func_80017E98.s b/asm/non_matchings/objects/func_80017E98.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80017E98.s rename to asm/non_matchings/objects/func_80017E98.s diff --git a/asm/non_matchings/unknown_00BC20/func_800185E4.s b/asm/non_matchings/objects/func_800185E4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800185E4.s rename to asm/non_matchings/objects/func_800185E4.s diff --git a/asm/non_matchings/unknown_00BC20/func_80018CE0.s b/asm/non_matchings/objects/func_80018CE0.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80018CE0.s rename to asm/non_matchings/objects/func_80018CE0.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001955C.s b/asm/non_matchings/objects/func_8001955C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001955C.s rename to asm/non_matchings/objects/func_8001955C.s diff --git a/asm/non_matchings/unknown_00BC20/func_80019808.s b/asm/non_matchings/objects/func_80019808.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80019808.s rename to asm/non_matchings/objects/func_80019808.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001A7D8.s b/asm/non_matchings/objects/func_8001A7D8.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001A7D8.s rename to asm/non_matchings/objects/func_8001A7D8.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001A8F4.s b/asm/non_matchings/objects/func_8001A8F4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001A8F4.s rename to asm/non_matchings/objects/func_8001A8F4.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001AE64.s b/asm/non_matchings/objects/func_8001AE64.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001AE64.s rename to asm/non_matchings/objects/func_8001AE64.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001B2F0.s b/asm/non_matchings/objects/func_8001B2F0.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001B2F0.s rename to asm/non_matchings/objects/func_8001B2F0.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001B3C4.s b/asm/non_matchings/objects/func_8001B3C4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001B3C4.s rename to asm/non_matchings/objects/func_8001B3C4.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001B4FC.s b/asm/non_matchings/objects/func_8001B4FC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001B4FC.s rename to asm/non_matchings/objects/func_8001B4FC.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001B668.s b/asm/non_matchings/objects/func_8001B668.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001B668.s rename to asm/non_matchings/objects/func_8001B668.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001B7A8.s b/asm/non_matchings/objects/func_8001B7A8.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001B7A8.s rename to asm/non_matchings/objects/func_8001B7A8.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001B834.s b/asm/non_matchings/objects/func_8001B834.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001B834.s rename to asm/non_matchings/objects/func_8001B834.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001B974.s b/asm/non_matchings/objects/func_8001B974.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001B974.s rename to asm/non_matchings/objects/func_8001B974.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001BB18.s b/asm/non_matchings/objects/func_8001BB18.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001BB18.s rename to asm/non_matchings/objects/func_8001BB18.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001BB68.s b/asm/non_matchings/objects/func_8001BB68.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001BB68.s rename to asm/non_matchings/objects/func_8001BB68.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001BC54.s b/asm/non_matchings/objects/func_8001BC54.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001BC54.s rename to asm/non_matchings/objects/func_8001BC54.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001BDD4.s b/asm/non_matchings/objects/func_8001BDD4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001BDD4.s rename to asm/non_matchings/objects/func_8001BDD4.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001BF20.s b/asm/non_matchings/objects/func_8001BF20.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001BF20.s rename to asm/non_matchings/objects/func_8001BF20.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001C418.s b/asm/non_matchings/objects/func_8001C418.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001C418.s rename to asm/non_matchings/objects/func_8001C418.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001C48C.s b/asm/non_matchings/objects/func_8001C48C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001C48C.s rename to asm/non_matchings/objects/func_8001C48C.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001C524.s b/asm/non_matchings/objects/func_8001C524.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001C524.s rename to asm/non_matchings/objects/func_8001C524.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001C6C4.s b/asm/non_matchings/objects/func_8001C6C4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001C6C4.s rename to asm/non_matchings/objects/func_8001C6C4.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001CC48.s b/asm/non_matchings/objects/func_8001CC48.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001CC48.s rename to asm/non_matchings/objects/func_8001CC48.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001CD28.s b/asm/non_matchings/objects/func_8001CD28.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001CD28.s rename to asm/non_matchings/objects/func_8001CD28.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001D258.s b/asm/non_matchings/objects/func_8001D258.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001D258.s rename to asm/non_matchings/objects/func_8001D258.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001D2A0.s b/asm/non_matchings/objects/func_8001D2A0.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001D2A0.s rename to asm/non_matchings/objects/func_8001D2A0.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001D4B4.s b/asm/non_matchings/objects/func_8001D4B4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001D4B4.s rename to asm/non_matchings/objects/func_8001D4B4.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001D5E0.s b/asm/non_matchings/objects/func_8001D5E0.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001D5E0.s rename to asm/non_matchings/objects/func_8001D5E0.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001E13C.s b/asm/non_matchings/objects/func_8001E13C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001E13C.s rename to asm/non_matchings/objects/func_8001E13C.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001E4C4.s b/asm/non_matchings/objects/func_8001E4C4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001E4C4.s rename to asm/non_matchings/objects/func_8001E4C4.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001E6EC.s b/asm/non_matchings/objects/func_8001E6EC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001E6EC.s rename to asm/non_matchings/objects/func_8001E6EC.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001E89C.s b/asm/non_matchings/objects/func_8001E89C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001E89C.s rename to asm/non_matchings/objects/func_8001E89C.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001E93C.s b/asm/non_matchings/objects/func_8001E93C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001E93C.s rename to asm/non_matchings/objects/func_8001E93C.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001EE74.s b/asm/non_matchings/objects/func_8001EE74.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001EE74.s rename to asm/non_matchings/objects/func_8001EE74.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001EFA4.s b/asm/non_matchings/objects/func_8001EFA4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001EFA4.s rename to asm/non_matchings/objects/func_8001EFA4.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001F23C.s b/asm/non_matchings/objects/func_8001F23C.s similarity index 97% rename from asm/non_matchings/unknown_00BC20/func_8001F23C.s rename to asm/non_matchings/objects/func_8001F23C.s index 5ad0a9e5..7ab76f30 100644 --- a/asm/non_matchings/unknown_00BC20/func_8001F23C.s +++ b/asm/non_matchings/objects/func_8001F23C.s @@ -24,7 +24,7 @@ glabel func_8001F23C /* 01FE94 8001F294 A3AA003D */ sb $t2, 0x3d($sp) /* 01FE98 8001F298 84AB000C */ lh $t3, 0xc($a1) /* 01FE9C 8001F29C 24050001 */ li $a1, 1 -/* 01FEA0 8001F2A0 0C003A95 */ jal func_8000EA54 +/* 01FEA0 8001F2A0 0C003A95 */ jal spawn_object /* 01FEA4 8001F2A4 A3AB003C */ sb $t3, 0x3c($sp) /* 01FEA8 8001F2A8 AE820064 */ sw $v0, 0x64($s4) /* 01FEAC 8001F2AC 1040000D */ beqz $v0, .L8001F2E4 @@ -67,7 +67,7 @@ glabel func_8001F23C /* 01FF38 8001F338 00008025 */ move $s0, $zero /* 01FF3C 8001F33C 02A02025 */ move $a0, $s5 .L8001F340: -/* 01FF40 8001F340 0C003A95 */ jal func_8000EA54 +/* 01FF40 8001F340 0C003A95 */ jal spawn_object /* 01FF44 8001F344 24050001 */ li $a1, 1 /* 01FF48 8001F348 1040000B */ beqz $v0, .L8001F378 /* 01FF4C 8001F34C 00408825 */ move $s1, $v0 diff --git a/asm/non_matchings/unknown_00BC20/func_8001F3EC.s b/asm/non_matchings/objects/func_8001F3EC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001F3EC.s rename to asm/non_matchings/objects/func_8001F3EC.s diff --git a/asm/non_matchings/unknown_00BC20/func_8001F460.s b/asm/non_matchings/objects/func_8001F460.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8001F460.s rename to asm/non_matchings/objects/func_8001F460.s diff --git a/asm/non_matchings/unknown_00BC20/func_80021104.s b/asm/non_matchings/objects/func_80021104.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80021104.s rename to asm/non_matchings/objects/func_80021104.s diff --git a/asm/non_matchings/unknown_00BC20/func_8002125C.s b/asm/non_matchings/objects/func_8002125C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8002125C.s rename to asm/non_matchings/objects/func_8002125C.s diff --git a/asm/non_matchings/unknown_00BC20/func_80021400.s b/asm/non_matchings/objects/func_80021400.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80021400.s rename to asm/non_matchings/objects/func_80021400.s diff --git a/asm/non_matchings/unknown_00BC20/func_800214E4.s b/asm/non_matchings/objects/func_800214E4.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800214E4.s rename to asm/non_matchings/objects/func_800214E4.s diff --git a/asm/non_matchings/unknown_00BC20/func_80021600.s b/asm/non_matchings/objects/func_80021600.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80021600.s rename to asm/non_matchings/objects/func_80021600.s diff --git a/asm/non_matchings/unknown_00BC20/func_8002263C.s b/asm/non_matchings/objects/func_8002263C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8002263C.s rename to asm/non_matchings/objects/func_8002263C.s diff --git a/asm/non_matchings/unknown_00BC20/func_8002277C.s b/asm/non_matchings/objects/func_8002277C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8002277C.s rename to asm/non_matchings/objects/func_8002277C.s diff --git a/asm/non_matchings/unknown_00BC20/func_800228B0.s b/asm/non_matchings/objects/func_800228B0.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800228B0.s rename to asm/non_matchings/objects/func_800228B0.s diff --git a/asm/non_matchings/unknown_00BC20/func_80022948.s b/asm/non_matchings/objects/func_80022948.s similarity index 99% rename from asm/non_matchings/unknown_00BC20/func_80022948.s rename to asm/non_matchings/objects/func_80022948.s index 1c49e0ac..a7fdafbc 100644 --- a/asm/non_matchings/unknown_00BC20/func_80022948.s +++ b/asm/non_matchings/objects/func_80022948.s @@ -164,7 +164,7 @@ glabel func_80022948 /* 0237C4 80022BC4 0C01867D */ jal func_800619F4 /* 0237C8 80022BC8 A7B90064 */ sh $t9, 0x64($sp) /* 0237CC 80022BCC 27A40058 */ addiu $a0, $sp, 0x58 -/* 0237D0 80022BD0 0C003A95 */ jal func_8000EA54 +/* 0237D0 80022BD0 0C003A95 */ jal spawn_object /* 0237D4 80022BD4 24050001 */ li $a1, 1 /* 0237D8 80022BD8 3C0B8012 */ lui $t3, %hi(gObjectStructArrayPtr) # $t3, 0x8012 /* 0237DC 80022BDC 8D6BAEE4 */ lw $t3, %lo(gObjectStructArrayPtr)($t3) diff --git a/asm/non_matchings/unknown_00BC20/func_80022CFC.s b/asm/non_matchings/objects/func_80022CFC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80022CFC.s rename to asm/non_matchings/objects/func_80022CFC.s diff --git a/asm/non_matchings/unknown_00BC20/func_80022E18.s b/asm/non_matchings/objects/func_80022E18.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_80022E18.s rename to asm/non_matchings/objects/func_80022E18.s diff --git a/asm/non_matchings/unknown_00BC20/func_800230D0.s b/asm/non_matchings/objects/func_800230D0.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800230D0.s rename to asm/non_matchings/objects/func_800230D0.s diff --git a/asm/non_matchings/unknown_00BC20/func_8002342C.s b/asm/non_matchings/objects/func_8002342C.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_8002342C.s rename to asm/non_matchings/objects/func_8002342C.s diff --git a/asm/non_matchings/unknown_00BC20/func_800235DC.s b/asm/non_matchings/objects/func_800235DC.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/func_800235DC.s rename to asm/non_matchings/objects/func_800235DC.s diff --git a/asm/non_matchings/unknown_00BC20/gParticlePtrList_flush.s b/asm/non_matchings/objects/gParticlePtrList_flush.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/gParticlePtrList_flush.s rename to asm/non_matchings/objects/gParticlePtrList_flush.s diff --git a/asm/non_matchings/unknown_00BC20/render_3d_billboard.s b/asm/non_matchings/objects/render_3d_billboard.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/render_3d_billboard.s rename to asm/non_matchings/objects/render_3d_billboard.s diff --git a/asm/non_matchings/unknown_00BC20/render_3d_model.s b/asm/non_matchings/objects/render_3d_model.s similarity index 100% rename from asm/non_matchings/unknown_00BC20/render_3d_model.s rename to asm/non_matchings/objects/render_3d_model.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000EA54.s b/asm/non_matchings/objects/spawn_object.s similarity index 99% rename from asm/non_matchings/unknown_00BC20/func_8000EA54.s rename to asm/non_matchings/objects/spawn_object.s index 27b18dad..c44a4aaa 100644 --- a/asm/non_matchings/unknown_00BC20/func_8000EA54.s +++ b/asm/non_matchings/objects/spawn_object.s @@ -3,7 +3,7 @@ glabel jpt_800E51B4 .word L8000ECD8, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000ED98, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000ECF4, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000ED10, L8000EDE0, L8000EDE0, L8000EDE0, L8000ED40, L8000EDE0, L8000EDE0, L8000EDE0, L8000EDE0, L8000ED54 .text -glabel func_8000EA54 +glabel spawn_object /* 00F654 8000EA54 27BDFF98 */ addiu $sp, $sp, -0x68 /* 00F658 8000EA58 AFBF0024 */ sw $ra, 0x24($sp) /* 00F65C 8000EA5C AFB30020 */ sw $s3, 0x20($sp) diff --git a/asm/non_matchings/particles/func_800AF1E0.s b/asm/non_matchings/particles/func_800AF1E0.s deleted file mode 100644 index 1ef4d1f0..00000000 --- a/asm/non_matchings/particles/func_800AF1E0.s +++ /dev/null @@ -1,50 +0,0 @@ -glabel func_800AF1E0 -/* 0AFDE0 800AF1E0 3C0E800E */ lui $t6, %hi(gParticleBehavioursAssetTableCount) # $t6, 0x800e -/* 0AFDE4 800AF1E4 8DCE2CF4 */ lw $t6, %lo(gParticleBehavioursAssetTableCount)($t6) -/* 0AFDE8 800AF1E8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0AFDEC 800AF1EC 00AE082A */ slt $at, $a1, $t6 -/* 0AFDF0 800AF1F0 10200026 */ beqz $at, .L800AF28C -/* 0AFDF4 800AF1F4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0AFDF8 800AF1F8 3C0F800E */ lui $t7, %hi(gParticleBehavioursAssetTable) # $t7, 0x800e -/* 0AFDFC 800AF1FC 8DEF2CFC */ lw $t7, %lo(gParticleBehavioursAssetTable)($t7) -/* 0AFE00 800AF200 4448F800 */ cfc1 $t0, $31 -/* 0AFE04 800AF204 0005C080 */ sll $t8, $a1, 2 -/* 0AFE08 800AF208 01F8C821 */ addu $t9, $t7, $t8 -/* 0AFE0C 800AF20C 8F220000 */ lw $v0, ($t9) -/* 0AFE10 800AF210 35010003 */ ori $at, $t0, 3 -/* 0AFE14 800AF214 38210002 */ xori $at, $at, 2 -/* 0AFE18 800AF218 44C1F800 */ ctc1 $at, $31 -/* 0AFE1C 800AF21C C4440004 */ lwc1 $f4, 4($v0) -/* 0AFE20 800AF220 C4480008 */ lwc1 $f8, 8($v0) -/* 0AFE24 800AF224 460021A4 */ cvt.w.s $f6, $f4 -/* 0AFE28 800AF228 44C8F800 */ ctc1 $t0, $31 -/* 0AFE2C 800AF22C 44073000 */ mfc1 $a3, $f6 -/* 0AFE30 800AF230 00000000 */ nop -/* 0AFE34 800AF234 444BF800 */ cfc1 $t3, $31 -/* 0AFE38 800AF238 00074C00 */ sll $t1, $a3, 0x10 -/* 0AFE3C 800AF23C 35610003 */ ori $at, $t3, 3 -/* 0AFE40 800AF240 38210002 */ xori $at, $at, 2 -/* 0AFE44 800AF244 44C1F800 */ ctc1 $at, $31 -/* 0AFE48 800AF248 00093C03 */ sra $a3, $t1, 0x10 -/* 0AFE4C 800AF24C 460042A4 */ cvt.w.s $f10, $f8 -/* 0AFE50 800AF250 44CBF800 */ ctc1 $t3, $31 -/* 0AFE54 800AF254 440C5000 */ mfc1 $t4, $f10 -/* 0AFE58 800AF258 00000000 */ nop -/* 0AFE5C 800AF25C 444DF800 */ cfc1 $t5, $31 -/* 0AFE60 800AF260 AFAC0010 */ sw $t4, 0x10($sp) -/* 0AFE64 800AF264 35A10003 */ ori $at, $t5, 3 -/* 0AFE68 800AF268 38210002 */ xori $at, $at, 2 -/* 0AFE6C 800AF26C 44C1F800 */ ctc1 $at, $31 -/* 0AFE70 800AF270 C450000C */ lwc1 $f16, 0xc($v0) -/* 0AFE74 800AF274 00000000 */ nop -/* 0AFE78 800AF278 460084A4 */ cvt.w.s $f18, $f16 -/* 0AFE7C 800AF27C 440E9000 */ mfc1 $t6, $f18 -/* 0AFE80 800AF280 44CDF800 */ ctc1 $t5, $31 -/* 0AFE84 800AF284 0C02BCA7 */ jal func_800AF29C -/* 0AFE88 800AF288 AFAE0014 */ sw $t6, 0x14($sp) -.L800AF28C: -/* 0AFE8C 800AF28C 8FBF001C */ lw $ra, 0x1c($sp) -/* 0AFE90 800AF290 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0AFE94 800AF294 03E00008 */ jr $ra -/* 0AFE98 800AF298 00000000 */ nop - diff --git a/asm/non_matchings/particles/func_800B263C.s b/asm/non_matchings/particles/func_800B263C.s deleted file mode 100644 index 1966f83c..00000000 --- a/asm/non_matchings/particles/func_800B263C.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_800B263C -/* 0B323C 800B263C 8C820070 */ lw $v0, 0x70($a0) -/* 0B3240 800B2640 00000000 */ nop -/* 0B3244 800B2644 10400024 */ beqz $v0, .L800B26D8 -/* 0B3248 800B2648 00000000 */ nop -/* 0B324C 800B264C 90430006 */ lbu $v1, 6($v0) -/* 0B3250 800B2650 00000000 */ nop -/* 0B3254 800B2654 10600020 */ beqz $v1, .L800B26D8 -/* 0B3258 800B2658 00000000 */ nop -/* 0B325C 800B265C 908F0074 */ lbu $t7, 0x74($a0) -/* 0B3260 800B2660 8C4E000C */ lw $t6, 0xc($v0) -/* 0B3264 800B2664 000FC080 */ sll $t8, $t7, 2 -/* 0B3268 800B2668 01D8C821 */ addu $t9, $t6, $t8 -/* 0B326C 800B266C 8F280000 */ lw $t0, ($t9) -/* 0B3270 800B2670 2469FFFF */ addiu $t1, $v1, -1 -/* 0B3274 800B2674 14880018 */ bne $a0, $t0, .L800B26D8 -/* 0B3278 800B2678 00000000 */ nop -/* 0B327C 800B267C A0490006 */ sb $t1, 6($v0) -/* 0B3280 800B2680 90850074 */ lbu $a1, 0x74($a0) -/* 0B3284 800B2684 312A00FF */ andi $t2, $t1, 0xff -/* 0B3288 800B2688 00AA082A */ slt $at, $a1, $t2 -/* 0B328C 800B268C 10200012 */ beqz $at, .L800B26D8 -/* 0B3290 800B2690 00051880 */ sll $v1, $a1, 2 -.L800B2694: -/* 0B3294 800B2694 8C4B000C */ lw $t3, 0xc($v0) -/* 0B3298 800B2698 00000000 */ nop -/* 0B329C 800B269C 01633021 */ addu $a2, $t3, $v1 -/* 0B32A0 800B26A0 8CCC0004 */ lw $t4, 4($a2) -/* 0B32A4 800B26A4 00000000 */ nop -/* 0B32A8 800B26A8 ACCC0000 */ sw $t4, ($a2) -/* 0B32AC 800B26AC 8C4D000C */ lw $t5, 0xc($v0) -/* 0B32B0 800B26B0 00000000 */ nop -/* 0B32B4 800B26B4 01A37821 */ addu $t7, $t5, $v1 -/* 0B32B8 800B26B8 8DE40000 */ lw $a0, ($t7) -/* 0B32BC 800B26BC 24630004 */ addiu $v1, $v1, 4 -/* 0B32C0 800B26C0 A0850074 */ sb $a1, 0x74($a0) -/* 0B32C4 800B26C4 904E0006 */ lbu $t6, 6($v0) -/* 0B32C8 800B26C8 24A50001 */ addiu $a1, $a1, 1 -/* 0B32CC 800B26CC 00AE082A */ slt $at, $a1, $t6 -/* 0B32D0 800B26D0 1420FFF0 */ bnez $at, .L800B2694 -/* 0B32D4 800B26D4 00000000 */ nop -.L800B26D8: -/* 0B32D8 800B26D8 03E00008 */ jr $ra -/* 0B32DC 800B26DC 00000000 */ nop - diff --git a/asm/non_matchings/racer/func_8004DE38.s b/asm/non_matchings/racer/func_8004DE38.s index 05175cc1..f2d98476 100644 --- a/asm/non_matchings/racer/func_8004DE38.s +++ b/asm/non_matchings/racer/func_8004DE38.s @@ -1282,7 +1282,7 @@ glabel L8004ED88 /* 04FC5C 8004F05C A3AF0065 */ sb $t7, 0x65($sp) /* 04FC60 8004F060 27A40064 */ addiu $a0, $sp, 0x64 /* 04FC64 8004F064 24050001 */ li $a1, 1 -/* 04FC68 8004F068 0C003A95 */ jal func_8000EA54 +/* 04FC68 8004F068 0C003A95 */ jal spawn_object /* 04FC6C 8004F06C AFA20078 */ sw $v0, 0x78($sp) /* 04FC70 8004F070 8FA30078 */ lw $v1, 0x78($sp) /* 04FC74 8004F074 10400005 */ beqz $v0, .L8004F08C diff --git a/asm/non_matchings/racer/func_80055EC0.s b/asm/non_matchings/racer/func_80055EC0.s index c18d64ce..35c2b677 100644 --- a/asm/non_matchings/racer/func_80055EC0.s +++ b/asm/non_matchings/racer/func_80055EC0.s @@ -590,7 +590,7 @@ glabel L80056620 /* 057314 80056714 460021A4 */ cvt.w.s $f6, $f4 /* 057318 80056718 440E3000 */ mfc1 $t6, $f6 /* 05731C 8005671C 44CDF800 */ ctc1 $t5, $31 -/* 057320 80056720 0C003A95 */ jal func_8000EA54 +/* 057320 80056720 0C003A95 */ jal spawn_object /* 057324 80056724 A7AE0086 */ sh $t6, 0x86($sp) /* 057328 80056728 8FA8007C */ lw $t0, 0x7c($sp) /* 05732C 8005672C 8FAA006C */ lw $t2, 0x6c($sp) diff --git a/asm/non_matchings/racer/func_800576E0.s b/asm/non_matchings/racer/func_800576E0.s index 3f7a8d60..dda42a5b 100644 --- a/asm/non_matchings/racer/func_800576E0.s +++ b/asm/non_matchings/racer/func_800576E0.s @@ -106,7 +106,7 @@ glabel func_800576E0 /* 058478 80057878 00000000 */ nop /* 05847C 8005787C 12820033 */ beq $s4, $v0, .L8005794C /* 058480 80057880 02A02025 */ move $a0, $s5 -/* 058484 80057884 0C003A95 */ jal func_8000EA54 +/* 058484 80057884 0C003A95 */ jal spawn_object /* 058488 80057888 02402825 */ move $a1, $s2 /* 05848C 8005788C 1040002F */ beqz $v0, .L8005794C /* 058490 80057890 00000000 */ nop diff --git a/asm/non_matchings/save_data/func_8007306C.s b/asm/non_matchings/save_data/func_8007306C.s index 3b710778..4677b6e9 100644 --- a/asm/non_matchings/save_data/func_8007306C.s +++ b/asm/non_matchings/save_data/func_8007306C.s @@ -137,7 +137,7 @@ glabel func_8007306C /* 073E5C 8007325C 0C01CB15 */ jal func_80072C54 /* 073E60 80073260 24040010 */ li $a0, 16 /* 073E64 80073264 00408825 */ move $s1, $v0 -/* 073E68 80073268 0C01AC75 */ jal func_8006B1D4 +/* 073E68 80073268 0C01AC75 */ jal get_hub_area_id /* 073E6C 8007326C 02002025 */ move $a0, $s0 /* 073E70 80073270 8E4B0004 */ lw $t3, 4($s2) /* 073E74 80073274 00026080 */ sll $t4, $v0, 2 diff --git a/asm/non_matchings/save_data/func_800732E8.s b/asm/non_matchings/save_data/func_800732E8.s index a4f0ba48..5e48c219 100644 --- a/asm/non_matchings/save_data/func_800732E8.s +++ b/asm/non_matchings/save_data/func_800732E8.s @@ -109,7 +109,7 @@ glabel func_800732E8 /* 074070 80073470 19800010 */ blez $t4, .L800734B4 /* 074074 80073474 00000000 */ nop .L80073478: -/* 074078 80073478 0C01AC75 */ jal func_8006B1D4 +/* 074078 80073478 0C01AC75 */ jal get_hub_area_id /* 07407C 8007347C 02202025 */ move $a0, $s1 /* 074080 80073480 8E4D0004 */ lw $t5, 4($s2) /* 074084 80073484 00027080 */ sll $t6, $v0, 2 diff --git a/asm/non_matchings/thread0_epc/func_800B7460.s b/asm/non_matchings/thread0_epc/func_800B7460.s index e878d873..61fbc472 100644 --- a/asm/non_matchings/thread0_epc/func_800B7460.s +++ b/asm/non_matchings/thread0_epc/func_800B7460.s @@ -49,7 +49,7 @@ glabel func_800B7460 /* 0B811C 800B751C 8FA909F4 */ lw $t1, 0x9f4($sp) /* 0B8120 800B7520 00002825 */ move $a1, $zero /* 0B8124 800B7524 19200054 */ blez $t1, .L800B7678 -/* 0B8128 800B7528 3C07800F */ lui $a3, %hi(D_800E8EF0) # $a3, 0x800f +/* 0B8128 800B7528 3C07800F */ lui $a3, %hi(sCoreFileExt1) # $a3, 0x800f /* 0B812C 800B752C 31260003 */ andi $a2, $t1, 3 /* 0B8130 800B7530 10C00018 */ beqz $a2, .L800B7594 /* 0B8134 800B7534 00C01825 */ move $v1, $a2 @@ -142,16 +142,16 @@ glabel func_800B7460 /* 0B8270 800B7670 14AEFFCB */ bne $a1, $t6, .L800B75A0 /* 0B8274 800B7674 24840008 */ addiu $a0, $a0, 8 .L800B7678: -/* 0B8278 800B7678 3C06800F */ lui $a2, %hi(D_800E8EE8) # $a2, 0x800f +/* 0B8278 800B7678 3C06800F */ lui $a2, %hi(sCoreFileName1) # $a2, 0x800f /* 0B827C 800B767C 27AF0040 */ addiu $t7, $sp, 0x40 /* 0B8280 800B7680 240D0800 */ li $t5, 2048 /* 0B8284 800B7684 AFAD0014 */ sw $t5, 0x14($sp) /* 0B8288 800B7688 AFAF0010 */ sw $t7, 0x10($sp) -/* 0B828C 800B768C 24C68EE8 */ addiu $a2, %lo(D_800E8EE8) # addiu $a2, $a2, -0x7118 +/* 0B828C 800B768C 24C68EE8 */ addiu $a2, %lo(sCoreFileName1) # addiu $a2, $a2, -0x7118 /* 0B8290 800B7690 00002025 */ move $a0, $zero /* 0B8294 800B7694 2405FFFF */ li $a1, -1 /* 0B8298 800B7698 0C01D9B5 */ jal write_controller_pak_file -/* 0B829C 800B769C 24E78EF0 */ addiu $a3, %lo(D_800E8EF0) # addiu $a3, $a3, -0x7110 +/* 0B829C 800B769C 24E78EF0 */ addiu $a3, %lo(sCoreFileExt1) # addiu $a3, $a3, -0x7110 .L800B76A0: /* 0B82A0 800B76A0 1000FFFF */ b .L800B76A0 /* 0B82A4 800B76A4 00000000 */ nop diff --git a/asm/non_matchings/thread0_epc/func_800B6F50.s b/asm/non_matchings/thread0_epc/thread0_create.s similarity index 98% rename from asm/non_matchings/thread0_epc/func_800B6F50.s rename to asm/non_matchings/thread0_epc/thread0_create.s index 54d85ef3..8ca93ae5 100644 --- a/asm/non_matchings/thread0_epc/func_800B6F50.s +++ b/asm/non_matchings/thread0_epc/thread0_create.s @@ -1,4 +1,4 @@ -glabel func_800B6F50 +glabel thread0_create /* 0B7B50 800B6F50 27BDFFE0 */ addiu $sp, $sp, -0x20 /* 0B7B54 800B6F54 3C0E8013 */ lui $t6, %hi(D_801295E0) # $t6, 0x8013 /* 0B7B58 800B6F58 AFBF001C */ sw $ra, 0x1c($sp) diff --git a/asm/non_matchings/unknown_005740/func_80008140.s b/asm/non_matchings/unknown_005740/func_80008140.s deleted file mode 100644 index 751cca37..00000000 --- a/asm/non_matchings/unknown_005740/func_80008140.s +++ /dev/null @@ -1,12 +0,0 @@ -glabel func_80008140 -/* 008D40 80008140 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 008D44 80008144 AFBF0014 */ sw $ra, 0x14($sp) -/* 008D48 80008148 0C000638 */ jal func_800018E0 -/* 008D4C 8000814C 00000000 */ nop -/* 008D50 80008150 8FBF0014 */ lw $ra, 0x14($sp) -/* 008D54 80008154 240E0001 */ li $t6, 1 -/* 008D58 80008158 3C018012 */ lui $at, %hi(D_8011AC18) # $at, 0x8012 -/* 008D5C 8000815C A02EAC18 */ sb $t6, %lo(D_8011AC18)($at) -/* 008D60 80008160 03E00008 */ jr $ra -/* 008D64 80008164 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/asm/non_matchings/unknown_005740/func_800092A8.s b/asm/non_matchings/unknown_005740/func_800092A8.s deleted file mode 100644 index 94fc22ff..00000000 --- a/asm/non_matchings/unknown_005740/func_800092A8.s +++ /dev/null @@ -1,179 +0,0 @@ -glabel func_800092A8 -/* 009EA8 800092A8 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 009EAC 800092AC AFBF002C */ sw $ra, 0x2c($sp) -/* 009EB0 800092B0 E7B90020 */ swc1 $f25, 0x20($sp) -/* 009EB4 800092B4 E7B80024 */ swc1 $f24, 0x24($sp) -/* 009EB8 800092B8 E7B70018 */ swc1 $f23, 0x18($sp) -/* 009EBC 800092BC E7B6001C */ swc1 $f22, 0x1c($sp) -/* 009EC0 800092C0 E7B50010 */ swc1 $f21, 0x10($sp) -/* 009EC4 800092C4 E7B40014 */ swc1 $f20, 0x14($sp) -/* 009EC8 800092C8 E7AC0068 */ swc1 $f12, 0x68($sp) -/* 009ECC 800092CC E7AE006C */ swc1 $f14, 0x6c($sp) -/* 009ED0 800092D0 AFA60070 */ sw $a2, 0x70($sp) -/* 009ED4 800092D4 C4E4000C */ lwc1 $f4, 0xc($a3) -/* 009ED8 800092D8 C4F40000 */ lwc1 $f20, ($a3) -/* 009EDC 800092DC C4F60004 */ lwc1 $f22, 4($a3) -/* 009EE0 800092E0 C4F80008 */ lwc1 $f24, 8($a3) -/* 009EE4 800092E4 E7A4004C */ swc1 $f4, 0x4c($sp) -/* 009EE8 800092E8 C4E60010 */ lwc1 $f6, 0x10($a3) -/* 009EEC 800092EC C7AA004C */ lwc1 $f10, 0x4c($sp) -/* 009EF0 800092F0 E7A60048 */ swc1 $f6, 0x48($sp) -/* 009EF4 800092F4 C4E80014 */ lwc1 $f8, 0x14($a3) -/* 009EF8 800092F8 C7A60048 */ lwc1 $f6, 0x48($sp) -/* 009EFC 800092FC 46145081 */ sub.s $f2, $f10, $f20 -/* 009F00 80009300 E7A80044 */ swc1 $f8, 0x44($sp) -/* 009F04 80009304 C7AA0044 */ lwc1 $f10, 0x44($sp) -/* 009F08 80009308 46163201 */ sub.s $f8, $f6, $f22 -/* 009F0C 8000930C 44800800 */ mtc1 $zero, $f1 -/* 009F10 80009310 44800000 */ mtc1 $zero, $f0 -/* 009F14 80009314 46185181 */ sub.s $f6, $f10, $f24 -/* 009F18 80009318 E7A20038 */ swc1 $f2, 0x38($sp) -/* 009F1C 8000931C 460012A1 */ cvt.d.s $f10, $f2 -/* 009F20 80009320 462A0032 */ c.eq.d $f0, $f10 -/* 009F24 80009324 E7A80034 */ swc1 $f8, 0x34($sp) -/* 009F28 80009328 46004406 */ mov.s $f16, $f8 -/* 009F2C 8000932C E7A60030 */ swc1 $f6, 0x30($sp) -/* 009F30 80009330 4500000E */ bc1f .L8000936C -/* 009F34 80009334 46003486 */ mov.s $f18, $f6 -/* 009F38 80009338 46004121 */ cvt.d.s $f4, $f8 -/* 009F3C 8000933C 46240032 */ c.eq.d $f0, $f4 -/* 009F40 80009340 00000000 */ nop -/* 009F44 80009344 45000009 */ bc1f .L8000936C -/* 009F48 80009348 00000000 */ nop -/* 009F4C 8000934C 460032A1 */ cvt.d.s $f10, $f6 -/* 009F50 80009350 462A0032 */ c.eq.d $f0, $f10 -/* 009F54 80009354 00000000 */ nop -/* 009F58 80009358 45000004 */ bc1f .L8000936C -/* 009F5C 8000935C 00000000 */ nop -/* 009F60 80009360 44800000 */ mtc1 $zero, $f0 -/* 009F64 80009364 10000015 */ b .L800093BC -/* 009F68 80009368 44802000 */ mtc1 $zero, $f4 -.L8000936C: -/* 009F6C 8000936C C7A80068 */ lwc1 $f8, 0x68($sp) -/* 009F70 80009370 C7AA006C */ lwc1 $f10, 0x6c($sp) -/* 009F74 80009374 46144101 */ sub.s $f4, $f8, $f20 -/* 009F78 80009378 46022182 */ mul.s $f6, $f4, $f2 -/* 009F7C 8000937C 46165201 */ sub.s $f8, $f10, $f22 -/* 009F80 80009380 46104102 */ mul.s $f4, $f8, $f16 -/* 009F84 80009384 C7A80070 */ lwc1 $f8, 0x70($sp) -/* 009F88 80009388 46043280 */ add.s $f10, $f6, $f4 -/* 009F8C 8000938C 46184181 */ sub.s $f6, $f8, $f24 -/* 009F90 80009390 46123102 */ mul.s $f4, $f6, $f18 -/* 009F94 80009394 00000000 */ nop -/* 009F98 80009398 46021182 */ mul.s $f6, $f2, $f2 -/* 009F9C 8000939C 46045200 */ add.s $f8, $f10, $f4 -/* 009FA0 800093A0 46108282 */ mul.s $f10, $f16, $f16 -/* 009FA4 800093A4 460A3100 */ add.s $f4, $f6, $f10 -/* 009FA8 800093A8 46129182 */ mul.s $f6, $f18, $f18 -/* 009FAC 800093AC 46062280 */ add.s $f10, $f4, $f6 -/* 009FB0 800093B0 00000000 */ nop -/* 009FB4 800093B4 460A4003 */ div.s $f0, $f8, $f10 -/* 009FB8 800093B8 44802000 */ mtc1 $zero, $f4 -.L800093BC: -/* 009FBC 800093BC 8FA20078 */ lw $v0, 0x78($sp) -/* 009FC0 800093C0 4604003C */ c.lt.s $f0, $f4 -/* 009FC4 800093C4 8FA3007C */ lw $v1, 0x7c($sp) -/* 009FC8 800093C8 45000014 */ bc1f .L8000941C -/* 009FCC 800093CC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 009FD0 800093D0 E4540000 */ swc1 $f20, ($v0) -/* 009FD4 800093D4 E4760000 */ swc1 $f22, ($v1) -/* 009FD8 800093D8 8FAE0080 */ lw $t6, 0x80($sp) -/* 009FDC 800093DC 00000000 */ nop -/* 009FE0 800093E0 E5D80000 */ swc1 $f24, ($t6) -/* 009FE4 800093E4 C7A60068 */ lwc1 $f6, 0x68($sp) -/* 009FE8 800093E8 C7A8006C */ lwc1 $f8, 0x6c($sp) -/* 009FEC 800093EC 4606A001 */ sub.s $f0, $f20, $f6 -/* 009FF0 800093F0 C7AA0070 */ lwc1 $f10, 0x70($sp) -/* 009FF4 800093F4 46000102 */ mul.s $f4, $f0, $f0 -/* 009FF8 800093F8 4608B081 */ sub.s $f2, $f22, $f8 -/* 009FFC 800093FC 46021182 */ mul.s $f6, $f2, $f2 -/* 00A000 80009400 460AC381 */ sub.s $f14, $f24, $f10 -/* 00A004 80009404 460E7282 */ mul.s $f10, $f14, $f14 -/* 00A008 80009408 46062200 */ add.s $f8, $f4, $f6 -/* 00A00C 8000940C 0C0326B4 */ jal sqrtf -/* 00A010 80009410 460A4300 */ add.s $f12, $f8, $f10 -/* 00A014 80009414 10000041 */ b .L8000951C -/* 00A018 80009418 4459F800 */ cfc1 $t9, $31 -.L8000941C: -/* 00A01C 8000941C 44812000 */ mtc1 $at, $f4 -/* 00A020 80009420 8FA20078 */ lw $v0, 0x78($sp) -/* 00A024 80009424 4600203C */ c.lt.s $f4, $f0 -/* 00A028 80009428 C7A80038 */ lwc1 $f8, 0x38($sp) -/* 00A02C 8000942C 4500001C */ bc1f .L800094A0 -/* 00A030 80009430 00000000 */ nop -/* 00A034 80009434 C7A6004C */ lwc1 $f6, 0x4c($sp) -/* 00A038 80009438 8FA3007C */ lw $v1, 0x7c($sp) -/* 00A03C 8000943C E4460000 */ swc1 $f6, ($v0) -/* 00A040 80009440 C7A80048 */ lwc1 $f8, 0x48($sp) -/* 00A044 80009444 00000000 */ nop -/* 00A048 80009448 E4680000 */ swc1 $f8, ($v1) -/* 00A04C 8000944C 8FAF0080 */ lw $t7, 0x80($sp) -/* 00A050 80009450 C7AA0044 */ lwc1 $f10, 0x44($sp) -/* 00A054 80009454 00000000 */ nop -/* 00A058 80009458 E5EA0000 */ swc1 $f10, ($t7) -/* 00A05C 8000945C C7A60068 */ lwc1 $f6, 0x68($sp) -/* 00A060 80009460 C7A4004C */ lwc1 $f4, 0x4c($sp) -/* 00A064 80009464 C7A80048 */ lwc1 $f8, 0x48($sp) -/* 00A068 80009468 46062001 */ sub.s $f0, $f4, $f6 -/* 00A06C 8000946C C7A4006C */ lwc1 $f4, 0x6c($sp) -/* 00A070 80009470 C7A60070 */ lwc1 $f6, 0x70($sp) -/* 00A074 80009474 46044081 */ sub.s $f2, $f8, $f4 -/* 00A078 80009478 46000202 */ mul.s $f8, $f0, $f0 -/* 00A07C 8000947C 46065381 */ sub.s $f14, $f10, $f6 -/* 00A080 80009480 46021102 */ mul.s $f4, $f2, $f2 -/* 00A084 80009484 00000000 */ nop -/* 00A088 80009488 460E7182 */ mul.s $f6, $f14, $f14 -/* 00A08C 8000948C 46044280 */ add.s $f10, $f8, $f4 -/* 00A090 80009490 0C0326B4 */ jal sqrtf -/* 00A094 80009494 46065300 */ add.s $f12, $f10, $f6 -/* 00A098 80009498 10000020 */ b .L8000951C -/* 00A09C 8000949C 4459F800 */ cfc1 $t9, $31 -.L800094A0: -/* 00A0A0 800094A0 46080102 */ mul.s $f4, $f0, $f8 -/* 00A0A4 800094A4 8FA20078 */ lw $v0, 0x78($sp) -/* 00A0A8 800094A8 8FA3007C */ lw $v1, 0x7c($sp) -/* 00A0AC 800094AC 46142280 */ add.s $f10, $f4, $f20 -/* 00A0B0 800094B0 E44A0000 */ swc1 $f10, ($v0) -/* 00A0B4 800094B4 C7A60034 */ lwc1 $f6, 0x34($sp) -/* 00A0B8 800094B8 00000000 */ nop -/* 00A0BC 800094BC 46060202 */ mul.s $f8, $f0, $f6 -/* 00A0C0 800094C0 46164100 */ add.s $f4, $f8, $f22 -/* 00A0C4 800094C4 E4640000 */ swc1 $f4, ($v1) -/* 00A0C8 800094C8 C7AA0030 */ lwc1 $f10, 0x30($sp) -/* 00A0CC 800094CC 8FB80080 */ lw $t8, 0x80($sp) -/* 00A0D0 800094D0 460A0182 */ mul.s $f6, $f0, $f10 -/* 00A0D4 800094D4 46183400 */ add.s $f16, $f6, $f24 -/* 00A0D8 800094D8 E7100000 */ swc1 $f16, ($t8) -/* 00A0DC 800094DC C7AA0068 */ lwc1 $f10, 0x68($sp) -/* 00A0E0 800094E0 C7A80070 */ lwc1 $f8, 0x70($sp) -/* 00A0E4 800094E4 C4440000 */ lwc1 $f4, ($v0) -/* 00A0E8 800094E8 46088481 */ sub.s $f18, $f16, $f8 -/* 00A0EC 800094EC C7A8006C */ lwc1 $f8, 0x6c($sp) -/* 00A0F0 800094F0 460A2081 */ sub.s $f2, $f4, $f10 -/* 00A0F4 800094F4 C4660000 */ lwc1 $f6, ($v1) -/* 00A0F8 800094F8 46021102 */ mul.s $f4, $f2, $f2 -/* 00A0FC 800094FC 46083381 */ sub.s $f14, $f6, $f8 -/* 00A100 80009500 460E7282 */ mul.s $f10, $f14, $f14 -/* 00A104 80009504 00000000 */ nop -/* 00A108 80009508 46129202 */ mul.s $f8, $f18, $f18 -/* 00A10C 8000950C 460A2180 */ add.s $f6, $f4, $f10 -/* 00A110 80009510 0C0326B4 */ jal sqrtf -/* 00A114 80009514 46064300 */ add.s $f12, $f8, $f6 -/* 00A118 80009518 4459F800 */ cfc1 $t9, $31 -.L8000951C: -/* 00A11C 8000951C 8FBF002C */ lw $ra, 0x2c($sp) -/* 00A120 80009520 37210003 */ ori $at, $t9, 3 -/* 00A124 80009524 38210002 */ xori $at, $at, 2 -/* 00A128 80009528 44C1F800 */ ctc1 $at, $31 -/* 00A12C 8000952C C7B50010 */ lwc1 $f21, 0x10($sp) -/* 00A130 80009530 46000124 */ cvt.w.s $f4, $f0 -/* 00A134 80009534 C7B40014 */ lwc1 $f20, 0x14($sp) -/* 00A138 80009538 44022000 */ mfc1 $v0, $f4 -/* 00A13C 8000953C C7B70018 */ lwc1 $f23, 0x18($sp) -/* 00A140 80009540 C7B6001C */ lwc1 $f22, 0x1c($sp) -/* 00A144 80009544 C7B90020 */ lwc1 $f25, 0x20($sp) -/* 00A148 80009548 C7B80024 */ lwc1 $f24, 0x24($sp) -/* 00A14C 8000954C 44D9F800 */ ctc1 $t9, $31 -/* 00A150 80009550 03E00008 */ jr $ra -/* 00A154 80009554 27BD0068 */ addiu $sp, $sp, 0x68 - diff --git a/asm/non_matchings/unknown_00BC20/func_80009D6C.s b/asm/non_matchings/unknown_00BC20/func_80009D6C.s deleted file mode 100644 index 5c1e6987..00000000 --- a/asm/non_matchings/unknown_00BC20/func_80009D6C.s +++ /dev/null @@ -1,384 +0,0 @@ -glabel func_80009D6C -/* 00A96C 80009D6C 27BDFF68 */ addiu $sp, $sp, -0x98 -/* 00A970 80009D70 E7B80024 */ swc1 $f24, 0x24($sp) -/* 00A974 80009D74 AFBF004C */ sw $ra, 0x4c($sp) -/* 00A978 80009D78 AFB10048 */ sw $s1, 0x48($sp) -/* 00A97C 80009D7C AFB00044 */ sw $s0, 0x44($sp) -/* 00A980 80009D80 E7BF0038 */ swc1 $f31, 0x38($sp) -/* 00A984 80009D84 E7BE003C */ swc1 $f30, 0x3c($sp) -/* 00A988 80009D88 E7BD0030 */ swc1 $f29, 0x30($sp) -/* 00A98C 80009D8C E7BC0034 */ swc1 $f28, 0x34($sp) -/* 00A990 80009D90 E7BB0028 */ swc1 $f27, 0x28($sp) -/* 00A994 80009D94 E7BA002C */ swc1 $f26, 0x2c($sp) -/* 00A998 80009D98 E7B90020 */ swc1 $f25, 0x20($sp) -/* 00A99C 80009D9C E7B70018 */ swc1 $f23, 0x18($sp) -/* 00A9A0 80009DA0 E7B6001C */ swc1 $f22, 0x1c($sp) -/* 00A9A4 80009DA4 E7B50010 */ swc1 $f21, 0x10($sp) -/* 00A9A8 80009DA8 E7B40014 */ swc1 $f20, 0x14($sp) -/* 00A9AC 80009DAC AFA5009C */ sw $a1, 0x9c($sp) -/* 00A9B0 80009DB0 AFA600A0 */ sw $a2, 0xa0($sp) -/* 00A9B4 80009DB4 AFA700A4 */ sw $a3, 0xa4($sp) -/* 00A9B8 80009DB8 4480C000 */ mtc1 $zero, $f24 -/* 00A9BC 80009DBC C48400BC */ lwc1 $f4, 0xbc($a0) -/* 00A9C0 80009DC0 00808825 */ move $s1, $a0 -/* 00A9C4 80009DC4 4604C032 */ c.eq.s $f24, $f4 -/* 00A9C8 80009DC8 00000000 */ nop -/* 00A9CC 80009DCC 45000028 */ bc1f .L80009E70 -/* 00A9D0 80009DD0 26300004 */ addiu $s0, $s1, 4 -/* 00A9D4 80009DD4 808E00B8 */ lb $t6, 0xb8($a0) -/* 00A9D8 80009DD8 24900004 */ addiu $s0, $a0, 4 -/* 00A9DC 80009DDC 448E3000 */ mtc1 $t6, $f6 -/* 00A9E0 80009DE0 4600C506 */ mov.s $f20, $f24 -/* 00A9E4 80009DE4 46803220 */ cvt.s.w $f8, $f6 -/* 00A9E8 80009DE8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 00A9EC 80009DEC 4608C03C */ c.lt.s $f24, $f8 -/* 00A9F0 80009DF0 00000000 */ nop -/* 00A9F4 80009DF4 4500001D */ bc1f .L80009E6C -/* 00A9F8 80009DF8 00000000 */ nop -/* 00A9FC 80009DFC 4481B000 */ mtc1 $at, $f22 -/* 00AA00 80009E00 00000000 */ nop -.L80009E04: -/* 00AA04 80009E04 C60A000C */ lwc1 $f10, 0xc($s0) -/* 00AA08 80009E08 C6040000 */ lwc1 $f4, ($s0) -/* 00AA0C 80009E0C C6060010 */ lwc1 $f6, 0x10($s0) -/* 00AA10 80009E10 C6080004 */ lwc1 $f8, 4($s0) -/* 00AA14 80009E14 46045001 */ sub.s $f0, $f10, $f4 -/* 00AA18 80009E18 C6040008 */ lwc1 $f4, 8($s0) -/* 00AA1C 80009E1C 46083081 */ sub.s $f2, $f6, $f8 -/* 00AA20 80009E20 C60A0014 */ lwc1 $f10, 0x14($s0) -/* 00AA24 80009E24 46000182 */ mul.s $f6, $f0, $f0 -/* 00AA28 80009E28 46045381 */ sub.s $f14, $f10, $f4 -/* 00AA2C 80009E2C 46021202 */ mul.s $f8, $f2, $f2 -/* 00AA30 80009E30 00000000 */ nop -/* 00AA34 80009E34 460E7102 */ mul.s $f4, $f14, $f14 -/* 00AA38 80009E38 46083280 */ add.s $f10, $f6, $f8 -/* 00AA3C 80009E3C 0C0326B4 */ jal sqrtf -/* 00AA40 80009E40 46045300 */ add.s $f12, $f10, $f4 -/* 00AA44 80009E44 822F00B8 */ lb $t7, 0xb8($s1) -/* 00AA48 80009E48 4616A500 */ add.s $f20, $f20, $f22 -/* 00AA4C 80009E4C 448F5000 */ mtc1 $t7, $f10 -/* 00AA50 80009E50 C62600BC */ lwc1 $f6, 0xbc($s1) -/* 00AA54 80009E54 46805120 */ cvt.s.w $f4, $f10 -/* 00AA58 80009E58 2610000C */ addiu $s0, $s0, 0xc -/* 00AA5C 80009E5C 4604A03C */ c.lt.s $f20, $f4 -/* 00AA60 80009E60 46003200 */ add.s $f8, $f6, $f0 -/* 00AA64 80009E64 4501FFE7 */ bc1t .L80009E04 -/* 00AA68 80009E68 E62800BC */ swc1 $f8, 0xbc($s1) -.L80009E6C: -/* 00AA6C 80009E6C 26300004 */ addiu $s0, $s1, 4 -.L80009E70: -/* 00AA70 80009E70 4600C406 */ mov.s $f16, $f24 -/* 00AA74 80009E74 00001025 */ move $v0, $zero -.L80009E78: -/* 00AA78 80009E78 C6160000 */ lwc1 $f22, ($s0) -/* 00AA7C 80009E7C C614000C */ lwc1 $f20, 0xc($s0) -/* 00AA80 80009E80 C61E0004 */ lwc1 $f30, 4($s0) -/* 00AA84 80009E84 4616A601 */ sub.s $f24, $f20, $f22 -/* 00AA88 80009E88 C6000010 */ lwc1 $f0, 0x10($s0) -/* 00AA8C 80009E8C 4618C182 */ mul.s $f6, $f24, $f24 -/* 00AA90 80009E90 461E0681 */ sub.s $f26, $f0, $f30 -/* 00AA94 80009E94 C6120008 */ lwc1 $f18, 8($s0) -/* 00AA98 80009E98 C6020014 */ lwc1 $f2, 0x14($s0) -/* 00AA9C 80009E9C 461AD202 */ mul.s $f8, $f26, $f26 -/* 00AAA0 80009EA0 46121701 */ sub.s $f28, $f2, $f18 -/* 00AAA4 80009EA4 E7B0005C */ swc1 $f16, 0x5c($sp) -/* 00AAA8 80009EA8 A3A20057 */ sb $v0, 0x57($sp) -/* 00AAAC 80009EAC 461CE102 */ mul.s $f4, $f28, $f28 -/* 00AAB0 80009EB0 46083280 */ add.s $f10, $f6, $f8 -/* 00AAB4 80009EB4 E7B2007C */ swc1 $f18, 0x7c($sp) -/* 00AAB8 80009EB8 0C0326B4 */ jal sqrtf -/* 00AABC 80009EBC 46045300 */ add.s $f12, $f10, $f4 -/* 00AAC0 80009EC0 C7A6009C */ lwc1 $f6, 0x9c($sp) -/* 00AAC4 80009EC4 93A20057 */ lbu $v0, 0x57($sp) -/* 00AAC8 80009EC8 4606B03E */ c.le.s $f22, $f6 -/* 00AACC 80009ECC C7B0005C */ lwc1 $f16, 0x5c($sp) -/* 00AAD0 80009ED0 C7B2007C */ lwc1 $f18, 0x7c($sp) -/* 00AAD4 80009ED4 45000005 */ bc1f .L80009EEC -/* 00AAD8 80009ED8 00000000 */ nop -/* 00AADC 80009EDC 4614303E */ c.le.s $f6, $f20 -/* 00AAE0 80009EE0 00000000 */ nop -/* 00AAE4 80009EE4 4501000B */ bc1t .L80009F14 -/* 00AAE8 80009EE8 00000000 */ nop -.L80009EEC: -/* 00AAEC 80009EEC C7A8009C */ lwc1 $f8, 0x9c($sp) -/* 00AAF0 80009EF0 00000000 */ nop -/* 00AAF4 80009EF4 4608A03E */ c.le.s $f20, $f8 -/* 00AAF8 80009EF8 00000000 */ nop -/* 00AAFC 80009EFC 45000048 */ bc1f .L8000A020 -/* 00AB00 80009F00 00000000 */ nop -/* 00AB04 80009F04 4616403E */ c.le.s $f8, $f22 -/* 00AB08 80009F08 00000000 */ nop -/* 00AB0C 80009F0C 45000044 */ bc1f .L8000A020 -/* 00AB10 80009F10 00000000 */ nop -.L80009F14: -/* 00AB14 80009F14 44805000 */ mtc1 $zero, $f10 -/* 00AB18 80009F18 C7A4009C */ lwc1 $f4, 0x9c($sp) -/* 00AB1C 80009F1C 460AC032 */ c.eq.s $f24, $f10 -/* 00AB20 80009F20 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 00AB24 80009F24 45010004 */ bc1t .L80009F38 -/* 00AB28 80009F28 00000000 */ nop -/* 00AB2C 80009F2C 46162181 */ sub.s $f6, $f4, $f22 -/* 00AB30 80009F30 10000012 */ b .L80009F7C -/* 00AB34 80009F34 46183303 */ div.s $f12, $f6, $f24 -.L80009F38: -/* 00AB38 80009F38 44801000 */ mtc1 $zero, $f2 -/* 00AB3C 80009F3C C7A800A0 */ lwc1 $f8, 0xa0($sp) -/* 00AB40 80009F40 4602D032 */ c.eq.s $f26, $f2 -/* 00AB44 80009F44 00000000 */ nop -/* 00AB48 80009F48 45010004 */ bc1t .L80009F5C -/* 00AB4C 80009F4C 00000000 */ nop -/* 00AB50 80009F50 461E4281 */ sub.s $f10, $f8, $f30 -/* 00AB54 80009F54 10000009 */ b .L80009F7C -/* 00AB58 80009F58 461A5303 */ div.s $f12, $f10, $f26 -.L80009F5C: -/* 00AB5C 80009F5C 4602E032 */ c.eq.s $f28, $f2 -/* 00AB60 80009F60 C7A400A4 */ lwc1 $f4, 0xa4($sp) -/* 00AB64 80009F64 45010004 */ bc1t .L80009F78 -/* 00AB68 80009F68 00000000 */ nop -/* 00AB6C 80009F6C 46122181 */ sub.s $f6, $f4, $f18 -/* 00AB70 80009F70 10000002 */ b .L80009F7C -/* 00AB74 80009F74 461C3303 */ div.s $f12, $f6, $f28 -.L80009F78: -/* 00AB78 80009F78 46001306 */ mov.s $f12, $f2 -.L80009F7C: -/* 00AB7C 80009F7C 460CD202 */ mul.s $f8, $f26, $f12 -/* 00AB80 80009F80 C7AA00A0 */ lwc1 $f10, 0xa0($sp) -/* 00AB84 80009F84 44813000 */ mtc1 $at, $f6 -/* 00AB88 80009F88 C7A400A0 */ lwc1 $f4, 0xa0($sp) -/* 00AB8C 80009F8C 461E4080 */ add.s $f2, $f8, $f30 -/* 00AB90 80009F90 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 00AB94 80009F94 4602503E */ c.le.s $f10, $f2 -/* 00AB98 80009F98 00000000 */ nop -/* 00AB9C 80009F9C 45000003 */ bc1f .L80009FAC -/* 00ABA0 80009FA0 00000000 */ nop -/* 00ABA4 80009FA4 10000003 */ b .L80009FB4 -/* 00ABA8 80009FA8 460A1381 */ sub.s $f14, $f2, $f10 -.L80009FAC: -/* 00ABAC 80009FAC 46041381 */ sub.s $f14, $f2, $f4 -/* 00ABB0 80009FB0 46007387 */ neg.s $f14, $f14 -.L80009FB4: -/* 00ABB4 80009FB4 4606703C */ c.lt.s $f14, $f6 -/* 00ABB8 80009FB8 00000000 */ nop -/* 00ABBC 80009FBC 45000016 */ bc1f .L8000A018 -/* 00ABC0 80009FC0 00000000 */ nop -/* 00ABC4 80009FC4 460CE202 */ mul.s $f8, $f28, $f12 -/* 00ABC8 80009FC8 C7AA00A4 */ lwc1 $f10, 0xa4($sp) -/* 00ABCC 80009FCC 44813000 */ mtc1 $at, $f6 -/* 00ABD0 80009FD0 C7A400A4 */ lwc1 $f4, 0xa4($sp) -/* 00ABD4 80009FD4 46124080 */ add.s $f2, $f8, $f18 -/* 00ABD8 80009FD8 4602503E */ c.le.s $f10, $f2 -/* 00ABDC 80009FDC 00000000 */ nop -/* 00ABE0 80009FE0 45000003 */ bc1f .L80009FF0 -/* 00ABE4 80009FE4 00000000 */ nop -/* 00ABE8 80009FE8 10000003 */ b .L80009FF8 -/* 00ABEC 80009FEC 460A1381 */ sub.s $f14, $f2, $f10 -.L80009FF0: -/* 00ABF0 80009FF0 46041381 */ sub.s $f14, $f2, $f4 -/* 00ABF4 80009FF4 46007387 */ neg.s $f14, $f14 -.L80009FF8: -/* 00ABF8 80009FF8 4606703C */ c.lt.s $f14, $f6 -/* 00ABFC 80009FFC 00000000 */ nop -/* 00AC00 8000A000 45000005 */ bc1f .L8000A018 -/* 00AC04 8000A004 00000000 */ nop -/* 00AC08 8000A008 46006202 */ mul.s $f8, $f12, $f0 -/* 00AC0C 8000A00C 24020001 */ li $v0, 1 -/* 00AC10 8000A010 10000004 */ b .L8000A024 -/* 00AC14 8000A014 46088400 */ add.s $f16, $f16, $f8 -.L8000A018: -/* 00AC18 8000A018 10000002 */ b .L8000A024 -/* 00AC1C 8000A01C 46008400 */ add.s $f16, $f16, $f0 -.L8000A020: -/* 00AC20 8000A020 46008400 */ add.s $f16, $f16, $f0 -.L8000A024: -/* 00AC24 8000A024 1040FF94 */ beqz $v0, .L80009E78 -/* 00AC28 8000A028 2610000C */ addiu $s0, $s0, 0xc -/* 00AC2C 8000A02C 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 00AC30 8000A030 44815000 */ mtc1 $at, $f10 -/* 00AC34 8000A034 C62000BC */ lwc1 $f0, 0xbc($s1) -/* 00AC38 8000A038 8FB00044 */ lw $s0, 0x44($sp) -/* 00AC3C 8000A03C 460A0103 */ div.s $f4, $f0, $f10 -/* 00AC40 8000A040 8FBF004C */ lw $ra, 0x4c($sp) -/* 00AC44 8000A044 3C014396 */ li $at, 0x43960000 # 300.000000 -/* 00AC48 8000A048 4610203C */ c.lt.s $f4, $f16 -/* 00AC4C 8000A04C 00000000 */ nop -/* 00AC50 8000A050 45000002 */ bc1f .L8000A05C -/* 00AC54 8000A054 00000000 */ nop -/* 00AC58 8000A058 46100401 */ sub.s $f16, $f0, $f16 -.L8000A05C: -/* 00AC5C 8000A05C 44810000 */ mtc1 $at, $f0 -/* 00AC60 8000A060 00000000 */ nop -/* 00AC64 8000A064 4600803C */ c.lt.s $f16, $f0 -/* 00AC68 8000A068 00000000 */ nop -/* 00AC6C 8000A06C 45000034 */ bc1f .L8000A140 -/* 00AC70 8000A070 00000000 */ nop -/* 00AC74 8000A074 92380000 */ lbu $t8, ($s1) -/* 00AC78 8000A078 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 00AC7C 8000A07C 44983000 */ mtc1 $t8, $f6 -/* 00AC80 8000A080 07010004 */ bgez $t8, .L8000A094 -/* 00AC84 8000A084 46803220 */ cvt.s.w $f8, $f6 -/* 00AC88 8000A088 44815000 */ mtc1 $at, $f10 -/* 00AC8C 8000A08C 00000000 */ nop -/* 00AC90 8000A090 460A4200 */ add.s $f8, $f8, $f10 -.L8000A094: -/* 00AC94 8000A094 46104102 */ mul.s $f4, $f8, $f16 -/* 00AC98 8000A098 24020001 */ li $v0, 1 -/* 00AC9C 8000A09C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 00ACA0 8000A0A0 46002183 */ div.s $f6, $f4, $f0 -/* 00ACA4 8000A0A4 4459F800 */ cfc1 $t9, $31 -/* 00ACA8 8000A0A8 44C2F800 */ ctc1 $v0, $31 -/* 00ACAC 8000A0AC 00000000 */ nop -/* 00ACB0 8000A0B0 460032A4 */ cvt.w.s $f10, $f6 -/* 00ACB4 8000A0B4 4442F800 */ cfc1 $v0, $31 -/* 00ACB8 8000A0B8 00000000 */ nop -/* 00ACBC 8000A0BC 30420078 */ andi $v0, $v0, 0x78 -/* 00ACC0 8000A0C0 10400018 */ beqz $v0, .L8000A124 -/* 00ACC4 8000A0C4 00000000 */ nop -/* 00ACC8 8000A0C8 44815000 */ mtc1 $at, $f10 -/* 00ACCC 8000A0CC 24020001 */ li $v0, 1 -/* 00ACD0 8000A0D0 460A3281 */ sub.s $f10, $f6, $f10 -/* 00ACD4 8000A0D4 3C018000 */ lui $at, 0x8000 -/* 00ACD8 8000A0D8 44C2F800 */ ctc1 $v0, $31 -/* 00ACDC 8000A0DC 00000000 */ nop -/* 00ACE0 8000A0E0 460052A4 */ cvt.w.s $f10, $f10 -/* 00ACE4 8000A0E4 4442F800 */ cfc1 $v0, $31 -/* 00ACE8 8000A0E8 00000000 */ nop -/* 00ACEC 8000A0EC 30420078 */ andi $v0, $v0, 0x78 -/* 00ACF0 8000A0F0 14400008 */ bnez $v0, .L8000A114 -/* 00ACF4 8000A0F4 2402FFFF */ li $v0, -1 -/* 00ACF8 8000A0F8 44025000 */ mfc1 $v0, $f10 -/* 00ACFC 8000A0FC 44D9F800 */ ctc1 $t9, $31 -/* 00AD00 8000A100 00411025 */ or $v0, $v0, $at -/* 00AD04 8000A104 304800FF */ andi $t0, $v0, 0xff -/* 00AD08 8000A108 1000000F */ b .L8000A148 -/* 00AD0C 8000A10C 01001025 */ move $v0, $t0 -.L8000A110: -/* 00AD10 8000A110 2402FFFF */ li $v0, -1 -.L8000A114: -/* 00AD14 8000A114 304800FF */ andi $t0, $v0, 0xff -/* 00AD18 8000A118 44D9F800 */ ctc1 $t9, $31 -/* 00AD1C 8000A11C 1000000A */ b .L8000A148 -/* 00AD20 8000A120 01001025 */ move $v0, $t0 -.L8000A124: -/* 00AD24 8000A124 44025000 */ mfc1 $v0, $f10 -/* 00AD28 8000A128 00000000 */ nop -/* 00AD2C 8000A12C 0440FFF8 */ bltz $v0, .L8000A110 -/* 00AD30 8000A130 304800FF */ andi $t0, $v0, 0xff -/* 00AD34 8000A134 44D9F800 */ ctc1 $t9, $31 -/* 00AD38 8000A138 10000003 */ b .L8000A148 -/* 00AD3C 8000A13C 01001025 */ move $v0, $t0 -.L8000A140: -/* 00AD40 8000A140 92220000 */ lbu $v0, ($s1) -/* 00AD44 8000A144 00000000 */ nop -.L8000A148: -/* 00AD48 8000A148 C7B50010 */ lwc1 $f21, 0x10($sp) -/* 00AD4C 8000A14C C7B40014 */ lwc1 $f20, 0x14($sp) -/* 00AD50 8000A150 C7B70018 */ lwc1 $f23, 0x18($sp) -/* 00AD54 8000A154 C7B6001C */ lwc1 $f22, 0x1c($sp) -/* 00AD58 8000A158 C7B90020 */ lwc1 $f25, 0x20($sp) -/* 00AD5C 8000A15C C7B80024 */ lwc1 $f24, 0x24($sp) -/* 00AD60 8000A160 C7BB0028 */ lwc1 $f27, 0x28($sp) -/* 00AD64 8000A164 C7BA002C */ lwc1 $f26, 0x2c($sp) -/* 00AD68 8000A168 C7BD0030 */ lwc1 $f29, 0x30($sp) -/* 00AD6C 8000A16C C7BC0034 */ lwc1 $f28, 0x34($sp) -/* 00AD70 8000A170 C7BF0038 */ lwc1 $f31, 0x38($sp) -/* 00AD74 8000A174 C7BE003C */ lwc1 $f30, 0x3c($sp) -/* 00AD78 8000A178 8FB10048 */ lw $s1, 0x48($sp) -/* 00AD7C 8000A17C 03E00008 */ jr $ra -/* 00AD80 8000A180 27BD0098 */ addiu $sp, $sp, 0x98 - -/* 00AD84 8000A184 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 00AD88 8000A188 AFBE0048 */ sw $fp, 0x48($sp) -/* 00AD8C 8000A18C AFB70044 */ sw $s7, 0x44($sp) -/* 00AD90 8000A190 AFB60040 */ sw $s6, 0x40($sp) -/* 00AD94 8000A194 AFB5003C */ sw $s5, 0x3c($sp) -/* 00AD98 8000A198 AFB40038 */ sw $s4, 0x38($sp) -/* 00AD9C 8000A19C AFB30034 */ sw $s3, 0x34($sp) -/* 00ADA0 8000A1A0 3C168012 */ lui $s6, %hi(D_80119C58) # $s6, 0x8012 -/* 00ADA4 8000A1A4 3C178012 */ lui $s7, %hi(D_80119C5C) # $s7, 0x8012 -/* 00ADA8 8000A1A8 3C1E8012 */ lui $fp, %hi(D_8011A6DC) # $fp, 0x8012 -/* 00ADAC 8000A1AC 00809825 */ move $s3, $a0 -/* 00ADB0 8000A1B0 00A0A025 */ move $s4, $a1 -/* 00ADB4 8000A1B4 00C0A825 */ move $s5, $a2 -/* 00ADB8 8000A1B8 AFBF004C */ sw $ra, 0x4c($sp) -/* 00ADBC 8000A1BC AFB20030 */ sw $s2, 0x30($sp) -/* 00ADC0 8000A1C0 AFB1002C */ sw $s1, 0x2c($sp) -/* 00ADC4 8000A1C4 AFB00028 */ sw $s0, 0x28($sp) -/* 00ADC8 8000A1C8 27DEA6DC */ addiu $fp, %lo(D_8011A6DC) # addiu $fp, $fp, -0x5924 -/* 00ADCC 8000A1CC 26F79C5C */ addiu $s7, %lo(D_80119C5C) # addiu $s7, $s7, -0x63a4 -/* 00ADD0 8000A1D0 26D69C58 */ addiu $s6, %lo(D_80119C58) # addiu $s6, $s6, -0x63a8 -.L8000A1D4: -/* 00ADD4 8000A1D4 8ECE016C */ lw $t6, 0x16c($s6) -/* 00ADD8 8000A1D8 02C09025 */ move $s2, $s6 -/* 00ADDC 8000A1DC 11C00013 */ beqz $t6, .L8000A22C -/* 00ADE0 8000A1E0 02E08825 */ move $s1, $s7 -/* 00ADE4 8000A1E4 82CF017C */ lb $t7, 0x17c($s6) -/* 00ADE8 8000A1E8 00008025 */ move $s0, $zero -/* 00ADEC 8000A1EC 19E0000F */ blez $t7, .L8000A22C -.L8000A1F0: -/* 00ADF0 8000A1F0 241800FF */ li $t8, 255 -/* 00ADF4 8000A1F4 241900FF */ li $t9, 255 -/* 00ADF8 8000A1F8 AFB90014 */ sw $t9, 0x14($sp) -/* 00ADFC 8000A1FC AFB80010 */ sw $t8, 0x10($sp) -/* 00AE00 8000A200 02602025 */ move $a0, $s3 -/* 00AE04 8000A204 02802825 */ move $a1, $s4 -/* 00AE08 8000A208 02A03025 */ move $a2, $s5 -/* 00AE0C 8000A20C 02203825 */ move $a3, $s1 -/* 00AE10 8000A210 0C002905 */ jal func_8000A414 -/* 00AE14 8000A214 AFA00018 */ sw $zero, 0x18($sp) -/* 00AE18 8000A218 8248017C */ lb $t0, 0x17c($s2) -/* 00AE1C 8000A21C 26100001 */ addiu $s0, $s0, 1 -/* 00AE20 8000A220 0208082A */ slt $at, $s0, $t0 -/* 00AE24 8000A224 1420FFF2 */ bnez $at, .L8000A1F0 -/* 00AE28 8000A228 2631000C */ addiu $s1, $s1, 0xc -.L8000A22C: -/* 00AE2C 8000A22C 26F70180 */ addiu $s7, $s7, 0x180 -/* 00AE30 8000A230 02FE082B */ sltu $at, $s7, $fp -/* 00AE34 8000A234 1420FFE7 */ bnez $at, .L8000A1D4 -/* 00AE38 8000A238 26D60180 */ addiu $s6, $s6, 0x180 -/* 00AE3C 8000A23C 3C168012 */ lui $s6, %hi(D_8011A6D8) # $s6, 0x8012 -/* 00AE40 8000A240 3C178012 */ lui $s7, %hi(D_8011A6DC) # $s7, 0x8012 -/* 00AE44 8000A244 3C1E8012 */ lui $fp, %hi(D_8011AC1C) # $fp, 0x8012 -/* 00AE48 8000A248 27DEAC1C */ addiu $fp, %lo(D_8011AC1C) # addiu $fp, $fp, -0x53e4 -/* 00AE4C 8000A24C 26F7A6DC */ addiu $s7, %lo(D_8011A6DC) # addiu $s7, $s7, -0x5924 -/* 00AE50 8000A250 26D6A6D8 */ addiu $s6, %lo(D_8011A6D8) # addiu $s6, $s6, -0x5928 -.L8000A254: -/* 00AE54 8000A254 92C90000 */ lbu $t1, ($s6) -/* 00AE58 8000A258 02C09025 */ move $s2, $s6 -/* 00AE5C 8000A25C 11200013 */ beqz $t1, .L8000A2AC -/* 00AE60 8000A260 02E08825 */ move $s1, $s7 -/* 00AE64 8000A264 82CA00B8 */ lb $t2, 0xb8($s6) -/* 00AE68 8000A268 00008025 */ move $s0, $zero -/* 00AE6C 8000A26C 1940000F */ blez $t2, .L8000A2AC -.L8000A270: -/* 00AE70 8000A270 240B00FF */ li $t3, 255 -/* 00AE74 8000A274 240C00FF */ li $t4, 255 -/* 00AE78 8000A278 AFAC0018 */ sw $t4, 0x18($sp) -/* 00AE7C 8000A27C AFAB0010 */ sw $t3, 0x10($sp) -/* 00AE80 8000A280 02602025 */ move $a0, $s3 -/* 00AE84 8000A284 02802825 */ move $a1, $s4 -/* 00AE88 8000A288 02A03025 */ move $a2, $s5 -/* 00AE8C 8000A28C 02203825 */ move $a3, $s1 -/* 00AE90 8000A290 0C002905 */ jal func_8000A414 -/* 00AE94 8000A294 AFA00014 */ sw $zero, 0x14($sp) -/* 00AE98 8000A298 824D00B8 */ lb $t5, 0xb8($s2) -/* 00AE9C 8000A29C 26100001 */ addiu $s0, $s0, 1 -/* 00AEA0 8000A2A0 020D082A */ slt $at, $s0, $t5 -/* 00AEA4 8000A2A4 1420FFF2 */ bnez $at, .L8000A270 -/* 00AEA8 8000A2A8 2631000C */ addiu $s1, $s1, 0xc -.L8000A2AC: -/* 00AEAC 8000A2AC 26F700C0 */ addiu $s7, $s7, 0xc0 -/* 00AEB0 8000A2B0 16FEFFE8 */ bne $s7, $fp, .L8000A254 -/* 00AEB4 8000A2B4 26D600C0 */ addiu $s6, $s6, 0xc0 -/* 00AEB8 8000A2B8 8FBF004C */ lw $ra, 0x4c($sp) -/* 00AEBC 8000A2BC 8FB00028 */ lw $s0, 0x28($sp) -/* 00AEC0 8000A2C0 8FB1002C */ lw $s1, 0x2c($sp) -/* 00AEC4 8000A2C4 8FB20030 */ lw $s2, 0x30($sp) -/* 00AEC8 8000A2C8 8FB30034 */ lw $s3, 0x34($sp) -/* 00AECC 8000A2CC 8FB40038 */ lw $s4, 0x38($sp) -/* 00AED0 8000A2D0 8FB5003C */ lw $s5, 0x3c($sp) -/* 00AED4 8000A2D4 8FB60040 */ lw $s6, 0x40($sp) -/* 00AED8 8000A2D8 8FB70044 */ lw $s7, 0x44($sp) -/* 00AEDC 8000A2DC 8FBE0048 */ lw $fp, 0x48($sp) -/* 00AEE0 8000A2E0 03E00008 */ jr $ra -/* 00AEE4 8000A2E4 27BD0050 */ addiu $sp, $sp, 0x50 - diff --git a/asm/non_matchings/unknown_00BC20/func_8000A71C.s b/asm/non_matchings/unknown_00BC20/func_8000A71C.s deleted file mode 100644 index c3962578..00000000 --- a/asm/non_matchings/unknown_00BC20/func_8000A71C.s +++ /dev/null @@ -1,49 +0,0 @@ -glabel __mapVoice -/* 00B31C 8000A71C AFA50004 */ sw $a1, 4($sp) -/* 00B320 8000A720 AFA60008 */ sw $a2, 8($sp) -/* 00B324 8000A724 AFA7000C */ sw $a3, 0xc($sp) -/* 00B328 8000A728 90880071 */ lbu $t0, 0x71($a0) -/* 00B32C 8000A72C 90990070 */ lbu $t9, 0x70($a0) -/* 00B330 8000A730 30AE00FF */ andi $t6, $a1, 0xff -/* 00B334 8000A734 30CF00FF */ andi $t7, $a2, 0xff -/* 00B338 8000A738 30F800FF */ andi $t8, $a3, 0xff -/* 00B33C 8000A73C 8C83006C */ lw $v1, 0x6c($a0) -/* 00B340 8000A740 0328082A */ slt $at, $t9, $t0 -/* 00B344 8000A744 03003825 */ move $a3, $t8 -/* 00B348 8000A748 01E03025 */ move $a2, $t7 -/* 00B34C 8000A74C 10200003 */ beqz $at, .L8000A75C -/* 00B350 8000A750 01C02825 */ move $a1, $t6 -/* 00B354 8000A754 03E00008 */ jr $ra -/* 00B358 8000A758 00001025 */ move $v0, $zero - -.L8000A75C: -/* 00B35C 8000A75C 10600017 */ beqz $v1, .L8000A7BC -/* 00B360 8000A760 00601025 */ move $v0, $v1 -/* 00B364 8000A764 8C690000 */ lw $t1, ($v1) -/* 00B368 8000A768 00000000 */ nop -/* 00B36C 8000A76C AC89006C */ sw $t1, 0x6c($a0) -/* 00B370 8000A770 AC600000 */ sw $zero, ($v1) -/* 00B374 8000A774 8C8A0064 */ lw $t2, 0x64($a0) -/* 00B378 8000A778 00000000 */ nop -/* 00B37C 8000A77C 15400003 */ bnez $t2, .L8000A78C -/* 00B380 8000A780 00000000 */ nop -/* 00B384 8000A784 10000004 */ b .L8000A798 -/* 00B388 8000A788 AC830064 */ sw $v1, 0x64($a0) -.L8000A78C: -/* 00B38C 8000A78C 8C8B0068 */ lw $t3, 0x68($a0) -/* 00B390 8000A790 00000000 */ nop -/* 00B394 8000A794 AD630000 */ sw $v1, ($t3) -.L8000A798: -/* 00B398 8000A798 AC830068 */ sw $v1, 0x68($a0) -/* 00B39C 8000A79C A0670031 */ sb $a3, 0x31($v1) -/* 00B3A0 8000A7A0 A0650032 */ sb $a1, 0x32($v1) -/* 00B3A4 8000A7A4 A0660033 */ sb $a2, 0x33($v1) -/* 00B3A8 8000A7A8 AC630014 */ sw $v1, 0x14($v1) -/* 00B3AC 8000A7AC 908C0071 */ lbu $t4, 0x71($a0) -/* 00B3B0 8000A7B0 00000000 */ nop -/* 00B3B4 8000A7B4 258D0001 */ addiu $t5, $t4, 1 -/* 00B3B8 8000A7B8 A08D0071 */ sb $t5, 0x71($a0) -.L8000A7BC: -/* 00B3BC 8000A7BC 03E00008 */ jr $ra -/* 00B3C0 8000A7C0 00000000 */ nop - diff --git a/asm/non_matchings/unknown_00BC20/func_8000A8D0.s b/asm/non_matchings/unknown_00BC20/func_8000A8D0.s deleted file mode 100644 index ec0344f0..00000000 --- a/asm/non_matchings/unknown_00BC20/func_8000A8D0.s +++ /dev/null @@ -1,84 +0,0 @@ -glabel __lookupSoundQuick -/* 00B4D0 8000A8D0 27BDFFF8 */ addiu $sp, $sp, -8 -/* 00B4D4 8000A8D4 30EF00FF */ andi $t7, $a3, 0xff -/* 00B4D8 8000A8D8 AFB00004 */ sw $s0, 4($sp) -/* 00B4DC 8000A8DC AFA5000C */ sw $a1, 0xc($sp) -/* 00B4E0 8000A8E0 AFA60010 */ sw $a2, 0x10($sp) -/* 00B4E4 8000A8E4 AFA70014 */ sw $a3, 0x14($sp) -/* 00B4E8 8000A8E8 000FC880 */ sll $t9, $t7, 2 -/* 00B4EC 8000A8EC 8C980060 */ lw $t8, 0x60($a0) -/* 00B4F0 8000A8F0 032FC821 */ addu $t9, $t9, $t7 -/* 00B4F4 8000A8F4 0019C880 */ sll $t9, $t9, 2 -/* 00B4F8 8000A8F8 03195821 */ addu $t3, $t8, $t9 -/* 00B4FC 8000A8FC 8D620000 */ lw $v0, ($t3) -/* 00B500 8000A900 30D000FF */ andi $s0, $a2, 0xff -/* 00B504 8000A904 8448000E */ lh $t0, 0xe($v0) -/* 00B508 8000A908 30AE00FF */ andi $t6, $a1, 0xff -/* 00B50C 8000A90C 19000036 */ blez $t0, .L8000A9E8 -/* 00B510 8000A910 24030001 */ li $v1, 1 -/* 00B514 8000A914 01C04825 */ move $t1, $t6 -/* 00B518 8000A918 00682821 */ addu $a1, $v1, $t0 -.L8000A91C: -/* 00B51C 8000A91C 04A10003 */ bgez $a1, .L8000A92C -/* 00B520 8000A920 00056043 */ sra $t4, $a1, 1 -/* 00B524 8000A924 24A10001 */ addiu $at, $a1, 1 -/* 00B528 8000A928 00016043 */ sra $t4, $at, 1 -.L8000A92C: -/* 00B52C 8000A92C 000C6880 */ sll $t5, $t4, 2 -/* 00B530 8000A930 004D7021 */ addu $t6, $v0, $t5 -/* 00B534 8000A934 8DC7000C */ lw $a3, 0xc($t6) -/* 00B538 8000A938 01802025 */ move $a0, $t4 -/* 00B53C 8000A93C 8CE60004 */ lw $a2, 4($a3) -/* 00B540 8000A940 00000000 */ nop -/* 00B544 8000A944 90CA0002 */ lbu $t2, 2($a2) -/* 00B548 8000A948 00000000 */ nop -/* 00B54C 8000A94C 012A082A */ slt $at, $t1, $t2 -/* 00B550 8000A950 14200013 */ bnez $at, .L8000A9A0 -/* 00B554 8000A954 012A082A */ slt $at, $t1, $t2 -/* 00B558 8000A958 90CF0003 */ lbu $t7, 3($a2) -/* 00B55C 8000A95C 00000000 */ nop -/* 00B560 8000A960 01E9082A */ slt $at, $t7, $t1 -/* 00B564 8000A964 1420000E */ bnez $at, .L8000A9A0 -/* 00B568 8000A968 012A082A */ slt $at, $t1, $t2 -/* 00B56C 8000A96C 90D80000 */ lbu $t8, ($a2) -/* 00B570 8000A970 02002825 */ move $a1, $s0 -/* 00B574 8000A974 0218082A */ slt $at, $s0, $t8 -/* 00B578 8000A978 14200009 */ bnez $at, .L8000A9A0 -/* 00B57C 8000A97C 012A082A */ slt $at, $t1, $t2 -/* 00B580 8000A980 90D90001 */ lbu $t9, 1($a2) -/* 00B584 8000A984 00000000 */ nop -/* 00B588 8000A988 0325082A */ slt $at, $t9, $a1 -/* 00B58C 8000A98C 14200004 */ bnez $at, .L8000A9A0 -/* 00B590 8000A990 012A082A */ slt $at, $t1, $t2 -/* 00B594 8000A994 10000015 */ b .L8000A9EC -/* 00B598 8000A998 00E01025 */ move $v0, $a3 -/* 00B59C 8000A99C 012A082A */ slt $at, $t1, $t2 -.L8000A9A0: -/* 00B5A0 8000A9A0 1420000B */ bnez $at, .L8000A9D0 -/* 00B5A4 8000A9A4 00000000 */ nop -/* 00B5A8 8000A9A8 90CB0000 */ lbu $t3, ($a2) -/* 00B5AC 8000A9AC 00000000 */ nop -/* 00B5B0 8000A9B0 020B082A */ slt $at, $s0, $t3 -/* 00B5B4 8000A9B4 10200008 */ beqz $at, .L8000A9D8 -/* 00B5B8 8000A9B8 00000000 */ nop -/* 00B5BC 8000A9BC 90CC0003 */ lbu $t4, 3($a2) -/* 00B5C0 8000A9C0 00000000 */ nop -/* 00B5C4 8000A9C4 0189082A */ slt $at, $t4, $t1 -/* 00B5C8 8000A9C8 14200003 */ bnez $at, .L8000A9D8 -/* 00B5CC 8000A9CC 00000000 */ nop -.L8000A9D0: -/* 00B5D0 8000A9D0 10000002 */ b .L8000A9DC -/* 00B5D4 8000A9D4 2488FFFF */ addiu $t0, $a0, -1 -.L8000A9D8: -/* 00B5D8 8000A9D8 24830001 */ addiu $v1, $a0, 1 -.L8000A9DC: -/* 00B5DC 8000A9DC 0103082A */ slt $at, $t0, $v1 -/* 00B5E0 8000A9E0 1020FFCE */ beqz $at, .L8000A91C -/* 00B5E4 8000A9E4 00682821 */ addu $a1, $v1, $t0 -.L8000A9E8: -/* 00B5E8 8000A9E8 00001025 */ move $v0, $zero -.L8000A9EC: -/* 00B5EC 8000A9EC 8FB00004 */ lw $s0, 4($sp) -/* 00B5F0 8000A9F0 03E00008 */ jr $ra -/* 00B5F4 8000A9F4 27BD0008 */ addiu $sp, $sp, 8 - diff --git a/asm/non_matchings/unknown_00BC20/func_80012E28.s b/asm/non_matchings/unknown_00BC20/func_80012E28.s deleted file mode 100644 index 36381d67..00000000 --- a/asm/non_matchings/unknown_00BC20/func_80012E28.s +++ /dev/null @@ -1,72 +0,0 @@ -glabel func_80012E28 -/* 013A28 80012E28 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 013A2C 80012E2C AFBF0014 */ sw $ra, 0x14($sp) -/* 013A30 80012E30 848E0048 */ lh $t6, 0x48($a0) -/* 013A34 80012E34 24010001 */ li $at, 1 -/* 013A38 80012E38 15C10039 */ bne $t6, $at, .L80012F20 -/* 013A3C 80012E3C 00802825 */ move $a1, $a0 -/* 013A40 80012E40 8C820064 */ lw $v0, 0x64($a0) -/* 013A44 80012E44 848F0000 */ lh $t7, ($a0) -/* 013A48 80012E48 84580160 */ lh $t8, 0x160($v0) -/* 013A4C 80012E4C 84880002 */ lh $t0, 2($a0) -/* 013A50 80012E50 01F8C821 */ addu $t9, $t7, $t8 -/* 013A54 80012E54 A4990000 */ sh $t9, ($a0) -/* 013A58 80012E58 84490162 */ lh $t1, 0x162($v0) -/* 013A5C 80012E5C 848B0004 */ lh $t3, 4($a0) -/* 013A60 80012E60 01095021 */ addu $t2, $t0, $t1 -/* 013A64 80012E64 A48A0002 */ sh $t2, 2($a0) -/* 013A68 80012E68 844C0164 */ lh $t4, 0x164($v0) -/* 013A6C 80012E6C 44800000 */ mtc1 $zero, $f0 -/* 013A70 80012E70 016C6821 */ addu $t5, $t3, $t4 -/* 013A74 80012E74 A48D0004 */ sh $t5, 4($a0) -/* 013A78 80012E78 804E01D7 */ lb $t6, 0x1d7($v0) -/* 013A7C 80012E7C 00000000 */ nop -/* 013A80 80012E80 29C10005 */ slti $at, $t6, 5 -/* 013A84 80012E84 10200021 */ beqz $at, .L80012F0C -/* 013A88 80012E88 00000000 */ nop -/* 013A8C 80012E8C 84440164 */ lh $a0, 0x164($v0) -/* 013A90 80012E90 AFA50028 */ sw $a1, 0x28($sp) -/* 013A94 80012E94 0C01C1FE */ jal func_800707F8 -/* 013A98 80012E98 AFA20020 */ sw $v0, 0x20($sp) -/* 013A9C 80012E9C 8FA20020 */ lw $v0, 0x20($sp) -/* 013AA0 80012EA0 E7A0001C */ swc1 $f0, 0x1c($sp) -/* 013AA4 80012EA4 84580166 */ lh $t8, 0x166($v0) -/* 013AA8 80012EA8 844F0162 */ lh $t7, 0x162($v0) -/* 013AAC 80012EAC 00000000 */ nop -/* 013AB0 80012EB0 01F82023 */ subu $a0, $t7, $t8 -/* 013AB4 80012EB4 0004CC00 */ sll $t9, $a0, 0x10 -/* 013AB8 80012EB8 0C01C1FE */ jal func_800707F8 -/* 013ABC 80012EBC 00192403 */ sra $a0, $t9, 0x10 -/* 013AC0 80012EC0 C7A4001C */ lwc1 $f4, 0x1c($sp) -/* 013AC4 80012EC4 44806000 */ mtc1 $zero, $f12 -/* 013AC8 80012EC8 46040082 */ mul.s $f2, $f0, $f4 -/* 013ACC 80012ECC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 013AD0 80012ED0 8FA20020 */ lw $v0, 0x20($sp) -/* 013AD4 80012ED4 8FA50028 */ lw $a1, 0x28($sp) -/* 013AD8 80012ED8 460C103C */ c.lt.s $f2, $f12 -/* 013ADC 80012EDC 44813000 */ mtc1 $at, $f6 -/* 013AE0 80012EE0 45000003 */ bc1f .L80012EF0 -/* 013AE4 80012EE4 3C0141C0 */ li $at, 0x41C00000 # 24.000000 -/* 013AE8 80012EE8 10000003 */ b .L80012EF8 -/* 013AEC 80012EEC 46006006 */ mov.s $f0, $f12 -.L80012EF0: -/* 013AF0 80012EF0 46021002 */ mul.s $f0, $f2, $f2 -/* 013AF4 80012EF4 00000000 */ nop -.L80012EF8: -/* 013AF8 80012EF8 46003201 */ sub.s $f8, $f6, $f0 -/* 013AFC 80012EFC 44815000 */ mtc1 $at, $f10 -/* 013B00 80012F00 C45200D0 */ lwc1 $f18, 0xd0($v0) -/* 013B04 80012F04 460A4402 */ mul.s $f16, $f8, $f10 -/* 013B08 80012F08 46128000 */ add.s $f0, $f16, $f18 -.L80012F0C: -/* 013B0C 80012F0C C4A40010 */ lwc1 $f4, 0x10($a1) -/* 013B10 80012F10 3C018012 */ lui $at, %hi(D_8011ADD0) # $at, 0x8012 -/* 013B14 80012F14 46002180 */ add.s $f6, $f4, $f0 -/* 013B18 80012F18 E4A60010 */ swc1 $f6, 0x10($a1) -/* 013B1C 80012F1C E420ADD0 */ swc1 $f0, %lo(D_8011ADD0)($at) -.L80012F20: -/* 013B20 80012F20 8FBF0014 */ lw $ra, 0x14($sp) -/* 013B24 80012F24 27BD0028 */ addiu $sp, $sp, 0x28 -/* 013B28 80012F28 03E00008 */ jr $ra -/* 013B2C 80012F2C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_00BC20/func_80014CCC.s b/asm/non_matchings/unknown_00BC20/func_80014CCC.s deleted file mode 100644 index ee8fe251..00000000 --- a/asm/non_matchings/unknown_00BC20/func_80014CCC.s +++ /dev/null @@ -1,462 +0,0 @@ -glabel func_80014CCC -/* 0158CC 80014CCC 00A4082A */ slt $at, $a1, $a0 -/* 0158D0 80014CD0 1420019B */ bnez $at, .L80015340 -/* 0158D4 80014CD4 3C0A8012 */ lui $t2, %hi(gObjPtrList) # $t2, 0x8012 -/* 0158D8 80014CD8 254AAE58 */ addiu $t2, %lo(gObjPtrList) # addiu $t2, $t2, -0x51a8 -/* 0158DC 80014CDC 0064082A */ slt $at, $v1, $a0 -.L80014CE0: -/* 0158E0 80014CE0 1420001D */ bnez $at, .L80014D58 -/* 0158E4 80014CE4 00A2082A */ slt $at, $a1, $v0 -/* 0158E8 80014CE8 8D590000 */ lw $t9, ($t2) -/* 0158EC 80014CEC 00045880 */ sll $t3, $a0, 2 -/* 0158F0 80014CF0 032B3821 */ addu $a3, $t9, $t3 -/* 0158F4 80014CF4 8CE60000 */ lw $a2, ($a3) -/* 0158F8 80014CF8 00000000 */ nop -/* 0158FC 80014CFC C4C40010 */ lwc1 $f4, 0x10($a2) -/* 015900 80014D00 C4C60034 */ lwc1 $f6, 0x34($a2) -/* 015904 80014D04 00000000 */ nop -/* 015908 80014D08 46062201 */ sub.s $f8, $f4, $f6 -/* 01590C 80014D0C 460C403C */ c.lt.s $f8, $f12 -/* 015910 80014D10 00000000 */ nop -/* 015914 80014D14 45000010 */ bc1f .L80014D58 -/* 015918 80014D18 00A2082A */ slt $at, $a1, $v0 -.L80014D1C: -/* 01591C 80014D1C 24840001 */ addiu $a0, $a0, 1 -/* 015920 80014D20 0064082A */ slt $at, $v1, $a0 -/* 015924 80014D24 1420000B */ bnez $at, .L80014D54 -/* 015928 80014D28 24E70004 */ addiu $a3, $a3, 4 -/* 01592C 80014D2C 8CE60000 */ lw $a2, ($a3) -/* 015930 80014D30 00000000 */ nop -/* 015934 80014D34 C4CA0010 */ lwc1 $f10, 0x10($a2) -/* 015938 80014D38 C4D00034 */ lwc1 $f16, 0x34($a2) -/* 01593C 80014D3C 00000000 */ nop -/* 015940 80014D40 46105481 */ sub.s $f18, $f10, $f16 -/* 015944 80014D44 460C903C */ c.lt.s $f18, $f12 -/* 015948 80014D48 00000000 */ nop -/* 01594C 80014D4C 4501FFF3 */ bc1t .L80014D1C -/* 015950 80014D50 00000000 */ nop -.L80014D54: -/* 015954 80014D54 00A2082A */ slt $at, $a1, $v0 -.L80014D58: -/* 015958 80014D58 1420001C */ bnez $at, .L80014DCC -/* 01595C 80014D5C 00047080 */ sll $t6, $a0, 2 -/* 015960 80014D60 8D4C0000 */ lw $t4, ($t2) -/* 015964 80014D64 00056880 */ sll $t5, $a1, 2 -/* 015968 80014D68 018D3021 */ addu $a2, $t4, $t5 -/* 01596C 80014D6C 8CC70000 */ lw $a3, ($a2) -/* 015970 80014D70 00000000 */ nop -/* 015974 80014D74 C4E40010 */ lwc1 $f4, 0x10($a3) -/* 015978 80014D78 C4E60034 */ lwc1 $f6, 0x34($a3) -/* 01597C 80014D7C 00000000 */ nop -/* 015980 80014D80 46062201 */ sub.s $f8, $f4, $f6 -/* 015984 80014D84 4608603E */ c.le.s $f12, $f8 -/* 015988 80014D88 00000000 */ nop -/* 01598C 80014D8C 45000010 */ bc1f .L80014DD0 -/* 015990 80014D90 0085082A */ slt $at, $a0, $a1 -.L80014D94: -/* 015994 80014D94 24A5FFFF */ addiu $a1, $a1, -1 -/* 015998 80014D98 00A2082A */ slt $at, $a1, $v0 -/* 01599C 80014D9C 1420000B */ bnez $at, .L80014DCC -/* 0159A0 80014DA0 24C6FFFC */ addiu $a2, $a2, -4 -/* 0159A4 80014DA4 8CC70000 */ lw $a3, ($a2) -/* 0159A8 80014DA8 00000000 */ nop -/* 0159AC 80014DAC C4EA0010 */ lwc1 $f10, 0x10($a3) -/* 0159B0 80014DB0 C4F00034 */ lwc1 $f16, 0x34($a3) -/* 0159B4 80014DB4 00000000 */ nop -/* 0159B8 80014DB8 46105481 */ sub.s $f18, $f10, $f16 -/* 0159BC 80014DBC 4612603E */ c.le.s $f12, $f18 -/* 0159C0 80014DC0 00000000 */ nop -/* 0159C4 80014DC4 4501FFF3 */ bc1t .L80014D94 -/* 0159C8 80014DC8 00000000 */ nop -.L80014DCC: -/* 0159CC 80014DCC 0085082A */ slt $at, $a0, $a1 -.L80014DD0: -/* 0159D0 80014DD0 1020000C */ beqz $at, .L80014E04 -/* 0159D4 80014DD4 00054080 */ sll $t0, $a1, 2 -/* 0159D8 80014DD8 8D460000 */ lw $a2, ($t2) -/* 0159DC 80014DDC 24840001 */ addiu $a0, $a0, 1 -/* 0159E0 80014DE0 00C87821 */ addu $t7, $a2, $t0 -/* 0159E4 80014DE4 8DF80000 */ lw $t8, ($t7) -/* 0159E8 80014DE8 00CE3821 */ addu $a3, $a2, $t6 -/* 0159EC 80014DEC 8CE90000 */ lw $t1, ($a3) -/* 0159F0 80014DF0 ACF80000 */ sw $t8, ($a3) -/* 0159F4 80014DF4 8D590000 */ lw $t9, ($t2) -/* 0159F8 80014DF8 24A5FFFF */ addiu $a1, $a1, -1 -/* 0159FC 80014DFC 03285821 */ addu $t3, $t9, $t0 -/* 015A00 80014E00 AD690000 */ sw $t1, ($t3) -.L80014E04: -/* 015A04 80014E04 00A4082A */ slt $at, $a1, $a0 -/* 015A08 80014E08 1020FFB5 */ beqz $at, .L80014CE0 -/* 015A0C 80014E0C 0064082A */ slt $at, $v1, $a0 -/* 015A10 80014E10 03E00008 */ jr $ra -/* 015A14 80014E14 00801025 */ move $v0, $a0 - -/* 015A18 80014E18 00A4082A */ slt $at, $a1, $a0 -/* 015A1C 80014E1C 14200148 */ bnez $at, .L80015340 -/* 015A20 80014E20 3C0A8012 */ lui $t2, %hi(gObjPtrList) # $t2, 0x8012 -/* 015A24 80014E24 254AAE58 */ addiu $t2, %lo(gObjPtrList) # addiu $t2, $t2, -0x51a8 -/* 015A28 80014E28 0064082A */ slt $at, $v1, $a0 -.L80014E2C: -/* 015A2C 80014E2C 1420001D */ bnez $at, .L80014EA4 -/* 015A30 80014E30 00A2082A */ slt $at, $a1, $v0 -/* 015A34 80014E34 8D4C0000 */ lw $t4, ($t2) -/* 015A38 80014E38 00046880 */ sll $t5, $a0, 2 -/* 015A3C 80014E3C 018D3821 */ addu $a3, $t4, $t5 -/* 015A40 80014E40 8CE60000 */ lw $a2, ($a3) -/* 015A44 80014E44 00000000 */ nop -/* 015A48 80014E48 C4C40014 */ lwc1 $f4, 0x14($a2) -/* 015A4C 80014E4C C4C60034 */ lwc1 $f6, 0x34($a2) -/* 015A50 80014E50 00000000 */ nop -/* 015A54 80014E54 46062201 */ sub.s $f8, $f4, $f6 -/* 015A58 80014E58 460C403C */ c.lt.s $f8, $f12 -/* 015A5C 80014E5C 00000000 */ nop -/* 015A60 80014E60 45000010 */ bc1f .L80014EA4 -/* 015A64 80014E64 00A2082A */ slt $at, $a1, $v0 -.L80014E68: -/* 015A68 80014E68 24840001 */ addiu $a0, $a0, 1 -/* 015A6C 80014E6C 0064082A */ slt $at, $v1, $a0 -/* 015A70 80014E70 1420000B */ bnez $at, .L80014EA0 -/* 015A74 80014E74 24E70004 */ addiu $a3, $a3, 4 -/* 015A78 80014E78 8CE60000 */ lw $a2, ($a3) -/* 015A7C 80014E7C 00000000 */ nop -/* 015A80 80014E80 C4CA0014 */ lwc1 $f10, 0x14($a2) -/* 015A84 80014E84 C4D00034 */ lwc1 $f16, 0x34($a2) -/* 015A88 80014E88 00000000 */ nop -/* 015A8C 80014E8C 46105481 */ sub.s $f18, $f10, $f16 -/* 015A90 80014E90 460C903C */ c.lt.s $f18, $f12 -/* 015A94 80014E94 00000000 */ nop -/* 015A98 80014E98 4501FFF3 */ bc1t .L80014E68 -/* 015A9C 80014E9C 00000000 */ nop -.L80014EA0: -/* 015AA0 80014EA0 00A2082A */ slt $at, $a1, $v0 -.L80014EA4: -/* 015AA4 80014EA4 1420001C */ bnez $at, .L80014F18 -/* 015AA8 80014EA8 0004C080 */ sll $t8, $a0, 2 -/* 015AAC 80014EAC 8D4E0000 */ lw $t6, ($t2) -/* 015AB0 80014EB0 00057880 */ sll $t7, $a1, 2 -/* 015AB4 80014EB4 01CF3021 */ addu $a2, $t6, $t7 -/* 015AB8 80014EB8 8CC70000 */ lw $a3, ($a2) -/* 015ABC 80014EBC 00000000 */ nop -/* 015AC0 80014EC0 C4E40014 */ lwc1 $f4, 0x14($a3) -/* 015AC4 80014EC4 C4E60034 */ lwc1 $f6, 0x34($a3) -/* 015AC8 80014EC8 00000000 */ nop -/* 015ACC 80014ECC 46062201 */ sub.s $f8, $f4, $f6 -/* 015AD0 80014ED0 4608603E */ c.le.s $f12, $f8 -/* 015AD4 80014ED4 00000000 */ nop -/* 015AD8 80014ED8 45000010 */ bc1f .L80014F1C -/* 015ADC 80014EDC 0085082A */ slt $at, $a0, $a1 -.L80014EE0: -/* 015AE0 80014EE0 24A5FFFF */ addiu $a1, $a1, -1 -/* 015AE4 80014EE4 00A2082A */ slt $at, $a1, $v0 -/* 015AE8 80014EE8 1420000B */ bnez $at, .L80014F18 -/* 015AEC 80014EEC 24C6FFFC */ addiu $a2, $a2, -4 -/* 015AF0 80014EF0 8CC70000 */ lw $a3, ($a2) -/* 015AF4 80014EF4 00000000 */ nop -/* 015AF8 80014EF8 C4EA0014 */ lwc1 $f10, 0x14($a3) -/* 015AFC 80014EFC C4F00034 */ lwc1 $f16, 0x34($a3) -/* 015B00 80014F00 00000000 */ nop -/* 015B04 80014F04 46105481 */ sub.s $f18, $f10, $f16 -/* 015B08 80014F08 4612603E */ c.le.s $f12, $f18 -/* 015B0C 80014F0C 00000000 */ nop -/* 015B10 80014F10 4501FFF3 */ bc1t .L80014EE0 -/* 015B14 80014F14 00000000 */ nop -.L80014F18: -/* 015B18 80014F18 0085082A */ slt $at, $a0, $a1 -.L80014F1C: -/* 015B1C 80014F1C 1020000C */ beqz $at, .L80014F50 -/* 015B20 80014F20 00054080 */ sll $t0, $a1, 2 -/* 015B24 80014F24 8D460000 */ lw $a2, ($t2) -/* 015B28 80014F28 24840001 */ addiu $a0, $a0, 1 -/* 015B2C 80014F2C 00C8C821 */ addu $t9, $a2, $t0 -/* 015B30 80014F30 8F2B0000 */ lw $t3, ($t9) -/* 015B34 80014F34 00D83821 */ addu $a3, $a2, $t8 -/* 015B38 80014F38 8CE90000 */ lw $t1, ($a3) -/* 015B3C 80014F3C ACEB0000 */ sw $t3, ($a3) -/* 015B40 80014F40 8D4C0000 */ lw $t4, ($t2) -/* 015B44 80014F44 24A5FFFF */ addiu $a1, $a1, -1 -/* 015B48 80014F48 01886821 */ addu $t5, $t4, $t0 -/* 015B4C 80014F4C ADA90000 */ sw $t1, ($t5) -.L80014F50: -/* 015B50 80014F50 00A4082A */ slt $at, $a1, $a0 -/* 015B54 80014F54 1020FFB5 */ beqz $at, .L80014E2C -/* 015B58 80014F58 0064082A */ slt $at, $v1, $a0 -/* 015B5C 80014F5C 03E00008 */ jr $ra -/* 015B60 80014F60 00801025 */ move $v0, $a0 - -/* 015B64 80014F64 00A4082A */ slt $at, $a1, $a0 -/* 015B68 80014F68 142000F5 */ bnez $at, .L80015340 -/* 015B6C 80014F6C 3C0A8012 */ lui $t2, %hi(gObjPtrList) # $t2, 0x8012 -/* 015B70 80014F70 254AAE58 */ addiu $t2, %lo(gObjPtrList) # addiu $t2, $t2, -0x51a8 -/* 015B74 80014F74 0064082A */ slt $at, $v1, $a0 -.L80014F78: -/* 015B78 80014F78 1420001D */ bnez $at, .L80014FF0 -/* 015B7C 80014F7C 00A2082A */ slt $at, $a1, $v0 -/* 015B80 80014F80 8D4E0000 */ lw $t6, ($t2) -/* 015B84 80014F84 00047880 */ sll $t7, $a0, 2 -/* 015B88 80014F88 01CF3821 */ addu $a3, $t6, $t7 -/* 015B8C 80014F8C 8CE60000 */ lw $a2, ($a3) -/* 015B90 80014F90 00000000 */ nop -/* 015B94 80014F94 C4C40034 */ lwc1 $f4, 0x34($a2) -/* 015B98 80014F98 C4C6000C */ lwc1 $f6, 0xc($a2) -/* 015B9C 80014F9C 00000000 */ nop -/* 015BA0 80014FA0 46062200 */ add.s $f8, $f4, $f6 -/* 015BA4 80014FA4 460C403C */ c.lt.s $f8, $f12 -/* 015BA8 80014FA8 00000000 */ nop -/* 015BAC 80014FAC 45000010 */ bc1f .L80014FF0 -/* 015BB0 80014FB0 00A2082A */ slt $at, $a1, $v0 -.L80014FB4: -/* 015BB4 80014FB4 24840001 */ addiu $a0, $a0, 1 -/* 015BB8 80014FB8 0064082A */ slt $at, $v1, $a0 -/* 015BBC 80014FBC 1420000B */ bnez $at, .L80014FEC -/* 015BC0 80014FC0 24E70004 */ addiu $a3, $a3, 4 -/* 015BC4 80014FC4 8CE60000 */ lw $a2, ($a3) -/* 015BC8 80014FC8 00000000 */ nop -/* 015BCC 80014FCC C4CA0034 */ lwc1 $f10, 0x34($a2) -/* 015BD0 80014FD0 C4D0000C */ lwc1 $f16, 0xc($a2) -/* 015BD4 80014FD4 00000000 */ nop -/* 015BD8 80014FD8 46105480 */ add.s $f18, $f10, $f16 -/* 015BDC 80014FDC 460C903C */ c.lt.s $f18, $f12 -/* 015BE0 80014FE0 00000000 */ nop -/* 015BE4 80014FE4 4501FFF3 */ bc1t .L80014FB4 -/* 015BE8 80014FE8 00000000 */ nop -.L80014FEC: -/* 015BEC 80014FEC 00A2082A */ slt $at, $a1, $v0 -.L80014FF0: -/* 015BF0 80014FF0 1420001C */ bnez $at, .L80015064 -/* 015BF4 80014FF4 00045880 */ sll $t3, $a0, 2 -/* 015BF8 80014FF8 8D580000 */ lw $t8, ($t2) -/* 015BFC 80014FFC 0005C880 */ sll $t9, $a1, 2 -/* 015C00 80015000 03193021 */ addu $a2, $t8, $t9 -/* 015C04 80015004 8CC70000 */ lw $a3, ($a2) -/* 015C08 80015008 00000000 */ nop -/* 015C0C 8001500C C4E40034 */ lwc1 $f4, 0x34($a3) -/* 015C10 80015010 C4E6000C */ lwc1 $f6, 0xc($a3) -/* 015C14 80015014 00000000 */ nop -/* 015C18 80015018 46062200 */ add.s $f8, $f4, $f6 -/* 015C1C 8001501C 4608603E */ c.le.s $f12, $f8 -/* 015C20 80015020 00000000 */ nop -/* 015C24 80015024 45000010 */ bc1f .L80015068 -/* 015C28 80015028 0085082A */ slt $at, $a0, $a1 -.L8001502C: -/* 015C2C 8001502C 24A5FFFF */ addiu $a1, $a1, -1 -/* 015C30 80015030 00A2082A */ slt $at, $a1, $v0 -/* 015C34 80015034 1420000B */ bnez $at, .L80015064 -/* 015C38 80015038 24C6FFFC */ addiu $a2, $a2, -4 -/* 015C3C 8001503C 8CC70000 */ lw $a3, ($a2) -/* 015C40 80015040 00000000 */ nop -/* 015C44 80015044 C4EA0034 */ lwc1 $f10, 0x34($a3) -/* 015C48 80015048 C4F0000C */ lwc1 $f16, 0xc($a3) -/* 015C4C 8001504C 00000000 */ nop -/* 015C50 80015050 46105480 */ add.s $f18, $f10, $f16 -/* 015C54 80015054 4612603E */ c.le.s $f12, $f18 -/* 015C58 80015058 00000000 */ nop -/* 015C5C 8001505C 4501FFF3 */ bc1t .L8001502C -/* 015C60 80015060 00000000 */ nop -.L80015064: -/* 015C64 80015064 0085082A */ slt $at, $a0, $a1 -.L80015068: -/* 015C68 80015068 1020000C */ beqz $at, .L8001509C -/* 015C6C 8001506C 00054080 */ sll $t0, $a1, 2 -/* 015C70 80015070 8D460000 */ lw $a2, ($t2) -/* 015C74 80015074 24840001 */ addiu $a0, $a0, 1 -/* 015C78 80015078 00C86021 */ addu $t4, $a2, $t0 -/* 015C7C 8001507C 8D8D0000 */ lw $t5, ($t4) -/* 015C80 80015080 00CB3821 */ addu $a3, $a2, $t3 -/* 015C84 80015084 8CE90000 */ lw $t1, ($a3) -/* 015C88 80015088 ACED0000 */ sw $t5, ($a3) -/* 015C8C 8001508C 8D4E0000 */ lw $t6, ($t2) -/* 015C90 80015090 24A5FFFF */ addiu $a1, $a1, -1 -/* 015C94 80015094 01C87821 */ addu $t7, $t6, $t0 -/* 015C98 80015098 ADE90000 */ sw $t1, ($t7) -.L8001509C: -/* 015C9C 8001509C 00A4082A */ slt $at, $a1, $a0 -/* 015CA0 800150A0 1020FFB5 */ beqz $at, .L80014F78 -/* 015CA4 800150A4 0064082A */ slt $at, $v1, $a0 -/* 015CA8 800150A8 03E00008 */ jr $ra -/* 015CAC 800150AC 00801025 */ move $v0, $a0 - -/* 015CB0 800150B0 00A4082A */ slt $at, $a1, $a0 -/* 015CB4 800150B4 142000A2 */ bnez $at, .L80015340 -/* 015CB8 800150B8 3C0A8012 */ lui $t2, %hi(gObjPtrList) # $t2, 0x8012 -/* 015CBC 800150BC 254AAE58 */ addiu $t2, %lo(gObjPtrList) # addiu $t2, $t2, -0x51a8 -/* 015CC0 800150C0 0064082A */ slt $at, $v1, $a0 -.L800150C4: -/* 015CC4 800150C4 1420001D */ bnez $at, .L8001513C -/* 015CC8 800150C8 00A2082A */ slt $at, $a1, $v0 -/* 015CCC 800150CC 8D580000 */ lw $t8, ($t2) -/* 015CD0 800150D0 0004C880 */ sll $t9, $a0, 2 -/* 015CD4 800150D4 03193821 */ addu $a3, $t8, $t9 -/* 015CD8 800150D8 8CE60000 */ lw $a2, ($a3) -/* 015CDC 800150DC 00000000 */ nop -/* 015CE0 800150E0 C4C40034 */ lwc1 $f4, 0x34($a2) -/* 015CE4 800150E4 C4C60010 */ lwc1 $f6, 0x10($a2) -/* 015CE8 800150E8 00000000 */ nop -/* 015CEC 800150EC 46062200 */ add.s $f8, $f4, $f6 -/* 015CF0 800150F0 460C403C */ c.lt.s $f8, $f12 -/* 015CF4 800150F4 00000000 */ nop -/* 015CF8 800150F8 45000010 */ bc1f .L8001513C -/* 015CFC 800150FC 00A2082A */ slt $at, $a1, $v0 -.L80015100: -/* 015D00 80015100 24840001 */ addiu $a0, $a0, 1 -/* 015D04 80015104 0064082A */ slt $at, $v1, $a0 -/* 015D08 80015108 1420000B */ bnez $at, .L80015138 -/* 015D0C 8001510C 24E70004 */ addiu $a3, $a3, 4 -/* 015D10 80015110 8CE60000 */ lw $a2, ($a3) -/* 015D14 80015114 00000000 */ nop -/* 015D18 80015118 C4CA0034 */ lwc1 $f10, 0x34($a2) -/* 015D1C 8001511C C4D00010 */ lwc1 $f16, 0x10($a2) -/* 015D20 80015120 00000000 */ nop -/* 015D24 80015124 46105480 */ add.s $f18, $f10, $f16 -/* 015D28 80015128 460C903C */ c.lt.s $f18, $f12 -/* 015D2C 8001512C 00000000 */ nop -/* 015D30 80015130 4501FFF3 */ bc1t .L80015100 -/* 015D34 80015134 00000000 */ nop -.L80015138: -/* 015D38 80015138 00A2082A */ slt $at, $a1, $v0 -.L8001513C: -/* 015D3C 8001513C 1420001C */ bnez $at, .L800151B0 -/* 015D40 80015140 00046880 */ sll $t5, $a0, 2 -/* 015D44 80015144 8D4B0000 */ lw $t3, ($t2) -/* 015D48 80015148 00056080 */ sll $t4, $a1, 2 -/* 015D4C 8001514C 016C3021 */ addu $a2, $t3, $t4 -/* 015D50 80015150 8CC70000 */ lw $a3, ($a2) -/* 015D54 80015154 00000000 */ nop -/* 015D58 80015158 C4E40034 */ lwc1 $f4, 0x34($a3) -/* 015D5C 8001515C C4E60010 */ lwc1 $f6, 0x10($a3) -/* 015D60 80015160 00000000 */ nop -/* 015D64 80015164 46062200 */ add.s $f8, $f4, $f6 -/* 015D68 80015168 4608603E */ c.le.s $f12, $f8 -/* 015D6C 8001516C 00000000 */ nop -/* 015D70 80015170 45000010 */ bc1f .L800151B4 -/* 015D74 80015174 0085082A */ slt $at, $a0, $a1 -.L80015178: -/* 015D78 80015178 24A5FFFF */ addiu $a1, $a1, -1 -/* 015D7C 8001517C 00A2082A */ slt $at, $a1, $v0 -/* 015D80 80015180 1420000B */ bnez $at, .L800151B0 -/* 015D84 80015184 24C6FFFC */ addiu $a2, $a2, -4 -/* 015D88 80015188 8CC70000 */ lw $a3, ($a2) -/* 015D8C 8001518C 00000000 */ nop -/* 015D90 80015190 C4EA0034 */ lwc1 $f10, 0x34($a3) -/* 015D94 80015194 C4F00010 */ lwc1 $f16, 0x10($a3) -/* 015D98 80015198 00000000 */ nop -/* 015D9C 8001519C 46105480 */ add.s $f18, $f10, $f16 -/* 015DA0 800151A0 4612603E */ c.le.s $f12, $f18 -/* 015DA4 800151A4 00000000 */ nop -/* 015DA8 800151A8 4501FFF3 */ bc1t .L80015178 -/* 015DAC 800151AC 00000000 */ nop -.L800151B0: -/* 015DB0 800151B0 0085082A */ slt $at, $a0, $a1 -.L800151B4: -/* 015DB4 800151B4 1020000C */ beqz $at, .L800151E8 -/* 015DB8 800151B8 00054080 */ sll $t0, $a1, 2 -/* 015DBC 800151BC 8D460000 */ lw $a2, ($t2) -/* 015DC0 800151C0 24840001 */ addiu $a0, $a0, 1 -/* 015DC4 800151C4 00C87021 */ addu $t6, $a2, $t0 -/* 015DC8 800151C8 8DCF0000 */ lw $t7, ($t6) -/* 015DCC 800151CC 00CD3821 */ addu $a3, $a2, $t5 -/* 015DD0 800151D0 8CE90000 */ lw $t1, ($a3) -/* 015DD4 800151D4 ACEF0000 */ sw $t7, ($a3) -/* 015DD8 800151D8 8D580000 */ lw $t8, ($t2) -/* 015DDC 800151DC 24A5FFFF */ addiu $a1, $a1, -1 -/* 015DE0 800151E0 0308C821 */ addu $t9, $t8, $t0 -/* 015DE4 800151E4 AF290000 */ sw $t1, ($t9) -.L800151E8: -/* 015DE8 800151E8 00A4082A */ slt $at, $a1, $a0 -/* 015DEC 800151EC 1020FFB5 */ beqz $at, .L800150C4 -/* 015DF0 800151F0 0064082A */ slt $at, $v1, $a0 -/* 015DF4 800151F4 03E00008 */ jr $ra -/* 015DF8 800151F8 00801025 */ move $v0, $a0 - -/* 015DFC 800151FC 00A4082A */ slt $at, $a1, $a0 -/* 015E00 80015200 1420004F */ bnez $at, .L80015340 -/* 015E04 80015204 3C0A8012 */ lui $t2, %hi(gObjPtrList) # $t2, 0x8012 -/* 015E08 80015208 254AAE58 */ addiu $t2, %lo(gObjPtrList) # addiu $t2, $t2, -0x51a8 -/* 015E0C 8001520C 0064082A */ slt $at, $v1, $a0 -.L80015210: -/* 015E10 80015210 1420001D */ bnez $at, .L80015288 -/* 015E14 80015214 00A2082A */ slt $at, $a1, $v0 -/* 015E18 80015218 8D4B0000 */ lw $t3, ($t2) -/* 015E1C 8001521C 00046080 */ sll $t4, $a0, 2 -/* 015E20 80015220 016C3821 */ addu $a3, $t3, $t4 -/* 015E24 80015224 8CE60000 */ lw $a2, ($a3) -/* 015E28 80015228 00000000 */ nop -/* 015E2C 8001522C C4C40034 */ lwc1 $f4, 0x34($a2) -/* 015E30 80015230 C4C60014 */ lwc1 $f6, 0x14($a2) -/* 015E34 80015234 00000000 */ nop -/* 015E38 80015238 46062200 */ add.s $f8, $f4, $f6 -/* 015E3C 8001523C 460C403C */ c.lt.s $f8, $f12 -/* 015E40 80015240 00000000 */ nop -/* 015E44 80015244 45000010 */ bc1f .L80015288 -/* 015E48 80015248 00A2082A */ slt $at, $a1, $v0 -.L8001524C: -/* 015E4C 8001524C 24840001 */ addiu $a0, $a0, 1 -/* 015E50 80015250 0064082A */ slt $at, $v1, $a0 -/* 015E54 80015254 1420000B */ bnez $at, .L80015284 -/* 015E58 80015258 24E70004 */ addiu $a3, $a3, 4 -/* 015E5C 8001525C 8CE60000 */ lw $a2, ($a3) -/* 015E60 80015260 00000000 */ nop -/* 015E64 80015264 C4CA0034 */ lwc1 $f10, 0x34($a2) -/* 015E68 80015268 C4D00014 */ lwc1 $f16, 0x14($a2) -/* 015E6C 8001526C 00000000 */ nop -/* 015E70 80015270 46105480 */ add.s $f18, $f10, $f16 -/* 015E74 80015274 460C903C */ c.lt.s $f18, $f12 -/* 015E78 80015278 00000000 */ nop -/* 015E7C 8001527C 4501FFF3 */ bc1t .L8001524C -/* 015E80 80015280 00000000 */ nop -.L80015284: -/* 015E84 80015284 00A2082A */ slt $at, $a1, $v0 -.L80015288: -/* 015E88 80015288 1420001C */ bnez $at, .L800152FC -/* 015E8C 8001528C 00047880 */ sll $t7, $a0, 2 -/* 015E90 80015290 8D4D0000 */ lw $t5, ($t2) -/* 015E94 80015294 00057080 */ sll $t6, $a1, 2 -/* 015E98 80015298 01AE3021 */ addu $a2, $t5, $t6 -/* 015E9C 8001529C 8CC70000 */ lw $a3, ($a2) -/* 015EA0 800152A0 00000000 */ nop -/* 015EA4 800152A4 C4E40034 */ lwc1 $f4, 0x34($a3) -/* 015EA8 800152A8 C4E60014 */ lwc1 $f6, 0x14($a3) -/* 015EAC 800152AC 00000000 */ nop -/* 015EB0 800152B0 46062200 */ add.s $f8, $f4, $f6 -/* 015EB4 800152B4 4608603E */ c.le.s $f12, $f8 -/* 015EB8 800152B8 00000000 */ nop -/* 015EBC 800152BC 45000010 */ bc1f .L80015300 -/* 015EC0 800152C0 0085082A */ slt $at, $a0, $a1 -.L800152C4: -/* 015EC4 800152C4 24A5FFFF */ addiu $a1, $a1, -1 -/* 015EC8 800152C8 00A2082A */ slt $at, $a1, $v0 -/* 015ECC 800152CC 1420000B */ bnez $at, .L800152FC -/* 015ED0 800152D0 24C6FFFC */ addiu $a2, $a2, -4 -/* 015ED4 800152D4 8CC70000 */ lw $a3, ($a2) -/* 015ED8 800152D8 00000000 */ nop -/* 015EDC 800152DC C4EA0034 */ lwc1 $f10, 0x34($a3) -/* 015EE0 800152E0 C4F00014 */ lwc1 $f16, 0x14($a3) -/* 015EE4 800152E4 00000000 */ nop -/* 015EE8 800152E8 46105480 */ add.s $f18, $f10, $f16 -/* 015EEC 800152EC 4612603E */ c.le.s $f12, $f18 -/* 015EF0 800152F0 00000000 */ nop -/* 015EF4 800152F4 4501FFF3 */ bc1t .L800152C4 -/* 015EF8 800152F8 00000000 */ nop -.L800152FC: -/* 015EFC 800152FC 0085082A */ slt $at, $a0, $a1 -.L80015300: -/* 015F00 80015300 1020000C */ beqz $at, .L80015334 -/* 015F04 80015304 00054080 */ sll $t0, $a1, 2 -/* 015F08 80015308 8D460000 */ lw $a2, ($t2) -/* 015F0C 8001530C 24840001 */ addiu $a0, $a0, 1 -/* 015F10 80015310 00C8C021 */ addu $t8, $a2, $t0 -/* 015F14 80015314 8F190000 */ lw $t9, ($t8) -/* 015F18 80015318 00CF3821 */ addu $a3, $a2, $t7 -/* 015F1C 8001531C 8CE90000 */ lw $t1, ($a3) -/* 015F20 80015320 ACF90000 */ sw $t9, ($a3) -/* 015F24 80015324 8D4B0000 */ lw $t3, ($t2) -/* 015F28 80015328 24A5FFFF */ addiu $a1, $a1, -1 -/* 015F2C 8001532C 01686021 */ addu $t4, $t3, $t0 -/* 015F30 80015330 AD890000 */ sw $t1, ($t4) -.L80015334: -/* 015F34 80015334 00A4082A */ slt $at, $a1, $a0 -/* 015F38 80015338 1020FFB5 */ beqz $at, .L80015210 -/* 015F3C 8001533C 0064082A */ slt $at, $v1, $a0 -.L80015340: -/* 015F40 80015340 03E00008 */ jr $ra -/* 015F44 80015344 00801025 */ move $v0, $a0 - diff --git a/asm/non_matchings/unknown_032760/func_8003FC44.s b/asm/non_matchings/unknown_032760/func_8003FC44.s index 48cbd17f..d3e2321a 100644 --- a/asm/non_matchings/unknown_032760/func_8003FC44.s +++ b/asm/non_matchings/unknown_032760/func_8003FC44.s @@ -38,7 +38,7 @@ glabel func_8003FC44 /* 0408D4 8003FCD4 24050001 */ li $a1, 1 /* 0408D8 8003FCD8 A7AF0026 */ sh $t7, 0x26($sp) /* 0408DC 8003FCDC A3AE002C */ sb $t6, 0x2c($sp) -/* 0408E0 8003FCE0 0C003A95 */ jal func_8000EA54 +/* 0408E0 8003FCE0 0C003A95 */ jal spawn_object /* 0408E4 8003FCE4 A7AC002A */ sh $t4, 0x2a($sp) /* 0408E8 8003FCE8 10400011 */ beqz $v0, .L8003FD30 /* 0408EC 8003FCEC 3C01400C */ li $at, 0x400C0000 # 2.187500 diff --git a/asm/non_matchings/unknown_032760/obj_init_animation.s b/asm/non_matchings/unknown_032760/obj_init_animation.s deleted file mode 100644 index f5b4067c..00000000 --- a/asm/non_matchings/unknown_032760/obj_init_animation.s +++ /dev/null @@ -1,197 +0,0 @@ -glabel obj_init_animation -/* 038618 80037A18 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 03861C 80037A1C AFBF001C */ sw $ra, 0x1c($sp) -/* 038620 80037A20 AFB00018 */ sw $s0, 0x18($sp) -/* 038624 80037A24 AFA60030 */ sw $a2, 0x30($sp) -/* 038628 80037A28 90AF000B */ lbu $t7, 0xb($a1) -/* 03862C 80037A2C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 038630 80037A30 448F2000 */ mtc1 $t7, $f4 -/* 038634 80037A34 44811000 */ mtc1 $at, $f2 -/* 038638 80037A38 46802020 */ cvt.s.w $f0, $f4 -/* 03863C 80037A3C 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 038640 80037A40 44813000 */ mtc1 $at, $f6 -/* 038644 80037A44 4602003C */ c.lt.s $f0, $f2 -/* 038648 80037A48 00808025 */ move $s0, $a0 -/* 03864C 80037A4C 45000002 */ bc1f .L80037A58 -/* 038650 80037A50 00A03825 */ move $a3, $a1 -/* 038654 80037A54 46001006 */ mov.s $f0, $f2 -.L80037A58: -/* 038658 80037A58 00000000 */ nop -/* 03865C 80037A5C 46060003 */ div.s $f0, $f0, $f6 -/* 038660 80037A60 8E180040 */ lw $t8, 0x40($s0) -/* 038664 80037A64 2401FFFE */ li $at, -2 -/* 038668 80037A68 C708000C */ lwc1 $f8, 0xc($t8) -/* 03866C 80037A6C 00000000 */ nop -/* 038670 80037A70 46004282 */ mul.s $f10, $f8, $f0 -/* 038674 80037A74 E60A0008 */ swc1 $f10, 8($s0) -/* 038678 80037A78 90F9000A */ lbu $t9, 0xa($a3) -/* 03867C 80037A7C 00000000 */ nop -/* 038680 80037A80 00194200 */ sll $t0, $t9, 8 -/* 038684 80037A84 A6080000 */ sh $t0, ($s0) -/* 038688 80037A88 90E90009 */ lbu $t1, 9($a3) -/* 03868C 80037A8C 00000000 */ nop -/* 038690 80037A90 00095200 */ sll $t2, $t1, 8 -/* 038694 80037A94 A60A0002 */ sh $t2, 2($s0) -/* 038698 80037A98 90EB0008 */ lbu $t3, 8($a3) -/* 03869C 80037A9C 00000000 */ nop -/* 0386A0 80037AA0 000B6200 */ sll $t4, $t3, 8 -/* 0386A4 80037AA4 A60C0004 */ sh $t4, 4($s0) -/* 0386A8 80037AA8 80E40010 */ lb $a0, 0x10($a3) -/* 0386AC 80037AAC 00000000 */ nop -/* 0386B0 80037AB0 14810006 */ bne $a0, $at, .L80037ACC -/* 0386B4 80037AB4 00000000 */ nop -/* 0386B8 80037AB8 0C007CEE */ jal func_8001F3B8 -/* 0386BC 80037ABC AFA7002C */ sw $a3, 0x2c($sp) -/* 0386C0 80037AC0 8FA7002C */ lw $a3, 0x2c($sp) -/* 0386C4 80037AC4 1000000C */ b .L80037AF8 -/* 0386C8 80037AC8 A0E20010 */ sb $v0, 0x10($a3) -.L80037ACC: -/* 0386CC 80037ACC 04810006 */ bgez $a0, .L80037AE8 -/* 0386D0 80037AD0 2881FFFE */ slti $at, $a0, -2 -/* 0386D4 80037AD4 14200004 */ bnez $at, .L80037AE8 -/* 0386D8 80037AD8 00000000 */ nop -/* 0386DC 80037ADC A0E00010 */ sb $zero, 0x10($a3) -/* 0386E0 80037AE0 80E40010 */ lb $a0, 0x10($a3) -/* 0386E4 80037AE4 00000000 */ nop -.L80037AE8: -/* 0386E8 80037AE8 0C007CF2 */ jal func_8001F3C8 -/* 0386EC 80037AEC AFA7002C */ sw $a3, 0x2c($sp) -/* 0386F0 80037AF0 8FA7002C */ lw $a3, 0x2c($sp) -/* 0386F4 80037AF4 00000000 */ nop -.L80037AF8: -/* 0386F8 80037AF8 80E30021 */ lb $v1, 0x21($a3) -/* 0386FC 80037AFC 2401FFFF */ li $at, -1 -/* 038700 80037B00 14610009 */ bne $v1, $at, .L80037B28 -/* 038704 80037B04 24010014 */ li $at, 20 -/* 038708 80037B08 0C007910 */ jal func_8001E440 -/* 03870C 80037B0C AFA7002C */ sw $a3, 0x2c($sp) -/* 038710 80037B10 8FA7002C */ lw $a3, 0x2c($sp) -/* 038714 80037B14 00000000 */ nop -/* 038718 80037B18 A0E20021 */ sb $v0, 0x21($a3) -/* 03871C 80037B1C 80E30021 */ lb $v1, 0x21($a3) -/* 038720 80037B20 00000000 */ nop -/* 038724 80037B24 24010014 */ li $at, 20 -.L80037B28: -/* 038728 80037B28 14610005 */ bne $v1, $at, .L80037B40 -/* 03872C 80037B2C 00000000 */ nop -/* 038730 80037B30 80ED0010 */ lb $t5, 0x10($a3) -/* 038734 80037B34 00000000 */ nop -/* 038738 80037B38 35AE0080 */ ori $t6, $t5, 0x80 -/* 03873C 80037B3C A0EE0010 */ sb $t6, 0x10($a3) -.L80037B40: -/* 038740 80037B40 80E40010 */ lb $a0, 0x10($a3) -/* 038744 80037B44 0C007CFB */ jal func_8001F3EC -/* 038748 80037B48 AFA7002C */ sw $a3, 0x2c($sp) -/* 03874C 80037B4C 8FA7002C */ lw $a3, 0x2c($sp) -/* 038750 80037B50 2401FFFE */ li $at, -2 -/* 038754 80037B54 80E30011 */ lb $v1, 0x11($a3) -/* 038758 80037B58 00000000 */ nop -/* 03875C 80037B5C 14610008 */ bne $v1, $at, .L80037B80 -/* 038760 80037B60 00000000 */ nop -/* 038764 80037B64 A0E20011 */ sb $v0, 0x11($a3) -/* 038768 80037B68 80EF0011 */ lb $t7, 0x11($a3) -/* 03876C 80037B6C 00000000 */ nop -/* 038770 80037B70 05E1000D */ bgez $t7, .L80037BA8 -/* 038774 80037B74 00000000 */ nop -/* 038778 80037B78 1000000B */ b .L80037BA8 -/* 03877C 80037B7C A0E00011 */ sb $zero, 0x11($a3) -.L80037B80: -/* 038780 80037B80 04400006 */ bltz $v0, .L80037B9C -/* 038784 80037B84 0062082A */ slt $at, $v1, $v0 -/* 038788 80037B88 14200004 */ bnez $at, .L80037B9C -/* 03878C 80037B8C 00000000 */ nop -/* 038790 80037B90 A0E20011 */ sb $v0, 0x11($a3) -/* 038794 80037B94 80E30011 */ lb $v1, 0x11($a3) -/* 038798 80037B98 00000000 */ nop -.L80037B9C: -/* 03879C 80037B9C 04610002 */ bgez $v1, .L80037BA8 -/* 0387A0 80037BA0 00000000 */ nop -/* 0387A4 80037BA4 A0E00011 */ sb $zero, 0x11($a3) -.L80037BA8: -/* 0387A8 80037BA8 0C0044E4 */ jal func_80011390 -/* 0387AC 80037BAC AFA7002C */ sw $a3, 0x2c($sp) -/* 0387B0 80037BB0 8FA7002C */ lw $a3, 0x2c($sp) -/* 0387B4 80037BB4 00002025 */ move $a0, $zero -/* 0387B8 80037BB8 80F80010 */ lb $t8, 0x10($a3) -/* 0387BC 80037BBC 00000000 */ nop -/* 0387C0 80037BC0 AE18007C */ sw $t8, 0x7c($s0) -/* 0387C4 80037BC4 8FB90030 */ lw $t9, 0x30($sp) -/* 0387C8 80037BC8 00000000 */ nop -/* 0387CC 80037BCC AE190078 */ sw $t9, 0x78($s0) -/* 0387D0 80037BD0 8FA80030 */ lw $t0, 0x30($sp) -/* 0387D4 80037BD4 00000000 */ nop -/* 0387D8 80037BD8 11000008 */ beqz $t0, .L80037BFC -/* 0387DC 80037BDC 00000000 */ nop -/* 0387E0 80037BE0 0C01A955 */ jal get_buttons_pressed_from_player -/* 0387E4 80037BE4 AFA7002C */ sw $a3, 0x2c($sp) -/* 0387E8 80037BE8 8FA7002C */ lw $a3, 0x2c($sp) -/* 0387EC 80037BEC 30490001 */ andi $t1, $v0, 1 -/* 0387F0 80037BF0 11200002 */ beqz $t1, .L80037BFC -/* 0387F4 80037BF4 240A0002 */ li $t2, 2 -/* 0387F8 80037BF8 AE0A0078 */ sw $t2, 0x78($s0) -.L80037BFC: -/* 0387FC 80037BFC 0C007910 */ jal func_8001E440 -/* 038800 80037C00 AFA7002C */ sw $a3, 0x2c($sp) -/* 038804 80037C04 8FA7002C */ lw $a3, 0x2c($sp) -/* 038808 80037C08 24010014 */ li $at, 20 -/* 03880C 80037C0C 80E30021 */ lb $v1, 0x21($a3) -/* 038810 80037C10 00000000 */ nop -/* 038814 80037C14 10430003 */ beq $v0, $v1, .L80037C24 -/* 038818 80037C18 00000000 */ nop -/* 03881C 80037C1C 14610012 */ bne $v1, $at, .L80037C68 -/* 038820 80037C20 00000000 */ nop -.L80037C24: -/* 038824 80037C24 8E0B0064 */ lw $t3, 0x64($s0) -/* 038828 80037C28 00000000 */ nop -/* 03882C 80037C2C 1560000E */ bnez $t3, .L80037C68 -/* 038830 80037C30 00000000 */ nop -/* 038834 80037C34 80EC0011 */ lb $t4, 0x11($a3) -/* 038838 80037C38 00000000 */ nop -/* 03883C 80037C3C 1580000A */ bnez $t4, .L80037C68 -/* 038840 80037C40 00000000 */ nop -/* 038844 80037C44 84ED000C */ lh $t5, 0xc($a3) -/* 038848 80037C48 2401FFFF */ li $at, -1 -/* 03884C 80037C4C 11A10006 */ beq $t5, $at, .L80037C68 -/* 038850 80037C50 02002025 */ move $a0, $s0 -/* 038854 80037C54 00E02825 */ move $a1, $a3 -/* 038858 80037C58 0C007C8F */ jal func_8001F23C -/* 03885C 80037C5C AFA7002C */ sw $a3, 0x2c($sp) -/* 038860 80037C60 8FA7002C */ lw $a3, 0x2c($sp) -/* 038864 80037C64 00000000 */ nop -.L80037C68: -/* 038868 80037C68 8E020064 */ lw $v0, 0x64($s0) -/* 03886C 80037C6C 02002025 */ move $a0, $s0 -/* 038870 80037C70 10400012 */ beqz $v0, .L80037CBC -/* 038874 80037C74 00402825 */ move $a1, $v0 -/* 038878 80037C78 AFA20024 */ sw $v0, 0x24($sp) -/* 03887C 80037C7C 0C007BE9 */ jal func_8001EFA4 -/* 038880 80037C80 AFA7002C */ sw $a3, 0x2c($sp) -/* 038884 80037C84 8FA7002C */ lw $a3, 0x2c($sp) -/* 038888 80037C88 8FA50024 */ lw $a1, 0x24($sp) -/* 03888C 80037C8C 80EE0011 */ lb $t6, 0x11($a3) -/* 038890 80037C90 00000000 */ nop -/* 038894 80037C94 15C00006 */ bnez $t6, .L80037CB0 -/* 038898 80037C98 00000000 */ nop -/* 03889C 80037C9C 84EF000C */ lh $t7, 0xc($a3) -/* 0388A0 80037CA0 84B8004A */ lh $t8, 0x4a($a1) -/* 0388A4 80037CA4 00000000 */ nop -/* 0388A8 80037CA8 11F80004 */ beq $t7, $t8, .L80037CBC -/* 0388AC 80037CAC 00000000 */ nop -.L80037CB0: -/* 0388B0 80037CB0 0C003FEE */ jal gParticlePtrList_addObject -/* 0388B4 80037CB4 00A02025 */ move $a0, $a1 -/* 0388B8 80037CB8 AE000064 */ sw $zero, 0x64($s0) -.L80037CBC: -/* 0388BC 80037CBC 8E04007C */ lw $a0, 0x7c($s0) -/* 0388C0 80037CC0 0C008580 */ jal func_80021600 -/* 0388C4 80037CC4 00000000 */ nop -/* 0388C8 80037CC8 10400004 */ beqz $v0, .L80037CDC -/* 0388CC 80037CCC 8FBF001C */ lw $ra, 0x1c($sp) -/* 0388D0 80037CD0 0C007B9D */ jal func_8001EE74 -/* 0388D4 80037CD4 00000000 */ nop -/* 0388D8 80037CD8 8FBF001C */ lw $ra, 0x1c($sp) -.L80037CDC: -/* 0388DC 80037CDC 8FB00018 */ lw $s0, 0x18($sp) -/* 0388E0 80037CE0 03E00008 */ jr $ra -/* 0388E4 80037CE4 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_032760/obj_init_audio.s b/asm/non_matchings/unknown_032760/obj_init_audio.s deleted file mode 100644 index dfcb8d2b..00000000 --- a/asm/non_matchings/unknown_032760/obj_init_audio.s +++ /dev/null @@ -1,103 +0,0 @@ -glabel obj_init_audio -/* 040968 8003FD68 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 04096C 8003FD6C AFBF003C */ sw $ra, 0x3c($sp) -/* 040970 8003FD70 AFB00038 */ sw $s0, 0x38($sp) -/* 040974 8003FD74 AFA40048 */ sw $a0, 0x48($sp) -/* 040978 8003FD78 8C830064 */ lw $v1, 0x64($a0) -/* 04097C 8003FD7C 94AF0008 */ lhu $t7, 8($a1) -/* 040980 8003FD80 00A08025 */ move $s0, $a1 -/* 040984 8003FD84 A46F0000 */ sh $t7, ($v1) -/* 040988 8003FD88 94B8000A */ lhu $t8, 0xa($a1) -/* 04098C 8003FD8C 31E4FFFF */ andi $a0, $t7, 0xffff -/* 040990 8003FD90 A4780002 */ sh $t8, 2($v1) -/* 040994 8003FD94 90B9000F */ lbu $t9, 0xf($a1) -/* 040998 8003FD98 00000000 */ nop -/* 04099C 8003FD9C A079000C */ sb $t9, 0xc($v1) -/* 0409A0 8003FDA0 90A8000E */ lbu $t0, 0xe($a1) -/* 0409A4 8003FDA4 00000000 */ nop -/* 0409A8 8003FDA8 A0680006 */ sb $t0, 6($v1) -/* 0409AC 8003FDAC 90A9000C */ lbu $t1, 0xc($a1) -/* 0409B0 8003FDB0 00000000 */ nop -/* 0409B4 8003FDB4 A0690004 */ sb $t1, 4($v1) -/* 0409B8 8003FDB8 90AA000D */ lbu $t2, 0xd($a1) -/* 0409BC 8003FDBC 00000000 */ nop -/* 0409C0 8003FDC0 A06A0005 */ sb $t2, 5($v1) -/* 0409C4 8003FDC4 90AB0010 */ lbu $t3, 0x10($a1) -/* 0409C8 8003FDC8 AC600008 */ sw $zero, 8($v1) -/* 0409CC 8003FDCC A06B000D */ sb $t3, 0xd($v1) -/* 0409D0 8003FDD0 0C00086C */ jal ALBankFile_80115D14_GetSoundDecayTime -/* 0409D4 8003FDD4 AFA30044 */ sw $v1, 0x44($sp) -/* 0409D8 8003FDD8 8FA30044 */ lw $v1, 0x44($sp) -/* 0409DC 8003FDDC 10400021 */ beqz $v0, .L8003FE64 -/* 0409E0 8003FDE0 2418000A */ li $t8, 10 -/* 0409E4 8003FDE4 860C0002 */ lh $t4, 2($s0) -/* 0409E8 8003FDE8 860D0004 */ lh $t5, 4($s0) -/* 0409EC 8003FDEC 860E0006 */ lh $t6, 6($s0) -/* 0409F0 8003FDF0 94640000 */ lhu $a0, ($v1) -/* 0409F4 8003FDF4 240F0009 */ li $t7, 9 -/* 0409F8 8003FDF8 AFAF0010 */ sw $t7, 0x10($sp) -/* 0409FC 8003FDFC 90780005 */ lbu $t8, 5($v1) -/* 040A00 8003FE00 448C2000 */ mtc1 $t4, $f4 -/* 040A04 8003FE04 AFB80014 */ sw $t8, 0x14($sp) -/* 040A08 8003FE08 90790004 */ lbu $t9, 4($v1) -/* 040A0C 8003FE0C 448D3000 */ mtc1 $t5, $f6 -/* 040A10 8003FE10 AFB90018 */ sw $t9, 0x18($sp) -/* 040A14 8003FE14 94680002 */ lhu $t0, 2($v1) -/* 040A18 8003FE18 448E4000 */ mtc1 $t6, $f8 -/* 040A1C 8003FE1C AFA8001C */ sw $t0, 0x1c($sp) -/* 040A20 8003FE20 9069000C */ lbu $t1, 0xc($v1) -/* 040A24 8003FE24 46802120 */ cvt.s.w $f4, $f4 -/* 040A28 8003FE28 AFA90020 */ sw $t1, 0x20($sp) -/* 040A2C 8003FE2C 906A0006 */ lbu $t2, 6($v1) -/* 040A30 8003FE30 468031A0 */ cvt.s.w $f6, $f6 -/* 040A34 8003FE34 AFAA0024 */ sw $t2, 0x24($sp) -/* 040A38 8003FE38 906B000D */ lbu $t3, 0xd($v1) -/* 040A3C 8003FE3C 46804220 */ cvt.s.w $f8, $f8 -/* 040A40 8003FE40 44063000 */ mfc1 $a2, $f6 -/* 040A44 8003FE44 44052000 */ mfc1 $a1, $f4 -/* 040A48 8003FE48 44074000 */ mfc1 $a3, $f8 -/* 040A4C 8003FE4C 246C0008 */ addiu $t4, $v1, 8 -/* 040A50 8003FE50 AFAC002C */ sw $t4, 0x2c($sp) -/* 040A54 8003FE54 0C0025D3 */ jal func_8000974C -/* 040A58 8003FE58 AFAB0028 */ sw $t3, 0x28($sp) -/* 040A5C 8003FE5C 1000001F */ b .L8003FEDC -/* 040A60 8003FE60 8FA40048 */ lw $a0, 0x48($sp) -.L8003FE64: -/* 040A64 8003FE64 860D0002 */ lh $t5, 2($s0) -/* 040A68 8003FE68 860E0004 */ lh $t6, 4($s0) -/* 040A6C 8003FE6C 860F0006 */ lh $t7, 6($s0) -/* 040A70 8003FE70 94640000 */ lhu $a0, ($v1) -/* 040A74 8003FE74 AFB80010 */ sw $t8, 0x10($sp) -/* 040A78 8003FE78 90790005 */ lbu $t9, 5($v1) -/* 040A7C 8003FE7C 448D5000 */ mtc1 $t5, $f10 -/* 040A80 8003FE80 AFB90014 */ sw $t9, 0x14($sp) -/* 040A84 8003FE84 90680004 */ lbu $t0, 4($v1) -/* 040A88 8003FE88 448E8000 */ mtc1 $t6, $f16 -/* 040A8C 8003FE8C AFA80018 */ sw $t0, 0x18($sp) -/* 040A90 8003FE90 94690002 */ lhu $t1, 2($v1) -/* 040A94 8003FE94 448F9000 */ mtc1 $t7, $f18 -/* 040A98 8003FE98 AFA9001C */ sw $t1, 0x1c($sp) -/* 040A9C 8003FE9C 906A000C */ lbu $t2, 0xc($v1) -/* 040AA0 8003FEA0 468052A0 */ cvt.s.w $f10, $f10 -/* 040AA4 8003FEA4 AFAA0020 */ sw $t2, 0x20($sp) -/* 040AA8 8003FEA8 906B0006 */ lbu $t3, 6($v1) -/* 040AAC 8003FEAC 46808420 */ cvt.s.w $f16, $f16 -/* 040AB0 8003FEB0 AFAB0024 */ sw $t3, 0x24($sp) -/* 040AB4 8003FEB4 906C000D */ lbu $t4, 0xd($v1) -/* 040AB8 8003FEB8 468094A0 */ cvt.s.w $f18, $f18 -/* 040ABC 8003FEBC 44068000 */ mfc1 $a2, $f16 -/* 040AC0 8003FEC0 44055000 */ mfc1 $a1, $f10 -/* 040AC4 8003FEC4 44079000 */ mfc1 $a3, $f18 -/* 040AC8 8003FEC8 246D0008 */ addiu $t5, $v1, 8 -/* 040ACC 8003FECC AFAD002C */ sw $t5, 0x2c($sp) -/* 040AD0 8003FED0 0C0025D3 */ jal func_8000974C -/* 040AD4 8003FED4 AFAC0028 */ sw $t4, 0x28($sp) -/* 040AD8 8003FED8 8FA40048 */ lw $a0, 0x48($sp) -.L8003FEDC: -/* 040ADC 8003FEDC 0C003FEE */ jal gParticlePtrList_addObject -/* 040AE0 8003FEE0 00000000 */ nop -/* 040AE4 8003FEE4 8FBF003C */ lw $ra, 0x3c($sp) -/* 040AE8 8003FEE8 8FB00038 */ lw $s0, 0x38($sp) -/* 040AEC 8003FEEC 03E00008 */ jr $ra -/* 040AF0 8003FEF0 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/asm/non_matchings/unknown_032760/obj_init_bombexplosion.s b/asm/non_matchings/unknown_032760/obj_init_bombexplosion.s deleted file mode 100644 index 8baeaa00..00000000 --- a/asm/non_matchings/unknown_032760/obj_init_bombexplosion.s +++ /dev/null @@ -1,35 +0,0 @@ -glabel obj_init_bombexplosion -/* 039774 80038B74 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 039778 80038B78 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 03977C 80038B7C 44812000 */ mtc1 $at, $f4 -/* 039780 80038B80 AFBF0014 */ sw $ra, 0x14($sp) -/* 039784 80038B84 AFA5001C */ sw $a1, 0x1c($sp) -/* 039788 80038B88 00803025 */ move $a2, $a0 -/* 03978C 80038B8C A4800018 */ sh $zero, 0x18($a0) -/* 039790 80038B90 E4840008 */ swc1 $f4, 8($a0) -/* 039794 80038B94 8CCE0040 */ lw $t6, 0x40($a2) -/* 039798 80038B98 00002025 */ move $a0, $zero -/* 03979C 80038B9C 81C50055 */ lb $a1, 0x55($t6) -/* 0397A0 80038BA0 AFA60018 */ sw $a2, 0x18($sp) -/* 0397A4 80038BA4 0C01BE53 */ jal get_random_number_from_range -/* 0397A8 80038BA8 24A5FFFF */ addiu $a1, $a1, -1 -/* 0397AC 80038BAC 8FA4001C */ lw $a0, 0x1c($sp) -/* 0397B0 80038BB0 8FA60018 */ lw $a2, 0x18($sp) -/* 0397B4 80038BB4 240F00FF */ li $t7, 255 -/* 0397B8 80038BB8 A0C2003A */ sb $v0, 0x3a($a2) -/* 0397BC 80038BBC ACC00078 */ sw $zero, 0x78($a2) -/* 0397C0 80038BC0 ACCF007C */ sw $t7, 0x7c($a2) -/* 0397C4 80038BC4 80830008 */ lb $v1, 8($a0) -/* 0397C8 80038BC8 240A0001 */ li $t2, 1 -/* 0397CC 80038BCC 10600004 */ beqz $v1, .L80038BE0 -/* 0397D0 80038BD0 0003CA00 */ sll $t9, $v1, 8 -/* 0397D4 80038BD4 3328FF00 */ andi $t0, $t9, 0xff00 -/* 0397D8 80038BD8 01E84825 */ or $t1, $t7, $t0 -/* 0397DC 80038BDC ACC9007C */ sw $t1, 0x7c($a2) -.L80038BE0: -/* 0397E0 80038BE0 ACCA0074 */ sw $t2, 0x74($a2) -/* 0397E4 80038BE4 8FBF0014 */ lw $ra, 0x14($sp) -/* 0397E8 80038BE8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0397EC 80038BEC 03E00008 */ jr $ra -/* 0397F0 80038BF0 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/obj_init_door.s b/asm/non_matchings/unknown_032760/obj_init_door.s deleted file mode 100644 index 2e9c57a0..00000000 --- a/asm/non_matchings/unknown_032760/obj_init_door.s +++ /dev/null @@ -1,123 +0,0 @@ -.rdata -glabel D_800E5FB4 -.asciz "Illegal door no!!!\n" - -.text -glabel obj_init_door -/* 03C3CC 8003B7CC 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 03C3D0 8003B7D0 AFBF001C */ sw $ra, 0x1c($sp) -/* 03C3D4 8003B7D4 AFB00018 */ sw $s0, 0x18($sp) -/* 03C3D8 8003B7D8 80A7000C */ lb $a3, 0xc($a1) -/* 03C3DC 8003B7DC 8C830064 */ lw $v1, 0x64($a0) -/* 03C3E0 8003B7E0 2401FFFF */ li $at, -1 -/* 03C3E4 8003B7E4 00808025 */ move $s0, $a0 -/* 03C3E8 8003B7E8 14E10008 */ bne $a3, $at, .L8003B80C -/* 03C3EC 8003B7EC 00A03025 */ move $a2, $a1 -/* 03C3F0 8003B7F0 AFA30024 */ sw $v1, 0x24($sp) -/* 03C3F4 8003B7F4 0C003308 */ jal func_8000CC20 -/* 03C3F8 8003B7F8 AFA5002C */ sw $a1, 0x2c($sp) -/* 03C3FC 8003B7FC 8FA6002C */ lw $a2, 0x2c($sp) -/* 03C400 8003B800 8FA30024 */ lw $v1, 0x24($sp) -/* 03C404 8003B804 10000009 */ b .L8003B82C -/* 03C408 8003B808 A0C2000C */ sb $v0, 0xc($a2) -.L8003B80C: -/* 03C40C 8003B80C 02002025 */ move $a0, $s0 -/* 03C410 8003B810 00E02825 */ move $a1, $a3 -/* 03C414 8003B814 AFA30024 */ sw $v1, 0x24($sp) -/* 03C418 8003B818 0C0032FC */ jal func_8000CBF0 -/* 03C41C 8003B81C AFA6002C */ sw $a2, 0x2c($sp) -/* 03C420 8003B820 8FA30024 */ lw $v1, 0x24($sp) -/* 03C424 8003B824 8FA6002C */ lw $a2, 0x2c($sp) -/* 03C428 8003B828 00000000 */ nop -.L8003B82C: -/* 03C42C 8003B82C 80CE000C */ lb $t6, 0xc($a2) -/* 03C430 8003B830 2401FFFF */ li $at, -1 -/* 03C434 8003B834 A06E000E */ sb $t6, 0xe($v1) -/* 03C438 8003B838 90CF000E */ lbu $t7, 0xe($a2) -/* 03C43C 8003B83C 8069000E */ lb $t1, 0xe($v1) -/* 03C440 8003B840 A06F000F */ sb $t7, 0xf($v1) -/* 03C444 8003B844 90D8000D */ lbu $t8, 0xd($a2) -/* 03C448 8003B848 3C04800E */ lui $a0, %hi(D_800E5FB4) # $a0, 0x800e -/* 03C44C 8003B84C A0780011 */ sb $t8, 0x11($v1) -/* 03C450 8003B850 90D9000D */ lbu $t9, 0xd($a2) -/* 03C454 8003B854 24845FB4 */ addiu $a0, %lo(D_800E5FB4) # addiu $a0, $a0, 0x5fb4 -/* 03C458 8003B858 A0790010 */ sb $t9, 0x10($v1) -/* 03C45C 8003B85C 90C8000B */ lbu $t0, 0xb($a2) -/* 03C460 8003B860 15210007 */ bne $t1, $at, .L8003B880 -/* 03C464 8003B864 A0680012 */ sb $t0, 0x12($v1) -/* 03C468 8003B868 AFA30024 */ sw $v1, 0x24($sp) -/* 03C46C 8003B86C 0C032755 */ jal rmonPrintf -/* 03C470 8003B870 AFA6002C */ sw $a2, 0x2c($sp) -/* 03C474 8003B874 8FA30024 */ lw $v1, 0x24($sp) -/* 03C478 8003B878 8FA6002C */ lw $a2, 0x2c($sp) -/* 03C47C 8003B87C 00000000 */ nop -.L8003B880: -/* 03C480 8003B880 90CA000A */ lbu $t2, 0xa($a2) -/* 03C484 8003B884 C6040010 */ lwc1 $f4, 0x10($s0) -/* 03C488 8003B888 A20A003A */ sb $t2, 0x3a($s0) -/* 03C48C 8003B88C 90CC0008 */ lbu $t4, 8($a2) -/* 03C490 8003B890 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 03C494 8003B894 000C6A80 */ sll $t5, $t4, 0xa -/* 03C498 8003B898 A60D0000 */ sh $t5, ($s0) -/* 03C49C 8003B89C AC600008 */ sw $zero, 8($v1) -/* 03C4A0 8003B8A0 E4640000 */ swc1 $f4, ($v1) -/* 03C4A4 8003B8A4 860E0000 */ lh $t6, ($s0) -/* 03C4A8 8003B8A8 44811000 */ mtc1 $at, $f2 -/* 03C4AC 8003B8AC AE0E0078 */ sw $t6, 0x78($s0) -/* 03C4B0 8003B8B0 90CF0009 */ lbu $t7, 9($a2) -/* 03C4B4 8003B8B4 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 03C4B8 8003B8B8 31F8003F */ andi $t8, $t7, 0x3f -/* 03C4BC 8003B8BC 0018CA80 */ sll $t9, $t8, 0xa -/* 03C4C0 8003B8C0 AE19007C */ sw $t9, 0x7c($s0) -/* 03C4C4 8003B8C4 90C90012 */ lbu $t1, 0x12($a2) -/* 03C4C8 8003B8C8 44814000 */ mtc1 $at, $f8 -/* 03C4CC 8003B8CC 44893000 */ mtc1 $t1, $f6 -/* 03C4D0 8003B8D0 00000000 */ nop -/* 03C4D4 8003B8D4 46803020 */ cvt.s.w $f0, $f6 -/* 03C4D8 8003B8D8 4602003C */ c.lt.s $f0, $f2 -/* 03C4DC 8003B8DC 00000000 */ nop -/* 03C4E0 8003B8E0 45000003 */ bc1f .L8003B8F0 -/* 03C4E4 8003B8E4 00000000 */ nop -/* 03C4E8 8003B8E8 46001006 */ mov.s $f0, $f2 -/* 03C4EC 8003B8EC 00000000 */ nop -.L8003B8F0: -/* 03C4F0 8003B8F0 46080003 */ div.s $f0, $f0, $f8 -/* 03C4F4 8003B8F4 8E0A0040 */ lw $t2, 0x40($s0) -/* 03C4F8 8003B8F8 240D0021 */ li $t5, 33 -/* 03C4FC 8003B8FC C54A000C */ lwc1 $f10, 0xc($t2) -/* 03C500 8003B900 240F0002 */ li $t7, 2 -/* 03C504 8003B904 24190014 */ li $t9, 20 -/* 03C508 8003B908 46005402 */ mul.s $f16, $f10, $f0 -/* 03C50C 8003B90C E6100008 */ swc1 $f16, 8($s0) -/* 03C510 8003B910 90CB000F */ lbu $t3, 0xf($a2) -/* 03C514 8003B914 00000000 */ nop -/* 03C518 8003B918 A06B0013 */ sb $t3, 0x13($v1) -/* 03C51C 8003B91C 80CC0011 */ lb $t4, 0x11($a2) -/* 03C520 8003B920 00000000 */ nop -/* 03C524 8003B924 A06C0014 */ sb $t4, 0x14($v1) -/* 03C528 8003B928 8E0E004C */ lw $t6, 0x4c($s0) -/* 03C52C 8003B92C 00000000 */ nop -/* 03C530 8003B930 A5CD0014 */ sh $t5, 0x14($t6) -/* 03C534 8003B934 8E18004C */ lw $t8, 0x4c($s0) -/* 03C538 8003B938 00000000 */ nop -/* 03C53C 8003B93C A30F0011 */ sb $t7, 0x11($t8) -/* 03C540 8003B940 8E08004C */ lw $t0, 0x4c($s0) -/* 03C544 8003B944 00000000 */ nop -/* 03C548 8003B948 A1190010 */ sb $t9, 0x10($t0) -/* 03C54C 8003B94C 8E09004C */ lw $t1, 0x4c($s0) -/* 03C550 8003B950 00000000 */ nop -/* 03C554 8003B954 A1200012 */ sb $zero, 0x12($t1) -/* 03C558 8003B958 8E0B0040 */ lw $t3, 0x40($s0) -/* 03C55C 8003B95C 820A003A */ lb $t2, 0x3a($s0) -/* 03C560 8003B960 816C0055 */ lb $t4, 0x55($t3) -/* 03C564 8003B964 00000000 */ nop -/* 03C568 8003B968 014C082A */ slt $at, $t2, $t4 -/* 03C56C 8003B96C 14200003 */ bnez $at, .L8003B97C -/* 03C570 8003B970 8FBF001C */ lw $ra, 0x1c($sp) -/* 03C574 8003B974 A200003A */ sb $zero, 0x3a($s0) -/* 03C578 8003B978 8FBF001C */ lw $ra, 0x1c($sp) -.L8003B97C: -/* 03C57C 8003B97C 8FB00018 */ lw $s0, 0x18($sp) -/* 03C580 8003B980 03E00008 */ jr $ra -/* 03C584 8003B984 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_032760/obj_init_goldenballoon.s b/asm/non_matchings/unknown_032760/obj_init_goldenballoon.s deleted file mode 100644 index 33d6d4db..00000000 --- a/asm/non_matchings/unknown_032760/obj_init_goldenballoon.s +++ /dev/null @@ -1,99 +0,0 @@ -.rdata -glabel D_800E5FA0 -.asciz "Illegal door no!!!\n" - -.text -glabel obj_init_goldenballoon -/* 03BF68 8003B368 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 03BF6C 8003B36C AFBF001C */ sw $ra, 0x1c($sp) -/* 03BF70 8003B370 AFB00018 */ sw $s0, 0x18($sp) -/* 03BF74 8003B374 80A70008 */ lb $a3, 8($a1) -/* 03BF78 8003B378 2401FFFF */ li $at, -1 -/* 03BF7C 8003B37C 00808025 */ move $s0, $a0 -/* 03BF80 8003B380 14E10006 */ bne $a3, $at, .L8003B39C -/* 03BF84 8003B384 00A03025 */ move $a2, $a1 -/* 03BF88 8003B388 0C003308 */ jal func_8000CC20 -/* 03BF8C 8003B38C AFA50024 */ sw $a1, 0x24($sp) -/* 03BF90 8003B390 8FA60024 */ lw $a2, 0x24($sp) -/* 03BF94 8003B394 10000007 */ b .L8003B3B4 -/* 03BF98 8003B398 A0C20008 */ sb $v0, 8($a2) -.L8003B39C: -/* 03BF9C 8003B39C 02002025 */ move $a0, $s0 -/* 03BFA0 8003B3A0 00E02825 */ move $a1, $a3 -/* 03BFA4 8003B3A4 0C0032FC */ jal func_8000CBF0 -/* 03BFA8 8003B3A8 AFA60024 */ sw $a2, 0x24($sp) -/* 03BFAC 8003B3AC 8FA60024 */ lw $a2, 0x24($sp) -/* 03BFB0 8003B3B0 00000000 */ nop -.L8003B3B4: -/* 03BFB4 8003B3B4 80CE0008 */ lb $t6, 8($a2) -/* 03BFB8 8003B3B8 2401FFFF */ li $at, -1 -/* 03BFBC 8003B3BC 15C10006 */ bne $t6, $at, .L8003B3D8 -/* 03BFC0 8003B3C0 3C04800E */ lui $a0, %hi(D_800E5FA0) # $a0, 0x800e -/* 03BFC4 8003B3C4 24845FA0 */ addiu $a0, %lo(D_800E5FA0) # addiu $a0, $a0, 0x5fa0 -/* 03BFC8 8003B3C8 0C032755 */ jal rmonPrintf -/* 03BFCC 8003B3CC AFA60024 */ sw $a2, 0x24($sp) -/* 03BFD0 8003B3D0 8FA60024 */ lw $a2, 0x24($sp) -/* 03BFD4 8003B3D4 00000000 */ nop -.L8003B3D8: -/* 03BFD8 8003B3D8 8E18004C */ lw $t8, 0x4c($s0) -/* 03BFDC 8003B3DC 240F0002 */ li $t7, 2 -/* 03BFE0 8003B3E0 A70F0014 */ sh $t7, 0x14($t8) -/* 03BFE4 8003B3E4 8E08004C */ lw $t0, 0x4c($s0) -/* 03BFE8 8003B3E8 24190004 */ li $t9, 4 -/* 03BFEC 8003B3EC A1190011 */ sb $t9, 0x11($t0) -/* 03BFF0 8003B3F0 8E0A004C */ lw $t2, 0x4c($s0) -/* 03BFF4 8003B3F4 24090014 */ li $t1, 20 -/* 03BFF8 8003B3F8 A1490010 */ sb $t1, 0x10($t2) -/* 03BFFC 8003B3FC 8E0B004C */ lw $t3, 0x4c($s0) -/* 03C000 8003B400 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 03C004 8003B404 A1600012 */ sb $zero, 0x12($t3) -/* 03C008 8003B408 90CD0009 */ lbu $t5, 9($a2) -/* 03C00C 8003B40C 44811000 */ mtc1 $at, $f2 -/* 03C010 8003B410 448D2000 */ mtc1 $t5, $f4 -/* 03C014 8003B414 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 03C018 8003B418 46802020 */ cvt.s.w $f0, $f4 -/* 03C01C 8003B41C 44813000 */ mtc1 $at, $f6 -/* 03C020 8003B420 4602003C */ c.lt.s $f0, $f2 -/* 03C024 8003B424 00000000 */ nop -/* 03C028 8003B428 45000003 */ bc1f .L8003B438 -/* 03C02C 8003B42C 00000000 */ nop -/* 03C030 8003B430 46001006 */ mov.s $f0, $f2 -/* 03C034 8003B434 00000000 */ nop -.L8003B438: -/* 03C038 8003B438 46060003 */ div.s $f0, $f0, $f6 -/* 03C03C 8003B43C 8E0E0040 */ lw $t6, 0x40($s0) -/* 03C040 8003B440 8E020064 */ lw $v0, 0x64($s0) -/* 03C044 8003B444 C5C8000C */ lwc1 $f8, 0xc($t6) -/* 03C048 8003B448 44808000 */ mtc1 $zero, $f16 -/* 03C04C 8003B44C 240F00FF */ li $t7, 255 -/* 03C050 8003B450 46004282 */ mul.s $f10, $f8, $f0 -/* 03C054 8003B454 E60A0008 */ swc1 $f10, 8($s0) -/* 03C058 8003B458 A04F000D */ sb $t7, 0xd($v0) -/* 03C05C 8003B45C E4500000 */ swc1 $f16, ($v0) -/* 03C060 8003B460 AE000078 */ sw $zero, 0x78($s0) -/* 03C064 8003B464 80D8000A */ lb $t8, 0xa($a2) -/* 03C068 8003B468 00000000 */ nop -/* 03C06C 8003B46C 13000010 */ beqz $t8, .L8003B4B0 -/* 03C070 8003B470 8FBF001C */ lw $ra, 0x1c($sp) -/* 03C074 8003B474 0C01BAA4 */ jal get_settings -/* 03C078 8003B478 AFA60024 */ sw $a2, 0x24($sp) -/* 03C07C 8003B47C 8FA60024 */ lw $a2, 0x24($sp) -/* 03C080 8003B480 94590014 */ lhu $t9, 0x14($v0) -/* 03C084 8003B484 80C8000A */ lb $t0, 0xa($a2) -/* 03C088 8003B488 240A0001 */ li $t2, 1 -/* 03C08C 8003B48C 25090002 */ addiu $t1, $t0, 2 -/* 03C090 8003B490 012A5804 */ sllv $t3, $t2, $t1 -/* 03C094 8003B494 032B6024 */ and $t4, $t9, $t3 -/* 03C098 8003B498 11800003 */ beqz $t4, .L8003B4A8 -/* 03C09C 8003B49C 240D0001 */ li $t5, 1 -/* 03C0A0 8003B4A0 10000002 */ b .L8003B4AC -/* 03C0A4 8003B4A4 AE000078 */ sw $zero, 0x78($s0) -.L8003B4A8: -/* 03C0A8 8003B4A8 AE0D0078 */ sw $t5, 0x78($s0) -.L8003B4AC: -/* 03C0AC 8003B4AC 8FBF001C */ lw $ra, 0x1c($sp) -.L8003B4B0: -/* 03C0B0 8003B4B0 8FB00018 */ lw $s0, 0x18($sp) -/* 03C0B4 8003B4B4 03E00008 */ jr $ra -/* 03C0B8 8003B4B8 27BD0020 */ addiu $sp, $sp, 0x20 - diff --git a/asm/non_matchings/unknown_032760/obj_init_groundzipper.s b/asm/non_matchings/unknown_032760/obj_init_groundzipper.s deleted file mode 100644 index 87b5d5bd..00000000 --- a/asm/non_matchings/unknown_032760/obj_init_groundzipper.s +++ /dev/null @@ -1,97 +0,0 @@ -glabel obj_init_groundzipper -/* 0366E8 80035AE8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0366EC 80035AEC AFBF0014 */ sw $ra, 0x14($sp) -/* 0366F0 80035AF0 90AF0009 */ lbu $t7, 9($a1) -/* 0366F4 80035AF4 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 0366F8 80035AF8 448F2000 */ mtc1 $t7, $f4 -/* 0366FC 80035AFC 44811000 */ mtc1 $at, $f2 -/* 036700 80035B00 46802020 */ cvt.s.w $f0, $f4 -/* 036704 80035B04 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 036708 80035B08 44813000 */ mtc1 $at, $f6 -/* 03670C 80035B0C 4602003C */ c.lt.s $f0, $f2 -/* 036710 80035B10 240F00FF */ li $t7, 255 -/* 036714 80035B14 45000003 */ bc1f .L80035B24 -/* 036718 80035B18 00000000 */ nop -/* 03671C 80035B1C 46001006 */ mov.s $f0, $f2 -/* 036720 80035B20 00000000 */ nop -.L80035B24: -/* 036724 80035B24 46060003 */ div.s $f0, $f0, $f6 -/* 036728 80035B28 8C820040 */ lw $v0, 0x40($a0) -/* 03672C 80035B2C 8C980050 */ lw $t8, 0x50($a0) -/* 036730 80035B30 C448000C */ lwc1 $f8, 0xc($v0) -/* 036734 80035B34 00000000 */ nop -/* 036738 80035B38 46004282 */ mul.s $f10, $f8, $f0 -/* 03673C 80035B3C E48A0008 */ swc1 $f10, 8($a0) -/* 036740 80035B40 C4500004 */ lwc1 $f16, 4($v0) -/* 036744 80035B44 00000000 */ nop -/* 036748 80035B48 46008482 */ mul.s $f18, $f16, $f0 -/* 03674C 80035B4C E7120000 */ swc1 $f18, ($t8) -/* 036750 80035B50 90A8000A */ lbu $t0, 0xa($a1) -/* 036754 80035B54 8C8B0040 */ lw $t3, 0x40($a0) -/* 036758 80035B58 00084A80 */ sll $t1, $t0, 0xa -/* 03675C 80035B5C A4890000 */ sh $t1, ($a0) -/* 036760 80035B60 808A003A */ lb $t2, 0x3a($a0) -/* 036764 80035B64 816C0055 */ lb $t4, 0x55($t3) -/* 036768 80035B68 00000000 */ nop -/* 03676C 80035B6C 014C082A */ slt $at, $t2, $t4 -/* 036770 80035B70 14200003 */ bnez $at, .L80035B80 -/* 036774 80035B74 3C0141E0 */ lui $at, 0x41e0 -/* 036778 80035B78 A080003A */ sb $zero, 0x3a($a0) -/* 03677C 80035B7C 3C0141E0 */ li $at, 0x41E00000 # 28.000000 -.L80035B80: -/* 036780 80035B80 44812000 */ mtc1 $at, $f4 -/* 036784 80035B84 00000000 */ nop -/* 036788 80035B88 46002182 */ mul.s $f6, $f4, $f0 -/* 03678C 80035B8C 444DF800 */ cfc1 $t5, $31 -/* 036790 80035B90 00000000 */ nop -/* 036794 80035B94 35A10003 */ ori $at, $t5, 3 -/* 036798 80035B98 38210002 */ xori $at, $at, 2 -/* 03679C 80035B9C 44C1F800 */ ctc1 $at, $31 -/* 0367A0 80035BA0 00000000 */ nop -/* 0367A4 80035BA4 46003224 */ cvt.w.s $f8, $f6 -/* 0367A8 80035BA8 44024000 */ mfc1 $v0, $f8 -/* 0367AC 80035BAC 44CDF800 */ ctc1 $t5, $31 -/* 0367B0 80035BB0 2442000F */ addiu $v0, $v0, 0xf -/* 0367B4 80035BB4 04410002 */ bgez $v0, .L80035BC0 -/* 0367B8 80035BB8 AC820078 */ sw $v0, 0x78($a0) -/* 0367BC 80035BBC AC800078 */ sw $zero, 0x78($a0) -.L80035BC0: -/* 0367C0 80035BC0 8C8E0078 */ lw $t6, 0x78($a0) -/* 0367C4 80035BC4 00000000 */ nop -/* 0367C8 80035BC8 29C10100 */ slti $at, $t6, 0x100 -/* 0367CC 80035BCC 14200002 */ bnez $at, .L80035BD8 -/* 0367D0 80035BD0 00000000 */ nop -/* 0367D4 80035BD4 AC8F0078 */ sw $t7, 0x78($a0) -.L80035BD8: -/* 0367D8 80035BD8 8C99004C */ lw $t9, 0x4c($a0) -/* 0367DC 80035BDC 24180002 */ li $t8, 2 -/* 0367E0 80035BE0 A7380014 */ sh $t8, 0x14($t9) -/* 0367E4 80035BE4 8C88004C */ lw $t0, 0x4c($a0) -/* 0367E8 80035BE8 24090014 */ li $t1, 20 -/* 0367EC 80035BEC A1000011 */ sb $zero, 0x11($t0) -/* 0367F0 80035BF0 8C8B004C */ lw $t3, 0x4c($a0) -/* 0367F4 80035BF4 240CFF9C */ li $t4, -100 -/* 0367F8 80035BF8 A1690010 */ sb $t1, 0x10($t3) -/* 0367FC 80035BFC 8C8A004C */ lw $t2, 0x4c($a0) -/* 036800 80035C00 240E0064 */ li $t6, 100 -/* 036804 80035C04 A1400012 */ sb $zero, 0x12($t2) -/* 036808 80035C08 8C8D004C */ lw $t5, 0x4c($a0) -/* 03680C 80035C0C 00000000 */ nop -/* 036810 80035C10 A1AC0016 */ sb $t4, 0x16($t5) -/* 036814 80035C14 8C8F004C */ lw $t7, 0x4c($a0) -/* 036818 80035C18 00000000 */ nop -/* 03681C 80035C1C A1EE0017 */ sb $t6, 0x17($t7) -/* 036820 80035C20 0C0270C3 */ jal get_filtered_cheats -/* 036824 80035C24 AFA40018 */ sw $a0, 0x18($sp) -/* 036828 80035C28 8FA40018 */ lw $a0, 0x18($sp) -/* 03682C 80035C2C 0002C280 */ sll $t8, $v0, 0xa -/* 036830 80035C30 07010004 */ bgez $t8, .L80035C44 -/* 036834 80035C34 8FBF0014 */ lw $ra, 0x14($sp) -/* 036838 80035C38 0C003FEE */ jal gParticlePtrList_addObject -/* 03683C 80035C3C 00000000 */ nop -/* 036840 80035C40 8FBF0014 */ lw $ra, 0x14($sp) -.L80035C44: -/* 036844 80035C44 27BD0018 */ addiu $sp, $sp, 0x18 -/* 036848 80035C48 03E00008 */ jr $ra -/* 03684C 80035C4C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/obj_init_midifadepoint.s b/asm/non_matchings/unknown_032760/obj_init_midifadepoint.s deleted file mode 100644 index fe5e581c..00000000 --- a/asm/non_matchings/unknown_032760/obj_init_midifadepoint.s +++ /dev/null @@ -1,107 +0,0 @@ -glabel obj_init_midifadepoint -/* 042A80 80041E80 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 042A84 80041E84 AFBF001C */ sw $ra, 0x1c($sp) -/* 042A88 80041E88 AFB10018 */ sw $s1, 0x18($sp) -/* 042A8C 80041E8C AFB00014 */ sw $s0, 0x14($sp) -/* 042A90 80041E90 8C860064 */ lw $a2, 0x64($a0) -/* 042A94 80041E94 94AE000A */ lhu $t6, 0xa($a1) -/* 042A98 80041E98 00A08025 */ move $s0, $a1 -/* 042A9C 80041E9C A4CE0002 */ sh $t6, 2($a2) -/* 042AA0 80041EA0 94AF0008 */ lhu $t7, 8($a1) -/* 042AA4 80041EA4 31D9FFFF */ andi $t9, $t6, 0xffff -/* 042AA8 80041EA8 A4CF0000 */ sh $t7, ($a2) -/* 042AAC 80041EAC 90B8001C */ lbu $t8, 0x1c($a1) -/* 042AB0 80041EB0 31E2FFFF */ andi $v0, $t7, 0xffff -/* 042AB4 80041EB4 0322082A */ slt $at, $t9, $v0 -/* 042AB8 80041EB8 00808825 */ move $s1, $a0 -/* 042ABC 80041EBC 10200003 */ beqz $at, .L80041ECC -/* 042AC0 80041EC0 A0D8001C */ sb $t8, 0x1c($a2) -/* 042AC4 80041EC4 2448000A */ addiu $t0, $v0, 0xa -/* 042AC8 80041EC8 A4C80002 */ sh $t0, 2($a2) -.L80041ECC: -/* 042ACC 80041ECC A6200004 */ sh $zero, 4($s1) -/* 042AD0 80041ED0 A6200002 */ sh $zero, 2($s1) -/* 042AD4 80041ED4 A6200000 */ sh $zero, ($s1) -/* 042AD8 80041ED8 9209000C */ lbu $t1, 0xc($s0) -/* 042ADC 80041EDC 24040003 */ li $a0, 3 -/* 042AE0 80041EE0 A0C9000C */ sb $t1, 0xc($a2) -/* 042AE4 80041EE4 920A000D */ lbu $t2, 0xd($s0) -/* 042AE8 80041EE8 24C20003 */ addiu $v0, $a2, 3 -/* 042AEC 80041EEC A0CA000D */ sb $t2, 0xd($a2) -/* 042AF0 80041EF0 920B000E */ lbu $t3, 0xe($s0) -/* 042AF4 80041EF4 26030003 */ addiu $v1, $s0, 3 -/* 042AF8 80041EF8 2405000F */ li $a1, 15 -/* 042AFC 80041EFC A0CB000E */ sb $t3, 0xe($a2) -.L80041F00: -/* 042B00 80041F00 906C000C */ lbu $t4, 0xc($v1) -/* 042B04 80041F04 24840004 */ addiu $a0, $a0, 4 -/* 042B08 80041F08 A04C000C */ sb $t4, 0xc($v0) -/* 042B0C 80041F0C 906D000D */ lbu $t5, 0xd($v1) -/* 042B10 80041F10 24420004 */ addiu $v0, $v0, 4 -/* 042B14 80041F14 A04D0009 */ sb $t5, 9($v0) -/* 042B18 80041F18 906E000E */ lbu $t6, 0xe($v1) -/* 042B1C 80041F1C 24630004 */ addiu $v1, $v1, 4 -/* 042B20 80041F20 A04E000A */ sb $t6, 0xa($v0) -/* 042B24 80041F24 906F000B */ lbu $t7, 0xb($v1) -/* 042B28 80041F28 1485FFF5 */ bne $a0, $a1, .L80041F00 -/* 042B2C 80041F2C A04F000B */ sb $t7, 0xb($v0) -/* 042B30 80041F30 8E380068 */ lw $t8, 0x68($s1) -/* 042B34 80041F34 00000000 */ nop -/* 042B38 80041F38 8F030000 */ lw $v1, ($t8) -/* 042B3C 80041F3C 00000000 */ nop -/* 042B40 80041F40 8C640000 */ lw $a0, ($v1) -/* 042B44 80041F44 00000000 */ nop -/* 042B48 80041F48 8C820004 */ lw $v0, 4($a0) -/* 042B4C 80041F4C 00000000 */ nop -/* 042B50 80041F50 8459000A */ lh $t9, 0xa($v0) -/* 042B54 80041F54 8448000C */ lh $t0, 0xc($v0) -/* 042B58 80041F58 44992000 */ mtc1 $t9, $f4 -/* 042B5C 80041F5C 44883000 */ mtc1 $t0, $f6 -/* 042B60 80041F60 46802020 */ cvt.s.w $f0, $f4 -/* 042B64 80041F64 8449000E */ lh $t1, 0xe($v0) -/* 042B68 80041F68 AFA60024 */ sw $a2, 0x24($sp) -/* 042B6C 80041F6C 46000282 */ mul.s $f10, $f0, $f0 -/* 042B70 80041F70 44894000 */ mtc1 $t1, $f8 -/* 042B74 80041F74 2442000A */ addiu $v0, $v0, 0xa -/* 042B78 80041F78 468030A0 */ cvt.s.w $f2, $f6 -/* 042B7C 80041F7C 46021402 */ mul.s $f16, $f2, $f2 -/* 042B80 80041F80 468043A0 */ cvt.s.w $f14, $f8 -/* 042B84 80041F84 460E7102 */ mul.s $f4, $f14, $f14 -/* 042B88 80041F88 46105480 */ add.s $f18, $f10, $f16 -/* 042B8C 80041F8C 0C0326B4 */ jal sqrtf -/* 042B90 80041F90 46049300 */ add.s $f12, $f18, $f4 -/* 042B94 80041F94 960A0008 */ lhu $t2, 8($s0) -/* 042B98 80041F98 8FA60024 */ lw $a2, 0x24($sp) -/* 042B9C 80041F9C 448A3000 */ mtc1 $t2, $f6 -/* 042BA0 80041FA0 05410005 */ bgez $t2, .L80041FB8 -/* 042BA4 80041FA4 46803220 */ cvt.s.w $f8, $f6 -/* 042BA8 80041FA8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 042BAC 80041FAC 44815000 */ mtc1 $at, $f10 -/* 042BB0 80041FB0 00000000 */ nop -/* 042BB4 80041FB4 460A4200 */ add.s $f8, $f8, $f10 -.L80041FB8: -/* 042BB8 80041FB8 00000000 */ nop -/* 042BBC 80041FBC 46004403 */ div.s $f16, $f8, $f0 -/* 042BC0 80041FC0 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 042BC4 80041FC4 E4D00004 */ swc1 $f16, 4($a2) -/* 042BC8 80041FC8 960B000A */ lhu $t3, 0xa($s0) -/* 042BCC 80041FCC 00000000 */ nop -/* 042BD0 80041FD0 448B9000 */ mtc1 $t3, $f18 -/* 042BD4 80041FD4 05610004 */ bgez $t3, .L80041FE8 -/* 042BD8 80041FD8 46809120 */ cvt.s.w $f4, $f18 -/* 042BDC 80041FDC 44813000 */ mtc1 $at, $f6 -/* 042BE0 80041FE0 00000000 */ nop -/* 042BE4 80041FE4 46062100 */ add.s $f4, $f4, $f6 -.L80041FE8: -/* 042BE8 80041FE8 00000000 */ nop -/* 042BEC 80041FEC 46002283 */ div.s $f10, $f4, $f0 -/* 042BF0 80041FF0 E4CA0008 */ swc1 $f10, 8($a2) -/* 042BF4 80041FF4 C4C80008 */ lwc1 $f8, 8($a2) -/* 042BF8 80041FF8 00000000 */ nop -/* 042BFC 80041FFC E6280008 */ swc1 $f8, 8($s1) -/* 042C00 80042000 8FBF001C */ lw $ra, 0x1c($sp) -/* 042C04 80042004 8FB10018 */ lw $s1, 0x18($sp) -/* 042C08 80042008 8FB00014 */ lw $s0, 0x14($sp) -/* 042C0C 8004200C 03E00008 */ jr $ra -/* 042C10 80042010 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_032760/obj_init_scenery.s b/asm/non_matchings/unknown_032760/obj_init_scenery.s deleted file mode 100644 index 1dcdd562..00000000 --- a/asm/non_matchings/unknown_032760/obj_init_scenery.s +++ /dev/null @@ -1,73 +0,0 @@ -glabel obj_init_scenery -/* 0348C0 80033CC0 848E0006 */ lh $t6, 6($a0) -/* 0348C4 80033CC4 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 0348C8 80033CC8 35CF0002 */ ori $t7, $t6, 2 -/* 0348CC 80033CCC A48F0006 */ sh $t7, 6($a0) -/* 0348D0 80033CD0 90B90009 */ lbu $t9, 9($a1) -/* 0348D4 80033CD4 44811000 */ mtc1 $at, $f2 -/* 0348D8 80033CD8 44992000 */ mtc1 $t9, $f4 -/* 0348DC 80033CDC 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 0348E0 80033CE0 46802020 */ cvt.s.w $f0, $f4 -/* 0348E4 80033CE4 44813000 */ mtc1 $at, $f6 -/* 0348E8 80033CE8 4602003C */ c.lt.s $f0, $f2 -/* 0348EC 80033CEC 00000000 */ nop -/* 0348F0 80033CF0 45000003 */ bc1f .L80033D00 -/* 0348F4 80033CF4 00000000 */ nop -/* 0348F8 80033CF8 46001006 */ mov.s $f0, $f2 -/* 0348FC 80033CFC 00000000 */ nop -.L80033D00: -/* 034900 80033D00 46060003 */ div.s $f0, $f0, $f6 -/* 034904 80033D04 8C820040 */ lw $v0, 0x40($a0) -/* 034908 80033D08 8C880050 */ lw $t0, 0x50($a0) -/* 03490C 80033D0C C448000C */ lwc1 $f8, 0xc($v0) -/* 034910 80033D10 00000000 */ nop -/* 034914 80033D14 46004282 */ mul.s $f10, $f8, $f0 -/* 034918 80033D18 E48A0008 */ swc1 $f10, 8($a0) -/* 03491C 80033D1C C4500004 */ lwc1 $f16, 4($v0) -/* 034920 80033D20 00000000 */ nop -/* 034924 80033D24 46008482 */ mul.s $f18, $f16, $f0 -/* 034928 80033D28 E5120000 */ swc1 $f18, ($t0) -/* 03492C 80033D2C 90A90008 */ lbu $t1, 8($a1) -/* 034930 80033D30 00000000 */ nop -/* 034934 80033D34 A089003A */ sb $t1, 0x3a($a0) -/* 034938 80033D38 90AB000A */ lbu $t3, 0xa($a1) -/* 03493C 80033D3C 00000000 */ nop -/* 034940 80033D40 000B6280 */ sll $t4, $t3, 0xa -/* 034944 80033D44 A48C0000 */ sh $t4, ($a0) -/* 034948 80033D48 90AD000B */ lbu $t5, 0xb($a1) -/* 03494C 80033D4C 00000000 */ nop -/* 034950 80033D50 11A00014 */ beqz $t5, .L80033DA4 -/* 034954 80033D54 00000000 */ nop -/* 034958 80033D58 8C8F004C */ lw $t7, 0x4c($a0) -/* 03495C 80033D5C 240E0001 */ li $t6, 1 -/* 034960 80033D60 A5EE0014 */ sh $t6, 0x14($t7) -/* 034964 80033D64 8C99004C */ lw $t9, 0x4c($a0) -/* 034968 80033D68 24180001 */ li $t8, 1 -/* 03496C 80033D6C A3380011 */ sb $t8, 0x11($t9) -/* 034970 80033D70 8C89004C */ lw $t1, 0x4c($a0) -/* 034974 80033D74 24080014 */ li $t0, 20 -/* 034978 80033D78 A1280010 */ sb $t0, 0x10($t1) -/* 03497C 80033D7C 8C8A004C */ lw $t2, 0x4c($a0) -/* 034980 80033D80 240BFFFB */ li $t3, -5 -/* 034984 80033D84 A1400012 */ sb $zero, 0x12($t2) -/* 034988 80033D88 8C8C004C */ lw $t4, 0x4c($a0) -/* 03498C 80033D8C 00000000 */ nop -/* 034990 80033D90 A18B0016 */ sb $t3, 0x16($t4) -/* 034994 80033D94 8C8E004C */ lw $t6, 0x4c($a0) -/* 034998 80033D98 90AD000B */ lbu $t5, 0xb($a1) -/* 03499C 80033D9C 00000000 */ nop -/* 0349A0 80033DA0 A1CD0017 */ sb $t5, 0x17($t6) -.L80033DA4: -/* 0349A4 80033DA4 8C980040 */ lw $t8, 0x40($a0) -/* 0349A8 80033DA8 808F003A */ lb $t7, 0x3a($a0) -/* 0349AC 80033DAC 83190055 */ lb $t9, 0x55($t8) -/* 0349B0 80033DB0 00000000 */ nop -/* 0349B4 80033DB4 01F9082A */ slt $at, $t7, $t9 -/* 0349B8 80033DB8 14200002 */ bnez $at, .L80033DC4 -/* 0349BC 80033DBC 00000000 */ nop -/* 0349C0 80033DC0 A080003A */ sb $zero, 0x3a($a0) -.L80033DC4: -/* 0349C4 80033DC4 AC800078 */ sw $zero, 0x78($a0) -/* 0349C8 80033DC8 03E00008 */ jr $ra -/* 0349CC 80033DCC AC80007C */ sw $zero, 0x7c($a0) - diff --git a/asm/non_matchings/unknown_032760/obj_init_trigger.s b/asm/non_matchings/unknown_032760/obj_init_trigger.s deleted file mode 100644 index bbe58d9e..00000000 --- a/asm/non_matchings/unknown_032760/obj_init_trigger.s +++ /dev/null @@ -1,99 +0,0 @@ -.rdata -glabel D_800E5FC8 -.asciz "Illegal door no!!!\n" - -.text -glabel obj_init_trigger -/* 03D244 8003C644 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 03D248 8003C648 AFBF001C */ sw $ra, 0x1c($sp) -/* 03D24C 8003C64C AFB10018 */ sw $s1, 0x18($sp) -/* 03D250 8003C650 AFB00014 */ sw $s0, 0x14($sp) -/* 03D254 8003C654 80A60009 */ lb $a2, 9($a1) -/* 03D258 8003C658 2401FFFF */ li $at, -1 -/* 03D25C 8003C65C 00808025 */ move $s0, $a0 -/* 03D260 8003C660 14C10005 */ bne $a2, $at, .L8003C678 -/* 03D264 8003C664 00A08825 */ move $s1, $a1 -/* 03D268 8003C668 0C003308 */ jal func_8000CC20 -/* 03D26C 8003C66C 00000000 */ nop -/* 03D270 8003C670 10000004 */ b .L8003C684 -/* 03D274 8003C674 A2220009 */ sb $v0, 9($s1) -.L8003C678: -/* 03D278 8003C678 02002025 */ move $a0, $s0 -/* 03D27C 8003C67C 0C0032FC */ jal func_8000CBF0 -/* 03D280 8003C680 00C02825 */ move $a1, $a2 -.L8003C684: -/* 03D284 8003C684 822E0009 */ lb $t6, 9($s1) -/* 03D288 8003C688 2401FFFF */ li $at, -1 -/* 03D28C 8003C68C 15C10003 */ bne $t6, $at, .L8003C69C -/* 03D290 8003C690 3C04800E */ lui $a0, %hi(D_800E5FC8) # $a0, 0x800e -/* 03D294 8003C694 0C032755 */ jal rmonPrintf -/* 03D298 8003C698 24845FC8 */ addiu $a0, %lo(D_800E5FC8) # addiu $a0, $a0, 0x5fc8 -.L8003C69C: -/* 03D29C 8003C69C 92380008 */ lbu $t8, 8($s1) -/* 03D2A0 8003C6A0 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 03D2A4 8003C6A4 44982000 */ mtc1 $t8, $f4 -/* 03D2A8 8003C6A8 44811000 */ mtc1 $at, $f2 -/* 03D2AC 8003C6AC 46802020 */ cvt.s.w $f0, $f4 -/* 03D2B0 8003C6B0 3C014300 */ li $at, 0x43000000 # 128.000000 -/* 03D2B4 8003C6B4 44813000 */ mtc1 $at, $f6 -/* 03D2B8 8003C6B8 4602003C */ c.lt.s $f0, $f2 -/* 03D2BC 8003C6BC 00000000 */ nop -/* 03D2C0 8003C6C0 45000003 */ bc1f .L8003C6D0 -/* 03D2C4 8003C6C4 00000000 */ nop -/* 03D2C8 8003C6C8 46001006 */ mov.s $f0, $f2 -/* 03D2CC 8003C6CC 00000000 */ nop -.L8003C6D0: -/* 03D2D0 8003C6D0 46060003 */ div.s $f0, $f0, $f6 -/* 03D2D4 8003C6D4 8E020064 */ lw $v0, 0x64($s0) -/* 03D2D8 8003C6D8 E6000008 */ swc1 $f0, 8($s0) -/* 03D2DC 8003C6DC 9228000A */ lbu $t0, 0xa($s1) -/* 03D2E0 8003C6E0 00000000 */ nop -/* 03D2E4 8003C6E4 00084A80 */ sll $t1, $t0, 0xa -/* 03D2E8 8003C6E8 A6090000 */ sh $t1, ($s0) -/* 03D2EC 8003C6EC 86040000 */ lh $a0, ($s0) -/* 03D2F0 8003C6F0 0C01C1F1 */ jal func_800707C4 -/* 03D2F4 8003C6F4 AFA20020 */ sw $v0, 0x20($sp) -/* 03D2F8 8003C6F8 8FA20020 */ lw $v0, 0x20($sp) -/* 03D2FC 8003C6FC 44804000 */ mtc1 $zero, $f8 -/* 03D300 8003C700 E4400000 */ swc1 $f0, ($v0) -/* 03D304 8003C704 E4480004 */ swc1 $f8, 4($v0) -/* 03D308 8003C708 86040000 */ lh $a0, ($s0) -/* 03D30C 8003C70C 0C01C1FE */ jal func_800707F8 -/* 03D310 8003C710 00000000 */ nop -/* 03D314 8003C714 8FA20020 */ lw $v0, 0x20($sp) -/* 03D318 8003C718 240C0002 */ li $t4, 2 -/* 03D31C 8003C71C E4400008 */ swc1 $f0, 8($v0) -/* 03D320 8003C720 C610000C */ lwc1 $f16, 0xc($s0) -/* 03D324 8003C724 C44A0000 */ lwc1 $f10, ($v0) -/* 03D328 8003C728 C6040014 */ lwc1 $f4, 0x14($s0) -/* 03D32C 8003C72C 46105482 */ mul.s $f18, $f10, $f16 -/* 03D330 8003C730 00000000 */ nop -/* 03D334 8003C734 46040182 */ mul.s $f6, $f0, $f4 -/* 03D338 8003C738 46069200 */ add.s $f8, $f18, $f6 -/* 03D33C 8003C73C 46004287 */ neg.s $f10, $f8 -/* 03D340 8003C740 E44A000C */ swc1 $f10, 0xc($v0) -/* 03D344 8003C744 922A0008 */ lbu $t2, 8($s1) -/* 03D348 8003C748 00000000 */ nop -/* 03D34C 8003C74C AC4A0010 */ sw $t2, 0x10($v0) -/* 03D350 8003C750 922B000D */ lbu $t3, 0xd($s1) -/* 03D354 8003C754 00000000 */ nop -/* 03D358 8003C758 A04B0014 */ sb $t3, 0x14($v0) -/* 03D35C 8003C75C 8E0D004C */ lw $t5, 0x4c($s0) -/* 03D360 8003C760 00000000 */ nop -/* 03D364 8003C764 A5AC0014 */ sh $t4, 0x14($t5) -/* 03D368 8003C768 8E0E004C */ lw $t6, 0x4c($s0) -/* 03D36C 8003C76C 00000000 */ nop -/* 03D370 8003C770 A1C00011 */ sb $zero, 0x11($t6) -/* 03D374 8003C774 8E18004C */ lw $t8, 0x4c($s0) -/* 03D378 8003C778 922F0008 */ lbu $t7, 8($s1) -/* 03D37C 8003C77C 00000000 */ nop -/* 03D380 8003C780 A30F0010 */ sb $t7, 0x10($t8) -/* 03D384 8003C784 8E19004C */ lw $t9, 0x4c($s0) -/* 03D388 8003C788 00000000 */ nop -/* 03D38C 8003C78C A3200012 */ sb $zero, 0x12($t9) -/* 03D390 8003C790 8FBF001C */ lw $ra, 0x1c($sp) -/* 03D394 8003C794 8FB10018 */ lw $s1, 0x18($sp) -/* 03D398 8003C798 8FB00014 */ lw $s0, 0x14($sp) -/* 03D39C 8003C79C 03E00008 */ jr $ra -/* 03D3A0 8003C7A0 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_032760/obj_loop_airzippers_waterzippers.s b/asm/non_matchings/unknown_032760/obj_loop_airzippers_waterzippers.s deleted file mode 100644 index c1b5fdcc..00000000 --- a/asm/non_matchings/unknown_032760/obj_loop_airzippers_waterzippers.s +++ /dev/null @@ -1,103 +0,0 @@ -glabel obj_loop_airzippers_waterzippers -/* 03656C 8003596C 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 036570 80035970 AFBF002C */ sw $ra, 0x2c($sp) -/* 036574 80035974 AFB30024 */ sw $s3, 0x24($sp) -/* 036578 80035978 00809825 */ move $s3, $a0 -/* 03657C 8003597C AFB40028 */ sw $s4, 0x28($sp) -/* 036580 80035980 AFB20020 */ sw $s2, 0x20($sp) -/* 036584 80035984 AFB1001C */ sw $s1, 0x1c($sp) -/* 036588 80035988 AFB00018 */ sw $s0, 0x18($sp) -/* 03658C 8003598C 0C003873 */ jal func_8000E1CC -/* 036590 80035990 AFA5005C */ sw $a1, 0x5c($sp) -/* 036594 80035994 14400006 */ bnez $v0, .L800359B0 -/* 036598 80035998 00000000 */ nop -/* 03659C 8003599C 866E0006 */ lh $t6, 6($s3) -/* 0365A0 800359A0 00000000 */ nop -/* 0365A4 800359A4 35CF4000 */ ori $t7, $t6, 0x4000 -/* 0365A8 800359A8 10000005 */ b .L800359C0 -/* 0365AC 800359AC A66F0006 */ sh $t7, 6($s3) -.L800359B0: -/* 0365B0 800359B0 86780006 */ lh $t8, 6($s3) -/* 0365B4 800359B4 00000000 */ nop -/* 0365B8 800359B8 3319BFFF */ andi $t9, $t8, 0xbfff -/* 0365BC 800359BC A6790006 */ sh $t9, 6($s3) -.L800359C0: -/* 0365C0 800359C0 8E68004C */ lw $t0, 0x4c($s3) -/* 0365C4 800359C4 00000000 */ nop -/* 0365C8 800359C8 91090013 */ lbu $t1, 0x13($t0) -/* 0365CC 800359CC 00000000 */ nop -/* 0365D0 800359D0 29210064 */ slti $at, $t1, 0x64 -/* 0365D4 800359D4 1020003D */ beqz $at, .L80035ACC -/* 0365D8 800359D8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0365DC 800359DC 866A0006 */ lh $t2, 6($s3) -/* 0365E0 800359E0 00000000 */ nop -/* 0365E4 800359E4 314B4000 */ andi $t3, $t2, 0x4000 -/* 0365E8 800359E8 15600038 */ bnez $t3, .L80035ACC -/* 0365EC 800359EC 8FBF002C */ lw $ra, 0x2c($sp) -/* 0365F0 800359F0 0C006E9D */ jal get_object_struct_array -/* 0365F4 800359F4 27A40040 */ addiu $a0, $sp, 0x40 -/* 0365F8 800359F8 8FAC0040 */ lw $t4, 0x40($sp) -/* 0365FC 800359FC 00008825 */ move $s1, $zero -/* 036600 80035A00 19800031 */ blez $t4, .L80035AC8 -/* 036604 80035A04 00409025 */ move $s2, $v0 -/* 036608 80035A08 24140001 */ li $s4, 1 -.L80035A0C: -/* 03660C 80035A0C 8E420000 */ lw $v0, ($s2) -/* 036610 80035A10 00000000 */ nop -/* 036614 80035A14 8C500064 */ lw $s0, 0x64($v0) -/* 036618 80035A18 00000000 */ nop -/* 03661C 80035A1C 920D01F5 */ lbu $t5, 0x1f5($s0) -/* 036620 80035A20 00000000 */ nop -/* 036624 80035A24 15A00024 */ bnez $t5, .L80035AB8 -/* 036628 80035A28 8FB90040 */ lw $t9, 0x40($sp) -/* 03662C 80035A2C 820E01D3 */ lb $t6, 0x1d3($s0) -/* 036630 80035A30 00000000 */ nop -/* 036634 80035A34 29C1000F */ slti $at, $t6, 0xf -/* 036638 80035A38 1020001F */ beqz $at, .L80035AB8 -/* 03663C 80035A3C 8FB90040 */ lw $t9, 0x40($sp) -/* 036640 80035A40 C444000C */ lwc1 $f4, 0xc($v0) -/* 036644 80035A44 C666000C */ lwc1 $f6, 0xc($s3) -/* 036648 80035A48 C4480010 */ lwc1 $f8, 0x10($v0) -/* 03664C 80035A4C 46062001 */ sub.s $f0, $f4, $f6 -/* 036650 80035A50 C66A0010 */ lwc1 $f10, 0x10($s3) -/* 036654 80035A54 46000102 */ mul.s $f4, $f0, $f0 -/* 036658 80035A58 460A4081 */ sub.s $f2, $f8, $f10 -/* 03665C 80035A5C C4500014 */ lwc1 $f16, 0x14($v0) -/* 036660 80035A60 C6720014 */ lwc1 $f18, 0x14($s3) -/* 036664 80035A64 46021182 */ mul.s $f6, $f2, $f2 -/* 036668 80035A68 46128381 */ sub.s $f14, $f16, $f18 -/* 03666C 80035A6C 460E7282 */ mul.s $f10, $f14, $f14 -/* 036670 80035A70 46062200 */ add.s $f8, $f4, $f6 -/* 036674 80035A74 0C0326B4 */ jal sqrtf -/* 036678 80035A78 460A4300 */ add.s $f12, $f8, $f10 -/* 03667C 80035A7C 444FF800 */ cfc1 $t7, $31 -/* 036680 80035A80 00000000 */ nop -/* 036684 80035A84 35E10003 */ ori $at, $t7, 3 -/* 036688 80035A88 38210002 */ xori $at, $at, 2 -/* 03668C 80035A8C 44C1F800 */ ctc1 $at, $31 -/* 036690 80035A90 00000000 */ nop -/* 036694 80035A94 46000424 */ cvt.w.s $f16, $f0 -/* 036698 80035A98 44188000 */ mfc1 $t8, $f16 -/* 03669C 80035A9C 44CFF800 */ ctc1 $t7, $31 -/* 0366A0 80035AA0 2B010064 */ slti $at, $t8, 0x64 -/* 0366A4 80035AA4 10200004 */ beqz $at, .L80035AB8 -/* 0366A8 80035AA8 8FB90040 */ lw $t9, 0x40($sp) -/* 0366AC 80035AAC A21401F5 */ sb $s4, 0x1f5($s0) -/* 0366B0 80035AB0 AE13014C */ sw $s3, 0x14c($s0) -/* 0366B4 80035AB4 8FB90040 */ lw $t9, 0x40($sp) -.L80035AB8: -/* 0366B8 80035AB8 26310001 */ addiu $s1, $s1, 1 -/* 0366BC 80035ABC 0239082A */ slt $at, $s1, $t9 -/* 0366C0 80035AC0 1420FFD2 */ bnez $at, .L80035A0C -/* 0366C4 80035AC4 26520004 */ addiu $s2, $s2, 4 -.L80035AC8: -/* 0366C8 80035AC8 8FBF002C */ lw $ra, 0x2c($sp) -.L80035ACC: -/* 0366CC 80035ACC 8FB00018 */ lw $s0, 0x18($sp) -/* 0366D0 80035AD0 8FB1001C */ lw $s1, 0x1c($sp) -/* 0366D4 80035AD4 8FB20020 */ lw $s2, 0x20($sp) -/* 0366D8 80035AD8 8FB30024 */ lw $s3, 0x24($sp) -/* 0366DC 80035ADC 8FB40028 */ lw $s4, 0x28($sp) -/* 0366E0 80035AE0 03E00008 */ jr $ra -/* 0366E4 80035AE4 27BD0058 */ addiu $sp, $sp, 0x58 - diff --git a/asm/non_matchings/unknown_032760/obj_loop_coin.s b/asm/non_matchings/unknown_032760/obj_loop_banana.s similarity index 99% rename from asm/non_matchings/unknown_032760/obj_loop_coin.s rename to asm/non_matchings/unknown_032760/obj_loop_banana.s index 7f427159..116cdf1d 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_coin.s +++ b/asm/non_matchings/unknown_032760/obj_loop_banana.s @@ -7,7 +7,7 @@ glabel D_800E61A0 .float -10000.0 .text -glabel obj_loop_coin +glabel obj_loop_banana /* 03E1A0 8003D5A0 44852000 */ mtc1 $a1, $f4 /* 03E1A4 8003D5A4 3C0F8000 */ lui $t7, %hi(osTvType) # $t7, 0x8000 /* 03E1A8 8003D5A8 468020A0 */ cvt.s.w $f2, $f4 diff --git a/asm/non_matchings/unknown_032760/obj_loop_bonus.s b/asm/non_matchings/unknown_032760/obj_loop_bonus.s deleted file mode 100644 index d40e9d3a..00000000 --- a/asm/non_matchings/unknown_032760/obj_loop_bonus.s +++ /dev/null @@ -1,131 +0,0 @@ -glabel obj_loop_bonus -/* 03BD74 8003B174 27BDFF70 */ addiu $sp, $sp, -0x90 -/* 03BD78 8003B178 AFBF0054 */ sw $ra, 0x54($sp) -/* 03BD7C 8003B17C AFB60050 */ sw $s6, 0x50($sp) -/* 03BD80 8003B180 AFB5004C */ sw $s5, 0x4c($sp) -/* 03BD84 8003B184 AFB40048 */ sw $s4, 0x48($sp) -/* 03BD88 8003B188 AFB30044 */ sw $s3, 0x44($sp) -/* 03BD8C 8003B18C AFB20040 */ sw $s2, 0x40($sp) -/* 03BD90 8003B190 AFB1003C */ sw $s1, 0x3c($sp) -/* 03BD94 8003B194 AFB00038 */ sw $s0, 0x38($sp) -/* 03BD98 8003B198 E7B90030 */ swc1 $f25, 0x30($sp) -/* 03BD9C 8003B19C E7B80034 */ swc1 $f24, 0x34($sp) -/* 03BDA0 8003B1A0 E7B70028 */ swc1 $f23, 0x28($sp) -/* 03BDA4 8003B1A4 E7B6002C */ swc1 $f22, 0x2c($sp) -/* 03BDA8 8003B1A8 E7B50020 */ swc1 $f21, 0x20($sp) -/* 03BDAC 8003B1AC E7B40024 */ swc1 $f20, 0x24($sp) -/* 03BDB0 8003B1B0 AFA50094 */ sw $a1, 0x94($sp) -/* 03BDB4 8003B1B4 8C940064 */ lw $s4, 0x64($a0) -/* 03BDB8 8003B1B8 8C8E004C */ lw $t6, 0x4c($a0) -/* 03BDBC 8003B1BC 8E820010 */ lw $v0, 0x10($s4) -/* 03BDC0 8003B1C0 91CF0013 */ lbu $t7, 0x13($t6) -/* 03BDC4 8003B1C4 0080A825 */ move $s5, $a0 -/* 03BDC8 8003B1C8 01E2082A */ slt $at, $t7, $v0 -/* 03BDCC 8003B1CC 10200056 */ beqz $at, .L8003B328 -/* 03BDD0 8003B1D0 27A40084 */ addiu $a0, $sp, 0x84 -/* 03BDD4 8003B1D4 44822000 */ mtc1 $v0, $f4 -/* 03BDD8 8003B1D8 0C006E9D */ jal get_object_struct_array -/* 03BDDC 8003B1DC 468025A0 */ cvt.s.w $f22, $f4 -/* 03BDE0 8003B1E0 8FB80084 */ lw $t8, 0x84($sp) -/* 03BDE4 8003B1E4 00009025 */ move $s2, $zero -/* 03BDE8 8003B1E8 1B00004F */ blez $t8, .L8003B328 -/* 03BDEC 8003B1EC 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 03BDF0 8003B1F0 44814800 */ mtc1 $at, $f9 -/* 03BDF4 8003B1F4 44804000 */ mtc1 $zero, $f8 -/* 03BDF8 8003B1F8 4600B1A1 */ cvt.d.s $f6, $f22 -/* 03BDFC 8003B1FC 46283282 */ mul.d $f10, $f6, $f8 -/* 03BE00 8003B200 4480C000 */ mtc1 $zero, $f24 -/* 03BE04 8003B204 00409825 */ move $s3, $v0 -/* 03BE08 8003B208 2416000A */ li $s6, 10 -/* 03BE0C 8003B20C 46205520 */ cvt.s.d $f20, $f10 -.L8003B210: -/* 03BE10 8003B210 8E700000 */ lw $s0, ($s3) -/* 03BE14 8003B214 C6B20010 */ lwc1 $f18, 0x10($s5) -/* 03BE18 8003B218 C6100010 */ lwc1 $f16, 0x10($s0) -/* 03BE1C 8003B21C 8E110064 */ lw $s1, 0x64($s0) -/* 03BE20 8003B220 46128381 */ sub.s $f14, $f16, $f18 -/* 03BE24 8003B224 4614703C */ c.lt.s $f14, $f20 -/* 03BE28 8003B228 00000000 */ nop -/* 03BE2C 8003B22C 4500003A */ bc1f .L8003B318 -/* 03BE30 8003B230 8FAA0084 */ lw $t2, 0x84($sp) -/* 03BE34 8003B234 4600A107 */ neg.s $f4, $f20 -/* 03BE38 8003B238 460E203C */ c.lt.s $f4, $f14 -/* 03BE3C 8003B23C 00000000 */ nop -/* 03BE40 8003B240 45000035 */ bc1f .L8003B318 -/* 03BE44 8003B244 8FAA0084 */ lw $t2, 0x84($sp) -/* 03BE48 8003B248 C606000C */ lwc1 $f6, 0xc($s0) -/* 03BE4C 8003B24C C6A8000C */ lwc1 $f8, 0xc($s5) -/* 03BE50 8003B250 C60A0014 */ lwc1 $f10, 0x14($s0) -/* 03BE54 8003B254 46083001 */ sub.s $f0, $f6, $f8 -/* 03BE58 8003B258 C6B00014 */ lwc1 $f16, 0x14($s5) -/* 03BE5C 8003B25C 46000482 */ mul.s $f18, $f0, $f0 -/* 03BE60 8003B260 46105081 */ sub.s $f2, $f10, $f16 -/* 03BE64 8003B264 460E7102 */ mul.s $f4, $f14, $f14 -/* 03BE68 8003B268 00000000 */ nop -/* 03BE6C 8003B26C 46021202 */ mul.s $f8, $f2, $f2 -/* 03BE70 8003B270 46049180 */ add.s $f6, $f18, $f4 -/* 03BE74 8003B274 0C0326B4 */ jal sqrtf -/* 03BE78 8003B278 46083300 */ add.s $f12, $f6, $f8 -/* 03BE7C 8003B27C 4616003C */ c.lt.s $f0, $f22 -/* 03BE80 8003B280 00000000 */ nop -/* 03BE84 8003B284 45000024 */ bc1f .L8003B318 -/* 03BE88 8003B288 8FAA0084 */ lw $t2, 0x84($sp) -/* 03BE8C 8003B28C C68A0000 */ lwc1 $f10, ($s4) -/* 03BE90 8003B290 C610000C */ lwc1 $f16, 0xc($s0) -/* 03BE94 8003B294 C6840008 */ lwc1 $f4, 8($s4) -/* 03BE98 8003B298 46105482 */ mul.s $f18, $f10, $f16 -/* 03BE9C 8003B29C C6060014 */ lwc1 $f6, 0x14($s0) -/* 03BEA0 8003B2A0 C690000C */ lwc1 $f16, 0xc($s4) -/* 03BEA4 8003B2A4 46062202 */ mul.s $f8, $f4, $f6 -/* 03BEA8 8003B2A8 46089280 */ add.s $f10, $f18, $f8 -/* 03BEAC 8003B2AC 46105000 */ add.s $f0, $f10, $f16 -/* 03BEB0 8003B2B0 4618003C */ c.lt.s $f0, $f24 -/* 03BEB4 8003B2B4 00000000 */ nop -/* 03BEB8 8003B2B8 45000017 */ bc1f .L8003B318 -/* 03BEBC 8003B2BC 8FAA0084 */ lw $t2, 0x84($sp) -/* 03BEC0 8003B2C0 82390185 */ lb $t9, 0x185($s1) -/* 03BEC4 8003B2C4 24040022 */ li $a0, 34 -/* 03BEC8 8003B2C8 2B21000A */ slti $at, $t9, 0xa -/* 03BECC 8003B2CC 10200011 */ beqz $at, .L8003B314 -/* 03BED0 8003B2D0 24080004 */ li $t0, 4 -/* 03BED4 8003B2D4 A2360185 */ sb $s6, 0x185($s1) -/* 03BED8 8003B2D8 8E070014 */ lw $a3, 0x14($s0) -/* 03BEDC 8003B2DC 8E060010 */ lw $a2, 0x10($s0) -/* 03BEE0 8003B2E0 8E05000C */ lw $a1, 0xc($s0) -/* 03BEE4 8003B2E4 AFA00014 */ sw $zero, 0x14($sp) -/* 03BEE8 8003B2E8 0C002556 */ jal func_80009558 -/* 03BEEC 8003B2EC AFA80010 */ sw $t0, 0x10($sp) -/* 03BEF0 8003B2F0 82240003 */ lb $a0, 3($s1) -/* 03BEF4 8003B2F4 8E05000C */ lw $a1, 0xc($s0) -/* 03BEF8 8003B2F8 2484007B */ addiu $a0, $a0, 0x7b -/* 03BEFC 8003B2FC 3089FFFF */ andi $t1, $a0, 0xffff -/* 03BF00 8003B300 8E060010 */ lw $a2, 0x10($s0) -/* 03BF04 8003B304 8E070014 */ lw $a3, 0x14($s0) -/* 03BF08 8003B308 AFA00010 */ sw $zero, 0x10($sp) -/* 03BF0C 8003B30C 0C0007AA */ jal func_80001EA8 -/* 03BF10 8003B310 01202025 */ move $a0, $t1 -.L8003B314: -/* 03BF14 8003B314 8FAA0084 */ lw $t2, 0x84($sp) -.L8003B318: -/* 03BF18 8003B318 26520001 */ addiu $s2, $s2, 1 -/* 03BF1C 8003B31C 024A082A */ slt $at, $s2, $t2 -/* 03BF20 8003B320 1420FFBB */ bnez $at, .L8003B210 -/* 03BF24 8003B324 26730004 */ addiu $s3, $s3, 4 -.L8003B328: -/* 03BF28 8003B328 8FBF0054 */ lw $ra, 0x54($sp) -/* 03BF2C 8003B32C C7B50020 */ lwc1 $f21, 0x20($sp) -/* 03BF30 8003B330 C7B40024 */ lwc1 $f20, 0x24($sp) -/* 03BF34 8003B334 C7B70028 */ lwc1 $f23, 0x28($sp) -/* 03BF38 8003B338 C7B6002C */ lwc1 $f22, 0x2c($sp) -/* 03BF3C 8003B33C C7B90030 */ lwc1 $f25, 0x30($sp) -/* 03BF40 8003B340 C7B80034 */ lwc1 $f24, 0x34($sp) -/* 03BF44 8003B344 8FB00038 */ lw $s0, 0x38($sp) -/* 03BF48 8003B348 8FB1003C */ lw $s1, 0x3c($sp) -/* 03BF4C 8003B34C 8FB20040 */ lw $s2, 0x40($sp) -/* 03BF50 8003B350 8FB30044 */ lw $s3, 0x44($sp) -/* 03BF54 8003B354 8FB40048 */ lw $s4, 0x48($sp) -/* 03BF58 8003B358 8FB5004C */ lw $s5, 0x4c($sp) -/* 03BF5C 8003B35C 8FB60050 */ lw $s6, 0x50($sp) -/* 03BF60 8003B360 03E00008 */ jr $ra -/* 03BF64 8003B364 27BD0090 */ addiu $sp, $sp, 0x90 - diff --git a/asm/non_matchings/unknown_032760/obj_loop_coincreator.s b/asm/non_matchings/unknown_032760/obj_loop_coincreator.s deleted file mode 100644 index f347fcb6..00000000 --- a/asm/non_matchings/unknown_032760/obj_loop_coincreator.s +++ /dev/null @@ -1,83 +0,0 @@ -glabel obj_loop_coincreator -/* 03DFFC 8003D3FC 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 03E000 8003D400 AFBF002C */ sw $ra, 0x2c($sp) -/* 03E004 8003D404 AFB00028 */ sw $s0, 0x28($sp) -/* 03E008 8003D408 8C8E007C */ lw $t6, 0x7c($a0) -/* 03E00C 8003D40C 00808025 */ move $s0, $a0 -/* 03E010 8003D410 11C00005 */ beqz $t6, .L8003D428 -/* 03E014 8003D414 00000000 */ nop -/* 03E018 8003D418 8C8F0078 */ lw $t7, 0x78($a0) -/* 03E01C 8003D41C 00000000 */ nop -/* 03E020 8003D420 01E5C023 */ subu $t8, $t7, $a1 -/* 03E024 8003D424 AC980078 */ sw $t8, 0x78($a0) -.L8003D428: -/* 03E028 8003D428 8E190078 */ lw $t9, 0x78($s0) -/* 03E02C 8003D42C 00000000 */ nop -/* 03E030 8003D430 1F20003D */ bgtz $t9, .L8003D528 -/* 03E034 8003D434 8FBF002C */ lw $ra, 0x2c($sp) -/* 03E038 8003D438 4448F800 */ cfc1 $t0, $31 -/* 03E03C 8003D43C C604000C */ lwc1 $f4, 0xc($s0) -/* 03E040 8003D440 35010003 */ ori $at, $t0, 3 -/* 03E044 8003D444 38210002 */ xori $at, $at, 2 -/* 03E048 8003D448 44C1F800 */ ctc1 $at, $31 -/* 03E04C 8003D44C 24190008 */ li $t9, 8 -/* 03E050 8003D450 460021A4 */ cvt.w.s $f6, $f4 -/* 03E054 8003D454 27A40038 */ addiu $a0, $sp, 0x38 -/* 03E058 8003D458 44C8F800 */ ctc1 $t0, $31 -/* 03E05C 8003D45C 44093000 */ mfc1 $t1, $f6 -/* 03E060 8003D460 24080053 */ li $t0, 83 -/* 03E064 8003D464 444AF800 */ cfc1 $t2, $31 -/* 03E068 8003D468 A7A9003A */ sh $t1, 0x3a($sp) -/* 03E06C 8003D46C 35410003 */ ori $at, $t2, 3 -/* 03E070 8003D470 38210002 */ xori $at, $at, 2 -/* 03E074 8003D474 44C1F800 */ ctc1 $at, $31 -/* 03E078 8003D478 C6080010 */ lwc1 $f8, 0x10($s0) -/* 03E07C 8003D47C 24050001 */ li $a1, 1 -/* 03E080 8003D480 460042A4 */ cvt.w.s $f10, $f8 -/* 03E084 8003D484 44CAF800 */ ctc1 $t2, $31 -/* 03E088 8003D488 440D5000 */ mfc1 $t5, $f10 -/* 03E08C 8003D48C 00000000 */ nop -/* 03E090 8003D490 444FF800 */ cfc1 $t7, $31 -/* 03E094 8003D494 25AEFFFD */ addiu $t6, $t5, -3 -/* 03E098 8003D498 35E10003 */ ori $at, $t7, 3 -/* 03E09C 8003D49C A7AE003C */ sh $t6, 0x3c($sp) -/* 03E0A0 8003D4A0 38210002 */ xori $at, $at, 2 -/* 03E0A4 8003D4A4 44C1F800 */ ctc1 $at, $31 -/* 03E0A8 8003D4A8 C6100014 */ lwc1 $f16, 0x14($s0) -/* 03E0AC 8003D4AC A3B90039 */ sb $t9, 0x39($sp) -/* 03E0B0 8003D4B0 460084A4 */ cvt.w.s $f18, $f16 -/* 03E0B4 8003D4B4 A3A80038 */ sb $t0, 0x38($sp) -/* 03E0B8 8003D4B8 44189000 */ mfc1 $t8, $f18 -/* 03E0BC 8003D4BC 44CFF800 */ ctc1 $t7, $31 -/* 03E0C0 8003D4C0 0C003A95 */ jal func_8000EA54 -/* 03E0C4 8003D4C4 A7B8003E */ sh $t8, 0x3e($sp) -/* 03E0C8 8003D4C8 24090001 */ li $t1, 1 -/* 03E0CC 8003D4CC 10400013 */ beqz $v0, .L8003D51C -/* 03E0D0 8003D4D0 AE09007C */ sw $t1, 0x7c($s0) -/* 03E0D4 8003D4D4 AC40003C */ sw $zero, 0x3c($v0) -/* 03E0D8 8003D4D8 8C420064 */ lw $v0, 0x64($v0) -/* 03E0DC 8003D4DC 3C014160 */ li $at, 0x41600000 # 14.000000 -/* 03E0E0 8003D4E0 AC500004 */ sw $s0, 4($v0) -/* 03E0E4 8003D4E4 C6040010 */ lwc1 $f4, 0x10($s0) -/* 03E0E8 8003D4E8 44813000 */ mtc1 $at, $f6 -/* 03E0EC 8003D4EC 3C013E80 */ li $at, 0x3E800000 # 0.250000 -/* 03E0F0 8003D4F0 8E060014 */ lw $a2, 0x14($s0) -/* 03E0F4 8003D4F4 C60C000C */ lwc1 $f12, 0xc($s0) -/* 03E0F8 8003D4F8 44814000 */ mtc1 $at, $f8 -/* 03E0FC 8003D4FC 240A0022 */ li $t2, 34 -/* 03E100 8003D500 AFAA0010 */ sw $t2, 0x10($sp) -/* 03E104 8003D504 AFA00018 */ sw $zero, 0x18($sp) -/* 03E108 8003D508 2407002C */ li $a3, 44 -/* 03E10C 8003D50C 46062381 */ sub.s $f14, $f4, $f6 -/* 03E110 8003D510 0C00FF11 */ jal func_8003FC44 -/* 03E114 8003D514 E7A80014 */ swc1 $f8, 0x14($sp) -/* 03E118 8003D518 AE00007C */ sw $zero, 0x7c($s0) -.L8003D51C: -/* 03E11C 8003D51C 240B04B0 */ li $t3, 1200 -/* 03E120 8003D520 AE0B0078 */ sw $t3, 0x78($s0) -/* 03E124 8003D524 8FBF002C */ lw $ra, 0x2c($sp) -.L8003D528: -/* 03E128 8003D528 8FB00028 */ lw $s0, 0x28($sp) -/* 03E12C 8003D52C 03E00008 */ jr $ra -/* 03E130 8003D530 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/non_matchings/unknown_032760/obj_loop_exit.s b/asm/non_matchings/unknown_032760/obj_loop_exit.s deleted file mode 100644 index e2d5a882..00000000 --- a/asm/non_matchings/unknown_032760/obj_loop_exit.s +++ /dev/null @@ -1,138 +0,0 @@ -glabel obj_loop_exit -/* 039B58 80038F58 27BDFF80 */ addiu $sp, $sp, -0x80 -/* 039B5C 80038F5C AFBF0044 */ sw $ra, 0x44($sp) -/* 039B60 80038F60 AFB70040 */ sw $s7, 0x40($sp) -/* 039B64 80038F64 AFB6003C */ sw $s6, 0x3c($sp) -/* 039B68 80038F68 AFB50038 */ sw $s5, 0x38($sp) -/* 039B6C 80038F6C AFB40034 */ sw $s4, 0x34($sp) -/* 039B70 80038F70 AFB30030 */ sw $s3, 0x30($sp) -/* 039B74 80038F74 AFB2002C */ sw $s2, 0x2c($sp) -/* 039B78 80038F78 AFB10028 */ sw $s1, 0x28($sp) -/* 039B7C 80038F7C AFB00024 */ sw $s0, 0x24($sp) -/* 039B80 80038F80 E7B70018 */ swc1 $f23, 0x18($sp) -/* 039B84 80038F84 E7B6001C */ swc1 $f22, 0x1c($sp) -/* 039B88 80038F88 E7B50010 */ swc1 $f21, 0x10($sp) -/* 039B8C 80038F8C E7B40014 */ swc1 $f20, 0x14($sp) -/* 039B90 80038F90 AFA50084 */ sw $a1, 0x84($sp) -/* 039B94 80038F94 8C950064 */ lw $s5, 0x64($a0) -/* 039B98 80038F98 0080A025 */ move $s4, $a0 -/* 039B9C 80038F9C 0C01BAA4 */ jal get_settings -/* 039BA0 80038FA0 24100001 */ li $s0, 1 -/* 039BA4 80038FA4 82A30014 */ lb $v1, 0x14($s5) -/* 039BA8 80038FA8 00000000 */ nop -/* 039BAC 80038FAC 1460000B */ bnez $v1, .L80038FDC -/* 039BB0 80038FB0 24010001 */ li $at, 1 -/* 039BB4 80038FB4 904F0048 */ lbu $t7, 0x48($v0) -/* 039BB8 80038FB8 8C4E0000 */ lw $t6, ($v0) -/* 039BBC 80038FBC 000FC040 */ sll $t8, $t7, 1 -/* 039BC0 80038FC0 01D8C821 */ addu $t9, $t6, $t8 -/* 039BC4 80038FC4 87280000 */ lh $t0, ($t9) -/* 039BC8 80038FC8 24010008 */ li $at, 8 -/* 039BCC 80038FCC 15010003 */ bne $t0, $at, .L80038FDC -/* 039BD0 80038FD0 24010001 */ li $at, 1 -/* 039BD4 80038FD4 00008025 */ move $s0, $zero -/* 039BD8 80038FD8 24010001 */ li $at, 1 -.L80038FDC: -/* 039BDC 80038FDC 1461000B */ bne $v1, $at, .L8003900C -/* 039BE0 80038FE0 00000000 */ nop -/* 039BE4 80038FE4 904A0048 */ lbu $t2, 0x48($v0) -/* 039BE8 80038FE8 8C490000 */ lw $t1, ($v0) -/* 039BEC 80038FEC 000A5840 */ sll $t3, $t2, 1 -/* 039BF0 80038FF0 012B6021 */ addu $t4, $t1, $t3 -/* 039BF4 80038FF4 858D0000 */ lh $t5, ($t4) -/* 039BF8 80038FF8 00000000 */ nop -/* 039BFC 80038FFC 29A10008 */ slti $at, $t5, 8 -/* 039C00 80039000 10200002 */ beqz $at, .L8003900C -/* 039C04 80039004 00000000 */ nop -/* 039C08 80039008 00008025 */ move $s0, $zero -.L8003900C: -/* 039C0C 8003900C 12000046 */ beqz $s0, .L80039128 -/* 039C10 80039010 8FBF0044 */ lw $ra, 0x44($sp) -/* 039C14 80039014 8E8F004C */ lw $t7, 0x4c($s4) -/* 039C18 80039018 8EA20010 */ lw $v0, 0x10($s5) -/* 039C1C 8003901C 91EE0013 */ lbu $t6, 0x13($t7) -/* 039C20 80039020 27A40074 */ addiu $a0, $sp, 0x74 -/* 039C24 80039024 01C2082A */ slt $at, $t6, $v0 -/* 039C28 80039028 1020003F */ beqz $at, .L80039128 -/* 039C2C 8003902C 8FBF0044 */ lw $ra, 0x44($sp) -/* 039C30 80039030 44822000 */ mtc1 $v0, $f4 -/* 039C34 80039034 0C006E9D */ jal get_object_struct_array -/* 039C38 80039038 468025A0 */ cvt.s.w $f22, $f4 -/* 039C3C 8003903C 8FB80074 */ lw $t8, 0x74($sp) -/* 039C40 80039040 00009025 */ move $s2, $zero -/* 039C44 80039044 1B000037 */ blez $t8, .L80039124 -/* 039C48 80039048 00409825 */ move $s3, $v0 -/* 039C4C 8003904C 4480A000 */ mtc1 $zero, $f20 -/* 039C50 80039050 2417FF88 */ li $s7, -120 -/* 039C54 80039054 2416FFFF */ li $s6, -1 -.L80039058: -/* 039C58 80039058 8E700000 */ lw $s0, ($s3) -/* 039C5C 8003905C 00000000 */ nop -/* 039C60 80039060 8E110064 */ lw $s1, 0x64($s0) -/* 039C64 80039064 00000000 */ nop -/* 039C68 80039068 86390000 */ lh $t9, ($s1) -/* 039C6C 8003906C 00000000 */ nop -/* 039C70 80039070 12D90028 */ beq $s6, $t9, .L80039114 -/* 039C74 80039074 8FAA0074 */ lw $t2, 0x74($sp) -/* 039C78 80039078 8E280108 */ lw $t0, 0x108($s1) -/* 039C7C 8003907C 00000000 */ nop -/* 039C80 80039080 15000024 */ bnez $t0, .L80039114 -/* 039C84 80039084 8FAA0074 */ lw $t2, 0x74($sp) -/* 039C88 80039088 C606000C */ lwc1 $f6, 0xc($s0) -/* 039C8C 8003908C C688000C */ lwc1 $f8, 0xc($s4) -/* 039C90 80039090 C60A0010 */ lwc1 $f10, 0x10($s0) -/* 039C94 80039094 46083001 */ sub.s $f0, $f6, $f8 -/* 039C98 80039098 C6900010 */ lwc1 $f16, 0x10($s4) -/* 039C9C 8003909C 46000182 */ mul.s $f6, $f0, $f0 -/* 039CA0 800390A0 46105081 */ sub.s $f2, $f10, $f16 -/* 039CA4 800390A4 C6120014 */ lwc1 $f18, 0x14($s0) -/* 039CA8 800390A8 C6840014 */ lwc1 $f4, 0x14($s4) -/* 039CAC 800390AC 46021202 */ mul.s $f8, $f2, $f2 -/* 039CB0 800390B0 46049381 */ sub.s $f14, $f18, $f4 -/* 039CB4 800390B4 460E7402 */ mul.s $f16, $f14, $f14 -/* 039CB8 800390B8 46083280 */ add.s $f10, $f6, $f8 -/* 039CBC 800390BC 0C0326B4 */ jal sqrtf -/* 039CC0 800390C0 46105300 */ add.s $f12, $f10, $f16 -/* 039CC4 800390C4 4616003C */ c.lt.s $f0, $f22 -/* 039CC8 800390C8 00000000 */ nop -/* 039CCC 800390CC 45000011 */ bc1f .L80039114 -/* 039CD0 800390D0 8FAA0074 */ lw $t2, 0x74($sp) -/* 039CD4 800390D4 C6B20000 */ lwc1 $f18, ($s5) -/* 039CD8 800390D8 C604000C */ lwc1 $f4, 0xc($s0) -/* 039CDC 800390DC C6A80008 */ lwc1 $f8, 8($s5) -/* 039CE0 800390E0 46049182 */ mul.s $f6, $f18, $f4 -/* 039CE4 800390E4 C60A0014 */ lwc1 $f10, 0x14($s0) -/* 039CE8 800390E8 C6A4000C */ lwc1 $f4, 0xc($s5) -/* 039CEC 800390EC 460A4402 */ mul.s $f16, $f8, $f10 -/* 039CF0 800390F0 46103480 */ add.s $f18, $f6, $f16 -/* 039CF4 800390F4 46049000 */ add.s $f0, $f18, $f4 -/* 039CF8 800390F8 4614003C */ c.lt.s $f0, $f20 -/* 039CFC 800390FC 00000000 */ nop -/* 039D00 80039100 45000004 */ bc1f .L80039114 -/* 039D04 80039104 8FAA0074 */ lw $t2, 0x74($sp) -/* 039D08 80039108 AE340108 */ sw $s4, 0x108($s1) -/* 039D0C 8003910C A2370200 */ sb $s7, 0x200($s1) -/* 039D10 80039110 8FAA0074 */ lw $t2, 0x74($sp) -.L80039114: -/* 039D14 80039114 26520001 */ addiu $s2, $s2, 1 -/* 039D18 80039118 024A082A */ slt $at, $s2, $t2 -/* 039D1C 8003911C 1420FFCE */ bnez $at, .L80039058 -/* 039D20 80039120 26730004 */ addiu $s3, $s3, 4 -.L80039124: -/* 039D24 80039124 8FBF0044 */ lw $ra, 0x44($sp) -.L80039128: -/* 039D28 80039128 C7B50010 */ lwc1 $f21, 0x10($sp) -/* 039D2C 8003912C C7B40014 */ lwc1 $f20, 0x14($sp) -/* 039D30 80039130 C7B70018 */ lwc1 $f23, 0x18($sp) -/* 039D34 80039134 C7B6001C */ lwc1 $f22, 0x1c($sp) -/* 039D38 80039138 8FB00024 */ lw $s0, 0x24($sp) -/* 039D3C 8003913C 8FB10028 */ lw $s1, 0x28($sp) -/* 039D40 80039140 8FB2002C */ lw $s2, 0x2c($sp) -/* 039D44 80039144 8FB30030 */ lw $s3, 0x30($sp) -/* 039D48 80039148 8FB40034 */ lw $s4, 0x34($sp) -/* 039D4C 8003914C 8FB50038 */ lw $s5, 0x38($sp) -/* 039D50 80039150 8FB6003C */ lw $s6, 0x3c($sp) -/* 039D54 80039154 8FB70040 */ lw $s7, 0x40($sp) -/* 039D58 80039158 03E00008 */ jr $ra -/* 039D5C 8003915C 27BD0080 */ addiu $sp, $sp, 0x80 - diff --git a/asm/non_matchings/unknown_032760/obj_loop_groundzipper.s b/asm/non_matchings/unknown_032760/obj_loop_groundzipper.s deleted file mode 100644 index 4e4dda29..00000000 --- a/asm/non_matchings/unknown_032760/obj_loop_groundzipper.s +++ /dev/null @@ -1,124 +0,0 @@ -glabel obj_loop_groundzipper -/* 036850 80035C50 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 036854 80035C54 AFBF003C */ sw $ra, 0x3c($sp) -/* 036858 80035C58 AFB60038 */ sw $s6, 0x38($sp) -/* 03685C 80035C5C AFB50034 */ sw $s5, 0x34($sp) -/* 036860 80035C60 AFB40030 */ sw $s4, 0x30($sp) -/* 036864 80035C64 AFB3002C */ sw $s3, 0x2c($sp) -/* 036868 80035C68 AFB20028 */ sw $s2, 0x28($sp) -/* 03686C 80035C6C AFB10024 */ sw $s1, 0x24($sp) -/* 036870 80035C70 AFB00020 */ sw $s0, 0x20($sp) -/* 036874 80035C74 AFA5006C */ sw $a1, 0x6c($sp) -/* 036878 80035C78 848E0006 */ lh $t6, 6($a0) -/* 03687C 80035C7C 00809025 */ move $s2, $a0 -/* 036880 80035C80 31CFBFFF */ andi $t7, $t6, 0xbfff -/* 036884 80035C84 A48F0006 */ sh $t7, 6($a0) -/* 036888 80035C88 84980006 */ lh $t8, 6($a0) -/* 03688C 80035C8C 00000000 */ nop -/* 036890 80035C90 37191000 */ ori $t9, $t8, 0x1000 -/* 036894 80035C94 A4990006 */ sh $t9, 6($a0) -/* 036898 80035C98 0C006EB2 */ jal get_object_struct -/* 03689C 80035C9C 00002025 */ move $a0, $zero -/* 0368A0 80035CA0 8E48004C */ lw $t0, 0x4c($s2) -/* 0368A4 80035CA4 8E4A0078 */ lw $t2, 0x78($s2) -/* 0368A8 80035CA8 91090013 */ lbu $t1, 0x13($t0) -/* 0368AC 80035CAC 00000000 */ nop -/* 0368B0 80035CB0 012A082A */ slt $at, $t1, $t2 -/* 0368B4 80035CB4 10200051 */ beqz $at, .L80035DFC -/* 0368B8 80035CB8 8FBF003C */ lw $ra, 0x3c($sp) -/* 0368BC 80035CBC 0C006E9D */ jal get_object_struct_array -/* 0368C0 80035CC0 27A40054 */ addiu $a0, $sp, 0x54 -/* 0368C4 80035CC4 8FAB0054 */ lw $t3, 0x54($sp) -/* 0368C8 80035CC8 00009825 */ move $s3, $zero -/* 0368CC 80035CCC 1960004A */ blez $t3, .L80035DF8 -/* 0368D0 80035CD0 0040A025 */ move $s4, $v0 -/* 0368D4 80035CD4 24160002 */ li $s6, 2 -/* 0368D8 80035CD8 2415FFFF */ li $s5, -1 -.L80035CDC: -/* 0368DC 80035CDC 8E910000 */ lw $s1, ($s4) -/* 0368E0 80035CE0 00000000 */ nop -/* 0368E4 80035CE4 8E300064 */ lw $s0, 0x64($s1) -/* 0368E8 80035CE8 00000000 */ nop -/* 0368EC 80035CEC 820C01D3 */ lb $t4, 0x1d3($s0) -/* 0368F0 80035CF0 00000000 */ nop -/* 0368F4 80035CF4 2981000F */ slti $at, $t4, 0xf -/* 0368F8 80035CF8 1020003B */ beqz $at, .L80035DE8 -/* 0368FC 80035CFC 8FAC0054 */ lw $t4, 0x54($sp) -/* 036900 80035D00 820D01E2 */ lb $t5, 0x1e2($s0) -/* 036904 80035D04 00000000 */ nop -/* 036908 80035D08 11A00037 */ beqz $t5, .L80035DE8 -/* 03690C 80035D0C 8FAC0054 */ lw $t4, 0x54($sp) -/* 036910 80035D10 C624000C */ lwc1 $f4, 0xc($s1) -/* 036914 80035D14 C646000C */ lwc1 $f6, 0xc($s2) -/* 036918 80035D18 C6280010 */ lwc1 $f8, 0x10($s1) -/* 03691C 80035D1C 46062001 */ sub.s $f0, $f4, $f6 -/* 036920 80035D20 C64A0010 */ lwc1 $f10, 0x10($s2) -/* 036924 80035D24 46000102 */ mul.s $f4, $f0, $f0 -/* 036928 80035D28 460A4081 */ sub.s $f2, $f8, $f10 -/* 03692C 80035D2C C6300014 */ lwc1 $f16, 0x14($s1) -/* 036930 80035D30 C6520014 */ lwc1 $f18, 0x14($s2) -/* 036934 80035D34 46021182 */ mul.s $f6, $f2, $f2 -/* 036938 80035D38 46128381 */ sub.s $f14, $f16, $f18 -/* 03693C 80035D3C 460E7282 */ mul.s $f10, $f14, $f14 -/* 036940 80035D40 46062200 */ add.s $f8, $f4, $f6 -/* 036944 80035D44 0C0326B4 */ jal sqrtf -/* 036948 80035D48 460A4300 */ add.s $f12, $f8, $f10 -/* 03694C 80035D4C 444EF800 */ cfc1 $t6, $31 -/* 036950 80035D50 8E580078 */ lw $t8, 0x78($s2) -/* 036954 80035D54 35C10003 */ ori $at, $t6, 3 -/* 036958 80035D58 38210002 */ xori $at, $at, 2 -/* 03695C 80035D5C 44C1F800 */ ctc1 $at, $31 -/* 036960 80035D60 00000000 */ nop -/* 036964 80035D64 46000424 */ cvt.w.s $f16, $f0 -/* 036968 80035D68 440F8000 */ mfc1 $t7, $f16 -/* 03696C 80035D6C 44CEF800 */ ctc1 $t6, $31 -/* 036970 80035D70 01F8082A */ slt $at, $t7, $t8 -/* 036974 80035D74 1020001C */ beqz $at, .L80035DE8 -/* 036978 80035D78 8FAC0054 */ lw $t4, 0x54($sp) -/* 03697C 80035D7C 86190000 */ lh $t9, ($s0) -/* 036980 80035D80 24040107 */ li $a0, 263 -/* 036984 80035D84 12B90006 */ beq $s5, $t9, .L80035DA0 -/* 036988 80035D88 00000000 */ nop -/* 03698C 80035D8C 8E25000C */ lw $a1, 0xc($s1) -/* 036990 80035D90 8E260010 */ lw $a2, 0x10($s1) -/* 036994 80035D94 8E270014 */ lw $a3, 0x14($s1) -/* 036998 80035D98 0C0007AA */ jal func_80001EA8 -/* 03699C 80035D9C AFA00010 */ sw $zero, 0x10($sp) -.L80035DA0: -/* 0369A0 80035DA0 0C00322D */ jal func_8000C8B4 -/* 0369A4 80035DA4 2404002D */ li $a0, 45 -/* 0369A8 80035DA8 9208020C */ lbu $t0, 0x20c($s0) -/* 0369AC 80035DAC A20201D3 */ sb $v0, 0x1d3($s0) -/* 0369B0 80035DB0 11000005 */ beqz $t0, .L80035DC8 -/* 0369B4 80035DB4 A2160203 */ sb $s6, 0x203($s0) -/* 0369B8 80035DB8 82090203 */ lb $t1, 0x203($s0) -/* 0369BC 80035DBC 00000000 */ nop -/* 0369C0 80035DC0 352A0004 */ ori $t2, $t1, 4 -/* 0369C4 80035DC4 A20A0203 */ sb $t2, 0x203($s0) -.L80035DC8: -/* 0369C8 80035DC8 820B01D8 */ lb $t3, 0x1d8($s0) -/* 0369CC 80035DCC 00000000 */ nop -/* 0369D0 80035DD0 15600005 */ bnez $t3, .L80035DE8 -/* 0369D4 80035DD4 8FAC0054 */ lw $t4, 0x54($sp) -/* 0369D8 80035DD8 86040000 */ lh $a0, ($s0) -/* 0369DC 80035DDC 0C01C8D2 */ jal func_80072348 -/* 0369E0 80035DE0 24050008 */ li $a1, 8 -/* 0369E4 80035DE4 8FAC0054 */ lw $t4, 0x54($sp) -.L80035DE8: -/* 0369E8 80035DE8 26730001 */ addiu $s3, $s3, 1 -/* 0369EC 80035DEC 026C082A */ slt $at, $s3, $t4 -/* 0369F0 80035DF0 1420FFBA */ bnez $at, .L80035CDC -/* 0369F4 80035DF4 26940004 */ addiu $s4, $s4, 4 -.L80035DF8: -/* 0369F8 80035DF8 8FBF003C */ lw $ra, 0x3c($sp) -.L80035DFC: -/* 0369FC 80035DFC 8FB00020 */ lw $s0, 0x20($sp) -/* 036A00 80035E00 8FB10024 */ lw $s1, 0x24($sp) -/* 036A04 80035E04 8FB20028 */ lw $s2, 0x28($sp) -/* 036A08 80035E08 8FB3002C */ lw $s3, 0x2c($sp) -/* 036A0C 80035E0C 8FB40030 */ lw $s4, 0x30($sp) -/* 036A10 80035E10 8FB50034 */ lw $s5, 0x34($sp) -/* 036A14 80035E14 8FB60038 */ lw $s6, 0x38($sp) -/* 036A18 80035E18 03E00008 */ jr $ra -/* 036A1C 80035E1C 27BD0068 */ addiu $sp, $sp, 0x68 - diff --git a/asm/non_matchings/unknown_032760/obj_loop_lasergun.s b/asm/non_matchings/unknown_032760/obj_loop_lasergun.s index a77ab058..201b65bd 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_lasergun.s +++ b/asm/non_matchings/unknown_032760/obj_loop_lasergun.s @@ -115,7 +115,7 @@ glabel obj_loop_lasergun /* 03535C 8003475C 0C002556 */ jal func_80009558 /* 035360 80034760 AFAB0010 */ sw $t3, 0x10($sp) /* 035364 80034764 27A40048 */ addiu $a0, $sp, 0x48 -/* 035368 80034768 0C003A95 */ jal func_8000EA54 +/* 035368 80034768 0C003A95 */ jal spawn_object /* 03536C 8003476C 24050001 */ li $a1, 1 /* 035370 80034770 1040002B */ beqz $v0, .L80034820 /* 035374 80034774 3C013F80 */ li $at, 0x3F800000 # 1.000000 diff --git a/asm/non_matchings/unknown_032760/obj_loop_levelname.s b/asm/non_matchings/unknown_032760/obj_loop_levelname.s index 8d02cbd6..be1c6e56 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_levelname.s +++ b/asm/non_matchings/unknown_032760/obj_loop_levelname.s @@ -56,7 +56,7 @@ glabel obj_loop_levelname /* 043760 80042B60 18400058 */ blez $v0, .L80042CC4 /* 043764 80042B64 8FBF0024 */ lw $ra, 0x24($sp) /* 043768 80042B68 86040004 */ lh $a0, 4($s0) -/* 04376C 80042B6C 0C01AF77 */ jal func_8006BDDC +/* 04376C 80042B6C 0C01AF77 */ jal get_level_name /* 043770 80042B70 00000000 */ nop /* 043774 80042B74 AFA2002C */ sw $v0, 0x2c($sp) /* 043778 80042B78 00402025 */ move $a0, $v0 diff --git a/asm/non_matchings/unknown_032760/obj_loop_posarrow.s b/asm/non_matchings/unknown_032760/obj_loop_posarrow.s deleted file mode 100644 index 515b9cae..00000000 --- a/asm/non_matchings/unknown_032760/obj_loop_posarrow.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel obj_loop_posarrow -/* 03823C 8003763C 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 038240 80037640 AFBF0014 */ sw $ra, 0x14($sp) -/* 038244 80037644 AFA40030 */ sw $a0, 0x30($sp) -/* 038248 80037648 AFA50034 */ sw $a1, 0x34($sp) -/* 03824C 8003764C 848E0006 */ lh $t6, 6($a0) -/* 038250 80037650 00802825 */ move $a1, $a0 -/* 038254 80037654 35CF4000 */ ori $t7, $t6, 0x4000 -/* 038258 80037658 A48F0006 */ sh $t7, 6($a0) -/* 03825C 8003765C AFA50030 */ sw $a1, 0x30($sp) -/* 038260 80037660 0C006EAB */ jal func_8001BAAC -/* 038264 80037664 27A40020 */ addiu $a0, $sp, 0x20 -/* 038268 80037668 8FA50030 */ lw $a1, 0x30($sp) -/* 03826C 8003766C 8FB80020 */ lw $t8, 0x20($sp) -/* 038270 80037670 8CA30078 */ lw $v1, 0x78($a1) -/* 038274 80037674 00000000 */ nop -/* 038278 80037678 0078082A */ slt $at, $v1, $t8 -/* 03827C 8003767C 10200014 */ beqz $at, .L800376D0 -/* 038280 80037680 0003C880 */ sll $t9, $v1, 2 -/* 038284 80037684 00594021 */ addu $t0, $v0, $t9 -/* 038288 80037688 8D040000 */ lw $a0, ($t0) -/* 03828C 8003768C 2401FFFF */ li $at, -1 -/* 038290 80037690 8C860064 */ lw $a2, 0x64($a0) -/* 038294 80037694 00000000 */ nop -/* 038298 80037698 84C90000 */ lh $t1, ($a2) -/* 03829C 8003769C 00000000 */ nop -/* 0382A0 800376A0 15210009 */ bne $t1, $at, .L800376C8 -/* 0382A4 800376A4 000361C0 */ sll $t4, $v1, 7 -/* 0382A8 800376A8 84AA0006 */ lh $t2, 6($a1) -/* 0382AC 800376AC 00000000 */ nop -/* 0382B0 800376B0 314BBFFF */ andi $t3, $t2, 0xbfff -/* 0382B4 800376B4 A4AB0006 */ sh $t3, 6($a1) -/* 0382B8 800376B8 ACC50150 */ sw $a1, 0x150($a2) -/* 0382BC 800376BC 8CA30078 */ lw $v1, 0x78($a1) -/* 0382C0 800376C0 00000000 */ nop -/* 0382C4 800376C4 000361C0 */ sll $t4, $v1, 7 -.L800376C8: -/* 0382C8 800376C8 01836023 */ subu $t4, $t4, $v1 -/* 0382CC 800376CC A4AC0018 */ sh $t4, 0x18($a1) -.L800376D0: -/* 0382D0 800376D0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0382D4 800376D4 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0382D8 800376D8 03E00008 */ jr $ra -/* 0382DC 800376DC 00000000 */ nop - diff --git a/asm/non_matchings/unknown_032760/obj_loop_snowball.s b/asm/non_matchings/unknown_032760/obj_loop_snowball.s deleted file mode 100644 index 12d740d1..00000000 --- a/asm/non_matchings/unknown_032760/obj_loop_snowball.s +++ /dev/null @@ -1,50 +0,0 @@ -glabel obj_loop_snowball -/* 038E7C 8003827C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 038E80 80038280 AFBF0024 */ sw $ra, 0x24($sp) -/* 038E84 80038284 AFB00020 */ sw $s0, 0x20($sp) -/* 038E88 80038288 AFA5002C */ sw $a1, 0x2c($sp) -/* 038E8C 8003828C 8C820064 */ lw $v0, 0x64($a0) -/* 038E90 80038290 00808025 */ move $s0, $a0 -/* 038E94 80038294 84430024 */ lh $v1, 0x24($v0) -/* 038E98 80038298 00000000 */ nop -/* 038E9C 8003829C 14600008 */ bnez $v1, .L800382C0 -/* 038EA0 800382A0 00000000 */ nop -/* 038EA4 800382A4 80440038 */ lb $a0, 0x38($v0) -/* 038EA8 800382A8 00000000 */ nop -/* 038EAC 800382AC 10800004 */ beqz $a0, .L800382C0 -/* 038EB0 800382B0 308E00FF */ andi $t6, $a0, 0xff -/* 038EB4 800382B4 A44E0024 */ sh $t6, 0x24($v0) -/* 038EB8 800382B8 84430024 */ lh $v1, 0x24($v0) -/* 038EBC 800382BC 00000000 */ nop -.L800382C0: -/* 038EC0 800382C0 10600014 */ beqz $v1, .L80038314 -/* 038EC4 800382C4 8FA5002C */ lw $a1, 0x2c($sp) -/* 038EC8 800382C8 8C480020 */ lw $t0, 0x20($v0) -/* 038ECC 800382CC 3064FFFF */ andi $a0, $v1, 0xffff -/* 038ED0 800382D0 1500000A */ bnez $t0, .L800382FC -/* 038ED4 800382D4 240F0001 */ li $t7, 1 -/* 038ED8 800382D8 8E05000C */ lw $a1, 0xc($s0) -/* 038EDC 800382DC 8E060010 */ lw $a2, 0x10($s0) -/* 038EE0 800382E0 8E070014 */ lw $a3, 0x14($s0) -/* 038EE4 800382E4 24580020 */ addiu $t8, $v0, 0x20 -/* 038EE8 800382E8 AFB80014 */ sw $t8, 0x14($sp) -/* 038EEC 800382EC 0C002556 */ jal func_80009558 -/* 038EF0 800382F0 AFAF0010 */ sw $t7, 0x10($sp) -/* 038EF4 800382F4 10000007 */ b .L80038314 -/* 038EF8 800382F8 8FA5002C */ lw $a1, 0x2c($sp) -.L800382FC: -/* 038EFC 800382FC 8E05000C */ lw $a1, 0xc($s0) -/* 038F00 80038300 8E060010 */ lw $a2, 0x10($s0) -/* 038F04 80038304 8E070014 */ lw $a3, 0x14($s0) -/* 038F08 80038308 0C0025B6 */ jal func_800096D8 -/* 038F0C 8003830C 01002025 */ move $a0, $t0 -/* 038F10 80038310 8FA5002C */ lw $a1, 0x2c($sp) -.L80038314: -/* 038F14 80038314 02002025 */ move $a0, $s0 -/* 038F18 80038318 0C007D18 */ jal func_8001F460 -/* 038F1C 8003831C 02003025 */ move $a2, $s0 -/* 038F20 80038320 8FBF0024 */ lw $ra, 0x24($sp) -/* 038F24 80038324 8FB00020 */ lw $s0, 0x20($sp) -/* 038F28 80038328 03E00008 */ jr $ra -/* 038F2C 8003832C 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_032760/obj_loop_treasuresucker.s b/asm/non_matchings/unknown_032760/obj_loop_treasuresucker.s index a836035e..3a59e628 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_treasuresucker.s +++ b/asm/non_matchings/unknown_032760/obj_loop_treasuresucker.s @@ -109,7 +109,7 @@ glabel obj_loop_treasuresucker /* 03DDE0 8003D1E0 AFA7003C */ sw $a3, 0x3c($sp) /* 03DDE4 8003D1E4 AFA60048 */ sw $a2, 0x48($sp) /* 03DDE8 8003D1E8 AFA30044 */ sw $v1, 0x44($sp) -/* 03DDEC 8003D1EC 0C003A95 */ jal func_8000EA54 +/* 03DDEC 8003D1EC 0C003A95 */ jal spawn_object /* 03DDF0 8003D1F0 A7AB002A */ sh $t3, 0x2a($sp) /* 03DDF4 8003D1F4 8FA30044 */ lw $v1, 0x44($sp) /* 03DDF8 8003D1F8 8FA60048 */ lw $a2, 0x48($sp) diff --git a/asm/non_matchings/unknown_032760/obj_loop_trophycab.s b/asm/non_matchings/unknown_032760/obj_loop_trophycab.s index 25c4cdbc..f0fe83d5 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_trophycab.s +++ b/asm/non_matchings/unknown_032760/obj_loop_trophycab.s @@ -52,7 +52,7 @@ glabel obj_loop_trophycab /* 035B48 80034F48 85390006 */ lh $t9, 6($t1) /* 035B4C 80034F4C A3AA0045 */ sb $t2, 0x45($sp) /* 035B50 80034F50 AFA30054 */ sw $v1, 0x54($sp) -/* 035B54 80034F54 0C003A95 */ jal func_8000EA54 +/* 035B54 80034F54 0C003A95 */ jal spawn_object /* 035B58 80034F58 A7B9004A */ sh $t9, 0x4a($sp) /* 035B5C 80034F5C 8FA30054 */ lw $v1, 0x54($sp) /* 035B60 80034F60 10400005 */ beqz $v0, .L80034F78 diff --git a/asm/non_matchings/unknown_032760/obj_loop_wizpigship.s b/asm/non_matchings/unknown_032760/obj_loop_wizpigship.s index fbdb2039..fe6292d8 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_wizpigship.s +++ b/asm/non_matchings/unknown_032760/obj_loop_wizpigship.s @@ -171,7 +171,7 @@ glabel obj_loop_wizpigship /* 038C10 80038010 A7B80088 */ sh $t8, 0x88($sp) /* 038C14 80038014 440D2000 */ mfc1 $t5, $f4 /* 038C18 80038018 44D9F800 */ ctc1 $t9, $31 -/* 038C1C 8003801C 0C003A95 */ jal func_8000EA54 +/* 038C1C 8003801C 0C003A95 */ jal spawn_object /* 038C20 80038020 A7AD008A */ sh $t5, 0x8a($sp) /* 038C24 80038024 1040001D */ beqz $v0, .L8003809C /* 038C28 80038028 34018000 */ li $at, 32768 diff --git a/asm/non_matchings/unknown_05DCD0/func_8005E204.s b/asm/non_matchings/unknown_05DCD0/func_8005E204.s index 287e4881..2f5e5f4e 100644 --- a/asm/non_matchings/unknown_05DCD0/func_8005E204.s +++ b/asm/non_matchings/unknown_05DCD0/func_8005E204.s @@ -121,7 +121,7 @@ glabel func_8005E204 /* 05EFD8 8005E3D8 15400023 */ bnez $t2, .L8005E468 /* 05EFDC 8005E3DC 27A40064 */ addiu $a0, $sp, 0x64 /* 05EFE0 8005E3E0 AE2B0078 */ sw $t3, 0x78($s1) -/* 05EFE4 8005E3E4 0C003A95 */ jal func_8000EA54 +/* 05EFE4 8005E3E4 0C003A95 */ jal spawn_object /* 05EFE8 8005E3E8 24050001 */ li $a1, 1 /* 05EFEC 8005E3EC 1040001E */ beqz $v0, .L8005E468 /* 05EFF0 8005E3F0 00408025 */ move $s0, $v0 diff --git a/asm/non_matchings/unknown_077C50/render_borders_for_multiplayer.s b/asm/non_matchings/unknown_077C50/render_borders_for_multiplayer.s deleted file mode 100644 index 16f7ec2c..00000000 --- a/asm/non_matchings/unknown_077C50/render_borders_for_multiplayer.s +++ /dev/null @@ -1,142 +0,0 @@ -glabel render_borders_for_multiplayer -/* 077C50 80077050 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 077C54 80077054 AFBF001C */ sw $ra, 0x1c($sp) -/* 077C58 80077058 AFB00018 */ sw $s0, 0x18($sp) -/* 077C5C 8007705C 0C01E948 */ jal get_video_width_and_height_as_s32 -/* 077C60 80077060 00808025 */ move $s0, $a0 -/* 077C64 80077064 3045FFFF */ andi $a1, $v0, 0xffff -/* 077C68 80077068 00057202 */ srl $t6, $a1, 8 -/* 077C6C 8007706C AFAE0028 */ sw $t6, 0x28($sp) -/* 077C70 80077070 8E030000 */ lw $v1, ($s0) -/* 077C74 80077074 3C18BA00 */ lui $t8, (0xBA001402 >> 16) # lui $t8, 0xba00 -/* 077C78 80077078 246F0008 */ addiu $t7, $v1, 8 -/* 077C7C 8007707C AE0F0000 */ sw $t7, ($s0) -/* 077C80 80077080 37181402 */ ori $t8, (0xBA001402 & 0xFFFF) # ori $t8, $t8, 0x1402 -/* 077C84 80077084 3C190030 */ lui $t9, 0x30 -/* 077C88 80077088 AC790004 */ sw $t9, 4($v1) -/* 077C8C 8007708C AC780000 */ sw $t8, ($v1) -/* 077C90 80077090 8E030000 */ lw $v1, ($s0) -/* 077C94 80077094 3C0D0001 */ lui $t5, (0x00010001 >> 16) # lui $t5, 1 -/* 077C98 80077098 246B0008 */ addiu $t3, $v1, 8 -/* 077C9C 8007709C AE0B0000 */ sw $t3, ($s0) -/* 077CA0 800770A0 35AD0001 */ ori $t5, (0x00010001 & 0xFFFF) # ori $t5, $t5, 1 -/* 077CA4 800770A4 3C0CF700 */ lui $t4, 0xf700 -/* 077CA8 800770A8 00022402 */ srl $a0, $v0, 0x10 -/* 077CAC 800770AC AC6C0000 */ sw $t4, ($v1) -/* 077CB0 800770B0 AC6D0004 */ sw $t5, 4($v1) -/* 077CB4 800770B4 000451C2 */ srl $t2, $a0, 7 -/* 077CB8 800770B8 AFAA0024 */ sw $t2, 0x24($sp) -/* 077CBC 800770BC AFA50038 */ sw $a1, 0x38($sp) -/* 077CC0 800770C0 0C019884 */ jal get_viewport_count -/* 077CC4 800770C4 AFA40034 */ sw $a0, 0x34($sp) -/* 077CC8 800770C8 8FA80034 */ lw $t0, 0x34($sp) -/* 077CCC 800770CC 8FA90038 */ lw $t1, 0x38($sp) -/* 077CD0 800770D0 8FAA0024 */ lw $t2, 0x24($sp) -/* 077CD4 800770D4 24010001 */ li $at, 1 -/* 077CD8 800770D8 10410008 */ beq $v0, $at, .L800770FC -/* 077CDC 800770DC 00087842 */ srl $t7, $t0, 1 -/* 077CE0 800770E0 24010002 */ li $at, 2 -/* 077CE4 800770E4 10410016 */ beq $v0, $at, .L80077140 -/* 077CE8 800770E8 24010003 */ li $at, 3 -/* 077CEC 800770EC 10410038 */ beq $v0, $at, .L800771D0 -/* 077CF0 800770F0 00000000 */ nop -/* 077CF4 800770F4 10000059 */ b .L8007725C -/* 077CF8 800770F8 8FBF001C */ lw $ra, 0x1c($sp) -.L800770FC: -/* 077CFC 800770FC 8E030000 */ lw $v1, ($s0) -/* 077D00 80077100 01EA1023 */ subu $v0, $t7, $t2 -/* 077D04 80077104 313803FF */ andi $t8, $t1, 0x3ff -/* 077D08 80077108 0018CB80 */ sll $t9, $t8, 0xe -/* 077D0C 8007710C 004A6021 */ addu $t4, $v0, $t2 -/* 077D10 80077110 3C01F600 */ lui $at, 0xf600 -/* 077D14 80077114 246E0008 */ addiu $t6, $v1, 8 -/* 077D18 80077118 AE0E0000 */ sw $t6, ($s0) -/* 077D1C 8007711C 03215825 */ or $t3, $t9, $at -/* 077D20 80077120 318D03FF */ andi $t5, $t4, 0x3ff -/* 077D24 80077124 000D7080 */ sll $t6, $t5, 2 -/* 077D28 80077128 305803FF */ andi $t8, $v0, 0x3ff -/* 077D2C 8007712C 0018C880 */ sll $t9, $t8, 2 -/* 077D30 80077130 016E7825 */ or $t7, $t3, $t6 -/* 077D34 80077134 AC6F0000 */ sw $t7, ($v1) -/* 077D38 80077138 10000047 */ b .L80077258 -/* 077D3C 8007713C AC790004 */ sw $t9, 4($v1) -.L80077140: -/* 077D40 80077140 AFA80034 */ sw $t0, 0x34($sp) -/* 077D44 80077144 AFA90038 */ sw $t1, 0x38($sp) -/* 077D48 80077148 0C01AF6C */ jal get_current_level_header -/* 077D4C 8007714C AFAA0024 */ sw $t2, 0x24($sp) -/* 077D50 80077150 0C02A116 */ jal func_800A8458 -/* 077D54 80077154 AFA20020 */ sw $v0, 0x20($sp) -/* 077D58 80077158 8FA90038 */ lw $t1, 0x38($sp) -/* 077D5C 8007715C 8FA80034 */ lw $t0, 0x34($sp) -/* 077D60 80077160 8FAA0024 */ lw $t2, 0x24($sp) -/* 077D64 80077164 14400008 */ bnez $v0, .L80077188 -/* 077D68 80077168 312F03FF */ andi $t7, $t1, 0x3ff -/* 077D6C 8007716C 8FAC0020 */ lw $t4, 0x20($sp) -/* 077D70 80077170 00000000 */ nop -/* 077D74 80077174 818D004C */ lb $t5, 0x4c($t4) -/* 077D78 80077178 00000000 */ nop -/* 077D7C 8007717C 31AB0040 */ andi $t3, $t5, 0x40 -/* 077D80 80077180 11600013 */ beqz $t3, .L800771D0 -/* 077D84 80077184 00000000 */ nop -.L80077188: -/* 077D88 80077188 8E030000 */ lw $v1, ($s0) -/* 077D8C 8007718C 000FC380 */ sll $t8, $t7, 0xe -/* 077D90 80077190 3C01F600 */ lui $at, 0xf600 -/* 077D94 80077194 310C03FF */ andi $t4, $t0, 0x3ff -/* 077D98 80077198 000C6880 */ sll $t5, $t4, 2 -/* 077D9C 8007719C 0301C825 */ or $t9, $t8, $at -/* 077DA0 800771A0 246E0008 */ addiu $t6, $v1, 8 -/* 077DA4 800771A4 AE0E0000 */ sw $t6, ($s0) -/* 077DA8 800771A8 032D5825 */ or $t3, $t9, $t5 -/* 077DAC 800771AC 00097042 */ srl $t6, $t1, 1 -/* 077DB0 800771B0 00086042 */ srl $t4, $t0, 1 -/* 077DB4 800771B4 319903FF */ andi $t9, $t4, 0x3ff -/* 077DB8 800771B8 31CF03FF */ andi $t7, $t6, 0x3ff -/* 077DBC 800771BC 000FC380 */ sll $t8, $t7, 0xe -/* 077DC0 800771C0 00196880 */ sll $t5, $t9, 2 -/* 077DC4 800771C4 AC6B0000 */ sw $t3, ($v1) -/* 077DC8 800771C8 030D5825 */ or $t3, $t8, $t5 -/* 077DCC 800771CC AC6B0004 */ sw $t3, 4($v1) -.L800771D0: -/* 077DD0 800771D0 8E030000 */ lw $v1, ($s0) -/* 077DD4 800771D4 00087842 */ srl $t7, $t0, 1 -/* 077DD8 800771D8 01EA1023 */ subu $v0, $t7, $t2 -/* 077DDC 800771DC 312C03FF */ andi $t4, $t1, 0x3ff -/* 077DE0 800771E0 8FA70028 */ lw $a3, 0x28($sp) -/* 077DE4 800771E4 000CCB80 */ sll $t9, $t4, 0xe -/* 077DE8 800771E8 004A6821 */ addu $t5, $v0, $t2 -/* 077DEC 800771EC 3C01F600 */ lui $at, 0xf600 -/* 077DF0 800771F0 246E0008 */ addiu $t6, $v1, 8 -/* 077DF4 800771F4 AE0E0000 */ sw $t6, ($s0) -/* 077DF8 800771F8 0321C025 */ or $t8, $t9, $at -/* 077DFC 800771FC 31AB03FF */ andi $t3, $t5, 0x3ff -/* 077E00 80077200 000B7080 */ sll $t6, $t3, 2 -/* 077E04 80077204 304C03FF */ andi $t4, $v0, 0x3ff -/* 077E08 80077208 000CC880 */ sll $t9, $t4, 2 -/* 077E0C 8007720C 030E7825 */ or $t7, $t8, $t6 -/* 077E10 80077210 00095842 */ srl $t3, $t1, 1 -/* 077E14 80077214 AC6F0000 */ sw $t7, ($v1) -/* 077E18 80077218 AC790004 */ sw $t9, 4($v1) -/* 077E1C 8007721C 8E030000 */ lw $v1, ($s0) -/* 077E20 80077220 01672823 */ subu $a1, $t3, $a3 -/* 077E24 80077224 00A7C021 */ addu $t8, $a1, $a3 -/* 077E28 80077228 330E03FF */ andi $t6, $t8, 0x3ff -/* 077E2C 8007722C 246D0008 */ addiu $t5, $v1, 8 -/* 077E30 80077230 AE0D0000 */ sw $t5, ($s0) -/* 077E34 80077234 000E7B80 */ sll $t7, $t6, 0xe -/* 077E38 80077238 311903FF */ andi $t9, $t0, 0x3ff -/* 077E3C 8007723C 00196880 */ sll $t5, $t9, 2 -/* 077E40 80077240 01E16025 */ or $t4, $t7, $at -/* 077E44 80077244 30B803FF */ andi $t8, $a1, 0x3ff -/* 077E48 80077248 00187380 */ sll $t6, $t8, 0xe -/* 077E4C 8007724C 018D5825 */ or $t3, $t4, $t5 -/* 077E50 80077250 AC6B0000 */ sw $t3, ($v1) -/* 077E54 80077254 AC6E0004 */ sw $t6, 4($v1) -.L80077258: -/* 077E58 80077258 8FBF001C */ lw $ra, 0x1c($sp) -.L8007725C: -/* 077E5C 8007725C 8FB00018 */ lw $s0, 0x18($sp) -/* 077E60 80077260 03E00008 */ jr $ra -/* 077E64 80077264 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/unknown_070110/get_random_number_from_range.s b/asm/unknown_070110/get_random_number_from_range.s deleted file mode 100644 index fb8040d8..00000000 --- a/asm/unknown_070110/get_random_number_from_range.s +++ /dev/null @@ -1,30 +0,0 @@ -glabel get_random_number_from_range -/* 07054C 8006F94C 3C08800E */ lui $t0, %hi(D_800DD434) # $t0, 0x800e -/* 070550 8006F950 8D08D434 */ lw $t0, %lo(D_800DD434)($t0) -/* 070554 8006F954 3C01800E */ lui $at, %hi(D_800DD434) # $at, 0x800e -/* 070558 8006F958 00A42822 */ sub $a1, $a1, $a0 -/* 07055C 8006F95C 00084FFC */ dsll32 $t1, $t0, 0x1f -/* 070560 8006F960 000857F8 */ dsll $t2, $t0, 0x1f -/* 070564 8006F964 00094FFA */ dsrl $t1, $t1, 0x1f -/* 070568 8006F968 000A503E */ dsrl32 $t2, $t2, 0 -/* 07056C 8006F96C 00085B3C */ dsll32 $t3, $t0, 0xc -/* 070570 8006F970 012A4825 */ or $t1, $t1, $t2 -/* 070574 8006F974 000B583E */ dsrl32 $t3, $t3, 0 -/* 070578 8006F978 012B4826 */ xor $t1, $t1, $t3 -/* 07057C 8006F97C 00095D3A */ dsrl $t3, $t1, 0x14 -/* 070580 8006F980 316B0FFF */ andi $t3, $t3, 0xfff -/* 070584 8006F984 01694026 */ xor $t0, $t3, $t1 -/* 070588 8006F988 AC28D434 */ sw $t0, %lo(D_800DD434)($at) -/* 07058C 8006F98C 20A50001 */ addi $a1, $a1, 1 -/* 070590 8006F990 01044023 */ subu $t0, $t0, $a0 -/* 070594 8006F994 0105001B */ divu $zero, $t0, $a1 -/* 070598 8006F998 00004012 */ mflo $t0 -/* 07059C 8006F99C 00001010 */ mfhi $v0 -/* 0705A0 8006F9A0 00441020 */ add $v0, $v0, $a0 -/* 0705A4 8006F9A4 14A00002 */ bnez $a1, .L8006F9B0 -/* 0705A8 8006F9A8 00000000 */ nop -/* 0705AC 8006F9AC 0007000D */ break 7 -.L8006F9B0: -/* 0705B0 8006F9B0 03E00008 */ jr $ra -/* 0705B4 8006F9B4 00000000 */ nop - diff --git a/include/level_object_entries.h b/include/level_object_entries.h index 1f9d4f54..d43b6dcb 100644 --- a/include/level_object_entries.h +++ b/include/level_object_entries.h @@ -50,6 +50,13 @@ typedef struct LevelObjectEntry_Exit { typedef struct LevelObjectEntry_Audio { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u16 unk8; + /* 0x0A */ u16 unkA; + /* 0x0C */ u8 unkC; + /* 0x0D */ u8 unkD; + /* 0x0E */ u8 unkE; + /* 0x0F */ u8 unkF; + /* 0x10 */ u8 unk10; } LevelObjectEntry_Audio; typedef struct LevelObjectEntry_AudioLine { @@ -91,6 +98,17 @@ typedef struct LevelObjectEntry_Checkpoint { typedef struct LevelObjectEntry_Door { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 closedRotation; + /* 0x09 */ u8 openRotation; + /* 0x0A */ u8 modelIndex; + /* 0x0B */ u8 distanceToOpen; + /* 0x0C */ s8 unkC; + /* 0x0D */ u8 numBalloonsToOpen; + /* 0x0E */ u8 unkE; + /* 0x0F */ u8 unkF; + /* 0x10 */ u8 unk10; + /* 0x11 */ s8 unk11; + /* 0x12 */ u8 scale; } LevelObjectEntry_Door; typedef struct LevelObjectEntry_FogChanger { @@ -123,6 +141,7 @@ typedef struct LevelObjectEntry_AudioSeqLine { typedef struct LevelObjectEntry_BombExplosion { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s8 unk8; } LevelObjectEntry_BombExplosion; typedef struct LevelObjectEntry_WBalloonPop { @@ -234,8 +253,45 @@ typedef struct LevelObjectEntry_CharacterFlag { /* 0x0E */ s16 unkE; } LevelObjectEntry_CharacterFlag; +/* + * Note: the member names are just my best guesses. + * Take them with a grain of salt. + */ typedef struct LevelObjectEntry_Animation { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 z_rotation; + /* 0x09 */ u8 x_rotation; + /* 0x0A */ u8 y_rotation; + /* 0x0B */ u8 scale; + /* 0x0C */ s16 objectIdToSpawn; + /* 0x0E */ s16 animationStartDelay; + /* 0x10 */ s8 actorIndex; + /* 0x11 */ s8 order; + /* 0x12 */ s8 objAnimIndex; + /* 0x13 */ u8 pad13; + /* 0x14 */ s8 nodeSpeed; + /* 0x15 */ u8 pad15[2]; + /* 0x17 */ s8 objAnimSpeed; + /* 0x18 */ u8 objAnimLoopType; // 0 = Loop, 1 = Reverse loop, 2 = Play once, 3 = reverse once then stop. + /* 0x19 */ u8 rotateType; + /* 0x1A */ s8 yawSpinSpeed; + /* 0x1B */ s8 rollSpinSpeed; + /* 0x1C */ s8 pitchSpinSpeed; + /* 0x1D */ u8 goToNode; + /* 0x1E */ u8 pad1E[3]; + /* 0x21 */ s8 channel; + /* 0x22 */ u8 pad22[2]; + /* 0x24 */ s8 pauseFrameCount; + /* 0x25 */ u8 pad25; + /* 0x26 */ u8 specialHide; + /* 0x27 */ u8 messageId; + /* 0x28 */ u8 pad28[3]; + /* 0x2B */ u8 fadeAlpha; + /* 0x2C */ u8 nextAnim; + /* 0x2D */ u8 pad2D; + /* 0x2E */ u8 soundEffect; + /* 0x2F */ u8 fadeOptions; // 1 = Start fading from fadeAlpha, 2 = make visible, 3 = make invisible. + /* 0x30 */ u8 pad30[2]; } LevelObjectEntry_Animation; typedef struct LevelObjectEntry_InfoPoint { @@ -246,6 +302,12 @@ typedef struct LevelObjectEntry_InfoPoint { typedef struct LevelObjectEntry_Trigger { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 scale; + /* 0x09 */ s8 unk9; + /* 0x0A */ u8 rotation; + /* 0x0B */ u8 unkB; + /* 0x0C */ u8 unkC; + /* 0x0D */ u8 unkD; } LevelObjectEntry_Trigger; typedef struct LevelObjectEntry_AirZippers_WaterZippers { @@ -265,6 +327,10 @@ typedef struct LevelObjectEntry_WaveGenerator { typedef struct LevelObjectEntry_Butterfly { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 unk9; + /* 0x0A */ u8 unkA; + /* 0x0B */ u8 unkB; } LevelObjectEntry_Butterfly; typedef struct LevelObjectEntry_Parkwarden { @@ -308,6 +374,11 @@ typedef struct LevelObjectEntry_HitTester { typedef struct LevelObjectEntry_MidiFade { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 scale; + /* 0x09 */ u8 rotation; + /* 0x0A */ u8 unkA[16]; // Is this 16 bytes or 15 bytes with a padded 0? + /* 0x1A */ u8 unk1A; + /* 0x1B */ u8 unk1B; } LevelObjectEntry_MidiFade; typedef struct LevelObjectEntry_DynamicLightingObject { @@ -336,6 +407,9 @@ typedef struct LevelObjectEntry_FlyCoin { typedef struct LevelObjectEntry_GoldenBalloon { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s8 unk8; + /* 0x09 */ u8 scale; + /* 0x0A */ s8 unkA; } LevelObjectEntry_GoldenBalloon; typedef struct LevelObjectEntry_Laserbolt { @@ -354,6 +428,9 @@ typedef struct LevelObjectEntry_Lasergun { typedef struct LevelObjectEntry_GroundZipper { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u8 unk8; + /* 0x09 */ u8 scale; + /* 0x0A */ u8 rotation; } LevelObjectEntry_GroundZipper; typedef struct LevelObjectEntry_OverridePos { @@ -435,6 +512,10 @@ typedef struct LevelObjectEntry_TTDoor { typedef struct LevelObjectEntry_MidiFadePoint { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ u16 unk8; + /* 0x0A */ u16 unkA; + /* 0x0C */ u8 unkC[16]; + /* 0x1C */ u8 unk1C; } LevelObjectEntry_MidiFadePoint; typedef struct LevelObjectEntry_OctoBubble { diff --git a/include/structs.h b/include/structs.h index 15dd5953..7e0e3e23 100644 --- a/include/structs.h +++ b/include/structs.h @@ -26,12 +26,12 @@ typedef struct MenuElement { // Element Type /* 0x13 */ u8 elementType; // Source type? 0 = ascii text, 2 = number, 7 = texture union { - /* 0x14 */ char* asciiText; // Pointer to ascii text to be displayed on the screen. - /* 0x14 */ u32* texture; // Pointer to texture to be displayed on the screen. - /* 0x14 */ s32* number; // Pointer to a number to be displayed on the screen. - /* 0x14 */ u16* numberU16; // Pointer to a number to be displayed on the screen. + /* 0x14 */ void *element; // Generic pointer + /* 0x14 */ char *asciiText; // Pointer to ascii text to be displayed on the screen. + /* 0x14 */ u32 *texture; // Pointer to texture to be displayed on the screen. + /* 0x14 */ s32 *number; // Pointer to a number to be displayed on the screen. + /* 0x14 */ u16 *numberU16; // Pointer to a number to be displayed on the screen. /* 0x14 */ s32 value; // Some value for elementType == 5 - /* 0x14 */ void* element; // Generic pointer } unk14_a; // Element Background Color/Transparency /* 0x18 */ s16 backgroundRed; @@ -448,7 +448,7 @@ typedef struct LevelModel { /* 0x18 */ s16 numberOfTextures; /* 0x1A */ s16 numberOfSegments; u8 pad1C[4]; -/* 0x20 */ s32 unk20; +/* 0x20 */ s32 unk20; //spriteIndex? u8 pad24[0x14]; /* 0x38 */ u32 minimapColor; } LevelModel; @@ -463,10 +463,13 @@ typedef struct Object_3C { u8 unkD; } Object_3C; -#define OBJECT_MODEL_TYPE_3D_MODEL 0 -#define OBJECT_MODEL_TYPE_SPRITE_BILLBOARD 1 -#define OBJECT_MODEL_TYPE_VEHICLE_PART 2 -#define OBJECT_MODEL_TYPE_UNKNOWN4 4 +typedef enum { + OBJECT_MODEL_TYPE_3D_MODEL, + OBJECT_MODEL_TYPE_SPRITE_BILLBOARD, + OBJECT_MODEL_TYPE_VEHICLE_PART, + OBJECT_MODEL_TYPE_UNKNOWN3, + OBJECT_MODEL_TYPE_UNKNOWN4, +} ObjectModelType; typedef struct ObjectHeader { u8 pad0[0x4]; @@ -530,7 +533,8 @@ typedef struct Object_4C { } Object_4C; typedef struct Object_50 { - u8 pad0[0x8]; + f32 unk0; + u8 pad4[0x4]; s16 unk8; s16 unkA; } Object_50; @@ -633,7 +637,8 @@ typedef struct Object_64 { u8 pad1BC[0x1A]; s8 unk1D6; s8 unk1D7; - u8 pad1D8[0x1A]; + s8 unk1D8; + u8 pad1D9[0x19]; u8 unk1F2; u8 unk1F3; } Object_64; @@ -650,8 +655,8 @@ typedef struct Object_6C { u8 pad6[0x1A]; } Object_6C; -/* Size: 0x0630 bytes */ -typedef struct Object { +/* Size: 0x018 bytes */ +typedef struct ObjectTransform { /* 0x0000 */ s16 y_rotation; /* 0x0002 */ s16 x_rotation; /* 0x0004 */ s16 z_rotation; @@ -660,32 +665,55 @@ typedef struct Object { /* 0x000C */ f32 x_position; /* 0x0010 */ f32 y_position; /* 0x0014 */ f32 z_position; +} ObjectTransform; + +/* Size: 0x44 bytes */ +typedef struct ObjectSegment { + /* 0x0000 */ ObjectTransform trans; /* 0x0018 */ s16 unk18; /* 0x001A */ s16 unk1A; /* 0x001C */ f32 x_velocity; /* 0x0020 */ f32 y_velocity; /* 0x0024 */ f32 z_velocity; - /* 0x0028 */ u32 unk28; + /* 0x0028 */ f32 unk28; - /* 0x002C */ s16 unk2C; + union { + struct { + /* 0x002C */ s16 upper; + /* 0x002E */ s16 lower; + } half; + /* 0x002C */ f32 word; + } unk2C; - /* 0x002E */ s16 unk2E; /* 0x0030 */ f32 unk30; + union { /* 0x0034 */ f32 unk34; - /* 0x0034 */ s16 unk34_s; + /* 0x0034 */ s16 levelSegmentIndex; } unk34_a; - /* 0x0038 */ u8 unk38; - /* 0x0039 */ u8 unk39; + union { + struct { + /* 0x0038 */ u8 upper; + /* 0x0039 */ u8 lower; + } half; + /* 0x0038 */ s16 word; + } unk38; + /* 0x003A */ s8 unk3A; /* 0x003B */ s8 unk3B; + union { /* 0x003C */ Object_3C* unk3C; /* 0x003C */ f32 unk3C_f; } unk3C_a; /* 0x0040 */ ObjectHeader *header; +} ObjectSegment; + +/* Size: 0x0630 bytes */ +typedef struct Object { + /* 0x0000 */ ObjectSegment segment; /* 0x0044 */ void *unk44; /* 0x0048 */ s16 behaviorId; /* 0x004A */ s16 unk4A; @@ -922,30 +950,6 @@ typedef struct Object { u32 unk378[174]; // Not an array. Unknown values. } Object; -/* Size: 0x44 bytes, might just be Object? */ -typedef struct unk80120AC0 { - s16 unk0; - s16 unk2; - s16 unk4; - u8 pad6[6]; - f32 x_position; - f32 y_position; - f32 z_position; - f32 pad18; - f32 unk1C; - f32 pad20; - f32 unk24; - f32 unk28; - f32 unk2C; - f32 unk30; - s16 levelSegmentIndex; - s16 pad36; - s16 unk38; - s8 pad3A; - s8 unk3B; - u8 pad3C[8]; -} unk80120AC0; - typedef struct unk80027FC4 { u8 unk0; u8 unk1; diff --git a/lib/src/al/global_asm/unknown_0C9C90.c b/lib/src/al/global_asm/unknown_0C9C90.c index b7d47549..dcbedd39 100644 --- a/lib/src/al/global_asm/unknown_0C9C90.c +++ b/lib/src/al/global_asm/unknown_0C9C90.c @@ -53,9 +53,7 @@ void alEvtqFlush(ALEventQueue *evtq) osSetIntMask(mask); } -#if 1 -GLOBAL_ASM("lib/asm/non_matchings/unknown_0C9C90/alEvtqPostEvent.s") -#else +#ifdef NON_EQUIVALENT void alEvtqPostEvent(ALEventQueue *evtq, ALEvent *evt, ALMicroTime delta) { ALEventListItem *item; @@ -108,6 +106,8 @@ void alEvtqPostEvent(ALEventQueue *evtq, ALEvent *evt, ALMicroTime delta) osSetIntMask(mask); } +#else +GLOBAL_ASM("lib/asm/non_matchings/unknown_0C9C90/alEvtqPostEvent.s") #endif ALMicroTime alEvtqNextEvent(ALEventQueue *evtq, ALEvent *evt) { @@ -164,9 +164,7 @@ void alSynAddPlayer(ALSynth *drvr, ALPlayer *client) { osSetIntMask(mask); } -#if 1 -GLOBAL_ASM("lib/asm/non_matchings/unknown_0C9C90/_allocatePVoice.s") -#else +#ifdef NON_EQUIVALENT s32 _allocatePVoice(ALSynth *drvr, PVoice **pvoice, s16 priority) { ALLink *dl; @@ -199,6 +197,8 @@ s32 _allocatePVoice(ALSynth *drvr, PVoice **pvoice, s16 priority) return stolen; } +#else +GLOBAL_ASM("lib/asm/non_matchings/unknown_0C9C90/_allocatePVoice.s") #endif ALParam *__allocParam(void); diff --git a/lib/src/libc/ll.c b/lib/src/libc/ll.c index 3dd1eb44..4534e4ac 100644 --- a/lib/src/libc/ll.c +++ b/lib/src/libc/ll.c @@ -4,7 +4,7 @@ #include "types.h" #include "macros.h" -#if 0 +#ifdef NON_EQUIVALENT //Thse need to be compiled with -mips3, and linked differently unsigned long long __ull_rshift(unsigned long long a0, unsigned long long a1) { diff --git a/lib/src/libc/llcvt.c b/lib/src/libc/llcvt.c index 5d7b6b52..ed627905 100644 --- a/lib/src/libc/llcvt.c +++ b/lib/src/libc/llcvt.c @@ -1,7 +1,7 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x800C9B30 */ -#if 0 +#ifdef NON_EQUIVALENT //This needs to be compiled with mips3, which isn't yet supported long long __d_to_ll(double d) { return d; diff --git a/src/asset_loading.c b/src/asset_loading.c index e3263520..4f4f1ca2 100644 --- a/src/asset_loading.c +++ b/src/asset_loading.c @@ -15,7 +15,7 @@ OSMesg gDmaMesg; OSMesgQueue gDmaMesgQueue; OSMesg gPIMesgBuf[16]; OSMesgQueue gPIMesgQueue; -s32 *gAssetsLookupTable; +u32 *gAssetsLookupTable; /*******************************/ @@ -28,7 +28,7 @@ void func_80076BA0(void) { osCreateMesgQueue(&gDmaMesgQueue, &gDmaMesg, 1); osCreatePiManager((OSPri)150, &gPIMesgQueue, gPIMesgBuf, ARRAY_COUNT(gPIMesgBuf)); assetTableSize = &__ASSETS_LUT_END - &__ASSETS_LUT_START; - gAssetsLookupTable = (s32 *)allocate_from_main_pool_safe(assetTableSize, COLOR_TAG_GRAY); + gAssetsLookupTable = (u32 *)allocate_from_main_pool_safe(assetTableSize, COLOR_TAG_GRAY); func_80071478((u8 *)gAssetsLookupTable); dmacopy((u32)&__ASSETS_LUT_START, (u32)gAssetsLookupTable, (s32)assetTableSize); } @@ -36,23 +36,23 @@ void func_80076BA0(void) { /** * Returns the memory address containing an asset section loaded from ROM. */ -s32 *load_asset_section_from_rom(u32 assetIndex) { - s32 *index; - s32 *out; +u32 *load_asset_section_from_rom(u32 assetIndex) { + u32 *index; + u32 *out; s32 size; - s32 start; + u32 start; if (gAssetsLookupTable[0] < assetIndex) { - return NULL; + return 0; } assetIndex++; index = assetIndex + gAssetsLookupTable; start = *index; size = *(index + 1) - start; - out = (s32 *)allocate_from_main_pool_safe(size, COLOR_TAG_GRAY); - if (out == NULL) { - return NULL; + out = (u32 *)allocate_from_main_pool_safe(size, COLOR_TAG_GRAY); + if (out == 0) { + return 0; } - dmacopy(start + &__ASSETS_LUT_END, out, size); + dmacopy((u32)(start + &__ASSETS_LUT_END), (u32)out, size); return out; } @@ -103,10 +103,10 @@ GLOBAL_ASM("asm/non_matchings/asset_loading/load_compressed_asset_from_rom.s") * Loads an asset section to a specific memory address. * Returns the size of asset section. */ -s32 load_asset_section_from_rom_to_address(u32 assetIndex, s32 *address) { - s32 start; +s32 load_asset_section_from_rom_to_address(u32 assetIndex, u32 address) { + u32 start; s32 size; - s32 *index; + u32 *index; if (gAssetsLookupTable[0] < assetIndex) { return 0; } @@ -114,7 +114,7 @@ s32 load_asset_section_from_rom_to_address(u32 assetIndex, s32 *address) { index = assetIndex + gAssetsLookupTable; start = *index; size = *(index + 1) - start; - dmacopy(start + &__ASSETS_LUT_END, address, size); + dmacopy((u32)(start + &__ASSETS_LUT_END), address, size); return size; } @@ -122,8 +122,8 @@ s32 load_asset_section_from_rom_to_address(u32 assetIndex, s32 *address) { * Loads part of an asset section to a specific memory address. * Returns the size argument. */ -s32 load_asset_to_address(u32 assetIndex, s32 *address, s32 assetOffset, s32 size) { - s32 *index; +s32 load_asset_to_address(u32 assetIndex, u32 address, s32 assetOffset, s32 size) { + u32 *index; s32 start; if (size == 0 || gAssetsLookupTable[0] < assetIndex) { @@ -133,16 +133,16 @@ s32 load_asset_to_address(u32 assetIndex, s32 *address, s32 assetOffset, s32 siz assetIndex++; index = assetIndex + gAssetsLookupTable; start = *index + assetOffset; - dmacopy(start + &__ASSETS_LUT_END, address, size); + dmacopy((u32)(start + &__ASSETS_LUT_END), address, size); return size; } /** * Returns a rom offset of an asset given its asset section and a local offset. */ -u8 *get_rom_offset_of_asset(u32 assetIndex, s32 assetOffset) { - s32 *index; - s32 start; +u8 *get_rom_offset_of_asset(u32 assetIndex, u32 assetOffset) { + u32 *index; + u32 start; if (gAssetsLookupTable[0] < assetIndex) { return NULL; @@ -158,7 +158,7 @@ u8 *get_rom_offset_of_asset(u32 assetIndex, s32 assetOffset) { * Returns the size of an asset section. */ s32 get_size_of_asset_section(u32 assetIndex) { - s32 *index; + u32 *index; if (gAssetsLookupTable[0] < assetIndex) { return 0; @@ -178,13 +178,13 @@ void dmacopy(u32 romOffset, u32 ramAddress, s32 numBytes) { OSMesg dmaMesg; s32 numBytesToDMA; - osInvalDCache(ramAddress, numBytes); + osInvalDCache((u32 *)ramAddress, numBytes); numBytesToDMA = MAX_TRANSFER_SIZE; while (numBytes > 0) { if (numBytes < numBytesToDMA) { numBytesToDMA = numBytes; } - osPiStartDma(&gAssetsDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, romOffset, ramAddress, numBytesToDMA, &gDmaMesgQueue); + osPiStartDma(&gAssetsDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, romOffset, (u32 *)ramAddress, numBytesToDMA, &gDmaMesgQueue); osRecvMesg(&gDmaMesgQueue, &dmaMesg, 1); numBytes -= numBytesToDMA; romOffset += numBytesToDMA; diff --git a/src/asset_loading.h b/src/asset_loading.h index 2efbc112..7fe72fef 100644 --- a/src/asset_loading.h +++ b/src/asset_loading.h @@ -5,10 +5,10 @@ #include "gzip.h" void func_80076BA0(void); -s32 *load_asset_section_from_rom(u32 assetIndex); -s32 load_asset_section_from_rom_to_address(u32 assetIndex, s32 *address); -s32 load_asset_to_address(u32 assetIndex, s32 *address, s32 assetOffset, s32 size); -u8 *get_rom_offset_of_asset(u32 assetIndex, s32 assetOffset); +u32 *load_asset_section_from_rom(u32 assetIndex); +s32 load_asset_section_from_rom_to_address(u32 assetIndex, u32 address); +s32 load_asset_to_address(u32 assetIndex, u32 address, s32 assetOffset, s32 size); +u8 *get_rom_offset_of_asset(u32 assetIndex, u32 assetOffset); s32 get_size_of_asset_section(u32 assetIndex); void dmacopy(u32 romOffset, u32 ramAddress, s32 numBytes); diff --git a/src/audio.c b/src/audio.c index e71b4afc..c768f155 100644 --- a/src/audio.c +++ b/src/audio.c @@ -500,9 +500,10 @@ u8 music_is_playing(void) { return (alCSPGetState(gMusicPlayer) == AL_PLAYING); } -#if 1 -GLOBAL_ASM("asm/non_matchings/audio/func_800015F8.s") -#else +#ifdef NON_EQUIVALENT +f32 D_800E49E0 = 46875.0f; +f32 D_800E49E4 = 46875.0f; +f32 D_800E49E8 = 120000.0f; f32 func_800015F8(void) { u32 current_cnt = osGetCount(); u32 delta; @@ -534,6 +535,8 @@ f32 func_800015F8(void) { audioPrevCount = current_cnt; return D_80115D34 / tmp; } +#else +GLOBAL_ASM("asm/non_matchings/audio/func_800015F8.s") #endif void func_80001728(u8 arg0, u8 *arg1, u8 *arg2, u8 *arg3) { @@ -696,12 +699,12 @@ void func_80001F14(u16 sndIndx, u32 *arg1) { } } -#if 1 -GLOBAL_ASM("asm/non_matchings/audio/func_80001FB8.s") -#else +#ifdef NON_EQUIVALENT void func_80001FB8(u16 arg0) { - arg0 * 10 + sSoundEffectsPool[0].unk00; + arg0 * 10 + sSoundEffectsPool[0].pad0; } +#else +GLOBAL_ASM("asm/non_matchings/audio/func_80001FB8.s") #endif u16 ALBankFile_80115D14_GetSoundCount(void) { @@ -776,9 +779,7 @@ void func_800022BC(u8 arg0, ALSeqPlayer *arg1) { } } -#if 1 -GLOBAL_ASM("asm/non_matchings/audio/func_8000232C.s") -#else +#ifdef NON_EQUIVALENT void func_8000232C(ALSeqPlayer *seqp, void *ptr, u8 *arg2, ALCSeq *seq) { if (alCSPGetState(seqp) == AL_STOPPED && *arg2) { /*load_asset_to_address(ASSET_AUDIO, ptr, @@ -793,6 +794,8 @@ void func_8000232C(ALSeqPlayer *seqp, void *ptr, u8 *arg2, ALCSeq *seq) { } } } +#else +GLOBAL_ASM("asm/non_matchings/audio/func_8000232C.s") #endif void func_80002570(ALSeqPlayer *seqp) { diff --git a/src/audio.h b/src/audio.h index 20a51d2e..ebbad97f 100644 --- a/src/audio.h +++ b/src/audio.h @@ -134,5 +134,6 @@ void func_8000232C(ALSeqPlayer *seqp, void *ptr, u8 *arg2, ALCSeq *seq); //Non M f32 func_800015F8(void); //Non Matching void func_80001FB8(u16 arg0); //Non Matching void func_80009B7C(s32 *arg0, f32 x, f32 y, f32 z); // Non Matching +void func_8000974C(s32, f32, f32, f32, s32, s32, s32, s32, s32, s32, s32, s32); #endif diff --git a/src/camera.c b/src/camera.c index a9c07ac9..520e938e 100644 --- a/src/camera.c +++ b/src/camera.c @@ -3,7 +3,7 @@ #include "camera.h" #include "audio.h" -#include "unknown_00BC20.h" +#include "objects.h" #include "game.h" #include "unknown_0255E0.h" #include "video.h" @@ -55,33 +55,33 @@ s16 D_800DD138[8] = { // RSP Viewports Vp D_800DD148[20] = { - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, - { 0, 0, 511, 0, 0, 0, 511, 0 }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, + { { { 0, 0, 511, 0 }, { 0, 0, 511, 0 } } }, }; -unk8011D510 D_800DD288 = { +ObjectTransform D_800DD288 = { 0, 0, 0, 0, 1.0f, 0.0f, 0.0f, -281.0f, }; -unk8011D510 D_800DD2A0 = { +ObjectTransform D_800DD2A0 = { 0, 0, 0, 0, 1.0f, 0.0f, 0.0f, 0.0f, }; @@ -104,7 +104,7 @@ s16 gButtonMask = 0xFFFF; /************ .bss ************/ -unk80120AC0 D_80120AC0[8]; +ObjectSegment D_80120AC0[8]; s32 gNumberOfViewports; s32 D_80120CE4; s32 D_80120CE8; @@ -121,9 +121,9 @@ s32 D_80120D20[2]; s32 D_80120D28[6]; s32 D_80120D40[6]; u16 perspNorm[12]; -Mtx *D_80120D70[6]; +Matrix *D_80120D70[6]; s32 D_80120D88[6]; -Mtx D_80120DA0[5]; +Matrix D_80120DA0[5]; Matrix D_80120EE0; // Perspective matrix? Matrix D_80120F20; Matrix D_80120F60; @@ -212,7 +212,7 @@ void update_camera_fov(f32 camFieldOfView) { if (CAMERA_MIN_FOV < camFieldOfView && camFieldOfView < CAMERA_MAX_FOV && camFieldOfView != gCurCamFOV) { gCurCamFOV = camFieldOfView; guPerspectiveF(D_80120EE0, &perspNorm[10], camFieldOfView, CAMERA_ASPECT, CAMERA_NEAR, CAMERA_FAR, CAMERA_SCALE); - func_8006F870(D_80120EE0, D_80120FE0); + func_8006F870(&D_80120EE0, &D_80120FE0); } } @@ -221,7 +221,7 @@ void update_camera_fov(f32 camFieldOfView) { */ UNUSED void calculate_camera_perspective(void) { guPerspectiveF(D_80120EE0, &perspNorm[10], CAMERA_DEFAULT_FOV, CAMERA_ASPECT, CAMERA_NEAR, CAMERA_FAR, CAMERA_SCALE); - func_8006F870(D_80120EE0, D_80120FE0); + func_8006F870(&D_80120EE0, &D_80120FE0); } /* Unused? */ @@ -237,8 +237,8 @@ s32 func_80066220(void) { return D_80120CE4; } -void func_80066230(Gfx **dlist, s32 arg1) { - unk80120AC0 *someStruct; +void func_80066230(Gfx **dlist, Gfx **arg1) { + ObjectSegment *someStruct; s16 sp2A; s16 sp28; s16 sp26; @@ -250,29 +250,29 @@ void func_80066230(Gfx **dlist, s32 arg1) { func_8006652C(0); func_800665E8(0); someStruct = func_80069D20(); - sp2A = someStruct->unk0; - sp28 = someStruct->unk2; - sp26 = someStruct->unk4; - sp20 = someStruct->x_position; - sp1C = someStruct->y_position; - sp18 = someStruct->z_position; - sp24 = someStruct->unk38; - someStruct->unk4 = 0; - someStruct->unk2 = 0; - someStruct->unk0 = -0x8000; - someStruct->unk38 = 0; - someStruct->x_position = 0.0f; - someStruct->y_position = 0.0f; - someStruct->z_position = 0.0f; + sp2A = someStruct->trans.y_rotation; + sp28 = someStruct->trans.x_rotation; + sp26 = someStruct->trans.z_rotation; + sp20 = someStruct->trans.x_position; + sp1C = someStruct->trans.y_position; + sp18 = someStruct->trans.z_position; + sp24 = someStruct->unk38.word; + someStruct->trans.z_rotation = 0; + someStruct->trans.x_rotation = 0; + someStruct->trans.y_rotation = -0x8000; + someStruct->unk38.word = 0; + someStruct->trans.x_position = 0.0f; + someStruct->trans.y_position = 0.0f; + someStruct->trans.z_position = 0.0f; func_8001D5E0(0.0f, 0.0f, -1.0f); func_80066CDC(dlist, arg1); - someStruct->unk38 = sp24; - someStruct->unk0 = sp2A; - someStruct->unk2 = sp28; - someStruct->unk4 = sp26; - someStruct->x_position = sp20; - someStruct->y_position = sp1C; - someStruct->z_position = sp18; + someStruct->unk38.word = sp24; + someStruct->trans.y_rotation = sp2A; + someStruct->trans.x_rotation = sp28; + someStruct->trans.z_rotation = sp26; + someStruct->trans.x_position = sp20; + someStruct->trans.y_position = sp1C; + someStruct->trans.z_position = sp18; } f32 func_80066348(f32 arg0, f32 arg1, f32 arg2) { @@ -285,38 +285,38 @@ f32 func_80066348(f32 arg0, f32 arg1, f32 arg2) { phi_v1 += 4; } - temp_f0 = arg2 - D_80120AC0[phi_v1].z_position; - temp_f2 = arg0 - D_80120AC0[phi_v1].x_position; - temp_f14 = arg1 - D_80120AC0[phi_v1].y_position; + temp_f0 = arg2 - D_80120AC0[phi_v1].trans.z_position; + temp_f2 = arg0 - D_80120AC0[phi_v1].trans.x_position; + temp_f14 = arg1 - D_80120AC0[phi_v1].trans.y_position; return sqrtf((temp_f0 * temp_f0) + ((temp_f2 * temp_f2) + (temp_f14 * temp_f14))); } void func_800663DC(s32 xPos, s32 yPos, s32 zPos, s32 arg3, s32 arg4, s32 arg5) { - D_80120AC0[D_80120CE4].unk4 = (s16)(arg3 * 0xB6); - D_80120AC0[D_80120CE4].x_position = (f32)xPos; - D_80120AC0[D_80120CE4].y_position = (f32)yPos; - D_80120AC0[D_80120CE4].z_position = (f32)zPos; - D_80120AC0[D_80120CE4].unk2 = (s16)(arg4 * 0xB6); - D_80120AC0[D_80120CE4].unk38 = (u16)0; - D_80120AC0[D_80120CE4].unk24 = 0.0f; + D_80120AC0[D_80120CE4].trans.z_rotation = (s16)(arg3 * 0xB6); + D_80120AC0[D_80120CE4].trans.x_position = (f32)xPos; + D_80120AC0[D_80120CE4].trans.y_position = (f32)yPos; + D_80120AC0[D_80120CE4].trans.z_position = (f32)zPos; + D_80120AC0[D_80120CE4].trans.x_rotation = (s16)(arg4 * 0xB6); + D_80120AC0[D_80120CE4].unk38.word = (s16)0; + D_80120AC0[D_80120CE4].z_velocity = 0.0f; D_80120AC0[D_80120CE4].unk28 = 0.0f; - D_80120AC0[D_80120CE4].unk2C = 0.0f; + D_80120AC0[D_80120CE4].unk2C.word = 0.0f; D_80120AC0[D_80120CE4].unk30 = 0.0f; - D_80120AC0[D_80120CE4].unk1C = 160.0f; - D_80120AC0[D_80120CE4].unk0 = (s16)(arg5 * 0xB6); + D_80120AC0[D_80120CE4].x_velocity = 160.0f; + D_80120AC0[D_80120CE4].trans.y_rotation = (s16)(arg5 * 0xB6); D_80120AC0[D_80120CE4].unk3B = D_800DD2F8[D_80120CE4]; } void func_80066488(s32 arg0, f32 xPos, f32 yPos, f32 zPos, s16 arg4, s16 arg5, s16 arg6) { arg0 += 4; - D_80120AC0[arg0].unk38 = 0; - D_80120AC0[arg0].x_position = xPos; - D_80120AC0[arg0].y_position = yPos; - D_80120AC0[arg0].z_position = zPos; - D_80120AC0[arg0].unk0 = arg4; - D_80120AC0[arg0].unk2 = arg5; - D_80120AC0[arg0].unk4 = arg6; - D_80120AC0[arg0].levelSegmentIndex = get_level_segment_index_from_position(xPos, yPos, zPos); + D_80120AC0[arg0].unk38.word = 0; + D_80120AC0[arg0].trans.x_position = xPos; + D_80120AC0[arg0].trans.y_position = yPos; + D_80120AC0[arg0].trans.z_position = zPos; + D_80120AC0[arg0].trans.y_rotation = arg4; + D_80120AC0[arg0].trans.x_rotation = arg5; + D_80120AC0[arg0].trans.z_rotation = arg6; + D_80120AC0[arg0].unk34_a.levelSegmentIndex = get_level_segment_index_from_position(xPos, yPos, zPos); D_80120D14 = 1; } @@ -581,7 +581,7 @@ UNUSED void copy_framebuffer_size_to_coords(s32 *x1, s32 *y1, s32 *x2, s32 *y2) #define SCISSOR_INTERLACE G_SC_NON_INTERLACE -void func_80066CDC(Gfx **dlist, s32 arg1) { +void func_80066CDC(Gfx **dlist, Gfx **arg1) { u32 sp58; u32 sp54; u32 sp4C; @@ -736,7 +736,7 @@ void func_80067F2C(Gfx **dlist, s32 *arg1) { widthAndHeight = get_video_width_and_height_as_s32(); height = GET_VIDEO_HEIGHT(widthAndHeight); width = GET_VIDEO_WIDTH(widthAndHeight); - func_8006F870(gOrthoMatrix, *arg1); + func_8006F870(&gOrthoMatrix, (Matrix *)*arg1); D_80120D88[0] = *arg1; D_800DD148[D_80120CE4 + 5].vp.vscale[0] = width * 2; D_800DD148[D_80120CE4 + 5].vp.vscale[1] = width * 2; @@ -764,7 +764,7 @@ void func_8006807C(Gfx **dlist, s32 *arg1) { func_8006F768(&D_80121060, &D_80120EE0, &D_80120F20); func_8006FE74(D_80120D70[0], &D_800DD2A0); func_8006F768(D_80120D70[0], &D_80120F20, &D_80121060); - func_8006F870(D_80121060, (s32 *)*arg1); // This doesn't look right. Need to check this! + func_8006F870(&D_80121060, (Matrix *)*arg1); fast3d_cmd((*dlist)++, 0x1000040, (u32)(*arg1 + 0x80000000)); *arg1 += 0x40; D_80120D1C = 0; @@ -807,7 +807,7 @@ void func_800682AC(Gfx **dlist) { void func_80068408(Gfx **dlist, s32 *arg1) { func_800705F8(D_80120D70[D_80120D1C], 0.0f, 0.0f, 0.0f); func_8006F768(D_80120D70[D_80120D1C], &D_80120F20, &D_80121060); - func_8006F870(D_80121060, (s32 *)*arg1); // This doesn't look right. Need to check this! + func_8006F870(&D_80121060, (Matrix *)*arg1); D_80120D88[D_80120D1C] = *arg1; fast3d_cmd((*dlist)++, ((((D_80120D08 << 6) & 0xFF) << 0x10) | 0x1000000) | 0x40, (u32)(*arg1 + 0x80000000)); @@ -826,18 +826,18 @@ GLOBAL_ASM("asm/non_matchings/camera/func_80069484.s") GLOBAL_ASM("asm/non_matchings/camera/func_80069790.s") GLOBAL_ASM("asm/non_matchings/camera/func_80069A40.s") -unk80120AC0 *func_80069CFC(void) { +ObjectSegment *func_80069CFC(void) { return &D_80120AC0[D_80120CE4]; } -unk80120AC0 *func_80069D20(void) { +ObjectSegment *func_80069D20(void) { if (D_80120D14 != 0) { return &D_80120AC0[D_80120CE4 + 4]; } return &D_80120AC0[D_80120CE4]; } -unk80120AC0 *func_80069D7C(void) { +ObjectSegment *func_80069D7C(void) { if (D_80120D14 != 0) { return &D_80120AC0[4]; } @@ -872,9 +872,9 @@ void func_80069E14(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) { s32 i; for (i = 0; i <= gNumberOfViewports; i++) { - temp_f0 = arg0 - D_80120AC0[i].x_position; - temp_f2 = arg1 - D_80120AC0[i].y_position; - temp_f14 = arg2 - D_80120AC0[i].z_position; + temp_f0 = arg0 - D_80120AC0[i].trans.x_position; + temp_f2 = arg1 - D_80120AC0[i].trans.y_position; + temp_f14 = arg2 - D_80120AC0[i].trans.z_position; temp_f0_2 = sqrtf(((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) + (temp_f14 * temp_f14)); if (temp_f0_2 < arg3) { D_80120AC0[i].unk30 = ((arg3 - temp_f0_2) * arg4) / arg3; @@ -1016,8 +1016,9 @@ u16 get_buttons_held_from_player(s32 player) { /** * Returns the buttons that are newly pressed during that frame. + * NOTE: This was a u16, but we only got a match in menu_ghost_data_loop when it was a u32 for some reason */ -u16 get_buttons_pressed_from_player(s32 player) { +u32 get_buttons_pressed_from_player(s32 player) { return sControllerButtonsPressed[sPlayerID[player]]; } @@ -1031,14 +1032,14 @@ UNUSED u16 get_buttons_released_from_player(s32 player) { /** * Clamps the X joystick axis of the selected player to 70 and returns it. */ -s32 clamp_joystick_x_axis(s32 player) { +s8 clamp_joystick_x_axis(s32 player) { return clamp_joystick(sControllerData[sPlayerID[player]].rawStickX); } /** * Clamps the Y joystick axis of the selected player to 70 and returns it. */ -s32 clamp_joystick_y_axis(s32 player) { +s8 clamp_joystick_y_axis(s32 player) { return clamp_joystick(sControllerData[sPlayerID[player]].rawStickY); } @@ -1046,7 +1047,7 @@ s32 clamp_joystick_y_axis(s32 player) { * Keeps the joysticks axis reads no higher than 70 (of a possible 127 or -128) * Will also pull the reading towards the centre. */ -s32 clamp_joystick(s8 stickMag) { +s8 clamp_joystick(s8 stickMag) { if (stickMag < JOYSTICK_DEADZONE && stickMag > -JOYSTICK_DEADZONE) { return 0; } diff --git a/src/camera.h b/src/camera.h index b587e68e..7f8d8de3 100644 --- a/src/camera.h +++ b/src/camera.h @@ -7,6 +7,7 @@ #include "f3ddkr.h" #include "menu.h" #include "libultra_internal.h" +#include "math.h" #define SCREEN_WIDTH 320 #define SCREEN_HEIGHT 240 @@ -85,9 +86,9 @@ extern s16 D_800DD138[8]; // RSP Viewports extern Vp D_800DD148[20]; -extern unk8011D510 D_800DD288; +extern ObjectTransform D_800DD288; -extern unk8011D510 D_800DD2A0; +extern ObjectTransform D_800DD2A0; extern Matrix gOrthoMatrix; @@ -96,13 +97,11 @@ extern u8 D_800DD2F8[8]; extern s16 gButtonMask; //TODO: Figure out where these functions live: unknown_070110? - void func_8006F870(Matrix, Matrix); //unknown_070110 - void func_800705F8(s32, f32, f32, f32); //From unknown_070110 - void func_8006FE74(Matrix *, unk8011D510 *); // Non Matching unknown_070110? + void func_8006F870(Matrix *, Matrix *); //unknown_070110 + void func_800705F8(Matrix *, f32, f32, f32); //From unknown_070110 + void func_8006FE74(Matrix *, ObjectTransform *); // Non Matching unknown_070110? void func_8006F768(Matrix *, Matrix *, Matrix *); // Non Matching unknown_070110? -f32 sqrtf(f32); //IDO? - void func_80066060(s32 arg0, s32 arg1); void func_80066098(s8 arg0); void func_800660C0(void); @@ -113,8 +112,8 @@ UNUSED void calculate_camera_perspective(void); Matrix *func_80066204(void); s32 get_viewport_count(void); s32 func_80066220(void); -void func_80066CDC(Gfx **dlist, s32 arg1); -void func_80066230(Gfx **dlist, s32 arg1); +void func_80066CDC(Gfx **dlist, Gfx **arg1); +void func_80066230(Gfx **dlist, Gfx **arg1); f32 func_80066348(f32 arg0, f32 arg1, f32 arg2); void func_800663DC(s32 xPos, s32 yPos, s32 zPos, s32 arg3, s32 arg4, s32 arg5); void func_80066488(s32 arg0, f32 xPos, f32 yPos, f32 zPos, s16 arg4, s16 arg5, s16 arg6); @@ -130,7 +129,6 @@ void set_viewport_properties(s32 viewPortIndex, s32 x1, s32 x2, s32 y1, s32 y2); s32 copy_viewport_background_size_to_coords(s32 viewPortIndex, s32 *x1, s32 *y1, s32 *x2, s32 *y2); void copy_viewport_frame_size_to_coords(s32 viewPortIndex, s32 *arg1, s32 *arg2, s32 *arg3, s32 *arg4); void copy_framebuffer_size_to_coords(s32 *x1, s32 *y1, s32 *x2, s32 *y2); -void func_80066CDC(Gfx **dlist, s32 arg1); void set_ortho_matrix_height(f32 value); void func_80067F2C(Gfx **dlist, s32 *arg1); void func_8006807C(Gfx **dlist, s32 *arg1); @@ -138,9 +136,9 @@ void func_80068158(Gfx **dlist, s32 arg1, s32 arg2, s32 arg3, s32 arg4); void func_800682AC(Gfx **dlist); void func_80068408(Gfx **dlist, s32 *arg1); void func_80068508(s32 arg0); -unk80120AC0 *func_80069CFC(void); -unk80120AC0 *func_80069D20(void); -unk80120AC0 *func_80069D7C(void); +ObjectSegment *func_80069CFC(void); +ObjectSegment *func_80069D20(void); +ObjectSegment *func_80069D7C(void); Matrix *func_80069DA4(void); Matrix *func_80069DB0(void); Matrix *func_80069DBC(void); @@ -154,14 +152,19 @@ void assign_player_ids(s8 *activePlayers); u8 get_player_id(s32 player); void swap_player_1_and_2_ids(void); u16 get_buttons_held_from_player(s32 player); -u16 get_buttons_pressed_from_player(s32 player); +u32 get_buttons_pressed_from_player(s32 player); UNUSED u16 get_buttons_released_from_player(s32 player); -s32 clamp_joystick_x_axis(s32 player); -s32 clamp_joystick_y_axis(s32 player); -s32 clamp_joystick(s8 stickMag); +s8 clamp_joystick_x_axis(s32 player); +s8 clamp_joystick_y_axis(s32 player); +s8 clamp_joystick(s8 stickMag); void disable_button_mask(void); +s32 init_controllers(void); // Non Matching void func_80067A3C(Gfx **dlist); +void func_80066610(void); +void func_80066CDC(Gfx **dlist, Gfx **arg1); +void func_80065EA0(void); +s32 func_8006A1C4(s32 arg0, s32 logicUpdateRate); #endif diff --git a/src/fade_transition.c b/src/fade_transition.c index fceee67b..4151a199 100644 --- a/src/fade_transition.c +++ b/src/fade_transition.c @@ -465,7 +465,8 @@ void render_fade_circle(Gfx **dlist, s32 arg1, s32 arg2) { GLOBAL_ASM("asm/non_matchings/fade_transition/render_fade_circle.s") #endif -#if 0 // This doesn't work properly. +#ifdef NON_EQUIVALENT +// This doesn't work properly. void render_fade_waves(Gfx **dlist, s32 arg1, s32 arg2) { s32 i; func_8007B3D0(dlist); diff --git a/src/font.c b/src/font.c index ebec4531..5e489c5b 100644 --- a/src/font.c +++ b/src/font.c @@ -85,7 +85,7 @@ s32 D_8012A7FC; * Loads the text asset data and sets the default values for each dialogue box in the list. */ void load_fonts(void) { - s32 *fontAssetData; + u32 *fontAssetData; s32 i; fontAssetData = load_asset_section_from_rom(ASSET_BINARY_44); @@ -157,9 +157,9 @@ void func_800C4164(s32 arg0) { #ifdef NON_EQUIVALENT // Mostly has regalloc issues. -void func_800C4170(s32 arg0) { - if (arg0 < gNumberOfFonts) { - FontData *fontData = &gFonts[arg0]; +void func_800C4170(s32 fontID) { + if (fontID < gNumberOfFonts) { + FontData *fontData = &gFonts[fontID]; fontData->unk28[0]++; if (fontData->unk28[0] == 1) { // Minor issue with this loop. @@ -257,14 +257,14 @@ void set_text_background_colour(s32 red, s32 green, s32 blue, s32 alpha) { } // Unused? -void func_800C4404(Gfx **displayList, char *text, s32 alignmentFlags) { +void func_800C4404(Gfx **displayList, char *text, AlignmentFlags alignmentFlags) { func_800C45A4(displayList, &(*gDialogueBoxBackground)[0], text, alignmentFlags, 1.0f); } /** * Builds the background settings, then renders the given text at a given position. */ -void draw_text(Gfx **displayList, s32 xpos, s32 ypos, char *text, s32 alignmentFlags) { +void draw_text(Gfx **displayList, s32 xpos, s32 ypos, char *text, AlignmentFlags alignmentFlags) { DialogueBoxBackground *temp = &(*gDialogueBoxBackground)[0]; temp->xpos = (xpos == POS_CENTRED) ? temp->width >> 1 : xpos; temp->ypos = (ypos == POS_CENTRED) ? temp->height >> 1 : ypos; @@ -272,17 +272,17 @@ void draw_text(Gfx **displayList, s32 xpos, s32 ypos, char *text, s32 alignmentF } // Unused? -void func_800C44C0(Gfx **displayList, s32 arg1, char *text, s32 alignmentFlags) { - if (arg1 >= 0 && arg1 < 8) { - DialogueBoxBackground *temp = &gDialogueBoxBackground[arg1]; +void func_800C44C0(Gfx **displayList, s32 dialogueBoxID, char *text, AlignmentFlags alignmentFlags) { + if (dialogueBoxID >= 0 && dialogueBoxID < DIALOGUEBOXBACKGROUND_COUNT) { + DialogueBoxBackground *temp = &gDialogueBoxBackground[dialogueBoxID]; func_800C45A4(displayList, temp, text, alignmentFlags, 1.0f); } } // Unused? -void func_800C4510(Gfx **displayList, s32 arg1, s32 xpos, s32 ypos, char *text, s32 alignmentFlags) { - if (arg1 >= 0 && arg1 < 8) { - DialogueBoxBackground *temp = &gDialogueBoxBackground[arg1]; +void func_800C4510(Gfx **displayList, s32 dialogueBoxID, s32 xpos, s32 ypos, char *text, AlignmentFlags alignmentFlags) { + if (dialogueBoxID >= 0 && dialogueBoxID < DIALOGUEBOXBACKGROUND_COUNT) { + DialogueBoxBackground *temp = &gDialogueBoxBackground[dialogueBoxID]; temp->xpos = (xpos == POS_CENTRED) ? temp->width >> 1 : xpos; temp->ypos = (ypos == POS_CENTRED) ? temp->height >> 1 : ypos; func_800C45A4(displayList, temp, text, alignmentFlags, 1.0f); @@ -336,9 +336,9 @@ s32 func_800C4DA0(u8 *text, s32 x, s32 font) { GLOBAL_ASM("asm/non_matchings/font/func_800C4DA0.s") #endif -void set_current_dialogue_box_coords(s32 arg0, s32 x1, s32 y1, s32 x2, s32 y2) { - if (arg0 > 0 && arg0 < 8) { - DialogueBoxBackground *temp = &gDialogueBoxBackground[arg0]; +void set_current_dialogue_box_coords(s32 dialogueBoxID, s32 x1, s32 y1, s32 x2, s32 y2) { + if (dialogueBoxID > 0 && dialogueBoxID < DIALOGUEBOXBACKGROUND_COUNT) { + DialogueBoxBackground *temp = &gDialogueBoxBackground[dialogueBoxID]; temp->xpos = 0; temp->ypos = 0; if (x1 < x2) { @@ -360,31 +360,31 @@ void set_current_dialogue_box_coords(s32 arg0, s32 x1, s32 y1, s32 x2, s32 y2) { } } -void set_dialogue_font(s32 arg0, s32 font) { - if (arg0 >= 0 && arg0 < 8) { - DialogueBoxBackground *temp = &gDialogueBoxBackground[arg0]; +void set_dialogue_font(s32 dialogueBoxID, s32 font) { + if (dialogueBoxID >= 0 && dialogueBoxID < DIALOGUEBOXBACKGROUND_COUNT) { + DialogueBoxBackground *temp = &gDialogueBoxBackground[dialogueBoxID]; if (font < gNumberOfFonts) { temp->font = font; } } } -void set_current_dialogue_background_colour(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { - if (arg0 > 0 && arg0 < 8) { - DialogueBoxBackground *temp = &gDialogueBoxBackground[arg0]; - temp->backgroundColourR = arg1; - temp->backgroundColourG = arg2; - temp->backgroundColourB = arg3; - temp->backgroundColourA = arg4; +void set_current_dialogue_background_colour(s32 dialogueBoxID, s32 red, s32 green, s32 blue, s32 alpha) { + if (dialogueBoxID > 0 && dialogueBoxID < DIALOGUEBOXBACKGROUND_COUNT) { + DialogueBoxBackground *temp = &gDialogueBoxBackground[dialogueBoxID]; + temp->backgroundColourR = red; + temp->backgroundColourG = green; + temp->backgroundColourB = blue; + temp->backgroundColourA = alpha; } } -void set_current_text_colour(s32 arg0, s32 red, s32 green, s32 blue, s32 alpha, s32 opacity) { +void set_current_text_colour(s32 dialogueBoxID, s32 red, s32 green, s32 blue, s32 alpha, s32 opacity) { DialogueBoxBackground *temp; - if (arg0 <= 0 || arg0 >= 8) { + if (dialogueBoxID <= 0 || dialogueBoxID >= DIALOGUEBOXBACKGROUND_COUNT) { return; } - temp = &gDialogueBoxBackground[arg0]; + temp = &gDialogueBoxBackground[dialogueBoxID]; temp->textColourR = red; temp->textColourG = green; temp->textColourB = blue; @@ -392,12 +392,12 @@ void set_current_text_colour(s32 arg0, s32 red, s32 green, s32 blue, s32 alpha, temp->opacity = opacity; } -void set_current_text_background_colour(s32 arg0, s32 red, s32 green, s32 blue, s32 alpha) { +void set_current_text_background_colour(s32 dialogueBoxID, s32 red, s32 green, s32 blue, s32 alpha) { DialogueBoxBackground *dialogueBox; - if (arg0 <= 0 || arg0 >= 8) { + if (dialogueBoxID <= 0 || dialogueBoxID >= DIALOGUEBOXBACKGROUND_COUNT) { return; } - dialogueBox = &gDialogueBoxBackground[arg0]; + dialogueBox = &gDialogueBoxBackground[dialogueBoxID]; dialogueBox->textBGColourR = red; dialogueBox->textBGColourG = green; dialogueBox->textBGColourB = blue; @@ -405,30 +405,30 @@ void set_current_text_background_colour(s32 arg0, s32 red, s32 green, s32 blue, } // Unused? -void func_800C5094(s32 arg0, s32 arg1, s32 arg2) { +void func_800C5094(s32 dialogueBoxID, s32 arg1, s32 arg2) { DialogueBoxBackground *dialogueBox; - if (arg0 <= 0 || arg0 >= 8) { + if (dialogueBoxID <= 0 || dialogueBoxID >= DIALOGUEBOXBACKGROUND_COUNT) { return; } - dialogueBox = &gDialogueBoxBackground[arg0]; + dialogueBox = &gDialogueBoxBackground[dialogueBoxID]; dialogueBox->unk20 += arg1; dialogueBox->unk22 += arg2; } // Unused? -void func_800C50D8(s32 arg0) { +void func_800C50D8(s32 dialogueBoxID) { DialogueBoxBackground *dialogueBox; - if (arg0 <= 0 || arg0 >= 8) { + if (dialogueBoxID <= 0 || dialogueBoxID >= DIALOGUEBOXBACKGROUND_COUNT) { return; } - dialogueBox = &gDialogueBoxBackground[arg0]; + dialogueBox = &gDialogueBoxBackground[dialogueBoxID]; dialogueBox->unk20 = 0; dialogueBox->unk22 = 0; } // Unused? -void func_800C510C(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - render_dialogue_text(arg0, (*gDialogueBoxBackground)[arg0].xpos, (*gDialogueBoxBackground)[arg0].ypos, arg1, arg2, arg3); +void func_800C510C(s32 dialogueBoxID, char *text, s32 arg2, s32 arg3) { + render_dialogue_text(dialogueBoxID, (*gDialogueBoxBackground)[dialogueBoxID].xpos, (*gDialogueBoxBackground)[dialogueBoxID].ypos, text, arg2, arg3); } GLOBAL_ASM("asm/non_matchings/font/render_dialogue_text.s") @@ -552,7 +552,7 @@ void func_800C56D0(s32 dialogueBoxID) { * Contains a timer that counts down two frames before closing a dialogue box * when the player exits out of one. */ -void render_dialogue_boxes(Gfx *dlist, Gfx *mat, VertexList *verts) { +void render_dialogue_boxes(Gfx **dlist, Gfx **mat, VertexList **verts) { s32 i; if (sDialogueBoxIsOpen) { @@ -563,13 +563,13 @@ void render_dialogue_boxes(Gfx *dlist, Gfx *mat, VertexList *verts) { } } - for (i = 1; i < 8; i++) { + for (i = 1; i < DIALOGUEBOXBACKGROUND_COUNT; i++) { if ((*gDialogueBoxBackground)[i].flags & DIALOGUE_BOX_OPEN) { //render_printf("%X\n", (*gDialogueBoxBackground)[i].flags); if ((*gDialogueBoxBackground)[i].flags & DIALOGUE_BOX_UNK_01) { render_dialogue_box(dlist, mat, verts, i); } else { - render_dialogue_box(dlist, 0, 0, i); + render_dialogue_box(dlist, NULL, NULL, i); } } } @@ -623,7 +623,7 @@ void render_fill_rectangle(Gfx **dlist, s32 ulx, s32 uly, s32 lrx, s32 lry) { u32 width = GET_VIDEO_WIDTH(widthAndHeight); u32 height = GET_VIDEO_HEIGHT(widthAndHeight); - if (lrx >= 0 && ulx < width && lry >= 0 && uly < height) { + if (lrx >= 0 && (u32)ulx < width && lry >= 0 && (u32)uly < height) { if (ulx < 0) { ulx = 0; } @@ -637,7 +637,7 @@ void render_fill_rectangle(Gfx **dlist, s32 ulx, s32 uly, s32 lrx, s32 lry) { /** * Render the selected dialogue box. Background first, then text. */ -void render_dialogue_box(Gfx **dlist, Gfx *mat, VertexList *verts, s32 dialogueBoxID) { +void render_dialogue_box(Gfx **dlist, Gfx **mat, VertexList **verts, s32 dialogueBoxID) { DialogueBoxBackground *dialogueBox; DialogueBox *dialogueTextBox; s32 i; @@ -696,8 +696,8 @@ void render_dialogue_box(Gfx **dlist, Gfx *mat, VertexList *verts, s32 dialogueB dialogueBox->textBGColourA = dialogueTextBox->textBGColourA; dialogueBox->opacity = dialogueTextBox->opacity; dialogueBox->font = dialogueTextBox->font; - parse_string_with_number(dialogueTextBox->text, &text, dialogueTextBox->textNum); - func_800C45A4(dlist, dialogueBox, &text, 0, 1.0f); + parse_string_with_number(dialogueTextBox->text, text, dialogueTextBox->textNum); + func_800C45A4(dlist, dialogueBox, text, 0, 1.0f); dialogueTextBox = dialogueTextBox->nextBox; } } diff --git a/src/font.h b/src/font.h index dfde6e4c..54544a1b 100644 --- a/src/font.h +++ b/src/font.h @@ -18,12 +18,12 @@ #define DIALOGUE_NUM_NULL 0xFF -enum TextFonts { +typedef enum TextFonts { FONT_COLOURFUL, FONT_SMALL, FONT_LARGE, FONT_UNK_FF = 255, -}; +} TextFonts; enum DialogueFlags { DIALOGUE_BOX_UNUSED_01 = 0x0001, @@ -34,6 +34,30 @@ enum DialogueFlags { DIALOGUE_BOX_UNUSED_02 = 0xFFFE, }; +typedef enum HorizontalAlignmentFlags { + HORZ_ALIGN_LEFT = 0, + HORZ_ALIGN_RIGHT = 1, + HORZ_ALIGN_CENTER = 4, +} HorizontalAlignmentFlags; + +typedef enum VerticalAlignmentFlags { + VERT_ALIGN_TOP = 0, + VERT_ALIGN_BOTTOM = 2, + VERT_ALIGN_MIDDLE = 8, +} VerticalAlignmentFlags; + +typedef enum AlignmentFlags { + ALIGN_TOP_LEFT = VERT_ALIGN_TOP | HORZ_ALIGN_LEFT, + ALIGN_TOP_CENTER = VERT_ALIGN_TOP | HORZ_ALIGN_CENTER, + ALIGN_TOP_RIGHT = VERT_ALIGN_TOP | HORZ_ALIGN_RIGHT, + ALIGN_MIDDLE_LEFT = VERT_ALIGN_MIDDLE | HORZ_ALIGN_LEFT, + ALIGN_MIDDLE_CENTER = VERT_ALIGN_MIDDLE | HORZ_ALIGN_CENTER, + ALIGN_MIDDLE_RIGHT = VERT_ALIGN_MIDDLE | HORZ_ALIGN_RIGHT, + ALIGN_BOTTOM_LEFT = VERT_ALIGN_BOTTOM | HORZ_ALIGN_LEFT, + ALIGN_BOTTOM_CENTER = VERT_ALIGN_BOTTOM | HORZ_ALIGN_CENTER, + ALIGN_BOTTOM_RIGHT = VERT_ALIGN_BOTTOM | HORZ_ALIGN_RIGHT, +} AlignmentFlags; + /* Size: 0x20 bytes */ typedef struct unk8012A7EC { u8 unk0; @@ -93,7 +117,7 @@ typedef struct FontData { typedef struct DialogueBox { u8 unk00; // Unused u8 textNum; // A number that is drawn with the text, like a balloon door telling you how many more you need. - char *text; // Pointer to the text array + unsigned char *text; // Pointer to the text array s16 x1; // Left position of the text s16 y1; // Top portion of the text s16 x2; // Right portion of the text @@ -158,21 +182,20 @@ typedef struct DialogueBoxBackground { void load_fonts(void); void func_800C4164(s32 arg0); void set_text_font(s32 arg0); -void render_dialogue_box(Gfx **dlist, Gfx *mat, VertexList *verts, s32 index); void set_text_colour(s32 red, s32 green, s32 blue, s32 alpha, s32 opacity); void set_text_background_colour(s32 red, s32 green, s32 blue, s32 alpha); -void func_800C4404(Gfx** displayList, char *text, s32 alignmentFlags); -void draw_text(Gfx** displayList, s32 xpos, s32 ypos, char *text, s32 alignmentFlags); -void func_800C44C0(Gfx** displayList, s32 arg1, char *text, s32 alignmentFlags); -void func_800C4510(Gfx** displayList, s32 arg1, s32 xpos, s32 ypos, char *text, s32 alignmentFlags); -void set_current_dialogue_box_coords(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -void set_dialogue_font(s32 arg0, s32 font); -void set_current_dialogue_background_colour(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -void set_current_text_colour(s32 arg0, s32 red, s32 green, s32 blue, s32 alpha, s32 opacity); -void set_current_text_background_colour(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -void func_800C5094(s32 arg0, s32 arg1, s32 arg2); -void func_800C50D8(s32 arg0); -void func_800C510C(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_800C4404(Gfx** displayList, char *text, AlignmentFlags alignmentFlags); +void draw_text(Gfx** displayList, s32 xpos, s32 ypos, char *text, AlignmentFlags alignmentFlags); +void func_800C44C0(Gfx** displayList, s32 dialogueBoxID, char *text, AlignmentFlags alignmentFlags); +void func_800C4510(Gfx** displayList, s32 dialogueBoxID, s32 xpos, s32 ypos, char *text, AlignmentFlags alignmentFlags); +void set_current_dialogue_box_coords(s32 dialogueBoxID, s32 x1, s32 y1, s32 x2, s32 y2); +void set_dialogue_font(s32 dialogueBoxID, s32 font); +void set_current_dialogue_background_colour(s32 dialogueBoxID, s32 red, s32 green, s32 blue, s32 alpha); +void set_current_text_colour(s32 dialogueBoxID, s32 red, s32 green, s32 blue, s32 alpha, s32 opacity); +void set_current_text_background_colour(s32 dialogueBoxID, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void func_800C5094(s32 dialogueBoxID, s32 arg1, s32 arg2); +void func_800C50D8(s32 dialogueBoxID); +void func_800C510C(s32 dialogueBoxID, char *text, s32 arg2, s32 arg3); void move_dialogue_box_to_front(s32 arg0, DialogueBox *arg1); void assign_dialogue_box_id(s32 arg0); void func_800C54E8(s32 arg0, unk800C54E8 *arg1, s32 arg2, s32 arg3, s32 arg4); @@ -182,16 +205,16 @@ UNUSED void func_800C564C(s32 dialogueBoxID); UNUSED void func_800C5678(s32 dialogueBoxID); UNUSED void func_800C56A4(s32 dialogueBoxID); void func_800C56D0(s32 dialogueBoxID); -void render_dialogue_boxes(Gfx *dlist, Gfx *mat, VertexList *verts); +void render_dialogue_boxes(Gfx **dlist, Gfx **mat, VertexList **verts); void render_fill_rectangle(Gfx **dlist, s32 ulx, s32 uly, s32 lrx, s32 lry); -void render_dialogue_box(Gfx **dlist, Gfx *mat, VertexList *verts, s32 index); +void render_dialogue_box(Gfx **dlist, Gfx **mat, VertexList **verts, s32 dialogueBoxID); void parse_string_with_number(unsigned char *input, char *output, s32 number); void s32_to_string(char** outString, s32 number); //Non Matching TextureHeader *func_800C4318(s32 font, u8 arg1); //Non Matching -void func_800C4170(s32 arg0); //Non Matching +void func_800C4170(s32 fontID); //Non Matching void func_800C422C(s32 arg0); //Non Matching -void func_800C45A4(Gfx **dlist, DialogueBoxBackground *arg1, u8 *text, s32 alignmentFlags, f32 arg4); //Non Matching +void func_800C45A4(Gfx **dlist, DialogueBoxBackground *arg1, char *text, AlignmentFlags alignmentFlags, f32 arg4); //Non Matching s32 func_800C4DA0(u8 *text, s32 x, s32 font); //Non Matching void *render_dialogue_text(s32 arg0, s32 posX, s32 posY, char *text, s32 arg4, s32 arg5); //Non Matching diff --git a/src/game.c b/src/game.c index 739cf265..7f58ecfc 100644 --- a/src/game.c +++ b/src/game.c @@ -22,7 +22,7 @@ #include "thread30.h" #include "unknown_0ABDF0.h" #include "audio.h" -#include "unknown_00BC20.h" +#include "objects.h" #include "camera.h" #include "save_data.h" #include "unknown_078050.h" @@ -33,6 +33,14 @@ #include "printf.h" #include "fade_transition.h" #include "unknown_077C50.h" +#include "unknown_008C40.h" +#include "unknown_0255E0.h" +#include "game_text.h" +#include "game_ui.h" +#include "main.h" +#include "object_models.h" +#include "racer.h" +#include "particles.h" /************ .rodata ************/ @@ -70,9 +78,9 @@ s8 D_800DD330 = 0; // Unused char *D_800DD334[6] = { NULL, NULL, NULL, // These could be a file boundary. - D_800E7110, - D_800E7118, - D_800E7128 + (char *)D_800E7110, + (char *)D_800E7118, + (char *)D_800E7128 }; // Unused @@ -106,7 +114,7 @@ FadeTransition D_800DD408 = FADE_TRANSITION(0, FADE_COLOR_WHITE, 30, -1); // Unused? // CAR / HOV / PLN - So this is vehicle type? char *D_800DD410[3] = { - D_800E713C, D_800E7140, D_800E7144 + (char *)D_800E713C, (char *)D_800E7140, (char *)D_800E7144 }; FadeTransition D_800DD41C = FADE_TRANSITION(0, FADE_COLOR_BLACK, 30, -1); FadeTransition D_800DD424 = FADE_TRANSITION(0, FADE_COLOR_BLACK, 260, -1); @@ -116,10 +124,10 @@ extern s32 gShowControllerPakMenu; /************ .bss ************/ -s32 *gTempAssetTable; +u32 *gTempAssetTable; s32 D_80121164; LevelHeader *gCurrentLevelHeader; -u8 **D_8012116C; +u8 **gLevelNames; s32 gNumberOfLevelHeaders; s32 gNumberOfWorlds; @@ -128,19 +136,19 @@ unk8012117C *D_8012117C; s32 D_80121180[16]; -s32 D_801211C0[2]; +u32 *D_801211C0[2]; s16 D_801211C8[20]; Gfx *gDisplayLists[2]; Gfx *gCurrDisplayList; s32 D_801211FC; Mtx *gHudMatrices[2]; -Gfx *gCurrHudMat; +Mtx *gCurrHudMat; VertexList *gHudVertices[2]; VertexList *gCurrHudVerts; TriangleList *gHudTriangles[2]; TriangleList *gCurrHudTris; s32 D_80121230[8]; -s8 D_80121250[16]; +s8 D_80121250[16]; //Settings4C OSSched gMainSched; // 0x288 / 648 bytes s8 D_80121268[8192]; // 0x2000 / 8192 bytes Padding? s32 gSPTaskNum; @@ -168,10 +176,8 @@ s32 gCurrNumHudMatPerPlayer; s32 gCurrNumHudTrisPerPlayer; s32 gCurrNumHudVertsPerPlayer; OSScClient *gNMISched[3]; -OSMesg *gNMIMesgBuf; -OSMesgQueue *gNMIMesgQueue; -s32 D_8012354C; -s32 D_80123550[4]; +OSMesg gNMIMesgBuf; +OSMesgQueue gNMIMesgQueue; s32 D_80123560[8]; /******************************/ @@ -230,11 +236,11 @@ void func_8006A6B0(void) { count--; temp = gTempAssetTable[count] - gTempAssetTable[0]; // Minor issue here. - D_8012116C = allocate_from_main_pool_safe(count * sizeof(s32), COLOR_TAG_YELLOW); + gLevelNames = allocate_from_main_pool_safe(count * sizeof(s32), COLOR_TAG_YELLOW); D_800DD310 = allocate_from_main_pool_safe(temp, COLOR_TAG_YELLOW); load_asset_to_address(ASSET_LEVEL_NAMES, D_800DD310, 0, temp); for (i = 0; i < count; i++) { - D_8012116C[i] = &D_800DD310[gTempAssetTable[i]]; + gLevelNames[i] = &D_800DD310[gTempAssetTable[i]]; } free_from_memory_pool(gTempAssetTable); @@ -320,15 +326,15 @@ s8 func_8006B190(s32 arg0) { return 0; } -s32 func_8006B1D4(s32 arg0) { - s8 *temp; +s32 get_hub_area_id(s32 worldId) { + s8 *hubAreaIds; - if (arg0 < 0 || arg0 >= gNumberOfWorlds) { - arg0 = 0; + if (worldId < 0 || worldId >= gNumberOfWorlds) { + worldId = 0; } - temp = get_misc_asset(0x1B); + hubAreaIds = (s8 *)get_misc_asset(27); //hub_area_ids - return temp[arg0]; + return hubAreaIds[worldId]; } void get_number_of_levels_and_worlds(s32 *outLevelCount, s32 *outWorldCount) { @@ -619,39 +625,42 @@ u8 func_8006BDC0(void) { return gNumberOfLevelHeaders - 1; } -u8 *func_8006BDDC(s32 arg0) { - u8 *text; +/** + * Returns the name of the level from the passed ID + */ +u8 *get_level_name(s32 levelId) { + u8 *levelName; u8 numberOfNullPointers = 0; - if (arg0 < 0 || arg0 >= gNumberOfLevelHeaders) { + if (levelId < 0 || levelId >= gNumberOfLevelHeaders) { return NULL; } - text = D_8012116C[arg0]; + levelName = gLevelNames[levelId]; switch (get_language()) { case GERMAN: while (numberOfNullPointers < 1) { - if (*(text++) == 0) { + if (*(levelName++) == 0) { numberOfNullPointers++; } } break; case FRENCH: while (numberOfNullPointers < 2) { - if (*(text++) == 0) { + if (*(levelName++) == 0) { numberOfNullPointers++; } } break; case JAPANESE: while (numberOfNullPointers < 3) { - if (*(text++) == 0) { + if (*(levelName++) == 0) { numberOfNullPointers++; } } break; } - return text; + return levelName; } void func_8006BEFC(void) { @@ -669,6 +678,7 @@ void func_8006BEFC(void) { if (gCurrentLevelHeader->weather_enable > 0) { func_800AB35C(); } + //! @bug this will never be true because unk49 is signed. if (gCurrentLevelHeader->unk49 == 0xFF) { free_texture(gCurrentLevelHeader->unkA4); } @@ -712,7 +722,7 @@ void func_8006BFC8(s8 *arg0) { } gTempAssetTable = load_asset_section_from_rom(ASSET_UNKNOWN_0_TABLE); phi_v1 = 0; - while (-1 != (s32)gTempAssetTable[phi_v1]) { + while (-1U != gTempAssetTable[phi_v1]) { phi_v1++; } phi_v1--; @@ -730,7 +740,7 @@ void func_8006C164(void) { free_from_memory_pool(D_801211C0[0]); } -s32 func_8006C18C(void) { +u32 *func_8006C18C(void) { return D_801211C0[0]; } @@ -785,7 +795,7 @@ s32 func_8006C300(void) { * Main looping function for the main thread. */ -void thread3_main(s32 arg0) { +void thread3_main(UNUSED void *unused) { init_game(); D_800DD37C = func_8006A1C4(D_800DD37C, 0); sBootDelayTimer = 0; @@ -802,7 +812,7 @@ void thread3_main(s32 arg0) { while (1); // Infinite loop } main_game_loop(); - func_80065E30(); + thread3_verify_stack(); } } @@ -810,7 +820,6 @@ void thread3_main(s32 arg0) { * Setup all of the necessary pieces required for the game to function. * This includes the memory pool. controllers, video, audio, core assets and more. */ - void init_game(void) { s32 mode; @@ -840,10 +849,10 @@ void init_game(void) { func_80076BA0(); func_80078100(&gMainSched); audio_init(&gMainSched); - func_80008040(); + func_80008040(); // Should be very similar to func_8005F850 sControllerStatus = init_controllers(); - func_8007AC70(); - func_8005F850(); + func_8007AC70(); // Should be very similar to func_8005F850 + func_8005F850(); // Matched func_8000BF8C(); func_800B5E88(); func_800598D0(); @@ -856,7 +865,7 @@ void init_game(void) { func_80081218(); create_and_start_thread30(); osCreateMesgQueue(&gNMIMesgQueue, &gNMIMesgBuf, 1); - osScAddClient(&gMainSched, &gNMISched, &gNMIMesgQueue, 3); + osScAddClient(&gMainSched, gNMISched, &gNMIMesgQueue, 3); D_80123560[0] = 0; D_80123504 = 0; D_80123508 = 0; @@ -1075,7 +1084,7 @@ void func_8006CCF0(s32 updateRate) { } gParticlePtrList_flush(); func_8001BF20(); - func_80024D54(&gCurrDisplayList, &gCurrHudMat, &gCurrHudVerts, &gCurrHudTris, updateRate); + func_80024D54(gCurrDisplayList, gCurrHudMat, gCurrHudVerts, gCurrHudTris, updateRate); if (sRenderContext == DRAW_GAME) { // Ignore the user's L/R/Z buttons. buttonHeldInputs &= ~(L_TRIG | R_TRIG | Z_TRIG); @@ -1669,21 +1678,21 @@ void calc_and_alloc_heap_for_settings(void) { sizes[14] = sizes[13] + dataSize; // total size gSettingsPtr = allocate_from_main_pool_safe(sizes[14], COLOR_TAG_WHITE); - gSettingsPtr->courseFlagsPtr = (u8 *)gSettingsPtr + sizes[0]; - gSettingsPtr->balloonsPtr = (u8 *)gSettingsPtr + sizes[1]; + gSettingsPtr->courseFlagsPtr = (s32 *)((u8 *)gSettingsPtr + sizes[0]); + gSettingsPtr->balloonsPtr = (s16 *)((u8 *)gSettingsPtr + sizes[1]); gSettingsPtr->tajFlags = 0; - gSettingsPtr->flapInitialsPtr[0] = (u8 *)gSettingsPtr + sizes[2]; - gSettingsPtr->flapInitialsPtr[1] = (u8 *)gSettingsPtr + sizes[3]; - gSettingsPtr->flapInitialsPtr[2] = (u8 *)gSettingsPtr + sizes[4]; - gSettingsPtr->flapTimesPtr[0] = (u8 *)gSettingsPtr + sizes[5]; - gSettingsPtr->flapTimesPtr[1] = (u8 *)gSettingsPtr + sizes[6]; - gSettingsPtr->flapTimesPtr[2] = (u8 *)gSettingsPtr + sizes[7]; - gSettingsPtr->courseInitialsPtr[0] = (u8 *)gSettingsPtr + sizes[8]; - gSettingsPtr->courseInitialsPtr[1] = (u8 *)gSettingsPtr + sizes[9]; - gSettingsPtr->courseInitialsPtr[2] = (u8 *)gSettingsPtr + sizes[10]; - gSettingsPtr->courseTimesPtr[0] = (u8 *)gSettingsPtr + sizes[11]; - gSettingsPtr->courseTimesPtr[1] = (u8 *)gSettingsPtr + sizes[12]; - gSettingsPtr->courseTimesPtr[2] = (u8 *)gSettingsPtr + sizes[13]; + gSettingsPtr->flapInitialsPtr[0] = (u16 *)((u8 *)gSettingsPtr + sizes[2]); + gSettingsPtr->flapInitialsPtr[1] = (u16 *)((u8 *)gSettingsPtr + sizes[3]); + gSettingsPtr->flapInitialsPtr[2] = (u16 *)((u8 *)gSettingsPtr + sizes[4]); + gSettingsPtr->flapTimesPtr[0] = (u16 *)((u8 *)gSettingsPtr + sizes[5]); + gSettingsPtr->flapTimesPtr[1] = (u16 *)((u8 *)gSettingsPtr + sizes[6]); + gSettingsPtr->flapTimesPtr[2] = (u16 *)((u8 *)gSettingsPtr + sizes[7]); + gSettingsPtr->courseInitialsPtr[0] = (u16 *)((u8 *)gSettingsPtr + sizes[8]); + gSettingsPtr->courseInitialsPtr[1] = (u16 *)((u8 *)gSettingsPtr + sizes[9]); + gSettingsPtr->courseInitialsPtr[2] = (u16 *)((u8 *)gSettingsPtr + sizes[10]); + gSettingsPtr->courseTimesPtr[0] = (u16 *)((u8 *)gSettingsPtr + sizes[11]); + gSettingsPtr->courseTimesPtr[1] = (u16 *)((u8 *)gSettingsPtr + sizes[12]); + gSettingsPtr->courseTimesPtr[2] = (u16 *)((u8 *)gSettingsPtr + sizes[13]); gSettingsPtr->unk4C = &D_80121250; D_800DD37C = 263; } @@ -1866,7 +1875,7 @@ GLOBAL_ASM("asm/non_matchings/game/func_8006ECFC.s") s32 func_8006EFB8(void) { //Could be SP_DMEM_START / CACHERR_EE / SR_FR / M_K0 / LEO_STATUS_BUFFER_MANAGER_INTERRUPT - if (IO_READ(SP_DMEM_START) != -1) { + if (IO_READ(SP_DMEM_START) != -1U) { return FALSE; } return TRUE; @@ -1981,7 +1990,7 @@ void func_8006F398(void) { first_racer_data = (u8 *)(gSettingsPtr->racers); second_racer_data = (u8 *)(gSettingsPtr->racers + 1); - for (i = 0; i < sizeof(Racer); i++) { + for (i = 0; i < (s32)sizeof(Racer); i++) { temp = first_racer_data[i]; first_racer_data[i] = second_racer_data[i]; second_racer_data[i] = temp; diff --git a/src/game.h b/src/game.h index ce69ca8a..72cdf232 100644 --- a/src/game.h +++ b/src/game.h @@ -4,6 +4,7 @@ #include "types.h" #include "structs.h" #include "fade_transition.h" +#include "math.h" enum RenderContext { DRAW_INTRO = -1, @@ -100,9 +101,9 @@ extern s32 gVideoCurrFramebuffer; extern s32 gVideoLastFramebuffer; extern s32 gVideoLastDepthBuffer; -void func_8006F870(Matrix, Matrix); //unknown_070110 -void func_800705F8(s32, f32, f32, f32); //From unknown_070110 -f32 sqrtf(f32); //IDO? +void func_8006F870(Matrix *, Matrix *); //unknown_070110 +void func_800705F8(Matrix *, f32, f32, f32); //From unknown_070110 +void func_80070B04(s32 videoLastFrameBuffer, s32 VideoCurrFrameBuffer, s32 size); s16 func_8006ABB4(s32 arg0); s32 func_8006B018(s8 arg0); @@ -111,7 +112,7 @@ s32 func_8006B0AC(s32 arg0); s32 func_8006B0F8(s32 arg0); s8 func_8006B14C(s32 arg0); s8 func_8006B190(s32 arg0); -s32 func_8006B1D4(s32 arg0); +s32 get_hub_area_id(s32 worldId); void get_number_of_levels_and_worlds(s32 *outLevelCount, s32 *outWorldCount); s32 func_8006B240(void); void func_8006BD10(f32 arg0); @@ -119,18 +120,18 @@ s32 func_8006BD88(void); u8 get_current_level_race_type(void); LevelHeader *get_current_level_header(void); u8 func_8006BDC0(void); -u8 *func_8006BDDC(s32 arg0); +u8 *get_level_name(s32 levelId); void func_8006BEFC(void); void func_8006BFC8(s8 *arg0); void func_8006C164(void); -s32 func_8006C18C(void); +u32 *func_8006C18C(void); s8 func_8006C19C(void); void func_8006C1AC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); void func_8006C22C(s32 *arg0, s32 *arg1, s32 *arg2, s32 *arg3); void func_8006C2E4(void); s16 func_8006C2F0(void); s32 func_8006C300(void); -void thread3_main(s32 arg0); +void thread3_main(UNUSED void *unused); void init_game(void); void main_game_loop(void); void func_8006CAE4(s32 arg0, s32 arg1, s32 arg2); @@ -192,5 +193,7 @@ void func_8006DCF8(s32 arg0); void func_8006EFDC(void); void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, s32 vehicleId, s32 cutsceneId); void func_8006CCF0(s32 arg0); +void func_8006A6B0(void); +void func_80010994(s32 updateRate); #endif diff --git a/src/game_text.c b/src/game_text.c index 5644816a..6deb99a2 100644 --- a/src/game_text.c +++ b/src/game_text.c @@ -3,7 +3,7 @@ #include "game_text.h" #include "menu.h" -#include "unknown_00BC20.h" +#include "objects.h" #include "racer.h" #include "game.h" diff --git a/src/game_text.h b/src/game_text.h index a73eb8d9..e0edf3c4 100644 --- a/src/game_text.h +++ b/src/game_text.h @@ -34,5 +34,6 @@ s32 func_800C3400(void); void func_800C3440(s32 arg0); void func_800C31EC(s32); //Non Matching +s32 func_800C3564(void); //Non Matching #endif diff --git a/src/game_ui.c b/src/game_ui.c index cddbdce5..fc007c0c 100644 --- a/src/game_ui.c +++ b/src/game_ui.c @@ -8,6 +8,8 @@ #include "f3ddkr.h" #include "camera.h" #include "game.h" +#include "audio.h" +#include "textures_sprites.h" extern u32 osTvType; @@ -181,11 +183,11 @@ s32 D_80126CEC; s32 D_80126CF0; s32 D_80126CF4; s32 D_80126CF8; -s32 D_80126CFC; -s32 D_80126D00; -s32 D_80126D04; +Gfx *D_80126CFC; +u32 D_80126D00; +u32 D_80126D04; s32 D_80126D08; -s32 D_80126D0C; +s32 D_80126D0C; //Number of Players? s32 D_80126D10; s32 D_80126D14; s32 D_80126D18; @@ -266,8 +268,8 @@ void func_800A0B74(void) { GLOBAL_ASM("asm/non_matchings/game_ui/func_800A0BD4.s") -void func_800A0DC0(s32 arg0, unk800A0DC0 *arg1, s32 arg2) { - unk800A0DC0_2 *temp = arg1->unk64; +void func_800A0DC0(s32 arg0, Object *arg1, s32 arg2) { + Object_64 *temp = arg1->unk64; func_80068508(1); func_800A0EB4(temp, arg2); @@ -294,8 +296,8 @@ void func_800A0DC0(s32 arg0, unk800A0DC0 *arg1, s32 arg2) { GLOBAL_ASM("asm/non_matchings/game_ui/func_800A0EB4.s") GLOBAL_ASM("asm/non_matchings/game_ui/func_800A1248.s") -void func_800A1428(s32 arg0, unk800A0DC0 *arg1, s32 arg2) { - unk800A0DC0_2 *temp = arg1->unk64; +void func_800A1428(s32 arg0, Object *arg1, s32 arg2) { + Object_64 *temp = arg1->unk64; if (temp->unk1D8 == 0) { func_80068508(1); func_800A3CE4(arg0, arg2); @@ -318,9 +320,9 @@ GLOBAL_ASM("asm/non_matchings/game_ui/func_800A1C04.s") GLOBAL_ASM("asm/non_matchings/game_ui/func_800A1E48.s") GLOBAL_ASM("asm/non_matchings/game_ui/func_800A22F4.s") -void func_800A258C(s32 arg0, unk800A0DC0 *arg1, s32 arg2) { +void func_800A258C(s32 arg0, Object *arg1, s32 arg2) { LevelHeader *level; - unk800A0DC0_2 *temp = arg1->unk64; + Object_64 *temp = arg1->unk64; func_80068508(1); func_800A5A64(temp, arg2); @@ -338,8 +340,8 @@ void func_800A258C(s32 arg0, unk800A0DC0 *arg1, s32 arg2) { func_80068508(0); } -void func_800A263C(s32 arg0, unk800A0DC0 *arg1, s32 arg2) { - unk800A0DC0_2 *temp = arg1->unk64; +void func_800A263C(s32 arg0, Object *arg1, s32 arg2) { + Object_64 *temp = arg1->unk64; func_80068508(1); func_800A5A64(temp, arg2); @@ -429,7 +431,7 @@ void func_800A83B4(LevelModel *model) { gMinimapBlue = model->minimapColor & 0xFF; load_sprite_info(model->unk20, &D_80126D1C, &D_80126D20, &sp2C, &sp2C, &sp2C); func_8007CA68(model->unk20, 0, &D_80126D14, &D_80126D18, &sp2C); - model->unk20 = func_8007C12C(model->unk20, 1); + model->unk20 = (s32)func_8007C12C(model->unk20, 1); } s8 func_800A8458(void) { diff --git a/src/game_ui.h b/src/game_ui.h index fb4a9f19..7dd375bf 100644 --- a/src/game_ui.h +++ b/src/game_ui.h @@ -3,6 +3,7 @@ #include "types.h" #include "structs.h" +#include "libultra_internal.h" typedef struct { u8 unk0[0x6]; @@ -42,23 +43,12 @@ typedef struct unk800E2770 { s32 unkC; } unk800E2770; -typedef struct { - u8 unk0[0x1D8]; - s8 unk1D8; -} unk800A0DC0_2; - -//Probably Object -typedef struct { - u8 unk0[0x64]; - unk800A0DC0_2 *unk64; -} unk800A0DC0; - u8 func_800A0190(void); void func_800A0B74(void); -void func_800A0DC0(s32 arg0, unk800A0DC0 *arg1, s32 arg2); -void func_800A1428(s32 arg0, unk800A0DC0 *arg1, s32 arg2); -void func_800A258C(s32 arg0, unk800A0DC0 *arg1, s32 arg2); -void func_800A263C(s32 arg0, unk800A0DC0 *arg1, s32 arg2); +void func_800A0DC0(s32 arg0, Object *arg1, s32 arg2); +void func_800A1428(s32 arg0, Object *arg1, s32 arg2); +void func_800A258C(s32 arg0, Object *arg1, s32 arg2); +void func_800A263C(s32 arg0, Object *arg1, s32 arg2); void func_800A3870(void); void func_800A6DB4(s16 *arg0); void func_800A7484(u16 arg0, f32 arg1, s32 arg2); @@ -71,8 +61,20 @@ void func_800AB1C8(void); void func_800AB1D4(u8 arg0); // Non Matching -void func_800A14F0(unk800A0DC0 *, s32); +void func_800A14F0(Object *, s32); void func_800A3CE4(s32, s32); -void func_800A7520(unk800A0DC0 *, s32); +void func_800A7520(Object *, s32); +void func_800A0EB4(Object_64 *arg0, s32 arg1); +void func_800A5A64(Object_64 *arg0, s32 arg1); +void func_800A4F50(Object_64 *arg0, s32 arg1); +void func_800A4154(Object_64 *arg0, s32 arg1); +void func_800A7B68(Object_64 *arg0, s32 arg1); +void func_800A4C44(Object_64 *arg0, s32 arg1); +void func_800A3884(Object *arg0, s32 arg1); +void func_800A47A0(Object_64 *arg0, s32 arg1); +void func_800A718C(Object_64 *); +void func_800AA600(Gfx **arg0, u32 *arg1, u32 *arg2, unk80126CDC *arg3); +void func_8009ECF0(s32 viewPortCount); +void func_800A003C(void); #endif diff --git a/src/gzip.c b/src/gzip.c index 414956f6..e1b0b052 100644 --- a/src/gzip.c +++ b/src/gzip.c @@ -59,7 +59,7 @@ u8 *gzip_inflate(u8 *compressedInput, u8 *decompressedOutput) { return decompressedOutput; } -#if 0 +#ifdef NON_EQUIVALENT // Work in progress. // You can find the original huft_build function here: diff --git a/src/main.c b/src/main.c index 09dca4de..b006a59c 100644 --- a/src/main.c +++ b/src/main.c @@ -6,68 +6,37 @@ #include "game.h" #include "lib/src/libc/rmonPrintf.h" -/************ .rodata ************/ - -#ifndef NON_EQUIVALENT -// Remove this when func_80065E30 is matching. -const char D_800E6ED0[] = "WARNING: Stack overflow/underflow!!!\n"; -#endif - -/*********************************/ - /************ .bss ************/ -s32 *gThread1StackPointer; // stack pointer for thread 1 -s32 D_8011D754; -s32 D_8011D758[2048]; -s32 *gThread3StackPointer; // stack pointer for thread 3 -s32 D_8011F75C; -OSThread *gThread1; // OSThread for thread 1 -s32 D_8011F764; -s32 D_8011F768[106]; -OSThread *gThread3; // OSThread for thread 3 -s32 D_8011F914; -s32 D_8011F918[1130]; +u64 *gThread1StackPointer; // stack pointer for thread 1 +u64 gThread3Stack[1024]; +u64 *gThread3StackPointer; // stack pointer for thread 3 +OSThread gThread1; // OSThread for thread 1 +OSThread gThread3; // OSThread for thread 3 +u64 D_8011FAC0[512]; //Thread1 stack? /******************************/ void main(void) { osInitialize(); - osCreateThread(&gThread1, 1, (OSId)&func_80065D98, 0, &gThread1StackPointer, (OSPri)0); + osCreateThread(&gThread1, 1, &thread1_main, 0, &gThread1StackPointer, OS_PRIORITY_IDLE); osStartThread(&gThread1); } -#ifdef NON_EQUIVALENT -void func_80065D98(s32 arg0) { - func_800B6F50(); - osCreateThread(&gThread3, 3, (OSId)&thread3_main, 0, &gThread3StackPointer, (OSPri)10); - D_8011D758[2049] = 0; - D_8011D758[2048] = 0; - D_8011D758[1] = 0; - D_8011D758[0] = 0; +void thread1_main(UNUSED void *unused) { + thread0_create(); + osCreateThread(&gThread3, 3, &thread3_main, 0, &gThread3StackPointer, 10); + gThread3Stack[1024] = 0; + gThread3Stack[0] = 0; osStartThread(&gThread3); osSetThreadPri(NULL, 0); while (1) {} } -#else -GLOBAL_ASM("asm/non_matchings/main/func_80065D98.s") -#endif -#ifdef NON_EQUIVALENT -void func_80065E30(void) { - s32 temp, temp2, temp3, temp4; - temp = D_8011D758[2049] + 1; - temp2 = D_8011D758[2048] + (temp == 0); - temp3 = D_8011D758[1] + 1; - temp4 = D_8011D758[0] + (temp3 == 0); - D_8011D758[2049] = temp; - D_8011D758[2048] = temp2; - D_8011D758[1] = temp3; - D_8011D758[0] = temp4; - if ((temp2 != temp4) || (temp != temp3)) { +void thread3_verify_stack(void) { + gThread3Stack[1024]++; + gThread3Stack[0]++; + if ((gThread3Stack[1024] != gThread3Stack[0])) { rmonPrintf("WARNING: Stack overflow/underflow!!!\n"); } } -#else -GLOBAL_ASM("asm/non_matchings/main/func_80065E30.s") -#endif diff --git a/src/main.h b/src/main.h index ebd6a653..b0c0edf7 100644 --- a/src/main.h +++ b/src/main.h @@ -6,8 +6,7 @@ #include "libultra_internal.h" void main(void); - -void func_80065D98(s32 arg0); //Non Matching -//void func_80065E30(void); //Non Matching +void thread1_main(void *); +void thread3_verify_stack(void); #endif diff --git a/src/memory.c b/src/memory.c index 9c6b06f9..4252134e 100644 --- a/src/memory.c +++ b/src/memory.c @@ -64,7 +64,7 @@ void init_main_memory_pool(void) { MemoryPoolSlot *new_sub_memory_pool(s32 poolDataSize, s32 numSlots) { s32 size; MemoryPoolSlot *slots; - s32 unused_2; + UNUSED s32 unused_2; s32 *temp = func_8006F510(); MemoryPoolSlot *newPool; diff --git a/src/menu.c b/src/menu.c index 1630499a..d07cd9d8 100644 --- a/src/menu.c +++ b/src/menu.c @@ -20,12 +20,13 @@ #include "printf.h" #include "textures_sprites.h" #include "thread30.h" -#include "unknown_00BC20.h" +#include "objects.h" #include "game.h" #include "unknown_078050.h" #include "save_data.h" #include "object_functions.h" #include "unknown_003260.h" +#include "racer.h" /** * @file Contains all the code used for every menu in the game. @@ -40,11 +41,11 @@ DrawTexture *D_80126390; DrawTexture *D_80126394; s32 D_80126398; s32 D_8012639C; -Gfx *D_801263A0; +Gfx *sMenuCurrDisplayList; char **D_801263A4; -Gfx *D_801263A8; -VertexList *D_801263AC; -s32 *D_801263B0; +Gfx *sMenuCurrHudMat; +VertexList *sMenuCurrHudVerts; +TriangleList *sMenuCurrHudTris; unk801263C0 D_801263B4; unk801263C0 D_801263B8; s32 D_801263BC; @@ -52,7 +53,7 @@ unk801263C0 D_801263C0; s32 gIgnorePlayerInput; UNUSED s32 sUnused_801263C8; // Set to 0 in menu_init, and never again. -unk801263CC (*D_801263CC)[8]; +unk801263CC (*D_801263CC)[8]; //Some sort of character list? Cares if T.T. and Drumstick are unlocked s32 D_801263D0; s8 gActivePlayersArray[4]; @@ -140,7 +141,7 @@ s8 D_80126540; s8 D_80126541; s32 D_80126544; s32 gMultiplayerSelectedNumberOfRacersCopy; // Saved version gMultiplayerSelectedNumberOfRacers? -u32 *D_80126550[67]; // lookup table? TEXTURES +TextureHeader *D_80126550[67]; // lookup table? TEXTURES s32 D_8012665C; s32 D_80126660; s32 D_80126664; @@ -150,7 +151,7 @@ s32 D_801267D0; s32 D_801267D4; s32 D_801267D8[3]; s32 D_801267E4; -s32 D_801267E8; +s32 D_801267E8; //Holds a value of which button was pressed s8 *D_801267EC; s32 D_801267F0[5]; s32 D_80126804; @@ -179,7 +180,7 @@ s32 D_80126864; s16 D_80126868; s32 D_8012686C; f32 D_80126870; -s8 *D_80126874; +TitleScreenDemos *sTitleScreenDemoIds; //Misc Asset 66 - title_screen_demo_ids.bin - 12 or 13 values. s32 D_80126878[24]; f32 D_801268D8; s32 D_801268DC; @@ -206,14 +207,14 @@ s32 D_801269F4; s32 D_801269F8; s32 *D_801269FC; s32 D_80126A00; -unk800860A8 *D_80126A04; +unk800860A8 *D_80126A04; //Shares it's allocation with D_80126A0C s32 D_80126A08; -s32 D_80126A0C; +s32 D_80126A0C; //Allocated 2560 bytes in menu_save_options_init. Possibly an array of 2 large structs. s32 D_80126A10; s32 D_80126A14; s32 D_80126A18; s32 D_80126A1C; -s32 D_80126A20[MAXCONTROLLERS]; // Looks to be an array for number notes free in each controller memory pak +s32 sControllerPakNotesFree[MAXCONTROLLERS]; // Looks to be an array for number notes free in each controller memory pak u8 sControllerPakIssueNotFound[MAXCONTROLLERS]; //Flag to see if there's no known issues for the given controller pak u8 sControllerPakFatalErrorFound[MAXCONTROLLERS]; //Flag to see if there's a fatal error for the given controller pak u8 sControllerPakNoFreeSpace[MAXCONTROLLERS]; //Flag to see if there's no free space for the given controller pak @@ -345,27 +346,27 @@ s32 D_800DF4F0[] = { //MenuElement? unk800DF510 sMenuImageProperties[18] = { - { 0, 0, 0, 0x00, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x01, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x02, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x03, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x05, 0.215f, 0.0f, 0.0f, -500.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x06, 0.215f, 0.0f, 0.0f, -500.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x07, 0.215f, 0.0f, 0.0f, -500.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x04, 0.125f, 0.0f, -40.0f, -500.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x5B, 0.75f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x5C, 0.75f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x42, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x40, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x41, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x4C, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x4D, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x4E, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x4F, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0x5D, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0x00, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x01, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x02, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x03, 1.0f, 0.0f, 0.0f, -32.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x05, 0.215f, 0.0f, 0.0f, -500.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x06, 0.215f, 0.0f, 0.0f, -500.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x07, 0.215f, 0.0f, 0.0f, -500.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x04, 0.125f, 0.0f, -40.0f, -500.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x5B, 0.75f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x5C, 0.75f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x42, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x40, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x41, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x4C, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x4D, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x4E, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x4F, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, { 0 } }, + { 0, 0, 0, 0x5D, 1.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0, 0, { 0 } }, }; -s16 *D_800DF750[1] = { NULL }; // This is probably not correct. +s16 *gAssetsMenuElementIds[1] = { NULL }; // This is probably not correct. s16 D_800DF754 = 0; s16 D_800DF758 = 0; unk800DF510 *gMenuImageStack = NULL; @@ -544,6 +545,8 @@ s16 D_800DFDC8[2] = { -1, 0 }; s16 D_800DFDCC[2] = { -1, 0 }; // Not sure what this is +// Used for D_801263CC when Neither T.T. Nor Drumstick are unlocked +// unk801263CC s32 D_800DFDD0[28] = { 0xFFFF04FF, 0xFFFFFFFF, 0x010203FF, 0x0000FFFF, 0x05FF00FF, 0xFFFF0203, 0xFFFF0009, 0xFFFF06FF, @@ -555,6 +558,8 @@ s32 D_800DFDD0[28] = { }; // Not sure what this is +// Used for D_801263CC when only Drumstick is unlocked +// unk801263CC s32 D_800DFE40[32] = { 0xFFFF04FF, 0xFFFFFFFF, 0x01080203, 0x0000FFFF, 0x040500FF, 0xFFFF0802, 0x03FF0009, 0xFFFF0607, @@ -567,6 +572,8 @@ s32 D_800DFE40[32] = { }; // Not sure what this is +// Used for D_801263CC when only T.T. is unlocked +// unk801263CC s32 D_800DFEC0[32] = { 0xFFFF04FF, 0xFFFFFFFF, 0x010203FF, 0x0000FFFF, 0x050800FF, 0xFFFF0203, 0xFFFF0009, 0xFFFF0806, @@ -579,6 +586,8 @@ s32 D_800DFEC0[32] = { }; // Not sure what this is +// Used for D_801263CC when both T.T. and Drumstick are unlocked +// unk801263CC s32 D_800DFF40[36] = { 0xFFFF04FF, 0xFFFFFFFF, 0x01080203, 0x0000FFFF, 0x05FF00FF, 0xFFFF0802, 0x03FF0009, 0xFFFF06FF, @@ -853,7 +862,7 @@ s16 D_800E0840[148] = { s32 D_800E0968 = 0; s32 D_800E096C = 0; -s32 D_800E0970 = 0; +s32 *D_800E0970 = NULL; s32 D_800E0974 = 0; const f32 D_800E7D04[1] = { 0.5f }; // .rodata f32 *D_800E0978 = D_800E7D04; // .data @@ -877,14 +886,27 @@ ColourRGBA D_800E09A0[4] = { { 0, 0, 255, 128 }, }; -char *D_800E09B0[5] = { 0, 0, 0, 0, 0 }; -char *D_800E09C4[5] = { 0, 0, 0, 0, 0 }; -char *D_800E09D8[5] = { 0, 0, 0, 0, 0 }; -char *D_800E09EC[3] = { 0, 0, 0 }; +// BAD CONTROLLER PAK / If you wish to change / Controller Pak or Rumble Pak, / please do so now. +char *sBadControllerPakMenuText[5] = { 0, 0, 0, 0, 0 }; + +// CONTROLLER PAK FULL / If you wish to change / Controller Pak or Rumble Pak, / please do so now. +char *sControllerPakFullMenuText[5] = { 0, 0, 0, 0, 0 }; + +// NO CONTROLLER PAK / If you wish to change / Controller Pak or Rumble Pak, / please do so now. +char *sNoControllerPakMenuText[5] = { 0, 0, 0, 0, 0 }; + +// CORRUPT DATA / If you wish to change / Controller Pak or Rumble Pak, / please do so now. +char *sCorruptDataMenuText[3] = { 0, 0, 0 }; // This should be 5 in size? This is unclear still. + char *D_800E09F8[3] = { 0, 0, 0 }; -char *D_800E0A04[3] = { 0, 0, 0 }; + +// If you wish to use / the Controller Pak / insert it now! +char *sInsertControllerPakMenuText[3] = { 0, 0, 0 }; + s16 D_800E0A10 = 0; -char *D_800E0A14[4] = { 0, 0, 0, 0 }; + +//If you wish to use / the Rumble Pak / insert it now! +char *sInsertRumblePakMenuText[4] = { 0, 0, 0, 0 }; s16 D_800E0A24[14] = { 0x0005, 0x003B, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0039, 0x0037, 0x0038, 0x003A, 0x0000, 0x0001, 0xFFFF @@ -948,33 +970,31 @@ char *gRacePlacementsArray[8] = { }; MenuElement D_800E0BEC[8] = { - { 352, 172, 32, 172, -288, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, - { 452, 166, 132, 166, -188, 166, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, - { 560, 184, 240, 184, -80, 184, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, - { 452, 180, 132, 180, -188, 180, 255, 192, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, - { 452, 198, 132, 198, -188, 198, 255, 192, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, - { 452, 216, 132, 216, -188, 216, 255, 192, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, - { 560, 200, 240, 200, -80, 200, 128, 255, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL }, 0, 0, 0, 0 }, + { 352, 172, 32, 172, -288, 172, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 452, 166, 132, 166, -188, 166, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 560, 184, 240, 184, -80, 184, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 452, 180, 132, 180, -188, 180, 255, 192, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, + { 452, 198, 132, 198, -188, 198, 255, 192, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, + { 452, 216, 132, 216, -188, 216, 255, 192, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, + { 560, 200, 240, 200, -80, 200, 128, 255, 255, 0, 255, 0, 0, 1, { NULL }, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL }, 0, 0, 0, 0 }, }; MenuElement D_800E0CEC[11] = { - { 575, 172, 255, 172, -65, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, - { 542, 172, 222, 172, -98, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, - { 509, 172, 189, 172, -131, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, - { 476, 172, 156, 172, -164, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, - { 443, 172, 123, 172, -197, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, - { 410, 172, 90, 172, -230, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, - { 377, 172, 57, 172, -263, 172, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, - { 344, 172, 24, 172, -296, 166, 255, 255, 255, 0, 255, 0, 0, 3, { D_800E0A50 }, 0, 0, 0, 0 }, - { 481, 166, 161, 166, -159, 166, 0, 0, 0, 255, 128, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, - { 479, 164, 159, 164, -161, 164, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL }, 0, 0, 0, 0 }, + { 575, 172, 255, 172, -65, 172, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 542, 172, 222, 172, -98, 172, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 509, 172, 189, 172, -131, 172, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 476, 172, 156, 172, -164, 172, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 443, 172, 123, 172, -197, 172, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 410, 172, 90, 172, -230, 172, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 377, 172, 57, 172, -263, 172, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 344, 172, 24, 172, -296, 166, 255, 255, 255, 0, 255, 0, 0, 3, { &D_800E0A50 }, 0, 0, 0, 0 }, + { 481, 166, 161, 166, -159, 166, 0, 0, 0, 255, 128, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 479, 164, 159, 164, -161, 164, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL }, 0, 0, 0, 0 }, }; - - MenuElement D_800E0E4C[9] = { { 481, 174, 161, 174, -159, 174, 0, 0, 0, 255, 128, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, { 479, 172, 159, 172, -161, 172, 255, 255, 255, 0, 255, 0, 12, 0, { NULL }, 0, 0, 0, 0 }, @@ -1016,7 +1036,7 @@ s16 D_800E0FD8[6] = { s32 D_800E0FE4 = 8; // Number of racers in trophy race? (1 to 8) s32 gTrophyRaceWorldId = 0; -s32 D_800E0FEC = 0; // Trophy race round? (0 to 3) +s32 gTrophyRaceRound = 0; // Rounds 1 - 4 (as 0 - 3) s32 D_800E0FF0 = 0; // Unused? Not sure what this is. @@ -1597,31 +1617,31 @@ void load_menu_text(s32 language) { gGameSelectTextElemsWithAdv2[3].unk14_a.asciiText = gMenuText[142]; // ADVENTURE gGameSelectTextElemsWithAdv2[5].unk14_a.asciiText = gMenuText[143]; // ADVENTURE TWO gGameSelectTextElemsWithAdv2[7].unk14_a.asciiText = gMenuText[144]; // TRACKS - D_800E09B0[0] = gMenuText[69]; // BAD CONTROLLER PAK - D_800E09C4[0] = gMenuText[68]; // CONTROLLER PAK FULL - D_800E09D8[0] = gMenuText[67]; // NO CONTROLLER PAK - D_800E09EC[4] = 0; - D_800E09EC[5] = 0; - D_800E09EC[0] = gMenuText[184]; // CORRUPT DATA. + sBadControllerPakMenuText[0] = gMenuText[69]; // BAD CONTROLLER PAK + sControllerPakFullMenuText[0] = gMenuText[68]; // CONTROLLER PAK FULL + sNoControllerPakMenuText[0] = gMenuText[67]; // NO CONTROLLER PAK + sCorruptDataMenuText[4] = 0; + sCorruptDataMenuText[5] = 0; + sCorruptDataMenuText[0] = gMenuText[184]; // CORRUPT DATA. //Three messages //If you wish to change / Controller Pak or Rumble Pak, / please do so now. for (i = 0; i < 2; i++) { - D_800E09B0[i + 1] = gMenuText[177 + i]; - D_800E09C4[i + 1] = gMenuText[177 + i]; - D_800E09D8[i + 1] = gMenuText[177 + i]; - D_800E09EC[i + 1] = gMenuText[177 + i]; + sBadControllerPakMenuText[i + 1] = gMenuText[177 + i]; + sControllerPakFullMenuText[i + 1] = gMenuText[177 + i]; + sNoControllerPakMenuText[i + 1] = gMenuText[177 + i]; + sCorruptDataMenuText[i + 1] = gMenuText[177 + i]; } j = 0; - while (D_800E09EC[j] != 0) { + while (sCorruptDataMenuText[j] != 0) { j++; } - D_800E09EC[j] = gMenuText[185]; // TRY AGAIN! - D_800E0A04[0] = gMenuText[159]; // If you wish to use - D_800E0A04[1] = gMenuText[160]; // the Controller Pak - D_800E0A04[2] = gMenuText[162]; // insert it now! - D_800E0A14[0] = gMenuText[159]; // If you wish to use - D_800E0A14[1] = gMenuText[161]; // the Rumble Pak - D_800E0A14[2] = gMenuText[162]; // insert it now! + sCorruptDataMenuText[j] = gMenuText[185]; // TRY AGAIN! + sInsertControllerPakMenuText[0] = gMenuText[159]; // If you wish to use + sInsertControllerPakMenuText[1] = gMenuText[160]; // the Controller Pak + sInsertControllerPakMenuText[2] = gMenuText[162]; // insert it now! + sInsertRumblePakMenuText[0] = gMenuText[159]; // If you wish to use + sInsertRumblePakMenuText[1] = gMenuText[161]; // the Rumble Pak + sInsertRumblePakMenuText[2] = gMenuText[162]; // insert it now! gCautionMenuTextElements[0].unk14_a.asciiText = gMenuText[152]; // CAUTION gCautionMenuTextElements[1].unk14_a.asciiText = gMenuText[152]; // CAUTION for (i = 2; i < 13; i++) { @@ -1788,152 +1808,162 @@ void menu_init(u32 menuId) { /** * Runs every frame. Calls the loop function of the current menu id */ -s32 menu_loop(Gfx **arg0, s32 **arg1, s32 **arg2, s32 **arg3, s32 updateRate) { - s32 sp1C; +s32 menu_loop(Gfx **currDisplayList, Gfx **currHudMat, VertexList **currHudVerts, TriangleList **currHudTris, s32 updateRate) { + s32 ret; + + sMenuCurrDisplayList = *currDisplayList; + sMenuCurrHudMat = *currHudMat; + sMenuCurrHudVerts = *currHudVerts; + sMenuCurrHudTris = *currHudTris; - D_801263A0 = *arg0; - D_801263A8 = *arg1; - D_801263AC = *arg2; - D_801263B0 = *arg3; update_controller_sticks(); switch (gCurrentMenuId) { case MENU_LOGOS: - sp1C = menu_logo_screen_loop(updateRate); + ret = menu_logo_screen_loop(updateRate); break; case MENU_TITLE: - sp1C = menu_title_screen_loop(updateRate); + ret = menu_title_screen_loop(updateRate); break; case MENU_OPTIONS: - sp1C = menu_options_loop(updateRate); + ret = menu_options_loop(updateRate); break; case MENU_AUDIO_OPTIONS: - sp1C = menu_audio_options_loop(updateRate); + ret = menu_audio_options_loop(updateRate); break; case MENU_SAVE_OPTIONS: - sp1C = menu_save_options_loop(updateRate); + ret = menu_save_options_loop(updateRate); break; case MENU_MAGIC_CODES: - sp1C = menu_magic_codes_loop(updateRate); + ret = menu_magic_codes_loop(updateRate); break; case MENU_MAGIC_CODES_LIST: - sp1C = menu_magic_codes_list_loop(updateRate); + ret = menu_magic_codes_list_loop(updateRate); break; case MENU_CHARACTER_SELECT: - sp1C = menu_character_select_loop(updateRate); + ret = menu_character_select_loop(updateRate); break; case MENU_FILE_SELECT: - sp1C = menu_file_select_loop(updateRate); + ret = menu_file_select_loop(updateRate); break; case MENU_GAME_SELECT: - sp1C = menu_game_select_loop(updateRate); + ret = menu_game_select_loop(updateRate); break; case MENU_TRACK_SELECT: - sp1C = menu_track_select_loop(updateRate); + ret = menu_track_select_loop(updateRate); break; case MENU_UNKNOWN_5: - sp1C = menu_5_loop(updateRate); + ret = menu_5_loop(updateRate); break; case MENU_RESULTS: - sp1C = menu_results_loop(updateRate); + ret = menu_results_loop(updateRate); break; case MENU_TROPHY_RACE_ROUND: - sp1C = menu_trophy_race_round_loop(updateRate); + ret = menu_trophy_race_round_loop(updateRate); break; case MENU_TROPHY_RACE_RANKINGS: - sp1C = menu_trophy_race_rankings_loop(updateRate); + ret = menu_trophy_race_rankings_loop(updateRate); break; case MENU_UNKNOWN_23: - sp1C = menu_23_loop(updateRate); + ret = menu_23_loop(updateRate); break; case MENU_GHOST_DATA: - sp1C = menu_ghost_data_loop(updateRate); + ret = menu_ghost_data_loop(updateRate); break; case MENU_CREDITS: - sp1C = menu_credits_loop(updateRate); + ret = menu_credits_loop(updateRate); break; case MENU_BOOT: - sp1C = menu_boot_loop(updateRate); + ret = menu_boot_loop(updateRate); break; case MENU_CAUTION: - sp1C = menu_caution_loop(updateRate); + ret = menu_caution_loop(updateRate); break; } - *arg0 = (Gfx *)D_801263A0; - *arg1 = (s32 *)D_801263A8; - *arg2 = (s32 *)D_801263AC; - *arg3 = (s32 *)D_801263B0; - return sp1C; + *currDisplayList = sMenuCurrDisplayList; + *currHudMat = sMenuCurrHudMat; + *currHudVerts = sMenuCurrHudVerts; + *currHudTris = sMenuCurrHudTris; + return ret; } -void func_80081800(s32 arg0, s32 arg1, s32 arg2, u8 arg3, u8 arg4, u8 arg5, u8 arg6) { - s32 sp5C; - s32 sp58; - s32 sp54; - s32 phi_s6; - s32 phi_s5; - s32 phi_s3; - s32 sp44; - s32 sp40; +void show_timestamp(s32 frameCount, s32 xPos, s32 yPos, u8 red, u8 green, u8 blue, u8 fontID) { + s32 minutes; + s32 seconds; + s32 hundredths; + s32 xOffset1; + s32 imageIndex2; + s32 imageIndex; + s32 xOffset2; + s32 xOffset3; - sMenuGuiColourR = arg3; - sMenuGuiColourG = arg4; - sMenuGuiColourB = arg5; - if (arg6 == 0) { - gMenuImageStack[0].unk10 = arg2; - gMenuImageStack[1].unk10 = arg2 - 2; - phi_s3 = 0; - phi_s5 = 1; - arg1 -= 0x27; - phi_s6 = 0xC; - sp44 = 0xB; - sp40 = 0xA; + sMenuGuiColourR = red; + sMenuGuiColourG = green; + sMenuGuiColourB = blue; + if (fontID == FONT_COLOURFUL) { + gMenuImageStack[0].unk10 = yPos; + gMenuImageStack[1].unk10 = yPos - 2; + imageIndex = 0; + imageIndex2 = 1; + xPos -= 39; + xOffset1 = 12; + xOffset2 = 11; + xOffset3 = 10; } else { - gMenuImageStack[2].unk10 = arg2; - gMenuImageStack[3].unk10 = arg2 - 1; - phi_s3 = 2; - phi_s5 = 3; - arg1 -= 0x1C; - phi_s6 = 9; - sp44 = 9; - sp40 = 5; + gMenuImageStack[2].unk10 = yPos; + gMenuImageStack[3].unk10 = yPos - 1; + imageIndex = 2; + imageIndex2 = 3; + xPos -= 28; + xOffset1 = 9; + xOffset2 = 9; + xOffset3 = 5; } - func_80059790(arg0, &sp5C, &sp58, &sp54); + get_timestamp_from_frames(frameCount, &minutes, &seconds, &hundredths); func_80068508(1); func_8007BF1C(0); - gMenuImageStack[phi_s3].unk18 = sp5C / 10; - gMenuImageStack[phi_s3].unkC = arg1; - func_8009CA60(phi_s3); - arg1 += phi_s6; - gMenuImageStack[phi_s3].unk18 = sp5C % 10; - gMenuImageStack[phi_s3].unkC = arg1; - func_8009CA60(phi_s3); - arg1 += sp44; - gMenuImageStack[phi_s5].unkC = arg1; - func_8009CA60(phi_s5); - arg1 += sp40; - gMenuImageStack[phi_s3].unk18 = sp58 / 10; - gMenuImageStack[phi_s3].unkC = arg1; - func_8009CA60(phi_s3); - arg1 += phi_s6; - gMenuImageStack[phi_s3].unk18 = sp58 % 10; - gMenuImageStack[phi_s3].unkC = arg1; - func_8009CA60(phi_s3); - arg1 += sp44; - gMenuImageStack[phi_s5].unkC = arg1; - func_8009CA60(phi_s5); - arg1 += sp40; - gMenuImageStack[phi_s3].unk18 = sp54 / 10; - gMenuImageStack[phi_s3].unkC = arg1; - func_8009CA60(phi_s3); - arg1 += phi_s6; - gMenuImageStack[phi_s3].unk18 = sp54 % 10; - gMenuImageStack[phi_s3].unkC = arg1; - func_8009CA60(phi_s3); + + gMenuImageStack[imageIndex].unk18 = minutes / 10; + gMenuImageStack[imageIndex].unkC = xPos; + func_8009CA60(imageIndex); + + xPos += xOffset1; + gMenuImageStack[imageIndex].unk18 = minutes % 10; + gMenuImageStack[imageIndex].unkC = xPos; + func_8009CA60(imageIndex); + + xPos += xOffset2; + gMenuImageStack[imageIndex2].unkC = xPos; + func_8009CA60(imageIndex2); + + xPos += xOffset3; + gMenuImageStack[imageIndex].unk18 = seconds / 10; + gMenuImageStack[imageIndex].unkC = xPos; + func_8009CA60(imageIndex); + + xPos += xOffset1; + gMenuImageStack[imageIndex].unk18 = seconds % 10; + gMenuImageStack[imageIndex].unkC = xPos; + func_8009CA60(imageIndex); + + xPos += xOffset2; + gMenuImageStack[imageIndex2].unkC = xPos; + func_8009CA60(imageIndex2); + + xPos += xOffset3; + gMenuImageStack[imageIndex].unk18 = hundredths / 10; + gMenuImageStack[imageIndex].unkC = xPos; + func_8009CA60(imageIndex); + + xPos += xOffset1; + gMenuImageStack[imageIndex].unk18 = hundredths % 10; + gMenuImageStack[imageIndex].unkC = xPos; + func_8009CA60(imageIndex); + func_80068508(0); func_8007BF1C(1); - sMenuGuiColourR = (u8)0xFF; - sMenuGuiColourG = (u8)0xFF; - sMenuGuiColourB = (u8)0xFF; + sMenuGuiColourR = (u8)255; + sMenuGuiColourG = (u8)255; + sMenuGuiColourB = (u8)255; } GLOBAL_ASM("asm/non_matchings/menu/func_80081C04.s") @@ -1963,7 +1993,7 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { s5 = FALSE; if (arg0 != 4) { - func_80067F2C(&D_801263A0, (s32 *)&D_801263A8); + func_80067F2C(&sMenuCurrDisplayList, (s32 *)&sMenuCurrHudMat); while (elem->unk14_a.element != NULL) { if (&D_80126850 != elem->unk14_a.element) { if (arg0 == 0) { @@ -1989,15 +2019,15 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { set_text_background_colour(elem->backgroundRed, elem->backgroundGreen, elem->backgroundBlue, elem->backgroundAlpha); set_text_colour(elem->filterRed, elem->filterGreen, elem->filterBlue, elem->filterAlpha, elem->opacity); set_text_font(elem->textFont); - draw_text(&D_801263A0, xPos, yPos + D_800DF79C, elem->unk14_a.asciiText, elem->textAlignFlags); + draw_text(&sMenuCurrDisplayList, xPos, yPos + D_800DF79C, elem->unk14_a.asciiText, elem->textAlignFlags); break; case 1: if (s5) { s5 = FALSE; - func_8007B3D0(&D_801263A0); + func_8007B3D0(&sMenuCurrDisplayList); } sMenuGuiOpacity = elem->opacity; - func_80081800( + show_timestamp( *elem->unk14_a.numberU16, xPos - 0xA0, (-yPos - D_800DF7A0) + 0x78, @@ -2009,7 +2039,7 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { case 2: if (s5) { s5 = FALSE; - func_8007B3D0(&D_801263A0); + func_8007B3D0(&sMenuCurrDisplayList); } func_80081C04( *elem->unk14_a.number, @@ -2025,7 +2055,7 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { case 3: s5 = TRUE; render_textured_rectangle( - &D_801263A0, + &sMenuCurrDisplayList, elem->unk14_a.texture, xPos, yPos + D_800DF79C, @@ -2037,7 +2067,7 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { case 4: s5 = TRUE; render_texture_rectangle_scaled( - &D_801263A0, + &sMenuCurrDisplayList, elem->unk14_a.element, xPos, yPos + D_800DF79C, @@ -2049,7 +2079,7 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { case 5: if (s5) { s5 = FALSE; - func_8007B3D0(&D_801263A0); + func_8007B3D0(&sMenuCurrDisplayList); } func_80068508(1); func_8007BF1C(0); @@ -2071,7 +2101,7 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { break; case 6: func_80080E90( - &D_801263A0, + &sMenuCurrDisplayList, xPos, yPos + D_800DF7A0, elem->backgroundRed, @@ -2085,7 +2115,7 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { break; case 7: func_80080580( - &D_801263A0, + &sMenuCurrDisplayList, xPos, yPos + D_800DF7A0, elem->backgroundRed, @@ -2100,7 +2130,7 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2) { elem++; // Go onto the next element. } if (s5) { - func_8007B3D0(&D_801263A0); + func_8007B3D0(&sMenuCurrDisplayList); } sMenuGuiColourR = 0xFF; sMenuGuiColourG = 0xFF; @@ -2141,7 +2171,7 @@ void func_800828B8(void) { } } -void print_missing_controller_text(Gfx *dl, s32 updateRate) { +void print_missing_controller_text(Gfx **dl, s32 updateRate) { s32 posY; D_800DF46C += updateRate; @@ -2155,7 +2185,7 @@ void print_missing_controller_text(Gfx *dl, s32 updateRate) { if (osTvType == TV_TYPE_PAL) { posY = 234; } - draw_text(dl, POS_CENTRED, posY, gMenuText[151], 0xC); + draw_text(dl, POS_CENTRED, posY, gMenuText[151], ALIGN_MIDDLE_CENTER); } } @@ -2174,7 +2204,7 @@ void menu_logos_screen_init(void) { func_80066940(0, 0, 40, SCREEN_WIDTH, SCREEN_HEIGHT - 44); set_viewport_properties(0, VIEWPORT_AUTO, VIEWPORT_AUTO, SCREEN_WIDTH, SCREEN_HEIGHT); } - func_80066610(); + func_80066610(); //Init viewports func_80066818(0, 1); } @@ -2221,11 +2251,11 @@ s32 menu_logo_screen_loop(s32 updateRate) { } } if (opacity != 0) { - set_text_colour(0xFF, 0xFF, 0, 0xFF, opacity); - draw_text(&D_801263A0, 159, yOffset + 212, gRareCopyrightString, 0xC); - draw_text(&D_801263A0, 161, yOffset + 212, gRareCopyrightString, 0xC); - draw_text(&D_801263A0, POS_CENTRED, yOffset + 211, gRareCopyrightString, 0xC); - draw_text(&D_801263A0, POS_CENTRED, yOffset + 213, gRareCopyrightString, 0xC); + set_text_colour(255, 255, 0, 255, opacity); + draw_text(&sMenuCurrDisplayList, 159, yOffset + 212, gRareCopyrightString, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 161, yOffset + 212, gRareCopyrightString, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, POS_CENTRED, yOffset + 211, gRareCopyrightString, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, POS_CENTRED, yOffset + 213, gRareCopyrightString, ALIGN_MIDDLE_CENTER); } yOffsetShadow = yOffset + 212; if (sBootScreenTimer > 8.0) { @@ -2234,7 +2264,7 @@ s32 menu_logo_screen_loop(s32 updateRate) { opacity = 0xFF; } set_text_colour(0xFF, 0xFF, 0xFF, 0xFF, opacity); - draw_text(&D_801263A0, POS_CENTRED, yOffsetShadow, gRareCopyrightString, 0xC); + draw_text(&sMenuCurrDisplayList, POS_CENTRED, yOffsetShadow, gRareCopyrightString, ALIGN_MIDDLE_CENTER); } return 0; } @@ -2264,7 +2294,7 @@ GLOBAL_ASM("asm/non_matchings/menu/func_80083098.s") void menu_title_screen_init(void) { s32 i; - s32 temp; + s32 numberOfPlayers; UNUSED s8 *tempArr; D_800DF488 = 1; @@ -2296,14 +2326,14 @@ void menu_title_screen_init(void) { func_80000890(0); set_time_trial_enabled(FALSE); D_80126864 = 0; - D_80126874 = get_misc_asset(0x42); - temp = D_80126874[1]; + sTitleScreenDemoIds = (TitleScreenDemos *)get_misc_asset(66); + numberOfPlayers = sTitleScreenDemoIds->numberOfPlayers; D_80126868 = 0; - if (temp == -2) { - temp = 0; + if (numberOfPlayers == -2) { + numberOfPlayers = 0; D_80126868 = 0x258; } - load_level_for_menu(D_80126874[0], temp, D_80126874[2]); + load_level_for_menu(sTitleScreenDemoIds->levelId, numberOfPlayers, sTitleScreenDemoIds->cutsceneId); D_801268D8 = 0; D_801268E0 = 0; D_801268DC = 0; @@ -2343,9 +2373,9 @@ void func_800841B8(UNUSED s32 arg0) { set_text_font(FONT_LARGE); set_text_background_colour(0, 0, 0, 0); set_text_colour(0, 0, 0, 255, 128); - draw_text(&D_801263A0, 161, 35, gMenuText[36], 0xC); // OPTIONS + draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[36], ALIGN_MIDDLE_CENTER); // OPTIONS set_text_colour(255, 255, 255, 0, 255); - draw_text(&D_801263A0, 160, 32, gMenuText[36], 0xC); // OPTIONS + draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[36], ALIGN_MIDDLE_CENTER); // OPTIONS optionMenuTextIndex = 0; yPos = 76; @@ -2362,7 +2392,7 @@ void func_800841B8(UNUSED s32 arg0) { alpha = 0; } set_text_colour(255, 255, 255, alpha, 255); - draw_text(&D_801263A0, POS_CENTRED, yPos, gOptionMenuStrings[optionMenuTextIndex], 0xC); + draw_text(&sMenuCurrDisplayList, POS_CENTRED, yPos, gOptionMenuStrings[optionMenuTextIndex], ALIGN_MIDDLE_CENTER); optionMenuTextIndex++; yPos += 28; @@ -2691,7 +2721,7 @@ void menu_save_options_init(void) { D_801263D8 = 0; D_80126A64 = (s32)allocate_from_main_pool_safe(0x800, COLOR_TAG_WHITE); D_80126A0C = (s32)allocate_from_main_pool_safe(0xA00, COLOR_TAG_WHITE); - D_80126A04 = (s32)(D_80126A0C + 0x500); + D_80126A04 = (unk800860A8 *)(D_80126A0C + 0x500); D_80126A08 = 0; D_80126BD4 = 0; D_80126BDC = 0.0f; @@ -2716,27 +2746,28 @@ void menu_save_options_init(void) { GLOBAL_ASM("asm/non_matchings/menu/func_800853D0.s") GLOBAL_ASM("asm/non_matchings/menu/func_80085B9C.s") -s32 func_800860A8(s32 controllerIndex, s32 *arg1, unk800860A8 *arg2, s32 *arg3, s32 arg4) { +s32 func_800860A8(s32 controllerIndex, s32 *arg1, unk800860A8 *arg2, s32 *arg3, s32 fileSize, UNUSED s32 arg5) { s32 ret = 0; if (*arg1 != 0) { - ret = get_free_space(controllerIndex, &arg2[*arg3].unkC, &D_80126A20[controllerIndex]); - if (ret == 0) { - if ((arg2[*arg3].unkC >= arg4) && (D_80126A20[controllerIndex] > 0)) { - arg2[*arg3].unk0 = 8; - arg2[*arg3].unk6 = controllerIndex; + ret = get_free_space(controllerIndex, &arg2[*arg3].cPakBytesFree, &sControllerPakNotesFree[controllerIndex]); + if (ret == CONTROLLER_PAK_GOOD) { + if (((s32)arg2[*arg3].cPakBytesFree >= fileSize) && (sControllerPakNotesFree[controllerIndex] > 0)) { + arg2[*arg3].unk0 = 8; //CONTROLLER_PAK_UNK8 maybe? + arg2[*arg3].controllerIndex = controllerIndex; (*arg3)++; } } else { - if ((*arg1 < 0) && ((ret & 0xFF) == 7)) { + SIDeviceStatus status = ret & 0xFF; //The upper bytes could be controllerIndex, so focus on the status + if ((*arg1 < 0) && status == RUMBLE_PAK) { *arg1 = 0; ret = 0; - } else { - s32 temp_v1; - temp_v1 = ret & 0xFF; - if (temp_v1 != 3 && temp_v1 != 2 && temp_v1 != 9) { - ret = 0; - } + } else if + (status != CONTROLLER_PAK_WITH_BAD_ID && + status != CONTROLLER_PAK_INCONSISTENT && + status != CONTROLLER_PAK_BAD_DATA) + { + ret = 0; } } } @@ -2846,8 +2877,8 @@ void func_80087EB8(void) { func_8007FF88(); func_8009C4A8(D_800DFC78); assign_dialogue_box_id(7); - free_from_memory_pool(D_80126A0C); - free_from_memory_pool(D_80126A64); + free_from_memory_pool((void *)D_80126A0C); + free_from_memory_pool((void *)D_80126A64); } #ifdef NON_EQUIVALENT @@ -2988,6 +3019,7 @@ SIDeviceStatus func_80087F14(s32 *controllerIndex, s32 arg1) { #else GLOBAL_ASM("asm/non_matchings/menu/func_80087F14.s") #endif + GLOBAL_ASM("asm/non_matchings/menu/func_8008832C.s") void menu_boot_init(void) { @@ -2995,7 +3027,7 @@ void menu_boot_init(void) { func_800C01D8(&sMenuTransitionFadeOut); set_background_prim_colour(0, 0, 0); - func_8009C674(&sGameTitleTileTextures); + func_8009C674(sGameTitleTileTextures); // Sets up the 11 texture pointers for the "Diddy Kong Racing" logo. for (i = 0; i < 11; i++) { @@ -3057,8 +3089,8 @@ s32 menu_boot_loop(s32 arg0) { } if (temp < 300) { - render_textured_rectangle(&D_801263A0, &sGameTitleTileOffsets, 160, temp, 255, 255, 255, 255); - func_8007B3D0(&D_801263A0); + render_textured_rectangle(&sMenuCurrDisplayList, sGameTitleTileOffsets, 160, temp, 255, 255, 255, 255); + func_8007B3D0(&sMenuCurrDisplayList); } return out; @@ -3076,7 +3108,7 @@ void func_800887E8(void) { // Fills in the table. for (i = 1; i < 16; i++) { - D_80126AA0[i] = (s32 *)(((u32)D_80126AA0[0]) + (i * 0x20)); + D_80126AA0[i] = (u8 *)(((u32)D_80126AA0[0]) + (i * 0x20)); } for (i = 0; i < 1; i++) { @@ -3088,7 +3120,7 @@ void func_800887E8(void) { D_801263BC = 0; D_80126A68 = -1; load_menu_text(get_language()); - if (func_80087F14(&D_80126A68, 0) == 0) { + if (func_80087F14(&D_80126A68, 0) == CONTROLLER_PAK_GOOD) { gMenuDelay = 0; } else if (func_8008832C() == 0) { gMenuDelay = 0x14; @@ -3129,9 +3161,9 @@ void func_80088938(s32 arg0) { } else if (gShowControllerPakMenu != 0) { set_text_font(2); set_text_colour(0, 0, 0, 255, 128); - draw_text(&D_801263A0, 161, 33, gMenuText[35], 12); + draw_text(&sMenuCurrDisplayList, 161, 33, gMenuText[35], ALIGN_MIDDLE_CENTER); set_text_colour(255, 255, 255, 0, 255); - draw_text(&D_801263A0, 160, 30, gMenuText[35], 12); + draw_text(&sMenuCurrDisplayList, 160, 30, gMenuText[35], ALIGN_MIDDLE_CENTER); assign_dialogue_box_id(6); //HERE! @@ -3149,7 +3181,7 @@ void func_80088938(s32 arg0) { set_current_text_background_colour(6, 0, 0, 0, 0); render_dialogue_text(6, POS_CENTRED, 2, gMenuText[86 + D_80126A68], phi_s3, 4); render_dialogue_text(6, POS_CENTRED, 16, gMenuText[114], sCurrentControllerPakFreeSpace, 4); - render_dialogue_box(&D_801263A0, NULL, NULL, 6); + render_dialogue_box(&sMenuCurrDisplayList, NULL, NULL, 6); //HERE! yPos += 34; //To 82 @@ -3181,13 +3213,13 @@ void func_80088938(s32 arg0) { render_dialogue_text(6, 26, 2, phi_s2, D_801263D8 + i + 1, 4); render_dialogue_text(6, 56, 2, phi_s0, 1, 0); render_dialogue_text(6, 240, 2, phi_s4, phi_s3, 4); - render_dialogue_box(&D_801263A0, NULL, NULL, 6); + render_dialogue_box(&sMenuCurrDisplayList, NULL, NULL, 6); yPos += 16; } if (D_801263D8 < (16 - D_80126BB4)) { if ((D_801263BC & 8) != 0) { - render_textured_rectangle(&D_801263A0, (DrawTexture* ) &D_800E043C, 160, yPos + 8, (u8) 255, (u8) 255, (u8) 255, (u8) 255); - func_8007B3D0(&D_801263A0); + render_textured_rectangle(&sMenuCurrDisplayList, (DrawTexture* ) &D_800E043C, 160, yPos + 8, (u8) 255, (u8) 255, (u8) 255, (u8) 255); + func_8007B3D0(&sMenuCurrDisplayList); } } else { set_text_font(0); @@ -3196,7 +3228,7 @@ void func_80088938(s32 arg0) { } else { set_text_colour(255, 255, 255, 0, 255); } - draw_text(&D_801263A0, POS_CENTRED, yPos, gMenuText[51], 4); + draw_text(&sMenuCurrDisplayList, POS_CENTRED, yPos, gMenuText[51], ALIGN_TOP_CENTER); } if ((D_801263E0 != 0) && (D_80126C10 == 0)) { if (osTvType == TV_TYPE_PAL) { @@ -3224,12 +3256,12 @@ void func_80088938(s32 arg0) { yPos += 20; } } - render_dialogue_box(&D_801263A0, NULL, NULL, 6); + render_dialogue_box(&sMenuCurrDisplayList, NULL, NULL, 6); } if (D_80126C10 != 0) { set_text_colour(255, 255, 255, 0, 255); set_text_font(2); - draw_text(&D_801263A0, 160, 128, gMenuText[124], 12); + draw_text(&sMenuCurrDisplayList, 160, 128, gMenuText[124], ALIGN_MIDDLE_CENTER); } } } @@ -3257,8 +3289,8 @@ void menu_magic_codes_init(void) { D_801263D8 = 0; D_801263E0 = 0; func_800C01D8(&sMenuTransitionFadeOut); - set_current_dialogue_box_coords(7, 0x32, 0x32, 0x10E, 0x84); - set_current_dialogue_background_colour(7, 0, 0, 0, 0x80); + set_current_dialogue_box_coords(7, 50, 50, 270, 132); + set_current_dialogue_background_colour(7, 0, 0, 0, 128); assign_dialogue_box_id(7); func_800C4170(2); } @@ -3274,14 +3306,14 @@ void render_magic_codes_ui(s32 arg0) { char c; set_text_background_colour(0, 0, 0, 0); - render_dialogue_box(&D_801263A0, 0, 0, 7); + render_dialogue_box(&sMenuCurrDisplayList, 0, 0, 7); set_text_font(FONT_LARGE); - set_text_colour(0, 0, 0, 0xFF, 0x80); - draw_text(&D_801263A0, 0xA1, 0x23, gMenuText[17], 0xC); // gMenuText[17] = "MAGIC CODES" - set_text_colour(0xFF, 0xFF, 0xFF, 0, 0xFF); - draw_text(&D_801263A0, 0xA0, 0x20, gMenuText[17], 0xC); // gMenuText[17] = "MAGIC CODES" + set_text_colour(0, 0, 0, 255, 128); + draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[17], ALIGN_MIDDLE_CENTER); // gMenuText[17] = "MAGIC CODES" + set_text_colour(255, 255, 255, 0, 255); + draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[17], ALIGN_MIDDLE_CENTER); // gMenuText[17] = "MAGIC CODES" set_text_font(FONT_COLOURFUL); - set_text_colour(0xFF, 0xFF, 0xFF, 0, 0xFF); + set_text_colour(255, 255, 255, 0, 255); c = 'A'; yPos = 60; @@ -3291,20 +3323,20 @@ void render_magic_codes_ui(s32 arg0) { xPos = 64 + (j * 32); if (gOptionsMenuItemIndex == 5 && j == gCheatInputCurrentColumn && i == gCheatInputCurrentRow) { temp = D_801263BC * 8; - if (temp >= 0x100) { - temp = 0x1FF - temp; + if (temp >= 256) { + temp = 511 - temp; } - set_text_colour(0x80, 0xFF, 0xC0, (temp >> 1) + 0x80, 0xFF); + set_text_colour(128, 255, 192, (temp >> 1) + 128, 255); } if (c < '[') { - draw_text(&D_801263A0, xPos, yPos, &c, 0xC); // Draw the character + draw_text(&sMenuCurrDisplayList, xPos, yPos, &c, ALIGN_MIDDLE_CENTER); // Draw the character } else if (j == 5) { - draw_text(&D_801263A0, xPos, yPos, &D_800E8210, 0xC); // D_800E8210 = "DEL" + draw_text(&sMenuCurrDisplayList, xPos, yPos, &D_800E8210, ALIGN_MIDDLE_CENTER); // D_800E8210 = "DEL" } else { - draw_text(&D_801263A0, xPos, yPos, &D_800E8214, 0xC); // D_800E8214 = "OK" + draw_text(&sMenuCurrDisplayList, xPos, yPos, &D_800E8214, ALIGN_MIDDLE_CENTER); // D_800E8214 = "OK" } if ((5 == gOptionsMenuItemIndex) && (j == gCheatInputCurrentColumn) && (i == gCheatInputCurrentRow)) { - set_text_colour(0xFF, 0xFF, 0xFF, 0, 0xFF); + set_text_colour(255, 255, 255, 0, 255); } c++; c &= 0xFF; @@ -3313,12 +3345,12 @@ void render_magic_codes_ui(s32 arg0) { } temp = D_801263BC * 8; - if (temp >= 0x100) { - temp = 0x1FF - temp; + if (temp >= 256) { + temp = 511 - temp; } set_text_font(FONT_COLOURFUL); - yPos = 0xA4; + yPos = 164; yIncr = 16; if (osTvType == TV_TYPE_PAL) { yIncr = 24; @@ -3329,34 +3361,34 @@ void render_magic_codes_ui(s32 arg0) { if (i == gOptionsMenuItemIndex && D_801263E0 == 0) { alpha = temp; } - set_text_colour(0xFF, 0xFF, 0xFF, alpha, 0xFF); - draw_text(&D_801263A0, POS_CENTRED, yPos, gMagicCodeMenuStrings[i], 0xC); + set_text_colour(255, 255, 255, alpha, 255); + draw_text(&sMenuCurrDisplayList, POS_CENTRED, yPos, gMagicCodeMenuStrings[i], ALIGN_MIDDLE_CENTER); yPos += yIncr; } set_text_font(FONT_COLOURFUL); - set_text_colour(0xFF, 0xFF, 0x80, 0x80, 0xFF); - set_text_background_colour(0, 0, 0x80, 0x80); + set_text_colour(255, 255, 128, 128, 255); + set_text_background_colour(0, 0, 128, 128); if (gOptionsMenuItemIndex == 4) { if (D_80126C4C == -1) { - draw_text(&D_801263A0, POS_CENTRED, 0x90, gMenuText[18], 0xC); // gMenuText[18] = "Sorry, the code was incorrect" + draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, gMenuText[18], ALIGN_MIDDLE_CENTER); // gMenuText[18] = "Sorry, the code was incorrect" } else { // Draw cheat code name. - draw_text(&D_801263A0, POS_CENTRED, 0x90, (char *)(*gCheatsAssetData) + (*gCheatsAssetData + 1)[D_80126C4C + 1], 0xC); + draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, (char *)(*gCheatsAssetData) + (*gCheatsAssetData + 1)[D_80126C4C + 1], ALIGN_MIDDLE_CENTER); } } else if (5 == gOptionsMenuItemIndex) { - draw_text(&D_801263A0, POS_CENTRED, 0x90, D_80126C58, 0xC); + draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, D_80126C58, ALIGN_MIDDLE_CENTER); } else if (gOptionsMenuItemIndex == 6) { - draw_text(&D_801263A0, POS_CENTRED, 0x90, gMenuText[19], 0xC); // gMenuText[19] = "All cheats have been deleted" + draw_text(&sMenuCurrDisplayList, POS_CENTRED, 144, gMenuText[19], ALIGN_MIDDLE_CENTER); // gMenuText[19] = "All cheats have been deleted" } if (D_801263E0 != 0) { - yPos = 0x78; + yPos = 120; if (osTvType == TV_TYPE_PAL) { - yPos = 0x86; + yPos = 134; } assign_dialogue_box_id(6); set_dialogue_font(6, FONT_COLOURFUL); - set_current_dialogue_box_coords(6, 0x4C, yPos - 0x1C, 0xF4, yPos + 0x1C); - set_current_dialogue_background_colour(6, 0, 0, 0, 0xA0); + set_current_dialogue_box_coords(6, 76, yPos - 28, 244, yPos + 28); + set_current_dialogue_background_colour(6, 0, 0, 0, 160); yPos = 4; for (i = 0; i < 3; i++) { alpha = 0; @@ -3367,18 +3399,18 @@ void render_magic_codes_ui(s32 arg0) { } else if (i == D_801263E0) { alpha = temp; } - set_current_text_colour(6, 0xFF, green, 0xFF, alpha, 0xFF); + set_current_text_colour(6, 255, green, 255, alpha, 255); // gMenuText[148] = "CLEAR ALL CODES?", [149] = "OK", [150] = "CANCEL" render_dialogue_text(6, POS_CENTRED, yPos, gMenuText[148 + i], 1, 4); if (i != 0) { - yPos += 0x10; + yPos += 16; } else { - yPos += 0x14; + yPos += 20; } } - render_dialogue_box(&D_801263A0, 0, 0, 6); + render_dialogue_box(&sMenuCurrDisplayList, 0, 0, 6); } if ((get_filtered_cheats() << 3) < 0) { calculate_and_display_rom_checksum(); @@ -3415,17 +3447,17 @@ void menu_magic_codes_list_init(void) { // Should be functionally equivalent void render_magic_codes_list_menu_text(s32 arg0) { s32 numOfUnlockedCheats; - s32 fp; + s32 alpha; s32 phi_v0; - s32 s2; + s32 yPos; s32 i; set_text_background_colour(0, 0, 0, 0); set_text_font(FONT_LARGE); - set_text_colour(0, 0, 0, 0xFF, 0x80); - draw_text(&D_801263A0, 0xA1, 0x23, gMenuText[20], 0xC); // MAGIC CODES LIST - set_text_colour(0xFF, 0xFF, 0xFF, 0, 0xFF); - draw_text(&D_801263A0, 0xA0, 0x20, gMenuText[20], 0xC); // MAGIC CODES LIST + set_text_colour(0, 0, 0, 255, 128); + draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[20], ALIGN_MIDDLE_CENTER); // MAGIC CODES LIST + set_text_colour(255, 255, 255, 0, 255); + draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[20], ALIGN_MIDDLE_CENTER); // MAGIC CODES LIST numOfUnlockedCheats = 0; phi_v0 = 1; for (i = 0; i < 32; i++) { @@ -3435,38 +3467,38 @@ void render_magic_codes_list_menu_text(s32 arg0) { } phi_v0 <<= 1; } - s2 = 0x36; - fp = D_801263BC; - fp *= 8; - if (fp >= 0x100) { - fp = 0x1FF - fp; + yPos = 54; + alpha = D_801263BC; + alpha *= 8; + if (alpha >= 256) { + alpha = 511 - alpha; } set_text_font(FONT_COLOURFUL); - set_text_colour(0xFF, 0xFF, 0xFF, 0, 0xFF); + set_text_colour(255, 255, 255, 0, 255); for (i = D_801263E0; (i < D_801263E0 + D_80126C70) && (i < numOfUnlockedCheats); i++) { if (i == gOptionsMenuItemIndex) { - set_text_colour(0xFF, 0xFF, 0xFF, fp, 0xFF); + set_text_colour(255, 255, 255, alpha, 255); } - draw_text(&D_801263A0, 0x30, s2, (char *)(*gCheatsAssetData) + ((*gCheatsAssetData + 1)[D_80126C80[i] * 2 + 1]), 0); + draw_text(&sMenuCurrDisplayList, 48, yPos, (char *)(*gCheatsAssetData) + ((*gCheatsAssetData + 1)[D_80126C80[i] * 2 + 1]), ALIGN_TOP_LEFT); if ((1 << D_80126C80[i]) & gActiveMagicCodes) { - draw_text(&D_801263A0, 0x100, s2, gMenuText[21], 0); // ON + draw_text(&sMenuCurrDisplayList, 256, yPos, gMenuText[21], ALIGN_TOP_LEFT); // ON } else { - draw_text(&D_801263A0, 0x100, s2, gMenuText[22], 0); // OFF + draw_text(&sMenuCurrDisplayList, 256, yPos, gMenuText[22], ALIGN_TOP_LEFT); // OFF } if (i == gOptionsMenuItemIndex) { - set_text_colour(0xFF, 0xFF, 0xFF, 0, 0xFF); + set_text_colour(255, 255, 255, 0, 255); } - s2 += 0x10; + yPos += 16; } if (i < D_801263E0 + D_80126C70) { if (numOfUnlockedCheats == gOptionsMenuItemIndex) { - set_text_colour(0xFF, 0xFF, 0xFF, fp, 0xFF); + set_text_colour(255, 255, 255, alpha, 255); } - draw_text(&D_801263A0, POS_CENTRED, s2, gMenuText[5], 4); // RETURN + draw_text(&sMenuCurrDisplayList, POS_CENTRED, yPos, gMenuText[5], ALIGN_TOP_CENTER); // RETURN return; } if (D_801263BC & 8) { - render_textured_rectangle(&D_801263A0, &D_800E043C, 0xA0, s2 + 8, 0xFF, 0xFF, 0xFF, 0xFF); + render_textured_rectangle(&sMenuCurrDisplayList, &D_800E043C, 160, yPos + 8, 255, 255, 255, 255); } } #else @@ -3628,8 +3660,8 @@ void calculate_and_display_rom_checksum(void) { D_800E1E18 = TRUE; } - set_render_printf_background_colour(0, 0, 0, 0x80); - set_render_printf_position(0x20, 0x88); + set_render_printf_background_colour(0, 0, 0, 128); + set_render_printf_position(32, 136); render_printf(D_800E8218, D_800E1E14, &__ROM_END); // D_800E8218 = "ROM checksum %08X,%d\n" } #else @@ -3679,14 +3711,14 @@ void menu_character_select_init(void) { initialise_player_ids(); if (is_drumstick_unlocked()) { if (is_tt_unlocked()) { - D_801263CC = D_800DFF40; + D_801263CC = &D_800DFF40; } else { - D_801263CC = D_800DFE40; + D_801263CC = &D_800DFE40; } } else if (is_tt_unlocked()) { - D_801263CC = D_800DFEC0; + D_801263CC = &D_800DFEC0; } else { - D_801263CC = D_800DFDD0; + D_801263CC = &D_800DFDD0; } for (i = 0; i < 4; i++) { D_801263DC[i] = 0; @@ -3733,20 +3765,20 @@ void draw_character_select_text(UNUSED s32 arg0) { if (gMenuDelay >= -0x16 && gMenuDelay < 0x17) { set_text_font(FONT_LARGE); set_text_background_colour(0, 0, 0, 0); - set_text_colour(0, 0, 0, 0xFF, 0x80); + set_text_colour(0, 0, 0, 255, 128); // Draw "Player Select" text drop shadow - draw_text(&D_801263A0, 0xA1, 0x23, gMenuText[135], 0xC); - set_text_colour(255, 255, 255, 0, 0xFF); + draw_text(&sMenuCurrDisplayList, 161, 35, gMenuText[135], ALIGN_MIDDLE_CENTER); + set_text_colour(255, 255, 255, 0, 255); // Draw "Player Select" text - draw_text(&D_801263A0, 0xA0, 0x20, gMenuText[135], 0xC); + draw_text(&sMenuCurrDisplayList, 160, 32, gMenuText[135], ALIGN_MIDDLE_CENTER); if (gNumberOfReadyPlayers == gNumberOfActivePlayers && gNumberOfActivePlayers > 0) { - yPos = 0xD0; + yPos = 208; if (osTvType == TV_TYPE_PAL) { - yPos = 0xEA; + yPos = 234; } - draw_text(&D_801263A0, 0xA0, yPos, D_800E8230 /* "OK?" */, 0xC); + draw_text(&sMenuCurrDisplayList, 160, yPos, D_800E8230 /* "OK?" */, ALIGN_MIDDLE_CENTER); } - func_8007B3D0(&D_801263A0); + func_8007B3D0(&sMenuCurrDisplayList); update_camera_fov(40.0f); } } @@ -4023,7 +4055,7 @@ void func_8008C698(s32 arg0) { if (fade >= 0x100) { fade = 0x1FF - fade; } - func_80067F2C(&D_801263A0, (s32 *)&D_801263A8); + func_80067F2C(&sMenuCurrDisplayList, (s32 *)&sMenuCurrHudMat); for (i = 0; i <= D_801263E0; i++) { filterAlpha = 0; @@ -4044,7 +4076,7 @@ void func_8008C698(s32 arg0) { } draw_menu_elements(1, (MenuElement *)D_80126460, 1.0f); - func_80080BC8(&D_801263A0); + func_80080BC8(&sMenuCurrDisplayList); } } #else @@ -4225,7 +4257,7 @@ void render_file_select_menu(UNUSED s32 updateRate) { } func_8009BD5C(); - func_80067F2C(&D_801263A0, (s32 *)&D_801263A8); + func_80067F2C(&sMenuCurrDisplayList, (s32 *)&sMenuCurrHudMat); for (i = 0; i < 3; i++) { // 3 files if (gSavefileInfo[i].isAdventure2 == gIsInAdventureTwo || gSavefileInfo[i].isStarted == 0) { color = 0xB0E0C0FF; @@ -4235,7 +4267,7 @@ void render_file_select_menu(UNUSED s32 updateRate) { func_80080580(0, D_800E03CC[i].unk0 - 0xA0, 0x78 - D_800E03CC[i].unk2, D_800E03CC[i].unk4, D_800E03CC[i].unk6, D_800E03CC[i].unk8, D_800E03CC[i].unkA, color, D_80126550[67]); } - func_80080BC8(&D_801263A0); + func_80080BC8(&sMenuCurrDisplayList); if (D_801263D8 == 0) { set_text_font(FONT_LARGE); set_text_background_colour(0, 0, 0, 0); @@ -4247,22 +4279,22 @@ void render_file_select_menu(UNUSED s32 updateRate) { if (gSavefileInfo[i].isAdventure2 != 0) { s2 = 0xC; } - render_menu_image(s2, D_800E03FC[2] + D_800E03CC[i].unk0, D_800E03FC[3] + D_800E03CC[i].unk2, 0, 0, 0, 0x80); + render_menu_image(s2, D_800E03FC[2] + D_800E03CC[i].unk0, D_800E03FC[3] + D_800E03CC[i].unk2, 0, 0, 0, 128); func_80068508(1); gMenuImageStack->unk18 = gSavefileInfo[i].balloonCount / s5; - render_menu_image(0, (D_800E03FC[6] + D_800E03CC[i].unk0) - 6, D_800E03FC[7] + D_800E03CC[i].unk2, 0, 0, 0, 0x80); + render_menu_image(0, (D_800E03FC[6] + D_800E03CC[i].unk0) - 6, D_800E03FC[7] + D_800E03CC[i].unk2, 0, 0, 0, 128); gMenuImageStack->unk18 = gSavefileInfo[i].balloonCount % s5; - render_menu_image(0, D_800E03FC[6] + D_800E03CC[i].unk0 + 6, D_800E03FC[7] + D_800E03CC[i].unk2, 0, 0, 0, 0x80); + render_menu_image(0, D_800E03FC[6] + D_800E03CC[i].unk0 + 6, D_800E03FC[7] + D_800E03CC[i].unk2, 0, 0, 0, 128); func_80068508(0); - sMenuGuiColourG = 0x40; - sMenuGuiColourB = 0x40; - render_menu_image(s5, D_800E03FC[8] + D_800E03CC[i].unk0, D_800E03FC[9] + D_800E03CC[i].unk2, 0, 0, 0, 0x80); - sMenuGuiColourG = 0xFF; - sMenuGuiColourB = 0xFF; + sMenuGuiColourG = 64; + sMenuGuiColourB = 64; + render_menu_image(s5, D_800E03FC[8] + D_800E03CC[i].unk0, D_800E03FC[9] + D_800E03CC[i].unk2, 0, 0, 0, 128); + sMenuGuiColourG = 255; + sMenuGuiColourB = 255; func_8007BF1C(1); } else { set_text_colour(255, 255, 255, 64, 255); - draw_text(&D_801263A0, D_800E03FC[4] + D_800E03CC[i].unk0, D_800E03FC[5] + D_800E03CC[i].unk2 + y, gMenuText[75], 0xC); + draw_text(&sMenuCurrDisplayList, D_800E03FC[4] + D_800E03CC[i].unk0, D_800E03FC[5] + D_800E03CC[i].unk2 + y, gMenuText[75], ALIGN_MIDDLE_CENTER); } } } @@ -4288,7 +4320,7 @@ void render_file_select_menu(UNUSED s32 updateRate) { } if (s2) { s32 temp_t0 = phi_v0_2 | ~0xFF; - func_80080E90(&D_801263A0, D_800E03CC[i].unk0, D_800E03CC[i].unk2 + y, D_800E03CC[i].unk4, D_800E03CC[i].unk6, + func_80080E90(&sMenuCurrDisplayList, D_800E03CC[i].unk0, D_800E03CC[i].unk2 + y, D_800E03CC[i].unk4, D_800E03CC[i].unk6, D_800E03CC[i].unk8, D_800E03CC[i].unkA, temp_t0, temp_t0, temp_t0, temp_t0); } if (D_80126CC0 == 0 || i != gSaveFileIndex) { @@ -4297,35 +4329,35 @@ void render_file_select_menu(UNUSED s32 updateRate) { trim_filename_string(gFilenames[i], tempName); } if (tempName != NULL) { - draw_text(&D_801263A0, D_800E03FC[0] + D_800E03CC[i].unk0, D_800E03FC[1] + D_800E03CC[i].unk2 + y, tempName, 0xC); + draw_text(&sMenuCurrDisplayList, D_800E03FC[0] + D_800E03CC[i].unk0, D_800E03FC[1] + D_800E03CC[i].unk2 + y, tempName, ALIGN_MIDDLE_CENTER); } } } set_text_font(FONT_LARGE); set_text_colour(0, 0, 0, 255, 128); - draw_text(&D_801263A0, 0xA1, 0x13, gMenuText[76], 4); + draw_text(&sMenuCurrDisplayList, 161, 19, gMenuText[76], ALIGN_TOP_CENTER); set_text_colour(255, 255, 255, 0, 255); - draw_text(&D_801263A0, 0xA0, 0x10, gMenuText[76], 4); + draw_text(&sMenuCurrDisplayList, 160, 16, gMenuText[76], ALIGN_TOP_CENTER); set_text_colour(255, 255, 255, 0, 255); y += 0xBB; if (D_80126484 != 0) { if (D_80126494 == 0) { set_text_font(FONT_COLOURFUL); - draw_text(&D_801263A0, 0xA0, y, gMenuText[77], 0xC); + draw_text(&sMenuCurrDisplayList, 160, y, gMenuText[77], ALIGN_MIDDLE_CENTER); } else if (D_80126494 == 1) { set_text_font(FONT_COLOURFUL); - draw_text(&D_801263A0, 0xA0, y, gMenuText[78], 0xC); + draw_text(&sMenuCurrDisplayList, 160, y, gMenuText[78], ALIGN_MIDDLE_CENTER); } else { - draw_text(&D_801263A0, 0xA0, y, &D_800E8234, 0xC); + draw_text(&sMenuCurrDisplayList, 160, y, &D_800E8234, ALIGN_MIDDLE_CENTER); } return; } if (D_80126488 != 0) { if (D_80126494 == 0) { set_text_font(FONT_COLOURFUL); - draw_text(&D_801263A0, 0xA0, y, gMenuText[79], 0xC); + draw_text(&sMenuCurrDisplayList, 160, y, gMenuText[79], ALIGN_MIDDLE_CENTER); } else { - draw_text(&D_801263A0, 0xA0, y, &D_800E8238, 0xC); + draw_text(&sMenuCurrDisplayList, 160, y, &D_800E8238, ALIGN_MIDDLE_CENTER); } return; } @@ -4333,13 +4365,13 @@ void render_file_select_menu(UNUSED s32 updateRate) { if (D_801263E0 == 1) { set_text_colour(255, 255, 255, phi_v0_2, 255); } - draw_text(&D_801263A0, 0x5A, y, gMenuText[80], 0xC); + draw_text(&sMenuCurrDisplayList, 90, y, gMenuText[80], ALIGN_MIDDLE_CENTER); if (D_801263E0 == 2) { set_text_colour(255, 255, 255, phi_v0_2, 255); } else { set_text_colour(255, 255, 255, 0, 255); } - draw_text(&D_801263A0, 0xE6, y, gMenuText[81], 0xC); + draw_text(&sMenuCurrDisplayList, 230, y, gMenuText[81], ALIGN_MIDDLE_CENTER); return; } } @@ -4350,80 +4382,73 @@ GLOBAL_ASM("asm/non_matchings/menu/render_file_select_menu.s") GLOBAL_ASM("asm/non_matchings/menu/func_8008D5F8.s") GLOBAL_ASM("asm/non_matchings/menu/func_8008D8BC.s") -#if 1 -GLOBAL_ASM("asm/non_matchings/menu/func_8008DC7C.s") -#else -/* Size: 0x0C Bytes */ -extern SavefileInfo gSavefileInfo[3]; // Filename structs? -extern s32 D_80126494; -extern s32 D_8012648C; +void func_8008DC7C(UNUSED s32 arg0) { + s32 buttonsPressed; + s32 controllerXAxisDirection; + s32 temp; -void func_8008DC7C(s32 arg0) { - s32 temp_t6; - s32 temp_a1; - s32 phi_v1; - s32 phi_v1_2; + buttonsPressed = get_buttons_pressed_from_player(0); + controllerXAxisDirection = gControllersXAxisDirection[0]; - phi_v1 = get_buttons_pressed_from_player(0); - temp_a1 = gControllersXAxisDirection; if (gNumberOfActivePlayers == 2) { - phi_v1 = phi_v1 | get_buttons_pressed_from_player(1); - temp_a1 += gControllersXAxisDirection + 1; + buttonsPressed |= get_buttons_pressed_from_player(1); + controllerXAxisDirection += gControllersXAxisDirection[1]; } if (D_80126494 == 0) { - if (phi_v1 & 0x4000) { - func_80001D04(0x241, NULL); + if (buttonsPressed & B_BUTTON) { + func_80001D04(577, NULL); D_80126488 = 0; - } else if (phi_v1 & 0x9000) { - if (gSavefileInfo[D_8012648C].unk0 == 0) { - func_80001D04(0x241, NULL); + return; + } else if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + if (gSavefileInfo[D_8012648C].isStarted != 0) { + func_80001D04(239, NULL); + D_80126494 = 1; + return; } - func_80001D04(0xEF, NULL); - D_80126494 = 1; + func_80001D04(577, NULL); + return; } - phi_v1_2 = D_8012648C; - if (temp_a1 < 0) { - phi_v1_2 = D_8012648C; + temp = D_8012648C; + + //Left + if (controllerXAxisDirection < 0) { if (D_8012648C > 0) { D_8012648C--; - phi_v1_2 = D_8012648C; } } - if (temp_a1 > 0) { - temp_t6 = phi_v1_2 + 1; - if (phi_v1_2 < 2) { - D_8012648C = temp_t6; - phi_v1_2 = temp_t6; + //Right + if (controllerXAxisDirection > 0) { + if (D_8012648C < 2) { + D_8012648C++; } } - //if (D_8012648C != phi_v1_2) { - func_80001D04(0xEB, NULL); - //} + if (D_8012648C != temp) { + func_80001D04(235, NULL); + } } else { - if (phi_v1 & 0x9000) { - func_80001D04(0xEF, NULL); + if (buttonsPressed & (A_BUTTON | START_BUTTON)) { + func_80001D04(239, NULL); func_8006ECAC(D_8012648C); - gSavefileInfo[D_8012648C].unk0 = 0; - gSavefileInfo[D_8012648C].unk1 = 0; - gSavefileInfo[D_8012648C].unk2 = 0; + gSavefileInfo[D_8012648C].isAdventure2 = 0; + gSavefileInfo[D_8012648C].isStarted = 0; + gSavefileInfo[D_8012648C].balloonCount = 0; gSavefileInfo[D_8012648C].name[0] = 'D'; gSavefileInfo[D_8012648C].name[1] = 'K'; gSavefileInfo[D_8012648C].name[2] = 'R'; gSavefileInfo[D_8012648C].name[3] = '\0'; - gSaveFileIndex = (s32)D_8012648C; + gSaveFileIndex = D_8012648C; D_801263E0 = 0; D_80126488 = 0; - } else if (phi_v1 & 0x4000) { - func_80001D04(0x241, NULL); + } else if (buttonsPressed & B_BUTTON) { + func_80001D04(577, NULL); D_80126494 = 0; } } } -#endif GLOBAL_ASM("asm/non_matchings/menu/menu_file_select_loop.s") @@ -4453,61 +4478,61 @@ GLOBAL_ASM("asm/non_matchings/menu/func_8008E4EC.s") GLOBAL_ASM("asm/non_matchings/menu/menu_track_select_init.s") GLOBAL_ASM("asm/non_matchings/menu/func_8008F00C.s") -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING // Close to done with this function. Just a regalloc issue remains. -s32 menu_track_select_loop(s32 arg0) { - s32 phi_a2; +s32 menu_track_select_loop(s32 updateRate) { + s32 cutsceneId; Settings *settings; s32 i = 0; settings = get_settings(); - D_801263BC = (D_801263BC + arg0) & 0x3F; + D_801263BC = (D_801263BC + updateRate) & 0x3F; if (get_thread30_level_id_to_load() == 0 && gMenuDelay != 0) { if (gMenuDelay < 0) { - gMenuDelay -= arg0; + gMenuDelay -= updateRate; } else { - gMenuDelay += arg0; + gMenuDelay += updateRate; } } func_8008E4EC(); - gSPClearGeometryMode(D_801263A0++, G_CULL_FRONT) + gSPClearGeometryMode(sMenuCurrDisplayList++, G_CULL_FRONT); - switch (D_801267D0) { + switch (D_801267D0) { case 0: - func_8008FF1C(arg0); - func_800904E8(arg0); - func_80090918(arg0); + func_8008FF1C(updateRate); + func_800904E8(updateRate); + func_80090918(updateRate); break; case 1: - func_80090ED8(arg0); - render_track_select_setup_ui(arg0); - func_80092188(arg0); + func_80090ED8(updateRate); + render_track_select_setup_ui(updateRate); + func_80092188(updateRate); break; } if (sMenuMusicVolume < 0) { set_relative_volume_for_music(0); } else { - sMenuMusicVolume += arg0 * 2; - if (sMenuMusicVolume >= 0x51) { - sMenuMusicVolume = 0x50; + sMenuMusicVolume += updateRate * 2; + if (sMenuMusicVolume >= 81) { + sMenuMusicVolume = 80; } set_relative_volume_for_music((u8)sMenuMusicVolume); } if (D_801267D0 < 0) { func_8008F534(); D_800DF478 = 0; - if (gNumberOfActivePlayers >= 3 || gNumberOfActivePlayers == 2 && (gActiveMagicCodes << 7) >= 0) { - phi_a2 = 0; + if (gNumberOfActivePlayers >= 3 || (gNumberOfActivePlayers == 2 && (gActiveMagicCodes << 7) >= 0)) { + cutsceneId = 0; if (is_drumstick_unlocked()) { - phi_a2 = 1; + cutsceneId = 1; } if (is_tt_unlocked()) { - phi_a2 ^= 3; + cutsceneId ^= 3; } - load_level_for_menu(0x16, -1, phi_a2); + load_level_for_menu(22, -1, cutsceneId); func_8008AEB4(0, NULL); menu_init(MENU_CHARACTER_SELECT); return 0; @@ -4530,7 +4555,7 @@ s32 menu_track_select_loop(s32 arg0) { } gTrophyRaceWorldId = D_801269CC + 1; D_800DF450 = 0; - D_800E0FEC = 0; + gTrophyRaceRound = 0; menu_init(MENU_TROPHY_RACE_ROUND); return 0; } @@ -4571,7 +4596,7 @@ GLOBAL_ASM("asm/non_matchings/menu/func_8008FF1C.s") GLOBAL_ASM("asm/non_matchings/menu/func_800904E8.s") GLOBAL_ASM("asm/non_matchings/menu/func_80090918.s") -void func_80090ED8(UNUSED s32 arg0) { +void func_80090ED8(UNUSED s32 updateRate) { if (D_801263E0 == 1 && D_800E0414 == 0 && D_80126840 == 0) { func_80001D04(0x132, &D_80126840); } @@ -4580,7 +4605,7 @@ void func_80090ED8(UNUSED s32 arg0) { #ifdef NON_EQUIVALENT // Somewhat close to matching, but should be functionally equivalent. -void render_track_select_setup_ui(s32 arg0) { +void render_track_select_setup_ui(s32 updateRate) { s32 sp84; s32 sp80; s32 sp7C; @@ -4605,7 +4630,7 @@ void render_track_select_setup_ui(s32 arg0) { } func_80066894(0, 1); func_8009BD5C(); - func_80067F2C(&D_801263A0, (s32 *)&D_801263A8); + func_80067F2C(&sMenuCurrDisplayList, (s32 *)&sMenuCurrHudMat); if (gMenuDelay < 0) { if (D_801269F4 == 4) { sp84 = 6; @@ -4622,25 +4647,25 @@ void render_track_select_setup_ui(s32 arg0) { func_8009CA60(sp84); D_800DF454 = 1.0f; } - if ((gMenuDelay >= -0x16) && (gMenuDelay < 0x1F)) { + if ((gMenuDelay >= -22) && (gMenuDelay < 31)) { if (gMenuDelay < 0) { - sMenuGuiOpacity = (gMenuDelay * 0x10) + 0xFF; + sMenuGuiOpacity = (gMenuDelay * 16) + 255; } else { - sMenuGuiOpacity = 0xFF; + sMenuGuiOpacity = 255; } if (sMenuGuiOpacity < 0) { sMenuGuiOpacity = 0; } sp7C = func_8006B0F8(gTrackIdForPreview); set_text_font(FONT_LARGE); - set_text_colour(0xC0, 0xC0, 0xFF, 0, sMenuGuiOpacity); + set_text_colour(192, 192, 255, 0, sMenuGuiOpacity); set_text_background_colour(0, 0, 0, 0); - draw_text(&D_801263A0, POS_CENTRED, 0x2B, func_8006BDDC(gTrackIdForPreview), 0xC); // Draw track name? + draw_text(&sMenuCurrDisplayList, POS_CENTRED, 43, get_level_name(gTrackIdForPreview), ALIGN_MIDDLE_CENTER); // Draw track name? sp84 = D_801263BC * 8; - if (sp84 >= 0x100) { - sp84 = 0x1FF - sp84; + if (sp84 >= 256) { + sp84 = 511 - sp84; } - set_current_dialogue_background_colour(7, 0xFF, sp84, 0, sMenuGuiOpacity); + set_current_dialogue_background_colour(7, 255, sp84, 0, sMenuGuiOpacity); if ((D_801263E0 == -1) || ((D_801263E0 == 2) && (D_801269C8 == 4) && is_adventure_two_unlocked())) { s4 = func_800C4DA0(gMenuText[146], 0, 0); // gMenuText[146] = "ADVENTURE" temp = func_800C4DA0(gMenuText[147], 0, 0); // gMenuText[147] = "ADVENTURE TWO" @@ -4652,7 +4677,7 @@ void render_track_select_setup_ui(s32 arg0) { } else { s4 += 0xC; } - func_80080580(&D_801263A0, -(s4 >> 1), 0x78 - D_800E0700[1], s4, D_800E0700[3], + func_80080580(&sMenuCurrDisplayList, -(s4 >> 1), 0x78 - D_800E0700[1], s4, D_800E0700[3], D_800E0700[4], D_800E0700[5], sMenuGuiOpacity + 0xB0E0C000, D_8012665C); func_80080E6C(); set_text_font(FONT_COLOURFUL); @@ -4661,47 +4686,47 @@ void render_track_select_setup_ui(s32 arg0) { for (i = 0; i < 2; i++) { for (j = 0; j < 4; j += 2) { if (j == 0) { - set_text_colour(0, 0, 0, 0xFF, sMenuGuiOpacity >> 1); + set_text_colour(0, 0, 0, 255, sMenuGuiOpacity >> 1); } else { s32 alpha = i; if (i == D_800E0418) { alpha = sp84; } - set_text_colour(0xFF, 0xFF, 0xFF, alpha, sMenuGuiOpacity); + set_text_colour(255, 255, 255, alpha, sMenuGuiOpacity); } // gMenuText[146] = "ADVENTURE", gMenuText[147] = "ADVENTURE TWO" - draw_text(&D_801263A0, 0xA1 - j, s7 - j, gMenuText[146 + i], 0xC); + draw_text(&sMenuCurrDisplayList, 161 - j, s7 - j, gMenuText[146 + i], ALIGN_MIDDLE_CENTER); } s7 += 16; } } if (D_801269C8 < 4) { set_text_font(FONT_COLOURFUL); - set_text_colour(0xFF, 0x40, 0x40, 0x60, sMenuGuiOpacity); - draw_text(&D_801263A0, 0x38, 0x48 + sp80, gMenuText[9], 8); // gMenuText[9] = "BEST TIME" - draw_text(&D_801263A0, 0x38, 0x5C + sp80, gMenuText[10], 8); // gMenuText[10] = "BEST LAP" - set_text_colour(0xFF, 0x80, 0xFF, 0x60, sMenuGuiOpacity); + set_text_colour(255, 64, 64, 96, sMenuGuiOpacity); + draw_text(&sMenuCurrDisplayList, 56, 72 + sp80, gMenuText[9], ALIGN_MIDDLE_LEFT); // gMenuText[9] = "BEST TIME" + draw_text(&sMenuCurrDisplayList, 56, 92 + sp80, gMenuText[10], ALIGN_MIDDLE_LEFT); // gMenuText[10] = "BEST LAP" + set_text_colour(255, 128, 255, 96, sMenuGuiOpacity); decompress_filename_string(settings->courseInitialsPtr[gPlayerSelectVehicle[0]][gTrackIdForPreview], &sp78, 3); - draw_text(&D_801263A0, 0xFA, 0x48 + sp80, &sp78, 0xC); + draw_text(&sMenuCurrDisplayList, 250, 72 + sp80, &sp78, ALIGN_MIDDLE_CENTER); decompress_filename_string(settings->flapInitialsPtr[gPlayerSelectVehicle[0]][gTrackIdForPreview], &sp78, 3); - draw_text(&D_801263A0, 0xFA, 0x5C + sp80, &sp78, 0xC); - func_80081800(settings->courseTimesPtr[gPlayerSelectVehicle[0]][gTrackIdForPreview], 0x16, 0x35, 0x80, 0xFF, 0xFF, 0); - func_80081800(settings->flapTimesPtr[gPlayerSelectVehicle[0]][gTrackIdForPreview], 0x16, 0x21, 0xFF, 0xC0, 0xFF, 0); + draw_text(&sMenuCurrDisplayList, 250, 92 + sp80, &sp78, ALIGN_MIDDLE_CENTER); + show_timestamp(settings->courseTimesPtr[gPlayerSelectVehicle[0]][gTrackIdForPreview], 22, 53, 128, 255, 255, 0); + show_timestamp(settings->flapTimesPtr[gPlayerSelectVehicle[0]][gTrackIdForPreview], 22, 33, 255, 192, 255, 0); if (D_801263E0 != -1) { if (gNumberOfActivePlayers == 1) { // Glow effect - set_current_dialogue_box_coords(7, 0x86, sp80 + 0x70, 0xBA, sp80 + 0x89); - render_dialogue_box(&D_801263A0, 0, 0, 7); + set_current_dialogue_box_coords(7, 134, sp80 + 112, 186, sp80 + 137); + render_dialogue_box(&sMenuCurrDisplayList, 0, 0, 7); if (D_801263E0 <= 0) { - render_textured_rectangle(&D_801263A0, &D_800E05B4, 0x88, sp80 + 0x72, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, &D_800E05B4, 136, sp80 + 114, 255, 0xFF, 255, sMenuGuiOpacity); } else { - render_textured_rectangle(&D_801263A0, &D_800E05C4, 0x88, sp80 + 0x72, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, &D_800E05C4, 136, sp80 + 114, 255, 255, 255, sMenuGuiOpacity); for (i = 0; i < 2; i++) { s32 yTemp = 0x97 + sp80 + (i * 0x18); if (i == D_800E0414) { - render_textured_rectangle(&D_801263A0, D_800E0648[(i * 3) + 1], 0x68, yTemp, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E0648[(i * 3) + 1], 0x68, yTemp, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); } else { - render_textured_rectangle(&D_801263A0, D_800E0648[(i * 3) + 2], 0x68, yTemp, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E0648[(i * 3) + 2], 0x68, yTemp, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); } } } @@ -4715,11 +4740,11 @@ void render_track_select_setup_ui(s32 arg0) { s32 temp_v1 = D_800E0688[s3 + (i * 2) + 1] + sp80; // Glow effect around Player image set_current_dialogue_box_coords(7, temp_v0_9 - 2, temp_v1 - 2, temp_v0_9 + 0x32, temp_v1 + 0x17); - render_dialogue_box(&D_801263A0, 0, 0, 7); + render_dialogue_box(&sMenuCurrDisplayList, 0, 0, 7); } // "Player" text image - render_textured_rectangle(&D_801263A0, D_800E0660[i], D_800E0688[s3 + (i * 2)], D_800E0688[s3 + (i * 2) + 1] + sp80, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E0660[i], D_800E0688[s3 + (i * 2)], D_800E0688[s3 + (i * 2) + 1] + sp80, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); } } } @@ -4735,13 +4760,13 @@ void render_track_select_setup_ui(s32 arg0) { for (j = 0; j < gNumberOfActivePlayers; j++) { if (i == gPlayerSelectVehicle[j]) { // Highlighted - render_textured_rectangle(&D_801263A0, D_800E0624[(i * 3) + 1], D_800E06B0[s3 + j], yTemp, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E0624[(i * 3) + 1], D_800E06B0[s3 + j], yTemp, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); } else if (settings->courseFlagsPtr[gTrackIdForPreview] & 2) { // Not highlighted - render_textured_rectangle(&D_801263A0, D_800E0624[(i * 3) + 2], D_800E06B0[s3 + j], yTemp, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E0624[(i * 3) + 2], D_800E06B0[s3 + j], yTemp, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); } else { // Not available (Ghosted out) - render_textured_rectangle(&D_801263A0, D_800E0624[(i * 3) + 2], D_800E06B0[s3 + j], yTemp, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity / 2); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E0624[(i * 3) + 2], D_800E06B0[s3 + j], yTemp, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity / 2); } } } @@ -4758,24 +4783,24 @@ void render_track_select_setup_ui(s32 arg0) { if (gNumberOfActivePlayers == 1) { if (D_801263E0 == 0) { // Draw vehicle image for one player - render_textured_rectangle(&D_801263A0, D_800E0624[gPlayerSelectVehicle[0] * 3], 0x95, s7, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E0624[gPlayerSelectVehicle[0] * 3], 0x95, s7, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); } else { // Draw T.T. image for one player - render_textured_rectangle(&D_801263A0, D_800E0648[D_800E0414 * 3], 0x95, sp80, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E0648[D_800E0414 * 3], 0x95, sp80, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); } } if ((gNumberOfActivePlayers == 2) && (!sp74)) { s7 = sp80; // Draw vehicle image for first player - render_textured_rectangle(&D_801263A0, D_800E0624[gPlayerSelectVehicle[0] * 3], 0x4F, s7, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E0624[gPlayerSelectVehicle[0] * 3], 0x4F, s7, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); if (gPlayerSelectVehicle[1] == 2) { s7 = sp80 + 2; } // Draw vehicle image for second player - render_textured_rectangle(&D_801263A0, D_800E0624[gPlayerSelectVehicle[1] * 3], 0xB0, s7, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + render_textured_rectangle(&sMenuCurrDisplayList, D_800E0624[gPlayerSelectVehicle[1] * 3], 0xB0, s7, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); } - func_8007B3D0(&D_801263A0); + func_8007B3D0(&sMenuCurrDisplayList); if (gNumberOfActivePlayers < 3) { // Draw border around vehicle images @@ -4800,13 +4825,13 @@ void render_track_select_setup_ui(s32 arg0) { } else { s4 = D_800E06E4[2]; } - func_80080580(&D_801263A0, -(s4 >> 1), 0x78 - D_800E06E4[1], s4, D_800E06E4[3], D_800E06E4[4], D_800E06E4[5], 0xB0E0C0FF, D_8012665C); + func_80080580(&sMenuCurrDisplayList, -(s4 >> 1), 0x78 - D_800E06E4[1], s4, D_800E06E4[3], D_800E06E4[4], D_800E06E4[5], 0xB0E0C0FF, D_8012665C); func_80080E6C(); set_text_font(FONT_COLOURFUL); set_text_colour(0, 0, 0, 0xFF, 0x80); - draw_text(&D_801263A0, D_800E06E4[6] + D_800E06E4[0] + 1, D_800E06E4[7] + D_800E06E4[1] + 1, gMenuText[136], 0xC); + draw_text(&sMenuCurrDisplayList, D_800E06E4[6] + D_800E06E4[0] + 1, D_800E06E4[7] + D_800E06E4[1] + 1, gMenuText[136], ALIGN_MIDDLE_CENTER); set_text_colour(0xFF, 0xFF, 0xFF, 0, 0xFF); - draw_text(&D_801263A0, D_800E06E4[6] + D_800E06E4[0] - 1, D_800E06E4[7] + D_800E06E4[1] - 1, gMenuText[136], 0xC); + draw_text(&sMenuCurrDisplayList, D_800E06E4[6] + D_800E06E4[0] - 1, D_800E06E4[7] + D_800E06E4[1] - 1, gMenuText[136], ALIGN_MIDDLE_CENTER); // gMenuText[136] = "NUMBER OF RACERS" func_80068508(1); func_8007BF1C(0); @@ -4855,8 +4880,8 @@ void render_track_select_setup_ui(s32 arg0) { } if ((gNumberOfActivePlayers == 1) && (D_801263E0 >= 0) && (func_80092BE0(gTrackIdForPreview) >= 0)) { // Render small T.T. icon. - render_textured_rectangle(&D_801263A0, &D_800E0614, 0xCC, 0x7A, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); - func_8007B3D0(&D_801263A0); + render_textured_rectangle(&sMenuCurrDisplayList, &D_800E0614, 0xCC, 0x7A, 0xFF, 0xFF, 0xFF, sMenuGuiOpacity); + func_8007B3D0(&sMenuCurrDisplayList); } if (D_801269C8 != 5) { if (((D_801263E0 == 2) && !sp74) || ((D_801263E0 == 3) && sp74) || (D_801263E0 == 4)) { @@ -4865,7 +4890,7 @@ void render_track_select_setup_ui(s32 arg0) { if (D_801269C8 >= 4) { sp80 += 0x18; } - draw_text(&D_801263A0, 0xA0, 0xAC, D_800E823C, 0xC); // D_800E823C = "OK?" + draw_text(&sMenuCurrDisplayList, 160, 172, D_800E823C, ALIGN_MIDDLE_CENTER); // D_800E823C = "OK?" } } sMenuGuiOpacity = 0xFF; @@ -4936,8 +4961,8 @@ void menu_5_init(void) { play_music(0x18); func_80000B18(); D_801263E0 = 0; - func_8009C674(&D_800E0FB4); - allocate_menu_images(&D_800E0FD8); + func_8009C674(D_800E0FB4); + allocate_menu_images(D_800E0FD8); func_8008E45C(); D_800E04D4[0].texture = D_80126550[31]; D_800E04E4[0].texture = D_80126550[30]; @@ -4962,13 +4987,10 @@ void menu_5_init(void) { GLOBAL_ASM("asm/non_matchings/menu/func_80092E94.s") -#ifdef NON_EQUIVALENT -// Regalloc issues -s32 menu_5_loop(s32 arg0) { - s32 temp0; - s32 vehicle2; - s32 sp30; +s32 menu_5_loop(s32 updateRate) { s32 vehicle; + s32 sp30; + s32 vehicle2; s32 sp28; s32 sp24; s32 sp20; @@ -4981,12 +5003,11 @@ s32 menu_5_loop(s32 arg0) { settings = get_settings(); sp24 = ((Settings4C *)((u8 *)settings->unk4C + gTrackIdForPreview))->unk2; sp28 = FALSE; - temp0 = settings->courseFlagsPtr[sp24]; sp1C = 0; - if (temp0 & 2) { + if (settings->courseFlagsPtr[sp24] & 2) { sp1C = 1; } - if (temp0 & 4) { + if (settings->courseFlagsPtr[sp24] & 4) { sp1C = 2; } if (func_8006B14C(sp24) & 0x40) { @@ -5000,8 +5021,8 @@ s32 menu_5_loop(s32 arg0) { } } } - D_801263BC = (D_801263BC + arg0) & 0x3F; - func_80092E94(arg0, sp1C, sp20); + D_801263BC = (D_801263BC + updateRate) & 0x3F; + func_80092E94(updateRate, sp1C, sp20); if (sp1C < 2) { gPlayerSelectVehicle[0] = func_8006B0AC(sp24); } @@ -5060,11 +5081,11 @@ s32 menu_5_loop(s32 arg0) { } } else { if (gMenuDelay < 0) { - gMenuDelay = gMenuDelay - arg0; + gMenuDelay = gMenuDelay - updateRate; } else { - gMenuDelay = gMenuDelay + arg0; + gMenuDelay = gMenuDelay + updateRate; } - if ((gMenuDelay >= 0x1F) || (gMenuDelay < -0x1E)) { + if ((gMenuDelay >= 31) || (gMenuDelay < -30)) { func_80093A0C(); if (gMenuDelay > 0) { return gTrackIdForPreview | 0x80; @@ -5075,9 +5096,6 @@ s32 menu_5_loop(s32 arg0) { gIgnorePlayerInput = 0; return 0; } -#else -GLOBAL_ASM("asm/non_matchings/menu/menu_5_loop.s") -#endif void func_80093A0C(void) { func_8009C4A8((s16 *)&D_800E0FB4); @@ -5230,39 +5248,37 @@ void func_80094C14(s32 arg0) { GLOBAL_ASM("asm/non_matchings/menu/func_80094D28.s") -#ifdef NON_EQUIVALENT -void func_80095624(s32 arg0) { - switch (arg0 & 0xFF) { - case 1: - case 5: - // Two addiu instructions need to swap positions here! - D_80126C1C = D_800E09D8; +void func_80095624(s32 status) { + // status may contain controllerIndex in it's upper bits + // so grab the lower bits for the SIDeviceStatus + switch (status & 0xFF) { + case NO_CONTROLLER_PAK: + case CONTROLLER_PAK_CHANGED: /*Required to match*/ \ + D_80126C1C = sNoControllerPakMenuText; break; - case 4: - case 6: - // Two addiu instructions need to swap positions here! - D_80126C1C = D_800E09C4; + case CONTROLLER_PAK_FULL: + case CONTROLLER_PAK_UNK6: /*Required to match*/ \ + D_80126C1C = sControllerPakFullMenuText; break; - case 7: - D_80126C1C = D_800E0A04; + case RUMBLE_PAK: + // If you wish to use / the Controller Pak / insert it now! + D_80126C1C = sInsertControllerPakMenuText; break; - case 8: - D_80126C1C = D_800E0A14; + case CONTROLLER_PAK_UNK8: + //If you wish to use / the Rumble Pak / insert it now! + D_80126C1C = sInsertRumblePakMenuText; break; - case 9: - D_80126C1C = D_800E09EC; + case CONTROLLER_PAK_BAD_DATA: + D_80126C1C = sCorruptDataMenuText; break; default: - D_80126C1C = D_800E09B0; + D_80126C1C = sBadControllerPakMenuText; break; } for (D_80126C24 = 0; D_80126C1C[D_80126C24] != 0; D_80126C24++) { } } -#else -GLOBAL_ASM("asm/non_matchings/menu/func_80095624.s") -#endif GLOBAL_ASM("asm/non_matchings/menu/func_80095728.s") @@ -5449,7 +5465,7 @@ void func_800981E8(void) { void func_80098208(void) { Settings *settings = get_settings(); gTrophyRaceWorldId = settings->worldId; - D_800E0FEC = 0; + gTrophyRaceRound = 0; settings->unk4C->unk0 = settings->courseId; settings->unk4C->unkF = 0; settings->unk4C->unk1 = 0; @@ -5457,35 +5473,33 @@ void func_80098208(void) { set_time_trial_enabled(0); } -#if 1 -GLOBAL_ASM("asm/non_matchings/menu/menu_trophy_race_round_init.s") -#else +#ifdef NON_MATCHING void menu_trophy_race_round_init(void) { - s32 temp; + s32 levelId; s32 i; Settings *settings; - s8 *temp_t9; + s8 *levelIds; settings = get_settings(); - temp_t9 = get_misc_asset(0x1A); // Returns level ids array. + levelIds = (s8 *)get_misc_asset(26); // Returns level ids array. - if (D_800E0FEC == 0) { + if (gTrophyRaceRound == 0) { for (i = 0; i < 8; i++) { settings->racers[i].trophy_points = 0; } } - temp = temp_t9[((gTrophyRaceWorldId - 1) * 6) + D_800E0FEC]; - while (temp == -1) { - temp = (temp + 1) & 3; + levelId = levelIds[((gTrophyRaceWorldId - 1) * 6) + gTrophyRaceRound]; + while (levelId == -1) { + levelId = (levelId + 1) & 3; } for (i = 0; i < gNumberOfActivePlayers; i++) { - gPlayerSelectVehicle[i] = func_8006B0AC(temp); + gPlayerSelectVehicle[i] = func_8006B0AC(levelId); } - func_8006DB14(func_8006B0AC(temp)); - load_level_for_menu(temp, -1, 1); + func_8006DB14(func_8006B0AC(levelId)); + load_level_for_menu(levelId, -1, 1); gMenuDelay = 0; D_800E0980 = 10; @@ -5494,36 +5508,83 @@ void menu_trophy_race_round_init(void) { play_music(0x18); set_music_fade_timer(0x100); } +#else +GLOBAL_ASM("asm/non_matchings/menu/menu_trophy_race_round_init.s") #endif -void func_800983C0(UNUSED s32 arg0) { +/** + * Draws the trophy race intro text + * Ex. (DINO DOMAIN / TROPHY RACE / ROUND ONE / ANCIENT LAKE) + */ +void draw_trophy_race_text(UNUSED s32 updateRate) { s32 yPos; - char *sp28; - char *sp24; - s8 *sp20; + u8 *worldName; + u8 *levelName; + s8 *levelIds; - sp20 = get_misc_asset(26); + levelIds = (s8 *)get_misc_asset(26); if (osTvType == TV_TYPE_PAL) { yPos = 18; } else { yPos = 0; } - sp28 = func_8006BDDC(func_8006B1D4(gTrophyRaceWorldId)); - sp24 = func_8006BDDC(sp20[((gTrophyRaceWorldId - 1) * 6) + D_800E0FEC]); + worldName = get_level_name(get_hub_area_id(gTrophyRaceWorldId)); + levelName = get_level_name(levelIds[((gTrophyRaceWorldId - 1) * 6) + gTrophyRaceRound]); set_text_background_colour(0, 0, 0, 0); set_text_font(FONT_LARGE); + //Text Shadows first set_text_colour(0, 0, 0, 255, 128); - draw_text(&D_801263A0, 161, 35, sp28, 0xC); - draw_text(&D_801263A0, 161, 67, gMenuText[70], 0xC); // TROPHY RACE + draw_text(&sMenuCurrDisplayList, 161, 35, (char *)worldName, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 161, 67, gMenuText[70], ALIGN_MIDDLE_CENTER); // TROPHY RACE set_text_colour(255, 255, 255, 0, 255); - draw_text(&D_801263A0, 160, 32, sp28, 0xC); - draw_text(&D_801263A0, 160, 64, gMenuText[70], 0xC); // TROPHY RACE - draw_text(&D_801263A0, 160, yPos + 176, gMenuText[138 + D_800E0FEC], 0xC); // ROUND ONE / ROUND TWO / ROUND THREE / ROUND FOUR - draw_text(&D_801263A0, 160, yPos + 208, sp24, 0xC); + draw_text(&sMenuCurrDisplayList, 160, 32, (char *)worldName, ALIGN_MIDDLE_CENTER); + draw_text(&sMenuCurrDisplayList, 160, 64, gMenuText[70], ALIGN_MIDDLE_CENTER); // TROPHY RACE + draw_text(&sMenuCurrDisplayList, 160, yPos + 176, gMenuText[138 + gTrophyRaceRound], ALIGN_MIDDLE_CENTER); // ROUND ONE / ROUND TWO / ROUND THREE / ROUND FOUR + draw_text(&sMenuCurrDisplayList, 160, yPos + 208, (char *)levelName, ALIGN_MIDDLE_CENTER); } -GLOBAL_ASM("asm/non_matchings/menu/menu_trophy_race_round_loop.s") +s32 menu_trophy_race_round_loop(s32 updateRate) { + s8 *trackMenuIds; + s16 temp_a2; + s32 temp; + + trackMenuIds = (s8 *)get_misc_asset(26); //tracks_menu_ids + if (D_800E0980 != 0) { + D_800E0980 -= updateRate; + if (D_800E0980 <= 0) { + //This is mostly likely supposed to be a multi dimensional array + temp = trackMenuIds[(((gTrophyRaceWorldId - 1) * 6) + gTrophyRaceRound)]; + temp_a2 = D_800E0758[temp]; + if (temp_a2 != -1) { + func_80001D04(temp_a2, NULL); + } + D_800E0980 = 0; + } + } + if (gMenuDelay != 0) { + gMenuDelay += updateRate; + } + if (gMenuDelay < 22) { + draw_trophy_race_text(updateRate); + } + if ((gIgnorePlayerInput == 0) && (gMenuDelay == 0)) { + func_8008E4EC(); + if ((D_801267E8 & (A_BUTTON | START_BUTTON)) != 0) { + func_800C01D8(&sMenuTransitionFadeIn); + gMenuDelay = 1; + set_music_fade_timer(-128); + } + } + if (gMenuDelay >= 31) { + func_80098754(); + gTrackIdToLoad = trackMenuIds[(((gTrophyRaceWorldId - 1) * 6) + gTrophyRaceRound)]; + D_800DF478 = 1; + return gNumberOfActivePlayers; + } + gIgnorePlayerInput = 0; + return 0; +} void func_80098754(void) { func_800C422C(2); @@ -5646,26 +5707,26 @@ GLOBAL_ASM("asm/non_matchings/menu/menu_ghost_data_init.s") GLOBAL_ASM("asm/non_matchings/menu/func_80099E8C.s") -#ifdef NON_EQUIVALENT -// Regalloc issue: v0 & v1 need to swap! -s32 menu_ghost_data_loop(s32 arg0) { +s32 menu_ghost_data_loop(s32 updateRate) { s32 i; - s32 pressedButtons, xStick, yStick; + s32 pressedButtons; + s32 xStick; + s32 yStick; s32 temp; - s32 tempDelay; + UNUSED s32 unused; - D_801263BC = (D_801263BC + arg0) & 0x3F; + D_801263BC = (D_801263BC + updateRate) & 0x3F; - if ((gMenuDelay >= -0x13) && (gMenuDelay < 0x14)) { - func_80099E8C(); + if ((gMenuDelay >= -19) && (gMenuDelay < 20)) { + func_80099E8C(updateRate); } pressedButtons = 0; if (gMenuDelay != 0) { if (gMenuDelay < 0) { - gMenuDelay -= arg0; + gMenuDelay -= updateRate; } else { - gMenuDelay += arg0; + gMenuDelay += updateRate; } } @@ -5754,9 +5815,6 @@ s32 menu_ghost_data_loop(s32 arg0) { } return 0; } -#else -GLOBAL_ASM("asm/non_matchings/menu/menu_ghost_data_loop.s") -#endif void func_8009ABAC(void) { func_8009C4A8(D_800E1708); @@ -5881,14 +5939,14 @@ void func_8009B1E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { arg4 = 0; } - gSPDisplayList(D_801263A0++, D_800E1780); - gDPSetPrimColor(D_801263A0++, 0, 0, 0, 0, 0, arg4); - gDPSetCombineMode(D_801263A0++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); - gDPFillRectangle(D_801263A0++, arg0, arg1, arg0 + arg2, arg1 + arg3); - gDPPipeSync(D_801263A0++); - gDPSetPrimColor(D_801263A0++, 0, 0, 255, 255, 255, 255); + gSPDisplayList(sMenuCurrDisplayList++, D_800E1780); + gDPSetPrimColor(sMenuCurrDisplayList++, 0, 0, 0, 0, 0, arg4); + gDPSetCombineMode(sMenuCurrDisplayList++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); + gDPFillRectangle(sMenuCurrDisplayList++, arg0, arg1, arg0 + arg2, arg1 + arg3); + gDPPipeSync(sMenuCurrDisplayList++); + gDPSetPrimColor(sMenuCurrDisplayList++, 0, 0, 255, 255, 255, 255); - func_8007B3D0(&D_801263A0); + func_8007B3D0(&sMenuCurrDisplayList); } GLOBAL_ASM("asm/non_matchings/menu/menu_credits_loop.s") @@ -5931,7 +5989,7 @@ void func_8009BD5C(void) { temp_v0->unk14 = -32.0f; func_8001D5E0(0, 0, -1); - func_80066CDC(&D_801263A0, &D_801263A8); + func_80066CDC(&sMenuCurrDisplayList, &sMenuCurrHudMat); temp_v0->unk0 = sp2A; temp_v0->unk2 = sp28; @@ -5956,38 +6014,36 @@ void reset_controller_sticks(void) { } } -#ifdef NON_EQUIVALENT - #define STICK_DEADZONE 35 #define STICK_DELAY_AMOUNT 15 -// Should be functionally equivalent void update_controller_sticks(void) { - s32 prevXAxis, prevYAxis; + s32 XClamp, YClamp; s32 i; for (i = 0; i < 4; i++) { - prevXAxis = gControllersXAxis[i]; - prevYAxis = gControllersYAxis[i]; - gControllersXAxis[i] = clamp_joystick_x_axis(i); - gControllersYAxis[i] = clamp_joystick_y_axis(i); + XClamp = clamp_joystick_x_axis(i); + YClamp = clamp_joystick_y_axis(i); gControllersXAxisDirection[i] = 0; gControllersYAxisDirection[i] = 0; - if (gControllersXAxis[i] < -STICK_DEADZONE && prevXAxis > -STICK_DEADZONE) { + + if (XClamp < -STICK_DEADZONE && gControllersXAxis[i] >= -STICK_DEADZONE) { gControllersXAxisDirection[i] = -1; gControllersXAxisDelay[i] = 0; } - if (gControllersXAxis[i] > STICK_DEADZONE && prevXAxis < STICK_DEADZONE) { + if (XClamp > STICK_DEADZONE && gControllersXAxis[i] <= STICK_DEADZONE) { gControllersXAxisDirection[i] = 1; gControllersXAxisDelay[i] = 0; } - if (gControllersYAxis[i] < -STICK_DEADZONE && prevYAxis > -STICK_DEADZONE) { + if (YClamp < -STICK_DEADZONE && gControllersYAxis[i] >= -STICK_DEADZONE) { gControllersYAxisDirection[i] = -1; gControllersYAxisDelay[i] = 0; } - if (gControllersYAxis[i] > STICK_DEADZONE && prevYAxis < STICK_DEADZONE) { + if (YClamp > STICK_DEADZONE && gControllersYAxis[i] <= STICK_DEADZONE) { gControllersYAxisDirection[i] = 1; gControllersYAxisDelay[i] = 0; } + + gControllersYAxis[i] = YClamp; if (gControllersYAxis[i] < -STICK_DEADZONE) { gControllersYAxisDelay[i]++; } else if (gControllersYAxis[i] > STICK_DEADZONE) { @@ -5995,10 +6051,13 @@ void update_controller_sticks(void) { } else { gControllersYAxisDelay[i] = 0; } + if (gControllersYAxisDelay[i] > STICK_DELAY_AMOUNT) { gControllersYAxis[i] = 0; gControllersYAxisDelay[i] = 0; } + + gControllersXAxis[i] = XClamp; if (gControllersXAxis[i] < -STICK_DEADZONE) { gControllersXAxisDelay[i]++; } else if (gControllersXAxis[i] > STICK_DEADZONE) { @@ -6006,15 +6065,13 @@ void update_controller_sticks(void) { } else { gControllersXAxisDelay[i] = 0; } + if (gControllersXAxisDelay[i] > STICK_DELAY_AMOUNT) { gControllersXAxis[i] = 0; gControllersXAxisDelay[i] = 0; } } } -#else -GLOBAL_ASM("asm/non_matchings/menu/update_controller_sticks.s") -#endif /** * Reset the character id number slots to the default. @@ -6203,15 +6260,15 @@ void func_8009C4A8(s16 *arg0) { void func_8009C508(s32 arg0) { if (D_80126750[arg0] != 0) { if (D_80126550[arg0] != 0) { - if ((((*D_800DF750)[arg0] & 0xC000) == 0xC000) && (D_80126550[arg0] != 0)) { + if ((((*gAssetsMenuElementIds)[arg0] & 0xC000) == 0xC000) && (D_80126550[arg0] != 0)) { set_free_queue_state(0); - free_texture((u32)D_80126550[arg0]); + free_texture(D_80126550[arg0]); set_free_queue_state(2); } else { - if ((*D_800DF750)[arg0] & 0x8000) { + if ((*gAssetsMenuElementIds)[arg0] & 0x8000) { free_sprite((u32)D_80126550[arg0]); } else { - if ((*D_800DF750)[arg0] & 0x4000) { + if ((*gAssetsMenuElementIds)[arg0] & 0x4000) { gParticlePtrList_addObject((u32)D_80126550[arg0]); } else { func_8005FF40((u32)D_80126550[arg0]); @@ -6229,9 +6286,9 @@ void func_8009C508(s32 arg0) { free_from_memory_pool(gMenuImageStack); gMenuImageStack = NULL; } - if (*D_800DF750 != NULL) { - free_from_memory_pool(*D_800DF750); - *D_800DF750 = NULL; + if (*gAssetsMenuElementIds != NULL) { + free_from_memory_pool(*gAssetsMenuElementIds); + *gAssetsMenuElementIds = NULL; D_800DF754 = (u16)0; } } @@ -6316,7 +6373,7 @@ s32 func_8009CFEC(u32 dialogueOption) { update_controller_sticks(); assign_dialogue_box_id(1); open_dialogue_box(1); - set_current_dialogue_background_colour(1, 0, 0, 0, 0x80); + set_current_dialogue_background_colour(1, 0, 0, 0, 128); func_8001F450(); switch (dialogueOption) { case DIALOG_TAJ: @@ -6790,21 +6847,21 @@ s32 tt_menu_loop(void) { case NO_CONTROLLER_PAK: // NO CONTROLLER PAK // If you wish to change / Controller Pak or Rumble Pak, / please do so now. - D_801263A4 = D_800E09D8; + D_801263A4 = sNoControllerPakMenuText; sCurrentMenuID = TT_MENU_CONT_PAK_ERROR_1; break; case CONTROLLER_PAK_FULL: case CONTROLLER_PAK_UNK6: // CONTROLLER PAK FULL // If you wish to change / Controller Pak or Rumble Pak, / please do so now. - D_801263A4 = D_800E09C4; + D_801263A4 = sControllerPakFullMenuText; sCurrentMenuID = TT_MENU_CONT_PAK_ERROR_1; break; case CONTROLLER_PAK_BAD_DATA: // CORRUPT DATA. // If you wish to change / Controller Pak or Rumble Pak, / please do so now. // TRY AGAIN! - D_801263A4 = D_800E09EC; + D_801263A4 = sCorruptDataMenuText; sCurrentMenuID = TT_MENU_CONT_PAK_ERROR_1; break; case CONTROLLER_PAK_INCONSISTENT: @@ -6814,7 +6871,7 @@ s32 tt_menu_loop(void) { default: // BAD CONTROLLER PAK // If you wish to change / Controller Pak or Rumble Pak, / please do so now. - D_801263A4 = D_800E09B0; + D_801263A4 = sBadControllerPakMenuText; sCurrentMenuID = TT_MENU_CONT_PAK_ERROR_1; break; } @@ -6888,16 +6945,16 @@ void dialogue_close_stub(void) { * Return value goes completely unused. */ f32 func_8009E9B0(UNUSED DialogueBoxBackground *textbox, Gfx **dlist, Gfx **mat, VertexList **verts) { - D_801263A0 = *dlist; - D_801263A8 = *mat; - D_801263AC = *verts; - func_80067F2C(&D_801263A0, (s32 *)&D_801263A8); + sMenuCurrDisplayList = *dlist; + sMenuCurrHudMat = *mat; + sMenuCurrHudVerts = *verts; + func_80067F2C(&sMenuCurrDisplayList, (s32 *)&sMenuCurrHudMat); if (D_800E1E28 != 0 && sCurrentMenuID == 4) { func_8009E3D0(); } - *dlist = D_801263A0; - *mat = D_801263A8; - *verts = D_801263AC; + *dlist = sMenuCurrDisplayList; + *mat = sMenuCurrHudMat; + *verts = sMenuCurrHudVerts; return TRUE; } diff --git a/src/menu.h b/src/menu.h index a0499d08..709d1223 100644 --- a/src/menu.h +++ b/src/menu.h @@ -6,6 +6,7 @@ #include "PR/gbi.h" #include "fade_transition.h" #include "font.h" +#include "save_data.h" #define TT_MENU_ROOT 0 #define TT_MENU_CONT_PAK_ERROR_1 1 @@ -191,11 +192,11 @@ typedef struct unk800E153C { /* Size: 0x10 Bytes */ typedef struct unk800860A8 { - s8 unk0; + s8 unk0; //Probably SIDeviceStatus u8 pad1[0x5]; - s8 unk6; + s8 controllerIndex; u8 pad7[0x5]; - s32 unkC; //Used for bytes free in controller pak at one point. + u32 cPakBytesFree; } unk800860A8; /* Size: 0x10 bytes */ @@ -208,7 +209,7 @@ typedef struct unk800861C8 { s8 unk6; s8 pad7; u32 pad8; - u32 unkC; + u32 unkC; // Game Data File Size } unk800861C8; /* Unknown size */ @@ -227,6 +228,12 @@ typedef struct unk8006BDB0 { s8 unk4C; } unk8006BDB0; +typedef struct TitleScreenDemos { + s8 levelId; + s8 numberOfPlayers; + s8 cutsceneId; +} TitleScreenDemos; + extern s8 D_800DF450; extern f32 D_800DF454; extern s32 D_800DF458; @@ -277,7 +284,7 @@ extern s32 D_800DF4F0[]; extern unk800DF510 sMenuImageProperties[18]; -extern s16 *D_800DF750[1]; +extern s16 *gAssetsMenuElementIds[1]; extern s16 D_800DF754; extern s16 D_800DF758; extern unk800DF510 *gMenuImageStack; @@ -467,7 +474,7 @@ extern s16 D_800E0840[148]; extern s32 D_800E0968; extern s32 D_800E096C; -extern s32 D_800E0970; +extern s32 *D_800E0970; extern s32 D_800E0974; extern f32* D_800E0978; extern s32 D_800E097C; @@ -532,7 +539,7 @@ extern s16 D_800E0FD8[6]; extern s32 D_800E0FE4; extern s32 gTrophyRaceWorldId; -extern s32 D_800E0FEC; +extern s32 gTrophyRaceRound; extern s32 D_800E0FF0; // Unused? Not sure what this is. @@ -637,11 +644,11 @@ void func_8007FF88(void); void func_80080E6C(void); void func_800813C0(void); void menu_init(u32 menuId); -s32 menu_loop(Gfx **arg0, s32 **arg1, s32 **arg2, s32 **arg3, s32 arg4); -void func_80081800(s32 arg0, s32 arg1, s32 arg2, u8 arg3, u8 arg4, u8 arg5, u8 arg6); +s32 menu_loop(Gfx **currDisplayList, Gfx **currHudMat, VertexList **currHudVerts, TriangleList **currHudTris, s32 updateRate); +void show_timestamp(s32 frameCount, s32 xPos, s32 yPos, u8 red, u8 green, u8 blue, u8 fontID); void func_80081E54(s32 arg0, f32 arg1, f32 arg2, f32 arg3, s32 arg4, s32 arg5); void func_800828B8(void); -void print_missing_controller_text(Gfx *dl, s32 updateRate); +void print_missing_controller_text(Gfx **dl, s32 updateRate); void menu_logos_screen_init(void); s32 menu_logo_screen_loop(s32 arg0); void init_title_screen_variables(void); @@ -653,7 +660,7 @@ void func_80084734(void); void menu_audio_options_init(void); void func_800851FC(void); void menu_save_options_init(void); -s32 func_800860A8(s32 controllerIndex, s32 *arg1, unk800860A8 *arg2, s32 *arg3, s32 arg4); +s32 func_800860A8(s32 controllerIndex, s32 *arg1, unk800860A8 *arg2, s32 *arg3, s32 fileSize, s32 arg5); void func_800861C8(unk800861C8 *arg0, s32 *arg1); s32 func_800874D0(s32 buttonsPressed, s32 arg1); s32 func_800875E4(s32 buttonsPressed, s32 arg1); @@ -682,7 +689,7 @@ void func_8008E428(void); void func_8008E45C(void); void func_8008E4B0(void); void func_8008F534(void); -void func_80090ED8(s32 arg0); +void func_80090ED8(s32 updateRate); s32 func_80092BE0(s32 arg0); void menu_5_init(void); void func_80093A0C(void); @@ -698,7 +705,7 @@ s32 compress_filename_string(unsigned char *filename, s32 length); void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, s32 arg5, s32 arg6); void func_800981E8(void); void func_80098208(void); -void func_800983C0(s32 arg0); +void draw_trophy_race_text(UNUSED s32 updateRate); void func_80098754(void); void func_80099600(void); s32 get_trophy_race_world_id(void); @@ -762,6 +769,16 @@ s32 is_in_adventure_two(void); s32 is_in_two_player_adventure(void); s32 is_tt_unlocked(void); s32 is_drumstick_unlocked(void); +s32 menu_character_select_loop(s32 updateRate); +s32 menu_caution_loop(s32 updateRate); +void func_8008DC7C(UNUSED s32 arg0); +s32 menu_5_loop(s32 updateRate); +void func_80095624(s32 status); +s32 menu_boot_loop(s32 arg0); +void menu_magic_codes_init(void); +s32 menu_game_select_loop(s32 arg0); +s32 menu_ghost_data_loop(s32 updateRate); +s32 menu_trophy_race_round_loop(s32 updateRate); // Non Matching functions below here void load_menu_text(s32 language); // Non Matching @@ -769,35 +786,50 @@ void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2); s32 menu_audio_options_loop(s32 arg0); s32 menu_options_loop(s32 arg0); s32 func_800890AC(s32); -s32 menu_boot_loop(s32 arg0); -void menu_magic_codes_init(void); void render_magic_codes_list_menu_text(s32 arg0); s32 menu_magic_codes_list_loop(s32 arg0); void calculate_and_display_rom_checksum(void); void randomise_ai_racer_slots(s32 arg0); void menu_game_select_init(void); void func_8008C698(s32 arg0); -s32 menu_game_select_loop(s32 arg0); void render_file_select_menu(s32 arg0); -s32 menu_track_select_loop(s32 arg0); -void func_8008FF1C(s32 arg0); -void func_800904E8(s32 arg0); -void func_80090918(s32 arg0); -void render_track_select_setup_ui(s32 arg0); -void func_80092188(s32 arg0); +s32 menu_track_select_loop(s32 updateRate); +void func_8008FF1C(s32 updateRate); +void func_800904E8(s32 updateRate); +void func_80090918(s32 updateRate); +void render_track_select_setup_ui(s32 updateRate); +void func_80092188(s32 updateRate); void func_8008E4EC(void); -s32 menu_5_loop(s32 arg0); -void func_80095624(s32 arg0); s32 trim_filename_string(u8 *input, u8 *output); void menu_trophy_race_round_init(void); void menu_ghost_data_init(void); -s32 menu_ghost_data_loop(s32 arg0); void update_controller_sticks(void); s32 tt_menu_loop(void); void menu_track_select_init(void); void menu_trophy_race_rankings_init(void); void func_8009E3D0(void); -s32 func_800C3564(void); void func_8008C168(s32); +s32 menu_title_screen_loop(s32 updateRate); +s32 menu_save_options_loop(s32 updateRate); +s32 menu_magic_codes_loop(s32 updateRate); +s32 menu_file_select_loop(s32 updateRate); +s32 menu_results_loop(s32 updateRate); +s32 menu_trophy_race_rankings_loop(s32 updateRate); +s32 menu_23_loop(s32 updateRate); +s32 menu_credits_loop(s32 updateRate); +void func_8009CA60(s32 imageID); +void func_8007FFEC(s32 arg0); +void func_800871D8(s32 arg0); +SIDeviceStatus func_80087F14(s32 *controllerIndex, s32 arg1); +s32 func_8008832C(void); +void func_8009C6D4(s32 arg0); +void func_8008B358(void); +void func_8008B4C8(void); +void func_8008B758(s8 *activePlayers); +void func_8006F564(s8 arg0); +void func_80099E8C(s32 updateRate); +void func_80092E94(UNUSED s32 updateRate, s32 arg1, s32 arg2); +s32 func_800998E0(s32 arg0); +void func_80081218(void); #endif diff --git a/src/object_functions.c b/src/object_functions.c index fc48b85d..7f8c68c6 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -15,7 +15,7 @@ #include "game.h" #include "audio.h" #include "unknown_008C40.h" -#include "unknown_00BC20.h" +#include "objects.h" #include "particles.h" #include "unknown_0255E0.h" #include "font.h" @@ -91,32 +91,27 @@ s8 D_800DCA94[8] = { s8 D_800DCA9C[12] = { 0x00, 0x01, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -u16 D_800DCAA8[64] = { - 0x0000, 0x0301, 0x0000, 0x0000, - 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, - 0x0000, 0x0203, 0x0000, 0x0000, - 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, - 0x0002, 0x0503, 0xFFFF, 0x0000, - 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, - 0x0002, 0x0405, 0xFFFF, 0x0000, - 0x0000, 0x0000, 0x0000, 0xFFFF, - 0x0000, 0x0103, 0x0000, 0x0000, - 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, - 0x0000, 0x0302, 0x0000, 0x0000, - 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, - 0x0002, 0x0305, 0xFFFF, 0x0000, - 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, - 0x0002, 0x0504, 0xFFFF, 0x0000, - 0x0000, 0xFFFF, 0x0000, 0x0000, -}; -u16 D_800DCB28[20] = { - 0xFFC0, 0x0000, 0x0020, 0xFFC0, - 0x0000, 0xFFE0, 0x0000, 0x0000, - 0x0020, 0x0000, 0x0000, 0xFFE0, - 0x0040, 0x0000, 0x0020, 0x0040, - 0x0000, 0xFFE0, 0x0000, 0x0000, + +Triangle D_800DCAA8[8] = { + { {{ 0, 0, 3, 1 }}, { 0, 0 }, { -1, -1 }, { 0, -1 } }, + { {{ 0, 0, 2, 3 }}, { 0, 0 }, { -1, 0 }, { -1, -1 } }, + { {{ 0, 2, 5, 3 }}, { -1, 0 }, { 0, -1 }, { -1, -1 } }, + { {{ 0, 2, 4, 5 }}, { -1, 0 }, { 0, 0 }, { 0, -1 } }, + { {{ 0, 0, 1, 3 }}, { 0, 0 }, { 0, -1 }, { -1, -1 } }, + { {{ 0, 0, 3, 2 }}, { 0, 0 }, { -1, -1 }, { -1, 0 } }, + { {{ 0, 2, 3, 5 }}, { -1, 0 }, { -1, -1 }, { 0, -1 } }, + { {{ 0, 2, 5, 4 }}, { -1, 0 }, { 0, -1 }, { 0, 0 } }, }; +VertexPosition D_800DCB28[6] = { + { -64, 0, 32 }, + { -64, 0, -32 }, + { 0, 0, 32 }, + { 0, 0, -32 }, + { 64, 0, 32 }, + { 64, 0, -32 }, +}; + /*******************************/ /************ .bss ************/ @@ -130,41 +125,32 @@ s16 D_8011D4E2; /******************************/ -#ifdef NON_EQUIVALENT -typedef struct Object_50_80033CC0 { - f32 unk0; -} Object_50_80033CC0; - void obj_init_scenery(Object *obj, LevelObjectEntry_Scenery *entry) { f32 phi_f0; - obj->unk6 |= 2; + obj->segment.trans.unk6 |= 2; phi_f0 = entry->unk9 & 0xFF; if (phi_f0 < 10) { phi_f0 = 10; } phi_f0 /= 64; - obj->scale = obj->header->scale * phi_f0; - ((Object_50_80033CC0 *)obj->unk50)->unk0 = obj->header->unk4 * phi_f0; - obj->unk3A = entry->unk8; - obj->y_rotation = entry->unkA << 6 << 4; + obj->segment.trans.scale = obj->segment.header->scale * phi_f0; + ((Object_50_Scenery *)obj->unk50)->unk0 = obj->segment.header->unk4 * phi_f0; + obj->segment.unk3A = entry->unk8; + obj->segment.trans.y_rotation = entry->unkA << 6 << 4; if (entry->unkB) { - // Regalloc issue here obj->unk4C->unk14 = 1; obj->unk4C->unk11 = 1; - obj->unk4C->unk10 = 0x14; + obj->unk4C->unk10 = 20; obj->unk4C->unk12 = 0; obj->unk4C->unk16 = -5; obj->unk4C->unk17 = entry->unkB; } - if (obj->unk3A >= obj->header->numberOfModelIds) { - obj->unk3A = 0; + if (obj->segment.unk3A >= obj->segment.header->numberOfModelIds) { + obj->segment.unk3A = 0; } obj->unk78 = 0; obj->unk7C.word = 0; } -#else -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_scenery.s") -#endif void obj_loop_scenery(Object *obj, s32 speed) { Object78_80033DD0 *obj78; @@ -176,16 +162,16 @@ void obj_loop_scenery(Object *obj, s32 speed) { obj78->unk4 -= speed; } if ((obj->unk4C->unk14 & 0x40) && ((s32) obj78->unk4 <= 0)) { - func_80009558(316, obj->x_position, obj->y_position, obj->z_position, 4, NULL); + func_80009558(316, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); obj78->unk0 = (s32*) obj->unk4C->unk0; obj78->unk6 = 1820; obj78->unk4 = 10; if (get_number_of_active_players() < 2) { - if (obj->header->unk57 > 0) { - if (obj->header->unk57 == 1) { + if (obj->segment.header->unk57 > 0) { + if (obj->segment.header->unk57 == 1) { temp_v0 = 0; } else { - temp_v0 = get_random_number_from_range(0, obj->header->unk57 - 1); + temp_v0 = get_random_number_from_range(0, obj->segment.header->unk57 - 1); } obj->unk74 = 1 << temp_v0; func_800AFC3C(obj, 2); @@ -194,7 +180,7 @@ void obj_loop_scenery(Object *obj, s32 speed) { } else if (obj78->unk4 <= 0) { obj78->unk0 = 0; } - obj->z_rotation = (s16) obj78->unk6; + obj->segment.trans.z_rotation = (s16) obj78->unk6; obj78->unk6 = (obj78->unk6 * -200) >> 8; } } @@ -230,8 +216,7 @@ s32 func_8002AD08(f32, f32**, s32); void func_80001D04(u16, s32 *); void func_8000488C(s32); void func_800AFC3C(Object *, s32); -void gParticlePtrList_addObject(Object *); -f32 sqrtf(f32); +void gParticlePtrList_addObject(Object *); void obj_loop_fireball_octoweapon(Object *obj, s32 speed) { Object *obj78; @@ -241,7 +226,7 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 speed) { Object80033F60_64 *obj64; Object *obj4C_obj; f32 phi_f2; - s32* temp; + s32 *temp; f32 sp4C[7]; obj78 = (Object*)obj->unk78; @@ -252,56 +237,56 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 speed) { } if ((obj->behaviorId == 116) && (obj->unk7C.word < 0)) { - obj->x_position = 0.0f; - obj->y_position = 0.0f; - obj->z_position = 0.0f; + obj->segment.trans.x_position = 0.0f; + obj->segment.trans.y_position = 0.0f; + obj->segment.trans.z_position = 0.0f; func_80011560(); - func_80011570(obj, obj78->x_position, obj78->y_position, obj78->z_position); + func_80011570(obj, obj78->segment.trans.x_position, obj78->segment.trans.y_position, obj78->segment.trans.z_position); } else { - phi_f2 = (obj78->x_position - obj->x_position) * 0.1; + phi_f2 = (obj78->segment.trans.x_position - obj->segment.trans.x_position) * 0.1; if (phi_f2 > 10.0) { phi_f2 = 10.0f; } if (phi_f2 < -10.0) { phi_f2 = -10.0f; } - obj->x_velocity += (phi_f2 - obj->x_velocity) * 0.125 * sp7C; - phi_f2 = (obj78->y_position - obj->y_position) * 0.1; + obj->segment.x_velocity += (phi_f2 - obj->segment.x_velocity) * 0.125 * sp7C; + phi_f2 = (obj78->segment.trans.y_position - obj->segment.trans.y_position) * 0.1; if (phi_f2 > 10.0) { phi_f2 = 10.0f; } if (phi_f2 < -10.0) { phi_f2 = -10.0f; } - obj->y_velocity += (phi_f2 - obj->y_velocity) * 0.125 * sp7C; - phi_f2 = (obj78->z_position - obj->z_position) * 0.1; + obj->segment.y_velocity += (phi_f2 - obj->segment.y_velocity) * 0.125 * sp7C; + phi_f2 = (obj78->segment.trans.z_position - obj->segment.trans.z_position) * 0.1; if (phi_f2 > 10.0) { phi_f2 = 10.0f; } if (phi_f2 < -10.0) { phi_f2 = -10.0f; } - obj->z_velocity += (phi_f2 - obj->z_velocity) * 0.125 * sp7C; - if (sqrtf((obj->x_velocity * obj->x_velocity) + (obj->z_velocity * obj->z_velocity)) > 0.5) { - obj->y_rotation = func_80070750(obj->x_velocity, obj->z_velocity); - obj->x_rotation -= speed << 9; + obj->segment.z_velocity += (phi_f2 - obj->segment.z_velocity) * 0.125 * sp7C; + if (sqrtf((obj->segment.x_velocity * obj->segment.x_velocity) + (obj->segment.z_velocity * obj->segment.z_velocity)) > 0.5) { + obj->segment.trans.y_rotation = func_80070750(obj->segment.x_velocity, obj->segment.z_velocity); + obj->segment.trans.x_rotation -= speed << 9; } - func_80011570(obj, obj->x_velocity * sp7C, obj->y_velocity * sp7C, obj->z_velocity * sp7C); - if (obj->unk4A == 298 && func_8002AD08(obj->y_position, &sp4C, 0)) { - obj->y_position = sp4C[0]; + func_80011570(obj, obj->segment.x_velocity * sp7C, obj->segment.y_velocity * sp7C, obj->segment.z_velocity * sp7C); + if (obj->unk4A == 298 && func_8002AD08(obj->segment.trans.y_position, &sp4C, 0)) { + obj->segment.trans.y_position = sp4C[0]; } } - obj->unk18 += speed * 10; + obj->segment.unk18 += speed * 10; obj64 = obj->unk64; obj4C = obj->unk4C; obj4C_obj = (Object*)obj4C->unk0; // This should be a0, not v1! - if ((obj4C_obj != NULL) && (obj4C->unk13 < 60) && (obj4C_obj->header->behaviorId == 1)) { + if ((obj4C_obj != NULL) && (obj4C->unk13 < 60) && (obj4C_obj->segment.header->behaviorId == 1)) { obj4C_obj64 = obj4C_obj->unk64; if (obj4C_obj64->unk0 != -1) { if (obj->behaviorId == 108) { obj4C_obj64->unk187 = 1; obj->unk7C.word = 20; - func_8003FC44(obj->x_position, obj->y_position, obj->z_position, 44, 17, 1.0f, 1); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 44, 17, 1.0f, 1); gParticlePtrList_addObject(obj); } else if (obj->unk7C.word > 0) { obj4C_obj64->unk204 = 60; @@ -318,10 +303,10 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 speed) { if (obj->unk7C.word < 0) { if (obj->unk4A == 298) { gParticlePtrList_addObject(obj); - func_8003FC44(obj->x_position, obj->y_position, obj->z_position, 44, 17, 1.0f, 1); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 44, 17, 1.0f, 1); } - obj->scale *= 0.9; - if (obj->scale < 0.5) { + obj->segment.trans.scale *= 0.9; + if (obj->segment.trans.scale < 0.5) { gParticlePtrList_addObject(obj); } } @@ -342,7 +327,7 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 speed) { if (temp != 0) { func_8000488C(temp); } - func_80009558(341, obj->x_position, obj->y_position, obj->z_position, 4, 0); + func_80009558(341, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, 0); gParticlePtrList_addObject(obj); } } @@ -361,8 +346,8 @@ void obj_init_lasergun(Object *obj, LevelObjectEntry_Lasergun *entry) { obj64->unk10 = entry->unkC; obj64->unk11 = entry->unkD; obj64->unkCD.half = obj64->unkF; - obj->y_rotation = entry->unk8 << 4 << 4; // Not sure about the shift amounts here, but it - obj->x_rotation = entry->unk9 << 4 << 4; // just needs to be 2 left shifts that add up to 8. + obj->segment.trans.y_rotation = entry->unk8 << 4 << 4; // Not sure about the shift amounts here, but it + obj->segment.trans.x_rotation = entry->unk9 << 4 << 4; // just needs to be 2 left shifts that add up to 8. } GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_lasergun.s") @@ -409,22 +394,22 @@ void obj_loop_laserbolt(Object *obj, s32 speed) { if (osTvType == TV_TYPE_PAL) { sp5C *= 1.2; } - sp40 = obj->x_position + (obj->x_velocity * sp5C); - sp44 = obj->y_position + (obj->y_velocity * sp5C); - sp48 = obj->z_position + (obj->z_velocity * sp5C); + sp40 = obj->segment.trans.x_position + (obj->segment.x_velocity * sp5C); + sp44 = obj->segment.trans.y_position + (obj->segment.y_velocity * sp5C); + sp48 = obj->segment.trans.z_position + (obj->segment.z_velocity * sp5C); sp3C = 9.0f; - func_80031130(1, &obj->x_position, &sp40, -1); + func_80031130(1, &obj->segment.trans.x_position, &sp40, -1); sp38 = FALSE; - func_80031600(&obj->x_position, &sp40, &sp3C, &sp4E, 1, &sp38); + func_80031600(&obj->segment.trans.x_position, &sp40, &sp3C, &sp4E, 1, &sp38); if (sp38) { - obj->x_velocity = (sp40 - obj->x_position) / sp5C; - obj->y_velocity = (sp44 - obj->y_position) / sp5C; - obj->z_velocity = (sp48 - obj->z_position) / sp5C; + obj->segment.x_velocity = (sp40 - obj->segment.trans.x_position) / sp5C; + obj->segment.y_velocity = (sp44 - obj->segment.trans.y_position) / sp5C; + obj->segment.z_velocity = (sp48 - obj->segment.trans.z_position) / sp5C; } - func_80011570(obj, obj->x_velocity * sp5C, obj->y_velocity * sp5C, obj->z_velocity * sp5C); + func_80011570(obj, obj->segment.x_velocity * sp5C, obj->segment.y_velocity * sp5C, obj->segment.z_velocity * sp5C); if (sp38) { - func_8003FC44(obj->x_position, obj->y_position - 36.0f, obj->z_position, 44, 0, 0.2, 0); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position - 36.0f, obj->segment.trans.z_position, 44, 0, 0.2, 0); sp4F = TRUE; } @@ -447,7 +432,7 @@ void obj_loop_laserbolt(Object *obj, s32 speed) { obj7C->unkC = 180; } sp4F = TRUE; - func_8003FC44(obj->x_position, obj->y_position - 36.0f, obj->z_position, 44, 17, 0.5, 0); + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position - 36.0f, obj->segment.trans.z_position, 44, 17, 0.5, 0); } } if (sp4F) { @@ -461,12 +446,12 @@ void obj_init_torch_mist(Object *obj, LevelObjectEntry_Torch_Mist *entry) { phi_f0 = 10.0f; } phi_f0 /= 64; - obj->scale = obj->header->scale * phi_f0; + obj->segment.trans.scale = obj->segment.header->scale * phi_f0; obj->unk78 = entry->unk8; } void obj_loop_torch_mist(Object *obj, s32 speed) { - obj->unk18 += obj->unk78 * speed; + obj->segment.unk18 += obj->unk78 * speed; } void obj_init_effectbox(Object *obj, LevelObjectEntry_EffectBox *entry) { @@ -507,9 +492,9 @@ void obj_loop_effectbox(Object *obj, s32 speed) { temp4 = obj3C->unkA * 3; for (i = 0; i < numberOfObjects; i++) { - xDiff = objList[i]->x_position - obj->x_position; - yDiff = objList[i]->y_position - obj->y_position; - zDiff = objList[i]->z_position - obj->z_position; + xDiff = objList[i]->segment.trans.x_position - obj->segment.trans.x_position; + yDiff = objList[i]->segment.trans.y_position - obj->segment.trans.y_position; + zDiff = objList[i]->segment.trans.z_position - obj->segment.trans.z_position; if (((-temp3) < yDiff) && (yDiff < temp3)) { temp5 = (xDiff * temp0) + (zDiff * temp1); @@ -543,18 +528,16 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_effectbox.s") void obj_init_trophycab(Object *obj, LevelObjectEntry_TrophyCab *entry) { obj->unk4C->unk14 = 1; obj->unk4C->unk11 = 2; - obj->y_rotation = entry->rotation << 6 << 4; // Not sure about the values here. + obj->segment.trans.y_rotation = entry->rotation << 6 << 4; // Not sure about the values here. } #ifdef NON_EQUIVALENT void func_80001D04(u16, s32 *); -f32 sqrtf(f32); void func_80001D04(u16, s32 *); -f32 sqrtf(f32); u32 func_80001C08(void); void func_80001D04(u16, s32 *); -Object *func_8000EA54(unk80027FC4 *, s32); +Object *spawn_object(void *, s32); void func_8005A3B0(void); void func_8006F254(void); void func_8009CF68(s32 arg0); @@ -569,7 +552,6 @@ Settings *get_settings(void); void play_sound(u8 arg0); void set_music_fade_timer(s32 time); void set_sndfx_player_voice_limit(u8 voiceLimit); -f32 sqrtf(f32); typedef struct Object_64_80034E9C { s32 unk0; @@ -609,14 +591,14 @@ void obj_loop_trophycab(Object *obj, s32 speed) { obj->unk7C.word = 1; if ((settings->trophies >> (((settings->worldId - 1) ^ 0) * 2)) & 3) { sp44.unk0 = 128; - sp44.unk2 = obj->unk3C_a.unk3C->unk2; - sp44.unk4 = obj->unk3C_a.unk3C->unk4; - sp44.unk6 = obj->unk3C_a.unk3C->unk6; + sp44.unk2 = obj->segment.unk3C_a.unk3C->unk2; + sp44.unk4 = obj->segment.unk3C_a.unk3C->unk4; + sp44.unk6 = obj->segment.unk3C_a.unk3C->unk6; sp44.unk1 = 8; - trophyObj = func_8000EA54(&sp44, 1); + trophyObj = spawn_object(&sp44, 1); if (trophyObj) { - trophyObj->unk3C_a.unk3C = (void *) 0; - trophyObj->y_rotation = obj->y_rotation; + trophyObj->segment.unk3C_a.unk3C = (void *) 0; + trophyObj->segment.trans.y_rotation = obj->segment.trans.y_rotation; } } } @@ -627,8 +609,8 @@ void obj_loop_trophycab(Object *obj, s32 speed) { playerObj = get_object_struct(0); if (playerObj) { - xDiff = obj->x_position - playerObj->x_position; - zDiff = playerObj->z_position - obj->z_position; + xDiff = obj->segment.trans.x_position - playerObj->segment.trans.x_position; + zDiff = playerObj->segment.trans.z_position - obj->segment.trans.z_position; sqrtf((xDiff * xDiff) + (zDiff * zDiff)); // Distance on X & Z axes. Not used? new_var2 = settings->bosses; @@ -731,17 +713,17 @@ void obj_loop_eggcreator(Object *obj, s32 speed) { Object *someObj; if (obj->unk78 == 0) { - sp20.unk2 = obj->x_position; - sp20.unk4 = obj->y_position; - sp20.unk6 = obj->z_position; + sp20.unk2 = obj->segment.trans.x_position; + sp20.unk4 = obj->segment.trans.y_position; + sp20.unk6 = obj->segment.trans.z_position; sp20.unk1 = 8; sp20.unk0 = 0x34; - someObj = func_8000EA54(&sp20, 1); + someObj = spawn_object(&sp20, 1); if (someObj != NULL) { Object_64_8003564C *someObj64 = someObj->unk64; someObj64->unk4 = obj; obj->unk78 = someObj; - someObj->unk3C_a.unk3C = 0; + someObj->segment.unk3C_a.unk3C = 0; } } } @@ -752,10 +734,10 @@ void obj_init_lighthouse_rocketsignpost(Object *obj, LevelObjectEntry_Lighthouse phi_f0 = 10; } phi_f0 /= 64; - obj->scale = obj->header->scale * phi_f0; - obj->y_rotation = entry->unkA << 6 << 4; - if (obj->unk3A >= obj->header->numberOfModelIds) { - obj->unk3A = 0; + obj->segment.trans.scale = obj->segment.header->scale * phi_f0; + obj->segment.trans.y_rotation = entry->unkA << 6 << 4; + if (obj->segment.unk3A >= obj->segment.header->numberOfModelIds) { + obj->segment.unk3A = 0; } obj->unk4C->unk14 = 1; obj->unk4C->unk11 = 2; @@ -790,12 +772,12 @@ void obj_init_airzippers_waterzippers(Object *obj, LevelObjectEntry_AirZippers_W if (phi_f0 < 10.0f) { phi_f0 = 10.0f; } - objHeader = obj->header; + objHeader = obj->segment.header; phi_f0 /= 64; - obj->scale = objHeader->scale * phi_f0; - obj->y_rotation = entry->unkA << 6 << 4; - if (obj->unk3A >= objHeader->numberOfModelIds) { - obj->unk3A = 0; + obj->segment.trans.scale = objHeader->scale * phi_f0; + obj->segment.trans.y_rotation = entry->unkA << 6 << 4; + if (obj->segment.unk3A >= objHeader->numberOfModelIds) { + obj->segment.unk3A = 0; } obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; @@ -806,13 +788,117 @@ void obj_init_airzippers_waterzippers(Object *obj, LevelObjectEntry_AirZippers_W } } -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_airzippers_waterzippers.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_groundzipper.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_groundzipper.s") + +void obj_loop_airzippers_waterzippers(Object *obj, s32 speed) { + Object *curRacerObj; + Object_64_Racer *racerObj64; + f32 xDiff; + f32 yDiff; + f32 zDiff; + s32 numObjects; + Object** racerObjs; + s32 i; + + if (func_8000E1CC() == 0) { + obj->segment.trans.unk6 |= 0x4000; + } else { + obj->segment.trans.unk6 &= 0xBFFF; + } + if ((obj->unk4C->unk13 < 100) && !(obj->segment.trans.unk6 & 0x4000)) { + racerObjs = get_object_struct_array(&numObjects); + for (i = 0; i < numObjects; i++) { + curRacerObj = racerObjs[i]; + racerObj64 = (Object_64_Racer*)curRacerObj->unk64; + if ((racerObj64->unk1F5 == 0) && (racerObj64->unk1D3 < 15)) { + xDiff = curRacerObj->segment.trans.x_position - obj->segment.trans.x_position; + yDiff = curRacerObj->segment.trans.y_position - obj->segment.trans.y_position; + zDiff = curRacerObj->segment.trans.z_position - obj->segment.trans.z_position; + if ((s32) sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < 100) { + racerObj64->unk1F5 = 1; + racerObj64->unk14C = obj; + } + } + } + } +} + +void obj_init_groundzipper(Object *arg0, LevelObjectEntry_GroundZipper *entry) { + ObjectHeader *header; + f32 objScale; + + objScale = entry->scale & 0xFF; + if (objScale < 10.0f) { + objScale = 10.0f; + } + objScale /= 64; + header = arg0->segment.header; + arg0->segment.trans.scale = header->scale * objScale; + arg0->unk50->unk0 = header->unk4 * objScale; + arg0->segment.trans.y_rotation = entry->rotation << 6 << 4; + if (arg0->segment.unk3A >= arg0->segment.header->numberOfModelIds) { + arg0->segment.unk3A = 0; + } + arg0->unk78 = (s32)(28.0f * objScale) + 15; + if (arg0->unk78 < 0) { + arg0->unk78 = 0; + } + if (arg0->unk78 >= 0x100) { + arg0->unk78 = 0xFF; + } + arg0->unk4C->unk14 = 2; + arg0->unk4C->unk11 = 0; + arg0->unk4C->unk10 = 0x14; + arg0->unk4C->unk12 = 0; + arg0->unk4C->unk16 = -0x64; + arg0->unk4C->unk17 = 0x64; + if (get_filtered_cheats() & CHEAT_TURN_OFF_ZIPPERS) { + gParticlePtrList_addObject(arg0); + } +} + +void obj_loop_groundzipper(Object *obj, s32 speed) { + Object *curRacerObj; + Object_64_Racer *racerObj64; + f32 xDiff; + f32 yDiff; + s32 numObjects; + f32 zDiff; + Object** racerObjs; + s32 i; + + obj->segment.trans.unk6 &= 0xBFFF; + obj->segment.trans.unk6 |= 0x1000; + get_object_struct(0); // Unused. I guess the developers forgot to remove this? + if ((s32) obj->unk4C->unk13 < obj->unk78) { + racerObjs = get_object_struct_array(&numObjects); + for (i = 0; i < numObjects; i++) { + curRacerObj = racerObjs[i]; + racerObj64 = (Object_64_Racer*)curRacerObj->unk64; + if ((racerObj64->unk1D3 < 15) && (racerObj64->unk1E2 != 0)) { + xDiff = curRacerObj->segment.trans.x_position - obj->segment.trans.x_position; + yDiff = curRacerObj->segment.trans.y_position - obj->segment.trans.y_position; + zDiff = curRacerObj->segment.trans.z_position - obj->segment.trans.z_position; + if ((s32) sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < obj->unk78) { + if (racerObj64->unk0 != -1) { + func_80001EA8(263, curRacerObj->segment.trans.x_position, curRacerObj->segment.trans.y_position, curRacerObj->segment.trans.z_position, NULL); + } + racerObj64->unk1D3 = func_8000C8B4(45); + racerObj64->unk203 = 2; + if (racerObj64->unk20C) { + racerObj64->unk203 |= 4; + } + if (racerObj64->unk1D8 == 0) { + func_80072348(racerObj64->unk0, 8); + } + } + } + } + } +} void obj_init_unknown58(Object *obj, LevelObjectEntry_Unknown58 *entry) { obj->unk78 = 0; - obj->unk7C.word = obj->header; + obj->unk7C.word = obj->segment.header; } void obj_loop_unknown58(Object *obj, s32 speed) { @@ -821,8 +907,8 @@ void obj_loop_unknown58(Object *obj, s32 speed) { Object_64_80035E34 *someOtherObj64; Object_60 *obj60; - obj->unk3B = 0; - obj->unk18 = 0x28; + obj->segment.unk3B = 0; + obj->segment.unk18 = 0x28; if (func_8001139C() == 0) { obj->unk78 += speed; } @@ -835,9 +921,9 @@ void obj_loop_unknown58(Object *obj, s32 speed) { s8 temp = someOtherObj64->unk1D6; if ((temp == 1) || (temp == 2)) { someObj = (Object *)obj60->unk4; - someObj->y_rotation = 0x4000; - someObj->unk3A++; - someObj->unk3A &= 1; + someObj->segment.trans.y_rotation = 0x4000; + someObj->segment.unk3A++; + someObj->segment.unk3A &= 1; } } } @@ -846,13 +932,13 @@ void obj_init_characterflag(Object *obj, LevelObjectEntry_CharacterFlag *entry) f32 phi_f0; obj->unk78 = (s32)entry->unkE; obj->unk7C.word = -1; - obj->y_rotation = entry->unkC << 6 << 4; // Not sure about the values here. + obj->segment.trans.y_rotation = entry->unkC << 6 << 4; // Not sure about the values here. phi_f0 = (f32)(entry->unkA & 0xFF); if (phi_f0 < 10.0f) { phi_f0 = 10.0f; } phi_f0 /= 64; - obj->scale = (f32)(obj->header->scale * phi_f0); + obj->segment.trans.scale = (f32)(obj->segment.header->scale * phi_f0); } void obj_loop_characterflag(Object *obj, s32 speed) { @@ -924,22 +1010,39 @@ void obj_init_lavaspurt(Object *obj, LevelObjectEntry_LavaSpurt *entry) { void obj_loop_lavaspurt(Object *obj, s32 speed) { if (obj->unk78 > 0) { obj->unk78 -= speed; - obj->unk6 |= 0x4000; + obj->segment.trans.unk6 |= 0x4000; } else { - obj->unk6 &= ~0x4000; - obj->unk18 += speed * 4; - if (obj->unk18 >= 256) { - obj->unk18 = 0; + obj->segment.trans.unk6 &= ~0x4000; + obj->segment.unk18 += speed * 4; + if (obj->segment.unk18 >= 256) { + obj->segment.unk18 = 0; obj->unk78 = get_random_number_from_range(0, 30) + obj->unk7C.word; } } } void obj_init_posarrow(Object *obj, LevelObjectEntry_PosArrow *entry) { - obj->unk6 |= 0x4000; + obj->segment.trans.unk6 |= 0x4000; } -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_posarrow.s") +void obj_loop_posarrow(Object *obj, s32 speed) { + Object_64_PosArrow *someObj64; + Object **someObjList; + Object *someObj; + s32 numberOfObjects; + + obj->segment.trans.unk6 |= 0x4000; + someObjList = func_8001BAAC(&numberOfObjects); + if (obj->unk78 < numberOfObjects) { + someObj = someObjList[obj->unk78]; + someObj64 = someObj->unk64; + if (someObj64->unk0 == -1) { + obj->segment.trans.unk6 &= ~0x4000; + someObj64->unk150 = obj; + } + obj->segment.unk18 = obj->unk78 * 127; + } +} void obj_init_animator(Object *obj, LevelObjectEntry_Animator *entry, s32 arg2) { Object_64_800376E0 *obj64; @@ -951,7 +1054,7 @@ void obj_init_animator(Object *obj, LevelObjectEntry_Animator *entry, s32 arg2) obj64->unk2 = entry->unk8; obj64->unk4 = entry->unk9; obj64->unk6 = entry->unkA; - obj64->segmentId = get_level_segment_index_from_position(obj->x_position, obj->y_position, obj->z_position); + obj64->segmentId = get_level_segment_index_from_position(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); if (arg2 == 0) { obj64->unk8 = 0; obj64->unkA = 0; @@ -968,8 +1071,168 @@ void obj_init_animator(Object *obj, LevelObjectEntry_Animator *entry, s32 arg2) obj_loop_animator(obj, 0x20000); } +#ifdef NON_EQUIVALENT + +typedef struct Object_64_Animator { + /* 0x00 */ s16 segmentId; + /* 0x02 */ s16 batchId; + /* 0x04 */ s16 xSpeedFactor; + /* 0x06 */ s16 ySpeedFactor; + /* 0x08 */ s16 xSpeed; + /* 0x0A */ s16 ySpeed; +} Object_64_Animator; + +#define TEX_INDEX_NO_TEXTURE 255 + +// Has minor issues + +void obj_loop_animator(Object* obj, s32 speed) { + Object_64_Animator* obj64; // 3C + s32 sp20; + s32 sp1C; + LevelModel* levelModel; + s32 temp, temp2, segmentId, batchId; + s32 i; + s32 nextFacesOffset; + s32 curFacesOffset; + s32 texUVSpeed; + s32 texIndex; + TextureInfo *texInfo; + TriangleBatchInfo *triangleBatchInfo; + LevelModelSegment *levelModelSegment; + Triangle* triangle; + TextureHeader *tex; + s32 maxSpeed; + + obj64 = (Object_64_Animator*)obj->unk64; + + temp = obj64->xSpeedFactor * speed; + obj64->xSpeed += temp << 4; + sp20 = obj64->xSpeed >> 4; + obj64->xSpeed &= 0xF; + + temp2 = obj64->ySpeedFactor * speed; + obj64->ySpeed += temp2 << 4; + sp1C = obj64->ySpeed >> 4; + obj64->ySpeed &= 0xF; + + segmentId = obj64->segmentId; + + if (obj64->segmentId != -1) { + levelModel = func_8002C7C4(); + levelModelSegment = &levelModel->segments[segmentId]; + batchId = obj64->batchId; + triangleBatchInfo = &levelModelSegment->batches[batchId]; + texIndex = triangleBatchInfo->textureIndex; + curFacesOffset = triangleBatchInfo->facesOffset; + nextFacesOffset = triangleBatchInfo[1].facesOffset; + if (texIndex != TEX_INDEX_NO_TEXTURE) { + texUVSpeed = levelModel->textures[texIndex].texture->width << 7; + maxSpeed = texUVSpeed * 2; + for (i = curFacesOffset; i < nextFacesOffset; i++) { + triangle = &levelModelSegment->triangles[i]; + if (!(triangle->drawBackface & 0x80)) { + if (maxSpeed < triangle->uv0.v) { + triangle->uv0.v -= texUVSpeed; + triangle->uv1.v -= texUVSpeed; + triangle->uv2.v -= texUVSpeed; + } + if (triangle->uv0.v < 0) { + triangle->uv0.v += texUVSpeed; + triangle->uv1.v += texUVSpeed; + triangle->uv2.v += texUVSpeed; + } + if (maxSpeed < triangle->uv0.u) { + triangle->uv0.u -= texUVSpeed; + triangle->uv1.u -= texUVSpeed; + triangle->uv2.u -= texUVSpeed; + } + if (triangle->uv0.u < 0) { + triangle->uv0.u += texUVSpeed; + triangle->uv1.u += texUVSpeed; + triangle->uv2.u += texUVSpeed; + } + triangle->uv0.v += sp1C; + triangle->uv1.v += sp1C; + triangle->uv2.v += sp1C; + triangle->uv0.u += sp20; + triangle->uv1.u += sp20; + triangle->uv2.u += sp20; + } + } + } + } +} + +#else GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_animator.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_animation.s") +#endif + +void obj_init_animation(Object *obj, LevelObjectEntry_Animation *entry, s32 arg2) { + Object_64_Animation* obj64; + Object* sp24; + s8 tempOrderIndex; + f32 scalef; + + scalef = entry->scale & 0xFF; + if (scalef < 1.0f) { + scalef = 1.0f; + } + scalef /= 64; + obj->segment.trans.scale = obj->segment.header->scale * scalef; + obj->segment.trans.y_rotation = entry->y_rotation << 8; + obj->segment.trans.x_rotation = entry->x_rotation << 8; + obj->segment.trans.z_rotation = entry->z_rotation << 8; + if (entry->actorIndex == -2) { + entry->actorIndex = func_8001F3B8(); + } else { + if (entry->actorIndex < 0 && entry->actorIndex >= -2) { + entry->actorIndex = 0; + } + func_8001F3C8(entry->actorIndex); + } + if (entry->channel == -1) { + entry->channel = func_8001E440(); + } + if (entry->channel == 20) { + entry->actorIndex |= 0x80; + } + tempOrderIndex = func_8001F3EC(entry->actorIndex); + if (entry->order == -2) { + entry->order = tempOrderIndex; + if (entry->order < 0) { + entry->order = 0; + } + } else { + if ((tempOrderIndex >= 0) && (entry->order >= tempOrderIndex)) { + entry->order = tempOrderIndex; + } + if (entry->order < 0) { + entry->order = 0; + } + } + func_80011390(); + obj->unk7C.word = entry->actorIndex; + obj->unk78 = arg2; + if (arg2 != 0 && (get_buttons_pressed_from_player(0) & R_CBUTTONS)) { + obj->unk78 = 2; + } + if (((func_8001E440() == entry->channel) || (entry->channel == 20)) && (obj->unk64 == NULL) && (entry->order == 0) && (entry->objectIdToSpawn != -1)) { + func_8001F23C(obj, entry); + } + obj64 = (Object_64_Animation*)obj->unk64; + if (obj->unk64 != 0) { + func_8001EFA4(obj, obj64); + if (entry->order != 0 || obj64->unk4A != entry->objectIdToSpawn) { + gParticlePtrList_addObject(obj64); + obj->unk64 = NULL; + } + } + if (func_80021600(obj->unk7C.word)) { + func_8001EE74(); + } +} + void obj_loop_animobject(Object *obj, s32 speed) { func_8001F460(obj, speed, obj); @@ -1008,10 +1271,10 @@ void obj_loop_vehicleanim(Object *obj, s32 speed) { if (obj60 != NULL) { if (obj60->unk0 > 0) { someObj = obj60->unk0 == 3 ? obj60->unkC : obj60->unk4; - someObj->y_rotation = 0x4000; - someObj->unk3A++; - if (someObj->unk3A == someObj->header->numberOfModelIds) { - someObj->unk3A = 0; + someObj->segment.trans.y_rotation = 0x4000; + someObj->segment.unk3A++; + if (someObj->segment.unk3A == someObj->segment.header->numberOfModelIds) { + someObj->segment.unk3A = 0; } } } @@ -1049,10 +1312,8 @@ void obj_init_snowball(Object *obj, LevelObjectEntry_Snowball *entry) { obj->unk4C->unk12 = 0; } -#ifdef NON_EQUIVALENT -// Regalloc issues void obj_loop_snowball(Object *obj, s32 speed) { - Object_64_8003827C *obj64 = obj->unk64; + Object_64_Snowball *obj64 = obj->unk64; if (obj64->unk24 == 0) { if (obj64->unk38 != 0) { obj64->unk24 = (s16)(obj64->unk38 & 0xFF); @@ -1060,18 +1321,14 @@ void obj_loop_snowball(Object *obj, s32 speed) { } if (obj64->unk24 != 0) { if (obj64->unk20 == 0) { - func_80009558(obj64->unk24 & 0xFFFF, obj->x_position, obj->y_position, obj->z_position, 1, &obj64->unk20); + func_80009558(obj64->unk24, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &obj64->unk20); } else { - func_800096D8(obj64->unk20, obj->x_position, obj->y_position, obj->z_position); + func_800096D8(obj64->unk20, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); } } func_8001F460(obj, speed, obj); } -#else -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_snowball.s") -#endif - // Unused void func_80038330(s32 arg0, s32 arg1) { } @@ -1084,7 +1341,7 @@ void obj_loop_animcamera(Object *obj, s32 speed) { Object_64_80038710 *obj64; temp_v0 = func_8001F460(obj, speed, obj); - obj->unk6 |= 0x4000; + obj->segment.trans.unk6 |= 0x4000; obj64 = obj->unk64; if (temp_v0 == 0) { if (get_viewport_count() == VIEWPORTS_COUNT_1_PLAYER) { @@ -1093,7 +1350,7 @@ void obj_loop_animcamera(Object *obj, s32 speed) { phi_v1 = 1; } if (phi_v1) { - func_80066488(obj64->unk30, obj->x_position, obj->y_position, obj->z_position, 0x8000 - obj->y_rotation, -obj->x_rotation, obj->z_rotation); + func_80066488(obj64->unk30, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 0x8000 - obj->segment.trans.y_rotation, -obj->segment.trans.x_rotation, obj->segment.trans.z_rotation); } } } @@ -1111,7 +1368,7 @@ void obj_loop_animcar(Object *obj, s32 speed) { someObj = get_object_struct(temp_v0 - 1); } obj->unk7C.word = func_8001F460(obj, speed, obj); - obj->unk6 |= 0x4000; + obj->segment.trans.unk6 |= 0x4000; if (obj->unk7C.word == 0 && someObj != NULL) { Object_64_800387CC *someObj64 = someObj->unk64; someObj64->unk148 = obj; @@ -1129,7 +1386,7 @@ void obj_init_infopoint(Object *obj, LevelObjectEntry_InfoPoint *entry) { obj->unk4C->unk12 = 0; obj->unk78 = (entry->unk8[2] << 16) | entry->unk8[0]; // Not sure about the values here. obj->unk7C.word = entry->unk8[1]; - obj->y_rotation = entry->unkB << 10; // Not sure about the values here. + obj->segment.trans.y_rotation = entry->unkB << 10; // Not sure about the values here. } void obj_loop_infopoint(Object *obj, s32 speed) { @@ -1138,15 +1395,15 @@ void obj_loop_infopoint(Object *obj, s32 speed) { Object *playerObj; if (obj->unk7C.word == 0) { - obj->unk6 |= 0x4000; + obj->segment.trans.unk6 |= 0x4000; } else { - obj->unk6 &= ~0x4000; + obj->segment.trans.unk6 &= ~0x4000; } obj4C = obj->unk4C; if (obj4C->unk13 < ((obj->unk78 >> 16) & 0xFF)) { playerObj = obj4C->unk0; - if (playerObj->header->behaviorId == 1) { + if (playerObj->segment.header->behaviorId == 1) { Object_64_800388D4 *playerObj64 = playerObj->unk64; temp_a0 = playerObj64->unk0; if ((temp_a0 != -1) && (get_buttons_pressed_from_player(temp_a0) & Z_TRIG)) { @@ -1164,13 +1421,13 @@ void obj_loop_smoke(Object *obj, s32 speed) { if (osTvType == TV_TYPE_PAL) { temp_f2 *= 1.2; } - obj->x_position += obj->x_velocity * temp_f2; - obj->unk18 += speed * 16; - obj->y_position += obj->y_velocity * temp_f2; - obj->z_position += obj->z_velocity * temp_f2; - if (obj->unk18 >= 256) { + obj->segment.trans.x_position += obj->segment.x_velocity * temp_f2; + obj->segment.unk18 += speed * 16; + obj->segment.trans.y_position += obj->segment.y_velocity * temp_f2; + obj->segment.trans.z_position += obj->segment.z_velocity * temp_f2; + if (obj->segment.unk18 >= 256) { gParticlePtrList_addObject(obj); - obj->unk18 = 255; + obj->segment.unk18 = 255; } } @@ -1178,10 +1435,10 @@ void obj_init_unknown25(Object *obj, LevelObjectEntry_Unknown25 *entry) { } void obj_loop_unknown25(Object *obj, s32 speed) { - obj->unk18 += speed * 8; - if (obj->unk18 >= 256) { + obj->segment.unk18 += speed * 8; + if (obj->segment.unk18 >= 256) { gParticlePtrList_addObject(obj); - obj->unk18 = 255; + obj->segment.unk18 = 255; } } @@ -1195,34 +1452,28 @@ void obj_loop_wardensmoke(Object *obj, s32 speed) { if (osTvType == TV_TYPE_PAL) { temp_f2 *= 1.2; } - obj->unk18 += speed * 4; - obj->y_position += temp_f2 * 0.25; - if (obj->unk18 >= 256) { + obj->segment.unk18 += speed * 4; + obj->segment.trans.y_position += temp_f2 * 0.25; + if (obj->segment.unk18 >= 256) { gParticlePtrList_addObject(obj); - obj->unk18 = 255; + obj->segment.unk18 = 255; } } -#ifdef NON_EQUIVALENT -// regalloc issues -void obj_init_bombexplosion(Object *obj, unk80038B74 *entry) { - s32 temp; - obj->unk18 = 0; - obj->scale = 0.5f; - obj->unk3A = get_random_number_from_range(0, obj->header->numberOfModelIds - 1); +void obj_init_bombexplosion(Object *obj, LevelObjectEntry_BombExplosion *entry) { + LevelObjectEntry_BombExplosion *entry2; + obj->segment.unk18 = 0; + obj->segment.trans.scale = 0.5f; + obj->segment.unk3A = get_random_number_from_range(0, obj->segment.header->numberOfModelIds - 1); + entry2 = entry; // Needed for a match. obj->unk78 = 0; obj->unk7C.word = 0xFF; - temp = entry->unk8; - if (temp != 0) { - obj->unk7C.word |= (temp << 8) & 0xFF00; + if (entry->unk8) { + obj->unk7C.word |= (entry2->unk8 << 8) & 0xFF00; } obj->unk74 = 1; } -#else -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_bombexplosion.s") -#endif - GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_bombexplosion.s") void obj_init_teleport(Object *obj, LevelObjectEntry_Teleport *entry) { @@ -1237,7 +1488,7 @@ void obj_init_teleport(Object *obj, LevelObjectEntry_Teleport *entry) { void obj_loop_teleport(Object *obj, s32 speed) { if (obj->unk78 != 0) { - Object_3C_80038DC4 *temp = obj->unk3C_a.unk3C; + Object_3C_80038DC4 *temp = obj->segment.unk3C_a.unk3C; if (obj->unk4C->unk13 < 0x78) { func_8006F338(temp->unk8); obj->unk78 = 0; @@ -1256,12 +1507,12 @@ void obj_init_exit(Object *obj, LevelObjectEntry_Exit *entry) { } obj64 = obj->unk64; phi_f0 /= 128; - obj->scale = phi_f0; - obj->y_rotation = entry->unk11 << 6 << 4; - obj64->unk0 = func_800707C4(obj->y_rotation); + obj->segment.trans.scale = phi_f0; + obj->segment.trans.y_rotation = entry->unk11 << 6 << 4; + obj64->unk0 = func_800707C4(obj->segment.trans.y_rotation); obj64->unk4 = 0.0f; - obj64->unk8 = func_800707F8(obj->y_rotation); - obj64->unkC = -((obj64->unk0 * obj->x_position) + (obj64->unk8 * obj->z_position)); + obj64->unk8 = func_800707F8(obj->segment.trans.y_rotation); + obj64->unkC = -((obj64->unk0 * obj->segment.trans.x_position) + (obj64->unk8 * obj->segment.trans.z_position)); obj64->unk10 = entry->unk10; obj64->unk14 = entry->unk18; obj->unk4C->unk14 = 2; @@ -1270,7 +1521,54 @@ void obj_init_exit(Object *obj, LevelObjectEntry_Exit *entry) { obj->unk4C->unk12 = 0; } -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_exit.s") +void obj_loop_exit(Object *obj, s32 speed) { + Object *racerObj; + Object_64_Racer *racerObj64; + s32 numberOfRacers; + Settings *settings; + f32 xDiff; + f32 zDiff; + f32 dist; + f32 yDiff; + Object_64_Exit *obj64; + s32 someBool; + Object** racerObjects; + s32 i; + f32 temp; + + obj64 = (Object_64_Exit*)obj->unk64; + someBool = TRUE; + settings = get_settings(); + if ((obj64->unk14 == 0) && (settings->balloonsPtr[settings->worldId] == 8)) { + someBool = FALSE; + } + if ((obj64->unk14 == 1) && (settings->balloonsPtr[settings->worldId] < 8)) { + someBool = FALSE; + } + if (someBool) { + if (obj->unk4C->unk13 < obj64->unk10) { + dist = obj64->unk10; + racerObjects = get_object_struct_array(&numberOfRacers); + for (i = 0; i < numberOfRacers; i++) { + racerObj = racerObjects[i]; + racerObj64 = (Object_64_Racer*)racerObj->unk64; + if ((racerObj64->unk0 != -1) && (racerObj64->unk108 == 0)) { + xDiff = racerObj->segment.trans.x_position - obj->segment.trans.x_position; + yDiff = racerObj->segment.trans.y_position - obj->segment.trans.y_position; + zDiff = racerObj->segment.trans.z_position - obj->segment.trans.z_position; + if ((sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < dist)) { + temp = (obj64->unk0 * racerObj->segment.trans.x_position) + (obj64->unk8 * racerObj->segment.trans.z_position) + obj64->unkC; + if (temp < 0.0f) { + racerObj64->unk108 = obj; + racerObj64->unk200 = -120; + } + } + } + } + } + } +} + void obj_init_cameracontrol(Object *obj, LevelObjectEntry_CameraControl *entry) { obj->unk78 = entry->unk8; @@ -1284,7 +1582,7 @@ void obj_init_setuppoint(Object *obj, LevelObjectEntry_SetupPoint *entry) { s32 temp; obj->unk78 = entry->unk8; obj->unk7C.word = entry->unk9; - obj->y_rotation = entry->unkA << 6 << 4; // Not sure about the values here. + obj->segment.trans.y_rotation = entry->unkA << 6 << 4; // Not sure about the values here. } void obj_loop_setuppoint(Object *obj, s32 speed) { @@ -1306,13 +1604,13 @@ void obj_loop_dino_whale(Object *obj, s32 speed) { } else { obj->unk78 = 0; } - sp2C = obj->unk18; + sp2C = obj->segment.unk18; func_8001F460(obj, speed, obj); func_800113CC(obj, 0, sp2C, 0xAC, 0xAD); if (obj->unk4C->unk13 < 0xFF) { if (obj->unk78 == 0) { obj->unk78 = 0x3C; - func_80009558(0x23B, obj->x_position, obj->y_position, obj->z_position, 4, NULL); + func_80009558(0x23B, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } } } @@ -1363,8 +1661,8 @@ void obj_init_checkpoint(Object *obj, LevelObjectEntry_Checkpoint *entry, s32 ar phi_f0 = 5.0f; } phi_f0 /= 64; - obj->scale = phi_f0; - obj->y_rotation = entry->unkA << 6 << 4; // Not sure about the values here. + obj->segment.trans.scale = phi_f0; + obj->segment.trans.y_rotation = entry->unkA << 6 << 4; // Not sure about the values here. func_80011390(); } @@ -1373,19 +1671,19 @@ void obj_loop_checkpoint(Object *obj, s32 speed) { void obj_init_modechange(Object *obj, LevelObjectEntry_ModeChange *entry) { f32 phi_f0; - Object_64_8003AD34 *obj64; + Object_64_ModeChange *obj64; phi_f0 = entry->unk8 & 0xFF; if (phi_f0 < 5) { phi_f0 = 5; } obj64 = obj->unk64; phi_f0 /= 128; - obj->scale = phi_f0; - obj->y_rotation = entry->unk9 << 6 << 4; - obj64->unk0 = func_800707C4(obj->y_rotation); + obj->segment.trans.scale = phi_f0; + obj->segment.trans.y_rotation = entry->unk9 << 6 << 4; + obj64->unk0 = func_800707C4(obj->segment.trans.y_rotation); obj64->unk4 = 0.0f; - obj64->unk8 = func_800707F8(obj->y_rotation); - obj64->unkC = -((obj64->unk0 * obj->x_position) + (obj64->unk8 * obj->z_position)); + obj64->unk8 = func_800707F8(obj->segment.trans.y_rotation); + obj64->unkC = -((obj64->unk0 * obj->segment.trans.x_position) + (obj64->unk8 * obj->segment.trans.z_position)); obj64->unk10 = entry->unk8; obj64->unk14 = entry->unkA; obj->unk4C->unk14 = 2; @@ -1398,19 +1696,19 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_modechange.s") void obj_init_bonus(Object *obj, LevelObjectEntry_Bonus *entry) { f32 phi_f0; - Object_64_8003AD34 *obj64; + Object_64_Bonus *obj64; phi_f0 = entry->unk8 & 0xFF; if (phi_f0 < 5) { phi_f0 = 5; } obj64 = obj->unk64; phi_f0 /= 128; - obj->scale = phi_f0; - obj->y_rotation = entry->unk9 << 6 << 4; - obj64->unk0 = func_800707C4(obj->y_rotation); + obj->segment.trans.scale = phi_f0; + obj->segment.trans.y_rotation = entry->unk9 << 6 << 4; + obj64->unk0 = func_800707C4(obj->segment.trans.y_rotation); obj64->unk4 = 0.0f; - obj64->unk8 = func_800707F8(obj->y_rotation); - obj64->unkC = -((obj64->unk0 * obj->x_position) + (obj64->unk8 * obj->z_position)); + obj64->unk8 = func_800707F8(obj->segment.trans.y_rotation); + obj64->unkC = -((obj64->unk0 * obj->segment.trans.x_position) + (obj64->unk8 * obj->segment.trans.z_position)); obj64->unk10 = entry->unk8; obj64->unk14 = entry->unkA; obj->unk4C->unk14 = 2; @@ -1419,10 +1717,213 @@ void obj_init_bonus(Object *obj, LevelObjectEntry_Bonus *entry) { obj->unk4C->unk12 = 0; } -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_bonus.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_goldenballoon.s") +void obj_loop_bonus(Object *obj, s32 speed) { + Object *racerObj; + Object_64_Racer *racerObj64; + s32 numberOfRacers; + f32 xDiff; + f32 yDiff; + f32 halfDist; + f32 dist; + f32 zDiff; + Object_64_Bonus *obj64; + Object **racerObjects; + s32 i; + + obj64 = (Object_64_Bonus *)obj->unk64; + if (obj->unk4C->unk13 < obj64->unk10) { + dist = obj64->unk10; + halfDist = dist * 0.5; + racerObjects = get_object_struct_array(&numberOfRacers); + for (i = 0; i < numberOfRacers; i++) { + racerObj = racerObjects[i]; + racerObj64 = (Object_64_Racer *)racerObj->unk64; + yDiff = racerObj->segment.trans.y_position - obj->segment.trans.y_position; + if ((yDiff < halfDist) && (-halfDist < yDiff)) { + xDiff = racerObj->segment.trans.x_position - obj->segment.trans.x_position; + zDiff = racerObj->segment.trans.z_position - obj->segment.trans.z_position; + if ((sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < dist)) { + f32 temp = (obj64->unk0 * racerObj->segment.trans.x_position) + (obj64->unk8 * racerObj->segment.trans.z_position) + obj64->unkC; + if (temp < 0.0f) { + if ((s32) racerObj64->unk185 < 10) { + racerObj64->unk185 = 10; + func_80009558(34, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, 4, NULL); + func_80001EA8(racerObj64->unk3 + 123, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, NULL); + } + } + } + } + } + } +} +void obj_init_goldenballoon(Object *obj, LevelObjectEntry_GoldenBalloon *entry) { + Object_64_GoldenBalloon *obj64; + f32 scalef; + + if (entry->unk8 == -1) { + entry->unk8 = func_8000CC20(obj); + } else { + func_8000CBF0(obj, entry->unk8); + } + if (entry->unk8 == -1) { + rmonPrintf("Illegal door no!!!\n"); // Did the devs just copy-paste the door init function? + } + obj->unk4C->unk14 = 2; + obj->unk4C->unk11 = 4; + obj->unk4C->unk10 = 20; + obj->unk4C->unk12 = 0; + scalef = entry->scale & 0xFF; + if (scalef < 10.0f) { + scalef = 10.0f; + } + scalef /= 64; + obj->segment.trans.scale = obj->segment.header->scale * scalef; + obj64 = obj->unk64; + obj64->unkD = 255; + obj64->unk0 = 0.0f; + obj->unk78 = 0; + if (entry->unkA != 0) { + if ((get_settings()->tajFlags & (1 << (entry->unkA + 2))) != 0) { + obj->unk78 = 0; + } else { + obj->unk78 = 1; + } + } +} + + +#ifdef NON_EQUIVALENT + +// Has regalloc issues. + +void obj_loop_goldenballoon(Object *obj, s32 speed) { + s32 padding[1]; + Object_3C *obj3C; + Object_4C *obj4C; + Object_64_GoldenBalloon *obj64; + Settings *settings; + s32 flag; + s32 doubleSpeed; + Object *racerObj; + f32 sp2C; + f32 speedf; + s32 someBool; + + sp2C = speed; + if (osTvType == TV_TYPE_PAL) { + sp2C *= 1.2; + } + someBool = FALSE; + if ((*(s32*)0xA0000284) != 0x240B17D7) { + someBool = TRUE; + } + speedf = sp2C; + settings = get_settings(); + obj3C = obj->unk3C_a.unk3C; + flag = 0x10000 << obj3C->unk8; + if (settings->courseFlagsPtr[settings->courseId] & flag) { + if (obj->unk7C.word > 0) { + obj->unk74 = 2; + func_800AFC3C(obj, speed); + obj->unk7C.word -= speed; + } else { + gParticlePtrList_addObject(obj); + } + } else { + obj->segment.trans.unk6 |= 0x4000; + if (obj->unk78 == 0) { + obj->segment.trans.unk6 &= 0xBFFF; + doubleSpeed = speed * 2; + if (obj->unk38.half.lower < (255 - doubleSpeed)) { + obj->unk38.half.lower += doubleSpeed; + } else { + obj->unk38.half.lower = 255; + } + obj4C = obj->unk4C; + if ((obj4C->unk13 < 45) && (someBool == FALSE)) { + racerObj = obj4C->unk0; + if (racerObj && (racerObj->header->behaviorId == 1) && (((Object_64_Racer *)racerObj->unk64)->unk0 == 0)) { + settings->balloonsPtr[settings->worldId]++; + if (settings->worldId != 0) { + settings->balloonsPtr[0]++; + } + settings->courseFlagsPtr[settings->courseId] |= flag; + func_80001EA8(573, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, NULL); + obj->unk7C.word = 16; + obj->unk74 = 2; + obj->segment.trans.unk6 |= 0x4000; + func_800AFC3C(obj, speed); + } + } + obj64 = (Object_64_GoldenBalloon *)obj->unk64; + obj->unk3B = 0; + obj64->unk14 = 0.0f; + if (obj->unk38.half.lower < 255) { + speedf = 0.0f; + } else { + speedf = 1.0f; + } + if (obj64->unkD == 255) { + obj64->unkD = func_8001C524(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 0); + if (obj64->unkD != 255) { + obj64->unkE = func_8001CC48(obj64->unkD, -1, 0); + obj64->unkF = func_8001CC48(obj64->unkE, obj64->unkD, 0); + obj64->unk10 = func_8001CC48(obj64->unkF, obj64->unkE, 0); + obj64->unkC = obj64->unkD; + } + } else { + func_8001C6C4(obj64, obj, sp2C, speedf, 0); + } + } + } +} + + +#else GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_goldenballoon.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_door.s") +#endif + +void obj_init_door(Object *obj, LevelObjectEntry_Door *entry) { + Object_64_Door *obj64; + f32 phi_f0; + + obj64 = (Object_64_Door *)obj->unk64; + if (entry->unkC == -1) { + entry->unkC = func_8000CC20(obj); + } else { + func_8000CBF0(obj, entry->unkC); + } + obj64->unkE = entry->unkC; + obj64->unkF = entry->unkE; + obj64->unk11 = entry->numBalloonsToOpen; + obj64->unk10 = entry->numBalloonsToOpen; + obj64->unk12 = entry->distanceToOpen; + if (obj64->unkE == -1) { + rmonPrintf("Illegal door no!!!\n"); + } + obj->segment.unk3A = entry->modelIndex; + obj->segment.trans.y_rotation = entry->closedRotation << 6 << 4; + obj64->unk0 = obj->segment.trans.y_position; + obj64->unk8 = 0; + obj->unk78 = obj->segment.trans.y_rotation; + obj->unk7C.word = (s32) ((entry->openRotation & 0x3F) << 10); + phi_f0 = entry->scale & 0xFF; + if (phi_f0 < 10.0f) { + phi_f0 = 10.0f; + } + phi_f0 /= 64; + obj->segment.trans.scale = obj->segment.header->scale * phi_f0; + obj64->unk13 = (u8) entry->unkF; + obj64->unk14 = (s8) entry->unk11; + obj->unk4C->unk14 = 0x21; + obj->unk4C->unk11 = 2; + obj->unk4C->unk10 = 0x14; + obj->unk4C->unk12 = 0; + if (obj->segment.unk3A >= obj->segment.header->numberOfModelIds) { + obj->segment.unk3A = 0; + } +} + GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_door.s") void obj_init_ttdoor(Object *obj, LevelObjectEntry_TTDoor *entry) { @@ -1430,47 +1931,79 @@ void obj_init_ttdoor(Object *obj, LevelObjectEntry_TTDoor *entry) { Object_64_8003C1E0 *obj64; f32 phi_f0; - obj->unk3A = 0; + obj->segment.unk3A = 0; obj64 = obj->unk64; - obj->y_rotation = entry->unk8 << 6 << 4; + obj->segment.trans.y_rotation = entry->unk8 << 6 << 4; obj64->unkF = entry->unkE; obj64->unk13 = entry->unkB; - obj64->unk0 = obj->y_position; + obj64->unk0 = obj->segment.trans.y_position; obj64->unk8 = 0; obj64->unk12 = entry->unkA; - obj->unk78 = obj->y_rotation; + obj->unk78 = obj->segment.trans.y_rotation; obj->unk7C.word = (entry->unk9 & 0x3F) << 0xA; phi_f0 = entry->unkC & 0xFF; if (phi_f0 < 10) { phi_f0 = 10; } phi_f0 /= 64; - obj->scale = obj->header->scale * phi_f0; + obj->segment.trans.scale = obj->segment.header->scale * phi_f0; obj->unk4C->unk14 = 0x21; obj->unk4C->unk11 = 2; obj->unk4C->unk10 = 0x14; obj->unk4C->unk12 = 0; - if (obj->unk3A >= obj->header->numberOfModelIds) { - obj->unk3A = 0; + if (obj->segment.unk3A >= obj->segment.header->numberOfModelIds) { + obj->segment.unk3A = 0; } } GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_ttdoor.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_trigger.s") +void obj_init_trigger(Object *obj, LevelObjectEntry_Trigger *entry) { + f32 phi_f0; + Object_64_Trigger *obj64; + + if (entry->unk9 == -1) { + entry->unk9 = func_8000CC20(obj); + } else { + func_8000CBF0(obj, entry->unk9); + } + if (entry->unk9 == -1) { + rmonPrintf("Illegal door no!!!\n"); + } + phi_f0 = (s32)entry->scale & 0xFF; + if (phi_f0 < 5.0f) { + phi_f0 = 5.0f; + } + obj64 = (Object_64_Trigger*)obj->unk64; + phi_f0 /= 128; + obj->segment.trans.scale = phi_f0; + obj->segment.trans.y_rotation = entry->rotation << 6 << 4; + obj64->unk0 = func_800707C4(obj->segment.trans.y_rotation); + obj64->unk4 = 0.0f; + obj64->unk8 = func_800707F8(obj->segment.trans.y_rotation); + obj64->unkC = -((obj64->unk0 * obj->segment.trans.x_position) + (obj64->unk8 * obj->segment.trans.z_position)); + obj64->unk10 = entry->scale; + obj64->unk14 = entry->unkD; + obj->unk4C->unk14 = 2; + obj->unk4C->unk11 = 0; + obj->unk4C->unk10 = entry->scale; + obj->unk4C->unk12 = 0; +} + + GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_trigger.s") void obj_init_bridge_whaleramp(Object *obj, LevelObjectEntry_Bridge_WhaleRamp *entry) { Object_64 *temp = obj->unk64; - obj->unk3A = entry->unk8; - obj->y_rotation = entry->unk9 << 6 << 4; - temp->unk0_a.unk0 = obj->y_position; + obj->segment.unk3A = entry->unk8; + obj->segment.trans.y_rotation = entry->unk9 << 6 << 4; + temp->unk0_a.unk0 = obj->segment.trans.y_position; obj->unk4C->unk14 = 0x21; obj->unk4C->unk11 = 2; obj->unk4C->unk10 = 0x14; obj->unk4C->unk12 = 0; temp->unk4 = 0; - if (obj->unk3A >= obj->header->numberOfModelIds) { - obj->unk3A = 0; + if (obj->segment.unk3A >= obj->segment.header->numberOfModelIds) { + obj->segment.unk3A = 0; } } @@ -1530,7 +2063,7 @@ void obj_loop_ainode(Object *obj, s32 speed) { } void obj_init_treasuresucker(Object *obj, LevelObjectEntry_TreasureSucker *entry) { - obj->unk18 = 0x78; + obj->segment.unk18 = 0x78; obj->unk78 = (entry->unk8 - 1) & 3; } @@ -1541,13 +2074,40 @@ void obj_init_flycoin(Object *obj, LevelObjectEntry_FlyCoin *entry) { GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_flycoin.s") -void obj_init_coincreator(Object *obj, LevelObjectEntry_BananaCreator *entry) { - obj->unk18 = 0x64; +void obj_init_bananacreator(Object *obj, LevelObjectEntry_BananaCreator *entry) { + obj->segment.unk18 = 100; } -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_coincreator.s") +void obj_loop_bananacreator(Object *obj, s32 speed) { + LevelObjectEntryCommon newEntry; + Object *newBananaObj; + Object_64_Banana *newBananaObj64; -void obj_init_coin(Object *obj, LevelObjectEntry_Banana *entry) { + if (obj->unk7C.word != 0) { + obj->unk78 -= speed; + } + + if (obj->unk78 <= 0) { + newEntry.x = (s32) obj->segment.trans.x_position; + newEntry.y = ((s32) ((s16) obj->segment.trans.y_position)) - 3; + newEntry.z = (s32) obj->segment.trans.z_position; + newEntry.size = 8; + newEntry.object_id = 83; + newBananaObj = spawn_object(&newEntry, 1); + obj->unk7C.word = 1; + if (newBananaObj) { + newBananaObj->segment.unk3C_a.unk3C = 0; + newBananaObj64 = (Object_64_Banana *) newBananaObj->unk64; + newBananaObj64->spawner = obj; + func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position - 14.0f, obj->segment.trans.z_position, 44, 34, 0.25f, 0); + obj->unk7C.word = 0; + } + obj->unk78 = TIME_SECONDS(20); // Set delay to respawn banana to 20 seconds. + } +} + + +void obj_init_banana(Object *obj, LevelObjectEntry_Banana *entry) { obj->unk4C->unk14 = 2; obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0x1E; @@ -1558,7 +2118,7 @@ void obj_init_coin(Object *obj, LevelObjectEntry_Banana *entry) { } } -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_coin.s") +GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_banana.s") void obj_init_silvercoin_adv2(Object *obj, LevelObjectEntry_SilverCoinAdv2 *entry) { obj->unk4C->unk14 = 2; @@ -1574,7 +2134,7 @@ void obj_init_silvercoin_adv2(Object *obj, LevelObjectEntry_SilverCoinAdv2 *entr } } if (obj->unk78 == 3) { - obj->unk6 |= 0x600; + obj->segment.trans.unk6 |= 0x600; gParticlePtrList_addObject(obj); } } @@ -1593,7 +2153,7 @@ void obj_init_silvercoin(Object *obj, LevelObjectEntry_SilverCoin *entry) { } } if (obj->unk78 == 3) { - obj->unk6 |= 0x600; + obj->segment.trans.unk6 |= 0x600; gParticlePtrList_addObject(obj); } } @@ -1628,7 +2188,7 @@ void obj_loop_worldkey(Object *worldKeyObj, s32 speed) { // the key object, otherwise it is NULL. playerObj = worldKeyObj->unk4C->unk0; if (playerObj != NULL) { - if (playerObj->header->behaviorId == 1) { // Is the player a racer? + if (playerObj->segment.header->behaviorId == 1) { // Is the player a racer? Object_64_8003DF08 *obj64 = playerObj->unk64; if (obj64->unk0 != -1) { // Player has grabbed the key! @@ -1642,7 +2202,7 @@ void obj_loop_worldkey(Object *worldKeyObj, s32 speed) { } // Rotate world key - worldKeyObj->y_rotation += speed * 256; + worldKeyObj->segment.trans.y_rotation += speed * 256; } typedef struct Object_64_8003DFCC { @@ -1679,12 +2239,12 @@ void obj_init_weaponballoon(Object *obj, LevelObjectEntry_WeaponBalloon *entry) entry->unk8 = 0; } - if (obj->unk3A >= obj->header->numberOfModelIds) { - obj->unk3A = 0; + if (obj->segment.unk3A >= obj->segment.header->numberOfModelIds) { + obj->segment.unk3A = 0; } - obj->unk3A = entry->balloonType; - obj->unk78 = obj->unk3A; + obj->segment.unk3A = entry->balloonType; + obj->unk78 = obj->segment.unk3A; scalef = entry->scale & 0xFF; if (scalef < 10) { @@ -1694,8 +2254,8 @@ void obj_init_weaponballoon(Object *obj, LevelObjectEntry_WeaponBalloon *entry) obj64 = (Object_64_8003DFCC*)obj->unk64; - obj->scale = obj->header->scale * scalef; - obj64->unk0 = obj->scale; + obj->segment.trans.scale = obj->segment.header->scale * scalef; + obj64->unk0 = obj->segment.trans.scale; obj64->unk4 = 0; obj->unk7C.word = 0; @@ -1765,9 +2325,9 @@ void func_8003FC44(f32 arg0, f32 arg1, f32 arg2, s32 arg3, s32 arg4, f32 arg5, s sp24.unk0 = arg3; sp24.unk7 = arg6; sp24.unk6 = arg2; - someObj = func_8000EA54(&sp24, 1); + someObj = spawn_object(&sp24, 1); if (someObj != NULL) { - someObj->scale *= 3.5 * arg5; + someObj->segment.trans.scale *= 3.5 * arg5; someObj->unk3C_a.unk3C = NULL; someObj->x_velocity = 0.0f; someObj->y_velocity = 0.0f; @@ -1781,7 +2341,29 @@ void func_8003FC44(f32 arg0, f32 arg1, f32 arg2, s32 arg3, s32 arg4, f32 arg5, s GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003FC44.s") #endif -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_audio.s") +void obj_init_audio(Object *obj, LevelObjectEntry_Audio *entry) { + Object_64_Audio *obj64; + + obj64 = (Object_64_Audio*)obj->unk64; + obj64->unk0 = entry->unk8; + obj64->unk2 = entry->unkA; + obj64->unkC = entry->unkF; + obj64->unk6 = entry->unkE; + obj64->unk4 = entry->unkC; + obj64->unk5 = entry->unkD; + obj64->unkD = entry->unk10; + obj64->unk8 = 0; + if (ALBankFile_80115D14_GetSoundDecayTime(obj64->unk0)) { + func_8000974C(obj64->unk0, entry->common.x, entry->common.y, entry->common.z, + 9, obj64->unk5, obj64->unk4, obj64->unk2, obj64->unkC, + obj64->unk6, obj64->unkD, &obj64->unk8); + } else { + func_8000974C(obj64->unk0, entry->common.x, entry->common.y, entry->common.z, + 10, obj64->unk5, obj64->unk4, obj64->unk2, obj64->unkC, + obj64->unk6, obj64->unkD, &obj64->unk8); + } + gParticlePtrList_addObject(obj); +} void obj_init_audioline(Object *obj, LevelObjectEntry_AudioLine *entry) { Object_64_8003FEF4 *obj64; @@ -1845,7 +2427,7 @@ void obj_init_rgbalight(Object *obj, LevelObjectEntry_RgbaLight *entry, s32 arg2 } void obj_init_buoy_pirateship(Object *obj, LevelObjectEntry_Buoy_PirateShip *entry, s32 arg2) { - obj->unk64 = func_800BE654(obj->unk2E, obj->x_position, obj->z_position); + obj->unk64 = func_800BE654(obj->segment.unk2C.half.lower, obj->segment.trans.x_position, obj->segment.trans.z_position); obj->unk4C->unk14 = 1; obj->unk4C->unk11 = 0; obj->unk4C->unk10 = 0x1E; @@ -1854,14 +2436,14 @@ void obj_init_buoy_pirateship(Object *obj, LevelObjectEntry_Buoy_PirateShip *ent void obj_loop_buoy_pirateship(Object *obj, s32 speed) { if (obj->unk64 != NULL) { - obj->y_position = func_800BEEB4(obj->unk64); + obj->segment.trans.y_position = func_800BEEB4(obj->unk64); } - obj->unk18 += speed * 8; + obj->segment.unk18 += speed * 8; } void obj_init_log(Object *obj, LevelObjectEntry_Log *entry, s32 arg2) { f32 phi_f0; - obj->unk64 = func_800BE654(obj->unk2E, obj->x_position, obj->z_position); + obj->unk64 = func_800BE654(obj->segment.unk2C.half.lower, obj->segment.trans.x_position, obj->segment.trans.z_position); obj->unk4C->unk14 = 1; obj->unk4C->unk11 = 2; obj->unk4C->unk10 = 0x1E; @@ -1870,9 +2452,9 @@ void obj_init_log(Object *obj, LevelObjectEntry_Log *entry, s32 arg2) { phi_f0 = 10.0f; } phi_f0 /= 64; - obj->scale = obj->header->scale * phi_f0; - obj->unk3A = entry->unk8; - obj->y_rotation = entry->unkA << 6 << 4; + obj->segment.trans.scale = obj->segment.header->scale * phi_f0; + obj->segment.unk3A = entry->unk8; + obj->segment.trans.y_rotation = entry->unkA << 6 << 4; } GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_log.s") @@ -1883,7 +2465,61 @@ void obj_init_weather(Object *obj, LevelObjectEntry_Weather *entry) { obj->unk78f = temp; } + +#ifdef NON_EQUIVALENT +void func_800ABC5C(s32, s32, s32, s32, s32, s32); /* extern */ + +typedef struct Object_3C_Weather { + u8 pad0[0x2]; + s16 unk2; + s16 unk4; + s16 unk6; + s8 unk8; + u8 unk9; + s16 unkA; + s16 unkC; + s16 unkE; + u8 unk10; + u8 unk11; + s16 unk12; +} Object_3C_Weather; + +// Has stack & regalloc issues. +void obj_loop_weather(Object *obj, s32 speed) { + s32 sp54; + s32 numberOfObjects; + Object_64_Racer *curObj64; + Object **objects; + Object **lastObj; + Object *curObj; + Object_3C_Weather *obj3c; + f32 temp_f0; + f32 new_var; + f32 temp_f2; + s32 i; + s32 temp[3]; + sp54 = func_80066220(); + objects = get_object_struct_array(&numberOfObjects); + if (numberOfObjects != 0) { + lastObj = &objects[numberOfObjects - 1]; + objects--; + do { + curObj = objects[1]; + curObj64 = (Object_64_Racer *) curObj->unk64; + } while (((++objects) < lastObj) && (sp54 != curObj64->unk0)); + temp_f0 = obj->segment.trans.x_position - curObj->segment.trans.x_position; + temp_f2 = obj->segment.trans.z_position - curObj->segment.trans.z_position; + new_var = obj->unk78f; + obj3c = obj->unk3C_a.unk3C; + if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) <= (new_var * 1.0f)){ + func_800ABC5C(obj3c->unkA * 256, obj3c->unkC * 256, obj3c->unkE * 256, obj3c->unk10 * 257, obj3c->unk11 * 257, (s32) obj3c->unk12); + } + } +} + +#else GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_weather.s") +#endif void obj_init_lensflare(Object *obj, LevelObjectEntry_LensFlare *entry) { func_800AC8A8(obj); @@ -1891,18 +2527,141 @@ void obj_init_lensflare(Object *obj, LevelObjectEntry_LensFlare *entry) { void obj_init_lensflareswitch(Object *obj, LevelObjectEntry_LensFlareSwitch *entry, s32 arg2) { func_800ACF60(obj); - obj->scale = entry->unk8; - obj->scale /= 40.0f; + obj->segment.trans.scale = entry->unk8; + obj->segment.trans.scale /= 40.0f; } void obj_init_wavegenerator(Object *obj, LevelObjectEntry_WaveGenerator *entry, s32 arg2) { func_800BF524(obj); //waves.c } +#ifdef NON_EQUIVALENT + +typedef struct Object_64_Butterfly { +/* 0x00 */ Triangle triangles[8]; +/* 0x80 */ Vertex vertices[12]; +/* 0xF8 */ TextureHeader *texture; +/* 0xFC */ u8 unkFC; +/* 0xFD */ u8 unkFD; +/* 0xFE */ u8 unkFE; +/* 0xFF */ u8 unkFF; +/* 0x100 */ s32 unk100; +/* 0x104 */ s16 unk104; +/* 0x106 */ s16 unk106; +/* 0x108 */ f32 unk108; +} Object_64_Butterfly; + +void obj_init_butterfly(Object *obj, LevelObjectEntry_Butterfly *entry, s32 arg2) { + Object_64_Butterfly *obj64; + s32 i, j; + s32 uMask, vMask; + + obj64 = (Object_64_Butterfly*)obj->unk64; + if (arg2 == 0) { + obj->y_velocity = 0.0f; + obj64->unkFE = 0; + obj64->unk100 = 0; + obj64->unk104 = 0; + obj64->unkFD = 0; + obj64->unk106 = 384; + obj64->unk108 = 0.0f; + // This loop is okay + for(i = 0; i < 8; i++) { + obj64->triangles[i].drawBackface = D_800DCAA8[i].drawBackface; + obj64->triangles[i].vi0 = D_800DCAA8[i].vi0; + obj64->triangles[i].vi1 = D_800DCAA8[i].vi1; + obj64->triangles[i].vi2 = D_800DCAA8[i].vi2; + } + // This loop is not. + for(i = 0; i < 6; i++) { + //u32 j = i + 6; + obj64->vertices[i].x = D_800DCB28[i].x; + obj64->vertices[i].y = D_800DCB28[i+1].y; + obj64->vertices[i].z = D_800DCB28[i+1].z; + obj64->vertices[i].r = 255; + obj64->vertices[i].g = 255; + obj64->vertices[i].b = 255; + obj64->vertices[i].a = 255; + obj64->vertices[(u32)(i+6)].x = D_800DCB28[i+1].x; + obj64->vertices[i+6].y = D_800DCB28[i].y; + obj64->vertices[i+6].z = D_800DCB28[i].z; + obj64->vertices[i+6].r = 255; + obj64->vertices[i+6].g = 255; + obj64->vertices[i+6].b = 255; + obj64->vertices[i+6].a = 255; + } + obj64->unkFC = 1; + } + obj->segment.trans.scale = entry->unkB * 0.01f; + if (entry->unkA < obj->header->numberOfModelIds) { + obj64->texture = (TextureHeader*)obj->unk68[entry->unkA]; + } else { + obj64->texture = (TextureHeader*)obj->unk68[0]; + } + + if (obj64->texture) { + uMask = (obj64->texture->width - 1) << 5; + vMask = (obj64->texture->height - 1) << 5; + } else { + uMask = 0; + vMask = 0; + } + for(i = 0; i < 8; i++) { + obj64->triangles[i].uv0.u = D_800DCAA8[i].uv0.u & uMask; + obj64->triangles[i].uv0.v = D_800DCAA8[i].uv0.v & vMask; + obj64->triangles[i].uv1.u = D_800DCAA8[i].uv1.u & uMask; + obj64->triangles[i].uv1.v = D_800DCAA8[i].uv1.v & vMask; + obj64->triangles[i].uv2.u = D_800DCAA8[i].uv2.u & uMask; + obj64->triangles[i].uv2.v = D_800DCAA8[i].uv2.v & vMask; + } +} + + +#else GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_butterfly.s") +#endif + GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_butterfly.s") + GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_midifade.s") -GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_init_midifadepoint.s") + +void obj_init_midifadepoint(Object *obj, LevelObjectEntry_MidiFadePoint *entry) { + Object_64_MidiFadePoint *obj64; + ObjectModel **models; + ObjectModel *objModel; + Vertex *vertex; + s32 i; + f32 x; + f32 y; + f32 z; + f32 dist; + + obj64 = (LevelObjectEntry_MidiFadePoint *) obj->unk64; + obj64->unk2 = entry->unkA; + obj64->unk0 = entry->unk8; + obj64->unk1C = entry->unk1C; + if (obj64->unk2 < obj64->unk0) { + obj64->unk2 = obj64->unk0 + 10; + } + obj->segment.trans.z_rotation = 0; + obj->segment.trans.x_rotation = 0; + obj->segment.trans.y_rotation = 0; + + for (i = 0; i < 15; i++) { + obj64->unkC[i] = entry->unkC[i]; + } + + models = *((ObjectModel ***) obj->unk68); + objModel = models[0]; + vertex = objModel->vertices + 1; + x = vertex->x; + y = vertex->y; + z = vertex->z; + dist = sqrtf(((x * x) + (y * y)) + (z * z)); + obj64->unk4 = entry->unk8 / dist; + obj64->unk8 = entry->unkA / dist; + obj->segment.trans.scale = obj64->unk8; +} void obj_init_midichset(Object *obj, LevelObjectEntry_Midichset *entry) { unk80042014_arg0_64 *temp = obj->unk64; @@ -1929,7 +2688,7 @@ void obj_loop_bubbler(Object *obj, s32 speed) { void obj_init_boost(Object *obj, LevelObjectEntry_Boost *entry) { obj->unk64 = (s32)get_misc_asset(0x14) + (entry->unk8[0] << 7); - obj->unk3C_a.unk3C = NULL; + obj->segment.unk3C_a.unk3C = NULL; } void obj_init_unknown94(Object *obj, LevelObjectEntry_Unknown94 *entry, s32 arg2) { @@ -1946,8 +2705,8 @@ void obj_loop_rangetrigger(Object *obj, s32 speed) { Object_3C_80042178 *obj3C; unk80042178 sp20; - obj3C = obj->unk3C_a.unk3C; - if (func_80016DE8(obj->x_position, 0, obj->z_position, (f32)obj3C->unk8, 1, &sp20) > 0) { + obj3C = obj->segment.unk3C_a.unk3C; + if (func_80016DE8(obj->segment.trans.x_position, 0, obj->segment.trans.z_position, (f32)obj3C->unk8, 1, &sp20) > 0) { obj->unk74 = obj3C->unkA; } else { obj->unk74 = 0; @@ -1960,19 +2719,19 @@ void obj_init_frog(Object *obj, LevelObjectEntry_Frog *entry) { obj64 = (Object_64_80042210 *)obj->unk64; obj64->unk15 = entry->unkA; - obj64->unk0 = obj->x_position; - obj64->unk4 = obj->y_position; - obj64->unk8 = obj->z_position; + obj64->unk0 = obj->segment.trans.x_position; + obj64->unk4 = obj->segment.trans.y_position; + obj64->unk8 = obj->segment.trans.z_position; obj64->unkC = entry->unk8; obj64->unk10 = obj64->unkC * obj64->unkC; obj64->unk14 = 0; - obj64->unk20 = obj->x_position; - obj64->unk24 = obj->z_position; + obj64->unk20 = obj->segment.trans.x_position; + obj64->unk24 = obj->segment.trans.z_position; obj64->unk19 = 0; obj64->unk30 = 1.0f; if (obj64->unk15) { - obj->unk3A = 1; + obj->segment.unk3A = 1; /** * Don't spawn the chicken frog if drumstick is already unlocked, or * if the player hasn't completed the trophy races yet. @@ -1981,7 +2740,7 @@ void obj_init_frog(Object *obj, LevelObjectEntry_Frog *entry) { gParticlePtrList_addObject(obj); } } else { - obj->unk3A = 0; + obj->segment.unk3A = 0; } } @@ -2021,6 +2780,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/obj_loop_levelname.s") void obj_loop_wizghosts(Object *obj, s32 speed) { func_8001F460(obj, speed, obj); - obj->unk18 = (obj->unk18 + (speed * 8)) & 0xFF; + obj->segment.unk18 = (obj->segment.unk18 + (speed * 8)) & 0xFF; } diff --git a/src/object_functions.h b/src/object_functions.h index 217db4b7..fb59bf63 100644 --- a/src/object_functions.h +++ b/src/object_functions.h @@ -4,10 +4,14 @@ #include "types.h" #include "structs.h" #include "level_object_entries.h" +#include "math.h" #define WORLD_KEY_GRAB_CHECK_RADIUS 50 #define SOUND_WORLD_KEY_GRAB 54 +#define TIME_JIFFIES_PER_SECOND 60 +#define TIME_SECONDS(sec) sec * TIME_JIFFIES_PER_SECOND + typedef struct Object78_80033DD0 { s32 *unk0; s16 unk4; @@ -127,13 +131,13 @@ typedef struct Object_60_800380F8 { Object *unkC; } Object_60_800380F8; -typedef struct Object_64_8003827C { +typedef struct Object_64_Snowball { u8 pad0[0x20]; - s32 unk20; + u32 unk20; s16 unk24; u8 pad28[0x12]; s8 unk38; -} Object_64_8003827C; +} Object_64_Snowball; typedef struct Object_64_80038710 { u8 pad0[0x30]; @@ -182,15 +186,6 @@ typedef struct unk80039190 { s32 unk7C; } unk80039190; -typedef struct Object_64_8003AD34 { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; - s32 unk10; - s8 unk14; -} Object_64_8003AD34; - typedef struct Object_64_8003C1E0 { f32 unk0; u8 pad4[4]; @@ -368,6 +363,164 @@ typedef struct unk80042CD0 { s16 unk18; } unk80042CD0; +typedef struct Object_50_Scenery { + f32 unk0; +} Object_50_Scenery; + +//void func_80072348(s16 obj, u8 arg1); + +typedef struct Object_64_Exit { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + s32 unk10; + s8 unk14; +} Object_64_Exit; + +typedef struct Object_64_Racer { + s16 unk0; + u8 pad2; + s8 unk3; + u8 pad4[0x104]; + s32 unk108; + u8 pad10C[0x40]; + Object *unk14C; + u8 pad150[0x33]; + s8 unk183; + s8 pad184; + s8 unk185; + u8 pad186[0x4D]; + s8 unk1D3; + u8 pad1D4[0x4]; + s8 unk1D8; + u8 pad1D9[0x9]; + s8 unk1E2; + u8 pad1E3[0x12]; + u8 unk1F5; + u8 pad1F6[0xA]; + s8 unk200; + u8 pad201[0x2]; + s8 unk203; + u8 pad204[0x8]; + u8 unk20C; +} Object_64_Racer; + +typedef struct Object_64_Bonus { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + s32 unk10; + s8 unk14; +} Object_64_Bonus; + +typedef struct Object_64_ModeChange { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + s32 unk10; + s8 unk14; +} Object_64_ModeChange; + +typedef struct Object_64_GoldenBalloon { + f32 unk0; + u8 pad4[0x8]; + u8 unkC; + u8 unkD; + u8 unkE; + u8 unkF; + s8 unk10; + f32 unk14; +} Object_64_GoldenBalloon; + +typedef struct Object_64_Door { + f32 unk0; + u8 pad4[0x4]; + s32 unk8; + s16 padA; + s8 unkE; + u8 unkF; + u8 unk10; + u8 unk11; + u8 unk12; + u8 unk13; + u8 unk14; +} Object_64_Door; + +typedef struct Object_64_Trigger { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + s32 unk10; + s8 unk14; +} Object_64_Trigger; + +typedef Object Object_64_Animation; + +typedef struct Object_64_Audio { + /* 0x00 */ u16 unk0; + /* 0x02 */ u16 unk2; + /* 0x04 */ u8 unk4; + /* 0x05 */ u8 unk5; + /* 0x06 */ u8 unk6; + /* 0x07 */ u8 unk7; + /* 0x08 */ s32 unk8; + /* 0x0C */ u8 unkC; + /* 0x0D */ u8 unkD; +} Object_64_Audio; + +typedef struct Object_64_MidiFade { + u8 unk0; + u8 unk1; + u8 unk2; + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; + f32 unk14; + f32 unk18; + f32 unk1C; + f32 unk20; + f32 unk24; + f32 unk28; + f32 unk2C; + u8 unk2F[16]; + u8 unk40; +} Object_64_MidiFade; + +typedef struct unk80041A90_MidiFade { + s16 unk0; // Y rotation + s16 unk2; // X rotation + s16 unk4; // Z rotation + f32 unk8; + f32 unkC; + f32 unk10; + f32 unk14; +} unk80041A90_MidiFade; + +typedef struct Object_64_MidiFadePoint { + u16 unk0; + u16 unk2; + f32 unk4; + f32 unk8; + u8 unkC[16]; + u8 unk1C; +} Object_64_MidiFadePoint; + +typedef struct Object_64_PosArrow { + s16 unk0; + u8 pad4[0x14E]; + Object *unk150; +} Object_64_PosArrow; + +typedef struct Object_64_Banana { + u8 pad0[4]; + Object *spawner; +} Object_64_Banana; + // Unsure about the signed/unsigned with these arrays. extern u16 D_800DC970[4]; extern u16 D_800DC978[4]; @@ -382,8 +535,15 @@ extern s32 D_800DCA7C[3]; extern s32 D_800DCA88[3]; extern s8 D_800DCA94[8]; extern s8 D_800DCA9C[12]; -extern u16 D_800DCAA8[64]; -extern u16 D_800DCB28[20]; + +typedef struct VertexPosition { +/* 0x00 */ s16 x; +/* 0x02 */ s16 y; +/* 0x04 */ s16 z; +} VertexPosition; + +extern Triangle D_800DCAA8[8]; +extern VertexPosition D_800DCB28[6]; extern u32 osTvType; f32 func_800707C4(s16); // No idea where it's located @@ -466,8 +626,8 @@ void obj_init_ainode(Object *obj, LevelObjectEntry_AiNode *entry); void obj_loop_ainode(Object *obj, s32 speed); void obj_init_treasuresucker(Object *obj, LevelObjectEntry_TreasureSucker *entry); void obj_init_flycoin(Object *obj, LevelObjectEntry_FlyCoin *entry); -void obj_init_coincreator(Object *obj, LevelObjectEntry_BananaCreator *entry); -void obj_init_coin(Object *obj, LevelObjectEntry_Banana *entry); +void obj_init_bananacreator(Object *obj, LevelObjectEntry_BananaCreator *entry); +void obj_init_banana(Object *obj, LevelObjectEntry_Banana *entry); void obj_init_silvercoin_adv2(Object *obj, LevelObjectEntry_SilverCoinAdv2 *entry); void obj_init_silvercoin(Object *obj, LevelObjectEntry_SilverCoin *entry); void obj_init_worldkey(Object *obj, LevelObjectEntry_WorldKey *entry); @@ -506,4 +666,18 @@ void obj_loop_vehicleanim(Object *obj, s32 speed); void obj_loop_snowball(Object *obj, s32 speed); void obj_loop_goldenballoon(Object *obj, s32 speed); +s32 func_8001C524(f32 x, f32 y, f32 z, s32 arg3); +s32 func_8001CC48(s32, s32, s32); +void func_8001C6C4(Object_64_GoldenBalloon *obj64, Object *obj, f32, f32, s32); +void func_8000CBF0(Object*, s32); + + +void func_8001EE74(); +void func_8001EFA4(Object*, Object_64_Animation*); +void func_8001F23C(Object *obj, LevelObjectEntry_Animation *entry); +s32 func_8001F3EC(s32); +s32 func_80021600(s32); + +void func_8003FC44(f32, f32, f32, s32, s32, f32, s32); + #endif diff --git a/src/object_models.c b/src/object_models.c index 1daa385f..737711ca 100644 --- a/src/object_models.c +++ b/src/object_models.c @@ -74,7 +74,7 @@ void func_8005F850(void) { GLOBAL_ASM("asm/non_matchings/object_models/func_8005F99C.s") GLOBAL_ASM("asm/non_matchings/object_models/func_8005FCD0.s") -#if 0 +#ifdef NON_EQUIVALENT void free_object_model(ObjectModel *model); void free_from_memory_pool(void*); diff --git a/src/unknown_00BC20.c b/src/objects.c similarity index 81% rename from src/unknown_00BC20.c rename to src/objects.c index 9810a3d8..24d8ca27 100644 --- a/src/unknown_00BC20.c +++ b/src/objects.c @@ -1,7 +1,7 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8000B020 */ -#include "unknown_00BC20.h" +#include "objects.h" #include "memory.h" #include "types.h" @@ -44,9 +44,9 @@ s32 D_800DC74C = 0; // Currently unknown, might be a different type. s32 D_800DC750 = 0; // Currently unknown, might be a different type. s32 D_800DC754 = 0; // Currently unknown, might be a different type. s32 D_800DC758 = 0; // Currently unknown, might be a different type. -s32 D_800DC75C = 0; // Currently unknown, might be a different type. +Object *D_800DC75C = NULL; // Currently unknown, might be a different type. s32 D_800DC760 = 9; // Currently unknown, might be a different type. -s32 D_800DC764 = 0; // Currently unknown, might be a different type. +Object *D_800DC764 = NULL; // Currently unknown, might be a different type. s32 D_800DC768 = 0; // Currently unknown, might be a different type. f32 D_800DC76C[15] = { @@ -77,6 +77,8 @@ s16 D_800DC7B8[52] = { 0x00E8, 0x0115, 0x0118, 0x0000, }; +// A table of which vehicles to use for boss races. +// https://www.youtube.com/watch?v=WQJAtns_rMk s16 D_800DC820[16] = { 0x0005, 0x0106, 0x0207, 0x0005, 0x0106, 0x010B, 0x010B, 0x0207, @@ -132,7 +134,7 @@ f32 D_8011AD28; s32 D_8011AD2C; f32 D_8011AD30; s32 D_8011AD34; -s32 D_8011AD38; +s32 D_8011AD38; //D_8011AD38 is ultimately set by func_80074B34, and is almost definitely SIDeviceStatus s8 D_8011AD3C; s8 D_8011AD3D; s8 D_8011AD3E; @@ -262,21 +264,21 @@ extern s16 D_8011D5AC; /******************************/ -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000B020.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000B020.s") -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000B290.s") -#else +#ifdef NON_EQUIVALENT extern s32 D_800DC754; extern Object *D_800DC75C; extern Object *D_800DC764; s32 *get_misc_asset(s32 arg0); -void func_8000B290() { +// Not positive about the data argument. +// It just made sense since there seemed to be nothing else to pass to free_from_memory_pool +void func_8000B290(void *data) { if (D_800DC754) { - free_from_memory_pool(); + free_from_memory_pool(data); } get_misc_asset(20); /*{ @@ -298,11 +300,13 @@ void func_8000B290() { gParticlePtrList_flush(); } +#else +GLOBAL_ASM("asm/non_matchings/objects/func_8000B290.s") #endif -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000B38C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000B750.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000BADC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000B38C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000B750.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000BADC.s") Object *func_8000BF44(s32 arg0) { if (arg0 == -1) { @@ -365,9 +369,7 @@ void func_8000BF8C(void) { func_8000C460(); } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/decrypt_magic_codes.s") -#else +#ifdef NON_EQUIVALENT // Decrypts cheats void decrypt_magic_codes(u8 *data, s32 length) { u8 sp3; @@ -390,6 +392,8 @@ void decrypt_magic_codes(u8 *data, s32 length) { data[i + 3] = ((sp3 & 0x55) << 1) | ((sp3 & 0xAA) >> 1); } } +#else +GLOBAL_ASM("asm/non_matchings/objects/decrypt_magic_codes.s") #endif void func_8000C460(void) { @@ -463,7 +467,7 @@ void func_8000C604(void) { free_from_memory_pool(D_8011AEB0[1]); } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000C718.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000C718.s") void func_8000C844(s32 arg0) { if ((*D_8011AE4C)[arg0] != 0) { @@ -482,7 +486,7 @@ s32 func_8000C8B4(s32 arg0) { } } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000C8F8.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000C8F8.s") void func_8000CBC0(void) { s32 i = 0; @@ -492,10 +496,8 @@ void func_8000CBC0(void) { } } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000CBF0.s") -#else -void func_8000CBF0(u32 *arg0, s32 arg1) { +#ifdef NON_EQUIVALENT +void func_8000CBF0(Object *arg0, s32 arg1) { u32 **temp = &D_8011AE08[arg1]; u32 *temp2; temp2 = *temp; @@ -505,6 +507,8 @@ void func_8000CBF0(u32 *arg0, s32 arg1) { D_8011AE08[arg1] = arg0; return; } +#else +GLOBAL_ASM("asm/non_matchings/objects/func_8000CBF0.s") #endif s32 func_8000CC20(u32 *arg0) { @@ -525,23 +529,24 @@ s32 func_8000CC20(u32 *arg0) { } // Has a jump table -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000CC7C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000CC7C.s") u32 func_8000E0B0(void) { + // D_8011AD38 is likely an SIDeviceStatus value, but not 100% sure yet. switch (D_8011AD38) { - case 1: + case 1: //NO_CONTROLLER_PAK return -1; - case 7: + case 7: //RUMBLE_PAK return 0; - case 2: - case 3: + case 2: //CONTROLLER_PAK_INCONSISTENT + case 3: //CONTROLLER_PAK_WITH_BAD_ID return 3; - case 4: - case 6: + case 4: //CONTROLLER_PAK_FULL + case 6: //CONTROLLER_PAK_UNK6 return 2; - case 0: - case 5: - case 8: + case 0: //CONTROLLER_PAK_GOOD + case 5: //CONTROLLER_PAK_CHANGED + case 8: //CONTROLLER_PAK_UNK8 return func_80059E20(); default: return 0; @@ -594,10 +599,10 @@ void func_8000E1EC(Object *object, s32 arg1) { D_8011AD40 = object; D_8011AD44 = 4; D_8011AD45 = arg1; - D_8011AD46 = object->x_position; - D_8011AD48 = object->y_position; - D_8011AD4A = object->z_position; - D_8011AD4C = object->y_rotation; + D_8011AD46 = object->segment.trans.x_position; + D_8011AD48 = object->segment.trans.y_position; + D_8011AD4A = object->segment.trans.z_position; + D_8011AD4C = object->segment.trans.y_rotation; gParticlePtrList_addObject(object); gObjectCount = 0; } @@ -643,7 +648,7 @@ void func_8000E2B4(void) { sp2C.common.z = D_8011AD4A; sp2C.unkC = D_8011AD4C; func_800521B8(1); - player = func_8000EA54(&sp2C, 0x11); + player = spawn_object(&sp2C, 0x11); gObjectCount = 1; (*gObjectStructArrayPtr)[0] = (s32) player; *D_8011AEEC = (s32) player; @@ -656,17 +661,17 @@ void func_8000E2B4(void) { player_64->unk118 = 0; player_64->unk0_a.unk0_b.unk3 = (s8) settings->racers[0].character; if (get_filtered_cheats() & CHEAT_BIG_CHARACTERS) { - player->scale *= 1.4f; + player->segment.trans.scale *= 1.4f; } if (get_filtered_cheats() & CHEAT_SMALL_CHARACTERS) { - player->scale *= 0.714f; + player->segment.trans.scale *= 0.714f; } - player->unk3C_a.unk3C = 0; - player->y_rotation = D_8011AD4C; - player->y_position = D_8011AD48; + player->segment.unk3C_a.unk3C = 0; + player->segment.trans.y_rotation = D_8011AD4C; + player->segment.trans.y_position = D_8011AD48; } #else -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000E2B4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000E2B4.s") #endif /** @@ -687,11 +692,11 @@ u8 func_8000E4D8(void) { return D_8011AEF5; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000E4E8.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000E558.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000E5EC.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000E79C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000E898.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000E4E8.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000E558.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000E5EC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000E79C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000E898.s") Object *get_object(s32 index) { if (index < 0 || index >= objCount) { @@ -717,21 +722,21 @@ s32 func_8000E9C0(void) { } void func_8000E9D0(Object *arg0) { - arg0->unk6 |= 0x8000; - func_800245B4(arg0->unk2C | 0xC000); + arg0->segment.trans.unk6 |= 0x8000; + func_800245B4(arg0->segment.unk2C.half.upper | 0xC000); gObjPtrList[objCount++] = arg0; if (1); D_8011AE64++; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000EA54.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000F648.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000F758.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000F7EC.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000F99C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000FAC4.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000FBCC.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000FC6C.s") +GLOBAL_ASM("asm/non_matchings/objects/spawn_object.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000F648.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000F758.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000F7EC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000F99C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000FAC4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000FBCC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000FC6C.s") s32 func_8000FD20(unk8000FD20 *arg0, unk8000FD20_2 *arg1) { arg0->unk4C = arg1; @@ -745,7 +750,7 @@ s32 func_8000FD34(unk8000FD34 *arg0, s32 arg1) { return 0x10C; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000FD54.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8000FD54.s") void gParticlePtrList_addObject(Object *object) { func_800245B4(object->unk4A | 0x8000); @@ -761,9 +766,7 @@ s32 func_80010028(s32 arg0) { return (gAssetsLvlObjTranslationTable[arg0] < gAssetsObjectHeadersTableLength); } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/gParticlePtrList_flush.s") -#else +#ifdef NON_EQUIVALENT //bad regalloc; swap s2 = s3 /*removes objects in particleList from gObjPtrList and frees*/ void gParticlePtrList_flush(void) { @@ -795,12 +798,14 @@ void gParticlePtrList_flush(void) { } gParticleCount = 0; } +#else +GLOBAL_ASM("asm/non_matchings/objects/gParticlePtrList_flush.s") #endif -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800101AC.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80010994.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80011134.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80011264.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800101AC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80010994.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80011134.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80011264.s") void func_80011390(void) { D_8011ADAC = 0; @@ -818,27 +823,25 @@ s32 func_800113BC() { return D_8011ADBC; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800113CC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800113CC.s") s32 func_80011560(void) { //! @bug The developers probably intended this to be a void function. D_800DC848 = 1; // No return value! } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80011570.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80011570.s") -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80011960.s") -#else +#ifdef NON_EQUIVALENT void func_80011960(Object *arg0, s32 arg2, u32 arg3, Object_64 *arg4, u32 arg5, u32 arg6, u32 arg7, u32 arg8, f32 arg9) { } +#else +GLOBAL_ASM("asm/non_matchings/objects/func_80011960.s") #endif -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80011AD0.s") -#else -extern f32 D_800E5550; +#ifdef NON_EQUIVALENT +f32 D_800E5550 = 0.01f; void func_80011AD0(Object *this) { f32 tmp_f0; u32 offset; @@ -860,8 +863,8 @@ void func_80011AD0(Object *this) { break; case 3: //L80011BB4 - tmp_f0 = (f32)this->unk3C->unkD; - if (this->unk3C->unkD < 0) { + tmp_f0 = (f32)this->segment.unk3C_a.unk3C->unkD; + if (this->segment.unk3C_a.unk3C->unkD < 0) { tmp_f0 += 4294967296.0f; } offset = (this->unk64->unkFC * 6); @@ -881,10 +884,12 @@ void func_80011AD0(Object *this) { break; } //L80011C88 } +#else +GLOBAL_ASM("asm/non_matchings/objects/func_80011AD0.s") #endif -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/render_3d_billboard.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/render_3d_model.s") +GLOBAL_ASM("asm/non_matchings/objects/render_3d_billboard.s") +GLOBAL_ASM("asm/non_matchings/objects/render_3d_model.s") void func_80012C30(void) { D_8011ADA4 = 0; @@ -913,41 +918,39 @@ void func_80012CE8(Gfx **dlist) { } } -void func_80012D5C(u32 *arg0, u32 *arg1, u32 *arg2, Object *object) { +void func_80012D5C(Gfx **arg0, u32 *arg1, u32 *arg2, Object *object) { f32 scale; u32 tmp2; u32 tmp3; - if (object->unk6 & 0x5000) + if (object->segment.trans.unk6 & 0x5000) return; func_800B76B8(2, object->unk4A); D_8011AE8C = *arg0; D_8011AE90 = *arg1; D_8011AE94 = *arg2; - scale = object->scale; + scale = object->segment.trans.scale; render_object(object); - object->scale = scale; + object->segment.trans.scale = scale; *arg0 = D_8011AE8C; *arg1 = D_8011AE90; *arg2 = D_8011AE94; func_800B76B8(2, -1); } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80012E28.s") -#else void func_80012E28(Object *this) { s32 unused1; Object_64 *sp_20; f32 tmp_f2; f32 sp_1c; f32 tmp_f0; + f32 temp; if (this->behaviorId == 1) { sp_20 = this->unk64; - this->y_rotation += sp_20->unk160; - this->x_rotation += sp_20->unk162; - this->z_rotation += sp_20->unk164; + this->segment.trans.y_rotation += sp_20->unk160; + this->segment.trans.x_rotation += sp_20->unk162; + this->segment.trans.z_rotation += sp_20->unk164; sp_1c = 0.0f; if (sp_20->unk1D7 < 5) { @@ -955,59 +958,57 @@ void func_80012E28(Object *this) { tmp_f2 = sp_1c; tmp_f0 = func_800707F8(sp_20->unk162 - sp_20->unk166) * tmp_f2; - //bad regalloc of 0.0f tmp_f0 = (tmp_f0 < 0.0f) ? 0.0f : tmp_f0 * tmp_f0; - sp_1c = (1.0f - tmp_f0) * 24.0f + sp_20->unkD0; + temp = (1.0f - tmp_f0) * 24.0f + sp_20->unkD0; + if(0){} + sp_1c = temp; } - //L80012F0C - this->y_position = this->y_position + sp_1c; + this->segment.trans.y_position = this->segment.trans.y_position + sp_1c; D_8011ADD0 = sp_1c; } - //L80012F20 } -#endif void func_80012F30(Object *arg0) { if (arg0->behaviorId == 1) { Object_64 *object_64 = arg0->unk64; - arg0->y_rotation -= object_64->unk160; - arg0->x_rotation -= object_64->unk162; - arg0->z_rotation -= object_64->unk164; - arg0->y_position -= D_8011ADD0; + arg0->segment.trans.y_rotation -= object_64->unk160; + arg0->segment.trans.x_rotation -= object_64->unk162; + arg0->segment.trans.z_rotation -= object_64->unk164; + arg0->segment.trans.y_position -= D_8011ADD0; } } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80012F94.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80012F94.s") void render_object(Object *this) { func_80012F94(this); - if (this->unk6 & 0x8000) { + if (this->segment.trans.unk6 & 0x8000) { func_800B3740(this, &D_8011AE8C, &D_8011AE90, &D_8011AE94, 32768); } else { - if (this->header->modelType == OBJECT_MODEL_TYPE_3D_MODEL) + if (this->segment.header->modelType == OBJECT_MODEL_TYPE_3D_MODEL) render_3d_model(this); - else if (this->header->modelType == OBJECT_MODEL_TYPE_SPRITE_BILLBOARD) + else if (this->segment.header->modelType == OBJECT_MODEL_TYPE_SPRITE_BILLBOARD) render_3d_billboard(this); - else if (this->header->modelType == OBJECT_MODEL_TYPE_UNKNOWN4) + else if (this->segment.header->modelType == OBJECT_MODEL_TYPE_UNKNOWN4) func_80011AD0(this); } func_80013548(this); } void func_80013548(Object *arg0) { - if ((arg0->unk6 & 0x8000) == 0 && arg0->header->behaviorId == 1) { - arg0->x_position -= arg0->unk64->unk78; - arg0->y_position -= arg0->unk64->unk7C; - arg0->z_position -= arg0->unk64->unk80; + if ((arg0->segment.trans.unk6 & 0x8000) == 0 && arg0->segment.header->behaviorId == 1) { + arg0->segment.trans.x_position -= arg0->unk64->unk78; + arg0->segment.trans.y_position -= arg0->unk64->unk7C; + arg0->segment.trans.z_position -= arg0->unk64->unk80; } } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800135B8.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800138A8.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80013A0C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80013DCC.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80014090.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800135B8.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800138A8.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80013A0C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80013DCC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80014090.s") void func_800142B8(void) { s32 i = D_8011AE60; @@ -1017,8 +1018,8 @@ void func_800142B8(void) { for (; i < objCount; i++) { currObj = gObjPtrList[i]; - if ((currObj->unk6 & 0x8000) == 0 && currObj->header->modelType == OBJECT_MODEL_TYPE_3D_MODEL) { - for (j = 0; j < currObj->header->numberOfModelIds; j++) { + if ((currObj->segment.trans.unk6 & 0x8000) == 0 && currObj->segment.header->modelType == OBJECT_MODEL_TYPE_3D_MODEL) { + for (j = 0; j < currObj->segment.header->numberOfModelIds; j++) { curr_68 = currObj->unk68[j]; if (curr_68 != NULL && curr_68->unk20 > 0) { curr_68->unk20 = curr_68->unk20-- & 0x03; @@ -1028,22 +1029,22 @@ void func_800142B8(void) { } } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800143A8.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80014814.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80014B50.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80015348.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800155B8.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800159C8.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80016500.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80016748.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80016BC4.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80016C68.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80016DE8.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001709C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80017248.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001790C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800143A8.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80014814.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80014B50.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80015348.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800155B8.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800159C8.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80016500.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80016748.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80016BC4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80016C68.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80016DE8.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001709C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80017248.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001790C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80017978.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80017978.s") u32 func_800179D0(void) { s16 i = 0; @@ -1056,7 +1057,7 @@ u32 func_800179D0(void) { } } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80017A18.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80017A18.s") void func_80017E74(s32 arg0) { D_8011AED8 = arg0; @@ -1067,24 +1068,24 @@ s16 func_80017E88(void) { return D_8011AED8; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80017E98.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800185E4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80017E98.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800185E4.s") Object *func_80018C6C(void) { s32 i; Object *current_obj; for (i = D_8011AE60; i < objCount; i++) { current_obj = gObjPtrList[i]; - if (!(current_obj->unk6 & 0x8000) && (current_obj->behaviorId == 62)) + if (!(current_obj->segment.trans.unk6 & 0x8000) && (current_obj->behaviorId == 62)) return current_obj; } return NULL; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80018CE0.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001955C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80019808.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001A7D8.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80018CE0.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001955C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80019808.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001A7D8.s") void func_8001A8D4(s32 arg0) { D_8011AD4E = 0x12C; @@ -1092,7 +1093,7 @@ void func_8001A8D4(s32 arg0) { D_8011AD52 = arg0; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001A8F4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001A8F4.s") s16 func_8001AE44() { return D_8011AD4E; @@ -1102,7 +1103,7 @@ s32 func_8001AE54() { return D_8011ADC8; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001AE64.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001AE64.s") s32 func_8001B288(void) { if (func_800599A8() != func_8006BD88()) { @@ -1120,14 +1121,14 @@ s32 func_8001B2E0() { return D_8011AD34; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001B2F0.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001B2F0.s") s32 func_8001B3AC(s32 arg0) { return arg0 == D_800DC718; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001B3C4.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001B4FC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001B3C4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001B4FC.s") s32 func_8001B640() { return D_800DC718; @@ -1137,7 +1138,7 @@ s32 func_8001B650(void) { return D_800DC738 == 0; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001B668.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001B668.s") s32 func_8001B738(s32 controllerIndex) { return func_80059B7C(controllerIndex, func_800599A8(), D_800DC728, D_800DC72C, D_800DC724); @@ -1152,9 +1153,9 @@ void func_8001B790(void) { D_800DC730 = 0; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001B7A8.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001B834.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001B974.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001B7A8.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001B834.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001B974.s") // Returns a pointer to some struct that is 0x3C bytes long. unknown8011AECC *func_8001BA00(s32 arg0) { @@ -1183,8 +1184,8 @@ s32 *func_8001BA90(s32 *arg0) { return D_8011AEEC; } -s32 *func_8001BAAC(s32 *arg0) { - *arg0 = gObjectCount; +Object **func_8001BAAC(s32 *numberOfObjects) { + *numberOfObjects = gObjectCount; return D_8011AEE8; } @@ -1198,13 +1199,13 @@ Object *get_object_struct(s32 indx) { return (*gObjectStructArrayPtr)[indx]; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001BB18.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001BB68.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001BB18.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001BB68.s") void func_8001BC40(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001BC54.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001BC54.s") u32 func_8001BD94(s32 arg0) { if (arg0 < 0 || arg0 >= D_8011AEE0) { @@ -1213,14 +1214,14 @@ u32 func_8001BD94(s32 arg0) { return D_8011AEDC[0][arg0]; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001BDD4.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001BF20.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001C418.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001C48C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001C524.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001C6C4.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001CC48.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001CD28.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001BDD4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001BF20.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001C418.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001C48C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001C524.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001C6C4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001CC48.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001CD28.s") void func_8001D1AC(void) { D_8011AF10[0] = 1; @@ -1248,10 +1249,10 @@ u32 func_8001D214(s32 arg0) { void func_8001D23C(s32 arg0, s32 arg1, s32 arg2) { } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001D258.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001D2A0.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001D4B4.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001D5E0.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001D258.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001D2A0.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001D4B4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001D5E0.s") void calc_dyn_light_and_env_map_for_object(ObjectModel *model, Object *object, s32 arg2, f32 arg3) { s16 environmentMappingEnabled; @@ -1272,7 +1273,7 @@ void calc_dyn_light_and_env_map_for_object(ObjectModel *model, Object *object, s if (dynamicLightingEnabled) { // Calculates dynamic lighting for the object - if (object->header->unk71 != 0) { + if (object->segment.header->unk71 != 0) { // Dynamic lighting for some objects? (Intro diddy, Taj, T.T., Bosses) calc_dynamic_lighting_for_object_1(object, model, arg2, object, arg3, 1.0f); } else { @@ -1283,13 +1284,13 @@ void calc_dyn_light_and_env_map_for_object(ObjectModel *model, Object *object, s if (environmentMappingEnabled) { // Calculates environment mapping for the object - calc_env_mapping_for_object(model, object->z_rotation, object->x_rotation, object->y_rotation); + calc_env_mapping_for_object(model, object->segment.trans.z_rotation, object->segment.trans.x_rotation, object->segment.trans.y_rotation); } } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/calc_dynamic_lighting_for_object_1.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/calc_env_mapping_for_object.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001E13C.s") +GLOBAL_ASM("asm/non_matchings/objects/calc_dynamic_lighting_for_object_1.s") +GLOBAL_ASM("asm/non_matchings/objects/calc_env_mapping_for_object.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001E13C.s") /** * Returns a pointer to the asset in the misc. section. If index is out of range, then this @@ -1329,12 +1330,12 @@ void func_8001E36C(s32 arg0, f32 *arg1, f32 *arg2, f32 *arg3) { current_obj = gObjPtrList[i]; if (current_obj != NULL - && (current_obj->unk6 & 0x8000) == 0 + && (current_obj->segment.trans.unk6 & 0x8000) == 0 && current_obj->behaviorId == 39 && current_obj->unk78 == arg0) { - *arg1 = current_obj->x_position; - *arg2 = current_obj->y_position; - *arg3 = current_obj->z_position; + *arg1 = current_obj->segment.trans.x_position; + *arg2 = current_obj->segment.trans.y_position; + *arg3 = current_obj->segment.trans.z_position; } } } @@ -1363,13 +1364,13 @@ s32 func_8001E4B4(void) { return D_8011AE60; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001E4C4.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001E6EC.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001E89C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001E93C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001EE74.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001EFA4.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001F23C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001E4C4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001E6EC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001E89C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001E93C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001EE74.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001EFA4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001F23C.s") s8 func_8001F3B8(void) { return D_8011ADD4; @@ -1382,13 +1383,13 @@ void func_8001F3C8(s32 arg0) { D_8011ADD4 = arg0; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001F3EC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001F3EC.s") void func_8001F450(void) { D_8011AD53 = 1; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001F460.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8001F460.s") s32 func_800210CC(s8 arg0) { if (arg0 >= D_8011AD3D) { @@ -1398,28 +1399,26 @@ s32 func_800210CC(s8 arg0) { return 0; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80021104.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8002125C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80021400.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80021104.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8002125C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80021400.s") s8 func_800214C4(void) { return D_8011AD22[1 - D_8011AD20[1]]; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800214E4.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80021600.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/catmull_rom_interpolation.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8002263C.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8002277C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800214E4.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80021600.s") +GLOBAL_ASM("asm/non_matchings/objects/catmull_rom_interpolation.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8002263C.s") +GLOBAL_ASM("asm/non_matchings/objects/func_8002277C.s") f32 lerp(f32 *arg0, u32 arg1, f32 arg2) { f32 result = arg0[arg1 + 1] + ((arg0[arg1 + 2] - arg0[arg1 + 1]) * arg2); return result; } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800228B0.s") -#else +#ifdef NON_EQUIVALENT f32 func_800228B0(f32 *arg0, u32 arg1, f32 arg2, f32 *arg3) { f32 temp_f12; f32 temp_f2; @@ -1429,6 +1428,8 @@ f32 func_800228B0(f32 *arg0, u32 arg1, f32 arg2, f32 *arg3) { *arg3 = arg0[arg1 + 2] - arg0[arg1 + 1]; return temp_f12 + temp_f2; } +#else +GLOBAL_ASM("asm/non_matchings/objects/func_800228B0.s") #endif // Unused? @@ -1448,19 +1449,16 @@ void func_800228EC(s32 arg0) { func_8006F388(10); } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80022948.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80022CFC.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80022E18.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800230D0.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80022948.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80022CFC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_80022E18.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800230D0.s") s8 func_8002341C(void) { return D_8011AEF6; } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8002342C.s") -#else -extern f32 sqrtf(f32); +#ifdef NON_EQUIVALENT //bad regalloc //finds furthest object (with some additional conditions) @@ -1468,16 +1466,14 @@ Object *func_8002342C(f32 x, f32 z) { Object *retval = NULL; s32 i; Object *currObj = NULL; - f32 x; - f32 z; f32 dist; f32 max = 0.0f; for (i = 0; i < objCount; i++) { currObj = gObjPtrList[i]; - if ((currObj->unk6 & 0x8000) == 0 && currObj->behaviorId == 87) { - x = currObj->x_position - x; - z = currObj->z_position - z; + if ((currObj->segment.trans.unk6 & 0x8000) == 0 && currObj->behaviorId == 87) { + x = currObj->segment.trans.x_position - x; + z = currObj->segment.trans.z_position - z; dist = sqrtf(x * x + z * z); if (max < dist) { @@ -1488,12 +1484,14 @@ Object *func_8002342C(f32 x, f32 z) { } return retval; } +#else +GLOBAL_ASM("asm/non_matchings/objects/func_8002342C.s") #endif s32 func_80023568(void) { if (D_8011AD3C != 0) { return D_8011AD24[1] + 1; - } else if (get_current_level_race_type() == 8) { + } else if (get_current_level_race_type() == RACE_TYPE_BOSS) { return D_8011AD24[1] + 1; } return 0; @@ -1507,10 +1505,10 @@ void func_800235D0(s32 arg0) { D_8011ADD5 = arg0; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800235DC.s") +GLOBAL_ASM("asm/non_matchings/objects/func_800235DC.s") void run_object_init_func(Object *obj, void *entry, s32 arg2) { - obj->behaviorId = obj->header->behaviorId; + obj->behaviorId = obj->segment.header->behaviorId; switch (obj->behaviorId - 1) { // Why the minus 1? case 0: obj_init_racer(obj, (LevelObjectEntry_Racer *)entry); @@ -1599,7 +1597,7 @@ void run_object_init_func(Object *obj, void *entry, s32 arg2) { obj_init_stopwatchman(obj, (LevelObjectEntry_StopWatchMan *)entry); break; case 31: - obj_init_coin(obj, (LevelObjectEntry_Banana *)entry); + obj_init_banana(obj, (LevelObjectEntry_Banana *)entry); break; case 32: obj_init_rgbalight(obj, (LevelObjectEntry_RgbaLight *)entry, arg2); @@ -1666,7 +1664,7 @@ void run_object_init_func(Object *obj, void *entry, s32 arg2) { obj_init_worldkey(obj, (LevelObjectEntry_WorldKey *)entry); break; case 64: - obj_init_coincreator(obj, (LevelObjectEntry_BananaCreator *)entry); + obj_init_bananacreator(obj, (LevelObjectEntry_BananaCreator *)entry); break; case 65: obj_init_treasuresucker(obj, (LevelObjectEntry_TreasureSucker *)entry); @@ -1976,7 +1974,7 @@ void run_object_loop_func(Object *obj, s32 arg1) { obj_loop_stopwatchman(obj, arg1); break; case 32: - obj_loop_coin(obj, arg1); + obj_loop_banana(obj, arg1); break; case 36: obj_loop_buoy_pirateship(obj, arg1); @@ -2052,7 +2050,7 @@ void run_object_loop_func(Object *obj, s32 arg1) { obj_loop_worldkey(obj, arg1); //arg1=speed break; case 65: - obj_loop_coincreator(obj, arg1); + obj_loop_bananacreator(obj, arg1); break; case 66: obj_loop_treasuresucker(obj, arg1); diff --git a/src/unknown_00BC20.h b/src/objects.h similarity index 96% rename from src/unknown_00BC20.h rename to src/objects.h index 530b51ab..3e9efc4c 100644 --- a/src/unknown_00BC20.h +++ b/src/objects.h @@ -1,10 +1,11 @@ -#ifndef _UNKNOWN_00BC20_H_ -#define _UNKNOWN_00BC20_H_ +#ifndef _OBJECTS_H_ +#define _OBJECTS_H_ #include "types.h" #include "structs.h" #include "f3ddkr.h" #include "object_functions.h" +#include "math.h" /* Size: 0x8 bytes */ typedef struct unknown800DC6F0 { @@ -94,9 +95,7 @@ extern s32 D_800DC74C; extern s32 D_800DC750; extern s32 D_800DC754; extern s32 D_800DC758; -extern s32 D_800DC75C; extern s32 D_800DC760; -extern s32 D_800DC764; extern s32 D_800DC768; extern f32 D_800DC76C[15]; @@ -157,7 +156,7 @@ void func_80012C30(void); void func_80012C3C(Gfx** dlist); void func_80012C98(Gfx **dlist); void func_80012CE8(Gfx **dlist); -void func_80012D5C(u32 *arg0, u32 *arg1, u32 *arg2, Object *object); +void func_80012D5C(Gfx **arg0, u32 *arg1, u32 *arg2, Object *object); void func_80012F30(Object *arg0); void render_object(Object *this); void func_80013548(Object *arg0); @@ -182,7 +181,7 @@ unknown8011AECC *func_8001BA1C(s32 arg0, s32 arg1); s32 func_8001BA64(); Object **get_object_struct_array(s32 *cnt); s32 *func_8001BA90(s32 *arg0); -s32 *func_8001BAAC(s32 *arg0); +Object **func_8001BAAC(s32 *numberOfObjects); Object *get_object_struct(s32 indx); void func_8001BC40(s32 arg0, s32 arg1, s32 arg2, s32 arg3); u32 func_8001BD94(s32 arg0); @@ -217,6 +216,7 @@ void run_object_loop_func(Object *obj, s32 arg1); void func_8002458C(s32 arg0); s16 *func_80024594(s32 *arg0, s32 *arg1); void func_800245B4(s16 arg0); +void func_80012E28(Object *this); //Non Matching void calc_dynamic_lighting_for_object_1(unk8001D6E4_arg1 *, ObjectModel *, s16, unk8001D6E4_arg1 *, f32, f32); @@ -226,14 +226,13 @@ void func_8001D258(f32, f32, s32, s32, s32); void decrypt_magic_codes(u8 *arg0, s32 length); void func_80011960(Object*, s32, u32, Object_64*, u32, u32, u32, u32, f32); void func_80011AD0(Object *this); -void func_80012E28(Object *this); void func_8001D5E0(f32 arg0, f32 arg1, f32 arg2); s32 func_80014814(s32 *); void func_80015348(s32, s32); -Object *func_8000EA54(unk80027FC4*, s32); +Object *spawn_object(void *entry, s32); s32 func_8001F460(Object*, s32, Object*); void func_80011570(Object *, f32, f32, f32); s32 func_80016DE8(f32, f32, f32, f32, s32, unk80042178 *); - +void func_8001BF20(void); #endif diff --git a/src/particles.c b/src/particles.c index 7abc74d1..f2ef523a 100644 --- a/src/particles.c +++ b/src/particles.c @@ -6,6 +6,7 @@ #include "macros.h" #include "asset_sections.h" #include "memory.h" +#include "textures_sprites.h" /************ .rodata ************/ @@ -117,20 +118,20 @@ s32 D_800E2E50 = 0; s32 D_800E2E54 = 0; s32 D_800E2E58 = 0; s32 D_800E2E5C = 0; -s32 *D_800E2E60 = NULL; +Sprite **D_800E2E60 = NULL; s32 D_800E2E64 = 0; -s16 D_800E2E68[6] = { - 0, 8, - 7, -4, - -7, -4, +XYStruct D_800E2E68[3] = { + { 0, 8 }, + { 7, -4 }, + { -7, -4 }, }; -s16 D_800E2E74[8] = { - -6, 6, - 6, 6, - 6, -6, - -6, -6, +XYStruct D_800E2E74[4] = { + { -6, 6 }, + { 6, 6 }, + { 6, -6 }, + { -6, -6 }, }; s32 D_800E2E84[16] = { @@ -200,18 +201,11 @@ void func_800AE2A0(void) { } void func_800AE2D8(void) { - s32 phi_s1; - s32 phi_s0; + s32 i; if (D_800E2E60 != NULL) { - phi_s1 = 0; - phi_s0 = 0; - if (D_800E2E64 > 0) { - do { - free_sprite(*(D_800E2E60 + phi_s1)); - phi_s0 += 1; - phi_s1 += 1; - } while (phi_s0 < D_800E2E64); + for (i = 0; i < D_800E2E64; i++) { + free_sprite(D_800E2E60[i]); } free_from_memory_pool(D_800E2E60); D_800E2E60 = 0; @@ -305,16 +299,16 @@ void func_800AEE14(unk800AF024 *arg0, Vertex **arg1, Triangle **arg2) { s16 i; Vertex *temp; Triangle *tri; - s16 *temp2; + XYStruct *temp2; arg0->unk4 = 3; arg0->unk8 = *arg1; temp = *arg1; - temp2 = &D_800E2E68; + temp2 = &D_800E2E68[0]; for (i = 0; i < 3; i++) { - temp->x = temp2[0]; - temp->y = temp2[1]; - temp2 += 2; + temp->x = temp2->x; + temp->y = temp2->y; + temp2 += 1; temp->z = 0; temp->r = 255; temp->g = 255; @@ -338,16 +332,16 @@ void func_800AEEB8(unk800AF024 *arg0, Vertex **arg1, Triangle **arg2) { s16 i; Vertex *temp; Triangle *tri; - s16 *temp2; + XYStruct *temp2; arg0->unk4 = 4; arg0->unk8 = *arg1; temp = *arg1; - temp2 = &D_800E2E74; + temp2 = &D_800E2E74[0]; for (i = 0; i < 4; i++) { - temp->x = temp2[0]; - temp->y = temp2[1]; - temp2 += 2; + temp->x = temp2->x; + temp->y = temp2->y; + temp2 += 1; temp->z = 0; temp->r = 255; temp->g = 255; @@ -551,7 +545,7 @@ void func_800AF6E4(Object *obj, s32 arg1) { obj6C = &obj->unk6C[arg1]; obj6C->unk4 &= 0x7FFF; - obj->unk1A--; + obj->segment.unk1A--; } GLOBAL_ASM("asm/non_matchings/particles/func_800AF714.s") @@ -584,29 +578,27 @@ void func_800B2260(unk800B2260 *arg0) { GLOBAL_ASM("asm/non_matchings/particles/func_800B22FC.s") -#ifdef NON_EQUIVALENT - -// Has regalloc issues. void func_800B263C(unk800B2260_C *arg0) { + unk800B2260 *new_var; + unk800B2260_C *new_var2; unk800B2260 *temp_v0; s32 i; temp_v0 = (unk800B2260 *)arg0->unk70; if (temp_v0 != NULL) { + new_var = temp_v0; if (temp_v0->unk6 != 0) { if (arg0 == temp_v0->unkC[arg0->unk74]) { temp_v0->unk6--; for (i = arg0->unk74; i < temp_v0->unk6; i++) { - temp_v0->unkC[i] = temp_v0->unkC[i + 1]; - temp_v0->unkC[i]->unk74 = i; + new_var->unkC[i] = new_var->unkC[i + 1]; + new_var2 = new_var->unkC[i]; + new_var2->unk74 = i; } } } } } -#else -GLOBAL_ASM("asm/non_matchings/particles/func_800B263C.s") -#endif GLOBAL_ASM("asm/non_matchings/particles/func_800B26E0.s") GLOBAL_ASM("asm/non_matchings/particles/func_800B2FBC.s") diff --git a/src/particles.h b/src/particles.h index 93bf4f82..afd0335b 100644 --- a/src/particles.h +++ b/src/particles.h @@ -109,6 +109,10 @@ typedef struct unk800B2260 { unk800B2260_C **unkC; } unk800B2260; +typedef struct XYStruct { + s16 x, y; +} XYStruct; + void func_800AE270(void); void func_800AE2A0(void); void func_800AE2D8(void); @@ -125,10 +129,12 @@ void func_800AF1E0(unk800AF29C *arg0, s32 arg1, s32 arg2); void func_800AF29C(unk800AF29C *arg0, s32 arg1, s32 arg2, s16 arg3, s16 arg4, s16 arg5); void func_800AF6E4(Object *obj, s32 arg1); void func_800B2260(unk800B2260 *arg0); +void func_800B263C(unk800B2260_C *arg0); void func_800AF134(unk800B2260 *arg0, s32 arg1, s32 arg2, s16 arg3, s16 arg4, s16 arg5); // Non Matching void func_800AF404(s32 arg0); // Non Matching -void func_800B263C(unk800B2260_C *arg0); // Non Matching void func_800AFC3C(Object *, s32); // Non Matching +void init_particle_assets(void); // Non Matching +void func_800AE728(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5); // Non Matching #endif diff --git a/src/printf.c b/src/printf.c index 090be582..bbcf805c 100644 --- a/src/printf.c +++ b/src/printf.c @@ -100,7 +100,7 @@ void func_800B5E88(void) { D_801285D8 = &D_80127CD8; } -#if 0 +#ifdef NON_EQUIVALENT s32 render_printf(const char *format, ...) { s32 written; va_list args; @@ -119,6 +119,7 @@ s32 render_printf(const char *format, ...) { #else GLOBAL_ASM("asm/non_matchings/printf/render_printf.s") #endif + GLOBAL_ASM("asm/non_matchings/printf/print_debug_strings.s") /** diff --git a/src/printf.h b/src/printf.h index 582e83a1..4f2a17b3 100644 --- a/src/printf.h +++ b/src/printf.h @@ -2,6 +2,7 @@ #define _PRINTF_H_ #include "types.h" +#include #define RENDER_PRINTF_CMD_ARG_BYTE(val) *D_801285D8 = val; D_801285D8++; @@ -38,5 +39,7 @@ void set_render_printf_colour(u8 red, u8 green, u8 blue, u8 alpha); void set_render_printf_background_colour(u8 red, u8 green, u8 blue, u8 alpha); void set_render_printf_position(u16 xpos, u16 ypos); // Non Matching +s32 render_printf(const char *format, ...); // Non Matching +void print_debug_strings(Gfx **arg0); // Non Matching #endif diff --git a/src/racer.c b/src/racer.c index d0cd090a..c5d5d7d9 100644 --- a/src/racer.c +++ b/src/racer.c @@ -12,7 +12,7 @@ #include "asset_sections.h" #include "save_data.h" #include "unknown_008C40.h" -#include "unknown_00BC20.h" +#include "objects.h" #include "audio.h" #include "object_functions.h" #include "game.h" @@ -36,9 +36,9 @@ f32 D_800DCB60[14] = { s32 D_800DCB98 = 0; // Currently unknown, might be a different type. f32 D_800DCB9C[19] = { - 0.004f, 0.007f, 0.0099999999f, 0.004f, - 0.0099999999f, 0.0099999999f, 0.0099999999f, 0.0099999999f, - 0.0099999999f, 0.0099999999f, 0.004f, 0.004f, + 0.004f, 0.007f, 0.01f, 0.004f, + 0.01f, 0.01f, 0.01f, 0.01f, + 0.01f, 0.01f, 0.004f, 0.004f, 0.004f, 0.004f, 0.004f, 0.004f, 0.004f, 0.004f, 0.004f, }; @@ -135,7 +135,7 @@ s32 D_8011D4F8[3]; s32 D_8011D504; ObjectCamera *gCameraObject; s32 D_8011D50C; -unk8011D510 D_8011D510; +ObjectTransform D_8011D510; s32 D_8011D528; s32 gActivePlayerButtonPress; s32 D_8011D530; @@ -310,7 +310,7 @@ void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64) { if (planeObj64->unk1D7 != 10) { //!@bug Typo. Should've been `== 0`, not `= 0`. - if (planeObj64->unk1F2 = 0) { + if ((planeObj64->unk1F2 = 0)) { return; // This never gets called because of the typo. } phi_v0 = planeObj64->unk1E1; @@ -321,7 +321,7 @@ void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64) { if (phi_v0 >= 0x4A) { phi_v0 = 0x49; } - temp_v1 = phi_v0 - planeObj->unk18; + temp_v1 = phi_v0 - planeObj->segment.unk18; phi_v0 = 0; if (temp_v1 > 0) { phi_v0 = arg0 * 3; @@ -335,7 +335,7 @@ void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64) { phi_v0 = temp_v1; } } - planeObj->unk18 += phi_v0; + planeObj->segment.unk18 += phi_v0; } } @@ -379,8 +379,8 @@ void func_8004C140(Object *obj, Object_64_8004C140 *obj64) { break; case 6: obj64->unk204 = 0x78; - obj->x_velocity *= 0.7; - obj->z_velocity *= 0.7; + obj->segment.x_velocity *= 0.7; + obj->segment.z_velocity *= 0.7; break; } obj64->unk187 = 0; @@ -400,22 +400,22 @@ void func_8004D95C(s32 arg0, s32 arg1, Object *obj, Object_64_8004D95C *obj64) { if ((func_8002341C() != 0) && (obj64->unk1D6 == 0xA)) { obj->unk4C->unk14 = 0; } - sp26 = obj->unk18; + sp26 = obj->segment.unk18; obj64->unk1D6 = 0xA; func_80049794(arg0, arg1, obj, obj64); obj64->unk1D6 = obj64->unk1D7; - obj->unk3B = 0; + obj->segment.unk3B = 0; if (obj64->unk1D6 == 0xA) { if (obj64->someObject != NULL) { - obj64->someObject->x_position = obj->x_position; - obj64->someObject->y_position = obj->y_position; - obj64->someObject->z_position = obj->z_position; - obj64->someObject->unk2E = obj->unk2E; - obj64->someObject->y_rotation = obj->y_rotation; - obj64->someObject->x_rotation = obj->x_rotation; - obj64->someObject->z_rotation = obj->z_rotation; - obj->unk3B = 0; - obj->unk18 = sp26 + arg0; + obj64->someObject->segment.trans.x_position = obj->segment.trans.x_position; + obj64->someObject->segment.trans.y_position = obj->segment.trans.y_position; + obj64->someObject->segment.trans.z_position = obj->segment.trans.z_position; + obj64->someObject->segment.unk2C.half.lower = obj->segment.unk2C.half.lower; + obj64->someObject->segment.trans.y_rotation = obj->segment.trans.y_rotation; + obj64->someObject->segment.trans.x_rotation = obj->segment.trans.x_rotation; + obj64->someObject->segment.trans.z_rotation = obj->segment.trans.z_rotation; + obj->segment.unk3B = 0; + obj->segment.unk18 = sp26 + arg0; func_80061C0C(obj); } } @@ -471,21 +471,21 @@ void func_80050754(Object *obj, Object_64_80050754 *obj64, f32 arg2) { f32 xDiff, yDiff, zDiff; Object *someObj; - obj->unk3B = 0; - obj->unk18 = 0x28; + obj->segment.unk3B = 0; + obj->segment.unk18 = 0x28; someObj = obj64->someObj; - xDiff = someObj->x_position - obj->x_position; - yDiff = someObj->y_position - obj->y_position; - zDiff = someObj->z_position - obj->z_position; + xDiff = someObj->segment.trans.x_position - obj->segment.trans.x_position; + yDiff = someObj->segment.trans.y_position - obj->segment.trans.y_position; + zDiff = someObj->segment.trans.z_position - obj->segment.trans.z_position; func_80011570(obj, xDiff, yDiff, zDiff); - obj->y_rotation = obj64->someObj->y_rotation; - obj->x_rotation = obj64->someObj->x_rotation; - obj->z_rotation = obj64->someObj->z_rotation; - obj64->unk1A4 = obj->z_rotation; - obj64->unk1A0 = obj->y_rotation; - obj->x_velocity = xDiff / arg2; - obj->y_velocity = yDiff / arg2; - obj->z_velocity = zDiff / arg2; + obj->segment.trans.y_rotation = obj64->someObj->segment.trans.y_rotation; + obj->segment.trans.x_rotation = obj64->someObj->segment.trans.x_rotation; + obj->segment.trans.z_rotation = obj64->someObj->segment.trans.z_rotation; + obj64->unk1A4 = obj->segment.trans.z_rotation; + obj64->unk1A0 = obj->segment.trans.y_rotation; + obj->segment.x_velocity = xDiff / arg2; + obj->segment.y_velocity = yDiff / arg2; + obj->segment.z_velocity = zDiff / arg2; obj64->unk1F2 = 0; obj64->unk2C = 0.0f; obj64->unk30 = 0.0f; @@ -525,59 +525,59 @@ void func_80052988(Object *arg0, Object_64 *arg1, s32 arg2, s32 arg3, s32 arg4, arg5 *= arg7; if ((D_8011D55C == -1) && (arg2 >= 3)) { - arg0->unk3B = 0; + arg0->segment.unk3B = 0; arg1->unk1F2 = 0; - } else if (arg0->unk3B == 0) { + } else if (arg0->segment.unk3B == 0) { if (arg6 & 1) { - if (arg0->unk18 >= 0x29) { - arg0->unk18 -= arg7 * 4; - if (arg0->unk18 < 0x29) { - arg0->unk3B = arg2; - arg0->unk18 = arg3; + if (arg0->segment.unk18 >= 0x29) { + arg0->segment.unk18 -= arg7 * 4; + if (arg0->segment.unk18 < 0x29) { + arg0->segment.unk3B = arg2; + arg0->segment.unk18 = arg3; } } else { - arg0->unk18 += arg7 * 4; - if (arg0->unk18 >= 0x28) { - arg0->unk3B = arg2; - arg0->unk18 = arg3; + arg0->segment.unk18 += arg7 * 4; + if (arg0->segment.unk18 >= 0x28) { + arg0->segment.unk3B = arg2; + arg0->segment.unk18 = arg3; } } } else { - arg0->unk3B = arg2; - arg0->unk18 = arg3; + arg0->segment.unk3B = arg2; + arg0->segment.unk18 = arg3; arg1->unk1F3 &= ~0x80; } - } else if (arg0->unk3B == arg2) { + } else if (arg0->segment.unk3B == arg2) { if (arg6 & 2) { if (arg1->unk1F3 & 0x80) { - arg0->unk18 -= arg5; - if (arg0->unk18 <= 0) { - arg0->unk3B = 0; + arg0->segment.unk18 -= arg5; + if (arg0->segment.unk18 <= 0) { + arg0->segment.unk3B = 0; arg1->unk1F2 = 0; - arg0->unk18 = 0x28; + arg0->segment.unk18 = 0x28; arg1->unk1F3 = 0; } } else { - arg0->unk18 += arg5; - if (arg0->unk18 >= arg4) { - arg0->unk18 = arg4 - 1; + arg0->segment.unk18 += arg5; + if (arg0->segment.unk18 >= arg4) { + arg0->segment.unk18 = arg4 - 1; if ((arg6 & 4) == 0) { arg1->unk1F3 |= 0x80; } } } } else { - arg0->unk18 += arg5; - if (arg0->unk18 >= arg4) { - arg0->unk3B = 0; + arg0->segment.unk18 += arg5; + if (arg0->segment.unk18 >= arg4) { + arg0->segment.unk3B = 0; arg1->unk1F2 = 0; - arg0->unk18 = 0x28; + arg0->segment.unk18 = 0x28; arg1->unk1F3 = 0; } } } else { - arg0->unk18 = arg3; - arg0->unk3B = arg2; + arg0->segment.unk18 = arg3; + arg0->segment.unk3B = arg2; } } @@ -612,16 +612,16 @@ void func_80053478(Object_64_80053478 *obj) { void func_800535C4(unk800535C4 *arg0, unk800535C4_2 *arg1) { Matrix mf; - D_8011D510.unk0 = -arg1->unk1A0; - D_8011D510.unk2 = -arg0->unk2; - D_8011D510.unk4 = -arg1->unk1A4; - D_8011D510.unkC = 0; - D_8011D510.unk10 = 0; - D_8011D510.unk14 = 0; - D_8011D510.unk8 = 1; + D_8011D510.y_rotation = -arg1->unk1A0; + D_8011D510.x_rotation = -arg0->unk2; + D_8011D510.z_rotation = -arg1->unk1A4; + D_8011D510.x_position = 0; + D_8011D510.y_position = 0; + D_8011D510.z_position = 0; + D_8011D510.scale = 1; func_8006FE74(&mf, &D_8011D510); - guMtxXFMF(&mf, 0.0f, -1.0f, 0.0f, &arg1->ox, &arg1->oy, &arg1->oz); + guMtxXFMF(mf, 0.0f, -1.0f, 0.0f, &arg1->ox, &arg1->oy, &arg1->oz); } void func_80053664(Object_64 *arg0) { @@ -669,7 +669,7 @@ GLOBAL_ASM("asm/non_matchings/racer/func_80056E2C.s") void func_80057048(Object *obj, s32 arg1) { Object_64 *obj64 = obj->unk64; if (D_8011D55C != -1 && obj64->unk108 == 0) { - func_80001EA8(arg1, obj->x_position, obj->y_position, obj->z_position, NULL); + func_80001EA8(arg1, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, NULL); } } @@ -715,7 +715,7 @@ void func_800570B8(Object *obj, s32 arg1, s32 arg2, s32 arg3) { } } //sp34 = phi_t0; - func_80009558(phi_t0, obj->x_position, obj->y_position, obj->z_position, 4, &obj64->unk24); + func_80009558(phi_t0, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, &obj64->unk24); obj64->unk28 = phi_t0; } } @@ -730,22 +730,22 @@ GLOBAL_ASM("asm/non_matchings/racer/func_80057220.s") void func_800575EC(Object *obj, Object_64_800575EC *obj64) { Matrix mf; - D_8011D510.unk0 = obj->y_rotation; - D_8011D510.unk2 = obj->x_rotation; - D_8011D510.unk4 = 0; - D_8011D510.unkC = 0.0f; - D_8011D510.unk10 = 0.0f; - D_8011D510.unk14 = 0.0f; - D_8011D510.unk8 = 1.0f; - func_8006FC30(&mf, &D_8011D510); - guMtxXFMF(&mf, 0.0f, 0.0f, 1.0f, &obj64->ox1, &obj64->oy1, &obj64->oz1); - guMtxXFMF(&mf, 0.0f, 1.0f, 0.0f, &obj64->ox2, &obj64->oy2, &obj64->oz2); - guMtxXFMF(&mf, 1.0f, 0.0f, 0.0f, &obj64->ox3, &obj64->oy3, &obj64->oz3); + D_8011D510.y_rotation = obj->segment.trans.y_rotation; + D_8011D510.x_rotation = obj->segment.trans.x_rotation; + D_8011D510.z_rotation = 0; + D_8011D510.x_position = 0.0f; + D_8011D510.y_position = 0.0f; + D_8011D510.z_position = 0.0f; + D_8011D510.scale = 1.0f; + func_8006FC30(mf, &D_8011D510); + guMtxXFMF(mf, 0.0f, 0.0f, 1.0f, &obj64->ox1, &obj64->oy1, &obj64->oz1); + guMtxXFMF(mf, 0.0f, 1.0f, 0.0f, &obj64->ox2, &obj64->oy2, &obj64->oz2); + guMtxXFMF(mf, 1.0f, 0.0f, 0.0f, &obj64->ox3, &obj64->oy3, &obj64->oz3); } GLOBAL_ASM("asm/non_matchings/racer/func_800576E0.s") -void func_800579B0(unk800579B0 *arg0, s32 arg1, f32 arg2) { +void func_800579B0(unk800579B0 *arg0, UNUSED s32 arg1, f32 arg2) { s32 temp, temp2; temp = D_8011D534 - arg0->unk1E1; @@ -792,10 +792,10 @@ GLOBAL_ASM("asm/non_matchings/racer/func_80058D5C.s") void func_80058F44(f32 arg0, Object *arg1, Object *arg2) { s32 temp0, temp1; temp0 = (s32)arg0; - temp1 = func_8007066C(gCameraObject->x_position - arg1->x_position, gCameraObject->z_position - arg1->z_position); + temp1 = func_8007066C(gCameraObject->x_position - arg1->segment.trans.x_position, gCameraObject->z_position - arg1->segment.trans.z_position); gCameraObject->y_rotation += (((-temp1 - gCameraObject->y_rotation) + 0x8000) * temp0) >> 4; gCameraObject->z_rotation -= (gCameraObject->z_rotation * temp0) >> 4; - gCameraObject->unk34 = get_level_segment_index_from_position(gCameraObject->x_position, arg2->unk3C_a.unk3C_f, gCameraObject->z_position); + gCameraObject->unk34 = get_level_segment_index_from_position(gCameraObject->x_position, arg2->segment.unk3C_a.unk3C_f, gCameraObject->z_position); } #else GLOBAL_ASM("asm/non_matchings/racer/func_80058F44.s") @@ -804,18 +804,14 @@ GLOBAL_ASM("asm/non_matchings/racer/func_80058F44.s") GLOBAL_ASM("asm/non_matchings/racer/func_80059080.s") GLOBAL_ASM("asm/non_matchings/racer/func_80059208.s") -void func_80059790(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3) { - s32 temp_lo; - s32 temp_lo_2; - +void get_timestamp_from_frames(s32 frameCount, s32 *minutes, s32 *seconds, s32 *hundredths) { if (gVideoRefreshRate == REFRESH_50HZ) { - arg0 = (f32)arg0 * 1.2; + frameCount = (f32)frameCount * 1.2; } - temp_lo = arg0 / 3600; - *arg1 = temp_lo; - temp_lo_2 = (s32)(arg0 - (temp_lo * 3600)) / 60; - *arg2 = temp_lo_2; - *arg3 = (s32)((s32)(((arg0 - (*arg1 * 3600)) - (temp_lo_2 * 60)) * 100) / 60); + // (REFRESH_60HZ * 60) is just frames per minute basically + *minutes = frameCount / (REFRESH_60HZ * 60); + *seconds = (frameCount - (*minutes * (REFRESH_60HZ * 60))) / REFRESH_60HZ; + *hundredths = (((frameCount - (*minutes * (REFRESH_60HZ * 60))) - (*seconds * REFRESH_60HZ)) * 100) / REFRESH_60HZ; } void func_800598D0(void) { @@ -847,7 +843,7 @@ s32 func_800599A8(void) { return D_8011D5AC; } -s32 func_800599B8(s32 arg0, s32 arg1, s16 arg2, s32 arg3, s32 arg4) { +s32 func_800599B8(s32 arg0, s32 arg1, s16 arg2, s16 *arg3, s16 *arg4) { s32 temp_v0; s32 temp_t8; s16 sp2E; diff --git a/src/racer.h b/src/racer.h index 81c1ca89..02a9d625 100644 --- a/src/racer.h +++ b/src/racer.h @@ -189,12 +189,13 @@ extern s32 gObjLoopGoldenBalloonChecksum; extern s16 D_800DCDD4[4]; -extern unk8011D510 D_8011D510; +extern ObjectTransform D_8011D510; extern s32 D_8011D534; s32 get_random_number_from_range(s32, s32); //? -void func_8006FE74(Matrix *, unk8011D510 *); // Non Matching ? +void func_8006FC30(Matrix, ObjectTransform *); // asm func +void func_8006FE74(Matrix *, ObjectTransform *); // Non Matching ? s32 func_80044450(s32 arg0); void func_8004C0A0(s32 arg0, Object *planeObj, Object_64_8004C0A0 *planeObj64); @@ -214,12 +215,12 @@ void func_800570A4(Object *obj, s32 arg1, s32 arg2); void func_800575EC(Object *obj, Object_64_800575EC *obj64); void func_800579B0(unk800579B0 *arg0, s32 arg1, f32 arg2); void func_800580B4(Object *obj, Object_64_800580B4 *obj64, s32 arg2, f32 arg3); -void func_80059790(s32 arg0, s32 *arg1, s32 *arg2, s32 *arg3); +void get_timestamp_from_frames(s32 frameCount, s32 *minutes, s32 *seconds, s32 *hundredths); void func_800598D0(void); void func_80059944(void); void func_80059984(s32 arg0); s32 func_800599A8(void); -s32 func_800599B8(s32 arg0, s32 arg1, s16 arg2, s32 arg3, s32 arg4); +s32 func_800599B8(s32 arg0, s32 arg1, s16 arg2, s16 *arg3, s16 *arg4); s32 load_tt_ghost(s32 ghostOffset, s32 size, s16 *outTime); void free_tt_ghost_data(void); s32 func_80059B7C(s32 controllerIndex, s32 arg1, s16 arg2, s16 arg3, s16 arg4); diff --git a/src/save_data.c b/src/save_data.c index 68cab6bc..4b9409da 100644 --- a/src/save_data.c +++ b/src/save_data.c @@ -8,7 +8,7 @@ #include "macros.h" #include "structs.h" #include "camera.h" -#include "unknown_00BC20.h" +#include "objects.h" #include "game.h" #include "unknown_0CEC50.h" @@ -493,8 +493,13 @@ s32 write_time_data_to_controller_pak(s32 controllerIndex, Settings *arg1) { GLOBAL_ASM("asm/non_matchings/save_data/func_80074204.s") GLOBAL_ASM("asm/non_matchings/save_data/func_8007431C.s") -// Writes Eeprom in 5 block chunks of data starting at either 0x0, 0x5, or 0xA -// Educated guess says this might be for one of three save files +/** + * Writes Eeprom in 5 block chunks of data starting at either 0x0, 0x5, or 0xA + * In Save File: + * 0x00 - 0x27 Save 1 + * 0x28 - 0x4F Save 2 + * 0x50 - 0x77 Save 3 + */ s32 write_save_data(s32 saveFileNum, Settings *settings) { s32 startingAddress; u64 *alloc; @@ -536,11 +541,13 @@ s32 write_save_data(s32 saveFileNum, Settings *settings) { return 0; } -// Read Eeprom Data for addresses 0x10 - 0x39 -// arg1 is a flag -// arg1 is descended from (D_800DD37C & 3) so the first 2 bits of that value. -// bit 1 is for 0x10 - 0x27 -// bit 2 is for 0x28 - 0x39 +/** + * Read Eeprom Data for addresses 0x10 - 0x39 + * arg1 is a flag + * arg1 is descended from (D_800DD37C & 3) so the first 2 bits of that value. + * bit 1 is for 0x10 - 0x27 + * bit 2 is for 0x28 - 0x39 + */ s32 read_eeprom_data(Settings *arg0, u8 arg1) { u64 *alloc; s32 i; @@ -571,10 +578,13 @@ s32 read_eeprom_data(Settings *arg0, u8 arg1) { return 0; } -// Write Eeprom Data for addresses 0x10 - 0x39 -// arg1 is a flag -// bit 1 is for 0x10 - 0x27 -// bit 2 is for 0x28 - 0x39 +/** + * Write Eeprom Data for addresses 0x10 - 0x39 + * 0x80 - 0x1C8 in file + * arg1 is a flag + * bit 1 is for 0x10 - 0x27 + * bit 2 is for 0x28 - 0x39 + */ s32 write_eeprom_data(Settings *arg0, u8 arg1) { u64 *alloc; s32 i; @@ -610,6 +620,10 @@ s32 write_eeprom_data(Settings *arg0, u8 arg1) { return 0; } +/** + * Calculates a checksum for the game settings, and compares + * against this to validate the data on load. + */ s32 calculate_eeprom_settings_checksum(u64 eepromSettings) { s32 ret; s32 i; @@ -621,7 +635,11 @@ s32 calculate_eeprom_settings_checksum(u64 eepromSettings) { return ret; } -// Reads eeprom address 0xF (15) +/** + * Reads eeprom address 0xF (15) + * This contains the settings data, and global unlocks like characters + * Address (0xF * sizeof(u64)) = 0x78 - 0x80 of the actual save data file + */ s32 read_eeprom_settings(u64 *eepromSettings) { s32 temp; s32 sp20; @@ -645,7 +663,11 @@ s32 read_eeprom_settings(u64 *eepromSettings) { return 1; } -//Writes eeprom address 0xF (15) +/** + * Writes eeprom address 0xF (15) + * This contains the settings data, and global unlocks like characters + * Address (0xF * sizeof(u64)) = 0x78 - 0x80 of the actual save data file + */ s32 write_eeprom_settings(u64 *eepromSettings) { if (osEepromProbe(get_si_mesg_queue()) == 0) { return -1; diff --git a/src/save_data.h b/src/save_data.h index 7db53ac0..fcc4d721 100644 --- a/src/save_data.h +++ b/src/save_data.h @@ -30,7 +30,7 @@ typedef enum { CONTROLLER_PAK_CHANGED, CONTROLLER_PAK_UNK6, //Could be another way to mark as full according to tt_menu_loop RUMBLE_PAK, - CONTROLLER_PAK_UNK8, // func_80074B34 Sets this + CONTROLLER_PAK_UNK8, // func_80074B34 Sets this, possibly set in func_800860A8 CONTROLLER_PAK_BAD_DATA, } SIDeviceStatus; diff --git a/src/stacks.c b/src/stacks.c index 772ccba0..b5209828 100644 --- a/src/stacks.c +++ b/src/stacks.c @@ -9,7 +9,7 @@ /************ .bss ************/ u8 piThreadStack[256]; // piThreadStack[OS_PIM_STACKSIZE]; -s32 D_80129BB0[256]; +s64 D_80129BB0[128]; // epcStack? s32 D_80129FB0[3]; s32 D_80129FBC; diff --git a/src/stacks.h b/src/stacks.h index 767fa2a9..0c9f6f78 100644 --- a/src/stacks.h +++ b/src/stacks.h @@ -6,7 +6,7 @@ #define OS_PIM_STACKSIZE 4096 extern u8 piThreadStack[256]; // piThreadStack[OS_PIM_STACKSIZE]; -extern s32 D_80129BB0[256]; +extern s64 D_80129BB0[128]; //epcStack? extern s32 D_80129FB0[3]; extern s32 D_80129FBC; diff --git a/src/textures_sprites.h b/src/textures_sprites.h index 13723370..7205da24 100644 --- a/src/textures_sprites.h +++ b/src/textures_sprites.h @@ -6,6 +6,7 @@ #include "f3ddkr.h" #include "structs.h" #include "macros.h" +#include "memory.h" extern u32 gTexColourTag; extern s32 D_800DE7C4; @@ -91,5 +92,8 @@ s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 *numFramesOut, s32 *formatOut, s32 *sizeOut); // Non Matching void free_sprite(Sprite *sprite); // Non Matching void func_8007F594(Gfx **dlist, u32 index, u32 primitiveColor, u32 environmentColor); // Non Matching +void func_8007CA68(s32 arg0, s32 arg1, s32 *arg2, s32 *arg3, s32 *arg4); // Non Matching +MemoryPoolSlot *func_8007C12C(s32 arg0, s32 arg1); // Non Matching +void func_8007AC70(void); // Non Matching #endif diff --git a/src/thread0_epc.c b/src/thread0_epc.c index ef23e61c..28075ba5 100644 --- a/src/thread0_epc.c +++ b/src/thread0_epc.c @@ -7,9 +7,10 @@ #include "menu.h" #include "save_data.h" #include "printf.h" -#include "unknown_00BC20.h" +#include "objects.h" #include "controller.h" #include "game.h" +#include "stacks.h" /************ .rodata ************/ @@ -18,10 +19,10 @@ const char D_800E8EA0[] = "\nAssertion failed: '%s' in file %s, line %d\n"; const char D_800E8ED0[] = ">fault< "; const char D_800E8EDC[] = "CORE"; const u8 D_800E8EE4[4] = { 0, 0, 0, 0 }; -const char D_800E8EE8[] = "CORE"; -const u8 D_800E8EF0[4] = { 0, 0, 0, 0 }; -const char D_800E8EF4[] = "CORE"; -const u8 D_800E8EFC[4] = { 0, 0, 0, 0 }; +const u8 sCoreFileName1[] = "CORE"; +const u8 sCoreFileExt1[] = { 0, 0, 0, 0 }; +const u8 sCoreFileName2[] = "CORE"; +const u8 sCoreFileExt2[] = { 0, 0, 0, 0 }; /*********************************/ @@ -42,8 +43,6 @@ char *D_800E302C[3] = { epcInfo gEpcInfo; //Very similar to __OSThreadContext s32 D_801299B0[64]; -extern s32 D_80129BB0[256]; - /******************************/ extern OSThread D_801295E0; @@ -90,19 +89,20 @@ void func_800B6F04(void) { D_80127CAE += 11; } -void func_800B6F30(s32 arg0, s32 arg1, s32 arg2) { +void func_800B6F30(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2) { } -void func_800B6F40(s32 arg0, s32 arg1, s32 arg2) { +void func_800B6F40(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2) { } #ifdef NON_EQUIVALENT -void func_800B6F50(void) { +void thread0_create(void) { s32 i; // Almost matching, just have an issue with argument 4. // The -O2 compiler is too smart. :( - osCreateThread(&D_801295E0, 0, thread0_Main, 0, &D_801295E0, 255); + // It's possible D_801295E0 is a struct containing both the thread and stack pointer + osCreateThread(&D_801295E0, 0, thread0_Main, NULL, &D_801295E0, OS_PRIORITY_MAX); osStartThread(&D_801295E0); @@ -111,11 +111,11 @@ void func_800B6F50(void) { } } #else -GLOBAL_ASM("asm/non_matchings/thread0_epc/func_800B6F50.s") +GLOBAL_ASM("asm/non_matchings/thread0_epc/thread0_create.s") #endif #ifdef NON_EQUIVALENT -void thread0_Main(s32 arg0) { // Has regalloc issues +void thread0_Main(UNUSED void *unused) { // Has regalloc issues s32 sp34; s32 s0 = 0; @@ -169,9 +169,7 @@ void func_800B7144(void) { GLOBAL_ASM("asm/non_matchings/thread0_epc/func_800B71B0.s") -#if 1 -GLOBAL_ASM("asm/non_matchings/thread0_epc/func_800B7460.s") -#else +#ifdef NON_EQUIVALENT //Rename mask to colorTag? void func_800B7460(s32 *epc, s32 size, s32 mask) { epcInfo sp840; @@ -201,10 +199,12 @@ void func_800B7460(s32 *epc, s32 size, s32 mask) { sp38 += size; } } - write_controller_pak_file(0, -1, &D_800E8EE8, &D_800E8EF0, &sp40, 0x800); + write_controller_pak_file(0, -1, sCoreFileName1, sCoreFileExt1, &sp40, 0x800); while (1); // Infinite loop; waiting for the player to reset the console? } } +#else +GLOBAL_ASM("asm/non_matchings/thread0_epc/func_800B7460.s") #endif void func_800B76B8(s32 arg0, s32 arg1) { @@ -217,19 +217,20 @@ void func_800B76B8(s32 arg0, s32 arg1) { s32 get_lockup_status(void) { s32 fileNum; s32 controllerIndex = 0; - char *sp420[256]; - char *sp220[128]; - u8 dataFromControllerPak[512]; + s64 sp420[128]; // Overwrite epcStack? + s64 sp220[64]; + u8 dataFromControllerPak[512]; //Looks to be sizeof(epcInfo), aligned to 64 if (sLockupStatus != -1) { return sLockupStatus; } else { sLockupStatus = 0; - if ((get_si_device_status(controllerIndex) == 0) && //Rumble pack check? - (get_file_number(controllerIndex, &D_800E8EF4, &D_800E8EFC, &fileNum) == 0) && - (read_data_from_controller_pak(controllerIndex, fileNum, (u8 *)&dataFromControllerPak, - sizeof(dataFromControllerPak) * MAXCONTROLLERS) == 0)) { - bcopy(&dataFromControllerPak, &gEpcInfo, sizeof(dataFromControllerPak) - 80); //Why less 80 (0x50)? + // Looks like it reads EpcInfo data from the controller pak, which is interesting + if ((get_si_device_status(controllerIndex) == CONTROLLER_PAK_GOOD) && + (get_file_number(controllerIndex, (u8 *)sCoreFileName2, (u8 *)sCoreFileExt2, &fileNum) == CONTROLLER_PAK_GOOD) && + (read_data_from_controller_pak(controllerIndex, fileNum, dataFromControllerPak, 2048) == CONTROLLER_PAK_GOOD)) + { + bcopy(&dataFromControllerPak, &gEpcInfo, sizeof(epcInfo)); bcopy(&sp220, &D_801299B0, sizeof(sp220)); bcopy(&sp420, &D_80129BB0, sizeof(sp420)); sLockupStatus = 1; @@ -238,8 +239,9 @@ s32 get_lockup_status(void) { if (sLockupStatus) { delete_file(controllerIndex, fileNum); } - return sLockupStatus; } + + return sLockupStatus; } void lockup_screen_loop(s32 updateRate) { @@ -250,9 +252,7 @@ void lockup_screen_loop(s32 updateRate) { } } -#if 1 -GLOBAL_ASM("asm/non_matchings/thread0_epc/render_epc_lock_up_display.s") -#else +#ifdef NON_EQUIVALENT void render_epc_lock_up_display(void) { char *sp50[3]; s32 s3; @@ -337,4 +337,6 @@ void render_epc_lock_up_display(void) { break; } } +#else +GLOBAL_ASM("asm/non_matchings/thread0_epc/render_epc_lock_up_display.s") #endif diff --git a/src/thread0_epc.h b/src/thread0_epc.h index 5091318e..0def141b 100644 --- a/src/thread0_epc.h +++ b/src/thread0_epc.h @@ -3,6 +3,7 @@ #include "types.h" #include "libultra_internal.h" +#include "macros.h" /* Size: 0x1B0 bytes */ typedef struct epcInfo { @@ -80,8 +81,8 @@ void func_800B76B8(s32 arg0, s32 arg1); s32 get_lockup_status(void); void lockup_screen_loop(s32 arg0); -void func_800B6F50(void); // Non Matching -void thread0_Main(s32 arg0); // Non Matching +void thread0_create(void); // Non Matching +void thread0_Main(UNUSED void *unused); // Non Matching void func_800B7460(s32 *epc, s32 size, s32 mask); // Non Matching void render_epc_lock_up_display(void); // Non Matching void func_800B71B0(void); // Non Matching diff --git a/src/unknown_003260.c b/src/unknown_003260.c index e2229e53..ae58df3c 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -82,9 +82,7 @@ const char D_800E4B80[] = "WARNING: Attempt to stop NULL sound aborted\n"; s32 __amDMA(s32 addr, s32 len, void *state); -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_003260/audioNewThread.s") -#else +#ifdef NON_EQUIVALENT void audioNewThread(ALSynConfig *c, OSPri p, OSSched *arg2) { u32 *reg_v0; void *reg_s0; @@ -99,26 +97,26 @@ void audioNewThread(ALSynConfig *c, OSPri p, OSSched *arg2) { if (framesize < 0) { } - if (c->fxType == AL_FX_CUSTOM) { - reg_v0 = load_asset_section_from_rom(ASSET_AUDIO_TABLE); - tmp_size = reg_v0[9] - reg_v0[8]; - reg_s0 = allocate_from_main_pool_safe(tmp_size, COLOR_TAG_CYAN); - load_asset_to_address(39, reg_s0, reg_v0[8], tmp_size); - c->params = reg_s0; - c[1].maxVVoices = 0; - alInit(&ALGlobals_801161D0, c); - free_from_memory_pool(reg_s0); - } else { - alInit(&ALGlobals_801161D0, c); - } - D_80119240[0].node.next = NULL; - D_80119240[0].node.prev = NULL; + // if (c->fxType == AL_FX_CUSTOM) { + // reg_v0 = load_asset_section_from_rom(ASSET_AUDIO_TABLE); + // tmp_size = reg_v0[9] - reg_v0[8]; + // reg_s0 = allocate_from_main_pool_safe(tmp_size, COLOR_TAG_CYAN); + // load_asset_to_address(39, reg_s0, reg_v0[8], tmp_size); + // c->params = reg_s0; + // c[1].maxVVoices = 0; + // alInit(&ALGlobals_801161D0, c); + // free_from_memory_pool(reg_s0); + // } else { + // alInit(&ALGlobals_801161D0, c); + // } + // D_80119240[0].node.next = NULL; + // D_80119240[0].node.prev = NULL; - for (i = 0; i < 0x30; i++) { - alLink(&(D_80119240[i + 1].node), &(D_80119240[i].node)); - D_80119240[i].unk10 = alHeapDBAlloc(0, 0, c->heap, 1, 0x400); - } - D_80119240[i].unk10 = alHeapDBAlloc(0, 0, c->heap, 1, 0x400); + // for (i = 0; i < 0x30; i++) { + // alLink(&(D_80119240[i + 1].node), &(D_80119240[i].node)); + // D_80119240[i].unk10 = alHeapDBAlloc(0, 0, c->heap, 1, 0x400); + // } + // D_80119240[i].unk10 = alHeapDBAlloc(0, 0, c->heap, 1, 0x400); alHeapDBAlloc(0, 0, c->heap, 1, 120); osCreateMesgQueue(&D_80116198, &D_801161B0, 8); @@ -127,6 +125,8 @@ void audioNewThread(ALSynConfig *c, OSPri p, OSSched *arg2) { osCreateThread(&audioThread, 4, &func_80002A98, NULL, &dmaState, p); } +#else +GLOBAL_ASM("asm/non_matchings/unknown_003260/audioNewThread.s") #endif void audioStartThread(void) { @@ -155,7 +155,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80002DF8.s") * __clearAudioDMA routine. * *****************************************************************************/ -#if 0 +#ifdef NON_EQUIVALENT #define DMA_BUFFER_LENGTH 0x400 s32 __amDMA(s32 addr, s32 len, void *state) { void *foundBuffer; @@ -322,9 +322,7 @@ void alSndPNew(audioMgrConfig *c) { gAlSndPlayer->nextDelta = alEvtqNextEvent(&(gAlSndPlayer->evtq), &(gAlSndPlayer->nextEvent)); } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_003260/_sndpVoiceHandler.s") -#else +#ifdef NON_EQUIVALENT ALMicroTime _sndpVoiceHandler(void *node) { unk800DC6BC *sndp = (unk800DC6BC *)node; ALSndpEvent evt; @@ -347,6 +345,8 @@ ALMicroTime _sndpVoiceHandler(void *node) { sndp->curTime += sndp->nextDelta; return sndp->nextDelta; } +#else +GLOBAL_ASM("asm/non_matchings/unknown_003260/_sndpVoiceHandler.s") #endif GLOBAL_ASM("asm/non_matchings/unknown_003260/_handleEvent.s") @@ -372,11 +372,11 @@ void func_80004638(ALBank *bnk, s16 sndIndx, s32 arg2) { func_80004668(bnk, sndIndx, 0, arg2); } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004668.s") -#else -void func_80004668(ALBank *bnk, s16 sndIndx, u8, s32) { +#ifdef NON_EQUIVALENT +void func_80004668(ALBank *bnk, s16 sndIndx, u8 arg2, s32 arg3) { } +#else +GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004668.s") #endif //input typing not right (some type of struct) @@ -389,6 +389,7 @@ void func_8000488C(u8 *arg0) { alEvtqPostEvent(&(gAlSndPlayer->evtq), &sp_18, 0); } } + GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800048D8.s") void func_800049D8(void) { diff --git a/src/unknown_003260.h b/src/unknown_003260.h index dcacce3b..2f141e8f 100644 --- a/src/unknown_003260.h +++ b/src/unknown_003260.h @@ -123,6 +123,7 @@ void func_80004638(ALBank *bnk, s16 sndIndx, s32 arg2); void func_800049D8(void); void func_800049F8(void * sndState,s16 type, u32 arg2); u16 func_80004A3C(u8 arg0); +ALDMAproc __amDmaNew(AMDMAState **state); // Non Matching ALMicroTime _sndpVoiceHandler(void *node); diff --git a/src/unknown_005740.c b/src/unknown_005740.c index cfd23262..4364fbdf 100644 --- a/src/unknown_005740.c +++ b/src/unknown_005740.c @@ -21,7 +21,7 @@ s32 D_80119C38; s32 D_80119C3C; s32 D_80119C40; s32 D_80119C44; -s32 D_80119C48; +s32 **D_80119C48; s32 D_80119C4C; s32 D_80119C50[2]; s32 D_80119C58; diff --git a/src/unknown_005740.h b/src/unknown_005740.h index 0b0fad73..3a2ea7f1 100644 --- a/src/unknown_005740.h +++ b/src/unknown_005740.h @@ -8,5 +8,8 @@ extern s32 D_800DC6D4; extern s32 D_800DC6D8; extern s32 D_800DC6DC; extern s32 D_800DC6E0; +extern s32 D_80119C40; +extern s32 **D_80119C48; +extern s32 D_80119C50[2]; #endif diff --git a/src/unknown_008C40.c b/src/unknown_008C40.c index 411972d7..798bb222 100644 --- a/src/unknown_008C40.c +++ b/src/unknown_008C40.c @@ -5,6 +5,9 @@ #include "types.h" #include "macros.h" #include "audio_internal.h" +#include "unknown_005740.h" +#include "memory.h" +#include "audio.h" /************ .data ************/ @@ -33,8 +36,39 @@ extern s8 D_8011AC18; /*******************************/ +#ifdef NON_EQUIVALENT +void func_80008040(void) { + u32 temp_v1; + //? *phi_v1; + s32 i; + + func_80002128(&D_80119C40, NULL, NULL); + D_80119C48 = allocate_from_main_pool_safe(1440, COLOR_TAG_CYAN); + //D_80119C50 = allocate_from_main_pool_safe(160, COLOR_TAG_CYAN); + D_80119C44 = allocate_from_main_pool_safe(160, COLOR_TAG_CYAN); + D_800DC6E0 = 0; + // phi_v1 = &D_80119C58; + // do { + // temp_v1 = phi_v1 + 0x180; + // temp_v1->unk-8 = 0; + // phi_v1 = (? *) temp_v1; + // } while (temp_v1 < (u32) &D_8011A6D8); + // for (i = 0; i < 384; i++) { + // D_80119C48[i]->unk18 = 0; + // D_80119C48[i]->unk3C = 0; + // D_80119C48[i]->unk60 = 0; + // D_80119C48[i]->unk84 = 0; + // } + func_80008174(); +} +#else GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80008040.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80008140.s") +#endif + +void func_80008140(void) { + func_800018E0(); + D_8011AC18 = 1; +} void func_80008168(void) { D_8011AC18 = 0; @@ -44,7 +78,62 @@ GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80008174.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80008438.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800090C0.s") -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800092A8.s") + +//Best I can figure, this measures the distance between XYZ values. +s32 func_800092A8(f32 inX, f32 inY, f32 inZ, floatXYZVals *floatXYZ, f32 *outX, f32 *outY, f32 *outZ) { + f32 dx, dy, dz; + f32 x1, y1, z1; + f32 x2, y2, z2; + + f32 temp; + f32 ret; + + x1 = floatXYZ->x1; + y1 = floatXYZ->y1; + z1 = floatXYZ->z1; + x2 = floatXYZ->x2; + y2 = floatXYZ->y2; + z2 = floatXYZ->z2; + temp = 0.0f; + + dx = x2 - x1; + dy = y2 - y1; + dz = z2 - z1; + + if (dx == 0.0 && dy == 0.0 && dz == 0.0) { + temp = 0.0f; + } else { + temp = ((inX - x1) * dx + (inY - y1) * dy + (inZ - z1) * dz) / + (dx * dx + dy * dy + dz * dz); + } + + if (temp < 0.0f) { + *outX = x1; + *outY = y1; + *outZ = z1; + dx = x1 - inX; + dy = y1 - inY; + dz = z1 - inZ; + ret = sqrtf(dx * dx + dy * dy + dz * dz); + } else if (temp > 1.0f) { + *outX = x2; + *outY = y2; + *outZ = z2; + dx = x2 - inX; + dy = y2 - inY; + dz = z2 - inZ; + ret = sqrtf(dx * dx + dy * dy + dz * dz); + } else { + *outX = temp * dx + x1, // Comma required here as this was likely all one line. + *outY = temp * dy + y1, + *outZ = temp * dz + z1; + + ret = sqrtf((*outX - inX) * (*outX - inX) + (*outY - inY) * (*outY - inY) + (*outZ - inZ) * (*outZ - inZ)); + } + + return ret; +} + GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80009558.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800095E8.s") GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800096D8.s") diff --git a/src/unknown_008C40.h b/src/unknown_008C40.h index 5bd9c30b..fe00d212 100644 --- a/src/unknown_008C40.h +++ b/src/unknown_008C40.h @@ -2,14 +2,29 @@ #define _UNKNOWN_008C40_H_ #include "types.h" +#include "math.h" + +typedef struct floatXYZVals { + f32 x1; + f32 y1; + f32 z1; + f32 x2; + f32 y2; + f32 z2; +} floatXYZVals; + extern s32 *D_80119C44; void func_80008168(void); void func_800096F8(s32); +s32 func_800092A8(f32 inX, f32 inY, f32 inZ, floatXYZVals *floatXYZ, f32 *outX, f32 *outY, f32 *outZ); void func_80009558(u16, f32 x, f32 y, f32 z, s32, s32 *); // Non Matching void func_80009968(f32, f32, f32, u8, u8, s32); // Non Matching void func_800096D8(s32, f32, f32, f32); // Non Matching +void func_8000A2E8(s32); // Non Matching // Yeah this one seems excessive, and it's Non Matching void func_800098A4(s32, s32, f32, f32, f32, s32, s32, s32, s32, s32, s32, s32, s32); +void func_80008174(void); // Non Matching +void func_80008040(void); // Non Matching #endif diff --git a/src/unknown_0255E0.c b/src/unknown_0255E0.c index c0de9fea..fe56db0e 100644 --- a/src/unknown_0255E0.c +++ b/src/unknown_0255E0.c @@ -9,7 +9,7 @@ #include "f3ddkr.h" #include "PR/gu.h" #include "textures_sprites.h" -#include "unknown_00BC20.h" +#include "objects.h" #include "game.h" #include "memory.h" #include "racer.h" @@ -19,8 +19,8 @@ /************ .data ************/ s32 D_800DC870 = 0; // Currently unknown, might be a different type. -unknown800DC874 D_800DC874 = { -128, 40, -1 }; -unknown800DC874 D_800DC87C = { -125, 70, -1 }; +unknown800DC874 D_800DC874 = { { -128 }, 40, -1 }; +unknown800DC874 D_800DC87C = { { -125 }, 70, -1 }; f32 D_800DC884[10] = { 0.0f, 0.125f, 0.25f, 0.375f, 0.5f, 0.625f, 0.75f, 0.875f @@ -40,7 +40,7 @@ LevelModel *gCurrentLevelModel = NULL; LevelHeader *gCurrentLevelHeader2 = NULL; s32 D_800DC920 = -1; -s32 D_800DC924 = 0; +s32 *D_800DC924 = NULL; s32 D_800DC928 = 0; // Currently unknown, might be a different type. s8 D_800DC92C[24] = { @@ -61,8 +61,8 @@ const char D_800E5E10[] = "TrackGetHeight() - Overflow!!!\n"; /************ .bss ************/ Gfx *D_8011B0A0; -s32 D_8011B0A4; -s32 D_8011B0A8; +u32 D_8011B0A4; +u32 D_8011B0A8; s32 D_8011B0AC; Object *D_8011B0B0; // Camera Object? @@ -151,7 +151,7 @@ f32 D_8011D380; u32 D_8011D384; unk8011D388 D_8011D388[4]; unk8011D468 D_8011D468; -s32 D_8011D474; +s32 *D_8011D474; s32 D_8011D478; s32 D_8011D47C; s32 D_8011D480[2]; @@ -178,9 +178,7 @@ s32 func_800249E0(s32 arg0) { return 0; } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800249F0.s") -#else +#ifdef NON_EQUIVALENT void func_800249F0(u32 arg0, u32 arg1, s32 arg2, u32 arg3, u32 arg4, u32 arg5, u32 arg6) { s32 i; s32 tmp_a2; @@ -236,7 +234,7 @@ void func_800249F0(u32 arg0, u32 arg1, s32 arg2, u32 arg3, u32 arg4, u32 arg5, u D_8011D350[i] = allocate_from_main_pool_safe(3200, COLOR_TAG_YELLOW); D_8011D320[i] = allocate_from_main_pool_safe(12800, COLOR_TAG_YELLOW); D_8011D338[i] = allocate_from_main_pool_safe(20000, COLOR_TAG_YELLOW); - } while (&D_8011D338[++i] != &D_8011D348); + } while ((s32)&D_8011D338[++i] != (s32)&D_8011D348); D_8011B0C8 = 0; func_8002D8DC(1, 1, 0); @@ -252,6 +250,8 @@ void func_800249F0(u32 arg0, u32 arg1, s32 arg2, u32 arg3, u32 arg4, u32 arg5, u func_80025510(arg2 + 1); } } +#else +GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800249F0.s") #endif GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80024D54.s") @@ -288,9 +288,9 @@ void func_80027FC4(s32 arg0) { sp20.unk6 = 0; sp20.unk1 = 8; sp20.unk0 = arg0; - D_8011B0B8 = func_8000EA54(&sp20, 2); + D_8011B0B8 = spawn_object(&sp20, 2); if (D_8011B0B8 != 0) { - D_8011B0B8->unk3C_a.unk3C = 0; + D_8011B0B8->segment.unk3C_a.unk3C = 0; D_8011B0B8->unk4A = -1; } } @@ -301,9 +301,7 @@ void func_80028044(s32 arg0) { GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80028050.s") -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800289B8.s") -#else +#ifdef NON_EQUIVALENT void func_800289B8(void) { u8 sp_2f = gCurrentLevelHeader2->unkC1; u8 sp_2e = gCurrentLevelHeader2->unkC2; @@ -316,37 +314,35 @@ void func_800289B8(void) { func_8007B4C8(&D_8011B0A0, 0, 8); D_8011B0A0 += 8; } +#else +GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800289B8.s") #endif void render_skydome(void) { - unk80120AC0 *v0_some_struct; + Object *v0_some_struct; if (D_8011B0B8 == NULL) return; v0_some_struct = func_80069D20(); if (gCurrentLevelHeader2->unk49 == 0) { - D_8011B0B8->x_position = v0_some_struct->x_position; - D_8011B0B8->y_position = v0_some_struct->y_position; - D_8011B0B8->z_position = v0_some_struct->z_position; + D_8011B0B8->segment.trans.x_position = v0_some_struct->segment.trans.x_position; + D_8011B0B8->segment.trans.y_position = v0_some_struct->segment.trans.y_position; + D_8011B0B8->segment.trans.z_position = v0_some_struct->segment.trans.z_position; } - func_80068408(&D_8011B0A0, &D_8011B0A4); + func_80068408(&D_8011B0A0, (s32 *)&D_8011B0A4); if (D_8011B0DC) { func_80012D5C(&D_8011B0A0, &D_8011B0A4, &D_8011B0A8, D_8011B0B8); } } -#if 1 -GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80028CD0.s") -#else -#endif +GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80028CD0.s") void func_80028FA0(s32 arg0) { D_8011B0FC = arg0; } #ifdef NON_EQUIVALENT - // Regalloc & stack issues. void render_level_geometry_and_objects(void) { s32 sp16C; @@ -395,23 +391,23 @@ void render_level_geometry_and_objects(void) { for (i = sp160; i < sp16C; i++) { obj = get_object(i); s0 = 0xFF; - objFlags = obj->unk6; + objFlags = obj->segment.trans.unk6; if (objFlags & 0x80) { s0 = 0; } else if (!(objFlags & 0x8000)) { - s0 = obj->unk39; + s0 = obj->segment.unk38.half.lower; } if (objFlags & sp158) { s0 = 0; } - if ((obj != NULL) && (s0 == 0xFF) && (func_8002A900(obj)) && ((sp58[obj->unk2E + 1]) || (1000.0 < obj->unk34_a.unk34))) { - if (obj->unk6 & 0x8000) { + if ((obj != NULL) && (s0 == 0xFF) && (func_8002A900(obj)) && ((sp58[obj->segment.unk2C.half.lower + 1]) || (1000.0 < obj->segment.unk34_a.unk34))) { + if (obj->segment.trans.unk6 & 0x8000) { func_80012D5C(&D_8011B0A0, &D_8011B0A4, &D_8011B0A8, obj); } else if (obj->unk50 != NULL) { render_floor_decal(obj, obj->unk50); } func_80012D5C(&D_8011B0A0, &D_8011B0A4, &D_8011B0A8, obj); - if ((obj->unk58 != NULL) && (obj->header->unk30 & 0x10)) { + if ((obj->unk58 != NULL) && (obj->segment.header->unk30 & 0x10)) { func_8002D670(obj, obj->unk58); } } @@ -422,20 +418,20 @@ void render_level_geometry_and_objects(void) { sp44 = sp160 - 1; do { obj = get_object(i); - objFlags = obj->unk6; + objFlags = obj->segment.trans.unk6; if (objFlags & sp158) { s0 = FALSE; } else { s0 = TRUE; } - if (obj != NULL && s0 && (objFlags & 0x100) && (sp58[obj->unk2E + 1]) && (func_8002A900(obj) != 0)) { - if (obj->unk6 & 0x8000) { + if (obj != NULL && s0 && (objFlags & 0x100) && (sp58[obj->segment.unk2C.half.lower + 1]) && (func_8002A900(obj) != 0)) { + if (obj->segment.trans.unk6 & 0x8000) { func_80012D5C(&D_8011B0A0, &D_8011B0A4, &D_8011B0A8, obj); } else if (obj->unk50 != NULL) { render_floor_decal(obj, obj->unk50); } func_80012D5C(&D_8011B0A0, &D_8011B0A4, &D_8011B0A8, obj); - if ((obj->unk58 != NULL) && (obj->header->unk30 & 0x10)) { + if ((obj->unk58 != NULL) && (obj->segment.header->unk30 & 0x10)) { func_8002D670(obj, obj->unk58); } } @@ -462,21 +458,21 @@ void render_level_geometry_and_objects(void) { do { obj = get_object(i); s0 = 0xFF; - objFlags = obj->unk6; + objFlags = obj->segment.trans.unk6; if (objFlags & 0x80) { s0 = 1; } else if (!(objFlags & 0x8000)) { - s0 = obj->unk39; + s0 = obj->segment.unk38.half.lower; } if (objFlags & sp158) { s0 = 0; } - if ((obj->unk48 == 1) && (s0 >= 0xFF)) { + if ((obj->behaviorId == 1) && (s0 >= 0xFF)) { s0 = 0; } - if (obj != NULL && s0 < 0xFF && sp58[obj->unk2E + 1] && func_8002A900(obj)) { + if (obj != NULL && s0 < 0xFF && sp58[obj->segment.unk2C.half.lower + 1] && func_8002A900(obj)) { if (s0 > 0) { - if (obj->unk6 & 0x8000) { + if (obj->segment.trans.unk6 & 0x8000) { func_80012D5C(&D_8011B0A0, &D_8011B0A4, &D_8011B0A8, obj); } else { if (obj->unk50 != NULL) { @@ -484,12 +480,12 @@ void render_level_geometry_and_objects(void) { } // This is being called when it shouldn't. func_80012D5C(&D_8011B0A0, &D_8011B0A4, &D_8011B0A8, obj); - if ((obj->unk58 != 0) && (obj->header->unk30 & 0x10)) { + if ((obj->unk58 != 0) && (obj->segment.header->unk30 & 0x10)) { func_8002D670(obj, obj->unk58); } } } - if (obj->unk48 == 1) { + if (obj->behaviorId == 1) { func_80013A0C(&D_8011B0A0, &D_8011B0A4, &D_8011B0A8, obj); func_80013DCC(&D_8011B0A0, &D_8011B0A4, &D_8011B0A8, obj); } @@ -618,11 +614,11 @@ void traverse_segments_bsp_tree(s32 nodeIndex, s32 segmentIndex, s32 segmentInde while (TRUE) { curNode = &gCurrentLevelModel->segmentsBspTree[nodeIndex]; if (curNode->splitType == 0) { - camValue = D_8011B0B0->x_position; // Camera X + camValue = D_8011B0B0->segment.trans.x_position; // Camera X } else if (curNode->splitType == 1) { - camValue = D_8011B0B0->y_position; // Camera Y + camValue = D_8011B0B0->segment.trans.y_position; // Camera Y } else { - camValue = D_8011B0B0->z_position; // Camera Z + camValue = D_8011B0B0->segment.trans.z_position; // Camera Z } if (camValue < curNode->splitValue) { if (curNode->leftNode != -1) { @@ -681,9 +677,9 @@ s32 func_80029DE0(Object *obj, s32 segmentIndex) { if (segmentIndex >= gCurrentLevelModel->numberOfSegments) { return FALSE; } - x = obj->x_position; - y = obj->y_position; - z = obj->z_position; + x = obj->segment.trans.x_position; + y = obj->segment.trans.y_position; + z = obj->segment.trans.z_position; bb = &gCurrentLevelModel->segmentsBoundingBoxes[segmentIndex]; if ((x < (bb->unk6 + 25)) && ((bb->unk0 - 25) < x) && (z < (bb->unkA + 25)) && ((bb->unk4 - 25) < z) && @@ -875,12 +871,12 @@ s32 func_8002B9BC(Object *obj, f32 *arg1, f32 *arg2, s32 arg3) { arg2[2] = 0.0f; arg2[1] = 1.0f; } - if ((obj->unk2E < 0) || (obj->unk2E >= gCurrentLevelModel->numberOfSegments)) { + if ((obj->segment.unk2C.half.lower < 0) || (obj->segment.unk2C.half.lower >= gCurrentLevelModel->numberOfSegments)) { return FALSE; } - seg = &gCurrentLevelModel->segments[obj->unk2E]; + seg = &gCurrentLevelModel->segments[obj->segment.unk2C.half.lower]; if ((seg->unk2B != 0) && (D_8011D384 != 0) && (arg3 == 1)) { - *arg1 = func_800BB2F4(obj->unk2E, obj->x_position, obj->z_position, arg2); + *arg1 = func_800BB2F4(obj->segment.unk2C.half.lower, obj->segment.trans.x_position, obj->segment.trans.z_position, arg2); return TRUE; } else { *arg1 = seg->unk38; @@ -1059,32 +1055,22 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80030DE0.s") void func_80031018(void) { Matrix mf; - - struct { - s16 unk00; //sp_38 - s16 unk02; //sp_3A - s16 unk04; //sp_3C - u8 pad06[0x02]; - f32 unk08; //sp40; - f32 unk0C; //sp44; - f32 unk10; //sp48; - f32 unk14; //sp4C; - } sp_38; + ObjectTransform trans; f32 x = 0.0f; f32 y = 0.0f; f32 z = -65536.0f; - sp_38.unk04 = D_8011B0B0->z_rotation; - sp_38.unk02 = D_8011B0B0->x_rotation; - sp_38.unk00 = D_8011B0B0->y_rotation; - sp_38.unk0C = 0.0f; - sp_38.unk10 = 0.0f; - sp_38.unk14 = 0.0f; - sp_38.unk08 = 1.0f; + trans.z_rotation = D_8011B0B0->segment.trans.z_rotation; + trans.x_rotation = D_8011B0B0->segment.trans.x_rotation; + trans.y_rotation = D_8011B0B0->segment.trans.y_rotation; + trans.x_position = 0.0f; + trans.y_position = 0.0f; + trans.z_position = 0.0f; + trans.scale = 1.0f; - func_8006FC30(&mf, &sp_38); - guMtxXFMF(&mf, x, y, z, &x, &y, &z); + func_8006FC30(mf, &trans); + guMtxXFMF(mf, x, y, z, &x, &y, &z); //Store x/y/z as integers D_8011D468.x = (s32)x; diff --git a/src/unknown_0255E0.h b/src/unknown_0255E0.h index 65fc18ad..3c738150 100644 --- a/src/unknown_0255E0.h +++ b/src/unknown_0255E0.h @@ -76,15 +76,16 @@ extern f32 D_800DC884[10]; extern f32 D_800DC8AC[27]; -extern LevelModel* gCurrentLevelModel; +extern LevelModel *gCurrentLevelModel; extern LevelHeader *gCurrentLevelHeader; extern s32 D_800DC920; -extern s32 D_800DC924; extern s32 D_800DC928; extern s8 D_800DC92C[24]; +void func_8006FC30(Matrix, ObjectTransform *); // asm func + s32 func_800249E0(s32 arg0); void func_800257D0(void); void func_80027FC4(s32 arg0); @@ -116,6 +117,7 @@ s32 func_80029DE0(Object *obj, s32 segmentIndex); s32 get_level_segment_index_from_position(f32 xPos, f32 yPos, f32 zPos); s32 func_8002A5F8(LevelModelSegmentBoundingBox *bb); void func_80030664(s32 arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4, u8 arg5); -void func_80024D54(Gfx *, s32, s32, s32, s32); +void func_80024D54(Gfx *, Mtx *, VertexList *, TriangleList *, s32); +void func_8002C7D4(void); #endif diff --git a/src/unknown_032760.c b/src/unknown_032760.c index 0fe20b8b..d94e1204 100644 --- a/src/unknown_032760.c +++ b/src/unknown_032760.c @@ -150,13 +150,13 @@ void func_80032C7C(Object *object) { unk800DC950 *entry; if (object->header->unk3D == 0) { - switch (object->header->unk53) { // Model type - case 0: // 3D Model + switch (object->header->modelType) { + case OBJECT_MODEL_TYPE_3D_MODEL: // 3D Model sp64 = 2; break; - case 1: // 2D Billboard - case 2: // Vehicle Part - case 3: + case OBJECT_MODEL_TYPE_SPRITE_BILLBOARD: // 2D Billboard + case OBJECT_MODEL_TYPE_VEHICLE_PART: // Vehicle Part + case OBJECT_MODEL_TYPE_UNKNOWN3: sp64 = 4; break; default: @@ -164,9 +164,9 @@ void func_80032C7C(Object *object) { break; } - sp82 = object->x_position; - sp80 = object->y_position; - sp7E = object->z_position; + sp82 = object->trans.x_position; + sp80 = object->trans.y_position; + sp7E = object->trans.z_position; D_800DC968 = 0; for (i = 0; i < D_800DC95C; i++) { entry = D_800DC950[i]; @@ -183,9 +183,9 @@ void func_80032C7C(Object *object) { D_800DC968 = D_800DC968 + 1; } } else { - D_8011D4C4 = entry->unk10 - object->x_position; - D_8011D4C8 = entry->unk14 - object->y_position; - D_8011D4CC = entry->unk18 - object->z_position; + D_8011D4C4 = entry->unk10 - object->trans.x_position; + D_8011D4C8 = entry->unk14 - object->trans.y_position; + D_8011D4CC = entry->unk18 - object->trans.z_position; if (entry->unk0 == 2) { D_8011D4C8 = 0.0f; } diff --git a/src/unknown_032760.h b/src/unknown_032760.h index 4f0a98b3..0b7557dd 100644 --- a/src/unknown_032760.h +++ b/src/unknown_032760.h @@ -3,6 +3,7 @@ #include "types.h" #include "structs.h" +#include "math.h" typedef struct unk800DC950 { u8 unk0; @@ -82,7 +83,6 @@ typedef struct unk800DC964 { extern unk800DC950 **D_800DC950; f32 func_800707F8(s16); //? -f32 sqrtf(f32); //IDO? void func_80031B60(void); void func_80032210(unk800DC950 *arg0); @@ -100,5 +100,6 @@ f32 func_80033C08(unk800DC950 *arg0); void func_80031BB8(s32 count); void func_80032C7C(Object *object); void func_800337E4(void); +void func_80032424(unk800DC950 *arg0, s32 arg1); #endif diff --git a/src/unknown_05CEF0.c b/src/unknown_05CEF0.c index d48113ad..60e13a14 100644 --- a/src/unknown_05CEF0.c +++ b/src/unknown_05CEF0.c @@ -7,7 +7,7 @@ #include "types.h" #include "macros.h" #include "audio.h" -#include "unknown_00BC20.h" +#include "objects.h" #include "unknown_005740.h" #include "unknown_008C40.h" @@ -37,7 +37,7 @@ void func_8005C2F0(Object *object, unk8005C2F0 *arg1) { object->unk4C->unk10 = 0x1E; object->unk4C->unk12 = 0; arg1->unkC = 0.0f; - D_8011D5C0 = object->y_position; + D_8011D5C0 = object->segment.trans.y_position; if (arg1->unk118 != 0) { func_80006AC8(object); } @@ -74,7 +74,7 @@ void func_8005D048(Object *object, unk8005D048 *arg1, s32 arg2) { Object *sp1C = get_object_struct(0); arg1->unk1F7 = 0xFF; if (!func_8001139C()) { - if ((object->unk30 + arg2) < sp1C->unk30) { + if ((object->segment.unk30 + arg2) < sp1C->segment.unk30) { arg1->unk1F7 = 0x40; } } diff --git a/src/unknown_05FF10.c b/src/unknown_05FF10.c index 04a63c38..90533028 100644 --- a/src/unknown_05FF10.c +++ b/src/unknown_05FF10.c @@ -8,6 +8,7 @@ /************ .data ************/ +//sSoundEffectsPool index values? s16 D_800DCE80[14] = { 0x022C, 0x00A5, 0x00A6, 0x0057, 0x0051, 0x006D, 0x0052, 0x00F8, diff --git a/src/unknown_077C50.c b/src/unknown_077C50.c index 4749bc95..396c0479 100644 --- a/src/unknown_077C50.c +++ b/src/unknown_077C50.c @@ -8,47 +8,48 @@ #include "macros.h" #include "structs.h" #include "f3ddkr.h" +#include "video.h" +#include "game.h" +#include "game_ui.h" -#ifdef NON_EQUIVALENT - -// Draws the borders/negative space for multiplayer. Has regalloc issues +// Draws the borders/negative space for multiplayer. void render_borders_for_multiplayer(Gfx **dlist) { u32 widthAndHeight, width, height; - u32 temp0, temp1, temp2, temp3; + u32 y, x, xOffset, yOffset; LevelHeader *levelHeader; + widthAndHeight = get_video_width_and_height_as_s32(); - width = widthAndHeight & 0xFFFF; - temp0 = width >> 8; - height = widthAndHeight >> 16; - temp1 = height >> 7; + width = GET_VIDEO_WIDTH(widthAndHeight); + height = GET_VIDEO_HEIGHT(widthAndHeight); + xOffset = width >> 8; + width += 0; //Fake match? + yOffset = height >> 7; gDPSetCycleType((*dlist)++, G_CYC_FILL); - gDPSetFillColor((*dlist)++, 0x00010001); // Black fill color + gDPSetFillColor((*dlist)++, GPACK_RGBA5551(0, 0, 0, 1) << 16 | GPACK_RGBA5551(0, 0, 0, 1)); // Black fill color switch (get_viewport_count()) { case VIEWPORTS_COUNT_2_PLAYERS: // Draws a solid horizontal black line in the middle of the screen. - gDPFillRectangle((*dlist)++, 0, (height >> 1) - temp1, width, ((height >> 1) - temp1) + temp1); + y = (height >> 1) - yOffset; + gDPFillRectangle((*dlist)++, height * 0, y, width, y + yOffset); break; case VIEWPORTS_COUNT_3_PLAYERS: levelHeader = get_current_level_header(); // Draw black square in the bottom-right corner. - if (func_800A8458() || (levelHeader->race_type & 0x40)) { + if (func_800A8458() || (levelHeader->race_type & RACE_TYPE_CHALLENGE)) { gDPFillRectangle((*dlist)++, width >> 1, height >> 1, width, height); } // There is no break statement here. This is intentional. case VIEWPORTS_COUNT_4_PLAYERS: - temp2 = (width >> 1) - temp0; + x = (width >> 1) - xOffset; // Draws 2 black lines in the middle of the screen. One vertical, another horizontal. - gDPFillRectangle((*dlist)++, 0, (height >> 1) - temp1, width, ((height >> 1) - temp1) + temp1); - gDPFillRectangle((*dlist)++, temp2, 0, temp2 + temp0, height); + gDPFillRectangle((*dlist)++, height * 0, (height >> 1) - yOffset, width, ((height >> 1) - yOffset) + yOffset); + gDPFillRectangle((*dlist)++, x, 0, x + xOffset, height); break; } return; } -#else -GLOBAL_ASM("asm/non_matchings/unknown_077C50/render_borders_for_multiplayer.s") -#endif -#if 0 +#ifdef NON_EQUIVALENT void func_80077268(Gfx **dlist) { u32 temp_a2_2; u32 temp_v0_3; @@ -60,8 +61,8 @@ void func_80077268(Gfx **dlist) { u32 ra; widthAndHeight = get_video_width_and_height_as_s32(); - height = widthAndHeight >> 16; - width = widthAndHeight & 0xFFFF; + height = GET_VIDEO_HEIGHT(widthAndHeight); + width = GET_VIDEO_WIDTH(widthAndHeight); gDPSetCycleType((*dlist)++, G_CYC_1CYCLE); gDPSetCombineMode((*dlist)++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); gDPSetRenderMode((*dlist)++, G_RM_XLU_SURF, G_RM_XLU_SURF2); @@ -81,7 +82,6 @@ void func_80077268(Gfx **dlist) { break; } } - #else GLOBAL_ASM("asm/non_matchings/unknown_077C50/func_80077268.s") #endif diff --git a/src/unknown_078050.c b/src/unknown_078050.c index 5ea3c10b..51601163 100644 --- a/src/unknown_078050.c +++ b/src/unknown_078050.c @@ -152,10 +152,8 @@ OSMesgQueue D_80125EA0; OSMesg D_80125EB8; OSMesgQueue D_80125EC0; OSMesgQueue D_80125ED8; -OSMesg D_80125EF0; -s32 D_80125EF8[6]; -OSMesg D_80125F10; -s32 D_80125F18[6]; +OSMesg D_80125EF0[8]; +OSMesg D_80125F10[8]; u8 D_80125F30; u8 D_80125F31; u8 D_80125F32; @@ -175,19 +173,19 @@ OSMesgQueue *osScInterruptQ; GLOBAL_ASM("asm/non_matchings/unknown_078050/setupOSTasks.s") s32 func_80077A54(void) { - OSMesg *sp1C = NULL; + s32 *sp1C = NULL; if (D_800DE4DC == 0) { return 0; } - osRecvMesg(&D_80125ED8, &sp1C, OS_MESG_BLOCK); + osRecvMesg(&D_80125ED8, (OSMesg)&sp1C, OS_MESG_BLOCK); D_800DE4DC = 0; return sp1C[1]; } -void func_80077AAC(void *bufPtr, s32 arg1, s32 arg2) { +void func_80077AAC(void *bufPtr, s32 bufSize, UNUSED s32 unused) { osWritebackDCacheAll(); while (osDpGetStatus() & DPC_CLR_CMD_CTR) {} - osDpSetNextBuffer(bufPtr, arg1); + osDpSetNextBuffer(bufPtr, bufSize); while (osDpGetStatus() & DPC_CLR_CMD_CTR) {} } @@ -228,7 +226,7 @@ void render_background(Gfx **dlist, s32 *arg1, s32 arg2) { gDPSetScissor((*dlist)++, 0, 0, 0, w - 1, h - 1); gDPSetCycleType((*dlist)++, G_CYC_FILL); gDPSetColorImage((*dlist)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, w, 0x02000000); - gDPSetFillColor((*dlist)++, 0xFFFCFFFC); + gDPSetFillColor((*dlist)++, GPACK_RGBA5551(255, 255, 255, 128) << 16 | GPACK_RGBA5551(255, 255, 255, 128)); gDPFillRectangle((*dlist)++, 0, 0, w - 1, h - 1); gDPPipeSync((*dlist)++); gDPSetColorImage((*dlist)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, w, 0x01000000); @@ -246,7 +244,7 @@ void render_background(Gfx **dlist, s32 *arg1, s32 arg2) { } if (copy_viewport_background_size_to_coords(0, &x1, &y1, &x2, &y2)) { gDPSetCycleType((*dlist)++, G_CYC_1CYCLE); - gDPSetPrimColor((*dlist)++, 0, 0, sBackgroundPrimColourR, sBackgroundPrimColourG, sBackgroundPrimColourB, 0xFF); + gDPSetPrimColor((*dlist)++, 0, 0, sBackgroundPrimColourR, sBackgroundPrimColourG, sBackgroundPrimColourB, 255); gDPSetCombineMode((*dlist)++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); gDPSetRenderMode((*dlist)++, G_RM_OPA_SURF, G_RM_OPA_SURF2); gDPFillRectangle((*dlist)++, x1, y1, x2, y2); @@ -295,8 +293,8 @@ void init_rsp(Gfx **dlist) { void func_80078100(OSSched *sc) { osScInterruptQ = osScGetInterruptQ(sc); osCreateMesgQueue(&D_80125EA0, &D_80125EB8, 1); - osCreateMesgQueue(&D_80125EC0, &D_80125EF0, 8); - osCreateMesgQueue(&D_80125ED8, &D_80125F10, 8); + osCreateMesgQueue(&D_80125EC0, D_80125EF0, 8); + osCreateMesgQueue(&D_80125ED8, D_80125F10, 8); } void func_80078170(u32 arg0, u32 arg1, u32 arg2) { @@ -336,7 +334,7 @@ void func_80078AAC(void *arg0) { #ifdef NON_EQUIVALENT // Regalloc & stack issues. -void render_textured_rectangle(Gfx **dlist, DrawTexture *arg1, s32 arg2, s32 arg3, u8 red, u8 green, u8 blue, u8 alpha) { +void render_textured_rectangle(Gfx **dlist, DrawTexture *arg1, s32 xPos, s32 yPos, u8 red, u8 green, u8 blue, u8 alpha) { TextureHeader *tex; DrawTexture *phi_t2; s32 x0, y0; @@ -347,8 +345,8 @@ void render_textured_rectangle(Gfx **dlist, DrawTexture *arg1, s32 arg2, s32 arg gDPSetPrimColor((*dlist)++, 0, 0, red, green, blue, alpha); tex = arg1->texture; while (tex != NULL) { - x0 = (arg1->xOffset * 4) + (arg2 * 4); - y0 = (arg1->yOffset * 4) + (arg3 * 4); + x0 = (arg1->xOffset * 4) + (xPos * 4); + y0 = (arg1->yOffset * 4) + (yPos * 4); x1 = (tex->width * 4) + x0; y1 = (tex->height * 4) + y0; if (x1 > 0) { diff --git a/src/unknown_078050.h b/src/unknown_078050.h index c711956b..24ea62ed 100644 --- a/src/unknown_078050.h +++ b/src/unknown_078050.h @@ -29,7 +29,7 @@ extern s32 D_800DE4D8; extern s32 D_800DE4DC; s32 func_80077A54(void); -void func_80077AAC(void *bufPtr, s32 arg1, s32 arg2); +void func_80077AAC(void *bufPtr, s32 arg1, UNUSED s32 arg2); void set_background_prim_colour(u8 arg0, u8 arg1, u8 arg2); void set_background_fill_colour(s32 red, s32 green, s32 blue); void init_rdp_and_framebuffer(Gfx **dlist); @@ -41,8 +41,8 @@ void func_800787F0(void); //Non Matching void render_background(Gfx **dlist, s32 *arg1, s32 arg2); -void render_textured_rectangle(Gfx **dlist, DrawTexture *arg1, - s32 arg2, s32 arg3, u8 red, u8 green, u8 blue, u8 alpha); +void render_textured_rectangle(Gfx **dlist, DrawTexture *arg1, s32 xPos, s32 yPos, u8 red, u8 green, u8 blue, u8 alpha); void render_texture_rectangle_scaled(Gfx **dlist, DrawTexture *element, f32 x, f32 y, f32 x_scale, f32 y_scale, u32 color, s32 flip); +s32 setupOSTasks(Gfx *, Gfx *, s32 arg2); // Not 100% sure about these types, but it matches what main_game_loop is sending. #endif diff --git a/src/unknown_0ABDF0.c b/src/unknown_0ABDF0.c index 487d2e3e..a4ae88df 100644 --- a/src/unknown_0ABDF0.c +++ b/src/unknown_0ABDF0.c @@ -336,11 +336,11 @@ void func_800ADBC8(UNUSED s32 arg0) { f32 temp_f2; sp28 = 1152.0f - (f32) (D_800E2C60 >> 6); - sp24 = func_800707C4(D_80127C1C->y_rotation) * sp28; - temp_f2 = func_800707F8(D_80127C1C->y_rotation) * sp28; - temp_f14 = D_80127C1C->x_position + (temp_f2 - sp24); - temp_f16 = D_80127C1C->y_position; - temp_f18 = D_80127C1C->z_position + (-temp_f2 - sp24); + sp24 = func_800707C4(D_80127C1C->segment.trans.y_rotation) * sp28; + temp_f2 = func_800707F8(D_80127C1C->segment.trans.y_rotation) * sp28; + temp_f14 = D_80127C1C->segment.trans.x_position + (temp_f2 - sp24); + temp_f16 = D_80127C1C->segment.trans.y_position; + temp_f18 = D_80127C1C->segment.trans.z_position + (-temp_f2 - sp24); if (D_800E2C94 != 0) { func_800096D8(D_800E2C94, temp_f14, temp_f16, temp_f18); } else { diff --git a/src/unknown_0ABDF0.h b/src/unknown_0ABDF0.h index 08c882b9..5f14ee6e 100644 --- a/src/unknown_0ABDF0.h +++ b/src/unknown_0ABDF0.h @@ -83,5 +83,7 @@ void func_800ADCBC(unk800E2C2C*, s32); f32 func_800707C4(s16); f32 func_800707F8(s16); +void func_800AB35C(void); +void func_800AB1F0(void); #endif diff --git a/tools/ido-static-recomp b/tools/ido-static-recomp index 5d0d2b1e..794ca45a 160000 --- a/tools/ido-static-recomp +++ b/tools/ido-static-recomp @@ -1 +1 @@ -Subproject commit 5d0d2b1ec409b0def47ed128c70801a56be47523 +Subproject commit 794ca45aa00988a40c7a3a906bd6595a07860c85