diff --git a/.github/workflows/doxygen-and-linux-test.yml b/.github/workflows/doxygen-and-linux-test.yml index d88f0bb73..e80642cca 100644 --- a/.github/workflows/doxygen-and-linux-test.yml +++ b/.github/workflows/doxygen-and-linux-test.yml @@ -31,7 +31,7 @@ jobs: - name: Install Doxygen run: | sudo apt-get install graphviz doxygen - wget https://www.doxygen.nl/files/doxygen-1.10.0.linux.bin.tar.gz + wget https://www.doxygen.nl/files/doxygen-1.11.0.linux.bin.tar.gz tar -xzf doxygen-*.linux.bin.tar.gz - name: make badge diff --git a/.github/workflows/linux-compile.yml b/.github/workflows/linux-compile.yml index 7ef63168d..314420b52 100644 --- a/.github/workflows/linux-compile.yml +++ b/.github/workflows/linux-compile.yml @@ -27,4 +27,4 @@ jobs: cp -r complementary_file/* . echo "${{ secrets.AES_KEY }}" | openssl enc -d -aes-256-cbc -pass stdin -pbkdf2 -in baserom.us.z64.aes -out baserom.us.z64 make assets - make -j \ No newline at end of file + make -j || ./first-diff.py \ No newline at end of file diff --git a/.github/workflows/windows-compile.yml b/.github/workflows/windows-compile.yml index 1bfd68ee0..2b2b61015 100644 --- a/.github/workflows/windows-compile.yml +++ b/.github/workflows/windows-compile.yml @@ -21,7 +21,7 @@ jobs: ssh-key: ${{ secrets.WINDOWS_SSH_PRIVATE_KEY }} - name: Install dependencies run: | - Invoke-WebRequest https://github.com/coco875/mk64-tools/releases/download/v0.0.6/mips-tools-chain-windows.zip -OutFile mips-tools-chain-windows.zip + Invoke-WebRequest https://github.com/coco875/mk64-tools/releases/download/v0.0.8/mips-tools-chain-windows.zip -OutFile mips-tools-chain-windows.zip Expand-Archive mips-tools-chain-windows.zip -DestinationPath mips-tools-chain-windows Copy-Item -Path mips-tools-chain-windows/mingw64 -Destination tools -Recurse - name: Build diff --git a/Makefile b/Makefile index e1e490664..71ee2e7cd 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,8 @@ include util.mk +include safe_gcc.mk + # Default target default: all @@ -26,9 +28,13 @@ COMPILER ?= ido $(eval $(call validate-option,COMPILER,ido gcc)) # Add debug tools with 'make DEBUG=1' and modify the macros in include/debug.h -# Run make clean first. Add '#define CRASH_SCREEN_ENHANCEMENT' to the top of main.c +# Adds crash screen enhancement and activates debug mode +# Run make clean first DEBUG ?= 0 +# Compile with GCC +GCC ?= 0 + # VERSION - selects the version of the game to build # us - builds the 1997 North American version # eu - builds the 1997 1.1 PAL version @@ -76,6 +82,7 @@ ifeq ($(COMPILER),ido) MIPSISET := -mips2 else ifeq ($(COMPILER),gcc) NON_MATCHING := 1 + VERSION_ASFLAGS := --defsym AVOID_UB=1 MIPSISET := -mips3 endif @@ -93,10 +100,14 @@ endif ifeq ($(NON_MATCHING),1) DEFINES += NON_MATCHING=1 AVOID_UB=1 + VERSION_ASFLAGS := --defsym AVOID_UB=1 COMPARE := 0 endif - +# GCC define is to link gcc's std lib. +ifeq ($(GCC), 1) + DEFINES += AVOID_UB=1 GCC=1 +endif # COMPARE - whether to verify the SHA-1 hash of the ROM after building # 1 - verifies the SHA-1 hash of the selected version of the game @@ -336,10 +347,10 @@ CFLAGS = -G 0 $(OPT_FLAGS) $(TARGET_CFLAGS) $(MIPSISET) $(DEF_INC_CFLAGS) ifeq ($(COMPILER),gcc) CFLAGS += -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float -mdivide-breaks -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra else - CFLAGS += $(HIDE_WARNINGS) -non_shared -Wab,-r4300_mul -Xcpluscomm -Xfullwarn -signed -32 + CFLAGS += $(HIDE_WARNINGS) -non_shared -Wab,-r4300_mul -Xcpluscomm -fullwarn -signed -32 endif -ASFLAGS = -march=vr4300 -mabi=32 -I include -I $(BUILD_DIR) $(foreach d,$(DEFINES),--defsym $(d)) +ASFLAGS = -march=vr4300 -mabi=32 -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS) $(foreach d,$(DEFINES),--defsym $(d)) # Fills end of rom OBJCOPYFLAGS = --pad-to=0xC00000 --gap-fill=0xFF @@ -395,6 +406,20 @@ define print @$(PRINT) "$(GREEN)$(1) $(YELLOW)$(2)$(GREEN) -> $(BLUE)$(3)$(NO_COL)\n" endef +# Override commmands for GCC Safe Files +ifeq ($(GCC),1) + $(BUILD_DIR)/src/main.o: OPT_FLAGS := -g + $(BUILD_DIR)/src/racing/skybox_and_splitscreen.o: OPT_FLAGS := -g + $(BUILD_DIR)/src/racing/render_courses.o: OPT_FLAGS := -g + $(SAFE_C_FILES): OPT_FLAGS := -O3 + $(SAFE_C_FILES): CC := $(CROSS)gcc + $(SAFE_C_FILES): MIPSISET := -mips3 + $(SAFE_C_FILES): CFLAGS := -G 0 $(OPT_FLAGS) $(TARGET_CFLAGS) $(MIPSISET) $(DEF_INC_CFLAGS) -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float \ + -mdivide-breaks -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions \ + -ffreestanding -fwrapv -Wall -Wextra -ffast-math -fno-unsafe-math-optimizations + $(SAFE_C_FILES): CC_CHECK := gcc -m32 +endif + #==============================================================================# @@ -409,12 +434,12 @@ endif assets: @echo "Extracting torch assets..." - @$(TORCH) code $(BASEROM) - @$(TORCH) header $(BASEROM) - @$(TORCH) modding export $(BASEROM) + $(V)$(TORCH) code $(BASEROM) + $(V)$(TORCH) header $(BASEROM) + $(V)$(TORCH) modding export $(BASEROM) doc: - $(PYTHON) $(TOOLS_DIR)/doxygen_symbol_gen.py + $(V)$(PYTHON) $(TOOLS_DIR)/doxygen_symbol_gen.py doxygen @$(PRINT) "$(GREEN)Documentation generated in docs/html$(NO_COL)\n" @$(PRINT) "$(GREEN)Results can be viewed by opening docs/html/index.html in a web browser$(NO_COL)\n" @@ -429,7 +454,7 @@ fast64_blender: distclean: distclean_assets $(RM) -r $(BUILD_DIR_BASE) - ./extract_assets.py --clean + $(PYTHON) extract_assets.py --clean make -C $(TOOLS_DIR) clean distclean_assets: ; @@ -449,10 +474,11 @@ DUMMY != mkdir -p $(ALL_DIRS) # RGBA32, RGBA16, IA16, IA8, IA4, IA1, I8, I4 $(BUILD_DIR)/%: %.png - $(N64GRAPHICS) -i $@ -g $< -f $(lastword $(subst ., ,$@)) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -f $(lastword $(subst ., ,$@)) $(BUILD_DIR)/textures/%.mio0: $(BUILD_DIR)/textures/% - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ ASSET_INCLUDES := $(shell find $(ASSET_DIR)/include -type f -name "*.mk") @@ -474,14 +500,14 @@ $(BUILD_DIR)/%.mio0.o: $(BUILD_DIR)/%.mio0.s $(BUILD_DIR)/%.mio0.s: $(BUILD_DIR)/%.mio0 $(call print,Generating mio0 asm:,$<,$@) - $(PRINT) ".section .data\n\n.balign 4\n\n.incbin \"$<\"\n" > $@ + $(V)$(PRINT) ".section .data\n\n.balign 4\n\n.incbin \"$<\"\n" > $@ $(BUILD_DIR)/src/crash_screen.o: src/crash_screen.c @$(PRINT) "$(GREEN)Compiling Crash Screen: $(BLUE)$@ $(NO_COL)\n" $(V)$(N64GRAPHICS) -i $(BUILD_DIR)/textures/crash_screen/crash_screen_font.ia1.inc.c -g textures/crash_screen/crash_screen_font.ia1.png -f ia1 -s u8 @$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $< $(V)$(CC) -c $(CFLAGS) -o $@ $< - $(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@ + $(V)$(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@ #==============================================================================# # Common Textures Segment Generation # @@ -493,10 +519,12 @@ TEXTURE_FILES_TLUT := $(foreach dir,$(TEXTURE_DIRS)/tlut,$(subst .png, , $(wildc $(TEXTURE_FILES): + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" $(V)$(N64GRAPHICS) -i $(BUILD_DIR)/$@.inc.c -g $@.png -f $(lastword $(subst ., ,$@)) -s u8 # TLUT $(TEXTURE_FILES_TLUT): + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" $(V)$(N64GRAPHICS) -i $(BUILD_DIR)/$@.inc.c -g $@.png -f $(lastword $(subst ., ,$@)) -s u8 -c $(lastword $(subst ., ,$(subst .$(lastword $(subst ., ,$(TEXTURE_FILES_TLUT))), ,$(TEXTURE_FILES_TLUT)))) -p $(BUILD_DIR)/$@.tlut.inc.c # common textures @@ -504,7 +532,7 @@ $(BUILD_DIR)/assets/code/common_data/common_data.o: assets/code/common_data/comm @$(PRINT) "$(GREEN)Compiling Common Textures: $(BLUE)$@ $(NO_COL)\n" @$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $< $(V)$(CC) -c $(CFLAGS) -o $@ $< - $(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@ + $(V)$(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@ @@ -556,7 +584,7 @@ COURSE_GEOGRAPHY_TARGETS := $(foreach dir,$(COURSE_DIRS),$(BUILD_DIR)/$(dir)/cou # Course vertices and displaylists are included together due to no alignment between the two files. %/course_geography.mio0.s: %/course_vertices.inc.mio0 %/course_displaylists_packed.inc.bin - $(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_vertex\n\n.incbin \"$(@D)/course_vertices.inc.mio0\"\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_packed\n\n.incbin \"$(@D)/course_displaylists_packed.inc.bin\"\n\n.balign 0x10\n" > $@ + $(V)$(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_vertex\n\n.incbin \"$(@D)/course_vertices.inc.mio0\"\n\n.balign 4\n\nglabel d_course_$(lastword $(subst /, ,$*))_packed\n\n.incbin \"$(@D)/course_displaylists_packed.inc.bin\"\n\n.balign 0x10\n" > $@ @@ -580,7 +608,7 @@ COURSE_DATA_TARGETS := $(foreach dir,$(COURSE_DIRS),$(BUILD_DIR)/$(dir)/course_d $(V)$(MIO0TOOL) -c $< $@ %/course_data.mio0.s: %/course_data.mio0 - $(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@ + $(V)$(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@ #==============================================================================# @@ -588,21 +616,21 @@ COURSE_DATA_TARGETS := $(foreach dir,$(COURSE_DIRS),$(BUILD_DIR)/$(dir)/course_d #==============================================================================# $(BUILD_DIR)/%.jp.c: %.c $(call print,Encoding:,$<,$@) - iconv -t EUC-JP -f UTF-8 $< > $@ + $(V)iconv -t EUC-JP -f UTF-8 $< > $@ $(BUILD_DIR)/%.o: %.c $(call print,Compiling:,$<,$@) $(V)$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $< $(V)$(CC) -c $(CFLAGS) -o $@ $< - $(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@ + $(V)$(PYTHON) $(TOOLS_DIR)/set_o32abi_bit.py $@ $(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c $(call print,Compiling:,$<,$@) - @$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $< + $(V)$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $< $(V)$(CC) -c $(CFLAGS) -o $@ $< $(BUILD_DIR)/%.o: %.s $(MIO0_FILES) $(RAW_TEXTURE_FILES) - $(AS) $(ASFLAGS) -o $@ $< + $(V)$(AS) $(ASFLAGS) -o $@ $< $(EUC_JP_FILES:%.c=$(BUILD_DIR)/%.jp.o): CC := $(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) -- @@ -658,7 +686,7 @@ LDFLAGS += -R $(BUILD_DIR)/assets/code/ceremony_data/ceremony_data.elf $(V)$(MIO0TOOL) -c $< $@ %/ceremony_data.mio0.s: %/ceremony_data.mio0 - $(PRINT) ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel ceremony_data\n\n.incbin \"$<\"\n\n.balign 16\nglabel ceremonyData_end\n" > $@ + $(V)$(PRINT) ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel ceremony_data\n\n.incbin \"$<\"\n\n.balign 16\nglabel ceremonyData_end\n" > $@ #==============================================================================# @@ -678,7 +706,7 @@ LDFLAGS += -R $(BUILD_DIR)/assets/code/startup_logo/startup_logo.elf $(V)$(MIO0TOOL) -c $< $@ %/startup_logo.mio0.s: %/startup_logo.mio0 - $(PRINT) ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel startup_logo\n\n.incbin \"$<\"\n\n.balign 16\n\nglabel startupLogo_end\n" > $@ + $(V)$(PRINT) ".include \"macros.inc\"\n\n.data\n\n.balign 4\n\nglabel startup_logo\n\n.incbin \"$<\"\n\n.balign 16\n\nglabel startupLogo_end\n" > $@ #==============================================================================# # Compile Common Textures # @@ -697,7 +725,7 @@ LDFLAGS += -R $(BUILD_DIR)/assets/code/common_data/common_data.elf $(V)$(MIO0TOOL) -c $< $@ %/common_data.mio0.s: %/common_data.mio0 - $(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@ + $(V)$(PRINT) ".include \"macros.inc\"\n\n.section .data\n\n.balign 4\n\n.incbin \"$<\"\n\n" > $@ @@ -720,13 +748,13 @@ $(ROM): $(ELF) $(call print,Building ROM:,$<,$@) $(V)$(OBJCOPY) $(OBJCOPYFLAGS) $< $(@:.z64=.bin) -O binary $(V)$(N64CKSUM) $(@:.z64=.bin) $@ - $(PYTHON) $(TOOLS_DIR)/doxygen_symbol_gen.py + $(V)$(PYTHON) $(TOOLS_DIR)/doxygen_symbol_gen.py $(BUILD_DIR)/$(TARGET).hex: $(TARGET).z64 - xxd $< > $@ + $(V)xxd $< > $@ $(BUILD_DIR)/$(TARGET).objdump: $(ELF) - $(OBJDUMP) -D $< > $@ + $(V)$(OBJDUMP) -D $< > $@ .PHONY: all clean distclean distclean_assets default diff test load assets diff --git a/asm/eu_nonmatchings/audio_init.s b/asm/eu_nonmatchings/audio_init.s index 653906ad3..75b04b516 100644 --- a/asm/eu_nonmatchings/audio_init.s +++ b/asm/eu_nonmatchings/audio_init.s @@ -26,8 +26,8 @@ glabel audio_init .L800BC128: /* BCD28 800BC128 19E0000C */ blez $t7, .L800BC15C /* BCD2C 800BC12C 3C04803B */ lui $a0, %hi(gGfxSPTaskOutputBufferSize) -/* BCD30 800BC130 3C18803B */ lui $t8, %hi(D_803B71B0) -/* BCD34 800BC134 270271B0 */ addiu $v0, $t8, %lo(D_803B71B0) +/* BCD30 800BC130 3C18803B */ lui $t8, %hi(gAudioHeap) +/* BCD34 800BC134 270271B0 */ addiu $v0, $t8, %lo(gAudioHeap) /* BCD38 800BC138 000FC8C0 */ sll $t9, $t7, 3 /* BCD3C 800BC13C 03221821 */ addu $v1, $t9, $v0 .L800BC140: diff --git a/asm/non_matchings/audio/external/func_800C1C88.s b/asm/non_matchings/audio/external/func_800C1C88.s deleted file mode 100644 index 43c157a1c..000000000 --- a/asm/non_matchings/audio/external/func_800C1C88.s +++ /dev/null @@ -1,73 +0,0 @@ -glabel func_800C1C88 -/* 0C2888 800C1C88 3C098019 */ lui $t1, %hi(D_8018FB90) # $t1, 0x8019 -/* 0C288C 800C1C8C 2529FB90 */ addiu $t1, %lo(D_8018FB90) # addiu $t1, $t1, -0x470 -/* 0C2890 800C1C90 91220000 */ lbu $v0, ($t1) -/* 0C2894 800C1C94 240A003C */ li $t2, 60 -/* 0C2898 800C1C98 3C088019 */ lui $t0, %hi(D_8018EFD8) # $t0, 0x8019 -/* 0C289C 800C1C9C 004A0019 */ multu $v0, $t2 -/* 0C28A0 800C1CA0 2508EFD8 */ addiu $t0, %lo(D_8018EFD8) # addiu $t0, $t0, -0x1028 -/* 0C28A4 800C1CA4 27BDFFF0 */ addiu $sp, $sp, -0x10 -/* 0C28A8 800C1CA8 AFA40010 */ sw $a0, 0x10($sp) -/* 0C28AC 800C1CAC 240100FF */ li $at, 255 -/* 0C28B0 800C1CB0 03A06825 */ move $t5, $sp -/* 0C28B4 800C1CB4 AFA50014 */ sw $a1, 0x14($sp) -/* 0C28B8 800C1CB8 AFA60018 */ sw $a2, 0x18($sp) -/* 0C28BC 800C1CBC 304400FF */ andi $a0, $v0, 0xff -/* 0C28C0 800C1CC0 00007012 */ mflo $t6 -/* 0C28C4 800C1CC4 010E1821 */ addu $v1, $t0, $t6 -/* 0C28C8 800C1CC8 906F002A */ lbu $t7, 0x2a($v1) -/* 0C28CC 800C1CCC 51E10032 */ beql $t7, $at, .L800C1D98 -/* 0C28D0 800C1CD0 00001025 */ move $v0, $zero -/* 0C28D4 800C1CD4 008A0019 */ multu $a0, $t2 -/* 0C28D8 800C1CD8 3C0B8019 */ lui $t3, %hi(D_8018FB91) # $t3, 0x8019 -/* 0C28DC 800C1CDC 256BFB91 */ addiu $t3, %lo(D_8018FB91) # addiu $t3, $t3, -0x46f -/* 0C28E0 800C1CE0 91660000 */ lbu $a2, ($t3) -/* 0C28E4 800C1CE4 240C00FF */ li $t4, 255 -/* 0C28E8 800C1CE8 44802000 */ mtc1 $zero, $f4 -/* 0C28EC 800C1CEC 0000C012 */ mflo $t8 -/* 0C28F0 800C1CF0 01182821 */ addu $a1, $t0, $t8 -/* 0C28F4 800C1CF4 A0A60029 */ sb $a2, 0x29($a1) -/* 0C28F8 800C1CF8 00CA0019 */ multu $a2, $t2 -/* 0C28FC 800C1CFC 0000C812 */ mflo $t9 -/* 0C2900 800C1D00 01197021 */ addu $t6, $t0, $t9 -/* 0C2904 800C1D04 A1C2002A */ sb $v0, 0x2a($t6) -/* 0C2908 800C1D08 906F002A */ lbu $t7, 0x2a($v1) -/* 0C290C 800C1D0C A1620000 */ sb $v0, ($t3) -/* 0C2910 800C1D10 00A01025 */ move $v0, $a1 -/* 0C2914 800C1D14 31F800FF */ andi $t8, $t7, 0xff -/* 0C2918 800C1D18 030A0019 */ multu $t8, $t2 -/* 0C291C 800C1D1C A12F0000 */ sb $t7, ($t1) -/* 0C2920 800C1D20 0000C812 */ mflo $t9 -/* 0C2924 800C1D24 01197021 */ addu $t6, $t0, $t9 -/* 0C2928 800C1D28 A1CC0029 */ sb $t4, 0x29($t6) -/* 0C292C 800C1D2C 8FB80014 */ lw $t8, 0x14($sp) -/* 0C2930 800C1D30 8FAF0014 */ lw $t7, 0x14($sp) -/* 0C2934 800C1D34 8FAE0014 */ lw $t6, 0x14($sp) -/* 0C2938 800C1D38 27190004 */ addiu $t9, $t8, 4 -/* 0C293C 800C1D3C ACB90004 */ sw $t9, 4($a1) -/* 0C2940 800C1D40 ACAF0000 */ sw $t7, ($a1) -/* 0C2944 800C1D44 8FB90018 */ lw $t9, 0x18($sp) -/* 0C2948 800C1D48 25CF0008 */ addiu $t7, $t6, 8 -/* 0C294C 800C1D4C 8FB80018 */ lw $t8, 0x18($sp) -/* 0C2950 800C1D50 ACAF0008 */ sw $t7, 8($a1) -/* 0C2954 800C1D54 8FAF0018 */ lw $t7, 0x18($sp) -/* 0C2958 800C1D58 272E0004 */ addiu $t6, $t9, 4 -/* 0C295C 800C1D5C ACB8000C */ sw $t8, 0xc($a1) -/* 0C2960 800C1D60 ACAE0010 */ sw $t6, 0x10($a1) -/* 0C2964 800C1D64 25F80008 */ addiu $t8, $t7, 8 -/* 0C2968 800C1D68 93B90023 */ lbu $t9, 0x23($sp) -/* 0C296C 800C1D6C 93AE0013 */ lbu $t6, 0x13($sp) -/* 0C2970 800C1D70 8FAF0024 */ lw $t7, 0x24($sp) -/* 0C2974 800C1D74 A0AC002A */ sb $t4, 0x2a($a1) -/* 0C2978 800C1D78 ACB80014 */ sw $t8, 0x14($a1) -/* 0C297C 800C1D7C ACA70024 */ sw $a3, 0x24($a1) -/* 0C2980 800C1D80 E4A4001C */ swc1 $f4, 0x1c($a1) -/* 0C2984 800C1D84 A0B90028 */ sb $t9, 0x28($a1) -/* 0C2988 800C1D88 A0AE0030 */ sb $t6, 0x30($a1) -/* 0C298C 800C1D8C 10000002 */ b .L800C1D98 -/* 0C2990 800C1D90 ACAF0038 */ sw $t7, 0x38($a1) -/* 0C2994 800C1D94 00001025 */ move $v0, $zero -.L800C1D98: -/* 0C2998 800C1D98 01A0E825 */ move $sp, $t5 -/* 0C299C 800C1D9C 03E00008 */ jr $ra -/* 0C29A0 800C1DA0 25BD0010 */ addiu $sp, $t5, 0x10 diff --git a/asm/non_matchings/audio/load/audio_init.s b/asm/non_matchings/audio/load/audio_init.s index 60dee61bd..ca8215680 100644 --- a/asm/non_matchings/audio/load/audio_init.s +++ b/asm/non_matchings/audio/load/audio_init.s @@ -34,8 +34,8 @@ glabel audio_init .L800BC128: /* 0BCD28 800BC128 19E0000C */ blez $t7, .L800BC15C /* 0BCD2C 800BC12C 3C04803B */ lui $a0, %hi(gGfxSPTaskOutputBufferSize) # 0x803b -/* 0BCD30 800BC130 3C18803B */ lui $t8, %hi(D_803B71B0) # 0x803b -/* 0BCD34 800BC134 270271B0 */ addiu $v0, $t8, %lo(D_803B71B0) # 0x71b0 +/* 0BCD30 800BC130 3C18803B */ lui $t8, %hi(gAudioHeap) # 0x803b +/* 0BCD34 800BC134 270271B0 */ addiu $v0, $t8, %lo(gAudioHeap) # 0x71b0 /* 0BCD38 800BC138 000FC8C0 */ sll $t9, $t7, 3 /* 0BCD3C 800BC13C 03221821 */ addu $v1, $t9, $v0 .L800BC140: diff --git a/asm/non_matchings/code_80005FD0/func_800074D4.s b/asm/non_matchings/code_80005FD0/func_800074D4.s deleted file mode 100644 index 748d3493e..000000000 --- a/asm/non_matchings/code_80005FD0/func_800074D4.s +++ /dev/null @@ -1,498 +0,0 @@ -glabel func_800074D4 -/* 0080D4 800074D4 27BDFF70 */ addiu $sp, $sp, -0x90 -/* 0080D8 800074D8 3C048016 */ lui $a0, %hi(gCourseCompletionPercentByRank) # $a0, 0x8016 -/* 0080DC 800074DC 44800000 */ mtc1 $zero, $f0 -/* 0080E0 800074E0 AFB1000C */ sw $s1, 0xc($sp) -/* 0080E4 800074E4 AFB00008 */ sw $s0, 8($sp) -/* 0080E8 800074E8 240A0008 */ li $t2, 8 -/* 0080EC 800074EC 24842FD8 */ addiu $a0, %lo(gCourseCompletionPercentByRank) # addiu $a0, $a0, 0x2fd8 -/* 0080F0 800074F0 24070001 */ li $a3, 1 -/* 0080F4 800074F4 24020009 */ li $v0, 9 -.L800074F8: -/* 0080F8 800074F8 24E70001 */ addiu $a3, $a3, 1 -/* 0080FC 800074FC 00E2082A */ slt $at, $a3, $v0 -/* 008100 80007500 E4800000 */ swc1 $f0, ($a0) -/* 008104 80007504 1420FFFC */ bnez $at, .L800074F8 -/* 008108 80007508 24840004 */ addiu $a0, $a0, 4 -/* 00810C 8000750C 00001025 */ move $v0, $zero -/* 008110 80007510 10000025 */ b .L800075A8 -/* 008114 80007514 00004025 */ move $t0, $zero -/* 008118 80007518 000070C0 */ sll $t6, $zero, 3 -/* 00811C 8000751C 01C07023 */ subu $t6, $t6, $zero -/* 008120 80007520 000E7100 */ sll $t6, $t6, 4 -/* 008124 80007524 01C07023 */ subu $t6, $t6, $zero -/* 008128 80007528 000E7080 */ sll $t6, $t6, 2 -/* 00812C 8000752C 01C07023 */ subu $t6, $t6, $zero -/* 008130 80007530 3C0F800F */ lui $t7, %hi(gPlayers) # $t7, 0x800f -/* 008134 80007534 25EF6990 */ addiu $t7, %lo(gPlayers) # addiu $t7, $t7, 0x6990 -/* 008138 80007538 000E70C0 */ sll $t6, $t6, 3 -/* 00813C 8000753C 3C0C8016 */ lui $t4, %hi(gCourseCompletionPercentByRank) # $t4, 0x8016 -/* 008140 80007540 3C098016 */ lui $t1, %hi(gTimePlayerLastTouchedFinishLine) # $t1, 0x8016 -/* 008144 80007544 2529F898 */ addiu $t1, %lo(gTimePlayerLastTouchedFinishLine) # addiu $t1, $t1, -0x768 -/* 008148 80007548 258C2FD8 */ addiu $t4, %lo(gCourseCompletionPercentByRank) # addiu $t4, $t4, 0x2fd8 -/* 00814C 8000754C 01CF2021 */ addu $a0, $t6, $t7 -/* 008150 80007550 00002825 */ move $a1, $zero -/* 008154 80007554 24070001 */ li $a3, 1 -/* 008158 80007558 27A60068 */ addiu $a2, $sp, 0x68 -.L8000755C: -/* 00815C 8000755C 94980000 */ lhu $t8, ($a0) -/* 008160 80007560 00021880 */ sll $v1, $v0, 2 -/* 008164 80007564 00C37021 */ addu $t6, $a2, $v1 -/* 008168 80007568 33190800 */ andi $t9, $t8, 0x800 -/* 00816C 8000756C 13200009 */ beqz $t9, .L80007594 -/* 008170 80007570 24840DD8 */ addiu $a0, $a0, 0xdd8 -/* 008174 80007574 00087880 */ sll $t7, $t0, 2 -/* 008178 80007578 012FC021 */ addu $t8, $t1, $t7 -/* 00817C 8000757C ADC80000 */ sw $t0, ($t6) -/* 008180 80007580 C7040000 */ lwc1 $f4, ($t8) -/* 008184 80007584 0183C821 */ addu $t9, $t4, $v1 -/* 008188 80007588 24420001 */ addiu $v0, $v0, 1 -/* 00818C 8000758C 46002187 */ neg.s $f6, $f4 -/* 008190 80007590 E7260000 */ swc1 $f6, ($t9) -.L80007594: -/* 008194 80007594 00E04025 */ move $t0, $a3 -/* 008198 80007598 14A7FFF0 */ bne $a1, $a3, .L8000755C -/* 00819C 8000759C 24E70001 */ addiu $a3, $a3, 1 -/* 0081A0 800075A0 240B0008 */ li $t3, 8 -/* 0081A4 800075A4 110B0049 */ beq $t0, $t3, .L800076CC -.L800075A8: -/* 0081A8 800075A8 000870C0 */ sll $t6, $t0, 3 -/* 0081AC 800075AC 01C87023 */ subu $t6, $t6, $t0 -/* 0081B0 800075B0 000E7100 */ sll $t6, $t6, 4 -/* 0081B4 800075B4 01C87023 */ subu $t6, $t6, $t0 -/* 0081B8 800075B8 000E7080 */ sll $t6, $t6, 2 -/* 0081BC 800075BC 01C87023 */ subu $t6, $t6, $t0 -/* 0081C0 800075C0 3C0F800F */ lui $t7, %hi(gPlayers) # $t7, 0x800f -/* 0081C4 800075C4 25EF6990 */ addiu $t7, %lo(gPlayers) # addiu $t7, $t7, 0x6990 -/* 0081C8 800075C8 000E70C0 */ sll $t6, $t6, 3 -/* 0081CC 800075CC 3C098016 */ lui $t1, %hi(gTimePlayerLastTouchedFinishLine) # $t1, 0x8016 -/* 0081D0 800075D0 3C0C8016 */ lui $t4, %hi(gCourseCompletionPercentByRank) # $t4, 0x8016 -/* 0081D4 800075D4 258C2FD8 */ addiu $t4, %lo(gCourseCompletionPercentByRank) # addiu $t4, $t4, 0x2fd8 -/* 0081D8 800075D8 2529F898 */ addiu $t1, %lo(gTimePlayerLastTouchedFinishLine) # addiu $t1, $t1, -0x768 -/* 0081DC 800075DC 01CF2021 */ addu $a0, $t6, $t7 -/* 0081E0 800075E0 27A60068 */ addiu $a2, $sp, 0x68 -.L800075E4: -/* 0081E4 800075E4 94980000 */ lhu $t8, ($a0) -/* 0081E8 800075E8 00021880 */ sll $v1, $v0, 2 -/* 0081EC 800075EC 00C37021 */ addu $t6, $a2, $v1 -/* 0081F0 800075F0 33190800 */ andi $t9, $t8, 0x800 -/* 0081F4 800075F4 13200008 */ beqz $t9, .L80007618 -/* 0081F8 800075F8 00087880 */ sll $t7, $t0, 2 -/* 0081FC 800075FC ADC80000 */ sw $t0, ($t6) -/* 008200 80007600 012FC021 */ addu $t8, $t1, $t7 -/* 008204 80007604 C7080000 */ lwc1 $f8, ($t8) -/* 008208 80007608 0183C821 */ addu $t9, $t4, $v1 -/* 00820C 8000760C 24420001 */ addiu $v0, $v0, 1 -/* 008210 80007610 46004287 */ neg.s $f10, $f8 -/* 008214 80007614 E72A0000 */ swc1 $f10, ($t9) -.L80007618: -/* 008218 80007618 948E0DD8 */ lhu $t6, 0xdd8($a0) -/* 00821C 8000761C 00021880 */ sll $v1, $v0, 2 -/* 008220 80007620 00C3C821 */ addu $t9, $a2, $v1 -/* 008224 80007624 31CF0800 */ andi $t7, $t6, 0x800 -/* 008228 80007628 11E00009 */ beqz $t7, .L80007650 -/* 00822C 8000762C 25180001 */ addiu $t8, $t0, 1 -/* 008230 80007630 00087080 */ sll $t6, $t0, 2 -/* 008234 80007634 012E7821 */ addu $t7, $t1, $t6 -/* 008238 80007638 AF380000 */ sw $t8, ($t9) -/* 00823C 8000763C C5F00004 */ lwc1 $f16, 4($t7) -/* 008240 80007640 0183C021 */ addu $t8, $t4, $v1 -/* 008244 80007644 24420001 */ addiu $v0, $v0, 1 -/* 008248 80007648 46008487 */ neg.s $f18, $f16 -/* 00824C 8000764C E7120000 */ swc1 $f18, ($t8) -.L80007650: -/* 008250 80007650 94991BB0 */ lhu $t9, 0x1bb0($a0) -/* 008254 80007654 00021880 */ sll $v1, $v0, 2 -/* 008258 80007658 00C3C021 */ addu $t8, $a2, $v1 -/* 00825C 8000765C 332E0800 */ andi $t6, $t9, 0x800 -/* 008260 80007660 11C00009 */ beqz $t6, .L80007688 -/* 008264 80007664 250F0002 */ addiu $t7, $t0, 2 -/* 008268 80007668 0008C880 */ sll $t9, $t0, 2 -/* 00826C 8000766C 01397021 */ addu $t6, $t1, $t9 -/* 008270 80007670 AF0F0000 */ sw $t7, ($t8) -/* 008274 80007674 C5C40008 */ lwc1 $f4, 8($t6) -/* 008278 80007678 01837821 */ addu $t7, $t4, $v1 -/* 00827C 8000767C 24420001 */ addiu $v0, $v0, 1 -/* 008280 80007680 46002187 */ neg.s $f6, $f4 -/* 008284 80007684 E5E60000 */ swc1 $f6, ($t7) -.L80007688: -/* 008288 80007688 94982988 */ lhu $t8, 0x2988($a0) -/* 00828C 8000768C 00021880 */ sll $v1, $v0, 2 -/* 008290 80007690 00C37821 */ addu $t7, $a2, $v1 -/* 008294 80007694 33190800 */ andi $t9, $t8, 0x800 -/* 008298 80007698 13200009 */ beqz $t9, .L800076C0 -/* 00829C 8000769C 250E0003 */ addiu $t6, $t0, 3 -/* 0082A0 800076A0 0008C080 */ sll $t8, $t0, 2 -/* 0082A4 800076A4 0138C821 */ addu $t9, $t1, $t8 -/* 0082A8 800076A8 ADEE0000 */ sw $t6, ($t7) -/* 0082AC 800076AC C728000C */ lwc1 $f8, 0xc($t9) -/* 0082B0 800076B0 01837021 */ addu $t6, $t4, $v1 -/* 0082B4 800076B4 24420001 */ addiu $v0, $v0, 1 -/* 0082B8 800076B8 46004287 */ neg.s $f10, $f8 -/* 0082BC 800076BC E5CA0000 */ swc1 $f10, ($t6) -.L800076C0: -/* 0082C0 800076C0 25080004 */ addiu $t0, $t0, 4 -/* 0082C4 800076C4 150AFFC7 */ bne $t0, $t2, .L800075E4 -/* 0082C8 800076C8 24843760 */ addiu $a0, $a0, 0x3760 -.L800076CC: -/* 0082CC 800076CC 3C0C8016 */ lui $t4, %hi(gCourseCompletionPercentByRank) # $t4, 0x8016 -/* 0082D0 800076D0 258C2FD8 */ addiu $t4, %lo(gCourseCompletionPercentByRank) # addiu $t4, $t4, 0x2fd8 -/* 0082D4 800076D4 00004025 */ move $t0, $zero -/* 0082D8 800076D8 27A60068 */ addiu $a2, $sp, 0x68 -/* 0082DC 800076DC 240B0008 */ li $t3, 8 -/* 0082E0 800076E0 10000020 */ b .L80007764 -/* 0082E4 800076E4 00404825 */ move $t1, $v0 -/* 0082E8 800076E8 000078C0 */ sll $t7, $zero, 3 -/* 0082EC 800076EC 01E07823 */ subu $t7, $t7, $zero -/* 0082F0 800076F0 000F7900 */ sll $t7, $t7, 4 -/* 0082F4 800076F4 01E07823 */ subu $t7, $t7, $zero -/* 0082F8 800076F8 000F7880 */ sll $t7, $t7, 2 -/* 0082FC 800076FC 01E07823 */ subu $t7, $t7, $zero -/* 008300 80007700 3C18800F */ lui $t8, %hi(gPlayers) # $t8, 0x800f -/* 008304 80007704 27186990 */ addiu $t8, %lo(gPlayers) # addiu $t8, $t8, 0x6990 -/* 008308 80007708 000F78C0 */ sll $t7, $t7, 3 -/* 00830C 8000770C 3C0D8016 */ lui $t5, %hi(gCourseCompletionPercentByPlayerId) # $t5, 0x8016 -/* 008310 80007710 25AD44D0 */ addiu $t5, %lo(gCourseCompletionPercentByPlayerId) # addiu $t5, $t5, 0x44d0 -/* 008314 80007714 01F82021 */ addu $a0, $t7, $t8 -/* 008318 80007718 00002825 */ move $a1, $zero -/* 00831C 8000771C 24070001 */ li $a3, 1 -.L80007720: -/* 008320 80007720 94990000 */ lhu $t9, ($a0) -/* 008324 80007724 00021880 */ sll $v1, $v0, 2 -/* 008328 80007728 00C37821 */ addu $t7, $a2, $v1 -/* 00832C 8000772C 332E0800 */ andi $t6, $t9, 0x800 -/* 008330 80007730 15C00008 */ bnez $t6, .L80007754 -/* 008334 80007734 24840DD8 */ addiu $a0, $a0, 0xdd8 -/* 008338 80007738 0008C080 */ sll $t8, $t0, 2 -/* 00833C 8000773C 01B8C821 */ addu $t9, $t5, $t8 -/* 008340 80007740 ADE80000 */ sw $t0, ($t7) -/* 008344 80007744 C7300000 */ lwc1 $f16, ($t9) -/* 008348 80007748 01837021 */ addu $t6, $t4, $v1 -/* 00834C 8000774C 24420001 */ addiu $v0, $v0, 1 -/* 008350 80007750 E5D00000 */ swc1 $f16, ($t6) -.L80007754: -/* 008354 80007754 00E04025 */ move $t0, $a3 -/* 008358 80007758 14A7FFF1 */ bne $a1, $a3, .L80007720 -/* 00835C 8000775C 24E70001 */ addiu $a3, $a3, 1 -/* 008360 80007760 110B0042 */ beq $t0, $t3, .L8000786C -.L80007764: -/* 008364 80007764 000878C0 */ sll $t7, $t0, 3 -/* 008368 80007768 01E87823 */ subu $t7, $t7, $t0 -/* 00836C 8000776C 000F7900 */ sll $t7, $t7, 4 -/* 008370 80007770 01E87823 */ subu $t7, $t7, $t0 -/* 008374 80007774 000F7880 */ sll $t7, $t7, 2 -/* 008378 80007778 01E87823 */ subu $t7, $t7, $t0 -/* 00837C 8000777C 3C18800F */ lui $t8, %hi(gPlayers) # $t8, 0x800f -/* 008380 80007780 27186990 */ addiu $t8, %lo(gPlayers) # addiu $t8, $t8, 0x6990 -/* 008384 80007784 000F78C0 */ sll $t7, $t7, 3 -/* 008388 80007788 3C0D8016 */ lui $t5, %hi(gCourseCompletionPercentByPlayerId) # $t5, 0x8016 -/* 00838C 8000778C 25AD44D0 */ addiu $t5, %lo(gCourseCompletionPercentByPlayerId) # addiu $t5, $t5, 0x44d0 -/* 008390 80007790 01F82021 */ addu $a0, $t7, $t8 -.L80007794: -/* 008394 80007794 94990000 */ lhu $t9, ($a0) -/* 008398 80007798 00021880 */ sll $v1, $v0, 2 -/* 00839C 8000779C 00C37821 */ addu $t7, $a2, $v1 -/* 0083A0 800077A0 332E0800 */ andi $t6, $t9, 0x800 -/* 0083A4 800077A4 15C00007 */ bnez $t6, .L800077C4 -/* 0083A8 800077A8 0008C080 */ sll $t8, $t0, 2 -/* 0083AC 800077AC ADE80000 */ sw $t0, ($t7) -/* 0083B0 800077B0 01B8C821 */ addu $t9, $t5, $t8 -/* 0083B4 800077B4 C7320000 */ lwc1 $f18, ($t9) -/* 0083B8 800077B8 01837021 */ addu $t6, $t4, $v1 -/* 0083BC 800077BC 24420001 */ addiu $v0, $v0, 1 -/* 0083C0 800077C0 E5D20000 */ swc1 $f18, ($t6) -.L800077C4: -/* 0083C4 800077C4 948F0DD8 */ lhu $t7, 0xdd8($a0) -/* 0083C8 800077C8 00021880 */ sll $v1, $v0, 2 -/* 0083CC 800077CC 00C37021 */ addu $t6, $a2, $v1 -/* 0083D0 800077D0 31F80800 */ andi $t8, $t7, 0x800 -/* 0083D4 800077D4 17000008 */ bnez $t8, .L800077F8 -/* 0083D8 800077D8 25190001 */ addiu $t9, $t0, 1 -/* 0083DC 800077DC 00087880 */ sll $t7, $t0, 2 -/* 0083E0 800077E0 01AFC021 */ addu $t8, $t5, $t7 -/* 0083E4 800077E4 ADD90000 */ sw $t9, ($t6) -/* 0083E8 800077E8 C7040004 */ lwc1 $f4, 4($t8) -/* 0083EC 800077EC 0183C821 */ addu $t9, $t4, $v1 -/* 0083F0 800077F0 24420001 */ addiu $v0, $v0, 1 -/* 0083F4 800077F4 E7240000 */ swc1 $f4, ($t9) -.L800077F8: -/* 0083F8 800077F8 948E1BB0 */ lhu $t6, 0x1bb0($a0) -/* 0083FC 800077FC 00021880 */ sll $v1, $v0, 2 -/* 008400 80007800 00C3C821 */ addu $t9, $a2, $v1 -/* 008404 80007804 31CF0800 */ andi $t7, $t6, 0x800 -/* 008408 80007808 15E00008 */ bnez $t7, .L8000782C -/* 00840C 8000780C 25180002 */ addiu $t8, $t0, 2 -/* 008410 80007810 00087080 */ sll $t6, $t0, 2 -/* 008414 80007814 01AE7821 */ addu $t7, $t5, $t6 -/* 008418 80007818 AF380000 */ sw $t8, ($t9) -/* 00841C 8000781C C5E60008 */ lwc1 $f6, 8($t7) -/* 008420 80007820 0183C021 */ addu $t8, $t4, $v1 -/* 008424 80007824 24420001 */ addiu $v0, $v0, 1 -/* 008428 80007828 E7060000 */ swc1 $f6, ($t8) -.L8000782C: -/* 00842C 8000782C 94992988 */ lhu $t9, 0x2988($a0) -/* 008430 80007830 00021880 */ sll $v1, $v0, 2 -/* 008434 80007834 00C3C021 */ addu $t8, $a2, $v1 -/* 008438 80007838 332E0800 */ andi $t6, $t9, 0x800 -/* 00843C 8000783C 15C00008 */ bnez $t6, .L80007860 -/* 008440 80007840 250F0003 */ addiu $t7, $t0, 3 -/* 008444 80007844 0008C880 */ sll $t9, $t0, 2 -/* 008448 80007848 01B97021 */ addu $t6, $t5, $t9 -/* 00844C 8000784C AF0F0000 */ sw $t7, ($t8) -/* 008450 80007850 C5C8000C */ lwc1 $f8, 0xc($t6) -/* 008454 80007854 01837821 */ addu $t7, $t4, $v1 -/* 008458 80007858 24420001 */ addiu $v0, $v0, 1 -/* 00845C 8000785C E5E80000 */ swc1 $f8, ($t7) -.L80007860: -/* 008460 80007860 25080004 */ addiu $t0, $t0, 4 -/* 008464 80007864 150AFFCB */ bne $t0, $t2, .L80007794 -/* 008468 80007868 24843760 */ addiu $a0, $a0, 0x3760 -.L8000786C: -/* 00846C 8000786C 252DFFFF */ addiu $t5, $t1, -1 -/* 008470 80007870 19A00047 */ blez $t5, .L80007990 -/* 008474 80007874 00004025 */ move $t0, $zero -/* 008478 80007878 24070001 */ li $a3, 1 -.L8000787C: -/* 00847C 8000787C 00E9082A */ slt $at, $a3, $t1 -/* 008480 80007880 10200040 */ beqz $at, .L80007984 -/* 008484 80007884 00E01025 */ move $v0, $a3 -/* 008488 80007888 3C188016 */ lui $t8, %hi(gCourseCompletionPercentByRank) # $t8, 0x8016 -/* 00848C 8000788C 01276023 */ subu $t4, $t1, $a3 -/* 008490 80007890 31830001 */ andi $v1, $t4, 1 -/* 008494 80007894 27182FD8 */ addiu $t8, %lo(gCourseCompletionPercentByRank) # addiu $t8, $t8, 0x2fd8 -/* 008498 80007898 00082880 */ sll $a1, $t0, 2 -/* 00849C 8000789C 10600013 */ beqz $v1, .L800078EC -/* 0084A0 800078A0 00B82021 */ addu $a0, $a1, $t8 -/* 0084A4 800078A4 00071880 */ sll $v1, $a3, 2 -/* 0084A8 800078A8 00786021 */ addu $t4, $v1, $t8 -/* 0084AC 800078AC C5820000 */ lwc1 $f2, ($t4) -/* 0084B0 800078B0 C4800000 */ lwc1 $f0, ($a0) -/* 0084B4 800078B4 00C34021 */ addu $t0, $a2, $v1 -/* 0084B8 800078B8 00C51021 */ addu $v0, $a2, $a1 -/* 0084BC 800078BC 4602003C */ c.lt.s $f0, $f2 -/* 0084C0 800078C0 00000000 */ nop -/* 0084C4 800078C4 45020008 */ bc1fl .L800078E8 -/* 0084C8 800078C8 24E20001 */ addiu $v0, $a3, 1 -/* 0084CC 800078CC 8D190000 */ lw $t9, ($t0) -/* 0084D0 800078D0 8C500000 */ lw $s0, ($v0) -/* 0084D4 800078D4 E4820000 */ swc1 $f2, ($a0) -/* 0084D8 800078D8 AC590000 */ sw $t9, ($v0) -/* 0084DC 800078DC E5800000 */ swc1 $f0, ($t4) -/* 0084E0 800078E0 AD100000 */ sw $s0, ($t0) -/* 0084E4 800078E4 24E20001 */ addiu $v0, $a3, 1 -.L800078E8: -/* 0084E8 800078E8 10490026 */ beq $v0, $t1, .L80007984 -.L800078EC: -/* 0084EC 800078EC 3C0E8016 */ lui $t6, %hi(gCourseCompletionPercentByRank) # $t6, 0x8016 -/* 0084F0 800078F0 25CE2FD8 */ addiu $t6, %lo(gCourseCompletionPercentByRank) # addiu $t6, $t6, 0x2fd8 -/* 0084F4 800078F4 00021880 */ sll $v1, $v0, 2 -/* 0084F8 800078F8 00097880 */ sll $t7, $t1, 2 -/* 0084FC 800078FC 01EE8821 */ addu $s1, $t7, $t6 -/* 008500 80007900 006E6021 */ addu $t4, $v1, $t6 -.L80007904: -/* 008504 80007904 C4800000 */ lwc1 $f0, ($a0) -/* 008508 80007908 C5820000 */ lwc1 $f2, ($t4) -/* 00850C 8000790C 00C51021 */ addu $v0, $a2, $a1 -/* 008510 80007910 00C34021 */ addu $t0, $a2, $v1 -/* 008514 80007914 4602003C */ c.lt.s $f0, $f2 -/* 008518 80007918 00000000 */ nop -/* 00851C 8000791C 4502000A */ bc1fl .L80007948 -/* 008520 80007920 C5820004 */ lwc1 $f2, 4($t4) -/* 008524 80007924 8D180000 */ lw $t8, ($t0) -/* 008528 80007928 8C500000 */ lw $s0, ($v0) -/* 00852C 8000792C 46000306 */ mov.s $f12, $f0 -/* 008530 80007930 E4820000 */ swc1 $f2, ($a0) -/* 008534 80007934 E58C0000 */ swc1 $f12, ($t4) -/* 008538 80007938 AC580000 */ sw $t8, ($v0) -/* 00853C 8000793C C4800000 */ lwc1 $f0, ($a0) -/* 008540 80007940 AD100000 */ sw $s0, ($t0) -/* 008544 80007944 C5820004 */ lwc1 $f2, 4($t4) -.L80007948: -/* 008548 80007948 00C51021 */ addu $v0, $a2, $a1 -/* 00854C 8000794C 00C34021 */ addu $t0, $a2, $v1 -/* 008550 80007950 4602003C */ c.lt.s $f0, $f2 -/* 008554 80007954 00000000 */ nop -/* 008558 80007958 45020008 */ bc1fl .L8000797C -/* 00855C 8000795C 258C0008 */ addiu $t4, $t4, 8 -/* 008560 80007960 8D190004 */ lw $t9, 4($t0) -/* 008564 80007964 8C500000 */ lw $s0, ($v0) -/* 008568 80007968 E4820000 */ swc1 $f2, ($a0) -/* 00856C 8000796C AC590000 */ sw $t9, ($v0) -/* 008570 80007970 E5800004 */ swc1 $f0, 4($t4) -/* 008574 80007974 AD100004 */ sw $s0, 4($t0) -/* 008578 80007978 258C0008 */ addiu $t4, $t4, 8 -.L8000797C: -/* 00857C 8000797C 1591FFE1 */ bne $t4, $s1, .L80007904 -/* 008580 80007980 24630008 */ addiu $v1, $v1, 8 -.L80007984: -/* 008584 80007984 00E04025 */ move $t0, $a3 -/* 008588 80007988 14EDFFBC */ bne $a3, $t5, .L8000787C -/* 00858C 8000798C 24E70001 */ addiu $a3, $a3, 1 -.L80007990: -/* 008590 80007990 29A10006 */ slti $at, $t5, 6 -/* 008594 80007994 10200049 */ beqz $at, .L80007ABC -/* 008598 80007998 01204025 */ move $t0, $t1 -/* 00859C 8000799C 25270001 */ addiu $a3, $t1, 1 -/* 0085A0 800079A0 2549FFFF */ addiu $t1, $t2, -1 -.L800079A4: -/* 0085A4 800079A4 28E10008 */ slti $at, $a3, 8 -/* 0085A8 800079A8 10200041 */ beqz $at, .L80007AB0 -/* 0085AC 800079AC 00E01025 */ move $v0, $a3 -/* 0085B0 800079B0 240E0008 */ li $t6, 8 -/* 0085B4 800079B4 01C76023 */ subu $t4, $t6, $a3 -/* 0085B8 800079B8 3C0F8016 */ lui $t7, %hi(gCourseCompletionPercentByRank) # $t7, 0x8016 -/* 0085BC 800079BC 25EF2FD8 */ addiu $t7, %lo(gCourseCompletionPercentByRank) # addiu $t7, $t7, 0x2fd8 -/* 0085C0 800079C0 31830001 */ andi $v1, $t4, 1 -/* 0085C4 800079C4 00082880 */ sll $a1, $t0, 2 -/* 0085C8 800079C8 10600013 */ beqz $v1, .L80007A18 -/* 0085CC 800079CC 00AF2021 */ addu $a0, $a1, $t7 -/* 0085D0 800079D0 00071880 */ sll $v1, $a3, 2 -/* 0085D4 800079D4 006F6021 */ addu $t4, $v1, $t7 -/* 0085D8 800079D8 C5820000 */ lwc1 $f2, ($t4) -/* 0085DC 800079DC C4800000 */ lwc1 $f0, ($a0) -/* 0085E0 800079E0 00C34021 */ addu $t0, $a2, $v1 -/* 0085E4 800079E4 00C51021 */ addu $v0, $a2, $a1 -/* 0085E8 800079E8 4602003C */ c.lt.s $f0, $f2 -/* 0085EC 800079EC 00000000 */ nop -/* 0085F0 800079F0 45020008 */ bc1fl .L80007A14 -/* 0085F4 800079F4 24E20001 */ addiu $v0, $a3, 1 -/* 0085F8 800079F8 8D180000 */ lw $t8, ($t0) -/* 0085FC 800079FC 8C500000 */ lw $s0, ($v0) -/* 008600 80007A00 E4820000 */ swc1 $f2, ($a0) -/* 008604 80007A04 AC580000 */ sw $t8, ($v0) -/* 008608 80007A08 E5800000 */ swc1 $f0, ($t4) -/* 00860C 80007A0C AD100000 */ sw $s0, ($t0) -/* 008610 80007A10 24E20001 */ addiu $v0, $a3, 1 -.L80007A14: -/* 008614 80007A14 104B0026 */ beq $v0, $t3, .L80007AB0 -.L80007A18: -/* 008618 80007A18 3C198016 */ lui $t9, %hi(gCourseCompletionPercentByRank) # $t9, 0x8016 -/* 00861C 80007A1C 27392FD8 */ addiu $t9, %lo(gCourseCompletionPercentByRank) # addiu $t9, $t9, 0x2fd8 -/* 008620 80007A20 00021880 */ sll $v1, $v0, 2 -/* 008624 80007A24 000A7080 */ sll $t6, $t2, 2 -/* 008628 80007A28 01D96821 */ addu $t5, $t6, $t9 -/* 00862C 80007A2C 00796021 */ addu $t4, $v1, $t9 -.L80007A30: -/* 008630 80007A30 C4800000 */ lwc1 $f0, ($a0) -/* 008634 80007A34 C5820000 */ lwc1 $f2, ($t4) -/* 008638 80007A38 00C51021 */ addu $v0, $a2, $a1 -/* 00863C 80007A3C 00C34021 */ addu $t0, $a2, $v1 -/* 008640 80007A40 4602003C */ c.lt.s $f0, $f2 -/* 008644 80007A44 00000000 */ nop -/* 008648 80007A48 4502000A */ bc1fl .L80007A74 -/* 00864C 80007A4C C5820004 */ lwc1 $f2, 4($t4) -/* 008650 80007A50 8D0F0000 */ lw $t7, ($t0) -/* 008654 80007A54 8C500000 */ lw $s0, ($v0) -/* 008658 80007A58 46000306 */ mov.s $f12, $f0 -/* 00865C 80007A5C E4820000 */ swc1 $f2, ($a0) -/* 008660 80007A60 E58C0000 */ swc1 $f12, ($t4) -/* 008664 80007A64 AC4F0000 */ sw $t7, ($v0) -/* 008668 80007A68 C4800000 */ lwc1 $f0, ($a0) -/* 00866C 80007A6C AD100000 */ sw $s0, ($t0) -/* 008670 80007A70 C5820004 */ lwc1 $f2, 4($t4) -.L80007A74: -/* 008674 80007A74 00C51021 */ addu $v0, $a2, $a1 -/* 008678 80007A78 00C34021 */ addu $t0, $a2, $v1 -/* 00867C 80007A7C 4602003C */ c.lt.s $f0, $f2 -/* 008680 80007A80 00000000 */ nop -/* 008684 80007A84 45020008 */ bc1fl .L80007AA8 -/* 008688 80007A88 258C0008 */ addiu $t4, $t4, 8 -/* 00868C 80007A8C 8D180004 */ lw $t8, 4($t0) -/* 008690 80007A90 8C500000 */ lw $s0, ($v0) -/* 008694 80007A94 E4820000 */ swc1 $f2, ($a0) -/* 008698 80007A98 AC580000 */ sw $t8, ($v0) -/* 00869C 80007A9C E5800004 */ swc1 $f0, 4($t4) -/* 0086A0 80007AA0 AD100004 */ sw $s0, 4($t0) -/* 0086A4 80007AA4 258C0008 */ addiu $t4, $t4, 8 -.L80007AA8: -/* 0086A8 80007AA8 158DFFE1 */ bne $t4, $t5, .L80007A30 -/* 0086AC 80007AAC 24630008 */ addiu $v1, $v1, 8 -.L80007AB0: -/* 0086B0 80007AB0 00E04025 */ move $t0, $a3 -/* 0086B4 80007AB4 14E9FFBB */ bne $a3, $t1, .L800079A4 -/* 0086B8 80007AB8 24E70001 */ addiu $a3, $a3, 1 -.L80007ABC: -/* 0086BC 80007ABC 3C028016 */ lui $v0, %hi(D_801643E0) # $v0, 0x8016 -/* 0086C0 80007AC0 3C038016 */ lui $v1, %hi(gGPCurrentRaceRankByPlayerId) # $v1, 0x8016 -/* 0086C4 80007AC4 3C048016 */ lui $a0, %hi(gGPCurrentRaceRankByPlayerId + 0x20) # $a0, 0x8016 -/* 0086C8 80007AC8 248443D8 */ addiu $a0, %lo(gGPCurrentRaceRankByPlayerId + 0x20) # addiu $a0, $a0, 0x43d8 -/* 0086CC 80007ACC 246343B8 */ addiu $v1, %lo(gGPCurrentRaceRankByPlayerId) # addiu $v1, $v1, 0x43b8 -/* 0086D0 80007AD0 244243E0 */ addiu $v0, %lo(D_801643E0) # addiu $v0, $v0, 0x43e0 -/* 0086D4 80007AD4 24070001 */ li $a3, 1 -.L80007AD8: -/* 0086D8 80007AD8 8C6E0000 */ lw $t6, ($v1) -/* 0086DC 80007ADC 24630004 */ addiu $v1, $v1, 4 -/* 0086E0 80007AE0 0064082B */ sltu $at, $v1, $a0 -/* 0086E4 80007AE4 24E70001 */ addiu $a3, $a3, 1 -/* 0086E8 80007AE8 24420004 */ addiu $v0, $v0, 4 -/* 0086EC 80007AEC 1420FFFA */ bnez $at, .L80007AD8 -/* 0086F0 80007AF0 AC4EFFFC */ sw $t6, -4($v0) -/* 0086F4 80007AF4 10000017 */ b .L80007B54 -/* 0086F8 80007AF8 00004025 */ move $t0, $zero -/* 0086FC 80007AFC 3C0E8016 */ lui $t6, %hi(gGPCurrentRacePlayerIdByRank) # $t6, 0x8016 -/* 008700 80007B00 25CE4360 */ addiu $t6, %lo(gGPCurrentRacePlayerIdByRank) # addiu $t6, $t6, 0x4360 -/* 008704 80007B04 0000C880 */ sll $t9, $zero, 2 -/* 008708 80007B08 27AF0068 */ addiu $t7, $sp, 0x68 -/* 00870C 80007B0C 0000C040 */ sll $t8, $zero, 1 -/* 008710 80007B10 3C0C8016 */ lui $t4, %hi(gGPCurrentRaceRankByPlayerId) # $t4, 0x8016 -/* 008714 80007B14 258C43B8 */ addiu $t4, %lo(gGPCurrentRaceRankByPlayerId) # addiu $t4, $t4, 0x43b8 -/* 008718 80007B18 030E2021 */ addu $a0, $t8, $t6 -/* 00871C 80007B1C 032F1021 */ addu $v0, $t9, $t7 -/* 008720 80007B20 00002825 */ move $a1, $zero -/* 008724 80007B24 24070001 */ li $a3, 1 -.L80007B28: -/* 008728 80007B28 8C430000 */ lw $v1, ($v0) -/* 00872C 80007B2C 24420004 */ addiu $v0, $v0, 4 -/* 008730 80007B30 24840002 */ addiu $a0, $a0, 2 -/* 008734 80007B34 0003C880 */ sll $t9, $v1, 2 -/* 008738 80007B38 01997821 */ addu $t7, $t4, $t9 -/* 00873C 80007B3C ADE80000 */ sw $t0, ($t7) -/* 008740 80007B40 00E04025 */ move $t0, $a3 -/* 008744 80007B44 A483FFFE */ sh $v1, -2($a0) -/* 008748 80007B48 14A7FFF7 */ bne $a1, $a3, .L80007B28 -/* 00874C 80007B4C 24E70001 */ addiu $a3, $a3, 1 -/* 008750 80007B50 110B0025 */ beq $t0, $t3, .L80007BE8 -.L80007B54: -/* 008754 80007B54 3C0F8016 */ lui $t7, %hi(gGPCurrentRacePlayerIdByRank) # $t7, 0x8016 -/* 008758 80007B58 25EF4360 */ addiu $t7, %lo(gGPCurrentRacePlayerIdByRank) # addiu $t7, $t7, 0x4360 -/* 00875C 80007B5C 3C0C8016 */ lui $t4, %hi(gGPCurrentRaceRankByPlayerId) # $t4, 0x8016 -/* 008760 80007B60 0008C080 */ sll $t8, $t0, 2 -/* 008764 80007B64 27AE0068 */ addiu $t6, $sp, 0x68 -/* 008768 80007B68 0008C840 */ sll $t9, $t0, 1 -/* 00876C 80007B6C 032F2021 */ addu $a0, $t9, $t7 -/* 008770 80007B70 030E1021 */ addu $v0, $t8, $t6 -/* 008774 80007B74 258C43B8 */ addiu $t4, %lo(gGPCurrentRaceRankByPlayerId) # addiu $t4, $t4, 0x43b8 -/* 008778 80007B78 25070001 */ addiu $a3, $t0, 1 -.L80007B7C: -/* 00877C 80007B7C 8C430000 */ lw $v1, ($v0) -/* 008780 80007B80 24420010 */ addiu $v0, $v0, 0x10 -/* 008784 80007B84 24840008 */ addiu $a0, $a0, 8 -/* 008788 80007B88 0003C080 */ sll $t8, $v1, 2 -/* 00878C 80007B8C 01987021 */ addu $t6, $t4, $t8 -/* 008790 80007B90 ADC80000 */ sw $t0, ($t6) -/* 008794 80007B94 8C45FFF4 */ lw $a1, -0xc($v0) -/* 008798 80007B98 25180002 */ addiu $t8, $t0, 2 -/* 00879C 80007B9C A483FFF8 */ sh $v1, -8($a0) -/* 0087A0 80007BA0 0005C880 */ sll $t9, $a1, 2 -/* 0087A4 80007BA4 01997821 */ addu $t7, $t4, $t9 -/* 0087A8 80007BA8 ADE70000 */ sw $a3, ($t7) -/* 0087AC 80007BAC 8C46FFF8 */ lw $a2, -8($v0) -/* 0087B0 80007BB0 250F0003 */ addiu $t7, $t0, 3 -/* 0087B4 80007BB4 25080004 */ addiu $t0, $t0, 4 -/* 0087B8 80007BB8 00067080 */ sll $t6, $a2, 2 -/* 0087BC 80007BBC 018EC821 */ addu $t9, $t4, $t6 -/* 0087C0 80007BC0 AF380000 */ sw $t8, ($t9) -/* 0087C4 80007BC4 8C49FFFC */ lw $t1, -4($v0) -/* 0087C8 80007BC8 24E70004 */ addiu $a3, $a3, 4 -/* 0087CC 80007BCC A485FFFA */ sh $a1, -6($a0) -/* 0087D0 80007BD0 00097080 */ sll $t6, $t1, 2 -/* 0087D4 80007BD4 018EC021 */ addu $t8, $t4, $t6 -/* 0087D8 80007BD8 AF0F0000 */ sw $t7, ($t8) -/* 0087DC 80007BDC A486FFFC */ sh $a2, -4($a0) -/* 0087E0 80007BE0 150AFFE6 */ bne $t0, $t2, .L80007B7C -/* 0087E4 80007BE4 A489FFFE */ sh $t1, -2($a0) -.L80007BE8: -/* 0087E8 80007BE8 8FB00008 */ lw $s0, 8($sp) -/* 0087EC 80007BEC 8FB1000C */ lw $s1, 0xc($sp) -/* 0087F0 80007BF0 03E00008 */ jr $ra -/* 0087F4 80007BF4 27BD0090 */ addiu $sp, $sp, 0x90 diff --git a/asm/non_matchings/code_80005FD0/func_80007D04.s b/asm/non_matchings/code_80005FD0/func_80007D04.s deleted file mode 100644 index 005324184..000000000 --- a/asm/non_matchings/code_80005FD0/func_80007D04.s +++ /dev/null @@ -1,181 +0,0 @@ -glabel func_80007D04 -/* 008904 80007D04 3C0B8016 */ lui $t3, %hi(gGPCurrentRaceRankByPlayerId) # $t3, 0x8016 -/* 008908 80007D08 256B43B8 */ addiu $t3, %lo(gGPCurrentRaceRankByPlayerId) # addiu $t3, $t3, 0x43b8 -/* 00890C 80007D0C 3C038016 */ lui $v1, %hi(D_80163478) # $v1, 0x8016 -/* 008910 80007D10 00041080 */ sll $v0, $a0, 2 -/* 008914 80007D14 84633478 */ lh $v1, %lo(D_80163478)($v1) -/* 008918 80007D18 0162C821 */ addu $t9, $t3, $v0 -/* 00891C 80007D1C 8F2C0000 */ lw $t4, ($t9) -/* 008920 80007D20 3C088016 */ lui $t0, %hi(D_80164450) # $t0, 0x8016 -/* 008924 80007D24 25084450 */ addiu $t0, %lo(D_80164450) # addiu $t0, $t0, 0x4450 -/* 008928 80007D28 00037080 */ sll $t6, $v1, 2 -/* 00892C 80007D2C 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 008930 80007D30 010E7821 */ addu $t7, $t0, $t6 -/* 008934 80007D34 0102C021 */ addu $t8, $t0, $v0 -/* 008938 80007D38 29810002 */ slti $at, $t4, 2 -/* 00893C 80007D3C AFBF0014 */ sw $ra, 0x14($sp) -/* 008940 80007D40 00803825 */ move $a3, $a0 -/* 008944 80007D44 00A03025 */ move $a2, $a1 -/* 008948 80007D48 85E90002 */ lh $t1, 2($t7) -/* 00894C 80007D4C 10200019 */ beqz $at, .L80007DB4 -/* 008950 80007D50 870A0002 */ lh $t2, 2($t8) -/* 008954 80007D54 016E6821 */ addu $t5, $t3, $t6 -/* 008958 80007D58 01497023 */ subu $t6, $t2, $t1 -/* 00895C 80007D5C 000E7C00 */ sll $t7, $t6, 0x10 -/* 008960 80007D60 000FC403 */ sra $t8, $t7, 0x10 -/* 008964 80007D64 2B010191 */ slti $at, $t8, 0x191 -/* 008968 80007D68 14200020 */ bnez $at, .L80007DEC -/* 00896C 80007D6C 85A20002 */ lh $v0, 2($t5) -/* 008970 80007D70 28410006 */ slti $at, $v0, 6 -/* 008974 80007D74 1420001D */ bnez $at, .L80007DEC -/* 008978 80007D78 00A02025 */ move $a0, $a1 -/* 00897C 80007D7C 8CB900BC */ lw $t9, 0xbc($a1) -/* 008980 80007D80 3C01FFDF */ lui $at, (0xFFDFFFFF >> 16) # lui $at, 0xffdf -/* 008984 80007D84 3421FFFF */ ori $at, (0xFFDFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 008988 80007D88 03216024 */ and $t4, $t9, $at -/* 00898C 80007D8C ACAC00BC */ sw $t4, 0xbc($a1) -/* 008990 80007D90 0C00C3F2 */ jal player_speed -/* 008994 80007D94 AFA70030 */ sw $a3, 0x30($sp) -/* 008998 80007D98 8FA70030 */ lw $a3, 0x30($sp) -/* 00899C 80007D9C 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016 -/* 0089A0 80007DA0 240D0004 */ li $t5, 4 -/* 0089A4 80007DA4 00077040 */ sll $t6, $a3, 1 -/* 0089A8 80007DA8 002E0821 */ addu $at, $at, $t6 -/* 0089AC 80007DAC 10000079 */ b .L80007F94 -/* 0089B0 80007DB0 A42D34C0 */ sh $t5, %lo(D_801634C0)($at) # 0x34c0($at) -.L80007DB4: -/* 0089B4 80007DB4 8CCF00BC */ lw $t7, 0xbc($a2) -/* 0089B8 80007DB8 3C010020 */ lui $at, 0x20 -/* 0089BC 80007DBC 00C02025 */ move $a0, $a2 -/* 0089C0 80007DC0 01E1C025 */ or $t8, $t7, $at -/* 0089C4 80007DC4 ACD800BC */ sw $t8, 0xbc($a2) -/* 0089C8 80007DC8 0C00C3F2 */ jal player_speed -/* 0089CC 80007DCC AFA70030 */ sw $a3, 0x30($sp) -/* 0089D0 80007DD0 8FA70030 */ lw $a3, 0x30($sp) -/* 0089D4 80007DD4 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016 -/* 0089D8 80007DD8 24050003 */ li $a1, 3 -/* 0089DC 80007DDC 0007C840 */ sll $t9, $a3, 1 -/* 0089E0 80007DE0 00390821 */ addu $at, $at, $t9 -/* 0089E4 80007DE4 1000006B */ b .L80007F94 -/* 0089E8 80007DE8 A42534C0 */ sh $a1, %lo(D_801634C0)($at) # 0x34c0($at) -.L80007DEC: -/* 0089EC 80007DEC 3C03800E */ lui $v1, %hi(gCCSelection) -/* 0089F0 80007DF0 8C63C548 */ lw $v1, %lo(gCCSelection)($v1) -/* 0089F4 80007DF4 24050003 */ li $a1, 3 -/* 0089F8 80007DF8 24010001 */ li $at, 1 -/* 0089FC 80007DFC 1060000A */ beqz $v1, .L80007E28 -/* 008A00 80007E00 3C0C8016 */ lui $t4, %hi(D_80163344) # $t4, 0x8016 -/* 008A04 80007E04 1061000E */ beq $v1, $at, .L80007E40 -/* 008A08 80007E08 3C0D8016 */ lui $t5, %hi(D_80163344) # $t5, 0x8016 -/* 008A0C 80007E0C 24010002 */ li $at, 2 -/* 008A10 80007E10 10610011 */ beq $v1, $at, .L80007E58 -/* 008A14 80007E14 3C0E8016 */ lui $t6, %hi(D_80163344) # $t6, 0x8016 -/* 008A18 80007E18 10650015 */ beq $v1, $a1, .L80007E70 -/* 008A1C 80007E1C 3C0F8016 */ lui $t7, %hi(D_80163344) # $t7, 0x8016 -/* 008A20 80007E20 10000018 */ b .L80007E84 -/* 008A24 80007E24 00001025 */ move $v0, $zero -.L80007E28: -/* 008A28 80007E28 958C3344 */ lhu $t4, %lo(D_80163344)($t4) -/* 008A2C 80007E2C 00001025 */ move $v0, $zero -/* 008A30 80007E30 54EC0015 */ bnel $a3, $t4, .L80007E88 -/* 008A34 80007E34 0149082A */ slt $at, $t2, $t1 -/* 008A38 80007E38 10000012 */ b .L80007E84 -/* 008A3C 80007E3C 24020014 */ li $v0, 20 -.L80007E40: -/* 008A40 80007E40 95AD3344 */ lhu $t5, %lo(D_80163344)($t5) -/* 008A44 80007E44 24020008 */ li $v0, 8 -/* 008A48 80007E48 54ED000F */ bnel $a3, $t5, .L80007E88 -/* 008A4C 80007E4C 0149082A */ slt $at, $t2, $t1 -/* 008A50 80007E50 1000000C */ b .L80007E84 -/* 008A54 80007E54 24020018 */ li $v0, 24 -.L80007E58: -/* 008A58 80007E58 95CE3344 */ lhu $t6, %lo(D_80163344)($t6) -/* 008A5C 80007E5C 24020012 */ li $v0, 18 -/* 008A60 80007E60 54EE0009 */ bnel $a3, $t6, .L80007E88 -/* 008A64 80007E64 0149082A */ slt $at, $t2, $t1 -/* 008A68 80007E68 10000006 */ b .L80007E84 -/* 008A6C 80007E6C 24020024 */ li $v0, 36 -.L80007E70: -/* 008A70 80007E70 95EF3344 */ lhu $t7, %lo(D_80163344)($t7) -/* 008A74 80007E74 24020008 */ li $v0, 8 -/* 008A78 80007E78 54EF0003 */ bnel $a3, $t7, .L80007E88 -/* 008A7C 80007E7C 0149082A */ slt $at, $t2, $t1 -/* 008A80 80007E80 24020018 */ li $v0, 24 -.L80007E84: -/* 008A84 80007E84 0149082A */ slt $at, $t2, $t1 -.L80007E88: -/* 008A88 80007E88 1020000F */ beqz $at, .L80007EC8 -/* 008A8C 80007E8C 01227021 */ addu $t6, $t1, $v0 -/* 008A90 80007E90 8CD800BC */ lw $t8, 0xbc($a2) -/* 008A94 80007E94 3C010020 */ lui $at, 0x20 -/* 008A98 80007E98 00C02025 */ move $a0, $a2 -/* 008A9C 80007E9C 0301C825 */ or $t9, $t8, $at -/* 008AA0 80007EA0 ACD900BC */ sw $t9, 0xbc($a2) -/* 008AA4 80007EA4 0C00C3F2 */ jal player_speed -/* 008AA8 80007EA8 AFA70030 */ sw $a3, 0x30($sp) -/* 008AAC 80007EAC 8FA70030 */ lw $a3, 0x30($sp) -/* 008AB0 80007EB0 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016 -/* 008AB4 80007EB4 240C0001 */ li $t4, 1 -/* 008AB8 80007EB8 00076840 */ sll $t5, $a3, 1 -/* 008ABC 80007EBC 002D0821 */ addu $at, $at, $t5 -/* 008AC0 80007EC0 10000034 */ b .L80007F94 -/* 008AC4 80007EC4 A42C34C0 */ sh $t4, %lo(D_801634C0)($at) # 0x34c0($at) -.L80007EC8: -/* 008AC8 80007EC8 25CF0032 */ addiu $t7, $t6, 0x32 -/* 008ACC 80007ECC 014F082A */ slt $at, $t2, $t7 -/* 008AD0 80007ED0 10200010 */ beqz $at, .L80007F14 -/* 008AD4 80007ED4 00071040 */ sll $v0, $a3, 1 -/* 008AD8 80007ED8 8CD800BC */ lw $t8, 0xbc($a2) -/* 008ADC 80007EDC 3C01FFDF */ lui $at, (0xFFDFFFFF >> 16) # lui $at, 0xffdf -/* 008AE0 80007EE0 3421FFFF */ ori $at, (0xFFDFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 008AE4 80007EE4 0301C824 */ and $t9, $t8, $at -/* 008AE8 80007EE8 ACD900BC */ sw $t9, 0xbc($a2) -/* 008AEC 80007EEC AFA70030 */ sw $a3, 0x30($sp) -/* 008AF0 80007EF0 0C00C3F2 */ jal player_speed -/* 008AF4 80007EF4 00C02025 */ move $a0, $a2 -/* 008AF8 80007EF8 8FA70030 */ lw $a3, 0x30($sp) -/* 008AFC 80007EFC 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016 -/* 008B00 80007F00 24050003 */ li $a1, 3 -/* 008B04 80007F04 00076040 */ sll $t4, $a3, 1 -/* 008B08 80007F08 002C0821 */ addu $at, $at, $t4 -/* 008B0C 80007F0C 10000021 */ b .L80007F94 -/* 008B10 80007F10 A42534C0 */ sh $a1, %lo(D_801634C0)($at) # 0x34c0($at) -.L80007F14: -/* 008B14 80007F14 3C0D8016 */ lui $t5, %hi(D_801631E0) # 0x8016 -/* 008B18 80007F18 01A26821 */ addu $t5, $t5, $v0 -/* 008B1C 80007F1C 95AD31E0 */ lhu $t5, %lo(D_801631E0)($t5) # 0x31e0($t5) -/* 008B20 80007F20 3C01FFDF */ lui $at, (0xFFDFFFFF >> 16) # lui $at, 0xffdf -/* 008B24 80007F24 00C02025 */ move $a0, $a2 -/* 008B28 80007F28 15A0000E */ bnez $t5, .L80007F64 -/* 008B2C 80007F2C 3421FFFF */ ori $at, (0xFFDFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 008B30 80007F30 8CCE00BC */ lw $t6, 0xbc($a2) -/* 008B34 80007F34 3C01FFDF */ lui $at, (0xFFDFFFFF >> 16) # lui $at, 0xffdf -/* 008B38 80007F38 3421FFFF */ ori $at, (0xFFDFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 008B3C 80007F3C 01C17824 */ and $t7, $t6, $at -/* 008B40 80007F40 ACCF00BC */ sw $t7, 0xbc($a2) -/* 008B44 80007F44 0C00C3F2 */ jal player_speed -/* 008B48 80007F48 AFA2001C */ sw $v0, 0x1c($sp) -/* 008B4C 80007F4C 8FA2001C */ lw $v0, 0x1c($sp) -/* 008B50 80007F50 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016 -/* 008B54 80007F54 24180002 */ li $t8, 2 -/* 008B58 80007F58 00220821 */ addu $at, $at, $v0 -/* 008B5C 80007F5C 1000000D */ b .L80007F94 -/* 008B60 80007F60 A43834C0 */ sh $t8, %lo(D_801634C0)($at) # 0x34c0($at) -.L80007F64: -/* 008B64 80007F64 8CD900BC */ lw $t9, 0xbc($a2) -/* 008B68 80007F68 00C02025 */ move $a0, $a2 -/* 008B6C 80007F6C 3C053F80 */ lui $a1, 0x3f80 -/* 008B70 80007F70 03216024 */ and $t4, $t9, $at -/* 008B74 80007F74 ACCC00BC */ sw $t4, 0xbc($a2) -/* 008B78 80007F78 0C00C7D2 */ jal func_80031F48 -/* 008B7C 80007F7C AFA2001C */ sw $v0, 0x1c($sp) -/* 008B80 80007F80 8FA2001C */ lw $v0, 0x1c($sp) -/* 008B84 80007F84 3C018016 */ lui $at, %hi(D_801634C0) # 0x8016 -/* 008B88 80007F88 240DFFFF */ li $t5, -1 -/* 008B8C 80007F8C 00220821 */ addu $at, $at, $v0 -/* 008B90 80007F90 A42D34C0 */ sh $t5, %lo(D_801634C0)($at) # 0x34c0($at) -.L80007F94: -/* 008B94 80007F94 8FBF0014 */ lw $ra, 0x14($sp) -/* 008B98 80007F98 27BD0030 */ addiu $sp, $sp, 0x30 -/* 008B9C 80007F9C 03E00008 */ jr $ra -/* 008BA0 80007FA0 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_8000929C.s b/asm/non_matchings/code_80005FD0/func_8000929C.s index 934d47fbf..f31cb788f 100644 --- a/asm/non_matchings/code_80005FD0/func_8000929C.s +++ b/asm/non_matchings/code_80005FD0/func_8000929C.s @@ -38,8 +38,8 @@ glabel func_8000929C /* 009F04 80009304 E7AC004C */ swc1 $f12, 0x4c($sp) /* 009F08 80009308 0C003349 */ jal func_8000CD24 /* 009F0C 8000930C AFB80018 */ sw $t8, 0x18($sp) -/* 009F10 80009310 3C058016 */ lui $a1, %hi(D_80162FCE) # $a1, 0x8016 -/* 009F14 80009314 24A52FCE */ addiu $a1, %lo(D_80162FCE) # addiu $a1, $a1, 0x2fce +/* 009F10 80009310 3C058016 */ lui $a1, %hi(sSomeNearestWaypoint) # $a1, 0x8016 +/* 009F14 80009314 24A52FCE */ addiu $a1, %lo(sSomeNearestWaypoint) # addiu $a1, $a1, 0x2fce /* 009F18 80009318 A4A20000 */ sh $v0, ($a1) /* 009F1C 8000931C 84A70000 */ lh $a3, ($a1) /* 009F20 80009320 8FA80030 */ lw $t0, 0x30($sp) @@ -57,8 +57,8 @@ glabel func_8000929C /* 009F50 80009350 AFA40050 */ sw $a0, 0x50($sp) /* 009F54 80009354 0C0023CE */ jal func_80008F38 /* 009F58 80009358 E7AC004C */ swc1 $f12, 0x4c($sp) -/* 009F5C 8000935C 3C078016 */ lui $a3, %hi(D_80162FCE) # $a3, 0x8016 -/* 009F60 80009360 84E72FCE */ lh $a3, %lo(D_80162FCE)($a3) +/* 009F5C 8000935C 3C078016 */ lui $a3, %hi(sSomeNearestWaypoint) # $a3, 0x8016 +/* 009F60 80009360 84E72FCE */ lh $a3, %lo(sSomeNearestWaypoint)($a3) /* 009F64 80009364 8FA40050 */ lw $a0, 0x50($sp) /* 009F68 80009368 C7AC004C */ lwc1 $f12, 0x4c($sp) .L8000936C: @@ -321,7 +321,7 @@ glabel func_8000929C /* 00A328 80009728 8FAA0054 */ lw $t2, 0x54($sp) .L8000972C: /* 00A32C 8000972C 3C068016 */ lui $a2, %hi(D_80163448) # 0x8016 -/* 00A330 80009730 3C038016 */ lui $v1, %hi(D_80162FCE) # 0x8016 +/* 00A330 80009730 3C038016 */ lui $v1, %hi(sSomeNearestWaypoint) # 0x8016 /* 00A334 80009734 95420000 */ lhu $v0, ($t2) /* 00A338 80009738 304B4000 */ andi $t3, $v0, 0x4000 /* 00A33C 8000973C 11600020 */ beqz $t3, .L800097C0 @@ -335,7 +335,7 @@ glabel func_8000929C /* 00A35C 8000975C 8FA40050 */ lw $a0, 0x50($sp) /* 00A360 80009760 3C068016 */ lui $a2, %hi(D_80163448) # $a2, 0x8016 /* 00A364 80009764 15A00013 */ bnez $t5, .L800097B4 -/* 00A368 80009768 3C038016 */ lui $v1, %hi(D_80162FCE) # $v1, 0x8016 +/* 00A368 80009768 3C038016 */ lui $v1, %hi(sSomeNearestWaypoint) # $v1, 0x8016 /* 00A36C 8000976C 3C0E8019 */ lui $t6, %hi(gPlayerCount) # $t6, 0x8019 /* 00A370 80009770 81CEEDF3 */ lb $t6, %lo(gPlayerCount)($t6) /* 00A374 80009774 24010002 */ li $at, 2 @@ -358,10 +358,10 @@ glabel func_8000929C .L800097B4: /* 00A3B4 800097B4 8CC63448 */ lw $a2, %lo(D_80163448)($a2) /* 00A3B8 800097B8 10000003 */ b .L800097C8 -/* 00A3BC 800097BC 84632FCE */ lh $v1, %lo(D_80162FCE)($v1) +/* 00A3BC 800097BC 84632FCE */ lh $v1, %lo(sSomeNearestWaypoint)($v1) .L800097C0: /* 00A3C0 800097C0 8CC63448 */ lw $a2, %lo(D_80163448)($a2) # 0x3448($a2) -/* 00A3C4 800097C4 84632FCE */ lh $v1, %lo(D_80162FCE)($v1) +/* 00A3C4 800097C4 84632FCE */ lh $v1, %lo(sSomeNearestWaypoint)($v1) .L800097C8: /* 00A3C8 800097C8 0C002E57 */ jal func_8000B95C /* 00A3CC 800097CC 3065FFFF */ andi $a1, $v1, 0xffff diff --git a/asm/non_matchings/code_80005FD0/func_80009B60.s b/asm/non_matchings/code_80005FD0/func_80009B60.s index a33462131..87bb29360 100644 --- a/asm/non_matchings/code_80005FD0/func_80009B60.s +++ b/asm/non_matchings/code_80005FD0/func_80009B60.s @@ -514,8 +514,8 @@ glabel func_80009B60 /* 00AE78 8000A278 1000002C */ b .L8000A32C /* 00AE7C 8000A27C E4700004 */ swc1 $f16, 4($v1) .L8000A280: -/* 00AE80 8000A280 3C0F8016 */ lui $t7, %hi(D_80162FCE) # $t7, 0x8016 -/* 00AE84 8000A284 85EF2FCE */ lh $t7, %lo(D_80162FCE)($t7) +/* 00AE80 8000A280 3C0F8016 */ lui $t7, %hi(sSomeNearestWaypoint) # $t7, 0x8016 +/* 00AE84 8000A284 85EF2FCE */ lh $t7, %lo(sSomeNearestWaypoint)($t7) /* 00AE88 8000A288 3C0B8016 */ lui $t3, %hi(D_801645E0) # $t3, 0x8016 /* 00AE8C 8000A28C 8D6B45E0 */ lw $t3, %lo(D_801645E0)($t3) /* 00AE90 8000A290 000F7040 */ sll $t6, $t7, 1 @@ -560,7 +560,7 @@ glabel func_80009B60 /* 00AF28 8000A328 E5040000 */ swc1 $f4, ($t0) .L8000A32C: /* 00AF2C 8000A32C 8FA400D0 */ lw $a0, 0xd0($sp) -/* 00AF30 8000A330 0C004C77 */ jal func_800131DC +/* 00AF30 8000A330 0C004C77 */ jal check_ai_crossing_distance /* 00AF34 8000A334 AFA8003C */ sw $t0, 0x3c($sp) /* 00AF38 8000A338 0C0034EE */ jal func_8000D3B8 /* 00AF3C 8000A33C 8FA400D0 */ lw $a0, 0xd0($sp) @@ -726,8 +726,8 @@ glabel func_80009B60 /* 00B18C 8000A58C 0002C823 */ negu $t9, $v0 /* 00B190 8000A590 01981821 */ addu $v1, $t4, $t8 /* 00B194 8000A594 A4790000 */ sh $t9, ($v1) -/* 00B198 8000A598 3C0F8016 */ lui $t7, %hi(D_80162FCE) # $t7, 0x8016 -/* 00B19C 8000A59C 85EF2FCE */ lh $t7, %lo(D_80162FCE)($t7) +/* 00B198 8000A598 3C0F8016 */ lui $t7, %hi(sSomeNearestWaypoint) # $t7, 0x8016 +/* 00B19C 8000A59C 85EF2FCE */ lh $t7, %lo(sSomeNearestWaypoint)($t7) /* 00B1A0 8000A5A0 3C0D8016 */ lui $t5, %hi(D_80164430) # $t5, 0x8016 /* 00B1A4 8000A5A4 95AD4430 */ lhu $t5, %lo(D_80164430)($t5) /* 00B1A8 8000A5A8 25EA0002 */ addiu $t2, $t7, 2 @@ -893,18 +893,18 @@ glabel func_80009B60 /* 00B3E8 8000A7E8 10000252 */ b .L8000B134 /* 00B3EC 8000A7EC 8FBF0014 */ lw $ra, 0x14($sp) .L8000A7F0: -/* 00B3F0 8000A7F0 3C058016 */ lui $a1, %hi(D_80162FCE) # $a1, 0x8016 +/* 00B3F0 8000A7F0 3C058016 */ lui $a1, %hi(sSomeNearestWaypoint) # $a1, 0x8016 /* 00B3F4 8000A7F4 254D0014 */ addiu $t5, $t2, 0x14 /* 00B3F8 8000A7F8 AFAD001C */ sw $t5, 0x1c($sp) /* 00B3FC 8000A7FC 0C002DF9 */ jal func_8000B7E4 -/* 00B400 8000A800 94A52FCE */ lhu $a1, %lo(D_80162FCE)($a1) +/* 00B400 8000A800 94A52FCE */ lhu $a1, %lo(sSomeNearestWaypoint)($a1) /* 00B404 8000A804 8FAF0038 */ lw $t7, 0x38($sp) /* 00B408 8000A808 3C0B8016 */ lui $t3, %hi(D_801630B8) # $t3, 0x8016 /* 00B40C 8000A80C 256B30B8 */ addiu $t3, %lo(D_801630B8) # addiu $t3, $t3, 0x30b8 /* 00B410 8000A810 01EB1821 */ addu $v1, $t7, $t3 /* 00B414 8000A814 AC620000 */ sw $v0, ($v1) -/* 00B418 8000A818 3C058016 */ lui $a1, %hi(D_80162FCE) # $a1, 0x8016 -/* 00B41C 8000A81C 94A52FCE */ lhu $a1, %lo(D_80162FCE)($a1) +/* 00B418 8000A818 3C058016 */ lui $a1, %hi(sSomeNearestWaypoint) # $a1, 0x8016 +/* 00B41C 8000A81C 94A52FCE */ lhu $a1, %lo(sSomeNearestWaypoint)($a1) /* 00B420 8000A820 AFA30028 */ sw $v1, 0x28($sp) /* 00B424 8000A824 0C00350E */ jal func_8000D438 /* 00B428 8000A828 8FA400D0 */ lw $a0, 0xd0($sp) @@ -1520,7 +1520,7 @@ glabel func_80009B60 /* 00BD08 8000B108 3C018016 */ lui $at, %hi(D_80163210) /* 00BD0C 8000B10C 002F0821 */ addu $at, $at, $t7 /* 00BD10 8000B110 8FA400D0 */ lw $a0, 0xd0($sp) -/* 00BD14 8000B114 0C004C77 */ jal func_800131DC +/* 00BD14 8000B114 0C004C77 */ jal check_ai_crossing_distance /* 00BD18 8000B118 E4303210 */ swc1 $f16, %lo(D_80163210)($at) /* 00BD1C 8000B11C 3C058016 */ lui $a1, %hi(D_8016320C) # $a1, 0x8016 /* 00BD20 8000B120 8CA5320C */ lw $a1, %lo(D_8016320C)($a1) diff --git a/asm/non_matchings/code_80005FD0/kart_ai_use_item_strategy.s b/asm/non_matchings/code_80005FD0/kart_ai_use_item_strategy.s index e3eec8992..7a18f71db 100644 --- a/asm/non_matchings/code_80005FD0/kart_ai_use_item_strategy.s +++ b/asm/non_matchings/code_80005FD0/kart_ai_use_item_strategy.s @@ -330,7 +330,7 @@ glabel L8001AFD8 /* 01BC94 8001B094 46283280 */ add.d $f10, $f6, $f8 /* 01BC98 8001B098 8D86001C */ lw $a2, 0x1c($t4) /* 01BC9C 8001B09C AFA70028 */ sw $a3, 0x28($sp) -/* 01BCA0 8001B0A0 0C0AB870 */ jal func_802AE1C0 +/* 01BCA0 8001B0A0 0C0AB870 */ jal spawn_actor_on_surface /* 01BCA4 8001B0A4 462053A0 */ cvt.s.d $f14, $f10 /* 01BCA8 8001B0A8 8FA70028 */ lw $a3, 0x28($sp) /* 01BCAC 8001B0AC 3C013F80 */ li $at, 0x3F800000 # 1.000000 @@ -582,7 +582,7 @@ glabel L8001B3B4 /* 01C054 8001B454 E4E00028 */ swc1 $f0, 0x28($a3) /* 01C058 8001B458 E4E0002C */ swc1 $f0, 0x2c($a3) /* 01C05C 8001B45C AFA70028 */ sw $a3, 0x28($sp) -/* 01C060 8001B460 0C0AB870 */ jal func_802AE1C0 +/* 01C060 8001B460 0C0AB870 */ jal spawn_actor_on_surface /* 01C064 8001B464 462033A0 */ cvt.s.d $f14, $f6 /* 01C068 8001B468 8FA70028 */ lw $a3, 0x28($sp) /* 01C06C 8001B46C 3C013F80 */ li $at, 0x3F800000 # 1.000000 @@ -1122,7 +1122,7 @@ glabel L8001BB30 /* 01C7F4 8001BBF4 46249180 */ add.d $f6, $f18, $f4 /* 01C7F8 8001BBF8 8CE60020 */ lw $a2, 0x20($a3) /* 01C7FC 8001BBFC AFA70028 */ sw $a3, 0x28($sp) -/* 01C800 8001BC00 0C0AB870 */ jal func_802AE1C0 +/* 01C800 8001BC00 0C0AB870 */ jal spawn_actor_on_surface /* 01C804 8001BC04 462033A0 */ cvt.s.d $f14, $f6 /* 01C808 8001BC08 8FA70028 */ lw $a3, 0x28($sp) /* 01C80C 8001BC0C C4E8000C */ lwc1 $f8, 0xc($a3) diff --git a/asm/non_matchings/code_80091750/func_80092290.s b/asm/non_matchings/code_80091750/func_80092290.s deleted file mode 100644 index 465469132..000000000 --- a/asm/non_matchings/code_80091750/func_80092290.s +++ /dev/null @@ -1,167 +0,0 @@ -glabel func_80092290 -/* 092E90 80092290 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 092E94 80092294 AFBE0038 */ sw $fp, 0x38($sp) -/* 092E98 80092298 28810004 */ slti $at, $a0, 4 -/* 092E9C 8009229C 00C0F025 */ move $fp, $a2 -/* 092EA0 800922A0 AFBF003C */ sw $ra, 0x3c($sp) -/* 092EA4 800922A4 AFB70034 */ sw $s7, 0x34($sp) -/* 092EA8 800922A8 AFB60030 */ sw $s6, 0x30($sp) -/* 092EAC 800922AC AFB5002C */ sw $s5, 0x2c($sp) -/* 092EB0 800922B0 AFB40028 */ sw $s4, 0x28($sp) -/* 092EB4 800922B4 AFB30024 */ sw $s3, 0x24($sp) -/* 092EB8 800922B8 AFB20020 */ sw $s2, 0x20($sp) -/* 092EBC 800922BC AFB1001C */ sw $s1, 0x1c($sp) -/* 092EC0 800922C0 14200083 */ bnez $at, .L800924D0 -/* 092EC4 800922C4 AFB00018 */ sw $s0, 0x18($sp) -/* 092EC8 800922C8 28810006 */ slti $at, $a0, 6 -/* 092ECC 800922CC 10200080 */ beqz $at, .L800924D0 -/* 092ED0 800922D0 3C0F800E */ lui $t7, %hi(gGlobalTimer) # $t7, 0x800e -/* 092ED4 800922D4 8DEFC54C */ lw $t7, %lo(gGlobalTimer)($t7) -/* 092ED8 800922D8 00047080 */ sll $t6, $a0, 2 -/* 092EDC 800922DC 3C10800F */ lui $s0, %hi(D_800E84C0) # $s0, 0x800f -/* 092EE0 800922E0 05E10004 */ bgez $t7, .L800922F4 -/* 092EE4 800922E4 31F80001 */ andi $t8, $t7, 1 -/* 092EE8 800922E8 13000002 */ beqz $t8, .L800922F4 -/* 092EEC 800922EC 00000000 */ nop -/* 092EF0 800922F0 2718FFFE */ addiu $t8, $t8, -2 -.L800922F4: -/* 092EF4 800922F4 8FCF0000 */ lw $t7, ($fp) -/* 092EF8 800922F8 0018C840 */ sll $t9, $t8, 1 -/* 092EFC 800922FC 01D91021 */ addu $v0, $t6, $t9 -/* 092F00 80092300 25F80010 */ addiu $t8, $t7, 0x10 -/* 092F04 80092304 2B010100 */ slti $at, $t8, 0x100 -/* 092F08 80092308 2442FFFA */ addiu $v0, $v0, -6 -/* 092F0C 8009230C 14200009 */ bnez $at, .L80092334 -/* 092F10 80092310 AFD80000 */ sw $t8, ($fp) -/* 092F14 80092314 AFC00000 */ sw $zero, ($fp) -/* 092F18 80092318 8CB90000 */ lw $t9, ($a1) -/* 092F1C 8009231C 24010003 */ li $at, 3 -/* 092F20 80092320 272F0001 */ addiu $t7, $t9, 1 -/* 092F24 80092324 01E1001A */ div $zero, $t7, $at -/* 092F28 80092328 0000C010 */ mfhi $t8 -/* 092F2C 8009232C ACB80000 */ sw $t8, ($a1) -/* 092F30 80092330 00000000 */ nop -.L80092334: -/* 092F34 80092334 3C17800F */ lui $s7, %hi(D_800E84CC) # $s7, 0x800f -/* 092F38 80092338 26F784CC */ addiu $s7, %lo(D_800E84CC) # addiu $s7, $s7, -0x7b34 -/* 092F3C 8009233C 261084C0 */ addiu $s0, %lo(D_800E84C0) # addiu $s0, $s0, -0x7b40 -/* 092F40 80092340 0002A100 */ sll $s4, $v0, 4 -/* 092F44 80092344 AFA50044 */ sw $a1, 0x44($sp) -/* 092F48 80092348 24160006 */ li $s6, 6 -/* 092F4C 8009234C 24150100 */ li $s5, 256 -.L80092350: -/* 092F50 80092350 0C026455 */ jal segmented_to_virtual_dupe_2 -/* 092F54 80092354 8E040000 */ lw $a0, ($s0) -/* 092F58 80092358 8FAE0044 */ lw $t6, 0x44($sp) -/* 092F5C 8009235C 8FC40000 */ lw $a0, ($fp) -/* 092F60 80092360 00543021 */ addu $a2, $v0, $s4 -/* 092F64 80092364 8DC80000 */ lw $t0, ($t6) -/* 092F68 80092368 02A42823 */ subu $a1, $s5, $a0 -/* 092F6C 8009236C 26100004 */ addiu $s0, $s0, 4 -/* 092F70 80092370 0008C840 */ sll $t9, $t0, 1 -/* 092F74 80092374 27280002 */ addiu $t0, $t9, 2 -/* 092F78 80092378 00087900 */ sll $t7, $t0, 4 -/* 092F7C 8009237C 004F1821 */ addu $v1, $v0, $t7 -/* 092F80 80092380 9078000C */ lbu $t8, 0xc($v1) -/* 092F84 80092384 906E000D */ lbu $t6, 0xd($v1) -/* 092F88 80092388 9079000E */ lbu $t9, 0xe($v1) -/* 092F8C 8009238C 00B80019 */ multu $a1, $t8 -/* 092F90 80092390 906F000F */ lbu $t7, 0xf($v1) -/* 092F94 80092394 01003825 */ move $a3, $t0 -/* 092F98 80092398 00004812 */ mflo $t1 -/* 092F9C 8009239C 00000000 */ nop -/* 092FA0 800923A0 00000000 */ nop -/* 092FA4 800923A4 00AE0019 */ multu $a1, $t6 -/* 092FA8 800923A8 00006012 */ mflo $t4 -/* 092FAC 800923AC 00000000 */ nop -/* 092FB0 800923B0 00000000 */ nop -/* 092FB4 800923B4 00B90019 */ multu $a1, $t9 -/* 092FB8 800923B8 00006812 */ mflo $t5 -/* 092FBC 800923BC 00000000 */ nop -/* 092FC0 800923C0 00000000 */ nop -/* 092FC4 800923C4 00AF0019 */ multu $a1, $t7 -/* 092FC8 800923C8 0000F812 */ mflo $ra -/* 092FCC 800923CC 00000000 */ nop -/* 092FD0 800923D0 00000000 */ nop -/* 092FD4 800923D4 0116001A */ div $zero, $t0, $s6 -/* 092FD8 800923D8 00003810 */ mfhi $a3 -/* 092FDC 800923DC 24E70002 */ addiu $a3, $a3, 2 -/* 092FE0 800923E0 0007C100 */ sll $t8, $a3, 4 -/* 092FE4 800923E4 00581821 */ addu $v1, $v0, $t8 -/* 092FE8 800923E8 906E000C */ lbu $t6, 0xc($v1) -/* 092FEC 800923EC 9079000D */ lbu $t9, 0xd($v1) -/* 092FF0 800923F0 906F000E */ lbu $t7, 0xe($v1) -/* 092FF4 800923F4 008E0019 */ multu $a0, $t6 -/* 092FF8 800923F8 9078000F */ lbu $t8, 0xf($v1) -/* 092FFC 800923FC 16C00002 */ bnez $s6, .L80092408 -/* 093000 80092400 00000000 */ nop -/* 093004 80092404 0007000D */ break 7 -.L80092408: -/* 093008 80092408 2401FFFF */ li $at, -1 -/* 09300C 8009240C 16C10004 */ bne $s6, $at, .L80092420 -/* 093010 80092410 3C018000 */ lui $at, 0x8000 -/* 093014 80092414 15010002 */ bne $t0, $at, .L80092420 -/* 093018 80092418 00000000 */ nop -/* 09301C 8009241C 0006000D */ break 6 -.L80092420: -/* 093020 80092420 00005012 */ mflo $t2 -/* 093024 80092424 012A5821 */ addu $t3, $t1, $t2 -/* 093028 80092428 00000000 */ nop -/* 09302C 8009242C 00990019 */ multu $a0, $t9 -/* 093030 80092430 00008812 */ mflo $s1 -/* 093034 80092434 01911821 */ addu $v1, $t4, $s1 -/* 093038 80092438 00000000 */ nop -/* 09303C 8009243C 008F0019 */ multu $a0, $t7 -/* 093040 80092440 00009012 */ mflo $s2 -/* 093044 80092444 00000000 */ nop -/* 093048 80092448 00000000 */ nop -/* 09304C 8009244C 00980019 */ multu $a0, $t8 -/* 093050 80092450 01B22021 */ addu $a0, $t5, $s2 -/* 093054 80092454 00009812 */ mflo $s3 -/* 093058 80092458 03F32821 */ addu $a1, $ra, $s3 -/* 09305C 8009245C 05610003 */ bgez $t3, .L8009246C -/* 093060 80092460 000B7203 */ sra $t6, $t3, 8 -/* 093064 80092464 256100FF */ addiu $at, $t3, 0xff -/* 093068 80092468 00017203 */ sra $t6, $at, 8 -.L8009246C: -/* 09306C 8009246C 01C05825 */ move $t3, $t6 -/* 093070 80092470 A0CE000C */ sb $t6, 0xc($a2) -/* 093074 80092474 04610003 */ bgez $v1, .L80092484 -/* 093078 80092478 0003CA03 */ sra $t9, $v1, 8 -/* 09307C 8009247C 246100FF */ addiu $at, $v1, 0xff -/* 093080 80092480 0001CA03 */ sra $t9, $at, 8 -.L80092484: -/* 093084 80092484 03201825 */ move $v1, $t9 -/* 093088 80092488 A0D9000D */ sb $t9, 0xd($a2) -/* 09308C 8009248C 04810003 */ bgez $a0, .L8009249C -/* 093090 80092490 00047A03 */ sra $t7, $a0, 8 -/* 093094 80092494 248100FF */ addiu $at, $a0, 0xff -/* 093098 80092498 00017A03 */ sra $t7, $at, 8 -.L8009249C: -/* 09309C 8009249C 01E02025 */ move $a0, $t7 -/* 0930A0 800924A0 A0CF000E */ sb $t7, 0xe($a2) -/* 0930A4 800924A4 04A10003 */ bgez $a1, .L800924B4 -/* 0930A8 800924A8 0005C203 */ sra $t8, $a1, 8 -/* 0930AC 800924AC 24A100FF */ addiu $at, $a1, 0xff -/* 0930B0 800924B0 0001C203 */ sra $t8, $at, 8 -.L800924B4: -/* 0930B4 800924B4 03002825 */ move $a1, $t8 -/* 0930B8 800924B8 A0D8000F */ sb $t8, 0xf($a2) -/* 0930BC 800924BC A0CB001C */ sb $t3, 0x1c($a2) -/* 0930C0 800924C0 A0C3001D */ sb $v1, 0x1d($a2) -/* 0930C4 800924C4 A0C4001E */ sb $a0, 0x1e($a2) -/* 0930C8 800924C8 1617FFA1 */ bne $s0, $s7, .L80092350 -/* 0930CC 800924CC A0D8001F */ sb $t8, 0x1f($a2) -.L800924D0: -/* 0930D0 800924D0 8FBF003C */ lw $ra, 0x3c($sp) -/* 0930D4 800924D4 8FB00018 */ lw $s0, 0x18($sp) -/* 0930D8 800924D8 8FB1001C */ lw $s1, 0x1c($sp) -/* 0930DC 800924DC 8FB20020 */ lw $s2, 0x20($sp) -/* 0930E0 800924E0 8FB30024 */ lw $s3, 0x24($sp) -/* 0930E4 800924E4 8FB40028 */ lw $s4, 0x28($sp) -/* 0930E8 800924E8 8FB5002C */ lw $s5, 0x2c($sp) -/* 0930EC 800924EC 8FB60030 */ lw $s6, 0x30($sp) -/* 0930F0 800924F0 8FB70034 */ lw $s7, 0x34($sp) -/* 0930F4 800924F4 8FBE0038 */ lw $fp, 0x38($sp) -/* 0930F8 800924F8 03E00008 */ jr $ra -/* 0930FC 800924FC 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/code_80091750/func_80095AE0.s b/asm/non_matchings/code_80091750/func_80095AE0.s deleted file mode 100644 index 9d69df18c..000000000 --- a/asm/non_matchings/code_80091750/func_80095AE0.s +++ /dev/null @@ -1,62 +0,0 @@ -glabel func_80095AE0 -/* 0966E0 80095AE0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0966E4 80095AE4 44857000 */ mtc1 $a1, $f14 -/* 0966E8 80095AE8 44876000 */ mtc1 $a3, $f12 -/* 0966EC 80095AEC AFA60020 */ sw $a2, 0x20($sp) -/* 0966F0 80095AF0 24050010 */ li $a1, 16 -/* 0966F4 80095AF4 00001025 */ move $v0, $zero -/* 0966F8 80095AF8 00801825 */ move $v1, $a0 -.L80095AFC: -/* 0966FC 80095AFC 24420004 */ addiu $v0, $v0, 4 -/* 096700 80095B00 AC600000 */ sw $zero, ($v1) -/* 096704 80095B04 AC600004 */ sw $zero, 4($v1) -/* 096708 80095B08 AC600008 */ sw $zero, 8($v1) -/* 09670C 80095B0C AC60000C */ sw $zero, 0xc($v1) -/* 096710 80095B10 1445FFFA */ bne $v0, $a1, .L80095AFC -/* 096714 80095B14 24630010 */ addiu $v1, $v1, 0x10 -/* 096718 80095B18 3C014780 */ li $at, 0x47800000 # 65536.000000 -/* 09671C 80095B1C 44810000 */ mtc1 $at, $f0 -/* 096720 80095B20 C7A80028 */ lwc1 $f8, 0x28($sp) -/* 096724 80095B24 27A20014 */ addiu $v0, $sp, 0x14 -/* 096728 80095B28 46006102 */ mul.s $f4, $f12, $f0 -/* 09672C 80095B2C 27A30010 */ addiu $v1, $sp, 0x10 -/* 096730 80095B30 24050001 */ li $a1, 1 -/* 096734 80095B34 46004282 */ mul.s $f10, $f8, $f0 -/* 096738 80095B38 27A6000C */ addiu $a2, $sp, 0xc -/* 09673C 80095B3C 27A70008 */ addiu $a3, $sp, 8 -/* 096740 80095B40 46007482 */ mul.s $f18, $f14, $f0 -/* 096744 80095B44 4600218D */ trunc.w.s $f6, $f4 -/* 096748 80095B48 4600540D */ trunc.w.s $f16, $f10 -/* 09674C 80095B4C 440F3000 */ mfc1 $t7, $f6 -/* 096750 80095B50 C7A60020 */ lwc1 $f6, 0x20($sp) -/* 096754 80095B54 4600910D */ trunc.w.s $f4, $f18 -/* 096758 80095B58 44198000 */ mfc1 $t9, $f16 -/* 09675C 80095B5C 46003202 */ mul.s $f8, $f6, $f0 -/* 096760 80095B60 AFAF0014 */ sw $t7, 0x14($sp) -/* 096764 80095B64 44092000 */ mfc1 $t1, $f4 -/* 096768 80095B68 AFB90010 */ sw $t9, 0x10($sp) -/* 09676C 80095B6C AFA9000C */ sw $t1, 0xc($sp) -/* 096770 80095B70 4600428D */ trunc.w.s $f10, $f8 -/* 096774 80095B74 440B5000 */ mfc1 $t3, $f10 -/* 096778 80095B78 00000000 */ nop -/* 09677C 80095B7C AFAB0008 */ sw $t3, 8($sp) -/* 096780 80095B80 844C0000 */ lh $t4, ($v0) -/* 096784 80095B84 A48C0000 */ sh $t4, ($a0) -/* 096788 80095B88 846D0000 */ lh $t5, ($v1) -/* 09678C 80095B8C A4850014 */ sh $a1, 0x14($a0) -/* 096790 80095B90 A48D000A */ sh $t5, 0xa($a0) -/* 096794 80095B94 84CE0000 */ lh $t6, ($a2) -/* 096798 80095B98 A48E0018 */ sh $t6, 0x18($a0) -/* 09679C 80095B9C 84EF0000 */ lh $t7, ($a3) -/* 0967A0 80095BA0 A485001E */ sh $a1, 0x1e($a0) -/* 0967A4 80095BA4 A48F001A */ sh $t7, 0x1a($a0) -/* 0967A8 80095BA8 84580002 */ lh $t8, 2($v0) -/* 0967AC 80095BAC A4980020 */ sh $t8, 0x20($a0) -/* 0967B0 80095BB0 84790002 */ lh $t9, 2($v1) -/* 0967B4 80095BB4 A499002A */ sh $t9, 0x2a($a0) -/* 0967B8 80095BB8 84C80002 */ lh $t0, 2($a2) -/* 0967BC 80095BBC A4880038 */ sh $t0, 0x38($a0) -/* 0967C0 80095BC0 84E90002 */ lh $t1, 2($a3) -/* 0967C4 80095BC4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0967C8 80095BC8 03E00008 */ jr $ra -/* 0967CC 80095BCC A489003A */ sh $t1, 0x3a($a0) diff --git a/asm/non_matchings/code_80091750/func_80095E10.s b/asm/non_matchings/code_80091750/func_80095E10.s deleted file mode 100644 index dcf18894a..000000000 --- a/asm/non_matchings/code_80091750/func_80095E10.s +++ /dev/null @@ -1,408 +0,0 @@ -glabel func_80095E10 -/* 096A10 80095E10 27BDFF78 */ addiu $sp, $sp, -0x88 -/* 096A14 80095E14 8FAE00B4 */ lw $t6, 0xb4($sp) -/* 096A18 80095E18 AFBF002C */ sw $ra, 0x2c($sp) -/* 096A1C 80095E1C AFBE0028 */ sw $fp, 0x28($sp) -/* 096A20 80095E20 2DC10002 */ sltiu $at, $t6, 2 -/* 096A24 80095E24 AFB70024 */ sw $s7, 0x24($sp) -/* 096A28 80095E28 AFB60020 */ sw $s6, 0x20($sp) -/* 096A2C 80095E2C AFB5001C */ sw $s5, 0x1c($sp) -/* 096A30 80095E30 AFB40018 */ sw $s4, 0x18($sp) -/* 096A34 80095E34 AFB30014 */ sw $s3, 0x14($sp) -/* 096A38 80095E38 AFB20010 */ sw $s2, 0x10($sp) -/* 096A3C 80095E3C AFB1000C */ sw $s1, 0xc($sp) -/* 096A40 80095E40 AFB00008 */ sw $s0, 8($sp) -/* 096A44 80095E44 AFA5008C */ sw $a1, 0x8c($sp) -/* 096A48 80095E48 AFA60090 */ sw $a2, 0x90($sp) -/* 096A4C 80095E4C AFA70094 */ sw $a3, 0x94($sp) -/* 096A50 80095E50 24080001 */ li $t0, 1 -/* 096A54 80095E54 AFA00068 */ sw $zero, 0x68($sp) -/* 096A58 80095E58 14200007 */ bnez $at, .L80095E78 -/* 096A5C 80095E5C AFA00064 */ sw $zero, 0x64($sp) -/* 096A60 80095E60 8FB800B4 */ lw $t8, 0xb4($sp) -.L80095E64: -/* 096A64 80095E64 00087840 */ sll $t7, $t0, 1 -/* 096A68 80095E68 01E04025 */ move $t0, $t7 -/* 096A6C 80095E6C 01F8082B */ sltu $at, $t7, $t8 -/* 096A70 80095E70 5420FFFC */ bnel $at, $zero, .L80095E64 -/* 096A74 80095E74 8FB800B4 */ lw $t8, 0xb4($sp) -.L80095E78: -/* 096A78 80095E78 24190400 */ li $t9, 1024 -/* 096A7C 80095E7C 0328001A */ div $zero, $t9, $t0 -/* 096A80 80095E80 00001012 */ mflo $v0 -/* 096A84 80095E84 8FA300B8 */ lw $v1, 0xb8($sp) -/* 096A88 80095E88 15000002 */ bnez $t0, .L80095E94 -/* 096A8C 80095E8C 00000000 */ nop -/* 096A90 80095E90 0007000D */ break 7 -.L80095E94: -/* 096A94 80095E94 2401FFFF */ li $at, -1 -/* 096A98 80095E98 15010004 */ bne $t0, $at, .L80095EAC -/* 096A9C 80095E9C 3C018000 */ lui $at, 0x8000 -/* 096AA0 80095EA0 17210002 */ bne $t9, $at, .L80095EAC -/* 096AA4 80095EA4 00000000 */ nop -/* 096AA8 80095EA8 0006000D */ break 6 -.L80095EAC: -/* 096AAC 80095EAC 00403025 */ move $a2, $v0 -/* 096AB0 80095EB0 04410003 */ bgez $v0, .L80095EC0 -/* 096AB4 80095EB4 00027043 */ sra $t6, $v0, 1 -/* 096AB8 80095EB8 24410001 */ addiu $at, $v0, 1 -/* 096ABC 80095EBC 00017043 */ sra $t6, $at, 1 -.L80095EC0: -/* 096AC0 80095EC0 006E082B */ sltu $at, $v1, $t6 -/* 096AC4 80095EC4 50200010 */ beql $at, $zero, .L80095F08 -/* 096AC8 80095EC8 29010002 */ slti $at, $t0, 2 -/* 096ACC 80095ECC 04C10003 */ bgez $a2, .L80095EDC -/* 096AD0 80095ED0 00061043 */ sra $v0, $a2, 1 -/* 096AD4 80095ED4 24C10001 */ addiu $at, $a2, 1 -/* 096AD8 80095ED8 00011043 */ sra $v0, $at, 1 -.L80095EDC: -/* 096ADC 80095EDC 00402825 */ move $a1, $v0 -.L80095EE0: -/* 096AE0 80095EE0 04A10003 */ bgez $a1, .L80095EF0 -/* 096AE4 80095EE4 00051043 */ sra $v0, $a1, 1 -/* 096AE8 80095EE8 24A10001 */ addiu $at, $a1, 1 -/* 096AEC 80095EEC 00011043 */ sra $v0, $at, 1 -.L80095EF0: -/* 096AF0 80095EF0 0062082B */ sltu $at, $v1, $v0 -/* 096AF4 80095EF4 5420FFFA */ bnel $at, $zero, .L80095EE0 -/* 096AF8 80095EF8 00402825 */ move $a1, $v0 -/* 096AFC 80095EFC AFA5006C */ sw $a1, 0x6c($sp) -/* 096B00 80095F00 00A03025 */ move $a2, $a1 -/* 096B04 80095F04 29010002 */ slti $at, $t0, 2 -.L80095F08: -/* 096B08 80095F08 1420000B */ bnez $at, .L80095F38 -/* 096B0C 80095F0C 01001025 */ move $v0, $t0 -.L80095F10: -/* 096B10 80095F10 8FB80068 */ lw $t8, 0x68($sp) -/* 096B14 80095F14 04410003 */ bgez $v0, .L80095F24 -/* 096B18 80095F18 00027843 */ sra $t7, $v0, 1 -/* 096B1C 80095F1C 24410001 */ addiu $at, $v0, 1 -/* 096B20 80095F20 00017843 */ sra $t7, $at, 1 -.L80095F24: -/* 096B24 80095F24 29E10002 */ slti $at, $t7, 2 -/* 096B28 80095F28 27190001 */ addiu $t9, $t8, 1 -/* 096B2C 80095F2C 01E01025 */ move $v0, $t7 -/* 096B30 80095F30 1020FFF7 */ beqz $at, .L80095F10 -/* 096B34 80095F34 AFB90068 */ sw $t9, 0x68($sp) -.L80095F38: -/* 096B38 80095F38 28C10002 */ slti $at, $a2, 2 -/* 096B3C 80095F3C 1420000B */ bnez $at, .L80095F6C -/* 096B40 80095F40 00C01025 */ move $v0, $a2 -.L80095F44: -/* 096B44 80095F44 8FAF0064 */ lw $t7, 0x64($sp) -/* 096B48 80095F48 04410003 */ bgez $v0, .L80095F58 -/* 096B4C 80095F4C 00027043 */ sra $t6, $v0, 1 -/* 096B50 80095F50 24410001 */ addiu $at, $v0, 1 -/* 096B54 80095F54 00017043 */ sra $t6, $at, 1 -.L80095F58: -/* 096B58 80095F58 29C10002 */ slti $at, $t6, 2 -/* 096B5C 80095F5C 25F80001 */ addiu $t8, $t7, 1 -/* 096B60 80095F60 01C01025 */ move $v0, $t6 -/* 096B64 80095F64 1020FFF7 */ beqz $at, .L80095F44 -/* 096B68 80095F68 AFB80064 */ sw $t8, 0x64($sp) -.L80095F6C: -/* 096B6C 80095F6C 8FA500A8 */ lw $a1, 0xa8($sp) -/* 096B70 80095F70 8FB90098 */ lw $t9, 0x98($sp) -/* 096B74 80095F74 8FA20098 */ lw $v0, 0x98($sp) -/* 096B78 80095F78 04A10005 */ bgez $a1, .L80095F90 -/* 096B7C 80095F7C 8FAF00A0 */ lw $t7, 0xa0($sp) -/* 096B80 80095F80 03257023 */ subu $t6, $t9, $a1 -/* 096B84 80095F84 AFAE0098 */ sw $t6, 0x98($sp) -/* 096B88 80095F88 10000008 */ b .L80095FAC -/* 096B8C 80095F8C 00002825 */ move $a1, $zero -.L80095F90: -/* 096B90 80095F90 01E2C023 */ subu $t8, $t7, $v0 -/* 096B94 80095F94 0305C821 */ addu $t9, $t8, $a1 -/* 096B98 80095F98 2B210141 */ slti $at, $t9, 0x141 -/* 096B9C 80095F9C 14200003 */ bnez $at, .L80095FAC -/* 096BA0 80095FA0 00451823 */ subu $v1, $v0, $a1 -/* 096BA4 80095FA4 24630140 */ addiu $v1, $v1, 0x140 -/* 096BA8 80095FA8 AFA300A0 */ sw $v1, 0xa0($sp) -.L80095FAC: -/* 096BAC 80095FAC 8FBF00AC */ lw $ra, 0xac($sp) -/* 096BB0 80095FB0 8FA300A0 */ lw $v1, 0xa0($sp) -/* 096BB4 80095FB4 8FA2009C */ lw $v0, 0x9c($sp) -/* 096BB8 80095FB8 07E10005 */ bgez $ra, .L80095FD0 -/* 096BBC 80095FBC 8FAE00A4 */ lw $t6, 0xa4($sp) -/* 096BC0 80095FC0 8FA2009C */ lw $v0, 0x9c($sp) -/* 096BC4 80095FC4 005F1023 */ subu $v0, $v0, $ra -/* 096BC8 80095FC8 10000008 */ b .L80095FEC -/* 096BCC 80095FCC 0000F825 */ move $ra, $zero -.L80095FD0: -/* 096BD0 80095FD0 01C27823 */ subu $t7, $t6, $v0 -/* 096BD4 80095FD4 01FFC021 */ addu $t8, $t7, $ra -/* 096BD8 80095FD8 2B0100F1 */ slti $at, $t8, 0xf1 -/* 096BDC 80095FDC 14200003 */ bnez $at, .L80095FEC -/* 096BE0 80095FE0 005FC823 */ subu $t9, $v0, $ra -/* 096BE4 80095FE4 272E00F0 */ addiu $t6, $t9, 0xf0 -/* 096BE8 80095FE8 AFAE00A4 */ sw $t6, 0xa4($sp) -.L80095FEC: -/* 096BEC 80095FEC 8FAF0098 */ lw $t7, 0x98($sp) -/* 096BF0 80095FF0 8FB800A4 */ lw $t8, 0xa4($sp) -/* 096BF4 80095FF4 006F082A */ slt $at, $v1, $t7 -/* 096BF8 80095FF8 50200004 */ beql $at, $zero, .L8009600C -/* 096BFC 80095FFC 0302082A */ slt $at, $t8, $v0 -/* 096C00 80096000 100000EF */ b .L800963C0 -/* 096C04 80096004 00801025 */ move $v0, $a0 -/* 096C08 80096008 0302082A */ slt $at, $t8, $v0 -.L8009600C: -/* 096C0C 8009600C 50200004 */ beql $at, $zero, .L80096020 -/* 096C10 80096010 8FB900A4 */ lw $t9, 0xa4($sp) -/* 096C14 80096014 100000EA */ b .L800963C0 -/* 096C18 80096018 00801025 */ move $v0, $a0 -/* 096C1C 8009601C 8FB900A4 */ lw $t9, 0xa4($sp) -.L80096020: -/* 096C20 80096020 AFA5007C */ sw $a1, 0x7c($sp) -/* 096C24 80096024 00409825 */ move $s3, $v0 -/* 096C28 80096028 0059082B */ sltu $at, $v0, $t9 -/* 096C2C 8009602C 502000E4 */ beql $at, $zero, .L800963C0 -/* 096C30 80096030 00801025 */ move $v0, $a0 -/* 096C34 80096034 AFA500A8 */ sw $a1, 0xa8($sp) -.L80096038: -/* 096C38 80096038 8FAF00A4 */ lw $t7, 0xa4($sp) -/* 096C3C 8009603C 00D37021 */ addu $t6, $a2, $s3 -/* 096C40 80096040 AFAE0034 */ sw $t6, 0x34($sp) -/* 096C44 80096044 01EE082B */ sltu $at, $t7, $t6 -/* 096C48 80096048 10200006 */ beqz $at, .L80096064 -/* 096C4C 8009604C 8FB90098 */ lw $t9, 0x98($sp) -/* 096C50 80096050 01F3A023 */ subu $s4, $t7, $s3 -/* 096C54 80096054 528000DA */ beql $s4, $zero, .L800963C0 -/* 096C58 80096058 00801025 */ move $v0, $a0 -/* 096C5C 8009605C 10000003 */ b .L8009606C -/* 096C60 80096060 8FA50098 */ lw $a1, 0x98($sp) -.L80096064: -/* 096C64 80096064 00C0A025 */ move $s4, $a2 -/* 096C68 80096068 8FA50098 */ lw $a1, 0x98($sp) -.L8009606C: -/* 096C6C 8009606C 0323082B */ sltu $at, $t9, $v1 -/* 096C70 80096070 502000CC */ beql $at, $zero, .L800963A4 -/* 096C74 80096074 8FB30034 */ lw $s3, 0x34($sp) -/* 096C78 80096078 AFA300A0 */ sw $v1, 0xa0($sp) -/* 096C7C 8009607C AFA6006C */ sw $a2, 0x6c($sp) -/* 096C80 80096080 AFA80070 */ sw $t0, 0x70($sp) -.L80096084: -/* 096C84 80096084 8FB80070 */ lw $t8, 0x70($sp) -/* 096C88 80096088 8FA300A0 */ lw $v1, 0xa0($sp) -/* 096C8C 8009608C 8FAE006C */ lw $t6, 0x6c($sp) -/* 096C90 80096090 0305A821 */ addu $s5, $t8, $a1 -/* 096C94 80096094 0075082B */ sltu $at, $v1, $s5 -/* 096C98 80096098 10200035 */ beqz $at, .L80096170 -/* 096C9C 8009609C 8FB20070 */ lw $s2, 0x70($sp) -/* 096CA0 800960A0 00659023 */ subu $s2, $v1, $a1 -/* 096CA4 800960A4 16400004 */ bnez $s2, .L800960B8 -/* 096CA8 800960A8 3C01FD00 */ lui $at, 0xfd00 -/* 096CAC 800960AC 03004025 */ move $t0, $t8 -/* 096CB0 800960B0 100000BB */ b .L800963A0 -/* 096CB4 800960B4 01C03025 */ move $a2, $t6 -.L800960B8: -/* 096CB8 800960B8 83A2008F */ lb $v0, 0x8f($sp) -/* 096CBC 800960BC AFA300A0 */ sw $v1, 0xa0($sp) -/* 096CC0 800960C0 8FA30064 */ lw $v1, 0x64($sp) -/* 096CC4 800960C4 304F0007 */ andi $t7, $v0, 7 -/* 096CC8 800960C8 000F1540 */ sll $v0, $t7, 0x15 -/* 096CCC 800960CC 8FAF00B4 */ lw $t7, 0xb4($sp) -/* 096CD0 800960D0 0041C025 */ or $t8, $v0, $at -/* 096CD4 800960D4 3C010010 */ lui $at, 0x10 -/* 096CD8 800960D8 03017025 */ or $t6, $t8, $at -/* 096CDC 800960DC 25F9FFFF */ addiu $t9, $t7, -1 -/* 096CE0 800960E0 8FA60068 */ lw $a2, 0x68($sp) -/* 096CE4 800960E4 33380FFF */ andi $t8, $t9, 0xfff -/* 096CE8 800960E8 3C01F500 */ lui $at, 0xf500 -/* 096CEC 800960EC 00415025 */ or $t2, $v0, $at -/* 096CF0 800960F0 3C010010 */ lui $at, 0x10 -/* 096CF4 800960F4 01D84825 */ or $t1, $t6, $t8 -/* 096CF8 800960F8 01417825 */ or $t7, $t2, $at -/* 096CFC 800960FC 3079000F */ andi $t9, $v1, 0xf -/* 096D00 80096100 30D8000F */ andi $t8, $a2, 0xf -/* 096D04 80096104 00183100 */ sll $a2, $t8, 4 -/* 096D08 80096108 00191B80 */ sll $v1, $t9, 0xe -/* 096D0C 8009610C 3C010700 */ lui $at, 0x700 -/* 096D10 80096110 02744021 */ addu $t0, $s3, $s4 -/* 096D14 80096114 0008C080 */ sll $t8, $t0, 2 -/* 096D18 80096118 0061C825 */ or $t9, $v1, $at -/* 096D1C 8009611C 03266025 */ or $t4, $t9, $a2 -/* 096D20 80096120 33080FFF */ andi $t0, $t8, 0xfff -/* 096D24 80096124 03F48821 */ addu $s1, $ra, $s4 -/* 096D28 80096128 001FB080 */ sll $s6, $ra, 2 -/* 096D2C 8009612C 32D80FFF */ andi $t8, $s6, 0xfff -/* 096D30 80096130 0011C880 */ sll $t9, $s1, 2 -/* 096D34 80096134 33310FFF */ andi $s1, $t9, 0xfff -/* 096D38 80096138 0300B025 */ move $s6, $t8 -/* 096D3C 8009613C 8FB80090 */ lw $t8, 0x90($sp) -/* 096D40 80096140 8FB90094 */ lw $t9, 0x94($sp) -/* 096D44 80096144 01E05025 */ move $t2, $t7 -/* 096D48 80096148 00133880 */ sll $a3, $s3, 2 -/* 096D4C 8009614C 30EE0FFF */ andi $t6, $a3, 0xfff -/* 096D50 80096150 00137940 */ sll $t7, $s3, 5 -/* 096D54 80096154 31F7FFFF */ andi $s7, $t7, 0xffff -/* 096D58 80096158 01C03825 */ move $a3, $t6 -/* 096D5C 8009615C 00187C00 */ sll $t7, $t8, 0x10 -/* 096D60 80096160 332EFFFF */ andi $t6, $t9, 0xffff -/* 096D64 80096164 01EEF025 */ or $fp, $t7, $t6 -/* 096D68 80096168 1000002E */ b .L80096224 -/* 096D6C 8009616C 00668025 */ or $s0, $v1, $a2 -.L80096170: -/* 096D70 80096170 83A2008F */ lb $v0, 0x8f($sp) -/* 096D74 80096174 3C01FD00 */ lui $at, 0xfd00 -/* 096D78 80096178 8FA30064 */ lw $v1, 0x64($sp) -/* 096D7C 8009617C 30580007 */ andi $t8, $v0, 7 -/* 096D80 80096180 00181540 */ sll $v0, $t8, 0x15 -/* 096D84 80096184 8FB800B4 */ lw $t8, 0xb4($sp) -/* 096D88 80096188 00417825 */ or $t7, $v0, $at -/* 096D8C 8009618C 3C010010 */ lui $at, 0x10 -/* 096D90 80096190 01E17025 */ or $t6, $t7, $at -/* 096D94 80096194 2719FFFF */ addiu $t9, $t8, -1 -/* 096D98 80096198 8FA60068 */ lw $a2, 0x68($sp) -/* 096D9C 8009619C 332F0FFF */ andi $t7, $t9, 0xfff -/* 096DA0 800961A0 3C01F500 */ lui $at, 0xf500 -/* 096DA4 800961A4 00415025 */ or $t2, $v0, $at -/* 096DA8 800961A8 3C010010 */ lui $at, 0x10 -/* 096DAC 800961AC 01CF4825 */ or $t1, $t6, $t7 -/* 096DB0 800961B0 0141C025 */ or $t8, $t2, $at -/* 096DB4 800961B4 3079000F */ andi $t9, $v1, 0xf -/* 096DB8 800961B8 30CF000F */ andi $t7, $a2, 0xf -/* 096DBC 800961BC 000F3100 */ sll $a2, $t7, 4 -/* 096DC0 800961C0 00191B80 */ sll $v1, $t9, 0xe -/* 096DC4 800961C4 3C010700 */ lui $at, 0x700 -/* 096DC8 800961C8 02744021 */ addu $t0, $s3, $s4 -/* 096DCC 800961CC 00087880 */ sll $t7, $t0, 2 -/* 096DD0 800961D0 0061C825 */ or $t9, $v1, $at -/* 096DD4 800961D4 03266025 */ or $t4, $t9, $a2 -/* 096DD8 800961D8 31E80FFF */ andi $t0, $t7, 0xfff -/* 096DDC 800961DC 03F48821 */ addu $s1, $ra, $s4 -/* 096DE0 800961E0 001FB080 */ sll $s6, $ra, 2 -/* 096DE4 800961E4 32CF0FFF */ andi $t7, $s6, 0xfff -/* 096DE8 800961E8 0011C880 */ sll $t9, $s1, 2 -/* 096DEC 800961EC 33310FFF */ andi $s1, $t9, 0xfff -/* 096DF0 800961F0 01E0B025 */ move $s6, $t7 -/* 096DF4 800961F4 8FAF0090 */ lw $t7, 0x90($sp) -/* 096DF8 800961F8 8FB90094 */ lw $t9, 0x94($sp) -/* 096DFC 800961FC 03005025 */ move $t2, $t8 -/* 096E00 80096200 00133880 */ sll $a3, $s3, 2 -/* 096E04 80096204 30EE0FFF */ andi $t6, $a3, 0xfff -/* 096E08 80096208 0013C140 */ sll $t8, $s3, 5 -/* 096E0C 8009620C 3317FFFF */ andi $s7, $t8, 0xffff -/* 096E10 80096210 01C03825 */ move $a3, $t6 -/* 096E14 80096214 000FC400 */ sll $t8, $t7, 0x10 -/* 096E18 80096218 332EFFFF */ andi $t6, $t9, 0xffff -/* 096E1C 8009621C 030EF025 */ or $fp, $t8, $t6 -/* 096E20 80096220 00668025 */ or $s0, $v1, $a2 -.L80096224: -/* 096E24 80096224 00801025 */ move $v0, $a0 -/* 096E28 80096228 AC490000 */ sw $t1, ($v0) -/* 096E2C 8009622C 8FAF00B0 */ lw $t7, 0xb0($sp) -/* 096E30 80096230 00B23021 */ addu $a2, $a1, $s2 -/* 096E34 80096234 00C5C823 */ subu $t9, $a2, $a1 -/* 096E38 80096238 0019C040 */ sll $t8, $t9, 1 -/* 096E3C 8009623C 270E0009 */ addiu $t6, $t8, 9 -/* 096E40 80096240 AC4F0004 */ sw $t7, 4($v0) -/* 096E44 80096244 000E78C2 */ srl $t7, $t6, 3 -/* 096E48 80096248 31F901FF */ andi $t9, $t7, 0x1ff -/* 096E4C 8009624C 24840008 */ addiu $a0, $a0, 8 -/* 096E50 80096250 00801825 */ move $v1, $a0 -/* 096E54 80096254 0019C240 */ sll $t8, $t9, 9 -/* 096E58 80096258 01585825 */ or $t3, $t2, $t8 -/* 096E5C 8009625C 00054880 */ sll $t1, $a1, 2 -/* 096E60 80096260 312F0FFF */ andi $t7, $t1, 0xfff -/* 096E64 80096264 24840008 */ addiu $a0, $a0, 8 -/* 096E68 80096268 00806825 */ move $t5, $a0 -/* 096E6C 8009626C 000F4B00 */ sll $t1, $t7, 0xc -/* 096E70 80096270 AC6B0000 */ sw $t3, ($v1) -/* 096E74 80096274 AC6C0004 */ sw $t4, 4($v1) -/* 096E78 80096278 3C0EE600 */ lui $t6, 0xe600 -/* 096E7C 8009627C 3C01F400 */ lui $at, 0xf400 -/* 096E80 80096280 0121C025 */ or $t8, $t1, $at -/* 096E84 80096284 ADAE0000 */ sw $t6, ($t5) -/* 096E88 80096288 00065080 */ sll $t2, $a2, 2 -/* 096E8C 8009628C 314F0FFF */ andi $t7, $t2, 0xfff -/* 096E90 80096290 03077025 */ or $t6, $t8, $a3 -/* 096E94 80096294 24840008 */ addiu $a0, $a0, 8 -/* 096E98 80096298 00801025 */ move $v0, $a0 -/* 096E9C 8009629C 000F5300 */ sll $t2, $t7, 0xc -/* 096EA0 800962A0 3C010700 */ lui $at, 0x700 -/* 096EA4 800962A4 ADA00004 */ sw $zero, 4($t5) -/* 096EA8 800962A8 AC4E0000 */ sw $t6, ($v0) -/* 096EAC 800962AC 0141C025 */ or $t8, $t2, $at -/* 096EB0 800962B0 03087025 */ or $t6, $t8, $t0 -/* 096EB4 800962B4 24840008 */ addiu $a0, $a0, 8 -/* 096EB8 800962B8 00801825 */ move $v1, $a0 -/* 096EBC 800962BC AC4E0004 */ sw $t6, 4($v0) -/* 096EC0 800962C0 24840008 */ addiu $a0, $a0, 8 -/* 096EC4 800962C4 00806025 */ move $t4, $a0 -/* 096EC8 800962C8 3C0FE700 */ lui $t7, 0xe700 -/* 096ECC 800962CC AC6F0000 */ sw $t7, ($v1) -/* 096ED0 800962D0 AC600004 */ sw $zero, 4($v1) -/* 096ED4 800962D4 24840008 */ addiu $a0, $a0, 8 -/* 096ED8 800962D8 3C01F200 */ lui $at, 0xf200 -/* 096EDC 800962DC 0121C825 */ or $t9, $t1, $at -/* 096EE0 800962E0 00801025 */ move $v0, $a0 -/* 096EE4 800962E4 AD900004 */ sw $s0, 4($t4) -/* 096EE8 800962E8 AD8B0000 */ sw $t3, ($t4) -/* 096EEC 800962EC 0327C025 */ or $t8, $t9, $a3 -/* 096EF0 800962F0 01487025 */ or $t6, $t2, $t0 -/* 096EF4 800962F4 AC4E0004 */ sw $t6, 4($v0) -/* 096EF8 800962F8 AC580000 */ sw $t8, ($v0) -/* 096EFC 800962FC 8FAF00A8 */ lw $t7, 0xa8($sp) -/* 096F00 80096300 3C01E400 */ lui $at, 0xe400 -/* 096F04 80096304 24840008 */ addiu $a0, $a0, 8 -/* 096F08 80096308 01F2C821 */ addu $t9, $t7, $s2 -/* 096F0C 8009630C 0019C080 */ sll $t8, $t9, 2 -/* 096F10 80096310 330E0FFF */ andi $t6, $t8, 0xfff -/* 096F14 80096314 000E7B00 */ sll $t7, $t6, 0xc -/* 096F18 80096318 01E1C825 */ or $t9, $t7, $at -/* 096F1C 8009631C 0331C025 */ or $t8, $t9, $s1 -/* 096F20 80096320 00803025 */ move $a2, $a0 -/* 096F24 80096324 ACD80000 */ sw $t8, ($a2) -/* 096F28 80096328 8FA700A8 */ lw $a3, 0xa8($sp) -/* 096F2C 8009632C 24840008 */ addiu $a0, $a0, 8 -/* 096F30 80096330 00801025 */ move $v0, $a0 -/* 096F34 80096334 00077080 */ sll $t6, $a3, 2 -/* 096F38 80096338 31CF0FFF */ andi $t7, $t6, 0xfff -/* 096F3C 8009633C 000FCB00 */ sll $t9, $t7, 0xc -/* 096F40 80096340 0336C025 */ or $t8, $t9, $s6 -/* 096F44 80096344 ACD80004 */ sw $t8, 4($a2) -/* 096F48 80096348 3C0EB300 */ lui $t6, 0xb300 -/* 096F4C 8009634C AC4E0000 */ sw $t6, ($v0) -/* 096F50 80096350 00A0C025 */ move $t8, $a1 -/* 096F54 80096354 00187540 */ sll $t6, $t8, 0x15 -/* 096F58 80096358 01D77825 */ or $t7, $t6, $s7 -/* 096F5C 8009635C 24840008 */ addiu $a0, $a0, 8 -/* 096F60 80096360 00801825 */ move $v1, $a0 -/* 096F64 80096364 AC4F0004 */ sw $t7, 4($v0) -/* 096F68 80096368 3C19B200 */ lui $t9, 0xb200 -/* 096F6C 8009636C AC790000 */ sw $t9, ($v1) -/* 096F70 80096370 AC7E0004 */ sw $fp, 4($v1) -/* 096F74 80096374 8FAE00A0 */ lw $t6, 0xa0($sp) -/* 096F78 80096378 8FB80070 */ lw $t8, 0x70($sp) -/* 096F7C 8009637C 02A02825 */ move $a1, $s5 -/* 096F80 80096380 02AE082B */ sltu $at, $s5, $t6 -/* 096F84 80096384 00F83821 */ addu $a3, $a3, $t8 -/* 096F88 80096388 AFA700A8 */ sw $a3, 0xa8($sp) -/* 096F8C 8009638C 1420FF3D */ bnez $at, .L80096084 -/* 096F90 80096390 24840008 */ addiu $a0, $a0, 8 -/* 096F94 80096394 03004025 */ move $t0, $t8 -/* 096F98 80096398 8FA6006C */ lw $a2, 0x6c($sp) -/* 096F9C 8009639C 01C01825 */ move $v1, $t6 -.L800963A0: -/* 096FA0 800963A0 8FB30034 */ lw $s3, 0x34($sp) -.L800963A4: -/* 096FA4 800963A4 8FB900A4 */ lw $t9, 0xa4($sp) -/* 096FA8 800963A8 8FAF007C */ lw $t7, 0x7c($sp) -/* 096FAC 800963AC 03E6F821 */ addu $ra, $ra, $a2 -/* 096FB0 800963B0 0279082B */ sltu $at, $s3, $t9 -/* 096FB4 800963B4 1420FF20 */ bnez $at, .L80096038 -/* 096FB8 800963B8 AFAF00A8 */ sw $t7, 0xa8($sp) -/* 096FBC 800963BC 00801025 */ move $v0, $a0 -.L800963C0: -/* 096FC0 800963C0 8FBF002C */ lw $ra, 0x2c($sp) -/* 096FC4 800963C4 8FB00008 */ lw $s0, 8($sp) -/* 096FC8 800963C8 8FB1000C */ lw $s1, 0xc($sp) -/* 096FCC 800963CC 8FB20010 */ lw $s2, 0x10($sp) -/* 096FD0 800963D0 8FB30014 */ lw $s3, 0x14($sp) -/* 096FD4 800963D4 8FB40018 */ lw $s4, 0x18($sp) -/* 096FD8 800963D8 8FB5001C */ lw $s5, 0x1c($sp) -/* 096FDC 800963DC 8FB60020 */ lw $s6, 0x20($sp) -/* 096FE0 800963E0 8FB70024 */ lw $s7, 0x24($sp) -/* 096FE4 800963E4 8FBE0028 */ lw $fp, 0x28($sp) -/* 096FE8 800963E8 03E00008 */ jr $ra -/* 096FEC 800963EC 27BD0088 */ addiu $sp, $sp, 0x88 diff --git a/asm/non_matchings/code_80091750/func_800963F0.s b/asm/non_matchings/code_80091750/func_800963F0.s deleted file mode 100644 index 23d8eec75..000000000 --- a/asm/non_matchings/code_80091750/func_800963F0.s +++ /dev/null @@ -1,617 +0,0 @@ -glabel func_800963F0 -/* 096FF0 800963F0 27BDFF68 */ addiu $sp, $sp, -0x98 -/* 096FF4 800963F4 8FAE00CC */ lw $t6, 0xcc($sp) -/* 096FF8 800963F8 AFBF002C */ sw $ra, 0x2c($sp) -/* 096FFC 800963FC AFBE0028 */ sw $fp, 0x28($sp) -/* 097000 80096400 2DC10002 */ sltiu $at, $t6, 2 -/* 097004 80096404 AFB70024 */ sw $s7, 0x24($sp) -/* 097008 80096408 AFB60020 */ sw $s6, 0x20($sp) -/* 09700C 8009640C AFB5001C */ sw $s5, 0x1c($sp) -/* 097010 80096410 AFB40018 */ sw $s4, 0x18($sp) -/* 097014 80096414 AFB30014 */ sw $s3, 0x14($sp) -/* 097018 80096418 AFB20010 */ sw $s2, 0x10($sp) -/* 09701C 8009641C AFB1000C */ sw $s1, 0xc($sp) -/* 097020 80096420 AFB00008 */ sw $s0, 8($sp) -/* 097024 80096424 AFA5009C */ sw $a1, 0x9c($sp) -/* 097028 80096428 AFA600A0 */ sw $a2, 0xa0($sp) -/* 09702C 8009642C AFA700A4 */ sw $a3, 0xa4($sp) -/* 097030 80096430 24080001 */ li $t0, 1 -/* 097034 80096434 AFA00070 */ sw $zero, 0x70($sp) -/* 097038 80096438 14200007 */ bnez $at, .L80096458 -/* 09703C 8009643C AFA0006C */ sw $zero, 0x6c($sp) -/* 097040 80096440 8FB800CC */ lw $t8, 0xcc($sp) -.L80096444: -/* 097044 80096444 00087840 */ sll $t7, $t0, 1 -/* 097048 80096448 01E04025 */ move $t0, $t7 -/* 09704C 8009644C 01F8082B */ sltu $at, $t7, $t8 -/* 097050 80096450 5420FFFC */ bnel $at, $zero, .L80096444 -/* 097054 80096454 8FB800CC */ lw $t8, 0xcc($sp) -.L80096458: -/* 097058 80096458 24190400 */ li $t9, 1024 -/* 09705C 8009645C 0328001A */ div $zero, $t9, $t0 -/* 097060 80096460 00001012 */ mflo $v0 -/* 097064 80096464 8FA300D0 */ lw $v1, 0xd0($sp) -/* 097068 80096468 15000002 */ bnez $t0, .L80096474 -/* 09706C 8009646C 00000000 */ nop -/* 097070 80096470 0007000D */ break 7 -.L80096474: -/* 097074 80096474 2401FFFF */ li $at, -1 -/* 097078 80096478 15010004 */ bne $t0, $at, .L8009648C -/* 09707C 8009647C 3C018000 */ lui $at, 0x8000 -/* 097080 80096480 17210002 */ bne $t9, $at, .L8009648C -/* 097084 80096484 00000000 */ nop -/* 097088 80096488 0006000D */ break 6 -.L8009648C: -/* 09708C 8009648C 00403825 */ move $a3, $v0 -/* 097090 80096490 04410003 */ bgez $v0, .L800964A0 -/* 097094 80096494 00027043 */ sra $t6, $v0, 1 -/* 097098 80096498 24410001 */ addiu $at, $v0, 1 -/* 09709C 8009649C 00017043 */ sra $t6, $at, 1 -.L800964A0: -/* 0970A0 800964A0 006E082B */ sltu $at, $v1, $t6 -/* 0970A4 800964A4 50200010 */ beql $at, $zero, .L800964E8 -/* 0970A8 800964A8 29010002 */ slti $at, $t0, 2 -/* 0970AC 800964AC 04E10003 */ bgez $a3, .L800964BC -/* 0970B0 800964B0 00071043 */ sra $v0, $a3, 1 -/* 0970B4 800964B4 24E10001 */ addiu $at, $a3, 1 -/* 0970B8 800964B8 00011043 */ sra $v0, $at, 1 -.L800964BC: -/* 0970BC 800964BC 00402825 */ move $a1, $v0 -.L800964C0: -/* 0970C0 800964C0 04A10003 */ bgez $a1, .L800964D0 -/* 0970C4 800964C4 00051043 */ sra $v0, $a1, 1 -/* 0970C8 800964C8 24A10001 */ addiu $at, $a1, 1 -/* 0970CC 800964CC 00011043 */ sra $v0, $at, 1 -.L800964D0: -/* 0970D0 800964D0 0062082B */ sltu $at, $v1, $v0 -/* 0970D4 800964D4 5420FFFA */ bnel $at, $zero, .L800964C0 -/* 0970D8 800964D8 00402825 */ move $a1, $v0 -/* 0970DC 800964DC AFA50074 */ sw $a1, 0x74($sp) -/* 0970E0 800964E0 00A03825 */ move $a3, $a1 -/* 0970E4 800964E4 29010002 */ slti $at, $t0, 2 -.L800964E8: -/* 0970E8 800964E8 1420000B */ bnez $at, .L80096518 -/* 0970EC 800964EC 01001025 */ move $v0, $t0 -.L800964F0: -/* 0970F0 800964F0 8FB80070 */ lw $t8, 0x70($sp) -/* 0970F4 800964F4 04410003 */ bgez $v0, .L80096504 -/* 0970F8 800964F8 00027843 */ sra $t7, $v0, 1 -/* 0970FC 800964FC 24410001 */ addiu $at, $v0, 1 -/* 097100 80096500 00017843 */ sra $t7, $at, 1 -.L80096504: -/* 097104 80096504 29E10002 */ slti $at, $t7, 2 -/* 097108 80096508 27190001 */ addiu $t9, $t8, 1 -/* 09710C 8009650C 01E01025 */ move $v0, $t7 -/* 097110 80096510 1020FFF7 */ beqz $at, .L800964F0 -/* 097114 80096514 AFB90070 */ sw $t9, 0x70($sp) -.L80096518: -/* 097118 80096518 28E10002 */ slti $at, $a3, 2 -/* 09711C 8009651C 1420000B */ bnez $at, .L8009654C -/* 097120 80096520 00E01025 */ move $v0, $a3 -.L80096524: -/* 097124 80096524 8FAF006C */ lw $t7, 0x6c($sp) -/* 097128 80096528 04410003 */ bgez $v0, .L80096538 -/* 09712C 8009652C 00027043 */ sra $t6, $v0, 1 -/* 097130 80096530 24410001 */ addiu $at, $v0, 1 -/* 097134 80096534 00017043 */ sra $t6, $at, 1 -.L80096538: -/* 097138 80096538 29C10002 */ slti $at, $t6, 2 -/* 09713C 8009653C 25F80001 */ addiu $t8, $t7, 1 -/* 097140 80096540 01C01025 */ move $v0, $t6 -/* 097144 80096544 1020FFF7 */ beqz $at, .L80096524 -/* 097148 80096548 AFB8006C */ sw $t8, 0x6c($sp) -.L8009654C: -/* 09714C 8009654C 8FBF00C0 */ lw $ra, 0xc0($sp) -/* 097150 80096550 8FB900B0 */ lw $t9, 0xb0($sp) -/* 097154 80096554 8FAF00B8 */ lw $t7, 0xb8($sp) -/* 097158 80096558 07E10006 */ bgez $ra, .L80096574 -/* 09715C 8009655C 8FB800B0 */ lw $t8, 0xb0($sp) -/* 097160 80096560 033F7023 */ subu $t6, $t9, $ra -/* 097164 80096564 AFAE00B0 */ sw $t6, 0xb0($sp) -/* 097168 80096568 0000F825 */ move $ra, $zero -/* 09716C 8009656C 10000017 */ b .L800965CC -/* 097170 80096570 C7A200A8 */ lwc1 $f2, 0xa8($sp) -.L80096574: -/* 097174 80096574 01F8C823 */ subu $t9, $t7, $t8 -/* 097178 80096578 44992000 */ mtc1 $t9, $f4 -/* 09717C 8009657C C7A200A8 */ lwc1 $f2, 0xa8($sp) -/* 097180 80096580 449F5000 */ mtc1 $ra, $f10 -/* 097184 80096584 468021A0 */ cvt.s.w $f6, $f4 -/* 097188 80096588 3C0143A0 */ li $at, 0x43A00000 # 320.000000 -/* 09718C 8009658C 44816000 */ mtc1 $at, $f12 -/* 097190 80096590 46805120 */ cvt.s.w $f4, $f10 -/* 097194 80096594 46023202 */ mul.s $f8, $f6, $f2 -/* 097198 80096598 46082000 */ add.s $f0, $f4, $f8 -/* 09719C 8009659C 4600603C */ c.lt.s $f12, $f0 -/* 0971A0 800965A0 00000000 */ nop -/* 0971A4 800965A4 4502000A */ bc1fl .L800965D0 -/* 0971A8 800965A8 8FA500C4 */ lw $a1, 0xc4($sp) -/* 0971AC 800965AC 448F3000 */ mtc1 $t7, $f6 -/* 0971B0 800965B0 460C0101 */ sub.s $f4, $f0, $f12 -/* 0971B4 800965B4 468032A0 */ cvt.s.w $f10, $f6 -/* 0971B8 800965B8 46045201 */ sub.s $f8, $f10, $f4 -/* 0971BC 800965BC 4600418D */ trunc.w.s $f6, $f8 -/* 0971C0 800965C0 44183000 */ mfc1 $t8, $f6 -/* 0971C4 800965C4 00000000 */ nop -/* 0971C8 800965C8 AFB800B8 */ sw $t8, 0xb8($sp) -.L800965CC: -/* 0971CC 800965CC 8FA500C4 */ lw $a1, 0xc4($sp) -.L800965D0: -/* 0971D0 800965D0 8FA200B4 */ lw $v0, 0xb4($sp) -/* 0971D4 800965D4 8FB900BC */ lw $t9, 0xbc($sp) -/* 0971D8 800965D8 04A30007 */ bgezl $a1, .L800965F8 -/* 0971DC 800965DC 03227823 */ subu $t7, $t9, $v0 -/* 0971E0 800965E0 8FA200B4 */ lw $v0, 0xb4($sp) -/* 0971E4 800965E4 C7AE00AC */ lwc1 $f14, 0xac($sp) -/* 0971E8 800965E8 00451023 */ subu $v0, $v0, $a1 -/* 0971EC 800965EC 10000017 */ b .L8009664C -/* 0971F0 800965F0 00002825 */ move $a1, $zero -/* 0971F4 800965F4 03227823 */ subu $t7, $t9, $v0 -.L800965F8: -/* 0971F8 800965F8 448F4000 */ mtc1 $t7, $f8 -/* 0971FC 800965FC 44855000 */ mtc1 $a1, $f10 -/* 097200 80096600 C7AE00AC */ lwc1 $f14, 0xac($sp) -/* 097204 80096604 468041A0 */ cvt.s.w $f6, $f8 -/* 097208 80096608 3C014370 */ li $at, 0x43700000 # 240.000000 -/* 09720C 8009660C 44816000 */ mtc1 $at, $f12 -/* 097210 80096610 46805120 */ cvt.s.w $f4, $f10 -/* 097214 80096614 460E3282 */ mul.s $f10, $f6, $f14 -/* 097218 80096618 460A2000 */ add.s $f0, $f4, $f10 -/* 09721C 8009661C 4600603C */ c.lt.s $f12, $f0 -/* 097220 80096620 00000000 */ nop -/* 097224 80096624 4502000A */ bc1fl .L80096650 -/* 097228 80096628 8FA300B8 */ lw $v1, 0xb8($sp) -/* 09722C 8009662C 44994000 */ mtc1 $t9, $f8 -/* 097230 80096630 460C0101 */ sub.s $f4, $f0, $f12 -/* 097234 80096634 468041A0 */ cvt.s.w $f6, $f8 -/* 097238 80096638 46043281 */ sub.s $f10, $f6, $f4 -/* 09723C 8009663C 4600520D */ trunc.w.s $f8, $f10 -/* 097240 80096640 44184000 */ mfc1 $t8, $f8 -/* 097244 80096644 00000000 */ nop -/* 097248 80096648 AFB800BC */ sw $t8, 0xbc($sp) -.L8009664C: -/* 09724C 8009664C 8FA300B8 */ lw $v1, 0xb8($sp) -.L80096650: -/* 097250 80096650 8FAF00B0 */ lw $t7, 0xb0($sp) -/* 097254 80096654 8FA600BC */ lw $a2, 0xbc($sp) -/* 097258 80096658 006F082A */ slt $at, $v1, $t7 -/* 09725C 8009665C 50200004 */ beql $at, $zero, .L80096670 -/* 097260 80096660 00C2082A */ slt $at, $a2, $v0 -/* 097264 80096664 10000190 */ b .L80096CA8 -/* 097268 80096668 00801025 */ move $v0, $a0 -/* 09726C 8009666C 00C2082A */ slt $at, $a2, $v0 -.L80096670: -/* 097270 80096670 10200003 */ beqz $at, .L80096680 -/* 097274 80096674 8FB900A0 */ lw $t9, 0xa0($sp) -/* 097278 80096678 1000018B */ b .L80096CA8 -/* 09727C 8009667C 00801025 */ move $v0, $a0 -.L80096680: -/* 097280 80096680 44993000 */ mtc1 $t9, $f6 -/* 097284 80096684 8FAF00A4 */ lw $t7, 0xa4($sp) -/* 097288 80096688 0046082B */ sltu $at, $v0, $a2 -/* 09728C 8009668C 46803120 */ cvt.s.w $f4, $f6 -/* 097290 80096690 448F3000 */ mtc1 $t7, $f6 -/* 097294 80096694 AFBF008C */ sw $ra, 0x8c($sp) -/* 097298 80096698 00409825 */ move $s3, $v0 -/* 09729C 8009669C 46022283 */ div.s $f10, $f4, $f2 -/* 0972A0 800966A0 46803120 */ cvt.s.w $f4, $f6 -/* 0972A4 800966A4 4600520D */ trunc.w.s $f8, $f10 -/* 0972A8 800966A8 460E2283 */ div.s $f10, $f4, $f14 -/* 0972AC 800966AC 44184000 */ mfc1 $t8, $f8 -/* 0972B0 800966B0 00000000 */ nop -/* 0972B4 800966B4 AFB800A0 */ sw $t8, 0xa0($sp) -/* 0972B8 800966B8 4600520D */ trunc.w.s $f8, $f10 -/* 0972BC 800966BC 440E4000 */ mfc1 $t6, $f8 -/* 0972C0 800966C0 10200178 */ beqz $at, .L80096CA4 -/* 0972C4 800966C4 AFAE00A4 */ sw $t6, 0xa4($sp) -/* 0972C8 800966C8 AFA500C4 */ sw $a1, 0xc4($sp) -.L800966CC: -/* 0972CC 800966CC 00F3C021 */ addu $t8, $a3, $s3 -/* 0972D0 800966D0 00D8082B */ sltu $at, $a2, $t8 -/* 0972D4 800966D4 1020000E */ beqz $at, .L80096710 -/* 0972D8 800966D8 AFB80034 */ sw $t8, 0x34($sp) -/* 0972DC 800966DC 00D3F023 */ subu $fp, $a2, $s3 -/* 0972E0 800966E0 53C00171 */ beql $fp, $zero, .L80096CA8 -/* 0972E4 800966E4 00801025 */ move $v0, $a0 -/* 0972E8 800966E8 44872000 */ mtc1 $a3, $f4 -/* 0972EC 800966EC 8FB900C4 */ lw $t9, 0xc4($sp) -/* 0972F0 800966F0 8FA500B0 */ lw $a1, 0xb0($sp) -/* 0972F4 800966F4 468022A0 */ cvt.s.w $f10, $f4 -/* 0972F8 800966F8 44993000 */ mtc1 $t9, $f6 -/* 0972FC 800966FC 00000000 */ nop -/* 097300 80096700 46803320 */ cvt.s.w $f12, $f6 -/* 097304 80096704 460E5482 */ mul.s $f18, $f10, $f14 -/* 097308 80096708 1000000B */ b .L80096738 -/* 09730C 8009670C 8FB800B0 */ lw $t8, 0xb0($sp) -.L80096710: -/* 097310 80096710 44873000 */ mtc1 $a3, $f6 -/* 097314 80096714 8FAE00C4 */ lw $t6, 0xc4($sp) -/* 097318 80096718 00E0F025 */ move $fp, $a3 -/* 09731C 8009671C 46803120 */ cvt.s.w $f4, $f6 -/* 097320 80096720 448E4000 */ mtc1 $t6, $f8 -/* 097324 80096724 8FA500B0 */ lw $a1, 0xb0($sp) -/* 097328 80096728 46804320 */ cvt.s.w $f12, $f8 -/* 09732C 8009672C 460E2482 */ mul.s $f18, $f4, $f14 -/* 097330 80096730 00000000 */ nop -/* 097334 80096734 8FB800B0 */ lw $t8, 0xb0($sp) -.L80096738: -/* 097338 80096738 0303082B */ sltu $at, $t8, $v1 -/* 09733C 8009673C 50200152 */ beql $at, $zero, .L80096C88 -/* 097340 80096740 46126100 */ add.s $f4, $f12, $f18 -/* 097344 80096744 AFA70074 */ sw $a3, 0x74($sp) -/* 097348 80096748 AFA80078 */ sw $t0, 0x78($sp) -.L8009674C: -/* 09734C 8009674C 8FB90078 */ lw $t9, 0x78($sp) -/* 097350 80096750 8FA300B8 */ lw $v1, 0xb8($sp) -/* 097354 80096754 8FA600BC */ lw $a2, 0xbc($sp) -/* 097358 80096758 0325A021 */ addu $s4, $t9, $a1 -/* 09735C 8009675C 0074082B */ sltu $at, $v1, $s4 -/* 097360 80096760 10200064 */ beqz $at, .L800968F4 -/* 097364 80096764 8FAF0074 */ lw $t7, 0x74($sp) -/* 097368 80096768 00659023 */ subu $s2, $v1, $a1 -/* 09736C 8009676C 16400004 */ bnez $s2, .L80096780 -/* 097370 80096770 8FAB00C4 */ lw $t3, 0xc4($sp) -/* 097374 80096774 03204025 */ move $t0, $t9 -/* 097378 80096778 10000142 */ b .L80096C84 -/* 09737C 8009677C 01E03825 */ move $a3, $t7 -.L80096780: -/* 097380 80096780 83A2009F */ lb $v0, 0x9f($sp) -/* 097384 80096784 3C01FD00 */ lui $at, 0xfd00 -/* 097388 80096788 8FA3006C */ lw $v1, 0x6c($sp) -/* 09738C 8009678C 304E0007 */ andi $t6, $v0, 7 -/* 097390 80096790 000E1540 */ sll $v0, $t6, 0x15 -/* 097394 80096794 8FAE00CC */ lw $t6, 0xcc($sp) -/* 097398 80096798 0041C825 */ or $t9, $v0, $at -/* 09739C 8009679C 3C010010 */ lui $at, 0x10 -/* 0973A0 800967A0 03217825 */ or $t7, $t9, $at -/* 0973A4 800967A4 3C01F500 */ lui $at, 0xf500 -/* 0973A8 800967A8 25D8FFFF */ addiu $t8, $t6, -1 -/* 0973AC 800967AC 8FA60070 */ lw $a2, 0x70($sp) -/* 0973B0 800967B0 33190FFF */ andi $t9, $t8, 0xfff -/* 0973B4 800967B4 00415025 */ or $t2, $v0, $at -/* 0973B8 800967B8 3C010010 */ lui $at, 0x10 -/* 0973BC 800967BC 01417025 */ or $t6, $t2, $at -/* 0973C0 800967C0 01F94825 */ or $t1, $t7, $t9 -/* 0973C4 800967C4 3078000F */ andi $t8, $v1, 0xf -/* 0973C8 800967C8 00181B80 */ sll $v1, $t8, 0xe -/* 0973CC 800967CC 3C010700 */ lui $at, 0x700 -/* 0973D0 800967D0 30D9000F */ andi $t9, $a2, 0xf -/* 0973D4 800967D4 00193100 */ sll $a2, $t9, 4 -/* 0973D8 800967D8 0061C025 */ or $t8, $v1, $at -/* 0973DC 800967DC 03066025 */ or $t4, $t8, $a2 -/* 0973E0 800967E0 000BA880 */ sll $s5, $t3, 2 -/* 0973E4 800967E4 32B80FFF */ andi $t8, $s5, 0xfff -/* 0973E8 800967E8 00133880 */ sll $a3, $s3, 2 -/* 0973EC 800967EC 30EF0FFF */ andi $t7, $a3, 0xfff -/* 0973F0 800967F0 0300A825 */ move $s5, $t8 -/* 0973F4 800967F4 8FB800A0 */ lw $t8, 0xa0($sp) -/* 0973F8 800967F8 01E03825 */ move $a3, $t7 -/* 0973FC 800967FC 00137940 */ sll $t7, $s3, 5 -/* 097400 80096800 31F6FFFF */ andi $s6, $t7, 0xffff -/* 097404 80096804 00187C00 */ sll $t7, $t8, 0x10 -/* 097408 80096808 8FB80078 */ lw $t8, 0x78($sp) -/* 09740C 8009680C 027E4021 */ addu $t0, $s3, $fp -/* 097410 80096810 0008C880 */ sll $t9, $t0, 2 -/* 097414 80096814 44984000 */ mtc1 $t8, $f8 -/* 097418 80096818 33280FFF */ andi $t0, $t9, 0xfff -/* 09741C 8009681C 8FB900A4 */ lw $t9, 0xa4($sp) -/* 097420 80096820 468041A0 */ cvt.s.w $f6, $f8 -/* 097424 80096824 449F5000 */ mtc1 $ra, $f10 -/* 097428 80096828 449E2000 */ mtc1 $fp, $f4 -/* 09742C 8009682C 01C05025 */ move $t2, $t6 -/* 097430 80096830 332EFFFF */ andi $t6, $t9, 0xffff -/* 097434 80096834 46805020 */ cvt.s.w $f0, $f10 -/* 097438 80096838 46023402 */ mul.s $f16, $f6, $f2 -/* 09743C 8009683C 01EEB825 */ or $s7, $t7, $t6 -/* 097440 80096840 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 097444 80096844 00668025 */ or $s0, $v1, $a2 -/* 097448 80096848 07C10004 */ bgez $fp, .L8009685C -/* 09744C 8009684C 468022A0 */ cvt.s.w $f10, $f4 -/* 097450 80096850 44814000 */ mtc1 $at, $f8 -/* 097454 80096854 00000000 */ nop -/* 097458 80096858 46085280 */ add.s $f10, $f10, $f8 -.L8009685C: -/* 09745C 8009685C 460E5182 */ mul.s $f6, $f10, $f14 -/* 097460 80096860 240F0001 */ li $t7, 1 -/* 097464 80096864 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 097468 80096868 4459F800 */ cfc1 $t9, $31 -/* 09746C 8009686C 44CFF800 */ ctc1 $t7, $31 -/* 097470 80096870 00000000 */ nop -/* 097474 80096874 46003124 */ cvt.w.s $f4, $f6 -/* 097478 80096878 444FF800 */ cfc1 $t7, $31 -/* 09747C 8009687C 00000000 */ nop -/* 097480 80096880 31EF0078 */ andi $t7, $t7, 0x78 -/* 097484 80096884 51E00013 */ beql $t7, $zero, .L800968D4 -/* 097488 80096888 440F2000 */ mfc1 $t7, $f4 -/* 09748C 8009688C 44812000 */ mtc1 $at, $f4 -/* 097490 80096890 240F0001 */ li $t7, 1 -/* 097494 80096894 46043101 */ sub.s $f4, $f6, $f4 -/* 097498 80096898 44CFF800 */ ctc1 $t7, $31 -/* 09749C 8009689C 00000000 */ nop -/* 0974A0 800968A0 46002124 */ cvt.w.s $f4, $f4 -/* 0974A4 800968A4 444FF800 */ cfc1 $t7, $31 -/* 0974A8 800968A8 00000000 */ nop -/* 0974AC 800968AC 31EF0078 */ andi $t7, $t7, 0x78 -/* 0974B0 800968B0 15E00005 */ bnez $t7, .L800968C8 -/* 0974B4 800968B4 00000000 */ nop -/* 0974B8 800968B8 440F2000 */ mfc1 $t7, $f4 -/* 0974BC 800968BC 3C018000 */ lui $at, 0x8000 -/* 0974C0 800968C0 10000007 */ b .L800968E0 -/* 0974C4 800968C4 01E17825 */ or $t7, $t7, $at -.L800968C8: -/* 0974C8 800968C8 10000005 */ b .L800968E0 -/* 0974CC 800968CC 240FFFFF */ li $t7, -1 -/* 0974D0 800968D0 440F2000 */ mfc1 $t7, $f4 -.L800968D4: -/* 0974D4 800968D4 00000000 */ nop -/* 0974D8 800968D8 05E0FFFB */ bltz $t7, .L800968C8 -/* 0974DC 800968DC 00000000 */ nop -.L800968E0: -/* 0974E0 800968E0 016F8821 */ addu $s1, $t3, $t7 -/* 0974E4 800968E4 00117080 */ sll $t6, $s1, 2 -/* 0974E8 800968E8 44D9F800 */ ctc1 $t9, $31 -/* 0974EC 800968EC 1000005E */ b .L80096A68 -/* 0974F0 800968F0 31D10FFF */ andi $s1, $t6, 0xfff -.L800968F4: -/* 0974F4 800968F4 83A2009F */ lb $v0, 0x9f($sp) -/* 0974F8 800968F8 8FB20078 */ lw $s2, 0x78($sp) -/* 0974FC 800968FC 8FAB00C4 */ lw $t3, 0xc4($sp) -/* 097500 80096900 8FA3006C */ lw $v1, 0x6c($sp) -/* 097504 80096904 8FA60070 */ lw $a2, 0x70($sp) -/* 097508 80096908 449F4000 */ mtc1 $ra, $f8 -/* 09750C 8009690C 30590007 */ andi $t9, $v0, 7 -/* 097510 80096910 00191540 */ sll $v0, $t9, 0x15 -/* 097514 80096914 46804020 */ cvt.s.w $f0, $f8 -/* 097518 80096918 8FB900CC */ lw $t9, 0xcc($sp) -/* 09751C 8009691C 3C01FD00 */ lui $at, 0xfd00 -/* 097520 80096920 00417025 */ or $t6, $v0, $at -/* 097524 80096924 3C010010 */ lui $at, 0x10 -/* 097528 80096928 44925000 */ mtc1 $s2, $f10 -/* 09752C 8009692C 01C1C025 */ or $t8, $t6, $at -/* 097530 80096930 272FFFFF */ addiu $t7, $t9, -1 -/* 097534 80096934 468052A0 */ cvt.s.w $f10, $f10 -/* 097538 80096938 3C01F500 */ lui $at, 0xf500 -/* 09753C 8009693C 31EE0FFF */ andi $t6, $t7, 0xfff -/* 097540 80096940 00415025 */ or $t2, $v0, $at -/* 097544 80096944 3C010010 */ lui $at, 0x10 -/* 097548 80096948 030E4825 */ or $t1, $t8, $t6 -/* 09754C 8009694C 46025402 */ mul.s $f16, $f10, $f2 -/* 097550 80096950 0141C825 */ or $t9, $t2, $at -/* 097554 80096954 306F000F */ andi $t7, $v1, 0xf -/* 097558 80096958 000F1B80 */ sll $v1, $t7, 0xe -/* 09755C 8009695C 30CE000F */ andi $t6, $a2, 0xf -/* 097560 80096960 3C010700 */ lui $at, 0x700 -/* 097564 80096964 000E3100 */ sll $a2, $t6, 4 -/* 097568 80096968 00617825 */ or $t7, $v1, $at -/* 09756C 8009696C 449E5000 */ mtc1 $fp, $f10 -/* 097570 80096970 01E66025 */ or $t4, $t7, $a2 -/* 097574 80096974 00133880 */ sll $a3, $s3, 2 -/* 097578 80096978 46805220 */ cvt.s.w $f8, $f10 -/* 09757C 8009697C 027E4021 */ addu $t0, $s3, $fp -/* 097580 80096980 00087080 */ sll $t6, $t0, 2 -/* 097584 80096984 000BA880 */ sll $s5, $t3, 2 -/* 097588 80096988 30F80FFF */ andi $t8, $a3, 0xfff -/* 09758C 8009698C 32AF0FFF */ andi $t7, $s5, 0xfff -/* 097590 80096990 31C80FFF */ andi $t0, $t6, 0xfff -/* 097594 80096994 8FAE00A4 */ lw $t6, 0xa4($sp) -/* 097598 80096998 03003825 */ move $a3, $t8 -/* 09759C 8009699C 03205025 */ move $t2, $t9 -/* 0975A0 800969A0 01E0A825 */ move $s5, $t7 -/* 0975A4 800969A4 8FAF00A0 */ lw $t7, 0xa0($sp) -/* 0975A8 800969A8 0013C140 */ sll $t8, $s3, 5 -/* 0975AC 800969AC 3316FFFF */ andi $s6, $t8, 0xffff -/* 0975B0 800969B0 000FC400 */ sll $t8, $t7, 0x10 -/* 0975B4 800969B4 31D9FFFF */ andi $t9, $t6, 0xffff -/* 0975B8 800969B8 00668025 */ or $s0, $v1, $a2 -/* 0975BC 800969BC 07C10005 */ bgez $fp, .L800969D4 -/* 0975C0 800969C0 0319B825 */ or $s7, $t8, $t9 -/* 0975C4 800969C4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 0975C8 800969C8 44815000 */ mtc1 $at, $f10 -/* 0975CC 800969CC 00000000 */ nop -/* 0975D0 800969D0 460A4200 */ add.s $f8, $f8, $f10 -.L800969D4: -/* 0975D4 800969D4 460E4182 */ mul.s $f6, $f8, $f14 -/* 0975D8 800969D8 240E0001 */ li $t6, 1 -/* 0975DC 800969DC 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 0975E0 800969E0 444FF800 */ cfc1 $t7, $31 -/* 0975E4 800969E4 44CEF800 */ ctc1 $t6, $31 -/* 0975E8 800969E8 00000000 */ nop -/* 0975EC 800969EC 46003124 */ cvt.w.s $f4, $f6 -/* 0975F0 800969F0 444EF800 */ cfc1 $t6, $31 -/* 0975F4 800969F4 00000000 */ nop -/* 0975F8 800969F8 31CE0078 */ andi $t6, $t6, 0x78 -/* 0975FC 800969FC 51C00013 */ beql $t6, $zero, .L80096A4C -/* 097600 80096A00 440E2000 */ mfc1 $t6, $f4 -/* 097604 80096A04 44812000 */ mtc1 $at, $f4 -/* 097608 80096A08 240E0001 */ li $t6, 1 -/* 09760C 80096A0C 46043101 */ sub.s $f4, $f6, $f4 -/* 097610 80096A10 44CEF800 */ ctc1 $t6, $31 -/* 097614 80096A14 00000000 */ nop -/* 097618 80096A18 46002124 */ cvt.w.s $f4, $f4 -/* 09761C 80096A1C 444EF800 */ cfc1 $t6, $31 -/* 097620 80096A20 00000000 */ nop -/* 097624 80096A24 31CE0078 */ andi $t6, $t6, 0x78 -/* 097628 80096A28 15C00005 */ bnez $t6, .L80096A40 -/* 09762C 80096A2C 00000000 */ nop -/* 097630 80096A30 440E2000 */ mfc1 $t6, $f4 -/* 097634 80096A34 3C018000 */ lui $at, 0x8000 -/* 097638 80096A38 10000007 */ b .L80096A58 -/* 09763C 80096A3C 01C17025 */ or $t6, $t6, $at -.L80096A40: -/* 097640 80096A40 10000005 */ b .L80096A58 -/* 097644 80096A44 240EFFFF */ li $t6, -1 -/* 097648 80096A48 440E2000 */ mfc1 $t6, $f4 -.L80096A4C: -/* 09764C 80096A4C 00000000 */ nop -/* 097650 80096A50 05C0FFFB */ bltz $t6, .L80096A40 -/* 097654 80096A54 00000000 */ nop -.L80096A58: -/* 097658 80096A58 016E8821 */ addu $s1, $t3, $t6 -/* 09765C 80096A5C 44CFF800 */ ctc1 $t7, $31 -/* 097660 80096A60 0011C080 */ sll $t8, $s1, 2 -/* 097664 80096A64 33110FFF */ andi $s1, $t8, 0xfff -.L80096A68: -/* 097668 80096A68 00801025 */ move $v0, $a0 -/* 09766C 80096A6C AC490000 */ sw $t1, ($v0) -/* 097670 80096A70 8FAF00C8 */ lw $t7, 0xc8($sp) -/* 097674 80096A74 00B23021 */ addu $a2, $a1, $s2 -/* 097678 80096A78 00C57023 */ subu $t6, $a2, $a1 -/* 09767C 80096A7C 000EC040 */ sll $t8, $t6, 1 -/* 097680 80096A80 27190009 */ addiu $t9, $t8, 9 -/* 097684 80096A84 AC4F0004 */ sw $t7, 4($v0) -/* 097688 80096A88 001978C2 */ srl $t7, $t9, 3 -/* 09768C 80096A8C 31EE01FF */ andi $t6, $t7, 0x1ff -/* 097690 80096A90 24840008 */ addiu $a0, $a0, 8 -/* 097694 80096A94 00801825 */ move $v1, $a0 -/* 097698 80096A98 000EC240 */ sll $t8, $t6, 9 -/* 09769C 80096A9C 01585825 */ or $t3, $t2, $t8 -/* 0976A0 80096AA0 00054880 */ sll $t1, $a1, 2 -/* 0976A4 80096AA4 312F0FFF */ andi $t7, $t1, 0xfff -/* 0976A8 80096AA8 24840008 */ addiu $a0, $a0, 8 -/* 0976AC 80096AAC 00806825 */ move $t5, $a0 -/* 0976B0 80096AB0 000F4B00 */ sll $t1, $t7, 0xc -/* 0976B4 80096AB4 AC6B0000 */ sw $t3, ($v1) -/* 0976B8 80096AB8 AC6C0004 */ sw $t4, 4($v1) -/* 0976BC 80096ABC 3C19E600 */ lui $t9, 0xe600 -/* 0976C0 80096AC0 3C01F400 */ lui $at, 0xf400 -/* 0976C4 80096AC4 0121C025 */ or $t8, $t1, $at -/* 0976C8 80096AC8 ADB90000 */ sw $t9, ($t5) -/* 0976CC 80096ACC 00065080 */ sll $t2, $a2, 2 -/* 0976D0 80096AD0 314F0FFF */ andi $t7, $t2, 0xfff -/* 0976D4 80096AD4 0307C825 */ or $t9, $t8, $a3 -/* 0976D8 80096AD8 24840008 */ addiu $a0, $a0, 8 -/* 0976DC 80096ADC 00801025 */ move $v0, $a0 -/* 0976E0 80096AE0 000F5300 */ sll $t2, $t7, 0xc -/* 0976E4 80096AE4 3C010700 */ lui $at, 0x700 -/* 0976E8 80096AE8 ADA00004 */ sw $zero, 4($t5) -/* 0976EC 80096AEC AC590000 */ sw $t9, ($v0) -/* 0976F0 80096AF0 0141C025 */ or $t8, $t2, $at -/* 0976F4 80096AF4 0308C825 */ or $t9, $t8, $t0 -/* 0976F8 80096AF8 24840008 */ addiu $a0, $a0, 8 -/* 0976FC 80096AFC 00801825 */ move $v1, $a0 -/* 097700 80096B00 AC590004 */ sw $t9, 4($v0) -/* 097704 80096B04 24840008 */ addiu $a0, $a0, 8 -/* 097708 80096B08 00806025 */ move $t4, $a0 -/* 09770C 80096B0C 24840008 */ addiu $a0, $a0, 8 -/* 097710 80096B10 3C0FE700 */ lui $t7, 0xe700 -/* 097714 80096B14 AC6F0000 */ sw $t7, ($v1) -/* 097718 80096B18 00801025 */ move $v0, $a0 -/* 09771C 80096B1C AC600004 */ sw $zero, 4($v1) -/* 097720 80096B20 3C01F200 */ lui $at, 0xf200 -/* 097724 80096B24 44925000 */ mtc1 $s2, $f10 -/* 097728 80096B28 01217025 */ or $t6, $t1, $at -/* 09772C 80096B2C 24840008 */ addiu $a0, $a0, 8 -/* 097730 80096B30 01C7C025 */ or $t8, $t6, $a3 -/* 097734 80096B34 AD900004 */ sw $s0, 4($t4) -/* 097738 80096B38 AD8B0000 */ sw $t3, ($t4) -/* 09773C 80096B3C 0148C825 */ or $t9, $t2, $t0 -/* 097740 80096B40 00803025 */ move $a2, $a0 -/* 097744 80096B44 AC590004 */ sw $t9, 4($v0) -/* 097748 80096B48 AC580000 */ sw $t8, ($v0) -/* 09774C 80096B4C 24840008 */ addiu $a0, $a0, 8 -/* 097750 80096B50 06410005 */ bgez $s2, .L80096B68 -/* 097754 80096B54 46805220 */ cvt.s.w $f8, $f10 -/* 097758 80096B58 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 09775C 80096B5C 44813000 */ mtc1 $at, $f6 -/* 097760 80096B60 00000000 */ nop -/* 097764 80096B64 46064200 */ add.s $f8, $f8, $f6 -.L80096B68: -/* 097768 80096B68 46024102 */ mul.s $f4, $f8, $f2 -/* 09776C 80096B6C 240E0001 */ li $t6, 1 -/* 097770 80096B70 00801025 */ move $v0, $a0 -/* 097774 80096B74 24840008 */ addiu $a0, $a0, 8 -/* 097778 80096B78 00801825 */ move $v1, $a0 -/* 09777C 80096B7C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 097780 80096B80 444FF800 */ cfc1 $t7, $31 -/* 097784 80096B84 44CEF800 */ ctc1 $t6, $31 -/* 097788 80096B88 00000000 */ nop -/* 09778C 80096B8C 460022A4 */ cvt.w.s $f10, $f4 -/* 097790 80096B90 444EF800 */ cfc1 $t6, $31 -/* 097794 80096B94 00000000 */ nop -/* 097798 80096B98 31CE0078 */ andi $t6, $t6, 0x78 -/* 09779C 80096B9C 51C00013 */ beql $t6, $zero, .L80096BEC -/* 0977A0 80096BA0 440E5000 */ mfc1 $t6, $f10 -/* 0977A4 80096BA4 44815000 */ mtc1 $at, $f10 -/* 0977A8 80096BA8 240E0001 */ li $t6, 1 -/* 0977AC 80096BAC 460A2281 */ sub.s $f10, $f4, $f10 -/* 0977B0 80096BB0 44CEF800 */ ctc1 $t6, $31 -/* 0977B4 80096BB4 00000000 */ nop -/* 0977B8 80096BB8 460052A4 */ cvt.w.s $f10, $f10 -/* 0977BC 80096BBC 444EF800 */ cfc1 $t6, $31 -/* 0977C0 80096BC0 00000000 */ nop -/* 0977C4 80096BC4 31CE0078 */ andi $t6, $t6, 0x78 -/* 0977C8 80096BC8 15C00005 */ bnez $t6, .L80096BE0 -/* 0977CC 80096BCC 00000000 */ nop -/* 0977D0 80096BD0 440E5000 */ mfc1 $t6, $f10 -/* 0977D4 80096BD4 3C018000 */ lui $at, 0x8000 -/* 0977D8 80096BD8 10000007 */ b .L80096BF8 -/* 0977DC 80096BDC 01C17025 */ or $t6, $t6, $at -.L80096BE0: -/* 0977E0 80096BE0 10000005 */ b .L80096BF8 -/* 0977E4 80096BE4 240EFFFF */ li $t6, -1 -/* 0977E8 80096BE8 440E5000 */ mfc1 $t6, $f10 -.L80096BEC: -/* 0977EC 80096BEC 00000000 */ nop -/* 0977F0 80096BF0 05C0FFFB */ bltz $t6, .L80096BE0 -/* 0977F4 80096BF4 00000000 */ nop -.L80096BF8: -/* 0977F8 80096BF8 03EEC021 */ addu $t8, $ra, $t6 -/* 0977FC 80096BFC 44CFF800 */ ctc1 $t7, $31 -/* 097800 80096C00 0018C880 */ sll $t9, $t8, 2 -/* 097804 80096C04 332F0FFF */ andi $t7, $t9, 0xfff -/* 097808 80096C08 000F7300 */ sll $t6, $t7, 0xc -/* 09780C 80096C0C 3C01E400 */ lui $at, 0xe400 -/* 097810 80096C10 01C1C025 */ or $t8, $t6, $at -/* 097814 80096C14 0311C825 */ or $t9, $t8, $s1 -/* 097818 80096C18 001F7880 */ sll $t7, $ra, 2 -/* 09781C 80096C1C 31EE0FFF */ andi $t6, $t7, 0xfff -/* 097820 80096C20 000EC300 */ sll $t8, $t6, 0xc -/* 097824 80096C24 ACD90000 */ sw $t9, ($a2) -/* 097828 80096C28 0315C825 */ or $t9, $t8, $s5 -/* 09782C 80096C2C ACD90004 */ sw $t9, 4($a2) -/* 097830 80096C30 3C0FB300 */ lui $t7, 0xb300 -/* 097834 80096C34 AC4F0000 */ sw $t7, ($v0) -/* 097838 80096C38 00A0C825 */ move $t9, $a1 -/* 09783C 80096C3C 46100180 */ add.s $f6, $f0, $f16 -/* 097840 80096C40 00197D40 */ sll $t7, $t9, 0x15 -/* 097844 80096C44 01F67025 */ or $t6, $t7, $s6 -/* 097848 80096C48 AC4E0004 */ sw $t6, 4($v0) -/* 09784C 80096C4C 3C18B200 */ lui $t8, 0xb200 -/* 097850 80096C50 4600320D */ trunc.w.s $f8, $f6 -/* 097854 80096C54 AC780000 */ sw $t8, ($v1) -/* 097858 80096C58 AC770004 */ sw $s7, 4($v1) -/* 09785C 80096C5C 8FAF00B8 */ lw $t7, 0xb8($sp) -/* 097860 80096C60 441F4000 */ mfc1 $ra, $f8 -/* 097864 80096C64 02802825 */ move $a1, $s4 -/* 097868 80096C68 028F082B */ sltu $at, $s4, $t7 -/* 09786C 80096C6C 1420FEB7 */ bnez $at, .L8009674C -/* 097870 80096C70 24840008 */ addiu $a0, $a0, 8 -/* 097874 80096C74 8FA80078 */ lw $t0, 0x78($sp) -/* 097878 80096C78 8FA70074 */ lw $a3, 0x74($sp) -/* 09787C 80096C7C 8FA600BC */ lw $a2, 0xbc($sp) -/* 097880 80096C80 01E01825 */ move $v1, $t7 -.L80096C84: -/* 097884 80096C84 46126100 */ add.s $f4, $f12, $f18 -.L80096C88: -/* 097888 80096C88 8FB30034 */ lw $s3, 0x34($sp) -/* 09788C 80096C8C 8FBF008C */ lw $ra, 0x8c($sp) -/* 097890 80096C90 4600228D */ trunc.w.s $f10, $f4 -/* 097894 80096C94 0266082B */ sltu $at, $s3, $a2 -/* 097898 80096C98 44185000 */ mfc1 $t8, $f10 -/* 09789C 80096C9C 1420FE8B */ bnez $at, .L800966CC -/* 0978A0 80096CA0 AFB800C4 */ sw $t8, 0xc4($sp) -.L80096CA4: -/* 0978A4 80096CA4 00801025 */ move $v0, $a0 -.L80096CA8: -/* 0978A8 80096CA8 8FBF002C */ lw $ra, 0x2c($sp) -/* 0978AC 80096CAC 8FB00008 */ lw $s0, 8($sp) -/* 0978B0 80096CB0 8FB1000C */ lw $s1, 0xc($sp) -/* 0978B4 80096CB4 8FB20010 */ lw $s2, 0x10($sp) -/* 0978B8 80096CB8 8FB30014 */ lw $s3, 0x14($sp) -/* 0978BC 80096CBC 8FB40018 */ lw $s4, 0x18($sp) -/* 0978C0 80096CC0 8FB5001C */ lw $s5, 0x1c($sp) -/* 0978C4 80096CC4 8FB60020 */ lw $s6, 0x20($sp) -/* 0978C8 80096CC8 8FB70024 */ lw $s7, 0x24($sp) -/* 0978CC 80096CCC 8FBE0028 */ lw $fp, 0x28($sp) -/* 0978D0 80096CD0 03E00008 */ jr $ra -/* 0978D4 80096CD4 27BD0098 */ addiu $sp, $sp, 0x98 diff --git a/asm/non_matchings/code_80091750/func_80097AE4.s b/asm/non_matchings/code_80091750/func_80097AE4.s deleted file mode 100644 index 7aaf5afd2..000000000 --- a/asm/non_matchings/code_80091750/func_80097AE4.s +++ /dev/null @@ -1,227 +0,0 @@ -glabel func_80097AE4 -/* 0986E4 80097AE4 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0986E8 80097AE8 AFB30014 */ sw $s3, 0x14($sp) -/* 0986EC 80097AEC 8FB30054 */ lw $s3, 0x54($sp) -/* 0986F0 80097AF0 AFB20010 */ sw $s2, 0x10($sp) -/* 0986F4 80097AF4 AFB00008 */ sw $s0, 8($sp) -/* 0986F8 80097AF8 AFA50044 */ sw $a1, 0x44($sp) -/* 0986FC 80097AFC 00057600 */ sll $t6, $a1, 0x18 -/* 098700 80097B00 2A610020 */ slti $at, $s3, 0x20 -/* 098704 80097B04 000E2E03 */ sra $a1, $t6, 0x18 -/* 098708 80097B08 00C08025 */ move $s0, $a2 -/* 09870C 80097B0C 00E09025 */ move $s2, $a3 -/* 098710 80097B10 AFBF002C */ sw $ra, 0x2c($sp) -/* 098714 80097B14 AFBE0028 */ sw $fp, 0x28($sp) -/* 098718 80097B18 AFB70024 */ sw $s7, 0x24($sp) -/* 09871C 80097B1C AFB60020 */ sw $s6, 0x20($sp) -/* 098720 80097B20 AFB5001C */ sw $s5, 0x1c($sp) -/* 098724 80097B24 AFB40018 */ sw $s4, 0x18($sp) -/* 098728 80097B28 14200003 */ bnez $at, .L80097B38 -/* 09872C 80097B2C AFB1000C */ sw $s1, 0xc($sp) -/* 098730 80097B30 100000BD */ b .L80097E28 -/* 098734 80097B34 00801025 */ move $v0, $a0 -.L80097B38: -/* 098738 80097B38 30A20007 */ andi $v0, $a1, 7 -/* 09873C 80097B3C 0002C540 */ sll $t8, $v0, 0x15 -/* 098740 80097B40 3C01FD00 */ lui $at, 0xfd00 -/* 098744 80097B44 0301A025 */ or $s4, $t8, $at -/* 098748 80097B48 3C010010 */ lui $at, 0x10 -/* 09874C 80097B4C 0281C825 */ or $t9, $s4, $at -/* 098750 80097B50 3C01F500 */ lui $at, 0xf500 -/* 098754 80097B54 03016825 */ or $t5, $t8, $at -/* 098758 80097B58 3C010010 */ lui $at, 0x10 -/* 09875C 80097B5C 3734003F */ ori $s4, $t9, 0x3f -/* 098760 80097B60 24190020 */ li $t9, 32 -/* 098764 80097B64 01A17825 */ or $t7, $t5, $at -/* 098768 80097B68 03001025 */ move $v0, $t8 -/* 09876C 80097B6C 35F81200 */ ori $t8, $t7, 0x1200 -/* 098770 80097B70 03337023 */ subu $t6, $t9, $s3 -/* 098774 80097B74 340F8000 */ li $t7, 32768 -/* 098778 80097B78 01EE001A */ div $zero, $t7, $t6 -/* 09877C 80097B7C 0000A812 */ mflo $s5 -/* 098780 80097B80 03006825 */ move $t5, $t8 -/* 098784 80097B84 32B8FFFF */ andi $t8, $s5, 0xffff -/* 098788 80097B88 0018CC00 */ sll $t9, $t8, 0x10 -/* 09878C 80097B8C 3C170701 */ lui $s7, (0x07014050 >> 16) # lui $s7, 0x701 -/* 098790 80097B90 AFB00034 */ sw $s0, 0x34($sp) -/* 098794 80097B94 36F74050 */ ori $s7, (0x07014050 & 0xFFFF) # ori $s7, $s7, 0x4050 -/* 098798 80097B98 00003025 */ move $a2, $zero -/* 09879C 80097B9C 15C00002 */ bnez $t6, .L80097BA8 -/* 0987A0 80097BA0 00000000 */ nop -/* 0987A4 80097BA4 0007000D */ break 7 -.L80097BA8: -/* 0987A8 80097BA8 2401FFFF */ li $at, -1 -/* 0987AC 80097BAC 15C10004 */ bne $t6, $at, .L80097BC0 -/* 0987B0 80097BB0 3C018000 */ lui $at, 0x8000 -/* 0987B4 80097BB4 15E10002 */ bne $t7, $at, .L80097BC0 -/* 0987B8 80097BB8 00000000 */ nop -/* 0987BC 80097BBC 0006000D */ break 6 -.L80097BC0: -/* 0987C0 80097BC0 372F0400 */ ori $t7, $t9, 0x400 -/* 0987C4 80097BC4 01E0A825 */ move $s5, $t7 -/* 0987C8 80097BC8 3C1FE700 */ lui $ra, 0xe700 -/* 0987CC 80097BCC 3C1EE600 */ lui $fp, 0xe600 -/* 0987D0 80097BD0 8FB60050 */ lw $s6, 0x50($sp) -.L80097BD4: -/* 0987D4 80097BD4 00801025 */ move $v0, $a0 -/* 0987D8 80097BD8 24840008 */ addiu $a0, $a0, 8 -/* 0987DC 80097BDC 00801825 */ move $v1, $a0 -/* 0987E0 80097BE0 AC540000 */ sw $s4, ($v0) -/* 0987E4 80097BE4 AC560004 */ sw $s6, 4($v0) -/* 0987E8 80097BE8 24840008 */ addiu $a0, $a0, 8 -/* 0987EC 80097BEC 00802825 */ move $a1, $a0 -/* 0987F0 80097BF0 00063880 */ sll $a3, $a2, 2 -/* 0987F4 80097BF4 30EE0FFF */ andi $t6, $a3, 0xfff -/* 0987F8 80097BF8 24840008 */ addiu $a0, $a0, 8 -/* 0987FC 80097BFC AC770004 */ sw $s7, 4($v1) -/* 098800 80097C00 AC6D0000 */ sw $t5, ($v1) -/* 098804 80097C04 3C01F400 */ lui $at, 0xf400 -/* 098808 80097C08 24D10020 */ addiu $s1, $a2, 0x20 -/* 09880C 80097C0C 00114080 */ sll $t0, $s1, 2 -/* 098810 80097C10 01C1C025 */ or $t8, $t6, $at -/* 098814 80097C14 00804825 */ move $t1, $a0 -/* 098818 80097C18 3C010708 */ lui $at, 0x708 -/* 09881C 80097C1C 31190FFF */ andi $t9, $t0, 0xfff -/* 098820 80097C20 ACA00004 */ sw $zero, 4($a1) -/* 098824 80097C24 ACBE0000 */ sw $fp, ($a1) -/* 098828 80097C28 03217825 */ or $t7, $t9, $at -/* 09882C 80097C2C 24840008 */ addiu $a0, $a0, 8 -/* 098830 80097C30 00801025 */ move $v0, $a0 -/* 098834 80097C34 AD2F0004 */ sw $t7, 4($t1) -/* 098838 80097C38 AD380000 */ sw $t8, ($t1) -/* 09883C 80097C3C 24840008 */ addiu $a0, $a0, 8 -/* 098840 80097C40 01C03825 */ move $a3, $t6 -/* 098844 80097C44 3C0E0001 */ lui $t6, (0x00014050 >> 16) # lui $t6, 1 -/* 098848 80097C48 00801825 */ move $v1, $a0 -/* 09884C 80097C4C 35CE4050 */ ori $t6, (0x00014050 & 0xFFFF) # ori $t6, $t6, 0x4050 -/* 098850 80097C50 AC400004 */ sw $zero, 4($v0) -/* 098854 80097C54 AC5F0000 */ sw $ra, ($v0) -/* 098858 80097C58 3C01F200 */ lui $at, 0xf200 -/* 09885C 80097C5C 00E1C025 */ or $t8, $a3, $at -/* 098860 80097C60 AC6E0004 */ sw $t6, 4($v1) -/* 098864 80097C64 3C010008 */ lui $at, 8 -/* 098868 80097C68 AC6D0000 */ sw $t5, ($v1) -/* 09886C 80097C6C 24840008 */ addiu $a0, $a0, 8 -/* 098870 80097C70 03204025 */ move $t0, $t9 -/* 098874 80097C74 0321C825 */ or $t9, $t9, $at -/* 098878 80097C78 00802825 */ move $a1, $a0 -/* 09887C 80097C7C 26030020 */ addiu $v1, $s0, 0x20 -/* 098880 80097C80 26490020 */ addiu $t1, $s2, 0x20 -/* 098884 80097C84 ACB80000 */ sw $t8, ($a1) -/* 098888 80097C88 00095080 */ sll $t2, $t1, 2 -/* 09888C 80097C8C 00037080 */ sll $t6, $v1, 2 -/* 098890 80097C90 ACB90004 */ sw $t9, 4($a1) -/* 098894 80097C94 31D80FFF */ andi $t8, $t6, 0xfff -/* 098898 80097C98 314F0FFF */ andi $t7, $t2, 0xfff -/* 09889C 80097C9C 01E05025 */ move $t2, $t7 -/* 0988A0 80097CA0 0018CB00 */ sll $t9, $t8, 0xc -/* 0988A4 80097CA4 3C01E400 */ lui $at, 0xe400 -/* 0988A8 80097CA8 03217825 */ or $t7, $t9, $at -/* 0988AC 80097CAC 24840008 */ addiu $a0, $a0, 8 -/* 0988B0 80097CB0 01EA7025 */ or $t6, $t7, $t2 -/* 0988B4 80097CB4 00801025 */ move $v0, $a0 -/* 0988B8 80097CB8 0213C821 */ addu $t9, $s0, $s3 -/* 0988BC 80097CBC 00125880 */ sll $t3, $s2, 2 -/* 0988C0 80097CC0 31780FFF */ andi $t8, $t3, 0xfff -/* 0988C4 80097CC4 00197880 */ sll $t7, $t9, 2 -/* 0988C8 80097CC8 AC4E0000 */ sw $t6, ($v0) -/* 0988CC 80097CCC 31EE0FFF */ andi $t6, $t7, 0xfff -/* 0988D0 80097CD0 03005825 */ move $t3, $t8 -/* 0988D4 80097CD4 000EC300 */ sll $t8, $t6, 0xc -/* 0988D8 80097CD8 030BC825 */ or $t9, $t8, $t3 -/* 0988DC 80097CDC 24840008 */ addiu $a0, $a0, 8 -/* 0988E0 80097CE0 00802825 */ move $a1, $a0 -/* 0988E4 80097CE4 AC590004 */ sw $t9, 4($v0) -/* 0988E8 80097CE8 24840008 */ addiu $a0, $a0, 8 -/* 0988EC 80097CEC 00803025 */ move $a2, $a0 -/* 0988F0 80097CF0 3C0FB300 */ lui $t7, 0xb300 -/* 0988F4 80097CF4 ACAF0000 */ sw $t7, ($a1) -/* 0988F8 80097CF8 24840008 */ addiu $a0, $a0, 8 -/* 0988FC 80097CFC ACA00004 */ sw $zero, 4($a1) -/* 098900 80097D00 3C0EB200 */ lui $t6, 0xb200 -/* 098904 80097D04 00806025 */ move $t4, $a0 -/* 098908 80097D08 ACCE0000 */ sw $t6, ($a2) -/* 09890C 80097D0C ACD50004 */ sw $s5, 4($a2) -/* 098910 80097D10 24840008 */ addiu $a0, $a0, 8 -/* 098914 80097D14 00801025 */ move $v0, $a0 -/* 098918 80097D18 AD960004 */ sw $s6, 4($t4) -/* 09891C 80097D1C AD940000 */ sw $s4, ($t4) -/* 098920 80097D20 00608025 */ move $s0, $v1 -/* 098924 80097D24 24840008 */ addiu $a0, $a0, 8 -/* 098928 80097D28 00801825 */ move $v1, $a0 -/* 09892C 80097D2C AC570004 */ sw $s7, 4($v0) -/* 098930 80097D30 AC4D0000 */ sw $t5, ($v0) -/* 098934 80097D34 24840008 */ addiu $a0, $a0, 8 -/* 098938 80097D38 3C01F408 */ lui $at, 0xf408 -/* 09893C 80097D3C 00E1C025 */ or $t8, $a3, $at -/* 098940 80097D40 00803025 */ move $a2, $a0 -/* 098944 80097D44 3C010710 */ lui $at, 0x710 -/* 098948 80097D48 AC600004 */ sw $zero, 4($v1) -/* 09894C 80097D4C AC7E0000 */ sw $fp, ($v1) -/* 098950 80097D50 0101C825 */ or $t9, $t0, $at -/* 098954 80097D54 24840008 */ addiu $a0, $a0, 8 -/* 098958 80097D58 00801025 */ move $v0, $a0 -/* 09895C 80097D5C ACD90004 */ sw $t9, 4($a2) -/* 098960 80097D60 ACD80000 */ sw $t8, ($a2) -/* 098964 80097D64 24840008 */ addiu $a0, $a0, 8 -/* 098968 80097D68 00801825 */ move $v1, $a0 -/* 09896C 80097D6C 3C0F0001 */ lui $t7, (0x00014050 >> 16) # lui $t7, 1 -/* 098970 80097D70 35EF4050 */ ori $t7, (0x00014050 & 0xFFFF) # ori $t7, $t7, 0x4050 -/* 098974 80097D74 AC400004 */ sw $zero, 4($v0) -/* 098978 80097D78 AC5F0000 */ sw $ra, ($v0) -/* 09897C 80097D7C 3C01F208 */ lui $at, 0xf208 -/* 098980 80097D80 00E17025 */ or $t6, $a3, $at -/* 098984 80097D84 AC6F0004 */ sw $t7, 4($v1) -/* 098988 80097D88 24840008 */ addiu $a0, $a0, 8 -/* 09898C 80097D8C 00802825 */ move $a1, $a0 -/* 098990 80097D90 3C010010 */ lui $at, 0x10 -/* 098994 80097D94 AC6D0000 */ sw $t5, ($v1) -/* 098998 80097D98 0213C823 */ subu $t9, $s0, $s3 -/* 09899C 80097D9C ACAE0000 */ sw $t6, ($a1) -/* 0989A0 80097DA0 0101C025 */ or $t8, $t0, $at -/* 0989A4 80097DA4 272F0020 */ addiu $t7, $t9, 0x20 -/* 0989A8 80097DA8 ACB80004 */ sw $t8, 4($a1) -/* 0989AC 80097DAC 000F7080 */ sll $t6, $t7, 2 -/* 0989B0 80097DB0 31D80FFF */ andi $t8, $t6, 0xfff -/* 0989B4 80097DB4 0018CB00 */ sll $t9, $t8, 0xc -/* 0989B8 80097DB8 3C01E400 */ lui $at, 0xe400 -/* 0989BC 80097DBC 24840008 */ addiu $a0, $a0, 8 -/* 0989C0 80097DC0 03217825 */ or $t7, $t9, $at -/* 0989C4 80097DC4 01EA7025 */ or $t6, $t7, $t2 -/* 0989C8 80097DC8 00801025 */ move $v0, $a0 -/* 0989CC 80097DCC 0010C080 */ sll $t8, $s0, 2 -/* 0989D0 80097DD0 33190FFF */ andi $t9, $t8, 0xfff -/* 0989D4 80097DD4 00197B00 */ sll $t7, $t9, 0xc -/* 0989D8 80097DD8 AC4E0000 */ sw $t6, ($v0) -/* 0989DC 80097DDC 24840008 */ addiu $a0, $a0, 8 -/* 0989E0 80097DE0 00801825 */ move $v1, $a0 -/* 0989E4 80097DE4 01EB7025 */ or $t6, $t7, $t3 -/* 0989E8 80097DE8 AC4E0004 */ sw $t6, 4($v0) -/* 0989EC 80097DEC 24840008 */ addiu $a0, $a0, 8 -/* 0989F0 80097DF0 3C18B300 */ lui $t8, 0xb300 -/* 0989F4 80097DF4 AC780000 */ sw $t8, ($v1) -/* 0989F8 80097DF8 00802825 */ move $a1, $a0 -/* 0989FC 80097DFC AC600004 */ sw $zero, 4($v1) -/* 098A00 80097E00 3C19B200 */ lui $t9, 0xb200 -/* 098A04 80097E04 24010040 */ li $at, 64 -/* 098A08 80097E08 ACB90000 */ sw $t9, ($a1) -/* 098A0C 80097E0C ACB50004 */ sw $s5, 4($a1) -/* 098A10 80097E10 02203025 */ move $a2, $s1 -/* 098A14 80097E14 24840008 */ addiu $a0, $a0, 8 -/* 098A18 80097E18 8FB00034 */ lw $s0, 0x34($sp) -/* 098A1C 80097E1C 1621FF6D */ bne $s1, $at, .L80097BD4 -/* 098A20 80097E20 01209025 */ move $s2, $t1 -/* 098A24 80097E24 00801025 */ move $v0, $a0 -.L80097E28: -/* 098A28 80097E28 8FBF002C */ lw $ra, 0x2c($sp) -/* 098A2C 80097E2C 8FB00008 */ lw $s0, 8($sp) -/* 098A30 80097E30 8FB1000C */ lw $s1, 0xc($sp) -/* 098A34 80097E34 8FB20010 */ lw $s2, 0x10($sp) -/* 098A38 80097E38 8FB30014 */ lw $s3, 0x14($sp) -/* 098A3C 80097E3C 8FB40018 */ lw $s4, 0x18($sp) -/* 098A40 80097E40 8FB5001C */ lw $s5, 0x1c($sp) -/* 098A44 80097E44 8FB60020 */ lw $s6, 0x20($sp) -/* 098A48 80097E48 8FB70024 */ lw $s7, 0x24($sp) -/* 098A4C 80097E4C 8FBE0028 */ lw $fp, 0x28($sp) -/* 098A50 80097E50 03E00008 */ jr $ra -/* 098A54 80097E54 27BD0040 */ addiu $sp, $sp, 0x40 diff --git a/asm/non_matchings/code_80091750/func_80097E58.s b/asm/non_matchings/code_80091750/func_80097E58.s deleted file mode 100644 index 3cac9a60d..000000000 --- a/asm/non_matchings/code_80091750/func_80097E58.s +++ /dev/null @@ -1,467 +0,0 @@ -glabel func_80097E58 -/* 098A58 80097E58 27BDFF08 */ addiu $sp, $sp, -0xf8 -/* 098A5C 80097E5C 8FAE0124 */ lw $t6, 0x124($sp) -/* 098A60 80097E60 AFBF002C */ sw $ra, 0x2c($sp) -/* 098A64 80097E64 AFBE0028 */ sw $fp, 0x28($sp) -/* 098A68 80097E68 29C10020 */ slti $at, $t6, 0x20 -/* 098A6C 80097E6C AFB70024 */ sw $s7, 0x24($sp) -/* 098A70 80097E70 AFB60020 */ sw $s6, 0x20($sp) -/* 098A74 80097E74 AFB5001C */ sw $s5, 0x1c($sp) -/* 098A78 80097E78 AFB40018 */ sw $s4, 0x18($sp) -/* 098A7C 80097E7C AFB30014 */ sw $s3, 0x14($sp) -/* 098A80 80097E80 AFB20010 */ sw $s2, 0x10($sp) -/* 098A84 80097E84 AFB1000C */ sw $s1, 0xc($sp) -/* 098A88 80097E88 AFB00008 */ sw $s0, 8($sp) -/* 098A8C 80097E8C AFA500FC */ sw $a1, 0xfc($sp) -/* 098A90 80097E90 14200003 */ bnez $at, .L80097EA0 -/* 098A94 80097E94 AFA60100 */ sw $a2, 0x100($sp) -/* 098A98 80097E98 100001A3 */ b .L80098528 -/* 098A9C 80097E9C 00801025 */ move $v0, $a0 -.L80097EA0: -/* 098AA0 80097EA0 8FA3011C */ lw $v1, 0x11c($sp) -/* 098AA4 80097EA4 8FA5010C */ lw $a1, 0x10c($sp) -/* 098AA8 80097EA8 8FB40110 */ lw $s4, 0x110($sp) -/* 098AAC 80097EAC 00034042 */ srl $t0, $v1, 1 -/* 098AB0 80097EB0 00687823 */ subu $t7, $v1, $t0 -/* 098AB4 80097EB4 00E5082B */ sltu $at, $a3, $a1 -/* 098AB8 80097EB8 AFAF0080 */ sw $t7, 0x80($sp) -/* 098ABC 80097EBC AFAF00DC */ sw $t7, 0xdc($sp) -/* 098AC0 80097EC0 00E06025 */ move $t4, $a3 -/* 098AC4 80097EC4 10200197 */ beqz $at, .L80098524 -/* 098AC8 80097EC8 AFB400EC */ sw $s4, 0xec($sp) -.L80097ECC: -/* 098ACC 80097ECC 8FA5010C */ lw $a1, 0x10c($sp) -/* 098AD0 80097ED0 25990020 */ addiu $t9, $t4, 0x20 -/* 098AD4 80097ED4 8FAF0124 */ lw $t7, 0x124($sp) -/* 098AD8 80097ED8 00B9082B */ sltu $at, $a1, $t9 -/* 098ADC 80097EDC 1020007C */ beqz $at, .L800980D0 -/* 098AE0 80097EE0 240E0020 */ li $t6, 32 -/* 098AE4 80097EE4 00AC1023 */ subu $v0, $a1, $t4 -/* 098AE8 80097EE8 1040018E */ beqz $v0, .L80098524 -/* 098AEC 80097EEC 00409025 */ move $s2, $v0 -/* 098AF0 80097EF0 83A900FF */ lb $t1, 0xff($sp) -/* 098AF4 80097EF4 8FAE0124 */ lw $t6, 0x124($sp) -/* 098AF8 80097EF8 240F0020 */ li $t7, 32 -/* 098AFC 80097EFC 31380007 */ andi $t8, $t1, 7 -/* 098B00 80097F00 0018CD40 */ sll $t9, $t8, 0x15 -/* 098B04 80097F04 3C01FD00 */ lui $at, 0xfd00 -/* 098B08 80097F08 01EE1823 */ subu $v1, $t7, $t6 -/* 098B0C 80097F0C 03217825 */ or $t7, $t9, $at -/* 098B10 80097F10 03204825 */ move $t1, $t9 -/* 098B14 80097F14 8FB9011C */ lw $t9, 0x11c($sp) -/* 098B18 80097F18 3C010010 */ lui $at, 0x10 -/* 098B1C 80097F1C 01E1C025 */ or $t8, $t7, $at -/* 098B20 80097F20 AFAE0030 */ sw $t6, 0x30($sp) -/* 098B24 80097F24 272FFFFF */ addiu $t7, $t9, -1 -/* 098B28 80097F28 31EE0FFF */ andi $t6, $t7, 0xfff -/* 098B2C 80097F2C 030E9825 */ or $s3, $t8, $t6 -/* 098B30 80097F30 8FB800DC */ lw $t8, 0xdc($sp) -/* 098B34 80097F34 8FAD0080 */ lw $t5, 0x80($sp) -/* 098B38 80097F38 3C01F500 */ lui $at, 0xf500 -/* 098B3C 80097F3C 03030019 */ multu $t8, $v1 -/* 098B40 80097F40 01212825 */ or $a1, $t1, $at -/* 098B44 80097F44 3C010010 */ lui $at, 0x10 -/* 098B48 80097F48 01C07825 */ move $t7, $t6 -/* 098B4C 80097F4C 00A17025 */ or $t6, $a1, $at -/* 098B50 80097F50 01C02825 */ move $a1, $t6 -/* 098B54 80097F54 000DC140 */ sll $t8, $t5, 5 -/* 098B58 80097F58 00081080 */ sll $v0, $t0, 2 -/* 098B5C 80097F5C 00195880 */ sll $t3, $t9, 2 -/* 098B60 80097F60 03203825 */ move $a3, $t9 -/* 098B64 80097F64 0000A812 */ mflo $s5 -/* 098B68 80097F68 01003025 */ move $a2, $t0 -/* 098B6C 80097F6C 06A10003 */ bgez $s5, .L80097F7C -/* 098B70 80097F70 00157943 */ sra $t7, $s5, 5 -/* 098B74 80097F74 26A1001F */ addiu $at, $s5, 0x1f -/* 098B78 80097F78 00017943 */ sra $t7, $at, 5 -.L80097F7C: -/* 098B7C 80097F7C 01A30019 */ multu $t5, $v1 -/* 098B80 80097F80 01E0A825 */ move $s5, $t7 -/* 098B84 80097F84 01007825 */ move $t7, $t0 -/* 098B88 80097F88 000F7540 */ sll $t6, $t7, 0x15 -/* 098B8C 80097F8C AFAE0060 */ sw $t6, 0x60($sp) -/* 098B90 80097F90 00187A80 */ sll $t7, $t8, 0xa -/* 098B94 80097F94 00007012 */ mflo $t6 -/* 098B98 80097F98 00000000 */ nop -/* 098B9C 80097F9C 00000000 */ nop -/* 098BA0 80097FA0 01EE001A */ div $zero, $t7, $t6 -/* 098BA4 80097FA4 15C00002 */ bnez $t6, .L80097FB0 -/* 098BA8 80097FA8 00000000 */ nop -/* 098BAC 80097FAC 0007000D */ break 7 -.L80097FB0: -/* 098BB0 80097FB0 2401FFFF */ li $at, -1 -/* 098BB4 80097FB4 15C10004 */ bne $t6, $at, .L80097FC8 -/* 098BB8 80097FB8 3C018000 */ lui $at, 0x8000 -/* 098BBC 80097FBC 15E10002 */ bne $t7, $at, .L80097FC8 -/* 098BC0 80097FC0 00000000 */ nop -/* 098BC4 80097FC4 0006000D */ break 6 -.L80097FC8: -/* 098BC8 80097FC8 00007812 */ mflo $t7 -/* 098BCC 80097FCC 000F7400 */ sll $t6, $t7, 0x10 -/* 098BD0 80097FD0 35D80400 */ ori $t8, $t6, 0x400 -/* 098BD4 80097FD4 304F0FFF */ andi $t7, $v0, 0xfff -/* 098BD8 80097FD8 000F7300 */ sll $t6, $t7, 0xc -/* 098BDC 80097FDC AFB8005C */ sw $t8, 0x5c($sp) -/* 098BE0 80097FE0 31780FFF */ andi $t8, $t3, 0xfff -/* 098BE4 80097FE4 3C01F200 */ lui $at, 0xf200 -/* 098BE8 80097FE8 01C1B025 */ or $s6, $t6, $at -/* 098BEC 80097FEC 00187B00 */ sll $t7, $t8, 0xc -/* 098BF0 80097FF0 01C01025 */ move $v0, $t6 -/* 098BF4 80097FF4 03287023 */ subu $t6, $t9, $t0 -/* 098BF8 80097FF8 000EC840 */ sll $t9, $t6, 1 -/* 098BFC 80097FFC 3C010700 */ lui $at, 0x700 -/* 098C00 80098000 01030019 */ multu $t0, $v1 -/* 098C04 80098004 01E1B825 */ or $s7, $t7, $at -/* 098C08 80098008 27380009 */ addiu $t8, $t9, 9 -/* 098C0C 8009800C 01E05825 */ move $t3, $t7 -/* 098C10 80098010 001878C2 */ srl $t7, $t8, 3 -/* 098C14 80098014 31EE01FF */ andi $t6, $t7, 0x1ff -/* 098C18 80098018 000ECA40 */ sll $t9, $t6, 9 -/* 098C1C 8009801C 00E8C023 */ subu $t8, $a3, $t0 -/* 098C20 80098020 00187840 */ sll $t7, $t8, 1 -/* 098C24 80098024 25EE0009 */ addiu $t6, $t7, 9 -/* 098C28 80098028 00B9F025 */ or $fp, $a1, $t9 -/* 098C2C 8009802C 000EC8C2 */ srl $t9, $t6, 3 -/* 098C30 80098030 333801FF */ andi $t8, $t9, 0x1ff -/* 098C34 80098034 00187A40 */ sll $t7, $t8, 9 -/* 098C38 80098038 00AFF825 */ or $ra, $a1, $t7 -/* 098C3C 8009803C 00007812 */ mflo $t7 -/* 098C40 80098040 0008C940 */ sll $t9, $t0, 5 -/* 098C44 80098044 0019C280 */ sll $t8, $t9, 0xa -/* 098C48 80098048 030F001A */ div $zero, $t8, $t7 -/* 098C4C 8009804C 3C01F400 */ lui $at, 0xf400 -/* 098C50 80098050 00417025 */ or $t6, $v0, $at -/* 098C54 80098054 AFAE0040 */ sw $t6, 0x40($sp) -/* 098C58 80098058 8FAE0030 */ lw $t6, 0x30($sp) -/* 098C5C 8009805C 0000C812 */ mflo $t9 -/* 098C60 80098060 15E00002 */ bnez $t7, .L8009806C -/* 098C64 80098064 00000000 */ nop -/* 098C68 80098068 0007000D */ break 7 -.L8009806C: -/* 098C6C 8009806C 2401FFFF */ li $at, -1 -/* 098C70 80098070 15E10004 */ bne $t7, $at, .L80098084 -/* 098C74 80098074 3C018000 */ lui $at, 0x8000 -/* 098C78 80098078 17010002 */ bne $t8, $at, .L80098084 -/* 098C7C 8009807C 00000000 */ nop -/* 098C80 80098080 0006000D */ break 6 -.L80098084: -/* 098C84 80098084 010E0019 */ multu $t0, $t6 -/* 098C88 80098088 0019C400 */ sll $t8, $t9, 0x10 -/* 098C8C 8009808C 370F0400 */ ori $t7, $t8, 0x400 -/* 098C90 80098090 AFAF003C */ sw $t7, 0x3c($sp) -/* 098C94 80098094 0006C040 */ sll $t8, $a2, 1 -/* 098C98 80098098 270F0009 */ addiu $t7, $t8, 9 -/* 098C9C 8009809C 000F70C2 */ srl $t6, $t7, 3 -/* 098CA0 800980A0 00008812 */ mflo $s1 -/* 098CA4 800980A4 06210003 */ bgez $s1, .L800980B4 -/* 098CA8 800980A8 0011C943 */ sra $t9, $s1, 5 -/* 098CAC 800980AC 2621001F */ addiu $at, $s1, 0x1f -/* 098CB0 800980B0 0001C943 */ sra $t9, $at, 5 -.L800980B4: -/* 098CB4 800980B4 03208825 */ move $s1, $t9 -/* 098CB8 800980B8 31D901FF */ andi $t9, $t6, 0x1ff -/* 098CBC 800980BC 0019C240 */ sll $t8, $t9, 9 -/* 098CC0 800980C0 3C010700 */ lui $at, 0x700 -/* 098CC4 800980C4 00418025 */ or $s0, $v0, $at -/* 098CC8 800980C8 10000077 */ b .L800982A8 -/* 098CCC 800980CC 00B85025 */ or $t2, $a1, $t8 -.L800980D0: -/* 098CD0 800980D0 83A900FF */ lb $t1, 0xff($sp) -/* 098CD4 800980D4 01CF1823 */ subu $v1, $t6, $t7 -/* 098CD8 800980D8 3C01FD00 */ lui $at, 0xfd00 -/* 098CDC 800980DC 31390007 */ andi $t9, $t1, 7 -/* 098CE0 800980E0 0019C540 */ sll $t8, $t9, 0x15 -/* 098CE4 800980E4 03004825 */ move $t1, $t8 -/* 098CE8 800980E8 03017025 */ or $t6, $t8, $at -/* 098CEC 800980EC 8FB8011C */ lw $t8, 0x11c($sp) -/* 098CF0 800980F0 3C010010 */ lui $at, 0x10 -/* 098CF4 800980F4 01C1C825 */ or $t9, $t6, $at -/* 098CF8 800980F8 AFAF0030 */ sw $t7, 0x30($sp) -/* 098CFC 800980FC 270EFFFF */ addiu $t6, $t8, -1 -/* 098D00 80098100 31CF0FFF */ andi $t7, $t6, 0xfff -/* 098D04 80098104 032F9825 */ or $s3, $t9, $t7 -/* 098D08 80098108 8FB900DC */ lw $t9, 0xdc($sp) -/* 098D0C 8009810C 8FAD0080 */ lw $t5, 0x80($sp) -/* 098D10 80098110 3C01F500 */ lui $at, 0xf500 -/* 098D14 80098114 03230019 */ multu $t9, $v1 -/* 098D18 80098118 01212825 */ or $a1, $t1, $at -/* 098D1C 8009811C 3C010010 */ lui $at, 0x10 -/* 098D20 80098120 01E07025 */ move $t6, $t7 -/* 098D24 80098124 00A17825 */ or $t7, $a1, $at -/* 098D28 80098128 01E02825 */ move $a1, $t7 -/* 098D2C 8009812C 000DC940 */ sll $t9, $t5, 5 -/* 098D30 80098130 00081080 */ sll $v0, $t0, 2 -/* 098D34 80098134 00185880 */ sll $t3, $t8, 2 -/* 098D38 80098138 03003825 */ move $a3, $t8 -/* 098D3C 8009813C 0000A812 */ mflo $s5 -/* 098D40 80098140 01003025 */ move $a2, $t0 -/* 098D44 80098144 24120020 */ li $s2, 32 -/* 098D48 80098148 01A30019 */ multu $t5, $v1 -/* 098D4C 8009814C 06A10003 */ bgez $s5, .L8009815C -/* 098D50 80098150 00157143 */ sra $t6, $s5, 5 -/* 098D54 80098154 26A1001F */ addiu $at, $s5, 0x1f -/* 098D58 80098158 00017143 */ sra $t6, $at, 5 -.L8009815C: -/* 098D5C 8009815C 01C0A825 */ move $s5, $t6 -/* 098D60 80098160 01007025 */ move $t6, $t0 -/* 098D64 80098164 000E7D40 */ sll $t7, $t6, 0x15 -/* 098D68 80098168 AFAF0060 */ sw $t7, 0x60($sp) -/* 098D6C 8009816C 00197280 */ sll $t6, $t9, 0xa -/* 098D70 80098170 00007812 */ mflo $t7 -/* 098D74 80098174 00000000 */ nop -/* 098D78 80098178 00000000 */ nop -/* 098D7C 8009817C 01CF001A */ div $zero, $t6, $t7 -/* 098D80 80098180 15E00002 */ bnez $t7, .L8009818C -/* 098D84 80098184 00000000 */ nop -/* 098D88 80098188 0007000D */ break 7 -.L8009818C: -/* 098D8C 8009818C 2401FFFF */ li $at, -1 -/* 098D90 80098190 15E10004 */ bne $t7, $at, .L800981A4 -/* 098D94 80098194 3C018000 */ lui $at, 0x8000 -/* 098D98 80098198 15C10002 */ bne $t6, $at, .L800981A4 -/* 098D9C 8009819C 00000000 */ nop -/* 098DA0 800981A0 0006000D */ break 6 -.L800981A4: -/* 098DA4 800981A4 00007012 */ mflo $t6 -/* 098DA8 800981A8 000E7C00 */ sll $t7, $t6, 0x10 -/* 098DAC 800981AC 35F90400 */ ori $t9, $t7, 0x400 -/* 098DB0 800981B0 304E0FFF */ andi $t6, $v0, 0xfff -/* 098DB4 800981B4 000E7B00 */ sll $t7, $t6, 0xc -/* 098DB8 800981B8 AFB9005C */ sw $t9, 0x5c($sp) -/* 098DBC 800981BC 31790FFF */ andi $t9, $t3, 0xfff -/* 098DC0 800981C0 3C01F200 */ lui $at, 0xf200 -/* 098DC4 800981C4 01E1B025 */ or $s6, $t7, $at -/* 098DC8 800981C8 00197300 */ sll $t6, $t9, 0xc -/* 098DCC 800981CC 01E01025 */ move $v0, $t7 -/* 098DD0 800981D0 03087823 */ subu $t7, $t8, $t0 -/* 098DD4 800981D4 000FC040 */ sll $t8, $t7, 1 -/* 098DD8 800981D8 3C010700 */ lui $at, 0x700 -/* 098DDC 800981DC 01030019 */ multu $t0, $v1 -/* 098DE0 800981E0 01C1B825 */ or $s7, $t6, $at -/* 098DE4 800981E4 27190009 */ addiu $t9, $t8, 9 -/* 098DE8 800981E8 01C05825 */ move $t3, $t6 -/* 098DEC 800981EC 001970C2 */ srl $t6, $t9, 3 -/* 098DF0 800981F0 31CF01FF */ andi $t7, $t6, 0x1ff -/* 098DF4 800981F4 000FC240 */ sll $t8, $t7, 9 -/* 098DF8 800981F8 00E8C823 */ subu $t9, $a3, $t0 -/* 098DFC 800981FC 00197040 */ sll $t6, $t9, 1 -/* 098E00 80098200 25CF0009 */ addiu $t7, $t6, 9 -/* 098E04 80098204 00B8F025 */ or $fp, $a1, $t8 -/* 098E08 80098208 000FC0C2 */ srl $t8, $t7, 3 -/* 098E0C 8009820C 331901FF */ andi $t9, $t8, 0x1ff -/* 098E10 80098210 00197240 */ sll $t6, $t9, 9 -/* 098E14 80098214 00AEF825 */ or $ra, $a1, $t6 -/* 098E18 80098218 00007012 */ mflo $t6 -/* 098E1C 8009821C 0008C140 */ sll $t8, $t0, 5 -/* 098E20 80098220 0018CA80 */ sll $t9, $t8, 0xa -/* 098E24 80098224 032E001A */ div $zero, $t9, $t6 -/* 098E28 80098228 3C01F400 */ lui $at, 0xf400 -/* 098E2C 8009822C 00417825 */ or $t7, $v0, $at -/* 098E30 80098230 AFAF0040 */ sw $t7, 0x40($sp) -/* 098E34 80098234 8FAF0030 */ lw $t7, 0x30($sp) -/* 098E38 80098238 0000C012 */ mflo $t8 -/* 098E3C 8009823C 15C00002 */ bnez $t6, .L80098248 -/* 098E40 80098240 00000000 */ nop -/* 098E44 80098244 0007000D */ break 7 -.L80098248: -/* 098E48 80098248 2401FFFF */ li $at, -1 -/* 098E4C 8009824C 15C10004 */ bne $t6, $at, .L80098260 -/* 098E50 80098250 3C018000 */ lui $at, 0x8000 -/* 098E54 80098254 17210002 */ bne $t9, $at, .L80098260 -/* 098E58 80098258 00000000 */ nop -/* 098E5C 8009825C 0006000D */ break 6 -.L80098260: -/* 098E60 80098260 010F0019 */ multu $t0, $t7 -/* 098E64 80098264 0018CC00 */ sll $t9, $t8, 0x10 -/* 098E68 80098268 372E0400 */ ori $t6, $t9, 0x400 -/* 098E6C 8009826C AFAE003C */ sw $t6, 0x3c($sp) -/* 098E70 80098270 0006C840 */ sll $t9, $a2, 1 -/* 098E74 80098274 272E0009 */ addiu $t6, $t9, 9 -/* 098E78 80098278 000E78C2 */ srl $t7, $t6, 3 -/* 098E7C 8009827C 00008812 */ mflo $s1 -/* 098E80 80098280 06210003 */ bgez $s1, .L80098290 -/* 098E84 80098284 0011C143 */ sra $t8, $s1, 5 -/* 098E88 80098288 2621001F */ addiu $at, $s1, 0x1f -/* 098E8C 8009828C 0001C143 */ sra $t8, $at, 5 -.L80098290: -/* 098E90 80098290 03008825 */ move $s1, $t8 -/* 098E94 80098294 31F801FF */ andi $t8, $t7, 0x1ff -/* 098E98 80098298 0018CA40 */ sll $t9, $t8, 9 -/* 098E9C 8009829C 3C010700 */ lui $at, 0x700 -/* 098EA0 800982A0 00418025 */ or $s0, $v0, $at -/* 098EA4 800982A4 00B95025 */ or $t2, $a1, $t9 -.L800982A8: -/* 098EA8 800982A8 00801825 */ move $v1, $a0 -/* 098EAC 800982AC AC730000 */ sw $s3, ($v1) -/* 098EB0 800982B0 8FAE0118 */ lw $t6, 0x118($sp) -/* 098EB4 800982B4 24840008 */ addiu $a0, $a0, 8 -/* 098EB8 800982B8 00802825 */ move $a1, $a0 -/* 098EBC 800982BC 3C0F0701 */ lui $t7, (0x07014050 >> 16) # lui $t7, 0x701 -/* 098EC0 800982C0 AC6E0004 */ sw $t6, 4($v1) -/* 098EC4 800982C4 35EF4050 */ ori $t7, (0x07014050 & 0xFFFF) # ori $t7, $t7, 0x4050 -/* 098EC8 800982C8 ACAF0004 */ sw $t7, 4($a1) -/* 098ECC 800982CC 24840008 */ addiu $a0, $a0, 8 -/* 098ED0 800982D0 00804825 */ move $t1, $a0 -/* 098ED4 800982D4 ACAA0000 */ sw $t2, ($a1) -/* 098ED8 800982D8 000C3080 */ sll $a2, $t4, 2 -/* 098EDC 800982DC 30D90FFF */ andi $t9, $a2, 0xfff -/* 098EE0 800982E0 24840008 */ addiu $a0, $a0, 8 -/* 098EE4 800982E4 3C01F400 */ lui $at, 0xf400 -/* 098EE8 800982E8 01923821 */ addu $a3, $t4, $s2 -/* 098EEC 800982EC 00077880 */ sll $t7, $a3, 2 -/* 098EF0 800982F0 03217025 */ or $t6, $t9, $at -/* 098EF4 800982F4 00801825 */ move $v1, $a0 -/* 098EF8 800982F8 3C18E600 */ lui $t8, 0xe600 -/* 098EFC 800982FC AD380000 */ sw $t8, ($t1) -/* 098F00 80098300 31E70FFF */ andi $a3, $t7, 0xfff -/* 098F04 80098304 03203025 */ move $a2, $t9 -/* 098F08 80098308 AD200004 */ sw $zero, 4($t1) -/* 098F0C 8009830C AC6E0000 */ sw $t6, ($v1) -/* 098F10 80098310 0207C825 */ or $t9, $s0, $a3 -/* 098F14 80098314 24840008 */ addiu $a0, $a0, 8 -/* 098F18 80098318 00802825 */ move $a1, $a0 -/* 098F1C 8009831C AC790004 */ sw $t9, 4($v1) -/* 098F20 80098320 24840008 */ addiu $a0, $a0, 8 -/* 098F24 80098324 00806825 */ move $t5, $a0 -/* 098F28 80098328 3C0EE700 */ lui $t6, 0xe700 -/* 098F2C 8009832C ACAE0000 */ sw $t6, ($a1) -/* 098F30 80098330 ACA00004 */ sw $zero, 4($a1) -/* 098F34 80098334 3C0F0001 */ lui $t7, (0x00014050 >> 16) # lui $t7, 1 -/* 098F38 80098338 35EF4050 */ ori $t7, (0x00014050 & 0xFFFF) # ori $t7, $t7, 0x4050 -/* 098F3C 8009833C 24840008 */ addiu $a0, $a0, 8 -/* 098F40 80098340 00801825 */ move $v1, $a0 -/* 098F44 80098344 ADAF0004 */ sw $t7, 4($t5) -/* 098F48 80098348 ADAA0000 */ sw $t2, ($t5) -/* 098F4C 8009834C 3C01F200 */ lui $at, 0xf200 -/* 098F50 80098350 00C1C025 */ or $t8, $a2, $at -/* 098F54 80098354 0047C825 */ or $t9, $v0, $a3 -/* 098F58 80098358 AC790004 */ sw $t9, 4($v1) -/* 098F5C 8009835C AC780000 */ sw $t8, ($v1) -/* 098F60 80098360 8FAE0114 */ lw $t6, 0x114($sp) -/* 098F64 80098364 02888021 */ addu $s0, $s4, $t0 -/* 098F68 80098368 0010C880 */ sll $t9, $s0, 2 -/* 098F6C 8009836C 01D24821 */ addu $t1, $t6, $s2 -/* 098F70 80098370 00097880 */ sll $t7, $t1, 2 -/* 098F74 80098374 31E90FFF */ andi $t1, $t7, 0xfff -/* 098F78 80098378 332E0FFF */ andi $t6, $t9, 0xfff -/* 098F7C 8009837C 000E7B00 */ sll $t7, $t6, 0xc -/* 098F80 80098380 3C01E400 */ lui $at, 0xe400 -/* 098F84 80098384 24840008 */ addiu $a0, $a0, 8 -/* 098F88 80098388 01E1C025 */ or $t8, $t7, $at -/* 098F8C 8009838C 0309C825 */ or $t9, $t8, $t1 -/* 098F90 80098390 00802825 */ move $a1, $a0 -/* 098F94 80098394 ACB90000 */ sw $t9, ($a1) -/* 098F98 80098398 8FAA0114 */ lw $t2, 0x114($sp) -/* 098F9C 8009839C 0234C021 */ addu $t8, $s1, $s4 -/* 098FA0 800983A0 0018C880 */ sll $t9, $t8, 2 -/* 098FA4 800983A4 000A7080 */ sll $t6, $t2, 2 -/* 098FA8 800983A8 31CA0FFF */ andi $t2, $t6, 0xfff -/* 098FAC 800983AC 332E0FFF */ andi $t6, $t9, 0xfff -/* 098FB0 800983B0 000E7B00 */ sll $t7, $t6, 0xc -/* 098FB4 800983B4 01EAC025 */ or $t8, $t7, $t2 -/* 098FB8 800983B8 ACB80004 */ sw $t8, 4($a1) -/* 098FBC 800983BC 24840008 */ addiu $a0, $a0, 8 -/* 098FC0 800983C0 00801025 */ move $v0, $a0 -/* 098FC4 800983C4 000C7140 */ sll $t6, $t4, 5 -/* 098FC8 800983C8 31C5FFFF */ andi $a1, $t6, 0xffff -/* 098FCC 800983CC 24840008 */ addiu $a0, $a0, 8 -/* 098FD0 800983D0 3C19B300 */ lui $t9, 0xb300 -/* 098FD4 800983D4 AC590000 */ sw $t9, ($v0) -/* 098FD8 800983D8 00801825 */ move $v1, $a0 -/* 098FDC 800983DC AC450004 */ sw $a1, 4($v0) -/* 098FE0 800983E0 3C18B200 */ lui $t8, 0xb200 -/* 098FE4 800983E4 AC780000 */ sw $t8, ($v1) -/* 098FE8 800983E8 8FB9003C */ lw $t9, 0x3c($sp) -/* 098FEC 800983EC 24840008 */ addiu $a0, $a0, 8 -/* 098FF0 800983F0 00806825 */ move $t5, $a0 -/* 098FF4 800983F4 AC790004 */ sw $t9, 4($v1) -/* 098FF8 800983F8 ADB30000 */ sw $s3, ($t5) -/* 098FFC 800983FC 8FAE0118 */ lw $t6, 0x118($sp) -/* 099000 80098400 24840008 */ addiu $a0, $a0, 8 -/* 099004 80098404 00801025 */ move $v0, $a0 -/* 099008 80098408 3C0F0701 */ lui $t7, (0x07014050 >> 16) # lui $t7, 0x701 -/* 09900C 8009840C ADAE0004 */ sw $t6, 4($t5) -/* 099010 80098410 35EF4050 */ ori $t7, (0x07014050 & 0xFFFF) # ori $t7, $t7, 0x4050 -/* 099014 80098414 24840008 */ addiu $a0, $a0, 8 -/* 099018 80098418 00801825 */ move $v1, $a0 -/* 09901C 8009841C AC4F0004 */ sw $t7, 4($v0) -/* 099020 80098420 AC5F0000 */ sw $ra, ($v0) -/* 099024 80098424 3C18E600 */ lui $t8, 0xe600 -/* 099028 80098428 AC780000 */ sw $t8, ($v1) -/* 09902C 8009842C AC600004 */ sw $zero, 4($v1) -/* 099030 80098430 8FB90040 */ lw $t9, 0x40($sp) -/* 099034 80098434 0200A025 */ move $s4, $s0 -/* 099038 80098438 24840008 */ addiu $a0, $a0, 8 -/* 09903C 8009843C 00808025 */ move $s0, $a0 -/* 099040 80098440 24840008 */ addiu $a0, $a0, 8 -/* 099044 80098444 02E77825 */ or $t7, $s7, $a3 -/* 099048 80098448 03267025 */ or $t6, $t9, $a2 -/* 09904C 8009844C AE0E0000 */ sw $t6, ($s0) -/* 099050 80098450 AE0F0004 */ sw $t7, 4($s0) -/* 099054 80098454 00801025 */ move $v0, $a0 -/* 099058 80098458 24840008 */ addiu $a0, $a0, 8 -/* 09905C 8009845C 3C18E700 */ lui $t8, 0xe700 -/* 099060 80098460 AC580000 */ sw $t8, ($v0) -/* 099064 80098464 00801825 */ move $v1, $a0 -/* 099068 80098468 3C190001 */ lui $t9, (0x00014050 >> 16) # lui $t9, 1 -/* 09906C 8009846C 37394050 */ ori $t9, (0x00014050 & 0xFFFF) # ori $t9, $t9, 0x4050 -/* 099070 80098470 AC400004 */ sw $zero, 4($v0) -/* 099074 80098474 AC790004 */ sw $t9, 4($v1) -/* 099078 80098478 24840008 */ addiu $a0, $a0, 8 -/* 09907C 8009847C 00806825 */ move $t5, $a0 -/* 099080 80098480 AC7E0000 */ sw $fp, ($v1) -/* 099084 80098484 02C67025 */ or $t6, $s6, $a2 -/* 099088 80098488 02B4C021 */ addu $t8, $s5, $s4 -/* 09908C 8009848C ADAE0000 */ sw $t6, ($t5) -/* 099090 80098490 01677825 */ or $t7, $t3, $a3 -/* 099094 80098494 0018C880 */ sll $t9, $t8, 2 -/* 099098 80098498 ADAF0004 */ sw $t7, 4($t5) -/* 09909C 8009849C 332E0FFF */ andi $t6, $t9, 0xfff -/* 0990A0 800984A0 000E7B00 */ sll $t7, $t6, 0xc -/* 0990A4 800984A4 01E1C025 */ or $t8, $t7, $at -/* 0990A8 800984A8 24840008 */ addiu $a0, $a0, 8 -/* 0990AC 800984AC 0309C825 */ or $t9, $t8, $t1 -/* 0990B0 800984B0 00147080 */ sll $t6, $s4, 2 -/* 0990B4 800984B4 31CF0FFF */ andi $t7, $t6, 0xfff -/* 0990B8 800984B8 00801025 */ move $v0, $a0 -/* 0990BC 800984BC AC590000 */ sw $t9, ($v0) -/* 0990C0 800984C0 000FC300 */ sll $t8, $t7, 0xc -/* 0990C4 800984C4 030AC825 */ or $t9, $t8, $t2 -/* 0990C8 800984C8 AC590004 */ sw $t9, 4($v0) -/* 0990CC 800984CC 24840008 */ addiu $a0, $a0, 8 -/* 0990D0 800984D0 00801025 */ move $v0, $a0 -/* 0990D4 800984D4 3C0EB300 */ lui $t6, 0xb300 -/* 0990D8 800984D8 AC4E0000 */ sw $t6, ($v0) -/* 0990DC 800984DC 8FAF0060 */ lw $t7, 0x60($sp) -/* 0990E0 800984E0 24840008 */ addiu $a0, $a0, 8 -/* 0990E4 800984E4 00801825 */ move $v1, $a0 -/* 0990E8 800984E8 01E5C025 */ or $t8, $t7, $a1 -/* 0990EC 800984EC AC580004 */ sw $t8, 4($v0) -/* 0990F0 800984F0 3C19B200 */ lui $t9, 0xb200 -/* 0990F4 800984F4 AC790000 */ sw $t9, ($v1) -/* 0990F8 800984F8 8FAE005C */ lw $t6, 0x5c($sp) -/* 0990FC 800984FC 258C0020 */ addiu $t4, $t4, 0x20 -/* 099100 80098500 24840008 */ addiu $a0, $a0, 8 -/* 099104 80098504 AC6E0004 */ sw $t6, 4($v1) -/* 099108 80098508 8FB9010C */ lw $t9, 0x10c($sp) -/* 09910C 8009850C 8FAF0114 */ lw $t7, 0x114($sp) -/* 099110 80098510 8FB400EC */ lw $s4, 0xec($sp) -/* 099114 80098514 0199082B */ sltu $at, $t4, $t9 -/* 099118 80098518 25F80020 */ addiu $t8, $t7, 0x20 -/* 09911C 8009851C 1420FE6B */ bnez $at, .L80097ECC -/* 099120 80098520 AFB80114 */ sw $t8, 0x114($sp) -.L80098524: -/* 099124 80098524 00801025 */ move $v0, $a0 -.L80098528: -/* 099128 80098528 8FBF002C */ lw $ra, 0x2c($sp) -/* 09912C 8009852C 8FB00008 */ lw $s0, 8($sp) -/* 099130 80098530 8FB1000C */ lw $s1, 0xc($sp) -/* 099134 80098534 8FB20010 */ lw $s2, 0x10($sp) -/* 099138 80098538 8FB30014 */ lw $s3, 0x14($sp) -/* 09913C 8009853C 8FB40018 */ lw $s4, 0x18($sp) -/* 099140 80098540 8FB5001C */ lw $s5, 0x1c($sp) -/* 099144 80098544 8FB60020 */ lw $s6, 0x20($sp) -/* 099148 80098548 8FB70024 */ lw $s7, 0x24($sp) -/* 09914C 8009854C 8FBE0028 */ lw $fp, 0x28($sp) -/* 099150 80098550 03E00008 */ jr $ra -/* 099154 80098554 27BD00F8 */ addiu $sp, $sp, 0xf8 diff --git a/asm/non_matchings/code_80091750/func_800A97BC.s b/asm/non_matchings/code_80091750/func_800A97BC.s deleted file mode 100644 index 109d4754d..000000000 --- a/asm/non_matchings/code_80091750/func_800A97BC.s +++ /dev/null @@ -1,223 +0,0 @@ -glabel func_800A97BC -/* 0AA3BC 800A97BC 3C05800F */ lui $a1, %hi(D_800E86D0) # $a1, 0x800f -/* 0AA3C0 800A97C0 24A586D0 */ addiu $a1, %lo(D_800E86D0) # addiu $a1, $a1, -0x7930 -/* 0AA3C4 800A97C4 80A20000 */ lb $v0, ($a1) -/* 0AA3C8 800A97C8 24060001 */ li $a2, 1 -/* 0AA3CC 800A97CC 24010002 */ li $at, 2 -/* 0AA3D0 800A97D0 50460006 */ beql $v0, $a2, .L800A97EC -/* 0AA3D4 800A97D4 8C8E0010 */ lw $t6, 0x10($a0) -/* 0AA3D8 800A97D8 5041005A */ beql $v0, $at, .L800A9944 -/* 0AA3DC 800A97DC 8C8B0010 */ lw $t3, 0x10($a0) -/* 0AA3E0 800A97E0 03E00008 */ jr $ra -/* 0AA3E4 800A97E4 A0A00000 */ sb $zero, ($a1) - -/* 0AA3E8 800A97E8 8C8E0010 */ lw $t6, 0x10($a0) -.L800A97EC: -/* 0AA3EC 800A97EC 24190069 */ li $t9, 105 -/* 0AA3F0 800A97F0 3C03800F */ lui $v1, %hi(D_800E86C4) # $v1, 0x800f -/* 0AA3F4 800A97F4 25CFFFFE */ addiu $t7, $t6, -2 -/* 0AA3F8 800A97F8 29E10060 */ slti $at, $t7, 0x60 -/* 0AA3FC 800A97FC 102000A4 */ beqz $at, .L800A9A90 -/* 0AA400 800A9800 AC8F0010 */ sw $t7, 0x10($a0) -/* 0AA404 800A9804 AC990010 */ sw $t9, 0x10($a0) -/* 0AA408 800A9808 A0A00000 */ sb $zero, ($a1) -/* 0AA40C 800A980C 3C04800F */ lui $a0, %hi(D_800E86C4 + 7) # $a0, 0x800f -/* 0AA410 800A9810 3C09800F */ lui $t1, %hi(D_800E86C4 + 8) # $t1, 0x800f -/* 0AA414 800A9814 3C08800F */ lui $t0, %hi(D_800E86C4 + 4) # $t0, 0x800f -/* 0AA418 800A9818 3C07800F */ lui $a3, %hi(D_800E86C4 + 5) # $a3, 0x800f -/* 0AA41C 800A981C 3C06800F */ lui $a2, %hi(D_800E86C4 + 6) # $a2, 0x800f -/* 0AA420 800A9820 24C686CA */ addiu $a2, %lo(D_800E86C4 + 6) # addiu $a2, $a2, -0x7936 -/* 0AA424 800A9824 24E786C9 */ addiu $a3, %lo(D_800E86C4 + 5) # addiu $a3, $a3, -0x7937 -/* 0AA428 800A9828 250886C8 */ addiu $t0, %lo(D_800E86C4 + 4) # addiu $t0, $t0, -0x7938 -/* 0AA42C 800A982C 252986CC */ addiu $t1, %lo(D_800E86C4 + 8) # addiu $t1, $t1, -0x7934 -/* 0AA430 800A9830 248486CB */ addiu $a0, %lo(D_800E86C4 + 7) # addiu $a0, $a0, -0x7935 -/* 0AA434 800A9834 24050010 */ li $a1, 16 -/* 0AA438 800A9838 246386C4 */ addiu $v1, %lo(D_800E86C4) # addiu $v1, $v1, -0x793c -/* 0AA43C 800A983C 0064082B */ sltu $at, $v1, $a0 -.L800A9840: -/* 0AA440 800A9840 50200005 */ beql $at, $zero, .L800A9858 -/* 0AA444 800A9844 8062FFFF */ lb $v0, -1($v1) -/* 0AA448 800A9848 806A0001 */ lb $t2, 1($v1) -/* 0AA44C 800A984C 10000009 */ b .L800A9874 -/* 0AA450 800A9850 A06A0000 */ sb $t2, ($v1) -/* 0AA454 800A9854 8062FFFF */ lb $v0, -1($v1) -.L800A9858: -/* 0AA458 800A9858 10A20003 */ beq $a1, $v0, .L800A9868 -/* 0AA45C 800A985C 00000000 */ nop -/* 0AA460 800A9860 14400003 */ bnez $v0, .L800A9870 -/* 0AA464 800A9864 244B0001 */ addiu $t3, $v0, 1 -.L800A9868: -/* 0AA468 800A9868 10000002 */ b .L800A9874 -/* 0AA46C 800A986C A0600000 */ sb $zero, ($v1) -.L800A9870: -/* 0AA470 800A9870 A06B0000 */ sb $t3, ($v1) -.L800A9874: -/* 0AA474 800A9874 0066082B */ sltu $at, $v1, $a2 -/* 0AA478 800A9878 50200005 */ beql $at, $zero, .L800A9890 -/* 0AA47C 800A987C 80620000 */ lb $v0, ($v1) -/* 0AA480 800A9880 806C0002 */ lb $t4, 2($v1) -/* 0AA484 800A9884 10000009 */ b .L800A98AC -/* 0AA488 800A9888 A06C0001 */ sb $t4, 1($v1) -/* 0AA48C 800A988C 80620000 */ lb $v0, ($v1) -.L800A9890: -/* 0AA490 800A9890 10A20003 */ beq $a1, $v0, .L800A98A0 -/* 0AA494 800A9894 00000000 */ nop -/* 0AA498 800A9898 14400003 */ bnez $v0, .L800A98A8 -/* 0AA49C 800A989C 244D0001 */ addiu $t5, $v0, 1 -.L800A98A0: -/* 0AA4A0 800A98A0 10000002 */ b .L800A98AC -/* 0AA4A4 800A98A4 A0600001 */ sb $zero, 1($v1) -.L800A98A8: -/* 0AA4A8 800A98A8 A06D0001 */ sb $t5, 1($v1) -.L800A98AC: -/* 0AA4AC 800A98AC 0067082B */ sltu $at, $v1, $a3 -/* 0AA4B0 800A98B0 50200005 */ beql $at, $zero, .L800A98C8 -/* 0AA4B4 800A98B4 80620001 */ lb $v0, 1($v1) -/* 0AA4B8 800A98B8 806E0003 */ lb $t6, 3($v1) -/* 0AA4BC 800A98BC 10000009 */ b .L800A98E4 -/* 0AA4C0 800A98C0 A06E0002 */ sb $t6, 2($v1) -/* 0AA4C4 800A98C4 80620001 */ lb $v0, 1($v1) -.L800A98C8: -/* 0AA4C8 800A98C8 10A20003 */ beq $a1, $v0, .L800A98D8 -/* 0AA4CC 800A98CC 00000000 */ nop -/* 0AA4D0 800A98D0 14400003 */ bnez $v0, .L800A98E0 -/* 0AA4D4 800A98D4 244F0001 */ addiu $t7, $v0, 1 -.L800A98D8: -/* 0AA4D8 800A98D8 10000002 */ b .L800A98E4 -/* 0AA4DC 800A98DC A0600002 */ sb $zero, 2($v1) -.L800A98E0: -/* 0AA4E0 800A98E0 A06F0002 */ sb $t7, 2($v1) -.L800A98E4: -/* 0AA4E4 800A98E4 0068082B */ sltu $at, $v1, $t0 -/* 0AA4E8 800A98E8 50200005 */ beql $at, $zero, .L800A9900 -/* 0AA4EC 800A98EC 80620002 */ lb $v0, 2($v1) -/* 0AA4F0 800A98F0 80780004 */ lb $t8, 4($v1) -/* 0AA4F4 800A98F4 10000009 */ b .L800A991C -/* 0AA4F8 800A98F8 A0780003 */ sb $t8, 3($v1) -/* 0AA4FC 800A98FC 80620002 */ lb $v0, 2($v1) -.L800A9900: -/* 0AA500 800A9900 10A20003 */ beq $a1, $v0, .L800A9910 -/* 0AA504 800A9904 00000000 */ nop -/* 0AA508 800A9908 14400003 */ bnez $v0, .L800A9918 -/* 0AA50C 800A990C 24590001 */ addiu $t9, $v0, 1 -.L800A9910: -/* 0AA510 800A9910 10000002 */ b .L800A991C -/* 0AA514 800A9914 A0600003 */ sb $zero, 3($v1) -.L800A9918: -/* 0AA518 800A9918 A0790003 */ sb $t9, 3($v1) -.L800A991C: -/* 0AA51C 800A991C 24630004 */ addiu $v1, $v1, 4 -/* 0AA520 800A9920 5469FFC7 */ bnel $v1, $t1, .L800A9840 -/* 0AA524 800A9924 0064082B */ sltu $at, $v1, $a0 -/* 0AA528 800A9928 3C02800F */ lui $v0, %hi(D_800E86C4) # $v0, 0x800f -/* 0AA52C 800A992C 244286C4 */ addiu $v0, %lo(D_800E86C4) # addiu $v0, $v0, -0x793c -/* 0AA530 800A9930 A0400008 */ sb $zero, 8($v0) -/* 0AA534 800A9934 804A0008 */ lb $t2, 8($v0) -/* 0AA538 800A9938 03E00008 */ jr $ra -/* 0AA53C 800A993C A04A0000 */ sb $t2, ($v0) - -/* 0AA540 800A9940 8C8B0010 */ lw $t3, 0x10($a0) -.L800A9944: -/* 0AA544 800A9944 240E0069 */ li $t6, 105 -/* 0AA548 800A9948 3C03800F */ lui $v1, %hi(D_800E86C4 + 8) # $v1, 0x800f -/* 0AA54C 800A994C 256C0002 */ addiu $t4, $t3, 2 -/* 0AA550 800A9950 29810073 */ slti $at, $t4, 0x73 -/* 0AA554 800A9954 1420004E */ bnez $at, .L800A9A90 -/* 0AA558 800A9958 AC8C0010 */ sw $t4, 0x10($a0) -/* 0AA55C 800A995C AC8E0010 */ sw $t6, 0x10($a0) -/* 0AA560 800A9960 A0A00000 */ sb $zero, ($a1) -/* 0AA564 800A9964 3C05800F */ lui $a1, %hi(D_800E86C4 + 3) # $a1, 0x800f -/* 0AA568 800A9968 3C04800F */ lui $a0, %hi(D_800E86C4 + 2) # $a0, 0x800f -/* 0AA56C 800A996C 3C09800F */ lui $t1, %hi(D_800E86C4) # $t1, 0x800f -/* 0AA570 800A9970 3C08800F */ lui $t0, %hi(D_800E86C4 + 5) # $t0, 0x800f -/* 0AA574 800A9974 3C07800F */ lui $a3, %hi(D_800E86C4 + 4) # $a3, 0x800f -/* 0AA578 800A9978 24E786C8 */ addiu $a3, %lo(D_800E86C4 + 4) # addiu $a3, $a3, -0x7938 -/* 0AA57C 800A997C 250886C9 */ addiu $t0, %lo(D_800E86C4 + 5) # addiu $t0, $t0, -0x7937 -/* 0AA580 800A9980 252986C4 */ addiu $t1, %lo(D_800E86C4) # addiu $t1, $t1, -0x793c -/* 0AA584 800A9984 248486C6 */ addiu $a0, %lo(D_800E86C4 + 2) # addiu $a0, $a0, -0x793a -/* 0AA588 800A9988 24A586C7 */ addiu $a1, %lo(D_800E86C4 + 3) # addiu $a1, $a1, -0x7939 -/* 0AA58C 800A998C 246386CC */ addiu $v1, %lo(D_800E86C4 + 8) # addiu $v1, $v1, -0x7934 -/* 0AA590 800A9990 0064082B */ sltu $at, $v1, $a0 -.L800A9994: -/* 0AA594 800A9994 54200005 */ bnel $at, $zero, .L800A99AC -/* 0AA598 800A9998 80620001 */ lb $v0, 1($v1) -/* 0AA59C 800A999C 806FFFFF */ lb $t7, -1($v1) -/* 0AA5A0 800A99A0 10000009 */ b .L800A99C8 -/* 0AA5A4 800A99A4 A06F0000 */ sb $t7, ($v1) -/* 0AA5A8 800A99A8 80620001 */ lb $v0, 1($v1) -.L800A99AC: -/* 0AA5AC 800A99AC 10C20003 */ beq $a2, $v0, .L800A99BC -/* 0AA5B0 800A99B0 00000000 */ nop -/* 0AA5B4 800A99B4 14400003 */ bnez $v0, .L800A99C4 -/* 0AA5B8 800A99B8 2458FFFF */ addiu $t8, $v0, -1 -.L800A99BC: -/* 0AA5BC 800A99BC 10000002 */ b .L800A99C8 -/* 0AA5C0 800A99C0 A0600000 */ sb $zero, ($v1) -.L800A99C4: -/* 0AA5C4 800A99C4 A0780000 */ sb $t8, ($v1) -.L800A99C8: -/* 0AA5C8 800A99C8 0065082B */ sltu $at, $v1, $a1 -/* 0AA5CC 800A99CC 54200005 */ bnel $at, $zero, .L800A99E4 -/* 0AA5D0 800A99D0 80620000 */ lb $v0, ($v1) -/* 0AA5D4 800A99D4 8079FFFE */ lb $t9, -2($v1) -/* 0AA5D8 800A99D8 10000009 */ b .L800A9A00 -/* 0AA5DC 800A99DC A079FFFF */ sb $t9, -1($v1) -/* 0AA5E0 800A99E0 80620000 */ lb $v0, ($v1) -.L800A99E4: -/* 0AA5E4 800A99E4 10C20003 */ beq $a2, $v0, .L800A99F4 -/* 0AA5E8 800A99E8 00000000 */ nop -/* 0AA5EC 800A99EC 14400003 */ bnez $v0, .L800A99FC -/* 0AA5F0 800A99F0 244AFFFF */ addiu $t2, $v0, -1 -.L800A99F4: -/* 0AA5F4 800A99F4 10000002 */ b .L800A9A00 -/* 0AA5F8 800A99F8 A060FFFF */ sb $zero, -1($v1) -.L800A99FC: -/* 0AA5FC 800A99FC A06AFFFF */ sb $t2, -1($v1) -.L800A9A00: -/* 0AA600 800A9A00 0067082B */ sltu $at, $v1, $a3 -/* 0AA604 800A9A04 54200005 */ bnel $at, $zero, .L800A9A1C -/* 0AA608 800A9A08 8062FFFF */ lb $v0, -1($v1) -/* 0AA60C 800A9A0C 806BFFFD */ lb $t3, -3($v1) -/* 0AA610 800A9A10 10000009 */ b .L800A9A38 -/* 0AA614 800A9A14 A06BFFFE */ sb $t3, -2($v1) -/* 0AA618 800A9A18 8062FFFF */ lb $v0, -1($v1) -.L800A9A1C: -/* 0AA61C 800A9A1C 10C20003 */ beq $a2, $v0, .L800A9A2C -/* 0AA620 800A9A20 00000000 */ nop -/* 0AA624 800A9A24 14400003 */ bnez $v0, .L800A9A34 -/* 0AA628 800A9A28 244CFFFF */ addiu $t4, $v0, -1 -.L800A9A2C: -/* 0AA62C 800A9A2C 10000002 */ b .L800A9A38 -/* 0AA630 800A9A30 A060FFFE */ sb $zero, -2($v1) -.L800A9A34: -/* 0AA634 800A9A34 A06CFFFE */ sb $t4, -2($v1) -.L800A9A38: -/* 0AA638 800A9A38 0068082B */ sltu $at, $v1, $t0 -/* 0AA63C 800A9A3C 54200005 */ bnel $at, $zero, .L800A9A54 -/* 0AA640 800A9A40 8062FFFE */ lb $v0, -2($v1) -/* 0AA644 800A9A44 806DFFFC */ lb $t5, -4($v1) -/* 0AA648 800A9A48 10000009 */ b .L800A9A70 -/* 0AA64C 800A9A4C A06DFFFD */ sb $t5, -3($v1) -/* 0AA650 800A9A50 8062FFFE */ lb $v0, -2($v1) -.L800A9A54: -/* 0AA654 800A9A54 10C20003 */ beq $a2, $v0, .L800A9A64 -/* 0AA658 800A9A58 00000000 */ nop -/* 0AA65C 800A9A5C 14400003 */ bnez $v0, .L800A9A6C -/* 0AA660 800A9A60 244EFFFF */ addiu $t6, $v0, -1 -.L800A9A64: -/* 0AA664 800A9A64 10000002 */ b .L800A9A70 -/* 0AA668 800A9A68 A060FFFD */ sb $zero, -3($v1) -.L800A9A6C: -/* 0AA66C 800A9A6C A06EFFFD */ sb $t6, -3($v1) -.L800A9A70: -/* 0AA670 800A9A70 2463FFFC */ addiu $v1, $v1, -4 -/* 0AA674 800A9A74 5469FFC7 */ bnel $v1, $t1, .L800A9994 -/* 0AA678 800A9A78 0064082B */ sltu $at, $v1, $a0 -/* 0AA67C 800A9A7C 3C02800F */ lui $v0, %hi(D_800E86C4) # $v0, 0x800f -/* 0AA680 800A9A80 244286C4 */ addiu $v0, %lo(D_800E86C4) # addiu $v0, $v0, -0x793c -/* 0AA684 800A9A84 A0400008 */ sb $zero, 8($v0) -/* 0AA688 800A9A88 804F0008 */ lb $t7, 8($v0) -/* 0AA68C 800A9A8C A04F0000 */ sb $t7, ($v0) -.L800A9A90: -/* 0AA690 800A9A90 03E00008 */ jr $ra -/* 0AA694 800A9A94 00000000 */ nop diff --git a/asm/non_matchings/code_800AF9B0/func_800AFE00.s b/asm/non_matchings/code_800AF9B0/func_800AFE00.s deleted file mode 100644 index e06b16471..000000000 --- a/asm/non_matchings/code_800AF9B0/func_800AFE00.s +++ /dev/null @@ -1,95 +0,0 @@ -glabel func_800AFE00 -/* 0B0A00 800AFE00 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0B0A04 800AFE04 AFA40030 */ sw $a0, 0x30($sp) -/* 0B0A08 800AFE08 14C00003 */ bnez $a2, .L800AFE18 -/* 0B0A0C 800AFE0C AFA50034 */ sw $a1, 0x34($sp) -/* 0B0A10 800AFE10 10000002 */ b .L800AFE1C -/* 0B0A14 800AFE14 00001025 */ move $v0, $zero -.L800AFE18: -/* 0B0A18 800AFE18 24C2FFFF */ addiu $v0, $a2, -1 -.L800AFE1C: -/* 0B0A1C 800AFE1C 14C70003 */ bne $a2, $a3, .L800AFE2C -/* 0B0A20 800AFE20 27A50014 */ addiu $a1, $sp, 0x14 -/* 0B0A24 800AFE24 10000002 */ b .L800AFE30 -/* 0B0A28 800AFE28 00E01825 */ move $v1, $a3 -.L800AFE2C: -/* 0B0A2C 800AFE2C 24C30001 */ addiu $v1, $a2, 1 -.L800AFE30: -/* 0B0A30 800AFE30 8FAE0034 */ lw $t6, 0x34($sp) -/* 0B0A34 800AFE34 00067880 */ sll $t7, $a2, 2 -/* 0B0A38 800AFE38 0002C080 */ sll $t8, $v0, 2 -/* 0B0A3C 800AFE3C 0003C880 */ sll $t9, $v1, 2 -/* 0B0A40 800AFE40 0323C823 */ subu $t9, $t9, $v1 -/* 0B0A44 800AFE44 0302C023 */ subu $t8, $t8, $v0 -/* 0B0A48 800AFE48 01E67823 */ subu $t7, $t7, $a2 -/* 0B0A4C 800AFE4C 000F7840 */ sll $t7, $t7, 1 -/* 0B0A50 800AFE50 0018C040 */ sll $t8, $t8, 1 -/* 0B0A54 800AFE54 0019C840 */ sll $t9, $t9, 1 -/* 0B0A58 800AFE58 27A2001A */ addiu $v0, $sp, 0x1a -/* 0B0A5C 800AFE5C 01D94821 */ addu $t1, $t6, $t9 -/* 0B0A60 800AFE60 01D84021 */ addu $t0, $t6, $t8 -/* 0B0A64 800AFE64 01CF3821 */ addu $a3, $t6, $t7 -.L800AFE68: -/* 0B0A68 800AFE68 84ED0000 */ lh $t5, ($a3) -/* 0B0A6C 800AFE6C 850F0000 */ lh $t7, ($t0) -/* 0B0A70 800AFE70 24A50002 */ addiu $a1, $a1, 2 -/* 0B0A74 800AFE74 24E70002 */ addiu $a3, $a3, 2 -/* 0B0A78 800AFE78 01AFC021 */ addu $t8, $t5, $t7 -/* 0B0A7C 800AFE7C 07010003 */ bgez $t8, .L800AFE8C -/* 0B0A80 800AFE80 00187043 */ sra $t6, $t8, 1 -/* 0B0A84 800AFE84 27010001 */ addiu $at, $t8, 1 -/* 0B0A88 800AFE88 00017043 */ sra $t6, $at, 1 -.L800AFE8C: -/* 0B0A8C 800AFE8C A4AEFFFE */ sh $t6, -2($a1) -/* 0B0A90 800AFE90 852D0000 */ lh $t5, ($t1) -/* 0B0A94 800AFE94 84F9FFFE */ lh $t9, -2($a3) -/* 0B0A98 800AFE98 25080002 */ addiu $t0, $t0, 2 -/* 0B0A9C 800AFE9C 25290002 */ addiu $t1, $t1, 2 -/* 0B0AA0 800AFEA0 032D7821 */ addu $t7, $t9, $t5 -/* 0B0AA4 800AFEA4 05E10003 */ bgez $t7, .L800AFEB4 -/* 0B0AA8 800AFEA8 000FC043 */ sra $t8, $t7, 1 -/* 0B0AAC 800AFEAC 25E10001 */ addiu $at, $t7, 1 -/* 0B0AB0 800AFEB0 0001C043 */ sra $t8, $at, 1 -.L800AFEB4: -/* 0B0AB4 800AFEB4 14A2FFEC */ bne $a1, $v0, .L800AFE68 -/* 0B0AB8 800AFEB8 A4B80004 */ sh $t8, 4($a1) -/* 0B0ABC 800AFEBC 8FA40030 */ lw $a0, 0x30($sp) -/* 0B0AC0 800AFEC0 00001825 */ move $v1, $zero -/* 0B0AC4 800AFEC4 240C01E0 */ li $t4, 480 -/* 0B0AC8 800AFEC8 24860010 */ addiu $a2, $a0, 0x10 -/* 0B0ACC 800AFECC 24880020 */ addiu $t0, $a0, 0x20 -/* 0B0AD0 800AFED0 248A0030 */ addiu $t2, $a0, 0x30 -.L800AFED4: -/* 0B0AD4 800AFED4 87B90014 */ lh $t9, 0x14($sp) -/* 0B0AD8 800AFED8 00031100 */ sll $v0, $v1, 4 -/* 0B0ADC 800AFEDC 00822821 */ addu $a1, $a0, $v0 -/* 0B0AE0 800AFEE0 A0B9000C */ sb $t9, 0xc($a1) -/* 0B0AE4 800AFEE4 87AD0016 */ lh $t5, 0x16($sp) -/* 0B0AE8 800AFEE8 00C23821 */ addu $a3, $a2, $v0 -/* 0B0AEC 800AFEEC 01024821 */ addu $t1, $t0, $v0 -/* 0B0AF0 800AFEF0 A0AD000D */ sb $t5, 0xd($a1) -/* 0B0AF4 800AFEF4 87AF0018 */ lh $t7, 0x18($sp) -/* 0B0AF8 800AFEF8 01425821 */ addu $t3, $t2, $v0 -/* 0B0AFC 800AFEFC 24630030 */ addiu $v1, $v1, 0x30 -/* 0B0B00 800AFF00 A0AF000E */ sb $t7, 0xe($a1) -/* 0B0B04 800AFF04 87B8001A */ lh $t8, 0x1a($sp) -/* 0B0B08 800AFF08 A0F8000C */ sb $t8, 0xc($a3) -/* 0B0B0C 800AFF0C 87AE001C */ lh $t6, 0x1c($sp) -/* 0B0B10 800AFF10 A0EE000D */ sb $t6, 0xd($a3) -/* 0B0B14 800AFF14 87B9001E */ lh $t9, 0x1e($sp) -/* 0B0B18 800AFF18 A0F9000E */ sb $t9, 0xe($a3) -/* 0B0B1C 800AFF1C 87AD0014 */ lh $t5, 0x14($sp) -/* 0B0B20 800AFF20 A12D000C */ sb $t5, 0xc($t1) -/* 0B0B24 800AFF24 87AF0016 */ lh $t7, 0x16($sp) -/* 0B0B28 800AFF28 A12F000D */ sb $t7, 0xd($t1) -/* 0B0B2C 800AFF2C 87B80018 */ lh $t8, 0x18($sp) -/* 0B0B30 800AFF30 A138000E */ sb $t8, 0xe($t1) -/* 0B0B34 800AFF34 87AE001A */ lh $t6, 0x1a($sp) -/* 0B0B38 800AFF38 A16E000C */ sb $t6, 0xc($t3) -/* 0B0B3C 800AFF3C 87B9001C */ lh $t9, 0x1c($sp) -/* 0B0B40 800AFF40 A179000D */ sb $t9, 0xd($t3) -/* 0B0B44 800AFF44 87AD001E */ lh $t5, 0x1e($sp) -/* 0B0B48 800AFF48 146CFFE2 */ bne $v1, $t4, .L800AFED4 -/* 0B0B4C 800AFF4C A16D000E */ sb $t5, 0xe($t3) -/* 0B0B50 800AFF50 03E00008 */ jr $ra -/* 0B0B54 800AFF54 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/save/func_800B69BC.s b/asm/non_matchings/save/func_800B69BC.s deleted file mode 100644 index 30e6e32b9..000000000 --- a/asm/non_matchings/save/func_800B69BC.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_800B69BC -/* 0B75BC 800B69BC 3C0E8019 */ lui $t6, %hi(D_8018EE10) # $t6, 0x8019 -/* 0B75C0 800B69C0 25CEEE10 */ addiu $t6, %lo(D_8018EE10) # addiu $t6, $t6, -0x11f0 -/* 0B75C4 800B69C4 000439C0 */ sll $a3, $a0, 7 -/* 0B75C8 800B69C8 00EE4021 */ addu $t0, $a3, $t6 -/* 0B75CC 800B69CC 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0B75D0 800B69D0 00802825 */ move $a1, $a0 -/* 0B75D4 800B69D4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0B75D8 800B69D8 A1000004 */ sb $zero, 4($t0) -/* 0B75DC 800B69DC A1000005 */ sb $zero, 5($t0) -/* 0B75E0 800B69E0 A1000006 */ sb $zero, 6($t0) -/* 0B75E4 800B69E4 2404003C */ li $a0, 60 -/* 0B75E8 800B69E8 01001825 */ move $v1, $t0 -/* 0B75EC 800B69EC 00001025 */ move $v0, $zero -.L800B69F0: -/* 0B75F0 800B69F0 244F0001 */ addiu $t7, $v0, 1 -/* 0B75F4 800B69F4 24580002 */ addiu $t8, $v0, 2 -/* 0B75F8 800B69F8 24590003 */ addiu $t9, $v0, 3 -/* 0B75FC 800B69FC A0620007 */ sb $v0, 7($v1) -/* 0B7600 800B6A00 24420004 */ addiu $v0, $v0, 4 -/* 0B7604 800B6A04 A079000A */ sb $t9, 0xa($v1) -/* 0B7608 800B6A08 A0780009 */ sb $t8, 9($v1) -/* 0B760C 800B6A0C A06F0008 */ sb $t7, 8($v1) -/* 0B7610 800B6A10 1444FFF7 */ bne $v0, $a0, .L800B69F0 -/* 0B7614 800B6A14 24630004 */ addiu $v1, $v1, 4 -/* 0B7618 800B6A18 00A02025 */ move $a0, $a1 -/* 0B761C 800B6A1C AFA70024 */ sw $a3, 0x24($sp) -/* 0B7620 800B6A20 0C02DA0A */ jal func_800B6828 -/* 0B7624 800B6A24 AFA80020 */ sw $t0, 0x20($sp) -/* 0B7628 800B6A28 8FA80020 */ lw $t0, 0x20($sp) -/* 0B762C 800B6A2C 3C048019 */ lui $a0, %hi(gControllerPak1FileHandle) # $a0, 0x8019 -/* 0B7630 800B6A30 3C058019 */ lui $a1, %hi(gControllerPak1FileNote) # $a1, 0x8019 -/* 0B7634 800B6A34 24090080 */ li $t1, 128 -/* 0B7638 800B6A38 A102007F */ sb $v0, 0x7f($t0) -/* 0B763C 800B6A3C 8FA70024 */ lw $a3, 0x24($sp) -/* 0B7640 800B6A40 8CA5EB84 */ lw $a1, %lo(gControllerPak1FileNote)($a1) -/* 0B7644 800B6A44 AFA90010 */ sw $t1, 0x10($sp) -/* 0B7648 800B6A48 2484E868 */ addiu $a0, %lo(gControllerPak1FileHandle) # addiu $a0, $a0, -0x1798 -/* 0B764C 800B6A4C 24060001 */ li $a2, 1 -/* 0B7650 800B6A50 0C0340F3 */ jal osPfsReadWriteFile -/* 0B7654 800B6A54 AFA80014 */ sw $t0, 0x14($sp) -/* 0B7658 800B6A58 8FBF001C */ lw $ra, 0x1c($sp) -/* 0B765C 800B6A5C 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0B7660 800B6A60 03E00008 */ jr $ra -/* 0B7664 800B6A64 00000000 */ nop diff --git a/asm/non_matchings/update_objects/func_8007C360.s b/asm/non_matchings/update_objects/func_8007C360.s deleted file mode 100644 index abed9a642..000000000 --- a/asm/non_matchings/update_objects/func_8007C360.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_8007C360 -/* 07CF60 8007C360 000470C0 */ sll $t6, $a0, 3 -/* 07CF64 8007C364 01C47023 */ subu $t6, $t6, $a0 -/* 07CF68 8007C368 3C0F8016 */ lui $t7, %hi(gObjectList) # $t7, 0x8016 -/* 07CF6C 8007C36C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 07CF70 8007C370 25EF5C18 */ addiu $t7, %lo(gObjectList) # addiu $t7, $t7, 0x5c18 -/* 07CF74 8007C374 000E7140 */ sll $t6, $t6, 5 -/* 07CF78 8007C378 AFBF0014 */ sw $ra, 0x14($sp) -/* 07CF7C 8007C37C 01CF3021 */ addu $a2, $t6, $t7 -/* 07CF80 8007C380 94A20026 */ lhu $v0, 0x26($a1) -/* 07CF84 8007C384 94D800C0 */ lhu $t8, 0xc0($a2) -/* 07CF88 8007C388 34018000 */ li $at, 32768 -/* 07CF8C 8007C38C 24050080 */ li $a1, 128 -/* 07CF90 8007C390 03021823 */ subu $v1, $t8, $v0 -/* 07CF94 8007C394 00611821 */ addu $v1, $v1, $at -/* 07CF98 8007C398 3079FFFF */ andi $t9, $v1, 0xffff -/* 07CF9C 8007C39C 001940C0 */ sll $t0, $t9, 3 -/* 07CFA0 8007C3A0 01194021 */ addu $t0, $t0, $t9 -/* 07CFA4 8007C3A4 00084080 */ sll $t0, $t0, 2 -/* 07CFA8 8007C3A8 01001825 */ move $v1, $t0 -/* 07CFAC 8007C3AC 04610004 */ bgez $v1, .L8007C3C0 -/* 07CFB0 8007C3B0 00034C03 */ sra $t1, $v1, 0x10 -/* 07CFB4 8007C3B4 3401FFFF */ li $at, 65535 -/* 07CFB8 8007C3B8 00230821 */ addu $at, $at, $v1 -/* 07CFBC 8007C3BC 00014C03 */ sra $t1, $at, 0x10 -.L8007C3C0: -/* 07CFC0 8007C3C0 312AFFFF */ andi $t2, $t1, 0xffff -/* 07CFC4 8007C3C4 29410013 */ slti $at, $t2, 0x13 -/* 07CFC8 8007C3C8 10200009 */ beqz $at, .L8007C3F0 -/* 07CFCC 8007C3CC 01403825 */ move $a3, $t2 -/* 07CFD0 8007C3D0 24050080 */ li $a1, 128 -/* 07CFD4 8007C3D4 AFA60020 */ sw $a2, 0x20($sp) -/* 07CFD8 8007C3D8 0C01C87A */ jal set_object_flag_status_false -/* 07CFDC 8007C3DC AFAA001C */ sw $t2, 0x1c($sp) -/* 07CFE0 8007C3E0 8FA60020 */ lw $a2, 0x20($sp) -/* 07CFE4 8007C3E4 8FA7001C */ lw $a3, 0x1c($sp) -/* 07CFE8 8007C3E8 10000009 */ b .L8007C410 -/* 07CFEC 8007C3EC A0C700D2 */ sb $a3, 0xd2($a2) -.L8007C3F0: -/* 07CFF0 8007C3F0 AFA60020 */ sw $a2, 0x20($sp) -/* 07CFF4 8007C3F4 0C01C870 */ jal set_object_flag_status_true -/* 07CFF8 8007C3F8 AFA7001C */ sw $a3, 0x1c($sp) -/* 07CFFC 8007C3FC 8FA7001C */ lw $a3, 0x1c($sp) -/* 07D000 8007C400 8FA60020 */ lw $a2, 0x20($sp) -/* 07D004 8007C404 240B0024 */ li $t3, 36 -/* 07D008 8007C408 01676023 */ subu $t4, $t3, $a3 -/* 07D00C 8007C40C A0CC00D2 */ sb $t4, 0xd2($a2) -.L8007C410: -/* 07D010 8007C410 8FBF0014 */ lw $ra, 0x14($sp) -/* 07D014 8007C414 27BD0028 */ addiu $sp, $sp, 0x28 -/* 07D018 8007C418 03E00008 */ jr $ra -/* 07D01C 8007C41C 00000000 */ nop diff --git a/asm/non_matchings/update_objects/func_8007C4A4.s b/asm/non_matchings/update_objects/func_8007C4A4.s deleted file mode 100644 index e652742aa..000000000 --- a/asm/non_matchings/update_objects/func_8007C4A4.s +++ /dev/null @@ -1,47 +0,0 @@ -glabel func_8007C4A4 -/* 07D0A4 8007C4A4 000470C0 */ sll $t6, $a0, 3 -/* 07D0A8 8007C4A8 01C47023 */ subu $t6, $t6, $a0 -/* 07D0AC 8007C4AC 3C0F8016 */ lui $t7, %hi(gObjectList) # $t7, 0x8016 -/* 07D0B0 8007C4B0 25EF5C18 */ addiu $t7, %lo(gObjectList) # addiu $t7, $t7, 0x5c18 -/* 07D0B4 8007C4B4 000E7140 */ sll $t6, $t6, 5 -/* 07D0B8 8007C4B8 01CF1821 */ addu $v1, $t6, $t7 -/* 07D0BC 8007C4BC 946200C0 */ lhu $v0, 0xc0($v1) -/* 07D0C0 8007C4C0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 07D0C4 8007C4C4 AFBF0014 */ sw $ra, 0x14($sp) -/* 07D0C8 8007C4C8 0002C0C0 */ sll $t8, $v0, 3 -/* 07D0CC 8007C4CC 0302C021 */ addu $t8, $t8, $v0 -/* 07D0D0 8007C4D0 0018C080 */ sll $t8, $t8, 2 -/* 07D0D4 8007C4D4 03001025 */ move $v0, $t8 -/* 07D0D8 8007C4D8 04410004 */ bgez $v0, .L8007C4EC -/* 07D0DC 8007C4DC 0002CC03 */ sra $t9, $v0, 0x10 -/* 07D0E0 8007C4E0 3401FFFF */ li $at, 65535 -/* 07D0E4 8007C4E4 00220821 */ addu $at, $at, $v0 -/* 07D0E8 8007C4E8 0001CC03 */ sra $t9, $at, 0x10 -.L8007C4EC: -/* 07D0EC 8007C4EC 3328FFFF */ andi $t0, $t9, 0xffff -/* 07D0F0 8007C4F0 29010013 */ slti $at, $t0, 0x13 -/* 07D0F4 8007C4F4 10200009 */ beqz $at, .L8007C51C -/* 07D0F8 8007C4F8 01003025 */ move $a2, $t0 -/* 07D0FC 8007C4FC 24050080 */ li $a1, 128 -/* 07D100 8007C500 AFA30020 */ sw $v1, 0x20($sp) -/* 07D104 8007C504 0C01C87A */ jal set_object_flag_status_false -/* 07D108 8007C508 AFA8001C */ sw $t0, 0x1c($sp) -/* 07D10C 8007C50C 8FA30020 */ lw $v1, 0x20($sp) -/* 07D110 8007C510 8FA6001C */ lw $a2, 0x1c($sp) -/* 07D114 8007C514 1000000A */ b .L8007C540 -/* 07D118 8007C518 A06600D2 */ sb $a2, 0xd2($v1) -.L8007C51C: -/* 07D11C 8007C51C 24050080 */ li $a1, 128 -/* 07D120 8007C520 AFA30020 */ sw $v1, 0x20($sp) -/* 07D124 8007C524 0C01C870 */ jal set_object_flag_status_true -/* 07D128 8007C528 AFA6001C */ sw $a2, 0x1c($sp) -/* 07D12C 8007C52C 8FA6001C */ lw $a2, 0x1c($sp) -/* 07D130 8007C530 8FA30020 */ lw $v1, 0x20($sp) -/* 07D134 8007C534 24090024 */ li $t1, 36 -/* 07D138 8007C538 01265023 */ subu $t2, $t1, $a2 -/* 07D13C 8007C53C A06A00D2 */ sb $t2, 0xd2($v1) -.L8007C540: -/* 07D140 8007C540 8FBF0014 */ lw $ra, 0x14($sp) -/* 07D144 8007C544 27BD0028 */ addiu $sp, $sp, 0x28 -/* 07D148 8007C548 03E00008 */ jr $ra -/* 07D14C 8007C54C 00000000 */ nop diff --git a/asm/os/__osException.s b/asm/os/__osException.s index b243c45a6..91264bc12 100644 --- a/asm/os/__osException.s +++ b/asm/os/__osException.s @@ -25,6 +25,9 @@ glabel D_801976A0 .section .text, "ax" +.ifdef AVOID_UB +.set __osThreadTail, __osThreadTail_fix +.endif glabel __osExceptionPreamble /* 0D1DB0 800D11B0 3C1A800D */ lui $k0, %hi(__osException) # $k0, 0x800d @@ -46,8 +49,8 @@ glabel __osException /* 0D1DEC 800D11EC AF400018 */ sw $zero, 0x18($k0) /* 0D1DF0 800D11F0 40086800 */ mfc0 $t0, $13 /* 0D1DF4 800D11F4 03404025 */ move $t0, $k0 -/* 0D1DF8 800D11F8 3C1A800F */ lui $k0, %hi(__osRunningThread) # $k0, 0x800f -/* 0D1DFC 800D11FC 8F5AB3B0 */ lw $k0, %lo(__osRunningThread)($k0) +/* 0D1DF8 800D11F8 3C1A800F */ lui $k0, %hi(__osThreadTail+0x10) # $k0, 0x800f +/* 0D1DFC 800D11FC 8F5AB3B0 */ lw $k0, %lo(__osThreadTail+0x10)($k0) /* 0D1E00 800D1200 DD090020 */ ld $t1, 0x20($t0) /* 0D1E04 800D1204 FF490020 */ sd $t1, 0x20($k0) /* 0D1E08 800D1208 DD090118 */ ld $t1, 0x118($t0) @@ -320,8 +323,8 @@ glabel L800D15B4 /* 0D21E4 800D15E4 AD2A0000 */ sw $t2, ($t1) /* 0D21E8 800D15E8 0C0345B9 */ jal func_800D16E4 /* 0D21EC 800D15EC 24040070 */ li $a0, 112 -/* 0D21F0 800D15F0 3C0A800F */ lui $t2, %hi(__osRunQueue) # $t2, 0x800f -/* 0D21F4 800D15F4 8D4AB3A8 */ lw $t2, %lo(__osRunQueue)($t2) +/* 0D21F0 800D15F0 3C0A800F */ lui $t2, %hi(__osThreadTail+0x8) # $t2, 0x800f +/* 0D21F4 800D15F4 8D4AB3A8 */ lw $t2, %lo(__osThreadTail+0x8)($t2) /* 0D21F8 800D15F8 2401EFFF */ li $at, -4097 /* 0D21FC 800D15FC 02018024 */ and $s0, $s0, $at /* 0D2200 800D1600 8D5B0118 */ lw $k1, 0x118($t2) @@ -355,31 +358,31 @@ glabel L800D1630 /* 0D2264 800D1664 00000000 */ nop .L800D1668: glabel L800D1668 -/* 0D2268 800D1668 3C0A800F */ lui $t2, %hi(__osRunQueue) # $t2, 0x800f -/* 0D226C 800D166C 8D4AB3A8 */ lw $t2, %lo(__osRunQueue)($t2) +/* 0D2268 800D1668 3C0A800F */ lui $t2, %hi(__osThreadTail+0x8) # $t2, 0x800f +/* 0D226C 800D166C 8D4AB3A8 */ lw $t2, %lo(__osThreadTail+0x8)($t2) /* 0D2270 800D1670 8F490004 */ lw $t1, 4($k0) /* 0D2274 800D1674 8D4B0004 */ lw $t3, 4($t2) /* 0D2278 800D1678 012B082A */ slt $at, $t1, $t3 /* 0D227C 800D167C 10200007 */ beqz $at, .L800D169C /* 0D2280 800D1680 00000000 */ nop -/* 0D2284 800D1684 3C04800F */ lui $a0, %hi(__osRunQueue) # $a0, 0x800f +/* 0D2284 800D1684 3C04800F */ lui $a0, %hi(__osThreadTail+0x8) # $a0, 0x800f /* 0D2288 800D1688 03402825 */ move $a1, $k0 /* 0D228C 800D168C 0C034633 */ jal __osEnqueueThread -/* 0D2290 800D1690 2484B3A8 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, -0x4c58 +/* 0D2290 800D1690 2484B3A8 */ addiu $a0, %lo(__osThreadTail+0x8) # addiu $a0, $a0, -0x4c58 /* 0D2294 800D1694 08034649 */ j __osDispatchThread /* 0D2298 800D1698 00000000 */ nop .L800D169C: -/* 0D229C 800D169C 3C09800F */ lui $t1, %hi(__osRunQueue) # $t1, 0x800f -/* 0D22A0 800D16A0 2529B3A8 */ addiu $t1, %lo(__osRunQueue) # addiu $t1, $t1, -0x4c58 +/* 0D229C 800D169C 3C09800F */ lui $t1, %hi(__osThreadTail+0x8) # $t1, 0x800f +/* 0D22A0 800D16A0 2529B3A8 */ addiu $t1, %lo(__osThreadTail+0x8) # addiu $t1, $t1, -0x4c58 /* 0D22A4 800D16A4 8D2A0000 */ lw $t2, ($t1) /* 0D22A8 800D16A8 AF4A0000 */ sw $t2, ($k0) /* 0D22AC 800D16AC 08034649 */ j __osDispatchThread /* 0D22B0 800D16B0 AD3A0000 */ sw $k0, ($t1) .L800D16B4: -/* 0D22B4 800D16B4 3C01800F */ lui $at, %hi(__osFaultedThread) # $at, 0x800f -/* 0D22B8 800D16B8 AC3AB3B4 */ sw $k0, %lo(__osFaultedThread)($at) +/* 0D22B4 800D16B4 3C01800F */ lui $at, %hi(__osThreadTail+0x14) # $at, 0x800f +/* 0D22B8 800D16B8 AC3AB3B4 */ sw $k0, %lo(__osThreadTail+0x14)($at) /* 0D22BC 800D16BC 24090001 */ li $t1, 1 /* 0D22C0 800D16C0 A7490010 */ sh $t1, 0x10($k0) /* 0D22C4 800D16C4 24090002 */ li $t1, 2 @@ -433,10 +436,10 @@ glabel func_800D16E4 /* 0D2374 800D1774 0C034645 */ jal __osPopThread /* 0D2378 800D1778 01202025 */ move $a0, $t1 /* 0D237C 800D177C 00405025 */ move $t2, $v0 -/* 0D2380 800D1780 3C04800F */ lui $a0, %hi(__osRunQueue) # $a0, 0x800f +/* 0D2380 800D1780 3C04800F */ lui $a0, %hi(__osThreadTail+0x8) # $a0, 0x800f /* 0D2384 800D1784 01402825 */ move $a1, $t2 /* 0D2388 800D1788 0C034633 */ jal __osEnqueueThread -/* 0D238C 800D178C 2484B3A8 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, -0x4c58 +/* 0D238C 800D178C 2484B3A8 */ addiu $a0, %lo(__osThreadTail+0x8) # addiu $a0, $a0, -0x4c58 .L800D1790: /* 0D2390 800D1790 02400008 */ jr $s2 /* 0D2394 800D1794 00000000 */ nop @@ -455,8 +458,8 @@ glabel func_800D16E4 /* 0D23C4 800D17C4 1000FFB5 */ b .L800D169C /* 0D23C8 800D17C8 AF5B0118 */ sw $k1, 0x118($k0) glabel __osEnqueueAndYield -/* 0D23CC 800D17CC 3C05800F */ lui $a1, %hi(__osRunningThread) # $a1, 0x800f -/* 0D23D0 800D17D0 8CA5B3B0 */ lw $a1, %lo(__osRunningThread)($a1) +/* 0D23CC 800D17CC 3C05800F */ lui $a1, %hi(__osThreadTail+0x10) # $a1, 0x800f +/* 0D23D0 800D17D0 8CA5B3B0 */ lw $a1, %lo(__osThreadTail+0x10)($a1) /* 0D23D4 800D17D4 40086000 */ mfc0 $t0, $12 /* 0D23D8 800D17D8 8CBB0018 */ lw $k1, 0x18($a1) /* 0D23DC 800D17DC 35080002 */ ori $t0, $t0, 2 @@ -553,11 +556,11 @@ glabel __osPopThread /* 0D2520 800D1920 AC990000 */ sw $t9, ($a0) glabel __osDispatchThread -/* 0D2524 800D1924 3C04800F */ lui $a0, %hi(__osRunQueue) # $a0, 0x800f +/* 0D2524 800D1924 3C04800F */ lui $a0, %hi(__osThreadTail+0x8) # $a0, 0x800f /* 0D2528 800D1928 0C034645 */ jal __osPopThread -/* 0D252C 800D192C 2484B3A8 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, -0x4c58 -/* 0D2530 800D1930 3C01800F */ lui $at, %hi(__osRunningThread) # $at, 0x800f -/* 0D2534 800D1934 AC22B3B0 */ sw $v0, %lo(__osRunningThread)($at) +/* 0D252C 800D192C 2484B3A8 */ addiu $a0, %lo(__osThreadTail+0x8) # addiu $a0, $a0, -0x4c58 +/* 0D2530 800D1930 3C01800F */ lui $at, %hi(__osThreadTail+0x10) # $at, 0x800f +/* 0D2534 800D1934 AC22B3B0 */ sw $v0, %lo(__osThreadTail+0x10)($at) /* 0D2538 800D1938 24080004 */ li $t0, 4 /* 0D253C 800D193C A4480010 */ sh $t0, 0x10($v0) /* 0D2540 800D1940 0040D025 */ move $k0, $v0 diff --git a/asm/os/llmuldiv_gcc.s b/asm/os/llmuldiv_gcc.s new file mode 100644 index 000000000..2c5111135 --- /dev/null +++ b/asm/os/llmuldiv_gcc.s @@ -0,0 +1,100 @@ +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 + +.include "macros.inc" + +.section .text, "ax" + +/* -------------------------------------------------------------------------------------- */ +/* need to asm these functions because lib32gcc-7-dev-mips-cross does not exist so we */ +/* cannot naturally link a libgcc variant for this target given this architecture and */ +/* compiler. Until we have a good workaround with a gcc target that doesn't involve */ +/* assuming a 32-bit to 64-bit change, we have to encode these functions as raw assembly */ +/* for it to compile. */ +/* -------------------------------------------------------------------------------------- */ + +/* TODO: Is there a non-insane way to fix this hack that doesn't involve the user compiling */ +/* a library themselves? */ +glabel __umoddi3 + sw $a0, ($sp) + sw $a1, 4($sp) + sw $a2, 8($sp) + sw $a3, 0xc($sp) + ld $t7, 8($sp) + ld $t6, ($sp) + ddivu $zero, $t6, $t7 + bnez $t7, .L80324144 + nop + break 7 +.L80324144: + mfhi $v0 + dsll32 $v1, $v0, 0 + dsra32 $v1, $v1, 0 + jr $ra + dsra32 $v0, $v0, 0 + +glabel __udivdi3 + sw $a0, ($sp) + sw $a1, 4($sp) + sw $a2, 8($sp) + sw $a3, 0xc($sp) + ld $t7, 8($sp) + ld $t6, ($sp) + ddivu $zero, $t6, $t7 + bnez $t7, .L80324180 + nop + break 7 +.L80324180: + mflo $v0 + dsll32 $v1, $v0, 0 + dsra32 $v1, $v1, 0 + jr $ra + dsra32 $v0, $v0, 0 + +glabel __moddi3 + sw $a0, ($sp) + sw $a1, 4($sp) + sw $a2, 8($sp) + sw $a3, 0xc($sp) + ld $t7, 8($sp) + ld $t6, ($sp) + ddivu $zero, $t6, $t7 + bnez $t7, .L803241E8 + nop + break 7 +.L803241E8: + mfhi $v0 + dsll32 $v1, $v0, 0 + dsra32 $v1, $v1, 0 + jr $ra + dsra32 $v0, $v0, 0 + +glabel __divdi3 + sw $a0, ($sp) + sw $a1, 4($sp) + sw $a2, 8($sp) + sw $a3, 0xc($sp) + ld $t7, 8($sp) + ld $t6, ($sp) + ddiv $zero, $t6, $t7 + nop + bnez $t7, .L80324228 + nop + break 7 +.L80324228: + daddiu $at, $zero, -1 + bne $t7, $at, .L80324244 + daddiu $at, $zero, 1 + dsll32 $at, $at, 0x1f + bne $t6, $at, .L80324244 + nop + break 6 +.L80324244: + mflo $v0 + dsll32 $v1, $v0, 0 + dsra32 $v1, $v1, 0 + jr $ra + dsra32 $v0, $v0, 0 + diff --git a/assets/include/blueshell.mk b/assets/include/blueshell.mk index 8eb445627..c344726ff 100644 --- a/assets/include/blueshell.mk +++ b/assets/include/blueshell.mk @@ -17,21 +17,23 @@ BLUESHELL_EXPORT_SENTINEL := $(BLUESHELL_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(BLUESHELL_FRAMES:%.png=%.mio0) $(BLUESHELL_FRAMES:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(BLUESHELL_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(BLUESHELL_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(BLUESHELL_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(BLUESHELL_PALETTE:%.png=%.inc.c) $(BLUESHELL_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(BLUESHELL_FRAMES) $(BLUESHELL_PALETTE): $(BLUESHELL_EXPORT_SENTINEL) ; $(BLUESHELL_EXPORT_SENTINEL): $(ASSET_DIR)/blueshell.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_blueshell distclean_blueshell: diff --git a/assets/include/bomb.mk b/assets/include/bomb.mk index 0266bf6c6..65cde42cf 100644 --- a/assets/include/bomb.mk +++ b/assets/include/bomb.mk @@ -13,16 +13,18 @@ BOMB_EXPORT_SENTINEL := $(BOMB_DIR)/.export $(BUILD_DIR)/src/data/common_textures.o: $(BOMB_FRAMES:%.png=%.inc.c) $(BOMB_PALETTE:%.png=%.inc.c) $(BOMB_FRAMES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(BOMB_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(BOMB_PALETTE) $(BOMB_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(BOMB_FRAMES) $(BOMB_PALETTE): $(BOMB_EXPORT_SENTINEL) ; $(BOMB_EXPORT_SENTINEL): $(ASSET_DIR)/bomb.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_bomb distclean_bomb: diff --git a/assets/include/character_portraits.mk b/assets/include/character_portraits.mk index 37414f8a8..552b01cca 100644 --- a/assets/include/character_portraits.mk +++ b/assets/include/character_portraits.mk @@ -35,22 +35,26 @@ $(BUILD_DIR)/src/data/common_textures.o: $(PORTRAIT_PNG:%.png=%.inc.c) $(PORTRAI $(BUILD_DIR)/src/data/common_textures.o: $(SPECIAL_PORTRAIT_PNG:%.png=%.inc.c) $(SPECIAL_PORTRAIT_PALETTE:%.png=%.inc.c) $(PORTRAIT_PNG:%.png=%.inc.c): $(PORTRAITS_DIR)/common_texture_portrait_%.inc.c : $(PORTRAITS_DIR)/common_texture_portrait_%.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(PORTRAITS_DIR)/common_tlut_portrait_$*.png + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(PORTRAITS_DIR)/common_tlut_portrait_$*.png $(SPECIAL_PORTRAIT_PNG:%.png=%.inc.c): $(PORTRAITS_DIR)/common_texture_portrait_%.inc.c : $(PORTRAITS_DIR)/common_texture_portrait_%.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(SPECIAL_PORTRAIT_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(SPECIAL_PORTRAIT_PALETTE) $(PORTRAIT_PALETTES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(SPECIAL_PORTRAIT_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(PORTRAIT_PNG) $(SPECIAL_PORTRAIT_PNG) $(PORTRAIT_PALETTES) $(SPECIAL_PORTRAIT_PALETTE): $(PORTRAIT_EXPORT_SENTINEL) ; $(PORTRAIT_EXPORT_SENTINEL): $(ASSET_DIR)/character_portraits.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_character_portraits distclean_character_portraits: diff --git a/assets/include/character_select/bowser_select.mk b/assets/include/character_select/bowser_select.mk index 29def4fae..b690ada19 100644 --- a/assets/include/character_select/bowser_select.mk +++ b/assets/include/character_select/bowser_select.mk @@ -24,16 +24,17 @@ BOWSER_SELECT_EXPORT_SENTINEL := $(BOWSER_SELECT_DIR)/.export $(BUILD_DIR)/data/course_player_selection.o: $(BOWSER_SELECT_PNG:%.png=%.mio0) $(BOWSER_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(BOWSER_SELECT_PNG:%.png=%.bin) : %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(BOWSER_SELECT_PNG): $(BOWSER_SELECT_EXPORT_SENTINEL) ; $(BOWSER_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/bowser_select.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_bowser_select distclean_bowser_select: diff --git a/assets/include/character_select/donkeykong_select.mk b/assets/include/character_select/donkeykong_select.mk index fd9b1c8fa..03d042cfe 100644 --- a/assets/include/character_select/donkeykong_select.mk +++ b/assets/include/character_select/donkeykong_select.mk @@ -24,16 +24,17 @@ DONKEYKONG_SELECT_EXPORT_SENTINEL := $(DONKEYKONG_SELECT_DIR)/.export $(BUILD_DIR)/data/course_player_selection.o: $(DONKEYKONG_SELECT_PNG:%.png=%.mio0) $(DONKEYKONG_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(DONKEYKONG_SELECT_PNG:%.png=%.bin) : %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(DONKEYKONG_SELECT_PNG): $(DONKEYKONG_SELECT_EXPORT_SENTINEL) ; $(DONKEYKONG_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/donkeykong_select.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_donkeykong_select distclean_donkeykong_select: diff --git a/assets/include/character_select/luigi_select.mk b/assets/include/character_select/luigi_select.mk index 0cff1075c..9b1fba793 100644 --- a/assets/include/character_select/luigi_select.mk +++ b/assets/include/character_select/luigi_select.mk @@ -24,16 +24,17 @@ LUIGI_SELECT_EXPORT_SENTINEL := $(LUIGI_SELECT_DIR)/.export $(BUILD_DIR)/data/course_player_selection.o: $(LUIGI_SELECT_PNG:%.png=%.mio0) $(LUIGI_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(LUIGI_SELECT_PNG:%.png=%.bin) : %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(LUIGI_SELECT_PNG): $(LUIGI_SELECT_EXPORT_SENTINEL) ; $(LUIGI_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/luigi_select.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_luigi_select distclean_luigi_select: diff --git a/assets/include/character_select/mario_select.mk b/assets/include/character_select/mario_select.mk index fba5ae712..9d500b663 100644 --- a/assets/include/character_select/mario_select.mk +++ b/assets/include/character_select/mario_select.mk @@ -24,16 +24,17 @@ MARIO_SELECT_EXPORT_SENTINEL := $(MARIO_SELECT_DIR)/.export $(BUILD_DIR)/data/course_player_selection.o: $(MARIO_SELECT_PNG:%.png=%.mio0) $(MARIO_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(MARIO_SELECT_PNG:%.png=%.bin) : %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(MARIO_SELECT_PNG): $(MARIO_SELECT_EXPORT_SENTINEL) ; $(MARIO_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/mario_select.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_mario_select distclean_mario_select: diff --git a/assets/include/character_select/peach_select.mk b/assets/include/character_select/peach_select.mk index 8694d5108..8f50db458 100644 --- a/assets/include/character_select/peach_select.mk +++ b/assets/include/character_select/peach_select.mk @@ -24,16 +24,17 @@ PEACH_SELECT_EXPORT_SENTINEL := $(PEACH_SELECT_DIR)/.export $(BUILD_DIR)/data/course_player_selection.o: $(PEACH_SELECT_PNG:%.png=%.mio0) $(PEACH_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(PEACH_SELECT_PNG:%.png=%.bin) : %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(PEACH_SELECT_PNG): $(PEACH_SELECT_EXPORT_SENTINEL) ; $(PEACH_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/peach_select.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_peach_select distclean_peach_select: diff --git a/assets/include/character_select/toad_select.mk b/assets/include/character_select/toad_select.mk index 362b3ab5d..ccfb4b3c5 100644 --- a/assets/include/character_select/toad_select.mk +++ b/assets/include/character_select/toad_select.mk @@ -24,16 +24,17 @@ TOAD_SELECT_EXPORT_SENTINEL := $(TOAD_SELECT_DIR)/.export $(BUILD_DIR)/data/course_player_selection.o: $(TOAD_SELECT_PNG:%.png=%.mio0) $(TOAD_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(TOAD_SELECT_PNG:%.png=%.bin) : %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(TOAD_SELECT_PNG): $(TOAD_SELECT_EXPORT_SENTINEL) ; $(TOAD_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/toad_select.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_toad_select distclean_toad_select: diff --git a/assets/include/character_select/wario_select.mk b/assets/include/character_select/wario_select.mk index a82b444af..845723611 100644 --- a/assets/include/character_select/wario_select.mk +++ b/assets/include/character_select/wario_select.mk @@ -24,16 +24,17 @@ WARIO_SELECT_EXPORT_SENTINEL := $(WARIO_SELECT_DIR)/.export $(BUILD_DIR)/data/course_player_selection.o: $(WARIO_SELECT_PNG:%.png=%.mio0) $(WARIO_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(WARIO_SELECT_PNG:%.png=%.bin) : %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(WARIO_SELECT_PNG): $(WARIO_SELECT_EXPORT_SENTINEL) ; $(WARIO_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/wario_select.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_wario_select distclean_wario_select: diff --git a/assets/include/character_select/yoshi_select.mk b/assets/include/character_select/yoshi_select.mk index a61ea6c10..3a1abd270 100644 --- a/assets/include/character_select/yoshi_select.mk +++ b/assets/include/character_select/yoshi_select.mk @@ -24,16 +24,17 @@ YOSHI_SELECT_EXPORT_SENTINEL := $(YOSHI_SELECT_DIR)/.export $(BUILD_DIR)/data/course_player_selection.o: $(YOSHI_SELECT_PNG:%.png=%.mio0) $(YOSHI_SELECT_PNG:%.png=%.mio0) : %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(YOSHI_SELECT_PNG:%.png=%.bin) : %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(YOSHI_SELECT_PNG): $(YOSHI_SELECT_EXPORT_SENTINEL) ; $(YOSHI_SELECT_EXPORT_SENTINEL): $(ASSET_DIR)/character_select/yoshi_select.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_yoshi_select distclean_yoshi_select: diff --git a/assets/include/course_outlines.mk b/assets/include/course_outlines.mk index 382255106..067e7b4e3 100644 --- a/assets/include/course_outlines.mk +++ b/assets/include/course_outlines.mk @@ -27,16 +27,17 @@ COURSE_OUTLINE_EXPORT_SENTINEL := $(COURSE_OUTLINE_DIR)/.export $(BUILD_DIR)/data/other_textures.o: $(COURSE_OUTLINE_PNG:%.png=%.mio0) $(COURSE_OUTLINE_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(COURSE_OUTLINE_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f i4 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f i4 $(COURSE_OUTLINE_PNG): $(COURSE_OUTLINE_EXPORT_SENTINEL) ; $(COURSE_OUTLINE_EXPORT_SENTINEL): $(ASSET_DIR)/course_outlines.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_course_outlines distclean_course_outlines: diff --git a/assets/include/course_previews.mk b/assets/include/course_previews.mk index deedcb477..2a35cddc6 100644 --- a/assets/include/course_previews.mk +++ b/assets/include/course_previews.mk @@ -27,16 +27,17 @@ COURSE_PREVIEW_EXPORT_SENTINEL := $(COURSE_PREVIEW_DIR)/.export $(BUILD_DIR)/src/data/textures.o: $(COURSE_PREVIEW_PNG:%.png=%.mio0) $(COURSE_PREVIEW_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(COURSE_PREVIEW_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(COURSE_PREVIEW_PNG): $(COURSE_PREVIEW_EXPORT_SENTINEL) ; $(COURSE_PREVIEW_EXPORT_SENTINEL): $(ASSET_DIR)/course_previews.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_course_previews distclean_course_previews: diff --git a/assets/include/courses/banshee_boardwalk.mk b/assets/include/courses/banshee_boardwalk.mk index fc8d675af..b56047e80 100644 --- a/assets/include/courses/banshee_boardwalk.mk +++ b/assets/include/courses/banshee_boardwalk.mk @@ -49,7 +49,7 @@ BANSHEE_BOARDWALK_EXPORT_SENTINEL := $(BANSHEE_BOARDWALK_DIR)/.export $(BUILD_DIR)/data/other_textures.o: $(BANSHEE_BOARDWALK_DIR)/boo_frames.mio0 $(BANSHEE_BOARDWALK_DIR)/boo_frames.mio0: $(BANSHEE_BOARDWALK_DIR)/boo_frames.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ # Making a .c or .s file that includes the Boo frame data as .inc.c or .bin files, respectively, # would also work. @@ -60,28 +60,31 @@ $(BANSHEE_BOARDWALK_DIR)/boo_frames.mio0: $(BANSHEE_BOARDWALK_DIR)/boo_frames.bi CAT ?= cat $(BANSHEE_BOARDWALK_DIR)/boo_frames.bin: $(BANSHEE_BOARDWALK_BOO_FRAMES:%.png=%.bin) - $(CAT) $^ > $@ + $(V)$(CAT) $^ > $@ $(BANSHEE_BOARDWALK_BOO_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(BANSHEE_BOARDWALK_BOO_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(BANSHEE_BOARDWALK_BOO_PALETTE) $(BUILD_DIR)/courses/banshee_boardwalk/course_data.o: $(BANSHEE_BOARDWALK_BOO_PALETTE:%.png=%.inc.c) $(BUILD_DIR)/courses/banshee_boardwalk/course_data.o: $(BANSHEE_BOARDWALK_BAT_PALETTE:%.png=%.inc.c) $(BANSHEE_BOARDWALK_BAT_FRAMES:%.png=%.inc.c) $(BUILD_DIR)/courses/banshee_boardwalk/course_data.o: $(BANSHEE_BOARDWALK_PNG:%.png=%.inc.c) $(BANSHEE_BOARDWALK_BAT_FRAMES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(BANSHEE_BOARDWALK_BAT_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(BANSHEE_BOARDWALK_BAT_PALETTE) $(BANSHEE_BOARDWALK_PNG:%.png=%.inc.c) $(BANSHEE_BOARDWALK_BOO_PALETTE:%.png=%.inc.c) $(BANSHEE_BOARDWALK_BAT_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(BANSHEE_BOARDWALK_BOO_PALETTE) $(BANSHEE_BOARDWALK_BOO_FRAMES): $(BANSHEE_BOARDWALK_EXPORT_SENTINEL) ; $(BANSHEE_BOARDWALK_BAT_PALETTE) $(BANSHEE_BOARDWALK_BAT_FRAMES): $(BANSHEE_BOARDWALK_EXPORT_SENTINEL) ; $(BANSHEE_BOARDWALK_PNG): $(BANSHEE_BOARDWALK_EXPORT_SENTINEL) ; $(BANSHEE_BOARDWALK_EXPORT_SENTINEL): $(ASSET_DIR)/courses/banshee_boardwalk.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_banshee_boardwalk distclean_banshee_boardwalk: diff --git a/assets/include/courses/bowsers_castle.mk b/assets/include/courses/bowsers_castle.mk index 15506e1bb..28a115969 100644 --- a/assets/include/courses/bowsers_castle.mk +++ b/assets/include/courses/bowsers_castle.mk @@ -18,16 +18,18 @@ $(BUILD_DIR)/courses/bowsers_castle/course_data.o: $(THWOMP_FACE_FRAMES:%.png=%. $(BUILD_DIR)/courses/bowsers_castle/course_data.o: $(THOWMP_SIDE_PNG:%.png=%.inc.c) $(THOWMP_SIDE_PNG:%.png=%.inc.c) $(THWOMP_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(THWOMP_FACE_FRAMES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(THWOMP_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(THWOMP_PALETTE) $(THWOMP_PALETTE) $(THWOMP_FACE_FRAMES) $(THOWMP_SIDE_PNG): $(BOWSERS_CASTLE_EXPORT_SENTINEL) ; $(BOWSERS_CASTLE_EXPORT_SENTINEL): $(ASSET_DIR)/courses/bowsers_castle.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_bowsers_castle distclean_bowsers_castle: diff --git a/assets/include/courses/choco_mountain.mk b/assets/include/courses/choco_mountain.mk index c3455aec7..744281e07 100644 --- a/assets/include/courses/choco_mountain.mk +++ b/assets/include/courses/choco_mountain.mk @@ -9,13 +9,14 @@ CHOCO_MOUNTAIN_EXPORT_SENTINEL := $(CHOCO_MOUNTAIN_DIR)/.export $(BUILD_DIR)/courses/choco_mountain/course_data.o: $(CHOCO_MOUNTAIN_PNG:%.png=%.inc.c) $(CHOCO_MOUNTAIN_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(CHOCO_MOUNTAIN_PNG): $(CHOCO_MOUNTAIN_EXPORT_SENTINEL) ; $(CHOCO_MOUNTAIN_EXPORT_SENTINEL): $(ASSET_DIR)/courses/choco_mountain.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_choco_mountain distclean_choco_mountain: diff --git a/assets/include/courses/dks_jungle_parkway.mk b/assets/include/courses/dks_jungle_parkway.mk index 433ef86a6..9eef14bb2 100644 --- a/assets/include/courses/dks_jungle_parkway.mk +++ b/assets/include/courses/dks_jungle_parkway.mk @@ -27,23 +27,25 @@ DKS_JUNGLE_PARKWAY_EXPORT_SENTINEL := $(DKS_JUNGLE_PARKWAY_DIR)/.export $(BUILD_DIR)/data/other_textures.o: $(DKS_JUNGLE_PARKWAY_KIWANO_FRAMES:%.png=%.mio0) $(DKS_JUNGLE_PARKWAY_KIWANO_FRAMES:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(DKS_JUNGLE_PARKWAY_KIWANO_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(DKS_JUNGLE_PARKWAY_KIWANO_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(DKS_JUNGLE_PARKWAY_KIWANO_PALETTE) $(BUILD_DIR)/courses/dks_jungle_parkway/course_data.o: $(DKS_JUNGLE_PARKWAY_KIWANO_PALETTE:%.png=%.inc.c) $(BUILD_DIR)/courses/dks_jungle_parkway/course_data.o: $(DKS_JUNGLE_PARKWAY_PNG:%.png=%.inc.c) $(DKS_JUNGLE_PARKWAY_PNG:%.png=%.inc.c) $(DKS_JUNGLE_PARKWAY_KIWANO_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(DKS_JUNGLE_PARKWAY_KIWANO_PALETTE) $(DKS_JUNGLE_PARKWAY_KIWANO_FRAMES): $(DKS_JUNGLE_PARKWAY_EXPORT_SENTINEL) ; $(DKS_JUNGLE_PARKWAY_PNG): $(DKS_JUNGLE_PARKWAY_EXPORT_SENTINEL) ; $(DKS_JUNGLE_PARKWAY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/dks_jungle_parkway.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_dks_junk_parkway distclean_dks_junk_parkway: diff --git a/assets/include/courses/frappe_snowland.mk b/assets/include/courses/frappe_snowland.mk index 9f0df49b2..cf15b50ca 100644 --- a/assets/include/courses/frappe_snowland.mk +++ b/assets/include/courses/frappe_snowland.mk @@ -22,28 +22,32 @@ $(BUILD_DIR)/courses/frappe_snowland/course_data.o: $(FRAPPE_SNOWLAND_SNOWMAN_PA $(BUILD_DIR)/courses/frappe_snowland/course_data.o: $(FRAPPE_SNOWLAND_TREE_PALETTE:%.png=%.inc.c) $(FRAPPE_SNOWLAND_SNOWMAN_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(FRAPPE_SNOWLAND_SNOWMAN_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(FRAPPE_SNOWLAND_SNOWMAN_PALETTE) $(FRAPPE_SNOWLAND_SNOW_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(FRAPPE_SNOWLAND_SNOW_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(FRAPPE_SNOWLAND_SNOW_PALETTE) $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(FRAPPE_SNOWLAND_TREE_PNG:%.png=%.mio0) $(FRAPPE_SNOWLAND_TREE_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(FRAPPE_SNOWLAND_TREE_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(FRAPPE_SNOWLAND_TREE_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(FRAPPE_SNOWLAND_TREE_PALETTE) $(FRAPPE_SNOWLAND_SNOWMAN_PALETTE:%.png=%.inc.c) $(FRAPPE_SNOWLAND_SNOW_PALETTE:%.png=%.inc.c) $(FRAPPE_SNOWLAND_TREE_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(FRAPPE_SNOWLAND_SNOWMAN_PNG) $(FRAPPE_SNOWLAND_SNOW_PNG) $(FRAPPE_SNOWLAND_TREE_PNG): $(FRAPPE_SNOWLAND_EXPORT_SENTINEL) ; $(FRAPPE_SNOWLAND_SNOWMAN_PALETTE) $(FRAPPE_SNOWLAND_SNOW_PALETTE) $(FRAPPE_SNOWLAND_TREE_PALETTE): $(FRAPPE_SNOWLAND_EXPORT_SENTINEL) ; $(FRAPPE_SNOWLAND_EXPORT_SENTINEL): $(ASSET_DIR)/courses/frappe_snowland.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_frappe_snowland distclean_frappe_snowland: diff --git a/assets/include/courses/kalimari_desert.mk b/assets/include/courses/kalimari_desert.mk index 6d447c1a6..3038f1fcb 100644 --- a/assets/include/courses/kalimari_desert.mk +++ b/assets/include/courses/kalimari_desert.mk @@ -43,22 +43,24 @@ KALIMARI_DESERT_EXPORT_SENTINEL := $(KALIMARI_DESERT_DIR)/.export $(BUILD_DIR)/courses/kalimari_desert/course_data.o: $(KALIMARI_DESERT_PNG:%.png=%.inc.c) $(CACTUS_PALETTE_IMPORT:%.png=%.inc.c) $(KALIMARI_DESERT_PNG:%.png=%.inc.c) $(CACTUS_PALETTE_IMPORT:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(BUILD_DIR)/data/other_textures.o: $(CACTUS_PNG:%.png=%.mio0) $(CACTUS_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(CACTUS_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(CACTUS_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(CACTUS_PALETTE) $(CACTUS_PALETTE) $(CACTUS_PALETTE_IMPORT) $(CACTUS_PNG): $(KALIMARI_DESERT_EXPORT_SENTINEL) ; $(KALIMARI_DESERT_PNG): $(KALIMARI_DESERT_EXPORT_SENTINEL) ; $(KALIMARI_DESERT_EXPORT_SENTINEL): $(ASSET_DIR)/courses/kalimari_desert.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_kalimari_desert distclean_kalimari_desert: diff --git a/assets/include/courses/koopa_troopa_beach.mk b/assets/include/courses/koopa_troopa_beach.mk index 790cf8c04..a12e5cbc0 100644 --- a/assets/include/courses/koopa_troopa_beach.mk +++ b/assets/include/courses/koopa_troopa_beach.mk @@ -24,16 +24,18 @@ $(BUILD_DIR)/courses/koopa_troopa_beach/course_data.o: $(KOOPA_TROOPA_BEACH_CRAB $(BUILD_DIR)/courses/koopa_troopa_beach/course_data.o: $(KOOPA_TROOPA_BEACH_PNG:%.png=%.inc.c) $(KOOPA_TROOPA_BEACH_CRAB_FRAMES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(KOOPA_TROOPA_BEACH_CRAB_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(KOOPA_TROOPA_BEACH_CRAB_PALETTE) $(KOOPA_TROOPA_BEACH_CRAB_PALETTE:%.png=%.inc.c) $(KOOPA_TROOPA_BEACH_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(KOOPA_TROOPA_BEACH_CRAB_PALETTE) $(KOOPA_TROOPA_BEACH_CRAB_FRAMES) $(KOOPA_TROOPA_BEACH_PNG): $(KOOPA_TROOPA_BEACH_EXPORT_SENTINEL) ; $(KOOPA_TROOPA_BEACH_EXPORT_SENTINEL): $(ASSET_DIR)/courses/koopa_troopa_beach.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_koopa_troopa_beach distclean_koopa_troopa_beach: diff --git a/assets/include/courses/luigi_raceway.mk b/assets/include/courses/luigi_raceway.mk index b43609882..cb1deb37f 100644 --- a/assets/include/courses/luigi_raceway.mk +++ b/assets/include/courses/luigi_raceway.mk @@ -11,13 +11,14 @@ LUIGI_RACEWAY_EXPORT_SENTINEL := $(LUIGI_RACEWAY_DIR)/.export $(BUILD_DIR)/courses/luigi_raceway/course_data.o: $(LUIGI_RACEWAY_PNG:%.png=%.inc.c) $(LUIGI_RACEWAY_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(LUIGI_RACEWAY_PNG): $(LUIGI_RACEWAY_EXPORT_SENTINEL) ; $(LUIGI_RACEWAY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/luigi_raceway.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_luigi_raceway distclean_luigi_raceway: diff --git a/assets/include/courses/mario_raceway.mk b/assets/include/courses/mario_raceway.mk index 50ea257a7..c89695216 100644 --- a/assets/include/courses/mario_raceway.mk +++ b/assets/include/courses/mario_raceway.mk @@ -22,21 +22,23 @@ PIRANHA_PLANT_EXPORT_SENTINEL := $(MARIO_RACEWAY_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(PIRANHA_PLANT_FRAMES:%.png=%.mio0) $(PIRANHA_PLANT_FRAMES:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(PIRANHA_PLANT_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(MARIO_RACEWAY_PIRANHA_PLANT_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(MARIO_RACEWAY_PIRANHA_PLANT_PALETTE) $(BUILD_DIR)/courses/mario_raceway/course_data.o: $(MARIO_RACEWAY_PIRANHA_PLANT_PALETTE:%.png=%.inc.c) $(MARIO_RACEWAY_SIGN:%.png=%.inc.c) $(MARIO_RACEWAY_PIRANHA_PLANT_PALETTE:%.png=%.inc.c) $(MARIO_RACEWAY_SIGN:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(PIRANHA_PLANT_FRAMES) $(MARIO_RACEWAY_PIRANHA_PLANT_PALETTE) $(MARIO_RACEWAY_SIGN): $(PIRANHA_PLANT_EXPORT_SENTINEL) ; $(PIRANHA_PLANT_EXPORT_SENTINEL): $(ASSET_DIR)/courses/mario_raceway.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_mario_raceway distclean_mario_raceway: diff --git a/assets/include/courses/moo_moo_farm.mk b/assets/include/courses/moo_moo_farm.mk index 45fac3870..738c43995 100644 --- a/assets/include/courses/moo_moo_farm.mk +++ b/assets/include/courses/moo_moo_farm.mk @@ -44,27 +44,32 @@ $(BUILD_DIR)/courses/moo_moo_farm/course_data.o: $(COW_PALETTE_IMPORT:%.png=%.in $(BUILD_DIR)/courses/moo_moo_farm/course_data.o: $(MOO_MOO_FARM_DIRT_PNG:%.png=%.inc.c) $(MOLE_FRAMES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(MOLE_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(MOLE_PALETTE) $(MOLE_PALETTE:%.png=%.inc.c) $(COW_PALETTE_IMPORT:%.png=%.inc.c) $(MOO_MOO_FARM_DIRT_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(BUILD_DIR)/data/other_textures.o: $(COW_PNG:%.png=%.mio0) $(BUILD_DIR)/data/other_textures.o: $(MOO_MOO_FARM_SIGN_PNG:%.png=%.mio0) $(COW_PNG:%.png=%.mio0) $(MOO_MOO_FARM_SIGN_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(MOO_MOO_FARM_SIGN_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(BUILD_DIR)/courses/moo_moo_farm/course_textures.linkonly.o: $(MOO_MOO_FARM_SIGN_PNG:%.png=%.inc.c) $(MOO_MOO_FARM_SIGN_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(COW_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(COW_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(COW_PALETTE) $(MOLE_PALETTE) $(COW_PALETTE) $(COW_PALETTE_IMPORT): $(MOO_MOO_FARM_EXPORT_SENTINEL) ; @@ -73,8 +78,8 @@ $(MOLE_FRAMES) $(COW_PNG): $(MOO_MOO_FARM_EXPORT_SENTINEL) ; $(MOO_MOO_FARM_SIGN_PNG) $(MOO_MOO_FARM_DIRT_PNG): $(MOO_MOO_FARM_EXPORT_SENTINEL) ; $(MOO_MOO_FARM_EXPORT_SENTINEL): $(ASSET_DIR)/courses/moo_moo_farm.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_moo_moo_farm distclean_moo_moo_farm: diff --git a/assets/include/courses/rainbow_road.mk b/assets/include/courses/rainbow_road.mk index f10089899..47c29bdb2 100644 --- a/assets/include/courses/rainbow_road.mk +++ b/assets/include/courses/rainbow_road.mk @@ -65,31 +65,40 @@ $(BUILD_DIR)/courses/rainbow_road/course_data.o: $(RAINBOW_ROAD_CHARACTER_PALETT $(BUILD_DIR)/courses/rainbow_road/course_data.o: $(RAINBOW_ROAD_PNG:%.png=%.inc.c) $(RAINBOW_ROAD_MUSHROOM_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(RAINBOW_ROAD_DIR)/gTLUTRainbowRoadNeonMushroom4.png + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(RAINBOW_ROAD_DIR)/gTLUTRainbowRoadNeonMushroom4.png $(RAINBOW_ROAD_MARIO_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(RAINBOW_ROAD_DIR)/gTLUTRainbowRoadNeonMario5.png + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(RAINBOW_ROAD_DIR)/gTLUTRainbowRoadNeonMario5.png $(RAINBOW_ROAD_BOO_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(RAINBOW_ROAD_DIR)/gTLUTRainbowRoadNeonBoo5.png + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(RAINBOW_ROAD_DIR)/gTLUTRainbowRoadNeonBoo5.png $(RAINBOW_ROAD_CHARACTER_PNG:%.png=%.inc.c) : $(RAINBOW_ROAD_DIR)/gTextureRainbowRoadNeon%.inc.c : $(RAINBOW_ROAD_DIR)/gTextureRainbowRoadNeon%.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(RAINBOW_ROAD_DIR)/gTLUTRainbowRoadNeon$*.png + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(RAINBOW_ROAD_DIR)/gTLUTRainbowRoadNeon$*.png $(RAINBOW_ROAD_MUSHROOM_PALETTES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(RAINBOW_ROAD_MARIO_PALETTES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(RAINBOW_ROAD_BOO_PALETTES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(RAINBOW_ROAD_CHARACTER_PALETTES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(RAINBOW_ROAD_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(RAINBOW_ROAD_MUSHROOM_PALETTES) $(RAINBOW_ROAD_MUSHROOM_PNG): $(RAINBOW_ROAD_EXPORT_SENTINEL) ; $(RAINBOW_ROAD_MARIO_PALETTES) $(RAINBOW_ROAD_MARIO_PNG): $(RAINBOW_ROAD_EXPORT_SENTINEL) ; @@ -98,8 +107,8 @@ $(RAINBOW_ROAD_CHARACTER_PALETTES) $(RAINBOW_ROAD_CHARACTER_PNG): $(RAINBOW_ROAD $(RAINBOW_ROAD_PNG): $(RAINBOW_ROAD_EXPORT_SENTINEL) ; $(RAINBOW_ROAD_EXPORT_SENTINEL): $(ASSET_DIR)/courses/rainbow_road.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_rainbow_road distclean_rainbow_road: diff --git a/assets/include/courses/royal_raceway.mk b/assets/include/courses/royal_raceway.mk index 7013554be..43679f468 100644 --- a/assets/include/courses/royal_raceway.mk +++ b/assets/include/courses/royal_raceway.mk @@ -7,13 +7,14 @@ ROYAL_RACEWAY_EXPORT_SENTINEL := $(ROYAL_RACEWAY_DIR)/.export $(BUILD_DIR)/courses/royal_raceway/course_data.o: $(ROYAL_RACEWAY_PIRANHA_PLANT_PALETTE:%.png=%.inc.c) $(ROYAL_RACEWAY_PIRANHA_PLANT_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(ROYAL_RACEWAY_PIRANHA_PLANT_PALETTE): $(ROYAL_RACEWAY_EXPORT_SENTINEL) ; $(ROYAL_RACEWAY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/royal_raceway.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_royal_raceway distclean_royal_raceway: diff --git a/assets/include/courses/sherbet_land.mk b/assets/include/courses/sherbet_land.mk index cb7d21b6d..e5f395308 100644 --- a/assets/include/courses/sherbet_land.mk +++ b/assets/include/courses/sherbet_land.mk @@ -11,16 +11,18 @@ SHERBET_LAND_EXPORT_SENTINEL := $(SHERBET_LAND_DIR)/.export $(BUILD_DIR)/courses/sherbet_land/course_data.o: $(SHERBET_LAND_ICE:%.png=%.inc.c) $(PENGUIN_PNG:%.png=%.inc.c) $(SHERBET_LAND_ICE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f ia16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f ia16 $(PENGUIN_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(SHERBET_LAND_PNG) $(PENGUIN_PNG) $(SHERBET_LAND_ICE): $(SHERBET_LAND_EXPORT_SENTINEL) ; $(SHERBET_LAND_EXPORT_SENTINEL): $(ASSET_DIR)/courses/sherbet_land.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_sherbet_land distclean_sherbet_land: diff --git a/assets/include/courses/toads_turnpike.mk b/assets/include/courses/toads_turnpike.mk index 2704e99c2..cb747c360 100644 --- a/assets/include/courses/toads_turnpike.mk +++ b/assets/include/courses/toads_turnpike.mk @@ -41,13 +41,14 @@ TOADS_TURNPIKE_EXPORT_SENTINEL := $(TOADS_TURNPIKE_DIR)/.export $(BUILD_DIR)/courses/toads_turnpike/course_data.o: $(TOADS_TURNPIKE_PNG:%.png=%.inc.c) $(TOADS_TURNPIKE_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(TOADS_TURNPIKE_PNG): $(TOADS_TURNPIKE_EXPORT_SENTINEL) ; $(TOADS_TURNPIKE_EXPORT_SENTINEL): $(ASSET_DIR)/courses/toads_turnpike.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_toads_turnpike distclean_toads_turnpike: diff --git a/assets/include/courses/wario_stadium.mk b/assets/include/courses/wario_stadium.mk index 6bfb28fc2..0e738a0a5 100644 --- a/assets/include/courses/wario_stadium.mk +++ b/assets/include/courses/wario_stadium.mk @@ -11,13 +11,14 @@ WARIO_STADIUM_EXPORT_SENTINEL := $(WARIO_STADIUM_DIR)/.export $(BUILD_DIR)/courses/wario_stadium/course_data.o: $(WARIO_STADIUM_SIGN:%.png=%.inc.c) $(WARIO_STADIUM_SIGN:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(WARIO_STADIUM_SIGN): $(WARIO_STADIUM_EXPORT_SENTINEL) ; $(WARIO_STADIUM_EXPORT_SENTINEL): $(ASSET_DIR)/courses/wario_stadium.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_wario_stadium distclean_wario_stadium: diff --git a/assets/include/courses/yoshi_valley.mk b/assets/include/courses/yoshi_valley.mk index 454f9b467..6ccb72626 100644 --- a/assets/include/courses/yoshi_valley.mk +++ b/assets/include/courses/yoshi_valley.mk @@ -14,17 +14,19 @@ $(BUILD_DIR)/courses/yoshi_valley/course_data.o: $(YOSHI_VALLEY_HEDGEHOG_PALETTE $(BUILD_DIR)/courses/yoshi_valley/course_data.o: $(YOSHI_VALLEY_PNG:%.png=%.inc.c) $(YOSHI_VALLEY_HEDGEHOG_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(YOSHI_VALLEY_HEDGEHOG_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(YOSHI_VALLEY_HEDGEHOG_PALETTE) $(YOSHI_VALLEY_PNG:%.png=%.inc.c) $(YOSHI_VALLEY_HEDGEHOG_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(YOSHI_VALLEY_HEDGEHOG_PALETTE) $(YOSHI_VALLEY_HEDGEHOG_PNG): $(YOSHI_VALLEY_EXPORT_SENTINEL) ; $(YOSHI_VALLEY_PNG): $(YOSHI_VALLEY_EXPORT_SENTINEL) ; $(YOSHI_VALLEY_EXPORT_SENTINEL): $(ASSET_DIR)/courses/yoshi_valley.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_yoshi_valley distclean_yoshi_valley: diff --git a/assets/include/debug_font.mk b/assets/include/debug_font.mk index 047175d51..8df9f0a0a 100644 --- a/assets/include/debug_font.mk +++ b/assets/include/debug_font.mk @@ -9,16 +9,18 @@ DEBUG_FONT_EXPORT_SENTINEL := $(DEBUG_FONT_DIR)/.export $(BUILD_DIR)/src/data/common_textures.o: $(DEBUG_FONT_PNG:%.png=%.inc.c) $(DEBUG_FONT_PALETTE:%.png=%.inc.c) $(DEBUG_FONT_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci4 -c rgba16 -p $(DEBUG_FONT_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci4 -c rgba16 -p $(DEBUG_FONT_PALETTE) $(DEBUG_FONT_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(DEBUG_FONT_PNG) $(DEBUG_FONT_PALETTE): $(DEBUG_FONT_EXPORT_SENTINEL) ; $(DEBUG_FONT_EXPORT_SENTINEL): $(ASSET_DIR)/debug_font.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_debug_font distclean_debug_font: diff --git a/assets/include/ending_ceremony.mk b/assets/include/ending_ceremony.mk index 1fcb971b1..2488d2e4e 100644 --- a/assets/include/ending_ceremony.mk +++ b/assets/include/ending_ceremony.mk @@ -15,13 +15,14 @@ ENDING_CEREMONY_EXPORT_SENTINEL := $(ENDING_CEREMONY)/.export $(BUILD_DIR)/src/ending/ceremony_data.o: $(TROHPY_PNG:%.png=%.inc.c) $(PODIUM_PNG:%.png=%.inc.c) $(TROHPY_PNG:%.png=%.inc.c) $(PODIUM_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(TROHPY_PNG) $(PODIUM_PNG): $(ENDING_CEREMONY_EXPORT_SENTINEL) ; $(ENDING_CEREMONY_EXPORT_SENTINEL): $(ASSET_DIR)/ending_ceremony.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_ending_ceremony distclean_ending_ceremony: diff --git a/assets/include/finish_line_banner.mk b/assets/include/finish_line_banner.mk index 504d52545..248b8bf85 100644 --- a/assets/include/finish_line_banner.mk +++ b/assets/include/finish_line_banner.mk @@ -17,21 +17,23 @@ FINISH_LINE_BANNER_EXPORT_SENTINEL := $(FINISH_LINE_BANNER_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(FINISH_LINE_BANNER_PNG:%.png=%.mio0) $(FINISH_LINE_BANNER_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(FINISH_LINE_BANNER_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(FINISH_LINE_BANNER_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(FINISH_LINE_BANNER_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(FINISH_LINE_BANNER_PALETTE:%.png=%.inc.c) $(FINISH_LINE_BANNER_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(FINISH_LINE_BANNER_PNG) $(FINISH_LINE_BANNER_PALETTE): $(FINISH_LINE_BANNER_EXPORT_SENTINEL) ; $(FINISH_LINE_BANNER_EXPORT_SENTINEL): $(ASSET_DIR)/finish_line_banner.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_finish_line_banner distclean_finish_line_banner: diff --git a/assets/include/greenshell.mk b/assets/include/greenshell.mk index ba34dbca7..870962eb5 100644 --- a/assets/include/greenshell.mk +++ b/assets/include/greenshell.mk @@ -17,21 +17,23 @@ GREENSHELL_EXPORT_SENTINEL := $(GREENSHELL_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(GREENSHELL_FRAMES:%.png=%.mio0) $(GREENSHELL_FRAMES:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(GREENSHELL_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(GREENSHELL_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(GREENSHELL_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(GREENSHELL_PALETTE:%.png=%.inc.c) $(GREENSHELL_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(GREENSHELL_FRAMES) $(GREENSHELL_PALETTE): $(GREENSHELL_EXPORT_SENTINEL) ; $(GREENSHELL_EXPORT_SENTINEL): $(ASSET_DIR)/greenshell.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_greenshell distclean_greenshell: diff --git a/assets/include/hud_type_c.mk b/assets/include/hud_type_c.mk index 9c314e725..76944c6a6 100644 --- a/assets/include/hud_type_c.mk +++ b/assets/include/hud_type_c.mk @@ -35,27 +35,32 @@ $(BUILD_DIR)/src/data/common_textures.o: $(HUD_TYPE_C_TINY_FONT_PNG:%.png=%.inc. $(BUILD_DIR)/src/data/common_textures.o: $(HUD_TYPE_C_PORTRAIT_BORDER_PNG:%.png=%.inc.c) $(HUD_TYPE_C_FONT_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(HUD_TYPE_C_FONT_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(HUD_TYPE_C_FONT_PALETTE) $(HUD_TYPE_C_FONT_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(HUD_TYPE_C_TINY_FONT_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(HUD_TYPE_C_TINY_FONT_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(HUD_TYPE_C_TINY_FONT_PALETTE) $(HUD_TYPE_C_TINY_FONT_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(HUD_TYPE_C_PORTRAIT_BORDER_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f ia4 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f ia4 $(HUD_TYPE_C_FONT_PNG) $(HUD_TYPE_C_FONT_PALETTE): $(HUD_TYPE_C_EXPORT_SENTINEL) ; $(HUD_TYPE_C_TINY_FONT_PNG) $(HUD_TYPE_C_TINY_FONT_PALETTE): $(HUD_TYPE_C_EXPORT_SENTINEL) ; $(HUD_TYPE_C_PORTRAIT_BORDER_PNG): $(HUD_TYPE_C_EXPORT_SENTINEL) ; $(HUD_TYPE_C_EXPORT_SENTINEL): $(ASSET_DIR)/hud_type_c.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_hud_type_c distclean_hud_type_c: diff --git a/assets/include/item_window.mk b/assets/include/item_window.mk index d7042b640..f240cc7e3 100644 --- a/assets/include/item_window.mk +++ b/assets/include/item_window.mk @@ -41,16 +41,18 @@ ITEM_WINDOW_EXPORT_SENTINEL := $(ITEM_WINDOW_DIR)/.export $(BUILD_DIR)/src/data/common_textures.o: $(ITEM_WINDOW_PNG:%.png=%.inc.c) $(ITEM_WINDOW_PALETTES:%.png=%.inc.c) $(ITEM_WINDOW_DIR)/common_texture_%.inc.c: $(ITEM_WINDOW_DIR)/common_texture_%.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(ITEM_WINDOW_DIR)/common_tlut_$*.png + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(ITEM_WINDOW_DIR)/common_tlut_$*.png $(ITEM_WINDOW_PALETTES:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(ITEM_WINDOW_PNG) $(ITEM_WINDOW_PALETTES): $(ITEM_WINDOW_EXPORT_SENTINEL) ; $(ITEM_WINDOW_EXPORT_SENTINEL): $(ASSET_DIR)/item_window.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_item_window distclean_item_window: diff --git a/assets/include/karts/bowser_kart.mk b/assets/include/karts/bowser_kart.mk index 301f21925..8bb4d2077 100644 --- a/assets/include/karts/bowser_kart.mk +++ b/assets/include/karts/bowser_kart.mk @@ -1487,19 +1487,21 @@ BOWSER_EXPORT_SENTINEL := $(BOWSER_KART_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/karts/bowser_kart.o: $(BOWSER_KART_FRAME_PNG:%.png=%.mio0) $(BOWSER_KART_PALETTE_PNG:%.png=%.bin) $(BOWSER_KART_FRAME_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(BOWSER_KART_FRAME_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(BOWSER_KART_FRAME_PNG) $(BOWSER_KART_PALETTE_PNG): $(BOWSER_EXPORT_SENTINEL) ; $(BOWSER_EXPORT_SENTINEL): $(ASSET_DIR)/karts/bowser_kart.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_bowser_kart distclean_bowser_kart: diff --git a/assets/include/karts/donkeykong_kart.mk b/assets/include/karts/donkeykong_kart.mk index a90ab5fff..176b90d7d 100644 --- a/assets/include/karts/donkeykong_kart.mk +++ b/assets/include/karts/donkeykong_kart.mk @@ -1487,19 +1487,21 @@ DONKEYKONG_EXPORT_SENTINEL := $(DONKEYKONG_KART_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/karts/donkeykong_kart.o: $(DONKEYKONG_KART_FRAME_PNG:%.png=%.mio0) $(DONKEYKONG_KART_PALETTE_PNG:%.png=%.bin) $(DONKEYKONG_KART_FRAME_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(DONKEYKONG_KART_FRAME_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(DONKEYKONG_KART_FRAME_PNG) $(DONKEYKONG_KART_PALETTE_PNG): $(DONKEYKONG_EXPORT_SENTINEL) ; $(DONKEYKONG_EXPORT_SENTINEL): $(ASSET_DIR)/karts/donkeykong_kart.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_donkeykong_kart distclean_donkeykong_kart: diff --git a/assets/include/karts/luigi_kart.mk b/assets/include/karts/luigi_kart.mk index bd2dedb69..337942226 100644 --- a/assets/include/karts/luigi_kart.mk +++ b/assets/include/karts/luigi_kart.mk @@ -1487,19 +1487,21 @@ LUIGI_EXPORT_SENTINEL := $(LUIGI_KART_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/karts/luigi_kart.o: $(LUIGI_KART_FRAME_PNG:%.png=%.mio0) $(LUIGI_KART_PALETTE_PNG:%.png=%.bin) $(LUIGI_KART_FRAME_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(LUIGI_KART_FRAME_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(LUIGI_KART_FRAME_PNG) $(LUIGI_KART_PALETTE_PNG): $(LUIGI_EXPORT_SENTINEL) ; $(LUIGI_EXPORT_SENTINEL): $(ASSET_DIR)/karts/luigi_kart.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_luigi_kart distclean_luigi_kart: diff --git a/assets/include/karts/mario_kart.mk b/assets/include/karts/mario_kart.mk index 9a3f320c4..997d38523 100644 --- a/assets/include/karts/mario_kart.mk +++ b/assets/include/karts/mario_kart.mk @@ -1487,19 +1487,21 @@ MARIO_EXPORT_SENTINEL := $(MARIO_KART_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/karts/mario_kart.o: $(MARIO_KART_FRAME_PNG:%.png=%.mio0) $(MARIO_KART_PALETTE_PNG:%.png=%.bin) $(MARIO_KART_FRAME_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(MARIO_KART_FRAME_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(MARIO_KART_FRAME_PNG) $(MARIO_KART_PALETTE_PNG): $(MARIO_EXPORT_SENTINEL) ; $(MARIO_EXPORT_SENTINEL): $(ASSET_DIR)/karts/mario_kart.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_mario_kart distclean_mario_kart: diff --git a/assets/include/karts/peach_kart.mk b/assets/include/karts/peach_kart.mk index 9d7504cdf..0d1041309 100644 --- a/assets/include/karts/peach_kart.mk +++ b/assets/include/karts/peach_kart.mk @@ -1487,19 +1487,21 @@ PEACH_EXPORT_SENTINEL := $(PEACH_KART_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/karts/peach_kart.o: $(PEACH_KART_FRAME_PNG:%.png=%.mio0) $(PEACH_KART_PALETTE_PNG:%.png=%.bin) $(PEACH_KART_FRAME_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(PEACH_KART_FRAME_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(PEACH_KART_FRAME_PNG) $(PEACH_KART_PALETTE_PNG): $(PEACH_EXPORT_SENTINEL) ; $(PEACH_EXPORT_SENTINEL): $(ASSET_DIR)/karts/peach_kart.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_peach_kart distclean_peach_kart: diff --git a/assets/include/karts/toad_kart.mk b/assets/include/karts/toad_kart.mk index 6cb9195f1..8666b2d43 100644 --- a/assets/include/karts/toad_kart.mk +++ b/assets/include/karts/toad_kart.mk @@ -1487,19 +1487,21 @@ TOAD_EXPORT_SENTINEL := $(TOAD_KART_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/karts/toad_kart.o: $(TOAD_KART_FRAME_PNG:%.png=%.mio0) $(TOAD_KART_PALETTE_PNG:%.png=%.bin) $(TOAD_KART_FRAME_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(TOAD_KART_FRAME_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(TOAD_KART_FRAME_PNG) $(TOAD_KART_PALETTE_PNG): $(TOAD_EXPORT_SENTINEL) ; $(TOAD_EXPORT_SENTINEL): $(ASSET_DIR)/karts/toad_kart.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_toad_kart distclean_toad_kart: diff --git a/assets/include/karts/wario_kart.mk b/assets/include/karts/wario_kart.mk index 6cc96c0c4..8ef796a0a 100644 --- a/assets/include/karts/wario_kart.mk +++ b/assets/include/karts/wario_kart.mk @@ -1487,19 +1487,21 @@ WARIO_EXPORT_SENTINEL := $(WARIO_KART_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/karts/wario_kart.o: $(WARIO_KART_FRAME_PNG:%.png=%.mio0) $(WARIO_KART_PALETTE_PNG:%.png=%.bin) $(WARIO_KART_FRAME_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(WARIO_KART_FRAME_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(WARIO_KART_FRAME_PNG) $(WARIO_KART_PALETTE_PNG): $(WARIO_EXPORT_SENTINEL) ; $(WARIO_EXPORT_SENTINEL): $(ASSET_DIR)/karts/wario_kart.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_wario_kart distclean_wario_kart: diff --git a/assets/include/karts/yoshi_kart.mk b/assets/include/karts/yoshi_kart.mk index 09057bd03..baa1b1923 100644 --- a/assets/include/karts/yoshi_kart.mk +++ b/assets/include/karts/yoshi_kart.mk @@ -1487,19 +1487,21 @@ YOSHI_EXPORT_SENTINEL := $(YOSHI_KART_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/karts/yoshi_kart.o: $(YOSHI_KART_FRAME_PNG:%.png=%.mio0) $(YOSHI_KART_PALETTE_PNG:%.png=%.bin) $(YOSHI_KART_FRAME_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(YOSHI_KART_FRAME_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $( $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s raw -f rgba16 $(YOSHI_KART_FRAME_PNG) $(YOSHI_KART_PALETTE_PNG): $(YOSHI_EXPORT_SENTINEL) ; $(YOSHI_EXPORT_SENTINEL): $(ASSET_DIR)/karts/yoshi_kart.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_yoshi_kart distclean_yoshi_kart: diff --git a/assets/include/lakitu/bluelight.mk b/assets/include/lakitu/bluelight.mk index 8735c449e..e58e9ecb3 100644 --- a/assets/include/lakitu/bluelight.mk +++ b/assets/include/lakitu/bluelight.mk @@ -17,18 +17,20 @@ BLUELIGHT_EXPORT_SENTINEL := $(BLUELIGHT_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(BLUELIGHT_FRAMES:%.png=%.bin) $(BLUELIGHT_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(BLUELIGHT_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(BLUELIGHT_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(BLUELIGHT_PALETTE:%.png=%.inc.c) $(BLUELIGHT_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(BLUELIGHT_FRAMES) $(BLUELIGHT_PALETTE): $(BLUELIGHT_EXPORT_SENTINEL) ; $(BLUELIGHT_EXPORT_SENTINEL): assets/lakitu/bluelight.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_lakitu_bluelight distclean_lakitu_bluelight: diff --git a/assets/include/lakitu/checkeredflag.mk b/assets/include/lakitu/checkeredflag.mk index 1e1160eaa..def8776c8 100644 --- a/assets/include/lakitu/checkeredflag.mk +++ b/assets/include/lakitu/checkeredflag.mk @@ -41,18 +41,20 @@ CHECKEREDFLAG_EXPORT_SENTINEL := $(CHECKEREDFLAG_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(CHECKEREDFLAG_FRAMES:%.png=%.bin) $(CHECKEREDFLAG_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(CHECKEREDFLAG_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(CHECKEREDFLAG_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(CHECKEREDFLAG_PALETTE:%.png=%.inc.c) $(CHECKEREDFLAG_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(CHECKEREDFLAG_FRAMES) $(CHECKEREDFLAG_PALETTE): $(CHECKEREDFLAG_EXPORT_SENTINEL) ; $(CHECKEREDFLAG_EXPORT_SENTINEL): assets/lakitu/checkeredflag.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_lakitu_checkeredflag distclean_lakitu_checkeredflag: diff --git a/assets/include/lakitu/finallap.mk b/assets/include/lakitu/finallap.mk index 2cbd7ced3..9a8497552 100644 --- a/assets/include/lakitu/finallap.mk +++ b/assets/include/lakitu/finallap.mk @@ -25,18 +25,20 @@ FINALLAP_EXPORT_SENTINEL := $(FINALLAP_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(FINALLAP_FRAMES:%.png=%.bin) $(FINALLAP_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(FINALLAP_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(FINALLAP_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(FINALLAP_PALETTE:%.png=%.inc.c) $(FINALLAP_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(FINALLAP_FRAMES) $(FINALLAP_PALETTE): $(FINALLAP_EXPORT_SENTINEL) ; $(FINALLAP_EXPORT_SENTINEL): assets/lakitu/finallap.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_lakitu_finallap distclean_lakitu_finallap: diff --git a/assets/include/lakitu/fishing.mk b/assets/include/lakitu/fishing.mk index 0c927624e..7acf855e1 100644 --- a/assets/include/lakitu/fishing.mk +++ b/assets/include/lakitu/fishing.mk @@ -13,18 +13,20 @@ FISHING_EXPORT_SENTINEL := $(FISHING_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(FISHING_FRAMES:%.png=%.bin) $(FISHING_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(FISHING_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(FISHING_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(FISHING_PALETTE:%.png=%.inc.c) $(FISHING_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(FISHING_FRAMES) $(FISHING_PALETTE): $(FISHING_EXPORT_SENTINEL) ; $(FISHING_EXPORT_SENTINEL): assets/lakitu/fishing.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_lakitu_fishing distclean_lakitu_fishing: diff --git a/assets/include/lakitu/nolights.mk b/assets/include/lakitu/nolights.mk index 0094d3c52..8036dfb5d 100644 --- a/assets/include/lakitu/nolights.mk +++ b/assets/include/lakitu/nolights.mk @@ -17,18 +17,20 @@ NOLIGHTS_EXPORT_SENTINEL := $(NOLIGHTS_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(NOLIGHTS_FRAMES:%.png=%.bin) $(NOLIGHTS_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(NOLIGHTS_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(NOLIGHTS_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(NOLIGHTS_PALETTE:%.png=%.inc.c) $(NOLIGHTS_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(NOLIGHTS_FRAMES) $(NOLIGHTS_PALETTE): $(NOLIGHTS_EXPORT_SENTINEL) ; $(NOLIGHTS_EXPORT_SENTINEL): assets/lakitu/nolights.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_lakitu_nolights distclean_lakitu_nolights: diff --git a/assets/include/lakitu/redlights.mk b/assets/include/lakitu/redlights.mk index b34ea7945..c5c85021c 100644 --- a/assets/include/lakitu/redlights.mk +++ b/assets/include/lakitu/redlights.mk @@ -25,18 +25,20 @@ REDLIGHTS_EXPORT_SENTINEL := $(REDLIGHTS_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(REDLIGHTS_FRAMES:%.png=%.bin) $(REDLIGHTS_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(REDLIGHTS_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(REDLIGHTS_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(REDLIGHTS_PALETTE:%.png=%.inc.c) $(REDLIGHTS_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(REDLIGHTS_FRAMES) $(REDLIGHTS_PALETTE): $(REDLIGHTS_EXPORT_SENTINEL) ; $(REDLIGHTS_EXPORT_SENTINEL): assets/lakitu/redlights.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_lakitu_redlights distclean_lakitu_redlights: diff --git a/assets/include/lakitu/reverse.mk b/assets/include/lakitu/reverse.mk index 03c88dca3..415962e24 100644 --- a/assets/include/lakitu/reverse.mk +++ b/assets/include/lakitu/reverse.mk @@ -25,18 +25,20 @@ REVERSE_EXPORT_SENTINEL := $(REVERSE_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(REVERSE_FRAMES:%.png=%.bin) $(REVERSE_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(REVERSE_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(REVERSE_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(REVERSE_PALETTE:%.png=%.inc.c) $(REVERSE_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(REVERSE_FRAMES) $(REVERSE_PALETTE): $(REVERSE_EXPORT_SENTINEL) ; $(REVERSE_EXPORT_SENTINEL): assets/lakitu/reverse.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_lakitu_reverse distclean_lakitu_reverse: diff --git a/assets/include/lakitu/secondlap.mk b/assets/include/lakitu/secondlap.mk index 640184a9b..425123a79 100644 --- a/assets/include/lakitu/secondlap.mk +++ b/assets/include/lakitu/secondlap.mk @@ -25,18 +25,20 @@ SECONDLAP_EXPORT_SENTINEL := $(SECONDLAP_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(SECONDLAP_FRAMES:%.png=%.bin) $(SECONDLAP_FRAMES:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(SECONDLAP_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(SECONDLAP_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(SECONDLAP_PALETTE:%.png=%.inc.c) $(SECONDLAP_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(SECONDLAP_FRAMES) $(SECONDLAP_PALETTE): $(SECONDLAP_EXPORT_SENTINEL) ; $(SECONDLAP_EXPORT_SENTINEL): assets/lakitu/secondlap.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_lakitu_secondlap distclean_lakitu_secondlap: diff --git a/assets/include/minimap_icons.mk b/assets/include/minimap_icons.mk index 554ceab4f..dc3f76a68 100644 --- a/assets/include/minimap_icons.mk +++ b/assets/include/minimap_icons.mk @@ -17,13 +17,14 @@ MINIMAP_ICONS_EXPORT_SENTINEL := $(MINIMAP_ICONS_DIR)/.export $(BUILD_DIR)/src/data/common_textures.o: $(MINIMAP_ICONS_PNG:%.png=%.inc.c) $(MINIMAP_ICONS_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(MINIMAP_ICONS_PNG): $(MINIMAP_ICONS_EXPORT_SENTINEL) ; $(MINIMAP_ICONS_EXPORT_SENTINEL): $(ASSET_DIR)/minimap_icons.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_minimap_icons distclean_minimap_icons: diff --git a/assets/include/onomatopoeia.mk b/assets/include/onomatopoeia.mk index b1d8570a3..aa26b48ad 100644 --- a/assets/include/onomatopoeia.mk +++ b/assets/include/onomatopoeia.mk @@ -18,19 +18,21 @@ $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(ONOMATOPOEIA_PNG:%.png=%.mio0) $(BUILD_DIR)/src/data/some_data.o: $(ONOMATOPOEIA_PALETTE:%.png=%.inc.c) $(ONOMATOPOEIA_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(ONOMATOPOEIA_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(ONOMATOPOEIA_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(ONOMATOPOEIA_PALETTE) $(ONOMATOPOEIA_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(ONOMATOPOEIA_PNG) $(ONOMATOPOEIA_PALETTE): $(ONOMATOPOEIA_EXPORT_SENTINEL) ; $(ONOMATOPOEIA_EXPORT_SENTINEL): $(ASSET_DIR)/onomatopoeia.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_onomatopoeia distclean_onomatopoeia: diff --git a/assets/include/other_textures.mk b/assets/include/other_textures.mk index 033e6446e..6dcab9e92 100644 --- a/assets/include/other_textures.mk +++ b/assets/include/other_textures.mk @@ -467,7 +467,9 @@ $(BUILD_DIR)/$(OTHER_TEXTURES_DIR)/texture_67490C.rgba16.inc.c $(BUILD_DIR)/courses/big_donut/course_textures.linkonly.o: $(BIG_DONUT_TEXTURES) $(BUILD_DIR)/$(OTHER_TEXTURES_DIR)/%.rgba16.inc.c: $(OTHER_TEXTURES_DIR)/%.rgba16.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(BUILD_DIR)/$(OTHER_TEXTURES_DIR)/%.ia16.inc.c: $(OTHER_TEXTURES_DIR)/%.ia16.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f ia16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f ia16 diff --git a/assets/include/player_emblems.mk b/assets/include/player_emblems.mk index 6c9451e78..90a828144 100644 --- a/assets/include/player_emblems.mk +++ b/assets/include/player_emblems.mk @@ -13,16 +13,18 @@ PLAYER_EMBLEM_EXPORT_SENTINEL := $(PLAYER_EMBLEM_DIR)/.export $(BUILD_DIR)/src/data/common_textures.o: $(PLAYER_EMBLEM_PNGS:%.png=%.inc.c) $(PLAYER_EMBLEM_PALETTE:%.png=%.inc.c) $(PLAYER_EMBLEM_PNGS:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(PLAYER_EMBLEM_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(PLAYER_EMBLEM_PALETTE) $(PLAYER_EMBLEM_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(PLAYER_EMBLEM_PNGS) $(PLAYER_EMBLEM_PALETTE): $(PLAYER_EMBLEM_EXPORT_SENTINEL) ; $(PLAYER_EMBLEM_EXPORT_SENTINEL): $(ASSET_DIR)/player_emblems.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_player_emblems distclean_player_emblems: diff --git a/assets/include/startup_logo.mk b/assets/include/startup_logo.mk index b8c70d485..0f5b7c2ce 100644 --- a/assets/include/startup_logo.mk +++ b/assets/include/startup_logo.mk @@ -7,13 +7,14 @@ STARTUP_LOGO_EXPORT_SENTINEL := $(STARTUP_LOGO)/.export $(BUILD_DIR)/src/data/startup_logo.o: $(REFLECTION_MAP:%.png=%.inc.c) $(REFLECTION_MAP:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(REFLECTION_MAP): $(STARTUP_LOGO_EXPORT_SENTINEL) ; $(STARTUP_LOGO_EXPORT_SENTINEL): $(ASSET_DIR)/startup_logo.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_startup_logo distclean_startup_logo: diff --git a/assets/include/trees.mk b/assets/include/trees.mk index 7c60c4bdc..05e7b1360 100644 --- a/assets/include/trees.mk +++ b/assets/include/trees.mk @@ -24,21 +24,23 @@ TREES_EXPORT_SENTINEL := $(TREES_DIR)/.export $(BUILD_DIR)/$(DATA_DIR)/other_textures.o: $(TREES_PNG:%.png=%.mio0) $(TREES_PNG:%.png=%.mio0): %.mio0 : %.bin - $(MIO0TOOL) -c $< $@ + $(V)$(MIO0TOOL) -c $< $@ $(TREES_PNG:%.png=%.bin): %.bin : %.png - $(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(TREES_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s raw -f ci8 -c rgba16 -p $(TREES_PALETTE) $(BUILD_DIR)/src/data/common_textures.o: $(TREES_PALETTE_IMPORT:%.png=%.inc.c) $(TREES_PALETTE:%.png=%.inc.c) $(TREES_PALETTE_IMPORT:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(TREES_PNG) $(TREES_PALETTE) $(TREES_PALETTE_IMPORT): $(TREES_EXPORT_SENTINEL) ; $(TREES_EXPORT_SENTINEL): $(ASSET_DIR)/trees.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_trees distclean_trees: diff --git a/assets/include/unused_traffic_light.mk b/assets/include/unused_traffic_light.mk index 54021a70d..aa33d8cb9 100644 --- a/assets/include/unused_traffic_light.mk +++ b/assets/include/unused_traffic_light.mk @@ -19,16 +19,18 @@ UNUSED_TRAFFIC_LIGHT_EXPORT_SENTINEL := $(UNUSED_TRAFFIC_LIGHT_DIR)/.export $(BUILD_DIR)/src/data/common_textures.o: $(UNUSED_TRAFFIC_LIGHT_PNG:%.png=%.inc.c) $(UNUSED_TRAFFIC_LIGHT_PALETTE:%.png=%.inc.c) $(UNUSED_TRAFFIC_LIGHT_PNG:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(UNUSED_TRAFFIC_LIGHT_PALETTE) + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -Z $@ -g $< -s u8 -f ci8 -c rgba16 -p $(UNUSED_TRAFFIC_LIGHT_PALETTE) $(UNUSED_TRAFFIC_LIGHT_PALETTE:%.png=%.inc.c): %.inc.c : %.png - $(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 + @$(PRINT) "$(GREEN)Converting: $(BLUE) $< -> $@$(NO_COL)\n" + $(V)$(N64GRAPHICS) -i $@ -g $< -s u8 -f rgba16 $(UNUSED_TRAFFIC_LIGHT_PNG) $(UNUSED_TRAFFIC_LIGHT_PALETTE): $(UNUSED_TRAFFIC_LIGHT_EXPORT_SENTINEL) ; $(UNUSED_TRAFFIC_LIGHT_EXPORT_SENTINEL): $(ASSET_DIR)/unused_traffic_light.json - $(ASSET_EXTRACT) $(BASEROM) $< - $(TOUCH) $@ + $(V)$(ASSET_EXTRACT) $(BASEROM) $< + $(V)$(TOUCH) $@ .PHONY: distclean_unused_traffic_light distclean_unused_traffic_light: diff --git a/courses/all_course_model.h b/courses/all_course_model.h index e5f8ed247..67cbb1944 100644 --- a/courses/all_course_model.h +++ b/courses/all_course_model.h @@ -2,7 +2,7 @@ #define ALL_COURSE_MODEL_H #include "macros.h" -#include "common_structs.h" +#include /** WARNING!!! * This header file has the sizes of the vertex array's hard coded. diff --git a/courses/banshee_boardwalk/course_data.c b/courses/banshee_boardwalk/course_data.c index d9b688b7a..2f36853a2 100644 --- a/courses/banshee_boardwalk/course_data.c +++ b/courses/banshee_boardwalk/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" #include "course_textures.linkonly.h" @@ -4123,53 +4124,53 @@ struct ActorSpawnData d_course_banshee_boardwalk_item_box_spawns[] = { // 0xB458 TrackSections d_course_banshee_boardwalk_track_sections[] = { - { d_course_banshee_boardwalk_packed_dl_1DA0, 4, 255, 0x0000 }, - { d_course_banshee_boardwalk_packed_dl_5498, 4, 255, 0x0000 }, - { d_course_banshee_boardwalk_packed_dl_27D0, 6, 1, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_28D0, 6, 2, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_29A0, 6, 3, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_2A70, 6, 4, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_26E8, 6, 5, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_22C8, 6, 6, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_2398, 6, 7, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_2440, 6, 8, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_2520, 6, 9, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_2608, 6, 10, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_2B78, 6, 11, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_3240, 6, 12, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_3310, 6, 13, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_33C8, 6, 14, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_34A0, 6, 15, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_1830, 6, 16, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_18E0, 6, 17, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_1968, 6, 18, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_1A00, 6, 19, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_30F0, 6, 20, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_2C20, 6, 21, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_2D40, 6, 22, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_2E40, 6, 23, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_2F38, 6, 24, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_3020, 6, 25, 0x2000 }, - { d_course_banshee_boardwalk_packed_dl_3930, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3AA0, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3BA0, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3C40, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3830, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3638, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_36C8, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3740, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_37C0, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3D08, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_40D0, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_4070, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_4008, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3F78, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3D90, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3E10, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3E88, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_3F00, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_60, 255, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_1CF8, 4, 255, 0x8000 }, - { d_course_banshee_boardwalk_packed_dl_1748, 6, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_1DA0, STONE, 255, 0x0000 }, + { d_course_banshee_boardwalk_packed_dl_5498, STONE, 255, 0x0000 }, + { d_course_banshee_boardwalk_packed_dl_27D0, BRIDGE, 1, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_28D0, BRIDGE, 2, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_29A0, BRIDGE, 3, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_2A70, BRIDGE, 4, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_26E8, BRIDGE, 5, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_22C8, BRIDGE, 6, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_2398, BRIDGE, 7, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_2440, BRIDGE, 8, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_2520, BRIDGE, 9, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_2608, BRIDGE, 10, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_2B78, BRIDGE, 11, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_3240, BRIDGE, 12, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_3310, BRIDGE, 13, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_33C8, BRIDGE, 14, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_34A0, BRIDGE, 15, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_1830, BRIDGE, 16, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_18E0, BRIDGE, 17, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_1968, BRIDGE, 18, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_1A00, BRIDGE, 19, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_30F0, BRIDGE, 20, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_2C20, BRIDGE, 21, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_2D40, BRIDGE, 22, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_2E40, BRIDGE, 23, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_2F38, BRIDGE, 24, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_3020, BRIDGE, 25, 0x2000 }, + { d_course_banshee_boardwalk_packed_dl_3930, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3AA0, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3BA0, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3C40, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3830, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3638, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_36C8, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3740, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_37C0, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3D08, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_40D0, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_4070, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_4008, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3F78, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3D90, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3E10, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3E88, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_3F00, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_60, RAMP, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_1CF8, STONE, 255, 0x8000 }, + { d_course_banshee_boardwalk_packed_dl_1748, BRIDGE, 255, 0x8000 }, { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/banshee_boardwalk/course_offsets.c b/courses/banshee_boardwalk/course_offsets.c index 39c00b570..973881f6f 100644 --- a/courses/banshee_boardwalk/course_offsets.c +++ b/courses/banshee_boardwalk/course_offsets.c @@ -1,7 +1,8 @@ #include -#include "PR/gbi.h" +#include #include "course_offsets.h" #include "courses/banshee_boardwalk/course_data.h" +#include extern u8 gTexture6447C4[]; extern u8 gTexture676FB0[]; diff --git a/courses/banshee_boardwalk/course_vertices.inc.c b/courses/banshee_boardwalk/course_vertices.inc.c index 60b5b2dfa..08077d547 100644 --- a/courses/banshee_boardwalk/course_vertices.inc.c +++ b/courses/banshee_boardwalk/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_banshee_boardwalk_vertex[] = { {{-1384, 12, -187}, { 2303, -256}, {MACRO_COLOR_FLAG(0x7c, 0x7c, 0x7c, 0), 0x00}}, diff --git a/courses/big_donut/course_displaylists.inc.c b/courses/big_donut/course_displaylists.inc.c index f5184e620..e181fa080 100644 --- a/courses/big_donut/course_displaylists.inc.c +++ b/courses/big_donut/course_displaylists.inc.c @@ -3,7 +3,6 @@ #include #include #include -#include #include "course_displaylists.inc.h" #include "course_textures.linkonly.h" @@ -614,4 +613,4 @@ Gfx d_course_big_donut_packed_dl_1070[] = { gsSPDisplayList(d_course_big_donut_packed_dl_1040), gsSPEndDisplayList(), -}; \ No newline at end of file +}; diff --git a/courses/big_donut/course_vertices.inc.c b/courses/big_donut/course_vertices.inc.c index c29f92f0b..71d711aa4 100644 --- a/courses/big_donut/course_vertices.inc.c +++ b/courses/big_donut/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_big_donut_vertex[] = { {{ 609, 270, 794}, { 1024, 1024}, {MACRO_COLOR_FLAG(0x48, 0x48, 0xfc, 0), 0x00}}, diff --git a/courses/block_fort/course_vertices.inc.c b/courses/block_fort/course_vertices.inc.c index 0d6f2262b..ea599254f 100644 --- a/courses/block_fort/course_vertices.inc.c +++ b/courses/block_fort/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_block_fort_vertex[] = { {{ 85, 0, 476}, { 0, 0}, {MACRO_COLOR_FLAG(0xb8, 0xb0, 0xcc, 0), 0x00}}, diff --git a/courses/bowsers_castle/course_data.c b/courses/bowsers_castle/course_data.c index 55360bb7f..db10fe3dd 100644 --- a/courses/bowsers_castle/course_data.c +++ b/courses/bowsers_castle/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" @@ -4073,41 +4074,41 @@ struct ActorSpawnData d_course_bowsers_castle_item_box_spawns[] = { // 0x93D8 TrackSections d_course_bowsers_castle_addr[] = { - { d_course_bowsers_castle_packed_dl_5448, 4, 1, 0x0000 }, - { d_course_bowsers_castle_packed_dl_53E0, 4, 2, 0x0000 }, - { d_course_bowsers_castle_packed_dl_93A0, 17, 3, 0x0000 }, - { d_course_bowsers_castle_packed_dl_9290, 17, 4, 0x0000 }, - { d_course_bowsers_castle_packed_dl_30C8, 4, 5, 0x0000 }, - { d_course_bowsers_castle_packed_dl_1FA0, 8, 5, 0x0000 }, - { d_course_bowsers_castle_packed_dl_3578, 4, 6, 0x0000 }, - { d_course_bowsers_castle_packed_dl_3930, 4, 7, 0x0000 }, - { d_course_bowsers_castle_packed_dl_3C80, 4, 8, 0x0000 }, - { d_course_bowsers_castle_packed_dl_D38, 4, 9, 0x0000 }, - { d_course_bowsers_castle_packed_dl_41A8, 4, 10, 0x0000 }, - { d_course_bowsers_castle_packed_dl_B80, 4, 11, 0x0000 }, - { d_course_bowsers_castle_packed_dl_280, 16, 12, 0x0000 }, - { d_course_bowsers_castle_packed_dl_2A48, 4, 12, 0x0000 }, - { d_course_bowsers_castle_packed_dl_A20, 4, 13, 0x0000 }, - { d_course_bowsers_castle_packed_dl_470, 4, 14, 0x0000 }, - { d_course_bowsers_castle_packed_dl_3308, 4, 15, 0x0000 }, - { d_course_bowsers_castle_packed_dl_1EA8, 8, 15, 0x0000 }, - { d_course_bowsers_castle_packed_dl_9328, 17, 16, 0x0000 }, - { d_course_bowsers_castle_packed_dl_9438, 17, 17, 0x0000 }, - { d_course_bowsers_castle_packed_dl_5378, 4, 18, 0x0000 }, - { d_course_bowsers_castle_packed_dl_5300, 4, 19, 0x0000 }, - { d_course_bowsers_castle_packed_dl_5270, 4, 20, 0x0000 }, - { d_course_bowsers_castle_packed_dl_51E8, 4, 21, 0x0000 }, - { d_course_bowsers_castle_packed_dl_54E8, 4, 22, 0x0000 }, - { d_course_bowsers_castle_packed_dl_5778, 4, 23, 0x0000 }, - { d_course_bowsers_castle_packed_dl_56F0, 4, 24, 0x0000 }, - { d_course_bowsers_castle_packed_dl_5678, 4, 25, 0x0000 }, - { d_course_bowsers_castle_packed_dl_55E8, 4, 26, 0x0000 }, - { d_course_bowsers_castle_packed_dl_5560, 4, 27, 0x0000 }, - { d_course_bowsers_castle_packed_dl_8E40, 4, 255, 0x0000 }, - { d_course_bowsers_castle_packed_dl_2BB8, 4, 255, 0x0000 }, - { d_course_bowsers_castle_packed_dl_75E8, 255, 255, 0x0000 }, - { d_course_bowsers_castle_packed_dl_9278, 255, 255, 0x0000 }, - { d_course_bowsers_castle_packed_dl_3B0, 255, 255, 0x0000 }, - { d_course_bowsers_castle_packed_dl_83B0, 255, 255, 0x0000 }, - { 0x00000000, 0, 0, 0x0000 }, + { d_course_bowsers_castle_packed_dl_5448, STONE, 1, 0x0000 }, + { d_course_bowsers_castle_packed_dl_53E0, STONE, 2, 0x0000 }, + { d_course_bowsers_castle_packed_dl_93A0, WOOD_BRIDGE, 3, 0x0000 }, + { d_course_bowsers_castle_packed_dl_9290, WOOD_BRIDGE, 4, 0x0000 }, + { d_course_bowsers_castle_packed_dl_30C8, STONE, 5, 0x0000 }, + { d_course_bowsers_castle_packed_dl_1FA0, GRASS, 5, 0x0000 }, + { d_course_bowsers_castle_packed_dl_3578, STONE, 6, 0x0000 }, + { d_course_bowsers_castle_packed_dl_3930, STONE, 7, 0x0000 }, + { d_course_bowsers_castle_packed_dl_3C80, STONE, 8, 0x0000 }, + { d_course_bowsers_castle_packed_dl_D38, STONE, 9, 0x0000 }, + { d_course_bowsers_castle_packed_dl_41A8, STONE, 10, 0x0000 }, + { d_course_bowsers_castle_packed_dl_B80, STONE, 11, 0x0000 }, + { d_course_bowsers_castle_packed_dl_280, ROPE_BRIDGE, 12, 0x0000 }, + { d_course_bowsers_castle_packed_dl_2A48, STONE, 12, 0x0000 }, + { d_course_bowsers_castle_packed_dl_A20, STONE, 13, 0x0000 }, + { d_course_bowsers_castle_packed_dl_470, STONE, 14, 0x0000 }, + { d_course_bowsers_castle_packed_dl_3308, STONE, 15, 0x0000 }, + { d_course_bowsers_castle_packed_dl_1EA8, GRASS, 15, 0x0000 }, + { d_course_bowsers_castle_packed_dl_9328, WOOD_BRIDGE, 16, 0x0000 }, + { d_course_bowsers_castle_packed_dl_9438, WOOD_BRIDGE, 17, 0x0000 }, + { d_course_bowsers_castle_packed_dl_5378, STONE, 18, 0x0000 }, + { d_course_bowsers_castle_packed_dl_5300, STONE, 19, 0x0000 }, + { d_course_bowsers_castle_packed_dl_5270, STONE, 20, 0x0000 }, + { d_course_bowsers_castle_packed_dl_51E8, STONE, 21, 0x0000 }, + { d_course_bowsers_castle_packed_dl_54E8, STONE, 22, 0x0000 }, + { d_course_bowsers_castle_packed_dl_5778, STONE, 23, 0x0000 }, + { d_course_bowsers_castle_packed_dl_56F0, STONE, 24, 0x0000 }, + { d_course_bowsers_castle_packed_dl_5678, STONE, 25, 0x0000 }, + { d_course_bowsers_castle_packed_dl_55E8, STONE, 26, 0x0000 }, + { d_course_bowsers_castle_packed_dl_5560, STONE, 27, 0x0000 }, + { d_course_bowsers_castle_packed_dl_8E40, STONE, 255, 0x0000 }, + { d_course_bowsers_castle_packed_dl_2BB8, STONE, 255, 0x0000 }, + { d_course_bowsers_castle_packed_dl_75E8, RAMP, 255, 0x0000 }, + { d_course_bowsers_castle_packed_dl_9278, RAMP, 255, 0x0000 }, + { d_course_bowsers_castle_packed_dl_3B0, RAMP, 255, 0x0000 }, + { d_course_bowsers_castle_packed_dl_83B0, RAMP, 255, 0x0000 }, + { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/bowsers_castle/course_offsets.c b/courses/bowsers_castle/course_offsets.c index 3d840e873..976b884fb 100644 --- a/courses/bowsers_castle/course_offsets.c +++ b/courses/bowsers_castle/course_offsets.c @@ -63,7 +63,7 @@ const course_texture bowsers_castle_textures[] = { {0x00000000, 0x0000, 0x0000, 0x0}, }; -const u8 *bowsers_castle_dls[] = { +const Gfx *bowsers_castle_dls[] = { d_course_bowsers_castle_dl_0, d_course_bowsers_castle_dl_230, d_course_bowsers_castle_dl_110, diff --git a/courses/bowsers_castle/course_vertices.inc.c b/courses/bowsers_castle/course_vertices.inc.c index d880293b8..4ad387aee 100644 --- a/courses/bowsers_castle/course_vertices.inc.c +++ b/courses/bowsers_castle/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_bowsers_castle_vertex[] = { diff --git a/courses/choco_mountain/course_data.c b/courses/choco_mountain/course_data.c index 72e927c6e..75ea75ce5 100644 --- a/courses/choco_mountain/course_data.c +++ b/courses/choco_mountain/course_data.c @@ -4,6 +4,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" @@ -3560,75 +3561,75 @@ struct ActorSpawnData d_course_choco_mountain_item_box_spawns[] = { }; TrackSections d_course_choco_mountain_addr[] = { - { d_course_choco_mountain_packed_dl_5A70, 255, 255, 0x8000 }, - { d_course_choco_mountain_packed_dl_8E0, 255, 255, 0x0000 }, - { d_course_choco_mountain_packed_dl_448, 255, 255, 0x8000 }, - { d_course_choco_mountain_packed_dl_49F0, 2, 1, 0x0000 }, - { d_course_choco_mountain_packed_dl_4AB0, 2, 2, 0x0000 }, - { d_course_choco_mountain_packed_dl_4B58, 2, 3, 0x0000 }, - { d_course_choco_mountain_packed_dl_4C08, 2, 4, 0x0000 }, - { d_course_choco_mountain_packed_dl_4CC8, 2, 5, 0x0000 }, - { d_course_choco_mountain_packed_dl_4970, 2, 6, 0x0000 }, - { d_course_choco_mountain_packed_dl_4618, 2, 7, 0x0000 }, - { d_course_choco_mountain_packed_dl_4690, 2, 8, 0x0000 }, - { d_course_choco_mountain_packed_dl_46F0, 2, 9, 0x0000 }, - { d_course_choco_mountain_packed_dl_4790, 2, 10, 0x0000 }, - { d_course_choco_mountain_packed_dl_4840, 2, 11, 0x0000 }, - { d_course_choco_mountain_packed_dl_48E8, 2, 12, 0x0000 }, - { d_course_choco_mountain_packed_dl_4D90, 2, 13, 0x0000 }, - { d_course_choco_mountain_packed_dl_51D8, 2, 14, 0x0000 }, - { d_course_choco_mountain_packed_dl_5258, 2, 15, 0x0000 }, - { d_course_choco_mountain_packed_dl_52C8, 2, 16, 0x0000 }, - { d_course_choco_mountain_packed_dl_5338, 2, 17, 0x0000 }, - { d_course_choco_mountain_packed_dl_53D8, 2, 18, 0x0000 }, - { d_course_choco_mountain_packed_dl_5148, 2, 19, 0x0000 }, - { d_course_choco_mountain_packed_dl_4E40, 2, 20, 0x0000 }, - { d_course_choco_mountain_packed_dl_4EB0, 2, 21, 0x0000 }, - { d_course_choco_mountain_packed_dl_4F30, 2, 22, 0x0000 }, - { d_course_choco_mountain_packed_dl_4FC0, 2, 23, 0x0000 }, - { d_course_choco_mountain_packed_dl_5070, 2, 24, 0x0000 }, - { d_course_choco_mountain_packed_dl_2530, 12, 1, 0x0000 }, - { d_course_choco_mountain_packed_dl_2458, 12, 2, 0x0000 }, - { d_course_choco_mountain_packed_dl_2380, 12, 2, 0x0000 }, - { d_course_choco_mountain_packed_dl_2278, 12, 3, 0x0000 }, - { d_course_choco_mountain_packed_dl_21D8, 12, 3, 0x0000 }, - { d_course_choco_mountain_packed_dl_2600, 12, 4, 0x0000 }, - { d_course_choco_mountain_packed_dl_29E8, 12, 4, 0x0000 }, - { d_course_choco_mountain_packed_dl_28B0, 12, 5, 0x0000 }, - { d_course_choco_mountain_packed_dl_27F0, 12, 5, 0x0000 }, - { d_course_choco_mountain_packed_dl_2760, 12, 6, 0x0000 }, - { d_course_choco_mountain_packed_dl_20F8, 12, 6, 0x0000 }, - { d_course_choco_mountain_packed_dl_1A48, 12, 7, 0x0000 }, - { d_course_choco_mountain_packed_dl_1988, 12, 7, 0x0000 }, - { d_course_choco_mountain_packed_dl_17E0, 12, 8, 0x0000 }, - { d_course_choco_mountain_packed_dl_1740, 12, 8, 0x0000 }, - { d_course_choco_mountain_packed_dl_1670, 12, 9, 0x0000 }, - { d_course_choco_mountain_packed_dl_1AC8, 12, 9, 0x0000 }, - { d_course_choco_mountain_packed_dl_1FE8, 12, 10, 0x0000 }, - { d_course_choco_mountain_packed_dl_1E90, 12, 10, 0x0000 }, - { d_course_choco_mountain_packed_dl_1DB8, 12, 11, 0x0000 }, - { d_course_choco_mountain_packed_dl_1C98, 12, 11, 0x0000 }, - { d_course_choco_mountain_packed_dl_1BE0, 12, 12, 0x0000 }, - { d_course_choco_mountain_packed_dl_2AE8, 12, 12, 0x0000 }, - { d_course_choco_mountain_packed_dl_38B8, 12, 13, 0x0000 }, - { d_course_choco_mountain_packed_dl_37B0, 12, 13, 0x0000 }, - { d_course_choco_mountain_packed_dl_3708, 12, 14, 0x0000 }, - { d_course_choco_mountain_packed_dl_3670, 12, 15, 0x0000 }, - { d_course_choco_mountain_packed_dl_35B0, 12, 16, 0x0000 }, - { d_course_choco_mountain_packed_dl_3998, 12, 16, 0x0000 }, - { d_course_choco_mountain_packed_dl_3EE8, 12, 17, 0x0000 }, - { d_course_choco_mountain_packed_dl_3DD8, 12, 17, 0x0000 }, - { d_course_choco_mountain_packed_dl_3CF0, 12, 18, 0x0000 }, - { d_course_choco_mountain_packed_dl_3B98, 12, 18, 0x0000 }, - { d_course_choco_mountain_packed_dl_3A80, 12, 19, 0x0000 }, - { d_course_choco_mountain_packed_dl_34E0, 12, 20, 0x0000 }, - { d_course_choco_mountain_packed_dl_2FE8, 12, 21, 0x0000 }, - { d_course_choco_mountain_packed_dl_2EE8, 12, 21, 0x0000 }, - { d_course_choco_mountain_packed_dl_2E38, 12, 22, 0x0000 }, - { d_course_choco_mountain_packed_dl_2D68, 12, 22, 0x0000 }, - { d_course_choco_mountain_packed_dl_2CA8, 12, 23, 0x0000 }, - { d_course_choco_mountain_packed_dl_2BD0, 12, 23, 0x0000 }, - { d_course_choco_mountain_packed_dl_30A8, 12, 24, 0x0000 }, - { d_course_choco_mountain_packed_dl_3410, 12, 24, 0x0000 }, + { d_course_choco_mountain_packed_dl_5A70, RAMP, 255, 0x8000 }, + { d_course_choco_mountain_packed_dl_8E0, RAMP, 255, 0x0000 }, + { d_course_choco_mountain_packed_dl_448, RAMP, 255, 0x8000 }, + { d_course_choco_mountain_packed_dl_49F0, DIRT, 1, 0x0000 }, + { d_course_choco_mountain_packed_dl_4AB0, DIRT, 2, 0x0000 }, + { d_course_choco_mountain_packed_dl_4B58, DIRT, 3, 0x0000 }, + { d_course_choco_mountain_packed_dl_4C08, DIRT, 4, 0x0000 }, + { d_course_choco_mountain_packed_dl_4CC8, DIRT, 5, 0x0000 }, + { d_course_choco_mountain_packed_dl_4970, DIRT, 6, 0x0000 }, + { d_course_choco_mountain_packed_dl_4618, DIRT, 7, 0x0000 }, + { d_course_choco_mountain_packed_dl_4690, DIRT, 8, 0x0000 }, + { d_course_choco_mountain_packed_dl_46F0, DIRT, 9, 0x0000 }, + { d_course_choco_mountain_packed_dl_4790, DIRT, 10, 0x0000 }, + { d_course_choco_mountain_packed_dl_4840, DIRT, 11, 0x0000 }, + { d_course_choco_mountain_packed_dl_48E8, DIRT, 12, 0x0000 }, + { d_course_choco_mountain_packed_dl_4D90, DIRT, 13, 0x0000 }, + { d_course_choco_mountain_packed_dl_51D8, DIRT, 14, 0x0000 }, + { d_course_choco_mountain_packed_dl_5258, DIRT, 15, 0x0000 }, + { d_course_choco_mountain_packed_dl_52C8, DIRT, 16, 0x0000 }, + { d_course_choco_mountain_packed_dl_5338, DIRT, 17, 0x0000 }, + { d_course_choco_mountain_packed_dl_53D8, DIRT, 18, 0x0000 }, + { d_course_choco_mountain_packed_dl_5148, DIRT, 19, 0x0000 }, + { d_course_choco_mountain_packed_dl_4E40, DIRT, 20, 0x0000 }, + { d_course_choco_mountain_packed_dl_4EB0, DIRT, 21, 0x0000 }, + { d_course_choco_mountain_packed_dl_4F30, DIRT, 22, 0x0000 }, + { d_course_choco_mountain_packed_dl_4FC0, DIRT, 23, 0x0000 }, + { d_course_choco_mountain_packed_dl_5070, DIRT, 24, 0x0000 }, + { d_course_choco_mountain_packed_dl_2530, CLIFF, 1, 0x0000 }, + { d_course_choco_mountain_packed_dl_2458, CLIFF, 2, 0x0000 }, + { d_course_choco_mountain_packed_dl_2380, CLIFF, 2, 0x0000 }, + { d_course_choco_mountain_packed_dl_2278, CLIFF, 3, 0x0000 }, + { d_course_choco_mountain_packed_dl_21D8, CLIFF, 3, 0x0000 }, + { d_course_choco_mountain_packed_dl_2600, CLIFF, 4, 0x0000 }, + { d_course_choco_mountain_packed_dl_29E8, CLIFF, 4, 0x0000 }, + { d_course_choco_mountain_packed_dl_28B0, CLIFF, 5, 0x0000 }, + { d_course_choco_mountain_packed_dl_27F0, CLIFF, 5, 0x0000 }, + { d_course_choco_mountain_packed_dl_2760, CLIFF, 6, 0x0000 }, + { d_course_choco_mountain_packed_dl_20F8, CLIFF, 6, 0x0000 }, + { d_course_choco_mountain_packed_dl_1A48, CLIFF, 7, 0x0000 }, + { d_course_choco_mountain_packed_dl_1988, CLIFF, 7, 0x0000 }, + { d_course_choco_mountain_packed_dl_17E0, CLIFF, 8, 0x0000 }, + { d_course_choco_mountain_packed_dl_1740, CLIFF, 8, 0x0000 }, + { d_course_choco_mountain_packed_dl_1670, CLIFF, 9, 0x0000 }, + { d_course_choco_mountain_packed_dl_1AC8, CLIFF, 9, 0x0000 }, + { d_course_choco_mountain_packed_dl_1FE8, CLIFF, 10, 0x0000 }, + { d_course_choco_mountain_packed_dl_1E90, CLIFF, 10, 0x0000 }, + { d_course_choco_mountain_packed_dl_1DB8, CLIFF, 11, 0x0000 }, + { d_course_choco_mountain_packed_dl_1C98, CLIFF, 11, 0x0000 }, + { d_course_choco_mountain_packed_dl_1BE0, CLIFF, 12, 0x0000 }, + { d_course_choco_mountain_packed_dl_2AE8, CLIFF, 12, 0x0000 }, + { d_course_choco_mountain_packed_dl_38B8, CLIFF, 13, 0x0000 }, + { d_course_choco_mountain_packed_dl_37B0, CLIFF, 13, 0x0000 }, + { d_course_choco_mountain_packed_dl_3708, CLIFF, 14, 0x0000 }, + { d_course_choco_mountain_packed_dl_3670, CLIFF, 15, 0x0000 }, + { d_course_choco_mountain_packed_dl_35B0, CLIFF, 16, 0x0000 }, + { d_course_choco_mountain_packed_dl_3998, CLIFF, 16, 0x0000 }, + { d_course_choco_mountain_packed_dl_3EE8, CLIFF, 17, 0x0000 }, + { d_course_choco_mountain_packed_dl_3DD8, CLIFF, 17, 0x0000 }, + { d_course_choco_mountain_packed_dl_3CF0, CLIFF, 18, 0x0000 }, + { d_course_choco_mountain_packed_dl_3B98, CLIFF, 18, 0x0000 }, + { d_course_choco_mountain_packed_dl_3A80, CLIFF, 19, 0x0000 }, + { d_course_choco_mountain_packed_dl_34E0, CLIFF, 20, 0x0000 }, + { d_course_choco_mountain_packed_dl_2FE8, CLIFF, 21, 0x0000 }, + { d_course_choco_mountain_packed_dl_2EE8, CLIFF, 21, 0x0000 }, + { d_course_choco_mountain_packed_dl_2E38, CLIFF, 22, 0x0000 }, + { d_course_choco_mountain_packed_dl_2D68, CLIFF, 22, 0x0000 }, + { d_course_choco_mountain_packed_dl_2CA8, CLIFF, 23, 0x0000 }, + { d_course_choco_mountain_packed_dl_2BD0, CLIFF, 23, 0x0000 }, + { d_course_choco_mountain_packed_dl_30A8, CLIFF, 24, 0x0000 }, + { d_course_choco_mountain_packed_dl_3410, CLIFF, 24, 0x0000 }, { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/choco_mountain/course_vertices.inc.c b/courses/choco_mountain/course_vertices.inc.c index 2dfec14c3..560ca28f4 100644 --- a/courses/choco_mountain/course_vertices.inc.c +++ b/courses/choco_mountain/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_choco_mountain_vertex[] = { {{ 1364, 0, 796}, { 3158, 1024}, {MACRO_COLOR_FLAG(0xfc, 0xfc, 0xfc, 0), 0x00}}, diff --git a/courses/courseTable.c b/courses/courseTable.c index b4b59a453..00ee6ff72 100644 --- a/courses/courseTable.c +++ b/courses/courseTable.c @@ -1,6 +1,5 @@ #include #include -#include "types.h" #include "courseTable.h" #include "all_course_model.h" #include "all_course_packed.h" diff --git a/courses/courseTable.h b/courses/courseTable.h index 7563e061e..2ab5f3ae1 100644 --- a/courses/courseTable.h +++ b/courses/courseTable.h @@ -3,7 +3,6 @@ #include #include -#include "types.h" // dlRomStart, vertexRomStart, & vertexStart, are u8* because mio0 compressed. struct CourseTable { @@ -16,7 +15,7 @@ struct CourseTable { CourseVtx *vertexStart; // 0x18 segmented address of vertex data u32 vertexCount; // 0x1C number of vertices in vertex data u8 *packedStart; // 0x20 packed display list start address - uintptr_t finalDisplaylistOffset; // 0x24 + u8 *finalDisplaylistOffset; // 0x24 u32 *textures; // 0x20 segmented address of textures table u16 unknown1; // 0x2C u16 padding; // 0x2E diff --git a/courses/course_macro.h b/courses/course_macro.h deleted file mode 100644 index b7eb420f4..000000000 --- a/courses/course_macro.h +++ /dev/null @@ -1 +0,0 @@ -#define MACRO_COLOR_FLAG(r, g, b, flag) (r&~0x3) | (flag & 0x3), (g&~0x3) | ((flag>>2) & 0x3), b diff --git a/courses/dks_jungle_parkway/course_data.c b/courses/dks_jungle_parkway/course_data.c index 9fb5b2807..9e2ed33c3 100644 --- a/courses/dks_jungle_parkway/course_data.c +++ b/courses/dks_jungle_parkway/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" @@ -5403,7 +5404,7 @@ Gfx d_course_dks_jungle_parkway_dl_E048[] = gsSPEndDisplayList(), }; -Gfx d_course_dks_jungle_parkway_dl_E058[] = +Gfx d_course_dks_jungle_parkway_railings_dl[] = { gsSPDisplayList(d_course_dks_jungle_parkway_dl_E048), gsSPEndDisplayList(), @@ -5664,7 +5665,7 @@ Gfx d_course_dks_jungle_parkway_dl_E700[] = gsSPEndDisplayList(), }; -Gfx d_course_dks_jungle_parkway_dl_E730[] = +Gfx d_course_dks_jungle_parkway_boat_dl[] = { gsSPDisplayList(d_course_dks_jungle_parkway_dl_E700), gsSPEndDisplayList(), @@ -5802,7 +5803,7 @@ Gfx d_course_dks_jungle_parkway_dl_FC18[] = gsSPEndDisplayList(), }; -Gfx d_course_dks_jungle_parkway_dl_FC28[] = +Gfx d_course_dks_jungle_parkway_paddle_wheel_dl[] = { gsSPDisplayList(d_course_dks_jungle_parkway_dl_FC18), gsSPEndDisplayList(), @@ -6231,119 +6232,119 @@ struct UnkActorSpawnData d_course_dks_jungle_parkway_tree_spawn[] = { // 0x14338 TrackSections d_course_dks_jungle_parkway_addr[] = { - { d_course_dks_jungle_parkway_packed_dl_7DA0, 2, 1, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_7E50, 2, 2, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_7F58, 2, 3, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_7FC8, 2, 4, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_80A0, 2, 5, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_7C78, 2, 6, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_7538, 2, 7, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_76A0, 2, 8, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_77E8, 2, 9, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_9988, 6, 9, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_98E0, 252, 9, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_9B98, 253, 9, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_7920, 2, 10, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_7A88, 2, 11, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_7B10, 2, 12, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_8140, 2, 13, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_89B0, 2, 14, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_8A40, 2, 15, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_8BA8, 2, 16, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_8C60, 2, 17, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_8E78, 2, 18, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_8800, 2, 19, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_8358, 2, 20, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_8458, 2, 21, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_3130, 16, 21, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_30C0, 16, 21, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_3058, 16, 22, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_85A0, 15, 23, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_8648, 15, 24, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_86B0, 15, 25, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_8760, 15, 26, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5B50, 8, 1, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5AB0, 8, 2, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5A50, 8, 3, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_59E0, 8, 4, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5BE0, 8, 5, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5C68, 8, 6, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5D68, 8, 7, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5DF0, 8, 8, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_56B8, 8, 10, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5648, 8, 11, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_55D8, 8, 12, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5558, 8, 12, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5768, 8, 13, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5800, 8, 13, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5890, 8, 14, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_58F8, 8, 15, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5E70, 8, 15, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_64C0, 8, 16, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6530, 8, 17, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_65A8, 8, 17, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6620, 8, 17, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_66B0, 8, 17, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6728, 8, 18, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6798, 8, 19, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6430, 8, 19, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6008, 8, 20, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5F80, 8, 20, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_5EF0, 8, 21, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6098, 8, 21, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6100, 8, 21, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6240, 8, 1, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6368, 8, 1, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_3FD0, 15, 23, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_4230, 15, 24, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_4300, 15, 25, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_4548, 15, 26, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_9250, 17, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_54D8, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_3AD0, 255, 255, 0x8000 }, - { d_course_dks_jungle_parkway_packed_dl_32A0, 16, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_2E28, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_2DC8, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_2D60, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_2D00, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_2510, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_24B0, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_2450, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_23F0, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_21C0, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_2160, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_2100, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_20A0, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_2040, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_2B78, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_29F0, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_2890, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_2788, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_2570, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_2378, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_1EB8, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_1C98, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_1B38, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_1970, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_17D0, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_15B0, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_1430, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_12A8, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_1118, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_FD0, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_EC8, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_C90, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_B68, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_A40, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_918, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_7E0, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_6C8, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_520, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_398, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_200, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_0, 255, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_98F0, 6, 255, 0x0000 }, - { d_course_dks_jungle_parkway_packed_dl_37C0, 255, 255, 0x4000 }, - { d_course_dks_jungle_parkway_packed_dl_3758, 255, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_7DA0, DIRT, 1, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_7E50, DIRT, 2, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_7F58, DIRT, 3, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_7FC8, DIRT, 4, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_80A0, DIRT, 5, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_7C78, DIRT, 6, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_7538, DIRT, 7, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_76A0, DIRT, 8, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_77E8, DIRT, 9, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_9988, BRIDGE, 9, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_98E0, BOOST_RAMP_WOOD, 9, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_9B98, OUT_OF_BOUNDS, 9, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_7920, DIRT, 10, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_7A88, DIRT, 11, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_7B10, DIRT, 12, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_8140, DIRT, 13, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_89B0, DIRT, 14, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_8A40, DIRT, 15, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_8BA8, DIRT, 16, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_8C60, DIRT, 17, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_8E78, DIRT, 18, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_8800, DIRT, 19, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_8358, DIRT, 20, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_8458, DIRT, 21, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_3130, ROPE_BRIDGE, 21, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_30C0, ROPE_BRIDGE, 21, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_3058, ROPE_BRIDGE, 22, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_85A0, CAVE, 23, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_8648, CAVE, 24, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_86B0, CAVE, 25, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_8760, CAVE, 26, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5B50, GRASS, 1, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5AB0, GRASS, 2, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5A50, GRASS, 3, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_59E0, GRASS, 4, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5BE0, GRASS, 5, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5C68, GRASS, 6, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5D68, GRASS, 7, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5DF0, GRASS, 8, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_56B8, GRASS, 10, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5648, GRASS, 11, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_55D8, GRASS, 12, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5558, GRASS, 12, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5768, GRASS, 13, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5800, GRASS, 13, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5890, GRASS, 14, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_58F8, GRASS, 15, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5E70, GRASS, 15, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_64C0, GRASS, 16, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6530, GRASS, 17, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_65A8, GRASS, 17, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6620, GRASS, 17, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_66B0, GRASS, 17, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6728, GRASS, 18, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6798, GRASS, 19, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6430, GRASS, 19, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6008, GRASS, 20, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5F80, GRASS, 20, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_5EF0, GRASS, 21, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6098, GRASS, 21, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6100, GRASS, 21, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6240, GRASS, 1, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6368, GRASS, 1, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_3FD0, CAVE, 23, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_4230, CAVE, 24, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_4300, CAVE, 25, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_4548, CAVE, 26, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_9250, WOOD_BRIDGE, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_54D8, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_3AD0, RAMP, 255, 0x8000 }, + { d_course_dks_jungle_parkway_packed_dl_32A0, ROPE_BRIDGE, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_2E28, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_2DC8, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_2D60, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_2D00, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_2510, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_24B0, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_2450, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_23F0, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_21C0, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_2160, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_2100, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_20A0, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_2040, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_2B78, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_29F0, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_2890, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_2788, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_2570, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_2378, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_1EB8, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_1C98, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_1B38, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_1970, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_17D0, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_15B0, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_1430, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_12A8, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_1118, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_FD0, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_EC8, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_C90, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_B68, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_A40, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_918, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_7E0, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_6C8, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_520, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_398, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_200, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_0, RAMP, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_98F0, BRIDGE, 255, 0x0000 }, + { d_course_dks_jungle_parkway_packed_dl_37C0, RAMP, 255, 0x4000 }, + { d_course_dks_jungle_parkway_packed_dl_3758, RAMP, 255, 0x0000 }, { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/dks_jungle_parkway/course_data.h b/courses/dks_jungle_parkway/course_data.h index d8813d2bf..4513fcfb2 100644 --- a/courses/dks_jungle_parkway/course_data.h +++ b/courses/dks_jungle_parkway/course_data.h @@ -142,7 +142,7 @@ extern Gfx d_course_dks_jungle_parkway_dl_DE48[]; extern Gfx d_course_dks_jungle_parkway_dl_DF30[]; extern Gfx d_course_dks_jungle_parkway_dl_E030[]; extern Gfx d_course_dks_jungle_parkway_dl_E048[]; -extern Gfx d_course_dks_jungle_parkway_dl_E058[]; +extern Gfx d_course_dks_jungle_parkway_railings_dl[]; extern Gfx d_course_dks_jungle_parkway_dl_E068[]; extern Gfx d_course_dks_jungle_parkway_dl_E150[]; extern Gfx d_course_dks_jungle_parkway_dl_E238[]; @@ -156,7 +156,7 @@ extern Gfx d_course_dks_jungle_parkway_dl_E628[]; extern Gfx d_course_dks_jungle_parkway_dl_E688[]; extern Gfx d_course_dks_jungle_parkway_dl_E6E8[]; extern Gfx d_course_dks_jungle_parkway_dl_E700[]; -extern Gfx d_course_dks_jungle_parkway_dl_E730[]; +extern Gfx d_course_dks_jungle_parkway_boat_dl[]; extern Vtx d_course_dks_jungle_parkway_paddle_boat_paddle_model1[]; extern Vtx d_course_dks_jungle_parkway_paddle_boat_paddle_model2[]; extern Vtx d_course_dks_jungle_parkway_paddle_boat_paddle_model3[]; @@ -165,7 +165,7 @@ extern u8 d_course_dks_jungle_parkway_boat_paddle2[]; extern Gfx d_course_dks_jungle_parkway_dl_FAE0[]; extern Gfx d_course_dks_jungle_parkway_dl_FC08[]; extern Gfx d_course_dks_jungle_parkway_dl_FC18[]; -extern Gfx d_course_dks_jungle_parkway_dl_FC28[]; +extern Gfx d_course_dks_jungle_parkway_paddle_wheel_dl[]; extern Gfx d_course_dks_jungle_parkway_dl_FC38[]; extern Vtx d_course_dks_jungle_parkway_tree_model[]; extern u8 d_course_dks_jungle_parkway_tree2_top[]; diff --git a/courses/dks_jungle_parkway/course_vertices.inc.c b/courses/dks_jungle_parkway/course_vertices.inc.c index 94339d87e..26c84a952 100644 --- a/courses/dks_jungle_parkway/course_vertices.inc.c +++ b/courses/dks_jungle_parkway/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_dks_jungle_parkway_vertex[] = { {{-1842, 199, -812}, { 1024, 0}, {MACRO_COLOR_FLAG(0xfc, 0xfc, 0xfc, 0), 0x00}}, diff --git a/courses/double_deck/course_vertices.inc.c b/courses/double_deck/course_vertices.inc.c index f544c6302..0d6d7aa47 100644 --- a/courses/double_deck/course_vertices.inc.c +++ b/courses/double_deck/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_double_deck_vertex[] = { {{ 577, 60, 100}, { -317, 1024}, {MACRO_COLOR_FLAG(0x7c, 0x7c, 0x7c, 0), 0x00}}, diff --git a/courses/frappe_snowland/course_data.c b/courses/frappe_snowland/course_data.c index 6e976ea92..91f5e2dec 100644 --- a/courses/frappe_snowland/course_data.c +++ b/courses/frappe_snowland/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" @@ -2860,52 +2861,52 @@ Gfx *d_course_frappe_snowland_dl_list[] = { }; TrackSections d_course_frappe_snowland_addr[] = { - { d_course_frappe_snowland_packed_dl_3B20, 255, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_3118, 255, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_2A90, 255, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_3F80, 5, 1, 0x0000 }, - { d_course_frappe_snowland_packed_dl_3EF8, 5, 2, 0x0000 }, - { d_course_frappe_snowland_packed_dl_3E68, 5, 3, 0x0000 }, - { d_course_frappe_snowland_packed_dl_3DD8, 5, 4, 0x0000 }, - { d_course_frappe_snowland_packed_dl_3B48, 5, 5, 0x0000 }, - { d_course_frappe_snowland_packed_dl_3BD8, 5, 6, 0x0000 }, - { d_course_frappe_snowland_packed_dl_3CD8, 5, 7, 0x0000 }, - { d_course_frappe_snowland_packed_dl_3D58, 5, 8, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4020, 5, 9, 0x0000 }, - { d_course_frappe_snowland_packed_dl_43E8, 5, 10, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4378, 5, 11, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4300, 5, 12, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4288, 5, 13, 0x0000 }, - { d_course_frappe_snowland_packed_dl_40B0, 5, 14, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4120, 5, 15, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4188, 5, 16, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4208, 17, 17, 0x0000 }, - { d_course_frappe_snowland_packed_dl_50D0, 11, 1, 0x0000 }, - { d_course_frappe_snowland_packed_dl_51C8, 11, 2, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5330, 11, 3, 0x0000 }, - { d_course_frappe_snowland_packed_dl_54A0, 11, 4, 0x0000 }, - { d_course_frappe_snowland_packed_dl_55D0, 11, 5, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5740, 11, 6, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4FF8, 11, 7, 0x0000 }, - { d_course_frappe_snowland_packed_dl_48C0, 11, 8, 0x0000 }, - { d_course_frappe_snowland_packed_dl_49E0, 11, 9, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4BA0, 11, 10, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4D18, 11, 16, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4E40, 11, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_4F00, 11, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_58C0, 11, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5E08, 11, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5EA8, 11, 14, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5F90, 11, 13, 0x0000 }, - { d_course_frappe_snowland_packed_dl_6088, 11, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_61A0, 11, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_6268, 11, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5D90, 11, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5988, 11, 255, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5A20, 11, 8, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5AC0, 11, 9, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5B58, 11, 10, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5BE0, 11, 12, 0x0000 }, - { d_course_frappe_snowland_packed_dl_5C70, 11, 13, 0x0000 }, + { d_course_frappe_snowland_packed_dl_3B20, RAMP, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_3118, RAMP, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_2A90, RAMP, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_3F80, SNOW, 1, 0x0000 }, + { d_course_frappe_snowland_packed_dl_3EF8, SNOW, 2, 0x0000 }, + { d_course_frappe_snowland_packed_dl_3E68, SNOW, 3, 0x0000 }, + { d_course_frappe_snowland_packed_dl_3DD8, SNOW, 4, 0x0000 }, + { d_course_frappe_snowland_packed_dl_3B48, SNOW, 5, 0x0000 }, + { d_course_frappe_snowland_packed_dl_3BD8, SNOW, 6, 0x0000 }, + { d_course_frappe_snowland_packed_dl_3CD8, SNOW, 7, 0x0000 }, + { d_course_frappe_snowland_packed_dl_3D58, SNOW, 8, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4020, SNOW, 9, 0x0000 }, + { d_course_frappe_snowland_packed_dl_43E8, SNOW, 10, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4378, SNOW, 11, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4300, SNOW, 12, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4288, SNOW, 13, 0x0000 }, + { d_course_frappe_snowland_packed_dl_40B0, SNOW, 14, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4120, SNOW, 15, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4188, SNOW, 16, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4208, WOOD_BRIDGE, 17, 0x0000 }, + { d_course_frappe_snowland_packed_dl_50D0, SNOW_OFFROAD, 1, 0x0000 }, + { d_course_frappe_snowland_packed_dl_51C8, SNOW_OFFROAD, 2, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5330, SNOW_OFFROAD, 3, 0x0000 }, + { d_course_frappe_snowland_packed_dl_54A0, SNOW_OFFROAD, 4, 0x0000 }, + { d_course_frappe_snowland_packed_dl_55D0, SNOW_OFFROAD, 5, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5740, SNOW_OFFROAD, 6, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4FF8, SNOW_OFFROAD, 7, 0x0000 }, + { d_course_frappe_snowland_packed_dl_48C0, SNOW_OFFROAD, 8, 0x0000 }, + { d_course_frappe_snowland_packed_dl_49E0, SNOW_OFFROAD, 9, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4BA0, SNOW_OFFROAD, 10, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4D18, SNOW_OFFROAD, 16, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4E40, SNOW_OFFROAD, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_4F00, SNOW_OFFROAD, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_58C0, SNOW_OFFROAD, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5E08, SNOW_OFFROAD, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5EA8, SNOW_OFFROAD, 14, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5F90, SNOW_OFFROAD, 13, 0x0000 }, + { d_course_frappe_snowland_packed_dl_6088, SNOW_OFFROAD, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_61A0, SNOW_OFFROAD, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_6268, SNOW_OFFROAD, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5D90, SNOW_OFFROAD, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5988, SNOW_OFFROAD, 255, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5A20, SNOW_OFFROAD, 8, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5AC0, SNOW_OFFROAD, 9, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5B58, SNOW_OFFROAD, 10, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5BE0, SNOW_OFFROAD, 12, 0x0000 }, + { d_course_frappe_snowland_packed_dl_5C70, SNOW_OFFROAD, 13, 0x0000 }, { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/frappe_snowland/course_vertices.inc.c b/courses/frappe_snowland/course_vertices.inc.c index 2ba368bdf..aafd75a74 100644 --- a/courses/frappe_snowland/course_vertices.inc.c +++ b/courses/frappe_snowland/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_frappe_snowland_vertex[] = { {{-1518, 50, 1102}, { 4095, 0}, {MACRO_COLOR_FLAG(0xb4, 0xc8, 0xfc, 0), 0x00}}, diff --git a/courses/kalimari_desert/course_data.c b/courses/kalimari_desert/course_data.c index ed591a654..cac04ce9c 100644 --- a/courses/kalimari_desert/course_data.c +++ b/courses/kalimari_desert/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" @@ -8395,106 +8396,106 @@ struct ActorSpawnData d_course_kalimari_desert_cactus_spawn[] = { }; TrackSections d_course_kalimari_desert_addr[] = { - { d_course_kalimari_desert_packed_dl_8690, 2, 1, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8728, 2, 2, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8798, 2, 3, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8808, 2, 4, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8610, 2, 5, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8398, 2, 6, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8418, 2, 7, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8490, 2, 8, 0x0000 }, - { d_course_kalimari_desert_packed_dl_85A0, 2, 9, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8C08, 2, 10, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8D20, 2, 11, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8D98, 2, 12, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8B60, 2, 13, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8990, 2, 14, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8AC8, 2, 15, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8A40, 2, 16, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8920, 2, 17, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8C98, 2, 18, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8888, 2, 19, 0x0000 }, - { d_course_kalimari_desert_packed_dl_8508, 2, 20, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9C50, 13, 1, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9BD8, 13, 2, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9FE8, 13, 3, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9EB0, 13, 4, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9F20, 13, 5, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9F88, 13, 6, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9E38, 13, 7, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9CC0, 13, 8, 0x0000 }, - { d_course_kalimari_desert_packed_dl_A050, 13, 9, 0x0000 }, - { d_course_kalimari_desert_packed_dl_A350, 13, 10, 0x0000 }, - { d_course_kalimari_desert_packed_dl_A458, 13, 11, 0x0000 }, - { d_course_kalimari_desert_packed_dl_A4D0, 13, 12, 0x0000 }, - { d_course_kalimari_desert_packed_dl_A0C0, 13, 13, 0x0000 }, - { d_course_kalimari_desert_packed_dl_A138, 13, 14, 0x0000 }, - { d_course_kalimari_desert_packed_dl_A228, 13, 15, 0x0000 }, - { d_course_kalimari_desert_packed_dl_A1A0, 13, 16, 0x0000 }, - { d_course_kalimari_desert_packed_dl_A2D0, 13, 17, 0x0000 }, - { d_course_kalimari_desert_packed_dl_A3D8, 13, 18, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9DC0, 13, 19, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9D48, 13, 20, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5360, 13, 1, 0x0000 }, - { d_course_kalimari_desert_packed_dl_53D0, 13, 2, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5DB0, 13, 3, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5A60, 13, 4, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5B00, 13, 5, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5F28, 13, 6, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5580, 13, 3, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5E38, 13, 4, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5EB0, 13, 5, 0x0000 }, - { d_course_kalimari_desert_packed_dl_59F0, 13, 6, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5450, 13, 7, 0x0000 }, - { d_course_kalimari_desert_packed_dl_54C8, 13, 7, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5878, 13, 8, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6B28, 13, 9, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6E38, 13, 10, 0x0000 }, - { d_course_kalimari_desert_packed_dl_57D0, 13, 8, 0x0000 }, - { d_course_kalimari_desert_packed_dl_69F8, 13, 9, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6CF0, 13, 11, 0x0000 }, - { d_course_kalimari_desert_packed_dl_61D8, 13, 12, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6820, 13, 12, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6EE8, 13, 11, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6050, 13, 10, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6130, 13, 13, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6310, 13, 13, 0x0000 }, - { d_course_kalimari_desert_packed_dl_65F0, 13, 14, 0x0000 }, - { d_course_kalimari_desert_packed_dl_63C0, 13, 14, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6490, 13, 15, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6530, 13, 15, 0x0000 }, - { d_course_kalimari_desert_packed_dl_55F0, 13, 8, 0x0000 }, - { d_course_kalimari_desert_packed_dl_66C8, 13, 16, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6290, 13, 17, 0x0000 }, - { d_course_kalimari_desert_packed_dl_60C8, 13, 17, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6C70, 13, 18, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6DA0, 13, 18, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6BC0, 13, 19, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6958, 13, 19, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5728, 13, 20, 0x0000 }, - { d_course_kalimari_desert_packed_dl_56A0, 13, 20, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5FB0, 13, 2, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5C90, 13, 4, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5B88, 13, 7, 0x0000 }, - { d_course_kalimari_desert_packed_dl_52E0, 13, 8, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6A78, 13, 12, 0x0000 }, - { d_course_kalimari_desert_packed_dl_6780, 13, 14, 0x0000 }, - { d_course_kalimari_desert_packed_dl_68E0, 13, 16, 0x0000 }, - { d_course_kalimari_desert_packed_dl_5948, 13, 19, 0x0000 }, - { d_course_kalimari_desert_packed_dl_76C0, 14, 20, 0x0000 }, - { d_course_kalimari_desert_packed_dl_77F8, 14, 2, 0x0000 }, - { d_course_kalimari_desert_packed_dl_79F8, 14, 7, 0x0000 }, - { d_course_kalimari_desert_packed_dl_7890, 14, 8, 0x0000 }, - { d_course_kalimari_desert_packed_dl_7728, 14, 9, 0x0000 }, - { d_course_kalimari_desert_packed_dl_75C0, 14, 11, 0x0000 }, - { d_course_kalimari_desert_packed_dl_81A0, 14, 12, 0x0000 }, - { d_course_kalimari_desert_packed_dl_7E18, 14, 14, 0x0000 }, - { d_course_kalimari_desert_packed_dl_7CC8, 14, 15, 0x0000 }, - { d_course_kalimari_desert_packed_dl_7F80, 14, 16, 0x0000 }, - { d_course_kalimari_desert_packed_dl_80B8, 14, 17, 0x0000 }, - { d_course_kalimari_desert_packed_dl_7BC8, 14, 18, 0x0000 }, - { d_course_kalimari_desert_packed_dl_9B10, 255, 255, 0x0000 }, - { d_course_kalimari_desert_packed_dl_1B18, 255, 255, 0x0000 }, - { d_course_kalimari_desert_packed_dl_998, 255, 255, 0x4000 }, - { 0x00000000, 0, 0, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8690, DIRT, 1, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8728, DIRT, 2, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8798, DIRT, 3, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8808, DIRT, 4, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8610, DIRT, 5, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8398, DIRT, 6, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8418, DIRT, 7, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8490, DIRT, 8, 0x0000 }, + { d_course_kalimari_desert_packed_dl_85A0, DIRT, 9, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8C08, DIRT, 10, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8D20, DIRT, 11, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8D98, DIRT, 12, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8B60, DIRT, 13, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8990, DIRT, 14, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8AC8, DIRT, 15, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8A40, DIRT, 16, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8920, DIRT, 17, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8C98, DIRT, 18, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8888, DIRT, 19, 0x0000 }, + { d_course_kalimari_desert_packed_dl_8508, DIRT, 20, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9C50, DIRT_OFFROAD, 1, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9BD8, DIRT_OFFROAD, 2, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9FE8, DIRT_OFFROAD, 3, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9EB0, DIRT_OFFROAD, 4, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9F20, DIRT_OFFROAD, 5, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9F88, DIRT_OFFROAD, 6, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9E38, DIRT_OFFROAD, 7, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9CC0, DIRT_OFFROAD, 8, 0x0000 }, + { d_course_kalimari_desert_packed_dl_A050, DIRT_OFFROAD, 9, 0x0000 }, + { d_course_kalimari_desert_packed_dl_A350, DIRT_OFFROAD, 10, 0x0000 }, + { d_course_kalimari_desert_packed_dl_A458, DIRT_OFFROAD, 11, 0x0000 }, + { d_course_kalimari_desert_packed_dl_A4D0, DIRT_OFFROAD, 12, 0x0000 }, + { d_course_kalimari_desert_packed_dl_A0C0, DIRT_OFFROAD, 13, 0x0000 }, + { d_course_kalimari_desert_packed_dl_A138, DIRT_OFFROAD, 14, 0x0000 }, + { d_course_kalimari_desert_packed_dl_A228, DIRT_OFFROAD, 15, 0x0000 }, + { d_course_kalimari_desert_packed_dl_A1A0, DIRT_OFFROAD, 16, 0x0000 }, + { d_course_kalimari_desert_packed_dl_A2D0, DIRT_OFFROAD, 17, 0x0000 }, + { d_course_kalimari_desert_packed_dl_A3D8, DIRT_OFFROAD, 18, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9DC0, DIRT_OFFROAD, 19, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9D48, DIRT_OFFROAD, 20, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5360, DIRT_OFFROAD, 1, 0x0000 }, + { d_course_kalimari_desert_packed_dl_53D0, DIRT_OFFROAD, 2, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5DB0, DIRT_OFFROAD, 3, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5A60, DIRT_OFFROAD, 4, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5B00, DIRT_OFFROAD, 5, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5F28, DIRT_OFFROAD, 6, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5580, DIRT_OFFROAD, 3, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5E38, DIRT_OFFROAD, 4, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5EB0, DIRT_OFFROAD, 5, 0x0000 }, + { d_course_kalimari_desert_packed_dl_59F0, DIRT_OFFROAD, 6, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5450, DIRT_OFFROAD, 7, 0x0000 }, + { d_course_kalimari_desert_packed_dl_54C8, DIRT_OFFROAD, 7, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5878, DIRT_OFFROAD, 8, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6B28, DIRT_OFFROAD, 9, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6E38, DIRT_OFFROAD, 10, 0x0000 }, + { d_course_kalimari_desert_packed_dl_57D0, DIRT_OFFROAD, 8, 0x0000 }, + { d_course_kalimari_desert_packed_dl_69F8, DIRT_OFFROAD, 9, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6CF0, DIRT_OFFROAD, 11, 0x0000 }, + { d_course_kalimari_desert_packed_dl_61D8, DIRT_OFFROAD, 12, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6820, DIRT_OFFROAD, 12, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6EE8, DIRT_OFFROAD, 11, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6050, DIRT_OFFROAD, 10, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6130, DIRT_OFFROAD, 13, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6310, DIRT_OFFROAD, 13, 0x0000 }, + { d_course_kalimari_desert_packed_dl_65F0, DIRT_OFFROAD, 14, 0x0000 }, + { d_course_kalimari_desert_packed_dl_63C0, DIRT_OFFROAD, 14, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6490, DIRT_OFFROAD, 15, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6530, DIRT_OFFROAD, 15, 0x0000 }, + { d_course_kalimari_desert_packed_dl_55F0, DIRT_OFFROAD, 8, 0x0000 }, + { d_course_kalimari_desert_packed_dl_66C8, DIRT_OFFROAD, 16, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6290, DIRT_OFFROAD, 17, 0x0000 }, + { d_course_kalimari_desert_packed_dl_60C8, DIRT_OFFROAD, 17, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6C70, DIRT_OFFROAD, 18, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6DA0, DIRT_OFFROAD, 18, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6BC0, DIRT_OFFROAD, 19, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6958, DIRT_OFFROAD, 19, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5728, DIRT_OFFROAD, 20, 0x0000 }, + { d_course_kalimari_desert_packed_dl_56A0, DIRT_OFFROAD, 20, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5FB0, DIRT_OFFROAD, 2, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5C90, DIRT_OFFROAD, 4, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5B88, DIRT_OFFROAD, 7, 0x0000 }, + { d_course_kalimari_desert_packed_dl_52E0, DIRT_OFFROAD, 8, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6A78, DIRT_OFFROAD, 12, 0x0000 }, + { d_course_kalimari_desert_packed_dl_6780, DIRT_OFFROAD, 14, 0x0000 }, + { d_course_kalimari_desert_packed_dl_68E0, DIRT_OFFROAD, 16, 0x0000 }, + { d_course_kalimari_desert_packed_dl_5948, DIRT_OFFROAD, 19, 0x0000 }, + { d_course_kalimari_desert_packed_dl_76C0, TRAIN_TRACK, 20, 0x0000 }, + { d_course_kalimari_desert_packed_dl_77F8, TRAIN_TRACK, 2, 0x0000 }, + { d_course_kalimari_desert_packed_dl_79F8, TRAIN_TRACK, 7, 0x0000 }, + { d_course_kalimari_desert_packed_dl_7890, TRAIN_TRACK, 8, 0x0000 }, + { d_course_kalimari_desert_packed_dl_7728, TRAIN_TRACK, 9, 0x0000 }, + { d_course_kalimari_desert_packed_dl_75C0, TRAIN_TRACK, 11, 0x0000 }, + { d_course_kalimari_desert_packed_dl_81A0, TRAIN_TRACK, 12, 0x0000 }, + { d_course_kalimari_desert_packed_dl_7E18, TRAIN_TRACK, 14, 0x0000 }, + { d_course_kalimari_desert_packed_dl_7CC8, TRAIN_TRACK, 15, 0x0000 }, + { d_course_kalimari_desert_packed_dl_7F80, TRAIN_TRACK, 16, 0x0000 }, + { d_course_kalimari_desert_packed_dl_80B8, TRAIN_TRACK, 17, 0x0000 }, + { d_course_kalimari_desert_packed_dl_7BC8, TRAIN_TRACK, 18, 0x0000 }, + { d_course_kalimari_desert_packed_dl_9B10, RAMP, 255, 0x0000 }, + { d_course_kalimari_desert_packed_dl_1B18, RAMP, 255, 0x0000 }, + { d_course_kalimari_desert_packed_dl_998, RAMP, 255, 0x4000 }, + { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/kalimari_desert/course_offsets.c b/courses/kalimari_desert/course_offsets.c index 08bd004a1..feff3a8a0 100644 --- a/courses/kalimari_desert/course_offsets.c +++ b/courses/kalimari_desert/course_offsets.c @@ -57,7 +57,7 @@ const course_texture kalimari_desert_textures[] = { {0x00000000, 0x0000, 0x0000, 0x0}, }; -const u8 *kalimari_desert_dls[] = { +const Gfx *kalimari_desert_dls[] = { d_course_kalimari_desert_dl_0, d_course_kalimari_desert_dl_258, d_course_kalimari_desert_dl_100, diff --git a/courses/kalimari_desert/course_vertices.inc.c b/courses/kalimari_desert/course_vertices.inc.c index a8dc84eeb..56f3f4103 100644 --- a/courses/kalimari_desert/course_vertices.inc.c +++ b/courses/kalimari_desert/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_kalimari_desert_vertex[] = { {{ -702, 48, -1930}, { 2048, 0}, {MACRO_COLOR_FLAG(0xfc, 0xfc, 0xfc, 4), 0x00}}, diff --git a/courses/koopa_troopa_beach/course_data.c b/courses/koopa_troopa_beach/course_data.c index e1a7f2b00..ab446479f 100644 --- a/courses/koopa_troopa_beach/course_data.c +++ b/courses/koopa_troopa_beach/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include "course_displaylists.inc.h" @@ -8558,7 +8559,7 @@ u32 d_course_koopa_troopa_beach_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_koopa_troopa_beach_dl_16630, + (u32) d_course_koopa_troopa_beach_dl_16630, 0x00000000, 0x00000000, 0x00000000, @@ -8580,7 +8581,7 @@ u32 d_course_koopa_troopa_beach_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_koopa_troopa_beach_dl_16850, + (u32) d_course_koopa_troopa_beach_dl_16850, 0x00000000, 0x00000000, 0x00000000, @@ -8591,7 +8592,7 @@ u32 d_course_koopa_troopa_beach_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_koopa_troopa_beach_dl_168F0, + (u32) d_course_koopa_troopa_beach_dl_168F0, 0x00000024, 0x00000000, 0x00000000, @@ -8602,7 +8603,7 @@ u32 d_course_koopa_troopa_beach_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_koopa_troopa_beach_dl_16990, + (u32) d_course_koopa_troopa_beach_dl_16990, 0x00000019, 0x00000000, 0x00000000, @@ -8630,7 +8631,7 @@ u32 d_course_koopa_troopa_beach_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_koopa_troopa_beach_dl_16850, + (u32) d_course_koopa_troopa_beach_dl_16850, 0x00000000, 0x00000000, 0x00000000, @@ -8641,7 +8642,7 @@ u32 d_course_koopa_troopa_beach_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_koopa_troopa_beach_dl_168F0, + (u32) d_course_koopa_troopa_beach_dl_168F0, 0x00000024, 0x00000000, 0x00000000, @@ -8652,7 +8653,7 @@ u32 d_course_koopa_troopa_beach_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_koopa_troopa_beach_dl_16990, + (u32) d_course_koopa_troopa_beach_dl_16990, 0x00000019, 0x00000000, 0x00000000, @@ -9121,112 +9122,112 @@ struct ActorSpawnData d_course_koopa_troopa_beach_tree_spawn[] = { // 0x18FD8 TrackSections d_course_koopa_troopa_beach_addr[] = { - { d_course_koopa_troopa_beach_packed_dl_9688, 255, 255, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_D70, 3, 1, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_CC0, 3, 2, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_BD8, 3, 3, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_AE0, 3, 4, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_E60, 3, 5, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_F38, 3, 6, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1000, 3, 7, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_10B0, 3, 8, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_A00, 3, 9, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_610, 3, 10, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_518, 3, 11, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_440, 3, 12, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_390, 3, 13, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_6D8, 3, 14, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_778, 3, 15, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_858, 3, 16, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_928, 3, 17, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1190, 3, 18, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1C18, 3, 19, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1B58, 3, 20, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1A40, 3, 21, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1940, 3, 22, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1CC0, 3, 23, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1DA8, 3, 24, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1E90, 3, 25, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1F78, 3, 26, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1850, 3, 27, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_14D0, 3, 28, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_13D0, 3, 29, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_12D0, 3, 30, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1210, 3, 31, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1590, 3, 32, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1668, 3, 33, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_16F0, 3, 34, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_1778, 3, 35, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_4490, 3, 36, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3978, 10, 1, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_39E8, 10, 2, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3AC8, 10, 3, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3B40, 10, 4, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3C38, 10, 5, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3D00, 10, 8, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3DE0, 10, 9, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_38B0, 10, 10, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3470, 10, 11, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3390, 10, 12, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_32B0, 10, 13, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_31D0, 10, 14, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3550, 10, 15, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3630, 10, 16, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_36F0, 10, 17, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_37B0, 10, 18, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3ED8, 10, 20, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_4770, 10, 21, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_47E0, 10, 22, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_48B0, 10, 23, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_4920, 10, 24, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_4A08, 10, 25, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_4AF0, 10, 26, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_4BD0, 10, 27, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_46A8, 10, 28, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_4200, 10, 29, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_4120, 10, 30, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_4040, 10, 31, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_3F60, 10, 32, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_42E0, 10, 33, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_43C0, 10, 34, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_45C8, 10, 35, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7F70, 12, 1, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8028, 12, 2, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_80F8, 12, 3, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8200, 12, 4, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_82D8, 12, 5, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8360, 12, 6, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8468, 12, 7, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7EE0, 12, 11, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_78E0, 12, 12, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7810, 12, 13, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7740, 12, 14, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_76C0, 12, 15, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7970, 12, 16, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7A98, 12, 17, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7DB0, 12, 19, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7E48, 12, 21, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8510, 12, 22, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8C18, 12, 23, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8D08, 12, 24, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8DB0, 12, 25, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8E50, 12, 26, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8EE0, 12, 27, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8F58, 12, 28, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8FD0, 12, 29, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8A90, 12, 30, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_85C0, 12, 31, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_86B0, 12, 32, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8740, 12, 33, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_87E0, 12, 34, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8870, 12, 35, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_8980, 12, 30, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7608, 1, 37, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7538, 1, 37, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_7430, 1, 37, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_9B20, 12, 255, 0x0000 }, - { d_course_koopa_troopa_beach_packed_dl_9B78, 1, 255, 0x0000 }, - { 0x00000000, 0, 0, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_9688, RAMP, 255, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_D70, SAND, 1, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_CC0, SAND, 2, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_BD8, SAND, 3, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_AE0, SAND, 4, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_E60, SAND, 5, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_F38, SAND, 6, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1000, SAND, 7, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_10B0, SAND, 8, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_A00, SAND, 9, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_610, SAND, 10, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_518, SAND, 11, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_440, SAND, 12, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_390, SAND, 13, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_6D8, SAND, 14, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_778, SAND, 15, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_858, SAND, 16, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_928, SAND, 17, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1190, SAND, 18, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1C18, SAND, 19, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1B58, SAND, 20, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1A40, SAND, 21, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1940, SAND, 22, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1CC0, SAND, 23, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1DA8, SAND, 24, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1E90, SAND, 25, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1F78, SAND, 26, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1850, SAND, 27, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_14D0, SAND, 28, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_13D0, SAND, 29, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_12D0, SAND, 30, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1210, SAND, 31, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1590, SAND, 32, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1668, SAND, 33, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_16F0, SAND, 34, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_1778, SAND, 35, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_4490, SAND, 36, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3978, WET_SAND, 1, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_39E8, WET_SAND, 2, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3AC8, WET_SAND, 3, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3B40, WET_SAND, 4, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3C38, WET_SAND, 5, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3D00, WET_SAND, 8, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3DE0, WET_SAND, 9, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_38B0, WET_SAND, 10, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3470, WET_SAND, 11, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3390, WET_SAND, 12, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_32B0, WET_SAND, 13, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_31D0, WET_SAND, 14, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3550, WET_SAND, 15, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3630, WET_SAND, 16, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_36F0, WET_SAND, 17, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_37B0, WET_SAND, 18, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3ED8, WET_SAND, 20, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_4770, WET_SAND, 21, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_47E0, WET_SAND, 22, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_48B0, WET_SAND, 23, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_4920, WET_SAND, 24, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_4A08, WET_SAND, 25, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_4AF0, WET_SAND, 26, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_4BD0, WET_SAND, 27, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_46A8, WET_SAND, 28, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_4200, WET_SAND, 29, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_4120, WET_SAND, 30, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_4040, WET_SAND, 31, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_3F60, WET_SAND, 32, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_42E0, WET_SAND, 33, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_43C0, WET_SAND, 34, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_45C8, WET_SAND, 35, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7F70, CLIFF, 1, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8028, CLIFF, 2, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_80F8, CLIFF, 3, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8200, CLIFF, 4, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_82D8, CLIFF, 5, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8360, CLIFF, 6, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8468, CLIFF, 7, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7EE0, CLIFF, 11, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_78E0, CLIFF, 12, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7810, CLIFF, 13, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7740, CLIFF, 14, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_76C0, CLIFF, 15, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7970, CLIFF, 16, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7A98, CLIFF, 17, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7DB0, CLIFF, 19, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7E48, CLIFF, 21, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8510, CLIFF, 22, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8C18, CLIFF, 23, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8D08, CLIFF, 24, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8DB0, CLIFF, 25, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8E50, CLIFF, 26, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8EE0, CLIFF, 27, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8F58, CLIFF, 28, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8FD0, CLIFF, 29, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8A90, CLIFF, 30, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_85C0, CLIFF, 31, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_86B0, CLIFF, 32, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8740, CLIFF, 33, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_87E0, CLIFF, 34, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8870, CLIFF, 35, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_8980, CLIFF, 30, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7608, ASPHALT, 37, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7538, ASPHALT, 37, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_7430, ASPHALT, 37, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_9B20, CLIFF, 255, 0x0000 }, + { d_course_koopa_troopa_beach_packed_dl_9B78, ASPHALT, 255, 0x0000 }, + { 0x00000000, 0, 0, 0x0000 }, }; Gfx *d_course_koopa_troopa_beach_section_dl1[] = { diff --git a/courses/koopa_troopa_beach/course_vertices.inc.c b/courses/koopa_troopa_beach/course_vertices.inc.c index af93e0779..989fb368e 100644 --- a/courses/koopa_troopa_beach/course_vertices.inc.c +++ b/courses/koopa_troopa_beach/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_koopa_troopa_beach_vertex[] = { {{ -370, 11, -1114}, { -2686, 0}, {MACRO_COLOR_FLAG(0x98, 0x98, 0x98, 4), 0x00}}, diff --git a/courses/luigi_raceway/course_data.c b/courses/luigi_raceway/course_data.c index a496c7848..39e4e1a72 100644 --- a/courses/luigi_raceway/course_data.c +++ b/courses/luigi_raceway/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" @@ -7075,117 +7076,117 @@ struct ActorSpawnData d_course_luigi_raceway_tree_spawn[] = { // 0xFF28 TrackSections d_course_luigi_raceway_addr[] = { - { d_course_luigi_raceway_packed_dl_6B00, 1, 1, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6BF0, 1, 2, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6CA8, 1, 3, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6D60, 1, 4, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6E18, 1, 5, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6EF0, 1, 6, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6FA8, 1, 7, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6A58, 1, 8, 0x2000 }, - { d_course_luigi_raceway_packed_dl_65D8, 1, 9, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6680, 1, 10, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6728, 1, 11, 0x2000 }, - { d_course_luigi_raceway_packed_dl_67D0, 1, 12, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6878, 1, 13, 0x2000 }, - { d_course_luigi_raceway_packed_dl_6920, 1, 14, 0x2000 }, - { d_course_luigi_raceway_packed_dl_69C0, 1, 15, 0x2000 }, - { d_course_luigi_raceway_packed_dl_7050, 1, 16, 0x2000 }, - { d_course_luigi_raceway_packed_dl_7650, 1, 17, 0x2000 }, - { d_course_luigi_raceway_packed_dl_76F8, 1, 18, 0x2000 }, - { d_course_luigi_raceway_packed_dl_77B0, 1, 19, 0x2000 }, - { d_course_luigi_raceway_packed_dl_7878, 1, 20, 0x2000 }, - { d_course_luigi_raceway_packed_dl_7940, 1, 21, 0x2000 }, - { d_course_luigi_raceway_packed_dl_79E8, 1, 22, 0x2000 }, - { d_course_luigi_raceway_packed_dl_75A8, 1, 23, 0x2000 }, - { d_course_luigi_raceway_packed_dl_70F8, 1, 24, 0x2000 }, - { d_course_luigi_raceway_packed_dl_71A0, 1, 25, 0x2000 }, - { d_course_luigi_raceway_packed_dl_7248, 1, 26, 0x2000 }, - { d_course_luigi_raceway_packed_dl_72F0, 1, 27, 0x2000 }, - { d_course_luigi_raceway_packed_dl_7398, 1, 28, 0x2000 }, - { d_course_luigi_raceway_packed_dl_7440, 1, 29, 0x2000 }, - { d_course_luigi_raceway_packed_dl_74F0, 1, 30, 0x2000 }, - { d_course_luigi_raceway_packed_dl_24E0, 8, 1, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2458, 8, 2, 0x0000 }, - { d_course_luigi_raceway_packed_dl_23E0, 8, 3, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2368, 8, 4, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2560, 8, 5, 0x0000 }, - { d_course_luigi_raceway_packed_dl_25E8, 8, 6, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2658, 8, 14, 0x0000 }, - { d_course_luigi_raceway_packed_dl_26B8, 8, 15, 0x0000 }, - { d_course_luigi_raceway_packed_dl_22F8, 8, 16, 0x0000 }, - { d_course_luigi_raceway_packed_dl_20C0, 8, 21, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2050, 8, 22, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1FF0, 8, 23, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1F90, 8, 29, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2130, 8, 30, 0x0000 }, - { d_course_luigi_raceway_packed_dl_21A8, 8, 5, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2210, 8, 6, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2280, 8, 7, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2720, 8, 8, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2D30, 8, 9, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2CB8, 8, 10, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2C40, 8, 11, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2BC8, 8, 12, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2DA8, 8, 13, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2E20, 8, 14, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2E90, 8, 15, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2EF8, 8, 16, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2B58, 8, 30, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2900, 8, 22, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2888, 8, 23, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2810, 8, 24, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2798, 8, 25, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2978, 8, 26, 0x0000 }, - { d_course_luigi_raceway_packed_dl_29F0, 8, 27, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2A68, 8, 28, 0x0000 }, - { d_course_luigi_raceway_packed_dl_2AE0, 8, 29, 0x0000 }, - { d_course_luigi_raceway_packed_dl_33C8, 7, 1, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3448, 7, 2, 0x0000 }, - { d_course_luigi_raceway_packed_dl_34C8, 7, 3, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3548, 7, 4, 0x0000 }, - { d_course_luigi_raceway_packed_dl_35D0, 7, 5, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3678, 7, 6, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3350, 7, 7, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3080, 7, 8, 0x0000 }, - { d_course_luigi_raceway_packed_dl_30F8, 7, 9, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3170, 7, 10, 0x0000 }, - { d_course_luigi_raceway_packed_dl_31E8, 7, 11, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3260, 7, 12, 0x0000 }, - { d_course_luigi_raceway_packed_dl_32D8, 7, 13, 0x0000 }, - { d_course_luigi_raceway_packed_dl_36F8, 7, 14, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3AD0, 7, 15, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3B38, 7, 16, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3BD0, 7, 17, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3C40, 7, 21, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3CF0, 7, 22, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3D60, 7, 23, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3A58, 7, 24, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3768, 7, 25, 0x0000 }, - { d_course_luigi_raceway_packed_dl_37E0, 7, 26, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3858, 7, 27, 0x0000 }, - { d_course_luigi_raceway_packed_dl_38D0, 7, 28, 0x0000 }, - { d_course_luigi_raceway_packed_dl_3948, 7, 29, 0x0000 }, - { d_course_luigi_raceway_packed_dl_39C8, 7, 30, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1AC8, 8, 14, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1A28, 8, 15, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1988, 8, 16, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1920, 8, 255, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1D68, 8, 16, 0x0000 }, - { d_course_luigi_raceway_packed_dl_17E0, 8, 255, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1B28, 8, 21, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1BD8, 8, 21, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1E70, 8, 22, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1E10, 8, 23, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1D00, 8, 255, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1C90, 8, 255, 0x0000 }, - { d_course_luigi_raceway_packed_dl_7EB8, 0xFF, 0xFF, 0x0000 }, - { d_course_luigi_raceway_packed_dl_6558, 0xFF, 0xFF, 0x0000 }, - { d_course_luigi_raceway_packed_dl_4518, 0xFF, 0xFF, 0x0000 }, - { d_course_luigi_raceway_packed_dl_A98, 0xFF, 0xFF, 0x0000 }, - { d_course_luigi_raceway_packed_dl_1730, 0xFF, 0xFF, 0x0000 }, - { d_course_luigi_raceway_packed_dl_4860, 0xFF, 0xFF, 0x0000 }, - { d_course_luigi_raceway_packed_dl_8200, 0xFF, 0xFF, 0x0000 }, - { d_course_luigi_raceway_packed_dl_4EE8, 0xFF, 0xFF, 0x0000 }, - { 0x00000000, 0, 0, 0x0000 }, + { d_course_luigi_raceway_packed_dl_6B00, ASPHALT, 1, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6BF0, ASPHALT, 2, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6CA8, ASPHALT, 3, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6D60, ASPHALT, 4, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6E18, ASPHALT, 5, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6EF0, ASPHALT, 6, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6FA8, ASPHALT, 7, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6A58, ASPHALT, 8, 0x2000 }, + { d_course_luigi_raceway_packed_dl_65D8, ASPHALT, 9, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6680, ASPHALT, 10, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6728, ASPHALT, 11, 0x2000 }, + { d_course_luigi_raceway_packed_dl_67D0, ASPHALT, 12, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6878, ASPHALT, 13, 0x2000 }, + { d_course_luigi_raceway_packed_dl_6920, ASPHALT, 14, 0x2000 }, + { d_course_luigi_raceway_packed_dl_69C0, ASPHALT, 15, 0x2000 }, + { d_course_luigi_raceway_packed_dl_7050, ASPHALT, 16, 0x2000 }, + { d_course_luigi_raceway_packed_dl_7650, ASPHALT, 17, 0x2000 }, + { d_course_luigi_raceway_packed_dl_76F8, ASPHALT, 18, 0x2000 }, + { d_course_luigi_raceway_packed_dl_77B0, ASPHALT, 19, 0x2000 }, + { d_course_luigi_raceway_packed_dl_7878, ASPHALT, 20, 0x2000 }, + { d_course_luigi_raceway_packed_dl_7940, ASPHALT, 21, 0x2000 }, + { d_course_luigi_raceway_packed_dl_79E8, ASPHALT, 22, 0x2000 }, + { d_course_luigi_raceway_packed_dl_75A8, ASPHALT, 23, 0x2000 }, + { d_course_luigi_raceway_packed_dl_70F8, ASPHALT, 24, 0x2000 }, + { d_course_luigi_raceway_packed_dl_71A0, ASPHALT, 25, 0x2000 }, + { d_course_luigi_raceway_packed_dl_7248, ASPHALT, 26, 0x2000 }, + { d_course_luigi_raceway_packed_dl_72F0, ASPHALT, 27, 0x2000 }, + { d_course_luigi_raceway_packed_dl_7398, ASPHALT, 28, 0x2000 }, + { d_course_luigi_raceway_packed_dl_7440, ASPHALT, 29, 0x2000 }, + { d_course_luigi_raceway_packed_dl_74F0, ASPHALT, 30, 0x2000 }, + { d_course_luigi_raceway_packed_dl_24E0, GRASS, 1, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2458, GRASS, 2, 0x0000 }, + { d_course_luigi_raceway_packed_dl_23E0, GRASS, 3, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2368, GRASS, 4, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2560, GRASS, 5, 0x0000 }, + { d_course_luigi_raceway_packed_dl_25E8, GRASS, 6, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2658, GRASS, 14, 0x0000 }, + { d_course_luigi_raceway_packed_dl_26B8, GRASS, 15, 0x0000 }, + { d_course_luigi_raceway_packed_dl_22F8, GRASS, 16, 0x0000 }, + { d_course_luigi_raceway_packed_dl_20C0, GRASS, 21, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2050, GRASS, 22, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1FF0, GRASS, 23, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1F90, GRASS, 29, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2130, GRASS, 30, 0x0000 }, + { d_course_luigi_raceway_packed_dl_21A8, GRASS, 5, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2210, GRASS, 6, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2280, GRASS, 7, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2720, GRASS, 8, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2D30, GRASS, 9, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2CB8, GRASS, 10, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2C40, GRASS, 11, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2BC8, GRASS, 12, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2DA8, GRASS, 13, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2E20, GRASS, 14, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2E90, GRASS, 15, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2EF8, GRASS, 16, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2B58, GRASS, 30, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2900, GRASS, 22, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2888, GRASS, 23, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2810, GRASS, 24, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2798, GRASS, 25, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2978, GRASS, 26, 0x0000 }, + { d_course_luigi_raceway_packed_dl_29F0, GRASS, 27, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2A68, GRASS, 28, 0x0000 }, + { d_course_luigi_raceway_packed_dl_2AE0, GRASS, 29, 0x0000 }, + { d_course_luigi_raceway_packed_dl_33C8, SAND_OFFROAD, 1, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3448, SAND_OFFROAD, 2, 0x0000 }, + { d_course_luigi_raceway_packed_dl_34C8, SAND_OFFROAD, 3, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3548, SAND_OFFROAD, 4, 0x0000 }, + { d_course_luigi_raceway_packed_dl_35D0, SAND_OFFROAD, 5, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3678, SAND_OFFROAD, 6, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3350, SAND_OFFROAD, 7, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3080, SAND_OFFROAD, 8, 0x0000 }, + { d_course_luigi_raceway_packed_dl_30F8, SAND_OFFROAD, 9, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3170, SAND_OFFROAD, 10, 0x0000 }, + { d_course_luigi_raceway_packed_dl_31E8, SAND_OFFROAD, 11, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3260, SAND_OFFROAD, 12, 0x0000 }, + { d_course_luigi_raceway_packed_dl_32D8, SAND_OFFROAD, 13, 0x0000 }, + { d_course_luigi_raceway_packed_dl_36F8, SAND_OFFROAD, 14, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3AD0, SAND_OFFROAD, 15, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3B38, SAND_OFFROAD, 16, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3BD0, SAND_OFFROAD, 17, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3C40, SAND_OFFROAD, 21, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3CF0, SAND_OFFROAD, 22, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3D60, SAND_OFFROAD, 23, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3A58, SAND_OFFROAD, 24, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3768, SAND_OFFROAD, 25, 0x0000 }, + { d_course_luigi_raceway_packed_dl_37E0, SAND_OFFROAD, 26, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3858, SAND_OFFROAD, 27, 0x0000 }, + { d_course_luigi_raceway_packed_dl_38D0, SAND_OFFROAD, 28, 0x0000 }, + { d_course_luigi_raceway_packed_dl_3948, SAND_OFFROAD, 29, 0x0000 }, + { d_course_luigi_raceway_packed_dl_39C8, SAND_OFFROAD, 30, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1AC8, GRASS, 14, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1A28, GRASS, 15, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1988, GRASS, 16, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1920, GRASS, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1D68, GRASS, 16, 0x0000 }, + { d_course_luigi_raceway_packed_dl_17E0, GRASS, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1B28, GRASS, 21, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1BD8, GRASS, 21, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1E70, GRASS, 22, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1E10, GRASS, 23, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1D00, GRASS, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1C90, GRASS, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_7EB8, RAMP, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_6558, RAMP, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_4518, RAMP, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_A98, RAMP, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_1730, RAMP, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_4860, RAMP, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_8200, RAMP, 255, 0x0000 }, + { d_course_luigi_raceway_packed_dl_4EE8, RAMP, 255, 0x0000 }, + { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/luigi_raceway/course_offsets.c b/courses/luigi_raceway/course_offsets.c index ac95af599..1cd496738 100644 --- a/courses/luigi_raceway/course_offsets.c +++ b/courses/luigi_raceway/course_offsets.c @@ -87,7 +87,7 @@ const course_texture luigi_raceway_textures[] = { {0x00000000, 0x0000, 0x0000, 0x0}, }; -const u8 *luigi_raceway_dls[] = { +const Gfx *luigi_raceway_dls[] = { d_course_luigi_raceway_dl_0, d_course_luigi_raceway_dl_328, d_course_luigi_raceway_dl_1A8, diff --git a/courses/luigi_raceway/course_vertices.inc.c b/courses/luigi_raceway/course_vertices.inc.c index 95924f8a6..8b5f7a451 100644 --- a/courses/luigi_raceway/course_vertices.inc.c +++ b/courses/luigi_raceway/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_luigi_raceway_vertex[] = { {{ 175, 107, -448}, { 0, 74}, {MACRO_COLOR_FLAG(0xfc, 0xfc, 0xfc, 4), 0x00}}, diff --git a/courses/mario_raceway/course_data.c b/courses/mario_raceway/course_data.c index 45e63bc16..db08e8bf5 100644 --- a/courses/mario_raceway/course_data.c +++ b/courses/mario_raceway/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" #include "course_textures.linkonly.h" @@ -4004,57 +4005,57 @@ struct ActorSpawnData d_course_mario_raceway_tree_spawns[] = { }; TrackSections d_course_mario_raceway_addr[] = { - { d_course_mario_raceway_packed_dl_17D8, 1, 1, 0x0000 }, - { d_course_mario_raceway_packed_dl_1770, 1, 2, 0x0000 }, - { d_course_mario_raceway_packed_dl_16D8, 1, 3, 0x0000 }, - { d_course_mario_raceway_packed_dl_1668, 1, 4, 0x0000 }, - { d_course_mario_raceway_packed_dl_14C8, 1, 5, 0x0000 }, - { d_course_mario_raceway_packed_dl_1500, 1, 6, 0x0000 }, - { d_course_mario_raceway_packed_dl_1550, 1, 7, 0x0000 }, - { d_course_mario_raceway_packed_dl_1600, 1, 8, 0x0000 }, - { d_course_mario_raceway_packed_dl_1850, 1, 9, 0x0000 }, - { d_course_mario_raceway_packed_dl_1AF8, 1, 10, 0x0000 }, - { d_course_mario_raceway_packed_dl_1A80, 1, 11, 0x0000 }, - { d_course_mario_raceway_packed_dl_1A08, 1, 12, 0x0000 }, - { d_course_mario_raceway_packed_dl_1988, 1, 13, 0x0000 }, - { d_course_mario_raceway_packed_dl_1890, 1, 14, 0x0000 }, - { d_course_mario_raceway_packed_dl_18B8, 1, 15, 0x0000 }, - { d_course_mario_raceway_packed_dl_18E0, 1, 16, 0x0000 }, - { d_course_mario_raceway_packed_dl_1950, 1, 17, 0x0000 }, - { d_course_mario_raceway_packed_dl_1188, 255, 255, 0x0000 }, - { d_course_mario_raceway_packed_dl_2A28, 255, 255, 0x0000 }, - { d_course_mario_raceway_packed_dl_E0, 255, 255, 0x0000 }, - { d_course_mario_raceway_packed_dl_5218, 8, 1, 0x0000 }, - { d_course_mario_raceway_packed_dl_50E8, 8, 2, 0x0000 }, - { d_course_mario_raceway_packed_dl_4F90, 8, 3, 0x0000 }, - { d_course_mario_raceway_packed_dl_4EE8, 8, 4, 0x0000 }, - { d_course_mario_raceway_packed_dl_4E20, 8, 5, 0x0000 }, - { d_course_mario_raceway_packed_dl_52B8, 8, 4, 0x0000 }, - { d_course_mario_raceway_packed_dl_5608, 8, 4, 0x0000 }, - { d_course_mario_raceway_packed_dl_5550, 8, 5, 0x0000 }, - { d_course_mario_raceway_packed_dl_54B0, 8, 6, 0x0000 }, - { d_course_mario_raceway_packed_dl_5408, 8, 5, 0x0000 }, - { d_course_mario_raceway_packed_dl_5368, 8, 6, 0x0000 }, - { d_course_mario_raceway_packed_dl_4D48, 8, 7, 0x0000 }, - { d_course_mario_raceway_packed_dl_49E8, 8, 7, 0x0000 }, - { d_course_mario_raceway_packed_dl_4950, 8, 8, 0x0000 }, - { d_course_mario_raceway_packed_dl_4870, 8, 7, 0x0000 }, - { d_course_mario_raceway_packed_dl_4780, 8, 7, 0x0000 }, - { d_course_mario_raceway_packed_dl_46A0, 8, 9, 0x0000 }, - { d_course_mario_raceway_packed_dl_4AD8, 8, 7, 0x0000 }, - { d_course_mario_raceway_packed_dl_6198, 8, 10, 0x0000 }, - { d_course_mario_raceway_packed_dl_60F0, 8, 11, 0x0000 }, - { d_course_mario_raceway_packed_dl_63B0, 8, 12, 0x0000 }, - { d_course_mario_raceway_packed_dl_5AE0, 8, 13, 0x0000 }, - { d_course_mario_raceway_packed_dl_5A48, 8, 14, 0x0000 }, - { d_course_mario_raceway_packed_dl_5970, 8, 15, 0x0000 }, - { d_course_mario_raceway_packed_dl_5870, 8, 15, 0x0000 }, - { d_course_mario_raceway_packed_dl_5768, 8, 16, 0x0000 }, - { d_course_mario_raceway_packed_dl_5BC8, 8, 17, 0x0000 }, - { d_course_mario_raceway_packed_dl_5ED0, 7, 13, 0x0000 }, - { d_course_mario_raceway_packed_dl_5F88, 7, 11, 0x0000 }, - { d_course_mario_raceway_packed_dl_6068, 7, 10, 0x0000 }, - { d_course_mario_raceway_packed_dl_6308, 7, 12, 0x0000 }, - { d_course_mario_raceway_packed_dl_6490, 7, 11, 0x0000 }, - { 0x00000000, 0, 0, 0x00000 }, + { d_course_mario_raceway_packed_dl_17D8, ASPHALT, 1, 0x0000 }, + { d_course_mario_raceway_packed_dl_1770, ASPHALT, 2, 0x0000 }, + { d_course_mario_raceway_packed_dl_16D8, ASPHALT, 3, 0x0000 }, + { d_course_mario_raceway_packed_dl_1668, ASPHALT, 4, 0x0000 }, + { d_course_mario_raceway_packed_dl_14C8, ASPHALT, 5, 0x0000 }, + { d_course_mario_raceway_packed_dl_1500, ASPHALT, 6, 0x0000 }, + { d_course_mario_raceway_packed_dl_1550, ASPHALT, 7, 0x0000 }, + { d_course_mario_raceway_packed_dl_1600, ASPHALT, 8, 0x0000 }, + { d_course_mario_raceway_packed_dl_1850, ASPHALT, 9, 0x0000 }, + { d_course_mario_raceway_packed_dl_1AF8, ASPHALT, 10, 0x0000 }, + { d_course_mario_raceway_packed_dl_1A80, ASPHALT, 11, 0x0000 }, + { d_course_mario_raceway_packed_dl_1A08, ASPHALT, 12, 0x0000 }, + { d_course_mario_raceway_packed_dl_1988, ASPHALT, 13, 0x0000 }, + { d_course_mario_raceway_packed_dl_1890, ASPHALT, 14, 0x0000 }, + { d_course_mario_raceway_packed_dl_18B8, ASPHALT, 15, 0x0000 }, + { d_course_mario_raceway_packed_dl_18E0, ASPHALT, 16, 0x0000 }, + { d_course_mario_raceway_packed_dl_1950, ASPHALT, 17, 0x0000 }, + { d_course_mario_raceway_packed_dl_1188, RAMP, 255, 0x0000 }, + { d_course_mario_raceway_packed_dl_2A28, RAMP, 255, 0x0000 }, + { d_course_mario_raceway_packed_dl_E0, RAMP, 255, 0x0000 }, + { d_course_mario_raceway_packed_dl_5218, GRASS, 1, 0x0000 }, + { d_course_mario_raceway_packed_dl_50E8, GRASS, 2, 0x0000 }, + { d_course_mario_raceway_packed_dl_4F90, GRASS, 3, 0x0000 }, + { d_course_mario_raceway_packed_dl_4EE8, GRASS, 4, 0x0000 }, + { d_course_mario_raceway_packed_dl_4E20, GRASS, 5, 0x0000 }, + { d_course_mario_raceway_packed_dl_52B8, GRASS, 4, 0x0000 }, + { d_course_mario_raceway_packed_dl_5608, GRASS, 4, 0x0000 }, + { d_course_mario_raceway_packed_dl_5550, GRASS, 5, 0x0000 }, + { d_course_mario_raceway_packed_dl_54B0, GRASS, 6, 0x0000 }, + { d_course_mario_raceway_packed_dl_5408, GRASS, 5, 0x0000 }, + { d_course_mario_raceway_packed_dl_5368, GRASS, 6, 0x0000 }, + { d_course_mario_raceway_packed_dl_4D48, GRASS, 7, 0x0000 }, + { d_course_mario_raceway_packed_dl_49E8, GRASS, 7, 0x0000 }, + { d_course_mario_raceway_packed_dl_4950, GRASS, 8, 0x0000 }, + { d_course_mario_raceway_packed_dl_4870, GRASS, 7, 0x0000 }, + { d_course_mario_raceway_packed_dl_4780, GRASS, 7, 0x0000 }, + { d_course_mario_raceway_packed_dl_46A0, GRASS, 9, 0x0000 }, + { d_course_mario_raceway_packed_dl_4AD8, GRASS, 7, 0x0000 }, + { d_course_mario_raceway_packed_dl_6198, GRASS, 10, 0x0000 }, + { d_course_mario_raceway_packed_dl_60F0, GRASS, 11, 0x0000 }, + { d_course_mario_raceway_packed_dl_63B0, GRASS, 12, 0x0000 }, + { d_course_mario_raceway_packed_dl_5AE0, GRASS, 13, 0x0000 }, + { d_course_mario_raceway_packed_dl_5A48, GRASS, 14, 0x0000 }, + { d_course_mario_raceway_packed_dl_5970, GRASS, 15, 0x0000 }, + { d_course_mario_raceway_packed_dl_5870, GRASS, 15, 0x0000 }, + { d_course_mario_raceway_packed_dl_5768, GRASS, 16, 0x0000 }, + { d_course_mario_raceway_packed_dl_5BC8, GRASS, 17, 0x0000 }, + { d_course_mario_raceway_packed_dl_5ED0, SAND_OFFROAD, 13, 0x0000 }, + { d_course_mario_raceway_packed_dl_5F88, SAND_OFFROAD, 11, 0x0000 }, + { d_course_mario_raceway_packed_dl_6068, SAND_OFFROAD, 10, 0x0000 }, + { d_course_mario_raceway_packed_dl_6308, SAND_OFFROAD, 12, 0x0000 }, + { d_course_mario_raceway_packed_dl_6490, SAND_OFFROAD, 11, 0x0000 }, + { 0x00000000, 0, 0, 0x00000 }, }; diff --git a/courses/mario_raceway/course_offsets.c b/courses/mario_raceway/course_offsets.c index 87d3e0f3a..6d299ed32 100644 --- a/courses/mario_raceway/course_offsets.c +++ b/courses/mario_raceway/course_offsets.c @@ -67,7 +67,7 @@ const course_texture mario_raceway_textures[] = { {0x00000000, 0x0000, 0x0000, 0x0}, }; -const u8 *mario_raceway_dls[] = { +const Gfx *mario_raceway_dls[] = { d_course_mario_raceway_dl_0, d_course_mario_raceway_dl_1D0, d_course_mario_raceway_dl_E8, diff --git a/courses/mario_raceway/course_vertices.inc.c b/courses/mario_raceway/course_vertices.inc.c index eaf53c605..2aefb9cba 100644 --- a/courses/mario_raceway/course_vertices.inc.c +++ b/courses/mario_raceway/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_mario_raceway_vertex[] = { {{ 2583, 31, -586}, { 8985, 1023}, {MACRO_COLOR_FLAG(0xfc, 0xfc, 0xfc, 0), 0x00}}, diff --git a/courses/moo_moo_farm/course_data.c b/courses/moo_moo_farm/course_data.c index 250ec0e89..0cdd0fca6 100644 --- a/courses/moo_moo_farm/course_data.c +++ b/courses/moo_moo_farm/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" #include "course_textures.linkonly.h" @@ -8875,82 +8876,81 @@ struct ActorSpawnData d_course_moo_moo_farm_item_box_spawns[] = { // 0x144B8 TrackSections d_course_moo_moo_farm_addr[] = { - { d_course_moo_moo_farm_packed_dl_39F8, 2, 1, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3B88, 2, 2, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3C48, 2, 3, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3D50, 2, 4, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3E50, 2, 5, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3918, 2, 6, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_34B8, 2, 7, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3590, 2, 8, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3668, 2, 9, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3748, 2, 10, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3828, 2, 11, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3F30, 2, 12, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_46E8, 2, 13, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_47C8, 2, 14, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_48B8, 2, 15, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_49A8, 2, 16, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_4A88, 2, 17, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_45D0, 2, 18, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_40A8, 2, 19, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_41B0, 2, 20, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_42B8, 2, 21, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_43A0, 2, 22, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_4480, 2, 23, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1BA0, 8, 1, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1C40, 8, 2, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1C98, 8, 3, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1D00, 8, 4, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1D60, 8, 5, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1DD0, 8, 6, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1E58, 8, 7, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1B38, 8, 8, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_18E0, 8, 9, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1940, 8, 10, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_19A0, 8, 11, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1A00, 8, 12, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1A60, 8, 13, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1AA0, 8, 14, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1AD0, 8, 15, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_1ED0, 8, 16, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_20F8, 8, 17, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2160, 8, 18, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_21D8, 8, 19, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2240, 8, 20, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_22B0, 8, 21, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2338, 8, 22, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_23C0, 8, 23, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2C68, 8, 1, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2CD8, 8, 2, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2D30, 8, 3, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2D90, 8, 4, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2DF0, 8, 5, 0x0000 }, - - { d_course_moo_moo_farm_packed_dl_2E60, 8, 6, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2EA0, 8, 7, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2C10, 8, 8, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2998, 8, 9, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_29F0, 8, 10, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2A50, 8, 11, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2AB8, 8, 12, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2AF0, 8, 13, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2B50, 8, 14, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2BA8, 8, 15, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_2F10, 8, 16, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3210, 8, 17, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3268, 8, 18, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_32A0, 8, 19, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3310, 8, 20, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3350, 8, 21, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_3380, 8, 22, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_31C8, 8, 23, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_5290, 255, 255, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_5018, 255, 255, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_A80, 255, 255, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_4D0, 255, 255, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_4DF8, 255, 255, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_CB0, 255, 255, 0x0000 }, - { d_course_moo_moo_farm_packed_dl_F20, 255, 255, 0x0000 }, - { 0x00000000, 0, 0, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_39F8, DIRT, 1, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3B88, DIRT, 2, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3C48, DIRT, 3, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3D50, DIRT, 4, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3E50, DIRT, 5, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3918, DIRT, 6, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_34B8, DIRT, 7, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3590, DIRT, 8, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3668, DIRT, 9, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3748, DIRT, 10, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3828, DIRT, 11, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3F30, DIRT, 12, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_46E8, DIRT, 13, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_47C8, DIRT, 14, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_48B8, DIRT, 15, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_49A8, DIRT, 16, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_4A88, DIRT, 17, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_45D0, DIRT, 18, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_40A8, DIRT, 19, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_41B0, DIRT, 20, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_42B8, DIRT, 21, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_43A0, DIRT, 22, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_4480, DIRT, 23, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1BA0, GRASS, 1, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1C40, GRASS, 2, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1C98, GRASS, 3, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1D00, GRASS, 4, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1D60, GRASS, 5, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1DD0, GRASS, 6, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1E58, GRASS, 7, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1B38, GRASS, 8, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_18E0, GRASS, 9, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1940, GRASS, 10, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_19A0, GRASS, 11, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1A00, GRASS, 12, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1A60, GRASS, 13, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1AA0, GRASS, 14, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1AD0, GRASS, 15, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_1ED0, GRASS, 16, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_20F8, GRASS, 17, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2160, GRASS, 18, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_21D8, GRASS, 19, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2240, GRASS, 20, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_22B0, GRASS, 21, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2338, GRASS, 22, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_23C0, GRASS, 23, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2C68, GRASS, 1, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2CD8, GRASS, 2, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2D30, GRASS, 3, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2D90, GRASS, 4, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2DF0, GRASS, 5, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2E60, GRASS, 6, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2EA0, GRASS, 7, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2C10, GRASS, 8, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2998, GRASS, 9, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_29F0, GRASS, 10, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2A50, GRASS, 11, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2AB8, GRASS, 12, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2AF0, GRASS, 13, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2B50, GRASS, 14, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2BA8, GRASS, 15, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_2F10, GRASS, 16, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3210, GRASS, 17, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3268, GRASS, 18, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_32A0, GRASS, 19, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3310, GRASS, 20, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3350, GRASS, 21, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_3380, GRASS, 22, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_31C8, GRASS, 23, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_5290, RAMP, 255, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_5018, RAMP, 255, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_A80, RAMP, 255, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_4D0, RAMP, 255, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_4DF8, RAMP, 255, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_CB0, RAMP, 255, 0x0000 }, + { d_course_moo_moo_farm_packed_dl_F20, RAMP, 255, 0x0000 }, + { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/moo_moo_farm/course_offsets.c b/courses/moo_moo_farm/course_offsets.c index e31b570e4..c3a1f8003 100644 --- a/courses/moo_moo_farm/course_offsets.c +++ b/courses/moo_moo_farm/course_offsets.c @@ -63,7 +63,7 @@ const course_texture moo_moo_farm_textures[] = { {0x00000000, 0x0000, 0x0000, 0x0}, }; -const u8 *moo_moo_farm_dls[] = { +const Gfx *moo_moo_farm_dls[] = { d_course_moo_moo_farm_dl_88, d_course_moo_moo_farm_dl_598, d_course_moo_moo_farm_dl_338, diff --git a/courses/moo_moo_farm/course_vertices.inc.c b/courses/moo_moo_farm/course_vertices.inc.c index a1142030f..7025ce400 100644 --- a/courses/moo_moo_farm/course_vertices.inc.c +++ b/courses/moo_moo_farm/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_moo_moo_farm_vertex[] = { {{ 114, 44, -2058}, { 819, -204}, {MACRO_COLOR_FLAG(0xfc, 0xfc, 0xfc, 0), 0x00}}, diff --git a/courses/rainbow_road/course_data.c b/courses/rainbow_road/course_data.c index a7b11cb08..9543be01a 100644 --- a/courses/rainbow_road/course_data.c +++ b/courses/rainbow_road/course_data.c @@ -6,6 +6,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" #include "course_textures.linkonly.h" @@ -3548,7 +3549,7 @@ u32 d_rainbow_road_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_rainbow_road_dl_15550, + (u32) d_course_rainbow_road_dl_15550, 0x00000000, 0x00000000, 0x00000000, @@ -3556,7 +3557,7 @@ u32 d_rainbow_road_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_rainbow_road_dl_151A8, + (u32) d_course_rainbow_road_dl_151A8, 0x00000000, 0x00000000, 0x00000000, @@ -3578,7 +3579,7 @@ u32 d_rainbow_road_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_rainbow_road_dl_15C68, + (u32) d_course_rainbow_road_dl_15C68, 0x00000000, 0x00000000, 0x00000000, @@ -3586,7 +3587,7 @@ u32 d_rainbow_road_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_rainbow_road_dl_158C0, + (u32) d_course_rainbow_road_dl_158C0, 0x00000000, 0x00000000, 0x00000000, @@ -3594,7 +3595,7 @@ u32 d_rainbow_road_unk4[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_rainbow_road_dl_15F18, + (u32) d_course_rainbow_road_dl_15F18, 0x00000000, 0x00000000, 0x00000000, @@ -3697,21 +3698,21 @@ struct ActorSpawnData d_course_rainbow_road_item_box_spawns[] = { }; TrackSections d_course_rainbow_road_addr[] = { - { d_course_rainbow_road_packed_dl_20C0, 1, 255, 0x0000 }, - { d_course_rainbow_road_packed_dl_1850, 1, 1, 0x0000 }, - { d_course_rainbow_road_packed_dl_1758, 1, 2, 0x0000 }, - { d_course_rainbow_road_packed_dl_1698, 1, 3, 0x0000 }, - { d_course_rainbow_road_packed_dl_15F8, 1, 4, 0x0000 }, - { d_course_rainbow_road_packed_dl_1528, 1, 5, 0x0000 }, - { d_course_rainbow_road_packed_dl_13A0, 1, 6, 0x0000 }, - { d_course_rainbow_road_packed_dl_1978, 1, 7, 0x0000 }, - { d_course_rainbow_road_packed_dl_1D30, 1, 8, 0x0000 }, - { d_course_rainbow_road_packed_dl_1C70, 1, 9, 0x0000 }, - { d_course_rainbow_road_packed_dl_1BC0, 1, 10, 0x0000 }, - { d_course_rainbow_road_packed_dl_1B28, 1, 11, 0x0000 }, - { d_course_rainbow_road_packed_dl_1A20, 1, 12, 0x0000 }, - { d_course_rainbow_road_packed_dl_1318, 255, 255, 0x0000 }, - { 0x00000000, 0, 0, 0x0000 }, + { d_course_rainbow_road_packed_dl_20C0, ASPHALT, 255, 0x0000 }, + { d_course_rainbow_road_packed_dl_1850, ASPHALT, 1, 0x0000 }, + { d_course_rainbow_road_packed_dl_1758, ASPHALT, 2, 0x0000 }, + { d_course_rainbow_road_packed_dl_1698, ASPHALT, 3, 0x0000 }, + { d_course_rainbow_road_packed_dl_15F8, ASPHALT, 4, 0x0000 }, + { d_course_rainbow_road_packed_dl_1528, ASPHALT, 5, 0x0000 }, + { d_course_rainbow_road_packed_dl_13A0, ASPHALT, 6, 0x0000 }, + { d_course_rainbow_road_packed_dl_1978, ASPHALT, 7, 0x0000 }, + { d_course_rainbow_road_packed_dl_1D30, ASPHALT, 8, 0x0000 }, + { d_course_rainbow_road_packed_dl_1C70, ASPHALT, 9, 0x0000 }, + { d_course_rainbow_road_packed_dl_1BC0, ASPHALT, 10, 0x0000 }, + { d_course_rainbow_road_packed_dl_1B28, ASPHALT, 11, 0x0000 }, + { d_course_rainbow_road_packed_dl_1A20, ASPHALT, 12, 0x0000 }, + { d_course_rainbow_road_packed_dl_1318, RAMP, 255, 0x0000 }, + { 0x00000000, 0, 0, 0x0000 }, }; Gfx *d_course_rainbow_road_dl_list[] = { diff --git a/courses/rainbow_road/course_vertices.inc.c b/courses/rainbow_road/course_vertices.inc.c index 296ea995d..8bdd381b1 100644 --- a/courses/rainbow_road/course_vertices.inc.c +++ b/courses/rainbow_road/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_rainbow_road_vertex[] = { {{-1418, 657, -847}, { -27, -34}, {MACRO_COLOR_FLAG(0xfc, 0xfc, 0x00, 0), 0x00}}, diff --git a/courses/royal_raceway/course_data.c b/courses/royal_raceway/course_data.c index 4e7e1a7b8..cfc0c34be 100644 --- a/courses/royal_raceway/course_data.c +++ b/courses/royal_raceway/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" @@ -7540,123 +7541,123 @@ struct ActorSpawnData d_course_royal_raceway_item_box_spawns[] = { // 0xDC28 TrackSections d_course_royal_raceway_addr[] = { - { d_course_royal_raceway_packed_dl_650, 255, 255, 0x0000 }, - { d_course_royal_raceway_packed_dl_1FE8, 1, 1, 0x0000 }, - { d_course_royal_raceway_packed_dl_20A0, 1, 2, 0x0000 }, - { d_course_royal_raceway_packed_dl_2110, 1, 3, 0x0000 }, - { d_course_royal_raceway_packed_dl_21B8, 1, 4, 0x0000 }, - { d_course_royal_raceway_packed_dl_2230, 1, 5, 0x0000 }, - { d_course_royal_raceway_packed_dl_22C0, 1, 6, 0x0000 }, - { d_course_royal_raceway_packed_dl_1F58, 1, 7, 0x0000 }, - { d_course_royal_raceway_packed_dl_1B98, 1, 8, 0x0000 }, - { d_course_royal_raceway_packed_dl_1C48, 1, 9, 0x0000 }, - { d_course_royal_raceway_packed_dl_1CF0, 1, 10, 0x0000 }, - { d_course_royal_raceway_packed_dl_1D68, 1, 11, 0x0000 }, - { d_course_royal_raceway_packed_dl_1DF0, 1, 12, 0x0000 }, - { d_course_royal_raceway_packed_dl_1E60, 1, 13, 0x0000 }, - { d_course_royal_raceway_packed_dl_1EF0, 1, 14, 0x0000 }, - { d_course_royal_raceway_packed_dl_2370, 1, 15, 0x0000 }, - { d_course_royal_raceway_packed_dl_28D8, 1, 16, 0x0000 }, - { d_course_royal_raceway_packed_dl_2950, 1, 17, 0x0000 }, - { d_course_royal_raceway_packed_dl_2A10, 1, 18, 0x0000 }, - { d_course_royal_raceway_packed_dl_2AC8, 1, 19, 0x0000 }, - { d_course_royal_raceway_packed_dl_2B38, 1, 20, 0x0000 }, + { d_course_royal_raceway_packed_dl_650, RAMP, 255, 0x0000 }, + { d_course_royal_raceway_packed_dl_1FE8, ASPHALT, 1, 0x0000 }, + { d_course_royal_raceway_packed_dl_20A0, ASPHALT, 2, 0x0000 }, + { d_course_royal_raceway_packed_dl_2110, ASPHALT, 3, 0x0000 }, + { d_course_royal_raceway_packed_dl_21B8, ASPHALT, 4, 0x0000 }, + { d_course_royal_raceway_packed_dl_2230, ASPHALT, 5, 0x0000 }, + { d_course_royal_raceway_packed_dl_22C0, ASPHALT, 6, 0x0000 }, + { d_course_royal_raceway_packed_dl_1F58, ASPHALT, 7, 0x0000 }, + { d_course_royal_raceway_packed_dl_1B98, ASPHALT, 8, 0x0000 }, + { d_course_royal_raceway_packed_dl_1C48, ASPHALT, 9, 0x0000 }, + { d_course_royal_raceway_packed_dl_1CF0, ASPHALT, 10, 0x0000 }, + { d_course_royal_raceway_packed_dl_1D68, ASPHALT, 11, 0x0000 }, + { d_course_royal_raceway_packed_dl_1DF0, ASPHALT, 12, 0x0000 }, + { d_course_royal_raceway_packed_dl_1E60, ASPHALT, 13, 0x0000 }, + { d_course_royal_raceway_packed_dl_1EF0, ASPHALT, 14, 0x0000 }, + { d_course_royal_raceway_packed_dl_2370, ASPHALT, 15, 0x0000 }, + { d_course_royal_raceway_packed_dl_28D8, ASPHALT, 16, 0x0000 }, + { d_course_royal_raceway_packed_dl_2950, ASPHALT, 17, 0x0000 }, + { d_course_royal_raceway_packed_dl_2A10, ASPHALT, 18, 0x0000 }, + { d_course_royal_raceway_packed_dl_2AC8, ASPHALT, 19, 0x0000 }, + { d_course_royal_raceway_packed_dl_2B38, ASPHALT, 20, 0x0000 }, { d_course_royal_raceway_packed_dl_A648, 254, 20, 0x0000 }, - { d_course_royal_raceway_packed_dl_2BA0, 1, 21, 0x0000 }, + { d_course_royal_raceway_packed_dl_2BA0, ASPHALT, 21, 0x0000 }, { d_course_royal_raceway_packed_dl_A6A8, 254, 21, 0x0000 }, - { d_course_royal_raceway_packed_dl_2870, 1, 22, 0x0000 }, - { d_course_royal_raceway_packed_dl_23F8, 1, 23, 0x0000 }, - { d_course_royal_raceway_packed_dl_2478, 1, 24, 0x0000 }, - { d_course_royal_raceway_packed_dl_2530, 1, 25, 0x0000 }, - { d_course_royal_raceway_packed_dl_25E0, 1, 26, 0x0000 }, - { d_course_royal_raceway_packed_dl_26B0, 1, 27, 0x0000 }, - { d_course_royal_raceway_packed_dl_2758, 1, 28, 0x0000 }, - { d_course_royal_raceway_packed_dl_27E0, 1, 29, 0x0000 }, - { d_course_royal_raceway_packed_dl_5400, 8, 20, 0x0000 }, - { d_course_royal_raceway_packed_dl_54A8, 8, 19, 0x0000 }, - { d_course_royal_raceway_packed_dl_5520, 8, 18, 0x0000 }, - { d_course_royal_raceway_packed_dl_51E8, 8, 17, 0x0000 }, - { d_course_royal_raceway_packed_dl_4E90, 8, 16, 0x0000 }, - { d_course_royal_raceway_packed_dl_4F20, 8, 15, 0x0000 }, - { d_course_royal_raceway_packed_dl_4F98, 8, 14, 0x0000 }, - { d_course_royal_raceway_packed_dl_5018, 8, 13, 0x0000 }, - { d_course_royal_raceway_packed_dl_50B0, 8, 12, 0x0000 }, - { d_course_royal_raceway_packed_dl_5138, 8, 11, 0x0000 }, - { d_course_royal_raceway_packed_dl_5B50, 8, 22, 0x0000 }, - { d_course_royal_raceway_packed_dl_5C00, 8, 23, 0x0000 }, - { d_course_royal_raceway_packed_dl_5D18, 8, 22, 0x0000 }, - { d_course_royal_raceway_packed_dl_5DC8, 8, 23, 0x0000 }, - { d_course_royal_raceway_packed_dl_5EF8, 8, 25, 0x0000 }, - { d_course_royal_raceway_packed_dl_5AA8, 8, 26, 0x0000 }, - { d_course_royal_raceway_packed_dl_56A0, 8, 27, 0x0000 }, - { d_course_royal_raceway_packed_dl_5740, 8, 255, 0x0000 }, - { d_course_royal_raceway_packed_dl_57F0, 8, 24, 0x0000 }, - { d_course_royal_raceway_packed_dl_58E8, 8, 24, 0x0000 }, - { d_course_royal_raceway_packed_dl_5990, 8, 26, 0x0000 }, - { d_course_royal_raceway_packed_dl_5A10, 8, 28, 0x0000 }, - { d_course_royal_raceway_packed_dl_4078, 8, 1, 0x0000 }, - { d_course_royal_raceway_packed_dl_4118, 8, 2, 0x0000 }, - { d_course_royal_raceway_packed_dl_41A8, 8, 3, 0x0000 }, - { d_course_royal_raceway_packed_dl_4298, 8, 4, 0x0000 }, - { d_course_royal_raceway_packed_dl_4350, 8, 5, 0x0000 }, - { d_course_royal_raceway_packed_dl_3FA8, 8, 6, 0x0000 }, - { d_course_royal_raceway_packed_dl_3B70, 8, 7, 0x0000 }, - { d_course_royal_raceway_packed_dl_3C18, 8, 8, 0x0000 }, - { d_course_royal_raceway_packed_dl_3CF0, 8, 9, 0x0000 }, - { d_course_royal_raceway_packed_dl_3DC0, 8, 10, 0x0000 }, - { d_course_royal_raceway_packed_dl_3E50, 8, 11, 0x0000 }, - { d_course_royal_raceway_packed_dl_3F18, 8, 12, 0x0000 }, - { d_course_royal_raceway_packed_dl_4400, 8, 13, 0x0000 }, - { d_course_royal_raceway_packed_dl_4A08, 8, 14, 0x0000 }, - { d_course_royal_raceway_packed_dl_4A80, 8, 15, 0x0000 }, - { d_course_royal_raceway_packed_dl_4B30, 8, 16, 0x0000 }, - { d_course_royal_raceway_packed_dl_4BC8, 8, 17, 0x0000 }, - { d_course_royal_raceway_packed_dl_4CC8, 8, 18, 0x0000 }, - { d_course_royal_raceway_packed_dl_4968, 8, 19, 0x0000 }, - { d_course_royal_raceway_packed_dl_44B0, 8, 20, 0x0000 }, - { d_course_royal_raceway_packed_dl_4538, 8, 25, 0x0000 }, - { d_course_royal_raceway_packed_dl_45E0, 8, 26, 0x0000 }, - { d_course_royal_raceway_packed_dl_46E0, 8, 27, 0x0000 }, - { d_course_royal_raceway_packed_dl_47C0, 8, 28, 0x0000 }, - { d_course_royal_raceway_packed_dl_4890, 8, 29, 0x0000 }, - { d_course_royal_raceway_packed_dl_1720, 2, 1, 0x0000 }, - { d_course_royal_raceway_packed_dl_16B8, 2, 2, 0x0000 }, - { d_course_royal_raceway_packed_dl_1640, 2, 3, 0x0000 }, - { d_course_royal_raceway_packed_dl_15D8, 2, 4, 0x0000 }, - { d_course_royal_raceway_packed_dl_1548, 2, 5, 0x0000 }, - { d_course_royal_raceway_packed_dl_14C8, 2, 8, 0x0000 }, - { d_course_royal_raceway_packed_dl_1450, 2, 9, 0x0000 }, - { d_course_royal_raceway_packed_dl_1788, 2, 10, 0x0000 }, - { d_course_royal_raceway_packed_dl_1AA0, 2, 255, 0x0000 }, - { d_course_royal_raceway_packed_dl_1A30, 2, 255, 0x0000 }, - { d_course_royal_raceway_packed_dl_19B0, 2, 22, 0x0000 }, - { d_course_royal_raceway_packed_dl_1940, 2, 22, 0x0000 }, - { d_course_royal_raceway_packed_dl_18D8, 2, 27, 0x0000 }, - { d_course_royal_raceway_packed_dl_1860, 2, 27, 0x0000 }, - { d_course_royal_raceway_packed_dl_17F8, 2, 28, 0x0000 }, - { d_course_royal_raceway_packed_dl_3218, 255, 255, 0x0000 }, - { d_course_royal_raceway_packed_dl_A870, 8, 30, 0x0000 }, - { d_course_royal_raceway_packed_dl_AA10, 8, 30, 0x0000 }, - { d_course_royal_raceway_packed_dl_AA90, 8, 30, 0x0000 }, - { d_course_royal_raceway_packed_dl_ACE0, 3, 30, 0x0000 }, - { d_course_royal_raceway_packed_dl_AE00, 3, 30, 0x0000 }, - { d_course_royal_raceway_packed_dl_AD78, 3, 31, 0x0000 }, - { d_course_royal_raceway_packed_dl_E88, 6, 31, 0x0000 }, - { d_course_royal_raceway_packed_dl_AB28, 8, 31, 0x0000 }, - { d_course_royal_raceway_packed_dl_67E8, 4, 31, 0x0000 }, - { d_course_royal_raceway_packed_dl_AC60, 3, 32, 0x0000 }, - { d_course_royal_raceway_packed_dl_A998, 8, 32, 0x0000 }, - { d_course_royal_raceway_packed_dl_A7D8, 8, 32, 0x0000 }, - { d_course_royal_raceway_packed_dl_AE70, 3, 33, 0x0000 }, - { d_course_royal_raceway_packed_dl_CE0, 6, 33, 0x0000 }, - { d_course_royal_raceway_packed_dl_ABA8, 8, 33, 0x0000 }, - { d_course_royal_raceway_packed_dl_55D0, 8, 33, 0x0000 }, - { d_course_royal_raceway_packed_dl_A8F8, 8, 33, 0x0000 }, - { d_course_royal_raceway_packed_dl_A7D8, 8, 28, 0x0000 }, - { d_course_royal_raceway_packed_dl_3B50, 255, 255, 0x0000 }, - { d_course_royal_raceway_packed_dl_1A8, 255, 255, 0x4000 }, - { d_course_royal_raceway_packed_dl_840, 255, 255, 0x0000 }, - { d_course_royal_raceway_packed_dl_C38, 255, 255, 0x0000 }, - { d_course_royal_raceway_packed_dl_A618, 255, 255, 0x0000 }, - { 0x00000000, 0, 0, 0x0000 }, + { d_course_royal_raceway_packed_dl_2870, ASPHALT, 22, 0x0000 }, + { d_course_royal_raceway_packed_dl_23F8, ASPHALT, 23, 0x0000 }, + { d_course_royal_raceway_packed_dl_2478, ASPHALT, 24, 0x0000 }, + { d_course_royal_raceway_packed_dl_2530, ASPHALT, 25, 0x0000 }, + { d_course_royal_raceway_packed_dl_25E0, ASPHALT, 26, 0x0000 }, + { d_course_royal_raceway_packed_dl_26B0, ASPHALT, 27, 0x0000 }, + { d_course_royal_raceway_packed_dl_2758, ASPHALT, 28, 0x0000 }, + { d_course_royal_raceway_packed_dl_27E0, ASPHALT, 29, 0x0000 }, + { d_course_royal_raceway_packed_dl_5400, GRASS, 20, 0x0000 }, + { d_course_royal_raceway_packed_dl_54A8, GRASS, 19, 0x0000 }, + { d_course_royal_raceway_packed_dl_5520, GRASS, 18, 0x0000 }, + { d_course_royal_raceway_packed_dl_51E8, GRASS, 17, 0x0000 }, + { d_course_royal_raceway_packed_dl_4E90, GRASS, 16, 0x0000 }, + { d_course_royal_raceway_packed_dl_4F20, GRASS, 15, 0x0000 }, + { d_course_royal_raceway_packed_dl_4F98, GRASS, 14, 0x0000 }, + { d_course_royal_raceway_packed_dl_5018, GRASS, 13, 0x0000 }, + { d_course_royal_raceway_packed_dl_50B0, GRASS, 12, 0x0000 }, + { d_course_royal_raceway_packed_dl_5138, GRASS, 11, 0x0000 }, + { d_course_royal_raceway_packed_dl_5B50, GRASS, 22, 0x0000 }, + { d_course_royal_raceway_packed_dl_5C00, GRASS, 23, 0x0000 }, + { d_course_royal_raceway_packed_dl_5D18, GRASS, 22, 0x0000 }, + { d_course_royal_raceway_packed_dl_5DC8, GRASS, 23, 0x0000 }, + { d_course_royal_raceway_packed_dl_5EF8, GRASS, 25, 0x0000 }, + { d_course_royal_raceway_packed_dl_5AA8, GRASS, 26, 0x0000 }, + { d_course_royal_raceway_packed_dl_56A0, GRASS, 27, 0x0000 }, + { d_course_royal_raceway_packed_dl_5740, GRASS, 255, 0x0000 }, + { d_course_royal_raceway_packed_dl_57F0, GRASS, 24, 0x0000 }, + { d_course_royal_raceway_packed_dl_58E8, GRASS, 24, 0x0000 }, + { d_course_royal_raceway_packed_dl_5990, GRASS, 26, 0x0000 }, + { d_course_royal_raceway_packed_dl_5A10, GRASS, 28, 0x0000 }, + { d_course_royal_raceway_packed_dl_4078, GRASS, 1, 0x0000 }, + { d_course_royal_raceway_packed_dl_4118, GRASS, 2, 0x0000 }, + { d_course_royal_raceway_packed_dl_41A8, GRASS, 3, 0x0000 }, + { d_course_royal_raceway_packed_dl_4298, GRASS, 4, 0x0000 }, + { d_course_royal_raceway_packed_dl_4350, GRASS, 5, 0x0000 }, + { d_course_royal_raceway_packed_dl_3FA8, GRASS, 6, 0x0000 }, + { d_course_royal_raceway_packed_dl_3B70, GRASS, 7, 0x0000 }, + { d_course_royal_raceway_packed_dl_3C18, GRASS, 8, 0x0000 }, + { d_course_royal_raceway_packed_dl_3CF0, GRASS, 9, 0x0000 }, + { d_course_royal_raceway_packed_dl_3DC0, GRASS, 10, 0x0000 }, + { d_course_royal_raceway_packed_dl_3E50, GRASS, 11, 0x0000 }, + { d_course_royal_raceway_packed_dl_3F18, GRASS, 12, 0x0000 }, + { d_course_royal_raceway_packed_dl_4400, GRASS, 13, 0x0000 }, + { d_course_royal_raceway_packed_dl_4A08, GRASS, 14, 0x0000 }, + { d_course_royal_raceway_packed_dl_4A80, GRASS, 15, 0x0000 }, + { d_course_royal_raceway_packed_dl_4B30, GRASS, 16, 0x0000 }, + { d_course_royal_raceway_packed_dl_4BC8, GRASS, 17, 0x0000 }, + { d_course_royal_raceway_packed_dl_4CC8, GRASS, 18, 0x0000 }, + { d_course_royal_raceway_packed_dl_4968, GRASS, 19, 0x0000 }, + { d_course_royal_raceway_packed_dl_44B0, GRASS, 20, 0x0000 }, + { d_course_royal_raceway_packed_dl_4538, GRASS, 25, 0x0000 }, + { d_course_royal_raceway_packed_dl_45E0, GRASS, 26, 0x0000 }, + { d_course_royal_raceway_packed_dl_46E0, GRASS, 27, 0x0000 }, + { d_course_royal_raceway_packed_dl_47C0, GRASS, 28, 0x0000 }, + { d_course_royal_raceway_packed_dl_4890, GRASS, 29, 0x0000 }, + { d_course_royal_raceway_packed_dl_1720, DIRT, 1, 0x0000 }, + { d_course_royal_raceway_packed_dl_16B8, DIRT, 2, 0x0000 }, + { d_course_royal_raceway_packed_dl_1640, DIRT, 3, 0x0000 }, + { d_course_royal_raceway_packed_dl_15D8, DIRT, 4, 0x0000 }, + { d_course_royal_raceway_packed_dl_1548, DIRT, 5, 0x0000 }, + { d_course_royal_raceway_packed_dl_14C8, DIRT, 8, 0x0000 }, + { d_course_royal_raceway_packed_dl_1450, DIRT, 9, 0x0000 }, + { d_course_royal_raceway_packed_dl_1788, DIRT, 10, 0x0000 }, + { d_course_royal_raceway_packed_dl_1AA0, DIRT, 255, 0x0000 }, + { d_course_royal_raceway_packed_dl_1A30, DIRT, 255, 0x0000 }, + { d_course_royal_raceway_packed_dl_19B0, DIRT, 22, 0x0000 }, + { d_course_royal_raceway_packed_dl_1940, DIRT, 22, 0x0000 }, + { d_course_royal_raceway_packed_dl_18D8, DIRT, 27, 0x0000 }, + { d_course_royal_raceway_packed_dl_1860, DIRT, 27, 0x0000 }, + { d_course_royal_raceway_packed_dl_17F8, DIRT, 28, 0x0000 }, + { d_course_royal_raceway_packed_dl_3218, RAMP, 255, 0x0000 }, + { d_course_royal_raceway_packed_dl_A870, GRASS, 30, 0x0000 }, + { d_course_royal_raceway_packed_dl_AA10, GRASS, 30, 0x0000 }, + { d_course_royal_raceway_packed_dl_AA90, GRASS, 30, 0x0000 }, + { d_course_royal_raceway_packed_dl_ACE0, SAND, 30, 0x0000 }, + { d_course_royal_raceway_packed_dl_AE00, SAND, 30, 0x0000 }, + { d_course_royal_raceway_packed_dl_AD78, SAND, 31, 0x0000 }, + { d_course_royal_raceway_packed_dl_E88, BRIDGE, 31, 0x0000 }, + { d_course_royal_raceway_packed_dl_AB28, GRASS, 31, 0x0000 }, + { d_course_royal_raceway_packed_dl_67E8, STONE, 31, 0x0000 }, + { d_course_royal_raceway_packed_dl_AC60, SAND, 32, 0x0000 }, + { d_course_royal_raceway_packed_dl_A998, GRASS, 32, 0x0000 }, + { d_course_royal_raceway_packed_dl_A7D8, GRASS, 32, 0x0000 }, + { d_course_royal_raceway_packed_dl_AE70, SAND, 33, 0x0000 }, + { d_course_royal_raceway_packed_dl_CE0, BRIDGE, 33, 0x0000 }, + { d_course_royal_raceway_packed_dl_ABA8, GRASS, 33, 0x0000 }, + { d_course_royal_raceway_packed_dl_55D0, GRASS, 33, 0x0000 }, + { d_course_royal_raceway_packed_dl_A8F8, GRASS, 33, 0x0000 }, + { d_course_royal_raceway_packed_dl_A7D8, GRASS, 28, 0x0000 }, + { d_course_royal_raceway_packed_dl_3B50, RAMP, 255, 0x0000 }, + { d_course_royal_raceway_packed_dl_1A8, RAMP, 255, 0x4000 }, + { d_course_royal_raceway_packed_dl_840, RAMP, 255, 0x0000 }, + { d_course_royal_raceway_packed_dl_C38, RAMP, 255, 0x0000 }, + { d_course_royal_raceway_packed_dl_A618, RAMP, 255, 0x0000 }, + { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/royal_raceway/course_vertices.inc.c b/courses/royal_raceway/course_vertices.inc.c index 3a9e5c535..c88242f05 100644 --- a/courses/royal_raceway/course_vertices.inc.c +++ b/courses/royal_raceway/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_royal_raceway_vertex[] = { {{ -409, 105, -1495}, { 12288, 1024}, {MACRO_COLOR_FLAG(0xc0, 0xc0, 0xc0, 0), 0x00}}, diff --git a/courses/sherbet_land/course_data.c b/courses/sherbet_land/course_data.c index 4eb7376ee..c759e2cc0 100644 --- a/courses/sherbet_land/course_data.c +++ b/courses/sherbet_land/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include "course_displaylists.inc.h" @@ -5266,28 +5267,28 @@ struct ActorSpawnData d_course_sherbet_land_item_box_spawns[] = { // 0x9C20 TrackSections d_course_sherbet_land_addr[] = { - { d_course_sherbet_land_packed_dl_1B20, 9, 1, 0x0000 }, - { d_course_sherbet_land_packed_dl_1A98, 9, 2, 0x0000 }, - { d_course_sherbet_land_packed_dl_1A18, 9, 3, 0x0000 }, - { d_course_sherbet_land_packed_dl_1998, 9, 4, 0x0000 }, - { d_course_sherbet_land_packed_dl_1C50, 9, 5, 0x0000 }, - { d_course_sherbet_land_packed_dl_1E40, 9, 6, 0x0000 }, - { d_course_sherbet_land_packed_dl_1DC0, 9, 7, 0x0000 }, - { d_course_sherbet_land_packed_dl_730, 5, 8, 0x0000 }, - { d_course_sherbet_land_packed_dl_5D0, 5, 9, 0x0000 }, - { d_course_sherbet_land_packed_dl_470, 5, 10, 0x0000 }, - { d_course_sherbet_land_packed_dl_348, 5, 11, 0x0000 }, - { d_course_sherbet_land_packed_dl_858, 5, 12, 0x0000 }, - { d_course_sherbet_land_packed_dl_9A0, 5, 13, 0x0000 }, - { d_course_sherbet_land_packed_dl_B00, 5, 14, 0x0000 }, - { d_course_sherbet_land_packed_dl_C30, 5, 15, 0x0000 }, - { d_course_sherbet_land_packed_dl_1D48, 9, 16, 0x0000 }, - { d_course_sherbet_land_packed_dl_1CD8, 9, 17, 0x0000 }, - { d_course_sherbet_land_packed_dl_1BE0, 9, 18, 0x0000 }, - { d_course_sherbet_land_packed_dl_1940, 255, 255, 0x0000 }, - { d_course_sherbet_land_packed_dl_EA0, 255, 255, 0x0000 }, - { d_course_sherbet_land_packed_dl_1450, 255, 255, 0x0000 }, - { d_course_sherbet_land_packed_dl_2738, 255, 255, 0x0000 }, - { d_course_sherbet_land_packed_dl_2798, 255, 255, 0x0000 }, - { 0x00000000, 0, 0, 0x0000 }, + { d_course_sherbet_land_packed_dl_1B20, ICE, 1, 0x0000 }, + { d_course_sherbet_land_packed_dl_1A98, ICE, 2, 0x0000 }, + { d_course_sherbet_land_packed_dl_1A18, ICE, 3, 0x0000 }, + { d_course_sherbet_land_packed_dl_1998, ICE, 4, 0x0000 }, + { d_course_sherbet_land_packed_dl_1C50, ICE, 5, 0x0000 }, + { d_course_sherbet_land_packed_dl_1E40, ICE, 6, 0x0000 }, + { d_course_sherbet_land_packed_dl_1DC0, ICE, 7, 0x0000 }, + { d_course_sherbet_land_packed_dl_730, SNOW, 8, 0x0000 }, + { d_course_sherbet_land_packed_dl_5D0, SNOW, 9, 0x0000 }, + { d_course_sherbet_land_packed_dl_470, SNOW, 10, 0x0000 }, + { d_course_sherbet_land_packed_dl_348, SNOW, 11, 0x0000 }, + { d_course_sherbet_land_packed_dl_858, SNOW, 12, 0x0000 }, + { d_course_sherbet_land_packed_dl_9A0, SNOW, 13, 0x0000 }, + { d_course_sherbet_land_packed_dl_B00, SNOW, 14, 0x0000 }, + { d_course_sherbet_land_packed_dl_C30, SNOW, 15, 0x0000 }, + { d_course_sherbet_land_packed_dl_1D48, ICE, 16, 0x0000 }, + { d_course_sherbet_land_packed_dl_1CD8, ICE, 17, 0x0000 }, + { d_course_sherbet_land_packed_dl_1BE0, ICE, 18, 0x0000 }, + { d_course_sherbet_land_packed_dl_1940, RAMP, 255, 0x0000 }, + { d_course_sherbet_land_packed_dl_EA0, RAMP, 255, 0x0000 }, + { d_course_sherbet_land_packed_dl_1450, RAMP, 255, 0x0000 }, + { d_course_sherbet_land_packed_dl_2738, RAMP, 255, 0x0000 }, + { d_course_sherbet_land_packed_dl_2798, RAMP, 255, 0x0000 }, + { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/sherbet_land/course_vertices.inc.c b/courses/sherbet_land/course_vertices.inc.c index 0187e1829..ca28b8240 100644 --- a/courses/sherbet_land/course_vertices.inc.c +++ b/courses/sherbet_land/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_sherbet_land_vertex[] = { {{ -1834, -60, 1192}, { 4096, 0}, {MACRO_COLOR_FLAG(0xfc, 0xfc, 0xfc, 4), 0x00}}, diff --git a/courses/skyscraper/course_vertices.inc.c b/courses/skyscraper/course_vertices.inc.c index 665a00ccc..440219ef7 100644 --- a/courses/skyscraper/course_vertices.inc.c +++ b/courses/skyscraper/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_skyscraper_vertex[] = { {{ -54, 485, 320}, { -4060, 0}, {MACRO_COLOR_FLAG(0xfc, 0xfc, 0xfc, 0), 0x00}}, diff --git a/courses/staff_ghost_data.c b/courses/staff_ghost_data.c index 47691c058..ee5c6b5cc 100644 --- a/courses/staff_ghost_data.c +++ b/courses/staff_ghost_data.c @@ -1,7 +1,6 @@ #include #include -#include "types.h" -#include "common_structs.h" +#include /* * This file is required for data alignment diff --git a/courses/toads_turnpike/course_data.c b/courses/toads_turnpike/course_data.c index 582483d12..578f141ea 100644 --- a/courses/toads_turnpike/course_data.c +++ b/courses/toads_turnpike/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" #include "course_textures.linkonly.h" @@ -8409,28 +8410,28 @@ struct ActorSpawnData d_course_toads_turnpike_item_box_spawns[] = { // 0x23B68 TrackSections d_course_toads_turnpike_addr[] = { - { d_course_toads_turnpike_packed_dl_32A0, 1, 1, 0x0000 }, - { d_course_toads_turnpike_packed_dl_33A8, 1, 2, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3478, 1, 3, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3548, 1, 4, 0x0000 }, - { d_course_toads_turnpike_packed_dl_31E8, 1, 5, 0x0000 }, - { d_course_toads_turnpike_packed_dl_2E40, 1, 6, 0x0000 }, - { d_course_toads_turnpike_packed_dl_2EE0, 1, 7, 0x0000 }, - { d_course_toads_turnpike_packed_dl_2FA0, 1, 8, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3060, 1, 9, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3118, 1, 10, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3638, 1, 11, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3AD0, 1, 12, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3B58, 1, 13, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3C28, 1, 14, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3D00, 1, 15, 0x0000 }, - { d_course_toads_turnpike_packed_dl_39A8, 1, 16, 0x0000 }, - { d_course_toads_turnpike_packed_dl_36C0, 1, 17, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3780, 1, 18, 0x0000 }, - { d_course_toads_turnpike_packed_dl_3850, 1, 19, 0x0000 }, - { d_course_toads_turnpike_packed_dl_38E8, 1, 20, 0x0000 }, - { d_course_toads_turnpike_packed_dl_FA8, 255, 255, 0x0000 }, - { d_course_toads_turnpike_packed_dl_51C8, 255, 255, 0x0000 }, - { 0x00000000, 0, 0, 0x0000 }, + { d_course_toads_turnpike_packed_dl_32A0, ASPHALT, 1, 0x0000 }, + { d_course_toads_turnpike_packed_dl_33A8, ASPHALT, 2, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3478, ASPHALT, 3, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3548, ASPHALT, 4, 0x0000 }, + { d_course_toads_turnpike_packed_dl_31E8, ASPHALT, 5, 0x0000 }, + { d_course_toads_turnpike_packed_dl_2E40, ASPHALT, 6, 0x0000 }, + { d_course_toads_turnpike_packed_dl_2EE0, ASPHALT, 7, 0x0000 }, + { d_course_toads_turnpike_packed_dl_2FA0, ASPHALT, 8, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3060, ASPHALT, 9, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3118, ASPHALT, 10, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3638, ASPHALT, 11, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3AD0, ASPHALT, 12, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3B58, ASPHALT, 13, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3C28, ASPHALT, 14, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3D00, ASPHALT, 15, 0x0000 }, + { d_course_toads_turnpike_packed_dl_39A8, ASPHALT, 16, 0x0000 }, + { d_course_toads_turnpike_packed_dl_36C0, ASPHALT, 17, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3780, ASPHALT, 18, 0x0000 }, + { d_course_toads_turnpike_packed_dl_3850, ASPHALT, 19, 0x0000 }, + { d_course_toads_turnpike_packed_dl_38E8, ASPHALT, 20, 0x0000 }, + { d_course_toads_turnpike_packed_dl_FA8, RAMP, 255, 0x0000 }, + { d_course_toads_turnpike_packed_dl_51C8, RAMP, 255, 0x0000 }, + { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/toads_turnpike/course_vertices.inc.c b/courses/toads_turnpike/course_vertices.inc.c index 20521d2d5..cf62c1f71 100644 --- a/courses/toads_turnpike/course_vertices.inc.c +++ b/courses/toads_turnpike/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_toads_turnpike_vertex[] = { {{-2064, 50, -3157}, { 2048, 479}, {MACRO_COLOR_FLAG(0x7c, 0x7c, 0xc0, 0), 0x00}}, diff --git a/courses/wario_stadium/course_data.c b/courses/wario_stadium/course_data.c index 6c75f57d5..5c2475c11 100644 --- a/courses/wario_stadium/course_data.c +++ b/courses/wario_stadium/course_data.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" @@ -4933,36 +4934,36 @@ struct ActorSpawnData d_course_wario_stadium_item_box_spawns[] = { // 0xCC38 TrackSections d_course_wario_stadium_addr[] = { - { d_course_wario_stadium_packed_dl_8D28, 2, 1, 0x0000 }, - { d_course_wario_stadium_packed_dl_8DE8, 2, 2, 0x0000 }, - { d_course_wario_stadium_packed_dl_8EF0, 2, 3, 0x0000 }, - { d_course_wario_stadium_packed_dl_8FC8, 2, 4, 0x0000 }, - { d_course_wario_stadium_packed_dl_9090, 2, 5, 0x0000 }, - { d_course_wario_stadium_packed_dl_9120, 2, 6, 0x0000 }, - { d_course_wario_stadium_packed_dl_8C28, 2, 7, 0x0000 }, - { d_course_wario_stadium_packed_dl_85F0, 2, 8, 0x0000 }, - { d_course_wario_stadium_packed_dl_8678, 2, 9, 0x0000 }, - { d_course_wario_stadium_packed_dl_8708, 2, 10, 0x0000 }, - { d_course_wario_stadium_packed_dl_8798, 2, 11, 0x0000 }, - { d_course_wario_stadium_packed_dl_88A0, 2, 12, 0x0000 }, - { d_course_wario_stadium_packed_dl_8A68, 2, 13, 0x0000 }, - { d_course_wario_stadium_packed_dl_91E8, 2, 14, 0x0000 }, - { d_course_wario_stadium_packed_dl_98A0, 2, 15, 0x0000 }, - { d_course_wario_stadium_packed_dl_9998, 2, 16, 0x0000 }, - { d_course_wario_stadium_packed_dl_9AD8, 2, 17, 0x0000 }, - { d_course_wario_stadium_packed_dl_9C80, 2, 18, 0x0000 }, - { d_course_wario_stadium_packed_dl_9D00, 2, 19, 0x0000 }, - { d_course_wario_stadium_packed_dl_9D78, 2, 20, 0x0000 }, - { d_course_wario_stadium_packed_dl_9820, 2, 21, 0x0000 }, - { d_course_wario_stadium_packed_dl_9328, 2, 22, 0x0000 }, - { d_course_wario_stadium_packed_dl_93B0, 2, 23, 0x0000 }, - { d_course_wario_stadium_packed_dl_9430, 2, 24, 0x0000 }, - { d_course_wario_stadium_packed_dl_9590, 2, 25, 0x0000 }, - { d_course_wario_stadium_packed_dl_9668, 2, 26, 0x0000 }, - { d_course_wario_stadium_packed_dl_9760, 2, 27, 0x0000 }, - { d_course_wario_stadium_packed_dl_6D20, 255, 255, 0x0000 }, - { d_course_wario_stadium_packed_dl_8510, 255, 255, 0x0000 }, - { d_course_wario_stadium_packed_dl_5D90, 255, 255, 0x0000 }, - { d_course_wario_stadium_packed_dl_9F18, 255, 255, 0x0000 }, - { 0x00000000, 0, 0, 0x0000 }, + { d_course_wario_stadium_packed_dl_8D28, DIRT, 1, 0x0000 }, + { d_course_wario_stadium_packed_dl_8DE8, DIRT, 2, 0x0000 }, + { d_course_wario_stadium_packed_dl_8EF0, DIRT, 3, 0x0000 }, + { d_course_wario_stadium_packed_dl_8FC8, DIRT, 4, 0x0000 }, + { d_course_wario_stadium_packed_dl_9090, DIRT, 5, 0x0000 }, + { d_course_wario_stadium_packed_dl_9120, DIRT, 6, 0x0000 }, + { d_course_wario_stadium_packed_dl_8C28, DIRT, 7, 0x0000 }, + { d_course_wario_stadium_packed_dl_85F0, DIRT, 8, 0x0000 }, + { d_course_wario_stadium_packed_dl_8678, DIRT, 9, 0x0000 }, + { d_course_wario_stadium_packed_dl_8708, DIRT, 10, 0x0000 }, + { d_course_wario_stadium_packed_dl_8798, DIRT, 11, 0x0000 }, + { d_course_wario_stadium_packed_dl_88A0, DIRT, 12, 0x0000 }, + { d_course_wario_stadium_packed_dl_8A68, DIRT, 13, 0x0000 }, + { d_course_wario_stadium_packed_dl_91E8, DIRT, 14, 0x0000 }, + { d_course_wario_stadium_packed_dl_98A0, DIRT, 15, 0x0000 }, + { d_course_wario_stadium_packed_dl_9998, DIRT, 16, 0x0000 }, + { d_course_wario_stadium_packed_dl_9AD8, DIRT, 17, 0x0000 }, + { d_course_wario_stadium_packed_dl_9C80, DIRT, 18, 0x0000 }, + { d_course_wario_stadium_packed_dl_9D00, DIRT, 19, 0x0000 }, + { d_course_wario_stadium_packed_dl_9D78, DIRT, 20, 0x0000 }, + { d_course_wario_stadium_packed_dl_9820, DIRT, 21, 0x0000 }, + { d_course_wario_stadium_packed_dl_9328, DIRT, 22, 0x0000 }, + { d_course_wario_stadium_packed_dl_93B0, DIRT, 23, 0x0000 }, + { d_course_wario_stadium_packed_dl_9430, DIRT, 24, 0x0000 }, + { d_course_wario_stadium_packed_dl_9590, DIRT, 25, 0x0000 }, + { d_course_wario_stadium_packed_dl_9668, DIRT, 26, 0x0000 }, + { d_course_wario_stadium_packed_dl_9760, DIRT, 27, 0x0000 }, + { d_course_wario_stadium_packed_dl_6D20, RAMP, 255, 0x0000 }, + { d_course_wario_stadium_packed_dl_8510, RAMP, 255, 0x0000 }, + { d_course_wario_stadium_packed_dl_5D90, RAMP, 255, 0x0000 }, + { d_course_wario_stadium_packed_dl_9F18, RAMP, 255, 0x0000 }, + { 0x00000000, 0, 0, 0x0000 }, }; diff --git a/courses/wario_stadium/course_vertices.inc.c b/courses/wario_stadium/course_vertices.inc.c index 62f34fecb..b2b816184 100644 --- a/courses/wario_stadium/course_vertices.inc.c +++ b/courses/wario_stadium/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_wario_stadium_vertex[] = { {{-3350, 362, -650}, { 3107, 1023}, {MACRO_COLOR_FLAG(0xcc, 0xcc, 0xcc, 4), 0x00}}, diff --git a/courses/yoshi_valley/course_data.c b/courses/yoshi_valley/course_data.c index 9ad01890b..4ac074952 100644 --- a/courses/yoshi_valley/course_data.c +++ b/courses/yoshi_valley/course_data.c @@ -6,6 +6,7 @@ #include #include #include +#include #include "course_displaylists.inc.h" @@ -10890,7 +10891,7 @@ u32 d_course_yoshi_valley_unk5[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_yoshi_valley_dl_142C0, + (u32) d_course_yoshi_valley_dl_142C0, 0x00000000, 0x00000000, 0x00000000, @@ -10912,7 +10913,7 @@ u32 d_course_yoshi_valley_unk5[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_yoshi_valley_dl_143C8, + (u32) d_course_yoshi_valley_dl_143C8, 0x00000000, 0x00000000, 0x00000000, @@ -10923,7 +10924,7 @@ u32 d_course_yoshi_valley_unk5[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_yoshi_valley_dl_144A8, + (u32) d_course_yoshi_valley_dl_144A8, 0x000001cc, 0x00000000, 0x00000000, @@ -10934,7 +10935,7 @@ u32 d_course_yoshi_valley_unk5[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_yoshi_valley_dl_14500, + (u32) d_course_yoshi_valley_dl_14500, 0x000001cc, 0x00000000, 0x00000000, @@ -10945,7 +10946,7 @@ u32 d_course_yoshi_valley_unk5[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_yoshi_valley_dl_14558, + (u32) d_course_yoshi_valley_dl_14558, 0x00000158, 0x00000000, 0x00000000, @@ -10956,7 +10957,7 @@ u32 d_course_yoshi_valley_unk5[] = { 0x00000000, 0x00000007, 0x00000000, - d_course_yoshi_valley_dl_145D0, + (u32) d_course_yoshi_valley_dl_145D0, 0x00000120, 0x00000000, 0x00000000, @@ -11383,60 +11384,60 @@ struct ActorSpawnData d_course_yoshi_valley_item_box_spawns[] = { // 0x18240 TrackSections d_course_yoshi_valley_addr[] = { - {d_course_yoshi_valley_packed_dl_44C8, 2, 1, 0x0000}, - {d_course_yoshi_valley_packed_dl_4588, 2, 2, 0x0000}, - {d_course_yoshi_valley_packed_dl_45F0, 2, 3, 0x0000}, - {d_course_yoshi_valley_packed_dl_4670, 2, 4, 0x0000}, - {d_course_yoshi_valley_packed_dl_46E0, 2, 5, 0x0000}, - {d_course_yoshi_valley_packed_dl_4810, 2, 6, 0x0000}, - {d_course_yoshi_valley_packed_dl_4428, 2, 7, 0x0000}, - {d_course_yoshi_valley_packed_dl_3E08, 2, 8, 0x0000}, - {d_course_yoshi_valley_packed_dl_3F10, 2, 9, 0x0000}, - {d_course_yoshi_valley_packed_dl_3FF0, 2, 10, 0x0000}, - {d_course_yoshi_valley_packed_dl_4108, 2, 11, 0x0000}, - {d_course_yoshi_valley_packed_dl_41B0, 2, 12, 0x0000}, - {d_course_yoshi_valley_packed_dl_4258, 2, 13, 0x0000}, - {d_course_yoshi_valley_packed_dl_4358, 2, 14, 0x0000}, - {d_course_yoshi_valley_packed_dl_4918, 2, 15, 0x0000}, - {d_course_yoshi_valley_packed_dl_4FD0, 2, 16, 0x0000}, - {d_course_yoshi_valley_packed_dl_5058, 2, 17, 0x0000}, - {d_course_yoshi_valley_packed_dl_1418, 17, 18, 0x0000}, - {d_course_yoshi_valley_packed_dl_50E0, 2, 19, 0x0000}, - {d_course_yoshi_valley_packed_dl_5158, 2, 20, 0x0000}, - {d_course_yoshi_valley_packed_dl_51D8, 2, 21, 0x0000}, - {d_course_yoshi_valley_packed_dl_52D8, 2, 22, 0x0000}, - {d_course_yoshi_valley_packed_dl_4F48, 2, 23, 0x0000}, - {d_course_yoshi_valley_packed_dl_49C0, 2, 24, 0x0000}, - {d_course_yoshi_valley_packed_dl_4A58, 2, 25, 0x0000}, - {d_course_yoshi_valley_packed_dl_4B20, 2, 26, 0x0000}, - {d_course_yoshi_valley_packed_dl_4C18, 2, 27, 0x0000}, - {d_course_yoshi_valley_packed_dl_4CB0, 2, 28, 0x0000}, - {d_course_yoshi_valley_packed_dl_1580, 17, 29, 0x0000}, - {d_course_yoshi_valley_packed_dl_4D68, 2, 30, 0x0000}, - {d_course_yoshi_valley_packed_dl_4E88, 2, 31, 0x0000}, - {d_course_yoshi_valley_packed_dl_5788, 8, 1, 0x0000}, - {d_course_yoshi_valley_packed_dl_5800, 8, 1, 0x0000}, - {d_course_yoshi_valley_packed_dl_5880, 8, 2, 0x0000}, - {d_course_yoshi_valley_packed_dl_58F8, 8, 2, 0x0000}, - {d_course_yoshi_valley_packed_dl_5710, 8, 3, 0x0000}, - {d_course_yoshi_valley_packed_dl_54B0, 8, 3, 0x0000}, - {d_course_yoshi_valley_packed_dl_5548, 8, 4, 0x0000}, - {d_course_yoshi_valley_packed_dl_55C0, 8, 4, 0x0000}, - {d_course_yoshi_valley_packed_dl_5628, 8, 4, 0x0000}, - {d_course_yoshi_valley_packed_dl_56A0, 8, 19, 0x0000}, - {d_course_yoshi_valley_packed_dl_5970, 8, 19, 0x0000}, - {d_course_yoshi_valley_packed_dl_5C80, 8, 20, 0x0000}, - {d_course_yoshi_valley_packed_dl_5D00, 8, 20, 0x0000}, - {d_course_yoshi_valley_packed_dl_5D90, 8, 19, 0x0000}, - {d_course_yoshi_valley_packed_dl_5DF8, 8, 20, 0x0000}, - {d_course_yoshi_valley_packed_dl_5C18, 8, 1, 0x0000}, - {d_course_yoshi_valley_packed_dl_59F0, 8, 3, 0x0000}, - {d_course_yoshi_valley_packed_dl_75D0, 255, 255, 0x0000}, - {d_course_yoshi_valley_packed_dl_3010, 255, 255, 0x0000}, - {d_course_yoshi_valley_packed_dl_8050, 255, 255, 0x0000}, - {d_course_yoshi_valley_packed_dl_13D8, 255, 255, 0x8000}, - {d_course_yoshi_valley_packed_dl_D20, 255, 255, 0x8000}, - { 0x00000000, 0, 0, 0x0000 }, + {d_course_yoshi_valley_packed_dl_44C8, DIRT, 1, 0x0000}, + {d_course_yoshi_valley_packed_dl_4588, DIRT, 2, 0x0000}, + {d_course_yoshi_valley_packed_dl_45F0, DIRT, 3, 0x0000}, + {d_course_yoshi_valley_packed_dl_4670, DIRT, 4, 0x0000}, + {d_course_yoshi_valley_packed_dl_46E0, DIRT, 5, 0x0000}, + {d_course_yoshi_valley_packed_dl_4810, DIRT, 6, 0x0000}, + {d_course_yoshi_valley_packed_dl_4428, DIRT, 7, 0x0000}, + {d_course_yoshi_valley_packed_dl_3E08, DIRT, 8, 0x0000}, + {d_course_yoshi_valley_packed_dl_3F10, DIRT, 9, 0x0000}, + {d_course_yoshi_valley_packed_dl_3FF0, DIRT, 10, 0x0000}, + {d_course_yoshi_valley_packed_dl_4108, DIRT, 11, 0x0000}, + {d_course_yoshi_valley_packed_dl_41B0, DIRT, 12, 0x0000}, + {d_course_yoshi_valley_packed_dl_4258, DIRT, 13, 0x0000}, + {d_course_yoshi_valley_packed_dl_4358, DIRT, 14, 0x0000}, + {d_course_yoshi_valley_packed_dl_4918, DIRT, 15, 0x0000}, + {d_course_yoshi_valley_packed_dl_4FD0, DIRT, 16, 0x0000}, + {d_course_yoshi_valley_packed_dl_5058, DIRT, 17, 0x0000}, + {d_course_yoshi_valley_packed_dl_1418, WOOD_BRIDGE, 18, 0x0000}, + {d_course_yoshi_valley_packed_dl_50E0, DIRT, 19, 0x0000}, + {d_course_yoshi_valley_packed_dl_5158, DIRT, 20, 0x0000}, + {d_course_yoshi_valley_packed_dl_51D8, DIRT, 21, 0x0000}, + {d_course_yoshi_valley_packed_dl_52D8, DIRT, 22, 0x0000}, + {d_course_yoshi_valley_packed_dl_4F48, DIRT, 23, 0x0000}, + {d_course_yoshi_valley_packed_dl_49C0, DIRT, 24, 0x0000}, + {d_course_yoshi_valley_packed_dl_4A58, DIRT, 25, 0x0000}, + {d_course_yoshi_valley_packed_dl_4B20, DIRT, 26, 0x0000}, + {d_course_yoshi_valley_packed_dl_4C18, DIRT, 27, 0x0000}, + {d_course_yoshi_valley_packed_dl_4CB0, DIRT, 28, 0x0000}, + {d_course_yoshi_valley_packed_dl_1580, WOOD_BRIDGE, 29, 0x0000}, + {d_course_yoshi_valley_packed_dl_4D68, DIRT, 30, 0x0000}, + {d_course_yoshi_valley_packed_dl_4E88, DIRT, 31, 0x0000}, + {d_course_yoshi_valley_packed_dl_5788, GRASS, 1, 0x0000}, + {d_course_yoshi_valley_packed_dl_5800, GRASS, 1, 0x0000}, + {d_course_yoshi_valley_packed_dl_5880, GRASS, 2, 0x0000}, + {d_course_yoshi_valley_packed_dl_58F8, GRASS, 2, 0x0000}, + {d_course_yoshi_valley_packed_dl_5710, GRASS, 3, 0x0000}, + {d_course_yoshi_valley_packed_dl_54B0, GRASS, 3, 0x0000}, + {d_course_yoshi_valley_packed_dl_5548, GRASS, 4, 0x0000}, + {d_course_yoshi_valley_packed_dl_55C0, GRASS, 4, 0x0000}, + {d_course_yoshi_valley_packed_dl_5628, GRASS, 4, 0x0000}, + {d_course_yoshi_valley_packed_dl_56A0, GRASS, 19, 0x0000}, + {d_course_yoshi_valley_packed_dl_5970, GRASS, 19, 0x0000}, + {d_course_yoshi_valley_packed_dl_5C80, GRASS, 20, 0x0000}, + {d_course_yoshi_valley_packed_dl_5D00, GRASS, 20, 0x0000}, + {d_course_yoshi_valley_packed_dl_5D90, GRASS, 19, 0x0000}, + {d_course_yoshi_valley_packed_dl_5DF8, GRASS, 20, 0x0000}, + {d_course_yoshi_valley_packed_dl_5C18, GRASS, 1, 0x0000}, + {d_course_yoshi_valley_packed_dl_59F0, GRASS, 3, 0x0000}, + {d_course_yoshi_valley_packed_dl_75D0, RAMP, 255, 0x0000}, + {d_course_yoshi_valley_packed_dl_3010, RAMP, 255, 0x0000}, + {d_course_yoshi_valley_packed_dl_8050, RAMP, 255, 0x0000}, + {d_course_yoshi_valley_packed_dl_13D8, RAMP, 255, 0x8000}, + {d_course_yoshi_valley_packed_dl_D20, RAMP, 255, 0x8000}, + { 0x00000000, 0, 0, 0x0000 }, }; Gfx *d_course_yoshi_valley_dl_list[] = { diff --git a/courses/yoshi_valley/course_vertices.inc.c b/courses/yoshi_valley/course_vertices.inc.c index 781b9aacc..9ff708f7a 100644 --- a/courses/yoshi_valley/course_vertices.inc.c +++ b/courses/yoshi_valley/course_vertices.inc.c @@ -1,5 +1,5 @@ -#include "types.h" -#include "courses/course_macro.h" +#include +#include CourseVtx d_course_yoshi_valley_vertex[] = { {{-1627, -100, -730}, { -1858, 2252}, {MACRO_COLOR_FLAG(0x88, 0x88, 0x88, 0), 0x00}}, diff --git a/docs/basics/compiling.md b/docs/basics/compiling.md index 3f2b39411..efd1ed59d 100644 --- a/docs/basics/compiling.md +++ b/docs/basics/compiling.md @@ -30,7 +30,7 @@ Review the [n64decomp/sm64](https://github.com/n64decomp/sm64) readme for instru # Windows - Clone the repo or download the zip. -- Download and extract the toolchain from [here](https://github.com/coco875/mk64-tools/releases/download/v0.0.7/mips-tools-chain-windows.zip) +- Download and extract the toolchain from [here](https://github.com/coco875/mk64-tools/releases/download/v0.0.8/mips-tools-chain-windows.zip) ### Setup - Place the `mingw64` folder from the toolchain into the tools folder like so: `mk64/tools/mingw64`. diff --git a/docs/basics/controlflow.md b/docs/basics/controlflow.md index 1790244c8..01af022b3 100644 --- a/docs/basics/controlflow.md +++ b/docs/basics/controlflow.md @@ -10,7 +10,7 @@ After boot, the game begins by setting up its four threads; [idle](@ref thread1_ The [idle thread](@ref thread1_idle) allows the cpu to sleep. Without it, if at any time execution of all threads were paused, the cpu would never be able to continue. The idle thread is active if all the other threads are paused. -As such, the [idle thread](@ref thread1_idle) runs the following loop: `while(TRUE);` (it runs in a perpetual loop of nothing; sleep). In mips assembly it looks like this: +As such, the [idle thread](@ref thread1_idle) runs the following loop: `while(true);` (it runs in a perpetual loop of nothing; sleep). In mips assembly it looks like this: ``` .L800005B8: b .L800005B8 diff --git a/enhancements/flycam.patch b/enhancements/flycam.patch index c1dfafba1..b1cbd91f8 100644 --- a/enhancements/flycam.patch +++ b/enhancements/flycam.patch @@ -82,8 +82,7 @@ index 0000000..5569838 +#include +#include +#include -+#include -+#include +++#include +#include +#include "main.h" +#include @@ -97,11 +96,11 @@ index 0000000..5569838 +#define SENSITIVITY_X 0.0003f +#define SENSITIVITY_Y 0.0003f + -+u32 isFlycam = FALSE; ++u32 isFlycam = false; +u32 fRankIndex = 0; -+u32 fTargetPlayer = FALSE; ++u32 fTargetPlayer = false; +u32 fMode; // flycam mode should probably be an enum -+u32 fModeInit = FALSE; ++u32 fModeInit = false; + +typedef struct { + Vec3f pos; @@ -218,7 +217,7 @@ index 0000000..5569838 + fState.rot[0] = camera->rot[0]; + fState.rot[1] = camera->rot[1]; + fState.rot[2] = camera->rot[2]; -+ fModeInit = TRUE; ++ fModeInit = true; +} + +void flycam_load_state(Camera *camera) { @@ -366,7 +365,7 @@ index 0000000..5569838 + f32 pitchChange = controller->rawStickY * SENSITIVITY_Y; + Vec3f forwardVector; + -+ func_802ADDC8(&camera->unk_54, 50, camera->pos[0], camera->pos[1], camera->pos[2]); ++ check_bounding_collision(&camera->collision, 50, camera->pos[0], camera->pos[1], camera->pos[2]); + + camera->rot[1] += (short)(yawChange * 65535.0f / (2 * M_PI)); // Convert radians to 0-65535 range + @@ -431,7 +430,7 @@ diff --git a/src/racing/render_courses.c b/src/racing/render_courses.c index c2a84aa..338e2bd 100644 --- a/src/racing/render_courses.c +++ b/src/racing/render_courses.c -@@ -180,6 +180,11 @@ void render_course_section(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) { +@@ -180,6 +180,11 @@ void render_course_segments(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) { arg1->pathCounter = temp_v1; temp_v1 = ((temp_v1 - 1) * 4) + var_a3; diff --git a/first-diff.py b/first-diff.py index a208f4035..7b6d088cf 100755 --- a/first-diff.py +++ b/first-diff.py @@ -2,6 +2,7 @@ import os.path import argparse from subprocess import check_call +import re # TODO: -S argument for shifted ROMs @@ -118,8 +119,9 @@ def search_map(rom_addr): if "noload" in line or "noload" in prev_line: ram_offset = None continue - ram = int(line[16 : 16 + 18], 0) - rom = int(line[59 : 59 + 18], 0) + hex_number = re.findall(r"0x[0-9a-fA-F]+", line) + ram = int(hex_number[0], 0) # int(line[16 : 16 + 18], 0) + rom = int(hex_number[2], 0)# int(line[59 : 59 + 18], 0) ram_offset = ram - rom continue prev_line = line @@ -131,10 +133,11 @@ def search_map(rom_addr): or " 0x" not in line ): continue - ram = int(line[16 : 16 + 18], 0) + hex_number = re.findall(r"0x[0-9a-fA-F]+", line) + ram = int(hex_number[0], 0) # int(line[16 : 16 + 18], 0) rom = ram - ram_offset fn = line.split()[-1] - if "0x" in fn: + if fn.startswith("0x"): ram_offset = None continue if rom > rom_addr or (rom_addr & 0x80000000 and ram > rom_addr): @@ -265,7 +268,7 @@ for i in range(24, len(mybin), 4): map_search_diff.append(search_map(i)) if diffs == 0: print("No differences!") - exit() + exit(0) definite_shift = diffs > shift_cap if not definite_shift: if (diffs > 1): @@ -288,7 +291,7 @@ if diffs > 100: + basemap + " and rerun this script." ) - exit() + exit(1) if not map_diff(): print(f"No ROM shift{' (!?)' if definite_shift else ''}") diff --git a/include/PR/gu.h b/include/PR/gu.h index bd25b779e..7d3a2ee10 100644 --- a/include/PR/gu.h +++ b/include/PR/gu.h @@ -3,6 +3,7 @@ #include #include +#include #define GU_PI 3.1415926 /* Functions */ diff --git a/include/PR/os.h b/include/PR/os.h index 3126f4817..f36d17bda 100644 --- a/include/PR/os.h +++ b/include/PR/os.h @@ -36,7 +36,7 @@ extern "C" { #endif #include -#include "PR/os_message.h" +#include #if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) @@ -730,8 +730,8 @@ extern s32 osPfsNumFiles(OSPfs *, s32 *, s32 *); extern s32 osEepromProbe(OSMesgQueue *); extern s32 osEepromRead(OSMesgQueue *, u8, u8 *); extern s32 osEepromWrite(OSMesgQueue *, u8, u8 *); -extern s32 osEepromLongRead(OSMesgQueue *, u8, u8 *, int); -extern s32 osEepromLongWrite(OSMesgQueue *, u8, u8 *, int); +extern s32 osEepromLongRead(OSMesgQueue *, u8, u8 *, s32); +extern s32 osEepromLongWrite(OSMesgQueue *, u8, u8 *, s32); /* MOTOR interface */ diff --git a/include/PR/os_cont.h b/include/PR/os_cont.h index 2754f2504..2b989a5ab 100644 --- a/include/PR/os_cont.h +++ b/include/PR/os_cont.h @@ -53,7 +53,7 @@ extern "C" { typedef struct { u16 type; /* Controller Type */ u8 status; /* Controller status */ - u8 errno; + u8 errnum; }OSContStatus; typedef struct { diff --git a/include/PR/ultratypes.h b/include/PR/ultratypes.h index 5a7ba5a93..3bcef2544 100644 --- a/include/PR/ultratypes.h +++ b/include/PR/ultratypes.h @@ -5,8 +5,8 @@ #define NULL (void *)0 #endif -#define TRUE 1 -#define FALSE 0 +#define true 1 +#define false 0 typedef signed char s8; typedef unsigned char u8; @@ -17,7 +17,8 @@ typedef unsigned int u32; typedef signed long long int s64; typedef unsigned long long int u64; -typedef signed int bool; +#define bool signed int + typedef signed char bool8; typedef unsigned char ubool8; @@ -37,6 +38,7 @@ typedef double f64; typedef u32 size_t; typedef s32 ssize_t; typedef u32 uintptr_t; +typedef u8 uint8_t; typedef s32 intptr_t; typedef s32 ptrdiff_t; #else diff --git a/include/bomb_kart.h b/include/bomb_kart.h index e95da284b..528183949 100644 --- a/include/bomb_kart.h +++ b/include/bomb_kart.h @@ -1,7 +1,8 @@ #ifndef BOMB_KART_H #define BOMB_KART_H -#include "common_structs.h" +#include +#include #define NUM_BOMB_KARTS_MAX 7 #define NUM_BOMB_KARTS_VERSUS 7 diff --git a/include/common_structs.h b/include/common_structs.h index ef90adcce..1c0bdb83e 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -1,7 +1,7 @@ #ifndef _COMMON_STRUCTS_H_ #define _COMMON_STRUCTS_H_ -#include "ultra64.h" +#include typedef f32 Vec3f[3]; typedef f32 Vec4f[4]; @@ -21,82 +21,6 @@ typedef struct f32 x, y, z; } Vec3fs; -#define COURSE_NULL 0xFF - -typedef enum { - /* 0x00 */ COURSE_MARIO_RACEWAY = 0, - /* 0x01 */ COURSE_CHOCO_MOUNTAIN, - /* 0x02 */ COURSE_BOWSER_CASTLE, - /* 0x03 */ COURSE_BANSHEE_BOARDWALK, - /* 0x04 */ COURSE_YOSHI_VALLEY, - /* 0x05 */ COURSE_FRAPPE_SNOWLAND, - /* 0x06 */ COURSE_KOOPA_BEACH, - /* 0x07 */ COURSE_ROYAL_RACEWAY, - /* 0x08 */ COURSE_LUIGI_RACEWAY, - /* 0x09 */ COURSE_MOO_MOO_FARM, - /* 0x0A */ COURSE_TOADS_TURNPIKE, - /* 0x0B */ COURSE_KALAMARI_DESERT, - /* 0x0C */ COURSE_SHERBET_LAND, - /* 0x0D */ COURSE_RAINBOW_ROAD, - /* 0x0E */ COURSE_WARIO_STADIUM, - /* 0x0F */ COURSE_BLOCK_FORT, - /* 0x10 */ COURSE_SKYSCRAPER, - /* 0x11 */ COURSE_DOUBLE_DECK, - /* 0x12 */ COURSE_DK_JUNGLE, - /* 0x13 */ COURSE_BIG_DONUT, - /* 0x14 */ COURSE_AWARD_CEREMONY, - /* 0x15 */ NUM_COURSES -} COURSES; - -typedef enum { - /* 0x00 */ TIME_TRIAL_DATA_LUIGI_RACEWAY, - /* 0x01 */ TIME_TRIAL_DATA_MOO_MOO_FARM, - /* 0x02 */ TIME_TRIAL_DATA_KOOPA_BEACH, - /* 0x03 */ TIME_TRIAL_DATA_KALAMARI_DESERT, - /* 0x04 */ TIME_TRIAL_DATA_TOADS_TURNPIKE, - /* 0x05 */ TIME_TRIAL_DATA_FRAPPE_SNOWLAND, - /* 0x06 */ TIME_TRIAL_DATA_CHOCO_MOUNTAIN, - /* 0x07 */ TIME_TRIAL_DATA_MARIO_RACEWAY, - /* 0x08 */ TIME_TRIAL_DATA_WARIO_STADIUM, - /* 0x09 */ TIME_TRIAL_DATA_SHERBET_LAND, - /* 0x0A */ TIME_TRIAL_DATA_ROYAL_RACEWAY, - /* 0x0B */ TIME_TRIAL_DATA_BOWSER_CASTLE, - /* 0x0C */ TIME_TRIAL_DATA_DK_JUNGLE, - /* 0x0D */ TIME_TRIAL_DATA_YOSHI_VALLEY, - /* 0x0E */ TIME_TRIAL_DATA_BANSHEE_BOARDWALK, - /* 0x0F */ TIME_TRIAL_DATA_RAINBOW_ROAD, - /* 0x10 */ NUM_TIME_TRIAL_DATA -} TIME_TRIAL_DATA_INDEX; - -/** - * @brief The different types of surface in the game. -*/ -enum SURFACE_TYPE { - /* -0x1 */ SURFACE_DEFAULT = -1, - /* 0x00 */ AIRBORNE, - /* 0x01 */ ASPHALT, // Luigi's Raceway, Toad's Turnpike, Koopa Troop beach shortcut tunnel, Mario Raceway, Royal Raceway, Rainbow Road, Block Fort, Double Deck, Skyscraper - /* 0x02 */ DIRT, // Luigi's Raceway, Moo Moo Farm, Kalimiari Desert on course, Choco Mountain, Wario Stadium, DK Jungle on course, Yoshi Valley - /* 0x03 */ SAND, // Koopa Troopa Beach light color, Royal Raceway - /* 0x04 */ STONE, // Royal Raceway castle entrance, Bowser's Castle - /* 0x05 */ SNOW, // Frappe Snowland on course, Sherber Land tunnel - /* 0x06 */ BRIDGE, // Royal Raceway castle bridges (even the wooden one), Banshee's Boardwalk, Big Donut - /* 0x07 */ SAND_OFFROAD, // Mario Raceway - /* 0x08 */ GRASS, // Luigi's Raceway, Mario Raceway, Royal Raceway, Bowser's Castle, DK Jungle, Yoshi Valley - /* 0x09 */ ICE, // Sherbert Land - /* 0x0A */ WET_SAND, // Koop Troopa Beach dark color - /* 0x0B */ SNOW_OFFROAD, // Frappe Snowland off course - /* 0x0C */ CLIFF, // Koopa Troopa Beach, Choco Mountain - /* 0x0D */ DIRT_OFFROAD, // Kalimari Desert off course - /* 0x0E */ TRAIN_TRACK, // Kalimari Desert - /* 0x0F */ CAVE, // DK Jungle cave - /* 0x10 */ ROPE_BRIDGE, // Bowser's Castle bridge 2, DK Jungle bridge - /* 0x11 */ WOOD_BRIDGE, // Frappe Snowland bridge, Bowser's Castle bridge 1,3, Yoshi Valley bridge 2 - /* 0xFC */ BOOST_RAMP_WOOD = 0xFC, // DK Jungle - /* 0xFD */ OUT_OF_BOUNDS, // DK Jungle river island - /* 0xFE */ BOOST_RAMP_ASPHALT, // Royal Raceway - /* 0xFF */ RAMP // Koopa Troopa beach -}; - // This was added as a silly idea: // In the data to use "A, B, Z, R" instead of hex numbers. typedef enum { @@ -106,6 +30,103 @@ typedef enum { R = 0x10 } GhostController; + +/*** types.h ***/ + +typedef struct { + /* 0x0 */ s16 waypointStart; + /* 0x2 */ s16 waypointEnd; + /* 0x4 */ s32 type; +} KartAIBehaviour; // size = 0x8 + +enum SpTaskState { + SPTASK_STATE_NOT_STARTED, + SPTASK_STATE_RUNNING, + SPTASK_STATE_INTERRUPTED, + SPTASK_STATE_FINISHED, + SPTASK_STATE_FINISHED_DP +}; + +struct SPTask +{ + /*0x00*/ OSTask task; + /*0x40*/ OSMesgQueue *msgqueue; + /*0x44*/ OSMesg msg; + /*0x48*/ enum SpTaskState state; +}; // size = 0x4C, align = 0x8 + +struct VblankHandler +{ + OSMesgQueue *queue; + OSMesg msg; +}; + +struct D_80150158 { + s16 unk0; + s32 unk4; + s32 unk8; + s32 unkC; +}; + +struct Controller { + s16 rawStickX; + s16 rawStickY; + u16 button; // HeldButton + u16 buttonPressed; // OnTriggered + u16 buttonDepressed; // OffTriggered + u16 stickDirection; + u16 stickPressed; // OffTriggered + u16 stickDepressed; // OnTriggered +}; + +// Camera path struct? Or something like that. For GP race won scene? +struct UnkStruct_80287500 { + Vec3f unk0; // xyz coordinates? + f32 unkC; + f32 unk10; + f32 unk14; // rotation? + s32 unk18; + s32 unk1C; + f32 unk20; + f32 unk24; + f32 unk28; + f32 unk2C; + f32 unk30; + f32 unk34; + s32 unk38; +}; + +struct UnkStruct_800DDB40 { + u32 unk0; + u32 unk4; + u32 unk8; + u32 unkC; + u32 unk10; + u32 unk14; + u32 unk18; + u32 unk1C; + u32 unk20; + u16 unk24; + u16 unk26; +}; + +struct UnkStruct_802B53C8 { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; +}; +// end math util structs + +struct UnkStruct_800DDB68 { + s32 *D_800ED600; s32 *D_800ED608; s32 *D_800ED610; s32 *D_800ED618; + s32 *D_800ED620; s32 *D_800ED628; s32 *D_800ED630; s32 *D_800ED638; +}; +/*** Types.h end ***/ + + + + typedef struct { u8 button; s8 frameDuration; @@ -118,11 +139,11 @@ typedef struct { /* 0x00 */ u16 unk30; /* 0x02 */ u16 unk32; /* 0x04 */ u16 unk34; - /* 0x06 */ u16 unk36; - /* 0x08 */ u16 unk38; + /* 0x06 */ u16 meshIndexYX; + /* 0x08 */ u16 meshIndexZY; // This may be an index to the tilemap? - /* 0x0A */ u16 unk3A; - /* 0x0C */ Vec3f unk3C; + /* 0x0A */ u16 meshIndexZX; + /* 0x0C */ Vec3f surfaceDistance; // Appears to be distance from actor to surface for zx, yx, and zy planes. /* 0x18 */ Vec3f unk48; /* 0x24 */ Vec3f unk54; /* 0x30 */ Vec3f orientationVector; @@ -164,7 +185,6 @@ typedef struct { s16 ob[3]; /* x, y, z */ s16 tc[2]; /* texture coord */ s8 ca[4]; /* color & alpha */ - } CourseVtx; /* @@ -182,53 +202,40 @@ typedef struct { //bit 4: 1 = out of bounds //bit 3: 1 = player tumbles upon contact (may fall right through) /* 0x02 */ u16 surfaceType; - /* 0x04 */ s16 vtx31; - s16 vtx32; - s16 vtx33; //X, Y, Z of poly's third vertex - s16 vtx21; - s16 vtx22; - /* 0x0A */ s16 vtx23; //X, Y, Z of poly's second vertex - /* 0x10 */ Vtx *vtxPoly1; //pointer to the 3 vertices of this poly - Vtx *vtxPoly2; - Vtx *vtxPoly3; - //unsure why this exists along with a copy of two of the vertices. - //both are involved in hit detection. - /* 0x1C */ f32 height; - //normally 0; read at 0x802AB1A4. this value is added to the height Lakitu - //drops you at. changing it seems to make the surface intangible. - /* 0x20 */ f32 gravity; - //normally 1. The height Lakitu drops you off at is divided by this value - //(before adding the value at 0x1C), although if set to zero, he just tries - //to drop you at about the height of the finish line banner. Changing it - //has various unusual effects, making the polygon intangible or - //significantly reducing the gravity above it, probably depending on its Y - //position. - /* 0x24 */ f32 rotation; //normally about -0.001. no idea what this actually is. - /* 0x28 */ f32 height2; //changes Y position of all vertices (but not graphics or - //Lakitu drop position). Normally set to (track_height * -1) + about 6. -} mk64_surface_map_ram; // size = 0x2C + + // For AABB bounding-box style collision. Box style collision is cheaper than checking each vtx. + /* 0x04 */ s16 minX; // Minimum x coordinate + s16 minY; // Minimum y coordinate + s16 minZ; // Minimum z coordinate + s16 maxX; // Maximum x coordinate + s16 maxY; // Maximum y coordinate + /* 0x0A */ s16 maxZ; // Maximum z coordinate + /* 0x10 */ Vtx *vtx1; //pointer to the 3 vertices of this poly + Vtx *vtx2; + Vtx *vtx3; + // Face normal. Should really be Vec3f normal + /* 0x1C */ f32 normalX; + /* 0x20 */ f32 normalY; + /* 0x24 */ f32 normalZ; + /* 0x28 */ f32 distance; +} CollisionTriangle; // size = 0x2C typedef struct { - /* 0x00 */ Vec3f cornerPos; - // Type of surface the corner is above - /* 0x0C */ u8 surfaceType; - // Close to being a copy of the top byte of the surface_map "flag" member + /* 0x00 */ Vec3f pos; + /* 0x0C */ u8 surfaceType; // Surface type that the tyre is touching. /* 0x0D */ u8 surfaceFlags; - // Don't know if "tile" is right the right term - // gSurfaceMap is a pointer to an array of "tile" structs. This is an index to that array - /* 0x0E */ u16 surfaceMapIndex; - // cornerPos places the corner "in the air" as it were, this member indicates the Y position of the corner's "on the ground" sibling - // On flat ground this value should be cornerY - gKartBoundingBoxTable[characterId] - /* 0x10 */ f32 cornerGroundY; + /* 0x0E */ u16 collisionMeshIndex; // Index into gCollisionMesh + // Height of tyre attached to ground. When flying it floats with the kart. + /* 0x10 */ f32 baseHeight; // Something lighting related. 1 when in a shaded region, 2 when in a tree's shadow // 3 when getting crushed by a whomp, but curiously only the front left tyre will ever have this value /* 0x14 */ s32 unk_14; -} KartBoundingBoxCorner; // size = 0x18 +} KartTyre; // size = 0x18 -#define FRONT_LEFT_TYRE 0 -#define FRONT_RIGHT_TYRE 1 -#define BACK_LEFT_TYRE 2 -#define BACK_RIGHT_TYRE 3 +#define FRONT_LEFT 0 +#define FRONT_RIGHT 1 +#define BACK_LEFT 2 +#define BACK_RIGHT 3 struct UnkPlayerInner { /* 0xDB4 */ s16 unk0; @@ -322,10 +329,10 @@ typedef struct { /* 0x0108 */ f32 unk_108; /* 0x010C */ s16 unk_10C; /* 0x010E */ char unk_10E[0x2]; - /* 0x0110 */ Collision unk_110; + /* 0x0110 */ Collision collision; /* 0x0150 */ Mat3 unk_150; /* 0x0174 */ Mat3 orientationMatrix; - /* 0x0198 */ KartBoundingBoxCorner boundingBoxCorners[4]; + /* 0x0198 */ KartTyre tyres[4]; /* 0x01F8 */ f32 unk_1F8; /* 0x01FC */ f32 unk_1FC; /* 0x0200 */ u32 unk_200; // May be s32. but less casting required if u32 diff --git a/include/config.h b/include/config.h deleted file mode 100644 index 67fa60410..000000000 --- a/include/config.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef CONFIG_H -#define CONFIG_H - -/** - * @file config.h - * A catch-all file for configuring various bugfixes and other settings in MK64 - */ - -// Screen Size Defines -#define SCREEN_WIDTH 320 -#define SCREEN_HEIGHT 240 - -#define STACKSIZE 0x2000 - -// Border Height Define for NTSC Versions -#define BORDER_HEIGHT 1 - -#endif diff --git a/include/decode.h b/include/decode.h index 0ea4f7b91..9577da7fb 100644 --- a/include/decode.h +++ b/include/decode.h @@ -1,7 +1,7 @@ #ifndef _FUNCTIONS_H_ #define _FUNCTIONS_H_ -#include "common_structs.h" +#include void mio0decode(u8* arg0, u8* arg1); diff --git a/include/defines.h b/include/defines.h index 475bee8b3..731ff769f 100644 --- a/include/defines.h +++ b/include/defines.h @@ -38,8 +38,14 @@ * D-pad DOWN = MARIO * */ -#define DEBUG_MODE 0 -#define DEBUG_MENU 1 +#if defined(GCC) || defined(DEBUG) + #define DEBUG_MODE 1 + #define DEBUG_MENU 2 +#else + #define DEBUG_MODE 0 + #define DEBUG_MENU 1 +#endif + #define HOLD_ALL_DPAD_AND_C_BUTTONS (U_JPAD | L_JPAD | R_JPAD | D_JPAD | U_CBUTTONS | L_CBUTTONS | R_CBUTTONS | D_CBUTTONS) /** @@ -70,8 +76,10 @@ #ifdef VERSION_EU #define COURSE_TIMER_ITER 0.020041665999999999 // 1 / 50 +#define COURSE_TIMER_ITER_f 0.020041665999999999f // 1 / 50 #else #define COURSE_TIMER_ITER 0.01666666 // 1 / 60 +#define COURSE_TIMER_ITER_f 0.01666666f // 1 / 60 #endif #define V_BlANK_TIMER_ITER 0.01666666 @@ -103,10 +111,17 @@ #define FOUR_PLAYERS_SELECTED 4 #define SELECTED_PLAYER_DEFINES_TOTAL 5 -#define PLAYER_ONE 0 -#define PLAYER_TWO 1 -#define PLAYER_THREE 2 -#define PLAYER_FOUR 3 +enum PlayerId { + PLAYER_NONE = -1, + PLAYER_ONE = 0, + PLAYER_TWO = 1, + PLAYER_THREE = 2, + PLAYER_FOUR = 3, + PLAYER_FIVE = 4, + PLAYER_SIX = 5, + PLAYER_SEVEN = 6, + PLAYER_EIGHT = 7 +}; #define NUM_PLAYERS 8 @@ -290,7 +305,7 @@ /** * @brief Item IDs */ -typedef enum ITEMS { +enum ITEMS { /* 0x00 */ ITEM_NONE = 0, /* 0x01 */ ITEM_BANANA, /* 0x02 */ ITEM_BANANA_BUNCH, @@ -309,7 +324,7 @@ typedef enum ITEMS { /* 0x0F */ ITEM_SUPER_MUSHROOM }; -typedef enum KART_AI_BEHAVIOURS { +enum KART_AI_BEHAVIOURS { BEHAVIOUR_NONE = 0, BEHAVIOUR_1, BEHAVIOUR_HOP, @@ -385,3 +400,16 @@ enum DIRECTION { #define COLOR_BLACK GPACK_RGB888(0, 0, 0) #endif // DEFINES_H + + +/** + * + * Collision mesh flags + * +*/ + +#define GRID_SIZE 32 + +#define FACING_Y_AXIS 0x4000 +#define FACING_X_AXIS 0x8000 +#define FACING_Z_AXIS 0x2000 diff --git a/include/libc/stddef.h b/include/libc/stddef.h index 7e72a7bb6..c31698cea 100644 --- a/include/libc/stddef.h +++ b/include/libc/stddef.h @@ -1,7 +1,7 @@ #ifndef STDDEF_H #define STDDEF_H -#include "PR/ultratypes.h" +#include #ifndef offsetof #define offsetof(st, m) ((size_t)&(((st *)0)->m)) diff --git a/include/libc/string.h b/include/libc/string.h index 183409eb5..f959a566a 100644 --- a/include/libc/string.h +++ b/include/libc/string.h @@ -1,7 +1,7 @@ #ifndef STRING_H #define STRING_H -#include "PR/ultratypes.h" +#include void *memcpy(void *dst, const void *src, size_t size); size_t strlen(const char *str); diff --git a/include/macros.h b/include/macros.h index 853b79f7e..9e15613f4 100644 --- a/include/macros.h +++ b/include/macros.h @@ -87,6 +87,6 @@ * - sizeof(dl[0]) : walk back 1 Gfx macro * - 0x07000000 : get just the offset **/ -#define GET_PACKED_END(dl) (((u8*) dl) + sizeof(dl) - sizeof(dl[0]) - 0x07000000) +#define GET_PACKED_END(dl) (((u8 *) dl) + sizeof(dl) - sizeof(dl[0]) - 0x07000000) #endif diff --git a/include/mk64.h b/include/mk64.h index 8053c9cf2..18604c9f0 100644 --- a/include/mk64.h +++ b/include/mk64.h @@ -1,10 +1,98 @@ #ifndef MK64_H #define MK64_H -// Global header for Mario Kart 64 +/** + * @file mk64.h + * Global header for mk64 + */ -#include -#include "config.h" +/*======================= + Configuration +=======================*/ + +#define SCREEN_WIDTH 320 +#define SCREEN_HEIGHT 240 + +#define STACKSIZE 0x2000 + +// Border Height Define for NTSC Versions +#define BORDER_HEIGHT 1 + +typedef enum { + /* 0x00 */ COURSE_MARIO_RACEWAY = 0, + /* 0x01 */ COURSE_CHOCO_MOUNTAIN, + /* 0x02 */ COURSE_BOWSER_CASTLE, + /* 0x03 */ COURSE_BANSHEE_BOARDWALK, + /* 0x04 */ COURSE_YOSHI_VALLEY, + /* 0x05 */ COURSE_FRAPPE_SNOWLAND, + /* 0x06 */ COURSE_KOOPA_BEACH, + /* 0x07 */ COURSE_ROYAL_RACEWAY, + /* 0x08 */ COURSE_LUIGI_RACEWAY, + /* 0x09 */ COURSE_MOO_MOO_FARM, + /* 0x0A */ COURSE_TOADS_TURNPIKE, + /* 0x0B */ COURSE_KALAMARI_DESERT, + /* 0x0C */ COURSE_SHERBET_LAND, + /* 0x0D */ COURSE_RAINBOW_ROAD, + /* 0x0E */ COURSE_WARIO_STADIUM, + /* 0x0F */ COURSE_BLOCK_FORT, + /* 0x10 */ COURSE_SKYSCRAPER, + /* 0x11 */ COURSE_DOUBLE_DECK, + /* 0x12 */ COURSE_DK_JUNGLE, + /* 0x13 */ COURSE_BIG_DONUT, + /* 0x14 */ COURSE_AWARD_CEREMONY, + /* 0x15 */ NUM_COURSES +} COURSES; + +#define COURSE_NULL 0xFF + +typedef enum { + /* 0x00 */ TIME_TRIAL_DATA_LUIGI_RACEWAY, + /* 0x01 */ TIME_TRIAL_DATA_MOO_MOO_FARM, + /* 0x02 */ TIME_TRIAL_DATA_KOOPA_BEACH, + /* 0x03 */ TIME_TRIAL_DATA_KALAMARI_DESERT, + /* 0x04 */ TIME_TRIAL_DATA_TOADS_TURNPIKE, + /* 0x05 */ TIME_TRIAL_DATA_FRAPPE_SNOWLAND, + /* 0x06 */ TIME_TRIAL_DATA_CHOCO_MOUNTAIN, + /* 0x07 */ TIME_TRIAL_DATA_MARIO_RACEWAY, + /* 0x08 */ TIME_TRIAL_DATA_WARIO_STADIUM, + /* 0x09 */ TIME_TRIAL_DATA_SHERBET_LAND, + /* 0x0A */ TIME_TRIAL_DATA_ROYAL_RACEWAY, + /* 0x0B */ TIME_TRIAL_DATA_BOWSER_CASTLE, + /* 0x0C */ TIME_TRIAL_DATA_DK_JUNGLE, + /* 0x0D */ TIME_TRIAL_DATA_YOSHI_VALLEY, + /* 0x0E */ TIME_TRIAL_DATA_BANSHEE_BOARDWALK, + /* 0x0F */ TIME_TRIAL_DATA_RAINBOW_ROAD, + /* 0x10 */ NUM_TIME_TRIAL_DATA +} TIME_TRIAL_DATA_INDEX; + +/** + * @brief The different types of surface in the game. +*/ +enum SURFACE_TYPE { + /* -0x1 */ SURFACE_DEFAULT = -1, + /* 0x00 */ AIRBORNE, + /* 0x01 */ ASPHALT, // Luigi's Raceway, Toad's Turnpike, Koopa Troop beach shortcut tunnel, Mario Raceway, Royal Raceway, Rainbow Road, Block Fort, Double Deck, Skyscraper + /* 0x02 */ DIRT, // Luigi's Raceway, Moo Moo Farm, Kalimiari Desert on course, Choco Mountain, Wario Stadium, DK Jungle on course, Yoshi Valley + /* 0x03 */ SAND, // Koopa Troopa Beach light color, Royal Raceway + /* 0x04 */ STONE, // Royal Raceway castle entrance, Bowser's Castle + /* 0x05 */ SNOW, // Frappe Snowland on course, Sherber Land tunnel + /* 0x06 */ BRIDGE, // Royal Raceway castle bridges (even the wooden one), Banshee's Boardwalk, Big Donut + /* 0x07 */ SAND_OFFROAD, // Mario Raceway + /* 0x08 */ GRASS, // Luigi's Raceway, Mario Raceway, Royal Raceway, Bowser's Castle, DK Jungle, Yoshi Valley + /* 0x09 */ ICE, // Sherbert Land + /* 0x0A */ WET_SAND, // Koop Troopa Beach dark color + /* 0x0B */ SNOW_OFFROAD, // Frappe Snowland off course + /* 0x0C */ CLIFF, // Koopa Troopa Beach, Choco Mountain + /* 0x0D */ DIRT_OFFROAD, // Kalimari Desert off course + /* 0x0E */ TRAIN_TRACK, // Kalimari Desert + /* 0x0F */ CAVE, // DK Jungle cave + /* 0x10 */ ROPE_BRIDGE, // Bowser's Castle bridge 2, DK Jungle bridge + /* 0x11 */ WOOD_BRIDGE, // Frappe Snowland bridge, Bowser's Castle bridge 1,3, Yoshi Valley bridge 2 + /* 0xFC */ BOOST_RAMP_WOOD = 0xFC, // DK Jungle + /* 0xFD */ OUT_OF_BOUNDS, // DK Jungle river island + /* 0xFE */ BOOST_RAMP_ASPHALT, // Royal Raceway + /* 0xFF */ RAMP // Koopa Troopa beach +}; #define GFX_GET_OPCODE(var) ((s32)((var) & 0xFF000000)) @@ -26,4 +114,6 @@ #define SET_HIGH_S16_OF_32(var, x) ((((s16 *)&(var))[0]) = (x)) #endif +#define MACRO_COLOR_FLAG(r, g, b, flag) (r&~0x3) | (flag & 0x3), (g&~0x3) | ((flag>>2) & 0x3), b + #endif // MK64_H diff --git a/include/objects.h b/include/objects.h index 86fc2af02..89764390b 100644 --- a/include/objects.h +++ b/include/objects.h @@ -2,7 +2,7 @@ #define OBJECTS_H #include "spline.h" -#include "common_structs.h" +#include #define OBJECT_LIST_SIZE 0x226 #define SOME_OBJECT_INDEX_LIST_SIZE 32 @@ -16,7 +16,7 @@ typedef struct /* 0x28 */ Vec3f offset; /* 0x34 */ f32 unk_034; /* 0x38 */ Vec3f velocity; // acceleration - /* 0x44 */ f32 unk_044; + /* 0x44 */ f32 surfaceHeight; /* 0x48 */ s32 unk_048; /* 0x4C */ s32 unk_04C; /* 0x50 */ s32 unk_050; @@ -79,9 +79,9 @@ typedef struct /* 0xDD */ u8 unk_0DD; /* 0xDE */ s8 unk_0DE; /* 0xDF */ u8 unk_0DF; -} Objects; // size = 0xE0 +} Object; // size = 0xE0 -extern Objects gObjectList[]; +extern Object gObjectList[]; typedef struct { diff --git a/include/save_data.h b/include/save_data.h index faa12376a..38d82c287 100644 --- a/include/save_data.h +++ b/include/save_data.h @@ -1,7 +1,7 @@ #ifndef SAVE_DATA_H #define SAVE_DATA_H -#include "common_structs.h" +#include typedef struct { // 6 little endian 3-byte records. @@ -65,4 +65,4 @@ typedef struct { extern SaveData gSaveData; -#endif \ No newline at end of file +#endif diff --git a/include/spline.h b/include/spline.h index a1dda049f..a7f4d0c3b 100644 --- a/include/spline.h +++ b/include/spline.h @@ -1,7 +1,7 @@ #ifndef SPLINE_H #define SPLINE_H -#include "common_structs.h" +#include /* These are some very good videos about splines/Bezier curves in general @@ -33,7 +33,7 @@ typedef struct { // The control point arrays have more control points in them than this number indicates. Not sure why though. s16 numControlPoints; // This has to be an array for this to work, so just make it size 1 - SplineControlPoint controlPoints[1]; + SplineControlPoint controlPoints[]; } SplineData; // All other SplineDataXX types are for use as data only. The size of the array in them matters a lot. @@ -42,60 +42,33 @@ typedef struct { // Ghosts in BansheeBoardwalk x 2 // Seagulls in KoopaTroopaBeach x 2 // Penguins in Sherbet Land x 1 -typedef struct { - s16 numControlPoints; - SplineControlPoint controlPoints[23]; -} SplineData23; +// length of 23 // Ghosts in BansheeBoardwalk x 2 // Seagulls in KoopaTroopaBeach x 1 -typedef struct { - s16 numControlPoints; - SplineControlPoint controlPoints[24]; -} SplineData24; +// length of 24 // Ghosts in BansheeBoardwalk x 1 // Seagulls in KoopaTroopaBeach x 1 // Penguins in Sherbet Land x 1 -typedef struct { - s16 numControlPoints; - SplineControlPoint controlPoints[25]; -} SplineData25; +// length of 25 // Data of this type is unreferenced or only referenced in an unused function -typedef struct { - s16 numControlPoints; - SplineControlPoint controlPoints[4]; -} SplineDataUnused4; +// lenght of 4 // Lakitu Countdown -typedef struct { - s16 numControlPoints; - SplineControlPoint controlPoints[15]; -} SplineData15; +// length of 15 // Lakitu Checkered Flag -typedef struct { - s16 numControlPoints; - SplineControlPoint controlPoints[21]; -} SplineData21; +// length of 21 -typedef struct { - s16 numControlPoints; - SplineControlPoint controlPoints[13]; -} SplineDataUnused13; +// length of 13 // Lakitu Second/Final Lap -typedef struct { - s16 numControlPoints; - SplineControlPoint controlPoints[12]; -} SplineData12; +// length of 12 // Lakitu Reverse -typedef struct { - s16 numControlPoints; - SplineControlPoint controlPoints[8]; -} SplineData8; +// length of 8 #endif diff --git a/include/types.h b/include/types.h deleted file mode 100644 index 2af75261f..000000000 --- a/include/types.h +++ /dev/null @@ -1,118 +0,0 @@ -#ifndef TYPES_H -#define TYPES_H - -#include -#include -#include "camera.h" - -typedef struct { - /* 0x0 */ s16 waypointStart; - /* 0x2 */ s16 waypointEnd; - /* 0x4 */ s32 type; -} KartAIBehaviour; // size = 0x8 - -enum SpTaskState { - SPTASK_STATE_NOT_STARTED, - SPTASK_STATE_RUNNING, - SPTASK_STATE_INTERRUPTED, - SPTASK_STATE_FINISHED, - SPTASK_STATE_FINISHED_DP -}; - -struct SPTask -{ - /*0x00*/ OSTask task; - /*0x40*/ OSMesgQueue *msgqueue; - /*0x44*/ OSMesg msg; - /*0x48*/ enum SpTaskState state; -}; // size = 0x4C, align = 0x8 - -struct VblankHandler -{ - OSMesgQueue *queue; - OSMesg msg; -}; - -struct D_80150158 { - s16 unk0; - s32 unk4; - s32 unk8; - s32 unkC; -}; - -struct Controller { - s16 rawStickX; - s16 rawStickY; - u16 button; // HeldButton - u16 buttonPressed; // OnTriggered - u16 buttonDepressed; // OffTriggered - u16 stickDirection; - u16 stickPressed; // OffTriggered - u16 stickDepressed; // OnTriggered -}; - -struct UnkStruct_800DC5EC { - /* 0x00 */ struct Controller *controllers; // gControllers ptr 800F6910 - /* 0x04 */ Camera *camera; // Player camera ptr - /* 0x08 */ Player *player; // Player ptr 800F6990 - /* 0x0C */ s32 *unkC; // unk struct? - /* 0x10 */ Vp viewport; - /* 0x20 */ s32 pad[2]; - /* 0x28 */ s16 cameraHeight; - /* 0x2A */ s16 unk; - /* 0x2C */ s16 screenWidth; - /* 0x2E */ s16 screenHeight; - /* 0x30 */ s16 screenStartX; - /* 0x32 */ s16 screenStartY; - /* 0x34 */ s16 unk3C; - /* 0x36 */ s16 playerDirection; - /* 0x38 */ s16 pathCounter; - /* 0x3A */ s16 unk42; - /* 0x3C */ s32 pad2; -}; // size = 0x40 - -// Camera path struct? Or something like that. For GP race won scene? -struct UnkStruct_80287500 { - Vec3f unk0; // xyz coordinates? - f32 unkC; - f32 unk10; - f32 unk14; // rotation? - s32 unk18; - s32 unk1C; - f32 unk20; - f32 unk24; - f32 unk28; - f32 unk2C; - f32 unk30; - f32 unk34; - s32 unk38; -}; - -struct UnkStruct_800DDB40 { - u32 unk0; - u32 unk4; - u32 unk8; - u32 unkC; - u32 unk10; - u32 unk14; - u32 unk18; - u32 unk1C; - u32 unk20; - u16 unk24; - u16 unk26; -}; - -struct UnkStruct_802B53C8 { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; -}; -// end math util structs - -struct UnkStruct_800DDB68 { - s32 *D_800ED600; s32 *D_800ED608; s32 *D_800ED610; s32 *D_800ED618; - s32 *D_800ED620; s32 *D_800ED628; s32 *D_800ED630; s32 *D_800ED638; -}; - -#endif /* TYPES_H */ diff --git a/include/vehicles.h b/include/vehicles.h index ff1fa3b35..87f0f2a39 100644 --- a/include/vehicles.h +++ b/include/vehicles.h @@ -1,7 +1,7 @@ #ifndef VEHICLES_H #define VEHICLES_H -#include "common_structs.h" +#include #define NUM_1P_PASSENGER_CARS 4 #define NUM_2P_PASSENGER_CARS 1 @@ -10,6 +10,11 @@ #define NUM_TRAINS 2 #define LOCOMOTIVE_ONLY 0 +#define NUM_CROSSINGS 2 +// This allows karts to jump the train despite the crossing being activated. +// but still stop for the train once it's close +#define FRAMES_SINCE_CROSSING_ACTIVATED 240 + // It seems like there's room for 2 Ferries, but only 1 is ever active #define NUM_ACTIVE_PADDLE_BOATS 1 #define NUM_PADDLE_BOATS 2 @@ -24,6 +29,12 @@ #define NUM_TIME_TRIAL_TANKER_TRUCKS (NUM_RACE_TANKER_TRUCKS + 1) #define NUM_TIME_TRIAL_CARS (NUM_RACE_CARS + 1) +#define TRAIN_SMOKE_RENDER_DISTANCE 2000.0f +#define TRAIN_CROSSING_AI_DISTANCE 1000.0f +#define BOAT_SMOKE_RENDER_DISTANCE 2000.0f + +#define RENDER_VEHICLE 1 + typedef struct { /* 0x00 */ s16 isActive; // Only used for Tender and Passenger Cars, unused for Locomotives /* 0x02 */ s16 compilerPadding; diff --git a/include/waypoints.h b/include/waypoints.h index 538616b9c..920d8a078 100644 --- a/include/waypoints.h +++ b/include/waypoints.h @@ -1,7 +1,7 @@ #ifndef WAYPOINTS_H #define WAYPOINTS_H -#include "common_structs.h" +#include typedef struct { /* 0x00 */ s16 posX; @@ -38,7 +38,7 @@ extern s16 *D_801645A0[]; * a given player is on, the specific value may change **/ // Shadows values from gNearestWaypointByPlayerId -extern s16 D_80162FCE; +extern s16 sSomeNearestWaypoint; // Shadows values from gPathIndexByPlayerId extern s32 D_80163448; // Shadows values from D_80164560 diff --git a/mk64.ld b/mk64.ld index a38b34832..3b56bd931 100644 --- a/mk64.ld +++ b/mk64.ld @@ -46,262 +46,276 @@ SECTIONS { BUILD_DIR/asm/entry.o(.text); BUILD_DIR/src/main.o(.text*); - BUILD_DIR/src/code_800029B0.o(.text); - BUILD_DIR/src/profiler.o(.text); - BUILD_DIR/src/crash_screen.o(.text); - BUILD_DIR/src/code_80004740.o(.text); - BUILD_DIR/src/staff_ghosts.o(.text); + BUILD_DIR/src/code_800029B0.o(.text*); + BUILD_DIR/src/profiler.o(.text*); + BUILD_DIR/src/crash_screen.o(.text*); + BUILD_DIR/src/code_80004740.o(.text*); + BUILD_DIR/src/staff_ghosts.o(.text*); BUILD_DIR/asm/unused_overflow_check.o(.text); - BUILD_DIR/src/code_80005FD0.jp.o(.text); - BUILD_DIR/src/camera.o(.text); - BUILD_DIR/src/render_player.o(.text); - BUILD_DIR/src/kart_dma.o(.text); - BUILD_DIR/src/player_controller.o(.text); - BUILD_DIR/src/spawn_players.o(.text); - BUILD_DIR/src/code_8003DC40.o(.text); + BUILD_DIR/src/code_80005FD0.jp.o(.text*); + BUILD_DIR/src/camera.o(.text*); + BUILD_DIR/src/render_player.o(.text*); + BUILD_DIR/src/kart_dma.o(.text*); + BUILD_DIR/src/player_controller.o(.text*); + BUILD_DIR/src/spawn_players.o(.text*); + BUILD_DIR/src/code_8003DC40.o(.text*); BUILD_DIR/asm/unused_mio0_decode.o(.text); BUILD_DIR/asm/mio0_decode.o(.text); BUILD_DIR/asm/tkmk00_decode.o(.text); - BUILD_DIR/src/gbiMacro.o(.text); - BUILD_DIR/src/math_util_2.o(.text); - BUILD_DIR/src/render_objects.o(.text); - BUILD_DIR/src/code_80057C60.o(.text); - BUILD_DIR/src/code_8006E9C0.o(.text); - BUILD_DIR/src/update_objects.o(.text); - BUILD_DIR/src/code_80086E70.o(.text); - BUILD_DIR/src/effects.o(.text); - BUILD_DIR/src/code_80091440.o(.text); - BUILD_DIR/src/code_80091750.jp.o(.text); - BUILD_DIR/src/code_800AF9B0.o(.text); - BUILD_DIR/src/menus.o(.text); - BUILD_DIR/src/save.o(.text); - BUILD_DIR/src/audio/synthesis.o(.text); - BUILD_DIR/src/audio/heap.o(.text); - BUILD_DIR/src/audio/load.o(.text); - BUILD_DIR/src/audio/playback.o(.text); - BUILD_DIR/src/audio/effects.o(.text); - BUILD_DIR/src/audio/seqplayer.o(.text); - BUILD_DIR/src/audio/external.o(.text); - BUILD_DIR/src/audio/port_eu.o(.text); + BUILD_DIR/src/gbiMacro.o(.text*); + BUILD_DIR/src/math_util_2.o(.text*); + BUILD_DIR/src/render_objects.o(.text*); + BUILD_DIR/src/code_80057C60.o(.text*); + BUILD_DIR/src/code_8006E9C0.o(.text*); + BUILD_DIR/src/update_objects.o(.text*); + BUILD_DIR/src/code_80086E70.o(.text*); + BUILD_DIR/src/effects.o(.text*); + BUILD_DIR/src/code_80091440.o(.text*); + BUILD_DIR/src/code_80091750.jp.o(.text*); + BUILD_DIR/src/code_800AF9B0.o(.text*); + BUILD_DIR/src/menus.o(.text*); + BUILD_DIR/src/save.o(.text*); + BUILD_DIR/src/audio/synthesis.o(.text*); + BUILD_DIR/src/audio/heap.o(.text*); + BUILD_DIR/src/audio/load.o(.text*); + BUILD_DIR/src/audio/playback.o(.text*); + BUILD_DIR/src/audio/effects.o(.text*); + BUILD_DIR/src/audio/seqplayer.o(.text*); + BUILD_DIR/src/audio/external.o(.text*); + BUILD_DIR/src/audio/port_eu.o(.text*); #if DEBUG - BUILD_DIR/src/os/osCartRomInit.o(.text); - BUILD_DIR/src/debug/crash_screen_enhancement.o(.text); - BUILD_DIR/src/debug/debug.o(.text); - BUILD_DIR/src/os/sprintf.o(.text); - BUILD_DIR/src/os/is_debug.o(.text); + BUILD_DIR/src/os/osCartRomInit.o(.text*); + BUILD_DIR/src/debug/crash_screen_enhancement.o(.text*); + BUILD_DIR/src/debug/debug.o(.text*); + BUILD_DIR/src/os/sprintf.o(.text*); + BUILD_DIR/src/os/is_debug.o(.text*); #endif BUILD_DIR/src/os/osCreateThread.o(.text); #ifdef VERSION_EU . += 0x40; #endif - BUILD_DIR/src/os/osInitialize.o(.text); - BUILD_DIR/src/os/osStartThread.o(.text); - BUILD_DIR/src/os/osCreateViManager.o(.text); + BUILD_DIR/src/os/osInitialize.o(.text*); + BUILD_DIR/src/os/osStartThread.o(.text*); + BUILD_DIR/src/os/osCreateViManager.o(.text*); BUILD_DIR/asm/os/parameters.o(.text); - BUILD_DIR/src/os/osViSetMode.o(.text); - BUILD_DIR/src/os/osViBlack.o(.text); - BUILD_DIR/src/os/osViSetSpecialFeatures.o(.text); - BUILD_DIR/src/os/osCreatePiManager.o(.text); - BUILD_DIR/src/os/osSetThreadPri.o(.text); - BUILD_DIR/src/os/osCreateMesgQueue.o(.text); - BUILD_DIR/src/os/osViSetEvent.o(.text); - BUILD_DIR/src/os/osSetEventMesg.o(.text); - BUILD_DIR/src/os/osSpTaskLoadGo.o(.text); - BUILD_DIR/src/os/osContInit.o(.text); - BUILD_DIR/src/os/osContStartReadData.o(.text); - BUILD_DIR/src/os/osRecvMesg.o(.text); + BUILD_DIR/src/os/osViSetMode.o(.text*); + BUILD_DIR/src/os/osViBlack.o(.text*); + BUILD_DIR/src/os/osViSetSpecialFeatures.o(.text*); + BUILD_DIR/src/os/osCreatePiManager.o(.text*); + BUILD_DIR/src/os/osSetThreadPri.o(.text*); + BUILD_DIR/src/os/osCreateMesgQueue.o(.text*); + BUILD_DIR/src/os/osViSetEvent.o(.text*); + BUILD_DIR/src/os/osSetEventMesg.o(.text*); + BUILD_DIR/src/os/osSpTaskLoadGo.o(.text*); + BUILD_DIR/src/os/osContInit.o(.text*); + BUILD_DIR/src/os/osContStartReadData.o(.text*); + BUILD_DIR/src/os/osRecvMesg.o(.text*); BUILD_DIR/asm/os/osWritebackDCacheAll.o(.text); - BUILD_DIR/src/os/osSendMesg.o(.text); - BUILD_DIR/src/os/osViSwapBuffer.o(.text); + BUILD_DIR/src/os/osSendMesg.o(.text*); + BUILD_DIR/src/os/osViSwapBuffer.o(.text*); BUILD_DIR/asm/os/bzero.o(.text); BUILD_DIR/asm/os/osInvalICache.o(.text); BUILD_DIR/asm/os/osInvalDCache.o(.text); - BUILD_DIR/src/os/osPiStartDma.o(.text); - BUILD_DIR/src/os/osSpTaskYield.o(.text); - BUILD_DIR/src/os/osSpTaskYielded.o(.text); - BUILD_DIR/src/os/osGetTime.o(.text); - BUILD_DIR/src/os/math/llmuldiv.o(.text); - BUILD_DIR/src/os/__osGetCurrFaultedThread.o(.text); + BUILD_DIR/src/os/osPiStartDma.o(.text*); + BUILD_DIR/src/os/osSpTaskYield.o(.text*); + BUILD_DIR/src/os/osSpTaskYielded.o(.text*); + BUILD_DIR/src/os/osGetTime.o(.text*); + BUILD_DIR/src/os/math/llmuldiv.o(.text*); + #if GCC + BUILD_DIR/asm/os/llmuldiv_gcc.o(.text); + #endif + BUILD_DIR/src/os/__osGetCurrFaultedThread.o(.text*); BUILD_DIR/asm/os/sqrtf.o(.text); - BUILD_DIR/src/os/guOrthoF.o(.text); - BUILD_DIR/src/os/osSetTime.o(.text); - BUILD_DIR/src/os/osEepromProbe.o(.text); - BUILD_DIR/src/os/osPfsIsPlug.o(.text); - BUILD_DIR/src/os/osPfsInit.o(.text); - BUILD_DIR/src/os/osPfsNumFiles.o(.text); - BUILD_DIR/src/os/osPfsFileState.o(.text); - BUILD_DIR/src/os/osPfsFreeBlocks.o(.text); - BUILD_DIR/src/os/guRotateF.o(.text); - BUILD_DIR/src/os/guScaleF.o(.text); - BUILD_DIR/src/os/guPerspectiveF.o(.text); - BUILD_DIR/src/os/guLookAtF.o(.text); - BUILD_DIR/src/os/guTranslateF.o(.text); - BUILD_DIR/src/os/osSyncPrintf.o(.text); - BUILD_DIR/src/os/guMtxCatL.o(.text); - BUILD_DIR/src/os/osPfsSearchFile.o(.text); - BUILD_DIR/src/os/osPfsDeleteFile.o(.text); - BUILD_DIR/src/os/osEepromLongWrite.o(.text); - BUILD_DIR/src/os/osEepromLongRead.o(.text); - BUILD_DIR/src/os/osPfsReadWriteFile.o(.text); - BUILD_DIR/src/os/osPfsAllocateFile.o(.text); - BUILD_DIR/src/os/osAiSetFrequency.o(.text); - BUILD_DIR/src/os/osAiGetLength.o(.text); - BUILD_DIR/src/os/osAiSetNextBuffer.o(.text); + BUILD_DIR/src/os/guOrthoF.o(.text*); + BUILD_DIR/src/os/osSetTime.o(.text*); + BUILD_DIR/src/os/osEepromProbe.o(.text*); + BUILD_DIR/src/os/osPfsIsPlug.o(.text*); + BUILD_DIR/src/os/osPfsInit.o(.text*); + BUILD_DIR/src/os/osPfsNumFiles.o(.text*); + BUILD_DIR/src/os/osPfsFileState.o(.text*); + BUILD_DIR/src/os/osPfsFreeBlocks.o(.text*); + BUILD_DIR/src/os/guRotateF.o(.text*); + BUILD_DIR/src/os/guScaleF.o(.text*); + BUILD_DIR/src/os/guPerspectiveF.o(.text*); + BUILD_DIR/src/os/guLookAtF.o(.text*); + BUILD_DIR/src/os/guTranslateF.o(.text*); + BUILD_DIR/src/os/osSyncPrintf.o(.text*); + BUILD_DIR/src/os/guMtxCatL.o(.text*); + BUILD_DIR/src/os/osPfsSearchFile.o(.text*); + BUILD_DIR/src/os/osPfsDeleteFile.o(.text*); + BUILD_DIR/src/os/osEepromLongWrite.o(.text*); + BUILD_DIR/src/os/osEepromLongRead.o(.text*); + BUILD_DIR/src/os/osPfsReadWriteFile.o(.text*); + BUILD_DIR/src/os/osPfsAllocateFile.o(.text*); + BUILD_DIR/src/os/osAiSetFrequency.o(.text*); + BUILD_DIR/src/os/osAiGetLength.o(.text*); + BUILD_DIR/src/os/osAiSetNextBuffer.o(.text*); BUILD_DIR/asm/os/osGetCount.o(.text); BUILD_DIR/asm/os/__osException.o(.text); BUILD_DIR/asm/os/__osDisableInt.o(.text); BUILD_DIR/asm/os/__osRestoreInt.o(.text); - BUILD_DIR/src/os/__osDequeueThread.o(.text); + BUILD_DIR/src/os/__osDequeueThread.o(.text*); BUILD_DIR/asm/os/__osSetSR.o(.text); BUILD_DIR/asm/os/__osGetSR.o(.text); BUILD_DIR/asm/os/__osSetFpcCsr.o(.text); - BUILD_DIR/src/os/__osSiRawReadIo.o(.text); - BUILD_DIR/src/os/__osSiRawWriteIo.o(.text); + BUILD_DIR/src/os/__osSiRawReadIo.o(.text*); + BUILD_DIR/src/os/__osSiRawWriteIo.o(.text*); BUILD_DIR/asm/os/osWritebackDCache.o(.text); BUILD_DIR/asm/os/osMapTLBRdb.o(.text); - BUILD_DIR/src/os/osPiRawReadIo.o(.text); - BUILD_DIR/src/os/__osSetHWIntrRoutine.o(.text); - BUILD_DIR/src/os/__osLeoInterrupt.o(.text); - BUILD_DIR/src/os/osTimer.o(.text); - BUILD_DIR/src/os/osGetThreadPri.o(.text); - BUILD_DIR/src/os/__osViInit.o(.text); - BUILD_DIR/src/os/__osViGetCurrentContext.o(.text); - BUILD_DIR/src/os/__osViSwapContext.o(.text); - BUILD_DIR/src/os/__osPiCreateAccessQueue.o(.text); - BUILD_DIR/src/os/osPiRawStartDma.o(.text); - BUILD_DIR/src/os/osEPiRawStartDma.o(.text); - BUILD_DIR/src/os/__osDevMgrMain.o(.text); + BUILD_DIR/src/os/osPiRawReadIo.o(.text*); + BUILD_DIR/src/os/__osSetHWIntrRoutine.o(.text*); + BUILD_DIR/src/os/__osLeoInterrupt.o(.text*); + BUILD_DIR/src/os/osTimer.o(.text*); + BUILD_DIR/src/os/osGetThreadPri.o(.text*); + BUILD_DIR/src/os/__osViInit.o(.text*); + BUILD_DIR/src/os/__osViGetCurrentContext.o(.text*); + BUILD_DIR/src/os/__osViSwapContext.o(.text*); + BUILD_DIR/src/os/__osPiCreateAccessQueue.o(.text*); + BUILD_DIR/src/os/osPiRawStartDma.o(.text*); + BUILD_DIR/src/os/osEPiRawStartDma.o(.text*); + BUILD_DIR/src/os/__osDevMgrMain.o(.text*); BUILD_DIR/asm/os/bcopy.o(.text); - BUILD_DIR/src/os/osVirtualToPhysical.o(.text); - BUILD_DIR/src/os/__osSpSetStatus.o(.text); - BUILD_DIR/src/os/__osSpSetPc.o(.text); - BUILD_DIR/src/os/__osSpRawStartDma.o(.text); - BUILD_DIR/src/os/__osSpDeviceBusy.o(.text); - BUILD_DIR/src/os/osSetTimer.o(.text); - BUILD_DIR/src/os/__osSiRawStartDma.o(.text); - BUILD_DIR/src/os/__osSiCreateAccessQueue.o(.text); - BUILD_DIR/src/os/osJamMesg.o(.text); - BUILD_DIR/src/os/osPiGetCmdQueue.o(.text); - BUILD_DIR/src/os/__osSpGetStatus.o(.text); - BUILD_DIR/src/os/guMtxF2L.o(.text); - BUILD_DIR/src/os/osEepromWrite.o(.text); - BUILD_DIR/src/os/contpfs.o(.text); - BUILD_DIR/src/os/osPfsChecker.o(.text); - BUILD_DIR/src/os/contramread.o(.text); - BUILD_DIR/src/os/guNormalize.o(.text); - BUILD_DIR/src/os/math/sinf.o(.text); - BUILD_DIR/src/os/math/cosf.o(.text); - BUILD_DIR/src/os/_Printf.o(.text); - BUILD_DIR/src/os/guMtxCatF.o(.text); - BUILD_DIR/src/os/contramwrite.o(.text); - BUILD_DIR/src/os/osEepromRead.o(.text); - BUILD_DIR/src/os/__osAiDeviceBusy.o(.text); + BUILD_DIR/src/os/osVirtualToPhysical.o(.text*); + BUILD_DIR/src/os/__osSpSetStatus.o(.text*); + BUILD_DIR/src/os/__osSpSetPc.o(.text*); + BUILD_DIR/src/os/__osSpRawStartDma.o(.text*); + BUILD_DIR/src/os/__osSpDeviceBusy.o(.text*); + BUILD_DIR/src/os/osSetTimer.o(.text*); + BUILD_DIR/src/os/__osSiRawStartDma.o(.text*); + BUILD_DIR/src/os/__osSiCreateAccessQueue.o(.text*); + BUILD_DIR/src/os/osJamMesg.o(.text*); + BUILD_DIR/src/os/osPiGetCmdQueue.o(.text*); + BUILD_DIR/src/os/__osSpGetStatus.o(.text*); + BUILD_DIR/src/os/guMtxF2L.o(.text*); + BUILD_DIR/src/os/osEepromWrite.o(.text*); + BUILD_DIR/src/os/contpfs.o(.text*); + BUILD_DIR/src/os/osPfsChecker.o(.text*); + BUILD_DIR/src/os/contramread.o(.text*); + BUILD_DIR/src/os/guNormalize.o(.text*); + BUILD_DIR/src/os/math/sinf.o(.text*); + BUILD_DIR/src/os/math/cosf.o(.text*); + BUILD_DIR/src/os/_Printf.o(.text*); + BUILD_DIR/src/os/guMtxCatF.o(.text*); + BUILD_DIR/src/os/contramwrite.o(.text*); + BUILD_DIR/src/os/osEepromRead.o(.text*); + BUILD_DIR/src/os/__osAiDeviceBusy.o(.text*); BUILD_DIR/asm/os/osSetIntMask.o(.text); - BUILD_DIR/src/os/osDestroyThread.o(.text); - BUILD_DIR/src/os/__osSiDeviceBusy.o(.text); - BUILD_DIR/src/os/osLeoDiskInit.o(.text); + BUILD_DIR/src/os/osDestroyThread.o(.text*); + BUILD_DIR/src/os/__osSiDeviceBusy.o(.text*); + BUILD_DIR/src/os/osLeoDiskInit.o(.text*); BUILD_DIR/asm/os/__osSetCompare.o(.text); - BUILD_DIR/src/os/__osResetGlobalIntMask.o(.text); - BUILD_DIR/src/os/__osEPiRawWriteIo.o(.text); - BUILD_DIR/src/os/osYieldThread.o(.text); + BUILD_DIR/src/os/__osResetGlobalIntMask.o(.text*); + BUILD_DIR/src/os/__osEPiRawWriteIo.o(.text*); + BUILD_DIR/src/os/osYieldThread.o(.text*); BUILD_DIR/asm/os/__osProbeTLB.o(.text); - BUILD_DIR/src/os/crc.o(.text); - BUILD_DIR/src/os/string.o(.text); - BUILD_DIR/src/os/_Litob.o(.text); - BUILD_DIR/src/os/_Ldtob.o(.text); - BUILD_DIR/src/os/ldiv.o(.text); + BUILD_DIR/src/os/crc.o(.text*); + BUILD_DIR/src/os/string.o(.text*); + BUILD_DIR/src/os/_Litob.o(.text*); + BUILD_DIR/src/os/_Ldtob.o(.text*); + BUILD_DIR/src/os/ldiv.o(.text*); BUILD_DIR/data/rsp.o(.text); BUILD_DIR/src/main.o(.data*); - BUILD_DIR/src/code_800029B0.o(.data); - BUILD_DIR/src/profiler.o(.data); - BUILD_DIR/src/crash_screen.o(.data); - BUILD_DIR/src/staff_ghosts.o(.data); - BUILD_DIR/src/data/path_spawn_metadata.o(.data); - BUILD_DIR/src/camera.o(.data); - BUILD_DIR/src/render_player.o(.data); - BUILD_DIR/src/kart_dma.o(.data); - BUILD_DIR/src/data/kart_attributes.o(.data); - BUILD_DIR/src/player_controller.o(.data); - BUILD_DIR/src/spawn_players.o(.data); - BUILD_DIR/src/update_objects.o(.data); - BUILD_DIR/assets/code/data_800E45C0/data_800E45C0.o(.data); - BUILD_DIR/src/code_80057C60.o(.data); - BUILD_DIR/src/data/some_data.o(.data); - BUILD_DIR/src/effects.o(.data); - BUILD_DIR/src/code_80091440.o(.data); - BUILD_DIR/src/code_80091750.jp.o(.data); - BUILD_DIR/src/code_800AF9B0.o(.data); - BUILD_DIR/src/menus.o(.data); - BUILD_DIR/src/save.o(.data); - BUILD_DIR/assets/code/data_800E8700/data_800E8700.o(.data); - BUILD_DIR/src/audio/synthesis.o(.data); - BUILD_DIR/src/audio/heap.o(.data); - BUILD_DIR/src/audio/load.o(.data); - BUILD_DIR/src/audio/playback.o(.data); - BUILD_DIR/src/audio/effects.o(.data); + BUILD_DIR/src/code_800029B0.o(.data*); + BUILD_DIR/src/profiler.o(.data*); + BUILD_DIR/src/crash_screen.o(.data*); + BUILD_DIR/src/staff_ghosts.o(.data*); + BUILD_DIR/src/data/path_spawn_metadata.o(.data*); + BUILD_DIR/src/camera.o(.data*); + BUILD_DIR/src/render_player.o(.data*); + BUILD_DIR/src/kart_dma.o(.data*); + BUILD_DIR/src/data/kart_attributes.o(.data*); + BUILD_DIR/src/player_controller.o(.data*); + BUILD_DIR/src/spawn_players.o(.data*); + BUILD_DIR/src/update_objects.o(.data*); + BUILD_DIR/assets/code/data_800E45C0/data_800E45C0.o(.data*); + BUILD_DIR/src/code_80057C60.o(.data*); + BUILD_DIR/src/data/some_data.o(.data*); + BUILD_DIR/src/effects.o(.data*); + BUILD_DIR/src/code_80091440.o(.data*); + BUILD_DIR/src/code_80091750.jp.o(.data*); + BUILD_DIR/src/code_800AF9B0.o(.data*); + BUILD_DIR/src/menus.o(.data*); + BUILD_DIR/src/save.o(.data*); + BUILD_DIR/assets/code/data_800E8700/data_800E8700.o(.data*); + BUILD_DIR/src/audio/synthesis.o(.data*); + BUILD_DIR/src/audio/heap.o(.data*); + BUILD_DIR/src/audio/load.o(.data*); + BUILD_DIR/src/audio/playback.o(.data*); + BUILD_DIR/src/audio/effects.o(.data*); #if DEBUG - BUILD_DIR/src/debug/crash_screen_enhancement.o(.data); - BUILD_DIR/src/debug/debug.o(.data); - BUILD_DIR/src/os/sprintf.o(.data); + BUILD_DIR/src/debug/crash_screen_enhancement.o(.data*); + BUILD_DIR/src/debug/debug.o(.data*); + BUILD_DIR/src/os/sprintf.o(.data*); #endif - BUILD_DIR/src/audio/seqplayer.o(.data); - BUILD_DIR/src/audio/external.o(.data); - BUILD_DIR/src/audio/port_eu.o(.data); - BUILD_DIR/src/audio/audio_session_presets.o(.data); + BUILD_DIR/src/audio/seqplayer.o(.data*); + BUILD_DIR/src/audio/external.o(.data*); + BUILD_DIR/src/audio/port_eu.o(.data*); + BUILD_DIR/src/audio/audio_session_presets.o(.data*); BUILD_DIR/src/os/osInitialize.o(.data*); - BUILD_DIR/src/os/osCreateViManager.o(.data); - BUILD_DIR/src/os/osViTable.o(.data); - BUILD_DIR/src/os/osCreatePiManager.o(.data); - BUILD_DIR/src/os/osContInit.o(.data); - BUILD_DIR/src/os/osAiSetNextBuffer.o(.data); - BUILD_DIR/src/os/__osSetHWIntrRoutine.o(.data); - BUILD_DIR/src/os/__osDequeueThread.o(.data); - BUILD_DIR/src/os/osTimer.o(.data); - BUILD_DIR/src/os/__osViInit.o(.data); - BUILD_DIR/src/os/__osPiCreateAccessQueue.o(.data); - BUILD_DIR/src/os/__osSiCreateAccessQueue.o(.data); - BUILD_DIR/src/os/_Printf.o(.data); - BUILD_DIR/src/os/osViData.o(.data); - BUILD_DIR/src/os/_Litob.o(.data); + BUILD_DIR/src/os/osCreateViManager.o(.data*); + BUILD_DIR/src/os/osViTable.o(.data*); + BUILD_DIR/src/os/osCreatePiManager.o(.data*); + BUILD_DIR/src/os/osContInit.o(.data*); + BUILD_DIR/src/os/osAiSetNextBuffer.o(.data*); + BUILD_DIR/src/os/__osSetHWIntrRoutine.o(.data*); + BUILD_DIR/src/os/__osDequeueThread.o(.data*); + BUILD_DIR/src/os/osTimer.o(.data*); + BUILD_DIR/src/os/__osViInit.o(.data*); + BUILD_DIR/src/os/__osPiCreateAccessQueue.o(.data*); + BUILD_DIR/src/os/__osSiCreateAccessQueue.o(.data*); + BUILD_DIR/src/os/_Printf.o(.data*); + BUILD_DIR/src/os/osViData.o(.data*); + BUILD_DIR/src/os/_Litob.o(.data*); BUILD_DIR/src/main.o(.rodata*); - BUILD_DIR/src/code_800029B0.o(.rodata); - BUILD_DIR/src/code_80005FD0.jp.o(.rodata); - BUILD_DIR/src/camera.o(.rodata); - BUILD_DIR/src/render_player.o(.rodata); - BUILD_DIR/src/player_controller.o(.rodata); - BUILD_DIR/src/spawn_players.o(.rodata); - BUILD_DIR/src/code_8003DC40.o(.rodata); - BUILD_DIR/src/render_objects.o(.rodata); - BUILD_DIR/src/code_80057C60.o(.rodata); - BUILD_DIR/src/code_8006E9C0.o(.rodata); - BUILD_DIR/src/update_objects.o(.rodata); - BUILD_DIR/src/code_80086E70.o(.rodata); - BUILD_DIR/src/effects.o(.rodata); - BUILD_DIR/src/code_80091750.jp.o(.rodata); - BUILD_DIR/src/code_800AF9B0.o(.rodata); - BUILD_DIR/src/menus.o(.rodata); - BUILD_DIR/src/save.o(.rodata); - BUILD_DIR/src/audio/heap.o(.rodata); - BUILD_DIR/src/audio/load.o(.rodata); - BUILD_DIR/src/audio/playback.o(.rodata); - BUILD_DIR/src/audio/effects.o(.rodata); - BUILD_DIR/src/audio/seqplayer.o(.rodata); - BUILD_DIR/src/audio/external.o(.rodata); - BUILD_DIR/src/audio/port_eu.o(.rodata); + BUILD_DIR/src/code_80004740.o(.rodata*); + BUILD_DIR/src/code_800029B0.o(.rodata*); + BUILD_DIR/src/code_80005FD0.jp.o(.rodata*); + BUILD_DIR/src/camera.o(.rodata*); + BUILD_DIR/src/render_player.o(.rodata*); + BUILD_DIR/src/player_controller.o(.rodata*); + BUILD_DIR/src/spawn_players.o(.rodata*); + BUILD_DIR/src/code_8003DC40.o(.rodata*); + BUILD_DIR/src/gbiMacro.o(.rodata*); + BUILD_DIR/src/math_util_2.o(.rodata*); + BUILD_DIR/src/render_objects.o(.rodata*); + BUILD_DIR/src/code_80057C60.o(.rodata*); + BUILD_DIR/src/code_8006E9C0.o(.rodata*); + BUILD_DIR/src/update_objects.o(.rodata*); + BUILD_DIR/src/code_80086E70.o(.rodata*); + BUILD_DIR/src/effects.o(.rodata*); + BUILD_DIR/src/code_80091440.o(.rodata*); + BUILD_DIR/src/code_80091750.jp.o(.rodata*); + BUILD_DIR/src/code_800AF9B0.o(.rodata*); + BUILD_DIR/src/menus.o(.rodata*); + BUILD_DIR/src/save.o(.rodata*); + BUILD_DIR/src/audio/heap.o(.rodata*); + BUILD_DIR/src/audio/load.o(.rodata*); + BUILD_DIR/src/audio/playback.o(.rodata*); + BUILD_DIR/src/audio/effects.o(.rodata*); + BUILD_DIR/src/audio/seqplayer.o(.rodata*); + BUILD_DIR/src/audio/external.o(.rodata*); + BUILD_DIR/src/audio/port_eu.o(.rodata*); #if DEBUG - BUILD_DIR/src/debug/crash_screen_enhancement.o(.rodata); - BUILD_DIR/src/debug/debug.o(.rodata); - BUILD_DIR/src/os/sprintf.o(.rodata); + BUILD_DIR/src/debug/crash_screen_enhancement.o(.rodata*); + BUILD_DIR/src/debug/debug.o(.rodata*); + BUILD_DIR/src/os/sprintf.o(.rodata*); #endif - BUILD_DIR/src/os/guRotateF.o(.rodata); - BUILD_DIR/src/os/guPerspectiveF.o(.rodata); - BUILD_DIR/asm/os/__osException.o(.rodata); - BUILD_DIR/src/os/__osDevMgrMain.o(.rodata); - BUILD_DIR/src/os/math/sinf.o(.rodata); - BUILD_DIR/src/os/math/cosf.o(.rodata); - BUILD_DIR/src/os/_Printf.o(.rodata); + BUILD_DIR/src/os/guOrthoF.o(.rodata*); + BUILD_DIR/src/os/guRotateF.o(.rodata*); + BUILD_DIR/src/os/guScaleF.o(.rodata*); + BUILD_DIR/src/os/guPerspectiveF.o(.rodata*); + BUILD_DIR/src/os/guLookAtF.o(.rodata*); + BUILD_DIR/src/os/osAiSetFrequency.o(.rodata*); + BUILD_DIR/asm/os/__osException.o(.rodata*); + BUILD_DIR/src/os/__osViSwapContext.o(.rodata*); + BUILD_DIR/src/os/__osDevMgrMain.o(.rodata*); + BUILD_DIR/src/os/guMtxF2L.o(.rodata*); + BUILD_DIR/src/os/guNormalize.o(.rodata*); + BUILD_DIR/src/os/math/sinf.o(.rodata*); + BUILD_DIR/src/os/math/cosf.o(.rodata*); + BUILD_DIR/src/os/_Printf.o(.rodata*); BUILD_DIR/asm/os/osSetIntMask.o(.rodata); - BUILD_DIR/src/os/_Ldtob.o(.rodata); + BUILD_DIR/src/os/_Ldtob.o(.rodata*); BUILD_DIR/data/rsp.o(.data); BUILD_DIR/src/audio/data.o(.data); } @@ -309,46 +323,46 @@ SECTIONS BEGIN_NOLOAD(main) { BUILD_DIR/src/main.o(.bss*); - BUILD_DIR/src/code_800029B0.o(.bss); - BUILD_DIR/src/profiler.o(.bss); - BUILD_DIR/src/crash_screen.o(.bss); - BUILD_DIR/src/code_80004740.o(.bss); - BUILD_DIR/src/staff_ghosts.o(.bss); - BUILD_DIR/src/code_80005FD0.jp.o(.bss); - BUILD_DIR/src/camera.o(.bss); - BUILD_DIR/src/render_player.o(.bss); - BUILD_DIR/src/spawn_players.o(.bss); - BUILD_DIR/src/code_80057C60.o(.bss); - BUILD_DIR/src/code_80057C60_var.o(.bss); - BUILD_DIR/src/effects.o(.bss); - BUILD_DIR/src/code_80091750.jp.o(.bss); - BUILD_DIR/src/code_800AF9B0.o(.bss); - BUILD_DIR/src/menus.o(.bss); + BUILD_DIR/src/code_800029B0.o(.bss*); + BUILD_DIR/src/profiler.o(.bss*); + BUILD_DIR/src/crash_screen.o(.bss*); + BUILD_DIR/src/code_80004740.o(.bss*); + BUILD_DIR/src/staff_ghosts.o(.bss*); + BUILD_DIR/src/code_80005FD0.jp.o(.bss*); + BUILD_DIR/src/camera.o(.bss*); + BUILD_DIR/src/render_player.o(.bss*); + BUILD_DIR/src/spawn_players.o(.bss*); + BUILD_DIR/src/code_80057C60.o(.bss*); + BUILD_DIR/src/code_80057C60_var.o(.bss*); + BUILD_DIR/src/effects.o(.bss*); + BUILD_DIR/src/code_80091750.jp.o(.bss*); + BUILD_DIR/src/code_800AF9B0.o(.bss*); + BUILD_DIR/src/menus.o(.bss*); #if DEBUG - BUILD_DIR/src/os/osCartRomInit.o(.bss); - BUILD_DIR/src/debug/crash_screen_enhancement.o(.bss); - BUILD_DIR/src/debug/debug.o(.bss); - BUILD_DIR/src/os/is_debug.o(.bss); - BUILD_DIR/src/os/sprintf.o(.bss); + BUILD_DIR/src/os/osCartRomInit.o(.bss*); + BUILD_DIR/src/debug/crash_screen_enhancement.o(.bss*); + BUILD_DIR/src/debug/debug.o(.bss*); + BUILD_DIR/src/os/is_debug.o(.bss*); + BUILD_DIR/src/os/sprintf.o(.bss*); #endif - BUILD_DIR/src/audio/external.o(.bss); - BUILD_DIR/src/audio/port_eu.o(.bss); - BUILD_DIR/src/os/osInitialize.o(.bss); - BUILD_DIR/src/os/osCreateViManager.o(.bss); - BUILD_DIR/src/os/osCreatePiManager.o(.bss); - BUILD_DIR/src/os/osSetEventMesg.o(.bss); - BUILD_DIR/src/os/osSpTaskLoadGo.o(.bss); - BUILD_DIR/src/os/osContStartReadData.o(.bss); - BUILD_DIR/src/os/osContInit.o(.bss); - BUILD_DIR/src/os/osPfsIsPlug.o(.bss); - BUILD_DIR/src/os/guRotateF.o(.bss); - BUILD_DIR/src/os/leointerrupt.o(.bss); - BUILD_DIR/src/os/osTimer.o(.bss); - BUILD_DIR/src/os/__osPiCreateAccessQueue.o(.bss); - BUILD_DIR/src/os/__osSiCreateAccessQueue.o(.bss); - BUILD_DIR/src/os/osEepromWrite.o(.bss); + BUILD_DIR/src/audio/external.o(.bss*); + BUILD_DIR/src/audio/port_eu.o(.bss*); + BUILD_DIR/src/os/osInitialize.o(.bss*); + BUILD_DIR/src/os/osCreateViManager.o(.bss*); + BUILD_DIR/src/os/osCreatePiManager.o(.bss*); + BUILD_DIR/src/os/osSetEventMesg.o(.bss*); + BUILD_DIR/src/os/osSpTaskLoadGo.o(.bss*); + BUILD_DIR/src/os/osContStartReadData.o(.bss*); + BUILD_DIR/src/os/osContInit.o(.bss*); + BUILD_DIR/src/os/osPfsIsPlug.o(.bss*); + BUILD_DIR/src/os/guRotateF.o(.bss*); + BUILD_DIR/src/os/leointerrupt.o(.bss*); + BUILD_DIR/src/os/osTimer.o(.bss*); + BUILD_DIR/src/os/__osPiCreateAccessQueue.o(.bss*); + BUILD_DIR/src/os/__osSiCreateAccessQueue.o(.bss*); + BUILD_DIR/src/os/osEepromWrite.o(.bss*); BUILD_DIR/asm/os/__osException.o(.bss); - BUILD_DIR/src/os/osLeoDiskInit.o(.bss); + BUILD_DIR/src/os/osLeoDiskInit.o(.bss*); . = ALIGN(0x10); } END_NOLOAD(main) @@ -356,7 +370,7 @@ SECTIONS /* Checks that segments are not overlapping into the memory pool but is not strictly necessary */ BEGIN_NOLOAD(memoryPool) { - BUILD_DIR/src/buffers/memory_pool.o(.bss); + BUILD_DIR/src/buffers/memory_pool.o(.bss*); . = ALIGN(0x10); } END_NOLOAD(memoryPool) @@ -367,26 +381,26 @@ SECTIONS BUILD_DIR/src/racing/race_logic.o(.text*); BUILD_DIR/src/racing/render_courses.o(.text*); BUILD_DIR/src/racing/actors.o(.text*); - BUILD_DIR/src/racing/skybox_and_splitscreen.o(.text); + BUILD_DIR/src/racing/skybox_and_splitscreen.o(.text*); BUILD_DIR/src/racing/memory.o(.text*); BUILD_DIR/src/racing/collision.o(.text*); - BUILD_DIR/src/racing/actors_extended.o(.text); + BUILD_DIR/src/racing/actors_extended.o(.text*); BUILD_DIR/src/racing/math_util.o(.text*); BUILD_DIR/src/racing/race_logic.o(.data*); BUILD_DIR/src/racing/render_courses.o(.data*); BUILD_DIR/src/racing/actors.o(.data*); - BUILD_DIR/src/racing/skybox_and_splitscreen.o(.data); + BUILD_DIR/src/racing/skybox_and_splitscreen.o(.data*); BUILD_DIR/src/racing/memory.o(.data*); - BUILD_DIR/courses/courseTable.o(.data); - BUILD_DIR/src/racing/actors_extended.o(.data); + BUILD_DIR/courses/courseTable.o(.data*); + BUILD_DIR/src/racing/actors_extended.o(.data*); BUILD_DIR/src/racing/math_util.o(.data*); BUILD_DIR/src/racing/race_logic.o(.rodata*); BUILD_DIR/src/racing/render_courses.o(.rodata*); BUILD_DIR/src/racing/actors.o(.rodata*); - BUILD_DIR/src/racing/skybox_and_splitscreen.o(.rodata); + BUILD_DIR/src/racing/skybox_and_splitscreen.o(.rodata*); BUILD_DIR/src/racing/memory.o(.rodata*); BUILD_DIR/src/racing/collision.o(.rodata*); - BUILD_DIR/src/racing/actors_extended.o(.rodata); + BUILD_DIR/src/racing/actors_extended.o(.rodata*); BUILD_DIR/src/racing/math_util.o(.rodata*); } END_SEG(racing) @@ -410,37 +424,40 @@ SECTIONS BUILD_DIR/src/audio/heap.o(.bss*); BUILD_DIR/src/audio/load.o(.bss*); BUILD_DIR/src/audio/data.o(.bss*); - . = ALIGN(0x10); + . = ALIGN(0x8); } END_NOLOAD(buffers) - /* 0x80280000 123640-12AAE0 [74A0] */ BEGIN_SEG(ending, LINKER_ENDING) { - BUILD_DIR/src/ending/code_80280000.o(.text); - BUILD_DIR/src/ending/podium_ceremony_actors.o(.text); - BUILD_DIR/src/ending/camera_junk.o(.text); - BUILD_DIR/src/ending/code_80281780.o(.text); - BUILD_DIR/src/ending/code_80281C40.o(.text); - BUILD_DIR/src/ending/ceremony_and_credits.o(.text); - BUILD_DIR/src/ending/podium_ceremony_actors.o(.data); - BUILD_DIR/src/ending/code_80281780.o(.data); - BUILD_DIR/src/ending/dl_unk_80284EE0.o(.data); - BUILD_DIR/src/ending/credits.jp.o(.data); - BUILD_DIR/src/ending/ceremony_and_credits.o(.data); - BUILD_DIR/src/ending/podium_ceremony_actors.o(.rodata); - BUILD_DIR/src/ending/camera_junk.o(.rodata); - BUILD_DIR/src/ending/credits.jp.o(.rodata); - BUILD_DIR/src/ending/ceremony_and_credits.o(.rodata); + BUILD_DIR/src/ending/code_80280000.o(.text*); + BUILD_DIR/src/ending/podium_ceremony_actors.o(.text*); + BUILD_DIR/src/ending/camera_junk.o(.text*); + BUILD_DIR/src/ending/code_80281780.o(.text*); + BUILD_DIR/src/ending/code_80281C40.o(.text*); + BUILD_DIR/src/ending/ceremony_and_credits.o(.text*); + BUILD_DIR/src/ending/podium_ceremony_actors.o(.data*); + BUILD_DIR/src/ending/code_80281780.o(.data*); + BUILD_DIR/src/ending/dl_unk_80284EE0.o(.data*); + BUILD_DIR/src/ending/credits.jp.o(.data*); + BUILD_DIR/src/ending/ceremony_and_credits.o(.data*); + BUILD_DIR/src/ending/code_80280000.o(.rodata*); + BUILD_DIR/src/ending/podium_ceremony_actors.o(.rodata*); + BUILD_DIR/src/ending/camera_junk.o(.rodata*); + BUILD_DIR/src/ending/code_80281780.o(.rodata*); + BUILD_DIR/src/ending/code_80281C40.o(.rodata*); + BUILD_DIR/src/ending/credits.jp.o(.rodata*); + BUILD_DIR/src/ending/ceremony_and_credits.o(.rodata*); } END_SEG(ending) BEGIN_NOLOAD(ending) { - BUILD_DIR/src/ending/code_80280000.o(.bss); - BUILD_DIR/src/ending/podium_ceremony_actors.o(.bss); - BUILD_DIR/src/ending/code_80281C40.o(.bss); - BUILD_DIR/src/ending/ceremony_and_credits.o(.bss); + BUILD_DIR/src/ending/code_80280000.o(.bss*); + BUILD_DIR/src/ending/podium_ceremony_actors.o(.bss*); + BUILD_DIR/src/ending/code_80281C40.o(.bss*); + BUILD_DIR/src/ending/ceremony_and_credits.o(.bss*); + . = ALIGN(0x10); } END_NOLOAD(ending) @@ -449,7 +466,7 @@ SECTIONS BEGIN_SEG(data_segment2, 0x02000000) { BUILD_DIR/src/data/textures.o(.data); - BUILD_DIR/assets/code/data_segment2/data_segment2.o(.data); + BUILD_DIR/src/data/data_segment2.o(.data); } END_SEG(data_segment2) diff --git a/safe_gcc.mk b/safe_gcc.mk new file mode 100644 index 000000000..0ced65167 --- /dev/null +++ b/safe_gcc.mk @@ -0,0 +1,167 @@ +# This file is auto-generated. DO NOT MODIFY! + +SAFE_C_FILES := \ + build/us/src/camera.o \ + build/us/src/spawn_players.o \ + build/us/src/code_8003DC40.o \ + build/us/src/code_80091440.o \ + build/us/src/effects.o \ + build/us/src/code_80057C60_var.o \ + build/us/src/code_800029B0.o \ + build/us/src/code_80004740.o \ + build/us/src/player_controller.o \ + build/us/src/profiler.o \ + build/us/src/render_player.o \ + build/us/src/code_80086E70.o \ + build/us/src/staff_ghosts.o \ + build/us/src/gbiMacro.o \ + build/us/src/kart_dma.o \ + build/us/src/math_util_2.o \ + build/us/src/main.o \ + build/us/src/data/kart_attributes.o \ + build/us/src/data/path_spawn_metadata.o \ + build/us/src/data/textures.o \ + build/us/src/data/trig_tables_bss.o \ + build/us/src/data/data_segment2.o \ + build/us/src/audio/seqplayer.o \ + build/us/src/audio/heap.o \ + build/us/src/audio/effects.o \ + build/us/src/audio/playback.o \ + build/us/src/audio/audio_session_presets.o \ + build/us/src/audio/port_eu.o \ + build/us/src/buffers/gfx_output_buffer.o \ + build/us/src/buffers/trig_tables.o \ + build/us/src/buffers/buffers.o \ + build/us/src/buffers/random.o \ + build/us/src/buffers/trig_tables_bss.o \ + build/us/src/buffers/memory_pool.o \ + build/us/src/ending/credits.o \ + build/us/src/ending/code_80280000.o \ + build/us/src/ending/ceremony_and_credits.o \ + build/us/src/ending/dl_unk_80284EE0.o \ + build/us/src/ending/code_80281780.o \ + build/us/src/ending/podium_ceremony_actors.o \ + build/us/src/ending/code_80281C40.o \ + build/us/src/ending/camera_junk.o \ + build/us/src/debug/debug.o \ + build/us/src/debug/crash_screen_enhancement.o \ + build/us/src/racing/collision.o \ + build/us/src/racing/skybox_and_splitscreen.o \ + build/us/src/racing/memory.o \ + build/us/src/racing/race_logic.o \ + build/us/src/racing/actors_extended.o \ + build/us/src/racing/render_courses.o \ + build/us/src/racing/actors.o \ + build/us/src/os/guOrthoF.o \ + build/us/src/os/guLookAtF.o \ + build/us/src/os/__osSiDeviceBusy.o \ + build/us/src/os/_Litob.o \ + build/us/src/os/osContInit.o \ + build/us/src/os/osInitialize.o \ + build/us/src/os/osAiSetNextBuffer.o \ + build/us/src/os/guMtxCatL.o \ + build/us/src/os/__osAiDeviceBusy.o \ + build/us/src/os/contramread.o \ + build/us/src/os/osSpTaskLoadGo.o \ + build/us/src/os/crc.o \ + build/us/src/os/osCreateMesgQueue.o \ + build/us/src/os/guRotateF.o \ + build/us/src/os/__osLeoInterrupt.o \ + build/us/src/os/osContStartReadData.o \ + build/us/src/os/osGetThreadPri.o \ + build/us/src/os/osPfsNumFiles.o \ + build/us/src/os/__osSiRawReadIo.o \ + build/us/src/os/osSpTaskYield.o \ + build/us/src/os/osStartThread.o \ + build/us/src/os/osViData.o \ + build/us/src/os/osPfsFileState.o \ + build/us/src/os/contpfs.o \ + build/us/src/os/leointerrupt.o \ + build/us/src/os/osPfsAllocateFile.o \ + build/us/src/os/ldiv.o \ + build/us/src/os/osSpTaskYielded.o \ + build/us/src/os/__osSpSetPc.o \ + build/us/src/os/osSetTime.o \ + build/us/src/os/osYieldThread.o \ + build/us/src/os/osPiRawStartDma.o \ + build/us/src/os/osSetTimer.o \ + build/us/src/os/osPfsDeleteFile.o \ + build/us/src/os/__osSpDeviceBusy.o \ + build/us/src/os/osEepromRead.o \ + build/us/src/os/osPiRawReadIo.o \ + build/us/src/os/osSetEventMesg.o \ + build/us/src/os/NaN.o \ + build/us/src/os/osJamMesg.o \ + build/us/src/os/osPfsChecker.o \ + build/us/src/os/sprintf.o \ + build/us/src/os/_Printf.o \ + build/us/src/os/osViTable.o \ + build/us/src/os/osEepromLongWrite.o \ + build/us/src/os/__osEPiRawWriteIo.o \ + build/us/src/os/osViSetEvent.o \ + build/us/src/os/__osGetCurrFaultedThread.o \ + build/us/src/os/osCreatePiManager.o \ + build/us/src/os/epidma.o \ + build/us/src/os/osCartRomInit.o \ + build/us/src/os/osPfsFreeBlocks.o \ + build/us/src/os/osPfsSearchFile.o \ + build/us/src/os/__osAtomicDec.o \ + build/us/src/os/osViBlack.o \ + build/us/src/os/__osViInit.o \ + build/us/src/os/osEepromWrite.o \ + build/us/src/os/osAiSetFrequency.o \ + build/us/src/os/__osEPiRawReadIo.o \ + build/us/src/os/guLookAtRef.o \ + build/us/src/os/guPerspectiveF.o \ + build/us/src/os/contramwrite.o \ + build/us/src/os/osGetTime.o \ + build/us/src/os/__osViSwapContext.o \ + build/us/src/os/alBnkfNew.o \ + build/us/src/os/__osSpSetStatus.o \ + build/us/src/os/osPfsReadWriteFile.o \ + build/us/src/os/osPiStartDma.o \ + build/us/src/os/osRecvMesg.o \ + build/us/src/os/osDestroyThread.o \ + build/us/src/os/string.o \ + build/us/src/os/__osSiRawWriteIo.o \ + build/us/src/os/osPfsInit.o \ + build/us/src/os/guMtxCatF.o \ + build/us/src/os/osPfsIsPlug.o \ + build/us/src/os/__osDequeueThread.o \ + build/us/src/os/__osSiCreateAccessQueue.o \ + build/us/src/os/osViSwapBuffer.o \ + build/us/src/os/is_debug.o \ + build/us/src/os/__osViGetCurrentContext.o \ + build/us/src/os/__osPiCreateAccessQueue.o \ + build/us/src/os/__osSpRawStartDma.o \ + build/us/src/os/__osSyncPutChars.o \ + build/us/src/os/osSendMesg.o \ + build/us/src/os/osSyncPrintf.o \ + build/us/src/os/__osResetGlobalIntMask.o \ + build/us/src/os/guScaleF.o \ + build/us/src/os/osSetThreadPri.o \ + build/us/src/os/__osDevMgrMain.o \ + build/us/src/os/osVirtualToPhysical.o \ + build/us/src/os/osViSetMode.o \ + build/us/src/os/__osSetHWIntrRoutine.o \ + build/us/src/os/osCreateViManager.o \ + build/us/src/os/__osSiRawStartDma.o \ + build/us/src/os/guNormalize.o \ + build/us/src/os/osLeoDiskInit.o \ + build/us/src/os/__osSpGetStatus.o \ + build/us/src/os/osEepromLongRead.o \ + build/us/src/os/_Ldtob.o \ + build/us/src/os/guMtxF2L.o \ + build/us/src/os/osEPiRawStartDma.o \ + build/us/src/os/osPiGetCmdQueue.o \ + build/us/src/os/osAiGetLength.o \ + build/us/src/os/osViSetSpecialFeatures.o \ + build/us/src/os/osCreateThread.o \ + build/us/src/os/osTimer.o \ + build/us/src/os/osEepromProbe.o \ + build/us/src/os/__osSetGlobalIntMask.o \ + build/us/src/os/guTranslateF.o \ + build/us/src/os/math/llconv.o \ + build/us/src/os/math/cosf.o \ + build/us/src/os/math/llmuldiv.o \ + build/us/src/os/math/sinf.o \ \ No newline at end of file diff --git a/src/actors/banana/render.inc.c b/src/actors/banana/render.inc.c index e148cb767..516301bbc 100644 --- a/src/actors/banana/render.inc.c +++ b/src/actors/banana/render.inc.c @@ -4,10 +4,10 @@ /** * @brief Render the banana actor - * - * @param camera - * @param arg1 - * @param banana + * + * @param camera + * @param arg1 + * @param banana */ void render_actor_banana(Camera *camera, UNUSED Mat4 arg1, struct BananaActor *banana) { UNUSED s32 pad[2]; diff --git a/src/actors/banana/update.inc.c b/src/actors/banana/update.inc.c index 4367d8ea4..9d31b1166 100644 --- a/src/actors/banana/update.inc.c +++ b/src/actors/banana/update.inc.c @@ -47,7 +47,7 @@ void update_actor_banana(struct BananaActor *banana) { banana->pos[1] = player->pos[1] - temp_f14 - 2.0f; banana->pos[2] = player->pos[2] - temp_f16; } - func_802ADDC8(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]); + check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]); func_802B4E30((struct Actor *) banana); if ((player->type & PLAYER_HUMAN) != 0) { if (gDemoMode) { @@ -99,15 +99,15 @@ void update_actor_banana(struct BananaActor *banana) { if ((banana->pos[2] < (f32) gCourseMinZ) || ((f32) gCourseMaxZ < banana->pos[2]) || (banana->pos[0] < (f32) gCourseMinX) || ((f32) gCourseMaxX < banana->pos[0]) || (banana->pos[1] < (f32) gCourseMinY)) { destroy_destructable_actor((struct Actor *) banana); } else { - func_802ADDC8(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]); + check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]); banana->unk30.unk34 = 1; - if ((banana->unk30.unk34 != 0) && (banana->unk30.unk3C[2] < 0.0f)) { + if ((banana->unk30.unk34 != 0) && (banana->unk30.surfaceDistance[2] < 0.0f)) { someOtherVelocity[0] = -banana->unk30.orientationVector[0]; someOtherVelocity[1] = -banana->unk30.orientationVector[1]; someOtherVelocity[2] = -banana->unk30.orientationVector[2]; - banana->pos[0] += someOtherVelocity[0] * banana->unk30.unk3C[2]; - banana->pos[1] += someOtherVelocity[1] * banana->unk30.unk3C[2]; - banana->pos[2] += someOtherVelocity[2] * banana->unk30.unk3C[2]; + banana->pos[0] += someOtherVelocity[0] * banana->unk30.surfaceDistance[2]; + banana->pos[1] += someOtherVelocity[1] * banana->unk30.surfaceDistance[2]; + banana->pos[2] += someOtherVelocity[2] * banana->unk30.surfaceDistance[2]; banana->flags &= ~0x1000; banana->state = 4; } @@ -137,7 +137,7 @@ void update_actor_banana(struct BananaActor *banana) { banana->pos[1] = unkY - temp_f14 - 2.0f; banana->pos[2] = unkZ - temp_f16; } - func_802ADDC8(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]); + check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]); func_802B4E30((struct Actor *) banana); break; case BANANA_BUNCH_BANANA: @@ -159,7 +159,7 @@ void update_actor_banana(struct BananaActor *banana) { banana->pos[2] = elderBanana->pos[2] - temp_f16; } var_f8 = banana->pos[2]; - func_802ADDC8(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]); + check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]); func_802B4E30((struct Actor *) banana); break; case DESTROYED_BANANA: @@ -183,4 +183,4 @@ void update_actor_banana(struct BananaActor *banana) { default: break; } -} \ No newline at end of file +} diff --git a/src/actors/blue_and_red_shells/render.inc.c b/src/actors/blue_and_red_shells/render.inc.c index 42bf7ca82..3b41ff42f 100644 --- a/src/actors/blue_and_red_shells/render.inc.c +++ b/src/actors/blue_and_red_shells/render.inc.c @@ -3,10 +3,10 @@ /** * @brief Render the red shell actor - * - * @param camera - * @param matrix - * @param shell + * + * @param camera + * @param matrix + * @param shell */ void render_actor_red_shell(Camera *camera, Mat4 matrix, struct ShellActor *shell) { gDPLoadTLUT_pal256(gDisplayListHead++, &gTLUTRedShell); // set texture @@ -15,10 +15,10 @@ void render_actor_red_shell(Camera *camera, Mat4 matrix, struct ShellActor *shel /** * @brief Render the blue shell actor - * - * @param camera - * @param matrix - * @param shell + * + * @param camera + * @param matrix + * @param shell */ void render_actor_blue_shell(Camera *camera, Mat4 matrix, struct ShellActor *shell) { gDPLoadTLUT_pal256(gDisplayListHead++, common_tlut_blue_shell); // set texture diff --git a/src/actors/blue_and_red_shells/update.inc.c b/src/actors/blue_and_red_shells/update.inc.c index 493019132..81bec3241 100644 --- a/src/actors/blue_and_red_shells/update.inc.c +++ b/src/actors/blue_and_red_shells/update.inc.c @@ -85,7 +85,7 @@ void func_802B3B44(struct ShellActor *shell) { shell->pos[0] += temp_f12_3; shell->pos[1] += temp_f14_2; shell->pos[2] += temp_f16_2; - func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]); + actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]); func_802B4E30((struct Actor *) shell); } } else { @@ -142,7 +142,7 @@ void func_802B3E7C(struct ShellActor *shell, Player *player) { if (player->effects & BOO_EFFECT) { destroy_destructable_actor((struct Actor *) shell); } else { - func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], newPosition[0], newPosition[1], newPosition[2]); + actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], newPosition[0], newPosition[1], newPosition[2]); func_802B4E30((struct Actor *) shell); func_802B4104(shell); } @@ -177,11 +177,11 @@ s16 func_802B3FD0(Player *owner, struct ShellActor *shell) { } void func_802B4104(struct ShellActor *shell) { - if ((shell->unk30.unk3C[0] < 0.0f) && ((shell->unk30.unk48[1] < 0.25f) || (shell->unk30.unk48[1] > -0.25f))) { + if ((shell->unk30.surfaceDistance[0] < 0.0f) && ((shell->unk30.unk48[1] < 0.25f) || (shell->unk30.unk48[1] > -0.25f))) { destroy_destructable_actor((struct Actor *) shell); func_800C98B8(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x54)); shell->flags |= 0x80; - } else if ((shell->unk30.unk3C[1] < 0.0f) && ((shell->unk30.unk54[1] < 0.25f) || (shell->unk30.unk54[1] < -0.25f))) { + } else if ((shell->unk30.surfaceDistance[1] < 0.0f) && ((shell->unk30.unk54[1] < 0.25f) || (shell->unk30.unk54[1] < -0.25f))) { destroy_destructable_actor((struct Actor *) shell); func_800C98B8(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x54)); shell->flags |= 0x80; @@ -196,7 +196,7 @@ void func_802B4104(struct ShellActor *shell) { void update_actor_red_blue_shell(struct ShellActor *shell) { UNUSED f32 pad9; Player *player; - f32 temp_f0; + f32 height; UNUSED f32 temp_f14; f32 temp_f2; s16 temp_v0; @@ -235,7 +235,7 @@ void update_actor_red_blue_shell(struct ShellActor *shell) { switch (shell->state) { case HELD_SHELL: player = &gPlayers[shell->playerId]; - copy_collision(&player->unk_110, &shell->unk30); + copy_collision(&player->collision, &shell->unk30); somePosVel[0] = 0.0f; somePosVel[1] = player->boundingBoxSize; somePosVel[2] = -(player->boundingBoxSize + shell->boundingBoxSize + 2.0f); @@ -243,11 +243,11 @@ void update_actor_red_blue_shell(struct ShellActor *shell) { shell->pos[0] = player->pos[0] + somePosVel[0]; pad7 = player->pos[1] - somePosVel[1]; shell->pos[2] = player->pos[2] + somePosVel[2]; - temp_f0 = func_802ABE30(shell->pos[0], pad7, shell->pos[2], player->unk_110.unk3A); - temp_f2 = pad7 - temp_f0; + height = calculate_surface_height(shell->pos[0], pad7, shell->pos[2], player->collision.meshIndexZX); + temp_f2 = pad7 - height; if ((temp_f2 < 5.0f) && (temp_f2 > -5.0f)) { - shell->pos[1] = shell->boundingBoxSize + temp_f0; + shell->pos[1] = shell->boundingBoxSize + height; } else { shell->pos[1] = pad7; } @@ -303,13 +303,13 @@ void update_actor_red_blue_shell(struct ShellActor *shell) { } if (shell->state == MOVING_SHELL) { shell->someTimer = 0x001E; - temp_f0 = 8.0f; + height = 8.0f; if (player->unk_094 > 8.0f) { - temp_f0 = player->unk_094 * 1.2f; + height = player->unk_094 * 1.2f; } somePosVel[0] = 0.0f; somePosVel[1] = 0.0f; - somePosVel[2] = temp_f0; + somePosVel[2] = height; func_802B64C4(somePosVel, (s16) (player->rotation[1] + player->unk_0C0)); shell->velocity[0] = somePosVel[0]; shell->velocity[1] = somePosVel[1]; @@ -385,7 +385,7 @@ void update_actor_red_blue_shell(struct ShellActor *shell) { shell->pos[0] += shell->velocity[0]; shell->pos[1] += shell->velocity[1]; shell->pos[2] += shell->velocity[2]; - func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]); + actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]); func_802B4E30((struct Actor *) shell); func_802B4104(shell); break; @@ -405,11 +405,11 @@ void update_actor_red_blue_shell(struct ShellActor *shell) { case GREEN_SHELL_HIT_A_RACER: func_802B3B44(shell); player = &gPlayers[shell->targetPlayer]; - temp_f0 = player->pos[0]; - temp_f0 -= shell->pos[0]; + height = player->pos[0]; + height -= shell->pos[0]; temp_f2 = player->pos[2]; temp_f2 -= shell->pos[2]; - if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < 40000.0f) { + if (((height * height) + (temp_f2 * temp_f2)) < 40000.0f) { shell->state = RED_SHELL_LOCK_ON; } break; @@ -430,7 +430,7 @@ void update_actor_red_blue_shell(struct ShellActor *shell) { shell->pos[0] = player->pos[0] + somePosVel[0]; shell->pos[1] = player->pos[1] + somePosVel[1]; shell->pos[2] = player->pos[2] + somePosVel[2]; - func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]); + actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]); func_802B4E30((struct Actor *) shell); } break; @@ -450,11 +450,11 @@ void update_actor_red_blue_shell(struct ShellActor *shell) { func_802B3B44(shell); shell->targetPlayer = gPlayerPositionLUT[0]; player = &gPlayers[gPlayerPositionLUT[0]]; - temp_f0 = player->pos[0]; - temp_f0 -= shell->pos[0]; + height = player->pos[0]; + height -= shell->pos[0]; temp_f2 = player->pos[2]; temp_f2 -= shell->pos[2]; - if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < 40000.0f) { + if (((height * height) + (temp_f2 * temp_f2)) < 40000.0f) { shell->state = BLUE_SHELL_TARGET_ELIMINATED; } break; @@ -464,4 +464,4 @@ void update_actor_red_blue_shell(struct ShellActor *shell) { default: break; } -} \ No newline at end of file +} diff --git a/src/actors/box_truck/render.inc.c b/src/actors/box_truck/render.inc.c index 794dd305e..75b445bae 100644 --- a/src/actors/box_truck/render.inc.c +++ b/src/actors/box_truck/render.inc.c @@ -8,9 +8,9 @@ * @brief Renders the box truck actor. * Actor used in Toad's Turnpike. * His update are made in vehicle. - * - * @param arg0 - * @param arg1 + * + * @param arg0 + * @param arg1 */ void render_actor_box_truck(Camera *arg0, struct Actor *arg1) { UNUSED s32 pad[6]; diff --git a/src/actors/cow/render.inc.c b/src/actors/cow/render.inc.c index 3800fbbbc..ffa48c227 100644 --- a/src/actors/cow/render.inc.c +++ b/src/actors/cow/render.inc.c @@ -7,10 +7,10 @@ /** * @brief Renders the cow actor. * Actor used in Moo Moo Farm. - * - * @param camera - * @param arg1 - * @param arg2 + * + * @param camera + * @param arg1 + * @param arg2 */ void render_actor_cow(Camera *camera, Mat4 arg1, struct Actor *arg2) { if (is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f) < 0) { return; } diff --git a/src/actors/fake_item_box/render.inc.c b/src/actors/fake_item_box/render.inc.c index 184521575..bf1a66568 100644 --- a/src/actors/fake_item_box/render.inc.c +++ b/src/actors/fake_item_box/render.inc.c @@ -5,9 +5,9 @@ /** * @brief Renders the fake item box actor. - * - * @param camera - * @param fakeItemBox + * + * @param camera + * @param fakeItemBox */ void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox) { Vec3s someRot; @@ -145,4 +145,4 @@ void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox) gSPDisplayList(gDisplayListHead++, D_0D0030F8); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } -} \ No newline at end of file +} diff --git a/src/actors/fake_item_box/update.inc.c b/src/actors/fake_item_box/update.inc.c index df6d1b5ea..364992d9c 100644 --- a/src/actors/fake_item_box/update.inc.c +++ b/src/actors/fake_item_box/update.inc.c @@ -36,7 +36,7 @@ void update_actor_fake_item_box(struct FakeItemBox *fake_item_box) { fake_item_box->pos[0] = temp_v0_4->pos[0] - temp_f14; fake_item_box->pos[1] = (temp_v0_4->pos[1] - temp_f16) - 1.0f; fake_item_box->pos[2] = temp_v0_4->pos[2] - temp_f18; - func_802ADDC8(&fake_item_box->unk30, fake_item_box->boundingBoxSize, fake_item_box->pos[0], fake_item_box->pos[1], fake_item_box->pos[2]); + check_bounding_collision(&fake_item_box->unk30, fake_item_box->boundingBoxSize, fake_item_box->pos[0], fake_item_box->pos[1], fake_item_box->pos[2]); func_802B4E30((struct Actor *)fake_item_box); temp_v1_3 = &gControllers[temp_v1]; if ((temp_v0_4->type & 0x4000) != 0) { @@ -89,4 +89,4 @@ void update_actor_fake_item_box(struct FakeItemBox *fake_item_box) { destroy_actor((struct Actor *) fake_item_box); break; } -} \ No newline at end of file +} diff --git a/src/actors/falling_rock/render.inc.c b/src/actors/falling_rock/render.inc.c index 70854943b..66c4570df 100644 --- a/src/actors/falling_rock/render.inc.c +++ b/src/actors/falling_rock/render.inc.c @@ -13,25 +13,25 @@ void render_actor_falling_rock(Camera *camera, struct FallingRock *rock) { Vec3s sp98; Vec3f sp8C; Mat4 sp4C; - f32 temp_f0; + f32 height; UNUSED s32 pad[4]; if (rock->respawnTimer != 0) { return; } - temp_f0 = is_within_render_distance(camera->pos, rock->pos, camera->rot[1], 400.0f, gCameraZoom[camera - camera1], 4000000.0f); + height = is_within_render_distance(camera->pos, rock->pos, camera->rot[1], 400.0f, gCameraZoom[camera - camera1], 4000000.0f); - if (temp_f0 < 0.0f) { return; } + if (height < 0.0f) { return; } - if (temp_f0 < 250000.0f) { + if (height < 250000.0f) { if (rock->unk30.unk34 == 1) { sp8C[0] = rock->pos[0]; sp8C[2] = rock->pos[2]; - temp_f0 = func_802ABE30(sp8C[0], rock->pos[1], sp8C[2], rock->unk30.unk3A); + height = calculate_surface_height(sp8C[0], rock->pos[1], sp8C[2], rock->unk30.meshIndexZX); sp98[0] = 0; sp98[1] = 0; sp98[2] = 0; - sp8C[1] = temp_f0 + 2.0f; + sp8C[1] = height + 2.0f; mtxf_pos_rotation_xyz(sp4C, sp8C, sp98); if (render_set_position(sp4C, 0) == 0) { return; diff --git a/src/actors/falling_rock/update.inc.c b/src/actors/falling_rock/update.inc.c index b10a9b26f..9913bfb0d 100644 --- a/src/actors/falling_rock/update.inc.c +++ b/src/actors/falling_rock/update.inc.c @@ -20,8 +20,8 @@ void func_8029CF0C(struct ActorSpawnData *spawnData, struct FallingRock *rock) { /** * @brief Spawns falling rocks. * Used in Choco Mountain. - * - * @param spawnData + * + * @param spawnData */ void spawn_falling_rocks(struct ActorSpawnData *spawnData) { s32 addr = SEGMENT_NUMBER2(spawnData); @@ -52,8 +52,8 @@ void spawn_falling_rocks(struct ActorSpawnData *spawnData) { /** * @brief Updates the falling rock actor. * Actor used in Choco Mountain. - * - * @param rock + * + * @param rock */ void update_actor_falling_rocks(struct FallingRock *rock) { Vec3f unkVec; @@ -77,20 +77,20 @@ void update_actor_falling_rocks(struct FallingRock *rock) { rock->pos[1] += rock->velocity[1]; rock->pos[2] += rock->velocity[2]; pad1 = rock->velocity[1]; - func_802ADDC8(&rock->unk30, 10.0f, rock->pos[0], rock->pos[1], rock->pos[2]); - pad0 = rock->unk30.unk3C[2]; + check_bounding_collision(&rock->unk30, 10.0f, rock->pos[0], rock->pos[1], rock->pos[2]); + pad0 = rock->unk30.surfaceDistance[2]; if (pad0 < 0.0f) { unkVec[0] = -rock->unk30.orientationVector[0]; unkVec[1] = -rock->unk30.orientationVector[1]; unkVec[2] = -rock->unk30.orientationVector[2]; - rock->pos[0] += unkVec[0] * rock->unk30.unk3C[2]; - rock->pos[1] += unkVec[1] * rock->unk30.unk3C[2]; - rock->pos[2] += unkVec[2] * rock->unk30.unk3C[2]; - func_802AC114(unkVec, pad0, rock->velocity, 2.0f); + rock->pos[0] += unkVec[0] * rock->unk30.surfaceDistance[2]; + rock->pos[1] += unkVec[1] * rock->unk30.surfaceDistance[2]; + rock->pos[2] += unkVec[2] * rock->unk30.surfaceDistance[2]; + adjust_pos_orthogonally(unkVec, pad0, rock->velocity, 2.0f); rock->velocity[1] = -1.2f * pad1; func_800C98B8(rock->pos, rock->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x0F)); } - pad0 = rock->unk30.unk3C[0]; + pad0 = rock->unk30.surfaceDistance[0]; if (pad0 < 0.0f) { unkVec[1] = -rock->unk30.unk48[1]; if (unkVec[1] == 0.0f) { @@ -100,15 +100,15 @@ void update_actor_falling_rocks(struct FallingRock *rock) { else { unkVec[0] = -rock->unk30.unk48[0]; unkVec[2] = -rock->unk30.unk48[2]; - rock->pos[0] += unkVec[0] * rock->unk30.unk3C[0]; - rock->pos[1] += unkVec[1] * rock->unk30.unk3C[0]; - rock->pos[2] += unkVec[2] * rock->unk30.unk3C[0]; - func_802AC114(unkVec, pad0, rock->velocity, 2.0f); + rock->pos[0] += unkVec[0] * rock->unk30.surfaceDistance[0]; + rock->pos[1] += unkVec[1] * rock->unk30.surfaceDistance[0]; + rock->pos[2] += unkVec[2] * rock->unk30.surfaceDistance[0]; + adjust_pos_orthogonally(unkVec, pad0, rock->velocity, 2.0f); rock->velocity[1] = -1.2f * pad1; func_800C98B8(rock->pos, rock->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x0F)); } } - pad0 = rock->unk30.unk3C[1]; + pad0 = rock->unk30.surfaceDistance[1]; if (pad0 < 0.0f) { unkVec[1] = -rock->unk30.unk54[1]; if (unkVec[1] == 0.0f) { @@ -117,11 +117,11 @@ void update_actor_falling_rocks(struct FallingRock *rock) { else { unkVec[0] = -rock->unk30.unk54[0]; unkVec[2] = -rock->unk30.unk54[2]; - rock->pos[0] += unkVec[0] * rock->unk30.unk3C[1]; - rock->pos[1] += unkVec[1] * rock->unk30.unk3C[1]; - rock->pos[2] += unkVec[2] * rock->unk30.unk3C[1]; + rock->pos[0] += unkVec[0] * rock->unk30.surfaceDistance[1]; + rock->pos[1] += unkVec[1] * rock->unk30.surfaceDistance[1]; + rock->pos[2] += unkVec[2] * rock->unk30.surfaceDistance[1]; pad1 = rock->velocity[1]; - func_802AC114(unkVec, pad0, rock->velocity, 2.0f); + adjust_pos_orthogonally(unkVec, pad0, rock->velocity, 2.0f); rock->velocity[1] = -1.2f * pad1; func_800C98B8(rock->pos, rock->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x0F)); } diff --git a/src/actors/green_shell/render.inc.c b/src/actors/green_shell/render.inc.c index 627e62886..71275c3f8 100644 --- a/src/actors/green_shell/render.inc.c +++ b/src/actors/green_shell/render.inc.c @@ -5,10 +5,10 @@ /** * @brief Renders the green shell actor. - * - * @param camera - * @param matrix - * @param shell + * + * @param camera + * @param matrix + * @param shell */ void render_actor_green_shell(Camera *camera, Mat4 matrix, struct ShellActor *shell) { gDPLoadTLUT_pal256(gDisplayListHead++, common_tlut_green_shell); // set texture diff --git a/src/actors/green_shell/update.inc.c b/src/actors/green_shell/update.inc.c index 9fc34ab6f..36ee94505 100644 --- a/src/actors/green_shell/update.inc.c +++ b/src/actors/green_shell/update.inc.c @@ -1,8 +1,8 @@ #include #include -#include #include #include +#include "collision.h" /** * @brief Updates the green shell actor. @@ -18,27 +18,27 @@ void update_actor_green_shell(struct ShellActor *shell) { f32 var_f2; struct Controller *controller; TripleShellParent *parent; - UNUSED f32 pad0; - UNUSED f32 pad1; + f32 height; + f32 z; UNUSED f32 pad2; UNUSED f32 pad3; UNUSED f32 pad4; UNUSED f32 pad5; - UNUSED f32 pad6; + f32 y; UNUSED f32 pad7; UNUSED f32 pad8; - pad0 = shell->pos[0]; - pad6 = shell->pos[1]; - pad1 = shell->pos[2]; - if ((pad1 < gCourseMinZ) || (gCourseMaxZ < pad1) || (pad0 < gCourseMinX) || (gCourseMaxX < pad0) || (pad6 < gCourseMinY)) { + height = shell->pos[0]; + y = shell->pos[1]; + z = shell->pos[2]; + if ((z < gCourseMinZ) || (gCourseMaxZ < z) || (height < gCourseMinX) || (gCourseMaxX < height) || (y < gCourseMinY)) { destroy_destructable_actor((struct Actor *) shell); } shell->rotVelocity += 0x71C; switch (shell->state) { case HELD_SHELL: player = &gPlayers[shell->playerId]; - copy_collision(&player->unk_110, &shell->unk30); + copy_collision(&player->collision, &shell->unk30); somePosVel[0] = 0.0f; somePosVel[1] = player->boundingBoxSize; somePosVel[2] = -(player->boundingBoxSize + shell->boundingBoxSize + 2.0f); @@ -46,10 +46,10 @@ void update_actor_green_shell(struct ShellActor *shell) { shell->pos[0] = player->pos[0] + somePosVel[0]; pad2 = player->pos[1] - somePosVel[1]; shell->pos[2] = player->pos[2] + somePosVel[2]; - pad0 = func_802ABE30(shell->pos[0], pad2, shell->pos[2], player->unk_110.unk3A); - pad1 = pad2 - pad0; - if ((pad1 < 5.0f) && (pad1 > -5.0f)) { - shell->pos[1] = shell->boundingBoxSize + pad0; + height = calculate_surface_height(shell->pos[0], pad2, shell->pos[2], player->collision.meshIndexZX); + z = pad2 - height; + if ((z < 5.0f) && (z > -5.0f)) { + shell->pos[1] = shell->boundingBoxSize + height; } else { shell->pos[1] = pad2; } @@ -145,9 +145,9 @@ void update_actor_green_shell(struct ShellActor *shell) { shell->pos[0] += shell->velocity[0]; shell->pos[1] += shell->velocity[1]; shell->pos[2] += shell->velocity[2]; - func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], somePos2[0], somePos2[1], somePos2[2]); + actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], somePos2[0], somePos2[1], somePos2[2]); func_802B4E30((struct Actor *) shell); - if ((shell->unk30.unk3C[0] < 0.0f) || (shell->unk30.unk3C[1] < 0.0f)) { + if ((shell->unk30.surfaceDistance[0] < 0.0f) || (shell->unk30.surfaceDistance[1] < 0.0f)) { shell_collision(&shell->unk30, shell->velocity); func_800C98B8(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x54)); shell->flags |= 0x80; @@ -170,7 +170,7 @@ void update_actor_green_shell(struct ShellActor *shell) { shell->pos[0] = player->pos[0] + somePosVel[0]; shell->pos[1] = player->pos[1] + somePosVel[1]; shell->pos[2] = player->pos[2] + somePosVel[2]; - func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], somePos2[0], somePos2[1], somePos2[2]); + actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], somePos2[0], somePos2[1], somePos2[2]); func_802B4E30((struct Actor *) shell); } break; @@ -190,4 +190,4 @@ void update_actor_green_shell(struct ShellActor *shell) { default: break; } -} \ No newline at end of file +} diff --git a/src/actors/item_box/render.inc.c b/src/actors/item_box/render.inc.c index 8ccc8bf43..2ab170e89 100644 --- a/src/actors/item_box/render.inc.c +++ b/src/actors/item_box/render.inc.c @@ -155,4 +155,4 @@ void render_actor_item_box(Camera *camera, struct ItemBox *item_box) { } gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); } -} \ No newline at end of file +} diff --git a/src/actors/item_box/update.inc.c b/src/actors/item_box/update.inc.c index 02914498a..e6a912c51 100644 --- a/src/actors/item_box/update.inc.c +++ b/src/actors/item_box/update.inc.c @@ -65,4 +65,4 @@ void update_actor_item_box(struct ItemBox *itemBox) { } break; } -} \ No newline at end of file +} diff --git a/src/actors/kiwano_fruit/render.inc.c b/src/actors/kiwano_fruit/render.inc.c index b6d4c16bd..ed5198d95 100644 --- a/src/actors/kiwano_fruit/render.inc.c +++ b/src/actors/kiwano_fruit/render.inc.c @@ -6,10 +6,10 @@ /** * @brief Renders the kiwano fruit actor. * Actor used in DK's Jungle Parkway. - * - * @param camera - * @param arg1 - * @param actor + * + * @param camera + * @param arg1 + * @param actor */ void render_actor_kiwano_fruit(UNUSED Camera *camera, Mat4 arg1, struct Actor *actor) { uintptr_t addr; diff --git a/src/actors/kiwano_fruit/update.inc.c b/src/actors/kiwano_fruit/update.inc.c index dd1ba9b31..ed2892b2a 100644 --- a/src/actors/kiwano_fruit/update.inc.c +++ b/src/actors/kiwano_fruit/update.inc.c @@ -18,13 +18,13 @@ void update_actor_kiwano_fruit(struct KiwanoFruit *fruit) { s32 nearestWaypoint; player = &gPlayers[fruit->targetPlayer]; - if (((player->type & PLAYER_KART_AI) != 0) || (player->unk_110.unk34 == 0)) { + if (((player->type & PLAYER_KART_AI) != 0) || (player->collision.unk34 == 0)) { fruit->state = 0; return; } switch (fruit->state) { /* irregular */ case 0: - if ((get_surface_type(player->unk_110.unk3A) & 0xFF) != GRASS) { + if ((get_surface_type(player->collision.meshIndexZX) & 0xFF) != GRASS) { return; } fruit->state = 1; diff --git a/src/actors/paddle_boat/render.inc.c b/src/actors/paddle_boat/render.inc.c index 40c37b165..815dd4541 100644 --- a/src/actors/paddle_boat/render.inc.c +++ b/src/actors/paddle_boat/render.inc.c @@ -10,11 +10,11 @@ /** * @brief Renders the paddle boat actor. * Actor used in DK's Jungle Parkway. - * - * @param arg0 - * @param boat - * @param arg2 - * @param pathCounter + * + * @param arg0 + * @param boat + * @param arg2 + * @param pathCounter */ void render_actor_paddle_boat(Camera *arg0, struct PaddleWheelBoat *boat, UNUSED Mat4 arg2, u16 pathCounter) { UNUSED s32 pad[3]; @@ -25,7 +25,7 @@ void render_actor_paddle_boat(Camera *arg0, struct PaddleWheelBoat *boat, UNUSED f32 temp; if ((pathCounter > 20) && (pathCounter < 25)) { return; } - + temp = is_within_render_distance(arg0->pos, boat->pos, arg0->rot[1], 90000.0f, gCameraZoom[arg0 - camera1], 9000000.0f); if (temp < 0.0f) { return; } @@ -37,8 +37,8 @@ void render_actor_paddle_boat(Camera *arg0, struct PaddleWheelBoat *boat, UNUSED if (render_set_position(spE0, 1) != 0) { // Render the boat - gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_dl_E730); - gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_dl_E058); + gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_boat_dl); + gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_railings_dl); mtxf_rotate_x(spE0, boat->wheelRot); vec3f_set(sp120, 0, 16.0f, -255.0f); @@ -47,7 +47,7 @@ void render_actor_paddle_boat(Camera *arg0, struct PaddleWheelBoat *boat, UNUSED if (render_set_position(sp60, 3) != 0) { // Render the paddle wheel gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); - gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_dl_FC28); + gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_paddle_wheel_dl); gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } diff --git a/src/actors/paddle_boat/update.inc.c b/src/actors/paddle_boat/update.inc.c index 386e634d0..743859499 100644 --- a/src/actors/paddle_boat/update.inc.c +++ b/src/actors/paddle_boat/update.inc.c @@ -5,8 +5,8 @@ * @brief Updates the paddle boat actor. * Actor used in DK's Jungle Parkway. * Rotate only the paddle wheel, for position and rotation of the boat it's in vehicle. - * - * @param boat + * + * @param boat */ void update_actor_paddle_boat(struct PaddleWheelBoat *boat) { boat->wheelRot += 0x38E; diff --git a/src/actors/palm_tree/render.inc.c b/src/actors/palm_tree/render.inc.c index eb0895073..5728f78db 100644 --- a/src/actors/palm_tree/render.inc.c +++ b/src/actors/palm_tree/render.inc.c @@ -57,4 +57,4 @@ void render_actor_palm_tree(Camera *arg0, UNUSED Mat4 arg1, struct PalmTree *arg } } } -} \ No newline at end of file +} diff --git a/src/actors/piranha_plant/render.inc.c b/src/actors/piranha_plant/render.inc.c index 525c73b01..2af3108b1 100644 --- a/src/actors/piranha_plant/render.inc.c +++ b/src/actors/piranha_plant/render.inc.c @@ -7,10 +7,10 @@ /** * @brief Renders the piranha plant actor. * Actor used in Mario Raceway and Royal Raceway. - * - * @param arg0 - * @param arg1 - * @param arg2 + * + * @param arg0 + * @param arg1 + * @param arg2 */ void render_actor_piranha_plant(Camera *arg0, Mat4 arg1, struct PiranhaPlant *arg2) { UNUSED s32 pad; diff --git a/src/actors/railroad_crossing/render.inc.c b/src/actors/railroad_crossing/render.inc.c index b87d6a695..1b9f2097f 100644 --- a/src/actors/railroad_crossing/render.inc.c +++ b/src/actors/railroad_crossing/render.inc.c @@ -6,9 +6,9 @@ /** * @brief Renders the railroad crossing actor. * Actor used in Kalimari Desert. - * - * @param arg0 - * @param rr_crossing + * + * @param arg0 + * @param rr_crossing */ void render_actor_railroad_crossing(Camera *arg0, struct RailroadCrossing *rr_crossing) { UNUSED Vec3s sp80 = {0, 0, 0}; diff --git a/src/actors/school_bus/render.inc.c b/src/actors/school_bus/render.inc.c index 163e258ee..5da3c2bb0 100644 --- a/src/actors/school_bus/render.inc.c +++ b/src/actors/school_bus/render.inc.c @@ -7,9 +7,9 @@ * @brief Renders the school bus actor. * Actor used in Toad's Turnpike. * His update are made in vehicle. - * - * @param arg0 - * @param arg1 + * + * @param arg0 + * @param arg1 */ void render_actor_school_bus(Camera *arg0, struct Actor *arg1) { UNUSED s32 pad[6]; diff --git a/src/actors/train/render.inc.c b/src/actors/train/render.inc.c index d4fab764a..84b593edc 100644 --- a/src/actors/train/render.inc.c +++ b/src/actors/train/render.inc.c @@ -7,9 +7,9 @@ * @brief Renders the train engine actor. * Actor used in Kalimari Desert. * His update position are made in vehicle. - * - * @param camera - * @param actor + * + * @param camera + * @param actor */ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) { UNUSED s32 pad[2]; diff --git a/src/actors/trees/render.inc.c b/src/actors/trees/render.inc.c index 9fe162160..09167f4ed 100644 --- a/src/actors/trees/render.inc.c +++ b/src/actors/trees/render.inc.c @@ -6,10 +6,10 @@ /** * @brief Renders the tree actor in Mario rawceay. - * - * @param camera - * @param arg1 - * @param arg2 + * + * @param camera + * @param arg1 + * @param arg2 */ void render_actor_tree_mario_raceway(Camera *camera, Mat4 arg1, struct Actor *arg2) { f32 temp_f0; diff --git a/src/actors/wario_sign/render.inc.c b/src/actors/wario_sign/render.inc.c index 84216470f..4ca1da984 100644 --- a/src/actors/wario_sign/render.inc.c +++ b/src/actors/wario_sign/render.inc.c @@ -6,9 +6,9 @@ /** * @brief Renders the Wario sign actor. * Used in Wario Stadium. - * - * @param arg0 - * @param arg1 + * + * @param arg0 + * @param arg1 */ void render_actor_wario_sign(Camera *arg0, struct Actor *arg1) { Mat4 sp38; diff --git a/src/audio/data.c b/src/audio/data.c index ffaf3aa58..82a328cdb 100644 --- a/src/audio/data.c +++ b/src/audio/data.c @@ -1,4 +1,5 @@ #include +#include #include "data.h" #include "effects.h" @@ -353,9 +354,9 @@ u16 gHeadsetPanQuantization[0x10] = { 0x40, 0x40, 0x30, 0x30, 0x20, 0x20, 0x10, 0, 0, 0, }; -s32 gUnknownData_800F6290[32] = { //maybe envelope of some kind? - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 500, 0, 0, 0, 500, 0, 0, 0, 500, 0, 0, 0, 500, 0, 0, +s16 gUnknownData_800F6290[64] = { // maybe envelope of some kind? + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, }; // Linearly interpolated between @@ -440,4 +441,4 @@ u16 D_803B7192; // unconfirmed u32 gAudioRandom; s32 gAudioErrorFlags; u32 D_803B71A0[4]; // unconfirmed -u8 D_803B71B0[4]; // unconfirmed +ALIGNED8 u8 gAudioHeap[4]; // unconfirmed diff --git a/src/audio/data.h b/src/audio/data.h index fe9ca89b0..9f6ac88fc 100644 --- a/src/audio/data.h +++ b/src/audio/data.h @@ -34,7 +34,7 @@ extern u32 fill2; extern struct NoteSubEu gZeroNoteSub; extern struct NoteSubEu gDefaultNoteSub; extern u16 gHeadsetPanQuantization[0x10]; -extern s32 gUnknownData_800F6290[32]; +extern s16 gUnknownData_800F6290[]; extern f32 gHeadsetPanVolume[128]; extern f32 gStereoPanVolume[128]; extern f32 gDefaultPanVolume[128]; @@ -56,8 +56,8 @@ extern s16 gAiBufferLengths[NUMAIBUFFERS]; // osAiSetNextBuffer nbytes extern u16 D_803B7192; // unconfirmed extern u32 gAudioRandom; extern s32 gAudioErrorFlags; -extern u32 D_803B71A0[4]; // unconfirmed -extern u8 D_803B71B0[4]; // unconfirmed +extern u32 D_803B71A0[]; // unconfirmed +extern u8 gAudioHeap[]; // unconfirmed extern struct ReverbSettingsEU sReverbSettings[]; extern struct AudioSessionSettingsEU gAudioSessionPresets[]; diff --git a/src/audio/effects.c b/src/audio/effects.c index d8003ef1a..89bda3066 100644 --- a/src/audio/effects.c +++ b/src/audio/effects.c @@ -30,7 +30,7 @@ void sequence_channel_process_sound(struct SequenceChannel *seqChannel, s32 reca layer->noteFreqScale = layer->freqScale * seqChannel->freqScale; layer->noteVelocity = layer->velocitySquare * seqChannel->appliedVolume; layer->notePan = (seqChannel->pan + layer->pan * (0x80 - seqChannel->panChannelWeight)) >> 7; - layer->notePropertiesNeedInit = FALSE; + layer->notePropertiesNeedInit = false; } else { if (seqChannel->changes.as_bitfields.freqScale) { layer->noteFreqScale = layer->freqScale * seqChannel->freqScale; @@ -52,7 +52,7 @@ void sequence_player_process_sound(struct SequencePlayer *seqPlayer) { if (seqPlayer->fadeRemainingFrames != 0) { seqPlayer->fadeVolume += seqPlayer->fadeVelocity; - seqPlayer->recalculateVolume = TRUE; + seqPlayer->recalculateVolume = true; if (seqPlayer->fadeVolume > US_FLOAT2(1)) { seqPlayer->fadeVolume = US_FLOAT2(1); @@ -75,13 +75,13 @@ void sequence_player_process_sound(struct SequencePlayer *seqPlayer) { // Process channels for (i = 0; i < CHANNELS_MAX; i++) { - if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[i]) == TRUE - && seqPlayer->channels[i]->enabled == TRUE) { + if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[i]) == true + && seqPlayer->channels[i]->enabled == true) { sequence_channel_process_sound(seqPlayer->channels[i], seqPlayer->recalculateVolume); } } - seqPlayer->recalculateVolume = FALSE; + seqPlayer->recalculateVolume = false; } f32 get_portamento_freq_scale(struct Portamento *p) { @@ -176,7 +176,7 @@ void note_vibrato_init(struct Note *note) { vib = ¬e->vibratoState; - vib->active = TRUE; + vib->active = true; vib->time = 0; vib->curve = gWaveSamples[2]; diff --git a/src/audio/external.c b/src/audio/external.c index 6b7408d64..6b43cde96 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -1,5 +1,6 @@ #include #include +#include #include #include "camera.h" #include "math_util_2.h" @@ -227,11 +228,11 @@ char external_unused_string_eu_03[] = "SE FADE OUT TIME %d\n"; #endif #ifdef VERSION_EU -#define AUDIO_LEFT_TYRE FRONT_LEFT_TYRE -#define AUDIO_RIGHT_TYRE FRONT_RIGHT_TYRE +#define AUDIO_LEFT_TYRE FRONT_LEFT +#define AUDIO_RIGHT_TYRE FRONT_RIGHT #else -#define AUDIO_LEFT_TYRE BACK_LEFT_TYRE -#define AUDIO_RIGHT_TYRE BACK_RIGHT_TYRE +#define AUDIO_LEFT_TYRE BACK_LEFT +#define AUDIO_RIGHT_TYRE BACK_RIGHT #endif // Requires void in the argument list to match properly. @@ -333,6 +334,7 @@ s8 func_800C16E8(f32 arg0, f32 arg1, u8 cameraId) { } else { var_f2 = 100.0f; var_f14 = 200.0f; + if (1) { } var_f16 = 5.0f; var_f18 = 3.3333333f; } @@ -424,41 +426,37 @@ void func_800C19D0(u8 arg0, u8 arg1, u8 arg2) { } } -#ifdef MIPS_TO_C -//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Oct-16-2023 struct Unk_8018EFD8 *func_800C1C88(u8 arg0, Vec3f position, f32 *velocity, f32 *arg3, u8 arg4, u32 soundBits) { struct Unk_8018EFD8 *temp_a1; struct Unk_8018EFD8 *temp_v1; u8 temp_t7; + u8 why1; - temp_v1 = &D_8018EFD8[D_8018FB90]; - if (temp_v1->next != 0xFF) { - temp_a1 = &D_8018EFD8[D_8018FB90 & 0xFF]; - temp_a1->prev = D_8018FB91; - D_8018EFD8[D_8018FB91].next = D_8018FB90; - temp_t7 = temp_v1->next; - D_8018FB91 = D_8018FB90; - D_8018FB90 = temp_t7; - D_8018EFD8[temp_t7 & 0xFF].prev = 0xFF; - temp_a1->posY = position + 4; - temp_a1->posX = position; - temp_a1->posZ = position + 8; - temp_a1->velX = velocity; - temp_a1->velY = velocity + 4; - temp_a1->next = 0xFF; - temp_a1->velZ = velocity + 8; - temp_a1->unk24 = arg3; - temp_a1->unk18[1] = 0.0f; - temp_a1->cameraId = arg4; - temp_a1->unk30 = arg0; - temp_a1->soundBits = soundBits; - return temp_a1; + if (D_8018EFD8[D_8018FB90].next != 0xFF) { + why1 = D_8018FB90; + D_8018EFD8[why1].prev = D_8018FB91; + temp_a1 = &D_8018EFD8[D_8018FB90]; + D_8018EFD8[D_8018FB91].next = why1; + temp_t7 = temp_a1->next; + D_8018FB91 = why1; + D_8018FB90 = D_8018EFD8[D_8018FB90].next; + D_8018EFD8[D_8018FB90].prev = 0xFF; + D_8018EFD8[why1].posX = &position[0]; + D_8018EFD8[why1].posY = &position[1]; + D_8018EFD8[why1].posZ = &position[2]; + D_8018EFD8[why1].next = 0xFF; + D_8018EFD8[why1].velX = &velocity[0]; + D_8018EFD8[why1].velY = &velocity[1]; + D_8018EFD8[why1].velZ = &velocity[2]; + D_8018EFD8[why1].unk18[1] = 0.0f; + D_8018EFD8[why1].unk24 = arg3; + D_8018EFD8[why1].cameraId = arg4; + D_8018EFD8[why1].unk30 = arg0; + D_8018EFD8[why1].soundBits = soundBits; + return &D_8018EFD8[why1]; } return NULL; } -#else -GLOBAL_ASM("asm/non_matchings/audio/external/func_800C1C88.s") -#endif void func_800C1DA4(Camera *arg0, Vec3s rot, struct Unk_8018EFD8 *arg2) { f32 x; @@ -674,8 +672,8 @@ void func_800C2474(void) { D_800E9E74[var_v0] = 0; D_800E9E84[var_v0] = 0; D_800E9E94[var_v0] = 0; - gPlayers[var_v0].boundingBoxCorners[AUDIO_LEFT_TYRE ].surfaceType = 0; - gPlayers[var_v0].boundingBoxCorners[AUDIO_RIGHT_TYRE].surfaceType = 0; + gPlayers[var_v0].tyres[AUDIO_LEFT_TYRE ].surfaceType = 0; + gPlayers[var_v0].tyres[AUDIO_RIGHT_TYRE].surfaceType = 0; gPlayers[var_v0].effects = 0; gPlayers[var_v0].unk_20C = 0.0f; gPlayers[var_v0].unk_0C0 = 0; @@ -952,7 +950,7 @@ void func_800C3448(u32 arg0) { } void func_800C3478(void) { - for(D_800EA1E8; D_800EA1E4 != D_800EA1E8;) { + for (D_800EA1E8; D_800EA1E4 != D_800EA1E8;) { func_800C2A2C(D_80192CD0[D_800EA1E8++]); } } @@ -969,10 +967,10 @@ u8 func_800C357C(s32 arg0) { u8 i; i = D_800EA1E8; - var_v1 = TRUE; + var_v1 = true; for(i = D_800EA1E8; i < (s32) D_800EA1E4; i++) { if ((u32) arg0 == D_80192CD0[i]) { - var_v1 = FALSE; + var_v1 = false; i = D_800EA1E4; } } @@ -1018,263 +1016,172 @@ void func_800C36C4(u8 arg0, u8 arg1, u8 arg2, u8 arg3) { D_801930D0[arg0].unk_012 = 1; } -#ifdef MIPS_TO_C -//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Oct-17-2023 +#ifdef NON_MATCHING +//generated by m2c commit 1c7b040b356d06b5171add65d8ee527a500b156e on Apr-01-2024 void func_800C3724(void) { - f32 temp_f2; + u8 var_s5; f32 var_f0; - f32 var_f0_2; - f32 var_f16; - f32 var_f6; - f32 var_f8; - s32 temp_a0; - s32 temp_a1; - s32 temp_a3; - s32 temp_a3_2; - s32 temp_at; + u16 temp_a3_2; s32 temp_lo; s32 temp_s1; - s32 temp_t2_3; - s32 temp_t3; - s32 temp_t4_2; - s32 temp_t5_2; - s32 temp_t7; - s32 temp_t7_3; s32 temp_t9_2; - s32 temp_v1; - s32 var_a2; - s32 var_s0; - s32 var_s0_2; - s32 var_s2; - s32 var_s2_2; - s32 var_s5; - s32 var_t0; - struct SequencePlayer *temp_a1_2; - struct_D_801930D0_entry *temp_s0; - struct_D_801930D0_entry *temp_s0_2; - struct_D_801930D0_entry *temp_s0_3; - struct_D_801930D0_entry *temp_s3; - struct_D_801930D0_entry *temp_s4; - struct_D_801930D0_entry *temp_s4_2; - u16 temp_t2_2; - u16 temp_t4; - u16 temp_t5; - u16 temp_t7_2; - u16 temp_v0; - u16 temp_v0_2; - u16 temp_v0_3; - u16 temp_v1_2; - u16 temp_v1_3; + u16 var_a2; + u8 var_s2; + u8 var_t0; u32 temp_t5_3; - u32 temp_t9; - u32 temp_v0_5; u8 temp_a1_3; - u8 temp_t2; - u8 temp_v0_4; - u8 temp_v1_4; + s32 var_a1; + struct_D_801930D0_entry *temp_s0; + struct_D_801930D0_entry *temp_s2; + struct_D_801930D0_entry *temp_s4_2; - var_s5 = 0; - do { - temp_s3 = &D_801930D0[var_s5]; - if (temp_s3->unk_012 != 0) { + for (var_s5 = 0; var_s5 < 3; var_s5++) { + if (D_801930D0[var_s5].unk_012 != 0) { var_f0 = 1.0f; - var_s2 = 0; - do { - temp_t2 = D_801930D0[var_s5].unk_00E[var_s2]; - var_f6 = (f32) temp_t2; - if ((s32) temp_t2 < 0) { - var_f6 += 4294967296.0f; - } - temp_t3 = (var_s2 + 1) & 0xFF; - temp_at = temp_t3 < 3; - var_s2 = temp_t3; - var_f0 *= var_f6 / 127.0f; - } while (temp_at != 0); - func_800C3448((temp_s3->unk_011 << 0x10) | 0x40000000 | (var_s5 << 0x18) | ((u32) (var_f0 * 127.0f) & 0xFF)); - temp_s3->unk_012 = 0; + for (var_s2 = 0; var_s2 < 3; var_s2++) { + temp_s4_2 = &D_801930D0[var_s5]; + var_f0 *= temp_s4_2->unk_00E[var_s2] / 127.0f; + } + func_800C3448((D_801930D0[var_s5].unk_011 << 0x10) | 0x40000000 | ((var_s5 & 0xFF) << 0x18) | ((u32) (var_f0 * 127.0f) & 0xFF)); + D_801930D0[var_s5].unk_012 = 0; } - temp_v0 = temp_s3->unk_00C; - temp_t4 = temp_v0 - 1; - if (temp_v0 != 0) { - temp_s3->unk_00C = temp_t4; - if (temp_t4 & 0xFFFF) { - temp_s3->unk_000 -= temp_s3->unk_008; + if (D_801930D0[var_s5].unk_00C != 0) { + D_801930D0[var_s5].unk_00C--; + if (D_801930D0[var_s5].unk_00C) { + D_801930D0[var_s5].unk_000 -= D_801930D0[var_s5].unk_008; } else { - temp_s3->unk_000 = temp_s3->unk_004; + D_801930D0[var_s5].unk_000 = D_801930D0[var_s5].unk_004; } - func_800CBB88(((var_s5 & 0xFF) << 0x10) | 0x41000000, temp_s3->unk_000); + func_800CBB88(((var_s5 & 0xFF) << 0x10) | 0x41000000, D_801930D0[var_s5].unk_000); } - temp_a1 = temp_s3->unk_014; - if (temp_a1 != 0) { - temp_t9 = (u32) (temp_a1 & 0xFF0000) >> 0xF; - temp_a0 = temp_a1 & 0xFFF; - temp_a3 = temp_t9 & 0xFF; - var_t0 = temp_t9 & 0xFF; - var_a2 = temp_a0 & 0xFFFF; - if (temp_a3 == 0) { - var_t0 = (temp_a3 + 1) & 0xFF; + if (D_801930D0[var_s5].unk_014 != 0) { + var_t0 = (u32) (D_801930D0[var_s5].unk_014 & 0xFF0000) >> 0xF; + var_a1 = D_801930D0[var_s5].unk_014 & 0xFFF; + var_a2 = var_a1; + if (var_t0 == 0) { + var_t0++; } - temp_a1_2 = &gSequencePlayers[var_s5]; - if (((u32) temp_a1_2->unk0 >> 0x1F) != 0) { - temp_t9_2 = ((u32) (temp_a1 & 0xF000) >> 0xC) & 0xFF; - temp_lo = (s32) temp_a1_2->tempo / 48; - temp_a3_2 = temp_lo & 0xFFFF; - if (temp_t9_2 != 1) { - temp_v1 = temp_a0 & 0xFFFF; - switch (temp_t9_2) { /* switch 1; irregular */ - case 2: /* switch 1 */ - if (temp_v1 < temp_a3_2) { - var_a2 = (temp_a3_2 - temp_v1) & 0xFFFF; - } - break; - case 3: /* switch 1 */ - var_f16 = (f32) temp_a3_2; - if (temp_a3_2 < 0) { - var_f16 += 4294967296.0f; - } - var_a2 = (u32) (var_f16 * ((f32) (temp_a0 & 0xFFFF) / 100.0f)) & 0xFFFF; - break; - case 4: /* switch 1 */ - temp_v0_2 = temp_s3->unk_018; - var_a2 = temp_a3_2 & 0xFFFF; - if (temp_v0_2 != 0) { - var_a2 = temp_v0_2 & 0xFFFF; - } - break; - } - } else { - var_a2 = (temp_a0 + temp_a3_2) & 0xFFFF; + if (gSequencePlayers[var_s5 & 0xFF].enabled != 0) { + temp_lo = (s32) gSequencePlayers[var_s5 & 0xFF].tempo / TATUMS_PER_BEAT; + temp_a3_2 = temp_lo; + temp_t9_2 = ((D_801930D0[var_s5].unk_014 & 0xF000) >> 0xC) & 0xFF; + switch (temp_t9_2) { /* switch 1; irregular */ + case 1: + var_a2 += temp_a3_2; + break; + case 2: /* switch 1 */ + if (var_a1 < temp_a3_2) { + var_a2 = (temp_a3_2 - var_a1); + } + break; + case 3: /* switch 1 */ + var_a2 = (u32) (temp_a3_2 * ((f32) (var_a1 & 0xFFFF) / 100.0f)); + break; + case 4: /* switch 1 */ + if (D_801930D0[var_s5].unk_018 != 0) { + var_a2 = D_801930D0[var_s5].unk_018; + } else { + var_a2 = temp_a3_2; + } + break; } - temp_f2 = (f32) temp_lo; if (var_a2 >= 0x12D) { var_a2 = 0x12C; } - if (temp_s3->unk_018 == 0) { - temp_s3->unk_018 = (u16) temp_a3_2; + if (D_801930D0[var_s5].unk_018 == 0) { + D_801930D0[var_s5].unk_018 = temp_a3_2; } - var_f0_2 = (f32) var_a2; - if (var_a2 < 0) { - var_f0_2 += 4294967296.0f; - } - temp_s3->unk_020 = (bitwise s32) var_f0_2; - temp_s3->unk_01C = (bitwise s32) temp_f2; - var_f8 = (f32) var_t0; - if (var_t0 < 0) { - var_f8 += 4294967296.0f; - } - temp_s3->unk_028 = (u16) var_t0; - temp_s3->unk_024 = (bitwise s32) ((temp_f2 - var_f0_2) / var_f8); + D_801930D0[var_s5].unk_020 = var_a2; + D_801930D0[var_s5].unk_01C = temp_lo; + D_801930D0[var_s5].unk_024 = (D_801930D0[var_s5].unk_01C - D_801930D0[var_s5].unk_020) / var_t0; + D_801930D0[var_s5].unk_028 = (u16) var_t0; } - temp_s3->unk_014 = 0; + D_801930D0[var_s5].unk_014 = 0; } - temp_v0_3 = temp_s3->unk_028; - temp_t7_2 = temp_v0_3 - 1; - if (temp_v0_3 != 0) { - temp_s3->unk_028 = temp_t7_2; - if (temp_t7_2 & 0xFFFF) { - temp_s3->unk_01C = (bitwise s32) ((bitwise f32) temp_s3->unk_01C - (bitwise f32) temp_s3->unk_024); + if (D_801930D0[var_s5].unk_028 != 0) { + D_801930D0[var_s5].unk_028--; + if (D_801930D0[var_s5].unk_028) { + D_801930D0[var_s5].unk_01C -= D_801930D0[var_s5].unk_024; } else { - temp_s3->unk_01C = temp_s3->unk_020; + D_801930D0[var_s5].unk_01C = D_801930D0[var_s5].unk_020; } - func_800CBBB8(((var_s5 & 0xFF) << 0x10) | 0x47000000, (u32) (s32) temp_s3->unk_01C); + func_800CBBB8(((var_s5 & 0xFF) << 0x10) | 0x47000000, (u32) (s32) D_801930D0[var_s5].unk_01C); } - if (temp_s3->unk_246 != 0) { - temp_s4 = &D_801930D0[var_s5]; - var_s0 = 0; - do { - temp_v1_2 = temp_s4->unk_044[var_s0].unk_0C; - temp_t5 = temp_v1_2 - 1; - if (temp_v1_2 != 0) { - temp_s4->unk_044[var_s0].unk_0C = temp_t5; - if (temp_t5 & 0xFFFF) { - temp_s4->unk_044[var_s0].unk_00 -= temp_s4->unk_044[var_s0].unk_08; + if (D_801930D0[var_s5].unk_246 != 0) { + for (var_s2 = 0; var_s2 < 0x10; var_s2++) { + temp_s4_2 = &D_801930D0[var_s5]; + if (temp_s4_2->unk_044[var_s2].unk_0C != 0) { + temp_s4_2->unk_044[var_s2].unk_0C--; + if (temp_s4_2->unk_044[var_s2].unk_0C) { + temp_s4_2->unk_044[var_s2].unk_00 -= temp_s4_2->unk_044[var_s2].unk_08; } else { - temp_s3->unk_044[var_s0].unk_00 = temp_s3->unk_044[var_s0].unk4; - temp_s3->unk_246 ^= 1 << var_s0; + temp_s4_2->unk_044[var_s2].unk_00 = temp_s4_2->unk_044[var_s2].unk_04; + temp_s4_2->unk_246 ^= 1 << var_s2; } - func_800CBB88(((var_s5 & 0xFF) << 0x10) | 0x01000000 | ((var_s0 & 0xFF) << 8), temp_s4->unk_044[var_s0].unk_00); + func_800CBB88(((var_s5 & 0xFF) << 0x10) | 0x01000000 | ((var_s2 & 0xFF) << 8), temp_s4_2->unk_044[var_s2].unk_00); } - temp_t7_3 = (var_s0 + 1) & 0xFF; - var_s0 = temp_t7_3; - } while (temp_t7_3 < 0x10); + } } - if (temp_s3->unk_244 != 0) { - temp_s4_2 = &D_801930D0[var_s5]; - var_s0_2 = 0; - do { - temp_v1_3 = temp_s4_2->unk_044[var_s0_2].unk_1C; - temp_t2_2 = temp_v1_3 - 1; - if (temp_v1_3 != 0) { - temp_s4_2->unk_044[var_s0_2].unk_1C = temp_t2_2; - if (temp_t2_2 & 0xFFFF) { - temp_s4_2->unk_044[var_s0_2].unk_10 -= temp_s4_2->unk_044[var_s0_2].unk_18; + if (D_801930D0[var_s5].unk_244 != 0) { + for (var_s2 = 0; var_s2 < 0x10; var_s2++) { + temp_s4_2 = &D_801930D0[var_s5]; + if (temp_s4_2->unk_044[var_s2].unk_1C != 0) { + temp_s4_2->unk_044[var_s2].unk_1C--; + if (temp_s4_2->unk_044[var_s2].unk_1C) { + temp_s4_2->unk_044[var_s2].unk_10 -= temp_s4_2->unk_044[var_s2].unk_18; } else { - temp_s3->unk_044[var_s0_2].unk_10 = temp_s3->unk_044[var_s0_2].unk14; - temp_s3->unk_244 ^= 1 << var_s0_2; + temp_s4_2->unk_044[var_s2].unk_10 = temp_s4_2->unk_044[var_s2].unk_14; + temp_s4_2->unk_244 ^= 1 << var_s2; } - func_800CBB88(((var_s5 & 0xFF) << 0x10) | 0x04000000 | ((var_s0_2 & 0xFF) << 8), temp_s4_2->unk_044[var_s0_2].unk_10); + func_800CBB88(((var_s5 & 0xFF) << 0x10) | 0x04000000 | ((var_s2 & 0xFF) << 8), temp_s4_2->unk_044[var_s2].unk_10); } - temp_t4_2 = (var_s0_2 + 1) & 0xFF; - var_s0_2 = temp_t4_2; - } while (temp_t4_2 < 0x10); + } } - temp_v0_4 = temp_s3->unk_041; - if (temp_v0_4 != 0) { - temp_v1_4 = temp_s3->unk_040; - if (temp_v1_4 != 0) { - temp_s3->unk_040 = temp_v1_4 - 1; + if (D_801930D0[var_s5].unk_041 != 0) { + if (D_801930D0[var_s5].unk_040 != 0) { + D_801930D0[var_s5].unk_040--; } else { - var_s2_2 = 0; - if (((u32) gSequencePlayers[var_s5].unk0 >> 0x1F) == 0) { - if ((s32) temp_v0_4 > 0) { - do { - temp_v0_5 = D_801930D0[var_s5].unk_02C[var_s2_2]; - temp_t5_3 = ((u32) (temp_v0_5 & 0xF00000) >> 0x14) & 0xFF; - temp_t2_3 = temp_v0_5 & 0xFF; - temp_s1 = ((u32) (temp_v0_5 & 0xF0000) >> 0x10) & 0xFF; - temp_a1_3 = ((u32) (temp_v0_5 & 0xFF00) >> 8) & 0xFF; - switch (temp_t5_3) { - case 0: - temp_s0 = &D_801930D0[temp_s1]; - temp_s0->unk_012 = 1; - temp_s0->unk_00E[1] = 0x7F; - break; - case 1: - func_800C3448(temp_s3->unk_248 | 0x30000000 | (var_s5 << 0x18)); - break; - case 2: - temp_s0_2 = &D_801930D0[temp_s1]; - func_800C3448(temp_s0_2->unk_248 | (temp_s1 << 0x18) | 0x10000); - temp_s0_2->unk_012 = 1; - temp_s0_2->unk_00E[1] = 0x7F; - break; - case 3: - func_800C3448((temp_s1 << 0x18) | 0xB0003000 | (temp_a1_3 << 0x10) | temp_t2_3); - break; - case 4: - func_800C3448((temp_s1 << 0x18) | 0xB0004000 | (temp_t2_3 << 0x10)); - break; - case 5: - temp_s0_3 = &D_801930D0[temp_s1]; - func_800C3448((temp_s0_3->unk_042 << 0x10) | (temp_s1 << 0x18) | (temp_v0_5 & 0xFFFF)); - func_800C36C4(temp_s1 & 0xFF, 1U, 0x7FU, 0U); - temp_s0_3->unk_042 = 0; - break; - case 6: - temp_s3->unk_042 = temp_a1_3; - break; - } - temp_t5_2 = (var_s2_2 + 1) & 0xFF; - var_s2_2 = temp_t5_2; - } while (temp_t5_2 < (s32) temp_s3->unk_041); + if (gSequencePlayers[var_s5].enabled == 0) { + for (var_s2 = 0; var_s2 < D_801930D0[var_s5].unk_041; var_s2++) { + temp_s4_2 = &D_801930D0[var_s5]; + var_a1 = temp_s4_2->unk_02C[var_s2] & 0xFF; + temp_t5_3 = ((u32) (temp_s4_2->unk_02C[var_s2] & 0xF00000) >> 0x14) & 0xFF; + temp_s1 = ((u32) (temp_s4_2->unk_02C[var_s2] & 0xF0000) >> 0x10) & 0xFF; + temp_a1_3 = ((u32) (temp_s4_2->unk_02C[var_s2] & 0xFF00) >> 8) & 0xFF; + switch (temp_t5_3) { + case 0: + D_801930D0[temp_s1].unk_012 = 1; + D_801930D0[temp_s1].unk_00E[1] = 0x7F; + break; + case 1: + func_800C3448(temp_s4_2->unk_248 | 0x30000000 | (var_s5 << 0x18)); + break; + case 2: + func_800C3448(D_801930D0[temp_s1].unk_248 | (temp_s1 << 0x18) | 0x10000); + D_801930D0[temp_s1].unk_012 = 1; + D_801930D0[temp_s1].unk_00E[1] = 0x7F; + break; + case 3: + func_800C3448((temp_s1 << 0x18) | 0xB0003000 | (temp_a1_3 << 0x10) | var_a1); + break; + case 4: + func_800C3448((temp_s1 << 0x18) | 0xB0004000 | (var_a1 << 0x10)); + break; + case 5: + func_800C3448((D_801930D0[temp_s1].unk_042 << 0x10) | (temp_s1 << 0x18) | (temp_s4_2->unk_02C[var_s2] & 0xFFFF)); + func_800C36C4(temp_s1 & 0xFF, 1U, 0x7FU, 0U); + D_801930D0[temp_s1].unk_042 = 0; + break; + case 6: + temp_s4_2->unk_042 = temp_a1_3; + break; + } } - temp_s3->unk_041 = 0; + D_801930D0[var_s5].unk_041 = 0; } } } - temp_t7 = (var_s5 + 1) & 0xFF; - var_s5 = temp_t7; - } while (temp_t7 < 3); + } } #else #ifdef VERSION_EU @@ -1330,9 +1237,9 @@ void func_800C4084(u16 bankMask) { for (bank = 0; bank < SOUND_BANK_COUNT; bank++) { if (bankMask & 1) { - sSoundBankDisabled[bank] = TRUE; + sSoundBankDisabled[bank] = true; } else { - sSoundBankDisabled[bank] = FALSE; + sSoundBankDisabled[bank] = false; } bankMask = bankMask >> 1; } @@ -1346,12 +1253,12 @@ void func_800C40F0(u8 arg0) { } } -void play_sound(u32 soundBits, Vec3f *position, u8 cameraId, f32 *arg3, f32 *arg4, u8 *arg5) { +void play_sound(u32 soundBits, Vec3f *position, u8 cameraId, f32 *arg3, f32 *arg4, s8 *arg5) { u8 bank; struct Sound *temp_v0; bank = soundBits >> 0x1C; - if (sSoundBankDisabled[bank] == FALSE) { + if (sSoundBankDisabled[bank] == false) { temp_v0 = &sSoundRequests[sSoundRequestCount]; temp_v0->soundBits = soundBits; temp_v0->position = position; @@ -1369,37 +1276,37 @@ void func_800C41CC(u8 arg0, struct SoundCharacteristics *arg1) { struct Sound *sound; for (soundId = sNumProcessedSoundRequests; soundId != sSoundRequestCount; soundId++) { - found = FALSE; + found = false; sound = &sSoundRequests[soundId]; switch (arg0) { case 0: if ((sound->soundBits & 0xF0000000) == (arg1->soundBits & 0xF0000000)) { - found = TRUE; + found = true; } break; case 1: if (((sound->soundBits & 0xF0000000) == (arg1->soundBits & 0xF0000000)) && (sound->position == arg1->unk00)) { - found = TRUE; + found = true; } break; case 2: if (sound->position == arg1->unk00) { - found = TRUE; + found = true; } break; case 3: if ((sound->position == arg1->unk00) && (sound->soundBits == arg1->soundBits)) { - found = TRUE; + found = true; } break; case 4: if ((sound->cameraId == arg1->cameraId) && (sound->soundBits == arg1->soundBits)) { - found = TRUE; + found = true; } break; case 5: if (sound->soundBits == arg1->soundBits) { - found = TRUE; + found = true; } break; } @@ -1413,152 +1320,85 @@ void func_800C41CC(u8 arg0, struct SoundCharacteristics *arg1) { } // Probably a variant of `process_sound_request` from SM64 -#ifdef MIPS_TO_C -//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Oct-18-2023 +#ifdef NON_MATCHING +// https://decomp.me/scratch/fmmyb +// Stack issue concerning `var_t2` and `var_t3`, no idea how to fix it void func_800C4398(void) { - u8 sp4F; - u8 sp4D; - struct Sound *sp48; - u8 sp43; - u32 sp3C; - struct SoundCharacteristics *sp30; - f32 *temp_v0_3; - struct Sound *var_a2; - struct SoundCharacteristics *temp_s0; - struct SoundCharacteristics *temp_s0_2; - struct SoundCharacteristics *temp_s0_3; - struct SoundCharacteristics *temp_t0; - struct SoundCharacteristics *temp_t1; - struct SoundCharacteristics *var_t1; - u32 temp_a1; - u32 temp_a1_2; - u32 temp_v0; - u32 var_t3; - u8 *temp_a3; - u8 *temp_v0_2; - u8 temp_a0; - u8 temp_a0_2; - u8 temp_a1_3; - u8 temp_t6; - u8 temp_t6_2; - u8 temp_v1; + u8 bank; + u8 soundIndex; u8 var_a3; + struct Sound *var_a2; u8 var_t2; - u8 var_t5; - u8 var_v0; - u8 var_v0_2; - u8 var_v1; + u32 var_t3; var_a2 = &sSoundRequests[sNumProcessedSoundRequests]; - temp_a1 = var_a2->soundBits; - if (temp_a1 != 0) { - temp_t6 = ((u32) (temp_a1 & 0xF0000000) >> 0x1C) & 0xFF; - var_v1 = sSoundBanks[temp_t6]->next; - var_t5 = temp_t6; - var_a3 = 0; - var_v0 = var_v1; - if ((var_v1 != 0xFF) && (var_v1 != 0)) { - var_t1 = sSoundBanks[temp_t6]; - var_t3 = sp3C; - var_t2 = sp43; -loop_4: - temp_s0 = &var_t1[var_v1]; - if (var_a2->position == temp_s0->unk00) { - temp_a1_2 = var_a2->soundBits; - temp_v0 = temp_s0->soundBits; - temp_a0 = (*D_800EA1A0)[(D_800EA1C0 * 6) + var_t5]; - if (temp_a1_2 == temp_v0) { - var_a3 = temp_a0 & 0xFF; - var_v0_2 = var_a3; - } else { - if (var_a3 == 0) { - var_t2 = var_v1 & 0xFF; - goto block_11; - } - if ((u32) (temp_v0 & 0xFF00) < (u32) (var_t3 & 0xFF00)) { - var_t2 = var_v1 & 0xFF; -block_11: - var_t3 = temp_v0; - } - var_v0_2 = (var_a3 + 1) & 0xFF; - var_a3 = var_v0_2; - if (var_v0_2 == temp_a0) { - var_v1 = 0; - if ((u32) (temp_a1_2 & 0xFF00) >= (u32) (var_t3 & 0xFF00)) { - var_v1 = var_t2 & 0xFF; - } - } + if (var_a2->soundBits == 0) return; + + bank = ((u32) (var_a2->soundBits & 0xF0000000) >> 0x1C); + soundIndex = sSoundBanks[bank][0].next; + var_a3 = 0; + while ((soundIndex != 0xFF) && (soundIndex != 0)) { + if (var_a2->position == sSoundBanks[bank][soundIndex].unk00) { + if (var_a2->soundBits == sSoundBanks[bank][soundIndex].soundBits) { + var_a3 = D_800EA1A0[D_800EA1C0][bank]; + } else { + if (var_a3 == 0) { + var_t2 = soundIndex; + var_t3 = sSoundBanks[bank][soundIndex].soundBits; + } else if ((u32) (sSoundBanks[bank][soundIndex].soundBits & 0xFF00) < (u32) (var_t3 & 0xFF00)) { + var_t2 = soundIndex; + var_t3 = sSoundBanks[bank][soundIndex].soundBits; } - if (var_v0_2 == temp_a0) { - if ((temp_a1_2 & 0x08000000) || (temp_a1_2 & 0x40000) || (var_t2 == var_v1)) { - temp_s0_2 = &var_t1[var_v1]; - if ((temp_s0_2->soundBits & 0x80000) && (temp_s0_2->soundStatus != 1)) { - sp4F = var_t5; - sp3C = var_t3; - sp43 = var_t2; - sp30 = var_t1; - sp4D = var_a3; - sp48 = var_a2; - func_800C40F0(temp_s0_2->unk2C); - } - temp_s0_2->cameraId = var_a2->cameraId; - temp_s0_2->soundBits = var_a2->soundBits; - temp_s0_2->freshness = 2; - temp_s0_2->soundStatus = (u8) ((u32) (var_a2->soundBits & 0x01000000) >> 0x18); - temp_s0_2->unk10 = var_a2->unk0C; - temp_s0_2->unk14 = var_a2->unk10; - temp_s0_2->unk18 = (s8 *) var_a2->unk14; + var_a3++; + if (var_a3 == D_800EA1A0[D_800EA1C0][bank]) { + if ((u32) (var_a2->soundBits & 0xFF00) >= (u32) (var_t3 & 0xFF00)) { + soundIndex = var_t2; + } else { + soundIndex = 0; } - var_v1 = 0; } } - var_v0 = var_v1; - if (var_v1 != 0) { - var_v1 = var_t1[var_v1].next; - var_v0 = var_v1; - } - if (var_v0 != 0xFF) { - if (var_v0 == 0) { - sp3C = var_t3; - sp43 = var_t2; - } else { - goto loop_4; + if (var_a3 == D_800EA1A0[D_800EA1C0][bank]) { + if ((var_a2->soundBits & 0x08000000) || (var_a2->soundBits & 0x40000) || (soundIndex == var_t2)) { + if ((sSoundBanks[bank][soundIndex].soundBits & 0x80000) && (sSoundBanks[bank][soundIndex].soundStatus != 1)) { + func_800C40F0(sSoundBanks[bank][soundIndex].unk2C); + } + sSoundBanks[bank][soundIndex].cameraId = var_a2->cameraId; + sSoundBanks[bank][soundIndex].soundBits = var_a2->soundBits; + sSoundBanks[bank][soundIndex].soundStatus = ((var_a2->soundBits & 0x01000000) >> 0x18); + sSoundBanks[bank][soundIndex].freshness = 2; + sSoundBanks[bank][soundIndex].unk10 = var_a2->unk0C; + sSoundBanks[bank][soundIndex].unk14 = var_a2->unk10; + sSoundBanks[bank][soundIndex].unk18 = var_a2->unk14; } + soundIndex = 0; } } - temp_a3 = &sSoundBankFreeListFront[var_t5]; - temp_a1_3 = *temp_a3; - temp_t1 = sSoundBanks[var_t5]; - temp_t0 = &temp_t1[temp_a1_3]; - temp_v1 = temp_t0->next; - if ((temp_v1 != 0xFF) && (var_v0 != 0)) { - temp_s0_3 = &temp_t1[temp_a1_3 & 0xFF]; - temp_s0_3->unk00 = var_a2->position; - temp_s0_3->unk04 = var_a2->position + 4; - temp_s0_3->unk08 = var_a2->position + 8; - temp_s0_3->cameraId = var_a2->cameraId; - temp_s0_3->unk10 = var_a2->unk0C; - temp_s0_3->unk14 = var_a2->unk10; - temp_s0_3->unk18 = (s8 *) var_a2->unk14; - temp_s0_3->soundBits = var_a2->soundBits; - temp_s0_3->freshness = 2; - temp_v0_2 = &sSoundBankUsedListBack[var_t5]; - temp_a0_2 = *temp_v0_2; - temp_s0_3->soundStatus = (u8) ((u32) (var_a2->soundBits & 0x01000000) >> 0x18); - temp_s0_3->prev = temp_a0_2; - temp_t1[temp_a0_2].next = temp_a1_3; - temp_t6_2 = temp_t0->next; - *temp_v0_2 = temp_a1_3; - *temp_a3 = temp_t6_2; - temp_t1[temp_t6_2 & 0xFF].prev = 0xFF; - temp_s0_3->next = 0xFF; - return; + if (soundIndex != 0) { + soundIndex = sSoundBanks[bank][soundIndex].next; } - if (temp_v1 == 0xFF) { - temp_v0_3 = var_a2->position; - if (D_800EA1C8 != temp_v0_3) { - temp_v0_3->unk4 = 100000.0f; - } + } + if ((sSoundBanks[bank][sSoundBankFreeListFront[bank]].next != 0xFF) && (soundIndex != 0)) { + soundIndex = sSoundBankFreeListFront[bank]; + sSoundBanks[bank][soundIndex].unk00 = &(*var_a2->position)[0]; + sSoundBanks[bank][soundIndex].unk04 = &(*var_a2->position)[1]; + sSoundBanks[bank][soundIndex].unk08 = &(*var_a2->position)[2]; + sSoundBanks[bank][soundIndex].cameraId = var_a2->cameraId; + sSoundBanks[bank][soundIndex].unk10 = var_a2->unk0C; + sSoundBanks[bank][soundIndex].unk14 = var_a2->unk10; + sSoundBanks[bank][0, soundIndex].unk18 = var_a2->unk14; + sSoundBanks[bank][soundIndex].soundBits = var_a2->soundBits; + sSoundBanks[bank][soundIndex].soundStatus = (u8) ((u32) (var_a2->soundBits & 0x01000000) >> 0x18); + sSoundBanks[bank][soundIndex].freshness = 2; + sSoundBanks[bank][soundIndex].prev = sSoundBankUsedListBack[bank]; + sSoundBanks[bank][sSoundBankUsedListBack[bank]].next = sSoundBankFreeListFront[bank]; + sSoundBankUsedListBack[bank] = sSoundBankFreeListFront[bank]; + sSoundBankFreeListFront[bank] = sSoundBanks[bank][sSoundBankFreeListFront[bank]].next; + sSoundBanks[bank][sSoundBankFreeListFront[bank]].prev = 0xFF; + sSoundBanks[bank][soundIndex].next = 0xFF; + } else if (sSoundBanks[bank][sSoundBankFreeListFront[bank]].next == 0xFF) { + if (D_800EA1C8 != *var_a2->position) { + (*var_a2->position)[1] = 100000.0f; } } } @@ -1589,264 +1429,151 @@ void delete_sound_from_bank(u8 bankId, u8 soundId) { } // Guessing this is `select_current_sounds`? -#ifdef MIPS_TO_C -//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Oct-17-2023 +#ifdef NON_MATCHING +// https://decomp.me/scratch/cqBii +struct why { + u32 priority; + u8 soundIndex; +}; void func_800C4888(u8 bankId) { - u8 spCE; - u8 spCC; - ? sp7C; - struct_D_80192AB8_entry *sp70; - struct SoundCharacteristics *sp6C; - struct SoundCharacteristics *sp68; - s32 sp60; - f32 *temp_v0; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f2; - f32 var_f0; - s32 temp_a2; - s32 temp_at; - s32 temp_s5; - s32 temp_t6; - s32 temp_t6_2; - s32 temp_t7; - s32 temp_t7_2; - s32 temp_t7_3; - s32 temp_t8; - s32 temp_t8_3; - s32 temp_t8_4; - s32 temp_t9; - s32 temp_v0_3; - s32 temp_v0_4; - s32 temp_v0_5; - s32 var_a1; - s32 var_a1_2; - s32 var_a1_3; - s32 var_s0; - s32 var_s0_2; - s32 var_s2; - s32 var_t3; - s32 var_t3_2; - s32 var_t3_3; - s32 var_v1; - struct SoundCharacteristics *temp_a0_2; - struct SoundCharacteristics *temp_t2; - struct SoundCharacteristics *temp_v0_7; - struct_D_80192AB8_entry *temp_s3; - struct_D_80192AB8_entry *var_a2; - u32 temp_t8_2; - u32 temp_v0_2; - u8 temp_a1; - u8 temp_a3_3; - u8 temp_a3_4; - u8 temp_t4; - u8 temp_v1; - u8 var_s3; - u8 var_t0; + u8 i; + u8 j; + u8 k; + u8 latestSoundIndex; + u8 var_s2; + u8 var_v1; + u8 soundIndex; u8 var_t1; - u8 var_t2; - u8 var_v1_2; - void *temp_a0; - void *temp_a0_3; - void *temp_a0_4; - void *temp_a3; - void *temp_a3_2; - void *temp_v0_6; + u8 someTemp; + f32 var_f0; + s32 requestedPriority; + struct why sp7C[8]; + s32 temp_t8; + struct SoundCharacteristics *temp_t2; - temp_s5 = bankId & 0xFF; var_s2 = 0; - var_t3 = 0; - do { - temp_t7 = (var_t3 + 1) & 0xFF; - temp_at = temp_t7 < 8; - temp_a3 = &sp7C + (var_t3 * 8); - var_t3 = temp_t7; - temp_a3->unk0 = 0x7FFFFFFF; - temp_a3->unk4 = 0xFFU; - } while (temp_at != 0); - var_s3 = sSoundBanks[temp_s5]->next; - var_s0 = 0; - if (var_s3 != 0xFF) { - sp6C = sSoundBanks[temp_s5]; - do { - temp_t2 = &sp6C[var_s3]; - if ((temp_t2->soundStatus == 1) && ((temp_t2->soundBits & 0x08000000) == 0x08000000)) { - temp_t2->freshness -= 1; - } - if (temp_t2->freshness == 0) { - delete_sound_from_bank(temp_s5 & 0xFF, var_s3 & 0xFF); - } else if (temp_t2->soundStatus != 0) { - temp_v0 = temp_t2->unk00; - if (D_800EA1C8 == temp_v0) { - temp_t2->distance = 0.0f; - } else { - temp_f2 = *temp_v0; - temp_f0 = *temp_t2->unk08; - temp_t2->distance = (temp_f0 * temp_f0) + (temp_f2 * temp_f2); - } - temp_v0_2 = temp_t2->soundBits; - temp_t8 = ((u32) (temp_v0_2 & 0xFF00) >> 8) & 0xFF; - if (temp_v0_2 & 0x100000) { - temp_v0_3 = 0xFFU - temp_t8; - temp_t2->priority = temp_v0_3 * temp_v0_3 * 0x5A4; - } else { - temp_v0_4 = 0xFFU - temp_t8; - temp_t8_2 = (u32) temp_t2->distance + (temp_v0_4 * temp_v0_4 * 0x5A4); - temp_t2->priority = temp_t8_2; - temp_f0_2 = *temp_t2->unk08; - if (temp_f0_2 > 0.0f) { - temp_t2->priority = temp_t8_2 + (s32) (temp_f0_2 * 6.0f); - } - } - temp_t8_3 = ((u32) (temp_t2->soundBits & 0x30000) >> 0x10) & 0xFF; - if (temp_t8_3 != 0) { - var_f0 = 4000000.0f / (f32) (temp_t8_3 * temp_t8_3); - } else { - var_f0 = 1e10f; - } - if (var_f0 < temp_t2->distance) { - if (temp_t2->soundStatus == 4) { - sp68 = temp_t2; - func_800CBBE8((temp_t2->unk2C << 8) | 0x06020000, 0); - if (temp_t2->soundBits & 0x08000000) { - delete_sound_from_bank(temp_s5 & 0xFF, var_s3 & 0xFF); - var_s3 = var_s0 & 0xFF; - } - } - } else { - var_t3_2 = 0; - temp_t4 = (*D_800EA188)[(D_800EA1C0 * 6) + temp_s5]; - if ((s32) temp_t4 > 0) { - do { - temp_a3_2 = &sp7C + (var_t3_2 * 8); - temp_v0_5 = temp_t4 - 1; - var_a1 = temp_v0_5 & 0xFF; - temp_a2 = var_t3_2; - if ((u32) temp_a3_2->unk0 >= (u32) temp_t2->priority) { - if (var_s2 < (s32) temp_t4) { - var_s2 = (var_s2 + 1) & 0xFF; - } - var_t3_2 = temp_t4 & 0xFF; - if (temp_a2 < (temp_v0_5 & 0xFF)) { - var_v1 = var_a1; - do { - temp_v0_6 = &sp7C + (var_v1 * 8); - temp_a0 = &sp7C + (var_a1 * 8); - temp_a0->unk0 = (s32) temp_v0_6->unk-8; - var_v1 = (var_a1 - 1) & 0xFF; - var_a1 = var_v1; - temp_a0->unk4 = (u8) temp_v0_6->unk-4; - } while (temp_a2 < var_v1); - } - temp_a3_2->unk0 = temp_t2->priority; - temp_a3_2->unk4 = var_s3; - } - temp_t9 = (var_t3_2 + 1) & 0xFF; - var_t3_2 = temp_t9; - } while (temp_t9 < (s32) temp_t4); - } - } - var_s0 = var_s3 & 0xFF; - } - var_s3 = sp6C[var_s0].next; - } while (var_s3 != 0xFF); + for (i = 0; i < 8; i++) { + sp7C[i].priority = 0x7FFFFFFF; + sp7C[i].soundIndex = 0xFF; } - var_t1 = (*D_800EA188)[(D_800EA1C0 * 6) + temp_s5]; - var_t3_3 = 0; - if (var_s2 > 0) { - sp6C = sSoundBanks[temp_s5]; - do { - temp_t7_2 = (var_t3_3 + 1) & 0xFF; - temp_v0_7 = &sp6C[(&sp7C + (var_t3_3 * 8))->unk4]; - temp_v1 = temp_v0_7->soundStatus; - if (temp_v1 == 1) { - temp_v0_7->soundStatus = 2; - } else if (temp_v1 == 4) { - temp_v0_7->soundStatus = 3; - } - var_t3_3 = temp_t7_2; - } while (temp_t7_2 < var_s2); - var_t3_3 = 0; - } - var_t0 = var_t1; - if ((s32) var_t1 > 0) { - var_a2 = D_80192AB8[temp_s5]; - do { - temp_s3 = &var_a2[var_t3_3]; - temp_a1 = temp_s3->unk4; - var_v1_2 = 0; - if (temp_a1 == 0xFF) { - var_v1_2 = 1; + latestSoundIndex = 0; + soundIndex = sSoundBanks[bankId][0].next; + while (soundIndex != 0xFF) { + temp_t2 = &sSoundBanks[bankId][soundIndex]; + if ((temp_t2->soundStatus == 1) && ((temp_t2->soundBits & 0x08000000) == 0x08000000)) { + temp_t2->freshness -= 1; + } + if (temp_t2->freshness == 0) { + delete_sound_from_bank(bankId, soundIndex); + } else if (temp_t2->soundStatus != 0) { + if (D_800EA1C8 == *temp_t2->unk00) { + temp_t2->distance = 0.0f; } else { - temp_a0_2 = &sSoundBanks[temp_s5][temp_a1]; - temp_a3_3 = temp_a0_2->soundStatus; - if (temp_a3_3 == 4) { - if (temp_a0_2->soundBits & 0x08000000) { - sp70 = var_a2; - sp60 = (s32) var_t0; - spCE = var_t1; - spCC = (u8) var_t3_3; - delete_sound_from_bank(temp_s5 & 0xFF, temp_a1); - var_v1_2 = 1; - } else { - temp_a0_2->soundStatus = 1; - var_v1_2 = 1; - } - } else if (temp_a3_3 == 0) { - temp_s3->unk4 = 0xFFU; - var_v1_2 = 1; - } else { - var_a1_2 = 0; - if ((s32) var_t0 > 0) { - do { - temp_a0_3 = &sp7C + (var_a1_2 * 8); - if (temp_a1 == temp_a0_3->unk4) { - temp_a0_3->unk4 = 0xFFU; - var_a1_2 = var_t1 & 0xFF; - } - temp_t7_3 = (var_a1_2 + 1) & 0xFF; - var_a1_2 = temp_t7_3; - } while (temp_t7_3 < (s32) var_t0); - } + temp_t2->distance = ((*temp_t2->unk00)[0] * (*temp_t2->unk00)[0]) + (*temp_t2->unk08 * *temp_t2->unk08); + } + requestedPriority = ((u32) (temp_t2->soundBits & 0xFF00) >> 8) & 0xFF; + if (temp_t2->soundBits & 0x100000) { + temp_t2->priority = (0xFF - requestedPriority) * (0xFF - requestedPriority) * 0x5A4; // 0x5a4 = 1444 = 38 * 38 + } else { + temp_t2->priority = (u32) temp_t2->distance + ((0xFF - requestedPriority) * (0xFF - requestedPriority) * 0x5A4); // 0x5a4 = 1444 = 38 * 38 + if (*temp_t2->unk08 > 0.0f) { + temp_t2->priority += (s32) (*temp_t2->unk08 * 6.0f); } } - var_t2 = var_v1_2; - if (var_v1_2 == 1) { - var_a1_3 = 0; - if ((s32) var_t0 > 0) { - do { - temp_a0_4 = &sp7C + (var_a1_3 * 8); - temp_a3_4 = temp_a0_4->unk4; - if ((temp_a3_4 != 0xFF) && (sSoundBanks[temp_s5][temp_a3_4].soundStatus != 3)) { - var_s0_2 = 0; - if ((s32) var_t0 > 0) { - do { - if (temp_a3_4 == var_a2[var_s0_2].unk4) { - var_v1_2 = 0; - var_s0_2 = var_t1 & 0xFF; - } - temp_t6_2 = (var_s0_2 + 1) & 0xFF; - var_s0_2 = temp_t6_2; - } while (temp_t6_2 < (s32) var_t0); - var_t2 = var_v1_2; - } - if (var_t2 == 1) { - temp_s3->unk4 = temp_a3_4; - temp_a0_4->unk4 = 0xFFU; - var_a1_3 = (var_t0 + 1) & 0xFF; - } + temp_t8 = ((u32) (temp_t2->soundBits & 0x30000) >> 0x10) & 0xFF; + if (temp_t8 != 0) { + var_f0 = 4000000.0f / (f32) (temp_t8 * temp_t8); + } else { + var_f0 = 1e10f; + } + if (var_f0 < temp_t2->distance) { + if (temp_t2->soundStatus == 4) { + func_800CBBE8((temp_t2->unk2C << 8) | 0x06020000, 0); + if (temp_t2->soundBits & 0x08000000) { + delete_sound_from_bank(bankId, soundIndex); + soundIndex = latestSoundIndex; + } + } + } else { + var_t1 = D_800EA188[D_800EA1C0][bankId]; + for (i = 0; i < var_t1; i++) { + if (sp7C[i].priority >= temp_t2->priority) { + if (var_s2 < var_t1) { + var_s2++; } - temp_t8_4 = (var_a1_3 + 1) & 0xFF; - var_a1_3 = temp_t8_4; - } while (temp_t8_4 < (s32) var_t0); - } - if (var_t0 == var_a1_3) { - temp_s3->unk4 = 0xFFU; + for (j = var_t1 - 1; j > i; j--) { + sp7C[j].priority = sp7C[j - 1].priority; + sp7C[j].soundIndex = sp7C[j - 1].soundIndex; + } + sp7C[i].priority = temp_t2->priority; + sp7C[i].soundIndex = soundIndex; + i = var_t1; + } } } - temp_t6 = (var_t3_3 + 1) & 0xFF; - var_t3_3 = temp_t6; - } while (temp_t6 < (s32) var_t0); + latestSoundIndex = soundIndex; + } + soundIndex = sSoundBanks[bankId][latestSoundIndex].next; + } + var_t1 = D_800EA188[D_800EA1C0][bankId]; + for (i = 0; i < var_s2; i++) { + someTemp = sSoundBanks[bankId][sp7C[i].soundIndex].soundStatus; + if (someTemp == 1) { + sSoundBanks[bankId][sp7C[i].soundIndex].soundStatus = 2; + } else if (someTemp == 4) { + sSoundBanks[bankId][sp7C[i].soundIndex].soundStatus = 3; + } + } + for (i = 0; i < var_t1; i++) { + var_v1 = 0; + soundIndex = D_80192AB8[bankId][i][4]; + if (soundIndex == 0xFF) { + var_v1 = 1; + } else { + temp_t2 = &sSoundBanks[bankId][soundIndex]; + if (temp_t2->soundStatus == 4) { + if (temp_t2->soundBits & 0x08000000) { + delete_sound_from_bank(bankId, soundIndex); + var_v1 = 1; + } else { + temp_t2->soundStatus = 1; + var_v1 = 1; + } + } else if (temp_t2->soundStatus == 0) { + D_80192AB8[bankId][i][4] = 0xFF; + var_v1 = 1; + } else { + for (j = 0; j < var_t1; j++) { + if (soundIndex == sp7C[j].soundIndex) { + sp7C[j].soundIndex = 0xFF; + j = var_t1; + } + } + } + } + var_s2--; + if (var_v1 == 1) { + for (j = 0; j < var_t1; j++) { + soundIndex = sp7C[j].soundIndex; + if ((soundIndex != 0xFF) && (sSoundBanks[bankId][soundIndex].soundStatus != 3)) { + for (k = 0; k < var_t1; k++) { + if (soundIndex == D_80192AB8[bankId][k][4]) { + var_v1 = 0; + k = var_t1; + } + } + if (var_v1 == 1) { + D_80192AB8[bankId][i][4] = soundIndex; + sp7C[j].soundIndex = 0xFF; + j = var_t1 + 1; + var_s2--; + } + } + } + if (j == var_t1) { + D_80192AB8[bankId][i][4] = 0xFF; + } + } } } #else @@ -1896,7 +1623,7 @@ GLOBAL_ASM("asm/non_matchings/audio/external/func_800C4FE4.s") // Seems somewhat similar to certain parts of `select_current_sounds` from SM64 void func_800C5278(u8 bankId) { - s32 stackPadding0; + UNUSED s32 stackPadding0; u8 soundId; struct SoundCharacteristics sp60; @@ -1962,7 +1689,7 @@ void func_800C550C(Vec3f *arg0) { } void func_800C5578(Vec3f *arg0, u32 soundBits) { - s32 stackPadding0; + UNUSED s32 stackPadding0; u8 bankId; u8 next; u8 curr; @@ -1993,7 +1720,7 @@ void func_800C5578(Vec3f *arg0, u32 soundBits) { } void func_800C56F0(u32 soundBits) { - s32 stackPadding0; + UNUSED s32 stackPadding0; u8 bankId; u8 next; u8 curr; @@ -2079,7 +1806,7 @@ void sound_init(void) { sSoundBankUsedListBack[var_v0] = 0; sSoundBankFreeListFront[var_v0] = 1; sNumSoundsInBank[var_v0] = 0; - sSoundBankDisabled[var_v0] = FALSE; + sSoundBankDisabled[var_v0] = false; D_80192C48[var_v0].current = 1.0f; D_80192C48[var_v0].remainingFrames = 0; } @@ -2203,15 +1930,15 @@ void func_800C5E38(u8 playerId) { } void func_800C6108(u8 playerId) { - Player *temp_v1; + Player *player; - temp_v1 = &gPlayers[playerId]; - D_800E9E64[playerId] = (temp_v1->unk_098 / D_800E9DC4[playerId]) + D_800E9DD4[playerId]; - if ((temp_v1->unk_098 < 1800.0f) && ((temp_v1->unk_044 & 0x20) != 0x20)) { - D_800E9E64[playerId] = (temp_v1->unk_098 / D_800E9F7C[playerId].unk_34) + D_800E9F7C[playerId].unk_28; + player = &gPlayers[playerId]; + D_800E9E64[playerId] = (player->unk_098 / D_800E9DC4[playerId]) + D_800E9DD4[playerId]; + if ((player->unk_098 < 1800.0f) && ((player->unk_044 & 0x20) != 0x20)) { + D_800E9E64[playerId] = (player->unk_098 / D_800E9F7C[playerId].unk_34) + D_800E9F7C[playerId].unk_28; if(D_800E9EC4){} // ? } - if (temp_v1->unk_094 > 4.75f) { + if (player->unk_094 > 4.75f) { if (D_800E9EB4[playerId] < (D_800E9F7C[playerId].unk_18 + 0.4f)) { D_800E9DE4[playerId] += 0.005f; } @@ -2219,11 +1946,11 @@ void func_800C6108(u8 playerId) { D_800E9DE4[playerId] = 0.0f; } if (gPlayers[playerId].unk_0C0 > 0) { - D_800E9E54[playerId] = (f32) temp_v1->unk_0C0; + D_800E9E54[playerId] = (f32) player->unk_0C0; } else { - D_800E9E54[playerId] = (f32) -temp_v1->unk_0C0; + D_800E9E54[playerId] = (f32) -player->unk_0C0; } - if ((temp_v1->effects & 0x10) == 0x10) { + if ((player->effects & 0x10) == 0x10) { D_800E9EB4[playerId] = D_800E9E64[playerId] + D_800E9DE4[playerId]; } else { D_800E9EB4[playerId] = D_800E9E64[playerId] + D_800E9DE4[playerId] - (D_800E9E54[playerId] / 12000.0f); @@ -2336,7 +2063,7 @@ void func_800C6758(u8 playerId) { void func_800C683C(u8 cameraId) { if ((D_800EA108 == 0) && (D_800EA0EC[cameraId] == 0)) { if (D_800E9E74[cameraId] != D_800E9E84[cameraId]) { - func_800C5578(D_800E9F7C[cameraId].pos, D_800E9E94[cameraId]); + func_800C5578(&D_800E9F7C[cameraId].pos, D_800E9E94[cameraId]); switch (D_800E9E74[cameraId]) { case 3: play_sound(SOUND_ACTION_TYRE_SQUEAL, &D_800E9F7C[cameraId].pos, cameraId, &D_800E9F14[cameraId], &D_800E9EF4[cameraId], (u8 *) &D_800E9F7C[cameraId].unk_14); @@ -2453,7 +2180,7 @@ void func_800C683C(u8 cameraId) { D_800E9E94[cameraId] = SOUND_ARG_LOAD(0x01, 0x00, 0xF0, 0x2B); break; default: - func_800C5578(D_800E9F7C[cameraId].pos, D_800E9E94[cameraId]); + func_800C5578(&D_800E9F7C[cameraId].pos, D_800E9E94[cameraId]); break; } } @@ -2466,7 +2193,7 @@ void func_800C70A8(u8 playerId) { D_800E9E74[playerId] = 0; if ((D_800E9E54[playerId] > 3500.0f) || ((gPlayers[playerId].effects & 0x10) == 0x10)) { D_800E9E74[playerId] = 1; - switch (gPlayers[playerId].boundingBoxCorners[AUDIO_LEFT_TYRE].surfaceType) { + switch (gPlayers[playerId].tyres[AUDIO_LEFT_TYRE].surfaceType) { case DIRT: /* switch 1 */ D_800E9E74[playerId] = 0x0000000D; break; @@ -2498,7 +2225,7 @@ void func_800C70A8(u8 playerId) { } if ((gPlayers[playerId].effects & 0x10) == 0x10) { D_800E9E74[playerId] = 2; - switch (gPlayers[playerId].boundingBoxCorners[AUDIO_LEFT_TYRE].surfaceType) { /* switch 2 */ + switch (gPlayers[playerId].tyres[AUDIO_LEFT_TYRE].surfaceType) { /* switch 2 */ case DIRT: /* switch 2 */ D_800E9E74[playerId] = 0x0000000D; break; @@ -2528,7 +2255,7 @@ void func_800C70A8(u8 playerId) { break; } } - switch (gPlayers[playerId].boundingBoxCorners[AUDIO_LEFT_TYRE].surfaceType) { /* switch 3 */ + switch (gPlayers[playerId].tyres[AUDIO_LEFT_TYRE].surfaceType) { /* switch 3 */ case GRASS: /* switch 3 */ if (D_800E9E74[playerId] == 6) { D_800E9E74[playerId] = 4; @@ -2588,7 +2315,7 @@ void func_800C70A8(u8 playerId) { D_800E9E74[playerId] = 0x0000001B; break; } - switch (gPlayers[playerId].boundingBoxCorners[AUDIO_RIGHT_TYRE].surfaceType) { /* switch 4 */ + switch (gPlayers[playerId].tyres[AUDIO_RIGHT_TYRE].surfaceType) { /* switch 4 */ case GRASS: /* switch 4 */ if (D_800E9E74[playerId] == 5) { D_800E9E74[playerId] = 4; @@ -2672,7 +2399,7 @@ void func_800C76C0(u8 playerId) { func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28)); func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFF, 0x2C)); func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x4C)); - func_800C5578(D_800E9F7C[playerId].pos, D_800E9E94[playerId]); + func_800C5578(&D_800E9F7C[playerId].pos, D_800E9E94[playerId]); D_800E9E74[playerId] = 0; switch (gModeSelection) { /* irregular */ case GRAND_PRIX: @@ -3161,7 +2888,7 @@ void func_800C8F80(u8 arg0, u32 soundBits) { } void func_800C9018(u8 arg0, u32 soundBits) { - func_800C5578(D_800E9F7C[arg0].pos, soundBits); + func_800C5578(&D_800E9F7C[arg0].pos, soundBits); } void func_800C9060(u8 playerId, u32 soundBits) { @@ -3312,11 +3039,11 @@ void func_800C94A4(u8 playerId) { } void func_800C97C4(u8 arg0) { - func_800C5578(D_800E9F7C[arg0].pos, gPlayers[arg0].characterId + SOUND_ARG_LOAD(0x01, 0x04, 0xFF, 0x00)); - func_800C5578(D_800E9F7C[arg0].pos, gPlayers[arg0].characterId + SOUND_ARG_LOAD(0x01, 0x04, 0xFF, 0x14)); - func_800C5578(D_800E9F7C[arg0].pos, gPlayers[arg0].characterId + SOUND_ARG_LOAD(0x01, 0x04, 0xFF, 0x2E)); - func_800C5578(D_800E9F7C[arg0].pos, gPlayers[arg0].characterId + SOUND_ARG_LOAD(0x01, 0x04, 0xFF, 0x36)); - func_800C5578(D_800E9F7C[arg0].pos, gPlayers[arg0].characterId + SOUND_ARG_LOAD(0x01, 0x04, 0xFF, 0x3E)); + func_800C5578(&D_800E9F7C[arg0].pos, gPlayers[arg0].characterId + SOUND_ARG_LOAD(0x01, 0x04, 0xFF, 0x00)); + func_800C5578(&D_800E9F7C[arg0].pos, gPlayers[arg0].characterId + SOUND_ARG_LOAD(0x01, 0x04, 0xFF, 0x14)); + func_800C5578(&D_800E9F7C[arg0].pos, gPlayers[arg0].characterId + SOUND_ARG_LOAD(0x01, 0x04, 0xFF, 0x2E)); + func_800C5578(&D_800E9F7C[arg0].pos, gPlayers[arg0].characterId + SOUND_ARG_LOAD(0x01, 0x04, 0xFF, 0x36)); + func_800C5578(&D_800E9F7C[arg0].pos, gPlayers[arg0].characterId + SOUND_ARG_LOAD(0x01, 0x04, 0xFF, 0x3E)); } void func_800C98B8(Vec3f position, Vec3f velocity, u32 soundBits) { @@ -3342,7 +3069,7 @@ void func_800C99E0(Vec3f arg0, s32 soundBits) { for(temp_t9 = 0; temp_t9 < D_800EA1C0 + 1; temp_t9++) { temp_v0 = func_800C21E8(arg0, soundBits); if (temp_v0 != NULL) { - func_800C5578(*temp_v0, soundBits); + func_800C5578(temp_v0, soundBits); } } } @@ -3431,7 +3158,7 @@ void func_800C9EF4(Vec3f arg0, u32 soundBits) { for (i = 0; i < D_800EA1C0 + 1; i++) { temp = func_800C21E8(arg0, soundBits); if (temp != NULL) { - func_800C5578(*temp, soundBits); + func_800C5578(temp, soundBits); } } } @@ -3659,7 +3386,7 @@ void func_800CA984(u8 arg0) { void func_800CAACC(u8 playerId) { if ((u8) D_800EA108 == 0) { - func_800C5578(*func_800C21E8(gPlayers[playerId].pos, SOUND_ITEM_STAR), SOUND_ITEM_STAR); + func_800C5578(func_800C21E8(gPlayers[playerId].pos, SOUND_ITEM_STAR), SOUND_ITEM_STAR); } } diff --git a/src/audio/external.h b/src/audio/external.h index 14c4c7640..122ef8950 100644 --- a/src/audio/external.h +++ b/src/audio/external.h @@ -1,7 +1,7 @@ #ifndef AUDIO_EXTERNAL_H #define AUDIO_EXTERNAL_H -#include "common_structs.h" +#include #include "camera.h" #define ADSR_STATE_DISABLED 0 @@ -52,7 +52,7 @@ struct Sound { /* 0x09 */ // u8 compilerPadding0[3]; /* 0x0C */ f32 *unk0C; /* 0x10 */ f32 *unk10; - /* 0x14 */ u8 *unk14; + /* 0x14 */ s8 *unk14; }; // size = 0x18 struct Unk_800E9F7C { @@ -150,12 +150,12 @@ typedef struct { /* 0x011 */ u8 unk_011; /* 0x012 */ u8 unk_012; /* 0x013 */ u8 unk_013; - /* 0x014 */ s32 unk_014; + /* 0x014 */ u32 unk_014; /* 0x018 */ u16 unk_018; /* 0x01A */ u16 unk_01A; - /* 0x01C */ s32 unk_01C; - /* 0x020 */ s32 unk_020; - /* 0x024 */ s32 unk_024; + /* 0x01C */ f32 unk_01C; + /* 0x020 */ f32 unk_020; + /* 0x024 */ f32 unk_024; /* 0x028 */ u16 unk_028; /* 0x02A */ u16 unk_02A; /* 0x02C */ u32 unk_02C[5]; // Array size guessed @@ -229,7 +229,7 @@ void func_800C3F70(void); void func_800C400C(void); void func_800C4084(u16); void func_800C40F0(u8); -void play_sound(u32, Vec3f*, u8, f32*, f32*, u8*); +void play_sound(u32, Vec3f*, u8, f32*, f32*, s8*); void func_800C41CC(u8, struct SoundCharacteristics*); void func_800C4398(void); void delete_sound_from_bank(u8, u8); diff --git a/src/audio/heap.c b/src/audio/heap.c index 59eadb63b..33589aaa8 100644 --- a/src/audio/heap.c +++ b/src/audio/heap.c @@ -126,8 +126,8 @@ void discard_bank(s32 bankId) { if (note->priority >= NOTE_PRIORITY_MIN) { // eu_stubbed_printf_3("Kill Voice %d (ID %d) %d\n", note->waveId, bankId, note->priority); // eu_stubbed_printf_0("Warning: Running Sequence's data disappear!\n"); - note->parentLayer->enabled = FALSE; // is 0x48, should be 0x44 - note->parentLayer->finished = TRUE; + note->parentLayer->enabled = false; // is 0x48, should be 0x44 + note->parentLayer->finished = true; } note_disable(note); audio_list_remove(¬e->listItem); @@ -194,8 +194,8 @@ void func_800B90E0(struct SoundAllocPool *pool) { // inspired by sound_init_main_pools in sm64 void sound_init_main_pools(s32 arg0) { - sound_alloc_pool_init(&gAudioInitPool, &D_803B71B0, arg0); - sound_alloc_pool_init(&gAudioSessionPool, D_803B71B0 + arg0, gAudioHeapSize - arg0); + sound_alloc_pool_init(&gAudioInitPool, &gAudioHeap, arg0); + sound_alloc_pool_init(&gAudioSessionPool, gAudioHeap + arg0, gAudioHeapSize - arg0); } // inspired by session_pools_init in sm64 @@ -380,7 +380,7 @@ void *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg pool = &arg0->temporary.pool; if (tp->entries[tp->nextSide].id != (s8)-1) { table[tp->entries[tp->nextSide].id] = SOUND_LOAD_STATUS_NOT_LOADED; - if (isSound == TRUE) { + if (isSound == true) { discard_bank(tp->entries[tp->nextSide].id); } } diff --git a/src/audio/heap.h b/src/audio/heap.h index d759eab18..6a8999396 100644 --- a/src/audio/heap.h +++ b/src/audio/heap.h @@ -116,7 +116,6 @@ void *unk_pool1_lookup(s32 poolIdx, s32 id); void func_800BA8B0(s32, s32); extern s32 D_800EA5D0; -extern u8 D_803B71B0[]; extern s32 gMaxAudioCmds; extern s16 gTempoInternalToExternal; diff --git a/src/audio/internal.h b/src/audio/internal.h index 5a96d950b..85ea368c9 100644 --- a/src/audio/internal.h +++ b/src/audio/internal.h @@ -3,7 +3,6 @@ #include -#include "types.h" #define SEQUENCE_PLAYERS 4 #define SEQUENCE_CHANNELS 48 diff --git a/src/audio/load.c b/src/audio/load.c index f43d3d4a8..c4114c260 100644 --- a/src/audio/load.c +++ b/src/audio/load.c @@ -109,7 +109,7 @@ char loadAudioString38[] = "---------------------------------------\n"; void audio_dma_copy_immediate(u8 *devAddr, void *vAddr, size_t nbytes) { // eu_stubbed_printf_3("Romcopy %x -> %x ,size %x\n", devAddr, vAddr, nbytes); osInvalDCache(vAddr, nbytes); - osPiStartDma(&D_803B6740, OS_MESG_PRI_HIGH, OS_READ, devAddr, vAddr, nbytes, &D_803B6720); + osPiStartDma(&D_803B6740, OS_MESG_PRI_HIGH, OS_READ, (uintptr_t)devAddr, vAddr, nbytes, &D_803B6720); osRecvMesg(&D_803B6720, NULL, OS_MESG_BLOCK); // eu_stubbed_printf_0("Romcopyend\n"); } @@ -164,7 +164,7 @@ void decrease_sample_dma_ttls() { } void *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef) { - s32 hasDma = FALSE; + s32 hasDma = false; struct SharedDma *dma; uintptr_t dmaDevAddr; u32 transfer; @@ -199,7 +199,7 @@ void *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef) { // TTL 60 is pretty large. dmaIndex = sSampleDmaReuseQueue2[sSampleDmaReuseQueueTail2++]; dma = &sSampleDmas[dmaIndex]; - hasDma = TRUE; + hasDma = true; } } else { dma = &sSampleDmas[*dmaIndexRef]; @@ -231,7 +231,7 @@ void *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef) { // be empty, since TTL 2 is so small. dmaIndex = sSampleDmaReuseQueue1[sSampleDmaReuseQueueTail1++]; dma = &sSampleDmas[dmaIndex]; - hasDma = TRUE; + hasDma = true; } transfer = dma->bufSize; @@ -384,9 +384,9 @@ void patch_sound(struct AudioBankSound *sound, u8 *memBase, u8 *offsetBase) { #define PATCH(x, base) (patched = (void *)((uintptr_t) (x) + (uintptr_t) base)) if (sound->sample != NULL) { - sample = sound->sample = (struct AdpcmLoop *) PATCH(sound->sample, memBase); + sample = sound->sample = (struct AudioBankSample *) PATCH(sound->sample, memBase); if (sample->loaded == 0) { - sample->sampleAddr = (struct u8 *) PATCH(sample->sampleAddr, offsetBase); + sample->sampleAddr = (u8 *) PATCH(sample->sampleAddr, offsetBase); sample->loop = (struct AdpcmLoop *) PATCH(sample->loop, memBase); sample->book = (struct AdpcmBook *) PATCH(sample->book, memBase); sample->loaded = 1; @@ -539,7 +539,7 @@ struct AudioBank *bank_load_async(s32 bankId, s32 arg1, struct SequencePlayer *s seqPlayer->bankDmaRemaining = alloc; if (1) { } osCreateMesgQueue(&seqPlayer->bankDmaMesgQueue, &seqPlayer->bankDmaMesg, 1); - seqPlayer->bankDmaInProgress = TRUE; + seqPlayer->bankDmaInProgress = true; audio_dma_partial_copy_async(&seqPlayer->bankDmaCurrDevAddr, &seqPlayer->bankDmaCurrMemAddr, &seqPlayer->bankDmaRemaining, &seqPlayer->bankDmaMesgQueue, &seqPlayer->bankDmaIoMesg); if (gBankLoadStatus[bankId] != 5) { gBankLoadStatus[bankId] = 1; @@ -590,7 +590,7 @@ void *sequence_dma_async(s32 seqId, s32 arg1, struct SequencePlayer *seqPlayer) audio_dma_copy_immediate(seqData, ptr, 0x00000040U); mesgQueue = &seqPlayer->seqDmaMesgQueue; osCreateMesgQueue(mesgQueue, &seqPlayer->seqDmaMesg, 1); - seqPlayer->seqDmaInProgress = TRUE; + seqPlayer->seqDmaInProgress = true; audio_dma_copy_async((uintptr_t) (seqData + 0x40), (u8*) ptr + 0x40, seqLength - 0x40, mesgQueue, &seqPlayer->seqDmaIoMesg); if (gSeqLoadStatus[seqId] != 5) { gSeqLoadStatus[seqId] = 1; @@ -612,7 +612,7 @@ u8 get_missing_bank(u32 seqId, s32 *nonNullCount, s32 *nullCount) { for (i = gAlBankSets[offset++], ret = 0; i != 0; i--) { bankId = gAlBankSets[offset++]; - if (IS_BANK_LOAD_COMPLETE(bankId) == TRUE) { + if (IS_BANK_LOAD_COMPLETE(bankId) == true) { temp = get_bank_or_seq(1, 2, bankId); } else { temp = NULL; @@ -639,7 +639,7 @@ struct AudioBank *load_banks_immediate(s32 seqId, u8 *outDefaultBank) { for (i = gAlBankSets[offset++]; i != 0; i--) { bankId = gAlBankSets[offset++]; - if (IS_BANK_LOAD_COMPLETE(bankId) == TRUE) { + if (IS_BANK_LOAD_COMPLETE(bankId) == true) { ret = get_bank_or_seq(1, 2, bankId); } else { ret = NULL; @@ -672,7 +672,7 @@ void preload_sequence(u32 seqId, u8 preloadMask) { if (preloadMask & PRELOAD_SEQUENCE) { //! @bug should be IS_SEQ_LOAD_COMPLETE - if (IS_BANK_LOAD_COMPLETE(seqId) == TRUE) { + if (IS_BANK_LOAD_COMPLETE(seqId) == true) { sequenceData = get_bank_or_seq(0, 2, seqId); } else { sequenceData = NULL; @@ -753,7 +753,7 @@ void load_sequence_internal(u32 player, u32 seqId, s32 loadAsync) { init_sequence_player(player); seqPlayer->scriptState.depth = 0; seqPlayer->delay = 0; - seqPlayer->enabled = TRUE; + seqPlayer->enabled = true; seqPlayer->seqData = sequenceData; seqPlayer->scriptState.pc = sequenceData; } @@ -769,29 +769,29 @@ extern u8 _audio_tablesSegmentRomStart; extern u8 _instrument_setsSegmentRomStart; extern u8 _sequencesSegmentRomStart; -void audio_init() { - UNUSED s8 pad[16]; - s32 i, j, k; - UNUSED s32 lim1; // lim1 unused in EU +void audio_init(void) { + s32 i; + UNUSED s32 pad[2]; + s32 j; + UNUSED s32 pad2[6]; u32 sp60[2]; - s32 UNUSED lim2, lim3; - UNUSED s32 size; + UNUSED s32 pad1[2]; + s32 aaa; + s32 size; UNUSED u64 *ptr64; - UNUSED void *data; UNUSED s32 one = 1; u8 *test; gAudioLoadLock = 0; for (i = 0; i < gAudioHeapSize / 8; i++) { - ((u64 *) D_803B71B0)[i] = 0; + ((u64 *) gAudioHeap)[i] = 0; } #ifdef TARGET_N64 // It seems boot.s doesn't clear the .bss area for audio, so do it here. - lim3 = ((uintptr_t) &D_803B71A0 - (uintptr_t) ((u64 *)((u8 *) gGfxSPTaskOutputBuffer + sizeof(gGfxSPTaskOutputBuffer))) ) / 8; - ptr64 = (u64 *)((u8 *) gGfxSPTaskOutputBuffer + sizeof(gGfxSPTaskOutputBuffer));; - for (k = lim3; k >= 0; k--) { + ptr64 = (u64 *)((u8 *) gGfxSPTaskOutputBuffer + sizeof(gGfxSPTaskOutputBuffer)); + for (i = ((uintptr_t) &D_803B71A0 - (uintptr_t) ((u64 *)((u8 *) gGfxSPTaskOutputBuffer + sizeof(gGfxSPTaskOutputBuffer))) ) / 8; i >= 0; i--) { *ptr64++ = 0; } #endif @@ -853,15 +853,15 @@ void audio_init() { gAlCtlHeader = (ALSeqFile *) sp60; test = &_audio_banksSegmentRomStart; audio_dma_copy_immediate(test, gAlCtlHeader, 0x00000010U); - size = ALIGN16(gAlCtlHeader->seqCount * sizeof(ALSeqData) + 4); + aaa = gAlCtlHeader->seqCount; + size = ALIGN16(aaa * sizeof(ALSeqData) + 4); gAlCtlHeader = soundAlloc(&gAudioInitPool, size); audio_dma_copy_immediate(test, gAlCtlHeader, size); func_800BB43C(gAlCtlHeader, test); - gCtlEntries = soundAlloc(&gAudioInitPool, size * 0xC); - for (i = 0; i < size; i++) { + gCtlEntries = soundAlloc(&gAudioInitPool, aaa * 0xC); + for (i = 0; i < aaa; i++) { audio_dma_copy_immediate(gAlCtlHeader->seqArray[i].offset, sp60, 0x00000010U); - if(size) {} - if(1) {} + gCtlEntries[i].numInstruments = sp60[0]; gCtlEntries[i].numDrums = sp60[1]; } @@ -874,7 +874,7 @@ void audio_init() { audio_dma_copy_immediate(test, gAlTbl, size); func_800BB43C(gAlTbl, test); gAlBankSets = soundAlloc(&gAudioInitPool, 0x00000100U); - audio_dma_copy_immediate(&_instrument_setsSegmentRomStart, gAlBankSets, 0x00000100U); + audio_dma_copy_immediate((u32) &_instrument_setsSegmentRomStart, gAlBankSets, 0x00000100U); sound_alloc_pool_init(&gUnkPool1.pool, soundAlloc(&gAudioInitPool, (u32) D_800EA5D8), (u32) D_800EA5D8); init_sequence_players(); gAudioLoadLock = 0x76557364; diff --git a/src/audio/playback.c b/src/audio/playback.c index 750f40873..1d8af00a6 100644 --- a/src/audio/playback.c +++ b/src/audio/playback.c @@ -28,26 +28,26 @@ void note_set_vel_pan_reverb(struct Note *note, f32 velocity, u8 pan, u8 reverbV sub->headsetPanLeft = gHeadsetPanQuantization[smallPanIndex]; sub->headsetPanRight = gHeadsetPanQuantization[ARRAY_COUNT(gHeadsetPanQuantization) - 1 - smallPanIndex]; - sub->stereoStrongRight = FALSE; - sub->stereoStrongLeft = FALSE; - sub->usesHeadsetPanEffects = TRUE; + sub->stereoStrongRight = false; + sub->stereoStrongLeft = false; + sub->usesHeadsetPanEffects = true; volLeft = gHeadsetPanVolume[pan]; volRight = gHeadsetPanVolume[127 - pan]; } else if (sub->stereoHeadsetEffects && gAudioLibSoundMode == SOUND_MODE_STEREO) { - strongRight = FALSE; - strongLeft = FALSE; + strongRight = false; + strongLeft = false; sub->headsetPanRight = 0; sub->headsetPanLeft = 0; - sub->usesHeadsetPanEffects = FALSE; + sub->usesHeadsetPanEffects = false; volLeft = gStereoPanVolume[pan]; volRight = gStereoPanVolume[127 - pan]; if (pan < 0x20) { - strongLeft = TRUE; + strongLeft = true; } else if (pan > 0x60) { - strongRight = TRUE; + strongRight = true; } sub->stereoStrongRight = strongRight; @@ -76,14 +76,14 @@ void note_set_vel_pan_reverb(struct Note *note, f32 velocity, u8 pan, u8 reverbV //! @bug for the change to UQ0.7, the if statement should also have been changed accordingly if (sub->reverbVol != reverbVol) { sub->reverbVol = reverbVol; - sub->envMixerNeedsInit = TRUE; + sub->envMixerNeedsInit = true; return; } if (sub->needsInit) { - sub->envMixerNeedsInit = TRUE; + sub->envMixerNeedsInit = true; } else { - sub->envMixerNeedsInit = FALSE; + sub->envMixerNeedsInit = false; } } @@ -130,7 +130,7 @@ struct AudioBankSound *instrument_get_audio_bank_sound(struct Instrument *instru struct Instrument *get_instrument_inner(s32 bankId, s32 instId) { struct Instrument *inst; - if (IS_BANK_LOAD_COMPLETE(bankId) == FALSE) { + if (IS_BANK_LOAD_COMPLETE(bankId) == false) { stubbed_printf("Audio: voiceman: No bank error %d\n", bankId); gAudioErrorFlags = bankId + 0x10000000; return NULL; @@ -155,7 +155,7 @@ struct Instrument *get_instrument_inner(s32 bankId, s32 instId) { struct Drum *get_drum(s32 bankId, s32 drumId) { struct Drum *drum; - if (IS_BANK_LOAD_COMPLETE(bankId) == FALSE) { + if (IS_BANK_LOAD_COMPLETE(bankId) == false) { stubbed_printf("Audio: voiceman: No bank error %d\n", bankId); gAudioErrorFlags = bankId + 0x10000000; return NULL; @@ -196,16 +196,16 @@ void note_init(struct Note *note) { } void note_disable(struct Note *note) { - if (note->noteSubEu.needsInit == TRUE) { - note->noteSubEu.needsInit = FALSE; + if (note->noteSubEu.needsInit == true) { + note->noteSubEu.needsInit = false; } else { note_set_vel_pan_reverb(note, 0, 0x40, 0); } note->priority = NOTE_PRIORITY_DISABLED; note->parentLayer = NO_LAYER; note->prevParentLayer = NO_LAYER; - note->noteSubEu.enabled = FALSE; - note->noteSubEu.finished = FALSE; + note->noteSubEu.enabled = false; + note->noteSubEu.finished = false; } void process_notes(void) { @@ -625,7 +625,7 @@ void note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLaye note->prevParentLayer = NO_LAYER; note->parentLayer = seqLayer; note->priority = seqLayer->seqChannel->notePriority; - seqLayer->notePropertiesNeedInit = TRUE; + seqLayer->notePropertiesNeedInit = true; seqLayer->status = SOUND_LOAD_STATUS_DISCARDABLE; // "loaded" seqLayer->note = note; seqLayer->seqChannel->noteUnused = note; @@ -639,9 +639,9 @@ void note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLaye sub->sound.audioBankSound = seqLayer->sound; if (instId >= 0x80) { - sub->isSyntheticWave = TRUE; + sub->isSyntheticWave = true; } else { - sub->isSyntheticWave = FALSE; + sub->isSyntheticWave = false; } if (sub->isSyntheticWave) { @@ -693,7 +693,7 @@ struct Note *alloc_note_from_active(struct NotePool *pool, struct SequenceChanne func_800BD8F4(aNote, seqLayer); audio_list_push_back(&pool->releasing, &aNote->listItem); } - + return aNote; } @@ -781,7 +781,7 @@ void note_init_all(void) { note->adsrVolScale = 0; note->adsr.state = ADSR_STATE_DISABLED; note->adsr.action = 0; - note->vibratoState.active = FALSE; + note->vibratoState.active = false; note->portamento.cur = 0.0f; note->portamento.speed = 0.0f; // This only works if NoteSynthesisBuffers are size 0xA0. See internal.h diff --git a/src/audio/port_eu.c b/src/audio/port_eu.c index e5b3c7e01..6d29a041c 100644 --- a/src/audio/port_eu.c +++ b/src/audio/port_eu.c @@ -62,7 +62,7 @@ struct SPTask *create_next_audio_frame_task(void) { if ((gAudioFrameCount % gAudioBufferParameters.presetUnk4) != 0) { return NULL; } - osSendMesg(D_800EA3A8, (OSMesg) gAudioFrameCount, 0); + osSendMesg(D_800EA3A8, (OSMesg) gAudioFrameCount, OS_MESG_NOBLOCK); gAudioTaskIndex ^= 1; gCurrAiBufferIndex++; @@ -168,7 +168,7 @@ void eu_process_audio_cmd(struct EuAudioCmd *cmd) { break; case 0x83: - if (gSequencePlayers[cmd->u.s.bankId].enabled != FALSE) { + if (gSequencePlayers[cmd->u.s.bankId].enabled != false) { if (cmd->u2.as_s32 == 0) { sequence_player_disable(&gSequencePlayers[cmd->u.s.bankId]); } @@ -184,15 +184,15 @@ void eu_process_audio_cmd(struct EuAudioCmd *cmd) { case 0xf1: for (i = 0; i < 4; i++) { - gSequencePlayers[i].muted = TRUE; - gSequencePlayers[i].recalculateVolume = TRUE; + gSequencePlayers[i].muted = true; + gSequencePlayers[i].recalculateVolume = true; } break; case 0xf2: for (i = 0; i < 4; i++) { - gSequencePlayers[i].muted = FALSE; - gSequencePlayers[i].recalculateVolume = TRUE; + gSequencePlayers[i].muted = false; + gSequencePlayers[i].recalculateVolume = true; } break; case 0xF3: @@ -297,7 +297,7 @@ void func_800CBCB0(u32 arg0) { switch (cmd->u.s.op) { case 0x41: seqPlayer->fadeVolumeScale = cmd->u2.as_f32; - seqPlayer->recalculateVolume = TRUE; + seqPlayer->recalculateVolume = true; break; case 0x47: @@ -313,25 +313,25 @@ void func_800CBCB0(u32 arg0) { break; } } - else if (seqPlayer->enabled != FALSE && cmd->u.s.arg2 < 0x10) { + else if (seqPlayer->enabled != false && cmd->u.s.arg2 < 0x10) { chan = seqPlayer->channels[cmd->u.s.arg2]; if (IS_SEQUENCE_CHANNEL_VALID(chan)) { switch (cmd->u.s.op) { case 1: chan->volumeScale = cmd->u2.as_f32; - chan->changes.as_bitfields.volume = TRUE; + chan->changes.as_bitfields.volume = true; break; case 2: chan->volume = cmd->u2.as_f32; - chan->changes.as_bitfields.volume = TRUE; + chan->changes.as_bitfields.volume = true; break; case 3: chan->newPan = cmd->u2.as_s8; - chan->changes.as_bitfields.pan = TRUE; + chan->changes.as_bitfields.pan = true; break; case 4: chan->freqScale = cmd->u2.as_f32; - chan->changes.as_bitfields.freqScale = TRUE; + chan->changes.as_bitfields.freqScale = true; break; case 5: chan->reverbVol = cmd->u2.as_s8; diff --git a/src/audio/seqplayer.c b/src/audio/seqplayer.c index 131c32984..6ac7c2846 100644 --- a/src/audio/seqplayer.c +++ b/src/audio/seqplayer.c @@ -52,14 +52,14 @@ char seqplayer_unused_string25[] = "Group:Undefined Command\n"; void sequence_channel_init(struct SequenceChannel *seqChannel) { s32 i; - seqChannel->enabled = FALSE; - seqChannel->finished = FALSE; - seqChannel->stopScript = FALSE; - seqChannel->stopSomething2 = FALSE; - seqChannel->hasInstrument = FALSE; - seqChannel->stereoHeadsetEffects = FALSE; + seqChannel->enabled = false; + seqChannel->finished = false; + seqChannel->stopScript = false; + seqChannel->stopSomething2 = false; + seqChannel->hasInstrument = false; + seqChannel->stereoHeadsetEffects = false; seqChannel->transposition = 0; - seqChannel->largeNotes = FALSE; + seqChannel->largeNotes = false; seqChannel->bookOffset = 0; seqChannel->changes.as_u8 = 0xff; seqChannel->scriptState.depth = 0; @@ -86,7 +86,7 @@ void sequence_channel_init(struct SequenceChannel *seqChannel) { for (i = 0; i < 8; i++) { seqChannel->soundScriptIO[i] = -1; } - seqChannel->unused = FALSE; + seqChannel->unused = false; init_note_lists(&seqChannel->notePool); } @@ -109,11 +109,11 @@ s32 seq_channel_set_layer(struct SequenceChannel *seqChannel, s32 layerIndex) { layer->seqChannel = seqChannel; layer->adsr = seqChannel->adsr; layer->adsr.releaseRate = 0; - layer->enabled = TRUE; - layer->stopSomething = FALSE; - layer->continuousNotes = FALSE; - layer->finished = FALSE; - layer->ignoreDrumPan = FALSE; + layer->enabled = true; + layer->stopSomething = false; + layer->continuousNotes = false; + layer->finished = false; + layer->ignoreDrumPan = false; layer->portamento.mode = 0; layer->scriptState.depth = 0; layer->status = SOUND_LOAD_STATUS_NOT_LOADED; @@ -134,8 +134,8 @@ s32 seq_channel_set_layer(struct SequenceChannel *seqChannel, s32 layerIndex) { void seq_channel_layer_disable(struct SequenceChannelLayer *layer) { if (layer != NULL) { seq_channel_layer_note_decay(layer); - layer->enabled = FALSE; - layer->finished = TRUE; + layer->enabled = false; + layer->finished = true; } } @@ -156,8 +156,8 @@ void sequence_channel_disable(struct SequenceChannel *seqChannel) { } note_pool_clear(&seqChannel->notePool); - seqChannel->enabled = FALSE; - seqChannel->finished = TRUE; + seqChannel->enabled = false; + seqChannel->finished = true; } struct SequenceChannel *allocate_sequence_channel(void) { @@ -177,12 +177,12 @@ void sequence_player_init_channels(struct SequencePlayer *seqPlayer, u16 channel for (i = 0; i < CHANNELS_MAX; i++) { if (channelBits & 1) { seqChannel = seqPlayer->channels[i]; - if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE && seqChannel->seqPlayer == seqPlayer) { + if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == true && seqChannel->seqPlayer == seqPlayer) { sequence_channel_disable(seqChannel); seqChannel->seqPlayer = NULL; } seqChannel = allocate_sequence_channel(); - if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == FALSE) { + if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == false) { //eu_stubbed_printf_0("Audio:Track:Warning: No Free Notetrack\n"); gAudioErrorFlags = i + 0x10000; seqPlayer->channels[i] = seqChannel; @@ -207,7 +207,7 @@ void sequence_player_disable_channels(struct SequencePlayer *seqPlayer, u16 chan for (i = 0; i < CHANNELS_MAX; i++) { if (channelBits & 1) { seqChannel = seqPlayer->channels[i]; - if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE) { + if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == true) { if (seqChannel->seqPlayer == seqPlayer) { sequence_channel_disable(seqChannel); seqChannel->seqPlayer = NULL; @@ -225,12 +225,12 @@ void sequence_player_disable_channels(struct SequencePlayer *seqPlayer, u16 chan void sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex, void *script) { struct SequenceChannel *seqChannel = seqPlayer->channels[channelIndex]; s32 i; - if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == FALSE) { + if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == false) { //stubbed_printf("SEQID %d,BANKID %d\n", seqPlayer->seqId, seqPlayer->defaultBank[0]); //stubbed_printf("ERR:SUBTRACK %d NOT ALLOCATED\n", channelIndex); } else { - seqChannel->enabled = TRUE; - seqChannel->finished = FALSE; + seqChannel->enabled = true; + seqChannel->finished = false; seqChannel->scriptState.depth = 0; seqChannel->scriptState.pc = script; seqChannel->delay = 0; @@ -245,8 +245,8 @@ void sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex, void sequence_player_disable(struct SequencePlayer *seqPlayer) { sequence_player_disable_channels(seqPlayer, 0xffff); note_pool_clear(&seqPlayer->notePool); - seqPlayer->finished = TRUE; - seqPlayer->enabled = FALSE; + seqPlayer->finished = true; + seqPlayer->enabled = false; if (IS_SEQ_LOAD_COMPLETE(seqPlayer->seqId) && gSeqLoadStatus[seqPlayer->seqId] != 5) { gSeqLoadStatus[seqPlayer->seqId] = SOUND_LOAD_STATUS_DISCARDABLE; @@ -347,8 +347,8 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { f32 temp_f12; f32 temp_f2; - sameSound = TRUE; - if (layer->enabled == FALSE) { + sameSound = true; + if (layer->enabled == false) { return; } @@ -356,7 +356,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { layer->delay--; if (!layer->stopSomething && layer->delay <= layer->duration) { seq_channel_layer_note_decay(layer); - layer->stopSomething = TRUE; + layer->stopSomething = true; } return; } @@ -379,7 +379,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { seqChannel = layer->seqChannel; seqPlayer = seqChannel->seqPlayer; - layer->notePropertiesNeedInit = TRUE; + layer->notePropertiesNeedInit = true; for (;;) { state = &layer->scriptState; @@ -455,9 +455,9 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { case 0xc4: // layer_somethingon case 0xc5: // layer_somethingoff if (cmd == 0xc4) { - layer->continuousNotes = TRUE; + layer->continuousNotes = true; } else { - layer->continuousNotes = FALSE; + layer->continuousNotes = false; } seq_channel_layer_note_decay(layer); break; @@ -525,7 +525,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { break; case 0xcc: - layer->ignoreDrumPan = TRUE; + layer->ignoreDrumPan = true; break; default: @@ -545,11 +545,11 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { if (cmd == 0xc0) { // layer_delay layer->delay = m64_read_compressed_u16(state); - layer->stopSomething = TRUE; + layer->stopSomething = true; } else { - layer->stopSomething = FALSE; + layer->stopSomething = false; - if (seqChannel->largeNotes == TRUE) { + if (seqChannel->largeNotes == true) { switch (cmd & 0xc0) { case 0x00: // layer_note0 (play percentage, velocity, duration) sp3A = m64_read_compressed_u16(state); @@ -602,7 +602,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { if ((seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_STOP_NOTES) != 0) || seqChannel->stopSomething2 ) { - layer->stopSomething = TRUE; + layer->stopSomething = true; } else { s32 temp = layer->instOrWave; @@ -617,7 +617,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { drum = get_drum(seqChannel->bankId, cmd); if (drum == NULL) { - layer->stopSomething = TRUE; + layer->stopSomething = true; layer->delayUnused = layer->delay; return; } else { @@ -634,7 +634,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { cmd += seqPlayer->transposition + seqChannel->transposition + layer->transposition; if (cmd >= 0x80) { - layer->stopSomething = TRUE; + layer->stopSomething = true; } else { if (layer->instOrWave == 0xffu) { instrument = seqChannel->instrument; @@ -706,30 +706,30 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) { } } - if (layer->stopSomething == TRUE) { + if (layer->stopSomething == true) { if (layer->note != NULL || layer->continuousNotes) { seq_channel_layer_note_decay(layer); } return; } - cmd = FALSE; + cmd = false; if (!layer->continuousNotes) { - cmd = TRUE; + cmd = true; } else if (layer->note == NULL || layer->status == SOUND_LOAD_STATUS_NOT_LOADED) { - cmd = TRUE; - } else if (sameSound == FALSE) { + cmd = true; + } else if (sameSound == false) { seq_channel_layer_note_decay(layer); - cmd = TRUE; + cmd = true; } else if (layer != layer->note->parentLayer) { - cmd = TRUE; + cmd = true; } else if (layer->sound == NULL) { init_synthetic_wave(layer->note, layer); } - if (cmd != FALSE) { + if (cmd != false) { layer->note = alloc_note(layer); } @@ -764,11 +764,11 @@ void set_instrument(struct SequenceChannel *seqChannel, u8 instId) { } else { if ((seqChannel->instOrWave = get_instrument(seqChannel, instId, &seqChannel->instrument, &seqChannel->adsr)) == 0) { - seqChannel->hasInstrument = FALSE; + seqChannel->hasInstrument = false; return; } } - seqChannel->hasInstrument = TRUE; + seqChannel->hasInstrument = true; } void sequence_channel_set_volume(struct SequenceChannel *seqChannel, u8 volume) { @@ -1215,16 +1215,16 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { struct M64ScriptState *state; s32 temp32; - if (seqPlayer->enabled == FALSE) { + if (seqPlayer->enabled == false) { return; } - if (seqPlayer->bankDmaInProgress == TRUE) { + if (seqPlayer->bankDmaInProgress == true) { if (osRecvMesg(&seqPlayer->bankDmaMesgQueue, NULL, 0) == -1) { return; } if (seqPlayer->bankDmaRemaining == 0) { - seqPlayer->bankDmaInProgress = FALSE; + seqPlayer->bankDmaInProgress = false; func_800BB584(seqPlayer->loadingBankId); if (gBankLoadStatus[seqPlayer->loadingBankId] != 5) { gBankLoadStatus[seqPlayer->loadingBankId] = 2; @@ -1237,11 +1237,11 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { return; } - if (seqPlayer->seqDmaInProgress == TRUE) { + if (seqPlayer->seqDmaInProgress == true) { if (osRecvMesg(&seqPlayer->seqDmaMesgQueue, NULL, 0) == -1) { return; } - seqPlayer->seqDmaInProgress = FALSE; + seqPlayer->seqDmaInProgress = false; if (gSeqLoadStatus[seqPlayer->seqId] != 5) { gSeqLoadStatus[seqPlayer->seqId] = 2; } @@ -1249,9 +1249,9 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { // If discarded, bail out. temp32 = 2; // I beg your pardon? - if (IS_SEQ_LOAD_COMPLETE(seqPlayer->seqId) == FALSE + if (IS_SEQ_LOAD_COMPLETE(seqPlayer->seqId) == false || ( - IS_BANK_LOAD_COMPLETE(seqPlayer->defaultBank[0]) == FALSE)) { + IS_BANK_LOAD_COMPLETE(seqPlayer->defaultBank[0]) == false)) { sequence_player_disable(seqPlayer); return; } @@ -1457,7 +1457,7 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { break; case 0xd4: // seq_mute - seqPlayer->muted = TRUE; + seqPlayer->muted = true; break; case 0xd3: // seq_setmutebhv @@ -1534,7 +1534,7 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { } for (i = 0; i < CHANNELS_MAX; i++) { - if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[i]) == TRUE) { + if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[i]) == true) { sequence_channel_process_script(seqPlayer->channels[i]); } } @@ -1543,7 +1543,7 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) { void process_sequences(UNUSED s32 iterationsRemaining) { s32 i; for (i = 0; i < SEQUENCE_PLAYERS; i++) { - if (gSequencePlayers[i].enabled == TRUE) { + if (gSequencePlayers[i].enabled == true) { sequence_player_process_sequence(&gSequencePlayers[i]); sequence_player_process_sound(&gSequencePlayers[i]); } @@ -1577,7 +1577,7 @@ void init_sequence_players(void) { for (i = 0; i < ARRAY_COUNT(gSequenceChannels); i++) { gSequenceChannels[i].seqPlayer = NULL; - gSequenceChannels[i].enabled = FALSE; + gSequenceChannels[i].enabled = false; /** * @bug Size of wrong array. Zeroes out second half of gSequenceChannels[0], * all of gSequenceChannels[1..31], and part of gSequenceLayers[0]. @@ -1597,7 +1597,7 @@ void init_sequence_players(void) { for (i = 0; i < ARRAY_COUNT(gSequenceLayers); i++) { gSequenceLayers[i].seqChannel = NULL; - gSequenceLayers[i].enabled = FALSE; + gSequenceLayers[i].enabled = false; } for (i = 0; i < SEQUENCE_PLAYERS; i++) { @@ -1607,10 +1607,10 @@ void init_sequence_players(void) { gSequencePlayers[i].seqVariationEu[0] = -1; gSequencePlayers[i].muteBehavior = MUTE_BEHAVIOR_STOP_SCRIPT | MUTE_BEHAVIOR_STOP_NOTES | MUTE_BEHAVIOR_SOFTEN; - gSequencePlayers[i].enabled = FALSE; - gSequencePlayers[i].muted = FALSE; - gSequencePlayers[i].bankDmaInProgress = FALSE; - gSequencePlayers[i].seqDmaInProgress = FALSE; + gSequencePlayers[i].enabled = false; + gSequencePlayers[i].muted = false; + gSequencePlayers[i].bankDmaInProgress = false; + gSequencePlayers[i].seqDmaInProgress = false; init_note_lists(&gSequencePlayers[i].notePool); init_sequence_player(i); } diff --git a/src/audio/synthesis.c b/src/audio/synthesis.c index 56f3e2a6d..eaa3fa833 100644 --- a/src/audio/synthesis.c +++ b/src/audio/synthesis.c @@ -127,7 +127,7 @@ void func_800B6FB4(s32 updateIndexStart, s32 noteIndex) { for (i = updateIndexStart + 1; i < gAudioBufferParameters.updatesPerFrame; i++) { if (!gNoteSubsEu[gMaxSimultaneousNotes * i + noteIndex].needsInit) { - gNoteSubsEu[gMaxSimultaneousNotes * i + noteIndex].enabled = FALSE; + gNoteSubsEu[gMaxSimultaneousNotes * i + noteIndex].enabled = false; } else { break; } @@ -144,9 +144,9 @@ void synthesis_load_note_subs_eu(s32 updateIndex) { dest = &gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i]; if (src->enabled) { *dest = *src; - src->needsInit = FALSE; + src->needsInit = false; } else { - dest->enabled = FALSE; + dest->enabled = false; } } } @@ -307,7 +307,7 @@ Acmd *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, Acmd *acmd, s32 upda } for (; i < notePos; i++) { temp = updateIndex * gMaxSimultaneousNotes; - if (IS_BANK_LOAD_COMPLETE(gNoteSubsEu[temp + noteIndices[i]].bankId) == TRUE) { + if (IS_BANK_LOAD_COMPLETE(gNoteSubsEu[temp + noteIndices[i]].bankId) == true) { acmd = synthesis_process_note(noteIndices[i], &gNoteSubsEu[temp + noteIndices[i]], &gNotes[noteIndices[i]].synthesisState, @@ -324,86 +324,60 @@ Acmd *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, Acmd *acmd, s32 upda return acmd; } -#ifdef MIPS_TO_C +#ifdef NON_MATCHING //generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Nov-01-2023 -Acmd *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 bufLen, Acmd *acmd, s32 updateIndex) { - void *sp130; - void *sp12C; - s32 *sp128; - s32 sp11C; - s32 sp118; - s32 sp114; /* compiler-managed */ - u16 sp112; - s32 spFC; - s32 spEC; - u32 spE4; - s32 spDC; - s32 spD8; - s32 spB0; - s32 spAC; - s32 spA0; /* compiler-managed */ - u16 sp9E; - struct Note *sp8C; - u32 sp50; - Acmd *temp_a0_2; - Acmd *temp_s2; - Acmd *temp_s2_2; - Acmd *temp_s2_3; - Acmd *temp_v0_2; - Acmd *temp_v0_3; - Acmd *temp_v0_4; - Acmd *temp_v0_5; - Acmd *temp_v0_6; - Acmd *temp_v0_8; - Acmd *var_s2; - Acmd *var_s2_2; - s16 var_t1; - s32 *temp_a2_2; - s32 temp_a0; - s32 temp_a1_2; - s32 temp_a2; - s32 temp_a2_3; - s32 temp_a2_4; - s32 temp_t6; - s32 temp_t8; - s32 temp_t9_2; - s32 temp_v0_7; - s32 temp_v1; - s32 var_a0; - s32 var_a2; - s32 var_a3; - s32 var_fp; - s32 var_s0_2; - s32 var_s1; - s32 var_s3; - s32 var_s4; - s32 var_s5; - s32 var_s6; - s32 var_t0; - s32 var_t2; - s32 var_t3; - s32 var_t4; - s32 var_v1; - u16 temp_t7; - u16 temp_v0; - u32 temp_a1_3; - u32 temp_s0; - u32 temp_t7_3; - u32 var_s0; - u32 var_t5; - u32 var_t6; - u32 var_v1_2; - u32 var_v1_3; - void *temp_a1; - void *temp_t7_2; - void *temp_t9; - void *var_a0_2; +Acmd *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, UNUSED s16 *aiBuf, s32 inBuf, Acmd *cmd, s32 updateIndex) { + UNUSED s32 pad[4]; + struct AudioBankSample *audioBookSample; + s16 *curLoadedBook; + struct AdpcmLoop *loopInfo; + s32 noteFinished; + s32 restart; + s32 flags; + u16 resamplingRateFixedPoint; + s32 nSamplesToLoad; - sp128 = NULL; - sp8C = &gNotes[noteIndex]; - var_v1 = 0; - if (((u32) (noteSubEu->unk0 * 2) >> 0x1F) == 1) { - var_v1 = 1; + s32 spFC; + UNUSED s32 pad2[2]; + + s32 loopInfo_2; + u8 *sampleAddr; + s32 a1; + + + s32 samplesLenAdjusted; + s32 nAdpcmSamplesProcessed; + s32 endPos; + s32 nSamplesToProcess; + + UNUSED s32 pad3; + + s32 s3; + s32 leftRight; + s32 s4; + u32 samplesLenFixedPoint; + s32 var_s6; + s32 nSamplesInThisIteration; + u32 var_t2; + u8 *var_a0_2; + + s32 s5Aligned; + s32 temp_t6; + s32 nParts; + s32 curPart; + s32 aligned; + UNUSED s32 pad4; + s32 resampledTempLen; /* compiler-managed */ + u16 noteSamplesDmemAddrBeforeResampling; + UNUSED s32 pad6[1]; + struct Note *note; + u16 addr; + + curLoadedBook = NULL; + note = &gNotes[noteIndex]; + flags = 0; + if (noteSubEu->needsInit == true) { + flags = A_INIT; synthesisState->restart = 0; synthesisState->samplePosInt = 0; synthesisState->samplePosFrac = 0; @@ -412,258 +386,215 @@ Acmd *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct synthesisState->prevHeadsetPanRight = 0; synthesisState->prevHeadsetPanLeft = 0; } - temp_t7 = noteSubEu->resamplingRateFixedPoint; - sp112 = temp_t7; - spB0 = ((u16) noteSubEu->unk0 & 1) + 1; - temp_v0 = (temp_t7 * bufLen * 2) + synthesisState->samplePosFrac; - synthesisState->samplePosFrac = temp_v0; - temp_s0 = temp_v0 >> 0x10; - var_a0 = noteSubEu->unk0; - if (var_a0 & 0x20000) { - temp_v0_2 = load_wave_samples(acmd, noteSubEu, synthesisState, (s32) temp_s0); - temp_a2 = synthesisState->samplePosInt; - sp9E = (temp_a2 * 2) + 0x1A0; - synthesisState->samplePosInt = temp_a2 + temp_s0; - var_a0 = noteSubEu->unk0; - acmd = temp_v0_2; + resamplingRateFixedPoint = noteSubEu->resamplingRateFixedPoint; + + nParts = noteSubEu->hasTwoAdpcmParts + 1; + samplesLenFixedPoint = (resamplingRateFixedPoint * inBuf * 2) + synthesisState->samplePosFrac; + nSamplesToLoad = (samplesLenFixedPoint >> 0x10); + synthesisState->samplePosFrac = samplesLenFixedPoint & 0xFFFF; // m2c didn't have & 0xFFFF + + if (noteSubEu->isSyntheticWave) { + cmd = load_wave_samples(cmd, noteSubEu, synthesisState, nSamplesToLoad); + + noteSamplesDmemAddrBeforeResampling = (synthesisState->samplePosInt * 2) + 0x1A0; // DMEM_ADDR_UNCOMPRESSED_NOTE + synthesisState->samplePosInt += nSamplesToLoad; } else { - temp_t7_2 = *noteSubEu->sound.samples; - sp130 = temp_t7_2; - temp_t9 = temp_t7_2->unk8; - sp12C = temp_t9; - spDC = temp_t9->unk4; - spA0 = 0; - spAC = 0; - spEC = temp_t7_2->unk4; - if (spB0 > 0) { - sp50 = temp_v0 >> 0x10; - sp114 = var_v1; - var_s2_2 = acmd; -loop_6: - temp_a1 = sp130->unkC; - var_fp = 0; - var_s4 = 0; - temp_a2_2 = temp_a1 + 8; - if (spB0 == 1) { - var_t5 = sp50; + audioBookSample = noteSubEu->sound.audioBankSound->sample; + loopInfo = audioBookSample->loop; + endPos = loopInfo->end; + sampleAddr = audioBookSample->sampleAddr; // book? + resampledTempLen = 0; + + for (curPart = 0; curPart < nParts; curPart++) { + nAdpcmSamplesProcessed = 0; + s4 = 0; + + if (nParts == 1) { + samplesLenAdjusted = nSamplesToLoad; + } else if (nSamplesToLoad & 1) { + samplesLenAdjusted = (nSamplesToLoad & ~1) + (curPart * 2); } else { - var_t5 = sp50; - if (sp50 & 1) { - var_t5 = (sp50 & ~1) + (spAC * 2); + samplesLenAdjusted = nSamplesToLoad; + } + // sm64 also has if (audioBookSample->codec == CODEC_A) { + if (curLoadedBook != (*audioBookSample->book).book) { + u32 nEntries; + curLoadedBook = audioBookSample->book->book; // or just one book? + nEntries = 16 * audioBookSample->book->order * audioBookSample->book->npredictors; + aLoadADPCM(cmd++, nEntries, VIRTUAL_TO_PHYSICAL2(noteSubEu->bookOffset+curLoadedBook)); + // noteSubEu here unsure but seems better? + } + if (noteSubEu->bookOffset != 0) { + curLoadedBook = &gUnknownData_800F6290[0]; + } + while (nAdpcmSamplesProcessed != samplesLenAdjusted) { + + s32 samplesRemaining; + s32 s1; + + noteFinished = false; + restart = false; + + s3 = synthesisState->samplePosInt & 0xF; + samplesRemaining = endPos - synthesisState->samplePosInt; + nSamplesToProcess = samplesLenAdjusted - nAdpcmSamplesProcessed; + if ((s3 == 0) && (synthesisState->restart == false)) { + s3 = 16; } - } - if (sp128 != temp_a2_2) { - temp_v0_3 = var_s2_2; - var_s2_2 += 8; - temp_v0_3->words.w0 = ((temp_a1->unk0 * 0x10 * temp_a1->unk4) & 0xFFFFFF) | 0x0B000000; - temp_v0_3->words.w1 = (((u32) (noteSubEu->unk0 << 0xB) >> 0x1D) * 2) + temp_a2_2 + 0x80000000; - var_a0 = noteSubEu->unk0; - sp128 = temp_a2_2; - } - if (((u32) (var_a0 << 0xB) >> 0x1D) != 0) { - sp128 = gUnknownData_800F6290; - } - if (var_t5 != 0) { -loop_15: - temp_a2_3 = synthesisState->samplePosInt; - temp_a0 = var_t5 - var_fp; - var_s3 = temp_a2_3 & 0xF; - var_t3 = 0; - var_t4 = 0; - temp_v1 = spDC - temp_a2_3; - if ((var_s3 == 0) && (synthesisState->restart == 0)) { - var_s3 = 0x10; - } - temp_a1_2 = 0x10 - var_s3; - var_s5 = temp_a1_2; - if (temp_a0 < temp_v1) { - temp_t9_2 = (s32) ((temp_a0 - temp_a1_2) + 0xF) / 16; - var_s1 = temp_t9_2 * 0x10; - var_t0 = temp_t9_2; - var_s6 = (temp_a1_2 + var_s1) - temp_a0; + + a1 = 16 - s3; + + if (nSamplesToProcess < samplesRemaining) { + loopInfo_2 = ((nSamplesToProcess - a1) + 0xF) / 16; + s1 = loopInfo_2 * 16; + var_s6 = (a1 + s1) - nSamplesToProcess; } else { - var_s1 = temp_v1 - temp_a1_2; + s1 = samplesRemaining - a1; var_s6 = 0; - if (var_s1 <= 0) { - var_s1 = 0; - var_s5 = temp_v1; + if (s1 <= 0) { + s1 = 0; + a1 = samplesRemaining; } - var_t0 = (s32) (var_s1 + 0xF) / 16; - if (sp12C->unk8 != 0) { - var_t4 = 1; + loopInfo_2 = (s1 + 0xF) / 16; + if (loopInfo->count != 0) { + restart = 1; } else { - var_t3 = 1; + noteFinished = 1; } } - var_t2 = 0; - if (var_t0 != 0) { - temp_t6 = (s32) ((temp_a2_3 - var_s3) + 0x10) / 16; - if (sp130->unk1 == 0x81) { - var_s0 = ((var_t0 * 9) + 0x1F) & ~0xF; - var_a0_2 = (temp_t6 * 9) + spEC; + //var_t2 = 0; // unsure + if (loopInfo_2 != 0) { + temp_t6 = ((synthesisState->samplePosInt - s3) + 16) / 16; // diff from sm64 sh + if (audioBookSample->loaded == 0x81) { // sm64 has audioBookSample->medium + var_a0_2 = (temp_t6 * 9) + sampleAddr; } else { - spD8 = temp_a0; - sp11C = var_t3; - sp118 = var_t4; - spE4 = var_t5; - temp_a1_3 = ((var_t0 * 9) + 0x1F) & ~0xF; - var_s0 = temp_a1_3; - var_a0_2 = dma_sample_data((temp_t6 * 9) + spEC, temp_a1_3, sp114, &synthesisState->sampleDmaIndex); + var_a0_2 = dma_sample_data((uintptr_t) (temp_t6 * 9) + sampleAddr, ALIGN(((loopInfo_2 * 9) + 16), 4), flags, &synthesisState->sampleDmaIndex); + // unsure flags? } - var_t1 = 0x540 - var_s0; - var_t2 = (s32) var_a0_2 & 0xF; - var_s2_2->words.w1 = (var_a0_2 - var_t2) + 0x80000000; - var_s2_2->words.w0 = ((((s32) var_s0 >> 4) & 0xFF) << 0x10) | 0x14000000 | (var_t1 & 0xFFFF); - var_s2_2 += 8; + + var_t2 = ((uintptr_t)var_a0_2 & 0xF); + + aligned = ALIGN(((loopInfo_2 * 9) + 16), 4); + addr = (0x540 - aligned) & 0xFFFF; // DMEM_ADDR_COMPRESSED_ADPCM_DATA + + aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(var_a0_2 - var_t2), addr, aligned); } else { - var_s1 = 0; - var_t1 = 0x540 - (((var_t0 * 9) + 0x1F) & 0xFFF0); + s1 = 0; // ? + var_t2 = 0; } - temp_v0_4 = var_s2_2; - if (synthesisState->restart != 0) { - temp_v0_4->words.w0 = 0x0F000000; - var_s2_2 += 8; - temp_v0_4->words.w1 = sp130->unk8 + 0x80000010; - sp114 = 2; - synthesisState->restart = 0; + + if (synthesisState->restart != false) { + aSetLoop(cmd++, VIRTUAL_TO_PHYSICAL2(audioBookSample->loop->state)); + + flags = A_LOOP; + synthesisState->restart = false; } - if (var_fp == 0) { - var_a2 = var_s1 * 2; - var_s2_2->words.w1 = (var_a2 & 0xFFFF) | 0x01A00000; - var_s2_2->words.w0 = ((var_t1 + var_t2) & 0xFFFF) | 0x08000000; - temp_s2 = var_s2_2 + 8; - temp_s2->words.w0 = ((sp114 & 0xFF) << 0x10) | 0x01000000; - temp_s2->words.w1 = (u32) (synthesisState->synthesisBuffers + 0x80000000); - var_s2_2 = temp_s2 + 8; - spFC = var_s3 * 2; - var_a3 = (var_s1 + var_s5) - var_s6; + nSamplesInThisIteration = (s1 + a1) - var_s6; + s5Aligned = ALIGN(s4 + 16, 4); + if (nAdpcmSamplesProcessed == 0) { + + aligned = ALIGN(((loopInfo_2 * 9) + 16), 4); + addr = (0x540 - aligned) & 0xFFFF; + aSetBuffer(cmd++, 0, addr + var_t2, 0x1A0, s1 * 2); // unsure + // s1 or s3 here? + aADPCMdec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState)); + spFC = s3 * 2; + } else { - temp_t8 = (var_s4 + 0x1F) & ~0xF; - var_s2_2->words.w0 = ((var_t1 + var_t2) & 0xFFFF) | 0x08000000; - var_a2 = var_s1 * 2; - var_s2_2->words.w1 = ((temp_t8 + 0x1A0) << 0x10) | (var_a2 & 0xFFFF); - temp_s2_2 = var_s2_2 + 8; - temp_s2_2->words.w0 = ((sp114 & 0xFF) << 0x10) | 0x01000000; - temp_s2_2->words.w1 = (u32) (synthesisState->synthesisBuffers + 0x80000000); - temp_s2_3 = temp_s2_2 + 8; - var_a3 = (var_s1 + var_s5) - var_s6; - temp_s2_3->words.w0 = ((temp_t8 + (var_s3 * 2) + 0x1A0) & 0xFFFFFF) | 0x0A000000; - temp_s2_3->words.w1 = ((var_s4 + 0x1A0) << 0x10) | ((var_a3 * 2) & 0xFFFF); - var_s2_2 = temp_s2_3 + 8; + + aligned = ALIGN(((loopInfo_2 * 9) + 16), 4); + addr = (0x540 - aligned) & 0xFFFF; + aSetBuffer(cmd++, 0, addr + var_t2, 0x1A0 + s5Aligned, s1 * 2); // unsure + + aADPCMdec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState)); + + aDMEMMove(cmd++, 0x1A0 + s5Aligned + (s3 * 2), 0x1A0 + s4, nSamplesInThisIteration * 2); } - var_fp += var_a3; - if (sp114 != 1) { - sp114 = 0; - if ((sp114 ^ 2) != 0) { - if (var_s4 != 0) { - var_s4 += var_a3 * 2; + + nAdpcmSamplesProcessed += nSamplesInThisIteration; + switch(flags) { + case 1: + spFC = 0x20; + s4 = (s1 * 2) + 0x20; + break; + case 2: + s4 += nSamplesInThisIteration * 2; + break; + default: + if (s4 != 0) { + s4 += nSamplesInThisIteration * 2; } else { - var_s4 = (var_s3 + var_a3) * 2; + s4 = (s3 + nSamplesInThisIteration) * 2; } - } else { - var_s4 += var_a3 * 2; - } - } else { - spFC = 0x00000020; - var_s4 = var_a2 + 0x20; - sp114 = 0; + break; } - if (var_t3 != 0) { - var_s2_2->words.w0 = ((var_s4 + 0x1A0) & 0xFFFFFF) | 0x02000000; - var_s2_2->words.w1 = (var_t5 - var_fp) * 2; - var_s2_2 += 8; - noteSubEu->unk0 = (s8) ((u8) noteSubEu->unk0 | 0x20); - sp8C->unkB0 = (u8) (sp8C->unkB0 | 0x20); - sp8C->unkB0 = (u8) (sp8C->unkB0 & 0xFF7F); - spE4 = var_t5; + flags = 0; + + if (noteFinished) { + aClearBuffer(cmd++, 0x1A0 + s4, + (samplesLenAdjusted - nAdpcmSamplesProcessed) * 2); + noteSubEu->finished = 1; // sm64 says = 1 + note->noteSubEu.finished = 1; + func_800B6FB4(updateIndex, noteIndex); } else { - if (var_t4 != 0) { - synthesisState->restart = 1; - synthesisState->samplePosInt = sp12C->unk0; + if (restart) { + synthesisState->restart = true; + synthesisState->samplePosInt = loopInfo->start; } else { - synthesisState->samplePosInt += temp_a0; - } - if (var_fp != var_t5) { - goto loop_15; + synthesisState->samplePosInt += nSamplesToProcess; } } } - if (spB0 != 1) { - if (spB0 != 2) { - var_a0 = noteSubEu->unk0; - var_t6 = (u32) (var_a0 * 4) >> 0x1F; - goto block_60; - } - if (spAC != 0) { - temp_v0_5 = var_s2_2; - if (spAC != 1) { - var_a0 = noteSubEu->unk0; - var_v1_2 = (u32) (var_a0 * 4) >> 0x1F; - } else { - var_s2_2 += 8; - temp_v0_5->words.w0 = ((((s32) var_t5 / 2) + 7) & 0xFFF8) | 0x11000000; - temp_v0_5->words.w1 = ((spFC + 0x1A0) << 0x10) | ((spA0 + 0x20) & 0xFFFF); - var_a0 = noteSubEu->unk0; - var_t6 = (u32) (var_a0 * 4) >> 0x1F; - goto block_60; - } - } else { - temp_v0_6 = var_s2_2; - var_s2_2 += 8; - temp_v0_6->words.w0 = ((((s32) var_t5 / 2) + 7) & 0xFFF8) | 0x11000000; - temp_v0_6->words.w1 = ((spFC + 0x1A0) << 0x10) | 0x20; - spA0 = var_t5; - sp9E = 0x0020; - var_a0 = noteSubEu->unk0; - temp_t7_3 = (u32) (var_a0 * 4) >> 0x1F; - var_v1_2 = temp_t7_3; - if (temp_t7_3 != 0) { - var_s2_2->words.w1 = var_t5 + 0x10; - var_s2_2->words.w0 = ((var_t5 + 0x20) & 0xFFFFFF) | 0x02000000; - var_a0 = noteSubEu->unk0; - var_s2_2 += 8; - var_v1_2 = (u32) (var_a0 * 4) >> 0x1F; - } - } - } else { - sp9E = spFC + 0x1A0; - var_a0 = noteSubEu->unk0; - var_t6 = (u32) (var_a0 * 4) >> 0x1F; -block_60: - var_v1_2 = var_t6; - } - if (var_v1_2 != 0) { - } else { - temp_v0_7 = spAC + 1; - spAC = temp_v0_7; - if (temp_v0_7 != spB0) { - goto loop_6; - } + switch(nParts) { + case 1: + noteSamplesDmemAddrBeforeResampling = 0x1A0 + spFC; + break; + case 2: + switch(curPart) { + case 0: + aDownsampleHalf(cmd++, ALIGN(samplesLenAdjusted / 2, 3), 0x1A0 + spFC, DMEM_ADDR_RESAMPLED); + resampledTempLen = samplesLenAdjusted; + noteSamplesDmemAddrBeforeResampling = DMEM_ADDR_RESAMPLED; + if (noteSubEu->finished != false) { + aClearBuffer(cmd++, noteSamplesDmemAddrBeforeResampling + resampledTempLen, samplesLenAdjusted + 0x10); + } + break; + case 1: + aDownsampleHalf(cmd++, ALIGN(samplesLenAdjusted / 2, 3), DMEM_ADDR_RESAMPLED2 + spFC, resampledTempLen + DMEM_ADDR_RESAMPLED); + break; + + } + break; + } + if (noteSubEu->finished != false) { + break; } - acmd = var_s2_2; } } - var_v1_3 = 0; - if (((u32) (var_a0 * 2) >> 0x1F) == 1) { - var_v1_3 = 1; - noteSubEu->unk0 = (s8) ((u8) noteSubEu->unk0 & 0xFFBF); + flags = 0; + if (noteSubEu->needsInit == true) { + flags = A_INIT; + noteSubEu->needsInit = false; } - temp_a2_4 = bufLen * 2; - sp114 = var_v1_3; - temp_a0_2 = final_resample(acmd, synthesisState, temp_a2_4, sp112, (u16) (s32) sp9E, var_v1_3); - if ((noteSubEu->headsetPanRight != 0) || (synthesisState->prevHeadsetPanRight != 0)) { - var_s0_2 = 1; - } else if ((noteSubEu->headsetPanLeft != 0) || (var_s0_2 = 0, (synthesisState->prevHeadsetPanLeft != 0))) { - var_s0_2 = 2; + + cmd = final_resample(cmd, synthesisState, inBuf * 2, resamplingRateFixedPoint, noteSamplesDmemAddrBeforeResampling, flags); + + if ((noteSubEu->headsetPanRight) || (synthesisState->prevHeadsetPanRight)) { + leftRight = 1; // According to m2c this is a new var. Perhaps flags? + } else if ((noteSubEu->headsetPanLeft) || (synthesisState->prevHeadsetPanLeft)) { + leftRight = 2; + } else { + leftRight = 0; } - temp_v0_8 = func_800B86A0(temp_a0_2, noteSubEu, synthesisState, bufLen, (u16) 0, var_s0_2, sp114); - var_s2 = temp_v0_8; - if ((u8) noteSubEu->unk0 & 1) { - var_s2 = note_apply_headset_pan_effects(temp_v0_8, noteSubEu, synthesisState, temp_a2_4, (s32) sp114, var_s0_2); + cmd = func_800B86A0(cmd, noteSubEu, synthesisState, inBuf, 0, leftRight, flags); + + if (noteSubEu->usesHeadsetPanEffects) { + //synthesisState->restart = 1; + cmd = note_apply_headset_pan_effects(cmd, noteSubEu, synthesisState, inBuf * 2, flags, leftRight); } - return var_s2; + return cmd; } #else GLOBAL_ASM("asm/non_matchings/audio/synthesis/synthesis_process_note.s") diff --git a/src/audio/synthesis.h b/src/audio/synthesis.h index 974fc9c32..175615f37 100644 --- a/src/audio/synthesis.h +++ b/src/audio/synthesis.h @@ -2,7 +2,7 @@ #define AUDIO_SYNTHESIS_H #include "audio/internal.h" -#include "PR/abi.h" +#include #define DEFAULT_LEN_1CH 0x180 #define DEFAULT_LEN_2CH 0x300 @@ -103,7 +103,7 @@ Acmd *synthesis_execute(Acmd*, s32*, s16*, s32); Acmd *synthesis_resample_and_mix_reverb(Acmd*, s32, s16, s16); Acmd *synthesis_save_reverb_samples(Acmd*, s16, s16); Acmd *synthesis_do_one_audio_update(s16*, s32, Acmd*, s32); -Acmd *synthesis_process_note(s32, struct NoteSubEu*, struct NoteSynthesisState*, s16*, s32, Acmd*, s32); +Acmd *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 inBuf, Acmd *cmd, s32 updateIndex); Acmd *load_wave_samples(Acmd *acmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamplesToLoad); Acmd *final_resample(Acmd *acmd, struct NoteSynthesisState *synthesisState, s32 count, u16 pitch, u16 dmemIn, u32 flags); Acmd *func_800B86A0(Acmd *cmd, struct NoteSubEu *note, struct NoteSynthesisState *synthesisState, s32 nSamples, u16 inBuf, s32 headsetPanSettings, u32 flags); diff --git a/src/buffers.h b/src/buffers.h index 51c949536..d6c80907a 100644 --- a/src/buffers.h +++ b/src/buffers.h @@ -2,8 +2,8 @@ #define BUFFERS_H #include -#include "config.h" -#include "common_structs.h" +#include +#include /* * This type could reasonably be called decodedTexture or similar @@ -52,7 +52,7 @@ typedef struct { * Appears to be a combination of 2 different palettes: * kart_palette contains the palette for all non-wheel elements of the kart (including the driver). * wheel_palette contains the palette for the wheels. - * + * * kart palette sets a defined palette based on the character while * wheels palette sets a dynamic palette as you drive around with the kart. * @@ -70,18 +70,18 @@ typedef struct { extern u16 gRandomSeed16; extern u8 randomSeedPadding[216]; extern union_D_802BFB80 D_802BFB80; -extern struct_D_802DFB80 D_802DFB80[][2][8]; +extern struct_D_802DFB80 gEncodedKartTexture[][2][8]; /** - * It would be nice to define D_802F1F80 as "struct_D_802F1F80 D_802F1F80[2][4][8]". - * But due to register allocation issues in load_kart_palette / func_80026B4C + * It would be nice to define gPlayerPalettesList as "struct_D_802F1F80 gPlayerPalettesList[2][4][8]". + * But due to register allocation issues in load_kart_palette / update_wheel_palette * we have to define it in a different manner to match those functions. * If AVOID_UB is defined, the struct is properly defined with their correct pointers. **/ #ifdef AVOID_UB -extern struct_D_802F1F80 D_802F1F80[2][4][8]; +extern struct_D_802F1F80 gPlayerPalettesList[2][4][8]; #else -extern u16 D_802F1F80[][4][0x100 * 8]; +extern u16 gPlayerPalettesList[][4][0x100 * 8]; #endif extern u16 gZBuffer[SCREEN_WIDTH * SCREEN_HEIGHT]; diff --git a/src/buffers/buffers.c b/src/buffers/buffers.c index cbdaae317..825b0d32e 100644 --- a/src/buffers/buffers.c +++ b/src/buffers/buffers.c @@ -1,14 +1,17 @@ #include #include -#include "config.h" +#include #include "buffers.h" +/** + * @brief look like to be a buffer of decoded textures + */ ALIGNED8 union_D_802BFB80 D_802BFB80; -ALIGNED8 struct_D_802DFB80 D_802DFB80[2][2][8]; +ALIGNED8 struct_D_802DFB80 gEncodedKartTexture[2][2][8]; #ifdef AVOID_UB -ALIGNED8 struct_D_802F1F80 D_802F1F80[2][4][8]; +ALIGNED8 struct_D_802F1F80 gPlayerPalettesList[2][4][8]; #else -ALIGNED8 u16 D_802F1F80[2][4][0x100 * 8]; +ALIGNED8 u16 gPlayerPalettesList[2][4][0x100 * 8]; #endif ALIGNED8 u16 gZBuffer[SCREEN_WIDTH * SCREEN_HEIGHT]; diff --git a/src/buffers/memory_pool.c b/src/buffers/memory_pool.c index d7dee6cc9..60b2760eb 100644 --- a/src/buffers/memory_pool.c +++ b/src/buffers/memory_pool.c @@ -7,5 +7,6 @@ /** * Memory pool variable prevents code segments flowing into the memory pool * for easier portability. + * @warning should not really be used. */ -u8 memoryPool[MEMORY_POOL_SIZE]; +u8 sMemoryPool[MEMORY_POOL_SIZE]; diff --git a/src/buffers/random.h b/src/buffers/random.h index f144f7843..bb7aefa8b 100644 --- a/src/buffers/random.h +++ b/src/buffers/random.h @@ -1,4 +1,9 @@ +#ifndef RANDOM_H +#define RANDOM_H + #include extern u16 gRandomSeed16; extern u8 randomSeedPadding[]; + +#endif // RANDOM_H \ No newline at end of file diff --git a/src/camera.c b/src/camera.c index 43f9d26fe..1d6f73b8e 100644 --- a/src/camera.c +++ b/src/camera.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "camera.h" #include "code_800029B0.h" @@ -640,23 +641,23 @@ void func_8001E0C4(Camera *camera, Player *player, s8 arg2) { adjust_angle(&camera->unk_2C, player->rotation[1], var_a2); func_8001CA78(player, camera, sp60, &sp74, &sp70, &sp6C, camera->unk_2C, arg2); camera->someBitFlags &= ~0x0004; - temp_t7 = func_802ADDC8(&camera->unk_54, test, sp74, sp70, sp6C); - if (camera->unk_54.unk3C[2] < 0.0f) { - sp74 += -camera->unk_54.orientationVector[0] * camera->unk_54.unk3C[2] * 1; - sp70 += -camera->unk_54.orientationVector[1] * camera->unk_54.unk3C[2] * 0.5; - sp6C += -camera->unk_54.orientationVector[2] * camera->unk_54.unk3C[2] * 1; + temp_t7 = check_bounding_collision(&camera->collision, test, sp74, sp70, sp6C); + if (camera->collision.surfaceDistance[2] < 0.0f) { + sp74 += -camera->collision.orientationVector[0] * camera->collision.surfaceDistance[2] * 1; + sp70 += -camera->collision.orientationVector[1] * camera->collision.surfaceDistance[2] * 0.5; + sp6C += -camera->collision.orientationVector[2] * camera->collision.surfaceDistance[2] * 1; } - if (camera->unk_54.unk3C[0] < 0.0f) { + if (camera->collision.surfaceDistance[0] < 0.0f) { camera->someBitFlags = camera->someBitFlags | 4 | 2; - sp74 += -camera->unk_54.unk48[0] * camera->unk_54.unk3C[0] * 1.5; - sp70 += -camera->unk_54.unk48[1] * camera->unk_54.unk3C[0] * 1; - sp6C += -camera->unk_54.unk48[2] * camera->unk_54.unk3C[0] * 1.5; + sp74 += -camera->collision.unk48[0] * camera->collision.surfaceDistance[0] * 1.5; + sp70 += -camera->collision.unk48[1] * camera->collision.surfaceDistance[0] * 1; + sp6C += -camera->collision.unk48[2] * camera->collision.surfaceDistance[0] * 1.5; } - if (camera->unk_54.unk3C[1] < 0.0f) { + if (camera->collision.surfaceDistance[1] < 0.0f) { camera->someBitFlags = camera->someBitFlags | 4 | 2; - sp74 += -camera->unk_54.unk54[0] * camera->unk_54.unk3C[1] * 1.5; - sp70 += -camera->unk_54.unk54[1] * camera->unk_54.unk3C[1] * 1; - sp6C += -camera->unk_54.unk54[2] * camera->unk_54.unk3C[1] * 1.5; + sp74 += -camera->collision.unk54[0] * camera->collision.surfaceDistance[1] * 1.5; + sp70 += -camera->collision.unk54[1] * camera->collision.surfaceDistance[1] * 1; + sp6C += -camera->collision.unk54[2] * camera->collision.surfaceDistance[1] * 1.5; } if ((temp_t7 == 0) && ((camera->someBitFlags & 2) != 2)) { camera->unk_AC = camera->unk_2C; @@ -739,7 +740,7 @@ void func_8001E45C(Camera *camera, Player *player, s8 arg2) { if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || ((player->effects & 0x4000) == 0x4000) || ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || (((player->effects & 0x20) == 0x20) && (player->unk_078 != 0)) || - (player->unk_110.unk3C[0] <= 0.0f) || (player->unk_110.unk3C[1] <= 0.0f) || ((player->effects & 0x20000) == 0x20000)) { + (player->collision.surfaceDistance[0] <= 0.0f) || (player->collision.surfaceDistance[1] <= 0.0f) || ((player->effects & 0x20000) == 0x20000)) { func_8001CCEC(player, camera, sp64, &sp84, &sp80, &sp7C, &sp58, (s32) camera->unk_2C, (s32) arg2); } else { adjust_angle(&camera->unk_2C, (s16) (player->rotation[1] + camera->unk_B0), var_a3); @@ -747,7 +748,7 @@ void func_8001E45C(Camera *camera, Player *player, s8 arg2) { } temp = 3; camera->someBitFlags &= 0xFFFB; - func_802ADDC8(&camera->unk_54, temp, sp84, sp80, sp7C); + check_bounding_collision(&camera->collision, temp, sp84, sp80, sp7C); camera->pos[0] = sp84; camera->pos[1] = sp80; @@ -782,7 +783,7 @@ void func_8001E8E8(Camera *camera, Player *player, s8 arg2) { camera->unk_B0 = 0; camera->unk_2C = player->rotation[1]; func_8001D53C(player, camera, sp5C, &sp7C, &sp78, &sp74, (s16) (s32) player->rotation[1], (s16) (s32) arg2); - func_802ADDC8(&camera->unk_54, 5.0f, sp7C, sp78, sp74); + check_bounding_collision(&camera->collision, 5.0f, sp7C, sp78, sp74); camera->lookAt[0] = sp5C[0]; camera->lookAt[1] = sp5C[1]; camera->lookAt[2] = sp5C[2]; @@ -861,7 +862,7 @@ void func_8001EA0C(Camera *camera, Player *player, s8 arg2) { if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || ((player->effects & 0x4000) == 0x4000) || ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || (((player->effects & 0x20) == 0x20) && (player->unk_078 != 0)) || - (player->unk_110.unk3C[0] <= 0.0f) || (player->unk_110.unk3C[1] <= 0.0f) || ((player->effects & 0x20000) == 0x20000)) { + (player->collision.surfaceDistance[0] <= 0.0f) || (player->collision.surfaceDistance[1] <= 0.0f) || ((player->effects & 0x20000) == 0x20000)) { func_8001D944(player, camera, sp64, &sp84, &sp80, &sp7C, &sp58, (s32) camera->unk_2C, (s32) arg2); } else { adjust_angle(&camera->unk_2C, (s16) (player->rotation[1] + camera->unk_B0), var_a3); @@ -869,7 +870,7 @@ void func_8001EA0C(Camera *camera, Player *player, s8 arg2) { } temp = 3; camera->someBitFlags &= 0xFFFB; - func_802ADDC8(&camera->unk_54, temp, sp84, sp80, sp7C); + check_bounding_collision(&camera->collision, temp, sp84, sp80, sp7C); camera->pos[0] = sp84; camera->pos[1] = sp80; diff --git a/src/camera.h b/src/camera.h index fa0e01e5d..7085785a3 100644 --- a/src/camera.h +++ b/src/camera.h @@ -1,7 +1,7 @@ #ifndef CAMERA_H #define CAMERA_H -#include "common_structs.h" +#include /** * @todo put this define in types.h or similar. @@ -39,7 +39,7 @@ typedef struct { /* 0x48 */ s32 unk_48; /* 0x4C */ s32 unk_4C; /* 0x50 */ s32 unk_50; - /* 0x54 */ Collision unk_54; + /* 0x54 */ Collision collision; // When you hit a wall (or another driver) the camera's pos and lookAt bounce up and down. This is the velocity(?) of that bouncing /* 0x94 */ UnkCameraInner unk_94; // Timer for wall-hit bounce. Counts up instead of down diff --git a/src/code_800029B0.c b/src/code_800029B0.c index 86acf4c63..5459b09f4 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -1,8 +1,8 @@ #include #include +#include #include "code_800029B0.h" -#include "types.h" #include "memory.h" #include "waypoints.h" #include "actors.h" @@ -26,7 +26,6 @@ extern s32 D_802BA038; extern s16 D_802BA048; - s16 gCurrentCourseId = 0; s16 gCurrentlyLoadedCourseId = 0xFF; u16 D_800DC5A8 = 0; @@ -52,7 +51,7 @@ u16 D_800DC5E4 = 0; //! @todo gPlayerWinningIndex (D_800DC5E8) accessed as word, D_800DC5EB as u8 s32 gPlayerWinningIndex = 0; -struct UnkStruct_800DC5EC D_8015F480[4]; +ALIGNED16 struct UnkStruct_800DC5EC D_8015F480[4]; struct UnkStruct_800DC5EC *D_800DC5EC = &D_8015F480[0]; struct UnkStruct_800DC5EC *D_800DC5F0 = &D_8015F480[1]; struct UnkStruct_800DC5EC *D_800DC5F4 = &D_8015F480[2]; @@ -66,15 +65,15 @@ Lights1 D_800DC610[] = { gdSPDefLights1(175, 175, 175, 255, 255, 255, 0, 0, 120), gdSPDefLights1(115, 115, 115, 255, 255, 255, 0, 0, 120), }; -static s32 pad_800029B0 = 0x80000000; +UNUSED s32 pad_800029B0 = 0x80000000; s16 gCreditsCourseId = COURSE_LUIGI_RACEWAY; s16 gPlaceItemBoxes = 1; // Technically a pointer to an array, but declaring it so creates regalloc issues. -mk64_surface_map_ram *gSurfaceMap; -u16 *D_8015F584; -u16 D_8015F588; // Number of entries in gSurfaceMap -u16 D_8015F58A; +CollisionTriangle *gCollisionMesh; +u16 *gCollisionIndices; +u16 gCollisionMeshCount; // Number of entries in gCollisionMesh +u16 gNumCollisionTriangles; u32 D_8015F58C; Vec3f D_8015F590; diff --git a/src/code_800029B0.h b/src/code_800029B0.h index 30ee796d7..76c7e0d18 100644 --- a/src/code_800029B0.h +++ b/src/code_800029B0.h @@ -3,8 +3,29 @@ #include #include -#include #include +#include "camera.h" + +struct UnkStruct_800DC5EC { + /* 0x00 */ struct Controller *controllers; // gControllers ptr 800F6910 + /* 0x04 */ Camera *camera; // Player camera ptr + /* 0x08 */ Player *player; // Player ptr 800F6990 + /* 0x0C */ s32 *unkC; // unk struct? + /* 0x10 */ Vp viewport; + /* 0x20 */ s32 pad[2]; + /* 0x28 */ s16 cameraHeight; + /* 0x2A */ s16 unk; + /* 0x2C */ s16 screenWidth; + /* 0x2E */ s16 screenHeight; + /* 0x30 */ s16 screenStartX; + /* 0x32 */ s16 screenStartY; + /* 0x34 */ s16 unk3C; + /* 0x36 */ s16 playerDirection; + /* 0x38 */ s16 pathCounter; + /* 0x3A */ s16 unk42; + /* 0x3C */ s32 pad2; +}; // size = 0x40 + /* Function Prototypes */ @@ -46,10 +67,10 @@ extern s32 gIsMirrorMode; // D_800DC604 extern s16 gCreditsCourseId; extern s16 gPlaceItemBoxes; -extern mk64_surface_map_ram *gSurfaceMap; -extern u16 *D_8015F584; -extern u16 D_8015F588; -extern u16 D_8015F58A; +extern CollisionTriangle *gCollisionMesh; +extern u16 *gCollisionIndices; +extern u16 gCollisionMeshCount; +extern u16 gNumCollisionTriangles; extern u32 D_8015F58C; extern Vec3f D_8015F590; diff --git a/src/code_80004740.c b/src/code_80004740.c index c94a681f5..afcb00717 100644 --- a/src/code_80004740.c +++ b/src/code_80004740.c @@ -1,6 +1,5 @@ #include #include -#include #include #include "math_util.h" #include "code_80004740.h" @@ -92,7 +91,7 @@ void func_80004A1C(animation_type_1 *arg0, s16 *arg1, animation_type_3_triplet a } sp8C[someIndex] = arg1[arg2[someIndex].some_offset + some_offset]; } - + mtxf_translate_rotate2(sp4C, sp94, sp8C); func_80004740(&gGfxPool->mtxHud[gMatrixHudCount], sp4C); D_80162D7A += 1; @@ -173,6 +172,6 @@ s16 func_80004DFC(animation_type_1 *arg0, animation_type_2 **arg1, s16 arg2, s16 s16 func_80004EAC(void *addr, s16 offset) { uintptr_t *item = segmented_to_virtual(addr); struct stru_80004EAC *temp = (struct stru_80004EAC *) segmented_to_virtual((void *) item[offset]); - + return temp->unk8 - 1; -} \ No newline at end of file +} diff --git a/src/code_80004740.h b/src/code_80004740.h index efafdd122..57afe535b 100644 --- a/src/code_80004740.h +++ b/src/code_80004740.h @@ -1,7 +1,7 @@ #ifndef CODE_80004740_H #define CODE_80004740_H -#include "common_structs.h" +#include /* What I know about animation stuff so far diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 807835387..d388a204c 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -21,7 +21,7 @@ #include "bomb_kart.h" #include "courses/all_course_data.h" #include -#include "common_structs.h" +#include #include "main.h" #include "menus.h" #include "code_80091750.h" @@ -51,7 +51,7 @@ Vec3f D_80162FA0; Vec3f D_80162FB0; Vec3f D_80162FC0; s16 D_80162FCC; -s16 D_80162FCE; +s16 sSomeNearestWaypoint; s16 D_80162FD0; f32 gCourseCompletionPercentByRank[NUM_PLAYERS]; /* @@ -129,7 +129,7 @@ s16 D_8016348C; s16 D_80163490[12]; s16 D_801634A8[12]; s16 D_801634C0[12]; -s16 D_801634D8[10]; +s16 bStopAICrossing[10]; s16 D_801634EC; s32 D_801634F0; s32 D_801634F4; @@ -137,8 +137,8 @@ Test D_801634F8[10]; PathNoY *D_80163598; s32 D_8016359C; TrainStuff gTrainList[NUM_TRAINS]; -u16 isCrossingTriggeredByIndex[2]; -u16 D_801637BC[2]; +u16 isCrossingTriggeredByIndex[NUM_CROSSINGS]; +u16 sCrossingActiveTimer[NUM_CROSSINGS]; PaddleBoatStuff gPaddleBoats[NUM_PADDLE_BOATS]; VehicleStuff gBoxTruckList[NUM_RACE_BOX_TRUCKS]; VehicleStuff gSchoolBusList[NUM_RACE_SCHOOL_BUSES]; @@ -598,61 +598,69 @@ void func_80006114(Vec3f arg0, Vec3f arg1, s16 arg2) { arg0[2] = arg1[2] + temp2; } -s32 func_800061DC(Vec3f arg0, f32 arg1, s32 arg2) { - Camera *var_a0_2; - Player *var_a0; - f32 temp_f0; - f32 temp_f2; - f32 temp_f12; - f32 temp_f14; - s32 var_a1; - s32 var_v1; - s8 var_v0; +s32 set_vehicle_render_distance_flags(Vec3f vehiclePos, f32 renderDistance, s32 flags) { + Camera *camera; + Player *player; + f32 x; + f32 z; + f32 playerX; + f32 playerZ; + s32 i; + s32 flag; + s8 numScreens; - temp_f0 = arg0[0]; - temp_f2 = arg0[2]; + x = vehiclePos[0]; + z = vehiclePos[2]; switch (gActiveScreenMode) { case SCREEN_MODE_1P: - var_v0 = 1; + numScreens = 1; break; case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: - var_v0 = 2; + numScreens = 2; break; case SCREEN_MODE_3P_4P_SPLITSCREEN: - var_v0 = gPlayerCount; + numScreens = gPlayerCount; break; default: - var_v0 = 1; + numScreens = 1; break; } - var_v1 = arg2; + flag = flags; if (!gDemoMode) { - var_a0 = gPlayerOne; - for(var_a1 = 0; var_a1 < gPlayerCount; var_a1++, var_a0++) { - if (((var_a0->type & 0x4000) != 0) && ((var_a0->type & 0x1000) == 0)) { - temp_f12 = var_a0->pos[0]; - temp_f14 = var_a0->pos[2]; - if (((temp_f12 - arg1) < temp_f0) && (temp_f0 < (temp_f12 + arg1)) && ((temp_f14 - arg1) < temp_f2) && (temp_f2 < (temp_f14 + arg1))) { - var_v1 |= (1 << var_a1); + player = gPlayerOne; + // Checks distance from each player. + for(i = 0; i < gPlayerCount; i++, player++) { + if (((player->type & PLAYER_HUMAN) != 0) && ((player->type & PLAYER_KART_AI) == 0)) { + playerX = player->pos[0]; + playerZ = player->pos[2]; + + // Is player within render distance + if (((playerX - renderDistance) < x) && + ((playerX + renderDistance) > x) && + ((playerZ - renderDistance) < z) && + ((playerZ + renderDistance) > z)) { + // Sets the render flag to on for each player. + flag |= (RENDER_VEHICLE << i); } else { - var_v1 &= ~(1 << var_a1); + // Sets the render flag to off for each player. + flag &= ~(RENDER_VEHICLE << i); } } } - } else { - var_a0_2 = camera1; - for(var_a1 = 0; var_a1 < var_v0; var_a1++, var_a0_2++) { - temp_f12 = var_a0_2->pos[0]; - temp_f14 = var_a0_2->pos[2]; - if (((temp_f12 - arg1) < temp_f0) && (temp_f0 < (temp_f12 + arg1)) && ((temp_f14 - arg1) < temp_f2) && (temp_f2 < (temp_f14 + arg1))) { - var_v1 |= (1 << var_a1); + } else { // Demo cinematic uses the camera to check render distance + camera = camera1; + for(i = 0; i < numScreens; i++, camera++) { + playerX = camera->pos[0]; + playerZ = camera->pos[2]; + if (((playerX - renderDistance) < x) && (x < (playerX + renderDistance)) && ((playerZ - renderDistance) < z) && (z < (playerZ + renderDistance))) { + flag |= (RENDER_VEHICLE << i); } else { - var_v1 &= ~(1 << var_a1); + flag &= ~(RENDER_VEHICLE << i); } } } - return var_v1; + return flag; } void func_800065D0(s32 playerId, Player *player) { @@ -830,86 +838,73 @@ void func_800070F4(void) { } } -#ifdef NON_MATCHING -// https://decomp.me/scratch/AqmzN -// Decently close overall but there's a huge amount of register mismatches -// Permuter has not had much luck finding solutions. -// Replacing `temp_s0` for `var_v0` is a pretty good start, but the permuter -// is unable to find any improvements after that :( - void func_800074D4(void) { - Player *var_a0_2; f32 temp_a0; + s32 temp; s32 sp68[8]; - s32 temp_s0; + UNUSED s32 pad; s32 temp_t1; - s32 var_a3; - s32 var_a3_2; - s32 var_v0; - s32 this_loops_upper_bound_is_brough_to_you_by_the_number_eight = NUM_PLAYERS; - - for (var_a3 = 0; var_a3 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight; ) { - gCourseCompletionPercentByRank[var_a3++] = 0.0f; + s32 i; + s32 j; + s32 this_loops_upper_bound_is_brough_to_you_by_the_number = 8; + + for (i = 0; i < this_loops_upper_bound_is_brough_to_you_by_the_number;) { + gCourseCompletionPercentByRank[i++] = 0.0f; } - var_v0 = 0; - for (var_a3 = 0; var_a3 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight; var_a3++) { - var_a0_2 = &gPlayers[var_a3]; - if (var_a0_2->type & 0x800) { - sp68[var_v0] = var_a3; - gCourseCompletionPercentByRank[var_v0] = -gTimePlayerLastTouchedFinishLine[var_a3]; - var_v0++; + + for (j = 0, i = 0; i < this_loops_upper_bound_is_brough_to_you_by_the_number; i++) { + if (gPlayers[i].type & 0x800) { + sp68[j] = i; + gCourseCompletionPercentByRank[j] = -gTimePlayerLastTouchedFinishLine[i]; + j++; } } - temp_t1 = var_v0; - for (var_a3 = 0; var_a3 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight; var_a3++) { - var_a0_2 = &gPlayers[var_a3]; - if (!(var_a0_2->type & 0x800)) { - sp68[var_v0] = var_a3; - gCourseCompletionPercentByRank[var_v0] = gCourseCompletionPercentByPlayerId[var_a3]; - var_v0++; + temp_t1 = j; + for (i = 0; i < this_loops_upper_bound_is_brough_to_you_by_the_number; i++) { + if (!(gPlayers[i].type & 0x800)) { + sp68[j] = i; + gCourseCompletionPercentByRank[j] = gCourseCompletionPercentByPlayerId[i]; + j++; } } - - for (var_a3 = 0; var_a3 < temp_t1 - 1; var_a3++) { - for (var_a3_2 = var_a3 + 1; var_a3_2 < temp_t1; var_a3_2++) { - if (gCourseCompletionPercentByRank[var_a3] < gCourseCompletionPercentByRank[var_a3_2]) { - var_v0 = sp68[var_a3]; - sp68[var_a3] = sp68[var_a3_2]; - sp68[var_a3_2] = var_v0; - temp_a0 = gCourseCompletionPercentByRank[var_a3]; - gCourseCompletionPercentByRank[var_a3] = gCourseCompletionPercentByRank[var_a3_2]; - gCourseCompletionPercentByRank[var_a3_2] = temp_a0; + + for (i = 0; i < (temp_t1 - 1); i++) { + for (j = i + 1; j < temp_t1; j++) { + if (gCourseCompletionPercentByRank[i] < gCourseCompletionPercentByRank[j]) { + temp = sp68[i]; + sp68[i] = sp68[j]; + sp68[j] = temp; + temp_a0 = gCourseCompletionPercentByRank[i]; + gCourseCompletionPercentByRank[i] = gCourseCompletionPercentByRank[j]; + gCourseCompletionPercentByRank[j] = temp_a0; + } + } + } + + for (i = temp_t1; i < (this_loops_upper_bound_is_brough_to_you_by_the_number - 1); i++) { + for (j = i + 1; j < this_loops_upper_bound_is_brough_to_you_by_the_number; j++) { + if (gCourseCompletionPercentByRank[i] < gCourseCompletionPercentByRank[j]) { + temp = sp68[i]; + sp68[i] = sp68[j]; + sp68[j] = temp; + temp_a0 = gCourseCompletionPercentByRank[i]; + gCourseCompletionPercentByRank[i] = gCourseCompletionPercentByRank[j]; + gCourseCompletionPercentByRank[j] = temp_a0; } } } - for (var_a3 = temp_t1; var_a3 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight - 1; var_a3++) { - for (var_a3_2 = var_a3 + 1; var_a3_2 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight; var_a3_2++) { - if (gCourseCompletionPercentByRank[var_a3] < gCourseCompletionPercentByRank[var_a3_2]) { - var_v0 = sp68[var_a3]; - sp68[var_a3] = sp68[var_a3_2]; - sp68[var_a3_2] = var_v0; - temp_a0 = gCourseCompletionPercentByRank[var_a3]; - gCourseCompletionPercentByRank[var_a3] = gCourseCompletionPercentByRank[var_a3_2]; - gCourseCompletionPercentByRank[var_a3_2] = temp_a0; - } - } + for (i = 0; i < 8; i++) { + D_801643E0[i] = gGPCurrentRaceRankByPlayerId[i]; } - for (var_a3 = 0; var_a3 < NUM_PLAYERS; var_a3++) { - D_801643E0[var_a3] = gGPCurrentRaceRankByPlayerId[var_a3]; - } - - for (var_a3 = 0; var_a3 < this_loops_upper_bound_is_brough_to_you_by_the_number_eight; var_a3++) { - gGPCurrentRaceRankByPlayerId[sp68[var_a3]] = var_a3; - gGPCurrentRacePlayerIdByRank[var_a3] = sp68[var_a3]; + for (i = 0; i < this_loops_upper_bound_is_brough_to_you_by_the_number; i++) { + gGPCurrentRaceRankByPlayerId[sp68[i]] = i; + gGPCurrentRacePlayerIdByRank[i] = sp68[i]; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800074D4.s") -#endif s32 func_80007BF8(u16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { s32 var_v1; @@ -927,13 +922,11 @@ s32 func_80007BF8(u16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { return var_v1; } -#ifdef NON_MATCHING // Likely func equiv -// https://decomp.me/scratch/Te4u1 - -void func_80007D04(s32 playerId, Player *player) { +void func_80007D04(s32 playerId, Player* player) { s16 temp_t1; s16 temp_t2; s32 var_v0; + temp_t1 = D_80164450[D_80163478]; temp_t2 = D_80164450[playerId]; @@ -954,33 +947,40 @@ void func_80007D04(s32 playerId, Player *player) { return; } - // Something wrong here. Maybe needs - // var_v0 = 0; + switch (gCCSelection) { // WTF, FAKE ? + case 3: + break; + } + switch (gCCSelection) { - case CC_50: + case 0: var_v0 = 0; if (playerId == D_80163344[0]) { var_v0 = 0x14; } break; + case 1: var_v0 = 8; if (playerId == D_80163344[0]) { var_v0 = 0x18; } break; + case 2: var_v0 = 0x12; if (playerId == D_80163344[0]) { var_v0 = 0x24; } break; + case 3: var_v0 = 8; if (playerId == D_80163344[0]) { var_v0 = 0x18; } break; + default: var_v0 = 0; break; @@ -990,7 +990,6 @@ void func_80007D04(s32 playerId, Player *player) { player->effects |= 0x200000; player_speed(player); D_801634C0[playerId] = 1; - } else if (temp_t2 < (temp_t1 + var_v0 + 0x32)) { player->effects &= ~0x200000; player_speed(player); @@ -1001,15 +1000,11 @@ void func_80007D04(s32 playerId, Player *player) { D_801634C0[playerId] = 2; } else { player->effects &= ~0x200000; - func_80031F48(player, 1.0f); + decelerate_ai_player(player, 1.0f); D_801634C0[playerId] = -1; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80007D04.s") -#endif - void func_80007FA4(s32 arg0, Player *player, f32 arg2) { f32 temp_f0; f32 temp_f12; @@ -1022,35 +1017,35 @@ void func_80007FA4(s32 arg0, Player *player, f32 arg2) { if (arg0 == 3) { if ((temp_f12 < 25.0f) && (D_80163410[arg0] < 5)) { D_80163410[arg0] = 4; - (arg2 < ((2.0 * 18.0) / 216.0)) ? func_80038BE4(player, 1) : func_80031F48(player, 1.0f); + (arg2 < ((2.0 * 18.0) / 216.0)) ? func_80038BE4(player, 1) : decelerate_ai_player(player, 1.0f); } else if ((temp_f12 < 3600.0f) && (D_80163410[arg0] < 4)) { D_80163410[arg0] = 3; - (arg2 < ((5.0 * 18.0) / 216.0)) ? func_80038BE4(player, 1) : func_80031F48(player, 5.0f); + (arg2 < ((5.0 * 18.0) / 216.0)) ? func_80038BE4(player, 1) : decelerate_ai_player(player, 5.0f); } else { - (arg2 < ((20.0 * 18.0) / 216.0)) ? func_80038BE4(player, 10) : func_80031F48(player, 1.0f); + (arg2 < ((20.0 * 18.0) / 216.0)) ? func_80038BE4(player, 10) : decelerate_ai_player(player, 1.0f); } } else { if ((temp_f12 < 25.0f) && (D_80163410[arg0] < 5)) { D_80163410[arg0] = 4; test = 2; - (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 1) : func_80031F48(player, 1.0f); + (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 1) : decelerate_ai_player(player, 1.0f); } else if ((temp_f12 < 4900.0f) && (D_80163410[arg0] < 4)) { D_80163410[arg0] = 3; test = 5; - (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 1) : func_80031F48(player, 15.0f); + (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 1) : decelerate_ai_player(player, 15.0f); } else if ((temp_f12 < 22500.0f) && (D_80163410[arg0] < 3)) { D_80163410[arg0] = 2; test = 20; - (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 5) : func_80031F48(player, 1.0f); + (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 5) : decelerate_ai_player(player, 1.0f); } else if ((temp_f12 < 90000.0f) && (D_80163410[arg0] < 2)) { D_80163410[arg0] = 1; test = 30; - (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 6) : func_80031F48(player, 1.0f); + (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 6) : decelerate_ai_player(player, 1.0f); } else if (D_80163410[arg0] == 0) { test = 35; - (arg2 < (((test^0) * 18.0) / 216.0)) ? func_80038BE4(player, 2) : func_80031F48(player, 1.0f); + (arg2 < (((test^0) * 18.0) / 216.0)) ? func_80038BE4(player, 2) : decelerate_ai_player(player, 1.0f); } else { - func_80031F48(player, 1.0f); + decelerate_ai_player(player, 1.0f); } } } @@ -1058,7 +1053,7 @@ void func_80007FA4(s32 arg0, Player *player, f32 arg2) { void func_80008424(s32 playerId, f32 arg1, Player *player) { f32 var_f2; f32 var_f0; - s32 thing; + UNUSED s32 thing; s32 var_a1; var_f2 = player->unk_094; @@ -1071,8 +1066,8 @@ void func_80008424(s32 playerId, f32 arg1, Player *player) { !(player->soundEffects & 4)) { if (gCurrentCourseId == COURSE_AWARD_CEREMONY) { func_80007FA4(playerId, player, var_f2); - } else if ((D_801634D8[playerId] == 1) && !(player->effects & (STAR_EFFECT | BOO_EFFECT))) { - func_80031F48(player, 10.0f); + } else if ((bStopAICrossing[playerId] == 1) && !(player->effects & (STAR_EFFECT | BOO_EFFECT))) { + decelerate_ai_player(player, 10.0f); if (player->currentSpeed == 0.0) { player->velocity[0] = 0.0f; player->velocity[2] = 0.0f; @@ -1099,7 +1094,7 @@ void func_80008424(s32 playerId, f32 arg1, Player *player) { player_speed(player); } else { player->effects &= ~0x00200000; - func_80031F48(player, 1.0f); + decelerate_ai_player(player, 1.0f); } } else if ((D_801631E0[playerId] == 1) && (D_80163330[playerId] != 1)) { if (func_800088D8(playerId, gLapCountByPlayerId[playerId], D_80164408[playerId]) == 1) { @@ -1107,7 +1102,7 @@ void func_80008424(s32 playerId, f32 arg1, Player *player) { player_speed(player); } else { player->effects &= ~0x00200000; - func_80031F48(player, 1.0f); + decelerate_ai_player(player, 1.0f); } } else { var_a1 = 1; @@ -1142,14 +1137,14 @@ void func_80008424(s32 playerId, f32 arg1, Player *player) { player_speed(player); } else { player->effects &= ~0x00200000; - func_80031F48(player, 1.0f); + decelerate_ai_player(player, 1.0f); } } else { player->effects &= ~0x00200000; if (arg1 > 1.0f) { - func_80031F48(player, 2.0f); + decelerate_ai_player(player, 2.0f); } else { - func_80031F48(player, 5.0f); + decelerate_ai_player(player, 5.0f); } } } @@ -1158,177 +1153,142 @@ void func_80008424(s32 playerId, f32 arg1, Player *player) { } } -#ifdef MIPS_TO_C +#ifdef NON_MATCHING //generated by m2c commit 05102b12b75400ad2be8bd0872404237b36e1702 on Feb-20-2024 -static ? D_800DCAF4; /* unable to generate initializer: unknown type */ -static ? D_800DCB34; /* unable to generate initializer: unknown type */ -static ? *D_800DCBB4[0x15] = { - &D_800DCB34, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, - &D_800DCAF4, -}; +// static ? D_800DCAF4; /* unable to generate initializer: unknown type */ +// static ? D_800DCB34; /* unable to generate initializer: unknown type */ +// static ? *D_800DCBB4[0x15] = { +// &D_800DCB34, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// &D_800DCAF4, +// }; -s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) { - s32 sp10; - s32 *sp4; - Player *temp_t1; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f0_3; - s16 temp_t5_2; - s16 temp_v0; +s32 func_800088D8(s32 playerId, s16 arg1, s16 arg2) { + Player* player; + f32 interp; + s16 rank; s16 var_a0_4; - s16 var_a1; s16 var_t1; s16 var_v0; - s32 *temp_t4; - s32 *temp_t5; - s32 *var_v1; + s16* temp_a3; s32 temp_a2; - s32 temp_lo; - s32 temp_t2; - s32 temp_t8; - s32 var_a0; + s32 arg1_times_8; s32 var_a0_2; - s32 var_a0_5; - s32 var_a1_2; - s32 var_a1_3; + s32 progress; s32 var_a1_4; - u16 *var_a0_3; - u16 temp_t7; - void *temp_a2_2; - void *temp_a3; + s32 i; - var_a1 = arg1; - temp_t5 = &D_80163128[arg0]; - temp_t4 = &D_80163150[arg0]; - *temp_t5 = -1; - *temp_t4 = -1; + D_80163128[playerId] = -1; + D_80163150[playerId] = -1; if (gModeSelection == 1) { - return 1; + return true; } - if (var_a1 < 0) { - return 1; + if (arg1 < 0) { + return true; + } else if (arg1 >= 4) { + arg1 = 3; } - if (var_a1 >= 4) { - var_a1 = 3; + if (D_80163330[playerId] == 1) { + return true; } - if (D_80163330[arg0] == 1) { - return 1; + player = &gPlayers[playerId]; + if (player->type & 0x4000) { + return true; } - temp_t1 = &gPlayers[arg0]; - if (temp_t1->type & 0x4000) { - return 1; - } - temp_t2 = var_a1 * 8; - temp_a3 = D_800DCBB4[gCurrentCourseId] + (temp_t2 * 2); + arg1_times_8 = arg1 * 8; + temp_a3 = &D_800DCBB4[gCurrentCourseId][arg1_times_8]; if (arg2 == 0) { if (gDemoMode == 1) { - temp_a2 = D_80164450[arg0].unk2 - D_80164450[*(D_80164378 + 0xE)].unk2; - var_a1_2 = temp_a2; + temp_a2 = D_80164450[playerId] - D_80164450[D_80164378[7]]; if (temp_a2 < 0) { - var_a1_2 = -temp_a2; + temp_a2 = -temp_a2; } - if (temp_t2 < 0x18) { - temp_f0 = gLapCompletionPercentByPlayerId[arg0]; - var_a0 = (s32) (((f32) temp_a3->unk10 * temp_f0) + ((f32) temp_a3->unk0 * (1.0f - temp_f0))); + if (arg1_times_8 < 24) { + interp = gLapCompletionPercentByPlayerId[playerId]; + D_80163150[playerId] = temp_a3[8] * interp + temp_a3[0] * (1.0f - interp); } else { - var_a0 = (s32) temp_a3->unk0; + D_80163150[playerId] = temp_a3[0]; } - *temp_t4 = var_a0; - if ((var_a0 < var_a1_2) && (((temp_t1->unk_094 / 18.0f) * 216.0f) >= 20.0f)) { - goto block_55; + if (D_80163150[playerId] < temp_a2 && player->unk_094 / 18.0f * 216.0f >= 20.0f) { + return false; } - return 1; + return true; } - temp_v0 = D_80164450[arg0].unk2; - var_a1_3 = temp_v0 - D_80164450[D_80163478].unk2; - temp_t5_2 = *(gGPCurrentRaceRankByPlayerId + 2 + (D_80163478 * 4)); - if ((((s32) (*gWaypointCountByPathIndex * 2) / 3) < var_a1_3) && (temp_t5_2 >= 6)) { - var_a1_3 = temp_v0 - D_80164450[*(gLapCountByPlayerId - 0x1A + (temp_t5_2 * 2))].unk2; + progress = D_80164450[playerId] - D_80164450[D_80163478]; + rank = gGPCurrentRaceRankByPlayerId[2 + (D_80163478 * 4)]; + if (gWaypointCountByPathIndex[0] * 2 / 3 < progress && rank >= 6) { + progress = D_80164450[playerId] - D_80164450[gLapCountByPlayerId[-26 + rank * 2]]; } - if (var_a1_3 < 0) { - var_a1_3 = -var_a1_3; + if (progress < 0) { + progress = -progress; } - if (temp_t2 < 0x18) { - temp_f0_2 = gLapCompletionPercentByPlayerId[arg0]; - var_a0_2 = (s32) (((f32) temp_a3->unk10 * temp_f0_2) + ((f32) temp_a3->unk0 * (1.0f - temp_f0_2))); + if (arg1_times_8 < 24) { + interp = gLapCompletionPercentByPlayerId[playerId]; + var_a0_2 = temp_a3[8] * interp + temp_a3[0] * (1.0f - interp); } else { - var_a0_2 = (s32) temp_a3->unk0; + var_a0_2 = temp_a3[0]; } - temp_lo = (gCCSelection + 1) * var_a0_2; - *temp_t4 = temp_lo; - if ((temp_lo < var_a1_3) && (((temp_t1->unk_094 / 18.0f) * 216.0f) >= 20.0f)) { - goto block_55; + D_80163150[playerId] = (gCCSelection + 1) * var_a0_2; + if (D_80163150[playerId] < progress && player->unk_094 / 18.0f * 216.0f >= 20.0f) { + return false; } - return 1; - } - var_a0_3 = D_80163344; - temp_t8 = D_80164450[(s16) *D_80163344].unk2 - D_80164450[arg0].unk2; - sp10 = temp_t8; - var_a1_4 = temp_t8; - if (temp_t8 < 0) { - var_a1_4 = -temp_t8; - } - var_v0 = 0; - do { - temp_t7 = *var_a0_3; - var_a0_3 += 2; - if (gGPCurrentRaceRankByPlayerId[temp_t7] < arg2) { - var_v0 += 1; - } - } while ((u32) var_a0_3 < (u32) D_80163348); - var_a0_4 = 0; - var_v1 = gGPCurrentRaceRankByPlayerId; - if (gPlayerCount > 0) { - sp4 = &gGPCurrentRaceRankByPlayerId[gPlayerCount]; - do { - if (*var_v1 < arg2) { - var_a0_4 += 1; - } - var_v1 += 4; - } while ((u32) var_v1 < (u32) sp4); - } - var_t1 = (arg2 - var_v0) - var_a0_4; - if ((var_v0 > 0) || (var_a0_4 > 0)) { - var_t1 += 1; - } - D_80164538[arg0] = var_t1; - if ((var_t1 < 0) || (var_t1 >= 8)) { - goto block_55; - } - if (temp_t2 < 0x18) { - temp_a2_2 = temp_a3 + (var_t1 * 2); - temp_f0_3 = gLapCompletionPercentByPlayerId[arg0]; - var_a0_5 = (s32) (((f32) temp_a2_2->unk10 * temp_f0_3) + ((f32) temp_a2_2->unk0 * (1.0f - temp_f0_3))); + return true; } else { - var_a0_5 = (s32) *(temp_a3 + (var_t1 * 2)); + var_a1_4 = D_80164450[(s16) *D_80163344] - D_80164450[playerId]; + if (var_a1_4 < 0) { + var_a1_4 = -var_a1_4; + } + var_v0 = 0; + for (i = 0; i < 2; i++) { + if (gGPCurrentRaceRankByPlayerId[D_80163344[i]] < arg2) { + var_v0++; + } + } + var_a0_4 = 0; + for (i = 0; i < gPlayerCount; i++) { + if (gGPCurrentRaceRankByPlayerId[i] < arg2) { + var_a0_4++; + } + } + var_t1 = (arg2 - var_v0) - var_a0_4; + if (var_v0 > 0 || var_a0_4 > 0) { + var_t1++; + } + D_80164538[playerId] = var_t1; + if (var_t1 < 0 || var_t1 >= 8) { + return false; + } + if (arg1_times_8 < 24) { + temp_a3 = &temp_a3[var_t1]; + interp = gLapCompletionPercentByPlayerId[playerId]; + D_80163150[playerId] = temp_a3[8] * interp + temp_a3[0] * (1.0f - interp); + } else { + D_80163150[playerId] = temp_a3[var_t1]; + } + D_80163128[playerId] = var_a1_4; + if (D_80163150[playerId] < var_a1_4) { + return true; + } + return false; } - *temp_t5 = var_a1_4; - *temp_t4 = var_a0_5; - if (var_a0_5 < var_a1_4) { - return 1; - } -block_55: - return 0; } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800088D8.s") @@ -1349,7 +1309,7 @@ s32 func_80008E58(s32 payerId, s32 pathIndex) { f32 posY; f32 posZ; Player *player; - s32 courseSection; + s32 trackSegment; UNUSED s32 stackPadding; player = &gPlayers[payerId]; @@ -1357,10 +1317,10 @@ s32 func_80008E58(s32 payerId, s32 pathIndex) { posY = player->pos[1]; posZ = player->pos[2]; stackPadding = pathIndex; - courseSection = get_course_section(player->unk_110.unk3A); - D_80163318[payerId] = courseSection; - D_80162FCE = func_8000C0BC(posX, posY, posZ, courseSection, &pathIndex); - gNearestWaypointByPlayerId[payerId] = D_80162FCE; + trackSegment = get_section_id(player->collision.meshIndexZX); + D_80163318[payerId] = trackSegment; + sSomeNearestWaypoint = func_8000C0BC(posX, posY, posZ, trackSegment, &pathIndex); + gNearestWaypointByPlayerId[payerId] = sSomeNearestWaypoint; if(pathIndex) {}; gPathIndexByPlayerId[payerId] = pathIndex; func_80008DC0(pathIndex); @@ -1371,7 +1331,7 @@ s32 func_80008E58(s32 payerId, s32 pathIndex) { void func_80008F38(s32 playerId) { f32 temp_f0; - D_80164450[playerId] = (gLapCountByPlayerId[playerId] * gWaypointCountByPathIndex[0]) + D_80162FCE; + D_80164450[playerId] = (gLapCountByPlayerId[playerId] * gWaypointCountByPathIndex[0]) + sSomeNearestWaypoint; temp_f0 = (f32) gNearestWaypointByPlayerId[playerId] / (f32) gWaypointCountByPathIndex[gPathIndexByPlayerId[playerId]]; gLapCompletionPercentByPlayerId[playerId] = temp_f0; gCourseCompletionPercentByPlayerId[playerId] = temp_f0; @@ -1382,26 +1342,26 @@ void func_80009000(s32 playerId) { s16 temp_v0; temp_v0 = D_801644F8[playerId]; - if (D_80162FCE >= 0x6D) { + if (sSomeNearestWaypoint >= 0x6D) { D_801644F8[playerId] = 1; switch (D_80163448) { case 0: - if (D_80162FCE >= 0x20F) { + if (sSomeNearestWaypoint >= 0x20F) { D_801644F8[playerId] = 0; } break; case 1: - if (D_80162FCE >= 0x206) { + if (sSomeNearestWaypoint >= 0x206) { D_801644F8[playerId] = 0; } break; case 2: - if (D_80162FCE >= 0x211) { + if (sSomeNearestWaypoint >= 0x211) { D_801644F8[playerId] = 0; } break; case 3: - if (D_80162FCE >= 0x283) { + if (sSomeNearestWaypoint >= 0x283) { D_801644F8[playerId] = 0; } break; @@ -1426,15 +1386,15 @@ void func_800090F0(s32 playerId, Player *player) { posZ = player->pos[2]; if (D_80163490[playerId] == 1) { D_80163448 = func_80008E58(playerId, random_int(4U)); - D_80162FCE = func_8000CD24(posX, posY, posZ, 0, player, playerId, D_80163448); - gNearestWaypointByPlayerId[playerId] = D_80162FCE; + sSomeNearestWaypoint = func_8000CD24(posX, posY, posZ, 0, player, playerId, D_80163448); + gNearestWaypointByPlayerId[playerId] = sSomeNearestWaypoint; func_80008F38(playerId); D_80163490[playerId] = 0; } if (D_801634A8[playerId] == 1) { D_80163448 = func_80008E58(playerId, 0); - D_80162FCE = func_8000CD24(posX, posY, posZ, 0, player, playerId, D_80163448); - gNearestWaypointByPlayerId[playerId] = D_80162FCE; + sSomeNearestWaypoint = func_8000CD24(posX, posY, posZ, 0, player, playerId, D_80163448); + gNearestWaypointByPlayerId[playerId] = sSomeNearestWaypoint; func_80008F38(playerId); D_801634A8[playerId] = 0; } @@ -1446,8 +1406,7 @@ void func_800090F0(s32 playerId, Player *player) { f32 func_80009258(UNUSED s32 playerId, f32 arg1, f32 arg2) { f32 temp_f2 = D_8016344C - arg2; f32 temp_f12 = arg1 - D_8016344C; - - return gCourseTimer - ( (0.01666666f * temp_f2) / (temp_f2 + temp_f12) ); + return gCourseTimer - ( (COURSE_TIMER_ITER_f * temp_f2) / (temp_f2 + temp_f12) ); } #ifdef NON_MATCHING @@ -1459,27 +1418,27 @@ void func_8000929C(s32 playerId, Player *player) { s32 var_v0; s32 var_v1; f32 someTemp0; - s16 stackPadding0; + UNUSED s16 stackPadding0; s16 var_t0; - s32 stackPadding1; + UNUSED s32 stackPadding1; tempPos0 = player->pos[0]; tempPos1 = player->pos[1]; tempPos2 = player->pos[2]; D_801630E2 = 0; D_80163240[playerId] = 0; - D_80162FCE = func_8000CD24(tempPos0, tempPos1, tempPos2, gNearestWaypointByPlayerId[playerId], player, playerId, D_80163448); - D_801630E0 = D_80162FCE; - if (gNearestWaypointByPlayerId[playerId] != D_80162FCE) { - gNearestWaypointByPlayerId[playerId] = D_80162FCE; + sSomeNearestWaypoint = func_8000CD24(tempPos0, tempPos1, tempPos2, gNearestWaypointByPlayerId[playerId], player, playerId, D_80163448); + D_801630E0 = sSomeNearestWaypoint; + if (gNearestWaypointByPlayerId[playerId] != sSomeNearestWaypoint) { + gNearestWaypointByPlayerId[playerId] = sSomeNearestWaypoint; D_801630E2 = 1; func_80008F38(playerId); } if (gCurrentCourseId == 0x0014) { - func_8000B95C(playerId, D_80162FCE, D_80163448); + func_8000B95C(playerId, sSomeNearestWaypoint, D_80163448); return; } - if ((D_80162FCE < 0x14) || ((gWaypointCountByPathIndex[D_80163448] - 0x14) < D_80162FCE) || (gCurrentCourseId == 0x000B)) { + if ((sSomeNearestWaypoint < 0x14) || ((gWaypointCountByPathIndex[D_80163448] - 0x14) < sSomeNearestWaypoint) || (gCurrentCourseId == 0x000B)) { var_v1 = 0; var_t0 = 0; if (gCurrentCourseId == 0x000B) { @@ -1513,10 +1472,10 @@ void func_8000929C(s32 playerId, Player *player) { someTemp0 = D_80163450[playerId]; if ((var_v1 != 0) && (tempPos2 <= D_8016344C)) { if (D_8016344C < someTemp0) { - gLapCountByPlayerId[playerId]++; + gLapCountByPlayerId[playerId]++; if ((gModeSelection == 0) && (gLapCountByPlayerId[playerId] == 5)) { if (D_80164408[playerId] == 7) { - for (var_v0 = 0; var_v0 < 8; var_v0++) { gLapCountByPlayerId[var_v0]--; } + for (var_v0 = 0; var_v0 < 8; var_v0++) { gLapCountByPlayerId[var_v0]--; } } } D_80163240[playerId] = 1; @@ -1534,11 +1493,11 @@ void func_8000929C(s32 playerId, Player *player) { } } D_80163450[playerId] = tempPos2; - if ((gCurrentCourseId == 4) && (D_801630E2 == 1)) { - func_80009000(playerId); - if (((player->type & 0x4000) == 0) || (player->type & 0x1000)) { - func_800090F0(playerId, player); - } + if ((gCurrentCourseId == COURSE_YOSHI_VALLEY) && (D_801630E2 == 1)) { + func_80009000(playerId); + if (((player->type & 0x4000) == 0) || (player->type & 0x1000)) { + func_800090F0(playerId, player); + } } if ((player->type & 0x4000) && !(player->type & 0x1000)) { func_800065D0(playerId, player); @@ -1552,7 +1511,7 @@ void func_8000929C(s32 playerId, Player *player) { } else { //???? } - func_8000B95C(playerId, D_80162FCE, D_80163448); + func_8000B95C(playerId, sSomeNearestWaypoint, D_80163448); } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000929C.s") @@ -1603,13 +1562,13 @@ void func_800098FC(s32 arg0, Player *player) { } if (D_801633B0[arg0] >= 0xB) { if ((player->soundEffects & 0x400000) || (player->soundEffects & 0x01000000) || (player->soundEffects & 2) || (player->soundEffects & 4) || (player->effects & HIT_EFFECT)) { - func_800C92CC(arg0, 0x2900800BU); - D_801633B0[arg0] = 0; - } + func_800C92CC(arg0, 0x2900800BU); + D_801633B0[arg0] = 0; + } } } -void func_800099EC(s32 playerId, Player *unused) { +void func_800099EC(s32 playerId, UNUSED Player *unused) { s32 var_s0; if (D_801633C8[playerId] >= 0x65) { @@ -1644,33 +1603,33 @@ void func_800099EC(s32 playerId, Player *unused) { // FAKEMATCH1 is the best improvement I've seen yet, MISMATCH2/3 become the only issues. void func_80009B60(s32 playerId) { - s32 stackPadding00; - s32 stackPadding01; - s32 stackPadding02; - s32 stackPadding03; - s32 stackPadding04; - s32 stackPadding05; - s32 stackPadding06; - s32 stackPadding07; - s32 stackPadding08; - s32 stackPadding09; - s32 stackPadding0A; - s32 stackPadding0B; - s32 stackPadding0C; - s32 stackPadding0D; + UNUSED s32 stackPadding00; + UNUSED s32 stackPadding01; + UNUSED s32 stackPadding02; + UNUSED s32 stackPadding03; + UNUSED s32 stackPadding04; + UNUSED s32 stackPadding05; + UNUSED s32 stackPadding06; + UNUSED s32 stackPadding07; + UNUSED s32 stackPadding08; + UNUSED s32 stackPadding09; + UNUSED s32 stackPadding0A; + UNUSED s32 stackPadding0B; + UNUSED s32 stackPadding0C; + UNUSED s32 stackPadding0D; s16 var_a0_2; s16 var_a1; - s32 stackPadding0E; - s32 stackPadding0F; - s32 stackPadding10; - s32 stackPadding11; - s32 stackPadding12; - s32 stackPadding13; - s32 stackPadding14; - s32 stackPadding15; - s32 stackPadding16; - s32 stackPadding17; - s32 stackPadding18; + UNUSED s32 stackPadding0E; + UNUSED s32 stackPadding0F; + UNUSED s32 stackPadding10; + UNUSED s32 stackPadding11; + UNUSED s32 stackPadding12; + UNUSED s32 stackPadding13; + UNUSED s32 stackPadding14; + UNUSED s32 stackPadding15; + UNUSED s32 stackPadding16; + UNUSED s32 stackPadding17; + UNUSED s32 stackPadding18; u16 stackPadding19; u16 stackPadding1A; f32 temp_f0; @@ -1806,12 +1765,12 @@ void func_80009B60(s32 playerId) { } else if (D_80162FD0 == (s16) 1U) { D_80163210[playerId] = *(f32*)segmented_to_virtual_dupe_2(&D_0D0096B8[gCurrentCourseId][gCCSelection]); D_801634F8[playerId].unk4 = -0.5f; - } else if (D_801645E0[D_80162FCE] > 0) { + } else if (D_801645E0[sSomeNearestWaypoint] > 0) { D_80163210[playerId] = *(f32*)segmented_to_virtual_dupe_2(&D_0D009418[gCurrentCourseId][gCCSelection]); } else { D_80163210[playerId] = *(f32*)segmented_to_virtual_dupe_2(&D_0D009568[gCurrentCourseId][gCCSelection]); } - func_800131DC(playerId); + check_ai_crossing_distance(playerId); func_8000D3B8(playerId); func_8000D438(playerId, D_801630E0); temp_f0 = D_80162FA0[0] - player->pos[0]; @@ -1840,7 +1799,7 @@ void func_80009B60(s32 playerId) { } if (D_801630E8[playerId] != 0) { D_80163300[playerId] = -get_angle_between_two_vectors(&player->copy_rotation_x, player->pos); - var_a0_2 = (D_801631DC[(D_80162FCE + 2) % D_80164430] * 0x168) / 65535; + var_a0_2 = (D_801631DC[(sSomeNearestWaypoint + 2) % D_80164430] * 0x168) / 65535; var_a1 = (D_80163300[playerId] * 0x168) / 65535; if (var_a0_2 < -0xB4) { var_a0_2 += 0x168; @@ -1889,8 +1848,8 @@ void func_80009B60(s32 playerId) { func_80008424(playerId, D_80163210[playerId], player); return; } - D_801630B8[playerId] = func_8000B7E4(playerId, D_80162FCE); - func_8000D438(playerId, D_80162FCE); + D_801630B8[playerId] = func_8000B7E4(playerId, sSomeNearestWaypoint); + func_8000D438(playerId, sSomeNearestWaypoint); if (gCurrentCourseId != 0x0014) { if (D_80164450[playerId] < 0xB) { stackPadding1A = D_801630E0; @@ -2014,7 +1973,7 @@ void func_80009B60(s32 playerId) { D_8016320C = D_80163028[playerId]; player->effects &= ~0x00200000; D_80163210[playerId] = D_8016320C; - func_800131DC(playerId); + check_ai_crossing_distance(playerId); func_80008424(playerId, D_8016320C, player); } } @@ -2029,14 +1988,14 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80009B60.s") #ifdef NON_MATCHING // Lots of work left to do, might be funtionally accurate? void func_8000B140(s32 playerId) { - f32 stackPadding0; - f32 stackPadding1; - f32 stackPadding2; - f32 stackPadding3; - f32 stackPadding4; - f32 stackPadding5; - f32 stackPadding6; - f32 stackPadding7; + UNUSED f32 stackPadding0; + UNUSED f32 stackPadding1; + UNUSED f32 stackPadding2; + UNUSED f32 stackPadding3; + UNUSED f32 stackPadding4; + UNUSED f32 stackPadding5; + UNUSED f32 stackPadding6; + UNUSED f32 stackPadding7; f32 temp_f0_2; f32 temp_f12; f32 temp_f14; @@ -2046,9 +2005,9 @@ void func_8000B140(s32 playerId) { f32 var_f18; f32 var_f20; s16 spB0[8]; - f32 stackPadding8; + UNUSED f32 stackPadding8; s16 sp9C[8]; - f32 stackPadding9; + UNUSED f32 stackPadding9; f32 sp74[8]; s32 temp_a1_2; s16 temp_v1_2; @@ -2211,9 +2170,9 @@ void func_8000BA14(u16 waypointIndex, f32 arg1, f32 arg2, s16 pathIndex) { f32 xdiff; f32 zdiff; f32 distance; - f32 temp_f12; - f32 temp_f2_2; - TrackWaypoint *path; + UNUSED f32 temp_f12; + UNUSED f32 temp_f2_2; + UNUSED TrackWaypoint *path; TrackWaypoint *waypointTwo; TrackWaypoint *waypointOne; @@ -2252,22 +2211,22 @@ void func_8000BBD8(u16 waypointIndex, f32 arg1, s16 pathIndex) { path1 = &D_80164560[pathIndex][waypointIndex]; path2 = &D_80164570[pathIndex][waypointIndex]; - + x1 = (f32) path1->posX; z1 = (f32) path1->posZ; - + x2 = (f32) path2->posX; z2 = (f32) path2->posZ; - + waypointIndex += 1; waypointIndex = waypointIndex % gWaypointCountByPathIndex[pathIndex]; - + path1 = &D_80164560[pathIndex][waypointIndex]; path2 = &D_80164570[pathIndex][waypointIndex]; - + x3 = (f32) path1->posX; z3 = (f32) path1->posZ; - + x4 = (f32) path2->posX; z4 = (f32) path2->posZ; @@ -2497,7 +2456,7 @@ s16 func_8000C9DC(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, s32 pathIndex return nearestWaypointIndex; } -void func_8000CBA4(UNUSED f32 posX, f32 posY, UNUSED f32 posZ, s16 *waypointIndex, s32 arg4) { +void func_8000CBA4(UNUSED f32 posX, f32 posY, UNUSED f32 posZ, s16 *waypointIndex, UNUSED s32 arg4) { s16 var_v0; var_v0 = *waypointIndex; @@ -2521,12 +2480,12 @@ void func_8000CBF8(UNUSED f32 posX, UNUSED f32 posY, f32 posZ, s16 *waypointInde } s16 func_8000CC88(f32 posX, f32 posY, f32 posZ, Player *player, s32 playerId, s32 *pathIndex) { - u16 courseSection; + u16 trackSegment; s16 ret; - courseSection = get_course_section(player->unk_110.unk3A); - if ((courseSection <= 0) || (courseSection >= 0x33)) { - courseSection = D_80163318[playerId]; + trackSegment = get_section_id(player->collision.meshIndexZX); + if ((trackSegment <= 0) || (trackSegment >= 0x33)) { + trackSegment = D_80163318[playerId]; } D_80163318[playerId] = courseSection; ret = func_8000C0BC(posX, posY, posZ, courseSection, pathIndex); @@ -2536,13 +2495,13 @@ s16 func_8000CC88(f32 posX, f32 posY, f32 posZ, Player *player, s32 playerId, s3 s16 func_8000CD24(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, Player *player, s32 playerId, s32 pathIndex) { s16 sp5E; - s16 stackPadding0; - s32 stackPadding1; - s32 stackPadding2; + UNUSED s16 stackPadding0; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; TrackWaypoint *temp_v1; if ((player->type & 0x4000) && !(player->type & 0x1000)) { - sp5E = func_8000C884(posX, posY, posZ, waypointIndex, pathIndex, (u16) get_course_section(player->unk_110.unk3A)); + sp5E = func_8000C884(posX, posY, posZ, waypointIndex, pathIndex, (u16) get_section_id(player->collision.meshIndexZX)); if (sp5E == -1) { sp5E = func_8000CC88(posX, posY, posZ, player, playerId, &pathIndex); } @@ -2557,8 +2516,8 @@ s16 func_8000CD24(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, Player *playe return waypointIndex; } if (playerId == ((s32) D_80163488 % 8)) { - func_802ADDC8(&player->unk_110, 10.0f, posX, posY, posZ); - D_80163318[playerId] = get_course_section(player->unk_110.unk3A); + check_bounding_collision(&player->collision, 10.0f, posX, posY, posZ); + D_80163318[playerId] = get_section_id(player->collision.meshIndexZX); sp5E = func_8000C884(posX, posY, posZ, waypointIndex, pathIndex, D_80163318[playerId]); if (sp5E == -1) { sp5E = func_8000C9DC(posX, posY, posZ, waypointIndex, pathIndex); @@ -2581,8 +2540,8 @@ s16 func_8000CD24(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, Player *playe player->pos[0] = posX; player->pos[1] = posY; player->pos[2] = posZ; - func_802ADDC8(&player->unk_110, 10.0f, posX, posY, posZ); - D_80163318[playerId] = get_course_section(player->unk_110.unk3A); + check_bounding_collision(&player->collision, 10.0f, posX, posY, posZ); + D_80163318[playerId] = get_section_id(player->collision.meshIndexZX); } } } else { @@ -2592,12 +2551,12 @@ s16 func_8000CD24(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, Player *playe } } func_8000CBA4(posX, posY, posZ, &sp5E, pathIndex); - } + } func_8000CBF8(posX, posY, posZ, &sp5E, pathIndex); return sp5E; } -s16 func_8000D100(f32 xPos, f32 yPos, f32 zPos, s16 arg3) { +s16 func_8000D100(f32 xPos, UNUSED f32 yPos, f32 zPos, s16 arg3) { f32 xdiff; f32 zdiff; f32 minimumDistance; @@ -2634,8 +2593,8 @@ s16 func_8000D24C(f32 posX, f32 posY, f32 posZ, s32 *pathIndex) { UNUSED s32 pad; Collision sp24; - func_802ADDC8(&sp24, 10.0f, posX, posY, posZ); - return func_8000C0BC(posX, posY, posZ, get_course_section(sp24.unk3A), pathIndex); + check_bounding_collision(&sp24, 10.0f, posX, posY, posZ); + return func_8000C0BC(posX, posY, posZ, get_section_id(sp24.meshIndexZX), pathIndex); } s16 func_8000D2B4(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, s32 pathIndex) { @@ -2683,12 +2642,12 @@ f32 func_8000D3B8(s32 playerId) { } void func_8000D438(s32 arg0, u16 arg1) { - s32 stackPadding0; + UNUSED s32 stackPadding0; f32 sp48; f32 sp44; - s32 stackPadding1; - s32 stackPadding2; - s32 stackPadding3; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; + UNUSED s32 stackPadding3; f32 stackPadding4; f32 stackPadding5; f32 sp2C; @@ -2751,7 +2710,7 @@ s16 func_8000D6D0(Vec3f arg0, s16 *waypointIndex, f32 arg2, f32 arg3, s16 pathIn f32 temp1; f32 temp2; f32 midX; - s16 stackPadding1; + UNUSED s16 stackPadding1; s16 waypoint1; s16 waypoint2; f32 pad3; @@ -2813,14 +2772,14 @@ s16 func_8000D6D0(Vec3f arg0, s16 *waypointIndex, f32 arg2, f32 arg3, s16 pathIn return func_80005FD0(sp50, arg0); } -s16 func_8000D940(f32 *arg0, s16 *waypointIndex, f32 arg2, f32 arg3, s16 pathIndex) { - f32 pad; +s16 func_8000D940(Vec3f arg0, s16 *waypointIndex, f32 arg2, f32 arg3, s16 pathIndex) { + UNUSED f32 pad; f32 thing1; f32 thing2; - s16 stackPadding1; + UNUSED s16 stackPadding1; s16 waypoint1; s16 waypoint2; - s16 stackPadding2; + UNUSED s16 stackPadding2; f32 pad2; f32 midX; f32 pad3; @@ -2883,15 +2842,15 @@ s16 func_8000DBAC(Vec3f pos, s16 *waypointIndex, f32 speed) { f32 origXPos; f32 origYPos; f32 origZPos; - s32 stackPadding0; - s32 stackPadding1; - s32 stackPadding2; - s32 stackPadding3; - s32 stackPadding4; - s32 stackPadding5; - s32 stackPadding6; - s32 stackPadding7; - s32 stackPadding8; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; + UNUSED s32 stackPadding3; + UNUSED s32 stackPadding4; + UNUSED s32 stackPadding5; + UNUSED s32 stackPadding6; + UNUSED s32 stackPadding7; + UNUSED s32 stackPadding8; f32 midX; f32 midZ; f32 x_dist; @@ -2937,13 +2896,13 @@ s16 func_8000DBAC(Vec3f pos, s16 *waypointIndex, f32 speed) { } void set_bomb_kart_spawn_positions(void) { - Collision *var_s2; + UNUSED Collision *var_s2; f32 startingXPos; f32 startingZPos; f32 startingYPos; s32 var_s3; TrackWaypoint *temp_v0; - BombKart *var_s0; + UNUSED BombKart *var_s0; BombKartSpawn *temp_s1; for (var_s3 = 0; var_s3 < NUM_BOMB_KARTS_VERSUS; var_s3++) { @@ -2952,7 +2911,7 @@ void set_bomb_kart_spawn_positions(void) { case COURSE_YOSHI_VALLEY: startingXPos = temp_s1->startingXPos; startingZPos = temp_s1->startingZPos; - startingYPos = func_802AE1C0(startingXPos, 2000.0f, startingZPos); + startingYPos = spawn_actor_on_surface(startingXPos, 2000.0f, startingZPos); break; case COURSE_AWARD_CEREMONY: temp_v0 = &D_80164550[3][temp_s1->waypointIndex]; @@ -2990,30 +2949,30 @@ void set_bomb_kart_spawn_positions(void) { gBombKarts[var_s3].unk_4A = 0; gBombKarts[var_s3].unk_4C = 1; gBombKarts[var_s3].yPos = startingYPos; - func_802ADDC8(&D_80164038[var_s3], 2.0f, startingXPos, startingYPos, startingZPos); + check_bounding_collision(&D_80164038[var_s3], 2.0f, startingXPos, startingYPos, startingZPos); } } void func_8000DF8C(s32 bombKartId) { - s32 stackPadding0; + UNUSED s32 stackPadding0; f32 sp118; f32 var_f18; TrackWaypoint *temp_v0_2; f32 temp_f0_3; f32 sp108; - s32 stackPadding1; - s32 stackPadding2; - s32 stackPadding3; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; + UNUSED s32 stackPadding3; f32 temp_f14; - s32 stackPadding4; + UNUSED s32 stackPadding4; f32 temp_f16; - s32 stackPadding5; - s32 stackPadding6; - s32 stackPadding7; - s32 stackPadding8; - s32 stackPadding9; - s32 stackPaddingA; - s32 stackPaddingB; + UNUSED s32 stackPadding5; + UNUSED s32 stackPadding6; + UNUSED s32 stackPadding7; + UNUSED s32 stackPadding8; + UNUSED s32 stackPadding9; + UNUSED s32 stackPaddingA; + UNUSED s32 stackPaddingB; f32 temp_f0; f32 temp_f0_4; u16 spCA; @@ -3024,25 +2983,25 @@ void func_8000DF8C(s32 bombKartId) { f32 temp_f12_4; f32 temp_f14_2; f32 spAC; - s32 stackPaddingC; + UNUSED s32 stackPaddingC; f32 temp_f16_2; f32 spA0; f32 temp_f2; f32 temp_f2_4; f32 sp94; - s32 stackPaddingD; + UNUSED s32 stackPaddingD; f32 var_f20; f32 sp88; f32 var_f22; f32 var_f24; u16 sp7E; u16 sp7C; - u16 sp4C; + UNUSED u16 sp4C; u16 temp_t6; u16 temp_t7; u16 var_s1; s32 var_a0; - s32 stackPaddingE; + UNUSED s32 stackPaddingE; TrackWaypoint *temp_v0_4; BombKart *bombKart; BombKart *bombKart2; @@ -3050,13 +3009,13 @@ void func_8000DF8C(s32 bombKartId) { Player *var_v0; bombKart = &gBombKarts[bombKartId]; - + sp7E = bombKart->state; if (sp7E == 0) { return; } - + if (((bombKart->unk_4A != 1) || (gCurrentCourseId == COURSE_AWARD_CEREMONY))) { var_f22 = bombKart->bombPos[0]; var_f20 = bombKart->bombPos[1]; @@ -3189,11 +3148,11 @@ void func_8000DF8C(s32 bombKartId) { var_f24 += temp_f16 / 5.0f; } temp_a0_4 = &D_80164038[bombKartId]; - var_f20 = func_802ABE30(var_f22, 2000.0f, var_f24, temp_a0_4->unk3A) + 3.5f; + var_f20 = calculate_surface_height(var_f22, 2000.0f, var_f24, temp_a0_4->meshIndexZX) + 3.5f; if (var_f20 < (-1000.0)) { var_f20 = bombKart->bombPos[1]; } - func_802ADDC8(temp_a0_4, 10.0f, var_f22, var_f20, var_f24); + check_bounding_collision(temp_a0_4, 10.0f, var_f22, var_f20, var_f24); } break; case 4: @@ -3327,7 +3286,7 @@ void func_8000EEDC(void) { s32 i; for (i = 0; i < NUM_PLAYERS; i++) { - phi = &gUnexpiredActorsList[i]; + phi = &gUnexpiredActorsList[i]; phi->unkC = 0; phi->actorIndex = 1000; // out of bounds } @@ -3392,10 +3351,10 @@ void func_8000F124(void) { for (j = 0; j < 2; j++) { D_80163348[j] = 0; } - + if (gDemoMode == 1) { return; } if (gModeSelection != GRAND_PRIX) { return; } - + for (i = 0; i < 2; i++) { while(1) { @@ -3405,7 +3364,7 @@ void func_8000F124(void) { if (gPlayerCount < 1) { break; } var_a1 = 0; - + for (j = 0; j < gPlayerCount; j++) { if (gCharacterSelections[j] == D_80163348[i]) { var_a1 = 1; @@ -3440,7 +3399,7 @@ void func_8000F2DC(void) { D_80163368[1] = (s32) ptr->unk2; D_80163368[2] = (s32) ptr->unk4; D_80163368[3] = (s32) ptr->unk6; - + temp = ptr->unk8; D_80163598 = get_next_available_memory_addr(temp * 4); @@ -3505,17 +3464,17 @@ void func_8000F2DC(void) { void func_8000F628(void) { - Camera *camera; + UNUSED Camera *camera; s32 temp_v0_3; s32 i; Test *var_s5; - s32 temp_v1; + UNUSED s32 temp_v1; UNUSED s32 pad; for (i = 0; i < NUM_PLAYERS; i++) { Player *player = &gPlayerOne[i]; - + D_80163050[i] = 0; D_80162FF8[i] = 0; D_80163010[i] = 0; @@ -3532,7 +3491,7 @@ void func_8000F628(void) { gCourseCompletionPercentByPlayerId[i] = 0.0f; gTimePlayerLastTouchedFinishLine[i] = 0.0f; if (gModeSelection == GRAND_PRIX) { - if(1); if(1); // Maybe some debug code? + if(1) {}; if(1) {}; // Maybe some debug code? gGPCurrentRaceRankByPlayerId[i] = (s32) D_80165270[i]; D_801643E0[i] = (s32) D_80165270[i]; } else { @@ -3569,7 +3528,7 @@ void func_8000F628(void) { D_80163380[i] = 6; if (gPlayers[i].type & PLAYER_HUMAN) { D_80163330[i] = 3; - + } else { D_80163330[i] = 0; } @@ -3580,12 +3539,19 @@ void func_8000F628(void) { D_80163150[i] = -1; D_80164538[i] = -1; D_801634C0[i] = 0; - D_801634D8[i] = 0; + bStopAICrossing[i] = 0; D_801630B8[i] = 1; } - D_801637BC[0] = 0; - D_801637BC[1] = 0; + +#ifdef AVOID_UB + for (i = 0; i < NUM_CROSSINGS; i++) { + sCrossingActiveTimer[i] = 0; + } +#else + sCrossingActiveTimer[0] = 0; + sCrossingActiveTimer[1] = 0; +#endif if (gDemoMode == DEMO_MODE_INACTIVE) { if (gModeSelection == GRAND_PRIX) { @@ -3593,7 +3559,7 @@ void func_8000F628(void) { D_80163344[i] = D_80164478[D_80163348[i]]; D_80163330[ D_80163344[i] ] = 1; D_8016334C[ D_80163344[i] ] = i; - } + } } } if ((D_8018EE08 == 1) && (gCurrentCourseId != COURSE_AWARD_CEREMONY)) { @@ -3605,18 +3571,18 @@ void func_8000F628(void) { D_80163344[0] = cameras->playerId; D_80163330[D_80163344[0]] = 1; D_8016334C[D_80163344[0]] = 0; - + for (i = 1; i < 2; i++) { D_80163344[i] = cameras[i].playerId; D_80163330[D_80163344[i]] = 1; D_8016334C[D_80163344[i]] = i; - + } } } for (i = 0; i < NUM_PLAYERS; i++) { - if (1); + if (1) {}; gPathIndexByPlayerId[i] = 0; gNearestWaypointByPlayerId[i] = gWaypointCountByPathIndex[gPathIndexByPlayerId[i]] - gGPCurrentRaceRankByPlayerId[i] - 4; } @@ -3890,7 +3856,7 @@ void func_80010DBC(s32 pathIndex) { u16 *angle; if ((s32) gKartAICourseMaximumSeparation[gCurrentCourseId] >= 0) { - for (angle = &D_80164590[pathIndex][0], waypointIndex = 0; waypointIndex < gWaypointCountByPathIndex[pathIndex]; waypointIndex++, angle++) { + for (angle = (u16*) &D_80164590[pathIndex][0], waypointIndex = 0; waypointIndex < gWaypointCountByPathIndex[pathIndex]; waypointIndex++, angle++) { *angle = func_80010CB0(pathIndex, waypointIndex); } } @@ -3927,21 +3893,21 @@ void func_80010E6C(s32 pathIndex) { } f32 func_80010F40(f32 arg0, f32 arg1, f32 arg2, UNUSED s32 arg3, UNUSED s32 arg4) { - arg1 = func_802AE1C0(arg0, 2000.0f, arg2); - func_802ADDC8(&D_80162E70, 1.0f, arg0, arg1, arg2); + arg1 = spawn_actor_on_surface(arg0, 2000.0f, arg2); + check_bounding_collision(&D_80162E70, 1.0f, arg0, arg1, arg2); return arg1; } f32 func_80010FA0(f32 arg0, f32 arg1, f32 arg2, UNUSED s32 arg3, UNUSED s32 arg4) { - arg1 = func_802AE1C0(arg0, (f32) ((f64) arg1 + 30.0), arg2); - func_802ADDC8(&D_80162E70, 10.0f, arg0, arg1, arg2); + arg1 = spawn_actor_on_surface(arg0, (f32) ((f64) arg1 + 30.0), arg2); + check_bounding_collision(&D_80162E70, 10.0f, arg0, arg1, arg2); return arg1; } /** * @return's the number of items processed. */ -s32 func_80011014(TrackWaypoint *pathDest, TrackWaypoint *path, s32 numPathPoints, s32 pathIndex) { +s32 func_80011014(TrackWaypoint *pathDest, TrackWaypoint *path, s32 numPathPoints, UNUSED s32 pathIndex) { f32 temp_f24_2; f32 temp_f2_3; f32 var_f20_2; @@ -3967,7 +3933,7 @@ s32 func_80011014(TrackWaypoint *pathDest, TrackWaypoint *path, s32 numPathPoint TrackWaypoint *point2; TrackWaypoint *point3; f32 temp; - TrackWaypoint *dest; + UNUSED TrackWaypoint *dest; var_f30 = 0.0f; var_s0 = 0; temp_f20 = (f32) path[0].posX; @@ -3986,21 +3952,21 @@ s32 func_80011014(TrackWaypoint *pathDest, TrackWaypoint *path, s32 numPathPoint z3 = (f32) point3->posZ; temp = 0.05 / (sqrtf(((x2 - x1) * (x2 - x1)) + ((z2 - z1) * (z2 - z1))) + (sqrtf(((x3 - x2) * (x3 - x2)) + ((z3 - z2) * (z3 - z2))))); - + for (j = 0.0f; j <= 1.0 ; j += temp) { temp_f2_3 = (f32) ((1.0 - j) * 0.5 * (1.0 - j)); z1_3 = (f32) (((1.0 - j) * j) + 0.5); temp_f16 = (f32) (j * 0.5 * j); - + temp_f24_2 = (temp_f2_3 * x1) + (z1_3 * x2) + (temp_f16 * x3); x1_2 = (temp_f2_3 * z1) + (z1_3 * z2) + (temp_f16 * z3); - + var_f30 += sqrtf(((temp_f24_2 - temp_f20) * (temp_f24_2 - temp_f20)) + ((x1_2 - temp_f22) * (x1_2 - temp_f22))); - + temp_f20 = temp_f24_2; temp_f22 = x1_2; - + if ((var_f30 > 20.0f) || ((i == 0) && (j == 0.0))) { if (gIsMirrorMode) { //temp_f12 = -temp_f24_2; @@ -4013,12 +3979,12 @@ s32 func_80011014(TrackWaypoint *pathDest, TrackWaypoint *path, s32 numPathPoint pathDest->posZ = (s16) temp_f22; - pathDest->courseSection = get_course_section(D_80162E70.unk3A); + pathDest->trackSegment = get_section_id(D_80162E70.meshIndexZX); if (var_f20_2 < -500.0) { var_f20_2 = var_f28; } else { - + switch (gCurrentCourseId) { case 13: if (var_f20_2 < (var_f28 - 15.0)) { @@ -4095,7 +4061,7 @@ s32 process_path_data(TrackWaypoint *dest, TrackWaypoint *src) { s32 func_8001168C(PathNoY *pathDest, TrackWaypoint *pathSrc, s32 numWaypoints) { f32 temp_f14_3; f32 temp_f16_2; - s32 pad; + UNUSED s32 pad; f32 x1; f32 z1; @@ -4105,13 +4071,13 @@ s32 func_8001168C(PathNoY *pathDest, TrackWaypoint *pathSrc, s32 numWaypoints) { f32 z3; - s32 pad2; + UNUSED s32 pad2; f32 temp_f24; - + f32 spA8; f32 temp_f26; f32 spA0; - + f32 temp_f2_3; TrackWaypoint *point1; @@ -4190,7 +4156,7 @@ void kart_ai_behaviour_start(s32 playerId, Player *player) { s16 waypointStart; s16 waypointEnd; s32 behaviourType; - s32 test; + UNUSED s32 test; sCurrentKartAIBehaviour = &gCoursesKartAIBehaviour[gCurrentCourseId][gCurrentKartAIBehaviourId[playerId]]; @@ -4205,7 +4171,7 @@ void kart_ai_behaviour_start(s32 playerId, Player *player) { reset_kart_ai_behaviour_none(playerId); return; } - if ((u32)playerWaypoint == waypointStart) { + if ((u32)playerWaypoint == (u32)waypointStart) { gKartAIBehaviourState[playerId] = KART_AI_BEHAVIOUR_STATE_RUNNING; gPreviousKartAIBehaviourId[playerId] = gCurrentKartAIBehaviourId[playerId]; gCurrentKartAIBehaviourId[playerId]++; @@ -4303,9 +4269,9 @@ void kart_ai_behaviour(s32 playerIndex) { } } -void func_80011EC0(s32 arg0, Player *player, s32 arg2, u16 arg3) { +void func_80011EC0(s32 arg0, Player *player, s32 arg2, UNUSED u16 arg3) { if ((((player->unk_094 / 18.0f) * 216.0f) >= 45.0f) && (D_801630E8[arg0] == 0)) { - switch (D_801631D8[D_80162FCE]) { + switch (D_801631D8[sSomeNearestWaypoint]) { case 0: case 2: if ((arg2 >= -9) && (D_80162FF8[arg0] == 0)) { @@ -4351,7 +4317,7 @@ void func_800120C8(void) { temp = D_80163598; D_8016359C = func_8001168C(temp, waypoint, i - 1); - D_80162EB0 = func_802AE1C0(temp[0].x, 2000.0f, temp[0].z); + D_80162EB0 = spawn_actor_on_surface(temp[0].x, 2000.0f, temp[0].z); } void func_80012190(void) { @@ -4377,12 +4343,12 @@ void func_80012220(VehicleStuff *vehicle) { origXPos = vehicle->position[0]; origZPos = vehicle->position[2]; if (D_8016347A == 0) { - func_8000D6D0(vehicle->position, &vehicle->waypointIndex, vehicle->someMultiplier, vehicle->someMultiplierTheSequel, 0, 3); + func_8000D6D0(vehicle->position, (s16*)&vehicle->waypointIndex, vehicle->someMultiplier, vehicle->someMultiplierTheSequel, 0, 3); vehicle->rotation[0] = 0; vehicle->rotation[1] = -0x8000; vehicle->rotation[2] = 0; } else { - func_8000D940(vehicle->position, &vehicle->waypointIndex, vehicle->someMultiplier, vehicle->someMultiplierTheSequel, 0); + func_8000D940(vehicle->position, (s16*)&vehicle->waypointIndex, vehicle->someMultiplier, vehicle->someMultiplierTheSequel, 0); vehicle->rotation[0] = 0; vehicle->rotation[1] = 0; vehicle->rotation[2] = 0; @@ -4415,7 +4381,7 @@ void init_course_vehicles(void) { tempLocomotive = &gTrainList[loopIndex].locomotive; origXPos = tempLocomotive->position[0]; origZPos = tempLocomotive->position[2]; - trainCarYRot = func_8000DBAC(tempLocomotive->position, &tempLocomotive->waypointIndex, gTrainList[loopIndex].someMultiplier); + trainCarYRot = func_8000DBAC(tempLocomotive->position, (s16*)&tempLocomotive->waypointIndex, gTrainList[loopIndex].someMultiplier); tempLocomotive->velocity[0] = tempLocomotive->position[0] - origXPos; tempLocomotive->velocity[2] = tempLocomotive->position[2] - origZPos; vec3s_set(trainCarRot, 0, trainCarYRot, 0); @@ -4425,7 +4391,7 @@ void init_course_vehicles(void) { if (tempTender->isActive == 1) { origXPos = tempTender->position[0]; origZPos = tempTender->position[2]; - trainCarYRot = func_8000DBAC(tempTender->position, &tempTender->waypointIndex, gTrainList[loopIndex].someMultiplier); + trainCarYRot = func_8000DBAC(tempTender->position, (s16*)&tempTender->waypointIndex, gTrainList[loopIndex].someMultiplier); tempTender->velocity[0] = tempTender->position[0] - origXPos; tempTender->velocity[2] = tempTender->position[2] - origZPos; vec3s_set(trainCarRot, 0, trainCarYRot, 0); @@ -4437,7 +4403,7 @@ void init_course_vehicles(void) { if (tempPassengerCar->isActive == 1) { origXPos = tempPassengerCar->position[0]; origZPos = tempPassengerCar->position[2]; - trainCarYRot = func_8000DBAC(tempPassengerCar->position, &tempPassengerCar->waypointIndex, gTrainList[loopIndex].someMultiplier); + trainCarYRot = func_8000DBAC(tempPassengerCar->position, (s16*)&tempPassengerCar->waypointIndex, gTrainList[loopIndex].someMultiplier); tempPassengerCar->velocity[0] = tempPassengerCar->position[0] - origXPos; tempPassengerCar->velocity[2] = tempPassengerCar->position[2] - origZPos; vec3s_set(trainCarRot, 0, trainCarYRot, 0); @@ -4452,7 +4418,7 @@ void init_course_vehicles(void) { if(tempPaddleWheelBoat->isActive == 1) { origXPos = tempPaddleWheelBoat->position[0]; origZPos = tempPaddleWheelBoat->position[2]; - tempPaddleWheelBoat->rotY = func_8000DBAC(tempPaddleWheelBoat->position, &tempPaddleWheelBoat->waypointIndex, tempPaddleWheelBoat->someMultiplier); + tempPaddleWheelBoat->rotY = func_8000DBAC(tempPaddleWheelBoat->position, (s16*)&tempPaddleWheelBoat->waypointIndex, tempPaddleWheelBoat->someMultiplier); tempPaddleWheelBoat->velocity[0] = tempPaddleWheelBoat->position[0] - origXPos; tempPaddleWheelBoat->velocity[2] = tempPaddleWheelBoat->position[2] - origZPos; vec3s_set(paddleWheelBoatRot, 0, tempPaddleWheelBoat->rotY, 0); @@ -4485,10 +4451,10 @@ void init_course_vehicles(void) { } } -void func_80012780(TrainCarStuff *trainCar, s16 *arg1, u16 arg2) { - trainCar->position[0] = (f32) arg1[0]; +void func_80012780(TrainCarStuff *trainCar, PathNoY *arg1, u16 arg2) { + trainCar->position[0] = (f32) arg1->x; trainCar->position[1] = (f32) D_80162EB0; - trainCar->position[2] = (f32) arg1[1]; + trainCar->position[2] = (f32) arg1->z; trainCar->actorIndex = -1; trainCar->waypointIndex = arg2; trainCar->isActive = 0; @@ -4526,29 +4492,29 @@ void func_800127E0(void) { ptr1 = &gTrainList[i].tender; ptr2 = &D_80163598[waypointOffset]; func_80012780(ptr1, ptr2, waypointOffset); - + waypointOffset += 4; ptr1 = &gTrainList[i].locomotive; ptr2 = &D_80163598[waypointOffset]; func_80012780(ptr1, ptr2, waypointOffset); - + // Only use locomotive unless overwritten below. gTrainList[i].numCars = LOCOMOTIVE_ONLY; } - + // Spawn all rolling stock in single player mode. switch (gScreenModeSelection) { case SCREEN_MODE_1P: // single player for (i = 0; i < NUM_TRAINS; i++) { gTrainList[i].tender.isActive = 1; - + // Same line required for matching... for (j = 0; j < NUM_PASSENGER_CAR_ENTRIES; j++) { gTrainList[i].passengerCars[j].isActive = 1; } - + gTrainList[i].numCars = NUM_TENDERS + NUM_PASSENGER_CAR_ENTRIES; } break; - + // Spawn locomotive, tender, and one passenger car in versus 2/3 player mode. case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: // multiplayer fall-through case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: @@ -4560,9 +4526,9 @@ void func_800127E0(void) { } } break; - + } - + D_80162FCC = 0; } @@ -4601,7 +4567,7 @@ void update_vehicle_trains(void) { temp_f20 = gTrainList[i].locomotive.position[0]; temp_f22 = gTrainList[i].locomotive.position[2]; - temp_v0 = func_8000DBAC(gTrainList[i].locomotive.position, &gTrainList[i].locomotive.waypointIndex, gTrainList[i].someMultiplier); + temp_v0 = func_8000DBAC(gTrainList[i].locomotive.position, (s16*)&gTrainList[i].locomotive.waypointIndex, gTrainList[i].someMultiplier); gTrainList[i].locomotive.velocity[0] = gTrainList[i].locomotive.position[0] - temp_f20; gTrainList[i].locomotive.velocity[2] = gTrainList[i].locomotive.position[2] - temp_f22; @@ -4616,7 +4582,8 @@ void update_vehicle_trains(void) { func_800C98B8(gTrainList[i].locomotive.position, gTrainList[i].locomotive.velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x0D)); } - gTrainList[i].someFlags = func_800061DC(gTrainList[i].locomotive.position, 2000.0f, gTrainList[i].someFlags); + gTrainList[i].someFlags = set_vehicle_render_distance_flags(gTrainList[i].locomotive.position, TRAIN_SMOKE_RENDER_DISTANCE, gTrainList[i].someFlags); + // Renders locomotive smoke on all screens if any player is within range. if ((((s16) D_80162FCC % 5) == 0) && (gTrainList[i].someFlags != 0)) { sp90[0] = gTrainList[i].locomotive.position[0]; sp90[1] = (f32) ((f64) gTrainList[i].locomotive.position[1] + 65.0); @@ -4630,7 +4597,7 @@ void update_vehicle_trains(void) { if (car->isActive == 1) { temp_f20 = car->position[0]; temp_f22 = car->position[2]; - temp_v0 = func_8000DBAC(car->position, &car->waypointIndex, gTrainList[i].someMultiplier); + temp_v0 = func_8000DBAC(car->position, (s16*)&car->waypointIndex, gTrainList[i].someMultiplier); car->velocity[0] = car->position[0] - temp_f20; car->velocity[2] = car->position[2] - temp_f22; func_80012A48(car, temp_v0); @@ -4642,7 +4609,7 @@ void update_vehicle_trains(void) { temp_f20 = car->position[0]; temp_f22 = car->position[2]; - temp_v0 = func_8000DBAC(car->position, &car->waypointIndex, gTrainList[i].someMultiplier); + temp_v0 = func_8000DBAC(car->position, (s16*)&car->waypointIndex, gTrainList[i].someMultiplier); car->velocity[0] = car->position[0] - temp_f20; car->velocity[2] = car->position[2] - temp_f22; func_80012A48(car, temp_v0); @@ -4703,7 +4670,7 @@ void func_80012DC0(s32 playerId, Player *player) { /** * Appears to check if the train is close to the crossing. - * Implements D_801637BC as a counter + * Implements sCrossingActiveTimer as a counter */ void func_80013054(void) { f32 temp_f16; @@ -4718,43 +4685,43 @@ void func_80013054(void) { temp_f18 = 0.72017354f; temp_f12 = 0.42299348f; - if (((temp_f12 - 0.1) < temp_f16) + if (((temp_f12 - 0.1) < temp_f16) && (temp_f16 < ((((f64) gTrainList[i].numCars) * 0.01) + (temp_f12 + 0.01)))) { isCrossingTriggeredByIndex[0] = 1; } - if (((temp_f18 - 0.1) < temp_f16) + if (((temp_f18 - 0.1) < temp_f16) && (temp_f16 < ((((f64) gTrainList[i].numCars) * 0.01) + (temp_f18 + 0.01)))) { isCrossingTriggeredByIndex[1] = 1; } } - for (i = 0; i < NUM_TRAINS; i++) { + for (i = 0; i < NUM_CROSSINGS; i++) { if (isCrossingTriggeredByIndex[i] == 1) { - D_801637BC[i] += 1; + sCrossingActiveTimer[i] += 1; } else { - D_801637BC[i] = 0; + sCrossingActiveTimer[i] = 0; } } } -void func_800131DC(s32 playerId) { - D_801634D8[playerId] = 0; +void check_ai_crossing_distance(s32 playerId) { + bStopAICrossing[playerId] = 0; if (gCurrentCourseId == COURSE_KALAMARI_DESERT) { if ((!(D_801631E0[playerId] != 0)) - || (func_800061DC(gPlayers[playerId].pos, 1000.0f, 0))) { + || (set_vehicle_render_distance_flags(gPlayers[playerId].pos, TRAIN_CROSSING_AI_DISTANCE, 0))) { - if ((isCrossingTriggeredByIndex[1] == 1) - && ((D_801637BC[1]) > 240)) { + if ((isCrossingTriggeredByIndex[1] == 1) + && ((sCrossingActiveTimer[1]) > FRAMES_SINCE_CROSSING_ACTIVATED)) { - if ((D_80162FCE > 176) && (D_80162FCE < 182)) { - D_801634D8[playerId] = 1; + if ((sSomeNearestWaypoint > 176) && (sSomeNearestWaypoint < 182)) { + bStopAICrossing[playerId] = 1; } } - if ((isCrossingTriggeredByIndex[0] == 1) && (( D_801637BC[0]) > 240)) { - if ((D_80162FCE >= 306) && (D_80162FCE < 0x136)) { - D_801634D8[playerId] = 1; + if ((isCrossingTriggeredByIndex[0] == 1) && (( sCrossingActiveTimer[0]) > FRAMES_SINCE_CROSSING_ACTIVATED)) { + if ((sSomeNearestWaypoint >= 306) && (sSomeNearestWaypoint < 310)) { + bStopAICrossing[playerId] = 1; } } } @@ -4775,7 +4742,7 @@ void func_800132F4(void) { var_a1->position[2] = temp_a2->z; var_a1->waypointIndex = i * 0xB4; var_a1->actorIndex = -1; - + if (gPlayerCount >= 3) { var_a1->isActive = 0; } else { @@ -4805,7 +4772,7 @@ void update_vehicle_paddle_boats(void) { Vec3f sp88; UNUSED s32 pad; Vec3f sp78; - s32 pad2; + UNUSED s32 pad2; D_801630FC += 1; for (i = 0; i < NUM_ACTIVE_PADDLE_BOATS; i++) { paddleBoat = &gPaddleBoats[i]; @@ -4813,8 +4780,8 @@ void update_vehicle_paddle_boats(void) { temp_f26 = paddleBoat->position[0]; temp_f28 = paddleBoat->position[1]; temp_f30 = paddleBoat->position[2]; - func_8000DBAC(paddleBoat->position, &paddleBoat->waypointIndex, paddleBoat->someMultiplier); - paddleBoat->someFlags = func_800061DC(paddleBoat->position, 2000.0f, paddleBoat->someFlags); + func_8000DBAC(paddleBoat->position, (s16*)&paddleBoat->waypointIndex, paddleBoat->someMultiplier); + paddleBoat->someFlags = set_vehicle_render_distance_flags(paddleBoat->position, BOAT_SMOKE_RENDER_DISTANCE, paddleBoat->someFlags); if ((((s16) D_801630FC % 10) == 0) && (paddleBoat->someFlags != 0)) { sp78[0] = (f32) ((f64) paddleBoat->position[0] - 30.0); sp78[1] = (f32) ((f64) paddleBoat->position[1] + 180.0); @@ -4929,39 +4896,39 @@ void func_800139E4(f32 arg0, f32 arg1, s32 arg2, s32 arg3, VehicleStuff *vehicle u16 waypointOffset; s32 numWaypoints = gWaypointCountByPathIndex[0]; for (i = 0; i < arg2; i++) { - waypointOffset = (((i * numWaypoints) / arg2) + arg3) % numWaypoints; - veh = &vehicle[i]; - temp_v0 = &waypointList[waypointOffset]; - veh->position[0] = (f32) temp_v0->posX; - veh->position[1] = (f32) temp_v0->posY; - veh->position[2] = (f32) temp_v0->posZ; - veh->actorIndex = -1; - veh->waypointIndex = waypointOffset; - veh->unused = 0; - veh->velocity[0] = 0.0f; - veh->velocity[1] = 0.0f; - veh->velocity[2] = 0.0f; - veh->someFlags = 0; - veh->someFlagsTheSequel = 0; - if (gModeSelection == TIME_TRIALS) { - veh->someType = (i % 3); - } else { - veh->someType = random_int(3); - } - veh->someMultiplierTheSequel = (f32) ((f64) (f32) (veh->someType - 1) * 0.6); - if (((gCCSelection > CC_50) || (gModeSelection == TIME_TRIALS)) && (veh->someType == 2)) { - veh->someMultiplier = arg0; - } else { - veh->someMultiplier = arg1; - } - veh->rotation[0] = 0; - veh->rotation[2] = 0; - if (D_8016347A == 0) { - veh->rotation[1] = func_8000D6D0(veh->position, &veh->waypointIndex, veh->someMultiplier, veh->someMultiplierTheSequel, 0, 3); - } else { - veh->rotation[1] = func_8000D940(veh->position, &veh->waypointIndex, veh->someMultiplier, veh->someMultiplierTheSequel, 0); - } + waypointOffset = (((i * numWaypoints) / arg2) + arg3) % numWaypoints; + veh = &vehicle[i]; + temp_v0 = &waypointList[waypointOffset]; + veh->position[0] = (f32) temp_v0->posX; + veh->position[1] = (f32) temp_v0->posY; + veh->position[2] = (f32) temp_v0->posZ; + veh->actorIndex = -1; + veh->waypointIndex = waypointOffset; + veh->unused = 0; + veh->velocity[0] = 0.0f; + veh->velocity[1] = 0.0f; + veh->velocity[2] = 0.0f; + veh->someFlags = 0; + veh->someFlagsTheSequel = 0; + if (gModeSelection == TIME_TRIALS) { + veh->someType = (i % 3); + } else { + veh->someType = random_int(3); } + veh->someMultiplierTheSequel = (f32) ((f64) (f32) (veh->someType - 1) * 0.6); + if (((gCCSelection > CC_50) || (gModeSelection == TIME_TRIALS)) && (veh->someType == 2)) { + veh->someMultiplier = arg0; + } else { + veh->someMultiplier = arg1; + } + veh->rotation[0] = 0; + veh->rotation[2] = 0; + if (D_8016347A == 0) { + veh->rotation[1] = func_8000D6D0(veh->position, (s16*)&veh->waypointIndex, veh->someMultiplier, veh->someMultiplierTheSequel, 0, 3); + } else { + veh->rotation[1] = func_8000D940(veh->position, (s16*)&veh->waypointIndex, veh->someMultiplier, veh->someMultiplierTheSequel, 0); + } + } D_801631C8 = 10; } @@ -5031,9 +4998,9 @@ void func_80013D20(VehicleStuff *vehicle) { } } if (D_8016347A == 0) { - var_a1 = func_8000D6D0(vehicle->position, &vehicle->waypointIndex, vehicle->someMultiplier, vehicle->someMultiplierTheSequel, 0, 3); + var_a1 = func_8000D6D0(vehicle->position, (s16*)&vehicle->waypointIndex, vehicle->someMultiplier, vehicle->someMultiplierTheSequel, 0, 3); } else { - var_a1 = func_8000D940(vehicle->position, &vehicle->waypointIndex, vehicle->someMultiplier, vehicle->someMultiplierTheSequel, 0); + var_a1 = func_8000D940(vehicle->position, (s16*)&vehicle->waypointIndex, vehicle->someMultiplier, vehicle->someMultiplierTheSequel, 0); } adjust_angle(&vehicle->rotation[1], var_a1, 100); temp_f0_3 = vehicle->position[0] - sp5C; @@ -5066,7 +5033,7 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 f32 temp_f12; f32 temp_f14; f32 temp_f22; - + s32 i; f32 spC4; @@ -5075,7 +5042,7 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 if (((D_801631E0[playerId] != 1) || (( ((player->type & PLAYER_HUMAN) != 0)) && !(player->type & PLAYER_KART_AI))) && !(player->effects & 0x01000000)) { - + spC4 = player->pos[0]; spC0 = player->pos[1]; spBC = player->pos[2]; @@ -5087,7 +5054,7 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 if (((temp_f12) > -100.0) && ((temp_f12) < 100.0)) { if ((temp_f22 > -20.0) && (temp_f22 < 20.0)) { - + if (((temp_f14) > -100.0) && ((temp_f14) < 100.0)) { if (func_80006018(vehicle->position[0], vehicle->position[2], vehicle->velocity[0], vehicle->velocity[2], arg3, arg4, spC4, spBC) == (s32) 1) { player->soundEffects |= REVERSE_SOUND_EFFECT; @@ -5100,12 +5067,12 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 (temp_f22 > -20.0)) && (temp_f22 < 20.0) && (((temp_f14) > -300.0)) && ((temp_f14) < 300.0)) { if ((D_801631C8 > 0) && (vehicle->someFlags == 0)) { D_801631C8 -= 1; - vehicle->someFlags |= (1 << playerId); + vehicle->someFlags |= (RENDER_VEHICLE << playerId); func_800C9D80(vehicle->position, vehicle->velocity, soundBits); } } else { if (vehicle->someFlags != 0) { - vehicle->someFlags &= ~(1 << playerId); + vehicle->someFlags &= ~(RENDER_VEHICLE << playerId); if (vehicle->someFlags == 0) { D_801631C8 += 1; func_800C9EF4(vehicle->position, soundBits); @@ -5116,12 +5083,12 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 if (((temp_f12) > -200.0) && ((temp_f12) < 200.0) && ((temp_f22 > -20.0)) && (temp_f22 < 20.0) && ( ((temp_f14) > -200.0)) && ((temp_f14) < 200.0)) { if (!(vehicle->someFlagsTheSequel & ((1 << playerId)))) { - + s32 var_s1 = 0; - u16 path = gWaypointCountByPathIndex[0]; + u16 path = gWaypointCountByPathIndex[0]; s32 t1; s32 t2; - + switch (D_8016347A) { case 0: t1 = func_80007BF8(vehicle->waypointIndex, gNearestWaypointByPlayerId[playerId], 10, 0, path); @@ -5150,9 +5117,9 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 break; } if (var_s1 == 1) { - + u32 soundBits2 = SOUND_ARG_LOAD(0x19, 0x01, 0x70, 0x3B); - + switch (soundBits) { case SOUND_ARG_LOAD(0x51, 0x01, 0x80, 0x05): soundBits2 = SOUND_ARG_LOAD(0x19, 0x01, 0x70, 0x3B); @@ -5237,19 +5204,19 @@ f32 func_800145A8(s16 arg0, f32 arg1, s16 arg2) { } void func_800146B8(s32 playerId, s32 arg1, VehicleStuff *vehicle) { - s32 var_v1; + UNUSED s32 var_v1; s32 var_v0; s32 var_s2; s32 waypointCount; u16 temp_a1; - VehicleStuff *tempVehicle; + UNUSED VehicleStuff *tempVehicle; waypointCount = gWaypointCountByPathIndex[0]; if (!(gPlayers[playerId].unk_094 < 1.6666666666666667)) { for (var_s2 = 0; var_s2 < arg1; var_s2++, vehicle++) { temp_a1 = vehicle->waypointIndex; for (var_v0 = 0; var_v0 < 0x18; var_v0 += 3) { - if (((D_80162FCE + var_v0) % waypointCount) == temp_a1) { + if (((sSomeNearestWaypoint + var_v0) % waypointCount) == temp_a1) { D_801634F8[playerId].unk4 = func_800145A8(vehicle->someType, D_80163068[playerId], temp_a1); return; } @@ -5265,7 +5232,7 @@ void func_800147E0(void) { if (gModeSelection == TIME_TRIALS) { numTrucks = NUM_TIME_TRIAL_BOX_TRUCKS; } - func_800139E4(a, b, numTrucks, 0, &gBoxTruckList, &D_80164550[0][0]); + func_800139E4(a, b, numTrucks, 0, gBoxTruckList, &D_80164550[0][0]); } void func_8001487C(void) { @@ -5292,7 +5259,7 @@ void func_80014934(void) { if (gModeSelection == TIME_TRIALS) { numBusses = NUM_TIME_TRIAL_SCHOOL_BUSES; } - func_800139E4(a, b, numBusses, 0x4B, &gSchoolBusList, &D_80164550[0][0]); + func_800139E4(a, b, numBusses, 0x4B, gSchoolBusList, &D_80164550[0][0]); } void func_800149D0(void) { @@ -5319,7 +5286,7 @@ void func_80014A88(void) { if (gModeSelection == TIME_TRIALS) { numTrucks = NUM_TIME_TRIAL_TANKER_TRUCKS; } - func_800139E4(a, b, numTrucks, 50, &gTankerTruckList, &D_80164550[0][0]); + func_800139E4(a, b, numTrucks, 50, gTankerTruckList, &D_80164550[0][0]); } void func_80014B24(void) { @@ -5346,7 +5313,7 @@ void func_80014BDC(void) { if (gModeSelection == TIME_TRIALS) { numCars = NUM_TIME_TRIAL_CARS; } - func_800139E4(a, b, numCars, 25, &gCarList, &D_80164550[0][0]); + func_800139E4(a, b, numCars, 25, gCarList, &D_80164550[0][0]); } void func_80014C78(void) { @@ -5370,7 +5337,7 @@ void func_80014D30(s32 cameraId, s32 pathIndex) { cameraWaypoint = gNearestWaypointByCameraId[cameraId]; temp_v0 = &D_80164550[pathIndex][cameraWaypoint]; - func_802ADDC8(&cameras[cameraId].unk_54, 10.0f, (f32) temp_v0->posX, (f32) temp_v0->posY + 30.0f, (f32) temp_v0->posZ); + check_bounding_collision(&cameras[cameraId].collision, 10.0f, (f32) temp_v0->posX, (f32) temp_v0->posY + 30.0f, (f32) temp_v0->posZ); } void func_80014DE4(s32 arg0) { @@ -5557,7 +5524,7 @@ void func_80015390(Camera *camera, UNUSED Player *player, UNUSED s32 arg2) { adjust_angle(&camera->unk_2C, temp_s1->rotation[1], var_a2); } func_8001D794(temp_s1, camera, sp64, &sp84, &sp80, &sp7C, camera->unk_2C); - func_802ADDC8(&camera->unk_54, 10.0f, sp84, sp80, sp7C); + check_bounding_collision(&camera->collision, 10.0f, sp84, sp80, sp7C); camera->lookAt[0] = sp64[0]; camera->lookAt[1] = sp64[1]; camera->lookAt[2] = sp64[2]; @@ -5591,7 +5558,7 @@ void func_80015544(s32 playerId, f32 arg1, s32 cameraId, s32 pathIndex) { temp_f2 = (f32) D_80164550[pathIndex][gNearestWaypointByCameraId[cameraId]].posY; - temp_f12 = func_802AE1C0(D_80162FA0[0], (f32) (temp_f2 + 30.0), D_80162FA0[2]); + temp_f12 = spawn_actor_on_surface(D_80162FA0[0], (f32) (temp_f2 + 30.0), D_80162FA0[2]); if ((temp_f12 < (temp_f2 - 20.0)) || (temp_f12 >= 3000.0)) { D_80164618[cameraId] = (f32) (temp_f2 + 10.0); } else { @@ -5603,7 +5570,7 @@ void func_80015544(s32 playerId, f32 arg1, s32 cameraId, s32 pathIndex) { camera->pos[2] = D_80164638[cameraId]; } -void func_8001577C(Camera *camera, UNUSED Player *playerArg, s32 arg2, s32 cameraId) { +void func_8001577C(Camera *camera, UNUSED Player *playerArg, UNUSED s32 arg2, s32 cameraId) { s16 cameraWaypoint; s16 playerWaypoint; UNUSED s32 pad; @@ -5612,7 +5579,7 @@ void func_8001577C(Camera *camera, UNUSED Player *playerArg, s32 arg2, s32 camer f32 zdiff; UNUSED s32 pad2; s32 playerId; - s32 pad3[9]; + UNUSED s32 pad3[9]; Player *player; s32 waypointDiff; s32 pathIndex; @@ -5679,10 +5646,10 @@ void func_80015A9C(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { camera->pos[2] = D_80164638[cameraId]; } -void func_80015C94(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { +void func_80015C94(Camera *camera, UNUSED Player *unusedPlayer, UNUSED s32 arg2, s32 cameraId) { s16 playerWaypoint; s16 cameraWaypoint; - s32 stackPadding0; + UNUSED s32 stackPadding0; f32 xdiff2; f32 ydiff2; f32 zdiff2; @@ -5695,11 +5662,11 @@ void func_80015C94(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { f32 ydiff; f32 zdiff; f32 distance; - s32 stackPadding1; + UNUSED s32 stackPadding1; s16 waypoint1; s16 waypoint2; - f32 var_f18; - f32 var_f20; + UNUSED f32 var_f18; + UNUSED f32 var_f20; f32 temp_f2_2; s32 pathIndex; @@ -5742,7 +5709,7 @@ void func_80015C94(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { } camera->pos[0] = midX; camera->pos[2] = midZ; - temp_f2_2 = func_802AE1C0(midX, (midY + 30.0), midZ); + temp_f2_2 = spawn_actor_on_surface(midX, (midY + 30.0), midZ); if ((temp_f2_2 < (midY - 20.0)) || (temp_f2_2 >= 3000.0)) { camera->pos[1] = midY + 10.0; } else { @@ -5784,10 +5751,10 @@ void func_800162CC(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { camera->pos[2] = D_80164638[cameraId]; } -void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { +void func_80016494(Camera *camera, UNUSED Player *unusedPlayer, UNUSED s32 arg2, s32 cameraId) { s16 cameraWaypoint; s16 playerWaypoint; - s32 stackPadding0; + UNUSED s32 stackPadding0; f32 xdiff2; f32 ydiff2; f32 zdiff2; @@ -5800,12 +5767,12 @@ void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { f32 ydiff; f32 zdiff; f32 distance; - f32 sp98; + UNUSED f32 sp98; s16 waypoint1; s16 waypoint2; - f32 sp94; - f32 sp90; - s32 stackPadding1; + UNUSED f32 sp94; + UNUSED f32 sp90; + UNUSED s32 stackPadding1; s32 pathIndex; f32 temp_f2_5; @@ -5868,7 +5835,7 @@ void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { } camera->pos[0] = midX; camera->pos[2] = midZ; - temp_f2_5 = func_802AE1C0(midX, midY + 30.0, midZ); + temp_f2_5 = spawn_actor_on_surface(midX, midY + 30.0, midZ); if ((temp_f2_5 < (midY - 20.0)) || (temp_f2_5 >= 3000.0)) { camera->pos[1] = midY + 10.0; } else { @@ -5889,11 +5856,11 @@ void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { camera->rot[2] = 0; } -void func_80016C3C(s32 playerId, f32 arg1, s32 cameraId) { - s32 stackPadding0; - s32 stackPadding1; +void func_80016C3C(UNUSED s32 playerId, UNUSED f32 arg1, s32 cameraId) { + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; f32 temp_f2; - s32 stackPadding2; + UNUSED s32 stackPadding2; f32 temp_f12; TrackWaypoint **path; f32 sp54; @@ -5942,40 +5909,40 @@ void func_80016C3C(s32 playerId, f32 arg1, s32 cameraId) { camera->pos[2] = D_80164638[cameraId]; } +void func_80017054(Camera *camera, UNUSED Player *player, UNUSED s32 index, s32 cameraId); #ifdef NON_MATCHING // https://decomp.me/scratch/Ck7hV // Really crazy diff, permuter only able to find fakematches for improvements (and they're big improvements) // There's something really, really wrong with the empty `if` statement -void func_80017054(Camera *camera, Player *player, s32 index, s32 cameraId) { - s32 stackPadding0; - s32 stackPadding1; +void func_80017054(Camera *camera, UNUSED Player *player, UNUSED s32 index, s32 cameraId) { + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; f32 spAC; f32 spA8; f32 spA4; - s32 stackPadding2; - s32 stackPadding3; + UNUSED s32 stackPadding2; + UNUSED s32 stackPadding3; f32 sp98; f32 sp94; f32 sp90; f32 sp8C; f32 sp88; f32 sp84; - f32 stackPadding4; - f32 stackPadding5; - f32 stackPadding6; - s32 stackPadding7; - s32 stackPadding8; + UNUSED f32 stackPadding4; + UNUSED f32 stackPadding5; + UNUSED f32 stackPadding6; + UNUSED s32 stackPadding7; + UNUSED s32 stackPadding8; s16 sp6E; s16 sp6C; - s32 stackPadding9; - s32 stackPaddingA; - s32 stackPaddingB; + UNUSED s32 stackPadding9; + UNUSED s32 stackPaddingA; + UNUSED s32 stackPaddingB; s32 pathIndex; - s32 stackPaddingC; + UNUSED s32 stackPaddingC; s32 sp58; s16 sp56; s32 playerId; - f32 temp_f0; playerId = camera->playerId; pathIndex = D_80163DD8[cameraId]; @@ -6013,24 +5980,23 @@ void func_80017054(Camera *camera, Player *player, s32 index, s32 cameraId) { stackPadding4 = sp98 - D_801645F8[cameraId]; stackPadding5 = sp90 - D_80164618[cameraId]; stackPadding6 = sp94 - D_80164638[cameraId]; - temp_f0 = sqrtf(((sp98 * sp98) + (sp94 * sp94)) + (sp90 * sp90)); - if (temp_f0 != 0.0) { - sp98 = D_801645F8[cameraId] + ((D_80164648[cameraId] * stackPadding4) / temp_f0); - sp94 = D_80164618[cameraId] + ((D_80164648[cameraId] * stackPadding5) / temp_f0); - sp90 = D_80164638[cameraId] + ((D_80164648[cameraId] * stackPadding6) / temp_f0); + spAC = sqrtf(((sp98 * sp98) + (sp94 * sp94)) + (sp90 * sp90)); + if (spAC != 0.0) { + sp98 = D_801645F8[cameraId] + ((D_80164648[cameraId] * stackPadding4) / spAC); + sp94 = D_80164618[cameraId] + ((D_80164648[cameraId] * stackPadding5) / spAC); + sp90 = D_80164638[cameraId] + ((D_80164648[cameraId] * stackPadding6) / spAC); } else { sp98 = D_801645F8[cameraId]; sp94 = D_80164618[cameraId]; sp90 = D_80164638[cameraId]; } - // This empty if statement is a huge source of problems. I have no idea what's going on if ((!(sp98 < (-10000.0))) && (sp98 > 10000.0)) { if (sp98 && sp98) {} } camera->pos[0] = sp98; - if (1) {} if (1) {} if (1) {} if (1) {} camera->pos[1] = sp94 + 10.0; camera->pos[2] = sp90; + if (1) { } if (1) { } if (1) { } if (1) { } if (1) { } D_801645F8[cameraId] = sp98; D_80164638[cameraId] = sp90; D_80164618[cameraId] = sp94; @@ -6049,7 +6015,7 @@ void func_80017054(Camera *camera, Player *player, s32 index, s32 cameraId) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80017054.s") #endif -void func_80017720(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { +void func_80017720(s32 playerId, UNUSED f32 arg1, s32 cameraId, s16 pathIndex) { Camera* camera = cameras + cameraId; UNUSED s32 pad; @@ -6071,10 +6037,10 @@ void func_80017720(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { camera->pos[2] = D_80164638[cameraId]; } -void func_800178F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { +void func_800178F4(Camera *camera, UNUSED Player *unusedPlayer, UNUSED s32 arg2, s32 cameraId) { s16 cameraWaypoint; s16 playerWaypoint; - f32 stackPadding0; + UNUSED f32 stackPadding0; f32 xdiff2; f32 ydiff2; f32 zdiff2; @@ -6086,12 +6052,12 @@ void func_800178F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { f32 xdiff; f32 ydiff; f32 zdiff; - f32 var_f2; - f32 var_f18; + UNUSED f32 var_f2; + UNUSED f32 var_f18; s16 waypoint1; s16 waypoint2; - f32 stackPadding1; - f32 var_f14; + UNUSED f32 stackPadding1; + UNUSED f32 var_f14; s32 playerId; s32 pathIndex; s32 waypointCount; @@ -6163,7 +6129,7 @@ void func_800178F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { camera->rot[2] = 0; } -void func_80017F10(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { +void func_80017F10(s32 playerId, UNUSED f32 arg1, s32 cameraId, s16 pathIndex) { Camera* camera = cameras + cameraId; s32 test = gWaypointCountByPathIndex[pathIndex]; @@ -6185,14 +6151,14 @@ void func_80017F10(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { camera->pos[2] = D_80164638[cameraId]; } -void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { +void func_800180F0(Camera *camera, UNUSED Player *unusedPlayer, UNUSED s32 arg2, s32 cameraId) { s16 cameraWaypoint; s16 playerWaypoint; - s32 stackPadding3; + UNUSED s32 stackPadding3; f32 sp94; f32 sp90; f32 sp8C; - s32 stackPadding4; + UNUSED s32 stackPadding4; f32 distance; f32 midX; f32 midY; @@ -6204,9 +6170,9 @@ void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s32 playerId; s16 waypoint1; s16 waypoint2; - f32 var_f2; - f32 var_f18; - f32 var_f14; + UNUSED f32 var_f2; + UNUSED f32 var_f18; + UNUSED f32 var_f14; s32 pathIndex; s32 waypointCount; @@ -6277,7 +6243,7 @@ void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { camera->rot[2] = 0; } -void func_80018718(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { +void func_80018718(s32 playerId, UNUSED f32 arg1, s32 cameraId, s16 pathIndex) { Camera* camera = cameras + cameraId; s32 test = gWaypointCountByPathIndex[pathIndex]; @@ -6298,10 +6264,10 @@ void func_80018718(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { camera->pos[2] = D_80164638[cameraId]; } -void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { +void func_800188F4(Camera *camera, UNUSED Player *unusePlayer, UNUSED s32 arg2, s32 cameraId) { s16 cameraWaypoint; s16 playerWaypoint; - s32 stackPadding0; + UNUSED s32 stackPadding0; f32 spAC; f32 spA8; f32 spA4; @@ -6313,11 +6279,11 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { f32 xdiff; f32 ydiff; f32 zdiff; - f32 sp64; - f32 sp60; + UNUSED f32 sp64; + UNUSED f32 sp60; s16 waypoint1; s16 waypoint2; - f32 sp5C; + UNUSED f32 sp5C; f32 temp_f2_4; s32 playerId; s32 pathIndex; @@ -6389,7 +6355,7 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { } camera->pos[0] = midX; camera->pos[2] = midZ; - temp_f2_4 = func_802AE1C0(midX, midY + 30.0, midZ); + temp_f2_4 = spawn_actor_on_surface(midX, midY + 30.0, midZ); if ((temp_f2_4 < (midY - 20.0)) || (temp_f2_4 >= 3000.0)) { camera->pos[1] = midY + 10.0; } else { @@ -6410,7 +6376,7 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { camera->rot[2] = 0; } -void func_80019118(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { +void func_80019118(s32 playerId, f32 arg1, s32 cameraId, UNUSED s16 pathIndex) { Camera* camera = cameras + cameraId; s32 test = gWaypointCountByPathIndex[0]; f32 temp_f12; @@ -6426,7 +6392,7 @@ void func_80019118(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { D_80164638[cameraId] = D_80162FA0[2]; temp_f2 = (f32) D_80164550[0][gNearestWaypointByCameraId[cameraId]].posY; - temp_f12 = func_802AE1C0(D_80162FA0[0], (f32) (temp_f2 + 30.0), D_80162FA0[2]); + temp_f12 = spawn_actor_on_surface(D_80162FA0[0], (f32) (temp_f2 + 30.0), D_80162FA0[2]); if ((temp_f12 < (temp_f2 - 20.0)) || (temp_f12 >= 3000.0)) { D_80164618[cameraId] = (f32) (temp_f2 + 10.0); @@ -6439,7 +6405,7 @@ void func_80019118(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { camera->pos[2] = D_80164638[cameraId]; } -void func_8001933C(Camera *camera, UNUSED Player *playerArg, s32 arg2, s32 cameraId) { +void func_8001933C(Camera *camera, UNUSED Player *playerArg, UNUSED s32 arg2, s32 cameraId) { s16 cameraWaypoint; s16 playerWaypoint; UNUSED s32 pad; @@ -6491,7 +6457,7 @@ void func_8001968C(void) { D_80164678[0] = 3; } -void func_8001969C(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { +void func_8001969C(UNUSED s32 playerId, UNUSED f32 arg1, s32 cameraId, UNUSED s16 pathIndex) { TrackWaypoint *waypoint; gNearestWaypointByCameraId[cameraId] = gWaypointCountByPathIndex[0] - 18; @@ -6506,7 +6472,7 @@ void func_8001969C(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { D_80164678[cameraId] = 0; } -void func_80019760(Camera *camera, UNUSED Player *player, s32 arg2, s32 cameraId) { +void func_80019760(Camera *camera, UNUSED Player *player, UNUSED s32 arg2, s32 cameraId) { UNUSED s32 pad[2]; f32 xdiff; f32 ydiff; @@ -6534,7 +6500,7 @@ void func_80019890(s32 playerId, s32 cameraId) { Camera *camera = camera1; camera += cameraId; camera->playerId = playerId; - + D_801646C0[cameraId] = 0; pathIndex = gPathIndexByPlayerId[playerId]; @@ -6767,7 +6733,7 @@ void func_8001A124(s32 arg0, s32 arg1) { } } -void func_8001A220(s32 arg0, s32 cameraId) { +void func_8001A220(UNUSED s32 arg0, s32 cameraId) { switch (random_int(6)) { case 0: D_80164680[cameraId] = 4; @@ -6853,7 +6819,7 @@ void func_8001A518(s32 arg0, s32 arg1, s32 arg2) { } } -void func_8001A588(u16 *localD_80152300, Camera *camera, Player *player, s8 index, s32 cameraIndex) { +void func_8001A588(UNUSED u16 *localD_80152300, Camera *camera, Player *player, s8 index, s32 cameraIndex) { s32 var_v1; UnkStruct_46D0 *temp_v0_4; s32 sp44; @@ -6897,7 +6863,7 @@ void func_8001A588(u16 *localD_80152300, Camera *camera, Player *player, s8 inde func_8001A518((s32) playerId, gGPCurrentRaceRankByPlayerId[playerId], 0); } if ((gModeSelection != TIME_TRIALS) && (cameraIndex == 1) && (((D_801646C8 == 260)) || (D_801646C8 == 261))) { - + var_v1 = 0; if (gPlayerCount == 2) { func_8001A518((s32) playerId, gGPCurrentRaceRankByPlayerId[playerId], 1); @@ -6999,7 +6965,7 @@ void func_8001AB00(void) { } } -void kart_ai_decisions_branch_item(s32 arg0, s16 *arg1, s32 arg2) { +void kart_ai_decisions_branch_item(UNUSED s32 arg0, s16 *arg1, s32 arg2) { s32 value = -1; switch (arg2) { case ITEM_FAKE_ITEM_BOX: @@ -7020,7 +6986,7 @@ void kart_ai_decisions_branch_item(s32 arg0, s16 *arg1, s32 arg2) { case ITEM_MUSHROOM: value = 0x1D; break; - case ITEM_DOUBLE_MUSHROOM: + case ITEM_DOUBLE_MUSHROOM: break; case ITEM_TRIPLE_MUSHROOM: break; @@ -7129,7 +7095,7 @@ void kart_ai_use_item_strategy(s32 playerId) { banana->velocity[1] = 0.0f; banana->velocity[2] = 0.0f; if (D_801631E0[playerId] == ((u16) 1)) { - banana->pos[1] = func_802AE1C0(player->pos[0], (f32) (((f64) player->pos[1]) + 30.0), player->pos[2]) + (banana->boundingBoxSize + 1.0f); + banana->pos[1] = spawn_actor_on_surface(player->pos[0], (f32) (((f64) player->pos[1]) + 30.0), player->pos[2]) + (banana->boundingBoxSize + 1.0f); } } player->soundEffects &= ~0x00040000; @@ -7185,7 +7151,7 @@ void kart_ai_use_item_strategy(s32 playerId) { banana->velocity[0] = 0.0f; banana->velocity[1] = 0.0f; banana->velocity[2] = 0.0f; - banana->pos[1] = func_802AE1C0(banana->pos[0], (f32) (((f64) banana->pos[1]) + 30.0), banana->pos[2]) + (banana->boundingBoxSize + 1.0f); + banana->pos[1] = spawn_actor_on_surface(banana->pos[0], (f32) (((f64) banana->pos[1]) + 30.0), banana->pos[2]) + (banana->boundingBoxSize + 1.0f); } player->soundEffects &= ~0x00040000; temp_s0->unk_00 = 0; @@ -7393,7 +7359,7 @@ void kart_ai_use_item_strategy(s32 playerId) { } else { func_802A1064(fakeItemBox); if (D_801631E0[playerId] == 1) { - fakeItemBox->pos[1] = func_802AE1C0(fakeItemBox->pos[0], fakeItemBox->pos[1] + 30.0, fakeItemBox->pos[2]) + fakeItemBox->boundingBoxSize; + fakeItemBox->pos[1] = spawn_actor_on_surface(fakeItemBox->pos[0], fakeItemBox->pos[1] + 30.0, fakeItemBox->pos[2]) + fakeItemBox->boundingBoxSize; } } temp_s0->unk_00 = 0; @@ -7529,7 +7495,7 @@ void func_8001BE78(void) { } temp_s0 = &D_80164550[i][gNearestWaypointByPlayerId[i]]; temp_s1->pos[0] = (f32) temp_s0->posX; - temp_s1->pos[1] = func_802AE1C0((f32) temp_s0->posX, 2000.0f, (f32) temp_s0->posZ) + temp_s1->boundingBoxSize; + temp_s1->pos[1] = spawn_actor_on_surface((f32) temp_s0->posX, 2000.0f, (f32) temp_s0->posZ) + temp_s1->boundingBoxSize; temp_s1->pos[2] = (f32) temp_s0->posZ; temp_s1->rotation[1] = (s16) *D_80164590[i]; func_8003680C(temp_s1, 0); diff --git a/src/code_80005FD0.h b/src/code_80005FD0.h index 0f45af796..4b091cf97 100644 --- a/src/code_80005FD0.h +++ b/src/code_80005FD0.h @@ -63,7 +63,7 @@ s16 func_80005FD0(Vec3f, Vec3f); s32 func_80006018(f32, f32, f32, f32, f32, f32, f32, f32); void func_80006114(Vec3f, Vec3f, s16); -s32 func_800061DC(Vec3f, f32, s32); +s32 set_vehicle_render_distance_flags(Vec3f, f32, s32); void func_800065D0(s32, Player*); void set_places(void); @@ -156,14 +156,14 @@ void func_800120C8(void); void func_80012190(void); void func_80012220(VehicleStuff*); void init_course_vehicles(void); -void func_80012780(TrainCarStuff*, s16*, u16); +void func_80012780(TrainCarStuff*, PathNoY *, u16); void func_800127E0(void); void func_80012A48(TrainCarStuff*, s16); void update_vehicle_trains(void); void func_80012DC0(s32, Player*); void func_80013054(void); -void func_800131DC(s32); +void check_ai_crossing_distance(s32); void func_800132F4(void); void update_vehicle_paddle_boats(void); void func_80013854(Player*); @@ -201,19 +201,19 @@ void func_80015390(Camera*, Player*, s32); void func_80015544(s32, f32, s32, s32); void func_8001577C(Camera*, UNUSED Player*, s32, s32); void func_80015A9C(s32, f32, s32, s16); -void func_80015C94(Camera*, s32, s32, s32); +void func_80015C94(Camera*, Player *, s32, s32); void func_800162CC(s32, f32, s32, s16); -void func_80016494(Camera*, s32, s32, s32); +void func_80016494(Camera*, Player *, s32, s32); void func_80016C3C(s32, f32, s32); void func_80017720(s32, f32, s32, s16); -void func_800178F4(Camera*, s32, s32, s32); +void func_800178F4(Camera*, Player *, s32, s32); void func_80017F10(s32, f32, s32, s16); -void func_800180F0(Camera*, s32, s32, s32); +void func_800180F0(Camera*, Player *, s32, s32); void func_80018718(s32, f32, s32, s16); -void func_800188F4(Camera*, s32, s32, s32); +void func_800188F4(Camera*, Player *, s32, s32); void func_80019118(s32, f32, s32, s16); void func_8001933C(Camera*, UNUSED Player*, s32, s32); @@ -306,7 +306,7 @@ extern u16 gKartAIBehaviourState[]; enum { KART_AI_BEHAVIOUR_STATE_NONE, KART_AI_BEHAVIOUR_STATE_START, - KART_AI_BEHAVIOUR_STATE_RUNNING, + KART_AI_BEHAVIOUR_STATE_RUNNING }; extern s16 D_80163300[]; @@ -352,7 +352,7 @@ extern s16 D_8016348C; extern s16 D_80163490[]; extern s16 D_801634A8[]; extern s16 D_801634C0[]; -extern s16 D_801634D8[]; +extern s16 bStopAICrossing[]; extern s16 D_801634EC; extern s32 D_801634F0; extern s32 D_801634F4; @@ -360,7 +360,7 @@ extern Test D_801634F8[]; extern PathNoY *D_80163598; extern s32 D_8016359C; extern u16 isCrossingTriggeredByIndex[]; -extern u16 D_801637BC[]; +extern u16 sCrossingActiveTimer[]; extern s32 D_80163DD8[]; extern struct unexpiredActors gUnexpiredActorsList[]; extern D_801642D8_entry D_801642D8[]; @@ -413,6 +413,6 @@ extern s32 D_8016448C; extern u16 D_801637BE; extern u16 D_80163E2A; -extern Gfx D_0D0076F8[]; +// extern Gfx D_0D0076F8[]; #endif diff --git a/src/code_8003DC40.c b/src/code_8003DC40.c index 7d92688cc..61ab5b7f7 100644 --- a/src/code_8003DC40.c +++ b/src/code_8003DC40.c @@ -1,7 +1,8 @@ #include #include +#include #include "math_util.h" -#include "common_structs.h" +#include #include "player_controller.h" #include "effects.h" #include "code_8003DC40.h" @@ -17,14 +18,14 @@ UNUSED void func_8003DC50(Player *player, Vec3f arg1) { // Praise Fake Match!! if(player){}; if (player->unk_230 <= player->unk_23C) { - if (player->unk_110.unk48[1] >= 0.1736) { + if (player->collision.unk48[1] >= 0.1736) { arg1[0] = (player->unk_206 / 182) * 0x78; arg1[2] = -(player->slopeAccel / 182) * 0x78; } else { arg1[0] = thing1; arg1[2] = thing2; } - } else if (player->unk_110.unk48[1] >= 0.1736) { + } else if (player->collision.unk48[1] >= 0.1736) { arg1[0] = (player->unk_206 / 182) * 0x78; arg1[2] = -(player->slopeAccel / 182) * 0x78; } else { @@ -41,14 +42,14 @@ UNUSED void func_8003DE4C(Player *player, Vec3f arg1) { // Praise Fake Match!! if(player){}; if (player->unk_230 <= player->unk_23C) { - if (player->unk_110.unk54[1] >= 0.1736) { + if (player->collision.unk54[1] >= 0.1736) { arg1[0] = (player->unk_206 / 182) * 0x78; arg1[2] = -(player->slopeAccel / 182) * 0x78; } else { arg1[0] = thing1; arg1[2] = thing2; } - } else if (player->unk_110.unk54[1] >= 0.1736) { + } else if (player->collision.unk54[1] >= 0.1736) { arg1[0] = (player->unk_206 / 182) * 0x78; arg1[2] = -(player->slopeAccel / 182) * 0x78; } else { @@ -60,14 +61,14 @@ UNUSED void func_8003DE4C(Player *player, Vec3f arg1) { } // Stick to ground? void func_8003E048(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7) { - *arg5 += arg1[0] * player->unk_110.unk3C[2] * 1; - *arg6 += arg1[1] * player->unk_110.unk3C[2] * 0.1; - *arg7 += arg1[2] * player->unk_110.unk3C[2] * 1; + *arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1; + *arg6 += arg1[1] * player->collision.surfaceDistance[2] * 0.1; + *arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1; func_8002A5F4(arg1, *arg4, arg2, 1, 2); - if (player->unk_110.orientationVector[1] <= 0.8829f) { + if (player->collision.orientationVector[1] <= 0.8829f) { arg3[0] = ((player->unk_206 / 182) * 0xB4); arg3[2] = (-(player->slopeAccel / 182) * 0xB4); - func_80031F48(player, 4.0f); + decelerate_ai_player(player, 4.0f); player->unk_DAC = 0.5f; if ((player->effects & BOOST_EFFECT) != 0) { remove_boost_effect(player); @@ -86,15 +87,15 @@ void func_8003E048(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4 } void func_8003E37C(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7) { - *arg5 += arg1[0] * player->unk_110.unk3C[2] * 1; - *arg6 += arg1[1] * player->unk_110.unk3C[2] * 0.2; - *arg7 += arg1[2] * player->unk_110.unk3C[2] * 1; + *arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1; + *arg6 += arg1[1] * player->collision.surfaceDistance[2] * 0.2; + *arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1; func_8002A5F4(arg1, *arg4, arg2, 0.5f, 2); - if ((player->unk_110.orientationVector[1] <= 0.7318f) || (player->surfaceType == CLIFF)) { + if ((player->collision.orientationVector[1] <= 0.7318f) || (player->surfaceType == CLIFF)) { arg3[0] = ((player->unk_206 / 182) * 0xB4); arg3[2] = (-(player->slopeAccel / 182) * 0xB4); if (((player->unk_094 / 18.0f) * 216.0f) >= 8.0f) { - func_80031F48(player, 5.0f); + decelerate_ai_player(player, 5.0f); } player->unk_DAC = 0.5f; if ((player->effects & BOOST_EFFECT) != 0) { @@ -114,14 +115,14 @@ void func_8003E37C(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4 } void func_8003E6EC(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7) { - *arg5 += arg1[0] * player->unk_110.unk3C[2] * 1; - *arg6 += arg1[1] * player->unk_110.unk3C[2] * 0.1; - *arg7 += arg1[2] * player->unk_110.unk3C[2] * 1; + *arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1; + *arg6 += arg1[1] * player->collision.surfaceDistance[2] * 0.1; + *arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1; func_8002A5F4(arg1, *arg4, arg2, 0.5f, 2); - if (player->unk_110.orientationVector[1] <= 0.8829f) { + if (player->collision.orientationVector[1] <= 0.8829f) { arg3[0] = ((player->unk_206 / 182) * 0xB4); arg3[2] = (-(player->slopeAccel / 182) * 0xB4); - func_80031F48(player, 4.0f); + decelerate_ai_player(player, 4.0f); func_8003DC40(player); } else if ((((player->unk_094 / 18.0f) * 216.0f) > 20.0f) || ((player->effects & 0x10000) == 0x10000)) { arg3[0] = ((player->unk_206 / 182) * 0x32); @@ -135,18 +136,18 @@ void func_8003E6EC(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4 } void func_8003E9EC(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7) { - *arg5 += arg1[0] * player->unk_110.unk3C[2] * 1; - *arg6 += arg1[1] * player->unk_110.unk3C[2] * 0.1; - *arg7 += arg1[2] * player->unk_110.unk3C[2] * 1; + *arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1; + *arg6 += arg1[1] * player->collision.surfaceDistance[2] * 0.1; + *arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1; func_8002A5F4(arg1, *arg4, arg2, 1.2f, 2); - if (player->unk_110.orientationVector[1] <= 0.8357f) { + if (player->collision.orientationVector[1] <= 0.8357f) { arg3[0] = ((player->unk_206 / 182) * 0x78); arg3[2] = (-(player->slopeAccel / 182) * 0xB4); - func_80031F48(player, 4.0f); + decelerate_ai_player(player, 4.0f); func_8003DC40(player); } else { if ((((player->unk_094 / 18.0f) * 216.0f) > 20.0f) || ((player->effects & 0x10000) == 0x10000)) { - if ((player->boundingBoxCorners[2].surfaceType == ASPHALT) || (player->boundingBoxCorners[3].surfaceType == ASPHALT) || (player->boundingBoxCorners[1].surfaceType == ASPHALT) || (player->boundingBoxCorners[0].surfaceType == ASPHALT)) { + if ((player->tyres[BACK_LEFT].surfaceType == ASPHALT) || (player->tyres[BACK_RIGHT].surfaceType == ASPHALT) || (player->tyres[FRONT_RIGHT].surfaceType == ASPHALT) || (player->tyres[FRONT_LEFT].surfaceType == ASPHALT)) { arg3[0] = ((player->unk_206 / 182) * 5); } else { arg3[0] = ((player->unk_206 / 182) * 0x28); @@ -166,14 +167,14 @@ void func_8003E9EC(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4 } void func_8003EE2C(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7) { - *arg5 += arg1[0] * player->unk_110.unk3C[2] * 1; - *arg6 += arg1[1] * player->unk_110.unk3C[2] * 0.1; - *arg7 += arg1[2] * player->unk_110.unk3C[2] * 1; + *arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1; + *arg6 += arg1[1] * player->collision.surfaceDistance[2] * 0.1; + *arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1; func_8002A5F4(arg1, *arg4, arg2, 0.5f, 2); - if (player->unk_110.orientationVector[1] <= 0.8357f) { + if (player->collision.orientationVector[1] <= 0.8357f) { arg3[0] = ((player->unk_206 / 182) * 0x78); arg3[2] = (-(player->slopeAccel / 182) * 0xB4); - func_80031F48(player, 4.0f); + decelerate_ai_player(player, 4.0f); func_8003DC40(player); } else if ((((player->unk_094 / 18.0f) * 216.0f) > 20.0f) || ((player->effects & 0x10000) == 0x10000)) { arg3[0] = ((player->unk_206 / 182) * 0x32); @@ -187,17 +188,17 @@ void func_8003EE2C(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4 } void func_8003F138(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7) { - *arg5 += arg1[0] * player->unk_110.unk3C[2] * 1; - *arg6 += arg1[1] * player->unk_110.unk3C[2] * 0.1; - *arg7 += arg1[2] * player->unk_110.unk3C[2] * 1; + *arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1; + *arg6 += arg1[1] * player->collision.surfaceDistance[2] * 0.1; + *arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1; func_8002A5F4(arg1, *arg4, arg2, 0.5f, 2); if (player->surfaceType == GRASS) { player->unk_044 &= ~1; } - if (player->unk_110.orientationVector[1] <= 0.8357f) { + if (player->collision.orientationVector[1] <= 0.8357f) { arg3[0] = ((player->unk_206 / 182) * 0xC8); arg3[2] = (-(player->slopeAccel / 182) * 0xC8); - func_80031F48(player, 4.0f); + decelerate_ai_player(player, 4.0f); player->unk_DAC = 0.5f; arg3[0] = 0; } else if ((((player->unk_094 / 18.0f) * 216.0f) > 20.0f) || ((player->effects & 0x10000) == 0x10000)) { @@ -214,13 +215,13 @@ void func_8003F138(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4 } void func_8003F46C(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7) { - arg1[0] = -player->unk_110.orientationVector[0]; - arg1[1] = -player->unk_110.orientationVector[1]; - arg1[2] = -player->unk_110.orientationVector[2]; - if ((player->unk_110.orientationVector[1] < 0.0f) && ((player->unk_0CA & 2) == 0)) { - *arg5 += arg1[0] * player->unk_110.unk3C[2] * 1; - *arg6 += arg1[1] * player->unk_110.unk3C[2] * 1; - *arg7 += arg1[2] * player->unk_110.unk3C[2] * 1; + arg1[0] = -player->collision.orientationVector[0]; + arg1[1] = -player->collision.orientationVector[1]; + arg1[2] = -player->collision.orientationVector[2]; + if ((player->collision.orientationVector[1] < 0.0f) && ((player->unk_0CA & 2) == 0)) { + *arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1; + *arg6 += arg1[1] * player->collision.surfaceDistance[2] * 1; + *arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1; func_8002A5F4(arg1, *arg4, arg2, 1.2f, 0.0f); player->kartHopJerk = 0.0f; player->kartHopAcceleration = 0.0f; @@ -262,43 +263,43 @@ void func_8003F734(Player *player, Vec3f arg1, Vec3f arg2, f32 *arg3, f32 *arg4, f32 temp_f14; f32 temp_f0_2; - arg1[0] = -player->unk_110.unk48[0]; - arg1[1] = -player->unk_110.unk48[1]; - arg1[2] = -player->unk_110.unk48[2]; - if (player->unk_110.unk48[1] == 0) { - *arg4 += arg1[0] * player->unk_110.unk3C[0] * 1; - *arg5 += arg1[1] * player->unk_110.unk3C[0] * 0.1; - *arg6 += arg1[2] * player->unk_110.unk3C[0] * 1; + arg1[0] = -player->collision.unk48[0]; + arg1[1] = -player->collision.unk48[1]; + arg1[2] = -player->collision.unk48[2]; + if (player->collision.unk48[1] == 0) { + *arg4 += arg1[0] * player->collision.surfaceDistance[0] * 1; + *arg5 += arg1[1] * player->collision.surfaceDistance[0] * 0.1; + *arg6 += arg1[2] * player->collision.surfaceDistance[0] * 1; if ((player->slopeAccel < 0) && (((player->unk_094 / 18.0f) * 216.0f) < 10.0f)) { func_8002A5F4(arg1, *arg3, arg2, 2.5f, 0); } else { func_8002A5F4(arg1, *arg3, arg2, 0.5f, 0); } - } else if (player->unk_110.unk48[1] <= 0.5) { - *arg4 += arg1[0] * player->unk_110.unk3C[0] * 1; - *arg5 += arg1[1] * player->unk_110.unk3C[0] * 0.1; - *arg6 += arg1[2] * player->unk_110.unk3C[0] * 1; + } else if (player->collision.unk48[1] <= 0.5) { + *arg4 += arg1[0] * player->collision.surfaceDistance[0] * 1; + *arg5 += arg1[1] * player->collision.surfaceDistance[0] * 0.1; + *arg6 += arg1[2] * player->collision.surfaceDistance[0] * 1; func_8002A5F4(arg1, *arg3, arg2, 1, 0); if ((!(player->effects & 0x10000)) && ((player->effects & 8) == 0)) { arg2[1] *= -1e-05; } } else { - *arg4 += arg1[0] * player->unk_110.unk3C[0] * 1; - temp_f0_2 = player->unk_110.unk3C[0] * arg1[1]; + *arg4 += arg1[0] * player->collision.surfaceDistance[0] * 1; + temp_f0_2 = player->collision.surfaceDistance[0] * arg1[1]; if (temp_f0_2 < 0) { *arg5 += temp_f0_2 * 0.1; } else { *arg5 += temp_f0_2 * 0; } - *arg6 += arg1[2] * player->unk_110.unk3C[0] * 1; + *arg6 += arg1[2] * player->collision.surfaceDistance[0] * 1; func_8002A5F4(arg1, *arg3, arg2, 1.2f, 0); if ((!(player->effects & 0x10000)) && ((player->effects & 8) == 0)) { arg2[1] *= -1e-05; } } player->effects &= ~0x10; - temp_f12 = player->unk_110.unk3C[0] * arg1[0]; - temp_f14 = player->unk_110.unk3C[0] * arg1[2]; + temp_f12 = player->collision.surfaceDistance[0] * arg1[0]; + temp_f14 = player->collision.surfaceDistance[0] * arg1[2]; if (((temp_f12 >= 0) && (temp_f14 >= 0)) || ((temp_f12 < 0) && (temp_f14 >= 0))) { temp_f0_2 = player->boundingBoxSize / 2; player->unk_218 = *arg4 - temp_f12 - temp_f0_2; @@ -316,43 +317,43 @@ void func_8003FBAC(Player *player, Vec3f arg1, Vec3f arg2, f32 *arg3, f32 *arg4, f32 temp_f12; f32 temp_f14; - arg1[0] = -player->unk_110.unk54[0]; - arg1[1] = -player->unk_110.unk54[1]; - arg1[2] = -player->unk_110.unk54[2]; - if (player->unk_110.unk54[1] == 0) { - *arg4 += arg1[0] * player->unk_110.unk3C[1] * 1; - *arg5 += arg1[1] * player->unk_110.unk3C[1] * 0.1; - *arg6 += arg1[2] * player->unk_110.unk3C[1] * 1; + arg1[0] = -player->collision.unk54[0]; + arg1[1] = -player->collision.unk54[1]; + arg1[2] = -player->collision.unk54[2]; + if (player->collision.unk54[1] == 0) { + *arg4 += arg1[0] * player->collision.surfaceDistance[1] * 1; + *arg5 += arg1[1] * player->collision.surfaceDistance[1] * 0.1; + *arg6 += arg1[2] * player->collision.surfaceDistance[1] * 1; if ((player->slopeAccel < 0) && (((player->unk_094 / 18.0f) * 216.0f) < 10.0f)) { func_8002A5F4(arg1, *arg3, arg2, 1.5f, 0); } else { func_8002A5F4(arg1, *arg3, arg2, 0.5f, 0); } - } else if (player->unk_110.unk54[1] <= 0.5) { - *arg4 += arg1[0] * player->unk_110.unk3C[1] * 1; - *arg5 += arg1[1] * player->unk_110.unk3C[1] * 0.1; - *arg6 += arg1[2] * player->unk_110.unk3C[1] * 1; + } else if (player->collision.unk54[1] <= 0.5) { + *arg4 += arg1[0] * player->collision.surfaceDistance[1] * 1; + *arg5 += arg1[1] * player->collision.surfaceDistance[1] * 0.1; + *arg6 += arg1[2] * player->collision.surfaceDistance[1] * 1; func_8002A5F4(arg1, *arg3, arg2, 1, 0); if ((!(player->effects & 0x10000)) && ((player->effects & 8) == 0)) { arg2[1] *= -1e-05; } } else { - *arg4 += arg1[0] * player->unk_110.unk3C[1] * 1; - temp_f0_2 = player->unk_110.unk3C[1] * arg1[1]; + *arg4 += arg1[0] * player->collision.surfaceDistance[1] * 1; + temp_f0_2 = player->collision.surfaceDistance[1] * arg1[1]; if (temp_f0_2 < 0) { *arg5 += temp_f0_2 * 0.1; } else { *arg5 += temp_f0_2 * 0; } - *arg6 += arg1[2] * player->unk_110.unk3C[1] * 1; + *arg6 += arg1[2] * player->collision.surfaceDistance[1] * 1; func_8002A5F4(arg1, *arg3, arg2, 1.2f, 0); if ((!(player->effects & 0x10000)) && ((player->effects & 8) == 0)) { arg2[1] *= -1e-05; } } player->effects &= ~0x10; - temp_f12 = player->unk_110.unk3C[1] * arg1[0]; - temp_f14 = player->unk_110.unk3C[1] * arg1[2]; + temp_f12 = player->collision.surfaceDistance[1] * arg1[0]; + temp_f14 = player->collision.surfaceDistance[1] * arg1[2]; if (((temp_f12 >= 0) && (temp_f14 >= 0)) || ((temp_f12 >= 0) && (temp_f14 < 0))) { temp_f0_2 = player->boundingBoxSize / 2; player->unk_218 = *arg4 - temp_f12 - temp_f0_2; diff --git a/src/code_8003DC40.h b/src/code_8003DC40.h index ad009c61d..1f402bda6 100644 --- a/src/code_8003DC40.h +++ b/src/code_8003DC40.h @@ -1,7 +1,7 @@ #ifndef CODE_8003DC40_H #define CODE_8003DC40_H -#include "common_structs.h" +#include /* Function Prototypes */ diff --git a/src/code_80057C60.c b/src/code_80057C60.c index 70698aeeb..83ea52128 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -6,13 +6,14 @@ #include #include #include +#include +#include "camera.h" #include "code_80057C60.h" #include "main.h" #include "actors.h" #include "code_800029B0.h" #include "racing/memory.h" -#include #include #include "math_util.h" #include "math_util_2.h" @@ -112,7 +113,7 @@ s32 D_80165754; ThwompSpawn *gThowmpSpawnList; Vec4s D_80165760; -UNUSED s16 D_80165768; +UNUSED s16 D_80165768; s8 D_8016576A; Vec4s D_80165770; UNUSED s32 D_80165778; @@ -223,7 +224,7 @@ UNUSED s32 D_80165910[96]; s8 D_80165A90; UNUSED s32 D_80165AA0[95]; UNUSED s32 D_80165C14; -Objects gObjectList[OBJECT_LIST_SIZE]; +Object gObjectList[OBJECT_LIST_SIZE]; UNUSED s32 D_80183D58; s32 objectListSize; Mtx D_80183D60; @@ -970,7 +971,7 @@ void func_80058F78(void) { render_hud_timer(PLAYER_ONE); draw_simplified_lap_count(PLAYER_ONE); func_8004EB38(0); - if (D_801657E6 != FALSE) { + if (D_801657E6 != false) { func_8004ED40(0); } } @@ -1043,10 +1044,10 @@ void func_800591B4(void) { if (gIsHUDVisible != 0) { if (D_801657D8 == 0) { - if (D_801657F0 != FALSE) { + if (D_801657F0 != false) { func_800514BC(); } - if ((!gDemoMode) && (D_801657E8 != FALSE)) { + if ((!gDemoMode) && (D_801657E8 != false)) { if (D_80165800[0] != 0) { func_8004EE54(0); if (gModeSelection != BATTLE) { @@ -1082,7 +1083,7 @@ void render_hud_2p_horizontal_player_two_horizontal_player_one(void) { if (gHUDDisable == 0) { render_hud_timer(PLAYER_ONE); if (playerHUD[PLAYER_ONE].lapCount != 3) { - draw_hud_2d_texture_32x8(playerHUD[PLAYER_ONE].lapX, playerHUD[PLAYER_ONE].lapY, common_texture_hud_lap); // draw the lap word + draw_hud_2d_texture_32x8(playerHUD[PLAYER_ONE].lapX, playerHUD[PLAYER_ONE].lapY, (u8*) common_texture_hud_lap); // draw the lap word draw_lap_count(playerHUD[PLAYER_ONE].lapX + 0xC, playerHUD[PLAYER_ONE].lapY - 4, playerHUD[PLAYER_ONE].alsoLapCount); draw_item_window(PLAYER_ONE); } @@ -1097,7 +1098,7 @@ void render_hud_2p_horizontal_player_two(void) { if (gHUDDisable == 0) { render_hud_timer(PLAYER_TWO); if (playerHUD[PLAYER_TWO].lapCount != 3) { - draw_hud_2d_texture_32x8(playerHUD[PLAYER_TWO].lapX, playerHUD[PLAYER_TWO].lapY, common_texture_hud_lap); + draw_hud_2d_texture_32x8(playerHUD[PLAYER_TWO].lapX, playerHUD[PLAYER_TWO].lapY, (u8*) common_texture_hud_lap); draw_lap_count(playerHUD[PLAYER_TWO].lapX + 0xC, playerHUD[PLAYER_TWO].lapY - 4, playerHUD[PLAYER_TWO].alsoLapCount); draw_item_window(PLAYER_TWO); } @@ -1223,7 +1224,7 @@ void randomize_seed_from_controller(s32 arg0) { } void func_8005994C(void) { - D_8018D214 = TRUE; + D_8018D214 = true; } void func_8005995C(void) { @@ -1232,7 +1233,7 @@ void func_8005995C(void) { for (i = 0; i < 4; i++) { if ((D_80165890 != 0) && (player->type & PLAYER_INVISIBLE_OR_BOMB)) { player->currentItemCopy = ITEM_MUSHROOM; - + playerHUD[i].unk_75 = 2; } if ((player->type & PLAYER_INVISIBLE_OR_BOMB) && (player->currentItemCopy == ITEM_NONE)) { @@ -1257,7 +1258,7 @@ void func_80059A88(s32 playerId) { void func_80059AC8(void) { s32 i; - if (gIsGamePaused == FALSE) { + if (gIsGamePaused == false) { func_8008C1D8(&D_80165678); gRaceFrameCounter++; for (i = 0; i < NUM_PLAYERS; i++) { @@ -1310,16 +1311,16 @@ void func_80059C50(void) { } void func_80059D00(void) { - + func_8005A99C(); func_8005A3C0(); func_8005A380(); if (D_801657AE == 0) { - switch (gScreenModeSelection) { + switch (gScreenModeSelection) { case SCREEN_MODE_1P: randomize_seed_from_controller(PLAYER_ONE); - if (D_8018D214 == FALSE) { + if (D_8018D214 == false) { func_80059820(PLAYER_ONE); func_8005B914(); if (!gDemoMode) { @@ -1419,7 +1420,7 @@ void func_8005A070(void) { gMatrixHudCount = 0; D_801655C0 = 0; func_80041D34(); - if (gIsGamePaused == FALSE) { + if (gIsGamePaused == false) { func_8005C728(); if (gGamestate == ENDING) { func_80086604(); @@ -1496,7 +1497,7 @@ void func_8005A380(void) { } void func_8005A3C0(void) { - bool b = FALSE; + bool b = false; if ((gGamestate != ENDING) && (gGamestate != CREDITS_SEQUENCE) && !D_8018D204) { switch (gPlayerCountSelection1) { case 1: @@ -1505,38 +1506,38 @@ void func_8005A3C0(void) { D_801657E4 = 0; } if (D_801657E4 == 2) { - D_801657E8 = FALSE; - D_801657E6 = FALSE; - D_801657F0 = TRUE; + D_801657E8 = false; + D_801657E6 = false; + D_801657F0 = true; } else if (D_801657E4 == 1) { - D_801657E8 = FALSE; - D_801657E6 = TRUE; - D_801657F0 = FALSE; + D_801657E8 = false; + D_801657E6 = true; + D_801657F0 = false; } else { - D_801657E8 = TRUE; - D_801657E6 = FALSE; - D_801657F0 = FALSE; + D_801657E8 = true; + D_801657E6 = false; + D_801657F0 = false; } - b = TRUE; + b = true; } break; case 2: if (gModeSelection != BATTLE) { if (gControllerOne->buttonPressed & R_CBUTTONS) { D_80165800[0] = (D_80165800[0] + 1) & 1; - b = TRUE; + b = true; } if (gControllerTwo->buttonPressed & R_CBUTTONS) { D_80165800[1] = (D_80165800[1] + 1) & 1; - b = TRUE; + b = true; } if (D_80165800[0] && D_80165800[1]) { - D_801657F0 = FALSE; + D_801657F0 = false; } else { - D_801657F0 = TRUE; + D_801657F0 = true; } if (gDemoMode) { - D_801657F0 = FALSE; + D_801657F0 = false; } } break; @@ -1548,7 +1549,7 @@ void func_8005A3C0(void) { D_801657F0 = (D_801657F0 + 1) & 1; } D_801657E4 = (D_801657E4 + 1) & 1; - b = TRUE; + b = true; } break; case 4: @@ -1562,7 +1563,7 @@ void func_8005A3C0(void) { if (gModeSelection != BATTLE) { D_801657F0 = (D_801657F0 + 1) & 1; } - b = TRUE; + b = true; } break; } @@ -1663,7 +1664,7 @@ void func_8005A99C(void) { func_8005AA34(); } if (gPlayerCountSelection1 == 3) { - D_801657E8 = TRUE; + D_801657E8 = true; } gIsHUDVisible = (s32) 1; D_8018D170 = (s32) 1; @@ -2847,9 +2848,9 @@ void func_8005D898(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UN s32 temp_lo; if (player->unk_0C0 >= 0) { - func_8005D794(player, &player->unk_258[10 + arg1], player->boundingBoxCorners[2].cornerPos[0], player->boundingBoxCorners[2].cornerGroundY + 2.0f, player->boundingBoxCorners[2].cornerPos[2], player->boundingBoxCorners[2].surfaceType, 1); + func_8005D794(player, &player->unk_258[10 + arg1], player->tyres[BACK_LEFT].pos[0], player->tyres[BACK_LEFT].baseHeight + 2.0f, player->tyres[BACK_LEFT].pos[2], player->tyres[BACK_LEFT].surfaceType, 1); } else { - func_8005D794(player, &player->unk_258[10 + arg1], player->boundingBoxCorners[3].cornerPos[0], player->boundingBoxCorners[3].cornerGroundY + 2.0f, player->boundingBoxCorners[3].cornerPos[2], player->boundingBoxCorners[3].surfaceType, 0); + func_8005D794(player, &player->unk_258[10 + arg1], player->tyres[BACK_RIGHT].pos[0], player->tyres[BACK_RIGHT].baseHeight + 2.0f, player->tyres[BACK_RIGHT].pos[2], player->tyres[BACK_RIGHT].surfaceType, 0); } temp_lo = player->unk_0C0 / 182; @@ -2861,7 +2862,7 @@ void func_8005D898(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UN if (player->unk_22A == 1) { func_8005D800(&player->unk_258[10 + arg1], 0xFFFF00, 0x70); - + } if (player->unk_22A >= 2) { @@ -2909,18 +2910,18 @@ void func_8005DAF4(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 surfaceType = 0x000000FF; temp_v0 = random_int(test); if ((temp_v0 == 0) || (temp_v0 == 4)) { - var_f2 = player->boundingBoxCorners[2].cornerPos[0]; - var_f12 = player->boundingBoxCorners[2].cornerGroundY + 2.0f; - var_f14 = player->boundingBoxCorners[2].cornerPos[2]; + var_f2 = player->tyres[BACK_LEFT].pos[0]; + var_f12 = player->tyres[BACK_LEFT].baseHeight + 2.0f; + var_f14 = player->tyres[BACK_LEFT].pos[2]; var_t3 = 1; - surfaceType = player->boundingBoxCorners[2].surfaceType; + surfaceType = player->tyres[BACK_LEFT].surfaceType; } if ((temp_v0 == 2) || (temp_v0 == 6)) { - var_f2 = player->boundingBoxCorners[3].cornerPos[0]; - var_f12 = player->boundingBoxCorners[3].cornerGroundY + 2.0f; - var_f14 = player->boundingBoxCorners[3].cornerPos[2]; + var_f2 = player->tyres[BACK_RIGHT].pos[0]; + var_f12 = player->tyres[BACK_RIGHT].baseHeight + 2.0f; + var_f14 = player->tyres[BACK_RIGHT].pos[2]; var_t3 = 0; - surfaceType = player->boundingBoxCorners[3].surfaceType; + surfaceType = player->tyres[BACK_RIGHT].surfaceType; } switch (surfaceType) { case DIRT: @@ -3103,19 +3104,19 @@ void func_8005EA94(Player *player, s16 arg1, s32 arg2, s8 arg3, UNUSED s8 arg4) var_t0 = 0x000000FF; temp_v0 = random_int(test); if ((temp_v0 == 0) || (temp_v0 == 8)) { - if ((D_801652A0[arg3] - player->boundingBoxCorners[2].cornerGroundY) >= 3.5) { - var_f2 = player->boundingBoxCorners[2].cornerPos[0]; - var_f12 = player->boundingBoxCorners[2].cornerGroundY + 2.0f; - var_f14 = player->boundingBoxCorners[2].cornerPos[2]; + if ((D_801652A0[arg3] - player->tyres[BACK_LEFT].baseHeight) >= 3.5) { + var_f2 = player->tyres[BACK_LEFT].pos[0]; + var_f12 = player->tyres[BACK_LEFT].baseHeight + 2.0f; + var_f14 = player->tyres[BACK_LEFT].pos[2]; var_t1 = 1; var_t0 = 0; } } if ((temp_v0 == 2) || (temp_v0 == 6)) { - if ((D_801652A0[arg3] - player->boundingBoxCorners[3].cornerGroundY) >= 3.5) { - var_f2 = player->boundingBoxCorners[3].cornerPos[0]; - var_f12 = player->boundingBoxCorners[3].cornerGroundY + 2.0f; - var_f14 = player->boundingBoxCorners[3].cornerPos[2]; + if ((D_801652A0[arg3] - player->tyres[BACK_RIGHT].baseHeight) >= 3.5) { + var_f2 = player->tyres[BACK_RIGHT].pos[0]; + var_f12 = player->tyres[BACK_RIGHT].baseHeight + 2.0f; + var_f14 = player->tyres[BACK_RIGHT].pos[2]; var_t1 = 0; var_t0 = 0; } @@ -3148,18 +3149,18 @@ void func_8005ED48(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 surfaceType = 0x000000FF; temp_v0 = random_int(test); if ((temp_v0 == 2) || (temp_v0 == 4)) { - var_f0 = player->boundingBoxCorners[2].cornerPos[0]; - var_f2 = player->boundingBoxCorners[2].cornerGroundY + 2.0f; - var_f12 = player->boundingBoxCorners[2].cornerPos[2]; + var_f0 = player->tyres[BACK_LEFT].pos[0]; + var_f2 = player->tyres[BACK_LEFT].baseHeight + 2.0f; + var_f12 = player->tyres[BACK_LEFT].pos[2]; var_t3 = 1; - surfaceType = player->boundingBoxCorners[2].surfaceType; + surfaceType = player->tyres[BACK_LEFT].surfaceType; } if ((temp_v0 == 0) || (temp_v0 == 6)) { - var_f0 = player->boundingBoxCorners[3].cornerPos[0]; - var_f2 = player->boundingBoxCorners[3].cornerGroundY + 2.0f; - var_f12 = player->boundingBoxCorners[3].cornerPos[2]; + var_f0 = player->tyres[BACK_RIGHT].pos[0]; + var_f2 = player->tyres[BACK_RIGHT].baseHeight + 2.0f; + var_f12 = player->tyres[BACK_RIGHT].pos[2]; var_t3 = 0; - surfaceType = player->boundingBoxCorners[3].surfaceType; + surfaceType = player->tyres[BACK_RIGHT].surfaceType; } switch (surfaceType) { case DIRT: @@ -3331,12 +3332,12 @@ void func_8005F90C(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 var_f2 = player->pos[1] - player->boundingBoxSize; var_f12 = player->pos[2]; var_t1 = 1; - surfaceType = player->boundingBoxCorners[2].surfaceType; + surfaceType = player->tyres[BACK_LEFT].surfaceType; } else { var_f0 = player->pos[0]; var_f2 = player->pos[1] - player->boundingBoxSize; var_f12 = player->pos[2]; - surfaceType = player->boundingBoxCorners[3].surfaceType; + surfaceType = player->tyres[BACK_RIGHT].surfaceType; } switch (surfaceType) { case DIRT: @@ -3493,7 +3494,7 @@ void func_8005F90C(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 GLOBAL_ASM("asm/non_matchings/code_80057C60/func_8005F90C.s") #endif -void func_80060504(Player *player, s16 arg1, s32 arg2, s8 arg3, s8 arg4) { +void func_80060504(Player *player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) { UNUSED s32 thing1; s16 thing2; UNUSED s32 thing3; @@ -4196,7 +4197,7 @@ void func_80062C74(Player *player, s16 arg1, UNUSED s32 arg2, UNUSED s32 arg3) { void func_80062F98(Player* player, s16 arg1, s8 arg2, UNUSED s8 arg3) { f32 temp_f0; - + temp_f0 = player->unk_258[10 + arg1].unk_018 / 10.0f; ++player->unk_258[10 + arg1].unk_01E; player->unk_258[10 + arg1].unk_000[1] += temp_f0; @@ -4278,11 +4279,11 @@ void func_80063268(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { void func_80063408(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { if (player->unk_258[10 + arg1].unk_010 == 1) { - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[2].cornerPos[2] + (player->unk_258[10 + arg1].unk_01E * -7) * coss(player->unk_258[10 + arg1].unk_020); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[2].cornerPos[0] + (player->unk_258[10 + arg1].unk_01E * -7) * sins(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_LEFT].pos[2] + (player->unk_258[10 + arg1].unk_01E * -7) * coss(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_LEFT].pos[0] + (player->unk_258[10 + arg1].unk_01E * -7) * sins(player->unk_258[10 + arg1].unk_020); } else { - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[3].cornerPos[2] + (player->unk_258[10 + arg1].unk_01E * -7) * coss(player->unk_258[10 + arg1].unk_020); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[3].cornerPos[0] + (player->unk_258[10 + arg1].unk_01E * -7) * sins(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_RIGHT].pos[2] + (player->unk_258[10 + arg1].unk_01E * -7) * coss(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_RIGHT].pos[0] + (player->unk_258[10 + arg1].unk_01E * -7) * sins(player->unk_258[10 + arg1].unk_020); } ++player->unk_258[10 + arg1].unk_01E; @@ -4317,19 +4318,19 @@ void func_800635D4(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { if (player->unk_258[10 + arg1].unk_010 == 1) { if ((player->effects & LIGHTNING_EFFECT)) { func_80062B18(&sp44, &sp40, &sp3C, -2.0f, 0.0f, (-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 16, -player->unk_258[10 + arg1].unk_020, 2 * -player->unk_206); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[2].cornerPos[0] + sp44; - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[2].cornerPos[2] + sp3C; + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_LEFT].pos[0] + sp44; + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_LEFT].pos[2] + sp3C; } else { - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[2].cornerPos[2] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 16) * coss(player->unk_258[10 + arg1].unk_020); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[2].cornerPos[0] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 16) * sins(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_LEFT].pos[2] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 16) * coss(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_LEFT].pos[0] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 16) * sins(player->unk_258[10 + arg1].unk_020); } } else if ((player->effects & LIGHTNING_EFFECT)) { func_80062B18(&sp44, &sp40, &sp3C, 2.0f, 0.0f, (-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 16, - player->unk_258[10 + arg1].unk_020, 2 * -player->unk_206); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[3].cornerPos[0] + sp44; - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[3].cornerPos[2] + sp3C; + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_RIGHT].pos[0] + sp44; + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_RIGHT].pos[2] + sp3C; } else { - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[3].cornerPos[2] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 16) * coss(player->unk_258[10 + arg1].unk_020); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[3].cornerPos[0] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 16) * sins(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_RIGHT].pos[2] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 16) * coss(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_RIGHT].pos[0] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 16) * sins(player->unk_258[10 + arg1].unk_020); } ++player->unk_258[10 + arg1].unk_01E; @@ -4365,11 +4366,11 @@ void func_800635D4(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { void func_800639DC(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { if (player->unk_258[10 + arg1].unk_010 == 1) { - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[2].cornerPos[2] + (-1.8f * player->unk_258[10 + arg1].unk_01E) * coss(player->unk_258[10 + arg1].unk_020); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[2].cornerPos[0] + (-1.8f * player->unk_258[10 + arg1].unk_01E) * sins(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_LEFT].pos[2] + (-1.8f * player->unk_258[10 + arg1].unk_01E) * coss(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_LEFT].pos[0] + (-1.8f * player->unk_258[10 + arg1].unk_01E) * sins(player->unk_258[10 + arg1].unk_020); } else { - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[3].cornerPos[2] + (-1.8f * player->unk_258[10 + arg1].unk_01E) * coss(player->unk_258[10 + arg1].unk_020); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[3].cornerPos[0] + (-1.8f * player->unk_258[10 + arg1].unk_01E) * sins(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_RIGHT].pos[2] + (-1.8f * player->unk_258[10 + arg1].unk_01E) * coss(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_RIGHT].pos[0] + (-1.8f * player->unk_258[10 + arg1].unk_01E) * sins(player->unk_258[10 + arg1].unk_020); } ++player->unk_258[10 + arg1].unk_01E; player->unk_258[10 + arg1].unk_000[1] += 0.3; @@ -4400,11 +4401,11 @@ void func_800639DC(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { void func_80063BD4(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { if (player->unk_258[10 + arg1].unk_010 == 1) { - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[2].cornerPos[2] + (-2 * player->unk_258[10 + arg1].unk_01E * coss(player->unk_258[10 + arg1].unk_020)); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[2].cornerPos[0] + (-2 * player->unk_258[10 + arg1].unk_01E * sins(player->unk_258[10 + arg1].unk_020)); + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_LEFT].pos[2] + (-2 * player->unk_258[10 + arg1].unk_01E * coss(player->unk_258[10 + arg1].unk_020)); + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_LEFT].pos[0] + (-2 * player->unk_258[10 + arg1].unk_01E * sins(player->unk_258[10 + arg1].unk_020)); } else { - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[3].cornerPos[2] + (-2 * player->unk_258[10 + arg1].unk_01E * coss(player->unk_258[10 + arg1].unk_020)); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[3].cornerPos[0] + (-2 * player->unk_258[10 + arg1].unk_01E * sins(player->unk_258[10 + arg1].unk_020)); + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_RIGHT].pos[2] + (-2 * player->unk_258[10 + arg1].unk_01E * coss(player->unk_258[10 + arg1].unk_020)); + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_RIGHT].pos[0] + (-2 * player->unk_258[10 + arg1].unk_01E * sins(player->unk_258[10 + arg1].unk_020)); } ++player->unk_258[10 + arg1].unk_01E; @@ -4421,11 +4422,11 @@ void func_80063BD4(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { void func_80063D58(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { if (player->unk_258[10 + arg1].unk_010 == 1) { - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[2].cornerPos[2] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 20.0f) * coss(player->unk_258[10 + arg1].unk_020); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[2].cornerPos[0] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 20.0f) * sins(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_LEFT].pos[2] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 20.0f) * coss(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_LEFT].pos[0] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 20.0f) * sins(player->unk_258[10 + arg1].unk_020); } else { - player->unk_258[10 + arg1].unk_000[2] = player->boundingBoxCorners[3].cornerPos[2] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 20.0f) * coss(player->unk_258[10 + arg1].unk_020); - player->unk_258[10 + arg1].unk_000[0] = player->boundingBoxCorners[3].cornerPos[0] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 20.0f) * sins(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[2] = player->tyres[BACK_RIGHT].pos[2] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 20.0f) * coss(player->unk_258[10 + arg1].unk_020); + player->unk_258[10 + arg1].unk_000[0] = player->tyres[BACK_RIGHT].pos[0] + ((-player->unk_258[10 + arg1].unk_01E * (player->unk_094 / 18.0f) * 216.0f) / 20.0f) * sins(player->unk_258[10 + arg1].unk_020); } ++player->unk_258[10 + arg1].unk_01E; @@ -4442,7 +4443,7 @@ void func_80063D58(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { } else { player->unk_258[10 + arg1].unk_000[1] += 0.4; } - + if (player->unk_258[10 + arg1].unk_03E <= 0) { player->unk_258[10 + arg1].unk_03E = 0; } @@ -4512,7 +4513,7 @@ void func_800643A8(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { player->unk_258[10 + arg1].unk_01E = 0; player->unk_258[10 + arg1].unk_012 = 0; } - + player->unk_258[10 + arg1].unk_00C += 0.2; player->unk_258[10 + arg1].unk_03E -= 8; if (player->unk_258[10 + arg1].unk_03E <= 0) { @@ -4597,11 +4598,11 @@ void func_800648E4(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { player->unk_258[30 + arg1].unk_00C -= 0.06; player->unk_258[30 + arg1].unk_000[1] += 0.1; player->unk_258[30 + arg1].unk_03E -= 12; - + if (player->unk_258[30 + arg1].unk_03E <= 0) { player->unk_258[30 + arg1].unk_03E = 0; } - + if (player->unk_258[30 + arg1].unk_01E == 10) { player->unk_258[30 + arg1].unk_01C = 0; player->unk_258[30 + arg1].unk_01E = 0; @@ -4623,7 +4624,7 @@ void func_80064988(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { void func_800649F4(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { f32 temp; temp = player->unk_258[30 + arg1].unk_018; - + player->unk_258[30 + arg1].unk_000[2] = player->unk_21C + (((-temp) * player->unk_258[30 + arg1].unk_01E) * coss(player->unk_258[30 + arg1].unk_020)); player->unk_258[30 + arg1].unk_000[0] = player->unk_218 + (((-temp) * player->unk_258[30 + arg1].unk_01E) * sins(player->unk_258[30 + arg1].unk_020)); player->unk_258[30 + arg1].unk_000[1] = player->pos[1] + player->unk_258[30 + arg1].unk_014; @@ -4635,7 +4636,7 @@ void func_800649F4(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { player->unk_258[30 + arg1].unk_01C = 0; player->unk_258[30 + arg1].unk_012 = 0; } - + if (player->unk_258[30 + arg1].unk_01E >= 9) { player->unk_258[30 + arg1].unk_03E -= 0x10; if (player->unk_258[30 + arg1].unk_03E <= 0) { @@ -4658,7 +4659,7 @@ void func_80064B30(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { player->unk_258[30 + arg1].unk_01C = 0; player->unk_258[30 + arg1].unk_012 = 0; } - + player->unk_258[30 + arg1].unk_038 += 1820; if (player->unk_258[30 + arg1].unk_01E >= 6) { player->unk_258[30 + arg1].unk_03E -= 16; @@ -4675,7 +4676,7 @@ void func_80064C74(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { } else { player->unk_258[30 + arg1].unk_020 -= 2184; } - + player->unk_258[30 + arg1].unk_000[2] = player->pos[2] + (coss(player->unk_258[30 + arg1].unk_020 - player->rotation[1] - player->unk_0C0) * 5.0f); player->unk_258[30 + arg1].unk_000[0] = player->pos[0] + (sins(player->unk_258[30 + arg1].unk_020 - player->rotation[1] - player->unk_0C0) * 5.0f); player->unk_258[30 + arg1].unk_000[1] = player->pos[1] - 1.0f; @@ -4699,14 +4700,14 @@ void func_80064DEC(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { player->unk_258[20 + arg3].unk_000[1] = player->pos[1]; ++player->unk_258[20 + arg3].unk_01E; - + if (player->unk_258[20 + arg3].unk_01E == 9) { player->unk_0B6 &= ~0x0040; player->unk_258[20 + arg3].unk_01C = 0; player->unk_258[20 + arg3].unk_01E = 0; player->unk_258[20 + arg3].unk_012 = 0; } - + player->unk_258[20 + arg3].unk_00C += 0.8; if (player->unk_258[20 + arg3].unk_00C >= (f64) 2.5) { player->unk_258[20 + arg3].unk_00C = 2.5f; @@ -4734,7 +4735,7 @@ void func_80064EA4(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { void func_80064F88(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { ++player->unk_258[20 + arg3].unk_01E; player->unk_258[20 + arg3].unk_00C += 0.15; - + if (1.2 <= player->unk_258[20 + arg3].unk_00C) { player->unk_258[20 + arg3].unk_00C = 1.2f; } @@ -4754,7 +4755,7 @@ void func_80065030(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { if (player->unk_258[20 + arg3].unk_00C >= (f64) 1.5) { player->unk_258[20 + arg3].unk_00C = 1.5f; } - + if (player->unk_258[20 + arg3].unk_01E >= 12) { player->unk_0B6 &= ~0x0100; player->unk_258[20 + arg3].unk_01C = 0; @@ -4906,8 +4907,7 @@ void func_80065AB0(Player *player, UNUSED s8 arg1, s16 arg2, s8 arg3) { s16 envRed; s16 envGreen; s16 envBlue; - s32 envColors[] = { MAKE_RGB(0xFF, 0xFF, 0xFF), MAKE_RGB(0xFF, 0xFF, 0x00), MAKE_RGB(0xFF, 0x96, 0x00) }; - + s32 sp8C[] = {0x00ffffff, 0x00ffff00, 0x00ff9600}; if (player->unk_258[10 + arg2].unk_01C == 1) { if (player->unk_204 >= 0x32) { var_s0 = 1; @@ -4918,9 +4918,9 @@ void func_80065AB0(Player *player, UNUSED s8 arg1, s16 arg2, s8 arg3) { primGreen = player->unk_258[10 + arg2].unk_03A; primBlue = player->unk_258[10 + arg2].unk_03C; primAlpha = player->unk_258[10 + arg2].unk_03E; - envRed = (envColors[player->unk_258[10 + arg2].unk_040] >> 0x10) & 0xFF; - envGreen = (envColors[player->unk_258[10 + arg2].unk_040] >> 0x08) & 0xFF; - envBlue = (envColors[player->unk_258[10 + arg2].unk_040] >> 0x00) & 0xFF; + envRed = (sp8C[player->unk_258[10 + arg2].unk_040] >> 0x10) & 0xFF; + envGreen = (sp8C[player->unk_258[10 + arg2].unk_040] >> 0x08) & 0xFF; + envBlue = (sp8C[player->unk_258[10 + arg2].unk_040] >> 0x00) & 0xFF; spB4[0] = player->unk_258[10 + arg2].unk_000[0]; spB4[1] = player->unk_258[10 + arg2].unk_000[1]; spB4[2] = player->unk_258[10 + arg2].unk_000[2]; @@ -4930,13 +4930,15 @@ void func_80065AB0(Player *player, UNUSED s8 arg1, s16 arg2, s8 arg3) { func_800652D4(spB4, spAC, player->unk_258[10 + arg2].unk_00C * player->size); if (var_s0 == 0) { gSPDisplayList(gDisplayListHead++, D_0D008DB8); - gDPLoadTextureBlock(gDisplayListHead++, D_800E4770[var_s0], G_IM_FMT_I, G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(gDisplayListHead++, D_800E4770[var_s0][0], G_IM_FMT_I, G_IM_SIZ_8b, 16, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); func_8004B72C(primRed, primGreen, primBlue, envRed, envGreen, envBlue, primAlpha); gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2); gSPDisplayList(gDisplayListHead++, D_0D008DF8); } else { gSPDisplayList(gDisplayListHead++, D_0D008DB8); - gDPLoadTextureBlock(gDisplayListHead++, D_800E4770[var_s0], G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(gDisplayListHead++, D_800E4770[var_s0][0], G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); func_8004B72C(primRed, primGreen, primBlue, envRed, envGreen, envBlue, primAlpha); gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2); gSPDisplayList(gDisplayListHead++, D_0D008E48); @@ -5104,14 +5106,15 @@ void func_80066BAC(Player *player, UNUSED s8 arg1, s16 arg2, s8 arg3) { UNUSED s32 stackPadding; if ((player->unk_258[arg2].unk_01C == 1) && (player->unk_258[arg2].unk_038 != 0x00FF)) { - if (player->unk_110.unk3C[2] >= 300.0f) { + + if (player->collision.surfaceDistance[2] >= 300.0f) { spDC[1] = player->pos[1] + 5.0f; } else { spDC[1] = player->pos[1] - 3.0f; } spDC[2] = player->pos[2] + (coss(player->unk_048[arg3]) * -10.0f); spDC[0] = player->pos[0] + (sins(player->unk_048[arg3]) * -10.0f); - if (player->unk_110.unk3C[2] >= 300.0f) { + if (player->collision.surfaceDistance[2] >= 300.0f) { spD4[0] = cameras[arg3].rot[0] - 0x4000; } else { spD4[0] = 0; @@ -5722,7 +5725,7 @@ void func_8006A7C0(Player *player, f32 arg1, f32 arg2, s8 arg3, s8 arg4) { } } -void func_8006AFD0(Player *player, s8 arg1, s16 arg2, s8 arg3) { +void render_battle_balloon(Player *player, s8 arg1, s16 arg2, s8 arg3) { Mat4 sp140; Vec3f sp134; Vec3s sp12C; @@ -5788,7 +5791,7 @@ void func_8006AFD0(Player *player, s8 arg1, s16 arg2, s8 arg3) { gDPSetTextureLUT(gDisplayListHead++, G_TT_RGBA16); func_8004B614(primRed, primGreen, primBlue, envRed, envGreen, envBlue, 0x000000D8); - + gDPSetRenderMode(gDisplayListHead++, AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); gDPLoadTextureBlock(gDisplayListHead++, D_8018D4BC, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPVertex(gDisplayListHead++, gBalloonVertexPlane1, 4, 0); @@ -5848,16 +5851,19 @@ void func_8006B9CC(Player* player, s8 arg1) { void func_8006BA94(Player* player, s8 playerIndex, s8 arg2) { if (gPlayerBalloonStatus[playerIndex][0] != BALLOON_STATUS_GONE) { - func_8006AFD0(player, playerIndex, 0, arg2); + render_battle_balloon(player, playerIndex, 0, arg2); } if (gPlayerBalloonStatus[playerIndex][1] != BALLOON_STATUS_GONE) { - func_8006AFD0(player, playerIndex, 1, arg2); + render_battle_balloon(player, playerIndex, 1, arg2); } if (gPlayerBalloonStatus[playerIndex][2] != BALLOON_STATUS_GONE) { - func_8006AFD0(player, playerIndex, 2, arg2); + render_battle_balloon(player, playerIndex, 2, arg2); } } +/** + * Used in podium ceremony. +*/ void render_balloon(Vec3f arg0, f32 arg1, s16 arg2, s16 arg3) { Mat4 sp108; Vec3f spFC; @@ -6026,7 +6032,7 @@ void func_8006C6AC(Player *player, s16 arg1, s8 arg2, s8 arg3) { } else if (!(player->effects & 8) && !(player->effects & 2)) { if (((player->effects & 0x10) == 0x10) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { func_8005DA30(player, arg1, sp28, arg2_copy, arg3); - } else if (((f64) (D_801652A0[arg2_copy] - player->boundingBoxCorners[3].cornerGroundY) >= 3.5) || ((f64) (D_801652A0[arg2_copy] - player->boundingBoxCorners[2].cornerGroundY) >= 3.5)) { + } else if (((f64) (D_801652A0[arg2_copy] - player->tyres[BACK_RIGHT].baseHeight) >= 3.5) || ((f64) (D_801652A0[arg2_copy] - player->tyres[BACK_LEFT].baseHeight) >= 3.5)) { func_8005EA94(player, arg1, sp28, arg2_copy, arg3); } else if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { func_8005F90C(player, arg1, sp28, arg2_copy, arg3); @@ -6051,39 +6057,39 @@ void func_8006C9B8(Player *player, s16 arg1, s8 arg2, s8 arg3) { case 1: func_800644E8(player, arg1, arg2, arg3); break; - + case 2: func_800649F4(player, arg1, arg2, arg3); break; - + case 3: func_80064C74(player, arg1, arg2, arg3); break; - + case 4: func_800647C8(player, arg1, arg2, arg3); break; - + case 5: func_80064B30(player, arg1, arg2, arg3); break; - + case 6: func_800648E4(player, arg1, arg2, arg3); break; - + case 7: func_80064988(player, arg1, arg2, arg3); break; - + case 8: func_80064C74(player, arg1, arg2, arg3); break; - + case 9: func_80064664(player, arg1, arg2, arg3); break; - + default: break; } @@ -6170,7 +6176,7 @@ void func_8006CEC0(Player *arg0, s16 arg1, s8 arg2, s8 arg3) { } else if (((arg0->effects & 0x40000000) == 0x40000000) && (arg0->unk_0B0 < 0x32)) { func_80061094(arg0, arg1, sp20, arg2, arg3); return; - } else if ((arg0->type & 0x4000) == 0x4000) { + } else if ((arg0->type & 0x4000) == 0x4000) { if ((arg0->unk_0DE & 8) == 8) { func_80060F50(arg0, arg1, sp20, arg2, arg3); return; @@ -6252,27 +6258,27 @@ void func_8006D194(Player *player, s8 arg1, s8 arg2) { } } -void func_8006D474(Player *player, s8 arg1, s8 arg2) { +void func_8006D474(Player *player, s8 playerId, s8 screenId) { s16 var_s2; - if ((player->unk_002 & (8 << (arg2 * 4))) == (8 << (arg2 * 4))) { + if ((player->unk_002 & (8 << (screenId * 4))) == (8 << (screenId * 4))) { for (var_s2 = 0; var_s2 < 10; var_s2++) { switch (player->unk_258[var_s2].unk_012) { case 1: if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) { - if (arg2 == arg1) { - func_8006538C(player, arg1, var_s2, arg2); + if (screenId == playerId) { + func_8006538C(player, playerId, var_s2, screenId); } } else { - func_8006538C(player, arg1, var_s2, arg2); + func_8006538C(player, playerId, var_s2, screenId); } break; case 6: if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) { - if (arg2 == arg1) { - func_80066BAC(player, arg1, var_s2, arg2); + if (screenId == playerId) { + func_80066BAC(player, playerId, var_s2, screenId); } - } else if (arg2 == arg1) { - func_80066BAC(player, arg1, var_s2, arg2); + } else if (screenId == playerId) { + func_80066BAC(player, playerId, var_s2, screenId); } break; } @@ -6280,69 +6286,69 @@ void func_8006D474(Player *player, s8 arg1, s8 arg2) { case 1: case 9: if (gActiveScreenMode == SCREEN_MODE_1P) { - func_800691B8(player, arg1, var_s2, arg2); - } else if (arg2 == arg1) { - func_800691B8(player, arg1, var_s2, arg2); + func_800691B8(player, playerId, var_s2, screenId); + } else if (screenId == playerId) { + func_800691B8(player, playerId, var_s2, screenId); } break; case 2: if (gActiveScreenMode == SCREEN_MODE_1P) { - func_800696CC(player, arg1, var_s2, arg2, player->unk_258[var_s2 + 30].unk_00C); - } else if (arg2 == arg1) { - func_800696CC(player, arg1, var_s2, arg2, player->unk_258[var_s2 + 30].unk_00C); + func_800696CC(player, playerId, var_s2, screenId, player->unk_258[var_s2 + 30].unk_00C); + } else if (screenId == playerId) { + func_800696CC(player, playerId, var_s2, screenId, player->unk_258[var_s2 + 30].unk_00C); } break; case 3: if (gActiveScreenMode == SCREEN_MODE_1P) { - func_80067280(player, arg1, var_s2, arg2); - } else if (arg2 == arg1) { - func_80067280(player, (s32) arg1, var_s2, arg2); + func_80067280(player, playerId, var_s2, screenId); + } else if (screenId == playerId) { + func_80067280(player, (s32) playerId, var_s2, screenId); } break; case 4: if (gActiveScreenMode == SCREEN_MODE_1P) { - func_80069444(player, arg1, var_s2, arg2); - } else if (arg2 == arg1) { - func_80069444(player, arg1, var_s2, arg2); + func_80069444(player, playerId, var_s2, screenId); + } else if (screenId == playerId) { + func_80069444(player, playerId, var_s2, screenId); } break; case 5: if (gActiveScreenMode == SCREEN_MODE_1P) { - func_80069938(player, arg1, var_s2, arg2); - } else if (arg2 == arg1) { - func_80069938(player, arg1, var_s2, arg2); + func_80069938(player, playerId, var_s2, screenId); + } else if (screenId == playerId) { + func_80069938(player, playerId, var_s2, screenId); } break; case 6: if (gActiveScreenMode == SCREEN_MODE_1P) { - func_80069BA8(player, arg1, var_s2, arg2); - } else if (arg2 == arg1) { - func_80069BA8(player, arg1, var_s2, arg2); + func_80069BA8(player, playerId, var_s2, screenId); + } else if (screenId == playerId) { + func_80069BA8(player, playerId, var_s2, screenId); } break; case 7: if (gActiveScreenMode == SCREEN_MODE_1P) { - func_80069DB8(player, arg1, var_s2, arg2); - } else if (arg2 == arg1) { - func_80069DB8(player, arg1, var_s2, arg2); + func_80069DB8(player, playerId, var_s2, screenId); + } else if (screenId == playerId) { + func_80069DB8(player, playerId, var_s2, screenId); } break; case 8: if (gActiveScreenMode == SCREEN_MODE_1P) { - func_80067604(player, arg1, var_s2, arg2); - } else if (arg2 == arg1) { - func_80067604(player, arg1, var_s2, arg2); + func_80067604(player, playerId, var_s2, screenId); + } else if (screenId == playerId) { + func_80067604(player, playerId, var_s2, screenId); } break; } switch (player->unk_258[var_s2 + 10].unk_012) { case 1: if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) { - if (arg2 == arg1) { - func_80065AB0(player, arg1, var_s2, arg2); + if (screenId == playerId) { + func_80065AB0(player, playerId, var_s2, screenId); } } else { - func_80065AB0(player, arg1, var_s2, arg2); + func_80065AB0(player, playerId, var_s2, screenId); } break; case 2: @@ -6350,36 +6356,36 @@ void func_8006D474(Player *player, s8 arg1, s8 arg2) { case 4: case 5: if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) { - if (arg2 == arg1) { - func_80065F0C(player, arg1, var_s2, arg2); + if (screenId == playerId) { + func_80065F0C(player, playerId, var_s2, screenId); } } else { - func_80065F0C(player, arg1, var_s2, arg2); + func_80065F0C(player, playerId, var_s2, screenId); } break; case 9: if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) { - if (arg2 == arg1) { - func_800664E0(player, (s32) arg1, var_s2, arg2); + if (screenId == playerId) { + func_800664E0(player, (s32) playerId, var_s2, screenId); } } else { - func_800664E0(player, (s32) arg1, var_s2, arg2); + func_800664E0(player, (s32) playerId, var_s2, screenId); } break; case 11: if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) { - if (arg2 == arg1) { - func_8006A01C(player, arg1, var_s2, arg2); + if (screenId == playerId) { + func_8006A01C(player, playerId, var_s2, screenId); } - } else if (arg2 == arg1) { - func_8006A01C(player, arg1, var_s2, arg2); + } else if (screenId == playerId) { + func_8006A01C(player, playerId, var_s2, screenId); } break; } } } - if ((gModeSelection == BATTLE) && (player->unk_002 & (2 << (arg2 * 4)))) { - func_8006BA94(player, arg1, arg2); + if ((gModeSelection == BATTLE) && (player->unk_002 & (2 << (screenId * 4)))) { + func_8006BA94(player, playerId, screenId); } } @@ -6445,7 +6451,7 @@ void func_8006DD3C(Player* arg0, s8 arg1, s8 arg2) { } void func_8006E058(void) { - switch (gActiveScreenMode) { + switch (gActiveScreenMode) { case SCREEN_MODE_1P: switch (gModeSelection) { case GRAND_PRIX: @@ -6465,7 +6471,7 @@ void func_8006E058(void) { if ((gPlayerTwo->type & 0x100) == 0x100) { func_8006E420(gPlayerTwo, 1, 0); } - + if ((gPlayerThree->type & 0x100) == 0x100) { func_8006E420(gPlayerThree, 2, 0); break; @@ -6476,7 +6482,7 @@ void func_8006E058(void) { case BATTLE: func_8006E420(gPlayerOne, 0, 0); func_8006E420(gPlayerTwo, 1, 0); - + if (gPlayerCountSelection1 >= 3) { func_8006E420(gPlayerThree, 2, 0); } @@ -6492,7 +6498,7 @@ void func_8006E058(void) { break; case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: - switch (gModeSelection) { + switch (gModeSelection) { case GRAND_PRIX: func_8006E420(gPlayerOne, 0, 0); func_8006E420(gPlayerTwo, 1, 0); @@ -6504,7 +6510,7 @@ void func_8006E058(void) { func_8006E420(gPlayerEight, 7, 0); break; - case VERSUS: + case VERSUS: case BATTLE: func_8006E420(gPlayerOne, 0, 0); func_8006E420(gPlayerTwo, 1, 0); @@ -6512,7 +6518,7 @@ void func_8006E058(void) { break; case TIME_TRIALS: func_8006E420(gPlayerOne, 0, 0); - + if ((gPlayerTwo->type & 0x8000) == 0x8000) { func_8006E420(gPlayerTwo, 1, 0); break; @@ -6544,7 +6550,7 @@ void func_8006E420(Player* player, s8 arg1, s8 arg2) { if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { func_8006D194(player, arg1, arg2); } - + for (temp_s0 = 0; temp_s0 < 10; ++temp_s0) { func_8006CEC0(player, temp_s0, arg1, arg2); if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) || (gGamestate == ENDING)) { @@ -6559,7 +6565,20 @@ void func_8006E420(Player* player, s8 arg1, s8 arg2) { } } -void func_8006E5AC(Player* player, s8 arg1, s8 arg2) { +void render_kart_particle_on_screen_one(Player* player, s8 playerId, s8 screenId) { + if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) { + if ((player->effects & BOO_EFFECT) == BOO_EFFECT) { + if (playerId == screenId) { + func_8006D474(player, playerId, screenId); + } + } else { + func_8006D474(player, playerId, screenId); + } + func_8006DC54(player, playerId, screenId); + } +} + +void render_kart_particle_on_screen_two(Player* player, s8 arg1, s8 arg2) { if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) { if ((player->effects & BOO_EFFECT) == BOO_EFFECT) { if (arg1 == arg2) { @@ -6572,7 +6591,7 @@ void func_8006E5AC(Player* player, s8 arg1, s8 arg2) { } } -void func_8006E634(Player* player, s8 arg1, s8 arg2) { +void render_kart_particle_on_screen_three(Player* player, s8 arg1, s8 arg2) { if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) { if ((player->effects & BOO_EFFECT) == BOO_EFFECT) { if (arg1 == arg2) { @@ -6585,20 +6604,7 @@ void func_8006E634(Player* player, s8 arg1, s8 arg2) { } } -void func_8006E6BC(Player* player, s8 arg1, s8 arg2) { - if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) { - if ((player->effects & BOO_EFFECT) == BOO_EFFECT) { - if (arg1 == arg2) { - func_8006D474(player, arg1, arg2); - } - } else { - func_8006D474(player, arg1, arg2); - } - func_8006DC54(player, arg1, arg2); - } -} - -void func_8006E744(Player* player, s8 arg1, s8 arg2) { +void render_kart_particle_on_screen_four(Player* player, s8 arg1, s8 arg2) { if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) { if ((player->effects & BOO_EFFECT) == BOO_EFFECT) { if (arg1 == arg2) { diff --git a/src/code_80057C60.h b/src/code_80057C60.h index adec3a860..e450b0433 100644 --- a/src/code_80057C60.h +++ b/src/code_80057C60.h @@ -1,7 +1,7 @@ #ifndef CODE_80057C60_H #define CODE_80057C60_H -#include "common_structs.h" +#include #include "objects.h" #include "camera.h" @@ -221,7 +221,7 @@ void func_8006A01C(Player*, s8, s16, s8); void func_8006A280(Player*, s8, s16, s8); void func_8006A50C(Player*, f32, f32, s8, s8, s16); void func_8006A7C0(Player*, f32, f32, s8, s8); -void func_8006AFD0(Player*, s8, s16, s8); +void render_battle_balloon(Player*, s8, s16, s8); void func_8006B7E4(Player*, s8); void func_8006B87C(Player*, s8); @@ -245,10 +245,10 @@ void func_8006DD3C(Player*, s8, s8); void func_8006E058(void); void func_8006E420(Player*, s8, s8); -void func_8006E5AC(Player*, s8, s8); -void func_8006E634(Player*, s8, s8); -void func_8006E6BC(Player*, s8, s8); -void func_8006E744(Player*, s8, s8); +void render_kart_particle_on_screen_one(Player*, s8, s8); +void render_kart_particle_on_screen_two(Player*, s8, s8); +void render_kart_particle_on_screen_three(Player*, s8, s8); +void render_kart_particle_on_screen_four(Player*, s8, s8); void func_8006E7CC(Player*, s8, s8); void func_8006E848(Player*, s8, s8); void func_8006E8C4(Player*, s8, s8); @@ -380,7 +380,7 @@ extern s16 D_80165900; extern s8 D_80165908; extern s8 D_80165A90; -// extern Objects gObjectList[]; -> objects.h +// extern Object gObjectList[]; -> objects.h extern s32 objectListSize; extern Mtx D_80183D60; diff --git a/src/code_80057C60_var.c b/src/code_80057C60_var.c index 04393db96..44b257ab8 100644 --- a/src/code_80057C60_var.c +++ b/src/code_80057C60_var.c @@ -152,13 +152,13 @@ s32 D_8018D3D4; s32 D_8018D3D8; s32 D_8018D3DC; //! some alpha -s32 D_8018D3E0; +s32 D_8018D3E0; //! some red -s32 D_8018D3E4; +s32 D_8018D3E4; //! some green -s32 D_8018D3E8; +s32 D_8018D3E8; //! some blue -s32 D_8018D3EC; +s32 D_8018D3EC; s32 D_8018D3F0; s32 D_8018D3F4; s32 D_8018D3F8; diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index 18a044ef4..bc17517bf 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "code_800029B0.h" #include "code_80005FD0.h" @@ -23,6 +24,7 @@ #include "render_objects.h" #include "code_80091750.h" #include "src/data/some_data.h" +#include "effects.h" void init_hud(void) { @@ -65,7 +67,7 @@ void reset_object_variable(void) { void func_8006EB10(void) { s32 i; - + for (i = 0; i < gObjectParticle1_SIZE; i++) { gObjectParticle1[i] = NULL_OBJECT_ID; } @@ -102,7 +104,7 @@ void func_8006EB10(void) { } void clear_object_list() { - bzero(gObjectList, OBJECT_LIST_SIZE * sizeof(Objects)); + bzero(gObjectList, OBJECT_LIST_SIZE * sizeof(Object)); objectListSize = -1; } @@ -129,11 +131,11 @@ void func_8006EE44(void) { void init_item_window(s32 objectIndex) { ItemWindowObjects *temp_v0; - temp_v0 = &gObjectList[objectIndex]; + temp_v0 = (ItemWindowObjects *)&gObjectList[objectIndex]; temp_v0->currentItem = ITEM_NONE; temp_v0->itemDisplay = temp_v0->currentItem; - temp_v0->tlutList = (s32 *) common_tlut_item_window_none; - temp_v0->activeTLUT = (s32 *) common_tlut_item_window_none; + temp_v0->tlutList = (u8 *) common_tlut_item_window_none; + temp_v0->activeTLUT = (u8 *) common_tlut_item_window_none; temp_v0->textureList = common_texture_item_window_none; temp_v0->activeTexture = common_texture_item_window_none; temp_v0->unk_04C = -1; @@ -143,7 +145,7 @@ void init_item_window(s32 objectIndex) { } void func_8006EEE8(s32 courseId) { - D_8018D240 = dma_textures(gCourseOutlineTextures[courseId], D_800E5520[courseId], D_800E5520[courseId]); + D_8018D240 = (s32)dma_textures(gCourseOutlineTextures[courseId], D_800E5520[courseId], D_800E5520[courseId]); // This is incredibly dumb. D_800E5548 ought to be something more like // `u16 D_800E5548[][2]` but that doesn't match for some insane reason D_8018D2B0 = D_800E5548[courseId * 2]; @@ -178,7 +180,7 @@ void func_8006F008(void) { } switch (gCurrentCourseId) { case COURSE_MARIO_RACEWAY: - D_8018D220 = dma_textures(gTextureExhaust5, 0x443, 0x1000); + D_8018D220 = (void *)dma_textures(gTextureExhaust5, 0x443, 0x1000); D_8018D2A0 = 0.022f; D_8018D2E0 = 6; D_8018D2E8 = 28; @@ -201,14 +203,14 @@ void func_8006F008(void) { D_8018D2E8 = 48; break; case COURSE_BANSHEE_BOARDWALK: - D_80165880 = dma_textures(gTextureGhosts, 0x4CC2, 0xD980); + D_80165880 = (void *)dma_textures(gTextureGhosts, 0x4CC2, 0xD980); D_8018D2A0 = 0.016f; D_8018D2C0[0] = 0x0106; D_8018D2E0 = 55; D_8018D2E8 = 39; break; case COURSE_YOSHI_VALLEY: - D_8018D220 = dma_textures(gTextureExhaust0, 0x479, 0xC00); + D_8018D220 = (void *)dma_textures(gTextureExhaust0, 0x479, 0xC00); D_8018D2A0 = 0.018f; D_8018D2E0 = 61; D_8018D2E8 = 38; @@ -223,14 +225,14 @@ void func_8006F008(void) { D_8018D310 = 255; break; case COURSE_KOOPA_BEACH: - D_8018D220 = dma_textures(gTextureExhaust3, 0x3C8U, 0x1000); + D_8018D220 = (void *)dma_textures(gTextureExhaust3, 0x3C8U, 0x1000); D_8018D2A0 = 0.014f; D_8018D2C0[0] = 268; D_8018D2E0 = 40; D_8018D2E8 = 21; break; case COURSE_ROYAL_RACEWAY: - D_8018D220 = dma_textures(gTextureExhaust4, 0x3F8, 0x1000); + D_8018D220 = (void *)dma_textures(gTextureExhaust4, 0x3F8, 0x1000); D_8018D2C0[0] = 262; D_8018D2A0 = 0.014f; D_8018D2E0 = 37; @@ -240,7 +242,7 @@ void func_8006F008(void) { D_80165728 = -330; break; case COURSE_LUIGI_RACEWAY: - D_8018D220 = dma_textures(gTextureExhaust2, 0x4F4U, 0xC00); + D_8018D220 = (void *)dma_textures(gTextureExhaust2, 0x4F4U, 0xC00); D_8018D2A0 = 0.0155f; D_8018D2C0[0] = 271; D_8018D2E0 = 45; @@ -250,7 +252,7 @@ void func_8006F008(void) { D_80165728 = -215; break; case COURSE_MOO_MOO_FARM: - D_8018D220 = dma_textures(gTextureExhaust0, 0x479, 0xC00); + D_8018D220 = (void *)dma_textures(gTextureExhaust0, 0x479, 0xC00); D_8018D2A0 = 0.0155f; D_8018D2C0[0] = 271; D_8018D2E0 = 18; @@ -265,13 +267,13 @@ void func_8006F008(void) { case COURSE_KALAMARI_DESERT: D_8018D2C0[0] = 263; D_8018D2D8[0] = 165; - D_8018D220 = dma_textures(gTextureExhaust5, 0x443, 0x1000); + D_8018D220 = (void *)dma_textures(gTextureExhaust5, 0x443, 0x1000); D_8018D2A0 = 0.015f; D_8018D2E0 = 55; D_8018D2E8 = 27; break; case COURSE_SHERBET_LAND: - D_8018D220 = dma_textures(gTextureExhaust1, 0x485, 0xC00); + D_8018D220 = (void *)dma_textures(gTextureExhaust1, 0x485, 0xC00); D_8018D2A0 = 0.015f; D_8018D2C0[0] = 262; D_8018D2E0 = 52; @@ -569,7 +571,7 @@ void func_8006FA94(void) { D_8018D17C = D_8018D18C; D_8018D174 = D_8018D18C; player = gPlayerOne; - for (var_a0 = 0; var_a0 < 8; var_a0++) { + for (var_a0 = 0; var_a0 < NUM_PLAYERS; var_a0++) { D_8018D0F0[var_a0] = D_8018D050[var_a0] = -32.0f; D_8018CE10[var_a0].unk_04[0] = D_8018CE10[var_a0].unk_04[1] = D_8018CE10[var_a0].unk_04[2] = 0.0f; D_8018CF50[var_a0] = var_a0; @@ -609,14 +611,14 @@ void init_cloud_object(s32 objectIndex, s32 arg1, CloudData *arg2) { ItemWindowObjects *temp_v0; init_object(objectIndex, arg1); - temp_v0 = &gObjectList[objectIndex]; + temp_v0 = (ItemWindowObjects *)&gObjectList[objectIndex]; temp_v0->unk_0D5 = arg2->subType; temp_v0->currentItem = ITEM_NONE; temp_v0->direction_angle[1] = arg2->rotY; temp_v0->unk_09E = arg2->posY; temp_v0->sizeScaling = (f32) arg2->scalePercent / 100.0; - temp_v0->activeTexture = &D_8018D220[arg2->subType]; - func_80073404(objectIndex, 0x40U, 0x20U, &D_0D005FB0); + temp_v0->activeTexture = (u8 *)&D_8018D220[arg2->subType]; + func_80073404(objectIndex, 0x40U, 0x20U, D_0D005FB0); temp_v0->primAlpha = 0x00FF; } @@ -636,10 +638,10 @@ void init_clouds(CloudData *cloudList) { /** * This function is part of the spawning for the "stars" in some stages - * + * * arg2 is a pointer to some type of spawn data for the stars, although it not super clear * what types each element is. It seems like its a bunch of u16's, so maybe a Vec4su? - * + * * The stars in Wario's Stadium, Toad's Turnpike, and Rainbow Road are not part of the skybox. * They are instead objects that seemingly hover in the air around the player * They have no true x/y/z position, instead they seem to be kept in a position relative to the @@ -652,7 +654,7 @@ void init_star_object(s32 objectIndex, s32 arg1, StarData *arg2) { ItemWindowObjects *temp_v0; init_object(objectIndex, arg1); - temp_v0 = &gObjectList[objectIndex]; + temp_v0 = (ItemWindowObjects *)&gObjectList[objectIndex]; temp_v0->unk_0D5 = arg2->subType; temp_v0->currentItem = ITEM_BANANA; temp_v0->direction_angle[1] = arg2->rotY; @@ -692,7 +694,7 @@ void func_8007055C(void) { if (gPlayerCount == 1) { var_s4 = 0x32; } else { - var_s4 = 0x19; + var_s4 = 0x19; } for (var_s0 = 0; var_s0 < var_s4; var_s0++) { find_unused_obj_index(&D_8018CC80[D_8018D1F8 + var_s0]); @@ -826,7 +828,7 @@ void init_course_object(void) { objectId = indexObjectList2[i]; init_object(objectId, 0); gObjectList[objectId].pos[0] = gObjectList[objectId].origin_pos[0] = gHedgehogSpawns[i].pos[0] * xOrientation; - gObjectList[objectId].pos[1] = gObjectList[objectId].unk_044 = gHedgehogSpawns[i].pos[1] + 6.0; + gObjectList[objectId].pos[1] = gObjectList[objectId].surfaceHeight = gHedgehogSpawns[i].pos[1] + 6.0; gObjectList[objectId].pos[2] = gObjectList[objectId].origin_pos[2] = gHedgehogSpawns[i].pos[2]; gObjectList[objectId].unk_0D5 = gHedgehogSpawns[i].unk_06; gObjectList[objectId].unk_09C = gHedgehogPatrolPoints[i][0] * xOrientation; @@ -1276,7 +1278,7 @@ void init_hud_three_four_player(void) { playerHUD[PLAYER_TWO].lapY = 0x60; playerHUD[PLAYER_TWO].unk_6C = 0xC8; playerHUD[PLAYER_TWO].unk_6E = 0xC8; - + playerHUD[PLAYER_THREE].itemBoxX = -0x36; playerHUD[PLAYER_THREE].itemBoxY = 0x2D; playerHUD[PLAYER_THREE].slideItemBoxX = 0; @@ -1291,7 +1293,7 @@ void init_hud_three_four_player(void) { playerHUD[PLAYER_THREE].lapY = 0xD4; playerHUD[PLAYER_THREE].unk_6C = 0xDE; playerHUD[PLAYER_THREE].unk_6E = 0xC0; - + playerHUD[PLAYER_FOUR].itemBoxX = 0x175; playerHUD[PLAYER_FOUR].itemBoxY = 0x2D; playerHUD[PLAYER_FOUR].slideItemBoxX = 0; diff --git a/src/code_8006E9C0.h b/src/code_8006E9C0.h index 175cf7792..9ebee2484 100644 --- a/src/code_8006E9C0.h +++ b/src/code_8006E9C0.h @@ -1,7 +1,7 @@ #ifndef CODE_8006E9C0_H #define CODE_8006E9C0_H -#include "common_structs.h" +#include #include "update_objects.h" void init_hud(void); diff --git a/src/code_80086E70.c b/src/code_80086E70.c index 79a6b9d74..13818b6c5 100644 --- a/src/code_80086E70.c +++ b/src/code_80086E70.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include "code_80086E70.h" #include "camera.h" @@ -45,9 +45,9 @@ void func_80086F60(s32 objectIndex) { } bool func_80086FA4(s32 objectIndex) { - bool ret = FALSE; + bool ret = false; if (gObjectList[objectIndex].unk_0AE == 0) { - ret = TRUE; + ret = true; } return ret; } @@ -66,7 +66,7 @@ s32 func_80087060(s32 objectIndex, s32 arg1) { s32 sp1C; sp1C = 0; - if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) { + if (is_obj_index_flag_status_inactive(objectIndex, 8) != false) { set_object_flag_status_true(objectIndex, 8); gObjectList[objectIndex].unk_0B0 = arg1; } @@ -82,7 +82,7 @@ s32 func_80087104(s32 objectIndex, u16 arg1) { s32 sp24; sp24 = 0; - if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) { + if (is_obj_index_flag_status_inactive(objectIndex, 8) != false) { set_object_flag_status_true(objectIndex, 8); gObjectList[objectIndex].unk_0B0 = random_int(arg1); } @@ -98,7 +98,7 @@ s32 func_800871AC(s32 objectIndex, s32 arg1) { s32 sp24; sp24 = 0; - if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) { + if (is_obj_index_flag_status_inactive(objectIndex, 8) != false) { set_object_flag_status_true(objectIndex, 8); gObjectList[objectIndex].unk_0B0 = (s16) arg1; } @@ -218,7 +218,7 @@ s32 func_8008789C(s32 objectIndex, s32 arg1) { s32 sp24; sp24 = 0; - if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) { + if (is_obj_index_flag_status_inactive(objectIndex, 8) != false) { set_object_flag_status_true(objectIndex, 8); func_8008751C(objectIndex); gObjectList[objectIndex].unk_0B0 = arg1; @@ -237,7 +237,7 @@ s32 func_80087954(s32 objectIndex, s32 arg1) { s32 sp24; sp24 = 0; - if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) { + if (is_obj_index_flag_status_inactive(objectIndex, 8) != false) { set_object_flag_status_true(objectIndex, 8); func_80087620(objectIndex); gObjectList[objectIndex].unk_0B0 = arg1; @@ -258,8 +258,8 @@ bool func_80087A0C(s32 objectIndex, s16 arg1, s16 arg2, s16 arg3, s16 arg4) { s16 temp_v0; bool sp2C; - sp2C = FALSE; - if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) { + sp2C = false; + if (is_obj_index_flag_status_inactive(objectIndex, 8) != false) { set_object_flag_status_true(objectIndex, 8); temp_v0 = arg2 - arg1; temp_a0 = arg4 - arg3; @@ -272,7 +272,7 @@ bool func_80087A0C(s32 objectIndex, s16 arg1, s16 arg2, s16 arg3, s16 arg4) { gObjectList[objectIndex].unk_0B0--; if (gObjectList[objectIndex].unk_0B0 < 0) { set_object_flag_status_false(objectIndex, 8); - sp2C = TRUE; + sp2C = true; } else { object_add_velocity_offset_xz(objectIndex); } @@ -283,7 +283,7 @@ s32 func_80087B84(s32 objectIndex, f32 arg1, f32 arg2) { s32 sp24; sp24 = 0; - if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) { + if (is_obj_index_flag_status_inactive(objectIndex, 8) != false) { set_object_flag_status_true(objectIndex, 8); gObjectList[objectIndex].velocity[1] = -arg1; } @@ -300,7 +300,7 @@ s32 func_80087C48(s32 objectIndex, f32 arg1, f32 arg2, s32 arg3) { s32 sp24; sp24 = 0; - if (is_obj_index_flag_status_inactive(objectIndex, 8) != FALSE) { + if (is_obj_index_flag_status_inactive(objectIndex, 8) != false) { set_object_flag_status_true(objectIndex, 8); gObjectList[objectIndex].velocity[1] = arg1; gObjectList[objectIndex].unk_0B0 = (s16) arg3; @@ -340,7 +340,7 @@ bool func_80087E08(s32 objectIndex, f32 arg1, f32 arg2, f32 arg3, s16 arg4, s32 bool sp2C; UNUSED s32 pad; - sp2C = FALSE; + sp2C = false; if (is_obj_index_flag_status_inactive(objectIndex, 8) != 0) { set_object_flag_status_true(objectIndex, 8); gObjectList[objectIndex].offset[2] = 0.0f; @@ -356,7 +356,7 @@ bool func_80087E08(s32 objectIndex, f32 arg1, f32 arg2, f32 arg3, s16 arg4, s32 if (gObjectList[objectIndex].unk_0B0 < 0) { set_object_flag_status_false(objectIndex, 8); func_80086FD4(objectIndex); - sp2C = TRUE; + sp2C = true; } else { gObjectList[objectIndex].velocity[1] -= arg2; object_add_velocity_offset_xyz(objectIndex); @@ -425,33 +425,33 @@ void func_80088150(s32 arg0) { void func_80088178(s32 objectIndex, s32 arg1) { s16 temp_a1; - Objects *temp_v1; + Object *object; - temp_v1 = &gObjectList[objectIndex]; + object = &gObjectList[objectIndex]; temp_a1 = atan2s(D_80165760[1] - D_80165760[0], D_80165780[1] - D_80165780[0]); - temp_a1 -= temp_v1->direction_angle[1]; + temp_a1 -= object->direction_angle[1]; if (temp_a1 > 0) { - temp_v1->direction_angle[1] += (arg1 << 8); + object->direction_angle[1] += (arg1 << 8); } else if (temp_a1 < 0) { - temp_v1->direction_angle[1] -= (arg1 << 8); + object->direction_angle[1] -= (arg1 << 8); } } // if the code is too ugly for you, then go fix it without tampering with the register allocations void func_80088228(s32 objectIndex) { - Objects *temp_v0; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->unk_084[9] = 0; - temp_v0->controlPoints = temp_v0->spline->controlPoints; + Object *object; + object = &gObjectList[objectIndex]; + object->unk_084[9] = 0; + object->controlPoints = object->spline->controlPoints; /* This is INCREDIBLY stupid. This should really be temp_v0->unk_084[8] = temp_v0->spline->numControlPoints; but for some unholy reason that doesn't match */ - temp_v0->unk_084[8] = *((s16*)temp_v0->controlPoints - 1); - temp_v0->offset[0] = temp_v0->controlPoints[0].pos[0]; - temp_v0->offset[1] = temp_v0->controlPoints[0].pos[1]; - temp_v0->offset[2] = temp_v0->controlPoints[0].pos[2]; + object->unk_084[8] = *((s16*)object->controlPoints - 1); + object->offset[0] = object->controlPoints[0].pos[0]; + object->offset[1] = object->controlPoints[0].pos[1]; + object->offset[2] = object->controlPoints[0].pos[2]; func_80086FD4(objectIndex); } @@ -473,16 +473,16 @@ s32 func_800882B0(s32 objectIndex, s32 arg1) { } void func_80088364(s32 objectIndex) { - Objects *temp_v0; + Object *object; func_800880E4(objectIndex); func_80088178(objectIndex, 1); func_800876A0(objectIndex); if (func_800882B0(objectIndex, 0x0000000A) != 0) { - temp_v0 = &gObjectList[objectIndex]; - temp_v0->unk_084[9] = (u16) temp_v0->unk_084[9] + 1; - if (((u16)temp_v0->unk_084[9] + 3) == (u16) temp_v0->unk_084[8]) { - temp_v0->unk_0AE += 1; + object = &gObjectList[objectIndex]; + object->unk_084[9] = (u16) object->unk_084[9] + 1; + if (((u16)object->unk_084[9] + 3) == (u16) object->unk_084[8]) { + object->unk_0AE += 1; } else { func_80088150(objectIndex); } @@ -511,12 +511,12 @@ s32 func_8008847C(s32 objectIndex) { sp2C = 0; set_object_flag_status_false(objectIndex, 0x00800000); if (is_obj_flag_status_active(objectIndex, 0x00000400) != 0) { - func_802ADDC8(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]); + check_bounding_collision(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]); if (D_8018C3B0.unk34 == 1) { sp2C = 1; set_object_flag_status_true(objectIndex, 0x00800000); } - gObjectList[objectIndex].unk_044 = func_802ABE30(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.unk3A); + gObjectList[objectIndex].surfaceHeight = calculate_surface_height(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.meshIndexZX); } return sp2C; } @@ -527,12 +527,12 @@ s32 func_80088538(s32 objectIndex) { sp2C = 0; set_object_flag_status_false(objectIndex, 0x00800000); if (is_obj_flag_status_active(objectIndex, 0x00000400) != 0) { - func_802ADDC8(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]); + check_bounding_collision(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]); if (D_8018C3B0.unk34 == 1) { sp2C = 1; set_object_flag_status_true(objectIndex, 0x00800000); } - gObjectList[objectIndex].unk_044 = func_802ABE30(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.unk3A); + gObjectList[objectIndex].surfaceHeight = calculate_surface_height(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.meshIndexZX); gObjectList[objectIndex].unk_0B8[0] = atan2s(D_8018C3B0.orientationVector[2], D_8018C3B0.orientationVector[1]) + 0x4000; gObjectList[objectIndex].unk_0B8[2] = atan2s(D_8018C3B0.orientationVector[0], D_8018C3B0.orientationVector[1]); } @@ -545,12 +545,12 @@ s32 func_8008861C(s32 objectIndex) { sp2C = 0; set_object_flag_status_false(objectIndex, 0x00800000); if (is_obj_flag_status_active(objectIndex, 0x00000400) != 0) { - func_802ADDC8(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]); + check_bounding_collision(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]); if (D_8018C3B0.unk34 == 1) { sp2C = 1; set_object_flag_status_true(objectIndex, 0x00800000); } - gObjectList[objectIndex].unk_044 = func_802ABE30(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.unk3A); + gObjectList[objectIndex].surfaceHeight = calculate_surface_height(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.meshIndexZX); gObjectList[objectIndex].unk_01C[0] = D_8018C3B0.orientationVector[0]; gObjectList[objectIndex].unk_01C[1] = D_8018C3B0.orientationVector[1]; gObjectList[objectIndex].unk_01C[2] = D_8018C3B0.orientationVector[2]; @@ -559,10 +559,10 @@ s32 func_8008861C(s32 objectIndex) { } void func_800886F4(s32 objectIndex) { - func_802ADDC8(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]); + check_bounding_collision(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]); if (D_8018C3B0.unk34 == 1) { set_object_flag_status_true(objectIndex, 0x00800000); - gObjectList[objectIndex].unk_044 = func_802ABE30(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.unk3A); + gObjectList[objectIndex].surfaceHeight = calculate_surface_height(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.meshIndexZX); gObjectList[objectIndex].unk_0B8[0] = atan2s(D_8018C3B0.orientationVector[2], D_8018C3B0.orientationVector[1]) + 0x4000; gObjectList[objectIndex].unk_0B8[2] = atan2s(D_8018C3B0.orientationVector[0], D_8018C3B0.orientationVector[1]); return; @@ -571,10 +571,10 @@ void func_800886F4(s32 objectIndex) { } void func_800887C0(s32 objectIndex) { - func_802ADDC8(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]); + check_bounding_collision(&D_8018C3B0, 10.0f, gObjectList[objectIndex].pos[0], 20.0f, gObjectList[objectIndex].pos[2]); if (D_8018C3B0.unk34 == 1) { set_object_flag_status_true(objectIndex, 0x00800000); - gObjectList[objectIndex].unk_044 = func_802ABE30(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.unk3A); + gObjectList[objectIndex].surfaceHeight = calculate_surface_height(gObjectList[objectIndex].pos[0], 0.0f, gObjectList[objectIndex].pos[2], D_8018C3B0.meshIndexZX); gObjectList[objectIndex].velocity[0] = D_8018C3B0.orientationVector[0]; gObjectList[objectIndex].velocity[1] = D_8018C3B0.orientationVector[1]; gObjectList[objectIndex].velocity[2] = D_8018C3B0.orientationVector[2]; @@ -585,10 +585,10 @@ void func_800887C0(s32 objectIndex) { /** * @brief Returns the distance between the object and the player. - * - * @param objectIndex - * @param player - * @return UNUSED + * + * @param objectIndex + * @param player + * @return UNUSED */ UNUSED s32 get_horizontal_distance_to_player(s32 objectIndex, Player *player) { s32 x; @@ -601,10 +601,10 @@ UNUSED s32 get_horizontal_distance_to_player(s32 objectIndex, Player *player) { /** * @brief Returns the distance between the object and the player. - * - * @param objectIndex - * @param player - * @return UNUSED + * + * @param objectIndex + * @param player + * @return UNUSED */ UNUSED s32 get_distance_to_player(s32 objectIndex, Player *player) { s32 x; @@ -619,10 +619,10 @@ UNUSED s32 get_distance_to_player(s32 objectIndex, Player *player) { /** * @brief Returns the distance between the object and the camera. - * - * @param objectIndex - * @param camera - * @return UNUSED + * + * @param objectIndex + * @param camera + * @return UNUSED */ u32 get_horizontal_distance_to_camera(s32 objectIndex, Camera *camera) { s32 x; @@ -635,10 +635,10 @@ u32 get_horizontal_distance_to_camera(s32 objectIndex, Camera *camera) { /** * @brief Returns the distance between the object and the camera. - * - * @param objectIndex - * @param camera - * @return UNUSED + * + * @param objectIndex + * @param camera + * @return UNUSED */ UNUSED s32 get_distance_to_camera(s32 objectIndex, Camera *camera) { s32 x; @@ -653,36 +653,36 @@ UNUSED s32 get_distance_to_camera(s32 objectIndex, Camera *camera) { /** * @brief Returns if the object is closer than the distance to the player. - * - * @param objectIndex - * @param player + * + * @param objectIndex + * @param player * @param distance - * @return true - * @return false + * @return true + * @return false */ bool is_within_horizontal_distance_of_player(s32 objectIndex, Player *player, f32 distance) { f32 x; f32 y; bool var_v1; - var_v1 = FALSE; + var_v1 = false; x = gObjectList[objectIndex].pos[0] - player->pos[0]; y = gObjectList[objectIndex].pos[2] - player->pos[2]; if (((x * x) + (y * y)) <= (distance * distance)) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } /** * @brief Returns if the object is between the distance_min and distance_max to the player. - * - * @param objectIndex - * @param player - * @param distance_min - * @param distance_max - * @return true - * @return false + * + * @param objectIndex + * @param player + * @param distance_min + * @param distance_max + * @return true + * @return false */ bool is_in_bounds_to_player(s32 objectIndex, Player *player, f32 distance_min, f32 distance_max) { f32 x; @@ -690,24 +690,24 @@ bool is_in_bounds_to_player(s32 objectIndex, Player *player, f32 distance_min, f f32 z; bool var_v1; - var_v1 = FALSE; + var_v1 = false; x = gObjectList[objectIndex].pos[0] - player->pos[0]; z = gObjectList[objectIndex].pos[2] - player->pos[2]; distance = (x * x) + (z * z); if (((distance_min * distance_min) <= distance) && (distance <= (distance_max * distance_max))) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } /** * @brief Returns if the object is closer than the distance to the player. - * - * @param objectIndex - * @param player - * @param distance - * @return true - * @return false + * + * @param objectIndex + * @param player + * @param distance + * @return true + * @return false */ bool is_within_distance_to_player(s32 objectIndex, Player *player, f32 distance) { f32 x; @@ -715,47 +715,47 @@ bool is_within_distance_to_player(s32 objectIndex, Player *player, f32 distance) f32 y; bool var_v1; - var_v1 = FALSE; + var_v1 = false; x = gObjectList[objectIndex].pos[0] - player->pos[0]; y = gObjectList[objectIndex].pos[1] - player->pos[1]; z = gObjectList[objectIndex].pos[2] - player->pos[2]; if (((x * x) + (y * y) + (z * z)) <= (distance * distance)) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } /** * @brief Returns if the object is between the distance_min and distance_max to the camera. - * - * @param objectIndex - * @param camera - * @param distance - * @return true - * @return false + * + * @param objectIndex + * @param camera + * @param distance + * @return true + * @return false */ bool is_within_horizontal_distance_to_camera(s32 objectIndex, Camera *camera, f32 distance) { f32 x; f32 y; bool var_v1; - var_v1 = FALSE; + var_v1 = false; x = gObjectList[objectIndex].pos[0] - camera->pos[0]; y = gObjectList[objectIndex].pos[2] - camera->pos[2]; if (((x * x) + (y * y)) <= (distance * distance)) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } /** * @brief Returns if the object is between the distance_min and distance_max to the camera. - * - * @param objectIndex - * @param camera - * @param distance_min - * @param distance_max - * @return UNUSED + * + * @param objectIndex + * @param camera + * @param distance_min + * @param distance_max + * @return UNUSED */ UNUSED bool is_within_bounds_to_camera(s32 objectIndex, Camera *camera, f32 distance_min, f32 distance_max) { f32 x; @@ -763,23 +763,23 @@ UNUSED bool is_within_bounds_to_camera(s32 objectIndex, Camera *camera, f32 dist f32 z; bool var_v1; - var_v1 = FALSE; + var_v1 = false; x = gObjectList[objectIndex].pos[0] - camera->pos[0]; z = gObjectList[objectIndex].pos[2] - camera->pos[2]; distance = (x * x) + (z * z); if (((distance_min * distance_min) <= distance) && (distance <= (distance_max * distance_max))) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } /** * @brief Returns if the object is closer than the distance to the camera. - * - * @param objectIndex - * @param camera - * @param distance - * @return UNUSED + * + * @param objectIndex + * @param camera + * @param distance + * @return UNUSED */ UNUSED bool is_within_distance_to_camera(s32 objectIndex, Camera *camera, f32 distance) { f32 x; @@ -787,23 +787,23 @@ UNUSED bool is_within_distance_to_camera(s32 objectIndex, Camera *camera, f32 di f32 y; bool var_v1; - var_v1 = FALSE; + var_v1 = false; x = gObjectList[objectIndex].pos[0] - camera->pos[0]; y = gObjectList[objectIndex].pos[1] - camera->pos[1]; z = gObjectList[objectIndex].pos[2] - camera->pos[2]; if (((x * x) + (y * y) + (z * z)) <= (distance * distance)) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } /** * @brief Returns if the object collided with the player. - * - * @param objectIndex - * @param player - * @return true - * @return false + * + * @param objectIndex + * @param player + * @return true + * @return false */ bool has_collided_horizontally_with_player(s32 objectIndex, Player *player) { f32 x; @@ -811,23 +811,23 @@ bool has_collided_horizontally_with_player(s32 objectIndex, Player *player) { f32 z; bool var_v1; - var_v1 = FALSE; + var_v1 = false; x = gObjectList[objectIndex].pos[0] - player->pos[0]; z = gObjectList[objectIndex].pos[2] - player->pos[2]; distance = gObjectList[objectIndex].boundingBoxSize + player->boundingBoxSize; if (((x * x) + (z * z)) <= (distance * distance)) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } /** * @brief Returns if the object collided with the player. - * - * @param objectIndex - * @param player - * @return true - * @return false + * + * @param objectIndex + * @param player + * @return true + * @return false */ bool has_collided_with_player(s32 objectIndex, Player *player) { f32 x; @@ -836,45 +836,45 @@ bool has_collided_with_player(s32 objectIndex, Player *player) { f32 y; bool var_v1; - var_v1 = FALSE; + var_v1 = false; x = gObjectList[objectIndex].pos[0] - player->pos[0]; y = gObjectList[objectIndex].pos[1] - player->pos[1]; z = gObjectList[objectIndex].pos[2] - player->pos[2]; distance = gObjectList[objectIndex].boundingBoxSize + player->boundingBoxSize; if (((x * x) + (y * y) + (z * z)) <= (distance * distance)) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } /** * @brief Returns if the object collided with the player. - * - * @param objectIndex - * @param player - * @param distance - * @return UNUSED + * + * @param objectIndex + * @param player + * @param distance + * @return UNUSED */ UNUSED bool has_collided_with_player_1d(s32 objectIndex, Player *player, f32 distance) { f32 x; bool var_v1; - var_v1 = FALSE; + var_v1 = false; x = gObjectList[objectIndex].pos[1] - player->pos[1]; if ((x * x) <= (distance * distance)) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } /** * @brief Returns if the object collided with the player and is closer than the distance in the y axis. - * - * @param objectIndex - * @param player - * @param distance_y - * @return true - * @return false + * + * @param objectIndex + * @param player + * @param distance_y + * @return true + * @return false */ bool has_collided_with_player_and_within_height(s32 objectIndex, Player *player, f32 distance_y) { f32 x; @@ -883,7 +883,7 @@ bool has_collided_with_player_and_within_height(s32 objectIndex, Player *player, f32 y; bool var_v1; - var_v1 = FALSE; + var_v1 = false; x = gObjectList[objectIndex].pos[0] - player->pos[0]; y = gObjectList[objectIndex].pos[1] - player->pos[1]; z = gObjectList[objectIndex].pos[2] - player->pos[2]; @@ -893,7 +893,7 @@ bool has_collided_with_player_and_within_height(s32 objectIndex, Player *player, y = -y; } if ((((x * x) + (z * z)) <= (distance * distance)) && (y <= distance_y)) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } @@ -914,13 +914,13 @@ UNUSED bool func_80088F94(s32 objectIndex, Player *player, f32 arg2) { bool var_v1; distance = gObjectList[objectIndex].pos[1] - player->unk_074; - var_v1 = FALSE; + var_v1 = false; // abs(distance) if (distance < 0.0f) { distance = -distance; } if (distance <= arg2) { - var_v1 = TRUE; + var_v1 = true; } return var_v1; } @@ -1005,26 +1005,26 @@ f32 func_8008933C(Player *player, s32 objectIndex, f32 arg2, f32 arg3) { f32 var_f2; f32 something; s32 playerId; - Objects *temp_v0; + Object *object; struct_D_8018CE10 *temp_v1; playerId = player - gPlayerOne; temp_v1 = &D_8018CE10[playerId]; var_f2 = 0.0f; if (temp_v1->unk_18[6] == 0) { - temp_v0 = &gObjectList[objectIndex]; + object = &gObjectList[objectIndex]; player->unk_046 |= 2; player->effects |= 0x8000; temp_v1->unk_18[6] = 4; - something = (player->pos[0] - temp_v0->pos[0]) * temp_v0->velocity[0]; + something = (player->pos[0] - object->pos[0]) * object->velocity[0]; if (something >= 0.0f) { - temp_v1->unk_04[0] = (-player->velocity[0] * arg2) + (temp_v0->velocity[0] * arg3); + temp_v1->unk_04[0] = (-player->velocity[0] * arg2) + (object->velocity[0] * arg3); } else { temp_v1->unk_04[0] = -player->velocity[0] * arg2; } - something = (player->pos[2] - temp_v0->pos[2]) * temp_v0->velocity[2]; + something = (player->pos[2] - object->pos[2]) * object->velocity[2]; if (something >= 0.0f) { - temp_v1->unk_04[2] = (-player->velocity[2] * arg2) + (temp_v0->velocity[2] * arg3); + temp_v1->unk_04[2] = (-player->velocity[2] * arg2) + (object->velocity[2] * arg3); } else { temp_v1->unk_04[2] = -player->velocity[2] * arg2; } @@ -1238,7 +1238,7 @@ s32 func_8008A060(s32 objectIndex, Camera *camera, u16 arg2) { var_v1 = 0; temp_t3 = (((u16)camera->rot[1] - gObjectList[objectIndex].direction_angle[1]) + (arg2 >> 1)); - + //! @warning Always true if ((temp_t3 >= 0) && (arg2 >= temp_t3)) { var_v1 = 1; @@ -1266,10 +1266,10 @@ bool is_object_visible_on_camera(s32 objectIndex, Camera *camera, u16 angle) { u16 temp_t2; s32 var_t0; - var_t0 = FALSE; + var_t0 = false; temp_t2 = (get_angle_between_xy(camera->pos[0], gObjectList[objectIndex].pos[0], camera->pos[2], gObjectList[objectIndex].pos[2]) + ((s32) angle / 2)) - camera->rot[1]; if ((temp_t2 >= 0) && (angle >= temp_t2)) { - var_t0 = TRUE; + var_t0 = true; } return var_t0; } @@ -1415,11 +1415,11 @@ UNUSED void func_8008A850(s32 arg0) { } UNUSED s32 func_8008A870(Player *player) { - return get_course_section(player->unk_110.unk3A); + return get_section_id(player->collision.meshIndexZX); } s32 func_8008A890(Camera *camera) { - return get_course_section(camera->unk_54.unk3A); + return get_section_id(camera->collision.meshIndexZX); } s32 func_8008A8B0(s16 arg0, s16 arg1) { @@ -1447,48 +1447,48 @@ void func_8008A920(s32 objectIndex) { void func_8008A9B8(s32 objectIndex) { UNUSED s32 temp_t9; - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->controlPoints++; - temp_v0->unk_09A = (s16) (10000 / (s16) (temp_v0->controlPoints[0].velocity)); - temp_v0->timer = 0; + object = &gObjectList[objectIndex]; + object->controlPoints++; + object->unk_09A = (s16) (10000 / (s16) (object->controlPoints[0].velocity)); + object->timer = 0; func_8008A920(objectIndex); } void func_8008AA3C(s32 objectIndex) { - Objects *temp_v0; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->controlPoints = temp_v0->spline->controlPoints; - temp_v0->unk_084[9] = 0; - temp_v0->timer = 0; + Object *object; + object = &gObjectList[objectIndex]; + object->controlPoints = object->spline->controlPoints; + object->unk_084[9] = 0; + object->timer = 0; /* This is INCREDIBLY stupid. This should really be temp_v0->unk_084[8] = temp_v0->spline->numControlPoints; but for some unholy reason that doesn't match */ - temp_v0->unk_084[8] = *((s16*)temp_v0->controlPoints - 1); - temp_v0->offset[0] = temp_v0->controlPoints[0].pos[0]; - temp_v0->offset[1] = temp_v0->controlPoints[0].pos[1]; - temp_v0->offset[2] = temp_v0->controlPoints[0].pos[2]; - temp_v0->unk_09A = (s16) (10000 / temp_v0->controlPoints[0].velocity); + object->unk_084[8] = *((s16*)object->controlPoints - 1); + object->offset[0] = object->controlPoints[0].pos[0]; + object->offset[1] = object->controlPoints[0].pos[1]; + object->offset[2] = object->controlPoints[0].pos[2]; + object->unk_09A = (s16) (10000 / object->controlPoints[0].velocity); func_8008A920(objectIndex); func_80086FD4(objectIndex); } void func_8008AB10(s32 objectIndex) { UNUSED s16 temp_t3; - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->offset[0] += temp_v0->velocity[0]; - temp_v0->offset[1] += temp_v0->velocity[1]; - temp_v0->offset[2] += temp_v0->velocity[2]; - temp_v0->timer += (u16)temp_v0->unk_09A; - if (temp_v0->timer >= 0x2710) { - temp_v0->unk_084[9] = (u16)temp_v0->unk_084[9] + 1; - if (((u16)temp_v0->unk_084[9] + 1) == (u16) temp_v0->unk_084[8]) { - temp_v0->unk_0AE += 1; + object = &gObjectList[objectIndex]; + object->offset[0] += object->velocity[0]; + object->offset[1] += object->velocity[1]; + object->offset[2] += object->velocity[2]; + object->timer += (u16)object->unk_09A; + if (object->timer >= 0x2710) { + object->unk_084[9] = (u16)object->unk_084[9] + 1; + if (((u16)object->unk_084[9] + 1) == (u16) object->unk_084[8]) { + object->unk_0AE += 1; } else { func_8008A9B8(objectIndex); } @@ -1577,12 +1577,12 @@ UNUSED void func_8008AE94(void) { // D_80183DC8 is where the spline's derivative polynomial calculations are stored void func_8008AE9C(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->velocity[0] = (D_80183DC8[0] * D_80165760[0]) + (D_80183DC8[1] * D_80165760[1]) + (D_80183DC8[2] * D_80165760[2]) + (D_80183DC8[3] * D_80165760[3]); - temp_v0->velocity[1] = (D_80183DC8[0] * D_80165770[0]) + (D_80183DC8[1] * D_80165770[1]) + (D_80183DC8[2] * D_80165770[2]) + (D_80183DC8[3] * D_80165770[3]); - temp_v0->velocity[2] = (D_80183DC8[0] * D_80165780[0]) + (D_80183DC8[1] * D_80165780[1]) + (D_80183DC8[2] * D_80165780[2]) + (D_80183DC8[3] * D_80165780[3]); + object = &gObjectList[objectIndex]; + object->velocity[0] = (D_80183DC8[0] * D_80165760[0]) + (D_80183DC8[1] * D_80165760[1]) + (D_80183DC8[2] * D_80165760[2]) + (D_80183DC8[3] * D_80165760[3]); + object->velocity[1] = (D_80183DC8[0] * D_80165770[0]) + (D_80183DC8[1] * D_80165770[1]) + (D_80183DC8[2] * D_80165770[2]) + (D_80183DC8[3] * D_80165770[3]); + object->velocity[2] = (D_80183DC8[0] * D_80165780[0]) + (D_80183DC8[1] * D_80165780[1]) + (D_80183DC8[2] * D_80165780[2]) + (D_80183DC8[3] * D_80165780[3]); } void func_8008AFE0(s32 objectIndex, f32 arg1) { @@ -1608,12 +1608,12 @@ UNUSED void func_8008B030(void) { // D_80183DA8 is where the spline's polynomial calculations are stored void func_8008B038(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->offset[0] = (D_80183DA8[0] * D_80165760[0]) + (D_80183DA8[1] * D_80165760[1]) + (D_80183DA8[2] * D_80165760[2]) + (D_80183DA8[3] * D_80165760[3]); - temp_v0->offset[1] = (D_80183DA8[0] * D_80165770[0]) + (D_80183DA8[1] * D_80165770[1]) + (D_80183DA8[2] * D_80165770[2]) + (D_80183DA8[3] * D_80165770[3]); - temp_v0->offset[2] = (D_80183DA8[0] * D_80165780[0]) + (D_80183DA8[1] * D_80165780[1]) + (D_80183DA8[2] * D_80165780[2]) + (D_80183DA8[3] * D_80165780[3]); + object = &gObjectList[objectIndex]; + object->offset[0] = (D_80183DA8[0] * D_80165760[0]) + (D_80183DA8[1] * D_80165760[1]) + (D_80183DA8[2] * D_80165760[2]) + (D_80183DA8[3] * D_80165760[3]); + object->offset[1] = (D_80183DA8[0] * D_80165770[0]) + (D_80183DA8[1] * D_80165770[1]) + (D_80183DA8[2] * D_80165770[2]) + (D_80183DA8[3] * D_80165770[3]); + object->offset[2] = (D_80183DA8[0] * D_80165780[0]) + (D_80183DA8[1] * D_80165780[1]) + (D_80183DA8[2] * D_80165780[2]) + (D_80183DA8[3] * D_80165780[3]); } void func_8008B17C(s32 objectIndex, f32 arg1) { @@ -1683,20 +1683,20 @@ void func_8008B284(s32 objectIndex) { } void func_8008B3E4(s32 objectIndex) { - Objects *temp_v0; - SplineData *spline; + Object *object; + UNUSED SplineData *spline; if (is_obj_index_flag_status_inactive(objectIndex, 8) != 0) { - temp_v0 = &gObjectList[objectIndex]; - temp_v0->unk_084[9] = 0; - temp_v0->timer = 0; - temp_v0->controlPoints = temp_v0->spline->controlPoints; + object = &gObjectList[objectIndex]; + object->unk_084[9] = 0; + object->timer = 0; + object->controlPoints = object->spline->controlPoints; /* This is INCREDIBLY stupid. This should really be temp_v0->unk_084[8] = temp_v0->spline->numControlPoints; but for some unholy reason that doesn't match */ - temp_v0->unk_084[8] = *(((s16*)temp_v0->controlPoints) - 1); + object->unk_084[8] = *(((s16*)object->controlPoints) - 1); set_object_flag_status_true(objectIndex, 8); } @@ -1741,15 +1741,15 @@ void func_8008B478(s32 objectIndex, s32 arg1) { void func_8008B620(s32 objectIndex) { UNUSED s16 temp_t0; - Objects *temp_v0; + Object *object; func_8008B478(objectIndex, 0); - temp_v0 = &gObjectList[objectIndex]; - if (temp_v0->timer >= 0x2710) { + object = &gObjectList[objectIndex]; + if (object->timer >= 0x2710) { // Have to do it this way due to the u16 cast - temp_v0->unk_084[9] = (u16) temp_v0->unk_084[9] + 1; - if (((u16) temp_v0->unk_084[9] + 3) == (u16) temp_v0->unk_084[8]) { - temp_v0->unk_0AE += 1; + object->unk_084[9] = (u16) object->unk_084[9] + 1; + if (((u16) object->unk_084[9] + 3) == (u16) object->unk_084[8]) { + object->unk_0AE += 1; } else { func_8008B44C(objectIndex); } @@ -1757,14 +1757,14 @@ void func_8008B620(s32 objectIndex) { } void func_8008B6A4(s32 objectIndex) { - Objects *temp_v0; + Object *object; func_8008B478(objectIndex, 1); - temp_v0 = &gObjectList[objectIndex]; - if (temp_v0->timer >= 0x2710) { + object = &gObjectList[objectIndex]; + if (object->timer >= 0x2710) { // Have to do it this way due to the u16 cast - temp_v0->unk_084[9] = (u16) temp_v0->unk_084[9] + 1; - if ((u16)temp_v0->unk_084[9] == (u16)temp_v0->unk_084[8]) { + object->unk_084[9] = (u16) object->unk_084[9] + 1; + if ((u16)object->unk_084[9] == (u16)object->unk_084[8]) { set_object_flag_status_false(objectIndex, 8); } else { func_8008B44C(objectIndex); @@ -1834,19 +1834,19 @@ void set_obj_velocity(s32 objectIndex, f32 arg1, f32 arg2, f32 arg3) { } void func_8008B928(s32 objectIndex, s16 arg1, s16 arg2, s16 arg3, SplineData *spline) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - temp_s0->origin_pos[0] = (f32) arg1; - temp_s0->origin_pos[1] = (f32) arg2; - temp_s0->spline = spline; - temp_s0->origin_pos[2] = (f32) arg3; - temp_s0->velocity[0] = (f32) (spline->controlPoints[1].pos[0] - spline->controlPoints[0].pos[0]); - temp_s0->velocity[1] = (f32) (spline->controlPoints[1].pos[1] - spline->controlPoints[0].pos[1]); - temp_s0->velocity[2] = (f32) (spline->controlPoints[1].pos[2] - spline->controlPoints[0].pos[2]); - temp_s0->direction_angle[1] = get_y_direction_angle(objectIndex); - temp_s0->velocity[2] = func_800416D8(temp_s0->velocity[2], temp_s0->velocity[0], -temp_s0->direction_angle[1]); - temp_s0->direction_angle[0] = get_x_direction_angle(objectIndex); + object = &gObjectList[objectIndex]; + object->origin_pos[0] = (f32) arg1; + object->origin_pos[1] = (f32) arg2; + object->spline = spline; + object->origin_pos[2] = (f32) arg3; + object->velocity[0] = (f32) (spline->controlPoints[1].pos[0] - spline->controlPoints[0].pos[0]); + object->velocity[1] = (f32) (spline->controlPoints[1].pos[1] - spline->controlPoints[0].pos[1]); + object->velocity[2] = (f32) (spline->controlPoints[1].pos[2] - spline->controlPoints[0].pos[2]); + object->direction_angle[1] = get_y_direction_angle(objectIndex); + object->velocity[2] = func_800416D8(object->velocity[2], object->velocity[0], -object->direction_angle[1]); + object->direction_angle[0] = get_x_direction_angle(objectIndex); } UNUSED void object_origin_pos_randomize_around_x(s32 objectIndex, s16 x, u16 arg2) { @@ -1924,15 +1924,15 @@ void object_calculate_new_pos_offset(s32 objectIndex) { } void func_8008BF64(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - D_80183E40[0] = temp_v0->pos[0]; - D_80183E40[1] = temp_v0->pos[1]; - D_80183E40[2] = temp_v0->pos[2]; - D_80183E80[0] = temp_v0->direction_angle[0]; - D_80183E80[1] = temp_v0->direction_angle[1]; - D_80183E80[2] = temp_v0->direction_angle[2]; + object = &gObjectList[objectIndex]; + D_80183E40[0] = object->pos[0]; + D_80183E40[1] = object->pos[1]; + D_80183E40[2] = object->pos[2]; + D_80183E80[0] = object->direction_angle[0]; + D_80183E80[1] = object->direction_angle[1]; + D_80183E80[2] = object->direction_angle[2]; } void func_8008BFC0(s32 objectIndex) { @@ -1941,17 +1941,17 @@ void func_8008BFC0(s32 objectIndex) { } void func_8008BFFC(s32 objectIndex) { - Objects *temp_v1; + Object *object; - temp_v1 = &gObjectList[objectIndex]; - switch (temp_v1->unk_0DE) { + object = &gObjectList[objectIndex]; + switch (object->unk_0DE) { case 1: - if (temp_v1->unk_0AE == 1) { + if (object->unk_0AE == 1) { func_8008B620(objectIndex); } break; case 2: - switch (temp_v1->unk_0AE) { + switch (object->unk_0AE) { case 0: break; case 1: @@ -1960,7 +1960,7 @@ void func_8008BFFC(s32 objectIndex) { } break; case 3: - switch (temp_v1->unk_0AE) { + switch (object->unk_0AE) { case 0: break; case 1: @@ -1969,7 +1969,7 @@ void func_8008BFFC(s32 objectIndex) { } break; case 4: - switch (temp_v1->unk_0AE) { /* switch 1; irregular */ + switch (object->unk_0AE) { /* switch 1; irregular */ case 0: /* switch 1 */ break; case 1: /* switch 1 */ @@ -1981,7 +1981,7 @@ void func_8008BFFC(s32 objectIndex) { } break; case 5: - switch (temp_v1->unk_0AE) { /* switch 2; irregular */ + switch (object->unk_0AE) { /* switch 2; irregular */ case 0: /* switch 2 */ break; case 1: /* switch 2 */ @@ -1993,7 +1993,7 @@ void func_8008BFFC(s32 objectIndex) { } break; case 6: - switch (temp_v1->unk_0AE) { + switch (object->unk_0AE) { case 0: break; case 1: @@ -2002,7 +2002,7 @@ void func_8008BFFC(s32 objectIndex) { } break; case 7: - switch (temp_v1->unk_0AE) { /* switch 3; irregular */ + switch (object->unk_0AE) { /* switch 3; irregular */ case 0: /* switch 3 */ break; case 1: /* switch 3 */ diff --git a/src/code_80086E70.h b/src/code_80086E70.h index a68e01797..25d1a2e66 100644 --- a/src/code_80086E70.h +++ b/src/code_80086E70.h @@ -1,7 +1,7 @@ #ifndef CODE_80086E70_H #define CODE_80086E70_H -#include "common_structs.h" +#include #include "camera.h" #include "objects.h" @@ -10,7 +10,7 @@ void func_80086EAC(s32, s32, s16); void func_80086EF0(s32); void func_80086F10(s32, s32, SplineData*); void func_80086F60(s32); -s32 func_80086FA4(s32); +bool func_80086FA4(s32); void func_80086FD4(s32); void func_8008701C(s32, s32); s32 func_80087060(s32, s32); @@ -40,11 +40,11 @@ void func_80087844(s32); f32 func_8008786C(f32, f32, f32, f32, f32); s32 func_8008789C(s32, s32); s32 func_80087954(s32, s32); -s32 func_80087A0C(s32, s16, s16, s16, s16); +bool func_80087A0C(s32, s16, s16, s16, s16); s32 func_80087B84(s32, f32, f32); s32 func_80087C48(s32, f32, f32, s32); s32 func_80087D24(s32, f32, f32, f32); -s32 func_80087E08(s32, f32, f32, f32, s16, s32); +bool func_80087E08(s32, f32, f32, f32, s16, s32); s32 func_80087F14(s32, f32, f32, f32, s16, s32); void func_80088038(s32, f32, u16); void func_800880DC(void); @@ -68,14 +68,14 @@ bool is_within_horizontal_distance_of_player(s32, Player*, f32); s32 are_between_distance_2d(s32, Player*, f32, f32); bool is_within_distance_to_player(s32, Player*, f32); bool is_within_horizontal_distance_to_camera(s32, Camera*, f32); -s32 is_within_bounds_to_camera(s32, Camera*, f32, f32); +UNUSED bool is_within_bounds_to_camera(s32, Camera*, f32, f32); bool is_within_distance_to_camera(s32, Camera*, f32); bool has_collided_horizontally_with_player(s32, Player*); bool has_collided_with_player(s32, Player*); bool has_collided_with_player_1d(s32, Player*, f32); bool has_collided_with_player_and_within_height(s32, Player*, f32); f32 func_80088F54(s32, Player*); -s32 func_80088F94(s32, Player*, f32); +UNUSED bool func_80088F94(s32, Player*, f32); void func_80088FF0(Player*); void func_8008900C(Player*); void func_80089020(s32, f32*); @@ -93,7 +93,7 @@ s32 func_80089E18(s32); s32 func_80089F24(s32); s32 func_8008A060(s32, Camera*, u16); s32 func_8008A0B4(s32, Player*, Camera*, u16); -s32 is_object_visible_on_camera(s32, Camera*, u16); +bool is_object_visible_on_camera(s32, Camera*, u16); void func_8008A1D0(s32, s32, s32, s32); void func_8008A2CC(s32, s32, u16); s32 func_8008A364(s32, s32, u16, s32); diff --git a/src/code_80091440.c b/src/code_80091440.c index 45201bedf..c8270d445 100644 --- a/src/code_80091440.c +++ b/src/code_80091440.c @@ -31,7 +31,7 @@ UNUSED void func_800914E0(void) { camera->up[0] = 0; camera->up[1] = 1; camera->up[2] = 0; - + if(1) {} // waa? temp = temp2 - temp3; @@ -49,9 +49,10 @@ UNUSED void func_800914E0(void) { camera->pos[1] = (f32) (tempData->pos[1] + 7); camera->pos[2] = (f32) (tempData->pos[2] - 20); camera->lookAt[0] = gPlayerOneCopy->pos[0]; + camera->lookAt[1] = gPlayerOneCopy->pos[1]; camera->lookAt[2] = gPlayerOneCopy->pos[2]; - func_802ADDC8(&camera->unk_54, 20.0f, camera->pos[0], camera->pos[1], camera->pos[2]); + check_bounding_collision(&camera->collision, 20.0f, camera->pos[0], camera->pos[1], camera->pos[2]); sp38 = camera->lookAt[0] - camera->pos[0]; sp34 = camera->lookAt[1] - camera->pos[1]; sp30 = camera->lookAt[2] - camera->pos[2]; diff --git a/src/code_80091440.h b/src/code_80091440.h index ced30ef22..26cb888f0 100644 --- a/src/code_80091440.h +++ b/src/code_80091440.h @@ -1,6 +1,10 @@ -#include "ultra64.h" +#ifndef CODE_80091440_H +#define CODE_80091440_H + +#include void func_80091440(s8); void func_800914A0(void); void func_800914E0(void); +#endif // CODE_80091440_H diff --git a/src/code_80091750.c b/src/code_80091750.c index 2fdbf0c99..9eca584f8 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -1,9 +1,9 @@ #include #include +#include #include #include #include -#include #include #include "code_800029B0.h" #include "code_80091750.h" @@ -32,6 +32,7 @@ #include "ending/code_80281C40.h" #include "spawn_players.h" #include "render_player.h" +#include "decode.h" //! @todo Move gGfxPool out of main.h // Unfortunately that's not a small effort due to weird import structure in this project #include "main.h" @@ -40,7 +41,7 @@ u16 *D_8018D9B0; u8 *D_8018D9B4; u8 *D_8018D9B8; u8 *D_8018D9BC; -struct_8018EE10_entry_cont *D_8018D9C0; +void *D_8018D9C0; /** * List of bytes indexed by character ID * Indicates number of Grand Prix points that character @@ -62,10 +63,8 @@ Gfx *D_8018E75C; s32 gNumD_8018E768Entries; struct_8018E768_entry D_8018E768[D_8018E768_SIZE]; s32 gCycleFlashMenu; -s8 D_8018E7AC[4]; -s8 D_8018E7B0; -u32 D_8018E7B8[4]; -u32 D_8018E7C8; +s8 D_8018E7AC[5]; +u32 D_8018E7B8[5]; u32 D_8018E7D0[4]; s32 D_8018E7E0; struct UnkStruct_8018E7E8 D_8018E7E8[D_8018E7E8_SIZE]; @@ -90,7 +89,7 @@ s32 gControllerPak1NumPagesFree; s32 gControllerPak1FileNote; s32 gControllerPak2FileNote; s32 code_80091750_bss_pad2; -SaveData gSaveData; +ALIGNED8 SaveData gSaveData; u8 D_8018ED90; u8 D_8018ED91; @@ -1152,7 +1151,7 @@ s32 D_800E84A0[] = { }; Vtx *D_800E84C0[] = { - D_02007BB8, D_02007CD8, D_02007DF8, + &D_02007BB8[0], &D_02007BB8[18], &D_02007BB8[36], }; Gfx *D_800E84CC[] = { @@ -1415,8 +1414,8 @@ void func_80091B78(void) { gNextFreeMemoryAddress = gFreeMemoryResetAnchor; // Hypothetically, this should be a ptr... But only hypothetically. D_8018D9B0 = get_next_available_memory_addr(0x000900B0); - D_8018D9B4 = (uintptr_t *) get_next_available_memory_addr(0x0000CE00); - D_8018D9B8 = (uintptr_t *) get_next_available_memory_addr(0x00012C00); + D_8018D9B4 = (u8 *) get_next_available_memory_addr(0x0000CE00); + D_8018D9B8 = (u8 *) get_next_available_memory_addr(0x00012C00); D_8018D9C0 = (struct_8018EE10_entry *) get_next_available_memory_addr(0x00001000); func_800AF9B0(); D_8018EE0C = 0; @@ -1497,7 +1496,7 @@ void func_80091EE4(void) { if ((D_8018EDFB != 0) && (tmp == 0)) { temp_s2 = (gCupSelection * 4) + gCupCourseSelection; func_800B6708(); - + for (temp_s0 = 0; temp_s0 < 2; ++temp_s0) { if ((D_8018EE10[temp_s0].ghostDataSaved != 0) && (temp_s2 == D_8018EE10[temp_s0].courseIndex)) { func_800B64EC(temp_s0); @@ -1512,9 +1511,9 @@ void func_80091FA4(void) { s32 i; //! @todo These sizes need to be sizeof() for shiftability if possible - D_8018D9B4 = (uintptr_t *) get_next_available_memory_addr(0x00002800); - D_8018D9B0 = get_next_available_memory_addr(0x000124F8); - D_8018D9B8 = (uintptr_t *) get_next_available_memory_addr(0x00001000); + D_8018D9B4 = (u8 *) get_next_available_memory_addr(0x00002800); + D_8018D9B0 = (u16 *)get_next_available_memory_addr(0x000124F8); + D_8018D9B8 = (u8 *) get_next_available_memory_addr(0x00001000); D_8018D9BC = get_next_available_memory_addr(4); for (i = 0; i < 5; i++) { @@ -1596,86 +1595,57 @@ void func_80092258(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-02-2023 void func_80092290(s32 arg0, s32 *arg1, s32 *arg2) { - Vtx **var_s0; - Vtx *temp_v0; - Vtx *temp_v1; - Vtx *temp_v1_2; - s32 temp_a0; - s32 temp_a1; - s32 temp_s4; - s32 temp_t0; + s32 temp_v1; + s32 i; + s32 idx; s32 temp_t6; s32 temp_t7; - s32 temp_t8; s32 temp_t8_2; s32 temp_t9; - void *temp_a2; - s32 i; + s32 temp_t0; + s32 a, b, c, d; + Vtx *vtx; - if ((arg0 >= 4) && (arg0 < 6)) { - temp_t8 = *arg2 + 0x10; - *arg2 = temp_t8; - if (temp_t8 >= 0x100) { - *arg2 = 0; - *arg1 = (s32) (*arg1 + 1) % 3; - } - var_s0 = D_800E84C0; - temp_s4 = (((arg0 * 4) + (((s32) gGlobalTimer % 2) * 2)) - 6) * 0x10; + if ((arg0 < 4) || (arg0 >= 6)) { return; } + + idx = (((arg0 * 4) + ((gGlobalTimer % 2) * 2)) - 6); + + *arg2 += 16; + if (*arg2 >= 256) { + *arg2 = 0; + *arg1 = (s32) (*arg1 + 1) % 3; + } + + for (i = 0; i < 3; i++) { + vtx = (Vtx *) segmented_to_virtual_dupe_2(D_800E84C0[i]); + + temp_v1 = (*arg1 * 2) + 2; + + temp_t6 = (vtx+temp_v1)->v.cn[0] * (256 - *arg2); + temp_t9 = (vtx+temp_v1)->v.cn[1] * (256 - *arg2); + temp_t7 = (vtx+temp_v1)->v.cn[2] * (256 - *arg2); + temp_t8_2 = (vtx+temp_v1)->v.cn[3] * (256 - *arg2); + + temp_v1 = (((*arg1 * 2) + 2) % 6) + 2; + a = ((vtx+temp_v1)->v.cn[0] * *arg2); + b = ((vtx+temp_v1)->v.cn[1] * *arg2); + c = ((vtx+temp_v1)->v.cn[2] * *arg2); + d = ((vtx+temp_v1)->v.cn[3] * *arg2); - for (i = 0; i < 12; i++) { - temp_v0 = (Vtx *) segmented_to_virtual_dupe_2(D_800E84C0[i]); - temp_a0 = *arg2; - temp_a2 = temp_v0 + temp_s4; - temp_a1 = 0x100 - temp_a0; - var_s0 += 4; - temp_t0 = (*arg1 * 2) + 2; - temp_v1 = &temp_v0[temp_t0]; - temp_v1_2 = &temp_v0[(temp_t0 % 6) + 2]; - temp_t6 = (s32) ((temp_a1 * temp_v1->v.cn[0]) + (temp_a0 * temp_v1_2->v.cn[0])) / 256; - temp_a2->unkC = (s8) temp_t6; - temp_t9 = (s32) ((temp_a1 * temp_v1->v.cn[1]) + (temp_a0 * temp_v1_2->v.cn[1])) / 256; - temp_a2->unkD = (s8) temp_t9; - temp_t7 = (s32) ((temp_a1 * temp_v1->v.cn[2]) + (temp_a0 * temp_v1_2->v.cn[2])) / 256; - temp_a2->unkE = (s8) temp_t7; - temp_t8_2 = (s32) ((temp_a1 * temp_v1->v.cn[3]) + (temp_a0 * temp_v1_2->v.cn[3])) / 256; - temp_a2->unkF = (s8) temp_t8_2; - temp_a2->unk1C = (s8) temp_t6; - temp_a2->unk1D = (s8) temp_t9; - temp_a2->unk1E = (s8) temp_t7; - temp_a2->unk1F = (s8) temp_t8_2; - } + (vtx+idx)->v.cn[0] = (temp_t6 + a) / 256; + (vtx+idx)->v.cn[1] = (temp_t9 + b) / 256; + (vtx+idx)->v.cn[2] = (temp_t7 + c) / 256; + (vtx+idx)->v.cn[3] = (temp_t8_2 + d) / 256; - //do { - // temp_v0 = segmented_to_virtual_dupe_2(*var_s0); - // temp_a0 = *arg2; - // temp_a2 = temp_v0 + temp_s4; - // temp_a1 = 0x100 - temp_a0; - // var_s0 += 4; - // temp_t0 = (*arg1 * 2) + 2; - // temp_v1 = &temp_v0[temp_t0]; - // temp_v1_2 = &temp_v0[(temp_t0 % 6) + 2]; - // temp_t6 = (s32) ((temp_a1 * temp_v1->v.cn[0]) + (temp_a0 * temp_v1_2->v.cn[0])) / 256; - // temp_a2->unkC = (s8) temp_t6; - // temp_t9 = (s32) ((temp_a1 * temp_v1->v.cn[1]) + (temp_a0 * temp_v1_2->v.cn[1])) / 256; - // temp_a2->unkD = (s8) temp_t9; - // temp_t7 = (s32) ((temp_a1 * temp_v1->v.cn[2]) + (temp_a0 * temp_v1_2->v.cn[2])) / 256; - // temp_a2->unkE = (s8) temp_t7; - // temp_t8_2 = (s32) ((temp_a1 * temp_v1->v.cn[3]) + (temp_a0 * temp_v1_2->v.cn[3])) / 256; - // temp_a2->unkF = (s8) temp_t8_2; - // temp_a2->unk1C = (s8) temp_t6; - // temp_a2->unk1D = (s8) temp_t9; - // temp_a2->unk1E = (s8) temp_t7; - // temp_a2->unk1F = (s8) temp_t8_2; - //} while (var_s0 != D_800E84CC); + (vtx+idx+1)->v.cn[0] = (temp_t6 + a) / 256; + (vtx+idx+1)->v.cn[1] = (temp_t9 + b) / 256; + (vtx+idx+1)->v.cn[2] = (temp_t7 + c) / 256; + (vtx+idx+1)->v.cn[3] = (temp_t8_2 + d) / 256; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80092290.s") -#endif + void func_80092500(void) { @@ -1908,13 +1878,13 @@ s32 char_to_glyph_index(char *character) { return var_v1; } -s32 func_80092DF8(s8 *arg) { +s32 func_80092DF8(char *arg) { return func_80092E1C(arg) + 0x50; } s32 func_80092E1C(char *character) { s32 ret; - s32 test; + UNUSED s32 test; u8 temp_t6; u8 temp; @@ -2334,7 +2304,7 @@ void func_80093C98(s32 arg0) { guOrtho(&gGfxPool->mtxEffect[gMatrixEffectCount], 0.0f, 319.0f, 239.0f, 0.0f, -100.0f, 100.0f, 1.0f); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxEffect[gMatrixEffectCount++]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPDisplayList(gDisplayListHead++, D_02007F18); - gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 320, 240); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); func_800A8250(); if (arg0 == 0) { func_800A54EC(); @@ -2356,7 +2326,7 @@ void func_80093E60(void) { s32 i; D_8018D9B4 = get_next_available_memory_addr(0x00002800); - D_8018D9B0 = get_next_available_memory_addr(0x000124F8); + D_8018D9B0 = (u16 *) get_next_available_memory_addr(0x000124F8); D_8018D9B8 = get_next_available_memory_addr(0x00001000); D_8018D9BC = get_next_available_memory_addr(4U); @@ -2396,7 +2366,7 @@ void func_80093F10(void) { void func_800940EC(s32 arg0) { gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(D_802B8880)); - gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 320, 240); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); guOrtho(&gGfxPool->mtxEffect[gMatrixEffectCount], 0.0f, 319.0f, 239.0f, 0.0f, -100.0f, 100.0f, 1.0f); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxEffect[gMatrixEffectCount++]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPDisplayList(gDisplayListHead++, D_02007F18); @@ -2491,12 +2461,12 @@ void func_80094A64(struct GfxPool *pool) { gMatrixHudCount = 0; gMatrixEffectCount = 0; gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&D_802B8880)); - gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 320, 240); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); guOrtho(&pool->mtxScreen, 0.0f, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1, 0.0f, -100.0f, 100.0f, 1.0f); gSPMatrix(gDisplayListHead++, &pool->mtxScreen, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPDisplayList(gDisplayListHead++, D_02007650); func_80094C60(); - func_80092290(4, &D_8018E850, &D_8018E858); + func_80092290(4, D_8018E850, D_8018E858); func_80092290(5, &D_8018E850[1], &D_8018E858[1]); func_80099A70(); func_8009C918(); @@ -2684,7 +2654,7 @@ void func_80094C60(void) { void func_80095574(void) { s32 var_v0; - if ((D_8018EE0C < 3) || (D_8018E7B0 != 0)) { + if ((D_8018EE0C < 3) || (D_8018E7AC[4] != 0)) { func_800A8230(); } if (gDebugMenuSelection >= 2) { @@ -2791,6 +2761,15 @@ Gfx *func_800959F8(Gfx *displayListHead, Vtx *arg1) { } else { index = ((gTextColor * 2) + ((s32) gGlobalTimer % 2)) - 4; } +#ifdef AVOID_UB + if (arg1 == D_02007BB8) { + gSPDisplayList(displayListHead++, D_800E84CC[index]); + } else if (arg1 == &D_02007BB8[18]) { + gSPDisplayList(displayListHead++, D_800E84EC[index]); + } else if (arg1 == &D_02007BB8[36]) { + gSPDisplayList(displayListHead++, D_800E850C[index]); + } +#else if (arg1 == D_02007BB8) { gSPDisplayList(displayListHead++, D_800E84CC[index]); } else if (arg1 == D_02007CD8) { @@ -2798,48 +2777,67 @@ Gfx *func_800959F8(Gfx *displayListHead, Vtx *arg1) { } else if (arg1 == D_02007DF8) { gSPDisplayList(displayListHead++, D_800E850C[index]); } +#endif + + return displayListHead; } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -void func_80095AE0(Mtx *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) { - s32 sp14; - s32 sp10; - s32 spC; - s32 sp8; - Mtx *var_v1; - s32 var_v0; +typedef struct { + u16 i[4][4]; + u16 f[4][4]; +} Mtx_u; - var_v0 = 0; - var_v1 = arg0; - do { - var_v0 += 4; - var_v1->m[0][0] = 0; - var_v1->m[0][1] = 0; - var_v1->m[0][2] = 0; - var_v1->m[0][3] = 0; - var_v1 += 0x10; - } while (var_v0 != 0x10); - sp14 = (s32) (arg3 * 65536.0f); - sp10 = (s32) (arg4 * 65536.0f); - spC = (s32) (arg1 * 65536.0f); - sp8 = (s32) (arg2 * 65536.0f); - arg0->unk0 = (s16) sp14.unk0; - arg0->unk14 = 1; - arg0->unkA = (s16) sp10.unk0; - arg0->unk18 = (s16) spC.unk0; - arg0->unk1E = 1; - arg0->unk1A = (s16) sp8.unk0; - arg0->unk20 = (s16) sp14.unk2; - arg0->unk2A = (s16) sp10.unk2; - arg0->unk38 = (s16) spC.unk2; - arg0->unk3A = (s16) sp8.unk2; -} +typedef union { + Mtx_u u; + Mtx_t m; + long long int force_structure_alignment; +} Mtx2; + +typedef union { + s16 s[2]; + s32 w; +} TheWhyUnion; + +// Why... Why... Why... This function is so bad it's not going in the header. +void func_80095AE0(Mtx2 *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) { + TheWhyUnion sp14; + TheWhyUnion sp10; + TheWhyUnion spC; + TheWhyUnion sp8; + s32 i; + + +#ifdef AVOID_UB + size_t row; + size_t col; + for (row = 0; row < 4; row++) { + for (col = 0; col < 4; col++) { + arg0->m[row][col] = 0; + } + } #else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80095AE0.s") + for(i = 0; i < 16; i++) {\ + arg0->m[0][i] = 0; + } #endif + sp14.w = arg3 * 65536.0f; + sp10.w = arg4 * 65536.0f; + spC.w = arg1 * 65536.0f; + sp8.w = arg2 * 65536.0f; + arg0->u.i[0][0] = sp14.s[0]; + arg0->u.i[1][1] = sp10.s[0]; + arg0->u.i[2][2] = 1; + arg0->u.i[3][0] = spC.s[0]; + arg0->u.i[3][1] = sp8.s[0]; + arg0->u.i[3][3] = 1; + arg0->u.f[0][0] = sp14.s[1]; + arg0->u.f[1][1] = sp10.s[1]; + arg0->u.f[3][0] = spC.s[1]; + arg0->u.f[3][1] = sp8.s[1]; +} + Gfx *func_80095BD0(Gfx *displayListHead, u8 *arg1, f32 arg2, f32 arg3, u32 arg4, u32 arg5, f32 arg6, f32 arg7) { Vtx *var_a1; Mtx *sp28; @@ -2863,959 +2861,427 @@ func_80095BD0_label2: gDPLoadTextureTile_4b(displayListHead++, arg1, G_IM_FMT_I, arg4, 0, 0, 0, arg4, arg5, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); switch (arg4) { default: - var_a1 = D_02007CD8; + var_a1 = &D_02007BB8[18]; break; case 16: - var_a1 = D_02007CD8; + var_a1 = &D_02007BB8[18]; break; case 26: var_a1 = D_02007BB8; break; case 30: - var_a1 = D_02007DF8; + var_a1 = &D_02007BB8[36]; break; } return func_800959F8(displayListHead, var_a1); } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -Gfx *func_80095E10(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, s32 argA, u32 argB, u32 argC) { +Gfx *func_80095E10(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, u8 *argA, u32 argB, u32 argC) { + u32 var_a1_2 = arg4; + u32 var_s3 = arg5; s32 sp7C; - u32 sp70; - s32 sp6C; - s32 sp68; - s32 sp64; - u32 sp34; - Gfx *temp_a0; - Gfx *temp_a0_2; - Gfx *temp_a0_3; - Gfx *temp_a0_4; - Gfx *temp_a0_5; - Gfx *temp_a0_6; - Gfx *temp_a0_7; - Gfx *temp_a0_8; - Gfx *temp_a0_9; - Gfx *var_a0; - s32 temp_a1; - s32 temp_a2; - s32 temp_at; - s32 temp_at_2; - s32 temp_lo; - s32 temp_t1; - s32 temp_t2; - s32 temp_t6; - s32 temp_t7_2; - s32 temp_v0; - s32 temp_v0_2; - s32 var_a1; - s32 var_a1_2; - s32 var_a2; - s32 var_a2_2; - s32 var_a3; - s32 var_ra; - s32 var_s1; - s32 var_s3; - s32 var_s4; - s32 var_s6; - s32 var_s7; - s32 var_t0_2; - s32 var_t2; - s32 var_v0; - s32 var_v0_3; - s32 var_v0_4; - s32 var_v1; - u32 temp_s5; - u32 temp_t3; - u32 temp_t6_2; - u32 temp_t7; - u32 var_fp; u32 var_s2; - u32 var_t0; - u32 var_t1; - u32 var_t4; - u32 var_v0_2; + u32 var_s4; + s32 var_t0 = 1; + s32 temp_lo; + s32 sp68 = 0; + s32 sp64 = 0; + s32 var_v0_2; - var_a0 = displayListHead; - var_t0 = 1; - sp68 = 0; - sp64 = 0; - if (argB >= 2U) { - do { - temp_t7 = var_t0 * 2; - var_t0 = temp_t7; - } while (temp_t7 < argB); + while (var_t0 < argB) { + var_t0 *= 2; } - temp_lo = 0x400 / (s32) var_t0; - var_a2 = temp_lo; - if (argC < (u32) (temp_lo / 2)) { - var_v0 = var_a2 / 2; - do { - temp_a1 = var_v0; - var_v0 = temp_a1 / 2; - } while (argC < (u32) var_v0); - sp6C = temp_a1; - var_a2 = temp_a1; + + temp_lo = 0x400 / var_t0; + + while((temp_lo / 2) > argC) { + temp_lo /= 2; } + var_v0_2 = var_t0; - if ((s32) var_t0 >= 2) { - do { - temp_t7_2 = (s32) var_v0_2 / 2; - temp_at = temp_t7_2 < 2; - var_v0_2 = (u32) temp_t7_2; - sp68 += 1; - } while (temp_at == 0); + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp68 += 1; } - var_v0_3 = var_a2; - if (var_a2 >= 2) { - do { - temp_t6 = var_v0_3 / 2; - temp_at_2 = temp_t6 < 2; - var_v0_3 = temp_t6; - sp64 += 1; - } while (temp_at_2 == 0); + var_v0_2 = temp_lo; + + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp64 += 1; } - var_a1 = arg8; - if (var_a1 < 0) { - arg4 -= var_a1; - var_a1 = 0; - } else if (((arg6 - arg4) + var_a1) >= 0x141) { - arg6 = (arg4 - var_a1) + 0x140; + + if (arg8 < 0) { + arg4 -= arg8; + arg8 = 0; + } else if (((arg6 - arg4) + arg8) > SCREEN_WIDTH) { + arg6 = (arg4 - arg8) + SCREEN_WIDTH; } - var_ra = arg9; - var_v0_4 = arg5; - if (var_ra < 0) { - var_v0_4 = arg5 - var_ra; - var_ra = 0; - } else if (((arg7 - var_v0_4) + var_ra) >= 0xF1) { - arg7 = (var_v0_4 - var_ra) + 0xF0; + + if (arg9 < 0) { + arg5 -= arg9; + arg9 = 0; + } else if (((arg7 - arg5) + arg9) > SCREEN_HEIGHT) { + arg7 = (arg5 - arg9) + SCREEN_HEIGHT; } + if (arg6 < arg4) { + return displayListHead; + } + if (arg7 < arg5) { + return displayListHead; - } else if (arg7 < var_v0_4) { + } + sp7C = arg8; + for (var_s3 = arg5; var_s3 < arg7; var_s3 += temp_lo) { - } else { - sp7C = var_a1; - var_s3 = var_v0_4; - if ((u32) var_v0_4 < (u32) arg7) { - arg8 = var_a1; -loop_24: - temp_t6_2 = var_a2 + var_s3; - sp34 = temp_t6_2; - if ((u32) arg7 < temp_t6_2) { + if (arg7 < temp_lo + var_s3) { var_s4 = arg7 - var_s3; - if (var_s4 != 0) { - goto block_28; + if (!var_s4) { + break; } } else { - var_s4 = var_a2; -block_28: - var_a1_2 = arg4; - if ((u32) arg4 < (u32) arg6) { - sp6C = var_a2; - sp70 = var_t0; -loop_30: - temp_s5 = sp70 + var_a1_2; - var_s2 = sp70; - if ((u32) arg6 < temp_s5) { + var_s4 = temp_lo; + } + + for (var_a1_2 = arg4; var_a1_2 < arg6; var_a1_2 += var_t0) { + + if (arg6 < var_t0 + var_a1_2) { var_s2 = arg6 - var_a1_2; - if (var_s2 == 0) { - var_t0 = sp70; - var_a2 = sp6C; - } else { - temp_v0 = (arg1 & 7) << 0x15; - var_t1 = temp_v0 | 0xFD000000 | 0x100000 | ((argB - 1) & 0xFFF); - var_a2_2 = (sp68 & 0xF) * 0x10; - var_v1 = (sp64 & 0xF) << 0xE; - var_t4 = var_v1 | 0x07000000 | var_a2_2; - var_t0_2 = ((var_s3 + var_s4) * 4) & 0xFFF; - var_s1 = ((var_ra + var_s4) * 4) & 0xFFF; - var_s6 = (var_ra * 4) & 0xFFF; - var_t2 = temp_v0 | 0xF5000000 | 0x100000; - var_s7 = (var_s3 << 5) & 0xFFFF; - var_a3 = (var_s3 * 4) & 0xFFF; - var_fp = (arg2 << 0x10) | (arg3 & 0xFFFF); - goto block_35; + if (!var_s2) { + break; } } else { - temp_v0_2 = (arg1 & 7) << 0x15; - var_t1 = temp_v0_2 | 0xFD000000 | 0x100000 | ((argB - 1) & 0xFFF); - var_a2_2 = (sp68 & 0xF) * 0x10; - var_v1 = (sp64 & 0xF) << 0xE; - var_t4 = var_v1 | 0x07000000 | var_a2_2; - var_t0_2 = ((var_s3 + var_s4) * 4) & 0xFFF; - var_s1 = ((var_ra + var_s4) * 4) & 0xFFF; - var_s6 = (var_ra * 4) & 0xFFF; - var_t2 = temp_v0_2 | 0xF5000000 | 0x100000; - var_s7 = (var_s3 << 5) & 0xFFFF; - var_a3 = (var_s3 * 4) & 0xFFF; - var_fp = (arg2 << 0x10) | (arg3 & 0xFFFF); -block_35: - var_a0->words.w0 = var_t1; - temp_a2 = var_a1_2 + var_s2; - var_a0->words.w1 = (u32) argA; - temp_a0 = var_a0 + 8; - temp_t3 = var_t2 | ((((u32) (((temp_a2 - var_a1_2) * 2) + 9) >> 3) & 0x1FF) << 9); - temp_a0_2 = temp_a0 + 8; - temp_t1 = ((var_a1_2 * 4) & 0xFFF) << 0xC; - temp_a0->words.w0 = temp_t3; - temp_a0->words.w1 = var_t4; - temp_a0_2->words.w0 = 0xE6000000; - temp_a0_3 = temp_a0_2 + 8; - temp_t2 = ((temp_a2 * 4) & 0xFFF) << 0xC; - temp_a0_2->words.w1 = 0; - temp_a0_3->words.w0 = temp_t1 | 0xF4000000 | var_a3; - temp_a0_4 = temp_a0_3 + 8; - temp_a0_3->words.w1 = temp_t2 | 0x07000000 | var_t0_2; - temp_a0_5 = temp_a0_4 + 8; - temp_a0_4->words.w0 = 0xE7000000; - temp_a0_4->words.w1 = 0; - temp_a0_6 = temp_a0_5 + 8; - temp_a0_5->words.w1 = var_v1 | var_a2_2; - temp_a0_5->words.w0 = temp_t3; - temp_a0_6->words.w1 = temp_t2 | var_t0_2; - temp_a0_6->words.w0 = temp_t1 | 0xF2000000 | var_a3; - temp_a0_7 = temp_a0_6 + 8; - temp_a0_7->words.w0 = ((((arg8 + var_s2) * 4) & 0xFFF) << 0xC) | 0xE4000000 | var_s1; - temp_a0_8 = temp_a0_7 + 8; - temp_a0_7->words.w1 = (((arg8 * 4) & 0xFFF) << 0xC) | var_s6; - temp_a0_8->words.w0 = 0xB3000000; - temp_a0_9 = temp_a0_8 + 8; - temp_a0_8->words.w1 = (var_a1_2 << 0x15) | var_s7; - temp_a0_9->words.w0 = 0xB2000000; - temp_a0_9->words.w1 = var_fp; - var_a1_2 = (s32) temp_s5; - arg8 += sp70; - var_a0 = temp_a0_9 + 8; - if (temp_s5 >= (u32) arg6) { - var_t0 = sp70; - var_a2 = sp6C; - } else { - goto loop_30; - } + var_s2 = var_t0; } - } - var_s3 = (s32) sp34; - var_ra += var_a2; - arg8 = sp7C; - if ((u32) var_s3 < (u32) arg7) { - goto loop_24; - } - } - } - /* - Looks something like below, with some continue/break conditions thrown in - for (var_s3 = arg5; var_s3 < arg7; var_s3 += var_a2) { - for (var_a1_2 = arg4; var_a1_2 < arg6; var_a1_2 += sp70) { - gDPLoadTextureTile(displayListHead++, argA, arg1, G_IM_SIZ_16b, argB, 0, + gDPLoadTextureTile(displayListHead++, argA, arg1, G_IM_SIZ_16b, argB, 0, var_a1_2, var_s3, var_a1_2 + var_s2, var_s3 + var_s4, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, sp68, sp64, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, arg8 * 4, var_ra * 4, (arg8 + var_s2) * 4, (var_ra + var_s4) * 4, 0, - var_a1_2 * 32, var_s3 * 32, arg2, arg3); - } - } - */ - } - return var_a0; + gSPTextureRectangle(displayListHead++, arg8 * 4, arg9 * 4, (arg8 + var_s2) * 4, (arg9 + var_s4) * 4, 0, + (var_a1_2 * 32) & 0xFFFF, (var_s3 * 32) & 0xFFFF, arg2, arg3); + + arg8 += var_t0; + } + + arg8 = sp7C; + arg9 += temp_lo; + } + return displayListHead; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80095E10.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -Gfx *func_800963F0(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, f32 arg4, f32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, s32 argA, s32 argB, s32 argC, u32 argD, u32 argE) { - s32 sp8C; - u32 sp78; - s32 sp74; - s32 sp70; - s32 sp6C; - u32 sp34; - Gfx *temp_a0; - Gfx *temp_a0_2; - Gfx *temp_a0_3; - Gfx *temp_a0_4; - Gfx *temp_a0_5; - Gfx *temp_a0_6; - Gfx *temp_a0_7; - Gfx *temp_a0_8; - Gfx *temp_a0_9; - Gfx *var_a0; - f32 temp_f0; - f32 temp_f0_2; - f32 var_f0; - f32 var_f10; - f32 var_f12; - f32 var_f16; - f32 var_f18; - f32 var_f8; - s32 temp_a1; - s32 temp_a2; - s32 temp_a2_2; - s32 temp_a2_3; - s32 temp_at; - s32 temp_at_2; - s32 temp_lo; - s32 temp_t1; - s32 temp_t2; - s32 temp_t6; - s32 temp_t7_2; - s32 temp_v0; - s32 temp_v0_2; - s32 temp_v1; - s32 temp_v1_2; - s32 var_a1; - s32 var_a1_2; - s32 var_a3; - s32 var_a3_2; - s32 var_fp; - s32 var_ra; - s32 var_s1; - s32 var_s3; - s32 var_s5; - s32 var_s6; - s32 var_t0_2; - s32 var_t2; - s32 var_v0; - s32 var_v0_3; - s32 var_v0_4; - u32 temp_s4; - u32 temp_t3; - u32 temp_t7; - u32 temp_t8; - u32 var_s0; +Gfx *func_800963F0(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, f32 arg4, f32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, s32 argA, s32 argB, u8 *argC, u32 argD, u32 argE) { + u32 var_a1_2 = arg6; + u32 var_s3 = arg7; + s32 sp7C; u32 var_s2; - u32 var_s7; - u32 var_t0; - u32 var_t1; - u32 var_t4; - u32 var_v0_2; + u32 var_s4; + u32 a; + u32 b; + s32 var_t0 = 1; + s32 temp_lo; + s32 sp68 = 0; + s32 sp64 = 0; + s32 var_v0_2; - var_a0 = displayListHead; - var_t0 = 1; - sp70 = 0; - sp6C = 0; - if (argD >= 2U) { - do { - temp_t7 = var_t0 * 2; - var_t0 = temp_t7; - } while (temp_t7 < argD); + while (var_t0 < argD) { + var_t0 *= 2; } - temp_lo = 0x400 / (s32) var_t0; - var_a3 = temp_lo; - if (argE < (u32) (temp_lo / 2)) { - var_v0 = var_a3 / 2; - do { - temp_a1 = var_v0; - var_v0 = temp_a1 / 2; - } while (argE < (u32) var_v0); - sp74 = temp_a1; - var_a3 = temp_a1; + + temp_lo = 0x400 / var_t0; + + while((temp_lo / 2) > argE) { + temp_lo /= 2; } + var_v0_2 = var_t0; - if ((s32) var_t0 >= 2) { - do { - temp_t7_2 = (s32) var_v0_2 / 2; - temp_at = temp_t7_2 < 2; - var_v0_2 = (u32) temp_t7_2; - sp70 += 1; - } while (temp_at == 0); + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp68 += 1; } - var_v0_3 = var_a3; - if (var_a3 >= 2) { - do { - temp_t6 = var_v0_3 / 2; - temp_at_2 = temp_t6 < 2; - var_v0_3 = temp_t6; - sp6C += 1; - } while (temp_at_2 == 0); + var_v0_2 = temp_lo; + + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp64 += 1; } - var_ra = argA; - if (var_ra < 0) { - arg6 -= var_ra; - var_ra = 0; - } else { - temp_f0 = (f32) var_ra + ((f32) (arg8 - arg6) * arg4); - if (temp_f0 > 320.0f) { - arg8 = (s32) ((f32) arg8 - (temp_f0 - 320.0f)); - } + + if (argA < 0) { + arg6 -= argA; + argA = 0; + } else if ((argA + (arg8 - arg6) * arg4) > SCREEN_WIDTH) { + arg8 -= argA + (arg8 - arg6) * arg4 - SCREEN_WIDTH; } - var_a1 = argB; - var_v0_4 = arg7; - if (var_a1 < 0) { - var_v0_4 = arg7 - var_a1; - var_a1 = 0; - } else { - temp_f0_2 = (f32) var_a1 + ((f32) (arg9 - var_v0_4) * arg5); - if (temp_f0_2 > 240.0f) { - arg9 = (s32) ((f32) arg9 - (temp_f0_2 - 240.0f)); - } + + if (argB < 0) { + arg7 -= argB; + argB = 0; + } else if ((argB + (arg9 - arg7) * arg5) > SCREEN_HEIGHT) { + arg9 -= argB + (arg9 - arg7) * arg5 - SCREEN_HEIGHT; } + if (arg8 < arg6) { + return displayListHead; + } + if (arg9 < arg7) { + return displayListHead; + } + arg2 /= arg4; + arg3 /= arg5; - } else if (arg9 < var_v0_4) { + sp7C = argA; + for (var_s3 = arg7; var_s3 < arg9; var_s3 += temp_lo) { - } else { - sp8C = var_ra; - var_s3 = var_v0_4; - arg2 = (s32) ((f32) arg2 / arg4); - arg3 = (s32) ((f32) arg3 / arg5); - if ((u32) var_v0_4 < (u32) arg9) { - argB = var_a1; -loop_24: - temp_t8 = var_a3 + var_s3; - sp34 = temp_t8; - if ((u32) arg9 < temp_t8) { - var_fp = arg9 - var_s3; - if (var_fp != 0) { - var_a1_2 = arg6; - var_f12 = (f32) argB; - var_f18 = (f32) var_a3 * arg5; - goto block_28; + if (arg9 < temp_lo + var_s3) { + var_s4 = arg9 - var_s3; + if (!var_s4) { + break; } } else { - var_fp = var_a3; - var_a1_2 = arg6; - var_f12 = (f32) argB; - var_f18 = (f32) var_a3 * arg5; -block_28: - if ((u32) arg6 < (u32) arg8) { - sp74 = var_a3; - sp78 = var_t0; -loop_30: - temp_s4 = sp78 + var_a1_2; - if ((u32) arg8 < temp_s4) { + var_s4 = temp_lo; + } + b = var_s4 * arg5; + for (var_a1_2 = arg6; var_a1_2 < arg8; var_a1_2 += var_t0) { + + if (arg8 < var_t0 + var_a1_2) { var_s2 = arg8 - var_a1_2; - if (var_s2 == 0) { - var_t0 = sp78; - var_a3 = sp74; - } else { - temp_v0 = (arg1 & 7) << 0x15; - var_t1 = temp_v0 | 0xFD000000 | 0x100000 | ((argD - 1) & 0xFFF); - temp_v1 = (sp6C & 0xF) << 0xE; - temp_a2 = (sp70 & 0xF) * 0x10; - var_t4 = temp_v1 | 0x07000000 | temp_a2; - var_s5 = (argB * 4) & 0xFFF; - var_a3_2 = (var_s3 * 4) & 0xFFF; - var_s6 = (var_s3 << 5) & 0xFFFF; - var_t0_2 = ((var_s3 + var_fp) * 4) & 0xFFF; - var_t2 = temp_v0 | 0xF5000000 | 0x100000; - var_f0 = (f32) var_ra; - var_f16 = (f32) sp78 * arg4; - var_s7 = (arg2 << 0x10) | (arg3 & 0xFFFF); - var_s0 = temp_v1 | temp_a2; - var_f10 = (f32) var_fp; - if (var_fp < 0) { - var_f10 += 4294967296.0f; - } - var_s1 = ((argB + (u32) (var_f10 * arg5)) * 4) & 0xFFF; - goto block_39; + if (!var_s2) { + break; } } else { - var_s2 = sp78; - temp_v0_2 = (arg1 & 7) << 0x15; - var_f0 = (f32) var_ra; - var_t1 = temp_v0_2 | 0xFD000000 | 0x100000 | ((argD - 1) & 0xFFF); - var_f16 = (f32) var_s2 * arg4; - temp_v1_2 = (sp6C & 0xF) << 0xE; - temp_a2_2 = (sp70 & 0xF) * 0x10; - var_t4 = temp_v1_2 | 0x07000000 | temp_a2_2; - var_f8 = (f32) var_fp; - var_t0_2 = ((var_s3 + var_fp) * 4) & 0xFFF; - var_a3_2 = (var_s3 * 4) & 0xFFF; - var_t2 = temp_v0_2 | 0xF5000000 | 0x100000; - var_s5 = (argB * 4) & 0xFFF; - var_s6 = (var_s3 << 5) & 0xFFFF; - var_s0 = temp_v1_2 | temp_a2_2; - var_s7 = (arg2 << 0x10) | (arg3 & 0xFFFF); - if (var_fp < 0) { - var_f8 += 4294967296.0f; - } - var_s1 = ((argB + (u32) (var_f8 * arg5)) * 4) & 0xFFF; -block_39: - var_a0->words.w0 = var_t1; - temp_a2_3 = var_a1_2 + var_s2; - var_a0->words.w1 = (u32) argC; - temp_a0 = var_a0 + 8; - temp_t3 = var_t2 | ((((u32) (((temp_a2_3 - var_a1_2) * 2) + 9) >> 3) & 0x1FF) << 9); - temp_a0_2 = temp_a0 + 8; - temp_t1 = ((var_a1_2 * 4) & 0xFFF) << 0xC; - temp_a0->words.w0 = temp_t3; - temp_a0->words.w1 = var_t4; - temp_a0_2->words.w0 = 0xE6000000; - temp_a0_3 = temp_a0_2 + 8; - temp_t2 = ((temp_a2_3 * 4) & 0xFFF) << 0xC; - temp_a0_2->words.w1 = 0; - temp_a0_3->words.w0 = temp_t1 | 0xF4000000 | var_a3_2; - temp_a0_4 = temp_a0_3 + 8; - temp_a0_3->words.w1 = temp_t2 | 0x07000000 | var_t0_2; - temp_a0_5 = temp_a0_4 + 8; - temp_a0_6 = temp_a0_5 + 8; - temp_a0_4->words.w0 = 0xE7000000; - temp_a0_4->words.w1 = 0; - temp_a0_7 = temp_a0_6 + 8; - temp_a0_5->words.w1 = var_s0; - temp_a0_5->words.w0 = temp_t3; - temp_a0_6->words.w1 = temp_t2 | var_t0_2; - temp_a0_6->words.w0 = temp_t1 | 0xF2000000 | var_a3_2; - temp_a0_8 = temp_a0_7 + 8; - temp_a0_9 = temp_a0_8 + 8; - temp_a0_7->words.w0 = ((((var_ra + (u32) ((f32) var_s2 * arg4)) * 4) & 0xFFF) << 0xC) | 0xE4000000 | var_s1; - temp_a0_7->words.w1 = (((var_ra * 4) & 0xFFF) << 0xC) | var_s5; - temp_a0_8->words.w0 = 0xB3000000; - temp_a0_8->words.w1 = (var_a1_2 << 0x15) | var_s6; - temp_a0_9->words.w0 = 0xB2000000; - temp_a0_9->words.w1 = var_s7; - var_ra = (s32) (var_f0 + var_f16); - var_a1_2 = (s32) temp_s4; - var_a0 = temp_a0_9 + 8; - if (temp_s4 >= (u32) arg8) { - var_t0 = sp78; - var_a3 = sp74; - } else { - goto loop_30; - } + var_s2 = var_t0; } - } - var_s3 = (s32) sp34; - var_ra = sp8C; - argB = (s32) (var_f12 + var_f18); - if ((u32) var_s3 < (u32) arg9) { - goto loop_24; - } - } - } - } - return var_a0; -} -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800963F0.s") -#endif + a = var_s2 * arg4; + gDPLoadTextureTile(displayListHead++, argC, arg1, G_IM_SIZ_16b, argD, argE, + var_a1_2, var_s3, var_a1_2 + var_s2, var_s3 + var_s4, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, sp68, sp64, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(displayListHead++, argA * 4, argB * 4, (argA + a) * 4, (argB + b) * 4, 0, + (var_a1_2 * 32) & 0xFFFF, (var_s3 * 32) & 0xFFFF, arg2, arg3); + + argA += var_t0 * arg4; + } + + argA = sp7C; + argB += temp_lo * arg5; + } + return displayListHead; +} + +extern u8 D_0B002A00[]; #ifdef NON_MATCHING -// https://decomp.me/scratch/zyWcm -// I think I have the GIB macros right, but everything else is suspect +// https://decomp.me/scratch/xV83r +// Possibly a missed variable rename or just weird diffs. // I don't know what this actually meant to be. Its plausible that its meant to be a reference to `gTextureTitleChocoMountain` // That would be weird though because this function doesn't draw that picture at all. So its plausible that its instead // using it as some form semi-random data for the static pattern? -extern u8 D_0B002A00; // This function is responsible for drawing a near unnoticeable static pattern // over the course images when loading the cup selection screen // Try locking the word at `8018DC80` to see something like 0x20 just before confirming character selection to make it last longer -Gfx *func_80096CD8(Gfx *displayListHead, s32 arg1, s32 arg2, u32 width, u32 arg4) { - s32 spCC; - s32 masks; - s32 maskt; - s32 temp_v1_2; - s32 var_fp; - s32 var_s1_2; - s32 var_s1_3; - s32 var_t5; - s32 var_v0; - u32 temp_t2; - u32 temp_t6; - s32 var_a1; - s32 var_ra; - s32 var_s1; - u32 var_s4_2; - s32 temp_v0; - var_ra = 1; - masks = 0; - maskt = 0; - if (width >= 2U) { - do { - var_ra *= 2; - } while (var_ra < width); +Gfx *func_80096CD8(Gfx *displayListHead, s32 arg1, s32 arg2, u32 width, u32 arg4) { + u32 var_s1_3; + u32 var_fp; + u32 var_v0; + u32 var_a1; + s32 var_ra = 1; + s32 spCC; + s32 masks = 0; + s32 maskt = 0; + s32 rand; + + while (var_ra < width) { + var_ra *= 2; } + spCC = 0x400 / var_ra; - if (arg4 < (spCC / 2)) { - do { - spCC /= 2; - } while (arg4 < spCC); + + while ((spCC / 2) > arg4) { + spCC /= 2; } - var_s1 = var_ra; - while (var_s1 >= 2) { - var_s1 /= 2; + + rand = var_ra; + while (rand > 1) { + rand /= 2; masks += 1; } - var_s1_2 = spCC; - while (var_s1_2 >= 2) { - var_s1_2 /= 2; + rand = spCC; + while (rand > 1) { + rand /= 2; maskt += 1; } + + if (arg1 < 0) { width -= arg1; arg1 = 0; - } else if ((arg1 + width) > 0x140) { - width = 0x140 - arg1; + } else if ((arg1 + width) > SCREEN_WIDTH) { + width = SCREEN_WIDTH - arg1; } if (arg2 < 0) { arg4 -= arg2; arg2 = 0; - } else if ((arg2 + arg4) > 0xF0) { - arg4 = 0xF0 - arg2; + } else if ((arg2 + arg4) > SCREEN_HEIGHT) { + arg4 = SCREEN_HEIGHT - arg2; } - if (width == 0) return displayListHead; - else if (arg4 == 0) return displayListHead; - else { - temp_v0 = random_int(0x0064U); - displayListHead = draw_box(displayListHead, arg1, arg2, arg1 + width, arg2 + arg4, 0, 0, 0, temp_v0); - temp_v0 += 0x96; - gDPPipeSync(displayListHead++); - gDPSetRenderMode(displayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2); - gDPSetPrimColor(displayListHead++, 0, 0, temp_v0, temp_v0, temp_v0, temp_v0); - gDPSetCombineMode(displayListHead++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - for (var_fp = arg2; var_fp < (arg2 + arg4); var_fp += spCC) { - var_t5 = spCC; - temp_t6 = var_fp + spCC; - if ((arg2 + arg4) < temp_t6) { - var_t5 = (arg2 + arg4) - var_fp; - if (var_t5 == 0) return displayListHead; - } - for (var_s1_3 = arg1; var_s1_3 < (arg1 + width); var_s1_3 += var_ra) { - var_s4_2 = var_ra; - temp_t2 = var_s1_3 + var_ra; - if ((arg1 + width) < temp_t2) { - var_s4_2 = (arg1 + width) - var_s1_3; - if (var_s4_2 == 0) return displayListHead; - } - gDPLoadTextureTile(displayListHead++, (random_int(0x0080U) * 2) + &D_0B002A00, G_IM_FMT_IA, G_IM_SIZ_16b, width, 0, - var_s1_3, var_fp, var_s1_3 + var_s4_2, var_fp + var_t5, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, masks, maskt, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, var_s1_3 * 4, var_fp * 4, (var_s1_3 + var_s4_2) * 4, (var_fp + var_t5) * 4, 0, var_s1_3 << 5, var_fp << 5, 1024, 1024); - + if (width == 0) { return displayListHead; } + if (arg4 == 0) { return displayListHead; } + + + rand = random_int(100); + displayListHead = draw_box(displayListHead, arg1, arg2, arg1 + width, arg2 + arg4, 0, 0, 0, rand); + rand += 150; + gDPPipeSync(displayListHead++); + gDPSetRenderMode(displayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetPrimColor(displayListHead++, 0, 0, rand, rand, rand, rand); + gDPSetCombineMode(displayListHead++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + for (var_fp = arg2; var_fp < (arg2 + arg4); var_fp += spCC) { + if ((var_fp + spCC) > (arg2 + arg4)) { + var_v0 = (arg2 + arg4) - var_fp; + if (var_v0 == 0) { + break; } + } else { + var_v0 = spCC; + } + for (var_s1_3 = arg1; var_s1_3 < (arg1 + width); var_s1_3 += var_ra) { + if ((var_s1_3 + var_ra) > (arg1 + width)) { + var_a1 = (arg1 + width) - var_s1_3; + if (var_a1 == 0) { + break; + } + } else { + var_a1 = var_ra; + } + gDPLoadTextureTile(displayListHead++, D_0B002A00 + (random_int(128) * 2), G_IM_FMT_IA, G_IM_SIZ_16b, width, arg4, + var_s1_3, var_fp, var_s1_3 + var_a1, var_fp + var_v0, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, masks, maskt, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(displayListHead++, var_s1_3 * 4, var_fp * 4, (var_s1_3 + var_a1) * 4, (var_fp + var_v0) * 4, 0, (var_s1_3 * 32) & 0xFFFF, (var_fp * 32) & 0xFFFF, 1024, 1024); + } } + return displayListHead; } #else GLOBAL_ASM("asm/non_matchings/code_80091750/func_80096CD8.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-01-2023 -extern ? D_000FFF00; -extern ? D_0B002A00; - -Gfx *func_80097274(Gfx *arg0, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, s32 argA, u32 argB, u32 argC) { - u32 sp108; - s32 sp104; - s32 sp100; - s32 spFC; - s32 spF8; - s32 spF4; - s32 spF0; - s32 spEC; - u32 sp84; - u32 sp80; - u32 sp68; - u32 sp50; - s32 sp4C; - s32 sp48; - s32 sp44; - u32 sp40; - Gfx *temp_a0; - Gfx *temp_s0; - Gfx *temp_s0_10; - Gfx *temp_s0_11; - Gfx *temp_s0_12; - Gfx *temp_s0_13; - Gfx *temp_s0_14; - Gfx *temp_s0_15; - Gfx *temp_s0_16; - Gfx *temp_s0_17; - Gfx *temp_s0_18; - Gfx *temp_s0_19; - Gfx *temp_s0_20; - Gfx *temp_s0_2; - Gfx *temp_s0_3; - Gfx *temp_s0_4; - Gfx *temp_s0_5; - Gfx *temp_s0_6; - Gfx *temp_s0_7; - Gfx *temp_s0_8; - Gfx *temp_s0_9; - Gfx *var_s0; - s32 temp_a0_2; - s32 temp_a0_3; - s32 temp_a0_4; - s32 temp_a3; - s32 temp_at; - s32 temp_at_2; +#ifdef NON_MATCHING +Gfx *func_80097274(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, u16 *argA, u32 argB, u32 argC, s32 argD) { + u32 var_a1_2 = arg4; + u32 var_s3 = arg5; + s32 sp7C; + u32 var_s2; + u32 var_s4; + s32 var_t0 = 1; s32 temp_lo; - s32 temp_s2; - s32 temp_t6; - s32 temp_t6_2; - s32 temp_t8; - s32 temp_t8_2; - s32 temp_v0; - s32 temp_v0_2; - s32 temp_v0_3; - s32 temp_v1; - s32 temp_v1_2; - s32 temp_v1_3; - s32 var_a0; - s32 var_a2; - s32 var_a3; - s32 var_s3; - s32 var_s4; - s32 var_t3; - s32 var_t3_2; - s32 var_t4; - s32 var_t5; - s32 var_v0; - s32 var_v0_3; - s32 var_v0_4; - u32 temp_a1; - u32 temp_s1; - u32 temp_s5; - u32 temp_s6; - u32 temp_s7; - u32 temp_t6_3; - u32 temp_t9; - u32 temp_t9_2; - u32 var_a1; - u32 var_ra; - u32 var_t0; - u32 var_t2; - u32 var_t4_2; - u32 var_v0_2; + s32 sp68 = 0; + s32 sp64 = 0; + s32 var_v0_2; - temp_s0 = arg0 + 8; - arg0->words.w0 = 0xE7000000; - arg0->words.w1 = 0; - temp_s0_2 = temp_s0 + 8; - temp_s0->words.w0 = 0xBA001402; - temp_s0->words.w1 = (u32) &D_000FFF00; - temp_s0_3 = temp_s0_2 + 8; - temp_s0_2->words.w0 = 0xBA001001; - temp_s0_2->words.w1 = 0; - temp_s0_3->words.w0 = 0xFA000000; - temp_s0_4 = temp_s0_3 + 8; - var_t0 = 1; - var_t3 = 0; - var_t4 = 0; - temp_t8 = gGlobalTimer & 0xFF; - if ((gGlobalTimer < 0) && (temp_t8 != 0)) { + gDPPipeSync(displayListHead++); + gDPSetCycleType(displayListHead++, G_CYC_2CYCLE); + gDPSetTextureLOD(displayListHead++, G_TL_TILE); + gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, gGlobalTimer % 256); + gDPSetCombineLERP(displayListHead++, TEXEL1, TEXEL0, PRIMITIVE_ALPHA, TEXEL0, TEXEL1, TEXEL0, PRIMITIVE, TEXEL0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED); + while (var_t0 < argB) { + var_t0 *= 2; } - temp_s0_3->words.w1 = temp_t8 & 0xFF; - temp_s0_4->words.w1 = 0x1FFC9238; - temp_s0_4->words.w0 = 0xFC2527FF; - var_s0 = temp_s0_4 + 8; - if (argB >= 2U) { - do { - temp_t9 = var_t0 * 2; - var_t0 = temp_t9; - } while (temp_t9 < argB); - } - temp_lo = 0x400 / (s32) var_t0; - spF4 = temp_lo; - if (argC < (u32) (temp_lo / 2)) { - var_v0 = temp_lo / 2; - do { - temp_v1 = var_v0; - var_v0 = temp_v1 / 2; - } while (argC < (u32) var_v0); - spF4 = temp_v1; + + temp_lo = 0x400 / var_t0; + + while((temp_lo / 2) > argC) { + temp_lo /= 2; } + var_v0_2 = var_t0; - if ((s32) var_t0 >= 2) { - do { - temp_t6 = (s32) var_v0_2 / 2; - temp_at = temp_t6 < 2; - var_v0_2 = (u32) temp_t6; - var_t3 += 1; - } while (temp_at == 0); + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp68 += 1; } - var_v0_3 = spF4; - var_a0 = arg8; - if (var_v0_3 >= 2) { - do { - temp_t8_2 = var_v0_3 / 2; - temp_at_2 = temp_t8_2 < 2; - var_v0_3 = temp_t8_2; - var_t4 += 1; - } while (temp_at_2 == 0); - } - if (var_a0 < 0) { - arg4 -= var_a0; - var_a0 = 0; - } else if (((arg6 - arg4) + var_a0) >= 0x141) { - arg6 = (arg4 - var_a0) + 0x140; - } - temp_t6_2 = arg9; - var_v0_4 = arg5; - if (temp_t6_2 < 0) { - arg9 = 0; - var_v0_4 = arg5 - temp_t6_2; - } else if (((arg7 - var_v0_4) + arg9) >= 0xF1) { - arg7 = (var_v0_4 - arg9) + 0xF0; - } - if (arg6 < arg4) { - return var_s0; - } - if (arg7 < var_v0_4) { - return var_s0; - } - sp104 = var_a0; - var_t5 = var_v0_4; - if ((u32) var_v0_4 < (u32) arg7) { - arg8 = var_a0; - spF8 = (s32) var_t0; - spF0 = var_t3; - spEC = var_t4; -loop_27: - temp_t6_3 = spF4 + var_t5; - sp84 = temp_t6_3; - if ((u32) arg7 < temp_t6_3) { - temp_v0 = arg7 - var_t5; - spFC = temp_v0; - if (temp_v0 != 0) { - goto block_31; - } - } else { - spFC = spF4; -block_31: - var_s4 = arg4; - if ((u32) arg4 < (u32) arg6) { -loop_33: - temp_t9_2 = spF8 + var_s4; - sp80 = temp_t9_2; - if ((u32) arg6 < temp_t9_2) { - var_t3_2 = arg6 - var_s4; - if (var_t3_2 != 0) { - temp_a0_2 = (arg1 & 7) << 0x15; - var_a1 = temp_a0_2 | 0xFD000000 | 0x100000 | ((argB - 1) & 0xFFF); - temp_v0_2 = (spEC & 0xF) << 0xE; - temp_v1_2 = (spF0 & 0xF) * 0x10; - var_a2 = (var_t5 * 4) & 0xFFF; - var_s3 = ((var_t5 + spFC) * 4) & 0xFFF; - var_t4_2 = temp_v0_2 | 0x07000000 | temp_v1_2; - var_a3 = temp_a0_2 | 0xF5000000 | 0x100000; - var_ra = temp_v0_2 | 0x01000000 | temp_v1_2; - sp4C = ((arg9 + spFC) * 4) & 0xFFF; - sp44 = (var_t5 << 5) & 0xFFFF; - sp48 = (arg9 * 4) & 0xFFF; - sp40 = (arg2 << 0x10) | (arg3 & 0xFFFF); - var_t2 = temp_v0_2 | temp_v1_2; - goto block_37; - } - } else { - temp_a0_3 = (arg1 & 7) << 0x15; - var_a1 = temp_a0_3 | 0xFD000000 | 0x100000 | ((argB - 1) & 0xFFF); - temp_v0_3 = (spEC & 0xF) << 0xE; - temp_v1_3 = (spF0 & 0xF) * 0x10; - var_a2 = (var_t5 * 4) & 0xFFF; - var_s3 = ((var_t5 + spFC) * 4) & 0xFFF; - var_t4_2 = temp_v0_3 | 0x07000000 | temp_v1_3; - var_a3 = temp_a0_3 | 0xF5000000 | 0x100000; - var_ra = temp_v0_3 | 0x01000000 | temp_v1_3; - sp4C = ((arg9 + spFC) * 4) & 0xFFF; - sp44 = (var_t5 << 5) & 0xFFFF; - sp48 = (arg9 * 4) & 0xFFF; - sp40 = (arg2 << 0x10) | (arg3 & 0xFFFF); - var_t2 = temp_v0_3 | temp_v1_3; - var_t3_2 = spF8; -block_37: - var_s0->words.w0 = var_a1; - temp_a0_4 = var_s4 + var_t3_2; - var_s0->words.w1 = (u32) argA; - temp_s0_5 = var_s0 + 8; - temp_s1 = var_a3 | ((((u32) (((temp_a0_4 - var_s4) * 2) + 9) >> 3) & 0x1FF) << 9); - temp_s0_6 = temp_s0_5 + 8; - temp_s0_5->words.w0 = temp_s1; - temp_s0_5->words.w1 = var_t4_2; - temp_s0_6->words.w0 = 0xE6000000; - temp_a3 = ((var_s4 * 4) & 0xFFF) << 0xC; - temp_s0_7 = temp_s0_6 + 8; - temp_s2 = ((temp_a0_4 * 4) & 0xFFF) << 0xC; - temp_s0_6->words.w1 = 0; - temp_s6 = temp_s2 | 0x07000000 | var_s3; - temp_s0_8 = temp_s0_7 + 8; - temp_s5 = temp_a3 | 0xF4000000 | var_a2; - temp_s0_7->words.w0 = temp_s5; - temp_s0_7->words.w1 = temp_s6; - temp_s0_9 = temp_s0_8 + 8; - temp_s0_8->words.w0 = 0xE7000000; - temp_s0_10 = temp_s0_9 + 8; - temp_s0_8->words.w1 = 0; - temp_s0_9->words.w1 = var_t2; - temp_s0_9->words.w0 = temp_s1; - temp_s7 = temp_a3 | 0xF2000000 | var_a2; - temp_s0_11 = temp_s0_10 + 8; - temp_s0_10->words.w1 = temp_s2 | var_s3; - temp_s0_10->words.w0 = temp_s7; - temp_s0_11->words.w0 = var_a1; - sp50 = var_ra; - sp108 = (u32) var_t5; - sp68 = var_t4_2; - sp100 = var_t3_2; - temp_s0_12 = temp_s0_11 + 8; - temp_s0_11->words.w1 = (u32) ((random_int(0x0080U) * 2) + &D_0B002A00); - temp_s0_13 = temp_s0_12 + 8; - temp_a1 = temp_s1 | 0x100; - temp_s0_12->words.w0 = temp_a1; - temp_s0_12->words.w1 = var_t4_2; - temp_s0_14 = temp_s0_13 + 8; - temp_s0_13->words.w0 = 0xE6000000; - temp_s0_15 = temp_s0_14 + 8; - temp_s0_13->words.w1 = 0; - temp_s0_14->words.w1 = temp_s6; - temp_s0_14->words.w0 = temp_s5; - temp_s0_16 = temp_s0_15 + 8; - temp_s0_15->words.w0 = 0xE7000000; - temp_s0_15->words.w1 = 0; - temp_s0_16->words.w0 = temp_a1; - temp_s0_16->words.w1 = var_ra; - temp_s0_17 = temp_s0_16 + 8; - temp_s0_17->words.w1 = temp_s2 | 0x01000000 | var_s3; - temp_s0_17->words.w0 = temp_s7; - temp_s0_18 = temp_s0_17 + 8; - temp_s0_18->words.w0 = ((((arg8 + var_t3_2) * 4) & 0xFFF) << 0xC) | 0xE4000000 | sp4C; - temp_s0_19 = temp_s0_18 + 8; - temp_s0_18->words.w1 = (((arg8 * 4) & 0xFFF) << 0xC) | sp48; - temp_s0_19->words.w0 = 0xB3000000; - temp_s0_20 = temp_s0_19 + 8; - temp_s0_19->words.w1 = (var_s4 << 0x15) | sp44; - temp_s0_20->words.w0 = 0xB2000000; - var_s0 = temp_s0_20 + 8; - temp_s0_20->words.w1 = sp40; - var_s4 = (s32) sp80; - arg8 += spF8; - if ((u32) var_s4 >= (u32) arg6) { + var_v0_2 = temp_lo; - } else { - goto loop_33; - } - } - } - var_t5 = (s32) sp84; - arg8 = sp104; - arg9 += spF4; - if ((u32) var_t5 < (u32) arg7) { - goto loop_27; - } - } + while (var_v0_2 > 1) { + var_v0_2 /= 2; + sp64 += 1; } - temp_a0 = var_s0 + 8; - var_s0->words.w0 = 0xE7000000; - var_s0->words.w1 = 0; - temp_a0->words.w0 = 0xBA001402; - temp_a0->words.w1 = 0; - return temp_a0 + 8; + + if (arg8 < 0) { + arg4 -= arg8; + arg8 = 0; + } else if (((arg6 - arg4) + arg8) > SCREEN_WIDTH) { + arg6 = (arg4 - arg8) + SCREEN_WIDTH; + } + + if (arg9 < 0) { + arg5 -= arg9; + arg9 = 0; + } else if (((arg7 - arg5) + arg9) > SCREEN_HEIGHT) { + arg7 = (arg5 - arg9) + SCREEN_HEIGHT; + } + + if (arg6 < arg4) { + return displayListHead; + } + if (arg7 < arg5) { + return displayListHead; + + } + sp7C = arg8; + for (var_s3 = arg5; var_s3 < arg7; var_s3 += temp_lo) { + + if (arg7 < temp_lo + var_s3) { + var_s4 = arg7 - var_s3; + if (!var_s4) { + break; + } + } else { + var_s4 = temp_lo; + } + + for (var_a1_2 = arg4; var_a1_2 < arg6; var_a1_2 += var_t0) { + + if (arg6 < var_t0 + var_a1_2) { + var_s2 = arg6 - var_a1_2; + if (!var_s2) { + break; + } + } else { + var_s2 = var_t0; + } + + gDPLoadMultiTile(displayListHead++, arg1, 0, G_TX_RENDERTILE, arg2, G_IM_SIZ_16b, + argB, argC, var_a1_2, var_s3, var_a1_2 + var_s2, var_s3 + var_s4, 0, + G_TX_WRAP, G_TX_WRAP, sp68, sp64, G_TX_NOLOD, G_TX_NOLOD); + + + gDPLoadMultiTile(displayListHead++, D_0B002A00 + random_int(128) * 2, 256, G_TX_RENDERTILE+1, arg2, G_IM_SIZ_16b, + argB, argC, var_a1_2, var_s3, var_a1_2 + var_s2, var_s3 + var_s4, 0, + G_TX_WRAP, G_TX_WRAP, sp68, sp64, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(displayListHead++, arg8 * 4, arg9 * 4, (arg8 + var_s2) * 4, (arg9 + var_s4) * 4, 0, + (var_a1_2 * 32) & 0xFFFF, (var_s3 * 32) & 0xFFFF, arg2, arg3); + + arg8 += var_t0; + } + + arg8 = sp7C; + arg9 += temp_lo; + } + gDPPipeSync(displayListHead++); + gDPSetCycleType(displayListHead++, G_CYC_1CYCLE); + return displayListHead; } #else GLOBAL_ASM("asm/non_matchings/code_80091750/func_80097274.s") #endif -Gfx *func_80097A14(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, u32 arg9, u32 argA) { +Gfx *func_80097A14(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, u8* arg8, u32 arg9, u32 argA) { gDPPipeSync(displayListHead++); gDPSetCycleType(displayListHead++, G_CYC_COPY); displayListHead = func_80095E10(displayListHead, arg1, 0x00001000, 0x00000400, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, argA); @@ -3824,82 +3290,74 @@ Gfx *func_80097A14(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, return displayListHead; } -#ifdef NON_MATCHING -// https://decomp.me/scratch/EAuX4 -// I'm fairly certain I've got the GBI macros correct, don't know what the source of the diff is -// While there may be register allocation issues, I suspect the instruction ordering issues are the actual problems -Gfx *func_80097AE4(Gfx *displayListHead, s8 fmt, s32 arg2, s32 arg3, u8 *arg4, s32 arg5) { - s32 var_a2; - s32 stackPadding0; +Gfx *func_80097AE4(Gfx *displayListHead, s8 fmt, s32 arg2, s32 arg3, u8 *arg4, s32 width) { + s32 i; + s32 temp; s32 arg2Copy; s32 dsdx; - if (arg5 >= 0x20) return displayListHead; + if (width >= 32) { return displayListHead; } arg2Copy = arg2; - dsdx = 0x8000 / (0x20 - arg5); - for (var_a2 = 0; var_a2 < 0x40; var_a2 += 0x20) { - gDPLoadTextureTile(displayListHead++, arg4, fmt, G_IM_SIZ_16b, 64, 0, 0, var_a2, 32, var_a2 + 0x20, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, (arg2 + arg5) << 2, arg3 << 2, (arg2 + 0x20) << 2, (arg3 + 0x20) << 2, 0, 0, 0, dsdx, 1024); - arg2 += 0x20; - gDPLoadTextureTile(displayListHead++, arg4, fmt, G_IM_SIZ_16b, 64, 0, 32, var_a2, 64, var_a2 + 0x20, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, arg2 << 2, arg3 << 2, ((arg2 - arg5) + 0x20) << 2, (arg3 + 0x20) << 2, 0, 0, 0, dsdx, 1024); + + for (i = 0; i < 64; i += 32) { + temp = 0; + dsdx = 0x8000 / (32 - width); + gDPLoadTextureTile(displayListHead++, arg4, fmt, G_IM_SIZ_16b, 64, 64, temp, i, temp + 32, i + 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(displayListHead++, (arg2 + width) << 2, arg3 << 2, (arg2 + 32) << 2, (arg3 + 32) << 2, 0, 0, 0, dsdx, 1024); + + arg2 += 32; + + gDPLoadTextureTile(displayListHead++, arg4, fmt, G_IM_SIZ_16b, 64, 64, temp + 32, i, temp + 64, i + 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(displayListHead++, arg2 << 2, arg3 << 2, ((arg2 - width) + 32) << 2, (arg3 + 32) << 2, 0, 0, 0, dsdx, 1024); + arg2 = arg2Copy; - arg3 += 0x20; + arg3 += 32; } return displayListHead; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80097AE4.s") -#endif -#ifdef NON_MATCHING -// https://decomp.me/scratch/U4QaQ -// I'm fairly certain I have the GBI macros correct, so the massive diff is probably -// the result of somemath ordering issues. -Gfx *func_80097E58(Gfx *displayListHead, s8 fmt, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, u8 *someTexture, u32 width, s32 argA, u32 argB) { +Gfx *func_80097E58(Gfx *displayListHead, s8 fmt, u32 arg2, u32 arg3, u32 arg4, u32 arg5, s32 arg6, s32 arg7, u8 *someTexture, u32 arg9, u32 argA, s32 width) { u32 ult; - s32 spDC; - s32 sp80; - s32 temp_v1; - s32 var_s1; - s32 var_s2; - s32 var_s5; - u32 lrs; + u32 temp; s32 arg6Copy; + s32 temp_v1; + s32 var_s2; + s32 lrs; + s32 spDC; + s32 temp2 = 32; - if ((s32)width >= 0x20) return displayListHead; - - lrs = width >> 1; - spDC = sp80 = width - lrs; + if (width >= 32) { return displayListHead; } + arg6Copy = arg6; - for (ult = arg3; ult < arg5; ult += 0x20) { - if (arg5 < (ult + 0x20)) { // Less than 0x20 left to reach target - var_s2 = arg5 - ult; // Leftover amount to reach target - if (var_s2 == 0) break; // Actually at target + + lrs = arg9 / 2; + spDC = arg9 - lrs; + for (ult = arg3; ult < arg5; ult += 32) { + temp = 0; + if ((ult + temp2) > arg5) { + var_s2 = arg5 - ult; + if (!var_s2) { + break; + } } else { - var_s2 = 0x20; // Go the full 0x20 on this step + var_s2 = temp2; } - temp_v1 = 0x20 - argB; - var_s1 = (lrs * argB) / 32; - var_s5 = (spDC * temp_v1) / 32; - - gDPLoadTextureTile(displayListHead++, someTexture, fmt, G_IM_SIZ_16b, width, 0, 0, ult, lrs, ult + var_s2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, (arg6 + var_s1) << 2, arg7 << 2, (arg6 + lrs) << 2, (arg7 + var_s2) << 2, 0, 0, ult << 5, (s32)((lrs << 5) << 0xA) / (s32)(lrs * temp_v1), 1024); + temp_v1 = ((32 * lrs) << 10) / (lrs * (32 - width)); + gDPLoadTextureTile(displayListHead++, someTexture, fmt, G_IM_SIZ_16b, arg9, argA, temp, ult, temp + lrs, ult + var_s2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(displayListHead++, (arg6 + lrs * width / 32) << 2, arg7 << 2, (arg6 + lrs) << 2, (arg7 + var_s2) << 2, 0, 0, (ult << 5) & 0xFFFF, temp_v1, 1024); arg6 += lrs; - gDPLoadTextureTile(displayListHead++, someTexture, fmt, G_IM_SIZ_16b, width, 0, lrs, ult, width, ult + var_s2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, arg6 << 2, arg7 << 2, (arg6 + var_s5) << 2, (arg7 + var_s2) << 2, 0, lrs << 5, ult << 5, ((sp80 << 5) << 0xA) / (sp80 * temp_v1), 1024); + temp_v1 = ((32 * spDC) << 10) / (spDC * (32 - width)); + gDPLoadTextureTile(displayListHead++, someTexture, fmt, G_IM_SIZ_16b, arg9, argA, temp + lrs, ult, temp + arg9, ult + var_s2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(displayListHead++, arg6 << 2, arg7 << 2, (arg6 + spDC * (32 - width) / 32) << 2, (arg7 + var_s2) << 2, 0, (lrs << 5) & 0xFFFF, (ult << 5) & 0xFFFF, temp_v1, 1024); arg6 = arg6Copy; - arg7 += 0x20; + arg7 += temp2; } return displayListHead; } -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_80097E58.s") -#endif -Gfx *func_80098558(Gfx *displayListHead, u32 arg1, u32 arg2, u32 arg3, u32 arg4, u32 arg5, u32 arg6, s32 arg7, s32 arg8) { +Gfx *func_80098558(Gfx *displayListHead, u32 arg1, u32 arg2, u32 arg3, u32 arg4, u32 arg5, u32 arg6, UNUSED s32 arg7, s32 arg8) { u32 var_a3; u32 var_v0; s32 arg5Copy; @@ -3917,12 +3375,12 @@ Gfx *func_80098558(Gfx *displayListHead, u32 arg1, u32 arg2, u32 arg3, u32 arg4, return displayListHead; } -Gfx *func_800987D0(Gfx *displayListHead, u32 arg1, u32 arg2, u32 width, u32 height, s32 column, s32 row, s32 arg7, u32 textureWidth, s32 textureHeight) { +Gfx *func_800987D0(Gfx *displayListHead, u32 arg1, u32 arg2, u32 width, u32 height, s32 column, s32 row, UNUSED u8* arg7, u32 textureWidth, UNUSED s32 textureHeight) { s32 var_a2; s32 var_v0_2; s32 columnCopy; s32 temp_f4_2; - s32 stackPadding0; + UNUSED s32 stackPadding0; s32 temp_f6; f32 temp_f0; f32 temp_f18; @@ -3935,14 +3393,14 @@ Gfx *func_800987D0(Gfx *displayListHead, u32 arg1, u32 arg2, u32 width, u32 heig temp_f0 = coss(((D_8018E7D0[0] * 0x4E20) / D_8018E7B8[0]) % 20000U); temp_f18 = (((f32)D_8018E7D0[0] * 0.5) / D_8018E7B8[0]) + 1.0; columnCopy = column; - for (var_v0_2 = arg2; var_v0_2 < height; var_v0_2 += 0x20) { - for (var_a2 = arg1; var_a2 < width; var_a2 += 0x20) { + for (var_v0_2 = arg2; (u32) var_v0_2 < height; var_v0_2 += 0x20) { + for (var_a2 = arg1; (u32) var_a2 < width; var_a2 += 0x20) { gDPLoadTextureTile(displayListHead++, D_8018D9B0, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, 0, var_a2, var_v0_2, var_a2 + 0x20, var_v0_2 + 0x20, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); temp_f6 = (temp_f18 * ((temp_f0 * (column - 0xA0)) + (temp_f24 * (row - 0x78)))) + 160.0f; temp_f4_2 = (temp_f18 * ((-temp_f24 * (column - 0xA0)) + (temp_f0 * (row - 0x78)))) + 120.0f; - gSPTextureRectangle(displayListHead++, temp_f6 * 4, temp_f4_2 * 4, (temp_f6 + 0x20^0) * 4, (temp_f4_2 + 0x20^0) * 4, 0, 0, 0, 1024, 1024); + gSPTextureRectangle(displayListHead++, temp_f6 * 4, temp_f4_2 * 4, ((temp_f6 + 0x20)^0) * 4, ((temp_f4_2 + 0x20)^0) * 4, 0, 0, 0, 1024, 1024); column += 0x20; } column = columnCopy; @@ -3989,7 +3447,7 @@ Gfx *draw_box_fill(Gfx *displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, s32 } // draw a box with a solid outline -Gfx *draw_box(Gfx *displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, s32 red, s32 green, s32 blue, s32 alpha) { +Gfx *draw_box(Gfx *displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, u32 red, u32 green, u32 blue, u32 alpha) { red &= 0xFF; green &= 0xFF; blue &= 0xFF; @@ -4073,14 +3531,15 @@ void *segmented_to_virtual_dupe_2(const void *addr) { } #ifdef NON_MATCHING +// https://decomp.me/scratch/NAZ12 // Register allocation nonsense void func_80099184(MkTexture *arg0) { u16 var_a1_2; s32 var_v0; s32 var_a1; - s32 temp_s3; + UNUSED s32 temp_s3; MkTexture *var_s1; - struct_8018E118_entry *thing; + UNUSED struct_8018E118_entry *thing; var_s1 = segmented_to_virtual_dupe(arg0); while (var_s1->textureData != NULL) { @@ -4103,13 +3562,15 @@ void func_80099184(MkTexture *arg0) { var_a1_2 = ((var_a1_2 / 8) * 8) + 8; } dma_copy_base_729a30(var_s1->textureData, var_a1_2, D_8018D9B4); - mio0decode(D_8018D9B4, &D_8018D9B0[gD_8018E118TotalSize]); + mio0decode(D_8018D9B4, (u8*)&D_8018D9B0[gD_8018E118TotalSize]); } else { dma_copy_base_729a30(var_s1->textureData, var_s1->height * var_s1->width * 2, &D_8018D9B0[gD_8018E118TotalSize]); } - D_8018E118[gNumD_8018E118Entries].textureData = var_s1->textureData; - D_8018E118[gNumD_8018E118Entries].offset = gD_8018E118TotalSize; + thing = &D_8018E118[gNumD_8018E118Entries]; + thing->textureData = var_s1->textureData; + thing = &D_8018E118[gNumD_8018E118Entries]; + thing->offset = gD_8018E118TotalSize; gD_8018E118TotalSize += (var_s1->height * var_s1->width); gNumD_8018E118Entries += 1; @@ -4123,12 +3584,13 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_80099184.s") #endif #ifdef NON_MATCHING +// https://decomp.me/scratch/O2tkD // Register allocation nonsense void func_80099394(MkTexture *arg0) { - u16 var_a1_2; + UNUSED u16 var_a1_2; s32 var_v0; s32 var_a1; - s32 temp_s3; + UNUSED s32 temp_s3; MkTexture *var_s1; struct_8018E118_entry *thing; @@ -4165,11 +3627,12 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_80099394.s") #ifdef NON_MATCHING // Register allocation nonsense +// https://decomp.me/scratch/Wv2MX void func_8009952C(MkTexture *arg0) { - u16 var_a1_2; + UNUSED u16 var_a1_2; s32 var_v0; s32 var_a1; - s32 temp_s3; + UNUSED s32 temp_s3; MkTexture *var_s1; struct_8018E118_entry *thing; @@ -4185,7 +3648,7 @@ void func_8009952C(MkTexture *arg0) { } if (var_a1 == 0) { dma_copy_base_729a30(var_s1->textureData, 0x00008000U, D_8018D9B4); - mio0decode(D_8018D9B4, &D_8018D9B0[gD_8018E118TotalSize]); + mio0decode(D_8018D9B4, (u8*)&D_8018D9B0[gD_8018E118TotalSize]); thing = &D_8018E118[gNumD_8018E118Entries]; thing->textureData = var_s1->textureData; @@ -4209,6 +3672,7 @@ void func_8009969C(MkTexture *arg0) { #ifdef NON_MATCHING // Register allocation nonsense +// https://decomp.me/scratch/hwAAp void func_800996BC(MkTexture *arg0, s32 arg1) { u16 var_a1_2; s32 var_v0; @@ -4249,7 +3713,7 @@ void func_800996BC(MkTexture *arg0, s32 arg1) { switch (arg1) { /* switch 1; irregular */ case -1: /* switch 1 */ case 1: /* switch 1 */ - mio0decode(D_8018D9B4, &D_8018D9B0[gD_8018E118TotalSize]); + mio0decode(D_8018D9B4, (u8*)&D_8018D9B0[gD_8018E118TotalSize]); break; case 0: /* switch 1 */ case 2: /* switch 1 */ @@ -4259,7 +3723,7 @@ void func_800996BC(MkTexture *arg0, s32 arg1) { var_v0_2 = 1; } if (1) {} - tkmk00decode(D_8018D9B4, D_8018D9B8, &D_8018D9B0[gD_8018E118TotalSize], var_v0_2); + tkmk00decode(D_8018D9B4, D_8018D9B8, (u8*)&D_8018D9B0[gD_8018E118TotalSize], var_v0_2); break; } thing = &D_8018E118[gNumD_8018E118Entries]; @@ -4279,7 +3743,7 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_800996BC.s") void func_80099958(MkTexture *arg0, s32 arg1, s32 arg2) { u16 var_a1; - u8 *thing; + UNUSED u8 *thing; MkTexture *temp_v0; temp_v0 = segmented_to_virtual_dupe(arg0); @@ -4323,12 +3787,12 @@ void func_80099A94(MkTexture *arg0, s32 arg1) { void func_80099AEC(void) { s8 var_s4; s32 var_s0; - s32 stackPadding0; - s32 stackPadding1; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; s32 huh; OSIoMesg sp68; OSMesg sp64; - u8 *test; + UNUSED u8 *test; s32 sp60; MkTexture *temp_s2; struct_8018E060_entry *var_s1; @@ -4355,7 +3819,7 @@ void func_80099AEC(void) { var_s0 = ((var_s0 / 8) * 8) + 8; } osInvalDCache(D_8018D9B4, var_s0); - osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); + osPiStartDma(&sp68, 0, 0, (uintptr_t)&_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); osRecvMesg(&gDmaMesgQueue, &sp64, 1); while (1) { if ((var_s1 + 1)->texture == NULL) { @@ -4372,9 +3836,9 @@ void func_80099AEC(void) { var_s0 = ((var_s0 / 8) * 8) + 8; } osInvalDCache(D_8018D9B4 + sp60*4, var_s0); - osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4 + sp60*4, var_s0, &gDmaMesgQueue); + osPiStartDma(&sp68, 0, 0, (uintptr_t)&_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4 + sp60*4, var_s0, &gDmaMesgQueue); } - mio0decode(D_8018D9B4, &D_8018D9B0[D_8018E118[var_s1->unk_4].offset]); + mio0decode(D_8018D9B4, (u8*)&D_8018D9B0[D_8018E118[var_s1->unk_4].offset]); var_s1->texture = NULL; var_s1++; if (var_s4 != 0) break; @@ -4393,9 +3857,9 @@ void func_80099AEC(void) { var_s0 = ((var_s0 / 8) * 8) + 8; } osInvalDCache(D_8018D9B4, var_s0); - osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); + osPiStartDma(&sp68, 0, 0, (uintptr_t)&_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); } - mio0decode(D_8018D9B4 + sp60*4, &D_8018D9B0[D_8018E118[var_s1->unk_4].offset]); + mio0decode(D_8018D9B4 + sp60*4, (u8*)&D_8018D9B0[D_8018E118[var_s1->unk_4].offset]); var_s1->texture = NULL; var_s1++; if (var_s4 != 0) break; @@ -4429,8 +3893,8 @@ void func_80099E60(MkTexture *arg0, s32 arg1, s32 arg2) { void func_80099EC4(void) { s8 var_s4; s32 var_s0; - s32 stackPadding0; - s32 stackPadding1; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; OSIoMesg sp68; OSMesg sp64; s32 huh; @@ -4455,7 +3919,7 @@ void func_80099EC4(void) { } osInvalDCache(D_8018D9B4, var_s0); test = &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)]; - osPiStartDma(&sp68, 0, 0, test, D_8018D9B4, var_s0, &gDmaMesgQueue); + osPiStartDma(&sp68, 0, 0, (uintptr_t)test, D_8018D9B4, var_s0, &gDmaMesgQueue); if ((var_s0 && var_s0) && var_s0) {} // osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); osRecvMesg(&gDmaMesgQueue, &sp64, 1); @@ -4474,7 +3938,7 @@ void func_80099EC4(void) { var_s0 = ((var_s0 / 8) * 8) + 8; } osInvalDCache(D_8018D9B4 + 0x1400, var_s0); - osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4 + 0x1400, var_s0, &gDmaMesgQueue); + osPiStartDma(&sp68, 0, 0, (uintptr_t)&_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4 + 0x1400, var_s0, &gDmaMesgQueue); } mio0decode(D_8018D9B4, D_802BFB80.arraySize4[var_s1->unk6][var_s1->unk4 / 2][(var_s1->unk4 % 2) + 2].pixel_index_array); var_s1->mk64Texture = NULL; @@ -4495,7 +3959,7 @@ void func_80099EC4(void) { var_s0 = ((var_s0 / 8) * 8) + 8; } osInvalDCache(D_8018D9B4, var_s0); - osPiStartDma(&sp68, 0, 0, &_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); + osPiStartDma(&sp68, 0, 0, (uintptr_t)&_textures_0aSegmentRomStart[SEGMENT_OFFSET(temp_s2->textureData)], D_8018D9B4, var_s0, &gDmaMesgQueue); } mio0decode(D_8018D9B4 + 0x1400, D_802BFB80.arraySize4[var_s1->unk6][var_s1->unk4 / 2][(var_s1->unk4 % 2) + 2].pixel_index_array); var_s1->mk64Texture = NULL; @@ -4512,7 +3976,7 @@ void func_8009A238(MkTexture *arg0, s32 arg1) { s32 var_a3; s32 temp_v1; u64 *sp24; - struct_8018E118_entry *temp_v0; + UNUSED struct_8018E118_entry *temp_v0; temp_v1 = D_8018E118[arg1].offset; sp24 = arg0->textureData; @@ -4521,7 +3985,7 @@ void func_8009A238(MkTexture *arg0, s32 arg1) { var_a3 = ((var_a3 / 8) * 8) + 8; } dma_copy_base_7fa3c0(sp24, var_a3, D_8018D9B4); - tkmk00decode(D_8018D9B4, D_8018D9B8, &D_8018D9B0[temp_v1], 1); + tkmk00decode(D_8018D9B4, D_8018D9B8, (u8*) &D_8018D9B0[temp_v1], 1); D_8018E118[arg1].textureData = sp24; } @@ -4749,7 +4213,7 @@ void func_8009A9FC(s32 arg0, s32 arg1, u32 arg2, s32 arg3) { color0 = &D_8018D9B0[D_8018E118[arg0].offset]; color1 = &D_8018D9B0[D_8018E118[arg1].offset]; - for (var_t1 = 0; var_t1 < arg2; var_t1++) { + for (var_t1 = 0; (u32) var_t1 < arg2; var_t1++) { temp_a0 = *color0++; red = (temp_a0 & 0xF800) >> 0xB; green = (temp_a0 & 0x7C0) >> 6; @@ -4796,13 +4260,13 @@ void func_8009AD78(s32 arg0, s32 arg1) { s32 green; s32 blue; s32 alpha; - s32 newred; - s32 newgreen; - s32 newblue; + UNUSED s32 newred; + UNUSED s32 newgreen; + UNUSED s32 newblue; u32 temp_t9; s32 var_v1; s32 size; - u16 temp_a0; + UNUSED u16 temp_a0; u16 *color; color = &D_8018D9B0[D_8018E118[arg0].offset]; @@ -4835,7 +4299,7 @@ void func_8009B0A4(s32 arg0, u32 arg1) { } color = &D_8018D9B0[D_8018E118[arg0].offset]; size = D_8018E118[arg0 + 1].offset - D_8018E118[arg0].offset; - for (var_s0 = 0; var_s0 < size; var_s0++) { + for (var_s0 = 0; var_s0 < (u32) size; var_s0++) { red = ((*color & 0xF800) >> 0xB) * 0x55; green = ((*color & 0x7C0) >> 6) * 0x4B; blue = ((*color & 0x3E) >> 1) * 0x5F; @@ -4927,11 +4391,11 @@ Gfx *func_8009B9D0(Gfx *displayListHead, MkTexture *textures) { bool found; s32 index; - found = FALSE; + found = false; for (index = 0; index < D_8018E768_SIZE; index++) { if (D_8018E768[index].textures == segmented_to_virtual_dupe(textures)) { displayList = D_8018E768[index].displayList; - found = TRUE; + found = true; break; } } @@ -4943,7 +4407,7 @@ Gfx *func_8009B9D0(Gfx *displayListHead, MkTexture *textures) { Gfx *func_8009BA74(Gfx *arg0, MkTexture *arg1, s32 column, s32 row) { MkTexture *temp_v0; - s32 temp_v0_3; + u8* temp_v0_3; s8 var_s4; temp_v0 = segmented_to_virtual_dupe(arg1); @@ -4970,9 +4434,9 @@ Gfx *func_8009BA74(Gfx *arg0, MkTexture *arg1, s32 column, s32 row) { gSPDisplayList(arg0++, D_02007728); break; } - temp_v0_3 = func_8009B8C4(temp_v0->textureData); + temp_v0_3 = (u8*)func_8009B8C4(temp_v0->textureData); if (temp_v0_3 != 0) { - if (D_8018E7B0 != 4) { + if (D_8018E7AC[4] != 4) { arg0 = func_80095E10(arg0, var_s4, 0x00000400, 0x00000400, 0, 0, temp_v0->width, temp_v0->height, temp_v0->dX + column, temp_v0->dY + row, temp_v0_3, temp_v0->width, temp_v0->height); } else { arg0 = func_800987D0(arg0, 0U, 0U, temp_v0->width, temp_v0->height, temp_v0->dX + column, temp_v0->dY + row, temp_v0_3, temp_v0->width, temp_v0->height); @@ -4985,7 +4449,7 @@ Gfx *func_8009BA74(Gfx *arg0, MkTexture *arg1, s32 column, s32 row) { Gfx *func_8009BC9C(Gfx *arg0, MkTexture *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { MkTexture *var_s0; - s32 temp_v0_3; + u8* temp_v0_3; var_s0 = segmented_to_virtual_dupe(arg1); while (var_s0->textureData != NULL) { @@ -4997,7 +4461,7 @@ Gfx *func_8009BC9C(Gfx *arg0, MkTexture *arg1, s32 arg2, s32 arg3, s32 arg4, s32 gSPDisplayList(arg0++, D_02007728); break; } - temp_v0_3 = func_8009B8C4(var_s0->textureData); + temp_v0_3 = (u8*) func_8009B8C4(var_s0->textureData); if (temp_v0_3 != 0) { switch (arg4) { /* switch 1; irregular */ case 1: /* switch 1 */ @@ -5021,7 +4485,7 @@ Gfx *func_8009BC9C(Gfx *arg0, MkTexture *arg1, s32 arg2, s32 arg3, s32 arg4, s32 Gfx *print_letter(Gfx *arg0, MkTexture *glyphTexture, f32 arg2, f32 arg3, s32 mode, f32 scaleX, f32 scaleY) { s32 var_v0; - s32 temp_v0_2; + u8 *temp_v0_2; f32 thing0; f32 thing1; MkTexture *var_s0; @@ -5050,16 +4514,16 @@ Gfx *print_letter(Gfx *arg0, MkTexture *glyphTexture, f32 arg2, f32 arg3, s32 mo if (var_v0 != 0) { var_s0++; } else { - temp_v0_2 = func_8009B8C4(var_s0->textureData); + temp_v0_2 = (u8 *) func_8009B8C4(var_s0->textureData); if (temp_v0_2 != 0) { switch (mode) { /* irregular */ case 1: gSPDisplayList(arg0++, D_020077F8); - arg0 = func_80095BD0(arg0, (u8 *) temp_v0_2, var_s0->dX + arg2, var_s0->dY + arg3, var_s0->width, var_s0->height, scaleX, scaleY); + arg0 = func_80095BD0(arg0, temp_v0_2, var_s0->dX + arg2, var_s0->dY + arg3, var_s0->width, var_s0->height, scaleX, scaleY); break; case 2: gSPDisplayList(arg0++, D_02007818); - arg0 = func_80095BD0(arg0, (u8 *) temp_v0_2, var_s0->dX + arg2, var_s0->dY + arg3, var_s0->width, var_s0->height, scaleX, scaleY); + arg0 = func_80095BD0(arg0, temp_v0_2, var_s0->dX + arg2, var_s0->dY + arg3, var_s0->width, var_s0->height, scaleX, scaleY); break; } } @@ -5071,7 +4535,7 @@ Gfx *print_letter(Gfx *arg0, MkTexture *glyphTexture, f32 arg2, f32 arg3, s32 mo Gfx *func_8009C204(Gfx *arg0, MkTexture *arg1, s32 arg2, s32 arg3, s32 arg4) { s32 var_s2; - s32 temp_t0; + u8 *temp_t0; MkTexture *var_s1; var_s1 = segmented_to_virtual_dupe(arg1); @@ -5092,7 +4556,7 @@ Gfx *func_8009C204(Gfx *arg0, MkTexture *arg1, s32 arg2, s32 arg3, s32 arg4) { gSPDisplayList(arg0++, D_02007728); break; } - temp_t0 = func_8009B8C4(var_s1->textureData); + temp_t0 = (u8 *)func_8009B8C4(var_s1->textureData); switch (arg4) { /* switch 1; irregular */ case 2: /* switch 1 */ arg0 = func_800963F0(arg0, var_s2, 0x00000400, 0x00000400, 0.5f, 0.5f, 0, 0, var_s1->width, var_s1->height, var_s1->dX + arg2, var_s1->dY + arg3, temp_t0, var_s1->width, var_s1->height); @@ -5138,14 +4602,14 @@ Gfx *func_8009C434(Gfx *arg0, struct_8018DEE0_entry *arg1, s32 arg2, s32 arg3, s if (1) { } if (1) { } if (1) { } } if (arg4 >= 0) { - arg0 = func_80097E58(arg0, var_t1, 0, 0U, var_s0->width, var_s0->height, var_s0->dX + arg2, var_s0->dY + arg3, &D_8018D9B0[var_t0], var_s0->width, var_s0->height, (u32) arg4); + arg0 = func_80097E58(arg0, var_t1, 0, 0U, var_s0->width, var_s0->height, var_s0->dX + arg2, var_s0->dY + arg3, (u8*)&D_8018D9B0[var_t0], var_s0->width, var_s0->height, (u32) arg4); } else { switch(arg4) { case -1: - arg0 = func_80095E10(arg0, var_t1, 0x00000400, 0x00000400, 0, 0, var_s0->width, var_s0->height, var_s0->dX + arg2, var_s0->dY + arg3, &D_8018D9B0[var_t0], var_s0->width, var_s0->height); + arg0 = func_80095E10(arg0, var_t1, 0x00000400, 0x00000400, 0, 0, var_s0->width, var_s0->height, var_s0->dX + arg2, var_s0->dY + arg3, (u8*)&D_8018D9B0[var_t0], var_s0->width, var_s0->height); break; case -2: - arg0 = func_800963F0(arg0, var_t1, 0x00000400, 0x00000400, 0.5f, 0.5f, 0, 0, var_s0->width, var_s0->height, var_s0->dX + arg2, var_s0->dY + arg3, &D_8018D9B0[var_t0], var_s0->width, var_s0->height); + arg0 = func_800963F0(arg0, var_t1, 0x00000400, 0x00000400, 0.5f, 0.5f, 0, 0, var_s0->width, var_s0->height, var_s0->dX + arg2, var_s0->dY + arg3, (u8*)&D_8018D9B0[var_t0], var_s0->width, var_s0->height); break; } } @@ -5156,7 +4620,7 @@ Gfx *func_8009C434(Gfx *arg0, struct_8018DEE0_entry *arg1, s32 arg2, s32 arg3, s Gfx *func_8009C708(Gfx *arg0, struct_8018DEE0_entry *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { s32 var_t0; - s32 thing; + UNUSED s32 thing; Gfx *temp; MkTexture *var_s1; @@ -5261,7 +4725,7 @@ void func_8009CA6C(s32 arg0) { void func_8009CBE4(s32 arg0, s32 arg1, s32 arg2) { RGBA16* color; s16 x, y, w, h; - s32 pad[3]; + UNUSED s32 pad[3]; struct UnkStruct_800DC5EC* unk; struct UnkStruct_8018E7E8 *size, *start; @@ -5324,7 +4788,7 @@ void func_8009CE1C(void) { void func_8009CE64(s32 arg0) { s32 thing; s32 var_a1; - s32 stackPadding0; + UNUSED s32 stackPadding0; struct_8018D9E0_entry *temp_v0; var_a1 = 0; @@ -5658,7 +5122,7 @@ void func_8009D77C(s32 arg0, s32 arg1, s32 arg2) { s32 someMath1; RGBA16 *temp_v0_2; s32 sp44; - s32 stackPadding0; + UNUSED s32 stackPadding0; if ((gModeSelection == 0) || (gModeSelection == 1)) { var_t3 = D_8018E7E8[arg0].x; @@ -5745,11 +5209,11 @@ void func_8009DAA8(void) { u32 var_t0; D_8018E7D0[4]++; - if (D_8018E7D0[4] >= (D_8018E7C8 + 1)) { + if (D_8018E7D0[4] >= (D_8018E7B8[4] + 1)) { func_8009CE64(4); } gDPPipeSync(gDisplayListHead++); - var_t0 = (D_8018E7D0[4] * 255) / D_8018E7C8; + var_t0 = (D_8018E7D0[4] * 255) / D_8018E7B8[4]; if ((s32) var_t0 >= 0x100) { var_t0 = 0x000000FF; } @@ -5766,8 +5230,8 @@ void func_8009DB8C(void) { D_8018E7D0[4]++; // why? var_v1 = D_8018E7D0[4]; - if (var_v1 >= D_8018E7C8) { - if (var_v1 == D_8018E7C8) { + if ((u32) var_v1 >= D_8018E7B8[4]) { + if ((u32) var_v1 == D_8018E7B8[4]) { for (var_s0 = 0; var_s0 < 0x4B0; var_s0++) { D_8018D9B8[var_s0] = 1; } @@ -5777,8 +5241,8 @@ void func_8009DB8C(void) { } else { var_s0 = 0; var_s3 = 0; - while (var_s3 < (0x4B0U / D_8018E7C8)) { - if ((D_8018D9B8[var_s0] == 0) && (random_int((0x4B0U - D_8018E7D0[4]) / D_8018E7C8) == 0)) { + while (var_s3 < (0x4B0U / D_8018E7B8[4])) { + if ((D_8018D9B8[var_s0] == 0) && (random_int((0x4B0U - D_8018E7D0[4]) / D_8018E7B8[4]) == 0)) { var_s3 += 1; D_8018D9B8[var_s0] = 1; } @@ -5800,7 +5264,7 @@ void func_8009DB8C(void) { } } gDPPipeSync(gDisplayListHead++); - var_v1 = (D_8018E7D0[4] * 255) / D_8018E7C8; + var_v1 = (D_8018E7D0[4] * 255) / D_8018E7B8[4]; if (var_v1 >= 0x100) { var_v1 = 0x000000FF; } @@ -5958,8 +5422,8 @@ void func_8009E2A8(s32 arg0) { } void func_8009E2F0(s32 arg0) { - s32 stackPadding0; - s32 stackPadding1; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; s32 someIndex; s32 temp_t7; f32 temp_t7_2; @@ -5972,7 +5436,7 @@ void func_8009E2F0(s32 arg0) { temp_t1 = &D_8018E7E8[arg0]; temp_t0 = &D_8018E810[arg0]; temp_v0 = &D_800E7AC8[temp_t7]; - if (D_8018E840[arg0] < 0x1BU) { + if ((u32) D_8018E840[arg0] < 0x1BU) { gDisplayListHead = draw_box(gDisplayListHead, temp_t1->x - (temp_t0->x / 2), temp_t1->y - (temp_t0->y / 2), temp_t1->x + (temp_t0->x / 2), temp_t1->y + (temp_t0->y / 2), temp_v0->red, temp_v0->green, temp_v0->blue, temp_v0->alpha); } else { temp_t7_2 = ((u32)(38 - D_8018E840[arg0])) / 11.0; @@ -5980,7 +5444,7 @@ void func_8009E2F0(s32 arg0) { } } D_8018E840[arg0]++; - if (D_8018E840[arg0] >= 0x26U) { + if ((u32) D_8018E840[arg0] >= 0x26U) { for (someIndex = 0; someIndex < 4; someIndex++) { D_8018E838[someIndex] = 0; } @@ -6012,13 +5476,13 @@ void func_8009E620(void) { void add_8018D9E0_entry(s32 type, s32 column, s32 row, s8 priority) { struct_8018D9E0_entry *var_ra; s32 stackPadding0; - s32 stackPadding1; - s32 stackPadding2; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; s32 temp_v0_6; s32 var_v0; s32 var_v1_3; s32 temp_a1; - MkTexture *mk64Texture; + UNUSED MkTexture *mk64Texture; MkAnimation *var_a0; s32 one = 1; @@ -6142,7 +5606,7 @@ void add_8018D9E0_entry(s32 type, s32 column, s32 row, s8 priority) { func_800996BC(D_800E7D4C[func_800B555C()], 0); func_800996BC(D_02004B74, 0); func_8009B0A4(0, 0x00000019); - func_8009B538(0, 0x00012C00, D_800E74E8[type - 0x23].red, D_800E74E8[type - 0x23].green, D_800E74E8[type - 0x23].blue); + func_8009B538(0, SCREEN_WIDTH * SCREEN_HEIGHT, D_800E74E8[type - 0x23].red, D_800E74E8[type - 0x23].green, D_800E74E8[type - 0x23].blue); break; case 0xF: var_ra->unk1C = 0x00000020; @@ -6441,10 +5905,10 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/add_8018D9E0_entry.s") void func_8009F5E0(struct_8018D9E0_entry *arg0) { s32 var_a1; s32 var_v1; - s32 stackPadding0; - s32 stackPadding1; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; MkTexture *sp9C; - s32 stackPadding2; + UNUSED s32 stackPadding2; s32 temp_a0; s32 temp_t2; s32 temp_t5; @@ -6452,12 +5916,12 @@ void func_8009F5E0(struct_8018D9E0_entry *arg0) { s32 temp_v1; char sp80[3]; s32 var_t0; - s32 var_a2; + UNUSED s32 var_a2; f32 why = 0.75f; s32 one = 1; f32 floatone = 1; - s32 stackPadding3; - s32 stackPadding4; + UNUSED s32 stackPadding3; + UNUSED s32 stackPadding4; f32 var_f0; if ((s8) arg0->visible != 0) { @@ -6485,11 +5949,11 @@ void func_8009F5E0(struct_8018D9E0_entry *arg0) { // Also sets the color of the shading at the top and bottom of the menu // Does not set color of the text in the table itself gDPSetPrimColor(gDisplayListHead++, 0, 0, 0x00, 0x00, 0x00, 0xFF); - gDisplayListHead = func_8009B9D0(gDisplayListHead, &D_020015A4); + gDisplayListHead = func_8009B9D0(gDisplayListHead, D_020015A4); gDPSetPrimColor(gDisplayListHead++, 0, 0, 0x32, 0x00, 0x00, 0xFF); - gDisplayListHead = func_8009B9D0(gDisplayListHead, &D_020015CC); + gDisplayListHead = func_8009B9D0(gDisplayListHead, D_020015CC); gDPSetPrimColor(gDisplayListHead++, 0, 0, 0x00, 0x32, 0x00, 0xFF); - gDisplayListHead = func_8009B9D0(gDisplayListHead, &D_02001630); + gDisplayListHead = func_8009B9D0(gDisplayListHead, D_02001630); gDPSetPrimColor(gDisplayListHead++, 0, 0, 0x32, 0x32, 0x00, 0xFF); gDisplayListHead = func_8009B9D0(gDisplayListHead, D_02001658); break; @@ -6969,7 +6433,7 @@ void func_800A08D8(u8 arg0, s32 column, s32 row) { s32 func_800A095C(char *someString, s32 len, s32 column, s32 row) { s32 tempColumn; s32 nonTerminatorCount; - + nonTerminatorCount = 0; tempColumn = column; for (; len != 0; len--, tempColumn += 8) { @@ -6986,7 +6450,7 @@ s32 func_800A095C(char *someString, s32 len, s32 column, s32 row) { // Same functionality, but doesn't match byte for byte :/ void func_800A09E0(struct_8018D9E0_entry *arg0) { s32 table_row, x = 0x20, y; - gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 319, 194); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH - 1, 194); for(table_row = 0; table_row < 9; table_row++) { if ((D_800E86D0[0] != 0) || ((table_row != 0) && (table_row != 8))) { y = (table_row * 0xA) + arg0->row; @@ -7009,7 +6473,7 @@ void func_800A0AD0(UNUSED struct_8018D9E0_entry *arg0) { } void func_800A0B80(struct_8018D9E0_entry *arg0) { - s32 temp_a2; + UNUSED s32 temp_a2; s32 temp_s1; s32 temp_s2; s32 var_s1; @@ -7048,7 +6512,7 @@ void func_800A0B80(struct_8018D9E0_entry *arg0) { } while (var_s0 != 0); } } - gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 319, 239); + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1); } void func_800A0DFC(void) { @@ -7066,7 +6530,7 @@ void func_800A0DFC(void) { } while (var_s0 != 0); } -void func_800A0EB8(struct_8018D9E0_entry *arg0, s32 arg1) { +void func_800A0EB8(UNUSED struct_8018D9E0_entry *arg0, s32 arg1) { s32 var_t1; s32 thing; Unk_D_800E70A0 *temp_v0; @@ -7285,15 +6749,15 @@ void func_800A1A20(struct_8018D9E0_entry *arg0) { } void func_800A1BE0(struct_8018D9E0_entry *arg0) { - s32 stackPadding0; - s32 stackPadding1; - s32 stackPadding2; - u8 *wut; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; + UNUSED char *wut; Unk_D_800E70A0 sp78; s32 var_s0; s32 var_s1; s32 var_s2; - s32 thing; + UNUSED s32 thing; CourseTimeTrialRecords *temp_s6; temp_s6 = &gSaveData.allCourseTimeTrialRecords.cupRecords[gTimeTrialDataCourseIndex / 4].courseRecords[gTimeTrialDataCourseIndex % 4]; @@ -7332,15 +6796,15 @@ void func_800A1BE0(struct_8018D9E0_entry *arg0) { } void func_800A1DE0(struct_8018D9E0_entry *arg0) { - s32 stackPadding0; - s32 stackPadding1; - s32 stackPadding2; - s32 stackPadding3; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; + UNUSED s32 stackPadding3; Unk_D_800E70A0 sp58; s32 var_a0; - s32 var_s0; + UNUSED s32 var_s0; s32 var_s1; - char *wut; + UNUSED char *wut; set_text_color(1); for (var_s1 = 0; var_s1 < 3; var_s1++) { @@ -7367,7 +6831,7 @@ void func_800A1DE0(struct_8018D9E0_entry *arg0) { func_800A66A8(arg0, &sp58); } -void func_800A1F30(struct_8018D9E0_entry *unused) { +void func_800A1F30(UNUSED struct_8018D9E0_entry *unused) { s32 row; s32 text; @@ -7378,28 +6842,27 @@ void func_800A1F30(struct_8018D9E0_entry *unused) { } #ifdef NON_MATCHING -// Lots and lots of register allocation differences -// No idea what the source of it is, permuter isn't having any luck either +// Register allocation stuff, minor stack diffs void func_800A1FB0(struct_8018D9E0_entry *arg0) { Unk_D_800E70A0 spE0; - s32 stackPadding0; - s32 stackPadding1; - s32 stackPadding2; - s32 stackPadding3; - s32 stackPadding4; - s32 stackPadding5; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; + UNUSED s32 stackPadding3; + UNUSED s32 stackPadding4; + UNUSED s32 stackPadding5; s32 var_s5; s32 var_s4; - s32 stackPadding6; - s8 spB8[3]; - s32 stackPadding7; - s32 stackPadding8; + UNUSED s32 stackPadding6; + char spB8[3]; + UNUSED s32 stackPadding7; + UNUSED s32 stackPadding8; s32 var_s1; - s8 spA8[3]; + char spA8[3]; s32 var_s2; - s32 temp_v0; - s32 stackPadding9; - s8 sp98[3]; + UNUSED s32 temp_v0; + UNUSED s32 stackPadding9; + char sp98[3]; struct_8018EE10_entry *var_v1; gDisplayListHead = draw_box(gDisplayListHead, 0, 0, 0x00000140, 0x000000F0, 0, 0, 0, 0x00000064); @@ -7408,12 +6871,12 @@ void func_800A1FB0(struct_8018D9E0_entry *arg0) { case 0x16: /* switch 1 */ case 0x17: /* switch 1 */ case 0x18: /* switch 1 */ - for (var_s2 = 0; var_s2 < 4; var_s2++) { - set_text_color_rainbow_if_selected(D_8018EDEC - 0x15, var_s2, TEXT_YELLOW); - func_80093324(0x00000032, 0x55 + (0x23 * var_s2), D_800E7868[var_s2], 0, 0.9f, 1.0f); - if (var_s2 == (D_8018EDEC - 0x15)) { + for (stackPadding0 = 0; stackPadding0 < 4; stackPadding0++) { + set_text_color_rainbow_if_selected(D_8018EDEC - 0x15, stackPadding0, 3); + func_80093324(0x00000032, 0x55 + (0x23 * stackPadding0), D_800E7868[stackPadding0], 0, 0.9f, 1.0f); + if (stackPadding0 == (D_8018EDEC - 0x15)) { spE0.column = 0x0032; - spE0.row = 0x55 + (0x23 * var_s2); + spE0.row = 0x55 + (0x23 * stackPadding0); } } set_text_color(1); @@ -7422,22 +6885,22 @@ void func_800A1FB0(struct_8018D9E0_entry *arg0) { case 0x1E: /* switch 1 */ case 0x1F: /* switch 1 */ set_text_color(3); - for (var_s2 = 0; var_s2 < 3; var_s2++) { - func_80093324(0x00000028, 0x55 + (0x14 * var_s2), D_800E7878[var_s2], 0, 1.0f, 1.0f); + for (stackPadding0 = 0; stackPadding0 < 3; stackPadding0++) { + func_80093324(0x00000028, 0x55 + (0x14 * stackPadding0), D_800E7878[stackPadding0], 0, 1.0f, 1.0f); } - for (var_s2 = 0; var_s2 < 2; var_s2++) { - set_text_color_rainbow_if_selected(D_8018EDEC - 0x1E, var_s2, TEXT_GREEN); - func_80093324(0x00000084, 0x96 + (0x19 * var_s2), D_800E7840[var_s2], 0, 1.0f, 1.0f); - if (var_s2 == (D_8018EDEC - 0x1E)) { + for (stackPadding0 = 0; stackPadding0 < 2; stackPadding0++) { + set_text_color_rainbow_if_selected(D_8018EDEC - 0x1E, stackPadding0, 1); + func_80093324(0x00000084, 0x96 + (0x19 * stackPadding0), D_800E7840[stackPadding0], 0, 1.0f, 1.0f); + if (stackPadding0 == (D_8018EDEC - 0x1E)) { spE0.column = 0x0084; - spE0.row = 0x96 + (0x19 * var_s2); + spE0.row = 0x96 + (0x19 * stackPadding0); } } break; case 0x20: /* switch 1 */ set_text_color(3); - for (var_s2 = 0; var_s2 < 3; var_s2++) { - func_80093324(0x00000032, 0x55 + (0x14 * var_s2), D_800E7884[var_s2], 0, 1.0f, 1.0f); + for (stackPadding0 = 0; stackPadding0 < 3; stackPadding0++) { + func_80093324(0x00000032, 0x55 + (0x14 * stackPadding0), D_800E7884[stackPadding0], 0, 1.0f, 1.0f); } break; case 0x2A: /* switch 1 */ @@ -7446,8 +6909,8 @@ void func_800A1FB0(struct_8018D9E0_entry *arg0) { case 0x2D: /* switch 1 */ set_text_color(2); var_s1 = D_8018EDEC - 0x2A; - for (var_s2 = 0; var_s2 < 3; var_s2++) { - func_80093324(0x00000032, 0x55 + (0x14 * var_s2), D_800E78D0[(var_s1 * 3) + var_s2], 0, 0.9f, 0.9f); + for (stackPadding0 = 0; stackPadding0 < 3; stackPadding0++) { + func_80093324(0x00000032, 0x55 + (0x14 * stackPadding0), D_800E78D0[(var_s1 * 3) + stackPadding0], 0, 0.9f, 0.9f); } break; case 0x34: /* switch 1 */ @@ -7456,23 +6919,23 @@ void func_800A1FB0(struct_8018D9E0_entry *arg0) { case 0x37: /* switch 1 */ set_text_color(2); var_s1 = D_8018EDEC - 0x34; - for (var_s2 = 0; var_s2 < 4; var_s2++) { - func_80093324(0x00000023, 0x55 + (0x14 * var_s2), D_800E7890[(var_s1 * 4) + var_s2], 0, 0.8f, 0.8f); + for (stackPadding0 = 0; stackPadding0 < 4; stackPadding0++) { + func_80093324(0x00000023, 0x55 + (0x14 * stackPadding0), D_800E7890[(var_s1 * 4) + stackPadding0], 0, 0.8f, 0.8f); } break; case 0x41: /* switch 1 */ case 0x42: /* switch 1 */ set_text_color(2); var_s1 = D_8018EDEC - 0x41; - for (var_s2 = 0; var_s2 < 3; var_s2++) { - func_80093324(0x00000041, 0x55 + (0x14 * var_s2), D_800E7900[(var_s1 * 3) + var_s2], 0, 0.9f, 0.9f); + for (stackPadding0 = 0; stackPadding0 < 3; stackPadding0++) { + func_80093324(0x00000041, 0x55 + (0x14 * stackPadding0), D_800E7900[(var_s1 * 3) + stackPadding0], 0, 0.9f, 0.9f); } break; case 0x46: /* switch 1 */ case 0x47: /* switch 1 */ set_text_color(3); - for (var_s2 = 0; var_s2 < 3; var_s2++) { - func_80093324(0x00000050, 0x55 + (0x14 * var_s2), D_800E7A48[var_s2], 0, 1.0f, 1.0f); + for (stackPadding0 = 0; stackPadding0 < 3; stackPadding0++) { + func_80093324(0x00000050, 0x55 + (0x14 * stackPadding0), D_800E7A48[stackPadding0], 0, 1.0f, 1.0f); } break; case 0x28: /* switch 1 */ @@ -7516,7 +6979,7 @@ void func_800A1FB0(struct_8018D9E0_entry *arg0) { if (var_s1 == 0) { var_v1 = &D_8018EE10[var_s2]; } else { - var_v1 = &D_8018D9C0[var_s2]; + var_v1 = &((struct_8018EE10_entry*)D_8018D9C0)[var_s2]; } if (var_v1->ghostDataSaved == 0) { func_80093324(0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), D_800E7A44, 0, 0.5f, 0.5f); @@ -7552,7 +7015,7 @@ void func_800A1FB0(struct_8018D9E0_entry *arg0) { if (var_s1 == 0) { var_v1 = &D_8018EE10[var_s2]; } else { - var_v1 = &D_8018D9C0[var_s2]; + var_v1 = &((struct_8018EE10_entry*)D_8018D9C0)[var_s2]; } if (var_v1->ghostDataSaved == 0) { func_80093324(0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), D_800E7A44, 0, 0.5f, 0.5f); @@ -7561,6 +7024,7 @@ void func_800A1FB0(struct_8018D9E0_entry *arg0) { } } } + // Register allocation diffs here for (var_s2 = 0; var_s2 < 2; var_s2++) { if (var_s2 == (D_8018EDEC - 0x38)) { spE0.column = 0x6E + (0x32 * var_s2); @@ -7573,16 +7037,16 @@ void func_800A1FB0(struct_8018D9E0_entry *arg0) { case 0x3A: /* switch 1 */ case 0x3B: /* switch 1 */ case 0x3C: /* switch 1 */ - temp_v0 = (D_8018EDEC - 0x3A) / 2; + var_s5 = (D_8018EDEC - 0x3A) / 2; set_text_color(2); - draw_text(0x000000A0, 0x00000055, D_800E7938[temp_v0], 0, 1.0f, 1.0f); + draw_text(0x000000A0, 0x00000055, D_800E7938[var_s5], 0, 1.0f, 1.0f); for (var_s1 = 0; var_s1 < 2; var_s1++) { set_text_color(3); draw_text(0x5C + (0x82 * var_s1), 0x0000007D, D_800E7918[var_s1], 0, 0.75f, 0.75f); for (var_s2 = 0; var_s2 < 2; var_s2++) { if (var_s1 == 0) { if (var_s2 == arg0->unk1C) { - if (temp_v0 == 0) { + if (var_s5 == 0) { set_text_color(2); } else { set_text_color(gGlobalTimer % 3); @@ -7600,7 +7064,7 @@ void func_800A1FB0(struct_8018D9E0_entry *arg0) { if (var_s1 == 0) { var_v1 = &D_8018EE10[var_s2]; } else { - var_v1 = &D_8018D9C0[var_s2]; + var_v1 = &((struct_8018EE10_entry*)D_8018D9C0)[var_s2]; } if (var_v1->ghostDataSaved == 0) { func_80093324(0x2A + (var_s1 * 0x89), 0x96 + (0x1E * var_s2), D_800E7A44, 0, 0.5f, 0.5f); @@ -7666,8 +7130,8 @@ void func_800A2D1C(struct_8018D9E0_entry *arg0) { void func_800A2EB8(struct_8018D9E0_entry *arg0) { s8 sp70[8]; - s32 stackPadding0; - s8 sp68[3]; + UNUSED s32 stackPadding0; + char sp68[3]; s32 temp_s0; s32 var_a0; s32 var_s2; @@ -7706,13 +7170,13 @@ void func_800A2EB8(struct_8018D9E0_entry *arg0) { } void func_800A32B4(s32 arg0, s32 arg1, s32 characterId, s32 rank) { - s32 stackPadding0; + UNUSED s32 stackPadding0; f32 sp50; - s32 stackPadding1; - s32 stackPadding2; - s32 stackPadding3; - s32 stackPadding4; - s8 sp3C[4]; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; + UNUSED s32 stackPadding3; + UNUSED s32 stackPadding4; + char sp3C[4]; sp50 = gTimePlayerLastTouchedFinishLine[gGPCurrentRacePlayerIdByRank[rank]]; convert_number_to_ascii(rank + 1, sp3C); @@ -7732,13 +7196,13 @@ void func_800A32B4(s32 arg0, s32 arg1, s32 characterId, s32 rank) { void func_800A34A8(struct_8018D9E0_entry *arg0) { s8 sp80[8]; - s32 stackPadding0; - s8 sp78[3]; - s32 stackPadding1; + UNUSED s32 stackPadding0; + char sp78[3]; + UNUSED s32 stackPadding1; s32 var_a0; s32 var_v0; s32 var_v1; - s32 stackPadding2; + UNUSED s32 stackPadding2; s32 temp_s0_3; s32 rank; s32 test; @@ -7824,8 +7288,8 @@ void func_800A3A10(s8 *arg0) { s32 temp_t1; s32 var_a1; s32 var_v0; - s32 thing1; - s8 *new_var; + UNUSED s32 thing1; + UNUSED s8 *new_var; for (var_v0 = 0; var_v0 < 8; var_v0++) { arg0[var_v0] = var_v0; @@ -7852,7 +7316,7 @@ void func_800A3A10(s8 *arg0) { } void func_800A3ADC(struct_8018D9E0_entry *arg0, s32 arg1, s32 arg2, s32 characterId, s32 arg4, s8 *arg5) { - s32 stackPadding0; + UNUSED s32 stackPadding0; s32 wut; char sp34[4]; s32 phi_v1; @@ -7902,12 +7366,12 @@ void func_800A3C84(struct_8018D9E0_entry *arg0) { } void func_800A3E60(struct_8018D9E0_entry *arg0) { - s32 stackPadding0; + UNUSED s32 stackPadding0; Unk_D_800E70A0 sp84; - s32 stackPadding1; - s32 stackPadding2; - s32 stackPadding3; - s32 stackPadding4; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; + UNUSED s32 stackPadding3; + UNUSED s32 stackPadding4; s32 var_v0; s32 var_v1; s32 var_s1; @@ -8047,9 +7511,9 @@ void func_800A3E60(struct_8018D9E0_entry *arg0) { } void func_800A4550(s32 lapNumber, s32 column, s32 row) { - s32 stackPadding0; + UNUSED s32 stackPadding0; s32 sp40; - s32 stackPadding1; + UNUSED s32 stackPadding1; s32 textColor; char sp34[3]; struct_8018D9E0_entry *temp_v0_2; @@ -8094,7 +7558,7 @@ void func_800A4550(s32 lapNumber, s32 column, s32 row) { // seems wrong for several reasons void func_800A474C(s32 recordType, s32 column, s32 row) { - s32 stackPadding0; + UNUSED s32 stackPadding0; u32 timeRecord; s32 textColor; s32 temp_t0; @@ -8102,7 +7566,6 @@ void func_800A474C(s32 recordType, s32 column, s32 row) { char sp38[3]; struct_8018D9E0_entry *temp_v0; s32 sp30; - if (gGamestate == 4) { sp30 = 0; } else { @@ -8131,10 +7594,14 @@ void func_800A474C(s32 recordType, s32 column, s32 row) { } else { textColor = TEXT_YELLOW; } - } else if (temp_v0->unk20 != 0) { - textColor = gGlobalTimer % 3; } else { + // huh? textColor = TEXT_YELLOW; + if (temp_v0->unk20 != 0) { + textColor = gGlobalTimer; + textColor %= 3; + } else { + } } } else { textColor = TEXT_YELLOW; @@ -8144,12 +7611,13 @@ void func_800A474C(s32 recordType, s32 column, s32 row) { get_time_record_minutes(temp_t0, sp38); func_800939C8(column + 0x27, row, sp38, 0, 0.65f, 0.65f); func_80093324(column + 0x32, row, "'", 0, 0.65f, 0.65f); + if (!textColor) {} get_time_record_seconds(temp_t0, sp38); func_800939C8(column + 0x3B, row, sp38, 0, 0.65f, 0.65f); func_80093324(column + 0x46, row, "\"", 0, 0.65f, 0.65f); get_time_record_centiseconds(temp_t0, sp38); func_800939C8(column + 0x50, row, sp38, 0, 0.65f, 0.65f); - if (temp_t0 < 0x927C0U) { + if (temp_t0 < 0x927C0) { characterId = timeRecord >> 0x14; } else { characterId = 8; @@ -8161,7 +7629,7 @@ GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A474C.s") #endif void func_800A4A24(struct_8018D9E0_entry *arg0) { - s32 stackPadding0; + UNUSED s32 stackPadding0; s32 temp_t0; s32 temp_t1; s32 temp_t2; @@ -8196,9 +7664,9 @@ void render_pause_menu(struct_8018D9E0_entry *arg0) { } void render_pause_menu_time_trials(struct_8018D9E0_entry *arg0) { - s32 stackPadding0; - s32 stackPadding1; - s32 stackPadding2; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; char sp68[3]; s32 temp_a0; s32 var_s0; @@ -8331,7 +7799,7 @@ void func_800A54EC(void) { struct_8018D9E0_entry *sp48; s32 whyTheSequel; s32 why; - Unk_D_800E70A0 *huh; + UNUSED Unk_D_800E70A0 *huh; if (gIsGamePaused == 0) return; @@ -8365,15 +7833,15 @@ void func_800A54EC(void) { void func_800A5738(struct_8018D9E0_entry *arg0) { Unk_D_800E70A0 sp98; - s32 stackPadding0; - s32 stackPadding1; - s32 stackPadding2; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; f32 why; char sp84[3]; - s32 stackPadding3; - s32 stackPadding4; + UNUSED s32 stackPadding3; + UNUSED s32 stackPadding4; s32 temp_a0; - s32 var_v1; + UNUSED s32 var_v1; s32 var_s1; s32 var_s2; s32 temp_v0; @@ -8525,7 +7993,7 @@ void func_800A5738(struct_8018D9E0_entry *arg0) { void func_800A6034(struct_8018D9E0_entry *arg0) { char *text; - if (D_801657E8 != TRUE) { + if (D_801657E8 != true) { gDPSetPrimColor(gDisplayListHead++, 0, 0, 0x00, 0x00, 0x00, arg0->unk1C); text = gCupNames[D_800DC540]; set_text_color(TEXT_BLUE_GREEN_RED_CYCLE_2); @@ -8537,11 +8005,11 @@ void func_800A6034(struct_8018D9E0_entry *arg0) { } void func_800A6154(struct_8018D9E0_entry *arg0) { - s32 stackPadding0; - s32 stackPadding1; - s32 stackPadding2; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; Unk_D_800E70A0 sp6C; - s32 stackPadding3; + UNUSED s32 stackPadding3; s32 var_s0; s32 var_s1; @@ -8571,11 +8039,11 @@ void func_800A6154(struct_8018D9E0_entry *arg0) { } void func_800A638C(struct_8018D9E0_entry *arg0) { - s32 temp_a0; + UNUSED s32 temp_a0; s32 var_a1; - s32 var_s0; + UNUSED s32 var_s0; s32 var_s1; - s8 **var_s2; + UNUSED s8 **var_s2; if (arg0->cursor == 0) { gDisplayListHead = draw_box(gDisplayListHead, 0, 0, 0x0000013F, 0x000000EF, 0, 0, 0, arg0->unk1C); @@ -8623,6 +8091,7 @@ void func_800A638C(struct_8018D9E0_entry *arg0) { } #ifdef NON_MATCHING +void guMtxCatL(Mtx *, Mtx *, Mtx *); // https://decomp.me/scratch/GUqCE // All the math stuff at the top is messed up void func_800A66A8(struct_8018D9E0_entry *arg0, Unk_D_800E70A0 *arg1) { @@ -8668,13 +8137,13 @@ void func_800A66A8(struct_8018D9E0_entry *arg0, Unk_D_800E70A0 *arg1) { GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A66A8.s") #endif -void func_800A69C8(struct_8018D9E0_entry *arg0) { +void func_800A69C8(UNUSED struct_8018D9E0_entry *arg0) { Unk_D_800E70A0 *thing; - s32 stackPadding1; + UNUSED s32 stackPadding1; s32 var_s0; - s8 sp74[5]; + char sp74[5]; s32 var_v1; - s8 *temp_s3; + char *temp_s3; u8 *var_s4; for (var_s0 = 0; var_s0 < gPlayerCount; var_s0++) { @@ -8709,7 +8178,7 @@ void func_800A69C8(struct_8018D9E0_entry *arg0) { text_draw(0x0000009E, D_800E7300[0].row + 0x6D, "ー", 0, 1.0f, 1.0f); } -void func_800A6BEC(struct_8018D9E0_entry *arg0) { +void func_800A6BEC(UNUSED struct_8018D9E0_entry *arg0) { s32 var_s0; for (var_s0 = 0; var_s0 < gPlayerCount; var_s0++) { @@ -8724,7 +8193,7 @@ void func_800A6BEC(struct_8018D9E0_entry *arg0) { } } -void func_800A6CC0(struct_8018D9E0_entry *arg0) { +void func_800A6CC0(UNUSED struct_8018D9E0_entry *arg0) { s32 var_s0; for (var_s0 = 0; var_s0 < gPlayerCount; var_s0++) { @@ -8740,9 +8209,9 @@ void func_800A6CC0(struct_8018D9E0_entry *arg0) { } void func_800A6D94(s32 arg0, s32 arg1, u8 *arg2) { - s32 stackPadding0; + UNUSED s32 stackPadding0; Unk_D_800E70A0 *stackPadding1; - s8 sp30[5]; + char sp30[5]; s32 var_v0; f32 otherThing; s32 thing; @@ -8765,7 +8234,7 @@ void func_800A6D94(s32 arg0, s32 arg1, u8 *arg2) { // The s/n/ï½’/ー are not ASCII characters, they're EUC-JP characters void func_800A6E94(s32 arg0, s32 arg1, u8 *arg2) { - s32 stackPadding0; + UNUSED s32 stackPadding0; u8 *temp_v0; Unk_D_800E70A0 *temp_s0; char sp40[3]; @@ -8884,11 +8353,11 @@ void func_800A75A0(struct_8018D9E0_entry *arg0) { } void func_800A761C(struct_8018D9E0_entry *arg0) { - s32 stackPadding0; + UNUSED s32 stackPadding0; s32 sp48; s32 sp44; - s32 stackPadding1; - s8 sp3C[3]; + UNUSED s32 stackPadding1; + char sp3C[3]; s32 temp_a0; temp_a0 = D_802874D8.unk1D + 1; @@ -9493,12 +8962,12 @@ void func_800A86E8(struct_8018D9E0_entry *arg0) { // Credit for the use of ternary operators goes to LLONSIT void func_800A874C(struct_8018D9E0_entry *arg0) { - s32 stackPadding0; + UNUSED s32 stackPadding0; char sp58[3]; - s32 stackPadding1; - s32 stackPadding2; + UNUSED s32 stackPadding1; + UNUSED s32 stackPadding2; s32 temp_s1; - u32 var_v0; + UNUSED u32 var_v0; u32 var_s2; set_text_color(1); var_s2 = arg0->type == 0x00000065 ? func_800B4E24(0) : func_800B4F2C(); @@ -9511,7 +8980,7 @@ void func_800A874C(struct_8018D9E0_entry *arg0) { func_80093324(arg0->column + 0x20, arg0->row + 0x21, "\"", 0, 0.6f, 0.65f); get_time_record_centiseconds(temp_s1, sp58); text_draw(arg0->column + 0x29, arg0->row + 0x21, sp58, 0, 0.6f, 0.65f); - var_s2 = temp_s1 < 0x927C0U ? var_s2 >> 0x14 : 8; + var_s2 = (u32)temp_s1 < 0x927C0U ? var_s2 >> 0x14 : 8; func_800936B8(arg0->column + 0x60, arg0->row + 0x21, D_800E76A8[var_s2], 0, 0.6f, 0.65f); } @@ -9602,8 +9071,8 @@ void func_800A8EC0(struct_8018D9E0_entry *arg0) { } } -void func_800A8F48(struct_8018D9E0_entry *arg0) { - Gfx *temp_v0_2; +void func_800A8F48(UNUSED struct_8018D9E0_entry *arg0) { + UNUSED Gfx *temp_v0_2; Unk_D_800E70A0 *temp_v0; s16 temp_s0; s16 temp_v1; @@ -9848,161 +9317,53 @@ void func_800A9710(struct_8018D9E0_entry *arg0) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 3c194b80148d233bd38495ca3456dc7b201a0302 on Mar-22-2024 -void func_800A97BC(struct_8018D9E0_entry *arg0) { - s32 temp_t4; - s32 temp_t7; - s8 *var_v1; - s8 *var_v1_2; - s8 temp_v0; - s8 temp_v0_2; - s8 temp_v0_3; - s8 temp_v0_4; - s8 temp_v0_5; - s8 temp_v0_6; - s8 temp_v0_7; - s8 temp_v0_8; +void func_800A97BC(struct_8018D9E0_entry* arg0) { + s32 i; - if (*D_800E86D0 != 1) { - if (*D_800E86D0 != 2) { + switch(*D_800E86D0) { + case 1: + arg0->row -= 2; + if (arg0->row < 0x60) { + arg0->row = 0x69; *D_800E86D0 = 0; - return; + for (i = 0; i < 8; i++) { + if (i < 7) { + D_800E86C4[i] = D_800E86C4[i + 1]; + } else { + if ((D_800E86C4[i - 1] == 0x10) || (D_800E86C4[i - 1] == 0)) { + D_800E86C4[i] = 0; + } else { + D_800E86C4[i] = D_800E86C4[i - 1] + 1; + } + } + } + D_800E86C4[0] = D_800E86C4[8] = 0; } - temp_t4 = arg0->row + 2; - arg0->row = temp_t4; - if (temp_t4 >= 0x73) { - arg0->row = 0x00000069; - *D_800E86D0 = 0; - var_v1 = D_800E86C4 + 8; - do { - if ((u32) var_v1 >= (u32) (D_800E86C4 + 2)) { - var_v1->unk0 = var_v1->unk-1; - } else { - temp_v0 = var_v1->unk1; - if ((temp_v0 == 1) || (temp_v0 == 0)) { - var_v1->unk0 = 0; - } else { - var_v1->unk0 = temp_v0 - 1; - } - } - if ((u32) var_v1 >= (u32) (D_800E86C4 + 3)) { - var_v1->unk-1 = (s8) var_v1->unk-2; - } else { - temp_v0_2 = var_v1->unk0; - if ((temp_v0_2 == 1) || (temp_v0_2 == 0)) { - var_v1->unk-1 = 0; - } else { - var_v1->unk-1 = (s8) (temp_v0_2 - 1); - } - } - if ((u32) var_v1 >= (u32) (D_800E86C4 + 4)) { - var_v1->unk-2 = (s8) var_v1->unk-3; - } else { - temp_v0_3 = var_v1->unk-1; - if ((temp_v0_3 == 1) || (temp_v0_3 == 0)) { - var_v1->unk-2 = 0; - } else { - var_v1->unk-2 = (s8) (temp_v0_3 - 1); - } - } - if ((u32) var_v1 >= (u32) (D_800E86C4 + 5)) { - var_v1->unk-3 = (s8) var_v1->unk-4; - } else { - temp_v0_4 = var_v1->unk-2; - if ((temp_v0_4 == 1) || (temp_v0_4 == 0)) { - var_v1->unk-3 = 0; - } else { - var_v1->unk-3 = (s8) (temp_v0_4 - 1); - } - } - var_v1 -= 4; - } while (var_v1 != D_800E86C4); - // for (var_v1 = 0; var_v1 < 8; var_v1++) { - // huh = 8 - var_v1; - // if (D_800E86C4[huh] >= D_800E86C4[var_v1 + 2]) { - // D_800E86C4[huh] = D_800E86C4[huh - 1]; - // } else { - // if ((D_800E86C4[huh + 1] == 1) || (D_800E86C4[huh + 1] == 0)) { - // D_800E86C4[huh] = 0; - // } else { - // D_800E86C4[huh] = D_800E86C4[huh + 1] + 1; - // } - // } - // } - D_800E86C4->unk8 = 0; - D_800E86C4->unk0 = D_800E86C4->unk8; - } - } else { - temp_t7 = arg0->row - 2; - arg0->row = temp_t7; - if (temp_t7 < 0x60) { - arg0->row = 0x00000069; + break; + case 2: + arg0->row += 2; + if (arg0->row >= 0x73) { + arg0->row = 0x69; *D_800E86D0 = 0; - var_v1_2 = D_800E86C4; - do { - if ((u32) var_v1_2 < (u32) (D_800E86C4 + 7)) { - var_v1_2->unk0 = var_v1_2->unk1; + for (i = 8; i > 0; i--) { + if (i > 1) { + D_800E86C4[i] = D_800E86C4[i - 1]; } else { - temp_v0_5 = var_v1_2->unk-1; - if ((temp_v0_5 == 0x10) || (temp_v0_5 == 0)) { - var_v1_2->unk0 = 0; + if ((D_800E86C4[i + 1] == 1) || (D_800E86C4[i + 1] == 0)) { + D_800E86C4[i] = 0; } else { - var_v1_2->unk0 = temp_v0_5 + 1; + D_800E86C4[i] = D_800E86C4[i+1] - 1; } } - if ((u32) var_v1_2 < (u32) (D_800E86C4 + 6)) { - var_v1_2->unk1 = (s8) var_v1_2->unk2; - } else { - temp_v0_6 = var_v1_2->unk0; - if ((temp_v0_6 == 0x10) || (temp_v0_6 == 0)) { - var_v1_2->unk1 = 0; - } else { - var_v1_2->unk1 = (s8) (temp_v0_6 + 1); - } - } - if ((u32) var_v1_2 < (u32) (D_800E86C4 + 5)) { - var_v1_2->unk2 = (s8) var_v1_2->unk3; - } else { - temp_v0_7 = var_v1_2->unk1; - if ((temp_v0_7 == 0x10) || (temp_v0_7 == 0)) { - var_v1_2->unk2 = 0; - } else { - var_v1_2->unk2 = (s8) (temp_v0_7 + 1); - } - } - if ((u32) var_v1_2 < (u32) (D_800E86C4 + 4)) { - var_v1_2->unk3 = (s8) var_v1_2->unk4; - } else { - temp_v0_8 = var_v1_2->unk2; - if ((temp_v0_8 == 0x10) || (temp_v0_8 == 0)) { - var_v1_2->unk3 = 0; - } else { - var_v1_2->unk3 = (s8) (temp_v0_8 + 1); - } - } - var_v1_2 += 4; - } while (var_v1_2 != (D_800E86C4 + 8)); - // for (var_v1 = 0; var_v1 < 8; var_v1++) { - // if (D_800E86C4[var_v1] < D_800E86C4[7 - var_v1]) { - // D_800E86C4[var_v1] = D_800E86C4[var_v1 + 1]; - // } else { - // if ((D_800E86C4[var_v1 - 1] == 16) || (D_800E86C4[var_v1 - 1] == 0)) { - // D_800E86C4[var_v1] = 0; - // } else { - // D_800E86C4[var_v1] = D_800E86C4[var_v1 - 1] + 1; - // } - // } - // } - D_800E86C4->unk8 = 0; - D_800E86C4->unk0 = D_800E86C4->unk8; - } + } + D_800E86C4[0] = D_800E86C4[8] = 0; + break; + default: + *D_800E86D0 = 0; + break; } -} -#else -GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A97BC.s") -#endif +}} // todo: <-- fix these brackets // Don't know if this belongs here or inside func_800A9A98 // as a `static const`. But this matches so we'll leave @@ -10322,7 +9683,7 @@ void func_800AA2EC(struct_8018D9E0_entry *arg0) { if (gControllerPak1State != 0) { var_t1 = 0; - switch (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak1FileNote)) { /* switch 1; irregular */ + switch (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8*)gGameName, (u8*)gExtCode, &gControllerPak1FileNote)) { /* switch 1; irregular */ case 5: /* switch 1 */ break; case 0: /* switch 1 */ @@ -10362,7 +9723,7 @@ void func_800AA2EC(struct_8018D9E0_entry *arg0) { } else { gControllerPak1State = 1; } - if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak1FileNote) == 0) { + if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8*)gGameName, (u8*)gExtCode, &gControllerPak1FileNote) == 0) { arg0->cursor = 1; break; } @@ -10417,7 +9778,7 @@ void func_800AA69C(struct_8018D9E0_entry *arg0) { s32 var_a0; s32 var_v0; s32 temp_a0; - s32 stackPadding0; + UNUSED s32 stackPadding0; temp_a0 = arg0->type - 0x2B; temp_v0 = func_800AAFCC(arg0->type - 0x2B); @@ -10554,11 +9915,11 @@ void func_800AAB90(struct_8018D9E0_entry *arg0) { } void func_800AAC18(struct_8018D9E0_entry *arg0) { - s32 stackPadding0; - s32 stackPadding1; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; s32 temp_a1; s32 temp_v0; - s32 stackPadding2; + UNUSED s32 stackPadding2; Unk_D_800E70A0 *var_t0; temp_a1 = arg0->type - 0x2B; @@ -10643,7 +10004,7 @@ struct_8018D9E0_entry *func_800AAE68(void) { } // Something VERY wrong has occurred - while(TRUE); + while(true); escape: return entry; } @@ -10663,7 +10024,7 @@ struct_8018D9E0_entry *func_800AAEB4(s32 arg0) { } // Something VERY wrong has occurred - while(TRUE); + while(true); escape: return entry; } @@ -10673,7 +10034,7 @@ escape: * search for. If no entry with that "type" is found, this * function will enter a `while(1)` loop, hard-locking the * game. - * + * * In practice this never appears to happen, but that is * probably as much a matter of luck as it is good * reasoning on the original author(s) part. @@ -10687,7 +10048,7 @@ struct_8018D9E0_entry *find_8018D9E0_entry_dupe(s32 arg0) { } // Something VERY wrong has occurred - while(TRUE); + while(true); escape: return entry; } @@ -11575,7 +10936,7 @@ void func_800ACF40(struct_8018D9E0_entry *arg0) { s32 temp_a2; s32 temp_a1; s32 var_v1; - s32 stackPadding0; + UNUSED s32 stackPadding0; temp_a2 = arg0->type - 0xB1; temp_a1 = D_800EFD64[gCharacterSelections[arg0->type - 0xB1]]; @@ -11760,7 +11121,7 @@ void func_800AD2E8(struct_8018D9E0_entry *arg0) { } if (gControllerPak1State != 0) { var_v1 = 0; - switch (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak1FileNote)) { /* switch 4; irregular */ + switch (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8*)gGameName, (u8*)gExtCode, &gControllerPak1FileNote)) { /* switch 4; irregular */ case 5: /* switch 4 */ break; case 0: /* switch 4 */ @@ -11809,7 +11170,7 @@ void func_800AD2E8(struct_8018D9E0_entry *arg0) { play_sound2(SOUND_MENU_FILE_NOT_FOUND); return; } - if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak1FileNote) == 0) { + if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8*)gGameName, (u8*)gExtCode, &gControllerPak1FileNote) == 0) { func_800B6708(); arg0->cursor = func_800B6348((gCupSelection * 4) + gCupCourseSelection) + 0x11; play_sound2(SOUND_MENU_SELECT); @@ -11957,7 +11318,7 @@ void func_800AD2E8(struct_8018D9E0_entry *arg0) { break; case 25: /* switch 1 */ if (arg0->unk1C == 1) { - if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak1FileNote) != 0) { + if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8*)gGameName, (u8*)gExtCode, &gControllerPak1FileNote) != 0) { arg0->cursor = 0x0000001A; play_sound2(SOUND_MENU_FILE_NOT_FOUND); return; @@ -12021,7 +11382,7 @@ void func_800AD2E8(struct_8018D9E0_entry *arg0) { #define FUNC_800ADF48DEF 60 #endif void func_800ADF48(struct_8018D9E0_entry *arg0) { - s32 stackPadding; + UNUSED s32 stackPadding; struct Controller *controller; if (gIsGamePaused != 0) { @@ -12161,7 +11522,7 @@ void func_800AE218(struct_8018D9E0_entry *arg0) { } if (gControllerPak1State != 0) { var_v1 = 0; - switch (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak1FileNote)) { /* switch 3; irregular */ + switch (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8*)gGameName, (u8*)gExtCode, &gControllerPak1FileNote)) { /* switch 3; irregular */ case PFS_ERR_INVALID: /* switch 3 */ break; case PFS_NO_ERROR: /* switch 3 */ @@ -12212,7 +11573,7 @@ void func_800AE218(struct_8018D9E0_entry *arg0) { play_sound2(SOUND_MENU_FILE_NOT_FOUND); return; } - if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak1FileNote) == 0) { + if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8*)gGameName, (u8*)gExtCode, &gControllerPak1FileNote) == 0) { func_800B6708(); arg0->cursor = func_800B6348((gCupSelection * 4) + gCupCourseSelection) + 0x1E; play_sound2(SOUND_MENU_SELECT); @@ -12350,7 +11711,7 @@ void func_800AE218(struct_8018D9E0_entry *arg0) { break; case 40: /* switch 1 */ if (arg0->unk1C == 1) { - if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, gGameName, gExtCode, &gControllerPak1FileNote) != 0) { + if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8*)gGameName, (u8*)gExtCode, &gControllerPak1FileNote) != 0) { arg0->cursor = 0x00000029; play_sound2(SOUND_MENU_FILE_NOT_FOUND); return; @@ -12481,7 +11842,7 @@ void func_800AEF74(struct_8018D9E0_entry *arg0) { } void func_800AF004(struct_8018D9E0_entry *arg0) { - s32 temp_t1; + UNUSED s32 temp_t1; switch (arg0->cursor) { case 0: @@ -12615,7 +11976,7 @@ void func_800AF480(struct_8018D9E0_entry *arg0) { } void func_800AF4DC(struct_8018D9E0_entry *arg0) { - s32 pad; + UNUSED s32 pad; s32 temp_v0; struct_802850C0_entry *temp_v1; @@ -12667,7 +12028,7 @@ void func_800AF4DC(struct_8018D9E0_entry *arg0) { } void func_800AF740(struct_8018D9E0_entry *arg0) { - s32 pad; + UNUSED s32 pad; s32 temp_v0; struct_802850C0_entry *temp_v1; diff --git a/src/code_80091750.h b/src/code_80091750.h index 7d56df071..15a9b16d1 100644 --- a/src/code_80091750.h +++ b/src/code_80091750.h @@ -1,7 +1,7 @@ #ifndef CODE_80091750_H #define CODE_80091750_H -#include "common_structs.h" +#include #include "textures.h" #include "main.h" @@ -116,7 +116,7 @@ void func_8009265C(void); void func_80092688(void); void func_80092C80(void); s32 char_to_glyph_index(char*); -s32 func_80092DF8(s8*); +s32 func_80092DF8(char*); s32 func_80092E1C(char*); s32 func_80092EE4(char*); s32 get_string_width(char*); @@ -155,19 +155,18 @@ Gfx *draw_flash_select_case(Gfx*, s32, s32, s32, s32, s32); Gfx *draw_flash_select_case_slow(Gfx*, s32, s32, s32, s32); Gfx *draw_flash_select_case_fast(Gfx*, s32, s32, s32, s32); Gfx *func_800959F8(Gfx*, Vtx*); -void func_80095AE0(Mtx*, f32, f32, f32, f32); Gfx *func_80095BD0(Gfx*, u8*, f32, f32, u32, u32, f32, f32); -Gfx *func_80095E10(Gfx*, s8, s32, s32, s32, s32, s32, s32, s32, s32, s32, u32, u32); -Gfx *func_800963F0(Gfx*, s8, s32, s32, f32, f32, s32, s32, s32, s32, s32, s32, s32, u32, u32); +Gfx *func_80095E10(Gfx*, s8, s32, s32, s32, s32, s32, s32, s32, s32, u8 *, u32, u32); +Gfx *func_800963F0(Gfx*, s8, s32, s32, f32, f32, s32, s32, s32, s32, s32, s32, u8 *, u32, u32); Gfx *func_80096CD8(Gfx*, s32, s32, u32, u32); -Gfx *func_80097274(Gfx*, s8, s32, s32, s32, s32, s32, s32, s32, s32, s32, u32, u32, u32); -Gfx *func_80097A14(Gfx*, s8, s32, s32, s32, s32, s32, s32, s32, u32, u32); +Gfx *func_80097274(Gfx *displayListHead, s8 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, u16 *argA, u32 argB, u32 argC, s32 argD); +Gfx *func_80097A14(Gfx*, s8, s32, s32, s32, s32, s32, s32, u8*, u32, u32); Gfx *func_80097AE4(Gfx*, s8, s32, s32, u8*, s32); -Gfx *func_80097E58(Gfx*, s8, s32, s32, s32, s32, s32, s32, u8*, u32, s32, u32); +Gfx *func_80097E58(Gfx *displayListHead, s8 fmt, u32 arg2, u32 arg3, u32 arg4, u32 arg5, s32 arg6, s32 arg7, u8 *someTexture, u32 arg9, u32 argA, s32 width); Gfx *func_80098558(Gfx*, u32, u32, u32, u32, u32, u32, s32, s32); -Gfx *func_800987D0(Gfx*, u32, u32, u32, u32, s32, s32, s32, u32, s32); +Gfx *func_800987D0(Gfx*, u32, u32, u32, u32, s32, s32, u8*, u32, s32); Gfx *draw_box_fill(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32); -Gfx *draw_box(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32); +Gfx *draw_box(Gfx*, s32, s32, s32, s32, u32, u32, u32, u32); Gfx *func_80098FC8(Gfx*, s32, s32, s32, s32); void dma_copy_base_729a30(u64*, size_t, void*); void dma_copy_base_7fa3c0(u64*, size_t, void*); @@ -400,11 +399,6 @@ void func_800AF740(struct_8018D9E0_entry*); void rmonPrintf(const char *, ...); void tkmk00decode(u8*, u8*, u8*, s32); -typedef struct struct_8018EE10_entry_cont { - struct_8018EE10_entry arr[1]; - -} struct_8018EE10_entry_cont; - /* File specific defines */ #define D_8018D9E0_SIZE 0x20 @@ -426,7 +420,7 @@ extern u16 *D_8018D9B0; extern u8 *D_8018D9B4; extern u8 *D_8018D9B8; extern u8 *D_8018D9BC; -extern struct_8018EE10_entry_cont *D_8018D9C0; +extern void *D_8018D9C0; extern s8 gGPPointsByCharacterId[8]; extern s8 gCharacterIdByGPOverallRank[]; extern s8 D_8018D9D8; @@ -443,9 +437,7 @@ extern s32 gNumD_8018E768Entries; extern struct_8018E768_entry D_8018E768[D_8018E768_SIZE]; extern s32 gCycleFlashMenu; extern s8 D_8018E7AC[]; -extern s8 D_8018E7B0; extern u32 D_8018E7B8[]; -extern u32 D_8018E7C8; extern u32 D_8018E7D0[]; extern s32 D_8018E7E0; extern struct UnkStruct_8018E7E8 D_8018E7E8[D_8018E7E8_SIZE]; diff --git a/src/code_800AF9B0.c b/src/code_800AF9B0.c index a719a7adb..284962fcc 100644 --- a/src/code_800AF9B0.c +++ b/src/code_800AF9B0.c @@ -91,7 +91,7 @@ void func_800AFC54(Vtx *arg0, s32 arg1, s32 arg2, s32 arg3, s16 arg4[3]) { a1 = &arg0[arg1]; a2 = &arg0[arg2]; - a3 = &arg0[arg3]; + a3 = &arg0[arg3]; saved1 = a2->v.ob[0]; saved2 = a2->v.ob[1]; @@ -125,67 +125,36 @@ void func_800AFC54(Vtx *arg0, s32 arg1, s32 arg2, s32 arg3, s16 arg4[3]) { GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800AFC54.s") #endif -void func_800AFE00(Vtx *arg0, s16 (*arg1)[3], s32 arg2, s32 arg3); -#ifdef MIPS_TO_C -// guessing on the Vtx kind again -void func_800AFE00(Vtx *arg0, s16 (*arg1)[3], s32 arg2, s32 arg3) { - s32 idx1; // v0 - s32 idx2; // v0 - s16 sp14[6]; - Vtx *sec, *third, *fourth; +void func_800AFE00(Vtx *arg0, Vec3s *arg1, s32 arg2, s32 arg3) { + s32 idx1; + s32 idx2; s32 i; + Vtx *vtx; + s16 sp14[2][3]; - if (arg2 == 0) { - idx1 = 0; - } else { - idx1 = arg2 - 1; - } - - if (arg2 == arg3) { - idx2 = arg3; - } else { - idx2 = arg2 + 1; - } + idx1 = (arg2 == 0) ? 0 : arg2 - 1; + idx2 = (arg2 == arg3) ? arg3 : arg2 + 1; for (i = 0; i < 3; i++) { - sp14[i + 0] = (arg1[arg2][i] + arg1[idx1][i]) / 2; - sp14[i + 3] = (arg1[arg2][i] + arg1[idx2][i]) / 2; - // L800AFEB4 + sp14[0][i] = (arg1[idx1][i] + arg1[arg2][i]) / 2; + sp14[1][i] = (arg1[idx2][i] + arg1[arg2][i]) / 2; } - - i = 0; - sec = arg0 + 1; - third = arg0 + 2; - fourth = arg0 + 3; - - while (i != 480) { - (arg0 + i)->v.cn[0] = sp14[0]; - (arg0 + i)->v.cn[1] = sp14[1]; - (arg0 + i)->v.cn[2] = sp14[2]; - (sec + i)->v.cn[0] = sp14[3]; - (sec + i)->v.cn[1] = sp14[4]; - (sec + i)->v.cn[2] = sp14[5]; - (third + i)->v.cn[0] = sp14[0]; - (third + i)->v.cn[1] = sp14[1]; - (third + i)->v.cn[2] = sp14[2]; - (fourth + i)->v.cn[0] = sp14[3]; - (fourth + i)->v.cn[1] = sp14[4]; - (fourth + i)->v.cn[2] = sp14[5]; - - i += 3 * sizeof(Vtx); - i++;i--; + for (idx2 = 0; idx2 < 0x1E0; idx2 += 0x30) { + for (i = 0; i < 4; i++) { + vtx = &arg0[i]; + vtx[idx2 / 1].v.cn[0] = sp14[i % 2][0]; + vtx[idx2 / 1].v.cn[1] = sp14[i % 2][1]; + vtx[idx2 / 1].v.cn[2] = sp14[i % 2][2]; + } } } -#else -GLOBAL_ASM("asm/non_matchings/code_800AF9B0/func_800AFE00.s") -#endif void func_800AFF58(Vtx *arg0) { UNUSED u32 pad88[26]; s32 i, j; s16 sp40[12][3]; - + for (i = 0, j = 0; i < ARRAY_COUNT(sp40); i++, j += 4) { func_800AFC54(&arg0[j], 1, 2, 0, sp40[i]); } diff --git a/src/code_800AF9B0.h b/src/code_800AF9B0.h index f63066f51..94a00493d 100644 --- a/src/code_800AF9B0.h +++ b/src/code_800AF9B0.h @@ -1,8 +1,7 @@ #ifndef CODE_800AF9B0_H #define CODE_800AF9B0_H -#include "common_structs.h" -#include +#include /* Function Prototypes */ void func_800AF9B0(void); diff --git a/src/crash_screen.c b/src/crash_screen.c index d2225a297..947353212 100644 --- a/src/crash_screen.c +++ b/src/crash_screen.c @@ -1,7 +1,6 @@ #include #include -#include -#include +#include #include #include @@ -56,6 +55,7 @@ void crash_screen_draw_glyph(u16 *framebuffer, s32 x, s32 y, s32 glyph) { } } +void crash_screen_draw_square(u16 *framebuffer); // Functionally Equivallent. #ifdef NON_MATCHING @@ -203,7 +203,7 @@ void thread9_crash_screen(UNUSED void *arg0) osSetEventMesg(10, &D_80162D40, (OSMesg) 16); sButtonSequenceIndex = 0; - while (TRUE) { + while (true) { osRecvMesg(&D_80162D40, &mesg, 1); thread = get_faulted_thread(); @@ -211,9 +211,8 @@ void thread9_crash_screen(UNUSED void *arg0) // Run only on the first iteration. if (sCounter == 0) { crash_screen_draw_square(pFramebuffer); -//#define SKIP_DRAW_SQUARE -#ifndef SKIP_DRAW_SQUARE - while(TRUE) +#ifndef DEBUG + while(true) { read_controllers(); @@ -231,7 +230,7 @@ void thread9_crash_screen(UNUSED void *arg0) } } #endif -#ifdef CRASH_SCREEN_ENHANCEMENT +#if DEBUG crash_screen_draw(thread); #else crash_screen_draw_info(pFramebuffer, thread); diff --git a/src/crash_screen.h b/src/crash_screen.h index 7975825d1..44ea6619d 100644 --- a/src/crash_screen.h +++ b/src/crash_screen.h @@ -1,6 +1,11 @@ +#ifndef CRASH_SCREEN_H +#define CRASH_SCREEN_H + #include #include extern u16 *pFramebuffer; void crash_screen_set_framebuffer(u16*); + +#endif // CRASH_SCREEN_H \ No newline at end of file diff --git a/src/data/data_segment2.c b/src/data/data_segment2.c index f2cd14e91..2d72f4398 100644 --- a/src/data/data_segment2.c +++ b/src/data/data_segment2.c @@ -1,9 +1,8 @@ #include -#include #include #include #include "data_segment2.h" -#include " +#include Gfx D_02007650[] = { gsDPPipeSync(), @@ -104,168 +103,168 @@ Gfx D_02007818[] = { Gfx D_02007838[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007BD8, 2, 2), + gsSPVertex(&D_02007BB8[2], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007858[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007BF8, 2, 2), + gsSPVertex(&D_02007BB8[4], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007878[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007C18, 2, 2), + gsSPVertex(&D_02007BB8[6], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007898[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007C38, 2, 2), + gsSPVertex(&D_02007BB8[8], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020078B8[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007C58, 2, 2), + gsSPVertex(&D_02007BB8[10], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020078D8[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007C78, 2, 2), + gsSPVertex(&D_02007BB8[12], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020078F8[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007C98, 2, 2), + gsSPVertex(&D_02007BB8[14], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007918[] = { gsSPVertex(D_02007BB8, 2, 0), - gsSPVertex(D_02007CB8, 2, 2), + gsSPVertex(&D_02007BB8[16], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007938[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007CF8, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[20], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007958[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007D18, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[22], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007978[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007D38, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[24], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007998[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007D58, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[26], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020079B8[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007D78, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[28], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020079D8[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007D98, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[30], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_020079F8[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007DB8, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[32], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007A18[] = { - gsSPVertex(D_02007CD8, 2, 0), - gsSPVertex(D_02007DD8, 2, 2), + gsSPVertex(&D_02007BB8[18], 2, 0), + gsSPVertex(&D_02007BB8[34], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007A38[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007E18, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[38], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007A58[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007E38, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[40], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007A78[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007E58, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[42], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007A98[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007E78, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[44], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007AB8[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007E98, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[46], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007AD8[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007EB8, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[48], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007AF8[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007ED8, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[50], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; Gfx D_02007B18[] = { - gsSPVertex(D_02007DF8, 2, 0), - gsSPVertex(D_02007EF8, 2, 2), + gsSPVertex(&D_02007BB8[36], 2, 0), + gsSPVertex(&D_02007BB8[52], 2, 2), gsSPDisplayList(common_rectangle_display), gsSPEndDisplayList(), }; @@ -281,8 +280,64 @@ UNUSED Vtx D_02007B38[] = { {{{ 0, 0, 0}, 0, { 0, 448}, {0xff, 0x00, 0x00, 0xff}}}, }; -//! @todo Place all these vertices in a single array -// Access the correct vertex using sym[value] +#ifdef AVOID_UB +Vtx D_02007BB8[] = { + {{{ 0, 65520, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{26, 65520, 0}, 0, {1600, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0x00, 0x00, 0xff, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0x00, 0x00, 0xff, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0x00, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0x00, 0xff, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0xff, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{26, 0, 0}, 0, {1600, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 65520, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{16, 65520, 0}, 0, {960, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0x00, 0x00, 0xff, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0x00, 0x00, 0xff, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0x00, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0x00, 0xff, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0xff, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{16, 0, 0}, 0, {960, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 960}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 65504, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{30, 65504, 0}, 0, {1856, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0x00, 0x00, 0xff, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0x00, 0x00, 0xff, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0x00, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0x00, 0xff, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0xff, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0xff, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, + {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, +}; +#else Vtx D_02007BB8[] = { {{{ 0, 65520, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, {{{26, 65520, 0}, 0, {1600, 0}, {0xff, 0xff, 0xff, 0xff}}}, @@ -417,6 +472,7 @@ Vtx D_02007EF8[] = { {{{30, 0, 0}, 0, {1856, 1984}, {0xff, 0x00, 0x00, 0xff}}}, {{{ 0, 0, 0}, 0, { 0, 1984}, {0xff, 0x00, 0x00, 0xff}}}, }; +#endif Gfx D_02007F18[] = { gsDPPipeSync(), diff --git a/src/data/path_spawn_metadata.h b/src/data/path_spawn_metadata.h index 2ffe6cc32..4345d8519 100644 --- a/src/data/path_spawn_metadata.h +++ b/src/data/path_spawn_metadata.h @@ -2,7 +2,7 @@ #define PATH_SPAWN_METADATA_H #include "waypoints.h" -#include "common_structs.h" +#include #include #include "include/bomb_kart.h" diff --git a/src/data/some_data.c b/src/data/some_data.c index f927fa3df..857973970 100644 --- a/src/data/some_data.c +++ b/src/data/some_data.c @@ -354,7 +354,7 @@ f32 D_800E594C[][2] = { s16 D_800E597C[] = { 0x0000, 0x0000, 0x4000, 0x8000, 0x8000, 0xc000 }; // Seems to be related to the Boos in Banshee Boardwalk -SplineData23 D_800E5988 = { +SplineData D_800E5988 = { 0x0016, { {{ 0x0005, 0x0011, 0x0032 }, 0x0028 }, @@ -384,7 +384,7 @@ SplineData23 D_800E5988 = { }; // Seems to be related to the Boos in Banshee Boardwalk -SplineData24 D_800E5A44 = { +SplineData D_800E5A44 = { 0x0017, { {{ 0x0000, 0x0011, 0xffce }, 0x0028 }, @@ -415,7 +415,7 @@ SplineData24 D_800E5A44 = { }; // Seems to be related to the Boos in Banshee Boardwalk -SplineData25 D_800E5B08 = { +SplineData D_800E5B08 = { 0x0018, { {{ 0xfff1, 0x000a, 0x0000 }, 0x0014 }, @@ -447,7 +447,7 @@ SplineData25 D_800E5B08 = { }; // Seems to be related to the Boos in Banshee Boardwalk -SplineData23 D_800E5BD4 = { +SplineData D_800E5BD4 = { 0x0016, { {{ 0x0005, 0x0011, 0x0032 }, 0x001e }, @@ -477,7 +477,7 @@ SplineData23 D_800E5BD4 = { }; // Seems to be related to the Boos in Banshee Boardwalk -SplineData24 D_800E5C90 = { +SplineData D_800E5C90 = { 0x0017, { {{ 0x0000, 0x0011, 0xffce }, 0x0019 }, @@ -508,7 +508,7 @@ SplineData24 D_800E5C90 = { }; // Only referenced in func_8007D070, which itself is unused -SplineDataUnused4 D_800E5D54 = { +SplineData D_800E5D54 = { 0x0004, { {{ 0x0000, 0x0010, 0x0000 }, 0x0032 }, @@ -519,7 +519,7 @@ SplineDataUnused4 D_800E5D54 = { }; // Unused? -SplineDataUnused4 D_800E5D78 = { +SplineData D_800E5D78 = { 0x0004, { {{ 0x0000, 0x0000, 0x0000 }, 0x000a }, @@ -531,7 +531,11 @@ SplineDataUnused4 D_800E5D78 = { // Note the use of the plain SplineData type here. Since these are pointers, we don't care // about their internal array size -SplineData *D_800E5D9C[] = { &D_800E5988, &D_800E5A44, &D_800E5B08, &D_800E5BD4, &D_800E5C90 }; +SplineData *D_800E5D9C[] = { + &D_800E5988, &D_800E5A44, + &D_800E5B08, &D_800E5BD4, + &D_800E5C90 +}; // Unused SplineData *D_800E5DB0 = &D_800E5988; @@ -633,7 +637,7 @@ s16 D_800E5FD0[] = { }; // Something related to seagulls in Koopa Troopa Beach, not sure of its exact nature -SplineData23 D_800E6034 = { +SplineData D_800E6034 = { 0x0016, { {{ 0x0032, 0x00aa, 0x01f4 }, 0x0028 }, @@ -663,7 +667,7 @@ SplineData23 D_800E6034 = { }; // Something related to seagulls in Koopa Troopa Beach, not sure of its exact nature -SplineData24 D_800E60F0 = { +SplineData D_800E60F0 = { 0x0017, { {{ 0x0000, 0x00aa, 0xfe0c }, 0x0028 }, @@ -694,7 +698,7 @@ SplineData24 D_800E60F0 = { }; // Something related to seagulls in Koopa Troopa Beach, not sure of its exact nature -SplineData25 D_800E61B4 = { +SplineData D_800E61B4 = { 0x0018, { {{ 0xff6a, 0x0064, 0x0000 }, 0x0014 }, @@ -726,7 +730,7 @@ SplineData25 D_800E61B4 = { }; // Something related to seagulls in Koopa Troopa Beach, not sure of its exact nature -SplineData23 D_800E6280 = { +SplineData D_800E6280 = { 0x0016, { {{ 0xffce, 0x00aa, 0xfe0c }, 0x0028 }, @@ -757,7 +761,10 @@ SplineData23 D_800E6280 = { // Note the use of the plain SplineData type here. Since these are pointers, we don't care // about their internal array size -SplineData *D_800E633C[] = { &D_800E6034, &D_800E60F0, &D_800E61B4, &D_800E6280 }; +SplineData *D_800E633C[] = { + &D_800E6034, &D_800E60F0, + &D_800E61B4, &D_800E6280 +}; // Might be Cheep Cheep related? Vec3s D_800E634C[] = { @@ -803,7 +810,7 @@ MoleSpawnUnion gMoleSpawns = { }; // Referenced by D_800E6724, which is unused -SplineData23 D_800E641C = { +SplineData D_800E641C = { 0x0016, { {{ 0x0014, 0x0000, 0x00c8 }, 0x0050 }, @@ -833,7 +840,7 @@ SplineData23 D_800E641C = { }; // Referenced by D_800E6724, which is unused -SplineData24 D_800E64D8 = { +SplineData D_800E64D8 = { 0x0017, { {{ 0x0000, 0x0000, 0xffce }, 0x0050 }, @@ -864,7 +871,7 @@ SplineData24 D_800E64D8 = { }; // Something related to the penguins in Sherbet Land, not sure of its exact nature -SplineData25 D_800E659C = { +SplineData D_800E659C = { 0x0018, { {{ 0xffec, 0x0000, 0x0000 }, 0x0050 }, @@ -896,7 +903,7 @@ SplineData25 D_800E659C = { }; // Something related to the penguins in Sherbet Land, not sure of its exact nature -SplineData23 D_800E6668 = { +SplineData D_800E6668 = { 0x0016, { {{ 0x0005, 0x0000, 0x0032 }, 0x0050 }, @@ -955,7 +962,7 @@ s16 gTorchSpawns[] = { 0xffca, 0xfff8, 0x0270, }; -SplineData15 D_800E67B8 = { +SplineData D_800E67B8 = { 0x000d, { {{ 0x0096, 0x00cc, 0xfe0c }, 0x0014 }, @@ -977,7 +984,7 @@ SplineData15 D_800E67B8 = { }; // Appears to be related to Lakitu waving the checkered flag -SplineData21 D_800E6834 = { +SplineData D_800E6834 = { 0x0014, { {{ 0x0014, 0x0012, 0x001e }, 0x0028 }, @@ -1005,7 +1012,7 @@ SplineData21 D_800E6834 = { }; // Unused struct? -SplineDataUnused13 D_800E68E0 = { +SplineData D_800E68E0 = { 0x000c, { {{ 0x001e, 0x0018, 0x0078 }, 0x000a }, @@ -1025,7 +1032,7 @@ SplineDataUnused13 D_800E68E0 = { }; // Appears to be related to Lakitu Second Lap animation -SplineData12 D_800E694C = { +SplineData D_800E694C = { 0x000b, { {{ 0x0032, 0x0014, 0x0050 }, 0x000a }, @@ -1044,7 +1051,7 @@ SplineData12 D_800E694C = { }; // Appears to be related to Lakitu Reverse animation -SplineData8 D_800E69B0 = { +SplineData D_800E69B0 = { 0x0007, { {{ 0x001e, 0x000e, 0x0032 }, 0x0028 }, @@ -1059,7 +1066,7 @@ SplineData8 D_800E69B0 = { }; // Might be related to Lakitu doing the countdown? -SplineData8 D_800E69F4 = { +SplineData D_800E69F4 = { 0x0007, { {{ 0x0000, 0x0012, 0xfffb }, 0x0014 }, diff --git a/src/data/some_data.h b/src/data/some_data.h index dd961fbe1..e0de0a36a 100644 --- a/src/data/some_data.h +++ b/src/data/some_data.h @@ -1,7 +1,7 @@ #ifndef SOME_DATA_H #define SOME_DATA_H -#include "PR/gbi.h" +#include #include "spline.h" #include "data/other_textures.h" #include "objects.h" @@ -38,13 +38,13 @@ extern ThwompSpawn gThomwpSpawns150CC[]; extern f32 D_800E594C[][2]; extern u64 D_800E5974; extern s16 D_800E597C[]; -extern SplineData23 D_800E5988; -extern SplineData24 D_800E5A44; -extern SplineData25 D_800E5B08; -extern SplineData23 D_800E5BD4; -extern SplineData24 D_800E5C90; -extern SplineDataUnused4 D_800E5D54; -extern SplineDataUnused4 D_800E5D78; +extern SplineData D_800E5988; +extern SplineData D_800E5A44; +extern SplineData D_800E5B08; +extern SplineData D_800E5BD4; +extern SplineData D_800E5C90; +extern SplineData D_800E5D54; +extern SplineData D_800E5D78; extern SplineData *D_800E5D9C[]; extern SplineData *D_800E5DB0; extern s8 D_800E5DB4[]; @@ -54,28 +54,28 @@ extern Vec3s gHedgehogPatrolPoints[]; extern SnowmanSpawn gSnowmanSpawns[]; extern CrabSpawn gCrabSpawns[]; extern s16 D_800E5FD0[]; -extern SplineData23 D_800E6034; -extern SplineData24 D_800E60F0; -extern SplineData25 D_800E61B4; -extern SplineData23 D_800E6280; +extern SplineData D_800E6034; +extern SplineData D_800E60F0; +extern SplineData D_800E61B4; +extern SplineData D_800E6280; extern SplineData *D_800E633C[]; extern Vec3s D_800E634C[]; extern MoleSpawnUnion gMoleSpawns; -extern SplineData23 D_800E641C; -extern SplineData24 D_800E64D8; -extern SplineData25 D_800E659C; -extern SplineData23 D_800E6668; +extern SplineData D_800E641C; +extern SplineData D_800E64D8; +extern SplineData D_800E659C; +extern SplineData D_800E6668; extern SplineData *D_800E6724[]; extern SplineData *D_800E672C[]; extern Vec3f D_800E6734[]; // This should really be `extern Vec3s gTorchSpawns[];` extern s16 gTorchSpawns[]; -extern SplineData15 D_800E67B8; -extern SplineData21 D_800E6834; -extern SplineDataUnused13 D_800E68E0; -extern SplineData12 D_800E694C; -extern SplineData8 D_800E69B0; -extern SplineData8 D_800E69F4; +extern SplineData D_800E67B8; +extern SplineData D_800E6834; +extern SplineData D_800E68E0; +extern SplineData D_800E694C; +extern SplineData D_800E69B0; +extern SplineData D_800E69F4; extern CloudData gLuigiRacewayClouds[]; extern CloudData gYoshiValleyMooMooFarmClouds[]; extern CloudData gKoopaTroopaBeachClouds[]; diff --git a/src/data_segment2.h b/src/data_segment2.h index 0a0d5eb1d..f69f6a4d0 100644 --- a/src/data_segment2.h +++ b/src/data_segment2.h @@ -51,6 +51,7 @@ extern Gfx D_02008058[]; extern Gfx common_rectangle_display[]; extern Vtx D_02007BB8[]; +#ifndef AVOID_UB extern Vtx D_02007BD8[]; extern Vtx D_02007BF8[]; extern Vtx D_02007C18[]; @@ -77,5 +78,7 @@ extern Vtx D_02007E98[]; extern Vtx D_02007EB8[]; extern Vtx D_02007ED8[]; extern Vtx D_02007EF8[]; +#endif + #endif diff --git a/src/debug/all_variables.h b/src/debug/all_variables.h index 2777ba625..561a23ea6 100644 --- a/src/debug/all_variables.h +++ b/src/debug/all_variables.h @@ -51,7 +51,6 @@ #include #include -#include #include #include #include @@ -64,7 +63,6 @@ #include #include #include "buffers/trig_tables.h" -#include #include #include #include diff --git a/src/debug/crash_screen_enhancement.c b/src/debug/crash_screen_enhancement.c index 54547908c..6a69d3c60 100644 --- a/src/debug/crash_screen_enhancement.c +++ b/src/debug/crash_screen_enhancement.c @@ -1,7 +1,6 @@ #include #include -#include -#include +#include #include #include #include "../crash_screen.h" @@ -216,6 +215,6 @@ void crash_screen_draw(OSThread* thread) { crash_screen_print_float_reg(120, 210, 26, &tc->fp26.f.f_even); crash_screen_print_float_reg(210, 210, 28, &tc->fp28.f.f_even); crash_screen_print_float_reg(30, 220, 30, &tc->fp30.f.f_even); - osViBlack(FALSE); + osViBlack(false); osViSwapBuffer(pFramebuffer); } diff --git a/src/debug/crash_screen_enhancement.h b/src/debug/crash_screen_enhancement.h index 43fe8e10a..9f9a321ca 100644 --- a/src/debug/crash_screen_enhancement.h +++ b/src/debug/crash_screen_enhancement.h @@ -1,3 +1,6 @@ +#ifndef CRASH_SCREEN_ENHANCEMENT_H +#define CRASH_SCREEN_ENHANCEMENT_H + #include #include @@ -35,3 +38,5 @@ void crash_screen_draw(OSThread* thread); // } // gGlobalTimer++; // } + +#endif // CRASH_SCREEN_ENHANCEMENT_H \ No newline at end of file diff --git a/src/debug/debug.c b/src/debug/debug.c index cdc333dc5..06c725e48 100644 --- a/src/debug/debug.c +++ b/src/debug/debug.c @@ -82,14 +82,14 @@ static u32 variable_to_u64(variableWatchAttributes *attribute) { u32 variable; switch (attribute->variableSize) { - case sizeof(u8): + case sizeof(u8): variable = *((u8*) attribute->variablePointer); break; - case sizeof(u16): + case sizeof(u16): variable = *((u16*) attribute->variablePointer); break; case sizeof(u32): - case sizeof(u64): + case sizeof(u64): variable = *((u32*) attribute->variablePointer); // no floating point rounding break; default: @@ -103,7 +103,7 @@ static void round_up_float(u32 *variable, u8 variableSize) { switch (variableSize) { case sizeof(u64): case sizeof(u32): - *variable = (u32) (*(f32*) &*variable); + *variable = (u32) (*(f32*) &*variable); break; default: sDisplayListState = BAD; @@ -131,7 +131,7 @@ static void u64_to_string(variableWatchAttributes *attribute, u32 variable, u8 b switch (variableSize) { case sizeof(u8): signedVariable = (s8) variable; - if (signedVariable < 0) { + if (signedVariable < 0) { signedVariable = -signedVariable; variable = (u8) signedVariable; *bufferedString = '-'; @@ -150,7 +150,7 @@ static void u64_to_string(variableWatchAttributes *attribute, u32 variable, u8 b case sizeof(u32): case sizeof(u64): signedVariable = (s32) variable; - if (signedVariable < 0) { + if (signedVariable < 0) { signedVariable = -signedVariable; variable = (u32) signedVariable; *bufferedString = '-'; @@ -164,11 +164,11 @@ static void u64_to_string(variableWatchAttributes *attribute, u32 variable, u8 b // convert u64 into a string but it gets put in reverse if (base != HEXIDECIMAL) { - do { + do { stringLength++; *bufferedString = variable % base + '0'; bufferedString++; - variable /= base; + variable /= base; } while (variable != 0); } else { do { @@ -186,8 +186,8 @@ static void u64_to_string(variableWatchAttributes *attribute, u32 variable, u8 b } while (variable != 0); } - bufferedString -= stringLength; - upperIndex = stringLength - 1; + bufferedString -= stringLength; + upperIndex = stringLength - 1; // flip string 4321 --> 1234 for (lowerIndex = 0; lowerIndex < stringLength >> 1; lowerIndex++) { @@ -228,7 +228,7 @@ static void u64_to_string(variableWatchAttributes *attribute, u32 variable, u8 b static u32 _strlen(const char *str) { u32 len; - + len = 0; for (; *str != '\0'; str++) { len++; @@ -245,7 +245,7 @@ static void _memcpy(char *destStr, const char *copyStr, u32 copySize) { *destStr = *copyStr; destStr++; copyStr++; - } + } } #endif diff --git a/src/debug/debug.inc.c b/src/debug/debug.inc.c index 758bf3600..7f4e69ae9 100644 --- a/src/debug/debug.inc.c +++ b/src/debug/debug.inc.c @@ -6,7 +6,7 @@ extern s32 gGlobalTimer; -/** +/** * Edit this to edit what displays on the screen while the DVDL is active. * The Size of the structure array is calculated at compile time. */ @@ -14,42 +14,42 @@ variableWatchAttributes gMainVariableWatchList[] = { { "Global Timer: ", &gGlobalTimer, - sizeof(gGlobalTimer), + sizeof(gGlobalTimer), DISPLAY_DECIMAL_NUMBER | DISPLAY_SIGNED_NUMBER, 0, 0 }, { "Actors: ", &gNumActors, - sizeof(gNumActors), + sizeof(gNumActors), DISPLAY_DECIMAL_NUMBER, 0, 0 }, { "Player Type: ", &gPlayers[0].type, - sizeof(gPlayerOne->type), + sizeof(gPlayerOne->type), DISPLAY_HEXIDECIMAL_NUMBER, 0, 0 }, { "X ", &gPlayers[0].pos[0], - sizeof(gPlayerOne->pos[0]), + sizeof(gPlayerOne->pos[0]), DISPLAY_FLOAT_NUMBER, 0, 0 }, { "Y ", &gPlayers[0].pos[1], - sizeof(gPlayerOne->pos[1]), + sizeof(gPlayerOne->pos[1]), DISPLAY_FLOAT_NUMBER, 0, 0 }, { "Z ", &gPlayers[0].pos[2], - sizeof(gPlayerOne->pos[2]), + sizeof(gPlayerOne->pos[2]), DISPLAY_FLOAT_NUMBER, 0, 0 }, diff --git a/src/effects.c b/src/effects.c index af29bab8d..8818f4df7 100644 --- a/src/effects.c +++ b/src/effects.c @@ -1,7 +1,7 @@ #include #include -#include #include +#include #include #include #include "code_800029B0.h" @@ -16,6 +16,7 @@ #include "effects.h" #include "audio/external.h" #include "spawn_players.h" +#include "code_80091750.h" s32 D_8018D900[8]; s16 D_8018D920[8]; @@ -185,14 +186,14 @@ void clean_effect(Player *player, s8 arg1) { if ((player->effects & 0x400) == 0x400) { func_8008C6D0(player, arg1); } - + if (((player->effects & 0x80) == 0x80) || (player->effects & 0x40) == 0x40) { func_8008C8C4(player, arg1); } if ((player->effects & 0x800) == 0x800) { func_8008D0E4(player, arg1); } - if ((player->unk_044 & 0x4000) != 0) { + if ((player->unk_044 & 0x4000) != 0) { func_8008D3B0(player, arg1); } if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { @@ -257,7 +258,7 @@ void func_8008C528(Player *player, s8 arg1) { void func_8008C62C(Player *player, s8 arg1) { - func_80031F48(player, 5.0f); + decelerate_ai_player(player, 5.0f); player->unk_0A8 += (s16)0xA0; player->unk_042 += (s16)0x71C; if (player->unk_0A8 >= 0x2000) { @@ -310,7 +311,7 @@ void func_8008C73C(Player *player, s8 arg1) { D_80165190[3][arg1] = 1; D_80165280[arg1] = player->currentSpeed; gTimerBoostTripleACombo[arg1] = 0; - gIsPlayerTripleAButtonCombo[arg1] = FALSE; + gIsPlayerTripleAButtonCombo[arg1] = false; gCountASwitch[arg1] = 0; gFrameSinceLastACombo[arg1] = 0; D_8018D920[arg1] = 0; @@ -339,7 +340,7 @@ void func_8008C8C4(Player* player, s8 playerId) { player->unk_046 &= 0xFFBF; - if ((gIsPlayerTripleAButtonCombo[playerId] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { + if ((gIsPlayerTripleAButtonCombo[playerId] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { player->currentSpeed = (f32) (player->currentSpeed + 100.0f); } if ((gModeSelection == VERSUS) && ((player->type & PLAYER_KART_AI) == PLAYER_KART_AI) && (!gDemoMode) && ((player->unk_0CA & 2) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) { @@ -355,15 +356,15 @@ void func_8008C9EC(Player *player, s8 arg1) { player->unk_206 = 0; player->slopeAccel = 0; if ((player->unk_046 & 0x40) == 0x40) { - func_80031F48(player, 100.0f); + decelerate_ai_player(player, 100.0f); } else { if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { - func_80031F48(player, 1.0f); + decelerate_ai_player(player, 1.0f); } else { - func_80031F48(player, 4.0f); + decelerate_ai_player(player, 4.0f); } if (!(player->type & PLAYER_HUMAN)) { - func_80031F48(player, 30.0f); + decelerate_ai_player(player, 30.0f); } } if ((player->effects & 0x80) == 0x80) { @@ -393,7 +394,7 @@ void func_8008C9EC(Player *player, s8 arg1) { } } } - if ((gIsPlayerTripleAButtonCombo[arg1] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { + if ((gIsPlayerTripleAButtonCombo[arg1] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { gTimerBoostTripleACombo[arg1] = 0x00000078; if (player->currentSpeed <= 90.0f) { player->currentSpeed = 90.0f; @@ -409,7 +410,7 @@ void func_8008CDC0(Player* player, s8 arg1) { player->unk_0B8 = 3.0f; player->unk_0AC = 1; player->effects &= ~0x10; - + if (((player->unk_07C >> 0x10) >= 0x14) || ((player->unk_07C >> 0x10) < -0x13) || (((player->unk_094 / 18.0f) * 216.0f) <= 30.0f) || ((player->effects & 8) != 0) || (((player->type & PLAYER_HUMAN) == 0) && ((player->effects & 0x1000) == 0))) { func_8008C73C(player, arg1); } @@ -547,7 +548,7 @@ void apply_boost_sound_effect(Player* player, s8 arg1) { player->soundEffects &= ~BOOST_SOUND_EFFECT; player->unk_DB4.unk0 = 0; player->unk_DB4.unk8 = 8.0f; - + if (D_8015F890 != 1) { if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { func_800C9250(arg1); @@ -574,7 +575,7 @@ void apply_boost_effect(Player* player) { } else { move_f32_towards(&player->boostPower, 0.0f, 0.1f); } - + if (player->boostPower <= 1.0f) { player->effects &= ~BOOST_EFFECT; } @@ -612,7 +613,7 @@ void func_8008D570(Player *player, s8 arg1) { void func_8008D698(Player* player, s8 arg1) { s16 temp; - + if (player->unk_0B2 == 0) { player->rotation[1] = player->unk_0AE; temp = 0; @@ -755,9 +756,9 @@ void apply_hit_effect(Player* player, s8 arg1) { player->unk_0C0 = 0; player->unk_08C = 0.0f; player->currentSpeed = 0.0f; - if ((player->unk_110.unk3C[2] >= 600.0f) || ((player->effects & 0x1000) != 0)) { D_8018D990[arg1] = 3; } // placed block on same line to match + if ((player->collision.surfaceDistance[2] >= 600.0f) || ((player->effects & 0x1000) != 0)) { D_8018D990[arg1] = 3; } // placed block on same line to match - switch (D_8018D990[arg1]) { + switch (D_8018D990[arg1]) { case 0: player->unk_DB4.unk10 = 4.5f; if (player->unk_238 < 0x3D) { @@ -791,7 +792,7 @@ void apply_hit_effect(Player* player, s8 arg1) { player->unk_DB4.unk10 = 4.5f; player->pos[1] += 0.13; ++player->unk_238; - + if ((player->unk_046 & 0x80) != 0) { if (player->unk_238 >= 0x32) { D_8018D990[arg1] = 2; @@ -821,7 +822,7 @@ void apply_hit_effect(Player* player, s8 arg1) { player->unk_238 = 0; } - if (player->unk_110.unk3C[2] >= 600.0f) { + if (player->collision.surfaceDistance[2] >= 600.0f) { D_8018D990[arg1] = 3; } @@ -867,9 +868,9 @@ void apply_hit_rotating_sound_effect(Player* player, s8 arg1) { player->unk_0AE = player->rotation[1]; player->unk_0B2 = 2; player->unk_0C0 = 0; - player->unk_07C = 0; + player->unk_07C = 0; player->unk_078 = 0; - + D_80165190[0][arg1] = 1; D_80165190[1][arg1] = 1; D_80165190[2][arg1] = 1; @@ -919,7 +920,7 @@ void apply_lightning_effect(Player *player, s8 arg1) { D_80165190[3][arg1] = 1; } } - func_80031F48(player, 1.0f); + decelerate_ai_player(player, 1.0f); } else { player->unk_0B0 += 1; player->unk_08C = (f32) ((f64) player->unk_08C * 0.6); @@ -941,18 +942,18 @@ void apply_lightning_effect(Player *player, s8 arg1) { void remove_lightning_effect(Player* player, UNUSED s8 arg1) { move_f32_towards(&player->size, 1.0f, 0.1f); move_f32_towards(&player->boundingBoxSize, gKartBoundingBoxSizeTable[player->characterId], 0.1f); - + player->effects &= ~LIGHTNING_EFFECT; player->size = 1.0f; player->boundingBoxSize = gKartBoundingBoxSizeTable[player->characterId]; player->unk_DB4.unk10 = 3.0f; player->unk_DB4.unk2 = 0; player->effects |= 0x08000000; - + if ((player->effects & 0x20000) == 0x20000) { player->rotation[1] = player->unk_0AE; } - + player->effects &= ~0x20000; } @@ -984,7 +985,7 @@ void func_8008E4A4(Player* player, s8 arg1) { player->unk_042 = 0; player->type &= ~0x80; - if ((gIsPlayerTripleAButtonCombo[arg1] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { + if ((gIsPlayerTripleAButtonCombo[arg1] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { player->currentSpeed += 100.0f; } if (gModeSelection == BATTLE) { @@ -1007,7 +1008,7 @@ void func_8008E4A4(Player* player, s8 arg1) { if (gModeSelection == BATTLE) { func_8006B8B4(player, arg1); } - if ((gIsPlayerTripleAButtonCombo[arg1] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { + if ((gIsPlayerTripleAButtonCombo[arg1] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { player->currentSpeed += 100.0f; } @@ -1054,7 +1055,7 @@ void apply_reverse_sound_effect(Player *player, s8 arg1) player->soundEffects &= ~(REVERSE_SOUND_EFFECT | 0x80000); player->unk_0B6 |= 0x40; gTimerBoostTripleACombo[arg1] = 0; - gIsPlayerTripleAButtonCombo[arg1] = FALSE; + gIsPlayerTripleAButtonCombo[arg1] = false; gCountASwitch[arg1] = 0; gFrameSinceLastACombo[arg1] = 0; } @@ -1095,7 +1096,7 @@ void apply_hit_by_item_effect(Player *player, s8 arg1) { D_80165190[2][arg1] = 1; player->unk_042 = 0; - if ((gIsPlayerTripleAButtonCombo[arg1] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { + if ((gIsPlayerTripleAButtonCombo[arg1] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { player->currentSpeed += 100.0f; } @@ -1115,7 +1116,7 @@ void apply_hit_by_item_effect(Player *player, s8 arg1) { D_80165190[2][arg1] = 1; D_80165190[3][arg1] = 1; player->unk_042 = 0; - if ((gIsPlayerTripleAButtonCombo[arg1] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { + if ((gIsPlayerTripleAButtonCombo[arg1] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { player->currentSpeed += 100.0f; } @@ -1141,20 +1142,20 @@ void apply_hit_by_item_sound_effect(Player* player, s8 arg1) { player->unk_236 = 4; player->unk_042 = 0; player->unk_0E0 = 0; - + if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008005); func_800C9060(arg1, SOUND_ACTION_EXPLOSION); } else { func_800098FC(arg1, player); } - + player->effects |= HIT_BY_ITEM_EFFECT; player->unk_0B6 |= 0x40; player->soundEffects &= ~0x01000002; gTimerBoostTripleACombo[arg1] = 0; - gIsPlayerTripleAButtonCombo[arg1] = FALSE; + gIsPlayerTripleAButtonCombo[arg1] = false; gCountASwitch[arg1] = 0; gFrameSinceLastACombo[arg1] = 0; } @@ -1246,7 +1247,7 @@ void apply_boost_ramp_wood_effect(Player* player) { } else { move_f32_towards(&player->boostPower, 300.0f, 0.1f); } - + if (player->boostPower <= 1.0f) { player->effects &= ~BOOST_RAMP_WOOD_EFFECT; player->boostPower = 0.0f; @@ -1267,10 +1268,10 @@ void func_8008F104(Player* player, s8 arg1) { player->unk_0B2 = 2; player->unk_0C0 = 0; player->unk_07C = 0; - player->effects |= 0x4000; + player->effects |= 0x4000; player->unk_078 = 0; D_8018D920[arg1] = -0x8000; - + if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008003); } @@ -1357,13 +1358,13 @@ void func_8008F494(Player* player, s8 arg1) { clean_effect(player, arg1); func_8008F86C(player, arg1); - + player->unk_0A8 = 0; player->effects |= 0x10000; player->effects &= ~0x10; player->unk_236 = 0x1E; player->unk_042 = 0; - + if (((player->type & PLAYER_HUMAN) != 0) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0) && ((player->unk_0CA & 2) == 0) && @@ -1379,7 +1380,7 @@ void func_8008F5A4(Player* player, s8 arg1) { func_8006B8B4(player, arg1); player->unk_044 &= ~0x8000; } - + player->unk_206 = 0; player->slopeAccel = 0; player->effects &= ~0x10000; @@ -1452,7 +1453,7 @@ void apply_boo_effect(Player* arg0, s8 arg1) { tmp = ((s32) gCourseTimer) - D_8018D950[arg1]; if (tmp < 7) { arg0->unk_0C6 -= 2; - + if (arg0->unk_0C6 < 0x61) { arg0->unk_0C6 = 0x60; } @@ -1488,7 +1489,7 @@ void apply_boo_sound_effect(Player* player, s8 arg1) { if ((player->type & PLAYER_HUMAN) != 0) { player->unk_044 |= 0x200; - + for (temp_v1 = 0; temp_v1 < 10; ++temp_v1) { player->unk_258[temp_v1].unk_01C = 0; player->unk_258[temp_v1].unk_01E = 0; @@ -1548,7 +1549,7 @@ void func_8008FC64(Player* player, s8 arg1) { player->soundEffects &= 0xFBFFFFFF; player->soundEffects |= 0x08000000; player->type |= PLAYER_UNKNOWN_0x40; - + func_8008FDA8(player, arg1); func_800569F4(arg1); } @@ -1566,7 +1567,7 @@ void func_8008FCDC(Player* player, s8 arg1) { void func_8008FD4C(Player* player, UNUSED s8 arg1) { s16 temp_v0; - + player->soundEffects |= 0x04000000; player->unk_044 |= 0x200; @@ -1589,7 +1590,7 @@ void func_8008FDA8(Player* player, UNUSED s8 arg1) { void func_8008FDF4(Player* player, UNUSED s8 arg1) { clean_effect(player, arg1); - + player->effects &= ~0x10; player->kartHopJerk = D_800E37F0[player->characterId]; player->kartHopAcceleration = 0.0f; @@ -1648,9 +1649,9 @@ void func_8008FF08(Player *player, s8 playerId) { case COURSE_FRAPPE_SNOWLAND: waypoint = gNearestWaypointByPlayerId[playerId]; #ifdef VERSION_EU - if (((waypoint >= 0xF0) && (waypoint < 0x11E)) || + if (((waypoint >= 0xF0) && (waypoint < 0x11E)) || ((gCopyNearestWaypointByPlayerId[playerId] >= 0xF0) && (gCopyNearestWaypointByPlayerId[playerId] < 0x11E))) -#else +#else if ((waypoint >= 0xF0) && (waypoint < 0x105)) #endif { @@ -1790,7 +1791,7 @@ void func_80090778(Player* player) { clean_effect(player, playerIndex); func_8008F86C(player, playerIndex); - + player->unk_DB4.unk0 = 0; player->unk_0C2 = 0; player->unk_DB4.unk8 = 0.0f; @@ -1839,13 +1840,13 @@ void func_80090868(Player* player) { } void func_80090970(Player *player, s8 playerId, s8 arg2) { - s32 stackPadding0; - s32 stackPadding1; + UNUSED s32 stackPadding0; + UNUSED s32 stackPadding1; Vec3f sp44; Vec3f sp38; TrackWaypoint *waypoint; - s32 stackPadding2; - s32 stackPadding3; + UNUSED s32 stackPadding2; + UNUSED s32 stackPadding3; player->unk_0C2 = 0x000C; player->unk_078 = 0; @@ -2008,7 +2009,7 @@ void func_80090970(Player *player, s8 playerId, s8 arg2) { bool prevent_item_use(Player *player) { s32 phi_v0 = 0; if ((((((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) || ((player->type & PLAYER_UNKNOWN_0x40) != 0)) || ((player->type & PLAYER_CINEMATIC_MODE) != 0)) || ((player->type & PLAYER_EXISTS) == 0)) { - return TRUE; + return true; } switch (player->currentItemCopy) { @@ -2017,7 +2018,7 @@ bool prevent_item_use(Player *player) { case ITEM_TRIPLE_MUSHROOM: case ITEM_SUPER_MUSHROOM: if ((player->effects & 8) != 0) { - return TRUE; + return true; } phi_v0 = EFFECT_BLACKLIST_USE_ITEM; goto prevent_item_use_label; @@ -2028,9 +2029,9 @@ bool prevent_item_use(Player *player) { prevent_item_use_label: default: if ((player->effects & phi_v0) != 0) { - return TRUE; + return true; } - return FALSE; + return false; } } @@ -2077,7 +2078,7 @@ void func_800911B4(Player* player, s8 arg1) { void func_80091298(Player *player, s8 arg1) { s16 var_v1; - s32 stackPadding1; + UNUSED s32 stackPadding1; Vec3f spC = { 27.167f, 25.167f, 23.167f }; player->unk_044 |= 0x2000; diff --git a/src/effects.h b/src/effects.h index bf114cc17..2533daede 100644 --- a/src/effects.h +++ b/src/effects.h @@ -1,7 +1,7 @@ #ifndef EFFECTS_H #define EFFECTS_H -#include "common_structs.h" +#include /* Function Prototypes */ @@ -111,7 +111,7 @@ void func_80090178(Player*, s8, Vec3f, Vec3f); void func_80090778(Player*); void func_80090868(Player*); void func_80090970(Player*, s8, s8); -s32 prevent_item_use(Player*); +bool prevent_item_use(Player*); void func_800911B4(Player*, s8); void func_80091298(Player*, s8); diff --git a/src/ending/camera_junk.c b/src/ending/camera_junk.c index ec709d0ff..47b7033df 100644 --- a/src/ending/camera_junk.c +++ b/src/ending/camera_junk.c @@ -16,7 +16,7 @@ void setup_camera_podium_ceremony(void) { camera = &cameras[0]; func_80283648(camera); - + x_dist = camera->lookAt[0] - camera->pos[0]; y_dist = camera->lookAt[1] - camera->pos[1]; z_dist = camera->lookAt[2] - camera->pos[2]; diff --git a/src/ending/ceremony_and_credits.c b/src/ending/ceremony_and_credits.c index 05a4479d5..bdee3dc6c 100644 --- a/src/ending/ceremony_and_credits.c +++ b/src/ending/ceremony_and_credits.c @@ -6,7 +6,6 @@ #include #include -#include #include #include #include "math_util.h" @@ -96,7 +95,7 @@ UNUSED void func_80282050(Vec3f dest, Vec3f src, s16 angle) { dest[2] = (sp2C[2] * coss(angle)) - (sp2C[0] * sins(angle)); } -UNUSED void func_802820F8(f32 *dest, f32 *src, s16 angle) { +UNUSED void func_802820F8(Vec3f dest, Vec3f src, s16 angle) { Vec3f sp2C; vec3f_copy_return_dupe(sp2C, src); @@ -114,9 +113,9 @@ s32 f32_lerp(f32 *dest, f32 src, f32 lerp) { if (lerp > 1.0f) { lerp = 1.0f; } - + *dest = *dest + ((src - *dest) * lerp); - + if (src == *dest) { return 0; } @@ -134,7 +133,7 @@ UNUSED s32 func_80282200(Vec3s arg0, s16 arg1, s16 arg2) { temp_v0 += arg1; arg0[0] = temp_v0; } - + if (arg1 == arg0[0]) { return 0; } @@ -144,7 +143,7 @@ UNUSED s32 func_80282200(Vec3s arg0, s16 arg1, s16 arg2) { // Calculates fade in/out s32 set_transition_colour_fade_alpha_ending(f32 *arg0, f32 arg1, f32 arg2) { f32 temp_f0 = arg1 - *arg0; - + if (arg2 < 0.0f) { arg2 = -1.0f * arg2; } @@ -310,7 +309,7 @@ s32 move_point_along_spline(Vec3f p, f32 *arg1, struct struct_80283430 spline[], } func_80282700(u, p, arg1, controlPoints[0], controlPoints[1], controlPoints[2], controlPoints[3]); - + if (spline[*splineSegment + 1].unk2 != 0) { firstSpeed = 1.0f / spline[*splineSegment + 1].unk2; } @@ -357,10 +356,10 @@ void func_80282C40(struct struct_80283430 *arg0, struct struct_80282C40 *arg1, s s32 i = 0; s32 j = 0; func_80282BE4(&arg0[j], arg1[j].unk0, arg1[j].unk3, arg1[j].unk4, arg1[j].unk6, arg2); - + j++; goto dummy_label_888430; - while(TRUE) { + while(true) { do { dummy_label_888430: ; @@ -373,7 +372,7 @@ dummy_label_888430: ; func_80282BE4(&arg0[j], arg1->unk0, arg1[i].unk3, arg1[i].unk4, arg1[i].unk6, arg2); func_80282BE4(&arg0[j + 1], arg1->unk0, 0, arg1[i].unk4, arg1[i].unk6, arg2); func_80282BE4(&arg0[j + 2], arg1->unk0, 0, arg1[i].unk4, arg1[i].unk6, arg2); - func_80282BE4(&arg0[j + 3], -1, 0, arg1[i].unk4, arg1[i].unk6, arg2); + func_80282BE4(&arg0[j + 3], -1, 0, arg1[i].unk4, arg1[i].unk6, arg2); break; } } @@ -728,7 +727,7 @@ void func_80283BF0(UNUSED struct CinematicCamera *camera) { func_800C8EF8(0x1A); } -// +// void func_80283C14(UNUSED struct CinematicCamera *camera) { func_800C8EF8(0x1B); } @@ -1585,7 +1584,7 @@ void func_802847CC(struct CinematicCamera *camera) { } #endif - if (gCutsceneShotTimer == sp2C) { + if (gCutsceneShotTimer == sp2C) { if (D_80286A04[D_800DC5E4].unk0 != 2) { func_80280268(D_80286A04[D_800DC5E4 + 1].unk1); } @@ -1632,7 +1631,7 @@ void play_cutscene(struct CinematicCamera *camera) { #undef CUTSCENE if ((cutsceneDuration != 0) && ((gCutsceneShotTimer & 0xC000) == 0)) { - + if (gCutsceneShotTimer < 16383) { gCutsceneShotTimer++; } @@ -1652,12 +1651,12 @@ void play_cutscene(struct CinematicCamera *camera) { reset_spline(); } } - + } /** * Scene transition - * + * * Sliding black borders that open horizontally to display scene. * Used at the beginning of award ceremony and throughout credits. */ diff --git a/src/ending/ceremony_and_credits.h b/src/ending/ceremony_and_credits.h index 64fb1fb4a..475a5278b 100644 --- a/src/ending/ceremony_and_credits.h +++ b/src/ending/ceremony_and_credits.h @@ -1,7 +1,7 @@ #ifndef CEREMONY_AND_CREDITS_H #define CEREMONY_AND_CREDITS_H -#include "common_structs.h" +#include #include "camera.h" struct struct_80283431 { @@ -121,7 +121,7 @@ void func_80282048(void); void func_80282050(Vec3f, Vec3f, s16); void func_802820F8(Vec3f, Vec3f, s16); s32 f32_lerp(f32*, f32, f32); -s32 func_80282200(s16*, s16, s16); +s32 func_80282200(Vec3s, s16, s16); s32 set_transition_colour_fade_alpha_ending(f32*, f32, f32); s32 func_80282364(s16*, s16, s16); void reset_spline(void); diff --git a/src/ending/code_80280000.c b/src/ending/code_80280000.c index d96fcb898..5054fe5bb 100644 --- a/src/ending/code_80280000.c +++ b/src/ending/code_80280000.c @@ -3,18 +3,17 @@ #include #include #include +#include #include #include #include -#include #include "camera.h" #include "memory.h" #include "math_util.h" #include "code_80280000.h" #include "code_80281780.h" #include "skybox_and_splitscreen.h" -#include #include "code_80091750.h" #include "code_8006E9C0.h" #include "code_800029B0.h" @@ -51,7 +50,7 @@ void func_80280038(void) { func_802A53A4(); init_rdp(); func_80057FC4(0); - + gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); guPerspective(&gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect, D_80150150, D_8015014C, 1.0f); gSPPerspNormalize(gDisplayListHead++, perspNorm); @@ -84,7 +83,7 @@ void func_80280268(s32 arg0) { void credits_loop(void) { Camera *camera = &cameras[0]; - + f32 temp_f12; f32 temp; f32 temp_f14; @@ -141,7 +140,7 @@ void load_credits(void) { load_course(gCurrentCourseId); D_8015F730 = gNextFreeMemoryAddress; set_segment_base_addr(0xB, (void *) decompress_segments((u8 *) CEREMONY_DATA_ROM_START, (u8 *) CEREMONY_DATA_ROM_END)); - + gCourseMinX = -0x15A1; gCourseMinY = -0x15A1; gCourseMinZ = -0x15A1; @@ -152,10 +151,10 @@ void load_credits(void) { D_8015F59C = 0; D_8015F5A0 = 0; D_8015F58C = 0; - D_8015F588 = 0; + gCollisionMeshCount = 0; D_800DC5BC = 0; D_800DC5C8 = 0; - gSurfaceMap = (mk64_surface_map_ram *) gNextFreeMemoryAddress; + gCollisionMesh = (CollisionTriangle *) gNextFreeMemoryAddress; camera->pos[0] = 1400.0f; camera->pos[1] = 300.0f; camera->pos[2] = 1400.0f; diff --git a/src/ending/code_80280000.h b/src/ending/code_80280000.h index dd71642d1..c9cdbb81e 100644 --- a/src/ending/code_80280000.h +++ b/src/ending/code_80280000.h @@ -1,7 +1,7 @@ #ifndef CODE_80280000_H #define CODE_80280000_H -#include "common_structs.h" +#include /* Function Prototypes */ diff --git a/src/ending/code_80281780.c b/src/ending/code_80281780.c index 683c72f00..b5974fa92 100644 --- a/src/ending/code_80281780.c +++ b/src/ending/code_80281780.c @@ -1,11 +1,10 @@ #include #include #include -#include #include +#include #include "code_80281780.h" -#include "types.h" #include "memory.h" #include "camera.h" #include "camera_junk.h" @@ -128,31 +127,31 @@ void load_ceremony_cutscene(void) { D_8015F59C = 0; D_8015F5A0 = 0; D_8015F58C = 0; - D_8015F588 = (u16)0; + gCollisionMeshCount = (u16)0; D_800DC5BC = (u16)0; D_800DC5C8 = (u16)0; - gSurfaceMap = (mk64_surface_map_ram *) gNextFreeMemoryAddress; + gCollisionMesh = (CollisionTriangle *) gNextFreeMemoryAddress; //! @bug these segmented addresses need to be symbols for mobility // d_course_royal_raceway_packed_dl_67E8 - set_vertex_data_with_default_section_id(0x070067E8, -1); + generate_collision_mesh_with_default_section_id((Gfx *)0x070067E8, -1); // d_course_royal_raceway_packed_dl_AEF8 - set_vertex_data_with_default_section_id(0x0700AEF8, -1); + generate_collision_mesh_with_default_section_id((Gfx *)0x0700AEF8, -1); // d_course_royal_raceway_packed_dl_A970 - set_vertex_data_with_default_section_id(0x0700A970, 8); + generate_collision_mesh_with_default_section_id((Gfx *)0x0700A970, 8); // d_course_royal_raceway_packed_dl_AC30 - set_vertex_data_with_default_section_id(0x0700AC30, 8); + generate_collision_mesh_with_default_section_id((Gfx *)0x0700AC30, 8); // d_course_royal_raceway_packed_dl_CE0 - set_vertex_data_with_default_section_id(0x07000CE0, 0x10); + generate_collision_mesh_with_default_section_id((Gfx *)0x07000CE0, 0x10); // d_course_royal_raceway_packed_dl_E88 - set_vertex_data_with_default_section_id(0x07000E88, 0x10); + generate_collision_mesh_with_default_section_id((Gfx *)0x07000E88, 0x10); // d_course_royal_raceway_packed_dl_A618 - set_vertex_data_with_default_section_id(0x0700A618, -1); + generate_collision_mesh_with_default_section_id((Gfx *)0x0700A618, -1); // d_course_royal_raceway_packed_dl_A618 - set_vertex_data_with_default_section_id(0x0700A618, -1); + generate_collision_mesh_with_default_section_id((Gfx *)0x0700A618, -1); // d_course_royal_raceway_packed_dl_23F8 - set_vertex_data_with_default_section_id(0x070023F8, 1); + generate_collision_mesh_with_default_section_id((Gfx *)0x070023F8, 1); // d_course_royal_raceway_packed_dl_2478 - set_vertex_data_with_default_section_id(0x07002478, 1); + generate_collision_mesh_with_default_section_id((Gfx *)0x07002478, 1); func_80295C6C(); debug_switch_character_ceremony_cutscene(); func_802818BC(); diff --git a/src/ending/code_80281C40.c b/src/ending/code_80281C40.c index aa36464f1..afc01f1de 100644 --- a/src/ending/code_80281C40.c +++ b/src/ending/code_80281C40.c @@ -32,7 +32,7 @@ void func_80281C40(void) { s32 i; for (i = 0; i < D_802874FC; i++) { - func_800579F8(D_80287560[i].unk0, D_80287560[i].unk2, (s8 *) D_80287560[i].unk8, D_80287560[i].unk4); + func_800579F8(D_80287560[i].unk0, D_80287560[i].unk2, (char *) D_80287560[i].unk8, D_80287560[i].unk4); } } diff --git a/src/ending/code_80281C40.h b/src/ending/code_80281C40.h index 50ccc4f4e..23f356284 100644 --- a/src/ending/code_80281C40.h +++ b/src/ending/code_80281C40.h @@ -1,5 +1,5 @@ #ifndef CODE_80281C40_H -#define CODE_80281C40_h +#define CODE_80281C40_H /* Function Prototypes */ diff --git a/src/ending/credits.h b/src/ending/credits.h index 277cf0196..40ac46bec 100644 --- a/src/ending/credits.h +++ b/src/ending/credits.h @@ -1,7 +1,7 @@ #ifndef CREDITS_H #define CREDITS_H -#include "PR/ultratypes.h" +#include #define SLIDE_RIGHT 0 #define SLIDE_LEFT 1 diff --git a/src/ending/dl_unk_80284EE0.c b/src/ending/dl_unk_80284EE0.c index 4a729773b..64282cb08 100644 --- a/src/ending/dl_unk_80284EE0.c +++ b/src/ending/dl_unk_80284EE0.c @@ -1,6 +1,5 @@ -#include +#include #include - #include "courses/royal_raceway/course_displaylists.inc.h" // Init RDP - RSP (Ceremony) diff --git a/src/ending/podium_ceremony_actors.c b/src/ending/podium_ceremony_actors.c index 7d83d25af..260ffe234 100644 --- a/src/ending/podium_ceremony_actors.c +++ b/src/ending/podium_ceremony_actors.c @@ -2,7 +2,6 @@ #include #include #include -#include #include #include #include "main.h" @@ -91,7 +90,7 @@ void set_initial_position(CeremonyActor *actor) { actor->pos[0] = params->unk2[0]; actor->pos[1] = params->unk2[1]; actor->pos[2] = params->unk2[2]; - + // Place value in the high bits of s16. // Example: 85, 0b01010101 -> 0b0101010100000000 actor->unkA = params->unk8 << 8; @@ -150,7 +149,7 @@ u16 random_u16_credits(void) { temp1 = ((temp1 & 0x00FF) << 1) ^ sRandomSeed16; temp2 = (temp1 >> 1) ^ 0xFF80; - + if ((temp1 & 1) == 0) { if (temp2 == 43605) { sRandomSeed16 = 0; @@ -357,7 +356,7 @@ void spawn_firework_cone(s32 arg0, s32 arg1, s32 arg2) { cone->pos[0] = random_who_knows(0.0f) + arg0; cone->pos[1] = random_who_knows((f32) (D_802874B0[11] + 100)) + (f32) arg1; cone->pos[2] = random_who_knows((f32) (D_802874B0[12] + 700)) + (f32) arg2; - + num = 1.1f; // Wrap the counter from zero to three @@ -394,7 +393,7 @@ void spawn_timer(void) { } else if (D_802874D8.actorTimer == 2) { spawn_balloons(-0xC6C, (s32) ((f32) D_802874B0[10] + 210.0f), -0x1EF); } - + D_802874D8.actorTimer += 1; } @@ -476,7 +475,7 @@ void podium_ceremony_loop(void) { func_80281D00(); func_80281540(); #if DVDL - display_dvdl(); + display_dvdl(); #endif gDPFullSync(gDisplayListHead++); gSPEndDisplayList(gDisplayListHead++); diff --git a/src/ending/podium_ceremony_actors.h b/src/ending/podium_ceremony_actors.h index 85c3549e5..59d984559 100644 --- a/src/ending/podium_ceremony_actors.h +++ b/src/ending/podium_ceremony_actors.h @@ -1,7 +1,7 @@ #ifndef podium_ceremony_actors_H #define podium_ceremony_actors_H -#include "common_structs.h" +#include enum CeremonyActorType { Initial, diff --git a/src/gbiMacro.c b/src/gbiMacro.c index f079632e4..f1985df36 100644 --- a/src/gbiMacro.c +++ b/src/gbiMacro.c @@ -1,9 +1,8 @@ #include #include -#include "types.h" -#include "PR/gu.h" +#include #include "main.h" -#include "config.h" +#include extern s16 D_800E43A8; extern Mtx D_0D008E98; diff --git a/src/kart_dma.c b/src/kart_dma.c index 3ed4c730c..7ce178d56 100644 --- a/src/kart_dma.c +++ b/src/kart_dma.c @@ -2,7 +2,7 @@ #include #include "main.h" #include "buffers.h" -#include "common_structs.h" +#include #include "kart_dma.h" #include "defines.h" @@ -1689,39 +1689,39 @@ u8 *gKartPalettes[] = { * * @param player * @param playerId Player ID. - * @param arg2 Rom buffer index appears to always be 0-3. Sometimes subtracted by 2. - * @param arg3 Second buffer index appears to always be 0-3. - * @param arg4 First buffer index always zero. + * @param screenId Rom buffer index appears to always be 0-3. Sometimes subtracted by 2. + * @param screenId2 Second buffer index appears to always be 0-3. + * @param index First buffer index always zero. **/ -void load_kart_texture(Player *player, s8 playerId, s8 arg2, s8 arg3, s8 arg4) { +void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s8 index) { s32 temp = player->effects; if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { - if (player->animFrameSelector[arg2] != 0) { - osInvalDCache(&D_802DFB80[arg4][arg3][playerId], D_800DDEB0[player->characterId]); + if (player->animFrameSelector[screenId] != 0) { + osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]); osPiStartDma( &gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET( - gKartTextureTable1[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]] + gKartTextureTable1[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]] )], - &D_802DFB80[arg4][arg3][playerId], + &gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId], &gDmaMesgQueue ); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } else { - osInvalDCache(&D_802DFB80[arg4][arg3][playerId], D_800DDEB0[player->characterId]); + osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]); osPiStartDma( &gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET( - gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]] + gKartTextureTable0[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]] )], - &D_802DFB80[arg4][arg3][playerId], + &gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId], &gDmaMesgQueue ); @@ -1729,7 +1729,7 @@ void load_kart_texture(Player *player, s8 playerId, s8 arg2, s8 arg3, s8 arg4) { osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } } else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) || ((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000)) { - osInvalDCache(&D_802DFB80[arg4][arg3][playerId], 0x780U); + osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], 0x780U); // player->unk_0A8 >> 8 converts an 8.8 fixed-point animation frame to a whole number. osPiStartDma( &gDmaIoMesg, @@ -1738,23 +1738,23 @@ void load_kart_texture(Player *player, s8 playerId, s8 arg2, s8 arg3, s8 arg4) { (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET( gKartTextureTumbles[player->characterId][player->unk_0A8 >> 8] )], - &D_802DFB80[arg4][arg3][playerId], + &gEncodedKartTexture[index][screenId2][playerId], 0x900, &gDmaMesgQueue ); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } else { - osInvalDCache(&D_802DFB80[arg4][arg3][playerId], D_800DDEB0[player->characterId]); + osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]); osPiStartDma( &gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET( - gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]] + gKartTextureTable0[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]] )], - &D_802DFB80[arg4][arg3][playerId], + &gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId], &gDmaMesgQueue ); @@ -1763,13 +1763,13 @@ void load_kart_texture(Player *player, s8 playerId, s8 arg2, s8 arg3, s8 arg4) { } } -void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) { +void load_kart_texture_non_blocking(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) { s32 temp = player->effects; if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { if (player->animFrameSelector[arg2] != 0) { - osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]); + osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]); osPiStartDma( &gDmaIoMesg, @@ -1778,12 +1778,12 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) { (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET( gKartTextureTable1[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]] )], - &D_802DFB80[arg4][arg3][arg1], + &gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue ); } else { - osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]); + osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]); osPiStartDma( &gDmaIoMesg, @@ -1792,7 +1792,7 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) { (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET( gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]] )], - &D_802DFB80[arg4][arg3][arg1], + &gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue ); @@ -1800,7 +1800,7 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) { } else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) || ((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000)) { - osInvalDCache(&D_802DFB80[arg4][arg3][arg1], 0x780); + osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], 0x780); // player->unk_0A8 >> 8 converts an 8.8 fixed-point animation frame to a whole number. osPiStartDma( &gDmaIoMesg, @@ -1809,12 +1809,12 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) { (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET( gKartTextureTumbles[player->characterId][player->unk_0A8 >> 8] )], - &D_802DFB80[arg4][arg3][arg1], + &gEncodedKartTexture[arg4][arg3][arg1], 0x900, &gDmaMesgQueue ); } else { - osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]); + osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]); osPiStartDma( &gDmaIoMesg, @@ -1823,18 +1823,18 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) { (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET( gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]] )], - &D_802DFB80[arg4][arg3][arg1], + &gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue ); } } -void load_kart_palette(Player *player, s8 playerId, s8 arg2, s8 arg3) { +void load_kart_palette(Player *player, s8 playerId, s8 screenId, s8 index) { #ifdef AVOID_UB - struct_D_802F1F80 *temp_s0 = &D_802F1F80[arg3][arg2][playerId]; + struct_D_802F1F80 *temp_s0 = &gPlayerPalettesList[index][screenId][playerId]; #else - struct_D_802F1F80 *temp_s0 = &D_802F1F80[arg3][arg2][playerId * 0x100]; + struct_D_802F1F80 *temp_s0 = (struct_D_802F1F80 *) &gPlayerPalettesList[index][screenId][playerId * 0x100]; #endif switch(gActiveScreenMode) { case SCREEN_MODE_1P: @@ -1876,7 +1876,7 @@ void load_kart_palette(Player *player, s8 playerId, s8 arg2, s8 arg3) { } } -void func_80027BDC(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) { +void load_player_data(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) { osInvalDCache(vAddr, size); osPiStartDma( @@ -1892,7 +1892,15 @@ void func_80027BDC(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) { osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } -void func_80027C74(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) { +/** + * @brief read data from ROM and write it to the given virtual address + * + * @param player Player struct + * @param arg1 ROM offset + * @param vAddr Virtual address + * @param size Size of data to read + */ +void load_player_data_non_blocking(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) { osInvalDCache(vAddr, size); osPiStartDma( diff --git a/src/kart_dma.h b/src/kart_dma.h index 0c8fc07ae..f14241d73 100644 --- a/src/kart_dma.h +++ b/src/kart_dma.h @@ -2,15 +2,15 @@ #define KART_DMA_H #include "macros.h" -#include "common_structs.h" +#include /* Function Prototypes */ void load_kart_texture(Player*, s8, s8, s8, s8); -void func_80027560(Player*, s8, s8, s8, s8); +void load_kart_texture_non_blocking(Player*, s8, s8, s8, s8); void load_kart_palette(Player*, s8, s8, s8); -void func_80027BDC(Player*, s32, void*, u16); -void func_80027C74(Player*, s32, void*, u16); +void load_player_data(Player*, s32, void*, u16); +void load_player_data_non_blocking(Player*, s32, void*, u16); /* This is where I'd put my static data, if I had any */ diff --git a/src/main.c b/src/main.c index 78222bca6..b060afb47 100644 --- a/src/main.c +++ b/src/main.c @@ -1,11 +1,13 @@ -#define STRANGE_MAIN_HEADER_H +#ifndef GCC +#define D_800DC510_AS_U16 +#endif #include #include #include #include #include -#include -#include +#include + #include "profiler.h" #include "main.h" #include "racing/memory.h" @@ -83,11 +85,11 @@ Player *gPlayerTwoCopy = &gPlayers[1]; UNUSED Player *gPlayerThreeCopy = &gPlayers[2]; UNUSED Player *gPlayerFourCopy = &gPlayers[3]; -s32 D_800FD850[3]; +UNUSED s32 D_800FD850[3]; struct GfxPool gGfxPools[2]; struct GfxPool *gGfxPool; -s32 gfxPool_padding; // is this necessary? +UNUSED s32 gfxPool_padding; // is this necessary? struct VblankHandler gGameVblankHandler; struct VblankHandler sSoundVblankHandler; OSMesgQueue gDmaMesgQueue, gGameVblankQueue, gGfxVblankQueue, unused_gMsgQueue, gIntrMesgQueue, gSPTaskMesgQueue; @@ -103,15 +105,15 @@ OSMesgQueue gSIEventMesgQueue; OSMesg gSIEventMesgBuf[3]; OSContStatus gControllerStatuses[4]; - OSContPad gControllerPads[4]; u8 gControllerBits; - -struct UnkStruct_8015F584 D_8014F110[1024]; +// Contains a 32x32 grid of indices into gCollisionIndices containing indices into gCollisionMesh +CollisionGrid gCollisionGrid[1024]; u16 gNumActors; u16 gMatrixObjectCount; s32 gTickSpeed; f32 D_80150118; + u16 wasSoftReset; u16 D_8015011E; @@ -120,9 +122,6 @@ s32 gGotoMode; UNUSED s32 D_80150128; UNUSED s32 D_8015012C; f32 gCameraZoom[4]; // look like to be the fov of each character -//f32 D_80150134; -//f32 D_80150138; -//f32 D_8015013C; UNUSED s32 D_80150140; UNUSED s32 D_80150144; f32 gScreenAspect; @@ -133,6 +132,7 @@ UNUSED f32 D_80150154; struct D_80150158 gD_80150158[16]; uintptr_t gSegmentTable[16]; Gfx *gDisplayListHead; + struct SPTask *gGfxSPTask; s32 D_801502A0; s32 D_801502A4; @@ -161,8 +161,8 @@ ALIGNED8 u8 gAudioThreadStack[STACKSIZE]; UNUSED OSThread D_8015CD30; UNUSED ALIGNED8 u8 D_8015CD30_Stack[STACKSIZE / 2]; -u8 gGfxSPTaskYieldBuffer[4352]; -u32 gGfxSPTaskStack[256]; +ALIGNED8 u8 gGfxSPTaskYieldBuffer[4352]; +ALIGNED8 u32 gGfxSPTaskStack[256]; OSMesg gPIMesgBuf[32]; OSMesgQueue gPIMesgQueue; @@ -231,7 +231,7 @@ void thread1_idle(void *arg) { osViSetMode(&osViModeTable[OS_VI_MPAL_LAN1]); } #endif - osViBlack(TRUE); + osViBlack(true); osViSetSpecialFeatures(OS_VI_GAMMA_OFF); osCreatePiManager(OS_PRIORITY_PIMGR, &gPIMesgQueue, gPIMesgBuf, ARRAY_COUNT(gPIMesgBuf)); wasSoftReset = (s16) osResetType; @@ -242,7 +242,7 @@ void thread1_idle(void *arg) { osSetThreadPri(NULL, 0); // Halt - while (TRUE); + while (true); } void setup_mesg_queues(void) { @@ -307,9 +307,9 @@ void init_controllers(void) { osSetEventMesg(OS_EVENT_SI, &gSIEventMesgQueue, (OSMesg) 0x33333333); osContInit(&gSIEventMesgQueue, &gControllerBits, gControllerStatuses); if ((gControllerBits & 1) == 0) { - sIsController1Unplugged = TRUE; + sIsController1Unplugged = true; } else { - sIsController1Unplugged = FALSE; + sIsController1Unplugged = false; } } @@ -614,14 +614,14 @@ void race_logic_loop(void) { D_8015F788 = 0; render_player_one_1p_screen(); if (!gEnableDebugMode) { - D_800DC514 = FALSE; + D_800DC514 = false; } else { if (D_800DC514) { if ((gControllerOne->buttonPressed & R_TRIG) && (gControllerOne->button & A_BUTTON) && (gControllerOne->button & B_BUTTON)) { - D_800DC514 = FALSE; + D_800DC514 = false; } rotY = camera1->rot[1]; @@ -642,7 +642,7 @@ void race_logic_loop(void) { if ((gControllerOne->buttonPressed & L_TRIG) && (gControllerOne->button & A_BUTTON) && (gControllerOne->button & B_BUTTON)) { - D_800DC514 = TRUE; + D_800DC514 = true; } } } @@ -873,7 +873,7 @@ void game_state_handler(void) { (gControllerOne->button & Z_TRIG) && (gControllerOne->button & A_BUTTON)) { gGamestateNext = CREDITS_SEQUENCE; - } else if ((gControllerOne->button & L_TRIG) && + } else if ((gControllerOne->button & L_TRIG) && (gControllerOne->button & R_TRIG) && (gControllerOne->button & Z_TRIG) && (gControllerOne->button & B_BUTTON)) { @@ -1081,7 +1081,7 @@ void thread3_video(UNUSED void *arg0) { create_thread(&gGameLoopThread, 5, &thread5_game_loop, 0, gGameLoopThreadStack + ARRAY_COUNT(gGameLoopThreadStack), 10); osStartThread(&gGameLoopThread); - while (TRUE) { + while (true) { osRecvMesg(&gIntrMesgQueue, &msg, OS_MESG_BLOCK); switch ((u32) msg) { case MESG_VI_VBLANK: @@ -1148,7 +1148,7 @@ void update_gamestate(void) { gCurrentlyLoadedCourseId = COURSE_NULL; break; case RACING: - /** + /** * @bug Reloading this segment makes random_u16() deterministic for player spawn order. * In laymens terms, random_u16() outputs the same value every time. */ @@ -1190,7 +1190,7 @@ void thread5_game_loop(UNUSED void *arg) { read_controllers(); func_800C5CB8(); - while(TRUE) { + while(true) { func_800CB2C4(); // Update the gamestate if it has changed (racing, menus, credits, etc.). @@ -1216,7 +1216,7 @@ void thread4_audio(UNUSED void *arg) { osCreateMesgQueue(&sSoundMesgQueue, sSoundMesgBuf, ARRAY_COUNT(sSoundMesgBuf)); set_vblank_handler(1, &sSoundVblankHandler, &sSoundMesgQueue, (OSMesg) 512); - while (TRUE) { + while (true) { OSMesg msg; struct SPTask *spTask; diff --git a/src/main.h b/src/main.h index eca35b4a5..93c7b2584 100644 --- a/src/main.h +++ b/src/main.h @@ -1,7 +1,6 @@ #ifndef MAIN_H #define MAIN_H -#include "types.h" // Message IDs #define MESG_SP_COMPLETE 100 @@ -57,10 +56,10 @@ struct GfxPool { /* 0x28B20 */ struct SPTask spTask; }; // size = 0x28B70 -struct UnkStruct_8015F584 { - u16 unk0; - u16 unk2; -}; +typedef struct { + u16 triangle; // Index for gCollisionIndices which has indexes for gCollisionMesh + u16 numTriangles; +} CollisionGrid; void create_thread(OSThread*, OSId, void (*entry)(void *), void*, void*, OSPri); void main_func(void); @@ -136,30 +135,28 @@ extern Player *gPlayerEight; extern Player *gPlayerOneCopy; extern Player *gPlayerTwoCopy; -extern s32 D_800FD850[]; extern struct GfxPool gGfxPools[]; extern struct GfxPool *gGfxPool; -extern s32 gfxPool_padding; extern struct VblankHandler gGameVblankHandler; extern struct VblankHandler sSoundVblankHandler; extern OSMesgQueue gDmaMesgQueue, gGameVblankQueue, gGfxVblankQueue, unused_gMsgQueue, gIntrMesgQueue, gSPTaskMesgQueue; extern OSMesgQueue sSoundMesgQueue; -extern OSMesg sSoundMesgBuf[]; -extern OSMesg gDmaMesgBuf[], gGameMesgBuf; +extern OSMesg sSoundMesgBuf[1]; +extern OSMesg gDmaMesgBuf[1], gGameMesgBuf; extern OSMesg gGfxMesgBuf[]; -extern OSMesg gIntrMesgBuf[], gSPTaskMesgBuf[]; +extern OSMesg gIntrMesgBuf[16], gSPTaskMesgBuf[16]; extern OSMesg gMainReceivedMesg; extern OSIoMesg gDmaIoMesg; extern OSMesgQueue gSIEventMesgQueue; -extern OSMesg gSIEventMesgBuf[]; +extern OSMesg gSIEventMesgBuf[3]; extern OSContStatus gControllerStatuses[]; extern OSContPad gControllerPads[]; extern u8 gControllerBits; -extern struct UnkStruct_8015F584 D_8014F110[]; +extern CollisionGrid gCollisionGrid[]; extern u16 gNumActors; extern u16 gMatrixObjectCount; extern s32 gTickSpeed; @@ -203,11 +200,19 @@ extern u8 gGfxSPTaskYieldBuffer[]; extern u32 gGfxSPTaskStack[]; extern OSMesg gPIMesgBuf[]; extern OSMesgQueue gPIMesgQueue; - +void race_logic_loop(void); extern s32 gGamestate; -#ifndef STRANGE_MAIN_HEADER_H -extern s32 D_800DC510; +#ifndef D_800DC510_AS_U16 + // Prevent overlapping writes in gcc + // Whether D_800DC510 was intended to be a separate variable in main.c from the rest of the game is unknown + #ifdef GCC + extern u16 D_800DC510; + #else + extern s32 D_800DC510; + #endif #endif + +extern u16 D_800DC514; extern u16 creditsRenderMode; extern u16 gDemoMode; extern u16 gEnableDebugMode; diff --git a/src/math_util_2.c b/src/math_util_2.c index 1122b209c..5dee72012 100644 --- a/src/math_util_2.c +++ b/src/math_util_2.c @@ -11,6 +11,7 @@ #include "render_player.h" #include "code_80057C60.h" #include "defines.h" +#include "camera.h" #pragma intrinsic (sqrtf) @@ -29,9 +30,9 @@ UNUSED void operator_xor(s32 *arg0, s32 arg1) { UNUSED bool func_80040E84(s32 *arg0, s32 arg1) { bool phi_v1; - phi_v1 = FALSE; + phi_v1 = false; if ((*arg0 & arg1) != 0) { - phi_v1 = TRUE; + phi_v1 = true; } return phi_v1; } @@ -443,7 +444,7 @@ s32 func_800418E8(f32 arg0, f32 arg1, Vec3f arg2) { s32 func_80041924(Collision *arg0, Vec3f arg1) { s32 ret = 0; - func_802ADDC8(arg0, 10.0f, arg1[0], arg1[1], arg1[2]); + check_bounding_collision(arg0, 10.0f, arg1[0], arg1[1], arg1[2]); if (arg0->unk34 == 1) { ret = 1; } @@ -454,10 +455,10 @@ bool is_particle_on_screen(Vec3f arg0, Camera *arg1, u16 arg2) { u16 temp_t9; s32 ret; - ret = FALSE; + ret = false; temp_t9 = (get_angle_between_xy(arg1->pos[0], arg0[0], arg1->pos[2], arg0[2]) + (arg2 / 2)) - arg1->rot[1]; if ((temp_t9 >= 0) && (arg2 >= temp_t9)) { - ret = TRUE; + ret = true; } return ret; } @@ -469,7 +470,7 @@ void func_800419F8(void) { pos[0] = 0.0f; pos[1] = 0.0f; pos[2] = 120.0f; - vec3f_rotate_x_y(vec, pos, D_80165834); + vec3f_rotate_x_y(vec, pos, (s16*) D_80165834); D_80165840[0] = vec[0]; D_80165840[1] = vec[1]; D_80165840[2] = vec[2]; @@ -501,7 +502,7 @@ void mtfx_translation_x_y(Mat4 arg0, s32 x, s32 y) { * 1 0 0 x * 0 1 0 y * 0 0 1 0 - * 0 0 0 1 + * 0 0 0 1 */ } @@ -801,32 +802,32 @@ void mtxf_set_matrix_scale_transl(Mat4 transformMatrix, Vec3f vec1, Vec3f vec2, void mtxf_set_matrix_gObjectList(s32 objectIndex, Mat4 transformMatrix) { f32 sinX; - Objects *temp_s0 = &gObjectList[objectIndex]; + Object *object = &gObjectList[objectIndex]; f32 sinY; f32 cosY; f32 sinZ; f32 cosZ; f32 cosX; - sinX = sins(temp_s0->orientation[0]); - cosX = coss(temp_s0->orientation[0]); - sinY = sins(temp_s0->orientation[1]); - cosY = coss(temp_s0->orientation[1]); - sinZ = sins(temp_s0->orientation[2]); - cosZ = coss(temp_s0->orientation[2]); + sinX = sins(object->orientation[0]); + cosX = coss(object->orientation[0]); + sinY = sins(object->orientation[1]); + cosY = coss(object->orientation[1]); + sinZ = sins(object->orientation[2]); + cosZ = coss(object->orientation[2]); - transformMatrix[0][0] = temp_s0->sizeScaling * ((cosY * cosZ) + (sinX * sinY * sinZ)); - transformMatrix[1][0] = temp_s0->sizeScaling * ((-cosY * sinZ) + sinX * sinY * cosZ); - transformMatrix[2][0] = temp_s0->sizeScaling * (cosX * sinY); - transformMatrix[3][0] = temp_s0->pos[0]; - transformMatrix[0][1] = temp_s0->sizeScaling * (cosX * sinZ); - transformMatrix[1][1] = temp_s0->sizeScaling * (cosX * cosZ); - transformMatrix[2][1] = temp_s0->sizeScaling * -sinX; - transformMatrix[3][1] = temp_s0->pos[1]; - transformMatrix[0][2] = temp_s0->sizeScaling * ((-sinY * cosZ) + (sinX * cosY * sinZ)); - transformMatrix[1][2] = temp_s0->sizeScaling * ((sinY * sinZ) + (sinX * cosY * cosZ)); - transformMatrix[2][2] = temp_s0->sizeScaling * (cosX * cosY); - transformMatrix[3][2] = temp_s0->pos[2]; + transformMatrix[0][0] = object->sizeScaling * ((cosY * cosZ) + (sinX * sinY * sinZ)); + transformMatrix[1][0] = object->sizeScaling * ((-cosY * sinZ) + sinX * sinY * cosZ); + transformMatrix[2][0] = object->sizeScaling * (cosX * sinY); + transformMatrix[3][0] = object->pos[0]; + transformMatrix[0][1] = object->sizeScaling * (cosX * sinZ); + transformMatrix[1][1] = object->sizeScaling * (cosX * cosZ); + transformMatrix[2][1] = object->sizeScaling * -sinX; + transformMatrix[3][1] = object->pos[1]; + transformMatrix[0][2] = object->sizeScaling * ((-sinY * cosZ) + (sinX * cosY * sinZ)); + transformMatrix[1][2] = object->sizeScaling * ((sinY * sinZ) + (sinX * cosY * cosZ)); + transformMatrix[2][2] = object->sizeScaling * (cosX * cosY); + transformMatrix[3][2] = object->pos[2]; transformMatrix[0][3] = 0.0f; transformMatrix[1][3] = 0.0f; transformMatrix[2][3] = 0.0f; @@ -943,10 +944,10 @@ void vec3f_rotate_x_y(Vec3f dest, Vec3f pos, Vec3s rot) { /** * @brief set the matrix to a transformation matrix - * + * * @param translate or position - * @param orientation - * @param scale + * @param orientation + * @param scale */ void rsp_set_matrix_transformation(Vec3f translate, Vec3su orientation, f32 scale) { Mat4 matrix; diff --git a/src/math_util_2.h b/src/math_util_2.h index 725fa7627..871390c5d 100644 --- a/src/math_util_2.h +++ b/src/math_util_2.h @@ -1,8 +1,8 @@ #ifndef MATH_UTIL_2_H #define MATH_UTIL_2_H -#include "types.h" -#include "common_structs.h" +#include +#include "camera.h" /* Function Prototypes */ @@ -10,7 +10,7 @@ void operator_or(s32*, s32); void operator_and_not(s32*,s32); void operator_xor(s32*, s32); -s32 func_80040E84(s32*, s32); +UNUSED bool func_80040E84(s32*, s32); s32 func_80040EA4(s32*, s32); s32 f32_step_up_towards_alternate(f32*, f32, f32*); s32 f32_step_down_towards_alternate(f32*, f32, f32*); @@ -59,7 +59,7 @@ u16 func_800417B4(u16, u16); s32 func_800418AC(f32, f32, Vec3f); s32 func_800418E8(f32, f32, Vec3f); s32 func_80041924(Collision*, Vec3f); -s32 is_particle_on_screen(Vec3f, Camera*, u16); +bool is_particle_on_screen(Vec3f, Camera*, u16); void func_800419F8(void); void mtfx_translation_x_y(Mat4, s32, s32); void mtxf_u16_rotate_z(Mat4, u16); diff --git a/src/menus.c b/src/menus.c index 586dcbd9e..cfffd88e6 100644 --- a/src/menus.c +++ b/src/menus.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "menus.h" #include "main.h" @@ -232,14 +233,14 @@ void options_menu_act(struct Controller *controller, u16 arg1) { if (!func_800B4520()) { sp38 = find_8018D9E0_entry_dupe(0xF0); - sp30 = D_8018D9C0; + sp30 = (struct_8018EE10_entry *) D_8018D9C0; switch (D_8018EDEC) { case 0x15: case 0x16: case 0x17: case 0x18: { - sp2C = FALSE; + sp2C = false; if ((btnAndStick & D_JPAD) && (D_8018EDEC < 0x18)) { D_8018EDEC += 1; play_sound2(SOUND_MENU_CURSOR_MOVE); @@ -247,7 +248,7 @@ void options_menu_act(struct Controller *controller, u16 arg1) { sp38->unk24 += 4.0; } sp38->unk8 = 1; - sp2C = TRUE; + sp2C = true; } if ((btnAndStick & U_JPAD) && (D_8018EDEC >= 0x16)) { D_8018EDEC -= 1; @@ -255,7 +256,7 @@ void options_menu_act(struct Controller *controller, u16 arg1) { if (sp38->unk24 < 4.2) { sp38->unk24 += 4.0; } - sp2C = TRUE; + sp2C = true; sp38->unk8 = -1; } if (sp2C && gSoundMode != sp38->cursor) { @@ -1007,7 +1008,7 @@ void splash_menu_act(struct Controller *controller, u16 arg1) { u16 i; s32 sp28; - sp28 = TRUE; + sp28 = true; btnAndStick = controller->buttonPressed | controller->stickPressed; if (func_800B4520() == 0) { @@ -1017,7 +1018,7 @@ void splash_menu_act(struct Controller *controller, u16 arg1) { switch (gDebugMenuSelection) { case DEBUG_MENU_DISABLED: { - sp28 = FALSE; + sp28 = false; if ((gMenuDelayTimer >= 0x2E) && (btnAndStick & (A_BUTTON | START_BUTTON))) { func_8009E1C0(); func_800CA330(0x19); @@ -1034,7 +1035,7 @@ void splash_menu_act(struct Controller *controller, u16 arg1) { if (gEnableDebugMode) { gEnableDebugMode = DEBUG_MODE; } else { - gEnableDebugMode = TRUE; + gEnableDebugMode = true; } } if (btnAndStick & D_JPAD) { @@ -1397,20 +1398,20 @@ void main_menu_act(struct Controller *controller, u16 arg1) { } // L800B3068 if (btnAndStick & D_JPAD) { - sp24 = FALSE; + sp24 = false; if (func_800B555C()) { if (sp28 < D_800F2B60[gPlayerCount + 4][D_800E86AC[gPlayerCount - 1] + 1]) { - sp24 = TRUE; + sp24 = true; } } else { // L800B30D4 if (sp28 < D_800F2B60[gPlayerCount][D_800E86AC[gPlayerCount - 1] + 1]) { - sp24 = TRUE; + sp24 = true; } } // L800B3110 if (sp24) { - D_800E86B0[gPlayerCount - 1][gPlayerCount] += 1; + D_800E86B0[gPlayerCount - 1][D_800E86AC[gPlayerCount - 1]]++; func_800B44AC(); play_sound2(SOUND_MENU_CURSOR_MOVE); } @@ -1499,22 +1500,24 @@ bool is_character_spot_free(s32 gridId) { s32 i; for (i = 0; i < ARRAY_COUNT(gCharacterGridSelections); i++) { if (gridId == gCharacterGridSelections[i]) { - return FALSE; + return false; } } - return TRUE; + return true; } #ifdef NON_MATCHING // grid positions are from right to left, then top to bottom // nonmatching: the gCharacterGridSelections pointer is not promoted to $s0 void player_select_menu_act(struct Controller *controller, u16 arg1) { - u16 btnAndStick; // sp36 + s8 *bar; s8 selected; s8 i; + s8 saved_selection; + u16 btnAndStick; btnAndStick = (controller->buttonPressed) | (controller->stickPressed); - if (!gEnableDebugMode && btnAndStick & START_BUTTON) { + if (!gEnableDebugMode && btnAndStick & CONT_START) { btnAndStick |= A_BUTTON; } @@ -1522,150 +1525,162 @@ void player_select_menu_act(struct Controller *controller, u16 arg1) { switch (D_8018EDEE) { case 1: { - if (gCharacterGridSelections[arg1] == 0) { + saved_selection = gCharacterGridSelections[arg1]; + if (saved_selection == 0) { if (btnAndStick & B_BUTTON) { func_8009E208(); - play_sound2(SOUND_MENU_GO_BACK); + play_sound2(0x49008002); } return; } // L800B3630 if (btnAndStick & B_BUTTON) { if (D_8018EDE8[arg1]) { - D_8018EDE8[arg1] = FALSE; + D_8018EDE8[arg1] = false; play_sound2(SOUND_MENU_GO_BACK); } else { func_8009E208(); - play_sound2(SOUND_MENU_GO_BACK); + play_sound2(0x49008002); } } // L800B3684 - if ((btnAndStick & A_BUTTON) && !D_8018EDE8[arg1]) { - D_8018EDE8[arg1] = TRUE; - func_800C90F4( - arg1, - (((uintptr_t)D_800F2BAC[gCharacterGridSelections[arg1] - 1]) << 4) + 0x2900800EU - ); + if ((btnAndStick & A_BUTTON) && (D_8018EDE8[arg1] == 0)) { + D_8018EDE8[arg1] = true; + i = D_800F2BAC[gCharacterGridSelections[arg1] - 1]; + func_800C90F4(arg1, 0x2900800e + (i << 4)); } // L800B36F4 - selected = FALSE; - for (i = 0; i < ARRAY_COUNT(gCharacterGridSelections); i++) { - if (gCharacterGridSelections[i] && D_8018EDE8[i]) { - selected = TRUE; + selected = false; + for (i = 0; i < 4; i++) { // for (i = 0; i < ARRAY_COUNT(gCharacterGridSelections); i++) { + if ((gCharacterGridSelections[i] != 0) && (D_8018EDE8[i] == 0)) { //(gCharacterGridSelections[i] && D_8018EDE8[i]) { + selected = true; break; } } // L800B3738 + if (!selected) { D_8018EDEE = 2; func_800B44AC(); gMenuTimingCounter = 0; } + // L800B3768 - if (D_8018EDE8[arg1]) { - if ((btnAndStick & R_JPAD) && (btnAndStick & D_JPAD)) { - if (gCharacterGridSelections[arg1] == 1 || gCharacterGridSelections[arg1] == 2 || gCharacterGridSelections[arg1] == 3) { + if (D_8018EDE8[arg1] == 0) { + if ((btnAndStick & CONT_RIGHT) && (btnAndStick & CONT_DOWN)) { + if (saved_selection == 1 || saved_selection == 2 || saved_selection == 3) { // L800B37B0 - if (is_character_spot_free(gCharacterGridSelections[arg1] + 5)) { - gCharacterGridSelections[arg1] += 5; - play_sound2(SOUND_MENU_CURSOR_MOVE); + saved_selection += 5; + if (is_character_spot_free(saved_selection)) { + gCharacterGridSelections[arg1] = saved_selection; + play_sound2(0x49008000); } } return; } // L800B37E4 - if ((btnAndStick & L_JPAD) && (btnAndStick & D_JPAD)) { - if (gCharacterGridSelections[arg1] == 2 || gCharacterGridSelections[arg1] == 3 || gCharacterGridSelections[arg1] == 4) { - if (is_character_spot_free(gCharacterGridSelections[arg1] + 3)) { - gCharacterGridSelections[arg1] += 3; - play_sound2(SOUND_MENU_CURSOR_MOVE); + if ((btnAndStick & CONT_LEFT) && (btnAndStick & CONT_DOWN)) { + if (saved_selection == 2 || saved_selection == 3 || saved_selection == 4) { + saved_selection += 3; + if (is_character_spot_free(saved_selection)) { + gCharacterGridSelections[arg1] = saved_selection; + play_sound2(0x49008000); } } return; } // L800B3844 - if ((btnAndStick & R_JPAD) && (btnAndStick & U_JPAD)) { - if (gCharacterGridSelections[arg1] == 5 || gCharacterGridSelections[arg1] == 6 || gCharacterGridSelections[arg1] == 7) { - if (is_character_spot_free(gCharacterGridSelections[arg1] - 3)) { - gCharacterGridSelections[arg1] -= 3; - play_sound2(SOUND_MENU_CURSOR_MOVE); + if ((btnAndStick & CONT_RIGHT) && (btnAndStick & CONT_UP)) { + if (saved_selection == 5 || saved_selection == 6 || saved_selection == 7) { + saved_selection -= 3; + if (is_character_spot_free(saved_selection)) { + gCharacterGridSelections[arg1] = saved_selection; + play_sound2(0x49008000); } } return; } // L800B38A0 - if ((btnAndStick & L_JPAD) && (btnAndStick & U_JPAD)) { - if (gCharacterGridSelections[arg1] == 6 || gCharacterGridSelections[arg1] == 7 || gCharacterGridSelections[arg1] == 8) { - if (is_character_spot_free(gCharacterGridSelections[arg1] - 5)) { - gCharacterGridSelections[arg1] -= 5; - play_sound2(SOUND_MENU_CURSOR_MOVE); + if ((btnAndStick & CONT_LEFT) && (btnAndStick & CONT_UP)) { + if (saved_selection == 6 || saved_selection == 7 || saved_selection == 8) { + saved_selection -= 5; + if (is_character_spot_free(saved_selection)) { + gCharacterGridSelections[arg1] = saved_selection; + play_sound2(0x49008000); } } return; } // L800B38FC - if (btnAndStick & R_JPAD) { - if (gCharacterGridSelections[arg1] != 4 && gCharacterGridSelections[arg1] != 8) { - do { - // L800B391C - if (is_character_spot_free(gCharacterGridSelections[arg1] + 1)) { - gCharacterGridSelections[arg1] += 1; - play_sound2(SOUND_MENU_CURSOR_MOVE); - break; - } - gCharacterGridSelections[arg1] += 1; - - } while (gCharacterGridSelections[arg1] != 5 && gCharacterGridSelections[arg1] != 9 && gCharacterGridSelections[arg1] <= 10); - } + if (btnAndStick & CONT_RIGHT) { + if (saved_selection == 4 || saved_selection == 8) return; + saved_selection += 1; + do { + // L800B391C + if (is_character_spot_free(saved_selection)) { + gCharacterGridSelections[arg1] = saved_selection; + play_sound2(0x49008000); // play_sound2(0x49008000); + break; + } + saved_selection += 1; + if ((saved_selection == 5) || (saved_selection == 9)) return; + } while (saved_selection < 10); return; } // L800B3978 - if (btnAndStick & L_JPAD) { - if (gCharacterGridSelections[arg1] != 1 && gCharacterGridSelections[arg1] != 5) { - do { - if (is_character_spot_free(gCharacterGridSelections[arg1] - 1)) { - gCharacterGridSelections[arg1] -= 1; - play_sound2(SOUND_MENU_CURSOR_MOVE); - break; - } - gCharacterGridSelections[arg1] -= 1; - } while (gCharacterGridSelections[arg1] != 0 && gCharacterGridSelections[arg1] != 4 && gCharacterGridSelections[arg1] >= 0); - } + if (btnAndStick & CONT_LEFT) { + if (saved_selection == 1 || saved_selection == 5) return; + saved_selection -= 1; + do { + if (is_character_spot_free(saved_selection)) { + gCharacterGridSelections[arg1] = saved_selection; + play_sound2(0x49008000); + break; + } + saved_selection -= 1; + if ((saved_selection == 0) || (saved_selection == 4)) return; + } while (saved_selection >= 0); return; } // L800B39F4 - if ((btnAndStick & U_JPAD) && (gCharacterGridSelections[arg1] >= 5)) { - gCharacterGridSelections[arg1] -= 4; + if ((btnAndStick & CONT_UP) && (saved_selection >= 5)) { + saved_selection = saved_selection - 4; } - if ((btnAndStick & D_JPAD) && (gCharacterGridSelections[arg1] < 5)) { - gCharacterGridSelections[arg1] += 4; + if ((btnAndStick & CONT_DOWN) && (saved_selection < 5)) { + saved_selection = saved_selection + 4; } // L800B3A30 - if (is_character_spot_free(gCharacterGridSelections[arg1])) { - play_sound2(SOUND_MENU_CURSOR_MOVE); + if (is_character_spot_free(saved_selection)) { + gCharacterGridSelections[arg1] = saved_selection; + play_sound2(0x49008000); } } break; } case 2: case 3: - { - if (!arg1 && (++gMenuTimingCounter == 60 || gMenuSelection % 300 == 0)) { - // L800B3A94 - play_sound2(SOUND_MENU_OK); + if (arg1 == 0) { + gMenuTimingCounter++; + if ((gMenuTimingCounter == 60) || ((gMenuTimingCounter % 300) == 0)) { + // L800B3A94 + play_sound2(0x4900900F); + } } // L800B3AA4 if (btnAndStick & B_BUTTON) { D_8018EDEE = 1; - D_8018EDE8[arg1] = FALSE; + D_8018EDE8[arg1] = false; play_sound2(SOUND_MENU_GO_BACK); - } else if (btnAndStick & A_BUTTON) { + break; + } + if (btnAndStick & A_BUTTON) { func_8009E1C0(); - play_sound2(SOUND_MENU_OK_CLICKED); + play_sound2(0x49008016); func_8000F124(); } break; - } + default: + break; } // L800B3B24 if (gCharacterGridSelections[arg1] != 0) { @@ -1905,7 +1920,7 @@ void func_800B3F74(s32 menuSelection) { } else { gCharacterGridSelections[i] = 0; } - D_8018EDE8[i] = FALSE; + D_8018EDE8[i] = false; gCharacterSelections[i] = i; } play_sound2(SOUND_MENU_SELECT_PLAYER); @@ -1916,7 +1931,7 @@ void func_800B3F74(s32 menuSelection) { gGamestateNext = 0; func_800C8EAC(2); for (i = 0; i < ARRAY_COUNT(D_8018EDE8); i++) { - D_8018EDE8[i] = FALSE; + D_8018EDE8[i] = false; } } break; @@ -1926,9 +1941,9 @@ void func_800B3F74(s32 menuSelection) { D_8018EDEE = 3; for (i = 0; i < ARRAY_COUNT(D_8018EDE8); i++) { if (gPlayerCount > i) { - D_8018EDE8[i] = TRUE; + D_8018EDE8[i] = true; } else { - D_8018EDE8[i] = FALSE; + D_8018EDE8[i] = false; } } break; @@ -1988,15 +2003,15 @@ void func_800B44BC(void) { // Likely checks that the user is actually in the menus and not racing. bool func_800B4520(void) { - if ((D_8018E7B0 == 2) || (D_8018E7B0 == 3) || (D_8018E7B0 == 4) || (D_8018E7B0 == 7)) { - return TRUE; + if ((D_8018E7AC[4] == 2) || (D_8018E7AC[4] == 3) || (D_8018E7AC[4] == 4) || (D_8018E7AC[4] == 7)) { + return true; } - return FALSE; + return false; } UNUSED void func_800B4560(s32 arg0, s32 arg1) { struct_8018EE10_entry *pak1 = D_8018EE10; - struct_8018EE10_entry *pak2 = D_8018D9C0; + struct_8018EE10_entry *pak2 = (struct_8018EE10_entry *) D_8018D9C0; rmonPrintf("ghost_kart=%d,", D_80162DE0); rmonPrintf("pak1_ghost_kart=%d,", (pak1 + arg0)->characterId); diff --git a/src/menus.h b/src/menus.h index 2345496f6..8c8d508f8 100644 --- a/src/menus.h +++ b/src/menus.h @@ -1,9 +1,8 @@ #ifndef MENUS_H #define MENUS_H -#include "PR/os.h" -#include "common_structs.h" -#include +#include +#include #include // D_8018EDEC is position on options screen? @@ -31,13 +30,13 @@ void controller_pak_menu_act(struct Controller *, u16); void splash_menu_act(struct Controller *, u16); void func_800B28C8(void); void main_menu_act(struct Controller *, u16); -s32 is_character_spot_free(s32); +bool is_character_spot_free(s32); void player_select_menu_act(struct Controller *, u16); void course_select_menu_act(struct Controller *, u16); void func_800B3F74(s32); void func_800B44AC(void); void func_800B44BC(void); -s32 func_800B4520(void); +bool func_800B4520(void); /* data */ extern s32 D_8018EDC0; diff --git a/src/os/_Printf.c b/src/os/_Printf.c index 0442e5fcc..cd57ceb60 100644 --- a/src/os/_Printf.c +++ b/src/os/_Printf.c @@ -47,7 +47,7 @@ s32 _Printf(char *(*prout)(char *, const char *, size_t), char *dst, const char u8 sp4c[0x20]; // probably a buffer? s32 sp48, sp44, sp40, sp3c, sp38, sp34, sp30, sp2c, sp28, sp24; sp78.size = 0; - while (TRUE) { + while (true) { fmt_ptr = (u8 *) fmt; #ifdef VERSION_SH // new version: don't point fmt_ptr beyond NUL character diff --git a/src/os/__osDequeueThread.c b/src/os/__osDequeueThread.c index a9b01fcfc..7f4287cdd 100644 --- a/src/os/__osDequeueThread.c +++ b/src/os/__osDequeueThread.c @@ -1,10 +1,15 @@ #include "libultra_internal.h" -OSThreadTail __osThreadTail = {NULL, -1}; +#ifndef AVOID_UB +OSThread *__osThreadTail = NULL; +u32 __osTest = -1; OSThread *__osRunQueue = (OSThread *) &__osThreadTail; OSThread *__osActiveQueue = (OSThread *) &__osThreadTail; OSThread *__osRunningThread = NULL; OSThread *__osFaultedThread = NULL; +#else +OSThread_ListHead __osThreadTail_fix = {NULL, -1, (OSThread *) &__osThreadTail_fix, (OSThread *) &__osThreadTail_fix, NULL, 0}; +#endif void __osDequeueThread(OSThread **queue, OSThread *thread) { register OSThread **a2; diff --git a/src/os/__osDevMgrMain.c b/src/os/__osDevMgrMain.c index 06fe91e3b..10e074d29 100644 --- a/src/os/__osDevMgrMain.c +++ b/src/os/__osDevMgrMain.c @@ -5,6 +5,8 @@ #include "new_func.h" +void osYieldThread(void); + void __osDevMgrMain(void *args) { OSIoMesg *mb; OSMesg em; @@ -20,7 +22,7 @@ void __osDevMgrMain(void *args) { mb = NULL; ret = 0; sp34 = (OSMgrArgs *) args; - while (TRUE) { + while (true) { osRecvMesg(sp34->cmdQueue, (OSMesg) &mb, OS_MESG_BLOCK); if (mb->piHandle != NULL && mb->piHandle->type == 2 && (mb->piHandle->transferInfo.cmdType == 0 @@ -39,7 +41,7 @@ void __osDevMgrMain(void *args) { osRecvMesg(sp34->accessQueue, &dummy, OS_MESG_BLOCK); __osResetGlobalIntMask(0x00100401); // remove magic constant! __osEPiRawWriteIo(mb->piHandle, 0x05000510, (sp24->bmCtlShadow | 0x80000000)); - while (TRUE) { + while (true) { osRecvMesg(sp34->eventQueue, &em, OS_MESG_BLOCK); sp30 = osSendMesg(mb->hdr.retQueue, mb, OS_MESG_NOBLOCK); if (sp2c != 1 || mb->piHandle->transferInfo.errStatus != 0) { diff --git a/src/os/__osLeoInterrupt.c b/src/os/__osLeoInterrupt.c index d08a40e5e..6d3b23071 100644 --- a/src/os/__osLeoInterrupt.c +++ b/src/os/__osLeoInterrupt.c @@ -1,8 +1,8 @@ -#include "ultra64.h" +#include #include "osint.h" #include "piint.h" +#include "libultra_internal.h" -extern OSThread *__osRunQueue; static void __osLeoResume(void); static void __osLeoAbnormalResume(void); extern u8 leoDiskStack[OS_PIM_STACKSIZE]; //technically should have a OS_LEO_STACKSIZE or something.. diff --git a/src/os/contpfs.c b/src/os/contpfs.c index 4aecdaa2d..bc830ea02 100644 --- a/src/os/contpfs.c +++ b/src/os/contpfs.c @@ -65,7 +65,7 @@ s32 __osRepairPackId(OSPfs *pfs, __OSPackId *badid, __OSPackId *newid) temp[i] = ~temp[i]; } - ERRCK(__osContRamWrite(pfs->queue, pfs->channel, 0, (u8*)temp, FALSE)); //oddr 0, don't force + ERRCK(__osContRamWrite(pfs->queue, pfs->channel, 0, (u8*)temp, false)); //oddr 0, don't force ERRCK(__osContRamRead(pfs->queue, pfs->channel, 0, (u8*)&comp)); for (i = 0; i < ARRLEN(temp); i++) @@ -102,7 +102,7 @@ s32 __osRepairPackId(OSPfs *pfs, __OSPackId *badid, __OSPackId *newid) index[3] = 6; for (i = 0; i < ARRLEN(index); i++) { - ERRCK(__osContRamWrite(pfs->queue, pfs->channel, index[i], (u8*)newid, TRUE)); + ERRCK(__osContRamWrite(pfs->queue, pfs->channel, index[i], (u8*)newid, true)); } ERRCK(__osContRamRead(pfs->queue, pfs->channel, 1, (u8*)temp)); for (i = 0; i < ARRLEN(temp); i++) @@ -142,7 +142,7 @@ s32 __osCheckPackId(OSPfs *pfs, __OSPackId *temp) { if (j != i) { - ERRCK(__osContRamWrite(pfs->queue, pfs->channel, index[j], (u8*)temp, TRUE)); + ERRCK(__osContRamWrite(pfs->queue, pfs->channel, index[j], (u8*)temp, true)); } } return 0; @@ -212,7 +212,9 @@ s32 __osCheckId(OSPfs *pfs) if (ret != 2) return ret; else + { ERRCK(__osContRamRead(pfs->queue, pfs->channel, 1, (u8*)temp)); + } } for (k = 0; k < ARRLEN(temp); k++) @@ -248,8 +250,8 @@ s32 __osPfsRWInode(OSPfs *pfs, __OSInode *inode, u8 flag, u8 bank) addr = ((u8 *)inode->inode_page + j * 32); if (flag == PFS_WRITE) { - ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->inode_table + bank * 8 + j, addr, FALSE); - ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->minode_table + bank * 8 + j, addr, FALSE); + ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->inode_table + bank * 8 + j, addr, false); + ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->minode_table + bank * 8 + j, addr, false); } else { @@ -273,7 +275,7 @@ s32 __osPfsRWInode(OSPfs *pfs, __OSInode *inode, u8 flag, u8 bank) for (j = 0; j < PFS_ONE_PAGE; j++) { addr = ((u8 *)inode->inode_page + j * 32); - ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->inode_table + bank * PFS_ONE_PAGE + j, addr, FALSE); + ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->inode_table + bank * PFS_ONE_PAGE + j, addr, false); } } else @@ -281,7 +283,7 @@ s32 __osPfsRWInode(OSPfs *pfs, __OSInode *inode, u8 flag, u8 bank) for (j = 0; j < PFS_ONE_PAGE; j++) { addr = ((u8 *)inode->inode_page + j * 32); - ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->minode_table + bank * PFS_ONE_PAGE + j, addr, FALSE); + ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->minode_table + bank * PFS_ONE_PAGE + j, addr, false); } } } @@ -298,6 +300,6 @@ s32 __osPfsSelectBank(OSPfs *pfs) { temp[i] = pfs->activebank; } - ret = __osContRamWrite(pfs->queue, pfs->channel, 1024, (u8*)temp, FALSE); + ret = __osContRamWrite(pfs->queue, pfs->channel, 1024, (u8*)temp, false); return ret; } diff --git a/src/os/contramread.c b/src/os/contramread.c index f78507fc6..8a0486b37 100644 --- a/src/os/contramread.c +++ b/src/os/contramread.c @@ -1,5 +1,5 @@ #include "libultra_internal.h" -#include "PR/rcp.h" +#include #include "controller.h" extern s32 __osPfsGetStatus(OSMesgQueue *, s32); @@ -15,7 +15,7 @@ s32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer) { ptr = (u8 *)&__osPfsPifRam; retry = 2; __osSiGetAccess(); - _osLastSentSiCmd = CONT_CMD_READ_MEMPACK; + __osContLastCmd = CONT_CMD_READ_MEMPACK; __osPackRamReadData(channel, address); ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); diff --git a/src/os/contramwrite.c b/src/os/contramwrite.c index a4db11e17..56f42bcef 100644 --- a/src/os/contramwrite.c +++ b/src/os/contramwrite.c @@ -1,5 +1,5 @@ #include "libultra_internal.h" -#include "PR/rcp.h" +#include #include "controller.h" extern s32 __osPfsGetStatus(OSMesgQueue *, s32); @@ -19,7 +19,7 @@ s32 __osContRamWrite(OSMesgQueue *mq, int channel, u16 address, u8 *buffer, int return 0; } __osSiGetAccess(); - _osLastSentSiCmd = CONT_CMD_WRITE_MEMPACK; + __osContLastCmd = CONT_CMD_WRITE_MEMPACK; __osPackRamWriteData(channel, address, buffer); ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); diff --git a/src/os/controller.h b/src/os/controller.h index 518b113ee..d0f8a3b1c 100644 --- a/src/os/controller.h +++ b/src/os/controller.h @@ -1,8 +1,8 @@ #ifndef _CONTROLLER_H #define _CONTROLLER_H -#include "PR/os_internal.h" -#include "PR/os.h" -#include "PR/rcp.h" +#include +#include +#include //should go somewhere else but #define ARRLEN(x) ((s32)(sizeof(x) / sizeof(x[0]))) @@ -169,7 +169,7 @@ u8 __osContAddressCrc(u16 addr); u8 __osContDataCrc(u8 *data); s32 __osPfsGetStatus(OSMesgQueue *queue, int channel); -extern u8 _osLastSentSiCmd; +extern u8 __osContLastCmd; extern OSTimer __osEepromTimer; extern OSMesg __osEepromTimerMsg; extern OSMesgQueue __osEepromTimerQ; diff --git a/src/os/epidma.c b/src/os/epidma.c index 3aa76f17a..fb9e36393 100644 --- a/src/os/epidma.c +++ b/src/os/epidma.c @@ -1,6 +1,6 @@ #ifdef VERSION_SH -#include "PR/os_internal.h" +#include #include "piint.h" s32 osEPiStartDma(OSPiHandle *pihandle, OSIoMesg *mb, s32 direction) { diff --git a/src/os/guMtxCatL.c b/src/os/guMtxCatL.c index 7903b18b1..82fd4c597 100755 --- a/src/os/guMtxCatL.c +++ b/src/os/guMtxCatL.c @@ -34,6 +34,7 @@ #include void guMtxXFMF(Mtx *, float, float, float, float *, float *, float *); +void guMtxCatF(float mf[4][4], float nf[4][4], float res[4][4]); void guMtxCatL(Mtx *m, Mtx *n, Mtx *res) { float mf[4][4], nf[4][4], resf[4][4]; @@ -51,5 +52,5 @@ void guMtxXFML(Mtx *m, float x, float y, float z, float *ox, float *oy, float *o guMtxL2F(mf, m); - guMtxXFMF(mf, x, y, z, ox, oy, oz); + guMtxXFMF((Mtx *)mf, x, y, z, ox, oy, oz); } diff --git a/src/os/is_debug.c b/src/os/is_debug.c index 0e4fcddda..1663a6c28 100644 --- a/src/os/is_debug.c +++ b/src/os/is_debug.c @@ -5,6 +5,7 @@ #include #include "hardware.h" + // Note: This file was very quickly strewn together from oot. // Not great but it works. @@ -23,6 +24,8 @@ typedef struct { #define ASCII_TO_U32(a, b, c, d) ((u32)((a << 24) | (b << 16) | (c << 8) | (d << 0))) void* is_proutSyncPrintf(void* arg, const char* str, u32 count); +s32 __osEPiRawWriteIo(OSPiHandle *a0, u32 a1, u32 a2); +void __osPiRelAccess(void); s32 __osEPiRawReadIo(OSPiHandle *arg0, u32 devAddr, u32 *data) { register s32 stat; @@ -65,7 +68,7 @@ void osSyncPrintfUnused(const char* fmt, ...) { va_list args; va_start(args, fmt); - _Printf(is_proutSyncPrintf, NULL, fmt, args); + _Printf((char *(*)(char *, const char *, size_t))is_proutSyncPrintf, NULL, fmt, args); va_end(args); } @@ -74,7 +77,7 @@ void osSyncPrintf(const char* fmt, ...) { va_list args; va_start(args, fmt); - _Printf(is_proutSyncPrintf, NULL, fmt, args); + _Printf((char *(*)(char *, const char *, size_t))is_proutSyncPrintf, NULL, fmt, args); va_end(args); } @@ -83,7 +86,7 @@ void print(const char* fmt, ...) { va_list args; va_start(args, fmt); - _Printf(is_proutSyncPrintf, NULL, fmt, args); + _Printf((char *(*)(char *, const char *, size_t))is_proutSyncPrintf, NULL, fmt, args); va_end(args); } @@ -93,12 +96,12 @@ void rmonPrintf(const char* fmt, ...) { va_list args; va_start(args, fmt); - _Printf(is_proutSyncPrintf, NULL, fmt, args); + _Printf((char *(*)(char *, const char *, size_t))is_proutSyncPrintf, NULL, fmt, args); va_end(args); } -void* is_proutSyncPrintf(void* arg, const char* str, u32 count) { +void* is_proutSyncPrintf(UNUSED void* arg, const char* str, u32 count) { u32 data; s32 pos; s32 start; diff --git a/src/os/leointerrupt.c b/src/os/leointerrupt.c index db221dba9..1bc26a1a9 100644 --- a/src/os/leointerrupt.c +++ b/src/os/leointerrupt.c @@ -1,5 +1,5 @@ #include "libultra_internal.h" -#include "PR/rcp.h" +#include #include "bstring.h" #include "piint.h" #include "osint.h" diff --git a/src/os/libultra_internal.h b/src/os/libultra_internal.h index 3e7032370..5a6027f75 100644 --- a/src/os/libultra_internal.h +++ b/src/os/libultra_internal.h @@ -1,6 +1,7 @@ #ifndef _LIBULTRA_INTERNAL_H_ #define _LIBULTRA_INTERNAL_H_ #include +#include #include "macros.h" typedef struct __OSEventState @@ -15,15 +16,41 @@ typedef struct __osThreadTail OSPri priority; } OSThreadTail; +/* + * This define is needed because the original definitions in __osDequeueThread.c are declared + * seperately instead of part of a single struct, however some code alises over this memory + * assuming a unified structure. To fix this, we declare the full type here and then alias the + * symbol names to the correct members in AVOID_UB. + */ +typedef struct +{ + /*0x00*/ struct OSThread_s *next; + /*0x04*/ OSPri priority; + /*0x08*/ struct OSThread_s *queue; + /*0x0C*/ struct OSThread_s *tlnext; + /*0x10*/ struct OSThread_s *unk10; + /*0x14*/ u32 unk14; +} OSThread_ListHead; +#ifdef AVOID_UB + +// Now fix the symbols to the new one. +extern OSThread_ListHead __osThreadTail_fix; + +#define __osThreadTail __osThreadTail_fix.next +#define D_80334894 __osThreadTail_fix.priority +#define __osRunQueue __osThreadTail_fix.queue +#define __osActiveQueue __osThreadTail_fix.tlnext +#define __osRunningThread __osThreadTail_fix.unk10 +#else // Original OSThread_ListHead definitions -extern OSThreadTail __osThreadTail; +extern OSThread *__osThreadTail; extern OSThread *__osActiveQueue; extern OSThread *__osRunQueue; extern OSThread *__osRunningThread; - +#endif // Original EEPROM definitions -extern ALIGNED8 u32 D_80365E00[15]; +extern u32 D_80365E00[15]; extern u32 D_80365E3C; typedef struct { diff --git a/src/os/math/llmuldiv.c b/src/os/math/llmuldiv.c index e64b9d0c8..2af91aae5 100644 --- a/src/os/math/llmuldiv.c +++ b/src/os/math/llmuldiv.c @@ -7,7 +7,7 @@ unsigned long long __ull_rem(unsigned long long a0, unsigned long long a1) return a0 % a1; } unsigned long long __ull_div(unsigned long long a0, unsigned long long a1) -{ +{ return a0 / a1; } @@ -34,19 +34,19 @@ unsigned long long __ll_mul(unsigned long long a0, unsigned long long a1) void __ull_divremi(unsigned long long *div, unsigned long long *rem, unsigned long long a2, unsigned short a3) { *div = a2 / a3; - *rem = a2 % a3; -} + *rem = a2 % a3; +} long long __ll_mod(long long a0, long long a1) { long long tmp = a0 % a1; if ((tmp < 0 && a1 > 0) || (tmp > 0 && a1 < 0)) { - tmp += a1; + tmp += a1; } return tmp; } - + long long __ll_rshift(long long a0, long long a1) { return a0 >> a1; diff --git a/src/os/osCartRomInit.c b/src/os/osCartRomInit.c index b1b6599c7..b8242a97e 100644 --- a/src/os/osCartRomInit.c +++ b/src/os/osCartRomInit.c @@ -1,11 +1,11 @@ #include "libultra_internal.h" -#include "PR/os_vi.h" -#include "PR/os_internal.h" -#include "PR/R4300.h" -#include "PR/rcp.h" -#include "PR/os_pi.h" -#include "PR/os.h" +#include +#include +#include +#include +#include +#include OSPiHandle CartRomHandle; diff --git a/src/os/osContInit.c b/src/os/osContInit.c index 6a20606df..c4c72127e 100644 --- a/src/os/osContInit.c +++ b/src/os/osContInit.c @@ -9,7 +9,7 @@ u32 _osContInitialized = 0; extern u64 osClockRate; // these probably belong in EEPROMlongread or something -u8 _osLastSentSiCmd; +u8 __osContLastCmd; u8 _osContNumControllers; OSTimer D_80196548; OSMesgQueue _osContMesgQueue; @@ -39,7 +39,7 @@ s32 osContInit(OSMesgQueue *mq, u8 *bitpattern, OSContStatus *status) { ret = __osSiRawStartDma(OS_READ, _osContCmdBuf); osRecvMesg(mq, &mesg, OS_MESG_BLOCK); __osContGetInitData(bitpattern, status); - _osLastSentSiCmd = 0; + __osContLastCmd = 0; __osSiCreateAccessQueue(); osCreateMesgQueue(&_osContMesgQueue, _osContMesgBuff, 1); return ret; @@ -54,8 +54,8 @@ void __osContGetInitData(u8 *bitpattern, OSContStatus *status) { cmdBufPtr = &(_osContCmdBuf[0].request); for (i = 0; i < _osContNumControllers; i++, cmdBufPtr++, status++) { response = *(OSContPackedRequest *) cmdBufPtr; - status->errno = (response.rxLen & 0xc0) >> 4; - if (status->errno == 0) { + status->errnum = (response.rxLen & 0xc0) >> 4; + if (status->errnum == 0) { status->type = response.data2 << 8 | response.data1; status->status = response.data3; diff --git a/src/os/osContInternal.h b/src/os/osContInternal.h index 0f628205b..77b51ba93 100644 --- a/src/os/osContInternal.h +++ b/src/os/osContInternal.h @@ -1,7 +1,6 @@ #ifndef _ULTRA64_CONTROLLER_INTERNAL_H_ #define _ULTRA64_CONTROLLER_INTERNAL_H_ -#include typedef struct { diff --git a/src/os/osContStartReadData.c b/src/os/osContStartReadData.c index ca1e4da9e..3fb5c48b7 100644 --- a/src/os/osContStartReadData.c +++ b/src/os/osContStartReadData.c @@ -11,7 +11,7 @@ u32 _osContPifCtrl; ALIGNED8 OSContPackedStruct _osContCmdBuf[8]; #endif -extern u8 _osLastSentSiCmd; +extern u8 __osContLastCmd; extern u8 _osContNumControllers; void __osPackReadData(void); @@ -19,7 +19,7 @@ s32 osContStartReadData(OSMesgQueue *mesg) { s32 ret = 0; s32 i; __osSiGetAccess(); - if (_osLastSentSiCmd != 1) { + if (__osContLastCmd != 1) { __osPackReadData(); ret = __osSiRawStartDma(OS_WRITE, _osContCmdBuf); osRecvMesg(mesg, NULL, OS_MESG_BLOCK); @@ -30,7 +30,7 @@ s32 osContStartReadData(OSMesgQueue *mesg) { _osContPifCtrl = 0; ret = __osSiRawStartDma(OS_READ, _osContCmdBuf); - _osLastSentSiCmd = 1; + __osContLastCmd = 1; __osSiRelAccess(); return ret; } diff --git a/src/os/osCreatePiManager.c b/src/os/osCreatePiManager.c index 68c491eb6..58b44ddee 100644 --- a/src/os/osCreatePiManager.c +++ b/src/os/osCreatePiManager.c @@ -39,7 +39,7 @@ void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgC osSetThreadPri(NULL, pri); } int_disabled = __osDisableInt(); - __osPiDevMgr.initialized = TRUE; + __osPiDevMgr.initialized = true; __osPiDevMgr.mgrThread = &piMgrThread; __osPiDevMgr.cmdQueue = cmdQ; __osPiDevMgr.eventQueue = &__osPiMesgQueue; diff --git a/src/os/osCreateThread.c b/src/os/osCreateThread.c index d714a8eba..93a6f241f 100644 --- a/src/os/osCreateThread.c +++ b/src/os/osCreateThread.c @@ -1,7 +1,6 @@ #include "libultra_internal.h" void __osCleanupThread(void); -extern OSThread *__osActiveQueue; // Don't warn about pointer->u64 cast diff --git a/src/os/osCreateViManager.c b/src/os/osCreateViManager.c index a90b3eab5..950f43d81 100644 --- a/src/os/osCreateViManager.c +++ b/src/os/osCreateViManager.c @@ -41,7 +41,7 @@ void osCreateViManager(OSPri pri) { osSetThreadPri(NULL, pri); } int_disabled = __osDisableInt(); - viMgrMainArgs.initialized = TRUE; + viMgrMainArgs.initialized = true; viMgrMainArgs.mgrThread = &viMgrThread; viMgrMainArgs.cmdQueue = &__osViMesgQueue; viMgrMainArgs.eventQueue = &__osViMesgQueue; @@ -67,7 +67,7 @@ void viMgrMain(void *vargs) { u32 sp28; // always 0 u32 sp24; // time related mesg = NULL; - sp28 = FALSE; + sp28 = false; context = __osViGetCurrentContext(); if ((retrace = context->retraceCount) == 0) { @@ -76,7 +76,7 @@ void viMgrMain(void *vargs) { args = (OSMgrArgs *) vargs; - while (TRUE) { + while (true) { osRecvMesg(args->eventQueue, &mesg, OS_MESG_BLOCK); switch (*(u16 *) mesg) { case 13: diff --git a/src/os/osEPiRawStartDma.c b/src/os/osEPiRawStartDma.c index 31d9fd37c..2c444d176 100644 --- a/src/os/osEPiRawStartDma.c +++ b/src/os/osEPiRawStartDma.c @@ -1,7 +1,7 @@ #include "libultra_internal.h" #include "hardware.h" #include "new_func.h" -#include "PR/R4300.h" +#include //! @todo This define is from piint.h, but including that causes problems... #define UPDATE_REG(reg, var) \ if (cHandle->var != pihandle->var) \ diff --git a/src/os/osEepromLongRead.c b/src/os/osEepromLongRead.c index 548e93a0f..55b4f4a61 100644 --- a/src/os/osEepromLongRead.c +++ b/src/os/osEepromLongRead.c @@ -7,7 +7,7 @@ extern OSTimer D_80196548; // not sure what this is yet extern OSMesgQueue _osContMesgQueue; extern OSMesg _osContMesgBuff[4]; -s32 osEepromLongRead(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) { +s32 osEepromLongRead(OSMesgQueue *mq, u8 address, u8 *buffer, s32 nbytes) { s32 status = 0; if (address > 0x40) { return -1; @@ -19,9 +19,9 @@ s32 osEepromLongRead(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) { return status; } - nbytes -= 8; - address += 1; - buffer += 8; + nbytes -= EEPROM_BLOCK_SIZE; + address++; + buffer += EEPROM_BLOCK_SIZE; osSetTimer(&D_80196548, 12000 * osClockRate / 1000000, 0, &_osContMesgQueue, _osContMesgBuff); osRecvMesg(&_osContMesgQueue, NULL, OS_MESG_BLOCK); } diff --git a/src/os/osEepromLongWrite.c b/src/os/osEepromLongWrite.c index 506b1b8ab..d68104ccd 100644 --- a/src/os/osEepromLongWrite.c +++ b/src/os/osEepromLongWrite.c @@ -1,14 +1,13 @@ #include "libultra_internal.h" +#include "controller.h" -extern u64 osClockRate; extern u8 D_80365D20; -extern u8 _osContNumControllers; extern OSTimer D_80196548; extern OSMesgQueue _osContMesgQueue; extern OSMesg _osContMesgBuff[4]; -// exactly the same as osEepromLongRead except for osEepromWrite call -s32 osEepromLongWrite(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) { +// exactly the same as osEepromLongRead except for osEepromWrite call +s32 osEepromLongWrite(OSMesgQueue *mq, u8 address, u8 *buffer, s32 nbytes) { s32 result = 0; if (address > 0x40) { return -1; @@ -20,9 +19,9 @@ s32 osEepromLongWrite(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) { return result; } - nbytes -= 8; - address += 1; - buffer += 8; + nbytes -= EEPROM_BLOCK_SIZE; + address++; + buffer += EEPROM_BLOCK_SIZE; osSetTimer(&D_80196548, 12000 * osClockRate / 1000000, 0, &_osContMesgQueue, _osContMesgBuff); osRecvMesg(&_osContMesgQueue, NULL, OS_MESG_BLOCK); } diff --git a/src/os/osEepromProbe.c b/src/os/osEepromProbe.c index 475af4469..7908c212d 100644 --- a/src/os/osEepromProbe.c +++ b/src/os/osEepromProbe.c @@ -1,24 +1,15 @@ +#include "macros.h" #include "libultra_internal.h" +#include "controller.h" -//! @todo merge with osEepromWrite -typedef struct { - u16 unk00; - u8 unk02; - u8 unk03; -} unkStruct; - -s32 __osEepStatus(OSMesgQueue *, unkStruct *); +s32 __osEepStatus(OSMesgQueue *, OSContStatus *); s32 osEepromProbe(OSMesgQueue *mq) { - s32 status = 0; - unkStruct sp18; + s32 ret = 0; + OSContStatus status; __osSiGetAccess(); - status = __osEepStatus(mq, &sp18); - if (status == 0 && (sp18.unk00 & 0x8000) != 0) { - status = 1; - } else { - status = 0; - } + ret = __osEepStatus(mq, &status); + ret = (ret == 0 && (status.type & CONT_EEPROM) != 0) ? EEPROM_TYPE_4K : 0; __osSiRelAccess(); - return status; + return ret; } diff --git a/src/os/osEepromRead.c b/src/os/osEepromRead.c index 561ad2056..040594444 100644 --- a/src/os/osEepromRead.c +++ b/src/os/osEepromRead.c @@ -1,102 +1,89 @@ #include "libultra_internal.h" +#include "macros.h" +#include "controller.h" extern u8 _osLastSentSiCmd; -extern u32 __osEepPifRam[15]; -extern u32 D_8019769C; +extern OSPifRam __osEepPifRam; -typedef struct { - u16 unk00; - u8 unk02; - u8 unk03; -} unkStruct; -typedef struct { - u8 unk00; - u8 unk01; - u8 unk02; - u8 unk03; - u8 unk04; - u8 unk05; - u8 unk06; - u8 unk07; -} unkStruct3; - -typedef struct { - u8 unk00; - u8 unk01; - u8 unk02; - u8 unk03; - unkStruct3 unk04; -} unkStruct2; - -s32 __osEepStatus(OSMesgQueue *, unkStruct *); -s32 __osPackEepReadData(u8); +s32 __osEepStatus(OSMesgQueue *, OSContStatus *); +void __osPackEepReadData(u8); s32 osEepromRead(OSMesgQueue *mq, u8 address, u8 *buffer) { - s32 sp34; - s32 sp30; - u8 *sp2c; - unkStruct sp28; - unkStruct2 sp20; - sp34 = 0; - sp30 = 0; - sp2c = (u8 *) &__osEepPifRam; - if (address > 0x40) { + s32 ret = 0; + s32 i = 0; + u8 *ptr = (u8 *) &__osEepPifRam.ramarray; + OSContStatus sdata; + __OSContEepromFormat eepromformat; + + if (address > EEPROM_MAXBLOCKS) { return -1; } - __osSiGetAccess(); - sp34 = __osEepStatus(mq, &sp28); - if (sp34 != 0 || sp28.unk00 != 0x8000) { - return 8; + __osSiGetAccess(); + ret = __osEepStatus(mq, &sdata); + if (ret != 0 || sdata.type != CONT_EEPROM) { + + return CONT_NO_RESPONSE_ERROR; } - while (sp28.unk02 & 0x80) { - __osEepStatus(mq, &sp28); + + while (sdata.status & CONT_EEPROM_BUSY) { + __osEepStatus(mq, &sdata); } __osPackEepReadData(address); - sp34 = __osSiRawStartDma(OS_WRITE, &__osEepPifRam); + + ret = __osSiRawStartDma(OS_WRITE, &__osEepPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); - for (sp30 = 0; sp30 < 0x10; sp30++) { - __osEepPifRam[sp30] = 255; + + for (i = 0; i < ARRAY_COUNT(__osEepPifRam.ramarray) + 1; i++) { + __osEepPifRam.ramarray[i] = CONT_CMD_NOP; } - D_8019769C = 0; - sp34 = __osSiRawStartDma(OS_READ, __osEepPifRam); - _osLastSentSiCmd = 4; + __osEepPifRam.pifstatus = 0; + + ret = __osSiRawStartDma(OS_READ, &__osEepPifRam); + __osContLastCmd = CONT_CMD_READ_EEPROM; osRecvMesg(mq, NULL, OS_MESG_BLOCK); - for (sp30 = 0; sp30 < 4; sp30++) { - sp2c++; + + for (i = 0; i < 4; i++) { + ptr++; } - sp20 = *(unkStruct2 *) sp2c; - sp34 = (sp20.unk01 & 0xc0) >> 4; - if (sp34 == 0) { - for (sp30 = 0; sp30 < 8; sp30++) { - *buffer++ = ((u8 *) &sp20.unk04)[sp30]; + + eepromformat = *(__OSContEepromFormat *) ptr; + ret = CHNL_ERR(eepromformat); + + if (ret == 0) { + for (i = 0; i < 8; i++) { + *buffer++ = eepromformat.data[i]; } } + __osSiRelAccess(); - return sp34; + return ret; } -s32 __osPackEepReadData(u8 address) { - u8 *sp14; - unkStruct2 sp8; - s32 sp4; - sp14 = (u8 *) &__osEepPifRam; - for (sp4 = 0; sp4 < 0x10; sp4++) { - __osEepPifRam[sp4] = 255; +void __osPackEepReadData(u8 address) { + u8 *ptr = (u8 *) &__osEepPifRam.ramarray; + __OSContEepromFormat eepromformat; + s32 i; + + for (i = 0; i < ARRAY_COUNT(__osEepPifRam.ramarray) + 1; i++) { + __osEepPifRam.ramarray[i] = CONT_CMD_NOP; } - D_8019769C = 1; - sp8.unk00 = 2; - sp8.unk01 = 8; - sp8.unk02 = 4; - sp8.unk03 = address; - for (sp4 = 0; sp4 < 8; sp4++) { - ((u8 *) &sp8.unk04)[sp4] = 0; + __osEepPifRam.pifstatus = CONT_CMD_EXE; + + eepromformat.txsize = CONT_CMD_READ_EEPROM_TX; + eepromformat.rxsize = CONT_CMD_READ_EEPROM_RX; + eepromformat.cmd = CONT_CMD_READ_EEPROM; + eepromformat.address = address; + for (i = 0; i < ARRAY_COUNT(eepromformat.data); i++) { + eepromformat.data[i] = 0; } - for (sp4 = 0; sp4 < 4; sp4++) { - *sp14++ = 0; + + for (i = 0; i < 4; i++) { + *ptr++ = 0; } - *(unkStruct2 *) sp14 = sp8; - sp14 += 0xc; - *sp14 = 254; + + *(__OSContEepromFormat *) ptr = eepromformat; + ptr += sizeof(__OSContEepromFormat); + *ptr = CONT_CMD_END; } diff --git a/src/os/osEepromWrite.c b/src/os/osEepromWrite.c index eba200510..a48f6873b 100644 --- a/src/os/osEepromWrite.c +++ b/src/os/osEepromWrite.c @@ -1,162 +1,140 @@ #include "libultra_internal.h" #include "osContInternal.h" +#include "controller.h" +#include "macros.h" -ALIGNED8 u32 __osEepPifRam[15]; -u32 D_8019769C; +OSPifRam __osEepPifRam; -extern u8 _osLastSentSiCmd; +extern u8 __osContLastCmd; -typedef struct { - u16 unk00; - u8 unk02; - u8 unk03; -} unkStruct; -typedef struct { - u8 unk00; - u8 unk01; - u8 unk02; - u8 unk03; - u8 unk04; - u8 unk05; - u8 unk06; - u8 unk07; -} unkStruct3; - -typedef struct { - u8 unk00; - u8 unk01; - u8 unk02; - u8 unk03; - unkStruct3 unk04; -} unkStruct2; - -s32 __osEepStatus(OSMesgQueue *, unkStruct *); -s32 __osPackEepWriteData(u8, u8 *); +s32 __osEepStatus(OSMesgQueue *, OSContStatus *); +void __osPackEepWriteData(u8, u8 *); s32 osEepromWrite(OSMesgQueue *mq, u8 address, u8 *buffer) { - s32 sp34; - s32 sp30; - u8 *sp2c; - unkStruct2 sp20; - unkStruct sp1c; - sp34 = 0; - sp2c = (u8 *) &__osEepPifRam; + s32 ret = 0; + s32 i; + u8 *ptr = (u8 *) &__osEepPifRam.ramarray; + __OSContEepromFormat eepromformat; + OSContStatus sdata; - if (address > 0x40) { + if (address > EEPROM_MAXBLOCKS) { return -1; } __osSiGetAccess(); - sp34 = __osEepStatus(mq, &sp1c); + ret = __osEepStatus(mq, &sdata); - if (sp34 != 0 || sp1c.unk00 != 0x8000) { - return 8; + if (ret != 0 || sdata.type != CONT_EEPROM) { + return CONT_NO_RESPONSE_ERROR; } - while (sp1c.unk02 & 0x80) { - __osEepStatus(mq, &sp1c); + while (sdata.status & CONT_EEPROM_BUSY) { + __osEepStatus(mq, &sdata); } __osPackEepWriteData(address, buffer); - sp34 = __osSiRawStartDma(OS_WRITE, &__osEepPifRam); + ret = __osSiRawStartDma(OS_WRITE, &__osEepPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); - for (sp30 = 0; sp30 < 0x10; sp30++) { - (__osEepPifRam)[sp30] = 255; + for (i = 0; i < ARRAY_COUNT(__osEepPifRam.ramarray) + 1; i++) { + __osEepPifRam.ramarray[i] = CONT_CMD_NOP; } - D_8019769C = 0; - sp34 = __osSiRawStartDma(OS_READ, __osEepPifRam); - _osLastSentSiCmd = 5; + __osEepPifRam.pifstatus = 0; + ret = __osSiRawStartDma(OS_READ, &__osEepPifRam); + __osContLastCmd = CONT_CMD_WRITE_EEPROM; osRecvMesg(mq, NULL, OS_MESG_BLOCK); - for (sp30 = 0; sp30 < 4; sp30++) { - sp2c++; + for (i = 0; i < 4; i++) { + ptr++; } - sp20 = *(unkStruct2 *) sp2c; - sp34 = (sp20.unk01 & 0xc0) >> 4; + eepromformat = *(__OSContEepromFormat *) ptr; + ret = CHNL_ERR(eepromformat); __osSiRelAccess(); - return sp34; + return ret; } -s32 __osPackEepWriteData(u8 address, u8 *buffer) { - u8 *sp14; - unkStruct2 sp8; - s32 sp4; - sp14 = (u8 *) &__osEepPifRam; - for (sp4 = 0; sp4 < 0x10; sp4++) { - __osEepPifRam[sp4] = 255; +void __osPackEepWriteData(u8 address, u8 *buffer) { + u8 *ptr = (u8 *) &__osEepPifRam.ramarray; + __OSContEepromFormat eepromformat; + s32 i; + + for (i = 0; i < ARRAY_COUNT(__osEepPifRam.ramarray) + 1; i++) { + __osEepPifRam.ramarray[i] = CONT_CMD_NOP; } - D_8019769C = 1; - sp8.unk00 = 10; - sp8.unk01 = 1; - sp8.unk02 = 5; - sp8.unk03 = address; - for (sp4 = 0; sp4 < 8; sp4++) { - ((u8 *) &sp8.unk04)[sp4] = *buffer++; + __osEepPifRam.pifstatus = CONT_CMD_EXE; + + eepromformat.txsize = CONT_CMD_WRITE_EEPROM_TX; + eepromformat.rxsize = CONT_CMD_WRITE_EEPROM_RX; + eepromformat.cmd = CONT_CMD_WRITE_EEPROM; + eepromformat.address = address; + + for (i = 0; i < ARRAY_COUNT(eepromformat.data); i++) { + eepromformat.data[i] = *buffer++; } - for (sp4 = 0; sp4 < 4; sp4++) { - *sp14++ = 0; + + for (i = 0; i < 4; i++) { + *ptr++ = 0; } - *(unkStruct2 *) sp14 = sp8; - sp14 += 0xc; - *sp14 = 254; + *(__OSContEepromFormat *) ptr = eepromformat; + ptr += sizeof(__OSContEepromFormat); + *ptr = CONT_CMD_END; } -s32 __osEepStatus(OSMesgQueue *a0, unkStruct *a1) { - u32 sp2c = 0; - s32 sp28; - u8 *sp24 = (u8 *) __osEepPifRam; - unkStruct3 sp1c; +s32 __osEepStatus(OSMesgQueue *mq, OSContStatus *data) { + u32 ret = 0; + s32 i; + u8 *ptr = (u8 *) __osEepPifRam.ramarray; + __OSContRequesFormat requestformat; - for (sp28 = 0; sp28 < 0x10; sp28++) { - __osEepPifRam[sp28] = 0; + for (i = 0; i < ARRAY_COUNT(__osEepPifRam.ramarray) + 1; i++) { + __osEepPifRam.ramarray[i] = 0; + } + __osEepPifRam.pifstatus = CONT_CMD_EXE; + + ptr = (u8 *) __osEepPifRam.ramarray; + for (i = 0; i < 4; i++) { + *ptr++ = 0; } - D_8019769C = 1; - sp24 = (u8 *) __osEepPifRam; - for (sp28 = 0; sp28 < 4; sp28++) { - *sp24++ = 0; + requestformat.dummy = CONT_CMD_NOP; + requestformat.txsize = CONT_CMD_REQUEST_STATUS_TX; + requestformat.rxsize = CONT_CMD_REQUEST_STATUS_RX; + requestformat.cmd = CONT_CMD_REQUEST_STATUS; + requestformat.typeh = CONT_CMD_NOP; + requestformat.typel = CONT_CMD_NOP; + requestformat.status = CONT_CMD_NOP; + requestformat.dummy1 = CONT_CMD_NOP; + *(__OSContRequesFormat *) ptr = requestformat; + + ptr += sizeof(__OSContRequesFormat); + *ptr = CONT_CMD_END; + + ret = __osSiRawStartDma(OS_WRITE, &__osEepPifRam); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + + __osContLastCmd = CONT_CMD_WRITE_EEPROM; + + ret = __osSiRawStartDma(OS_READ, &__osEepPifRam); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + + if (ret != 0) { + return ret; } - sp1c.unk00 = 255; - sp1c.unk01 = 1; - sp1c.unk02 = 3; - sp1c.unk03 = 0; - sp1c.unk04 = 255; - sp1c.unk05 = 255; - sp1c.unk06 = 255; - sp1c.unk07 = 255; - *(unkStruct3 *) sp24 = sp1c; - - sp24 += 8; - sp24[0] = 254; - - sp2c = __osSiRawStartDma(OS_WRITE, __osEepPifRam); - osRecvMesg(a0, NULL, OS_MESG_BLOCK); - - _osLastSentSiCmd = 5; - - sp2c = __osSiRawStartDma(OS_READ, __osEepPifRam); - osRecvMesg(a0, NULL, OS_MESG_BLOCK); - - if (sp2c != 0) { - return sp2c; + ptr = (u8 *) __osEepPifRam.ramarray; + for (i = 0; i < 4; i++) { + *ptr++ = 0; } - sp24 = (u8 *) __osEepPifRam; - for (sp28 = 0; sp28 < 4; sp28++) { - *sp24++ = 0; - } - - sp1c = *(unkStruct3 *) sp24; - a1->unk03 = (sp1c.unk02 & 0xc0) >> 4; - a1->unk00 = (sp1c.unk05 << 8) | sp1c.unk04; - a1->unk02 = sp1c.unk06; - if (a1->unk03 != 0) { - return a1->unk03; + requestformat = *(__OSContRequesFormat *) ptr; + data->errnum = CHNL_ERR(requestformat); + data->type = (requestformat.typel << 8) | requestformat.typeh; + data->status = requestformat.status; + if (data->errnum != 0) { + return data->errnum; } return 0; } diff --git a/src/os/osInitialize.c b/src/os/osInitialize.c index 921c969ae..292cbbc1c 100644 --- a/src/os/osInitialize.c +++ b/src/os/osInitialize.c @@ -33,7 +33,7 @@ void osInitialize(void) { UNUSED u32 eu_sp34; UNUSED u32 eu_sp30; UNUSED u32 sp2c; - D_80194040 = TRUE; + D_80194040 = true; __osSetSR(__osGetSR() | 0x20000000); __osSetFpcCsr(0x01000800); while (__osSiRawReadIo(PIF_ADDR_START, &sp34)) { diff --git a/src/os/osPfsAllocateFile.c b/src/os/osPfsAllocateFile.c index 874cfecd3..b2614955e 100644 --- a/src/os/osPfsAllocateFile.c +++ b/src/os/osPfsAllocateFile.c @@ -29,7 +29,7 @@ s32 osPfsAllocateFile(OSPfs *pfs, u16 company_code, u32 game_code, u8 *game_name return PFS_ERR_INVALID; file_size_in_pages = (file_size_in_bytes + 255) / (BLOCKSIZE * PFS_ONE_PAGE); - if ((pfs->status & PFS_INITIALIZED) == FALSE) + if ((pfs->status & PFS_INITIALIZED) == false) return PFS_ERR_INVALID; PFS_CHECK_ID; @@ -99,7 +99,7 @@ s32 osPfsAllocateFile(OSPfs *pfs, u16 company_code, u32 game_code, u8 *game_name dir.game_name[j] = *game_name++; for (j = 0; j < ARRLEN(dir.ext_name); j++) dir.ext_name[j] = *ext_name++; - ERRCK(__osContRamWrite(pfs->queue, pfs->channel, *file_no + pfs->dir_table, (u8*)&dir, FALSE)); + ERRCK(__osContRamWrite(pfs->queue, pfs->channel, *file_no + pfs->dir_table, (u8*)&dir, false)); return ret; } return PFS_ERR_INVALID; @@ -171,11 +171,11 @@ static s32 __osClearPage(OSPfs *pfs, int page_no, u8 *data, u8 bank) ERRCK(__osPfsSelectBank(pfs)); for (i = 0; i < PFS_ONE_PAGE; i++) { - ret = __osContRamWrite(pfs->queue, pfs->channel, page_no * PFS_ONE_PAGE + i, data, FALSE); + ret = __osContRamWrite(pfs->queue, pfs->channel, page_no * PFS_ONE_PAGE + i, data, false); if (ret != 0) break; } pfs->activebank = 0; ret = __osPfsSelectBank(pfs); return ret; -} \ No newline at end of file +} diff --git a/src/os/osPfsChecker.c b/src/os/osPfsChecker.c index 18457216e..78bd44bb9 100644 --- a/src/os/osPfsChecker.c +++ b/src/os/osPfsChecker.c @@ -59,7 +59,7 @@ s32 osPfsChecker(OSPfs *pfs) tmp_dir.status = DIR_STATUS_EMPTY; tmp_dir.data_sum = 0; SET_ACTIVEBANK_TO_ZERO; - ERRCK(__osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + j, (u8*)&tmp_dir, FALSE)); + ERRCK(__osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + j, (u8*)&tmp_dir, false)); fixed++; } else @@ -73,7 +73,7 @@ s32 osPfsChecker(OSPfs *pfs) tmp_dir.data_sum = 0; SET_ACTIVEBANK_TO_ZERO; - ERRCK(__osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + j, (u8*)&tmp_dir, FALSE)); + ERRCK(__osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + j, (u8*)&tmp_dir, false)); fixed++; } } diff --git a/src/os/osPfsDeleteFile.c b/src/os/osPfsDeleteFile.c index c0e628ad0..4baa4f8be 100644 --- a/src/os/osPfsDeleteFile.c +++ b/src/os/osPfsDeleteFile.c @@ -56,7 +56,7 @@ s32 osPfsDeleteFile(OSPfs *pfs, u16 company_code, u32 game_code, u8 *game_name, dir.ext_name[k] = 0; } dir.status = DIR_STATUS_EMPTY; - ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + file_no, (u8*)&dir, FALSE); + ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + file_no, (u8*)&dir, false); return ret; } @@ -129,4 +129,4 @@ s32 __osBlockSum(OSPfs *pfs, u8 page_no, u16 *sum, u8 bank) pfs->activebank = 0; ret = __osPfsSelectBank(pfs); return ret; -} \ No newline at end of file +} diff --git a/src/os/osPfsFreeBlocks.c b/src/os/osPfsFreeBlocks.c index f63c7b745..1ee3c026e 100755 --- a/src/os/osPfsFreeBlocks.c +++ b/src/os/osPfsFreeBlocks.c @@ -29,6 +29,3 @@ s32 osPfsFreeBlocks(OSPfs *pfs, s32 *bytes_not_used) *bytes_not_used = pages * PFS_ONE_PAGE * BLOCKSIZE; return 0; } - -/* -*/ \ No newline at end of file diff --git a/src/os/osPfsInit.c b/src/os/osPfsInit.c index fd5fe147c..e5449af06 100644 --- a/src/os/osPfsInit.c +++ b/src/os/osPfsInit.c @@ -37,11 +37,11 @@ s32 __osPfsGetStatus(OSMesgQueue *queue, int channel) osRecvMesg(queue, &dummy, OS_MESG_BLOCK); ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam); osRecvMesg(queue, &dummy, OS_MESG_BLOCK); - __osPfsGetInitData(&pattern, &data); + __osPfsGetInitData(&pattern, &data[0]); if (((data[channel].status & CONT_CARD_ON) != 0) && ((data[channel].status & CONT_CARD_PULL) != 0)) return PFS_ERR_NEW_PACK; - if ((data[channel].errno != 0) || ((data[channel].status & CONT_CARD_ON) == 0)) + if ((data[channel].errnum != 0) || ((data[channel].status & CONT_CARD_ON) == 0)) return PFS_ERR_NOPACK; if ((data[channel].status & CONT_ADDR_CRC_ER) != 0) return PFS_ERR_CONTRFAIL; diff --git a/src/os/osPfsIsPlug.c b/src/os/osPfsIsPlug.c index 2f2d8249e..434a097c5 100644 --- a/src/os/osPfsIsPlug.c +++ b/src/os/osPfsIsPlug.c @@ -1,6 +1,6 @@ #include "libultra_internal.h" -#include "PR/os_pi.h" +#include #include "controller.h" OSPifRam __osPfsPifRam; @@ -17,7 +17,7 @@ s32 osPfsIsPlug(OSMesgQueue *queue, u8 *pattern) { bits = 0; crc_error_cnt = 3; __osSiGetAccess(); - while (TRUE) { + while (true) { __osPfsRequestData(CONT_CMD_REQUEST_STATUS); ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); osRecvMesg(queue, &dummy, OS_MESG_BLOCK); @@ -35,7 +35,7 @@ s32 osPfsIsPlug(OSMesgQueue *queue, u8 *pattern) { } if (crc_error_cnt < 1) { for (channel = 0; channel < _osContNumControllers; channel++) { - if (data[channel].errno == 0 && (data[channel].status & CONT_CARD_ON) != 0) { + if (data[channel].errnum == 0 && (data[channel].status & CONT_CARD_ON) != 0) { bits |= 1 << channel; } } @@ -51,7 +51,7 @@ void __osPfsRequestData(u8 cmd) { __OSContRequesFormat requestformat; int i; - _osLastSentSiCmd = cmd; + __osContLastCmd = cmd; for (i = 0; i < ARRLEN(__osPfsPifRam.ramarray) + 1; i++) { // also clear pifstatus __osPfsPifRam.ramarray[i] = 0; @@ -84,8 +84,8 @@ void __osPfsGetInitData(u8 *pattern, OSContStatus *data) { ptr = (u8 *)&__osPfsPifRam; for (i = 0; i < _osContNumControllers; i++, ptr += sizeof(__OSContRequesFormat)) { requestformat = *(__OSContRequesFormat *)ptr; - data->errno = CHNL_ERR(requestformat); - if (data->errno == 0) { + data->errnum = CHNL_ERR(requestformat); + if (data->errnum == 0) { data->type = (requestformat.typel << 8) | (requestformat.typeh); data->status = requestformat.status; bits |= 1 << i; diff --git a/src/os/osPfsNumFiles.c b/src/os/osPfsNumFiles.c index 09d0eba6f..006329949 100755 --- a/src/os/osPfsNumFiles.c +++ b/src/os/osPfsNumFiles.c @@ -1,5 +1,5 @@ #include "libultra_internal.h" -#include "PR/os.h" +#include #include "controller.h" s32 osPfsNumFiles(OSPfs *pfs, s32 *max_files, s32 *files_used) diff --git a/src/os/osPfsReadWriteFile.c b/src/os/osPfsReadWriteFile.c index 697a726f4..a910a681d 100644 --- a/src/os/osPfsReadWriteFile.c +++ b/src/os/osPfsReadWriteFile.c @@ -82,7 +82,7 @@ s32 osPfsReadWriteFile(OSPfs *pfs, s32 file_no, u8 flag, int offset, int size_in if (flag == OS_READ) ret = __osContRamRead(pfs->queue, pfs->channel, blockno, buffer); else - ret = __osContRamWrite(pfs->queue, pfs->channel, blockno, buffer, FALSE); + ret = __osContRamWrite(pfs->queue, pfs->channel, blockno, buffer, false); if (ret != 0) return ret; buffer += BLOCKSIZE; @@ -94,8 +94,8 @@ s32 osPfsReadWriteFile(OSPfs *pfs, s32 file_no, u8 flag, int offset, int size_in dir.status |= DIR_STATUS_OCCUPIED; pfs->activebank = 0; ERRCK(__osPfsSelectBank(pfs)); - ERRCK(__osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + file_no, (u8*)&dir, FALSE)); + ERRCK(__osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + file_no, (u8*)&dir, false)); } return 0; -} \ No newline at end of file +} diff --git a/src/os/osPfsSearchFile.c b/src/os/osPfsSearchFile.c index efd994698..b78171294 100755 --- a/src/os/osPfsSearchFile.c +++ b/src/os/osPfsSearchFile.c @@ -15,14 +15,14 @@ s32 osPfsFindFile(OSPfs *pfs, u16 company_code, u32 game_code, u8 *game_name, u8 ERRCK(__osContRamRead(pfs->queue, pfs->channel, pfs->dir_table + j, (u8*)&dir)); if ((dir.company_code == company_code) && dir.game_code == game_code) { - fail = FALSE; + fail = false; if (game_name != NULL) { for (i = 0; i < ARRLEN(dir.game_name); i++) { if (dir.game_name[i] != game_name[i]) { - fail = TRUE; + fail = true; break; } } @@ -34,7 +34,7 @@ s32 osPfsFindFile(OSPfs *pfs, u16 company_code, u32 game_code, u8 *game_name, u8 { if (dir.ext_name[i] != ext_name[i]) { - fail = TRUE; + fail = true; break; } } diff --git a/src/os/osSyncPrintf.c b/src/os/osSyncPrintf.c index 26bfc999d..34ac89c2f 100644 --- a/src/os/osSyncPrintf.c +++ b/src/os/osSyncPrintf.c @@ -1,12 +1,13 @@ #include "libultra_internal.h" #include "libc/stdarg.h" +#include "printf.h" // These funcs defined in is_debug.c #ifndef DEBUG -char *osSyncPrintf(char *arg0, const char *arg1, size_t size) { +char *osSyncPrintf(UNUSED char *arg0, UNUSED const char *arg1, UNUSED size_t size) { // ifdef'd formatting code? - return (1); + return (char *) (1); } void rmonPrintf(const char *fmt, ...) { diff --git a/src/os/osTimer.c b/src/os/osTimer.c index b14139a94..21d6ee19a 100644 --- a/src/os/osTimer.c +++ b/src/os/osTimer.c @@ -26,7 +26,7 @@ void __osTimerInterrupt(void) { if (__osTimerList->next == __osTimerList) { return; } - while (TRUE) { + while (true) { sp24 = __osTimerList->next; if (sp24 == __osTimerList) { __osSetCompare(0); diff --git a/src/os/osint.h b/src/os/osint.h index f607d6a6e..9e35c1edb 100644 --- a/src/os/osint.h +++ b/src/os/osint.h @@ -1,6 +1,7 @@ #ifndef _OSINT_H #define _OSINT_H #include "libultra_internal.h" +#include //maybe should be in exceptasm.h? extern void __osEnqueueAndYield(OSThread **); @@ -15,10 +16,14 @@ extern void __osTimerInterrupt(void); extern u32 __osProbeTLB(void *); extern int __osSpDeviceBusy(void); +#ifdef AVOID_UB +extern OSThread_ListHead __osThreadTail_fix; +#else extern OSThread *__osRunningThread; extern OSThread *__osActiveQueue; extern OSThread *__osFaultedThread; extern OSThread *__osRunQueue; +#endif extern OSTimer *__osTimerList; extern OSTimer __osBaseTimer; diff --git a/src/os/piint.h b/src/os/piint.h index 39278eed9..86337b917 100644 --- a/src/os/piint.h +++ b/src/os/piint.h @@ -1,9 +1,9 @@ #ifndef _PIINT_H #define _PIINT_H -#include "PR/os_internal.h" -#include "PR/rcp.h" -#include "PR/os_pi.h" -#include "PR/os.h" +#include +#include +#include +#include //https://github.com/LuigiBlood/64dd/wiki/Memory-Map diff --git a/src/player_controller.c b/src/player_controller.c index 08b852f68..6f4cee1ec 100644 --- a/src/player_controller.c +++ b/src/player_controller.c @@ -360,24 +360,24 @@ s32 get_player_index_for_player(Player *player) { return index; } -void func_80027DA8(Player *arg0, s8 arg1) { +void func_80027DA8(Player *player, s8 playerId) { if (D_8015F890 != 1) { - if ((arg0->type & 0x10) != 0x10) { - if (((D_8018D168 == 1) && ((arg0->type & 0x4000) == 0x4000)) && ((arg0->type & 0x100) != 0x100)) { - func_800C94A4(arg1); - arg0->type |= 0x10; - } else if ((arg0->type & 0x2000) == 0) { - func_800C9A88(arg1); - arg0->type |= 0x10; + if ((player->type & 0x10) != 0x10) { + if (((D_8018D168 == 1) && ((player->type & 0x4000) == 0x4000)) && ((player->type & 0x100) != 0x100)) { + func_800C94A4(playerId); + player->type |= 0x10; + } else if ((player->type & 0x2000) == 0) { + func_800C9A88(playerId); + player->type |= 0x10; } } - } else if ((arg0->type & 0x10) != 0x10) { - if ((D_8018D168 == 1) && (arg0 == gPlayerOne)) { - func_800C94A4(arg1); - arg0->type |= 0x10; - } else if ((arg0->type & 0x2000) == 0) { - func_800C9A88(arg1); - arg0->type |= 0x10; + } else if ((player->type & 0x10) != 0x10) { + if ((D_8018D168 == 1) && (player == gPlayerOne)) { + func_800C94A4(playerId); + player->type |= 0x10; + } else if ((player->type & 0x2000) == 0) { + func_800C9A88(playerId); + player->type |= 0x10; } } } @@ -618,9 +618,9 @@ void func_80027EDC(Player *player, s8 playerId) { } } -void func_80028864(Player *player, Camera *camera, s8 arg2, s8 arg3) { +void func_80028864(Player *player, Camera *camera, s8 playerId, s8 screenId) { u16 sp1E; - + if (!(player->type & PLAYER_START_SEQUENCE)) { switch (gActiveScreenMode) { case SCREEN_MODE_1P: @@ -633,45 +633,45 @@ void func_80028864(Player *player, Camera *camera, s8 arg2, s8 arg3) { sp1E = check_player_camera_collision(player, camera2, (f32) D_8016557C, 0.0f); break; case SCREEN_MODE_3P_4P_SPLITSCREEN: - sp1E = check_player_camera_collision(player, camera1, (f32) D_8016557C, 0.0f); + sp1E = check_player_camera_collision(player, camera1, (f32) D_8016557C, 0.0f); + if (sp1E == 1) break; + sp1E = check_player_camera_collision(player, camera2, (f32) D_8016557C, 0.0f); + if (sp1E == 1) break; + sp1E = check_player_camera_collision(player, camera3, (f32) D_8016557C, 0.0f); if (sp1E == 1) break; - sp1E = check_player_camera_collision(player, camera2, (f32) D_8016557C, 0.0f); - if (sp1E == 1) break; - sp1E = check_player_camera_collision(player, camera3, (f32) D_8016557C, 0.0f); - if (sp1E == 1) break; sp1E = check_player_camera_collision(player, camera4, (f32) D_8016557C, 0.0f); - break; + break; } - if ((sp1E == 1) || - ((player->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) || - (gModeSelection == BATTLE) || - ((player->unk_0CA & 2) != 0) || - (player->unk_0CA & 8) || + if ((sp1E == 1) || + ((player->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) || + (gModeSelection == BATTLE) || + ((player->unk_0CA & 2) != 0) || + (player->unk_0CA & 8) || //! @todo make a proper match - ((*(D_801633F8 + (arg2))) == ((s16) 1U))) { + ((*(D_801633F8 + (playerId))) == ((s16) 1U))) { player->effects &= ~0x1000; - if (((player->effects & 0x80) == 0x80) || - ((player->effects & 0x40) == 0x40) || - ((player->effects & 0x400) == 0x400) || - ((player->effects & 0x4000) == 0x4000) || - ((player->effects & 0x80000) == 0x80000) || - ((player->effects & 0x800000) == 0x800000) || - ((player->effects & 0x01000000) == 0x01000000) || - ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || - ((player->effects & 0x20000) == 0x20000) || + if (((player->effects & 0x80) == 0x80) || + ((player->effects & 0x40) == 0x40) || + ((player->effects & 0x400) == 0x400) || + ((player->effects & 0x4000) == 0x4000) || + ((player->effects & 0x80000) == 0x80000) || + ((player->effects & 0x800000) == 0x800000) || + ((player->effects & 0x01000000) == 0x01000000) || + ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || + ((player->effects & 0x20000) == 0x20000) || (player->unk_044 & 0x800)) { - func_8002E594(player, camera, arg3, arg2); + func_8002E594(player, camera, screenId, playerId); } else { - func_8002D268(player, camera, arg3, arg2); + func_8002D268(player, camera, screenId, playerId); } } else { - control_kart_ai_movement(player, camera, arg3, arg2); + control_kart_ai_movement(player, camera, screenId, playerId); } } else if ((player->type & PLAYER_STAGING) == PLAYER_STAGING) { - func_8002D028(player, arg2); - func_8002F730(player, camera, arg3, arg2); + func_8002D028(player, playerId); + func_8002F730(player, camera, screenId, playerId); } else if (player->type & 0x80) { - func_8002D268(player, camera, arg3, arg2); + func_8002D268(player, camera, screenId, playerId); } else { if ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN) { player->currentSpeed = 50.0f; @@ -680,79 +680,79 @@ void func_80028864(Player *player, Camera *camera, s8 arg2, s8 arg3) { } } -void func_80028C44(Player *player, Camera *camera, s8 arg2, s8 arg3) { +void func_80028C44(Player *player, Camera *camera, s8 playerId, s8 screenId) { if ((player->type & PLAYER_START_SEQUENCE) == 0) { player->effects &= ~0x1000; - if (((player->effects & 0x80) == 0x80) || - ((player->effects & 0x40) == 0x40) || - ((player->effects & 0x400) == 0x400) || - ((player->effects & 0x4000) == 0x4000) || - ((player->effects & 0x80000) == 0x80000) || - ((player->effects & 0x800000) == 0x800000) || - ((player->effects & 0x1000000) == 0x1000000) || - ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || - ((player->effects & 0x20000) == 0x20000) || + if (((player->effects & 0x80) == 0x80) || + ((player->effects & 0x40) == 0x40) || + ((player->effects & 0x400) == 0x400) || + ((player->effects & 0x4000) == 0x4000) || + ((player->effects & 0x80000) == 0x80000) || + ((player->effects & 0x800000) == 0x800000) || + ((player->effects & 0x1000000) == 0x1000000) || + ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || + ((player->effects & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { - func_8002E594(player, camera, arg3, arg2); + func_8002E594(player, camera, screenId, playerId); } else { - func_8002D268(player, camera, arg3, arg2); + func_8002D268(player, camera, screenId, playerId); } } else { player->effects &= -9; } } -void func_80028D3C(Player *player, Camera *camera, s8 arg2, s8 arg3) { +void func_80028D3C(Player *player, Camera *camera, s8 playerId, s8 screenId) { if ((((player->type & PLAYER_START_SEQUENCE) == 0) && (D_800DC510 != 5)) || (player->unk_0CA & 2) != 0 || (player->unk_0CA & 8) != 0 || (player->effects & 0x4F010CC0) != 0) { player->effects &= ~0x1000; - - if (((player->effects & 0x80) == 0x80) || - ((player->effects & 0x40) == 0x40) || - ((player->effects & 0x400) == 0x400) || - ((player->effects & 0x4000) == 0x4000) || - ((player->effects & 0x80000) == 0x80000) || - ((player->effects & 0x800000) == 0x800000) || - ((player->effects & 0x1000000) == 0x1000000) || - ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || - ((player->effects & 0x20000) == 0x20000) || + + if (((player->effects & 0x80) == 0x80) || + ((player->effects & 0x40) == 0x40) || + ((player->effects & 0x400) == 0x400) || + ((player->effects & 0x4000) == 0x4000) || + ((player->effects & 0x80000) == 0x80000) || + ((player->effects & 0x800000) == 0x800000) || + ((player->effects & 0x1000000) == 0x1000000) || + ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || + ((player->effects & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { - func_8002E594(player, camera, arg3, arg2); + func_8002E594(player, camera, screenId, playerId); } else { - func_8002D268(player, camera, arg3, arg2); + func_8002D268(player, camera, screenId, playerId); } } else { player->effects = player->effects & ~8; } } -void func_80028E70(Player *player, Camera *camera, s8 arg2, s8 arg3) { +void func_80028E70(Player *player, Camera *camera, s8 playerId, s8 screenId) { if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) { switch (gGamestate) { case ENDING: if (!(player->type & PLAYER_START_SEQUENCE)) { - func_80038C6C(player, camera, arg3, arg2); + func_80038C6C(player, camera, screenId, playerId); } else { player->effects &= ~8; - } + } break; - default: - func_80027DA8(player, arg2); + default: + func_80027DA8(player, playerId); switch (gModeSelection) { case TIME_TRIALS: case VERSUS: - func_80028C44(player, camera, arg2, arg3); + func_80028C44(player, camera, playerId, screenId); break; case BATTLE: - func_80028D3C(player, camera, arg2, arg3); + func_80028D3C(player, camera, playerId, screenId); break; default: - func_80028864(player, camera, arg2, arg3); + func_80028864(player, camera, playerId, screenId); break; - } + } break; } } @@ -810,37 +810,37 @@ void func_800291F8(void) { } -void func_80029200(Player *player, s8 arg1) { +void func_80029200(Player *player, s8 screenId) { if ((s32) player->slopeAccel < -0x71B) { - player->animGroupSelector[arg1] = 0; + player->animGroupSelector[screenId] = 0; } if (((s32) player->slopeAccel < -0x4F9) && ((s32) player->slopeAccel >= -0x71B)) { - player->animGroupSelector[arg1] = 1; + player->animGroupSelector[screenId] = 1; } if ((player->slopeAccel < -0x221) && (player->slopeAccel >= -0x4F9)) { - player->animGroupSelector[arg1] = 2; + player->animGroupSelector[screenId] = 2; } if ((player->slopeAccel < -0x16B) && (player->slopeAccel >= -0x221)) { - player->animGroupSelector[arg1] = 3; + player->animGroupSelector[screenId] = 3; } if ((player->slopeAccel < 0x16C) && (player->slopeAccel >= -0x16B)) { - player->animGroupSelector[arg1] = 4; + player->animGroupSelector[screenId] = 4; } if ((player->slopeAccel >= 0x16C) && (player->slopeAccel < 0x222)) { - player->animGroupSelector[arg1] = 5; + player->animGroupSelector[screenId] = 5; } if ((player->slopeAccel >= 0x222) && (player->slopeAccel < 0x4FA)) { - player->animGroupSelector[arg1] = 6; + player->animGroupSelector[screenId] = 6; } if ((player->slopeAccel >= 0x4FA) && (player->slopeAccel < 0x71C)) { - player->animGroupSelector[arg1] = 7; + player->animGroupSelector[screenId] = 7; } if (player->slopeAccel >= 0x71C) { - player->animGroupSelector[arg1] = 8; + player->animGroupSelector[screenId] = 8; } } -void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) { +void func_8002934C(Player *player, Camera *camera, s8 screenId, s8 playerId) { UNUSED s32 pad[2]; f32 temp_f0; f32 temp_f2; @@ -852,45 +852,45 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) { s32 var_t0; u16 var_a0; - player->unk_048[arg2] = atan2s(player->pos[0] - camera->pos[0], player->pos[2] - camera->pos[2]); - player->animFrameSelector[arg2] = (u16) ( (((player->unk_048[arg2]) + player->rotation[1] + player->unk_0C0))) / 128; + player->unk_048[screenId] = atan2s(player->pos[0] - camera->pos[0], player->pos[2] - camera->pos[2]); + player->animFrameSelector[screenId] = (u16) ( (((player->unk_048[screenId]) + player->rotation[1] + player->unk_0C0))) / 128; temp_f2 = (gCharacterSize[player->characterId] * 18.0f) * player->size; temp_f0 = player->unk_230 - player->unk_23C; if ((player->effects & 8) != 8) { if ((player->effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) { - player->unk_0CC[arg2] = (s16) ((s32) (((f64) func_802B7C40(temp_f0 / temp_f2)) * 1.6)); + player->unk_0CC[screenId] = (s16) ((s32) (((f64) func_802B7C40(temp_f0 / temp_f2)) * 1.6)); } else { - player->unk_0CC[arg2] = func_802B7C40(temp_f0 / temp_f2) * 2; + player->unk_0CC[screenId] = func_802B7C40(temp_f0 / temp_f2) * 2; } } if ((player->effects & HIT_EFFECT) == HIT_EFFECT) { - player->unk_0CC[arg2] = (s16) ((s32) player->unk_D9C); + player->unk_0CC[screenId] = (s16) ((s32) player->unk_D9C); } if ((player->effects & 8) != 8) { temp_f0 = player->unk_1F8 - player->unk_1FC; - player->unk_0D4[arg2] = (((func_802B7C40(temp_f0 / temp_f2)) * 0.9)); + player->unk_0D4[screenId] = (((func_802B7C40(temp_f0 / temp_f2)) * 0.9)); } else { - if (((player->animFrameSelector[arg2]) >= 0) && ((player->animFrameSelector[arg2]) < 0x101)) { + if (((player->animFrameSelector[screenId]) >= 0) && ((player->animFrameSelector[screenId]) < 0x101)) { var_f0 = player->copy_rotation_y - player->pos[1]; } else { var_f0 = player->pos[1] - player->copy_rotation_y; } - player->unk_0D4[arg2] = (s16) ((s32) (((f64) func_802B7C40(var_f0 / temp_f2)) * 0.5)); + player->unk_0D4[screenId] = (s16) ((s32) (((f64) func_802B7C40(var_f0 / temp_f2)) * 0.5)); } if ((player->effects & HIT_EFFECT) == HIT_EFFECT) { - player->unk_0D4[arg2] = (s16) ((s32) player->unk_D9C); + player->unk_0D4[screenId] = (s16) ((s32) player->unk_D9C); } - func_80029200(player, arg2); - temp_a0 = ((player->unk_048[arg2] + player->rotation[1]) + player->unk_0C0); - temp_a0 = (s16) player->unk_0D4[arg2] * sins((u16) temp_a0) + player->unk_0CC[arg2] * coss((u16) temp_a0); - move_s16_towards(&player->unk_050[arg2], temp_a0, 0.5f); - var_a0 = player->animFrameSelector[arg2]; - player->unk_002 = player->unk_002 & (~(4 << (arg2 * 4))); + func_80029200(player, screenId); + temp_a0 = ((player->unk_048[screenId] + player->rotation[1]) + player->unk_0C0); + temp_a0 = (s16) player->unk_0D4[screenId] * sins((u16) temp_a0) + player->unk_0CC[screenId] * coss((u16) temp_a0); + move_s16_towards(&player->unk_050[screenId], temp_a0, 0.5f); + var_a0 = player->animFrameSelector[screenId]; + player->unk_002 = player->unk_002 & (~(4 << (screenId * 4))); if (var_a0 >= 0x101) { var_a0 = 0x201 - var_a0; - player->unk_002 |= (4 << (arg2 * 4)); + player->unk_002 |= (4 << (screenId * 4)); } if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) @@ -913,13 +913,13 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) { if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || (player->unk_044 & 0x800)) { - player->unk_050[arg2] = 0; + player->unk_050[screenId] = 0; } - if (((player->effects & 8) == 8) + if (((player->effects & 8) == 8) && ((player->unk_0CA & 2) == 2)) { - player->unk_050[arg2] = 0; + player->unk_050[screenId] = 0; } - var_a0 = (player->unk_048[arg2] + player->rotation[1] + player->unk_0C0); + var_a0 = (player->unk_048[screenId] + player->rotation[1] + player->unk_0C0); if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || ((player->effects & 0x80000) == 0x80000) @@ -941,9 +941,9 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) { } var_a0 /= var_a1; } - player->animFrameSelector[arg2] = var_a0 + var_t0; - if ((player->animFrameSelector[arg2]) >= 0x23) { - player->animFrameSelector[arg2] = 0x22; + player->animFrameSelector[screenId] = var_a0 + var_t0; + if ((player->animFrameSelector[screenId]) >= 0x23) { + player->animFrameSelector[screenId] = 0x22; } if ((player->effects & 0x80) || (player->effects & 0x40) @@ -951,19 +951,19 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) { || (player->effects & 0x800000) || (player->effects & 0x20000) || (player->unk_044 & 0x800)) { - - if ((player->animFrameSelector[arg2]) >= 0x14) { - player->animFrameSelector[arg2] = 0; + + if ((player->animFrameSelector[screenId]) >= 0x14) { + player->animFrameSelector[screenId] = 0; } } - if ((player->animGroupSelector[arg2]) >= 9) { - player->animGroupSelector[arg2] = 4; + if ((player->animGroupSelector[screenId]) >= 9) { + player->animGroupSelector[screenId] = 4; } if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || (player->unk_044 & 0x800)) { - player->animGroupSelector[arg2] = 4; + player->animGroupSelector[screenId] = 4; } if (((player->effects & 0x400) == 0x400) || ((player->effects & 0x01000000) == 0x01000000) @@ -971,28 +971,28 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) { || (player->effects & 0x10000) || (player->effects & 0x80) || (player->effects & 0x40)) { - - player->unk_002 |= 1 << (arg2 * 4); - D_80165190[arg2][playerId] = 1; - + + player->unk_002 |= 1 << (screenId * 4); + D_80165190[screenId][playerId] = 1; + if ((player->effects & 0x80) || (player->effects & 0x40)) { - if ((player->animFrameSelector[arg2] == D_801650D0[arg2][playerId]) - && (player->animGroupSelector[arg2] == D_80165110[arg2][playerId])) { - player->unk_002 &= ~(1 << (arg2 * 4)); - D_80165190[arg2][playerId] = 1; + if ((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) + && (player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) { + player->unk_002 &= ~(1 << (screenId * 4)); + D_80165190[screenId][playerId] = 1; } - } else if (((player->unk_0A8) >> 8) == D_80165150[arg2][playerId] >> 8) { - player->unk_002 &= ~(1 << (arg2 * 4)); + } else if (((player->unk_0A8) >> 8) == D_80165150[screenId][playerId] >> 8) { + player->unk_002 &= ~(1 << (screenId * 4)); } } else { - player->unk_002 |= 1 << (arg2 * 4); - if (((player->animFrameSelector[arg2] == D_801650D0[arg2][playerId]) && (player->animGroupSelector[arg2] == D_80165110[arg2][playerId])) && ((D_80165190[arg2][playerId]) == 0)) { - player->unk_002 &= ~(1 << (arg2 * 4)); + player->unk_002 |= 1 << (screenId * 4); + if (((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) && (player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) && ((D_80165190[screenId][playerId]) == 0)) { + player->unk_002 &= ~(1 << (screenId * 4)); } } - temp_a0_2 = D_801650D0[arg2][playerId] - player->animFrameSelector[arg2]; + temp_a0_2 = gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId]; if ((temp_a0_2 >= 0x14) || (temp_a0_2 < (-0x13))) { - player->unk_002 |= 1 << (arg2 * 4); + player->unk_002 |= 1 << (screenId * 4); } } @@ -1016,67 +1016,66 @@ void func_80029B4C(Player *player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) { else { var_f12 = 18.0f * (gCharacterSize[player->characterId] / 2); } - + calculate_orientation_matrix(sp5C, 0.0f, 1.0f, 0.0f, (player->rotation[1] + player->unk_0C0)); sp8C[0] = var_f12 - 3.6; sp8C[1] = -player->boundingBoxSize; sp8C[2] = var_f12 - 2.0f; mtxf_translate_vec3f_mat3(sp8C, sp5C); - sp80[0] = player->boundingBoxCorners[0].cornerPos[0]; - sp80[1] = player->boundingBoxCorners[0].cornerPos[1]; - sp80[2] = player->boundingBoxCorners[0].cornerPos[2]; - player->boundingBoxCorners[0].cornerPos[0] = player->pos[0] + sp8C[0]; - player->boundingBoxCorners[0].cornerPos[1] = player->pos[1] + sp8C[1]; - player->boundingBoxCorners[0].cornerPos[2] = player->pos[2] + sp8C[2]; - process_collision(player, &player->boundingBoxCorners[0], sp80[0], sp80[1], sp80[2]); - + sp80[0] = player->tyres[FRONT_LEFT].pos[0]; + sp80[1] = player->tyres[FRONT_LEFT].pos[1]; + sp80[2] = player->tyres[FRONT_LEFT].pos[2]; + player->tyres[FRONT_LEFT].pos[0] = player->pos[0] + sp8C[0]; + player->tyres[FRONT_LEFT].pos[1] = player->pos[1] + sp8C[1]; + player->tyres[FRONT_LEFT].pos[2] = player->pos[2] + sp8C[2]; + process_collision(player, &player->tyres[FRONT_LEFT], sp80[0], sp80[1], sp80[2]); + sp8C[0] = (-var_f12) + 3.6; sp8C[1] = -player->boundingBoxSize; sp8C[2] = var_f12 - 2.0f; mtxf_translate_vec3f_mat3(sp8C, sp5C); - sp80[0] = player->boundingBoxCorners[1].cornerPos[0]; - sp80[1] = player->boundingBoxCorners[1].cornerPos[1]; - sp80[2] = player->boundingBoxCorners[1].cornerPos[2]; - player->boundingBoxCorners[1].cornerPos[0] = player->pos[0] + sp8C[0]; - player->boundingBoxCorners[1].cornerPos[1] = player->pos[1] + sp8C[1]; - player->boundingBoxCorners[1].cornerPos[2] = player->pos[2] + sp8C[2]; - process_collision(player, &player->boundingBoxCorners[1], sp80[0], sp80[1], sp80[2]); - + sp80[0] = player->tyres[FRONT_RIGHT].pos[0]; + sp80[1] = player->tyres[FRONT_RIGHT].pos[1]; + sp80[2] = player->tyres[FRONT_RIGHT].pos[2]; + player->tyres[FRONT_RIGHT].pos[0] = player->pos[0] + sp8C[0]; + player->tyres[FRONT_RIGHT].pos[1] = player->pos[1] + sp8C[1]; + player->tyres[FRONT_RIGHT].pos[2] = player->pos[2] + sp8C[2]; + process_collision(player, &player->tyres[FRONT_RIGHT], sp80[0], sp80[1], sp80[2]); sp8C[0] = var_f12 - 2.6; sp8C[1] = -player->boundingBoxSize; sp8C[2] = (-var_f12) + 4.0f; mtxf_translate_vec3f_mat3(sp8C, sp5C); - sp80[0] = player->boundingBoxCorners[2].cornerPos[0]; - sp80[1] = player->boundingBoxCorners[2].cornerPos[1]; - sp80[2] = player->boundingBoxCorners[2].cornerPos[2]; - player->boundingBoxCorners[2].cornerPos[0] = player->pos[0] + sp8C[0]; - player->boundingBoxCorners[2].cornerPos[1] = player->pos[1] + sp8C[1]; - player->boundingBoxCorners[2].cornerPos[2] = player->pos[2] + sp8C[2]; - process_collision(player, &player->boundingBoxCorners[2], sp80[0], sp80[1], sp80[2]); - + sp80[0] = player->tyres[BACK_LEFT].pos[0]; + sp80[1] = player->tyres[BACK_LEFT].pos[1]; + sp80[2] = player->tyres[BACK_LEFT].pos[2]; + player->tyres[BACK_LEFT].pos[0] = player->pos[0] + sp8C[0]; + player->tyres[BACK_LEFT].pos[1] = player->pos[1] + sp8C[1]; + player->tyres[BACK_LEFT].pos[2] = player->pos[2] + sp8C[2]; + process_collision(player, &player->tyres[BACK_LEFT], sp80[0], sp80[1], sp80[2]); + sp8C[0] = (-var_f12) + 2.6; sp8C[1] = -player->boundingBoxSize; sp8C[2] = (-var_f12) + 4.0f; mtxf_translate_vec3f_mat3(sp8C, sp5C); - sp80[0] = player->boundingBoxCorners[3].cornerPos[0]; - sp80[1] = player->boundingBoxCorners[3].cornerPos[1]; - sp80[2] = player->boundingBoxCorners[3].cornerPos[2]; - player->boundingBoxCorners[3].cornerPos[0] = player->pos[0] + sp8C[0]; - player->boundingBoxCorners[3].cornerPos[1] = player->pos[1] + sp8C[1]; - player->boundingBoxCorners[3].cornerPos[2] = player->pos[2] + sp8C[2]; - process_collision(player, &player->boundingBoxCorners[3], sp80[0], sp80[1], sp80[2]); - + sp80[0] = player->tyres[BACK_RIGHT].pos[0]; + sp80[1] = player->tyres[BACK_RIGHT].pos[1]; + sp80[2] = player->tyres[BACK_RIGHT].pos[2]; + player->tyres[BACK_RIGHT].pos[0] = player->pos[0] + sp8C[0]; + player->tyres[BACK_RIGHT].pos[1] = player->pos[1] + sp8C[1]; + player->tyres[BACK_RIGHT].pos[2] = player->pos[2] + sp8C[2]; + process_collision(player, &player->tyres[BACK_RIGHT], sp80[0], sp80[1], sp80[2]); + if (!(player->effects & 8)) { - a = (player->boundingBoxCorners[2].cornerGroundY + player->boundingBoxCorners[0].cornerGroundY) / 2; + a = (player->tyres[BACK_LEFT].baseHeight + player->tyres[FRONT_LEFT].baseHeight) / 2; move_f32_towards(&player->unk_230, a, 0.5f); - b = (player->boundingBoxCorners[3].cornerGroundY + player->boundingBoxCorners[1].cornerGroundY) / 2; + b = (player->tyres[BACK_RIGHT].baseHeight + player->tyres[FRONT_RIGHT].baseHeight) / 2; move_f32_towards(&player->unk_23C, b, 0.5f); - c = (player->boundingBoxCorners[1].cornerGroundY + player->boundingBoxCorners[0].cornerGroundY) / 2; + c = (player->tyres[FRONT_RIGHT].baseHeight + player->tyres[FRONT_LEFT].baseHeight) / 2; move_f32_towards(&player->unk_1FC, c, 0.5f); - d = (player->boundingBoxCorners[3].cornerGroundY + player->boundingBoxCorners[2].cornerGroundY) / 2; + d = (player->tyres[BACK_RIGHT].baseHeight + player->tyres[BACK_LEFT].baseHeight) / 2; move_f32_towards(&player->unk_1F8, d, 0.5f); } temp_f2_3 = ((gCharacterSize[player->characterId] * 18.0f) + 1.0f) * player->size; @@ -1103,7 +1102,7 @@ void func_80029B4C(Player *player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) { if (((player->effects & 8) == 8) && ((player->unk_0CA & 2) == 2)) { player->slopeAccel = (s16) ((s32) player->unk_D9C); } - player->surfaceType = get_surface_type(player->unk_110.unk3A) & 0xFF; + player->surfaceType = get_surface_type(player->collision.meshIndexZX) & 0xFF; if (player->surfaceType == BOOST_RAMP_ASPHALT) { if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) != BOOST_RAMP_ASPHALT_EFFECT) && ((player->effects & 8) != 8)) { player->soundEffects |= BOOST_RAMP_ASPHALT_SOUND_EFFECT; @@ -1133,36 +1132,36 @@ void func_8002A194(Player *player, f32 arg1, f32 arg2, f32 arg3) { var_f20 = (((gCharacterSize[player->characterId] * 18) / 2) * player->size) - 1; } - player->boundingBoxCorners[0].cornerPos[2] = (coss(temp_v1 + 0x2000) * var_f20) + arg3; + player->tyres[FRONT_LEFT].pos[2] = (coss(temp_v1 + 0x2000) * var_f20) + arg3; temp_f12 = (sins(temp_v1 + 0x2000) * var_f20) + arg1; - player->boundingBoxCorners[0].cornerPos[0] = temp_f12; - player->boundingBoxCorners[0].cornerGroundY = func_802ABE30(temp_f12, arg2, player->boundingBoxCorners[0].cornerPos[2], player->unk_110.unk3A); + player->tyres[FRONT_LEFT].pos[0] = temp_f12; + player->tyres[FRONT_LEFT].baseHeight = calculate_surface_height(temp_f12, arg2, player->tyres[FRONT_LEFT].pos[2], player->collision.meshIndexZX); - player->boundingBoxCorners[1].cornerPos[2] = (coss(temp_v1 - 0x2000) * var_f20) + arg3; + player->tyres[FRONT_RIGHT].pos[2] = (coss(temp_v1 - 0x2000) * var_f20) + arg3; temp_f12 = (sins(temp_v1 - 0x2000) * var_f20) + arg1; - player->boundingBoxCorners[1].cornerPos[0] = temp_f12; - player->boundingBoxCorners[1].cornerGroundY = func_802ABE30(temp_f12, arg2, player->boundingBoxCorners[1].cornerPos[2], player->unk_110.unk3A); + player->tyres[FRONT_RIGHT].pos[0] = temp_f12; + player->tyres[FRONT_RIGHT].baseHeight = calculate_surface_height(temp_f12, arg2, player->tyres[FRONT_RIGHT].pos[2], player->collision.meshIndexZX); - player->boundingBoxCorners[2].cornerPos[2] = (coss(temp_v1 + 0x6000) * var_f20) + arg3; + player->tyres[BACK_LEFT].pos[2] = (coss(temp_v1 + 0x6000) * var_f20) + arg3; temp_f12 = (sins(temp_v1 + 0x6000) * var_f20) + arg1; - player->boundingBoxCorners[2].cornerPos[0] = temp_f12; - player->boundingBoxCorners[2].cornerGroundY = func_802ABE30(temp_f12, arg2, player->boundingBoxCorners[2].cornerPos[2], player->unk_110.unk3A); + player->tyres[BACK_LEFT].pos[0] = temp_f12; + player->tyres[BACK_LEFT].baseHeight = calculate_surface_height(temp_f12, arg2, player->tyres[BACK_LEFT].pos[2], player->collision.meshIndexZX); - player->boundingBoxCorners[3].cornerPos[2] = (coss(temp_v1 - 0x6000) * var_f20) + arg3; - player->boundingBoxCorners[3].cornerPos[0] = (sins(temp_v1 - 0x6000) * var_f20) + arg1; - player->boundingBoxCorners[3].cornerGroundY = func_802ABE30(player->boundingBoxCorners[2].cornerPos[0], arg2, player->boundingBoxCorners[2].cornerPos[2], player->unk_110.unk3A); + player->tyres[BACK_RIGHT].pos[2] = (coss(temp_v1 - 0x6000) * var_f20) + arg3; + player->tyres[BACK_RIGHT].pos[0] = (sins(temp_v1 - 0x6000) * var_f20) + arg1; + player->tyres[BACK_RIGHT].baseHeight = calculate_surface_height(player->tyres[BACK_LEFT].pos[0], arg2, player->tyres[BACK_LEFT].pos[2], player->collision.meshIndexZX); if ((player->effects & 8) != 8) { - player->unk_230 = (player->boundingBoxCorners[2].cornerGroundY + player->boundingBoxCorners[0].cornerGroundY) / 2; - player->unk_23C = (player->boundingBoxCorners[3].cornerGroundY + player->boundingBoxCorners[1].cornerGroundY) / 2; - player->unk_1FC = (player->boundingBoxCorners[1].cornerGroundY + player->boundingBoxCorners[0].cornerGroundY) / 2; - player->unk_1F8 = (player->boundingBoxCorners[3].cornerGroundY + player->boundingBoxCorners[2].cornerGroundY) / 2; + player->unk_230 = (player->tyres[BACK_LEFT].baseHeight + player->tyres[FRONT_LEFT].baseHeight) / 2; + player->unk_23C = (player->tyres[BACK_RIGHT].baseHeight + player->tyres[FRONT_RIGHT].baseHeight) / 2; + player->unk_1FC = (player->tyres[FRONT_RIGHT].baseHeight + player->tyres[FRONT_LEFT].baseHeight) / 2; + player->unk_1F8 = (player->tyres[BACK_RIGHT].baseHeight + player->tyres[BACK_LEFT].baseHeight) / 2; } - player->surfaceType = (u8)get_surface_type(player->unk_110.unk3A); - player->boundingBoxCorners[3].surfaceType = player->surfaceType; - player->boundingBoxCorners[2].surfaceType = player->surfaceType; - player->boundingBoxCorners[1].surfaceType = player->surfaceType; - player->boundingBoxCorners[0].surfaceType = player->surfaceType; + player->surfaceType = (u8)get_surface_type(player->collision.meshIndexZX); + player->tyres[BACK_RIGHT].surfaceType = player->surfaceType; + player->tyres[BACK_LEFT].surfaceType = player->surfaceType; + player->tyres[FRONT_RIGHT].surfaceType = player->surfaceType; + player->tyres[FRONT_LEFT].surfaceType = player->surfaceType; var_f20 = (gCharacterSize[player->characterId] * 18) + 1; temp_f0 = (player->unk_23C - player->unk_230); player->unk_206 = -func_802B7C40(temp_f0 / var_f20); @@ -1179,10 +1178,10 @@ void func_8002A194(Player *player, f32 arg1, f32 arg2, f32 arg3) { } move_s16_towards(&player->slopeAccel, var_a1, 0.5f); } - if (func_802ABD7C(player->unk_110.unk3A) != 0) { - player->boundingBoxCorners[3].unk_14 |= 1; + if (func_802ABD7C(player->collision.meshIndexZX) != 0) { + player->tyres[BACK_RIGHT].unk_14 |= 1; } else { - player->boundingBoxCorners[3].unk_14 &= ~1; + player->tyres[BACK_RIGHT].unk_14 &= ~1; } if (player->surfaceType == BOOST_RAMP_ASPHALT) { if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) != BOOST_RAMP_ASPHALT_EFFECT) && ((player->effects & 8) != 8)) { @@ -1196,7 +1195,7 @@ void func_8002A194(Player *player, f32 arg1, f32 arg2, f32 arg3) { } } -// Near identical to func_802AC114 in memory.c +// Near identical to adjust_pos_orthogonally in memory.c void func_8002A5F4(Vec3f arg0, f32 arg1, Vec3f arg2, f32 arg3, f32 arg4) { f32 temp_f0; f32 temp_f2; @@ -1368,7 +1367,7 @@ void func_8002AB70(Player *player) { move_f32_towards(&player->unk_DAC, 1.0f, 0.07f); } } else { - if (player->unk_110.unk3C[2] >= 50.0f) { + if (player->collision.surfaceDistance[2] >= 50.0f) { player->unk_DAC = 2.0f; } move_f32_towards(&player->kartGravity, gKartGravityTable[player->characterId], 0.02f); @@ -1516,7 +1515,7 @@ void func_8002B218(Player *player) { } } -void apply_sound_effect(Player *player, s8 playerId, UNUSED s8 arg2) { +void apply_sound_effect(Player *player, s8 playerId, UNUSED s8 screenId) { if ((player->soundEffects & 2) == 2) { apply_hit_by_item_sound_effect(player, playerId); } @@ -1573,7 +1572,7 @@ void apply_sound_effect(Player *player, s8 playerId, UNUSED s8 arg2) { } } -void func_8002B5C0(Player *player, UNUSED s8 playerId, UNUSED s8 arg2) { +void func_8002B5C0(Player *player, UNUSED s8 playerId, UNUSED s8 screenId) { if (((player->unk_0CA & 8) != 0) || ((player->unk_0CA & 2) != 0)) { player->soundEffects &= 0xFE1D0478; } @@ -1627,12 +1626,12 @@ void func_8002B5C0(Player *player, UNUSED s8 playerId, UNUSED s8 arg2) { } } -void func_8002B830(Player *player, s8 playerId, s8 arg2) { +void func_8002B830(Player *player, s8 playerId, s8 screenId) { if (player->soundEffects != 0) { - func_8002B5C0(player, playerId, arg2); + func_8002B5C0(player, playerId, screenId); } if (player->soundEffects != 0) { - apply_sound_effect(player, playerId, arg2); + apply_sound_effect(player, playerId, screenId); } if ((player->unk_044 & 0x400) != 0) { func_800911B4(player, playerId); @@ -1712,59 +1711,59 @@ void func_8002BB9C(Player *player, f32 *arg1, f32 *arg2, UNUSED s8 arg3, UNUSED s16 t0; UNUSED s32 pad; s16 sp30[10] = {0x0000, 0x00b6, 0x016c, 0x0222, 0x02d8, 0x038e, 0x0444, 0x04fa, 0x05b0, 0x0666}; - + if (((u16) player->unk_256) <= 0) { - return; + return; } if (((u16) player->unk_256) > 2) { return; } - + if (!(player->unk_046 & 0x20)) { - return; + return; } - + calculate_orientation_matrix(sp64, 0, 1, 0, (s16) 0); - + sp58[0] = *arg1; sp58[1] = 0; sp58[2] = *arg2; - + mtxf_translate_vec3f_mat3(sp58, sp64); - + sp4C[0] = player->copy_rotation_x; sp4C[1] = 0; sp4C[2] = player->copy_rotation_z; - + mtxf_translate_vec3f_mat3(sp4C, sp64); var_v0 = -(s16)get_angle_between_two_vectors(sp58, sp4C); t0 = player->rotation[1]; var_v0 = 0x10000 + (t0 - var_v0); var_v0 /= 182; - + if (var_v0 < 0x97 && (var_v0 > -0x97)) { return; } - + var_v0 = (player->unk_07C >> 0x10) / 6; - + if (var_v0 < 0) { var_v0 *= -1; } - + if (var_v0 >= 8) { var_v0 = 8; } - + if ((player->unk_07C >> 0x10) < 0) { player->rotation[1] -= sp30[var_v0]; } else { player->rotation[1] += sp30[var_v0]; } } - + void func_8002BD58(Player *player) { s32 sp2C[7] = { 0x002f0000, 0x00300000, 0x00310000, 0x00320000, 0x00320000, 0x00320000, 0x00320000 }; s32 spC[8] = { 0x00280000, 0x002c0000, 0x00300000, 0x00320000, 0x00320000, 0x00320000, 0x00320000, 0x00320000 }; @@ -1794,16 +1793,16 @@ void func_8002BD58(Player *player) { } } -void func_8002BF4C(Player *player, s8 arg1) { +void func_8002BF4C(Player *player, s8 arg1) { UNUSED s32 pad[3]; UNUSED s32 uselessAssignment; s32 i; s32 var_a2; Player *playerBorrow; Player *players = gPlayerOne; - + var_a2 = 0; - + if (((player->unk_094 / 18.0f) * 216.0f) < 50.0f) { player->unk_0E2 = 0; player->effects &= 0xFFDFFFFF; @@ -1817,9 +1816,9 @@ void func_8002BF4C(Player *player, s8 arg1) { } else { for (i = 0; i < NUM_PLAYERS; i++) { playerBorrow = &players[i]; - if (((player != playerBorrow) && - ((playerBorrow->type & 0x100) == 0) && - (playerBorrow->type & 0x8000)) && + if (((player != playerBorrow) && + ((playerBorrow->type & 0x100) == 0) && + (playerBorrow->type & 0x8000)) && ((var_a2 = func_8001FD78(player, playerBorrow->pos[0], playerBorrow->pos[1], playerBorrow->pos[2]), var_a2 == 1))) { player->unk_0E2 += 1; if (player->unk_0E2 >= 0x3D) { @@ -1836,7 +1835,7 @@ void func_8002BF4C(Player *player, s8 arg1) { break; } } - + if (var_a2 == 0) { player->unk_0E2 = 0; } @@ -1860,7 +1859,7 @@ void func_8002C11C(Player *player) { void func_8002C17C(Player *player, s8 playerId) { switch (gCurrentCourseId) { /* irregular */ case COURSE_YOSHI_VALLEY: - if ((player->unk_110.unk3C[2] >= 600.0f) && (D_80165330[playerId] == 0)) { + if ((player->collision.surfaceDistance[2] >= 600.0f) && (D_80165330[playerId] == 0)) { D_80165330[playerId] = 1; gCopyNearestWaypointByPlayerId[playerId] = gNearestWaypointByPlayerId[playerId]; gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId]; @@ -1868,7 +1867,7 @@ void func_8002C17C(Player *player, s8 playerId) { gCopyNearestWaypointByPlayerId[playerId] = gNearestWaypointByPlayerId[playerId]; gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId]; } else if (!(player->effects & 8)) { - if (func_802ABDF4(player->unk_110.unk3A) == 0) { + if (func_802ABDF4(player->collision.meshIndexZX) == 0) { D_80165330[playerId] = 0; } } @@ -1896,7 +1895,7 @@ void func_8002C17C(Player *player, s8 playerId) { } break; case COURSE_RAINBOW_ROAD: - if ((player->unk_110.unk3C[2] >= 600.0f) && (D_80165330[playerId] == 0)) { + if ((player->collision.surfaceDistance[2] >= 600.0f) && (D_80165330[playerId] == 0)) { D_80165330[playerId] = 1; gCopyNearestWaypointByPlayerId[playerId] = gNearestWaypointByPlayerId[playerId]; gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId]; @@ -1949,15 +1948,15 @@ void func_8002C4F8(Player *player, s8 arg1) { (gCurrentCourseId == COURSE_RAINBOW_ROAD)) { player->unk_0DE &= ~0x000C; } - if ((player->boundingBoxSize < (D_801652A0[arg1] - player->pos[1])) && (player->unk_110.unk3C[2] >= 600.0f)) { + if ((player->boundingBoxSize < (D_801652A0[arg1] - player->pos[1])) && (player->collision.surfaceDistance[2] >= 600.0f)) { player->unk_0CA |= 1; } - if (player->unk_110.unk3C[2] >= 600.0f) { + if (player->collision.surfaceDistance[2] >= 600.0f) { player->unk_0CA |= 0x0100; } else if ((player->effects & 8) != 8) { player->unk_0CA &= ~0x0100; } - if ((player->type & PLAYER_KART_AI) && ((func_802ABDF4(player->unk_110.unk3A) != 0) || (player->unk_0CA & 1))) { + if ((player->type & PLAYER_KART_AI) && ((func_802ABDF4(player->collision.meshIndexZX) != 0) || (player->unk_0CA & 1))) { if (!(player->unk_0CA & 2) && !(player->unk_0CA & 8) && !(player->effects & 0x1000)) { func_80090778(player); func_80090868(player); @@ -1970,7 +1969,7 @@ void func_8002C4F8(Player *player, s8 arg1) { func_8002C17C(player, arg1); } -void func_8002C7E4(Player *player, s8 arg1, s8 arg2) { +void func_8002C7E4(Player *player, s8 arg1, s8 arg2) { if ((player->unk_046 & 1) != 1) { if ((player->effects & 0x8000) == 0x8000) { if ((player->effects & BOOST_EFFECT) != BOOST_EFFECT) { @@ -2017,20 +2016,21 @@ void func_8002C954(Player *player, s8 playerId, Vec3f arg2) { f32 zdist; temp_f0 = player->pos[1] - player->unk_074; + if (((((player->effects & 0x10000) != 0x10000) && ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT)) || ((((temp_f0 >= 20.0f) || (temp_f0 < (-1.0f))) && ((player->effects & 0x10000) == 0)) && (player->effects & 8)) || - ((player->unk_110.unk34 == 0) && + ((player->collision.unk34 == 0) && ((player->effects & 0x10000) == 0))) && (((player->unk_0CA & 2) == 0) || (!(player->unk_0CA & 8)))) { func_8008F494(player, playerId); } if ((player->unk_046 & 0x20) != 0x20) { - if ((player->unk_110.unk3C[0] < (-1.0f)) || (player->unk_110.unk3C[1] < (-1.0f))) { + if ((player->collision.surfaceDistance[0] < (-1.0f)) || (player->collision.surfaceDistance[1] < (-1.0f))) { player->unk_256 = 1; } player->unk_046 |= 0x20; @@ -2044,24 +2044,24 @@ void func_8002C954(Player *player, s8 playerId, Vec3f arg2) { player->unk_256 = 0; } if ((player->slopeAccel >= 0) && (((player->unk_094 / 18.0f) * 216.0f) > 5.0f)) { - func_80031F48(player, 18.0f); + decelerate_ai_player(player, 18.0f); } if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { xdist = D_80165070[playerId][0] - arg2[0]; var_f14 = D_80165070[playerId][1] - arg2[1]; ydist = var_f14; // okay zdist = D_80165070[playerId][2] - arg2[2]; - var_f14 = sqrtf((xdist * xdist) + (ydist * ydist) + (zdist * zdist)) / 3; + var_f14 = sqrtf((xdist * xdist) + (ydist * ydist) + (zdist * zdist)) / 3; if (var_f14 >= 1.0) { var_f14 = 1.0f; } - if ((var_f14 <= 0.6) && - (((player->unk_094 / 18.0f) * 216.0f) >= 40.0f) && + if ((var_f14 <= 0.6) && + (((player->unk_094 / 18.0f) * 216.0f) >= 40.0f) && (!(player->type & PLAYER_INVISIBLE_OR_BOMB))) { func_800CAEC4(playerId, 0.6F); } else if (!(player->type & PLAYER_INVISIBLE_OR_BOMB)) { - if ((var_f14 <= 0.6) && - (((player->unk_094 / 18.0f) * 216.0f) < 40.0f) && + if ((var_f14 <= 0.6) && + (((player->unk_094 / 18.0f) * 216.0f) < 40.0f) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) { func_800CAEC4(playerId, 0.3F); } else { @@ -2110,7 +2110,7 @@ void apply_effect(Player *player, s8 arg1, s8 arg2) { apply_boo_effect(player, arg1); } if (((player->effects & 0x20000000) == 0x20000000) && (player->unk_228 >= 0x64)) { - func_80031F48(player, 4.0f); + decelerate_ai_player(player, 4.0f); } if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { func_8008C9EC(player, arg1); @@ -2132,7 +2132,7 @@ void apply_effect(Player *player, s8 arg1, s8 arg2) { } if ((player->effects & 0x800000) == 0x800000) { func_8008D8B4(player, arg1); - func_80031F48(player, 10.0f); + decelerate_ai_player(player, 10.0f); } if (D_800DC510 != 5) { if (player->soundEffects & 0x04000000) { @@ -2166,7 +2166,7 @@ void func_8002D028(Player *player, s8 arg1) { thing0 = 8; - + if (temp > ((s16) (thing0 * 182))) { temp = (thing0 * 182); } @@ -2199,7 +2199,7 @@ void func_8002D028(Player *player, s8 arg1) { } } -void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) +void func_8002D268(Player *player, UNUSED Camera *camera, s8 screenId, s8 playerId) { Vec3f sp184 = {0.0, 0.0, 1.0}; Vec3f sp178 = {0.0, 0.0, 0.0}; @@ -2234,11 +2234,11 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { func_8002A79C(player, playerId); } - func_8002B830(player, playerId, arg2); + func_8002B830(player, playerId, screenId); if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { func_8002BF4C(player, playerId); } - apply_effect(player, playerId, arg2); + apply_effect(player, playerId, screenId); if (((player->effects & 0x20000000) == 0x20000000) && (player->unk_228 >= 0x64)) { sp7C = 2; } @@ -2249,19 +2249,19 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) player->unk_064[0] *= -1.0f; player->unk_064[2] *= -1.0f; } - if ((player->boundingBoxCorners[2].surfaceType == ASPHALT) && (player->boundingBoxCorners[3].surfaceType == ASPHALT)) { - spB4 = (-1 * (player->unk_064[0] + sp16C[0])) + ((-player->unk_110.orientationVector[0] * player->kartGravity) * 0.925); - spB0 = (-player->unk_110.orientationVector[1] * player->kartGravity); - spAC = (-1 * (player->unk_064[2] + sp16C[2])) + ((-player->unk_110.orientationVector[2] * player->kartGravity) * 0.925); + if ((player->tyres[BACK_LEFT].surfaceType == ASPHALT) && (player->tyres[BACK_RIGHT].surfaceType == ASPHALT)) { + spB4 = (-1 * (player->unk_064[0] + sp16C[0])) + ((-player->collision.orientationVector[0] * player->kartGravity) * 0.925); + spB0 = (-player->collision.orientationVector[1] * player->kartGravity); + spAC = (-1 * (player->unk_064[2] + sp16C[2])) + ((-player->collision.orientationVector[2] * player->kartGravity) * 0.925); } else { temp3 = (((player->unk_094 / 18.0f) * 216.0f) / 10.0f); if (temp3 >= 10) { temp3 = 10; } - spB4 = -1 * (player->unk_064[0] + sp16C[0]) + ((-player->unk_110.orientationVector[0] * player->kartGravity) * sp104[temp3]); - spB0 = (-player->unk_110.orientationVector[1] * player->kartGravity); - spAC = -1 * (player->unk_064[2] + sp16C[2]) + ((-player->unk_110.orientationVector[2] * player->kartGravity) * sp104[temp3]); + spB4 = -1 * (player->unk_064[0] + sp16C[0]) + ((-player->collision.orientationVector[0] * player->kartGravity) * sp104[temp3]); + spB0 = (-player->collision.orientationVector[1] * player->kartGravity); + spAC = -1 * (player->unk_064[2] + sp16C[2]) + ((-player->collision.orientationVector[2] * player->kartGravity) * sp104[temp3]); } if (((player->effects & 8) != 8) && ((player->effects & 0x20) == 0x20)) { spB4 = 0 * (player->unk_064[0] + sp16C[0]); @@ -2288,7 +2288,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) mtxf_translate_vec3f_mat3(sp178, player->orientationMatrix); spB4 += sp178[0]; spAC += sp178[2]; - func_8002C7E4(player, playerId, arg2); + func_8002C7E4(player, playerId, screenId); sp184[2] = func_80030150(player, playerId); mtxf_translate_vec3f_mat3(sp184, player->orientationMatrix); sp98[0] = player->velocity[0]; @@ -2324,7 +2324,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) posX = player->pos[0]; posY = player->pos[1]; posZ = player->pos[2]; - + player->copy_rotation_x = player->pos[0]; player->copy_rotation_z = player->pos[2]; player->copy_rotation_y = player->pos[1]; @@ -2340,7 +2340,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) spF8 += player->kartHopVelocity; spF8 -= 0.02; } - func_802AD950(&player->unk_110, player->boundingBoxSize, spFC, spF8, spF4, player->copy_rotation_x, player->copy_rotation_y, player->copy_rotation_z); + actor_terrain_collision(&player->collision, player->boundingBoxSize, spFC, spF8, spF4, player->copy_rotation_x, player->copy_rotation_y, player->copy_rotation_z); player->unk_058 = 0.0f; player->unk_060 = 0.0f; player->unk_05C = 1.0f; @@ -2351,7 +2351,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) } player->effects |= 8; player->unk_0C2 += 1; - temp_var = player->unk_110.unk3C[2]; + temp_var = player->collision.surfaceDistance[2]; if (temp_var <= 0.0f) { player->effects = player->effects & (~2); player->effects = player->effects & (~8); @@ -2362,10 +2362,10 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) player->unk_DB4.unkC = 3.0f; player->unk_DB4.unk18 = 0; player->unk_0B6 |= 0x100; - if ((((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) - && ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT)) - && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) - + if ((((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) + && ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT)) + && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) + func_800C9060(playerId, 0x1900A60AU); else if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { @@ -2379,7 +2379,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) if (((player->unk_0C2 < 0x23) && (player->unk_0C2 >= 0x1C)) && (((player->unk_094 / 18.0f) * 216.0f) >= 20.0f)) { player->unk_DB4.unkC = 2.8f; player->unk_DB4.unk18 = 0; - if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) + if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 35.0f); } @@ -2402,23 +2402,23 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) player->unk_0C2 = 0; player->kartHopVelocity = player->unk_0C2; } - temp_var = player->unk_110.unk3C[2]; + temp_var = player->collision.surfaceDistance[2]; if (temp_var <= 0.0f) { func_8003F46C(player, sp8C, sp98, sp178, &temp_var, &spFC, &spF8, &spF4); } - temp_var = player->unk_110.unk3C[0]; + temp_var = player->collision.surfaceDistance[0]; if (temp_var < 0.0f) { func_8003F734(player, sp8C, sp98, &temp_var, &spFC, &spF8, &spF4); func_8002C954(player, playerId, sp98); } - temp_var = player->unk_110.unk3C[1]; + temp_var = player->collision.surfaceDistance[1]; if (temp_var < 0.0f) { func_8003FBAC(player, sp8C, sp98, &temp_var, &spFC, &spF8, &spF4); func_8002C954(player, playerId, sp98); } - temp_var = player->unk_110.unk3C[0]; + temp_var = player->collision.surfaceDistance[0]; if (temp_var >= 0.0f) { - temp_var = player->unk_110.unk3C[1]; + temp_var = player->collision.surfaceDistance[1]; if (temp_var >= 0.0f) { player->unk_046 &= 0xFFDF; if (player->unk_256 != 0) { @@ -2430,14 +2430,14 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) } } } - if (((!(player->effects & 8)) && (func_802ABDB8(player->unk_110.unk3A) != 0)) && ((player->effects & 0x10000) != 0x10000)) { + if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) != 0)) && ((player->effects & 0x10000) != 0x10000)) { if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) { func_8008F494(player, playerId); } - } else if (((!(player->effects & 8)) && (func_802ABDB8(player->unk_110.unk3A) == 0)) && (player->effects & 0x10000)) { + } else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) && (player->effects & 0x10000)) { func_8008F5A4(player, playerId); } - player->unk_074 = func_802ABE30(spFC, spF8, spF4, player->unk_110.unk3A); + player->unk_074 = calculate_surface_height(spFC, spF8, spF4, player->collision.meshIndexZX); if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && (((gActiveScreenMode == SCREEN_MODE_1P) || (gActiveScreenMode == SCREEN_MODE_2P_SPLITSCREEN_VERTICAL)) || (gActiveScreenMode == SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL))) { func_80029B4C(player, spFC, spF8, spF4); } else { @@ -2449,7 +2449,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) player->unk_22C = player->unk_094; player->unk_094 = sqrtf(temp2); - if ((player->unk_08C <= 0.0f) + if ((player->unk_08C <= 0.0f) && (player->unk_094 <= 0.08) && (D_8018CE10[playerId].unk_04[0] == 0.0f) && (D_8018CE10[playerId].unk_04[2] == 0.0f)) { @@ -2461,7 +2461,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) } player->pos[1] = spF8; if ((player->type & PLAYER_HUMAN) && (!(player->type & PLAYER_KART_AI))) { - func_8002BB9C(player, &spFC, &spF4, arg2, playerId, sp98); + func_8002BB9C(player, &spFC, &spF4, screenId, playerId, sp98); } player->unk_064[0] = sp178[0]; player->unk_064[2] = sp178[2]; @@ -2489,7 +2489,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) player->unk_094 = 1; } } - if (player->unk_110.unk3C[2] >= 500.0f) { + if (player->collision.surfaceDistance[2] >= 500.0f) { player->unk_078 = (s16) (((s16) player->unk_078) / 2); } func_8002C4F8(player, playerId); @@ -2502,14 +2502,14 @@ void func_8002E4C4(Player *player) { player->kartHopJerk = 0.0f; player->kartHopAcceleration = 0.0f; player->kartHopVelocity = 0.0f; - player->pos[1] = func_802AE1C0(player->pos[0], D_80164510[player_index] + 10.0f, player->pos[2]) + player->boundingBoxSize; + player->pos[1] = spawn_actor_on_surface(player->pos[0], D_80164510[player_index] + 10.0f, player->pos[2]) + player->boundingBoxSize; if (((player->pos[1] - D_80164510[player_index]) > 1200.0f) || ((player->pos[1] - D_80164510[player_index]) < -1200.0f)) { player->pos[1] = player->copy_rotation_y; } player->velocity[1] = 0.0f; } -void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) { +void func_8002E594(Player *player, UNUSED Camera *camera, s8 screenId, s8 playerId) { Vec3f spEC = {0.0f, 0.0f, 1.0f}; Vec3f spE0 = {0.0f, 0.0f, 0.0f}; Vec3f spD4 = {0.0f, 0.0f, 0.0f}; @@ -2531,7 +2531,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) Vec3f sp54; Vec3f sp48; s16 sp46; - func_8002B830(player, playerId, arg2); + func_8002B830(player, playerId, screenId); if ((((((((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) || ((player->effects & 0x4000) == 0x4000)) @@ -2543,21 +2543,21 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) } else { sp46 = 0; } - apply_effect(player, playerId, arg2); + apply_effect(player, playerId, screenId); func_8002AB70(player); func_8002FCA8(player, playerId); if ((((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) || ((player->effects & 0x20000) == 0x20000)) { - sp80 = -1 * (player->unk_064[0]) + (((-player->unk_110.orientationVector[0]) * player->kartGravity) * 0.1); - sp7C = (-player->unk_110.orientationVector[1]) * player->kartGravity; - sp78 = -1 * (player->unk_064[2]) + (((-player->unk_110.orientationVector[2]) * player->kartGravity) * 0.1); + sp80 = -1 * (player->unk_064[0]) + (((-player->collision.orientationVector[0]) * player->kartGravity) * 0.1); + sp7C = (-player->collision.orientationVector[1]) * player->kartGravity; + sp78 = -1 * (player->unk_064[2]) + (((-player->collision.orientationVector[2]) * player->kartGravity) * 0.1); } else { sp80 = -1 * player->unk_064[0]; sp7C = -1 * player->kartGravity; sp78 = -1 * player->unk_064[2]; } - func_8002C7E4(player, playerId, arg2); + func_8002C7E4(player, playerId, screenId); if (sp46 == 1) { calculate_orientation_matrix(player->orientationMatrix, player->unk_058, player->unk_05C, player->unk_060, (s16) ((s32) player->rotation[1])); calculate_orientation_matrix(player->unk_150, player->unk_058, player->unk_05C, player->unk_060, (s16) ((s32) player->unk_0AE)); @@ -2583,7 +2583,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) } else { sp54[0] += ((((f64) (spEC[0] + sp80 + spD4[0]) - (sp54[0] * (0.2 * (f64) player->kartFriction))) / 6000) * 0.08); sp54[2] += ((((f64) (spEC[2] + sp78 + spD4[2]) - (sp54[2] * (0.2 * (f64) player->kartFriction))) / 6000) * 0.08); - + } sp54[1] += ((( ((spEC[1] + sp7C) + spD4[1])) - (sp54[1] * (0.12 * player->kartFriction))) / 6000) / player->unk_DAC; @@ -2595,23 +2595,23 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) posX = player->pos[0]; posY = player->pos[1]; posZ = player->pos[2]; - + player->copy_rotation_x = player->pos[0]; player->copy_rotation_y = player->pos[1]; player->copy_rotation_z = player->pos[2]; - + spD0 = posX + player->velocity[0] + D_8018CE10[playerId].unk_04[0]; spCC = posY + player->velocity[1]; spC8 = posZ + player->velocity[2] + D_8018CE10[playerId].unk_04[2]; func_8002AAC0(player); spCC += player->kartHopVelocity; - func_802AD950(&player->unk_110, player->boundingBoxSize, spD0, spCC, spC8, player->copy_rotation_x, player->copy_rotation_y, player->copy_rotation_z); + actor_terrain_collision(&player->collision, player->boundingBoxSize, spD0, spCC, spC8, player->copy_rotation_x, player->copy_rotation_y, player->copy_rotation_z); player->effects |= 8; player->unk_0C2 += 1; player->unk_058 = 0.0f; player->unk_060 = 0.0f; player->unk_05C = 1.0f; - sp74 = player->unk_110.unk3C[2]; + sp74 = player->collision.surfaceDistance[2]; if (sp74 <= 0.0f) { player->effects &= ~2; player->effects &= ~8; @@ -2674,25 +2674,25 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) } player->kartHopVelocity = (f32) player->unk_0C2; } - sp74 = player->unk_110.unk3C[2]; + sp74 = player->collision.surfaceDistance[2]; if (sp74 <= 0.0f) { func_8003F46C(player, sp48, sp54, spE0, &sp74, &spD0, &spCC, &spC8); } - sp74 = player->unk_110.unk3C[0]; + sp74 = player->collision.surfaceDistance[0]; if (sp74 < 0.0f) { func_8003F734(player, sp48, sp54, &sp74, &spD0, &spCC, &spC8); func_8002C954(player, playerId, sp54); - func_80031F48(player, 6.0f); + decelerate_ai_player(player, 6.0f); } - sp74 = player->unk_110.unk3C[1]; + sp74 = player->collision.surfaceDistance[1]; if (sp74 < 0.0f) { func_8003FBAC(player, sp48, sp54, &sp74, &spD0, &spCC, &spC8); func_8002C954(player, playerId, sp54); - func_80031F48(player, 6.0f); + decelerate_ai_player(player, 6.0f); } - sp74 = player->unk_110.unk3C[0]; + sp74 = player->collision.surfaceDistance[0]; if (sp74 >= 0.0f) { - sp74 = player->unk_110.unk3C[1]; + sp74 = player->collision.surfaceDistance[1]; if (sp74 >= 0.0f) { player->unk_046 &= 0xFFDF; if (player->unk_256 != 0) { @@ -2704,14 +2704,14 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) } } } - if (((func_802ABDB8(player->unk_110.unk3A) != 0) && ((player->effects & 0x10000) != 0x10000)) && (((player->unk_094 / 18.0f) * 216.0f) >= 20.0f)) { + if (((func_802ABDB8(player->collision.meshIndexZX) != 0) && ((player->effects & 0x10000) != 0x10000)) && (((player->unk_094 / 18.0f) * 216.0f) >= 20.0f)) { if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) { func_8008F494(player, playerId); } - } else if (((!(player->effects & 8)) && (func_802ABDB8(player->unk_110.unk3A) == 0)) && (player->effects & 0x10000)) { + } else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) && (player->effects & 0x10000)) { func_8008F5A4(player, playerId); } - player->unk_074 = func_802ABE30(spD0, spCC, spC8, player->unk_110.unk3A); + player->unk_074 = calculate_surface_height(spD0, spCC, spC8, player->collision.meshIndexZX); if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && (((gActiveScreenMode == SCREEN_MODE_1P) || (gActiveScreenMode == SCREEN_MODE_2P_SPLITSCREEN_VERTICAL)) || (gActiveScreenMode == SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL))) { func_80029B4C(player, spD0, spCC, spC8); } else { @@ -2827,7 +2827,7 @@ void control_kart_ai_movement(Player *player, UNUSED Camera *camera, s8 arg2, s8 } } -void func_8002F730(Player *player, UNUSED Camera *camera, UNUSED s8 arg2, s8 arg3) { +void func_8002F730(Player *player, UNUSED Camera *camera, UNUSED s8 screenId, s8 playerId) { Vec3f spF4 = {0.0f, 0.0f, 1.0f}; Vec3f spE8 = {0.0f, 0.0f, 0.0f}; UNUSED Vec3f spDC = {0.0f, 0.0f, 0.0f}; @@ -2853,7 +2853,7 @@ void func_8002F730(Player *player, UNUSED Camera *camera, UNUSED s8 arg2, s8 arg func_80037BB4(player, spD0); sp84 = player->unk_064[0] * 0; sp7C = player->unk_064[2] * 0; - spF4[2] = func_80030150(player, arg3); + spF4[2] = func_80030150(player, playerId); mtxf_translate_vec3f_mat3(spF4, player->orientationMatrix); @@ -2881,24 +2881,24 @@ void func_8002F730(Player *player, UNUSED Camera *camera, UNUSED s8 arg2, s8 arg func_8002AAC0(player); spC8 += player->kartHopVelocity; - func_802AD950(&player->unk_110, player->boundingBoxSize, spCC, spC8, spC4, player->copy_rotation_x, player->copy_rotation_y, player->copy_rotation_z); + actor_terrain_collision(&player->collision, player->boundingBoxSize, spCC, spC8, spC4, player->copy_rotation_x, player->copy_rotation_y, player->copy_rotation_z); player->unk_058 = 0.0f; player->unk_05C = 1.0f; player->unk_060 = 0.0f; calculate_orientation_matrix(player->orientationMatrix, 0.0f, 1.0f, 0.0f, (s16) (s32) player->rotation[1]); player->effects &= ~8; - sp78 = player->unk_110.unk3C[2]; + sp78 = player->collision.surfaceDistance[2]; if (sp78 <= 0.0f) { if(1) {}; func_8003F46C(player, sp5C, sp68, spE8, &sp78, &spCC, &spC8, &spC4); } - player->unk_074 = func_802ABE30(spCC, spC8, spC4, player->unk_110.unk3A); + player->unk_074 = calculate_surface_height(spCC, spC8, spC4, player->collision.meshIndexZX); if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((gActiveScreenMode == SCREEN_MODE_1P) || (gActiveScreenMode == SCREEN_MODE_2P_SPLITSCREEN_VERTICAL) || (gActiveScreenMode == SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL))) { func_80029B4C(player, spCC, spC8, spC4); } else { func_8002A194(player, spCC, spC8, spC4); } - func_8002AE38(player, arg3, spC0, spB8, spCC, spC4); + func_8002AE38(player, playerId, spC0, spB8, spCC, spC4); sqrt = (sp68[0] * sp68[0]) + (sp68[1] * sp68[1]) + (sp68[2] * sp68[2]); player->unk_22C = player->unk_094; player->unk_094 = sqrtf(sqrt); @@ -2917,10 +2917,10 @@ void func_8002F730(Player *player, UNUSED Camera *camera, UNUSED s8 arg2, s8 arg player->velocity[0] = sp68[0]; player->velocity[1] = sp68[1]; player->velocity[2] = sp68[2]; - - D_80165070[arg3][0] = sp68[0]; - D_80165070[arg3][1] = sp68[1]; - D_80165070[arg3][2] = sp68[2]; + + D_80165070[playerId][0] = sp68[0]; + D_80165070[playerId][1] = sp68[1]; + D_80165070[playerId][2] = sp68[2]; if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { if (gKartTopSpeedTable[player->characterId] < player->unk_094) { @@ -2941,17 +2941,17 @@ void func_8002FCA8(Player *player, s8 arg1) { var_f0 = 0.0f; if ((player->effects & STAR_EFFECT) != STAR_EFFECT) { - if ((s32) player->boundingBoxCorners[3].surfaceType < 0xF) { - var_f0 += D_800E2A90[player->characterId][player->boundingBoxCorners[3].surfaceType]; + if ((s32) player->tyres[BACK_RIGHT].surfaceType < 0xF) { + var_f0 += D_800E2A90[player->characterId][player->tyres[BACK_RIGHT].surfaceType]; } - if ((s32) player->boundingBoxCorners[2].surfaceType < 0xF) { - var_f0 += D_800E2A90[player->characterId][player->boundingBoxCorners[2].surfaceType]; + if ((s32) player->tyres[BACK_LEFT].surfaceType < 0xF) { + var_f0 += D_800E2A90[player->characterId][player->tyres[BACK_LEFT].surfaceType]; } - if ((s32) player->boundingBoxCorners[1].surfaceType < 0xF) { - var_f0 += D_800E2AB0[player->characterId][player->boundingBoxCorners[1].surfaceType]; + if ((s32) player->tyres[FRONT_RIGHT].surfaceType < 0xF) { + var_f0 += D_800E2AB0[player->characterId][player->tyres[FRONT_RIGHT].surfaceType]; } - if ((s32) player->boundingBoxCorners[0].surfaceType < 0xF) { - var_f0 += D_800E2AB0[player->characterId][player->boundingBoxCorners[0].surfaceType]; + if ((s32) player->tyres[FRONT_LEFT].surfaceType < 0xF) { + var_f0 += D_800E2AB0[player->characterId][player->tyres[FRONT_LEFT].surfaceType]; } } if (D_801652C0[arg1] & 4) { @@ -2987,7 +2987,7 @@ void func_8002FE84(Player *player, f32 arg1) { player->unk_098 = ((player->currentSpeed * player->currentSpeed) / 25.0f) * 1.1; return; } - + // Huh? if (((player->effects & 0xFFFFFFFF) & 8) == 8) { player->unk_098 = ((player->currentSpeed * player->currentSpeed) / 25.0f) * 1.1; @@ -3003,12 +3003,12 @@ void func_8002FE84(Player *player, f32 arg1) { var_f0 += (temp_lo * 0.025) / 1.2; } player->unk_098 = arg1 * (1.0f - var_f0); - if (player->boundingBoxCorners[3].surfaceType == GRASS) { - var_f0 += D_800E2E90[player->characterId][player->boundingBoxCorners[3].surfaceType] * 0.7; + if (player->tyres[BACK_RIGHT].surfaceType == GRASS) { + var_f0 += D_800E2E90[player->characterId][player->tyres[BACK_RIGHT].surfaceType] * 0.7; } - if (player->boundingBoxCorners[2].surfaceType == GRASS) { + if (player->tyres[BACK_LEFT].surfaceType == GRASS) { // The unecessary "* 1.0" here is to force the compiler to save this 0.7 as a separate RO value from the 0.7 just above this comment - var_f0 += D_800E2E90[player->characterId][player->boundingBoxCorners[2].surfaceType] * (0.7 * 1.0); + var_f0 += D_800E2E90[player->characterId][player->tyres[BACK_LEFT].surfaceType] * (0.7 * 1.0); } test = player->unk_0C0 / 182; if (test < 0) { @@ -3033,21 +3033,21 @@ f32 func_80030150(Player *player, s8 arg1) { var_f2 = (player->unk_094 / 18.0f) * 216.0f; if (var_f2 >= 8.0f) { if ((player->effects & STAR_EFFECT) != STAR_EFFECT) { - if ((s32) player->boundingBoxCorners[3].surfaceType >= 0xF) { + if ((s32) player->tyres[BACK_RIGHT].surfaceType >= 0xF) { // ??????? if(1) {} } else { - var_f0 += D_800E2E90[player->characterId][player->boundingBoxCorners[3].surfaceType]; + var_f0 += D_800E2E90[player->characterId][player->tyres[BACK_RIGHT].surfaceType]; } - if ((s32) player->boundingBoxCorners[2].surfaceType < 0xF) - var_f0 += D_800E2E90[player->characterId][player->boundingBoxCorners[2].surfaceType]; + if ((s32) player->tyres[BACK_LEFT].surfaceType < 0xF) + var_f0 += D_800E2E90[player->characterId][player->tyres[BACK_LEFT].surfaceType]; - if ((s32) player->boundingBoxCorners[1].surfaceType < 0xF) - var_f0 += D_800E2EB0[player->characterId][player->boundingBoxCorners[1].surfaceType]; + if ((s32) player->tyres[FRONT_RIGHT].surfaceType < 0xF) + var_f0 += D_800E2EB0[player->characterId][player->tyres[FRONT_RIGHT].surfaceType]; - if ((s32) player->boundingBoxCorners[0].surfaceType < 0xF) - var_f0 += D_800E2E90[player->characterId][player->boundingBoxCorners[0].surfaceType]; + if ((s32) player->tyres[FRONT_LEFT].surfaceType < 0xF) + var_f0 += D_800E2E90[player->characterId][player->tyres[FRONT_LEFT].surfaceType]; } if (((player->effects & 8) != 8) && ((player->unk_0CA & 2) != 2)) { temp_lo = player->slopeAccel / 182; @@ -3095,7 +3095,7 @@ f32 func_80030150(Player *player, s8 arg1) { if ((player->unk_0DE & 2) == 2) { var_f0 += 0.15; } - if (((D_801652A0[arg1] - player->boundingBoxCorners[2].cornerGroundY) >= 3.5) || ((D_801652A0[arg1] - player->boundingBoxCorners[3].cornerGroundY) >= 3.5)) { + if (((D_801652A0[arg1] - player->tyres[BACK_LEFT].baseHeight) >= 3.5) || ((D_801652A0[arg1] - player->tyres[BACK_RIGHT].baseHeight) >= 3.5)) { var_f0 += 0.05; } } @@ -3229,15 +3229,15 @@ void detect_triple_a_combo_a_released(Player *player) { if (player == gPlayerEight) { playerIndex = 7; } - if (gIsPlayerTripleAButtonCombo[playerIndex] == FALSE) { - if (gPlayerIsThrottleActive[playerIndex] == TRUE) { + if (gIsPlayerTripleAButtonCombo[playerIndex] == false) { + if (gPlayerIsThrottleActive[playerIndex] == true) { if ((gFrameSinceLastACombo[playerIndex] < 2) || (gFrameSinceLastACombo[playerIndex] >= 9)) { gCountASwitch[playerIndex] = 0; } gFrameSinceLastACombo[playerIndex] = 0; D_80165400[playerIndex] = 0; } - gPlayerIsThrottleActive[playerIndex] = FALSE; + gPlayerIsThrottleActive[playerIndex] = false; gFrameSinceLastACombo[playerIndex]++; if (gFrameSinceLastACombo[playerIndex] >= 9) { gFrameSinceLastACombo[playerIndex] = 9; @@ -3249,7 +3249,7 @@ void detect_triple_a_combo_a_released(Player *player) { D_80165400[playerIndex] = 1; } if (gCountASwitch[playerIndex] == 5) { - gIsPlayerTripleAButtonCombo[playerIndex] = TRUE; + gIsPlayerTripleAButtonCombo[playerIndex] = true; gTimerBoostTripleACombo[playerIndex] = 120; gCountASwitch[playerIndex] = 0; gFrameSinceLastACombo[playerIndex] = 0; @@ -3257,7 +3257,7 @@ void detect_triple_a_combo_a_released(Player *player) { } else { gTimerBoostTripleACombo[playerIndex]--; if (gTimerBoostTripleACombo[playerIndex] <= 0) { - gIsPlayerTripleAButtonCombo[playerIndex] = FALSE; + gIsPlayerTripleAButtonCombo[playerIndex] = false; } } } @@ -3289,15 +3289,15 @@ void detect_triple_a_combo_a_pressed(Player *player) { if (player == gPlayerEight) { playerIndex = 7; } - if (gIsPlayerTripleAButtonCombo[playerIndex] == FALSE) { - if (gPlayerIsThrottleActive[playerIndex] == FALSE) { + if (gIsPlayerTripleAButtonCombo[playerIndex] == false) { + if (gPlayerIsThrottleActive[playerIndex] == false) { if ((gFrameSinceLastACombo[playerIndex] < 2) || (gFrameSinceLastACombo[playerIndex] >= 9)) { gCountASwitch[playerIndex] = 0; } gFrameSinceLastACombo[playerIndex] = 0; D_80165400[playerIndex] = 0; } - gPlayerIsThrottleActive[playerIndex] = TRUE; + gPlayerIsThrottleActive[playerIndex] = true; gFrameSinceLastACombo[playerIndex]++; if (gFrameSinceLastACombo[playerIndex] >= 9) { gFrameSinceLastACombo[playerIndex] = 9; @@ -3309,7 +3309,7 @@ void detect_triple_a_combo_a_pressed(Player *player) { D_80165400[playerIndex] = 1; } if (gCountASwitch[playerIndex] == 5) { - gIsPlayerTripleAButtonCombo[playerIndex] = TRUE; + gIsPlayerTripleAButtonCombo[playerIndex] = true; gTimerBoostTripleACombo[playerIndex] = 120; gCountASwitch[playerIndex] = 0; gFrameSinceLastACombo[playerIndex] = 0; @@ -3317,7 +3317,7 @@ void detect_triple_a_combo_a_pressed(Player *player) { } else { gTimerBoostTripleACombo[playerIndex]--; if (gTimerBoostTripleACombo[playerIndex] <= 0) { - gIsPlayerTripleAButtonCombo[playerIndex] = FALSE; + gIsPlayerTripleAButtonCombo[playerIndex] = false; } } } @@ -3326,7 +3326,7 @@ void player_speed(Player *player) { s32 player_index; player_index = get_player_index_for_player(player); - if (gIsPlayerTripleAButtonCombo[player_index] == FALSE) { + if (gIsPlayerTripleAButtonCombo[player_index] == false) { if ((0.0 <= player->currentSpeed) && (player->currentSpeed < (player->topSpeed * 0.1))) { player->currentSpeed += gKartAccelerationTables[player->characterId][0] + (0.05 * (player->slopeAccel / 182)); } @@ -3405,11 +3405,11 @@ void player_speed(Player *player) { } } -void func_80031F48(Player *player, f32 arg1) { +void decelerate_ai_player(Player *player, f32 speed) { s32 player_index; player_index = get_player_index_for_player(player); - player->currentSpeed -= arg1; + player->currentSpeed -= speed; if (player->currentSpeed <= 0.0f) { player->currentSpeed = 0.0f; } @@ -3457,15 +3457,15 @@ void detect_triple_b_combo_b_released(Player *player) { playerIndex = 7; } - if (gIsPlayerTripleBButtonCombo[playerIndex] == FALSE) { - if (gPlayerIsBrakeActive[playerIndex] == TRUE) { + if (gIsPlayerTripleBButtonCombo[playerIndex] == false) { + if (gPlayerIsBrakeActive[playerIndex] == true) { if ((gFrameSinceLastBCombo[playerIndex] < 2) || (gFrameSinceLastBCombo[playerIndex] >= 9)) { gCountBChangement[playerIndex] = 0; } gFrameSinceLastBCombo[playerIndex] = 0; D_801654C0[playerIndex] = 0; } - gPlayerIsBrakeActive[playerIndex] = FALSE; + gPlayerIsBrakeActive[playerIndex] = false; gFrameSinceLastBCombo[playerIndex]++; if (gFrameSinceLastBCombo[playerIndex] >= 9) { gFrameSinceLastBCombo[playerIndex] = 9; @@ -3477,7 +3477,7 @@ void detect_triple_b_combo_b_released(Player *player) { D_801654C0[playerIndex] = 1; } if (gCountBChangement[playerIndex] == 5) { - gIsPlayerTripleBButtonCombo[playerIndex] = TRUE; + gIsPlayerTripleBButtonCombo[playerIndex] = true; gTimerBoostTripleBCombo[playerIndex] = 120; gCountBChangement[playerIndex] = 0; gFrameSinceLastBCombo[playerIndex] = 0; @@ -3485,7 +3485,7 @@ void detect_triple_b_combo_b_released(Player *player) { } else { gTimerBoostTripleBCombo[playerIndex]--; if (gTimerBoostTripleBCombo[playerIndex] <= 0) { - gIsPlayerTripleBButtonCombo[playerIndex] = FALSE; + gIsPlayerTripleBButtonCombo[playerIndex] = false; } } } @@ -3518,15 +3518,15 @@ void detect_triple_b_combo_b_pressed(Player *player) { playerIndex = 7; } - if (gIsPlayerTripleBButtonCombo[playerIndex] == FALSE) { - if (gPlayerIsBrakeActive[playerIndex] == FALSE) { + if (gIsPlayerTripleBButtonCombo[playerIndex] == false) { + if (gPlayerIsBrakeActive[playerIndex] == false) { if ((gFrameSinceLastBCombo[playerIndex] < 2) || (gFrameSinceLastBCombo[playerIndex] >= 9)) { gCountBChangement[playerIndex] = 0; } gFrameSinceLastBCombo[playerIndex] = 0; D_801654C0[playerIndex] = 0; } - gPlayerIsBrakeActive[playerIndex] = TRUE; + gPlayerIsBrakeActive[playerIndex] = true; gFrameSinceLastBCombo[playerIndex]++; if (gFrameSinceLastBCombo[playerIndex] >= 9) { gFrameSinceLastBCombo[playerIndex] = 9; @@ -3538,7 +3538,7 @@ void detect_triple_b_combo_b_pressed(Player *player) { D_801654C0[playerIndex] = 1; } if (gCountBChangement[playerIndex] == 5) { - gIsPlayerTripleBButtonCombo[playerIndex] = TRUE; + gIsPlayerTripleBButtonCombo[playerIndex] = true; gTimerBoostTripleBCombo[playerIndex] = 120; gCountBChangement[playerIndex] = 0; gFrameSinceLastBCombo[playerIndex] = 0; @@ -3546,7 +3546,7 @@ void detect_triple_b_combo_b_pressed(Player *player) { } else { gTimerBoostTripleBCombo[playerIndex]--; if (gTimerBoostTripleBCombo[playerIndex] <= 0) { - gIsPlayerTripleBButtonCombo[playerIndex] = FALSE; + gIsPlayerTripleBButtonCombo[playerIndex] = false; } } } @@ -3584,14 +3584,14 @@ void func_800323E4(Player *player) { player->effects |= 1; // This check will never be true, why is it here? if ((player->effects & 0x20) == 0x20) { - func_80031F48(player, 1.0f); + decelerate_ai_player(player, 1.0f); player->unk_20C = var_f2; } else { - if ((s32) player->boundingBoxCorners[3].surfaceType < 0xF) { - var_f2 += D_800E3210[player->characterId][player->boundingBoxCorners[3].surfaceType]; + if ((s32) player->tyres[BACK_RIGHT].surfaceType < 0xF) { + var_f2 += D_800E3210[player->characterId][player->tyres[BACK_RIGHT].surfaceType]; } - if ((s32) player->boundingBoxCorners[2].surfaceType < 0xF) { - var_f2 += D_800E3210[player->characterId][player->boundingBoxCorners[2].surfaceType]; + if ((s32) player->tyres[BACK_LEFT].surfaceType < 0xF) { + var_f2 += D_800E3210[player->characterId][player->tyres[BACK_LEFT].surfaceType]; } test = player->unk_22C - player->unk_094; if (test <= 0.0f) { @@ -3602,20 +3602,20 @@ void func_800323E4(Player *player) { player->unk_20C = 2.0f; } } - if (gIsPlayerTripleBButtonCombo[var_v1] == TRUE) { + if (gIsPlayerTripleBButtonCombo[var_v1] == true) { if (player->unk_20C >= 2.0f) { - func_80031F48(player, (1.0f - var_f2) * 5.0f); + decelerate_ai_player(player, (1.0f - var_f2) * 5.0f); } else { - func_80031F48(player, (1.0f - var_f2) * 3.0f); + decelerate_ai_player(player, (1.0f - var_f2) * 3.0f); } } else { if (((player->unk_094 / 18.0f) * 216.0f) <= 20.0f) { - func_80031F48(player, (1.0f - var_f2) * 4.0f); + decelerate_ai_player(player, (1.0f - var_f2) * 4.0f); } if (player->unk_20C >= 2.0f) { - func_80031F48(player, (1.0f - var_f2) * 2.5); + decelerate_ai_player(player, (1.0f - var_f2) * 2.5); } else { - func_80031F48(player, (1.0f - var_f2) * 1.2); + decelerate_ai_player(player, (1.0f - var_f2) * 1.2); } } } @@ -3807,9 +3807,9 @@ void func_80033850(Player *arg0, f32 arg1) { void func_80033884(Player *player, s32 *arg1, s32 *arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6) { s32 temp_v1; - if ((*arg1 >= arg4) || (-arg4 >= *arg1)) { + if ((*arg1 >= arg4) || (-arg4 >= *arg1)) { temp_v1 = player->unk_200; - player->unk_200 -= 0x800; + player->unk_200 -= 0x800; if (player->unk_200 >= 0xF0000000) { player->unk_200 = temp_v1; } @@ -3827,7 +3827,7 @@ void func_80033884(Player *player, s32 *arg1, s32 *arg2, s32 arg3, s32 arg4, s32 UNUSED void func_80033940(Player *player, s32 *arg1, s32 arg2, s32 arg3, f32 arg4) { u32 temp_v1; - + temp_v1 = player->unk_200; player->unk_200 -= 0x800; if (!(player->unk_200 < 0xF0000000)) { @@ -3846,7 +3846,7 @@ UNUSED void func_80033940(Player *player, s32 *arg1, s32 arg2, s32 arg3, f32 arg void func_800339C4(Player *player, s32 *arg1, s32 arg2, s32 arg3, f32 arg4) { s32 temp_v0; - + temp_v0 = player->unk_200; player->unk_200 -= 0x800; if (player->unk_200 >= 0xF0000000) { @@ -3855,18 +3855,18 @@ void func_800339C4(Player *player, s32 *arg1, s32 arg2, s32 arg3, f32 arg4) { if (arg3 >= (s32)player->unk_200) { player->unk_200 = arg3; } - + *arg1 = (arg2 < *arg1) ? *arg1 - player->unk_200 : *arg1 + player->unk_200; - + func_80033850(player, arg4); } void func_80033A40(Player *player, s32 *arg1, s32 *arg2, s32 arg3, s32 arg4, s32 arg5, f32 arg6) { s32 temp_v1; - if ((*arg1 >= arg4) || (-arg4 >= *arg1)) { + if ((*arg1 >= arg4) || (-arg4 >= *arg1)) { temp_v1 = player->unk_200; - player->unk_200 -= 0x800; + player->unk_200 -= 0x800; if (player->unk_200 >= 0xF0000000) { player->unk_200 = temp_v1; } @@ -3938,13 +3938,13 @@ void func_80033AE0(Player *player, struct Controller *controller, s8 arg2) { player->soundEffects |= 0x80; } } - if (((s32) player->boundingBoxCorners[3].surfaceType) < 0xF) + if (((s32) player->tyres[BACK_RIGHT].surfaceType) < 0xF) { - var_f2 += D_800E3610[player->characterId][player->boundingBoxCorners[3].surfaceType]; + var_f2 += D_800E3610[player->characterId][player->tyres[BACK_RIGHT].surfaceType]; } - if (((s32) player->boundingBoxCorners[2].surfaceType) < 0xF) + if (((s32) player->tyres[BACK_LEFT].surfaceType) < 0xF) { - var_f2 += D_800E3610[player->characterId][player->boundingBoxCorners[2].surfaceType]; + var_f2 += D_800E3610[player->characterId][player->tyres[BACK_LEFT].surfaceType]; } if ((player->effects & 0x20) == 0x20) { @@ -4014,7 +4014,7 @@ void func_80033AE0(Player *player, struct Controller *controller, s8 arg2) { sp2C8 *= 1.2; sp2CC *= 1.2; } - if ((((f64) (D_801652A0[arg2] - player->boundingBoxCorners[2].cornerGroundY)) >= 3.5) || (((f64) (D_801652A0[arg2] - player->boundingBoxCorners[3].cornerGroundY)) >= 3.5)) + if ((((f64) (D_801652A0[arg2] - player->tyres[BACK_LEFT].baseHeight)) >= 3.5) || (((f64) (D_801652A0[arg2] - player->tyres[BACK_RIGHT].baseHeight)) >= 3.5)) { sp2C8 *= 1.05; sp2CC *= 1.05; @@ -4146,17 +4146,17 @@ void func_80033AE0(Player *player, struct Controller *controller, s8 arg2) { func_8002BD58(player); } player->effects &= 0xDFFFFFFF; - if (((s32) player->boundingBoxCorners[3].surfaceType) > 0xE) + if (((s32) player->tyres[BACK_RIGHT].surfaceType) > 0xE) { var_f12 = var_f12; } else { - var_f12 += D_800E3410[player->characterId][player->boundingBoxCorners[3].surfaceType]; + var_f12 += D_800E3410[player->characterId][player->tyres[BACK_RIGHT].surfaceType]; } - if (((s32) player->boundingBoxCorners[2].surfaceType) < 0xF) + if (((s32) player->tyres[BACK_LEFT].surfaceType) < 0xF) { - var_f12 += D_800E3410[player->characterId][player->boundingBoxCorners[2].surfaceType]; + var_f12 += D_800E3410[player->characterId][player->tyres[BACK_LEFT].surfaceType]; } if (((player->effects & 2) != 2) && ((player->effects & 0x10) != 0x10)) { @@ -4631,17 +4631,17 @@ void func_80037BB4(Player *player, Vec3f arg1) { } void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) { - if (((player->effects & 0x80) != 0x80) && - ((player->effects & 0x40) != 0x40) && - ((player->effects & 0x400) != 0x400) && - ((player->effects & 0x4000) != 0x4000) && - ((player->effects & 0x01000000) != 0x01000000) && - ((player->effects & HIT_BY_ITEM_EFFECT) != HIT_BY_ITEM_EFFECT) && ((player->effects & 0x10000) != 0x10000) && + if (((player->effects & 0x80) != 0x80) && + ((player->effects & 0x40) != 0x40) && + ((player->effects & 0x400) != 0x400) && + ((player->effects & 0x4000) != 0x4000) && + ((player->effects & 0x01000000) != 0x01000000) && + ((player->effects & HIT_BY_ITEM_EFFECT) != HIT_BY_ITEM_EFFECT) && ((player->effects & 0x10000) != 0x10000) && ((player->effects & 0x20000) != 0x20000)) { - if (((player->effects & HIT_EFFECT) != HIT_EFFECT) && - ((player->effects & 8) != 8) && - ((player->effects & 2) != 2) && - ((player->effects & 0x10) != 0x10) && + if (((player->effects & HIT_EFFECT) != HIT_EFFECT) && + ((player->effects & 8) != 8) && + ((player->effects & 2) != 2) && + ((player->effects & 0x10) != 0x10) && (controller->buttonPressed & R_TRIG)) { kart_hop(player); if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { @@ -4650,7 +4650,7 @@ void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) { } if ((player->effects & 8) != 8) { func_80033AE0(player, controller, arg2); - } else if (((player->effects & 2) == 2) && (player->unk_110.unk3C[2] <= 5.0f)) { + } else if (((player->effects & 2) == 2) && (player->collision.surfaceDistance[2] <= 5.0f)) { func_80033AE0(player, controller, arg2); } player->effects &= ~1; @@ -4665,8 +4665,8 @@ void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) { } } } - if (((player->effects & 0x20) == 0x20) && - (((controller->button & B_BUTTON) == 0) || + if (((player->effects & 0x20) == 0x20) && + (((controller->button & B_BUTTON) == 0) || (!(controller->button & A_BUTTON)))) { player->effects &= ~0x20; } @@ -4678,11 +4678,11 @@ void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) { } else { if (gModeSelection == BATTLE) { - func_80031F48(player, 2.0f); + decelerate_ai_player(player, 2.0f); } else { - func_80031F48(player, 1.0f); + decelerate_ai_player(player, 1.0f); } detect_triple_a_combo_a_released(player); } @@ -4695,8 +4695,8 @@ void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) { } } if ((!(player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && (!(player->effects & 4))) { - if (((func_800388B0(controller) < (-0x31)) && - (((player->unk_094 / 18.0f) * 216.0f) <= 5.0f)) && + if (((func_800388B0(controller) < (-0x31)) && + (((player->unk_094 / 18.0f) * 216.0f) <= 5.0f)) && (controller->button & B_BUTTON)) { player->currentSpeed = 140.0f; player->unk_044 |= 1; @@ -4715,12 +4715,12 @@ void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) { if (controller->button & A_BUTTON) { player_speed(player); } else { - func_80031F48(player, 5.0f); + decelerate_ai_player(player, 5.0f); } } - if (((((player->effects & 0x80) == 0x80) || - ((player->effects & 0x40) == 0x40)) || - ((player->effects & 0x01000000) == 0x01000000)) || + if (((((player->effects & 0x80) == 0x80) || + ((player->effects & 0x40) == 0x40)) || + ((player->effects & 0x01000000) == 0x01000000)) || ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT)) { if (controller->button & A_BUTTON) { detect_triple_a_combo_a_pressed(player); @@ -4734,8 +4734,8 @@ void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) { } void func_800381AC(Player *player, struct Controller *controller, s8 arg2) { - if (((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) && - ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && + if (((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) && + ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_KART_AI) != PLAYER_KART_AI)) { if ((player->type & PLAYER_START_SEQUENCE) != PLAYER_START_SEQUENCE) { if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) { @@ -4802,7 +4802,7 @@ void func_800382DC(void) { } return; } - + break; } break; @@ -4964,7 +4964,7 @@ void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) Vec3f sp88; Vec3f sp7C; UNUSED s32 pad[10]; - + player->unk_084 = -10.0f; player->unk_088 = 28.0f; player->topSpeed = 250.0f; @@ -4985,12 +4985,12 @@ void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) spA4 += sp108[0]; sp9C += sp108[2]; sp114[2] = player->unk_08C; - mtxf_translate_vec3f_mat3(sp114, player->orientationMatrix); - + mtxf_translate_vec3f_mat3(sp114, player->orientationMatrix); + sp88[0] = player->velocity[0]; sp88[1] = player->velocity[1]; sp88[2] = player->velocity[2]; - + sp88[0] += ((((((sp114[0] + spA4) + spF0[0])) - (sp88[0] * (0.12 * (player->kartFriction)))) / 6000.0) / 1); sp88[2] += ((((((sp114[2] + sp9C) + spF0[2])) - (sp88[2] * (0.12 * (player->kartFriction)))) / 6000.0) / 1); sp88[1] += ((((((sp114[1] + spA0) + spF0[1])) - (sp88[1] * (0.12 * (player->kartFriction)))) / 6000.0) / 1); @@ -5012,42 +5012,42 @@ void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) func_8002AAC0(player); spE8 += player->kartHopVelocity; spE8 -= 0.02; - func_802AD950(&player->unk_110, player->boundingBoxSize, spEC, spE8, spE4, player->copy_rotation_x, player->copy_rotation_y, player->copy_rotation_z); + actor_terrain_collision(&player->collision, player->boundingBoxSize, spEC, spE8, spE4, player->copy_rotation_x, player->copy_rotation_y, player->copy_rotation_z); player->unk_058 = 0; player->unk_060 = 0; player->unk_05C = 1.0f; calculate_orientation_matrix(player->orientationMatrix, 0, 1.0f, 0, player->rotation[1]); player->effects |= 8; player->unk_0C2 += 1; - sp98 = player->unk_110.unk3C[2]; + sp98 = player->collision.surfaceDistance[2]; if (sp98 <= 0) { player->unk_0C2 = 0; player->effects &= ~2; player->effects &= ~8; player->kartHopVelocity = player->unk_0C2; } - sp98 = player->unk_110.unk3C[2]; + sp98 = player->collision.surfaceDistance[2]; if (sp98 <= 0) { func_8003F46C(player, sp7C, sp88, sp108, &sp98, &spEC, &spE8, &spE4); } - sp98 = player->unk_110.unk3C[0]; + sp98 = player->collision.surfaceDistance[0]; if (sp98 < 0) { func_8003F734(player, sp7C, sp88, &sp98, &spEC, &spE8, &spE4); func_8002C954(player, playerId, sp88); } - sp98 = player->unk_110.unk3C[1]; + sp98 = player->collision.surfaceDistance[1]; if (sp98 < 0) { func_8003FBAC(player, sp7C, sp88, &sp98, &spEC, &spE8, &spE4); func_8002C954(player, playerId, sp88); } - sp98 = player->unk_110.unk3C[0]; + sp98 = player->collision.surfaceDistance[0]; if (sp98 >= 0) { - sp98 = player->unk_110.unk3C[1]; + sp98 = player->collision.surfaceDistance[1]; if (sp98 >= 0) { player->unk_046 &= 0xFFDF; } } - player->unk_074 = func_802ABE30(spEC, spE8, spE4, player->unk_110.unk3A); + player->unk_074 = calculate_surface_height(spEC, spE8, spE4, player->collision.meshIndexZX); func_80029B4C(player, spEC, spE8, spE4); func_8002AE38(player, playerId, posX, posZ, spEC, spE4); sqrt = (sp88[0] * sp88[0]) + (sp88[2] * sp88[2]); @@ -5068,7 +5068,7 @@ void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) D_80165070[playerId][0] = sp88[0]; D_80165070[playerId][1] = sp88[1]; D_80165070[playerId][2] = sp88[2]; - + if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { if (gKartTopSpeedTable[player->characterId] < player->unk_094) { divOptimize = gKartTopSpeedTable[player->characterId] / player->unk_094; @@ -5086,7 +5086,7 @@ void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) player->unk_094 = 1.0f; } } - if (player->unk_110.unk3C[2] >= 500.0f) { + if (player->collision.surfaceDistance[2] >= 500.0f) { player->unk_078 /= 2; } func_8002C4F8(player, playerId); diff --git a/src/player_controller.h b/src/player_controller.h index 84cbe7418..064202646 100644 --- a/src/player_controller.h +++ b/src/player_controller.h @@ -1,7 +1,7 @@ #ifndef player_controller_H #define player_controller_H -#include "common_structs.h" +#include #include "camera.h" /* Function Prototypes */ @@ -74,7 +74,7 @@ void func_80030A34(Player*); void detect_triple_a_combo_a_released(Player*); void detect_triple_a_combo_a_pressed(Player*); void player_speed(Player*); -void func_80031F48(Player*, f32); +void decelerate_ai_player(Player*, f32); void detect_triple_b_combo_b_released(Player*); void detect_triple_b_combo_b_pressed(Player*); void func_800323E4(Player*); diff --git a/src/profiler.c b/src/profiler.c index 8090e9dbb..2bb9f5b97 100644 --- a/src/profiler.c +++ b/src/profiler.c @@ -1,8 +1,7 @@ #include #include -#include "types.h" #include "profiler.h" -#include "config.h" +#include #include "main.h" struct ProfilerFrameData gProfilerFrameData[2]; diff --git a/src/profiler.h b/src/profiler.h index 2416f4d44..92267ebd2 100644 --- a/src/profiler.h +++ b/src/profiler.h @@ -1,7 +1,6 @@ #ifndef PROFILER_H #define PROFILER_H -#include "types.h" extern u64 osClockRate; diff --git a/src/racing/actors.c b/src/racing/actors.c index 4b1d4a597..ee13940fe 100644 --- a/src/racing/actors.c +++ b/src/racing/actors.c @@ -1,12 +1,12 @@ #include #include #include +#include #include #include #include #include #include -#include #include "code_800029B0.h" #include "main.h" @@ -257,7 +257,7 @@ void actor_init(struct Actor *actor, Vec3f startingPos, Vec3s startingRot, Vec3f actor->flags = actor->flags | 0x4000 | 0x1000; actor->unk_08 = 0.35f; actor->boundingBoxSize = 1.925f; - func_802ADDC8(&actor->unk30, 1.925f, actor->pos[0], actor->pos[1], actor->pos[2]); + check_bounding_collision(&actor->unk30, 1.925f, actor->pos[0], actor->pos[1], actor->pos[2]); break; case ACTOR_HOT_AIR_BALLOON_ITEM_BOX: actor->flags |= 0x4000; @@ -376,21 +376,21 @@ void func_80297760(struct Actor *arg0, Vec3f arg1) { arg1[0] = arg0->pos[0]; arg1[1] = arg0->pos[1]; arg1[2] = arg0->pos[2]; - arg1[1] = func_802ABE30(arg1[0], arg1[1], arg1[2], arg0->unk30.unk3A); + arg1[1] = calculate_surface_height(arg1[0], arg1[1], arg1[2], arg0->unk30.meshIndexZX); } void func_802977B0(Player *arg0) { - arg0->boundingBoxCorners[1].unk_14 |= 2; - arg0->boundingBoxCorners[0].unk_14 |= 2; - arg0->boundingBoxCorners[3].unk_14 |= 2; - arg0->boundingBoxCorners[2].unk_14 |= 2; + arg0->tyres[FRONT_RIGHT].unk_14 |= 2; + arg0->tyres[FRONT_LEFT].unk_14 |= 2; + arg0->tyres[BACK_RIGHT].unk_14 |= 2; + arg0->tyres[BACK_LEFT].unk_14 |= 2; } void func_802977E4(Player *arg0) { - arg0->boundingBoxCorners[1].unk_14 &= ~2 & 0xFFFF; - arg0->boundingBoxCorners[0].unk_14 &= ~2 & 0xFFFF; - arg0->boundingBoxCorners[3].unk_14 &= ~2 & 0xFFFF; - arg0->boundingBoxCorners[2].unk_14 &= ~2 & 0xFFFF; + arg0->tyres[FRONT_RIGHT].unk_14 &= ~2 & 0xFFFF; + arg0->tyres[FRONT_LEFT].unk_14 &= ~2 & 0xFFFF; + arg0->tyres[BACK_RIGHT].unk_14 &= ~2 & 0xFFFF; + arg0->tyres[BACK_LEFT].unk_14 &= ~2 & 0xFFFF; } // Invert green and red on green shell texture @@ -565,7 +565,7 @@ void evaluate_collision_players_palm_trees(void) { for (index = 0; index < 4; index++){ // wtf is up with the << 0x18 >> 0x18? is it some weird type conversion? just use & 0xFF have the same effect to keep 8 first bit - if (((gPlayers[index].type & 0xC000) != 0) && (((get_surface_type(gPlayers[index].unk_110.unk3A) << 24) >> 24) == GRASS)) { + if (((gPlayers[index].type & 0xC000) != 0) && (((get_surface_type(gPlayers[index].collision.meshIndexZX) << 24) >> 24) == GRASS)) { evaluate_collision_player_palm_trees(&gPlayers[index]); } } @@ -855,7 +855,7 @@ void spawn_palm_trees(struct ActorSpawnData *spawnData) { temp_v1 = (struct PalmTree *) &gActorList[temp]; temp_v1->variant = temp_s0->someId; - func_802ADDC8((Collision *) &temp_v1->unk30, 5.0f, temp_v1->pos[0], temp_v1->pos[1], temp_v1->pos[2]); + check_bounding_collision((Collision *) &temp_v1->unk30, 5.0f, temp_v1->pos[0], temp_v1->pos[1], temp_v1->pos[2]); func_802976EC((Collision *) &temp_v1->unk30, temp_v1->rot); temp_s0++; } @@ -935,9 +935,9 @@ void spawn_foliage(struct ActorSpawnData *arg0) { if (gGamestate == CREDITS_SEQUENCE) { func_802976D8(temp_s0->rot); } else { - func_802ADDC8(&temp_s0->unk30, 5.0f, temp_s0->pos[0], temp_s0->pos[1], temp_s0->pos[2]); - if (temp_s0->unk30.unk3C[2] < 0.0f) { - temp_s0->pos[1] = func_802ABE30(temp_s0->pos[0], temp_s0->pos[1], temp_s0->pos[2], temp_s0->unk30.unk3A); + check_bounding_collision(&temp_s0->unk30, 5.0f, temp_s0->pos[0], temp_s0->pos[1], temp_s0->pos[2]); + if (temp_s0->unk30.surfaceDistance[2] < 0.0f) { + temp_s0->pos[1] = calculate_surface_height(temp_s0->pos[0], temp_s0->pos[1], temp_s0->pos[2], temp_s0->unk30.meshIndexZX); } func_802976EC(&temp_s0->unk30, temp_s0->rot); } @@ -967,7 +967,7 @@ void spawn_all_item_boxes(struct ActorSpawnData *spawnData) { startingRot[1] = random_u16(); startingRot[2] = random_u16(); temp_s1 = add_actor_to_empty_slot(startingPos, startingRot, startingVelocity, ACTOR_ITEM_BOX); - temp_f0 = func_802AE1C0(startingPos[0], startingPos[1] + 10.0f, startingPos[2]); + temp_f0 = spawn_actor_on_surface(startingPos[0], startingPos[1] + 10.0f, startingPos[2]); // Should be struct ItemBox but not enough space in the stack. // It's either the ItemBox or the SEGMENT/OFFSET variables. @@ -1157,7 +1157,7 @@ void spawn_course_actors(void) { /** * @brief Loads actor textures, course specific actor textures. * Calls to init_course_vehicles and place_course_actors - * + * */ void init_actors_and_load_textures(void) { set_segment_base_addr(3, (void *) gNextFreeMemoryAddress); @@ -1555,9 +1555,9 @@ bool collision_mario_sign(Player *player, struct Actor *marioRacewaySign) { func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0x70, 0x1A)); } } - return TRUE; + return true; } - return FALSE; + return false; } bool collision_piranha_plant(Player *player, struct PiranhaPlant *plant) { @@ -1571,9 +1571,9 @@ bool collision_piranha_plant(Player *player, struct PiranhaPlant *plant) { func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0xA0, 0x52)); } } - return TRUE; + return true; } - return FALSE; + return false; } bool collision_yoshi_egg(Player *player, struct YoshiValleyEgg *egg) { @@ -1588,34 +1588,34 @@ bool collision_yoshi_egg(Player *player, struct YoshiValleyEgg *egg) { x_dist = egg->pos[0] - player->pos[0]; if ((x_dist < minDist) && (x_dist < -maxDist)) { - return FALSE; + return false; } if (x_dist > maxDist) { - return FALSE; + return false; } z_dist = egg->pos[2] - player->pos[2]; if ((z_dist < minDist) && (z_dist < -maxDist)) { - return FALSE; + return false; } if (z_dist > maxDist) { - return FALSE; + return false; } xz_dist = sqrtf((x_dist * x_dist) + (z_dist * z_dist)); if (xz_dist > maxDist) { - return FALSE; + return false; } func_802977B0(player); y_dist = player->pos[1] - egg->pos[1]; if (y_dist < minDist) { - return FALSE; + return false; } totalBox = player->boundingBoxSize + egg->boundingBoxSize; if (totalBox < xz_dist) { - return FALSE; + return false; } if ((player->type & PLAYER_HUMAN) != 0) { @@ -1634,7 +1634,7 @@ bool collision_yoshi_egg(Player *player, struct YoshiValleyEgg *egg) { apply_hit_sound_effect(player, player - gPlayerOne); } - return TRUE; + return true; } bool collision_tree(Player *player, struct Actor *actor) { @@ -1654,33 +1654,33 @@ bool collision_tree(Player *player, struct Actor *actor) { var_f16 = actor->unk_08; x_dist = actor->pos[0] - player->pos[0]; if ((x_dist < 0.0f) && (x_dist < -var_f16)) { - return FALSE; + return false; } if (var_f16 < x_dist) { - return FALSE; + return false; } z_dist = actor->pos[2] - player->pos[2]; if ((z_dist < 0.0f) && (z_dist < -var_f16)) { - return FALSE; + return false; } if (var_f16 < z_dist) { - return FALSE; + return false; } y_dist = player->pos[1] - actor->pos[1]; if (y_dist < 0.0f) { - return FALSE; + return false; } if ((f32) actor->state < y_dist) { - return FALSE; + return false; } xz_dist = sqrtf((x_dist * x_dist) + (z_dist * z_dist)); if (var_f16 < xz_dist) { - return FALSE; + return false; } func_802977B0(player); var_f16 = player->boundingBoxSize + actor->boundingBoxSize; if (var_f16 < xz_dist) { - return FALSE; + return false; } sp48 = player->velocity[0]; sp44 = player->velocity[2]; @@ -1689,7 +1689,7 @@ bool collision_tree(Player *player, struct Actor *actor) { actor->flags |= 0x400; func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10)); func_800C90F4(player - gPlayerOne, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x0D)); - return TRUE; + return true; } if (!(player->type & PLAYER_INVISIBLE_OR_BOMB)) { func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0x70, 0x18)); @@ -1720,7 +1720,7 @@ bool collision_tree(Player *player, struct Actor *actor) { player->pos[2] = actorPos[2] - (z_dist * var_f16 * 1.2f); player->velocity[0] = 0; player->velocity[2] = 0; - return TRUE; + return true; } temp_f12 = ((x_dist * sp48) + (z_dist * sp44)) / temp_f0_4; temp_f12 = temp_f0_4 * temp_f12 * 1.5f; @@ -1730,7 +1730,7 @@ bool collision_tree(Player *player, struct Actor *actor) { player->pos[0] += x_dist * temp_f2 * 0.5f; player->pos[2] += z_dist * temp_f2 * 0.5f; } - return TRUE; + return true; } bool query_collision_player_vs_actor_item(Player *arg0, struct Actor *arg1) { @@ -1818,18 +1818,18 @@ void destroy_destructable_actor(struct Actor *actor) { Player *player; switch (actor->type) { - case ACTOR_BANANA: - banana = (struct BananaActor *)actor; - switch (banana->state) { - case FIRST_BANANA_BUNCH_BANANA: - case BANANA_BUNCH_BANANA: - destroy_banana_in_banana_bunch(banana); - break; - case HELD_BANANA: - player = &gPlayers[banana->playerId]; - player->soundEffects &= ~0x00040000; - /* fallthrough */ - case BANANA_ON_GROUND: + case ACTOR_BANANA: + banana = (struct BananaActor *)actor; + switch (banana->state) { + case FIRST_BANANA_BUNCH_BANANA: + case BANANA_BUNCH_BANANA: + destroy_banana_in_banana_bunch(banana); + break; + case HELD_BANANA: + player = &gPlayers[banana->playerId]; + player->soundEffects &= ~0x00040000; + /* fallthrough */ + case BANANA_ON_GROUND: banana->flags = -0x8000; banana->unk_04 = 0x003C; banana->state = DESTROYED_BANANA; diff --git a/src/racing/actors.h b/src/racing/actors.h index 0bd0b1b7c..a9cb13830 100644 --- a/src/racing/actors.h +++ b/src/racing/actors.h @@ -1,8 +1,9 @@ #ifndef ACTORS_H #define ACTORS_H -#include "types.h" #include "actor_types.h" +#include "code_800029B0.h" +#include "camera.h" #define END_OF_SPAWN_DATA -0x8000 @@ -82,13 +83,13 @@ void destroy_actor(struct Actor*); s16 try_remove_destructable_item(Vec3f, Vec3s, Vec3f, s16); s16 add_actor_to_empty_slot(Vec3f, Vec3s, Vec3f, s16); s16 spawn_actor_at_pos(Vec3f, s16); -s32 query_and_resolve_collision_player_actor(Player*, Vec3f, f32, f32, f32); -s32 collision_mario_sign(Player*, struct Actor*); -s32 collision_piranha_plant(Player*, struct PiranhaPlant*); -s32 collision_yoshi_egg(Player*, struct YoshiValleyEgg*); -s32 collision_tree(Player*, struct Actor*); -s32 query_collision_player_vs_actor_item(Player*, struct Actor*); -s32 query_collision_actor_vs_actor(struct Actor*, struct Actor*); +bool query_and_resolve_collision_player_actor(Player*, Vec3f, f32, f32, f32); +bool collision_mario_sign(Player*, struct Actor*); +bool collision_piranha_plant(Player*, struct PiranhaPlant*); +bool collision_yoshi_egg(Player*, struct YoshiValleyEgg*); +bool collision_tree(Player*, struct Actor*); +bool query_collision_player_vs_actor_item(Player*, struct Actor*); +bool query_collision_actor_vs_actor(struct Actor*, struct Actor*); void destroy_destructable_actor(struct Actor*); void play_sound_on_destructible_actor_collision(struct Actor*, struct Actor*); void evaluate_actor_collision_between_two_destructible_actors(struct Actor*, struct Actor*); diff --git a/src/racing/actors_extended.c b/src/racing/actors_extended.c index a28d64215..8e8efefd5 100644 --- a/src/racing/actors_extended.c +++ b/src/racing/actors_extended.c @@ -16,20 +16,20 @@ #include "effects.h" #include "sounds.h" -void copy_collision(Collision *arg0, Collision *arg1) { - arg1->unk30 = arg0->unk30; - arg1->unk32 = arg0->unk32; - arg1->unk34 = arg0->unk34; - arg1->unk36 = arg0->unk36; - arg1->unk38 = arg0->unk38; - arg1->unk3A = arg0->unk3A; - arg1->unk3C[0] = arg0->unk3C[0]; - arg1->unk3C[1] = arg0->unk3C[1]; - arg1->unk3C[2] = arg0->unk3C[2]; +void copy_collision(Collision *src, Collision *dest) { + dest->unk30 = src->unk30; + dest->unk32 = src->unk32; + dest->unk34 = src->unk34; + dest->meshIndexYX = src->meshIndexYX; + dest->meshIndexZY = src->meshIndexZY; + dest->meshIndexZX = src->meshIndexZX; + dest->surfaceDistance[0] = src->surfaceDistance[0]; + dest->surfaceDistance[1] = src->surfaceDistance[1]; + dest->surfaceDistance[2] = src->surfaceDistance[2]; - vec3f_copy_return(arg1->unk48, arg0->unk48); - vec3f_copy_return(arg1->unk54, arg0->unk54); - vec3f_copy_return(arg1->orientationVector, arg0->orientationVector); + vec3f_copy_return(dest->unk48, src->unk48); + vec3f_copy_return(dest->unk54, src->unk54); + vec3f_copy_return(dest->orientationVector, src->orientationVector); } void triple_shell_actor_collide_with_player(struct ShellActor *shell, s32 shellType) { @@ -315,19 +315,19 @@ void update_actor_banana_bunch(struct BananaBunchParent *banana_bunch) { bool is_shell_exist(s16 arg0) { struct ShellActor *actor; if (arg0 < 0) { - return FALSE; + return false; } actor = (struct ShellActor*) &gActorList[arg0]; if (actor->type == ACTOR_GREEN_SHELL) { if (actor->state == TRIPLE_GREEN_SHELL) { - return TRUE; + return true; } - return FALSE; + return false; } if (actor->state == TRIPLE_RED_SHELL) { - return TRUE; + return true; } - return FALSE; + return false; } void update_actor_triple_shell(TripleShellParent *parent, s16 shellType) { @@ -572,7 +572,7 @@ s32 init_triple_shell(TripleShellParent *parent, Player *player, s16 shellType, startingPos[0] = player->pos[0]; startingPos[1] = player->pos[1]; startingPos[2] = player->pos[2]; - func_802AD950(&shell->unk30, shell->boundingBoxSize + 1.0f, shell->pos[0], shell->pos[1], shell->pos[2], startingPos[0], startingPos[1], startingPos[2]); + actor_terrain_collision(&shell->unk30, shell->boundingBoxSize + 1.0f, shell->pos[0], shell->pos[1], shell->pos[2], startingPos[0], startingPos[1], startingPos[2]); func_802B4E30((struct Actor *)shell); shell->flags = 0x9000; switch (shellType) { @@ -606,12 +606,12 @@ s32 use_green_shell_item(Player *player) { // rotate to match player orientation mtxf_translate_vec3f_mat3(startingPos, player->orientationMatrix); - + // move to player position startingPos[0] += player->pos[0]; startingPos[1] += player->pos[1]; startingPos[2] += player->pos[2]; - + // spawn the shell actorIndex = add_actor_to_empty_slot(startingPos, startingRot, startingVelocity, ACTOR_GREEN_SHELL); if (actorIndex < 0) { @@ -622,7 +622,7 @@ s32 use_green_shell_item(Player *player) { startingPos[0] = player->pos[0]; startingPos[1] = player->pos[1]; startingPos[2] = player->pos[2]; - func_802AD950(&shell->unk30, shell->boundingBoxSize + 1.0f, shell->pos[0], shell->pos[1], shell->pos[2], startingPos[0], startingPos[1], startingPos[2]); + actor_terrain_collision(&shell->unk30, shell->boundingBoxSize + 1.0f, shell->pos[0], shell->pos[1], shell->pos[2], startingPos[0], startingPos[1], startingPos[2]); func_802B4E30((struct Actor *)shell); shell->state = HELD_SHELL; shell->rotVelocity = 0; @@ -661,7 +661,7 @@ s32 use_red_shell_item(Player *player) { startingPos[0] = player->pos[0]; startingPos[1] = player->pos[1]; startingPos[2] = player->pos[2]; - func_802AD950(&shell->unk30, shell->boundingBoxSize + 1.0f, shell->pos[0], shell->pos[1], shell->pos[2], startingPos[0], startingPos[1], startingPos[2]); + actor_terrain_collision(&shell->unk30, shell->boundingBoxSize + 1.0f, shell->pos[0], shell->pos[1], shell->pos[2], startingPos[0], startingPos[1], startingPos[2]); func_802B4E30((struct Actor *)shell); shell->state = HELD_SHELL; shell->rotVelocity = 0; @@ -708,7 +708,7 @@ void func_802B2914(struct BananaBunchParent *banana_bunch, Player *player, s16 b startingPos[0] = player->pos[0]; startingPos[1] = player->pos[1]; startingPos[2] = player->pos[2]; - func_802AD950(&newBanana->unk30, newBanana->boundingBoxSize + 1.0f, newBanana->pos[0], newBanana->pos[1], newBanana->pos[2], startingPos[0], startingPos[1], startingPos[2]); + actor_terrain_collision(&newBanana->unk30, newBanana->boundingBoxSize + 1.0f, newBanana->pos[0], newBanana->pos[1], newBanana->pos[2], startingPos[0], startingPos[1], startingPos[2]); func_802B4E30((struct Actor*)newBanana); newBanana->flags = 0x9000; newBanana->playerId = player - gPlayerOne; @@ -848,8 +848,8 @@ s32 use_banana_item(Player *player) { /** * Strikes players with thunder - * - * @param Activating player (not to be struck) + * + * @param Activating player (not to be struck) */ void use_thunder_item(Player *player) { s32 index; @@ -932,7 +932,7 @@ void check_player_use_item(void) { for (player = &gPlayers[0], loopController = &gControllers[0], target = &gControllers[4]; loopController != target; player++, loopController++) { controller = loopController; - if (prevent_item_use(player) == FALSE) { + if (prevent_item_use(player) == false) { if((player->type & PLAYER_INVISIBLE_OR_BOMB) != 0){ if ((player - gPlayerTwo) == 0) { controller = gControllerSix; @@ -960,19 +960,19 @@ void check_player_use_item(void) { #include "actors/blue_and_red_shells/update.inc.c" void func_802B4E30(struct Actor *arg0) { - if ((arg0->unk30.unk3C[2] < 0.0f) && (arg0->unk30.unk34 == 1)) { - arg0->pos[0] -= (arg0->unk30.orientationVector[0] * arg0->unk30.unk3C[2]); - arg0->pos[1] -= (arg0->unk30.orientationVector[1] * arg0->unk30.unk3C[2]); - arg0->pos[2] -= (arg0->unk30.orientationVector[2] * arg0->unk30.unk3C[2]); + if ((arg0->unk30.surfaceDistance[2] < 0.0f) && (arg0->unk30.unk34 == 1)) { + arg0->pos[0] -= (arg0->unk30.orientationVector[0] * arg0->unk30.surfaceDistance[2]); + arg0->pos[1] -= (arg0->unk30.orientationVector[1] * arg0->unk30.surfaceDistance[2]); + arg0->pos[2] -= (arg0->unk30.orientationVector[2] * arg0->unk30.surfaceDistance[2]); } - if ((arg0->unk30.unk3C[0] < 0.0f) && (arg0->unk30.unk30 == 1)) { - arg0->pos[0] -= (arg0->unk30.unk48[0] * arg0->unk30.unk3C[0]); - arg0->pos[1] -= (arg0->unk30.unk48[1] * arg0->unk30.unk3C[0]); - arg0->pos[2] -= (arg0->unk30.unk48[2] * arg0->unk30.unk3C[0]); + if ((arg0->unk30.surfaceDistance[0] < 0.0f) && (arg0->unk30.unk30 == 1)) { + arg0->pos[0] -= (arg0->unk30.unk48[0] * arg0->unk30.surfaceDistance[0]); + arg0->pos[1] -= (arg0->unk30.unk48[1] * arg0->unk30.surfaceDistance[0]); + arg0->pos[2] -= (arg0->unk30.unk48[2] * arg0->unk30.surfaceDistance[0]); } - if ((arg0->unk30.unk3C[1] < 0.0f) && (arg0->unk30.unk32 == 1)) { - arg0->pos[0] -= (arg0->unk30.unk54[0] * arg0->unk30.unk3C[1]); - arg0->pos[1] -= (arg0->unk30.unk54[1] * arg0->unk30.unk3C[1]); - arg0->pos[2] -= (arg0->unk30.unk54[2] * arg0->unk30.unk3C[1]); + if ((arg0->unk30.surfaceDistance[1] < 0.0f) && (arg0->unk30.unk32 == 1)) { + arg0->pos[0] -= (arg0->unk30.unk54[0] * arg0->unk30.surfaceDistance[1]); + arg0->pos[1] -= (arg0->unk30.unk54[1] * arg0->unk30.surfaceDistance[1]); + arg0->pos[2] -= (arg0->unk30.unk54[2] * arg0->unk30.surfaceDistance[1]); } } diff --git a/src/racing/actors_extended.h b/src/racing/actors_extended.h index 89aa28e5a..cb8f0c6ca 100644 --- a/src/racing/actors_extended.h +++ b/src/racing/actors_extended.h @@ -1,7 +1,7 @@ #ifndef ACTORS_EXTENDED_H #define ACTORS_EXTENDED_H -#include "common_structs.h" +#include #include "actor_types.h" /** @cond */ @@ -16,7 +16,7 @@ void func_802B0648(struct BananaBunchParent*); void func_802B0788(s16, struct BananaBunchParent*, Player*); s32 func_802B09C0(s16); void update_actor_banana_bunch(struct BananaBunchParent*); -s32 is_shell_exist(s16); +bool is_shell_exist(s16); void update_actor_triple_shell(TripleShellParent*, s16); s32 use_banana_bunch_item(Player*); s32 use_triple_shell_item(Player*, s16); diff --git a/src/racing/collision.c b/src/racing/collision.c index bcbb3fef1..4676e84d1 100644 --- a/src/racing/collision.c +++ b/src/racing/collision.c @@ -9,6 +9,7 @@ #include "collision.h" #include "math_util.h" #include "code_800029B0.h" +#include #pragma intrinsic (sqrtf) @@ -25,15 +26,15 @@ void nullify_displaylist(uintptr_t addr) { } void func_802AAAAC(Collision *collision) { - collision->unk36 = 5000; - collision->unk38 = 5000; - collision->unk3A = 5000; + collision->meshIndexYX = 5000; + collision->meshIndexZY = 5000; + collision->meshIndexZX = 5000; collision->unk30 = 0; collision->unk32 = 0; collision->unk34 = 0; - collision->unk3C[0] = 0; - collision->unk3C[1] = 0; - collision->unk3C[2] = 0; + collision->surfaceDistance[0] = 0; + collision->surfaceDistance[1] = 0; + collision->surfaceDistance[2] = 0; vec3f_set(collision->unk48, 0.0f, 0.0f, 1.0f); vec3f_set(collision->unk54, 1.0f, 0.0f, 0.0f); vec3f_set(collision->orientationVector, 0.0f, 1.0f, 0.0f); @@ -76,14 +77,14 @@ f32 func_802AAB4C(Player *player) { } return 0.8f; case COURSE_SHERBET_LAND: - if ((get_surface_type(player->unk_110.unk3A) & 0xFF) == SNOW) { + if ((get_surface_type(player->collision.meshIndexZX) & 0xFF) == SNOW) { return (f32) (gCourseMinY - 0xA); } return D_8015F8E4; case COURSE_DK_JUNGLE: - temp_v1 = get_course_section(player->unk_110.unk3A) & 0xFF; + temp_v1 = get_section_id(player->collision.meshIndexZX) & 0xFF; if (temp_v1 == 0xFF) { - if ((get_surface_type(player->unk_110.unk3A) & 0xFF) == CAVE) { + if ((get_surface_type(player->collision.meshIndexZX) & 0xFF) == CAVE) { return -475.0f; } if (playerX > -478.0f) { @@ -112,8 +113,8 @@ f32 func_802AAB4C(Player *player) { } } -s32 func_802AAE4C(Collision *collision, f32 boundingBoxSize, f32 posX, f32 posY, f32 posZ, u16 index) { - mk64_surface_map_ram *surfaceMap = &gSurfaceMap[index]; +s32 check_collision_zx(Collision *collision, f32 boundingBoxSize, f32 posX, f32 posY, f32 posZ, u16 index) { + CollisionTriangle *triangle = &gCollisionMesh[index]; UNUSED f32 pad; f32 x3; UNUSED f32 pad2; @@ -123,101 +124,100 @@ s32 func_802AAE4C(Collision *collision, f32 boundingBoxSize, f32 posX, f32 posY, f32 z2; f32 x1; f32 z1; - f32 temp_f0_5; - f32 temp_f10; - f32 temp_f0_3; - f32 temp_f2_2; - s32 bool = 1; + f32 distanceToSurface; + f32 crossProductZX_1; + f32 crossProductZX_2; + f32 crossProductZX_3; + s32 b = true; - if (surfaceMap->gravity < -0.9f) + if (triangle->normalY < -0.9f) return 0; - if (surfaceMap->vtx31 > posX) + if (triangle->minX > posX) return 0; - if (surfaceMap->vtx33 > posZ) + if (triangle->minZ > posZ) return 0; - if (surfaceMap->vtx21 < posX) + if (triangle->maxX < posX) return 0; - if (surfaceMap->vtx23 < posZ) + if (triangle->maxZ < posZ) return 0; - if ((surfaceMap->vtx32 - boundingBoxSize * 3.0f) > posY) + if ((triangle->minY - boundingBoxSize * 3.0f) > posY) return 0; - x1 = surfaceMap->vtxPoly1->v.ob[0]; - z1 = surfaceMap->vtxPoly1->v.ob[2]; + x1 = triangle->vtx1->v.ob[0]; + z1 = triangle->vtx1->v.ob[2]; - x2 = surfaceMap->vtxPoly2->v.ob[0]; - z2 = surfaceMap->vtxPoly2->v.ob[2]; + x2 = triangle->vtx2->v.ob[0]; + z2 = triangle->vtx2->v.ob[2]; - x3 = surfaceMap->vtxPoly3->v.ob[0]; - z3 = surfaceMap->vtxPoly3->v.ob[2]; + x3 = triangle->vtx3->v.ob[0]; + z3 = triangle->vtx3->v.ob[2]; - temp_f10 = (z1 - posZ) * (x2 - posX) - (x1 - posX) * (z2 - posZ); + crossProductZX_1 = (z1 - posZ) * (x2 - posX) - (x1 - posX) * (z2 - posZ); - if (!temp_f10) { + if (!crossProductZX_1) { - temp_f0_3 = (z2 - posZ) * (x3 - posX) - (x2 - posX) * (z3 - posZ); + crossProductZX_2 = (z2 - posZ) * (x3 - posX) - (x2 - posX) * (z3 - posZ); - temp_f2_2 = (z3 - posZ) * (x1 - posX) - (x3 - posX) * (z1 - posZ); + crossProductZX_3 = (z3 - posZ) * (x1 - posX) - (x3 - posX) * (z1 - posZ); - if ((temp_f0_3 * temp_f2_2) < 0.0f) { - bool = 0; + if ((crossProductZX_2 * crossProductZX_3) < 0.0f) { + b = false; } } else { - temp_f0_3 = (z2 - posZ) * (x3 - posX) - (x2 - posX) * (z3 - posZ); + crossProductZX_2 = (z2 - posZ) * (x3 - posX) - (x2 - posX) * (z3 - posZ); - if (!temp_f0_3) { - temp_f2_2 = (z3 - posZ) * (x1 - posX) - (x3 - posX) * (z1 - posZ); + if (!crossProductZX_2) { + crossProductZX_3 = (z3 - posZ) * (x1 - posX) - (x3 - posX) * (z1 - posZ); - if ((temp_f10 * temp_f2_2) < 0.0f) { - bool = 0; + if ((crossProductZX_1 * crossProductZX_3) < 0.0f) { + b = false; } } else { - if ((temp_f10 * temp_f0_3) < 0.0f) { - bool = 0; + if ((crossProductZX_1 * crossProductZX_2) < 0.0f) { + b = false; } else { - temp_f2_2 = (z3 - posZ) * (x1 - posX) - (x3 - posX) * (z1 - posZ); - if (temp_f2_2 != 0) { - if ((temp_f0_3 * temp_f2_2) < 0.0f) { - bool = 0; + crossProductZX_3 = (z3 - posZ) * (x1 - posX) - (x3 - posX) * (z1 - posZ); + if (crossProductZX_3 != 0) { + if ((crossProductZX_2 * crossProductZX_3) < 0.0f) { + b = false; } } } } } - if (!bool) { + if (!b) { return 0; } - temp_f0_5 = ((surfaceMap->height * posX) + (surfaceMap->gravity * posY) + (surfaceMap->rotation * posZ) - + surfaceMap->height2) + distanceToSurface = ((triangle->normalX * posX) + (triangle->normalY * posY) + (triangle->normalZ * posZ) + + triangle->distance) - boundingBoxSize; - if (temp_f0_5 > 0.0f) { - if (collision->unk3C[2] > temp_f0_5) { + if (distanceToSurface > 0.0f) { + if (collision->surfaceDistance[2] > distanceToSurface) { collision->unk34 = 1; - collision->unk3A = index; - collision->unk3C[2] = temp_f0_5; - collision->orientationVector[0] = surfaceMap->height; - collision->orientationVector[1] = surfaceMap->gravity; - collision->orientationVector[2] = surfaceMap->rotation; + collision->meshIndexZX = index; + collision->surfaceDistance[2] = distanceToSurface; + collision->orientationVector[0] = triangle->normalX; + collision->orientationVector[1] = triangle->normalY; + collision->orientationVector[2] = triangle->normalZ; } return 0; } - if (temp_f0_5 > -16.0f) { + if (distanceToSurface > -16.0f) { collision->unk34 = 1; - collision->unk3A = index; - collision->unk3C[2] = temp_f0_5; - collision->orientationVector[0] = surfaceMap->height; - collision->orientationVector[1] = surfaceMap->gravity; - collision->orientationVector[2] = surfaceMap->rotation; + collision->meshIndexZX = index; + collision->surfaceDistance[2] = distanceToSurface; + collision->orientationVector[0] = triangle->normalX; + collision->orientationVector[1] = triangle->normalY; + collision->orientationVector[2] = triangle->normalZ; return 1; } return 0; } - -s32 func_802AB288(Collision *collision, f32 boundingBoxSize, f32 posX, f32 posY, f32 posZ, u16 index) { - mk64_surface_map_ram *surfaceMap = &gSurfaceMap[index]; +s32 check_collision_yx(Collision *collision, f32 boundingBoxSize, f32 posX, f32 posY, f32 posZ, u16 index) { + CollisionTriangle *triangle = &gCollisionMesh[index]; UNUSED f32 pad[6]; f32 x3; f32 y3; @@ -228,212 +228,211 @@ s32 func_802AB288(Collision *collision, f32 boundingBoxSize, f32 posX, f32 posY, f32 y2; f32 x1; f32 y1; - f32 temp_f0_4; - f32 temp_f2_2; - f32 temp_f0_2; - f32 temp_f2_3; - s32 bool = 1; + f32 distanceToSurface; + f32 crossProductYX_1; + f32 crossProductYX_2; + f32 crossProductYX_3; + s32 b = true; - if (surfaceMap->vtx31 > posX) { + if (triangle->minX > posX) { return 0; } - if (surfaceMap->vtx21 < posX) { + if (triangle->maxX < posX) { return 0; } - if (surfaceMap->vtx22 < posY) { + if (triangle->maxY < posY) { return 0; } - if (surfaceMap->vtx32 > posY) { + if (triangle->minY > posY) { return 0; } - if ((surfaceMap->vtx33 - boundingBoxSize * 3.0f) > posZ) { + if ((triangle->minZ - boundingBoxSize * 3.0f) > posZ) { return 0; } - if ((surfaceMap->vtx23 + boundingBoxSize * 3.0f) < posZ) { + if ((triangle->maxZ + boundingBoxSize * 3.0f) < posZ) { return 0; } - x1 = surfaceMap->vtxPoly1->v.ob[0]; - y1 = surfaceMap->vtxPoly1->v.ob[1]; + x1 = triangle->vtx1->v.ob[0]; + y1 = triangle->vtx1->v.ob[1]; - x2 = surfaceMap->vtxPoly2->v.ob[0]; - y2 = surfaceMap->vtxPoly2->v.ob[1]; + x2 = triangle->vtx2->v.ob[0]; + y2 = triangle->vtx2->v.ob[1]; - x3 = surfaceMap->vtxPoly3->v.ob[0]; - y3 = surfaceMap->vtxPoly3->v.ob[1]; + x3 = triangle->vtx3->v.ob[0]; + y3 = triangle->vtx3->v.ob[1]; - temp_f2_2 = (y1 - posY) * (x2 - posX) - (x1 - posX) * (y2 - posY); + crossProductYX_1 = (y1 - posY) * (x2 - posX) - (x1 - posX) * (y2 - posY); - if (!temp_f2_2) { + if (!crossProductYX_1) { - temp_f0_2 = (y2 - posY) * (x3 - posX) - (x2 - posX) * (y3 - posY); + crossProductYX_2 = (y2 - posY) * (x3 - posX) - (x2 - posX) * (y3 - posY); - temp_f2_3 = (y3 - posY) * (x1 - posX) - (x3 - posX) * (y1 - posY); + crossProductYX_3 = (y3 - posY) * (x1 - posX) - (x3 - posX) * (y1 - posY); - if ((temp_f0_2 * temp_f2_3) < 0.0f) { - bool = 0; + if ((crossProductYX_2 * crossProductYX_3) < 0.0f) { + b = false; } } else { - temp_f0_2 = (y2 - posY) * (x3 - posX) - (x2 - posX) * (y3 - posY); - if (!temp_f0_2) { - temp_f2_3 = (y3 - posY) * (x1 - posX) - (x3 - posX) * (y1 - posY); - if (temp_f2_2 * temp_f2_3 < 0.0f) { - bool = 0; + crossProductYX_2 = (y2 - posY) * (x3 - posX) - (x2 - posX) * (y3 - posY); + if (!crossProductYX_2) { + crossProductYX_3 = (y3 - posY) * (x1 - posX) - (x3 - posX) * (y1 - posY); + if (crossProductYX_1 * crossProductYX_3 < 0.0f) { + b = false; } } else { - if ((temp_f2_2 * temp_f0_2) < 0.0f) { - bool = 0; + if ((crossProductYX_1 * crossProductYX_2) < 0.0f) { + b = false; } else { - temp_f2_3 = ((y3 - posY) * (x1 - posX)) - ((x3 - posX) * (y1 - posY)); - if (temp_f2_3 != 0) { - if ((temp_f0_2 * temp_f2_3) < 0.0f) { - bool = 0; + crossProductYX_3 = ((y3 - posY) * (x1 - posX)) - ((x3 - posX) * (y1 - posY)); + if (crossProductYX_3 != 0) { + if ((crossProductYX_2 * crossProductYX_3) < 0.0f) { + b = false; } } } } } - if (!bool) { + if (!b) { return 0; } - temp_f0_4 = ((surfaceMap->height * posX) + (surfaceMap->gravity * posY) + (surfaceMap->rotation * posZ) + surfaceMap->height2) - boundingBoxSize; - if (temp_f0_4 > 0.0f) { - if (temp_f0_4 < collision->unk3C[0]) { + distanceToSurface = ((triangle->normalX * posX) + (triangle->normalY * posY) + (triangle->normalZ * posZ) + triangle->distance) - boundingBoxSize; + if (distanceToSurface > 0.0f) { + if (distanceToSurface < collision->surfaceDistance[0]) { collision->unk30 = 1; - collision->unk36 = index; - collision->unk3C[0] = temp_f0_4; - collision->unk48[0] = surfaceMap->height; - collision->unk48[1] = surfaceMap->gravity; - collision->unk48[2] = surfaceMap->rotation; + collision->meshIndexYX = index; + collision->surfaceDistance[0] = distanceToSurface; + collision->unk48[0] = triangle->normalX; + collision->unk48[1] = triangle->normalY; + collision->unk48[2] = triangle->normalZ; } return 0; } - if (temp_f0_4 > -16.0f) { + if (distanceToSurface > -16.0f) { collision->unk30 = 1; - collision->unk36 = index; - collision->unk3C[0] = temp_f0_4; - collision->unk48[0] = surfaceMap->height; - collision->unk48[1] = surfaceMap->gravity; - collision->unk48[2] = surfaceMap->rotation; + collision->meshIndexYX = index; + collision->surfaceDistance[0] = distanceToSurface; + collision->unk48[0] = triangle->normalX; + collision->unk48[1] = triangle->normalY; + collision->unk48[2] = triangle->normalZ; return 1; } return 0; } - -s32 func_802AB6C4(Collision *collision, f32 boundingBoxSize, f32 posX, f32 posY, f32 posZ, u16 index) { - mk64_surface_map_ram *surfaceMap = &gSurfaceMap[index]; - s32 bool = 1; +s32 check_collision_zy(Collision *collision, f32 boundingBoxSize, f32 posX, f32 posY, f32 posZ, u16 index) { + CollisionTriangle *triangle = &gCollisionMesh[index]; + s32 b = true; UNUSED f32 pad[7]; - f32 sp20; - f32 temp_f8; + f32 y3; + f32 z3; UNUSED f32 pad2[5]; - f32 sp6C; - f32 sp70; - f32 temp_f4; - f32 sp24; - f32 temp_f0_4; - f32 temp_f2_2; - f32 temp_f0_2; - f32 temp_f2_3; - if (surfaceMap->vtx33 > posZ) { + f32 y2; + f32 z2; + f32 y1; + f32 z1; + f32 distanceToSurface; + f32 crossProductYZ_1; + f32 crossProductYZ_2; + f32 crossProductYZ_3; + if (triangle->minZ > posZ) { return 0; } - if (surfaceMap->vtx23 < posZ) { + if (triangle->maxZ < posZ) { return 0; } - if (surfaceMap->vtx22 < posY) { + if (triangle->maxY < posY) { return 0; } - if (surfaceMap->vtx32 > posY) { + if (triangle->minY > posY) { return 0; } - if ((surfaceMap->vtx31 - (boundingBoxSize * 3.0f)) > posX) { + if ((triangle->minX - (boundingBoxSize * 3.0f)) > posX) { return 0; } - if ((surfaceMap->vtx21 + (boundingBoxSize * 3.0f)) < posX) { + if ((triangle->maxX + (boundingBoxSize * 3.0f)) < posX) { return 0; } - sp24 = surfaceMap->vtxPoly1->v.ob[2]; - temp_f4 = surfaceMap->vtxPoly1->v.ob[1]; + z1 = triangle->vtx1->v.ob[2]; + y1 = triangle->vtx1->v.ob[1]; - sp70 = surfaceMap->vtxPoly2->v.ob[2]; - sp6C = surfaceMap->vtxPoly2->v.ob[1]; + z2 = triangle->vtx2->v.ob[2]; + y2 = triangle->vtx2->v.ob[1]; - temp_f8 = surfaceMap->vtxPoly3->v.ob[2]; - sp20 = surfaceMap->vtxPoly3->v.ob[1]; + z3 = triangle->vtx3->v.ob[2]; + y3 = triangle->vtx3->v.ob[1]; - temp_f2_2 = (temp_f4 - posY) * (sp70 - posZ) - (sp24 - posZ) * (sp6C - posY); + crossProductYZ_1 = (y1 - posY) * (z2 - posZ) - (z1 - posZ) * (y2 - posY); - if (!temp_f2_2) { + if (!crossProductYZ_1) { - temp_f0_2 = ((sp6C - posY) * (temp_f8 - posZ)) - ((sp70 - posZ) * (sp20 - posY)); + crossProductYZ_2 = ((y2 - posY) * (z3 - posZ)) - ((z2 - posZ) * (y3 - posY)); - temp_f2_3 = ((sp20 - posY) * (sp24 - posZ)) - ((temp_f8 - posZ) * (temp_f4 - posY)); + crossProductYZ_3 = ((y3 - posY) * (z1 - posZ)) - ((z3 - posZ) * (y1 - posY)); - if ((temp_f0_2 * temp_f2_3) < 0.0f) { - bool = 0; + if ((crossProductYZ_2 * crossProductYZ_3) < 0.0f) { + b = false; } } else { - temp_f0_2 = ((sp6C - posY) * (temp_f8 - posZ)) - ((sp70 - posZ) * (sp20 - posY)); + crossProductYZ_2 = ((y2 - posY) * (z3 - posZ)) - ((z2 - posZ) * (y3 - posY)); - if (temp_f0_2 == 0) { - temp_f2_3 = ((sp20 - posY) * (sp24 - posZ)) - ((temp_f8 - posZ) * (temp_f4 - posY)); + if (crossProductYZ_2 == 0) { + crossProductYZ_3 = ((y3 - posY) * (z1 - posZ)) - ((z3 - posZ) * (y1 - posY)); - if ((temp_f2_2 * temp_f2_3) < 0.0f) { - bool = 0; + if ((crossProductYZ_1 * crossProductYZ_3) < 0.0f) { + b = false; } } else { - if ((temp_f2_2 * temp_f0_2) < 0.0f) { - bool = 0; + if ((crossProductYZ_1 * crossProductYZ_2) < 0.0f) { + b = false; } else { - temp_f2_3 = ((sp20 - posY) * (sp24 - posZ)) - ((temp_f8 - posZ) * (temp_f4 - posY)); - if (temp_f2_3 != 0) { - if ((temp_f0_2 * temp_f2_3) < 0.0f) { - bool = 0; + crossProductYZ_3 = ((y3 - posY) * (z1 - posZ)) - ((z3 - posZ) * (y1 - posY)); + if (crossProductYZ_3 != 0) { + if ((crossProductYZ_2 * crossProductYZ_3) < 0.0f) { + b = false; } } } } } - if (!bool) { + if (!b) { return 0; } - temp_f0_4 = ((((surfaceMap->height * posX) + (surfaceMap->gravity * posY)) + (surfaceMap->rotation * posZ)) - + surfaceMap->height2) + distanceToSurface = ((((triangle->normalX * posX) + (triangle->normalY * posY)) + (triangle->normalZ * posZ)) + + triangle->distance) - boundingBoxSize; - if (temp_f0_4 > 0.0f) { - if (temp_f0_4 < collision->unk3C[1]) { + if (distanceToSurface > 0.0f) { + if (distanceToSurface < collision->surfaceDistance[1]) { collision->unk32 = 1; - collision->unk38 = index; - collision->unk3C[1] = temp_f0_4; - collision->unk54[0] = surfaceMap->height; - collision->unk54[1] = surfaceMap->gravity; - collision->unk54[2] = surfaceMap->rotation; + collision->meshIndexZY = index; + collision->surfaceDistance[1] = distanceToSurface; + collision->unk54[0] = triangle->normalX; + collision->unk54[1] = triangle->normalY; + collision->unk54[2] = triangle->normalZ; } return 0; } - if (temp_f0_4 > (-16.0f)) { + if (distanceToSurface > (-16.0f)) { collision->unk32 = 1; - collision->unk38 = index; - collision->unk3C[1] = temp_f0_4; - collision->unk54[0] = surfaceMap->height; - collision->unk54[1] = surfaceMap->gravity; - collision->unk54[2] = surfaceMap->rotation; + collision->meshIndexZY = index; + collision->surfaceDistance[1] = distanceToSurface; + collision->unk54[0] = triangle->normalX; + collision->unk54[1] = triangle->normalY; + collision->unk54[2] = triangle->normalZ; return 1; } return 0; } -s32 func_802ABB04(f32 posX, f32 posZ, u16 index) { - mk64_surface_map_ram *surfaceMap = &gSurfaceMap[index]; +s32 check_horizontally_colliding_with_triangle(f32 posX, f32 posZ, u16 index) { + CollisionTriangle *triangle = &gCollisionMesh[index]; UNUSED f32 pad; f32 x3; UNUSED f32 pad2; @@ -444,96 +443,96 @@ s32 func_802ABB04(f32 posX, f32 posZ, u16 index) { f32 x1; f32 z1; UNUSED f32 pad4[4]; - f32 temp_f2_2; - f32 temp_f2_3; - f32 temp_f0_2; - s32 bool = 1; + f32 crossProductZX_1; + f32 crossProductZX_3; + f32 crossProductZX_2; + s32 b = true; - x1 = surfaceMap->vtxPoly1->v.ob[0]; - z1 = surfaceMap->vtxPoly1->v.ob[2]; + x1 = triangle->vtx1->v.ob[0]; + z1 = triangle->vtx1->v.ob[2]; - x2 = surfaceMap->vtxPoly2->v.ob[0]; - z2 = surfaceMap->vtxPoly2->v.ob[2]; + x2 = triangle->vtx2->v.ob[0]; + z2 = triangle->vtx2->v.ob[2]; - x3 = surfaceMap->vtxPoly3->v.ob[0]; - z3 = surfaceMap->vtxPoly3->v.ob[2]; + x3 = triangle->vtx3->v.ob[0]; + z3 = triangle->vtx3->v.ob[2]; - temp_f2_2 = (z1 - posZ) * (x2 - posX) - (x1 - posX) * (z2 - posZ); + crossProductZX_1 = (z1 - posZ) * (x2 - posX) - (x1 - posX) * (z2 - posZ); - if (!temp_f2_2) { + if (!crossProductZX_1) { - temp_f0_2 = (z2 - posZ) * (x3 - posX) - (x2 - posX) * (z3 - posZ); + crossProductZX_2 = (z2 - posZ) * (x3 - posX) - (x2 - posX) * (z3 - posZ); - temp_f2_3 = (z3 - posZ) * (x1 - posX) - (x3 - posX) * (z1 - posZ); + crossProductZX_3 = (z3 - posZ) * (x1 - posX) - (x3 - posX) * (z1 - posZ); - if ((temp_f0_2 * temp_f2_3) < 0.0f) { - bool = 0; + if ((crossProductZX_2 * crossProductZX_3) < 0.0f) { + b = false; } } else { - temp_f0_2 = (z2 - posZ) * (x3 - posX) - (x2 - posX) * (z3 - posZ); - if (!temp_f0_2) { - temp_f2_3 = (z3 - posZ) * (x1 - posX) - (x3 - posX) * (z1 - posZ); - if (temp_f2_2 * temp_f2_3 < 0.0f) { - bool = 0; + crossProductZX_2 = (z2 - posZ) * (x3 - posX) - (x2 - posX) * (z3 - posZ); + if (!crossProductZX_2) { + crossProductZX_3 = (z3 - posZ) * (x1 - posX) - (x3 - posX) * (z1 - posZ); + if (crossProductZX_1 * crossProductZX_3 < 0.0f) { + b = false; } } else { - if ((temp_f2_2 * temp_f0_2) < 0.0f) { - bool = 0; + if ((crossProductZX_1 * crossProductZX_2) < 0.0f) { + b = false; } else { - temp_f2_3 = ((z3 - posZ) * (x1 - posX)) - ((x3 - posX) * (z1 - posZ)); - if (temp_f2_3 != 0) { - if ((temp_f0_2 * temp_f2_3) < 0.0f) { - bool = 0; + crossProductZX_3 = ((z3 - posZ) * (x1 - posX)) - ((x3 - posX) * (z1 - posZ)); + if (crossProductZX_3 != 0) { + if ((crossProductZX_2 * crossProductZX_3) < 0.0f) { + b = false; } } } } } - return bool; + return b; } s8 get_surface_type(u16 index) { - mk64_surface_map_ram *tile = &gSurfaceMap[index]; - return tile->surfaceType; + CollisionTriangle *triangle = &gCollisionMesh[index]; + return triangle->surfaceType; } -s16 get_course_section(u16 index) { - mk64_surface_map_ram *tile = &gSurfaceMap[index]; - return tile->flags & 0xFF; +s16 get_section_id(u16 index) { + CollisionTriangle *triangle = &gCollisionMesh[index]; + return triangle->flags & 0xFF; } s16 func_802ABD7C(u16 index) { - mk64_surface_map_ram *tile = &gSurfaceMap[index]; - return tile->flags & 0x1000; + CollisionTriangle *triangle = &gCollisionMesh[index]; + return triangle->flags & 0x1000; } s16 func_802ABDB8(u16 index) { - mk64_surface_map_ram *tile = &gSurfaceMap[index]; - return tile->flags & 0x400; + CollisionTriangle *triangle = &gCollisionMesh[index]; + return triangle->flags & 0x400; } s16 func_802ABDF4(u16 index) { - mk64_surface_map_ram *tile = &gSurfaceMap[index]; - return tile->flags & 0x800; + CollisionTriangle *triangle = &gCollisionMesh[index]; + return triangle->flags & 0x800; } -f32 func_802ABE30(f32 x, f32 y, f32 z, u16 index) { - mk64_surface_map_ram *tile = &gSurfaceMap[index]; - if (tile->gravity == 0.0f) { +f32 calculate_surface_height(f32 x, f32 y, f32 z, u16 index) { + CollisionTriangle *triangle = &gCollisionMesh[index]; + if (triangle->normalY == 0.0f) { return y; } - return ((tile->height * x) + (tile->rotation * z) + tile->height2) / -tile->gravity; + return ((triangle->normalX * x) + (triangle->normalZ * z) + triangle->distance) / -triangle->normalY; } f32 func_802ABEAC(Collision *collision, Vec3f pos) { if (collision->unk34 == 1) { - return func_802ABE30(pos[0], pos[1], pos[2], collision->unk3A); + return calculate_surface_height(pos[0], pos[1], pos[2], collision->meshIndexZX); } if (collision->unk30 == 1) { - return func_802ABE30(pos[0], pos[1], pos[2], collision->unk36); + return calculate_surface_height(pos[0], pos[1], pos[2], collision->meshIndexYX); } if (collision->unk32 == 1) { - return func_802ABE30(pos[0], pos[1], pos[2], collision->unk38); + return calculate_surface_height(pos[0], pos[1], pos[2], collision->meshIndexZY); } return pos[1]; } @@ -551,7 +550,7 @@ void process_shell_collision(Vec3f pos, UNUSED f32 boundingBoxSize, Vec3f veloci UNUSED f32 y2; f32 velocityMagnitude; UNUSED f32 z2; - f32 temp; + f32 scaleFactor; x = velocity[0]; y = velocity[1]; @@ -577,27 +576,27 @@ void process_shell_collision(Vec3f pos, UNUSED f32 boundingBoxSize, Vec3f veloci magnitude = sqrtf((x * x) + (y * y) + (z * z)); - temp = 1.0f / magnitude * velocityMagnitude; + scaleFactor = 1.0f / magnitude * velocityMagnitude; - velocity[0] = x * temp; - velocity[1] = y * temp; - velocity[2] = z * temp; + velocity[0] = x * scaleFactor; + velocity[1] = y * scaleFactor; + velocity[2] = z * scaleFactor; } void shell_collision(Collision *collision, Vec3f velocity) { - if (collision->unk3C[0] < 0.0f) { - process_shell_collision(collision->unk48, collision->unk3C[0], velocity, 2.0f); + if (collision->surfaceDistance[0] < 0.0f) { + process_shell_collision(collision->unk48, collision->surfaceDistance[0], velocity, 2.0f); } - if (collision->unk3C[1] < 0.0f) { - process_shell_collision(collision->unk54, collision->unk3C[1], velocity, 2.0f); + if (collision->surfaceDistance[1] < 0.0f) { + process_shell_collision(collision->unk54, collision->surfaceDistance[1], velocity, 2.0f); } } /** * Adjusts the position of pos2 based on pos1 but in the orthogonal direction to pos2. */ -void func_802AC114(Vec3f pos1, f32 boundingBoxSize, Vec3f pos2, UNUSED f32 unk) { +void adjust_pos_orthogonally(Vec3f pos1, f32 boundingBoxSize, Vec3f pos2, UNUSED f32 unk) { f32 x1; f32 y1; f32 z1; @@ -633,134 +632,124 @@ void func_802AC114(Vec3f pos1, f32 boundingBoxSize, Vec3f pos2, UNUSED f32 unk) } } -s32 func_802AC22C(KartBoundingBoxCorner *arg0) { - Collision spD0; - s32 stackPadding0; - s32 stackPadding1; - s32 stackPadding2; - s32 stackPadding3; - s32 stackPadding4; - s32 stackPadding5; - s32 stackPadding6; - s32 stackPadding7; - s32 stackPadding8; - s32 stackPadding9; - s32 stackPaddingA; - s32 stackPaddingB; - s32 temp1; - s32 temp2; - f32 temp_f22; - f32 temp_f24; - f32 temp_f26; - s16 temp_f4; - s16 temp_f6; - u16 var_s2; - u16 temp_v1; - u16 temp_s0; - s16 temp_v1_2; - u16 var_s1; +UNUSED s32 detect_tyre_collision(KartTyre *tyre) { + Collision collision; + UNUSED s32 pad[12]; + s32 courseLengthX; + s32 courseLengthZ; + f32 tyreX; + f32 tyreY; + f32 tyreZ; + s16 sectionIndexX; + s16 sectionIndexZ; + u16 i; + u16 numTriangles; + u16 meshIndex; + s16 gridIndex; + u16 sectionIndex; - spD0.unk30 = 0; - spD0.unk32 = 0; - spD0.unk34 = 0; - spD0.unk3C[0] = 1000.0f; - spD0.unk3C[1] = 1000.0f; - spD0.unk3C[2] = 1000.0f; - temp_f22 = arg0->cornerPos[0]; - temp_f24 = arg0->cornerPos[1]; - temp_f26 = arg0->cornerPos[2]; - switch (arg0->surfaceFlags) { /* irregular */ + collision.unk30 = 0; + collision.unk32 = 0; + collision.unk34 = 0; + collision.surfaceDistance[0] = 1000.0f; + collision.surfaceDistance[1] = 1000.0f; + collision.surfaceDistance[2] = 1000.0f; + tyreX = tyre->pos[0]; + tyreY = tyre->pos[1]; + tyreZ = tyre->pos[2]; + switch (tyre->surfaceFlags) { /* irregular */ case 0x80: - if (func_802AB6C4(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, (u16) (s32) arg0->surfaceMapIndex) == 1) { - arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, arg0->surfaceMapIndex); + if (check_collision_zy(&collision, 5.0f, tyreX, tyreY, tyreZ, (u16) (s32) tyre->collisionMeshIndex) == 1) { + tyre->baseHeight = calculate_surface_height(tyreX, tyreY, tyreZ, tyre->collisionMeshIndex); return 1; } break; case 0x40: - if (func_802AAE4C(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, (u16) (s32) arg0->surfaceMapIndex) == 1) { - arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, arg0->surfaceMapIndex); + if (check_collision_zx(&collision, 5.0f, tyreX, tyreY, tyreZ, (u16) (s32) tyre->collisionMeshIndex) == 1) { + tyre->baseHeight = calculate_surface_height(tyreX, tyreY, tyreZ, tyre->collisionMeshIndex); return 1; } break; case 0x20: - if (func_802AB288(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, (u16) (s32) arg0->surfaceMapIndex) == 1) { - arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, arg0->surfaceMapIndex); + if (check_collision_yx(&collision, 5.0f, tyreX, tyreY, tyreZ, (u16) (s32) tyre->collisionMeshIndex) == 1) { + tyre->baseHeight = calculate_surface_height(tyreX, tyreY, tyreZ, tyre->collisionMeshIndex); return 1; } break; default: break; } - temp1 = gCourseMaxX - gCourseMinX; - temp2 = gCourseMaxZ - gCourseMinZ; - temp_f4 = (temp_f22 - gCourseMinX) / (temp1 / 32); - temp_f6 = (temp_f26 - gCourseMinZ) / (temp2 / 32); - if (temp_f4 < 0) { + courseLengthX = gCourseMaxX - gCourseMinX; + courseLengthZ = gCourseMaxZ - gCourseMinZ; + sectionIndexX = (tyreX - gCourseMinX) / (courseLengthX / GRID_SIZE); + sectionIndexZ = (tyreZ - gCourseMinZ) / (courseLengthZ / GRID_SIZE); + if (sectionIndexX < 0) { return 0; } - if (temp_f6 < 0) { + if (sectionIndexZ < 0) { return 0; } - if (temp_f4 >= 0x20) { + if (sectionIndexX >= GRID_SIZE) { return 0; } - if (temp_f6 >= 0x20) { + if (sectionIndexZ >= GRID_SIZE) { return 0; } - temp_v1_2 = (temp_f4 + temp_f6 * 32); - temp_v1 = D_8014F110[temp_v1_2].unk2; - if (temp_v1 == 0) { + gridIndex = (sectionIndexX + sectionIndexZ * GRID_SIZE); + numTriangles = gCollisionGrid[gridIndex].numTriangles; + if (numTriangles == 0) { return 0; } - var_s1 = D_8014F110[temp_v1_2].unk0; - for (var_s2 = 0; var_s2 < temp_v1; var_s2++) { - temp_s0 = D_8015F584[var_s1]; - if (gSurfaceMap[temp_s0].flags & 0x4000) { - if (temp_s0 != arg0->surfaceMapIndex) { - if (func_802AAE4C(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, temp_s0) == 1) { - arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, temp_s0); - arg0->surfaceType = gSurfaceMap[temp_s0].surfaceType; - arg0->surfaceFlags = 0x40; - arg0->surfaceMapIndex = temp_s0; - if (gSurfaceMap[temp_s0].flags & 0x1000) { - arg0->unk_14 = 1; + sectionIndex = gCollisionGrid[gridIndex].triangle; + for (i = 0; i < numTriangles; i++) { + meshIndex = gCollisionIndices[sectionIndex]; + if (gCollisionMesh[meshIndex].flags & FACING_Y_AXIS) { + if (meshIndex != tyre->collisionMeshIndex) { + if (check_collision_zx(&collision, 5.0f, tyreX, tyreY, tyreZ, meshIndex) == 1) { + tyre->baseHeight = calculate_surface_height(tyreX, tyreY, tyreZ, meshIndex); + tyre->surfaceType = gCollisionMesh[meshIndex].surfaceType; + tyre->surfaceFlags = 0x40; + tyre->collisionMeshIndex = meshIndex; + if (gCollisionMesh[meshIndex].flags & 0x1000) { + tyre->unk_14 = 1; } else { - arg0->unk_14 = 0; + tyre->unk_14 = 0; } return 1; } } - } else if (gSurfaceMap[temp_s0].flags & 0x8000) { - if ((gSurfaceMap[temp_s0].height != 1.0f) && (temp_s0 != arg0->surfaceMapIndex)) { - if (func_802AB6C4(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, temp_s0) == 1) { - arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, temp_s0); - arg0->surfaceType = gSurfaceMap[temp_s0].surfaceType; - arg0->surfaceFlags = 0x80; - arg0->surfaceMapIndex = temp_s0; + } else if (gCollisionMesh[meshIndex].flags & FACING_X_AXIS) { + if ((gCollisionMesh[meshIndex].normalX != 1.0f) && (meshIndex != tyre->collisionMeshIndex)) { + if (check_collision_zy(&collision, 5.0f, tyreX, tyreY, tyreZ, meshIndex) == 1) { + tyre->baseHeight = calculate_surface_height(tyreX, tyreY, tyreZ, meshIndex); + tyre->surfaceType = gCollisionMesh[meshIndex].surfaceType; + tyre->surfaceFlags = 0x80; + tyre->collisionMeshIndex = meshIndex; return 1; } } - } else if ((gSurfaceMap[temp_s0].rotation != 1.0f) && (temp_s0 != arg0->surfaceMapIndex)) { - if (func_802AB288(&spD0, 5.0f, temp_f22, temp_f24, temp_f26, temp_s0) == 1) { - arg0->cornerGroundY = func_802ABE30(temp_f22, temp_f24, temp_f26, temp_s0); - arg0->surfaceType = gSurfaceMap[temp_s0].surfaceType; - arg0->surfaceFlags = 0x20; - arg0->surfaceMapIndex = temp_s0; + } else if ((gCollisionMesh[meshIndex].normalZ != 1.0f) && (meshIndex != tyre->collisionMeshIndex)) { + if (check_collision_yx(&collision, 5.0f, tyreX, tyreY, tyreZ, meshIndex) == 1) { + tyre->baseHeight = calculate_surface_height(tyreX, tyreY, tyreZ, meshIndex); + tyre->surfaceType = gCollisionMesh[meshIndex].surfaceType; + tyre->surfaceFlags = 0x20; + tyre->collisionMeshIndex = meshIndex; return 1; } } - var_s1++; + sectionIndex++; } - arg0->cornerGroundY = temp_f24; - arg0->surfaceType = 0; + tyre->baseHeight = tyreY; + tyre->surfaceType = 0; + //! @bug // Another function that has a return value but doesn't have an explicit return statement in one of its codepaths. // The return value at this point will be whatever was last returned by func_802AAE4C/func_802AB6C4/func_802AB288 // depending on which (if any) if statements were entered on the loop's last cycle } s32 is_colliding_with_drivable_surface(Collision *collision, f32 boundingBoxSize, f32 x1, f32 y1, f32 z1, u16 index, f32 posX, f32 posY, f32 posZ) { - mk64_surface_map_ram *tile = &gSurfaceMap[index]; + CollisionTriangle *triangle = &gCollisionMesh[index]; UNUSED s32 pad; f32 x4; UNUSED f32 y4; @@ -771,38 +760,38 @@ s32 is_colliding_with_drivable_surface(Collision *collision, f32 boundingBoxSize f32 x2; UNUSED f32 y2; f32 z2; - f32 temp_f0_4; + f32 surfaceDistance; f32 temp; UNUSED s32 pad2[2]; f32 area; f32 area2; f32 area3; - s32 bool = 1; + s32 b = 1; - if (tile->vtx31 > x1) { + if (triangle->minX > x1) { return 0; } - if (tile->vtx33 > z1) { + if (triangle->minZ > z1) { return 0; } - if (tile->vtx21 < x1) { + if (triangle->maxX < x1) { return 0; } - if (tile->vtx23 < z1) { + if (triangle->maxZ < z1) { return 0; } - if ((tile->vtx32 - boundingBoxSize * 3.0f) > y1) { + if ((triangle->minY - boundingBoxSize * 3.0f) > y1) { return 0; } - x2 = (f32) tile->vtxPoly1->v.ob[0]; - z2 = (f32) tile->vtxPoly1->v.ob[2]; + x2 = (f32) triangle->vtx1->v.ob[0]; + z2 = (f32) triangle->vtx1->v.ob[2]; - x3 = (f32) tile->vtxPoly2->v.ob[0]; - z3 = (f32) tile->vtxPoly2->v.ob[2]; + x3 = (f32) triangle->vtx2->v.ob[0]; + z3 = (f32) triangle->vtx2->v.ob[2]; - x4 = (f32) tile->vtxPoly3->v.ob[0]; - z4 = (f32) tile->vtxPoly3->v.ob[2]; + x4 = (f32) triangle->vtx3->v.ob[0]; + z4 = (f32) triangle->vtx3->v.ob[2]; area = (z2 - z1) * (x3 - x1) - (x2 - x1) * (z3 - z1); @@ -810,7 +799,7 @@ s32 is_colliding_with_drivable_surface(Collision *collision, f32 boundingBoxSize area2 = (z3 - z1) * (x4 - x1) - (x3 - x1) * (z4 - z1); area3 = (z4 - z1) * (x2 - x1) - (x4 - x1) * (z2 - z1); if (area2 * area3 < 0.0f) { - bool = 0; + b = 0; } } else { @@ -822,50 +811,50 @@ s32 is_colliding_with_drivable_surface(Collision *collision, f32 boundingBoxSize area3 = (z4 - z1) * (x2 - x1) - (x4 - x1) * (z2 - z1); if (area * area3 < 0.0f) { - bool = 0; + b = 0; } } else { if ((area * area2) < 0.0f) { - bool = 0; + b = 0; } else { area3 = (z4- z1) * (x2 - x1) - (x4 - x1) * (z2 - z1); if (area3 != 0) { if (area2 * area3 < 0.0f) { - bool = 0; + b = 0; } } } } } - if (bool == 0) { + if (b == 0) { return 0; } - temp_f0_4 = (tile->height * x1) + (tile->gravity * y1) + (tile->rotation * z1) + tile->height2; + surfaceDistance = (triangle->normalX * x1) + (triangle->normalY * y1) + (triangle->normalZ * z1) + triangle->distance; - if (temp_f0_4 > boundingBoxSize) { - if (collision->unk3C[2] > temp_f0_4) { + if (surfaceDistance > boundingBoxSize) { + if (collision->surfaceDistance[2] > surfaceDistance) { collision->unk34 = 1; - collision->unk3A = index; - collision->unk3C[2] = temp_f0_4 - boundingBoxSize; - collision->orientationVector[0] = tile->height; - collision->orientationVector[1] = tile->gravity; - collision->orientationVector[2] = tile->rotation; + collision->meshIndexZX = index; + collision->surfaceDistance[2] = surfaceDistance - boundingBoxSize; + collision->orientationVector[0] = triangle->normalX; + collision->orientationVector[1] = triangle->normalY; + collision->orientationVector[2] = triangle->normalZ; } return 0; } - temp = (tile->height * posX) + (tile->gravity * posY) + (tile->rotation * posZ) + tile->height2; + temp = (triangle->normalX * posX) + (triangle->normalY * posY) + (triangle->normalZ * posZ) + triangle->distance; if (temp < 0.0f) { return 0; } collision->unk34 = 1; - collision->unk3A = index; - collision->unk3C[2] = temp_f0_4 - boundingBoxSize; - collision->orientationVector[0] = tile->height; - collision->orientationVector[1] = tile->gravity; - collision->orientationVector[2] = tile->rotation; + collision->meshIndexZX = index; + collision->surfaceDistance[2] = surfaceDistance - boundingBoxSize; + collision->orientationVector[0] = triangle->normalX; + collision->orientationVector[1] = triangle->normalY; + collision->orientationVector[2] = triangle->normalZ; return 1; } @@ -873,7 +862,7 @@ s32 is_colliding_with_drivable_surface(Collision *collision, f32 boundingBoxSize * Wall collision */ s32 is_colliding_with_wall2(Collision *arg, f32 boundingBoxSize, f32 x1, f32 y1, f32 z1, u16 arg5, f32 arg6, f32 arg7, f32 arg8) { - mk64_surface_map_ram *tile = &gSurfaceMap[arg5]; + CollisionTriangle *triangle = &gCollisionMesh[arg5]; UNUSED s32 pad[6]; f32 x4; f32 y4; @@ -882,40 +871,40 @@ s32 is_colliding_with_wall2(Collision *arg, f32 boundingBoxSize, f32 x1, f32 y1, f32 x2; f32 y2; UNUSED s32 pad2[3]; - f32 temp_f0_4; - f32 temp_f4_2; + f32 distanceToSurface; + f32 distanceToSurface2; UNUSED s32 pad3[2]; f32 area; f32 area2; f32 area3; - s32 bool = 1; - if (tile->vtx31 > x1) { + s32 b = true; + if (triangle->minX > x1) { return 0; } - if (tile->vtx21 < x1) { + if (triangle->maxX < x1) { return 0; } - if (tile->vtx22 < y1) { + if (triangle->maxY < y1) { return 0; } - if (tile->vtx32 > y1) { + if (triangle->minY > y1) { return 0; } - if ((tile->vtx33 - boundingBoxSize * 3.0f) > z1) { + if ((triangle->minZ - boundingBoxSize * 3.0f) > z1) { return 0; } - if ((tile->vtx23 + boundingBoxSize * 3.0f) < z1) { + if ((triangle->maxZ + boundingBoxSize * 3.0f) < z1) { return 0; } - x2 = (f32) tile->vtxPoly1->v.ob[0]; - y2 = (f32) tile->vtxPoly1->v.ob[1]; + x2 = (f32) triangle->vtx1->v.ob[0]; + y2 = (f32) triangle->vtx1->v.ob[1]; - x3 = (f32) tile->vtxPoly2->v.ob[0]; - y3 = (f32) tile->vtxPoly2->v.ob[1]; + x3 = (f32) triangle->vtx2->v.ob[0]; + y3 = (f32) triangle->vtx2->v.ob[1]; - x4 = (f32) tile->vtxPoly3->v.ob[0]; - y4 = (f32) tile->vtxPoly3->v.ob[1]; + x4 = (f32) triangle->vtx3->v.ob[0]; + y4 = (f32) triangle->vtx3->v.ob[1]; area = (y2 - y1) * (x3 - x1) - (x2 - x1) * (y3 - y1); @@ -925,7 +914,7 @@ s32 is_colliding_with_wall2(Collision *arg, f32 boundingBoxSize, f32 x1, f32 y1, if (area2 * area3 < 0.0f) { - bool = 0; + b = false; } } else { @@ -936,116 +925,115 @@ s32 is_colliding_with_wall2(Collision *arg, f32 boundingBoxSize, f32 x1, f32 y1, if ((area * area3) < 0.0f) { - bool = 0; + b = false; } } else { if ((area * area2) < 0.0f) { - bool = 0; + b = false; } else { area3 = (y4 - y1) * (x2 - x1) - (x4 - x1) * (y2 - y1); if (area3 != 0) { if ((area2 * area3) < 0.0f) { - bool = 0; + b = false; } } } } } - if (bool == 0) { + if (!b) { return 0; } - temp_f0_4 = ((tile->height * x1) + (tile->gravity * y1) + (tile->rotation * z1)) + tile->height2; - if (tile->flags & 0x200) { - temp_f4_2 = ((tile->height * arg6) + (tile->gravity * arg7) + (tile->rotation * arg8)) + tile->height2; - //sp48 = temp_f4_2; - if ((temp_f0_4 > 0.0f) && (temp_f4_2 > 0.0f)) { - if (temp_f0_4 < boundingBoxSize) { + distanceToSurface = ((triangle->normalX * x1) + (triangle->normalY * y1) + (triangle->normalZ * z1)) + triangle->distance; + if (triangle->flags & 0x200) { + distanceToSurface2 = ((triangle->normalX * arg6) + (triangle->normalY * arg7) + (triangle->normalZ * arg8)) + triangle->distance; + if ((distanceToSurface > 0.0f) && (distanceToSurface2 > 0.0f)) { + if (distanceToSurface < boundingBoxSize) { arg->unk30 = 1; - arg->unk36 = arg5; - arg->unk3C[0] = temp_f0_4 - boundingBoxSize; - arg->unk48[0] = tile->height; - arg->unk48[1] = tile->gravity; - arg->unk48[2] = tile->rotation; + arg->meshIndexYX = arg5; + arg->surfaceDistance[0] = distanceToSurface - boundingBoxSize; + arg->unk48[0] = triangle->normalX; + arg->unk48[1] = triangle->normalY; + arg->unk48[2] = triangle->normalZ; return 1; } return 0; } - if ((temp_f0_4 < 0.0f) && (temp_f4_2 < 0.0f)) { - temp_f0_4 *= -1.0f; - if (temp_f0_4 < boundingBoxSize) { + if ((distanceToSurface < 0.0f) && (distanceToSurface2 < 0.0f)) { + distanceToSurface *= -1.0f; + if (distanceToSurface < boundingBoxSize) { arg->unk30 = 1; - arg->unk36 = arg5; - arg->unk3C[0] = temp_f0_4 - boundingBoxSize; - arg->unk48[0] = -tile->height; - arg->unk48[1] = -tile->gravity; - arg->unk48[2] = -tile->rotation; + arg->meshIndexYX = arg5; + arg->surfaceDistance[0] = distanceToSurface - boundingBoxSize; + arg->unk48[0] = -triangle->normalX; + arg->unk48[1] = -triangle->normalY; + arg->unk48[2] = -triangle->normalZ; return 1; } return 0; } - if ((temp_f0_4 > 0.0f) && (temp_f4_2 < 0.0f)) { + if ((distanceToSurface > 0.0f) && (distanceToSurface2 < 0.0f)) { arg->unk30 = 1; - arg->unk36 = arg5; - arg->unk3C[0] = -(temp_f0_4 + boundingBoxSize); - arg->unk48[0] = -tile->height; - arg->unk48[1] = -tile->gravity; - arg->unk48[2] = -tile->rotation; + arg->meshIndexYX = arg5; + arg->surfaceDistance[0] = -(distanceToSurface + boundingBoxSize); + arg->unk48[0] = -triangle->normalX; + arg->unk48[1] = -triangle->normalY; + arg->unk48[2] = -triangle->normalZ; return 1; } - if ((temp_f0_4 < 0.0f) && (temp_f4_2 > 0.0f)) { + if ((distanceToSurface < 0.0f) && (distanceToSurface2 > 0.0f)) { arg->unk30 = 1; - arg->unk36 = arg5; - arg->unk3C[0] = temp_f0_4 + boundingBoxSize; - arg->unk48[0] = tile->height; - arg->unk48[1] = tile->gravity; - arg->unk48[2] = tile->rotation; + arg->meshIndexYX = arg5; + arg->surfaceDistance[0] = distanceToSurface + boundingBoxSize; + arg->unk48[0] = triangle->normalX; + arg->unk48[1] = triangle->normalY; + arg->unk48[2] = triangle->normalZ; return 1; } - if (temp_f0_4 == 0.0f) { - if (temp_f4_2 >= 0.0f) { + if (distanceToSurface == 0.0f) { + if (distanceToSurface2 >= 0.0f) { arg->unk30 = 1; - arg->unk36 = arg5; - arg->unk3C[0] = temp_f4_2 + boundingBoxSize; - arg->unk48[0] = tile->height; - arg->unk48[1] = tile->gravity; - arg->unk48[2] = tile->rotation; + arg->meshIndexYX = arg5; + arg->surfaceDistance[0] = distanceToSurface2 + boundingBoxSize; + arg->unk48[0] = triangle->normalX; + arg->unk48[1] = triangle->normalY; + arg->unk48[2] = triangle->normalZ; return 1; } arg->unk30 = 1; - arg->unk36 = arg5; - arg->unk3C[0] = -(temp_f4_2 + boundingBoxSize); - arg->unk48[0] = tile->height; - arg->unk48[1] = tile->gravity; - arg->unk48[2] = tile->rotation; + arg->meshIndexYX = arg5; + arg->surfaceDistance[0] = -(distanceToSurface2 + boundingBoxSize); + arg->unk48[0] = triangle->normalX; + arg->unk48[1] = triangle->normalY; + arg->unk48[2] = triangle->normalZ; return 1; } return 0; } - if (temp_f0_4 > boundingBoxSize) { - if (temp_f0_4 < arg->unk3C[0]) { + if (distanceToSurface > boundingBoxSize) { + if (distanceToSurface < arg->surfaceDistance[0]) { arg->unk30 = 1; - arg->unk36 = arg5; - arg->unk3C[0] = temp_f0_4 - boundingBoxSize; - arg->unk48[0] = tile->height; - arg->unk48[1] = tile->gravity; - arg->unk48[2] = tile->rotation; + arg->meshIndexYX = arg5; + arg->surfaceDistance[0] = distanceToSurface - boundingBoxSize; + arg->unk48[0] = triangle->normalX; + arg->unk48[1] = triangle->normalY; + arg->unk48[2] = triangle->normalZ; } return 0; } - temp_f4_2 = (tile->height * arg6) + (tile->gravity * arg7) + (tile->rotation * arg8) + tile->height2; - if (temp_f4_2 < 0.0f) { + distanceToSurface2 = (triangle->normalX * arg6) + (triangle->normalY * arg7) + (triangle->normalZ * arg8) + triangle->distance; + if (distanceToSurface2 < 0.0f) { return 0; } arg->unk30 = 1; - arg->unk36 = arg5; - arg->unk3C[0] = temp_f0_4 - boundingBoxSize; - arg->unk48[0] = tile->height; - arg->unk48[1] = tile->gravity; - arg->unk48[2] = tile->rotation; + arg->meshIndexYX = arg5; + arg->surfaceDistance[0] = distanceToSurface - boundingBoxSize; + arg->unk48[0] = triangle->normalX; + arg->unk48[1] = triangle->normalY; + arg->unk48[2] = triangle->normalZ; return 1; } @@ -1053,8 +1041,8 @@ s32 is_colliding_with_wall2(Collision *arg, f32 boundingBoxSize, f32 x1, f32 y1, * This is actually more like colliding with face X/Y/Z */ s32 is_colliding_with_wall1(Collision *arg, f32 boundingBoxSize, f32 x1, f32 y1, f32 z1, u16 arg5, f32 arg6, f32 arg7, f32 arg8) { - mk64_surface_map_ram *tile = &gSurfaceMap[arg5]; - s32 bool = 1; + CollisionTriangle *triangle = &gCollisionMesh[arg5]; + s32 b = 1; UNUSED s32 pad[7]; f32 y4; f32 z4; @@ -1063,40 +1051,40 @@ s32 is_colliding_with_wall1(Collision *arg, f32 boundingBoxSize, f32 x1, f32 y1, f32 y2; f32 z2; UNUSED s32 pad3[2]; - f32 temp_f0_4; - f32 temp_f4_2; + f32 distanceToSurface; + f32 distanceToSurface2; UNUSED s32 pad4[2]; f32 area; f32 area2; f32 area3; - if (tile->vtx33 > z1) { + if (triangle->minZ > z1) { return 0; } - if (tile->vtx23 < z1) { + if (triangle->maxZ < z1) { return 0; } - if (tile->vtx22 < y1) { + if (triangle->maxY < y1) { return 0; } - if (tile->vtx32 > y1) { + if (triangle->minY > y1) { return 0; } - if ((tile->vtx31 - boundingBoxSize * 3.0f) > x1) { + if ((triangle->minX - boundingBoxSize * 3.0f) > x1) { return 0; } - if ((tile->vtx21 + boundingBoxSize * 3.0f) < x1) { + if ((triangle->maxX + boundingBoxSize * 3.0f) < x1) { return 0; } - z2 = (f32) tile->vtxPoly1->v.ob[2]; - y2 = (f32) tile->vtxPoly1->v.ob[1]; + z2 = (f32) triangle->vtx1->v.ob[2]; + y2 = (f32) triangle->vtx1->v.ob[1]; - z3 = (f32) tile->vtxPoly2->v.ob[2]; - y3 = (f32) tile->vtxPoly2->v.ob[1]; + z3 = (f32) triangle->vtx2->v.ob[2]; + y3 = (f32) triangle->vtx2->v.ob[1]; - z4 = (f32) tile->vtxPoly3->v.ob[2]; - y4 = (f32) tile->vtxPoly3->v.ob[1]; + z4 = (f32) triangle->vtx3->v.ob[2]; + y4 = (f32) triangle->vtx3->v.ob[1]; area = (y2 - y1) * (z3 - z1) - (z2 - z1) * (y3 - y1); @@ -1106,7 +1094,7 @@ s32 is_colliding_with_wall1(Collision *arg, f32 boundingBoxSize, f32 x1, f32 y1, if (area2 * area3 < 0.0f) { - bool = 0; + b = 0; } } else { @@ -1117,399 +1105,400 @@ s32 is_colliding_with_wall1(Collision *arg, f32 boundingBoxSize, f32 x1, f32 y1, if ((area * area3) < 0.0f) { - bool = 0; + b = 0; } } else { if ((area * area2) < 0.0f) { - bool = 0; + b = 0; } else { area3 = (y4 - y1) * (z2 - z1) - (z4 - z1) * (y2 - y1); if (area3 != 0) { if ((area2 * area3) < 0.0f) { - bool = 0; + b = 0; } } } } } - if (bool == 0) { + if (b == 0) { return 0; } - temp_f0_4 = ((tile->height * x1) + (tile->gravity * y1) + (tile->rotation * z1)) + tile->height2; - if (tile->flags & 0x200) { - temp_f4_2 = ((tile->height * arg6) + (tile->gravity * arg7) + (tile->rotation * arg8)) + tile->height2; + distanceToSurface = ((triangle->normalX * x1) + (triangle->normalY * y1) + (triangle->normalZ * z1)) + triangle->distance; + if (triangle->flags & 0x200) { + distanceToSurface2 = ((triangle->normalX * arg6) + (triangle->normalY * arg7) + (triangle->normalZ * arg8)) + triangle->distance; //sp48 = temp_f4_2; - if ((temp_f0_4 > 0.0f) && (temp_f4_2 > 0.0f)) { - if (temp_f0_4 < boundingBoxSize) { + if ((distanceToSurface > 0.0f) && (distanceToSurface2 > 0.0f)) { + if (distanceToSurface < boundingBoxSize) { arg->unk32 = 1; - arg->unk38 = arg5; - arg->unk3C[1] = temp_f0_4 - boundingBoxSize; - arg->unk54[0] = tile->height; - arg->unk54[1] = tile->gravity; - arg->unk54[2] = tile->rotation; + arg->meshIndexZY = arg5; + arg->surfaceDistance[1] = distanceToSurface - boundingBoxSize; + arg->unk54[0] = triangle->normalX; + arg->unk54[1] = triangle->normalY; + arg->unk54[2] = triangle->normalZ; return 1; } return 0; } - if ((temp_f0_4 < 0.0f) && (temp_f4_2 < 0.0f)) { - temp_f0_4 *= -1.0f; - if (temp_f0_4 < boundingBoxSize) { + if ((distanceToSurface < 0.0f) && (distanceToSurface2 < 0.0f)) { + distanceToSurface *= -1.0f; + if (distanceToSurface < boundingBoxSize) { arg->unk32 = 1; - arg->unk38 = arg5; - arg->unk3C[1] = temp_f0_4 - boundingBoxSize; - arg->unk54[0] = -tile->height; - arg->unk54[1] = -tile->gravity; - arg->unk54[2] = -tile->rotation; + arg->meshIndexZY = arg5; + arg->surfaceDistance[1] = distanceToSurface - boundingBoxSize; + arg->unk54[0] = -triangle->normalX; + arg->unk54[1] = -triangle->normalY; + arg->unk54[2] = -triangle->normalZ; return 1; } return 0; } - if ((temp_f0_4 > 0.0f) && (temp_f4_2 < 0.0f)) { + if ((distanceToSurface > 0.0f) && (distanceToSurface2 < 0.0f)) { arg->unk32 = 1; - arg->unk38 = arg5; - arg->unk3C[1] = -(temp_f0_4 + boundingBoxSize); - arg->unk54[0] = -tile->height; - arg->unk54[1] = -tile->gravity; - arg->unk54[2] = -tile->rotation; + arg->meshIndexZY = arg5; + arg->surfaceDistance[1] = -(distanceToSurface + boundingBoxSize); + arg->unk54[0] = -triangle->normalX; + arg->unk54[1] = -triangle->normalY; + arg->unk54[2] = -triangle->normalZ; return 1; } - if ((temp_f0_4 < 0.0f) && (temp_f4_2 > 0.0f)) { + if ((distanceToSurface < 0.0f) && (distanceToSurface2 > 0.0f)) { arg->unk32 = 1; - arg->unk38 = arg5; - arg->unk3C[1] = temp_f0_4 + boundingBoxSize; - arg->unk54[0] = tile->height; - arg->unk54[1] = tile->gravity; - arg->unk54[2] = tile->rotation; + arg->meshIndexZY = arg5; + arg->surfaceDistance[1] = distanceToSurface + boundingBoxSize; + arg->unk54[0] = triangle->normalX; + arg->unk54[1] = triangle->normalY; + arg->unk54[2] = triangle->normalZ; return 1; } - if (temp_f0_4 == 0.0f) { - if (temp_f4_2 >= 0.0f) { + if (distanceToSurface == 0.0f) { + if (distanceToSurface2 >= 0.0f) { arg->unk32 = 1; - arg->unk38 = arg5; - arg->unk3C[1] = temp_f4_2 + boundingBoxSize; - arg->unk54[0] = tile->height; - arg->unk54[1] = tile->gravity; - arg->unk54[2] = tile->rotation; + arg->meshIndexZY = arg5; + arg->surfaceDistance[1] = distanceToSurface2 + boundingBoxSize; + arg->unk54[0] = triangle->normalX; + arg->unk54[1] = triangle->normalY; + arg->unk54[2] = triangle->normalZ; return 1; } arg->unk32 = 1; - arg->unk38 = arg5; - arg->unk3C[1] = -(temp_f4_2 + boundingBoxSize); - arg->unk54[0] = tile->height; - arg->unk54[1] = tile->gravity; - arg->unk54[2] = tile->rotation; + arg->meshIndexZY = arg5; + arg->surfaceDistance[1] = -(distanceToSurface2 + boundingBoxSize); + arg->unk54[0] = triangle->normalX; + arg->unk54[1] = triangle->normalY; + arg->unk54[2] = triangle->normalZ; return 1; } return 0; } - if (temp_f0_4 > boundingBoxSize) { - if (arg->unk3C[1] > temp_f0_4) { + if (distanceToSurface > boundingBoxSize) { + if (arg->surfaceDistance[1] > distanceToSurface) { arg->unk32 = 1; - arg->unk38 = arg5; - arg->unk3C[1] = temp_f0_4 - boundingBoxSize; - arg->unk54[0] = tile->height; - arg->unk54[1] = tile->gravity; - arg->unk54[2] = tile->rotation; + arg->meshIndexZY = arg5; + arg->surfaceDistance[1] = distanceToSurface - boundingBoxSize; + arg->unk54[0] = triangle->normalX; + arg->unk54[1] = triangle->normalY; + arg->unk54[2] = triangle->normalZ; } return 0; } - temp_f4_2 = (tile->height * arg6) + (tile->gravity * arg7) + (tile->rotation * arg8) + tile->height2; - if (temp_f4_2 < 0.0f) { + distanceToSurface2 = (triangle->normalX * arg6) + (triangle->normalY * arg7) + (triangle->normalZ * arg8) + triangle->distance; + if (distanceToSurface2 < 0.0f) { return 0; } arg->unk32 = 1; - arg->unk38 = arg5; - arg->unk3C[1] = temp_f0_4 - boundingBoxSize; - arg->unk54[0] = tile->height; - arg->unk54[1] = tile->gravity; - arg->unk54[2] = tile->rotation; + arg->meshIndexZY = arg5; + arg->surfaceDistance[1] = distanceToSurface - boundingBoxSize; + arg->unk54[0] = triangle->normalX; + arg->unk54[1] = triangle->normalY; + arg->unk54[2] = triangle->normalZ; return 1; } -u16 func_802AD950(Collision *collision, f32 boundingBoxSize, f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z2) { - s32 temp_v0_4; - s32 temp_v1; - s16 temp_f10; - s16 temp_f16; - u16 temp_s6; - u16 surfaceIndex; - s16 temp_v1_2; - - u16 phi_s2; - +u16 actor_terrain_collision(Collision *collision, f32 boundingBoxSize, f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z2) { + s32 courseLengthX; + s32 courseLengthZ; + s16 sectionIndexX; + s16 sectionIndexZ; + u16 numTriangles; + u16 collisionIndex; + s16 gridIndex; + u16 sectionIndex; u16 flags = 0; - s32 temp1; - s32 temp2; + s32 sectionX; + s32 sectionZ; u16 i; collision->unk30 = 0; collision->unk32 = 0; collision->unk34 = 0; - collision->unk3C[0] = 1000.0f; - collision->unk3C[1] = 1000.0f; - collision->unk3C[2] = 1000.0f; + collision->surfaceDistance[0] = 1000.0f; + collision->surfaceDistance[1] = 1000.0f; + collision->surfaceDistance[2] = 1000.0f; - if ((s32) collision->unk3A < (s32) D_8015F588) { - if (is_colliding_with_drivable_surface(collision, boundingBoxSize, x1, y1, z1, collision->unk3A, x2, y2, z2) == 1) { - flags |= 0x4000; + // Check if an intersection test has already been performed. + if ((s32) collision->meshIndexZX < (s32) gCollisionMeshCount) { + if (is_colliding_with_drivable_surface(collision, boundingBoxSize, x1, y1, z1, collision->meshIndexZX, x2, y2, z2) == 1) { + flags |= FACING_Y_AXIS; } } - if ((s32) collision->unk36 < (s32) D_8015F588) { - if (is_colliding_with_wall2(collision, boundingBoxSize, x1, y1, z1, collision->unk36, x2, y2, z2) == 1) { - flags |= 0x2000; + if ((s32) collision->meshIndexYX < (s32) gCollisionMeshCount) { + if (is_colliding_with_wall2(collision, boundingBoxSize, x1, y1, z1, collision->meshIndexYX, x2, y2, z2) == 1) { + flags |= FACING_Z_AXIS; } } - if ((s32) collision->unk38 < (s32) D_8015F588) { - if (is_colliding_with_wall1(collision, boundingBoxSize, x1, y1, z1, collision->unk38, x2, y2, z2) == 1) { - flags |= 0x8000; + if ((s32) collision->meshIndexZY < (s32) gCollisionMeshCount) { + if (is_colliding_with_wall1(collision, boundingBoxSize, x1, y1, z1, collision->meshIndexZY, x2, y2, z2) == 1) { + flags |= FACING_X_AXIS; } } - if (flags == (0x4000 | 0x2000 | 0x8000)) { + if (flags == (FACING_Y_AXIS | FACING_Z_AXIS | FACING_X_AXIS)) { return flags; } + courseLengthX = (s32) gCourseMaxX - gCourseMinX; + courseLengthZ = (s32) gCourseMaxZ - gCourseMinZ; - temp_v0_4 = (s32) gCourseMaxX - gCourseMinX; - temp_v1 = (s32) gCourseMaxZ - gCourseMinZ; + sectionX = courseLengthX / GRID_SIZE; + sectionZ = courseLengthZ / GRID_SIZE; - temp1 = temp_v0_4 / 32; - temp2 = temp_v1 / 32; + sectionIndexX = (x1 - gCourseMinX) / sectionX; + sectionIndexZ = (z1 - gCourseMinZ) / sectionZ; - temp_f10 = (x1 - gCourseMinX) / temp1; - temp_f16 = (z1 - gCourseMinZ) / temp2; - - if (temp_f10 < 0) { + if (sectionIndexX < 0) { return 0; } - if (temp_f16 < 0) { + if (sectionIndexZ < 0) { return 0; } - if (temp_f10 >= 32) { + if (sectionIndexX >= GRID_SIZE) { return 0; } - if (temp_f16 >= 32) { + if (sectionIndexZ >= GRID_SIZE) { return 0; } - temp_v1_2 = (temp_f10 + temp_f16 * 32); - temp_s6 = D_8014F110[temp_v1_2].unk2; + gridIndex = (sectionIndexX + sectionIndexZ * GRID_SIZE); + numTriangles = gCollisionGrid[gridIndex].numTriangles; - if (temp_s6 == 0) { + if (numTriangles == 0) { return flags; } - phi_s2 = D_8014F110[temp_v1_2].unk0; + sectionIndex = gCollisionGrid[gridIndex].triangle; - for (i = 0; i < temp_s6; i++) { - if (flags == (0x4000 | 0x2000 | 0x8000)) { + for (i = 0; i < numTriangles; i++) { + if (flags == (FACING_Y_AXIS | FACING_Z_AXIS | FACING_X_AXIS)) { return flags; } - surfaceIndex = D_8015F584[phi_s2]; + collisionIndex = gCollisionIndices[sectionIndex]; - if ((gSurfaceMap[surfaceIndex].flags & 0x4000)) { - if ((flags & 0x4000) == 0) { - if (surfaceIndex != collision->unk3A) { - if (is_colliding_with_drivable_surface(collision, boundingBoxSize, x1, y1, z1, surfaceIndex, x2, y2, z2) == 1) { - flags |= 0x4000; + if ((gCollisionMesh[collisionIndex].flags & FACING_Y_AXIS)) { + if ((flags & FACING_Y_AXIS) == 0) { + if (collisionIndex != collision->meshIndexZX) { + if (is_colliding_with_drivable_surface(collision, boundingBoxSize, x1, y1, z1, collisionIndex, x2, y2, z2) == 1) { + flags |= FACING_Y_AXIS; } } } - } else if ((gSurfaceMap[surfaceIndex].flags & 0x8000) != 0) { - if ((flags & 0x8000) == 0) { - if (surfaceIndex != collision->unk38) { - if (is_colliding_with_wall1(collision, boundingBoxSize, x1, y1, z1, surfaceIndex, x2, y2, z2) == 1) { - flags |= 0x8000; + } else if ((gCollisionMesh[collisionIndex].flags & FACING_X_AXIS) != 0) { + if ((flags & FACING_X_AXIS) == 0) { + if (collisionIndex != collision->meshIndexZY) { + if (is_colliding_with_wall1(collision, boundingBoxSize, x1, y1, z1, collisionIndex, x2, y2, z2) == 1) { + flags |= FACING_X_AXIS; } } } - } else if ((flags & 0x2000) == 0) { - if (surfaceIndex != collision->unk36) { - if (is_colliding_with_wall2(collision, boundingBoxSize, x1, y1, z1, surfaceIndex, x2, y2, z2) == 1) { - flags |= 0x2000; + } else if ((flags & FACING_Z_AXIS) == 0) { + if (collisionIndex != collision->meshIndexYX) { + if (is_colliding_with_wall2(collision, boundingBoxSize, x1, y1, z1, collisionIndex, x2, y2, z2) == 1) { + flags |= FACING_Z_AXIS; } } } - phi_s2++; - + sectionIndex++; } return flags; } -u16 func_802ADDC8(Collision* collision, f32 boundingBoxSize, f32 posX, f32 posY, f32 posZ) { - u16 temp_v1; - s32 temp_f4; - s32 temp_f6; - u16 temp_v0_4; - s32 temp1; - s32 temp2; - s16 temp_f10; - s16 temp_f16; - s16 temp; +u16 check_bounding_collision(Collision* collision, f32 boundingBoxSize, f32 posX, f32 posY, f32 posZ) { + u16 numTriangles; + s32 courseLengthX; + s32 courseLengthZ; + u16 meshIndex; + s32 sectionX; + s32 sectionZ; + s16 sectionIndexX; + s16 sectionIndexZ; + s16 gridIndex; u16 i; - u16 var_s2; - u16 var_s4; + u16 sectionIndex; + u16 flags; collision->unk30 = 0; collision->unk32 = 0; collision->unk34 = 0; - collision->unk3C[0] = 1000.0f; - collision->unk3C[1] = 1000.0f; - collision->unk3C[2] = 1000.0f; - var_s4 = 0; - if (collision->unk3A < D_8015F588) { - if (func_802AAE4C(collision, boundingBoxSize, posX, posY, posZ, collision->unk3A) == 1) { - var_s4 |= 0x4000; + collision->surfaceDistance[0] = 1000.0f; + collision->surfaceDistance[1] = 1000.0f; + collision->surfaceDistance[2] = 1000.0f; + flags = 0; + if (collision->meshIndexZX < gCollisionMeshCount) { + if (check_collision_zx(collision, boundingBoxSize, posX, posY, posZ, collision->meshIndexZX) == 1) { + flags |= FACING_Y_AXIS; } } - if (collision->unk36 < D_8015F588) { - if (func_802AB288(collision, boundingBoxSize, posX, posY, posZ, collision->unk36) == 1) { - var_s4 |= 0x2000; + if (collision->meshIndexYX < gCollisionMeshCount) { + if (check_collision_yx(collision, boundingBoxSize, posX, posY, posZ, collision->meshIndexYX) == 1) { + flags |= FACING_Z_AXIS; } } - if (collision->unk38 < D_8015F588) { - if (func_802AB6C4(collision, boundingBoxSize, posX, posY, posZ, collision->unk38 ) == 1) { - var_s4 |= 0x8000; + if (collision->meshIndexZY < gCollisionMeshCount) { + if (check_collision_zy(collision, boundingBoxSize, posX, posY, posZ, collision->meshIndexZY ) == 1) { + flags |= FACING_X_AXIS; } } - if (var_s4 == (0x4000 | 0x2000 | 0x8000)) { - return var_s4; + if (flags == (FACING_Y_AXIS | FACING_Z_AXIS | FACING_X_AXIS)) { + return flags; } - temp_f4 = (s32) gCourseMaxX - gCourseMinX; - temp_f6 = (s32) gCourseMaxZ - gCourseMinZ; + courseLengthX = (s32) gCourseMaxX - gCourseMinX; + courseLengthZ = (s32) gCourseMaxZ - gCourseMinZ; - temp1 = temp_f4 / 32; - temp2 = temp_f6 / 32; + sectionX = courseLengthX / GRID_SIZE; + sectionZ = courseLengthZ / GRID_SIZE; - temp_f10 = (posX - gCourseMinX) / temp1; - temp_f16 = (posZ - gCourseMinZ) / temp2; + sectionIndexX = (posX - gCourseMinX) / sectionX; + sectionIndexZ = (posZ - gCourseMinZ) / sectionZ; - if (temp_f10 < 0) { + if (sectionIndexX < 0) { return 0; } - if (temp_f16 < 0) { + if (sectionIndexZ < 0) { return 0; } - if (temp_f10 >= 32) { + if (sectionIndexX >= GRID_SIZE) { return 0; } - if (temp_f16 >= 32) { + if (sectionIndexZ >= GRID_SIZE) { return 0; } - temp = temp_f10 + temp_f16 * 32; - temp_v1 = D_8014F110[temp].unk2; - if (temp_v1 == 0) { - return var_s4; + gridIndex = sectionIndexX + sectionIndexZ * GRID_SIZE; + numTriangles = gCollisionGrid[gridIndex].numTriangles; + if (numTriangles == 0) { + return flags; } - var_s2 = D_8014F110[temp].unk0; + sectionIndex = gCollisionGrid[gridIndex].triangle; - for (i = 0; i < temp_v1; i++) { - if (var_s4 == (0x8000 | 0x4000 | 0x2000)) { - return var_s4; + for (i = 0; i < numTriangles; i++) { + if (flags == (FACING_X_AXIS | FACING_Y_AXIS | FACING_Z_AXIS)) { + return flags; } - temp_v0_4 = D_8015F584[var_s2]; - if (gSurfaceMap[temp_v0_4].flags & 0x4000) { - if (!(var_s4 & 0x4000)) { - if (temp_v0_4 != collision->unk3A) { - if (func_802AAE4C(collision, boundingBoxSize, posX, posY, posZ, temp_v0_4) == 1) { - var_s4 |= 0x4000; + meshIndex = gCollisionIndices[sectionIndex]; + if (gCollisionMesh[meshIndex].flags & FACING_Y_AXIS) { + if (!(flags & FACING_Y_AXIS)) { + if (meshIndex != collision->meshIndexZX) { + if (check_collision_zx(collision, boundingBoxSize, posX, posY, posZ, meshIndex) == 1) { + flags |= FACING_Y_AXIS; } } } - } else if (gSurfaceMap[temp_v0_4].flags & 0x8000) { - if (!(var_s4 & 0x8000)) { - if (temp_v0_4 != collision->unk38) { - if (func_802AB6C4(collision, boundingBoxSize, posX, posY, posZ, temp_v0_4) == 1) { - var_s4 |= 0x8000; + } else if (gCollisionMesh[meshIndex].flags & FACING_X_AXIS) { + if (!(flags & FACING_X_AXIS)) { + if (meshIndex != collision->meshIndexZY) { + if (check_collision_zy(collision, boundingBoxSize, posX, posY, posZ, meshIndex) == 1) { + flags |= FACING_X_AXIS; } } } } else { - if (!(var_s4 & 0x2000)) { - if (temp_v0_4 != collision->unk36) { - if (func_802AB288(collision, boundingBoxSize, posX, posY, posZ, temp_v0_4) == 1) { - var_s4 |= 0x2000; + if (!(flags & FACING_Z_AXIS)) { + if (meshIndex != collision->meshIndexYX) { + if (check_collision_yx(collision, boundingBoxSize, posX, posY, posZ, meshIndex) == 1) { + flags |= FACING_Z_AXIS; } } } } - var_s2++; + sectionIndex++; } - return var_s4; + return flags; } extern u8 D_8014F1110; -f32 func_802AE1C0(f32 posX, f32 posY, f32 posZ) { - f32 temp_f0; - s16 temp_f4; - s16 temp_f6; - s16 temp_f66; +/** + * If unable to spawn actor on the surface set to -3000.0f or + * if outside the collision grid, spawn in the air (3000.0f). +*/ +f32 spawn_actor_on_surface(f32 posX, f32 posY, f32 posZ) { + f32 height; + s16 sectionIndexX; + s16 sectionIndexZ; + s16 gridSection; u16 index; - u16 iter; - u16 phi_s1; + u16 numTriangles; + u16 sectionIndex; f32 phi_f20 = -3000.0f; u16 i; - s32 a; - s32 b; - s32 c; - s32 d; + s32 courseLengthX; + s32 courseLengthZ; + s32 sectionX; + s32 sectionZ; - a = (gCourseMaxX - gCourseMinX); - b = (gCourseMaxZ - gCourseMinZ); - c = a / 32; - d = b / 32; + courseLengthX = (gCourseMaxX - gCourseMinX); + courseLengthZ = (gCourseMaxZ - gCourseMinZ); + sectionX = courseLengthX / GRID_SIZE; + sectionZ = courseLengthZ / GRID_SIZE; - temp_f4 = (s16) ((posX - gCourseMinX) / c); - temp_f6 = (s16) ((posZ - gCourseMinZ) / d); - temp_f66 = temp_f4 + (temp_f6 * 32); - iter = D_8014F110[temp_f66].unk2; + sectionIndexX = (s16) ((posX - gCourseMinX) / sectionX); + sectionIndexZ = (s16) ((posZ - gCourseMinZ) / sectionZ); + gridSection = sectionIndexX + (sectionIndexZ * GRID_SIZE); + numTriangles = gCollisionGrid[gridSection].numTriangles; - if (temp_f4 < 0) { + if (sectionIndexX < 0) { return 3000.0f; } - if (temp_f6 < 0) { + if (sectionIndexZ < 0) { return 3000.0f; } - if (temp_f4 >= 32) { + if (sectionIndexX >= GRID_SIZE) { return 3000.0f; } - if (temp_f6 >= 32) { + if (sectionIndexZ >= GRID_SIZE) { return 3000.0f; } - if (iter == 0) { + if (numTriangles == 0) { return 3000.0f; } - phi_s1 = D_8014F110[temp_f66].unk0; + sectionIndex = gCollisionGrid[gridSection].triangle; - for (i = 0; i < iter; i++) { + for (i = 0; i < numTriangles; i++) { - index = D_8015F584[phi_s1]; + index = gCollisionIndices[sectionIndex]; - if ((gSurfaceMap[index].flags & 0x4000) && (func_802ABB04(posX, posZ, index) == 1)) { - temp_f0 = func_802ABE30(posX, posY, posZ, index); - if ((temp_f0 <= posY) && (phi_f20 < temp_f0)) { - phi_f20 = temp_f0; + if ((gCollisionMesh[index].flags & FACING_Y_AXIS) && (check_horizontally_colliding_with_triangle(posX, posZ, index) == 1)) { + height = calculate_surface_height(posX, posY, posZ, index); + if ((height <= posY) && (phi_f20 < height)) { + phi_f20 = height; } } - phi_s1++; + sectionIndex++; } return phi_f20; } @@ -1536,18 +1525,18 @@ f32 func_802AE1C0(f32 posX, f32 posY, f32 posZ) { } else\ out = c;\ -void func_802AE434(Vtx *vtx1, Vtx *vtx2, Vtx *vtx3, s8 surfaceType, u16 sectionId) { - mk64_surface_map_ram *tile = &gSurfaceMap[D_8015F588]; +void add_collision_triangle(Vtx *vtx1, Vtx *vtx2, Vtx *vtx3, s8 surfaceType, u16 sectionId) { + CollisionTriangle *triangle = &gCollisionMesh[gCollisionMeshCount]; s16 x2; s16 z2; - u16 poly1Flag; + u16 vtx1Flag; s16 x3; s16 x1; s16 y1; s16 z1; - u16 poly2Flag; + u16 vtx2Flag; s16 y2; - u16 poly3Flag; + u16 vtx3Flag; u16 flags; s16 y3; s16 z3; @@ -1574,38 +1563,38 @@ void func_802AE434(Vtx *vtx1, Vtx *vtx2, Vtx *vtx3, s8 surfaceType, u16 sectionI s16 maxY; s16 minZ; - tile->vtxPoly1 = vtx1; - tile->vtxPoly2 = vtx2; - tile->vtxPoly3 = vtx3; - if ((tile->vtxPoly1->v.flag == 4) && - (tile->vtxPoly2->v.flag == 4) && - (tile->vtxPoly3->v.flag == 4)) { - + triangle->vtx1 = vtx1; + triangle->vtx2 = vtx2; + triangle->vtx3 = vtx3; + if ((triangle->vtx1->v.flag == 4) && + (triangle->vtx2->v.flag == 4) && + (triangle->vtx3->v.flag == 4)) { + return; } - x1 = tile->vtxPoly1->v.ob[0]; - y1 = tile->vtxPoly1->v.ob[1]; - z1 = tile->vtxPoly1->v.ob[2]; - x2 = tile->vtxPoly2->v.ob[0]; - y2 = tile->vtxPoly2->v.ob[1]; - z2 = tile->vtxPoly2->v.ob[2]; - x3 = tile->vtxPoly3->v.ob[0]; - y3 = tile->vtxPoly3->v.ob[1]; - z3 = tile->vtxPoly3->v.ob[2]; + x1 = triangle->vtx1->v.ob[0]; + y1 = triangle->vtx1->v.ob[1]; + z1 = triangle->vtx1->v.ob[2]; + x2 = triangle->vtx2->v.ob[0]; + y2 = triangle->vtx2->v.ob[1]; + z2 = triangle->vtx2->v.ob[2]; + x3 = triangle->vtx3->v.ob[0]; + y3 = triangle->vtx3->v.ob[1]; + z3 = triangle->vtx3->v.ob[2]; if ((x1 == x2) && (z1 == z2)) { - tile->vtxPoly1 = vtx1; - tile->vtxPoly3 = vtx2; - tile->vtxPoly2 = vtx3; - x1 = tile->vtxPoly1->v.ob[0]; - y1 = tile->vtxPoly1->v.ob[1]; - z1 = tile->vtxPoly1->v.ob[2]; - x2 = tile->vtxPoly3->v.ob[0]; - y2 = tile->vtxPoly3->v.ob[1]; - z2 = tile->vtxPoly3->v.ob[2]; - x3 = tile->vtxPoly2->v.ob[0]; - y3 = tile->vtxPoly2->v.ob[1]; - z3 = tile->vtxPoly2->v.ob[2]; + triangle->vtx1 = vtx1; + triangle->vtx3 = vtx2; + triangle->vtx2 = vtx3; + x1 = triangle->vtx1->v.ob[0]; + y1 = triangle->vtx1->v.ob[1]; + z1 = triangle->vtx1->v.ob[2]; + x2 = triangle->vtx3->v.ob[0]; + y2 = triangle->vtx3->v.ob[1]; + z2 = triangle->vtx3->v.ob[2]; + x3 = triangle->vtx2->v.ob[0]; + y3 = triangle->vtx2->v.ob[1]; + z3 = triangle->vtx2->v.ob[2]; } MAX3(x1, x2, x3, maxX) @@ -1655,13 +1644,14 @@ void func_802AE434(Vtx *vtx1, Vtx *vtx2, Vtx *vtx3, s8 surfaceType, u16 sectionI } } - tile->vtx21 = maxX; - tile->vtx23 = maxZ; - tile->vtx31 = minX; - tile->vtx33 = minZ; - tile->vtx32 = minY; - tile->vtx22 = maxY; + triangle->maxX = maxX; + triangle->maxZ = maxZ; + triangle->minX = minX; + triangle->minZ = minZ; + triangle->minY = minY; + triangle->maxY = maxY; + // Define the minimum and maximum dimensions of the course. if (minX < gCourseMinX) { gCourseMinX = minX; } @@ -1681,13 +1671,14 @@ void func_802AE434(Vtx *vtx1, Vtx *vtx2, Vtx *vtx3, s8 surfaceType, u16 sectionI gCourseMaxZ = maxZ; } - tile->height = normalX; - tile->gravity = normalY; - tile->rotation = normalZ; - tile->height2 = distance; + triangle->normalX = normalX; + triangle->normalY = normalY; + triangle->normalZ = normalZ; + triangle->distance = distance; - tile->surfaceType = (u16) surfaceType; + triangle->surfaceType = (u16) surfaceType; + // Square the crossProduct to produce a magnitude crossProductX = crossProductX * crossProductX; crossProductY = crossProductY * crossProductY; crossProductZ = crossProductZ * crossProductZ; @@ -1695,35 +1686,37 @@ void func_802AE434(Vtx *vtx1, Vtx *vtx2, Vtx *vtx3, s8 surfaceType, u16 sectionI D_8015F6FA = 0; D_8015F6FC = 0; - poly1Flag = tile->vtxPoly1->v.flag; - poly2Flag = tile->vtxPoly2->v.flag; - poly3Flag = tile->vtxPoly3->v.flag; + vtx1Flag = triangle->vtx1->v.flag; + vtx2Flag = triangle->vtx2->v.flag; + vtx3Flag = triangle->vtx3->v.flag; flags = sectionId; - if ((poly1Flag == 1) && (poly2Flag == 1) && (poly3Flag == 1)) { + if ((vtx1Flag == 1) && (vtx2Flag == 1) && (vtx3Flag == 1)) { flags |= 0x400; - } else if ((poly1Flag == 2) && (poly2Flag == 2) && (poly3Flag == 2)) { + } else if ((vtx1Flag == 2) && (vtx2Flag == 2) && (vtx3Flag == 2)) { flags |= 0x800; - } else if ((poly1Flag == 3) && (poly2Flag == 3) && (poly3Flag == 3)) { + } else if ((vtx1Flag == 3) && (vtx2Flag == 3) && (vtx3Flag == 3)) { flags |= 0x1000; } else if (D_8015F5A4 != 0) { flags |= 0x200; } - tile->flags = flags; + triangle->flags = flags; + + // Find the axis with the highest magnitude. // Y is the significant axis if ((crossProductX <= crossProductY) && (crossProductY >= crossProductZ)) { - tile->flags |= 0x4000; + triangle->flags |= FACING_Y_AXIS; // X is the significant axis } else if ((crossProductX > crossProductY) && (crossProductX >= crossProductZ)) { - tile->flags |= 0x8000; + triangle->flags |= FACING_X_AXIS; // Z is the significant axis } else { - tile->flags |= 0x2000; + triangle->flags |= FACING_Z_AXIS; } - D_8015F588++; + gCollisionMeshCount++; } /** @@ -1738,7 +1731,7 @@ void set_vtx_from_triangle(u32 triangle, s8 surfaceType, u16 sectionId) { Vtx *vtx2 = vtxBuffer[vert2]; Vtx *vtx3 = vtxBuffer[vert3]; - func_802AE434(vtx1, vtx2, vtx3, surfaceType, sectionId); + add_collision_triangle(vtx1, vtx2, vtx3, surfaceType, sectionId); } void set_vtx_from_tri2(u32 triangle1, u32 triangle2, s8 surfaceType, u16 sectionId) { @@ -1761,9 +1754,9 @@ void set_vtx_from_tri2(u32 triangle1, u32 triangle2, s8 surfaceType, u16 section Vtx *vtx6 = vtxBuffer[vert6]; // Triangle 1 - func_802AE434(vtx1, vtx2, vtx3, surfaceType, sectionId); + add_collision_triangle(vtx1, vtx2, vtx3, surfaceType, sectionId); // Triangle 2 - func_802AE434(vtx4, vtx5, vtx6, surfaceType, sectionId); + add_collision_triangle(vtx4, vtx5, vtx6, surfaceType, sectionId); } void set_vtx_from_quadrangle(u32 line, s8 surfaceType, u16 sectionId) { @@ -1782,11 +1775,11 @@ void set_vtx_from_quadrangle(u32 line, s8 surfaceType, u16 sectionId) { vtx2 = vtxBuffer[vert2]; vtx3 = vtxBuffer[vert3]; vtx4 = vtxBuffer[vert4]; - + // Triangle 1 - func_802AE434(vtx1, vtx2, vtx3, surfaceType, sectionId); + add_collision_triangle(vtx1, vtx2, vtx3, surfaceType, sectionId); // Triangle 2 - func_802AE434(vtx1, vtx3, vtx4, surfaceType, sectionId); + add_collision_triangle(vtx1, vtx3, vtx4, surfaceType, sectionId); } /** @@ -1867,7 +1860,7 @@ s32 is_line_intersecting_rectangle(s16 minX, s16 maxX, s16 minZ, s16 maxZ, s16 x } s32 is_triangle_intersecting_bounding_box(s16 minX, s16 maxX, s16 minZ, s16 maxZ, u16 index) { - mk64_surface_map_ram *surfaceMap = &gSurfaceMap[index]; + CollisionTriangle *triangle = &gCollisionMesh[index]; s16 x1; s16 z1; s16 x2; @@ -1875,12 +1868,12 @@ s32 is_triangle_intersecting_bounding_box(s16 minX, s16 maxX, s16 minZ, s16 maxZ s16 x3; s16 z3; - x1 = surfaceMap->vtxPoly1->v.ob[0]; - z1 = surfaceMap->vtxPoly1->v.ob[2]; - x2 = surfaceMap->vtxPoly2->v.ob[0]; - z2 = surfaceMap->vtxPoly2->v.ob[2]; - x3 = surfaceMap->vtxPoly3->v.ob[0]; - z3 = surfaceMap->vtxPoly3->v.ob[2]; + x1 = triangle->vtx1->v.ob[0]; + z1 = triangle->vtx1->v.ob[2]; + x2 = triangle->vtx2->v.ob[0]; + z2 = triangle->vtx2->v.ob[2]; + x3 = triangle->vtx3->v.ob[0]; + z3 = triangle->vtx3->v.ob[2]; if ((x1 >= minX) && (maxX >= x1) && (z1 >= minZ) && (maxZ >= z1)) { return 1; } @@ -1903,65 +1896,70 @@ s32 is_triangle_intersecting_bounding_box(s16 minX, s16 maxX, s16 minZ, s16 maxZ } /** - * Appears to initialize some variables and struct members after - * course displaylists have been parsed. + * Splits the collision mesh into 32x32 sections. This allows the game to check only + * nearby geography for a collision rather than checking against the whole collision mesh. + * (checking against the whole mesh for every actor would be expensive) */ -void func_802AF314(void) { - mk64_surface_map_ram *tile; +void generate_collision_grid(void) { + CollisionTriangle *triangle; s32 i, j, k; UNUSED s32 pad[5]; - s16 temp_a1; - s16 temp_a3; - s16 temp_s1; - s16 temp_s2; - s32 temp_fp; - s32 temp_s6; - s32 temp1; - s32 temp2; + s16 maxX; + s16 maxZ; + s16 minX; + s16 minZ; + s32 sectionZ; + s32 sectionX; + s32 courseLengthX; + s32 courseLengthZ; s32 index; - temp1 = (s32) gCourseMaxX - gCourseMinX; - temp2 = (s32) gCourseMaxZ - gCourseMinZ; - temp_s6 = temp1 / 32; - temp_fp = temp2 / 32; + courseLengthX = (s32) gCourseMaxX - gCourseMinX; + courseLengthZ = (s32) gCourseMaxZ - gCourseMinZ; + // Separate the course into 32 sections + sectionX = courseLengthX / GRID_SIZE; + sectionZ = courseLengthZ / GRID_SIZE; + + // Reset the collision grid for (i = 0; i < 1024; i++) { - D_8014F110[i].unk2 = 0; + gCollisionGrid[i].numTriangles = 0; } - D_8015F58A = 0; + gNumCollisionTriangles = 0; /** - * @bug possibly bug. Allocate memory but not increment the pointer. - * This is bad, dumb code, and more importantly it's bad dumb code that doesn't make any sense here. - * It is incremented after this function completes using a different variable. - * Not good. + * @warning gNextFreeMemoryAddress incremented just outside this function. Bad practice to hide memory allocation like this. */ - D_8015F584 = (u16 *) gNextFreeMemoryAddress; + gCollisionIndices = (u16 *) gNextFreeMemoryAddress; - for (j = 0; j < 32; j++) { - for (k = 0; k < 32; k++) { - index = k + j * 32; + // 32x32 grid + for (j = 0; j < GRID_SIZE; j++) { + for (k = 0; k < GRID_SIZE; k++) { + index = k + j * GRID_SIZE; - temp_s1 = (gCourseMinX + (temp_s6 * k)) - 20; - temp_s2 = (gCourseMinZ + (temp_fp * j)) - 20; + // Select a section of the course using min/max akin to drawing a bounding-box + minX = (gCourseMinX + (sectionX * k)) - 20; + minZ = (gCourseMinZ + (sectionZ * j)) - 20; - temp_a1 = temp_s1 + temp_s6 + 40; - temp_a3 = temp_s2 + temp_fp + 40; + maxX = minX + sectionX + 40; + maxZ = minZ + sectionZ + 40; - for (i = 0; i < D_8015F588; i++) { - tile = gSurfaceMap + i; - if (tile->vtx23 < temp_s2) { continue; } - if (tile->vtx33 > temp_a3) { continue; } - if (tile->vtx21 < temp_s1) { continue; } - if (tile->vtx31 > temp_a1) { continue; } + for (i = 0; i < gCollisionMeshCount; i++) { + triangle = gCollisionMesh + i; + if (triangle->maxZ < minZ) { continue; } + if (triangle->minZ > maxZ) { continue; } + if (triangle->maxX < minX) { continue; } + if (triangle->minX > maxX) { continue; } - if (is_triangle_intersecting_bounding_box(temp_s1, temp_a1, temp_s2, temp_a3, (u16) i) == 1) { - if (D_8014F110[index].unk2 == 0) { - D_8014F110[index].unk0 = D_8015F58A; + // Add the collision triangle to the list if it's inside the bounding-box + if (is_triangle_intersecting_bounding_box(minX, maxX, minZ, maxZ, (u16) i) == 1) { + // Point this grid section to the first triangle in the section + if (gCollisionGrid[index].numTriangles == 0) { + gCollisionGrid[index].triangle = gNumCollisionTriangles; } - D_8014F110[index].unk2++; - D_8015F584[D_8015F58A] = (s16) i; - D_8015F58A++; + gCollisionGrid[index].numTriangles++; + gCollisionIndices[gNumCollisionTriangles] = (u16) i; + gNumCollisionTriangles++; } } @@ -1972,23 +1970,23 @@ void func_802AF314(void) { /** * Recursive search for vtx and set surfaceTypes to -1 and sectionId's to 0xFF */ -void set_vertex_data_with_defaults(Gfx *gfx) { - find_and_set_vertex_data(gfx, SURFACE_DEFAULT, 0xFF); +void generate_collision_mesh_with_defaults(Gfx *gfx) { + generate_collision_mesh(gfx, SURFACE_DEFAULT, 0xFF); } /** * Recursive search for vtx and set sectionId's to 0xFF */ -void set_vertex_data_with_default_section_id(Gfx *gfx, s8 surfaceType) { - find_and_set_vertex_data(gfx, surfaceType, 0xFF); +void generate_collision_mesh_with_default_section_id(Gfx *gfx, s8 surfaceType) { + generate_collision_mesh(gfx, surfaceType, 0xFF); } extern u32 D_8015F58C; /** - * Recursive search and set for vertex data + * Generate via a recursive search and set for vertex data. */ -void find_and_set_vertex_data(Gfx *addr, s8 surfaceType, u16 sectionId) { +void generate_collision_mesh(Gfx *addr, s8 surfaceType, u16 sectionId) { s32 opcode; uintptr_t lo; uintptr_t hi; @@ -2007,7 +2005,7 @@ void find_and_set_vertex_data(Gfx *addr, s8 surfaceType, u16 sectionId) { if (opcode == (G_DL << 24)) { // G_DL's hi contains an addr to another DL. - find_and_set_vertex_data((Gfx *) hi, surfaceType, sectionId); + generate_collision_mesh((Gfx *) hi, surfaceType, sectionId); } else if (opcode == (G_VTX << 24)) { set_vtx_buffer(hi, (lo >> 10) & 0x3F, ((lo >> 16) & 0xFF) >> 1); @@ -2044,7 +2042,7 @@ void find_and_set_tile_size(uintptr_t addr, s32 uls, s32 ult) { uls = (uls << 12) & 0xFFF000; ult &= 0xFFF; - while(TRUE) { + while(true) { opcode = GFX_GET_OPCODE(gfx->words.w0); @@ -2087,7 +2085,7 @@ void find_vtx_and_set_colours(uintptr_t displayList, s8 alpha, u8 red, u8 green, uintptr_t hi; s32 opcode; - while(TRUE) { + while(true) { lo = gfx->words.w0; hi = gfx->words.w1; opcode = GFX_GET_OPCODE(lo); @@ -2109,71 +2107,71 @@ void subtract_scaled_vector(Vec3f pos1, f32 boundingBoxSize, Vec3f pos2) { pos2[2] -= pos1[2] * boundingBoxSize; } -u16 process_collision(Player *player, KartBoundingBoxCorner *corner, f32 cornerPosX, f32 cornerPosY, f32 cornerPosZ) { +u16 process_collision(Player *player, KartTyre *tyre, f32 tyre2X, f32 tyre2Y, f32 tyre2Z) { Collision wtf; Collision *collision = &wtf; UNUSED s32 pad; u16 i; - u16 surfaceMapIndex; - u16 iter; - u16 phi_s2; - f32 cornerPos1; - f32 cornerPos2; - f32 cornerPos3; + u16 meshIndex; + u16 numTriangles; + u16 sectionIndex; + f32 tyreX; + f32 tyreY; + f32 tyreZ; f32 boundingBoxSize; - f32 temp_f0; + f32 height; - s32 temp_v0_2; - s32 temp_v1; + s32 courseLengthX; + s32 courseLengthZ; - s16 temp_f10; - s16 temp_f16; - s16 temp_v1_2; + s16 sectionIndexX; + s16 sectionIndexZ; + s16 gridIndex; - s32 temp1; - s32 temp2; + s32 sectionX; + s32 sectionZ; UNUSED s32 pad2[9]; - collision->unk3C[0] = 1000.0f; - collision->unk3C[1] = 1000.0f; - collision->unk3C[2] = 1000.0f; + collision->surfaceDistance[0] = 1000.0f; + collision->surfaceDistance[1] = 1000.0f; + collision->surfaceDistance[2] = 1000.0f; boundingBoxSize = player->boundingBoxSize; - collision->unk36 = 5000; - collision->unk38 = 5000; - collision->unk3A = 5000; + collision->meshIndexYX = 5000; + collision->meshIndexZY = 5000; + collision->meshIndexZX = 5000; collision->unk30 = 0; collision->unk32 = 0; collision->unk34 = 0; - cornerPos1 = corner->cornerPos[0]; - cornerPos2 = corner->cornerPos[1]; - cornerPos3 = corner->cornerPos[2]; - switch (corner->surfaceFlags) { + tyreX = tyre->pos[0]; + tyreY = tyre->pos[1]; + tyreZ = tyre->pos[2]; + switch (tyre->surfaceFlags) { case 0x80: - if (is_colliding_with_wall1(collision, boundingBoxSize, cornerPos1, cornerPos2, cornerPos3, corner->surfaceMapIndex, cornerPosX, cornerPosY, cornerPosZ) == 1) { - temp_f0 = func_802ABE30(cornerPos1, cornerPos2, cornerPos3, corner->surfaceMapIndex); - if ((!(temp_f0 > player->pos[1])) && !((player->pos[1] - temp_f0) > (2 * boundingBoxSize))) { - corner->cornerGroundY = temp_f0; - subtract_scaled_vector(collision->unk54, collision->unk3C[1], corner->cornerPos); + if (is_colliding_with_wall1(collision, boundingBoxSize, tyreX, tyreY, tyreZ, tyre->collisionMeshIndex, tyre2X, tyre2Y, tyre2Z) == 1) { + height = calculate_surface_height(tyreX, tyreY, tyreZ, tyre->collisionMeshIndex); + if ((!(height > player->pos[1])) && !((player->pos[1] - height) > (2 * boundingBoxSize))) { + tyre->baseHeight = height; + subtract_scaled_vector(collision->unk54, collision->surfaceDistance[1], tyre->pos); return 1; } } break; case 0x40: - if (is_colliding_with_drivable_surface(collision, boundingBoxSize, cornerPos1, cornerPos2, cornerPos3, corner->surfaceMapIndex, cornerPosX, cornerPosY, cornerPosZ) == 1) { - temp_f0 = func_802ABE30(cornerPos1, cornerPos2, cornerPos3, corner->surfaceMapIndex); - if (!(player->pos[1] < temp_f0) && !((2 * boundingBoxSize) < (player->pos[1] - temp_f0))) { - corner->cornerGroundY = temp_f0; - subtract_scaled_vector(collision->orientationVector, collision->unk3C[2], corner->cornerPos); + if (is_colliding_with_drivable_surface(collision, boundingBoxSize, tyreX, tyreY, tyreZ, tyre->collisionMeshIndex, tyre2X, tyre2Y, tyre2Z) == 1) { + height = calculate_surface_height(tyreX, tyreY, tyreZ, tyre->collisionMeshIndex); + if (!(player->pos[1] < height) && !((2 * boundingBoxSize) < (player->pos[1] - height))) { + tyre->baseHeight = height; + subtract_scaled_vector(collision->orientationVector, collision->surfaceDistance[2], tyre->pos); return 1; } } break; case 0x20: - if (is_colliding_with_wall2(collision, boundingBoxSize, cornerPos1, cornerPos2, cornerPos3, corner->surfaceMapIndex, cornerPosX, cornerPosY, cornerPosZ) == 1) { - temp_f0 = func_802ABE30(cornerPos1, cornerPos2, cornerPos3, corner->surfaceMapIndex); - if (!(player->pos[1] < temp_f0) && !((2 * boundingBoxSize) < (player->pos[1] - temp_f0))) { - corner->cornerGroundY = temp_f0; - subtract_scaled_vector(collision->unk48, collision->unk3C[0], corner->cornerPos); + if (is_colliding_with_wall2(collision, boundingBoxSize, tyreX, tyreY, tyreZ, tyre->collisionMeshIndex, tyre2X, tyre2Y, tyre2Z) == 1) { + height = calculate_surface_height(tyreX, tyreY, tyreZ, tyre->collisionMeshIndex); + if (!(player->pos[1] < height) && !((2 * boundingBoxSize) < (player->pos[1] - height))) { + tyre->baseHeight = height; + subtract_scaled_vector(collision->unk48, collision->surfaceDistance[0], tyre->pos); return 1; } } @@ -2183,89 +2181,89 @@ u16 process_collision(Player *player, KartBoundingBoxCorner *corner, f32 cornerP } // If the surface flags are not set then try setting them. - - temp_v0_2 = (s32) gCourseMaxX - gCourseMinX; - temp_v1 = (s32) gCourseMaxZ - gCourseMinZ; - temp1 = temp_v0_2 / 32; - temp2 = temp_v1 / 32; + courseLengthX = (s32) gCourseMaxX - gCourseMinX; + courseLengthZ = (s32) gCourseMaxZ - gCourseMinZ; - temp_f10 = (cornerPos1 - gCourseMinX) / temp1; - temp_f16 = (cornerPos3 - gCourseMinZ) / temp2; + sectionX = courseLengthX / GRID_SIZE; + sectionZ = courseLengthZ / GRID_SIZE; + + sectionIndexX = (tyreX - gCourseMinX) / sectionX; + sectionIndexZ = (tyreZ - gCourseMinZ) / sectionZ; - if (temp_f10 < 0) { return 0; } - if (temp_f16 < 0) { return 0; } - if (temp_f10 >= 32) { return 0; } - if (temp_f16 >= 32) { return 0; } + if (sectionIndexX < 0) { return 0; } + if (sectionIndexZ < 0) { return 0; } + if (sectionIndexX >= GRID_SIZE) { return 0; } + if (sectionIndexZ >= GRID_SIZE) { return 0; } - temp_v1_2 = temp_f10 + temp_f16 * 32; - iter = D_8014F110[temp_v1_2].unk2; + gridIndex = sectionIndexX + sectionIndexZ * GRID_SIZE; + numTriangles = gCollisionGrid[gridIndex].numTriangles; - if (iter == 0) { return 0; } + if (numTriangles == 0) { return 0; } - phi_s2 = D_8014F110[temp_v1_2].unk0; + sectionIndex = gCollisionGrid[gridIndex].triangle; - for (i = 0; i < iter; i++) { - surfaceMapIndex = D_8015F584[phi_s2]; - if (gSurfaceMap[surfaceMapIndex].flags & 0x4000) { - if (surfaceMapIndex != corner->surfaceMapIndex) { - if (is_colliding_with_drivable_surface(collision, boundingBoxSize, cornerPos1, cornerPos2, cornerPos3, surfaceMapIndex, cornerPosX, cornerPosY, cornerPosZ) == 1) { - temp_f0 = func_802ABE30(cornerPos1, cornerPos2, cornerPos3, surfaceMapIndex); + for (i = 0; i < numTriangles; i++) { + meshIndex = gCollisionIndices[sectionIndex]; + if (gCollisionMesh[meshIndex].flags & FACING_Y_AXIS) { + if (meshIndex != tyre->collisionMeshIndex) { + if (is_colliding_with_drivable_surface(collision, boundingBoxSize, tyreX, tyreY, tyreZ, meshIndex, tyre2X, tyre2Y, tyre2Z) == 1) { + height = calculate_surface_height(tyreX, tyreY, tyreZ, meshIndex); - if (!(player->pos[1] < temp_f0) && !((2 * boundingBoxSize) < (player->pos[1] - temp_f0))) { - subtract_scaled_vector(collision->orientationVector, collision->unk3C[2], corner->cornerPos); - corner->cornerGroundY = temp_f0; - corner->surfaceType = (u8) gSurfaceMap[surfaceMapIndex].surfaceType; - corner->surfaceFlags = 0x40; - corner->surfaceMapIndex = surfaceMapIndex; - if (gSurfaceMap[surfaceMapIndex].flags & 0x1000) { - corner->unk_14 = 1; + if (!(player->pos[1] < height) && !((2 * boundingBoxSize) < (player->pos[1] - height))) { + subtract_scaled_vector(collision->orientationVector, collision->surfaceDistance[2], tyre->pos); + tyre->baseHeight = height; + tyre->surfaceType = (u8) gCollisionMesh[meshIndex].surfaceType; + tyre->surfaceFlags = 0x40; + tyre->collisionMeshIndex = meshIndex; + if (gCollisionMesh[meshIndex].flags & 0x1000) { + tyre->unk_14 = 1; } else { - corner->unk_14 = 0; + tyre->unk_14 = 0; } return 1; } } } - } else if (gSurfaceMap[surfaceMapIndex].flags & 0x8000) { - if (gSurfaceMap[surfaceMapIndex].gravity != 0.0f) { - if (surfaceMapIndex != corner->surfaceMapIndex) { - if (is_colliding_with_wall1(collision, boundingBoxSize, cornerPos1, cornerPos2, cornerPos3, surfaceMapIndex, cornerPosX, cornerPosY, cornerPosZ) == 1) { - temp_f0 = func_802ABE30(cornerPos1, cornerPos2, cornerPos3, surfaceMapIndex); - if (!(player->pos[1] < temp_f0) && !((2 * boundingBoxSize) < (player->pos[1] - temp_f0))) { - corner->cornerGroundY = temp_f0; - subtract_scaled_vector(collision->unk54, collision->unk3C[1], corner->cornerPos); - corner->cornerGroundY = func_802ABE30(cornerPos1, cornerPos2, cornerPos3, surfaceMapIndex); - corner->surfaceType = (u8) gSurfaceMap[surfaceMapIndex].surfaceType; - corner->surfaceFlags = 0x80; - corner->surfaceMapIndex = surfaceMapIndex; + } else if (gCollisionMesh[meshIndex].flags & FACING_X_AXIS) { + if (gCollisionMesh[meshIndex].normalY != 0.0f) { + if (meshIndex != tyre->collisionMeshIndex) { + if (is_colliding_with_wall1(collision, boundingBoxSize, tyreX, tyreY, tyreZ, meshIndex, tyre2X, tyre2Y, tyre2Z) == 1) { + height = calculate_surface_height(tyreX, tyreY, tyreZ, meshIndex); + if (!(player->pos[1] < height) && !((2 * boundingBoxSize) < (player->pos[1] - height))) { + tyre->baseHeight = height; + subtract_scaled_vector(collision->unk54, collision->surfaceDistance[1], tyre->pos); + tyre->baseHeight = calculate_surface_height(tyreX, tyreY, tyreZ, meshIndex); + tyre->surfaceType = (u8) gCollisionMesh[meshIndex].surfaceType; + tyre->surfaceFlags = 0x80; + tyre->collisionMeshIndex = meshIndex; return 1; } } } } } else { - if (gSurfaceMap[surfaceMapIndex].gravity != 0.0f) { - if (surfaceMapIndex != corner->surfaceMapIndex) { - if (is_colliding_with_wall2(collision, boundingBoxSize, cornerPos1, cornerPos2, cornerPos3, surfaceMapIndex, cornerPosX, cornerPosY, cornerPosZ) == 1) { - temp_f0 = func_802ABE30(cornerPos1, cornerPos2, cornerPos3, surfaceMapIndex); - if (!(player->pos[1] < temp_f0) && !((2 * boundingBoxSize) < (player->pos[1] - temp_f0))) { - corner->cornerGroundY = temp_f0; - subtract_scaled_vector(collision->unk48, collision->unk3C[0], corner->cornerPos); - corner->surfaceType = (u8) gSurfaceMap[surfaceMapIndex].surfaceType; - corner->surfaceFlags = 0x20; - corner->surfaceMapIndex = surfaceMapIndex; + if (gCollisionMesh[meshIndex].normalY != 0.0f) { + if (meshIndex != tyre->collisionMeshIndex) { + if (is_colliding_with_wall2(collision, boundingBoxSize, tyreX, tyreY, tyreZ, meshIndex, tyre2X, tyre2Y, tyre2Z) == 1) { + height = calculate_surface_height(tyreX, tyreY, tyreZ, meshIndex); + if (!(player->pos[1] < height) && !((2 * boundingBoxSize) < (player->pos[1] - height))) { + tyre->baseHeight = height; + subtract_scaled_vector(collision->unk48, collision->surfaceDistance[0], tyre->pos); + tyre->surfaceType = (u8) gCollisionMesh[meshIndex].surfaceType; + tyre->surfaceFlags = 0x20; + tyre->collisionMeshIndex = meshIndex; return 1; } } } } } - phi_s2++; + sectionIndex++; } - corner->cornerGroundY = cornerPos2; - corner->surfaceType = 0; + tyre->baseHeight = tyreY; + tyre->surfaceType = 0; return 0; } diff --git a/src/racing/collision.h b/src/racing/collision.h index 859a51587..b93e4b4d4 100644 --- a/src/racing/collision.h +++ b/src/racing/collision.h @@ -1,7 +1,7 @@ #ifndef collision_H #define collision_H -#include "common_structs.h" +#include #define COLLISION 0x1 #define NO_COLLISION 0x0 @@ -9,32 +9,33 @@ void nullify_displaylist(uintptr_t); void func_802AAAAC(Collision*); f32 func_802AAB4C(Player*); -s32 func_802AAE4C(Collision*, f32, f32, f32, f32, u16); -s32 func_802AB288(Collision*, f32, f32, f32, f32, u16); -s32 func_802AB6C4(Collision*, f32, f32, f32, f32, u16); +s32 check_collision_zx(Collision*, f32, f32, f32, f32, u16); +s32 check_collision_yx(Collision*, f32, f32, f32, f32, u16); +s32 check_collision_zy(Collision*, f32, f32, f32, f32, u16); s8 get_surface_type(u16); -s16 get_course_section(u16); +s16 get_section_id(u16); s16 func_802ABD7C(u16); s16 func_802ABDB8(u16); s16 func_802ABDF4(u16); -f32 func_802ABE30(f32, f32, f32, u16); +f32 calculate_surface_height(f32, f32, f32, u16); f32 func_802ABEAC(Collision*, Vec3f); +void shell_collision(Collision *, Vec3f); void process_shell_collision(Vec3f, f32, Vec3f, f32); -u16 process_collision(Player*, KartBoundingBoxCorner*, f32, f32, f32); -void func_802AC114(Vec3f, f32, Vec3f, f32); -s32 func_802AC22C(KartBoundingBoxCorner*); -u16 func_802AD950(Collision*, f32, f32, f32, f32, f32, f32, f32); -u16 func_802ADDC8(Collision*, f32, f32, f32, f32); -f32 func_802AE1C0(f32, f32, f32); +u16 process_collision(Player*, KartTyre*, f32, f32, f32); +void adjust_pos_orthogonally(Vec3f, f32, Vec3f, f32); +s32 detect_tyre_collision(KartTyre*); +u16 actor_terrain_collision(Collision*, f32, f32, f32, f32, f32, f32, f32); +u16 check_bounding_collision(Collision*, f32, f32, f32, f32); +f32 spawn_actor_on_surface(f32, f32, f32); void set_vtx_buffer(uintptr_t, u32, u32); s32 is_line_intersecting_rectangle(s16, s16, s16, s16, s16, s16, s16, s16); s32 is_triangle_intersecting_bounding_box(s16, s16, s16, s16, u16); -void func_802AF314(void); -void set_vertex_data_with_defaults(Gfx*); -void set_vertex_data_with_default_section_id(Gfx*, s8); -void find_and_set_vertex_data(Gfx*, s8, u16); +void generate_collision_grid(void); +void generate_collision_mesh_with_defaults(Gfx*); +void generate_collision_mesh_with_default_section_id(Gfx*, s8); +void generate_collision_mesh(Gfx*, s8, u16); void find_and_set_tile_size(uintptr_t, s32, s32); -void set_vertex_colours(u32, u32, s32, s8, u8, u8, u8); +void set_vertex_colours(uintptr_t, u32, s32, s8, u8, u8, u8); void find_vtx_and_set_colours(uintptr_t, s8, u8, u8, u8); void subtract_scaled_vector(Vec3f, f32, Vec3f); diff --git a/src/racing/math_util.c b/src/racing/math_util.c index c28210f63..84f92e935 100644 --- a/src/racing/math_util.c +++ b/src/racing/math_util.c @@ -7,6 +7,7 @@ #include #include "buffers/trig_tables.h" #include "math.h" +#include "memory.h" #pragma intrinsic (sqrtf,fabs) @@ -24,10 +25,10 @@ UNUSED s32 func_802B4F60(UNUSED s32 arg0, Vec3f arg1, UNUSED s32 arg2, UNUSED f3 sp28 = sp1C[0]; sp2C = sp1C[1]; // wut? - if (sp2C && sp2C); + if (sp2C && sp2C) {}; sp2C = ((sp30[0][3] * sp28) + (sp30[1][3] * sp2C) + (sp30[2][3] * sp1C[2])) + sp30[3][3]; // double wut? - if (sp28 && sp28); + if (sp28 && sp28) {}; mtxf_translate_vec3f_mat4(sp1C, sp30); if (0.0f >= sp2C) { @@ -126,7 +127,7 @@ void *vec3f_copy_return(Vec3f dest, Vec3f src) { dest[1] = src[1]; dest[2] = src[2]; //! @warning function returns address of local variable - return &dest; + return &dest; } void vec3s_copy(Vec3s dest, Vec3s src) { @@ -420,8 +421,10 @@ void func_802B5D30(s16 arg0, s16 arg1, s32 arg2) { func_802B5D64(0x9000000, arg0, arg1, arg2); } -void func_802B5D64(uintptr_t arg0, s16 arg1, s16 arg2, s32 arg3) { - UNUSED s32 pad[3]; +void func_802B5D64(uintptr_t addr, s16 arg1, s16 arg2, s32 arg3) { + u32 segment = SEGMENT_NUMBER2(addr); + u32 offset = SEGMENT_OFFSET(addr); + UNUSED s32 pad; f32 sp48; f32 sp44; f32 sp40; @@ -431,7 +434,7 @@ void func_802B5D64(uintptr_t arg0, s16 arg1, s16 arg2, s32 arg3) { s8 sp2C[3]; Lights1 *var_s0; - var_s0 = (Lights1 *) VIRTUAL_TO_PHYSICAL2(gSegmentTable[arg0 >> 0x18] + (arg0 & 0xFFFFFF)); + var_s0 = (Lights1 *) VIRTUAL_TO_PHYSICAL2(gSegmentTable[segment] + offset); sp48 = sins(arg2); sp44 = coss(arg2); sp40 = sins(arg1); @@ -1150,15 +1153,17 @@ f32 is_within_render_distance(Vec3f cameraPos, Vec3f objectPos, u16 orientationY // No idea if arg1 is actually a Mat4 or not, but since this function is unused // its impossible to know with certainty either way, very close of func_802B5D64 -UNUSED void func_802B8414(uintptr_t arg0, Mat4 arg1, s16 arg2, s16 arg3, s32 arg4) { - UNUSED s32 pad[3]; +UNUSED void func_802B8414(uintptr_t addr, Mat4 arg1, s16 arg2, s16 arg3, s32 arg4) { + u32 segment = SEGMENT_NUMBER2(addr); + u32 offset = SEGMENT_OFFSET(addr); + UNUSED s32 pad; Vec3f sp40; s8 sp3C[3]; s32 var_v0; UNUSED s32 pad2[3]; Lights1 *var_s0; - var_s0 = (Lights1 *) VIRTUAL_TO_PHYSICAL2(gSegmentTable[arg0 >> 0x18] + (arg0 & 0xFFFFFF)); + var_s0 = (Lights1 *) VIRTUAL_TO_PHYSICAL2(gSegmentTable[segment] + offset); sins(arg3); coss(arg3); sins(arg2); @@ -1197,16 +1202,16 @@ void func_802B8614(Player *arg0) { f64 temp_f4; f64 temp_f6; - temp_f6 = (f64) arg0->boundingBoxCorners[1].cornerPos[0]; + temp_f6 = (f64) arg0->tyres[FRONT_RIGHT].pos[0]; sp78 = temp_f6; - sp70 = (f64) arg0->boundingBoxCorners[1].cornerGroundY; - sp68 = (f64) arg0->boundingBoxCorners[1].cornerPos[2]; - temp_f30 = (f64) arg0->boundingBoxCorners[0].cornerPos[0]; - sp58 = (f64) arg0->boundingBoxCorners[0].cornerGroundY; - sp50 = (f64) arg0->boundingBoxCorners[0].cornerPos[2]; - sp48 = (f64) arg0->boundingBoxCorners[3].cornerPos[0]; - sp40 = (f64) arg0->boundingBoxCorners[3].cornerGroundY; - temp_f4 = (f64) arg0->boundingBoxCorners[3].cornerPos[2]; + sp70 = (f64) arg0->tyres[FRONT_RIGHT].baseHeight; + sp68 = (f64) arg0->tyres[FRONT_RIGHT].pos[2]; + temp_f30 = (f64) arg0->tyres[FRONT_LEFT].pos[0]; + sp58 = (f64) arg0->tyres[FRONT_LEFT].baseHeight; + sp50 = (f64) arg0->tyres[FRONT_LEFT].pos[2]; + sp48 = (f64) arg0->tyres[BACK_RIGHT].pos[0]; + sp40 = (f64) arg0->tyres[BACK_RIGHT].baseHeight; + temp_f4 = (f64) arg0->tyres[BACK_RIGHT].pos[2]; temp_f2 = sp58 - sp70; sp38 = temp_f4; temp_f12 = temp_f4 - sp50; diff --git a/src/racing/math_util.h b/src/racing/math_util.h index d9ee99e63..f3ec26b3f 100644 --- a/src/racing/math_util.h +++ b/src/racing/math_util.h @@ -3,7 +3,6 @@ #include -#include "types.h" //#define sins(x) gSineTable[(u16) (x) >> 4] //#define coss(x) gCosineTable[(u16) (x) >> 4] @@ -22,6 +21,7 @@ s32 render_set_position(Mat4, s32); f32 func_802B51E8(Vec3f, Vec3f); s32 get_angle_between_two_vectors(Vec3f, Vec3f); u32 func_802B5258(Vec3f, Vec3s); +void func_802B5794(Mat4, Vec3f, Vec3f); void vec3f_set(Vec3f, f32, f32, f32); void vec3s_set(Vec3s, s16, s16, s16); void *vec3f_copy_return(Vec3f, Vec3f); @@ -34,6 +34,7 @@ void add_translate_mat4_vec3f(Mat4, Mat4, Vec3f); void add_translate_mat4_vec3f_lite(Mat4, Mat4, Vec3f); void mtxf_translate(Mat4, Vec3f); void func_802B5564(Mat4, u16*, f32, f32, f32, f32, f32); +void func_802B5794(Mat4, Vec3f, Vec3f); void mtxf_rotate_x(Mat4, s16); void mtxf_rotate_y(Mat4, s16); void mtxf_s16_rotate_z(Mat4, s16); diff --git a/src/racing/memory.c b/src/racing/memory.c index 013c1c62c..2a300d63e 100644 --- a/src/racing/memory.c +++ b/src/racing/memory.c @@ -1,7 +1,6 @@ #include #include #include -#include #include #include #include @@ -16,7 +15,7 @@ s32 sGfxSeekPosition; s32 sPackedSeekPosition; -u32 sPoolFreeSpace; +uintptr_t sPoolFreeSpace; struct MainPoolBlock *sPoolListHeadL; struct MainPoolBlock *sPoolListHeadR; @@ -26,15 +25,16 @@ struct UnkStruct_802B8CD4 D_802B8CD4[] = { 0 }; s32 D_802B8CE4 = 0; // pad +s32 memoryPadding[2]; /** * @brief Returns the address of the next available memory location and updates the memory pointer * to reference the next location of available memory based provided size to allocate. * @param size of memory to allocate. - * @return Address of free memory + * @return Address of free memory */ -void *get_next_available_memory_addr(u32 size) { - u32 *freeSpace = (u32 *)gNextFreeMemoryAddress; +void *get_next_available_memory_addr(uintptr_t size) { + uintptr_t freeSpace = (uintptr_t) gNextFreeMemoryAddress; size = ALIGN16(size); gNextFreeMemoryAddress += size; return freeSpace; @@ -84,7 +84,7 @@ void move_segment_table_to_dmem(void) { /** * @brief Sets the starting location for allocating memory and calculates pool size. - * + * * Default memory size, 701.984 Kilobytes. */ void initialize_memory_pool(uintptr_t poolStart, uintptr_t poolEnd) { @@ -100,8 +100,8 @@ void initialize_memory_pool(uintptr_t poolStart, uintptr_t poolEnd) { /** * @brief Allocates memory and adjusts gFreeMemorySize. */ -void *allocate_memory(u32 size) { - u32 *freeSpace; +void *allocate_memory(size_t size) { + uintptr_t freeSpace; size = ALIGN16(size); gFreeMemorySize -= size; @@ -121,7 +121,7 @@ UNUSED void func_802A7D54(s32 arg0, s32 arg1) { */ void *load_data(uintptr_t startAddr, uintptr_t endAddr) { void *allocated; - u32 size = endAddr - startAddr; + uintptr_t size = endAddr - startAddr; allocated = allocate_memory(size); if (allocated != 0) { @@ -130,7 +130,7 @@ void *load_data(uintptr_t startAddr, uintptr_t endAddr) { return (void *) allocated; } -UNUSED void main_pool_init(u32 start, u32 end) { +UNUSED void main_pool_init(uintptr_t start, uintptr_t end) { start = ALIGN16(start); end = ALIGN16(end - 15); @@ -149,7 +149,7 @@ UNUSED void main_pool_init(u32 start, u32 end) { * specified side of the pool (MEMORY_POOL_LEFT or MEMORY_POOL_RIGHT). * If there is not enough space, return NULL. */ -UNUSED void *main_pool_alloc(u32 size, u32 side) { +UNUSED void *main_pool_alloc(uintptr_t size, uintptr_t side) { struct MainPoolBlock *newListHead; void *addr = NULL; @@ -178,7 +178,7 @@ UNUSED void *main_pool_alloc(u32 size, u32 side) { * newer blocks are freed as well. * Return the amount of free space left in the pool. */ -UNUSED u32 main_pool_free(void *addr) { +UNUSED uintptr_t main_pool_free(void *addr) { struct MainPoolBlock *block = (struct MainPoolBlock *) ((u8 *) addr - 8); struct MainPoolBlock *oldListHead = (struct MainPoolBlock *) ((u8 *) addr - 8); @@ -200,7 +200,7 @@ UNUSED u32 main_pool_free(void *addr) { return sPoolFreeSpace; } // main_pool_realloc -UNUSED void *main_pool_realloc(void *addr, u32 size) { +UNUSED void *main_pool_realloc(void *addr, uintptr_t size) { void *newAddr = NULL; struct MainPoolBlock *block = (struct MainPoolBlock *) ((u8 *) addr - 8); @@ -211,13 +211,13 @@ UNUSED void *main_pool_realloc(void *addr, u32 size) { return newAddr; } -UNUSED s32 main_pool_available(void) { +UNUSED uintptr_t main_pool_available(void) { return sPoolFreeSpace - 8; } -UNUSED u32 main_pool_push_state(void) { +UNUSED uintptr_t main_pool_push_state(void) { struct MainPoolState *prevState = gMainPoolState; - u32 freeSpace = sPoolFreeSpace; + uintptr_t freeSpace = sPoolFreeSpace; struct MainPoolBlock *lhead = sPoolListHeadL; struct MainPoolBlock *rhead = sPoolListHeadR; @@ -233,7 +233,7 @@ UNUSED u32 main_pool_push_state(void) { * Restore pool state from a previous call to main_pool_push_state. Return the * amount of free space left in the pool. */ -UNUSED u32 main_pool_pop_state(void) { +UNUSED uintptr_t main_pool_pop_state(void) { sPoolFreeSpace = gMainPoolState->freeSpace; sPoolListHeadL = gMainPoolState->listHeadL; sPoolListHeadR = gMainPoolState->listHeadR; @@ -243,9 +243,9 @@ UNUSED u32 main_pool_pop_state(void) { // similar to sm64 dma_read UNUSED void *func_802A80B0(u8 *dest, u8 *srcStart, u8 *srcEnd) { void *addr; - u32 size = srcStart - dest; - addr = main_pool_alloc(size, (u32) srcEnd); - + uintptr_t size = srcStart - dest; + addr = main_pool_alloc(size, (uintptr_t) srcEnd); + if (addr != 0) { osInvalDCache(addr, size); @@ -268,12 +268,12 @@ UNUSED void *load_segment(s32 segment, u8 *srcStart, u8 *srcEnd, u8 *side) { // Similar to sm64 load_to_fixed_pool_addr? UNUSED void *func_802A8190(s32 arg0, u8 *arg1) { - //u32 srcSize = ALIGN16(srcEnd - srcStart); - //u32 destSize = ALIGN16((u8 *) sPoolListHeadR - destAddr); + //uintptr_t srcSize = ALIGN16(srcEnd - srcStart); + //uintptr_t destSize = ALIGN16((u8 *) sPoolListHeadR - destAddr); void *addr; - u32 temp_v0 = D_802B8CD4[arg0].unk4; - u32 temp_v1 = D_802B8CD4[arg0].unk8; - u32 temp_v2 = D_802B8CD4[arg0].unk2; + uintptr_t temp_v0 = D_802B8CD4[arg0].unk4; + uintptr_t temp_v1 = D_802B8CD4[arg0].unk8; + uintptr_t temp_v2 = D_802B8CD4[arg0].unk2; addr = func_802A80B0((u8 *) temp_v0, (u8 *) temp_v1, arg1); //dest = main_pool_alloc(destSize, MEMORY_POOL_RIGHT); @@ -300,7 +300,7 @@ UNUSED void func_802A81EC(void) { } while (phi_s0 != 3); } -UNUSED struct AllocOnlyPool *alloc_only_pool_init(u32 size, u32 side) { +UNUSED struct AllocOnlyPool *alloc_only_pool_init(uintptr_t size, uintptr_t side) { void *addr; struct AllocOnlyPool *subPool = NULL; @@ -316,13 +316,13 @@ UNUSED struct AllocOnlyPool *alloc_only_pool_init(u32 size, u32 side) { return subPool; } -UNUSED u32 func_802A82AC(s32 arg0) { - u32 temp_v0; - u32 phi_v1; +UNUSED uintptr_t func_802A82AC(s32 arg0) { + uintptr_t temp_v0; + uintptr_t phi_v1; temp_v0 = D_801502A0 - arg0; phi_v1 = 0; - if (temp_v0 >= (u32) gDisplayListHead) { + if (temp_v0 >= (uintptr_t) gDisplayListHead) { D_801502A0 = temp_v0; phi_v1 = temp_v0; } @@ -334,7 +334,7 @@ UNUSED u32 func_802A82AC(s32 arg0) { */ u8 *dma_compressed_vtx(u8 *start, u8 *end) { u8 *freeSpace; - u32 size; + uintptr_t size; size = ALIGN16(end - start); freeSpace = (u8 *) gNextFreeMemoryAddress; @@ -344,12 +344,12 @@ u8 *dma_compressed_vtx(u8 *start, u8 *end) { } // unused mio0 decode func. -UNUSED s32 func_802A8348(s32 arg0, s32 arg1, s32 arg2) { - u32 offset; +UNUSED uintptr_t func_802A8348(s32 arg0, s32 arg1, s32 arg2) { + uintptr_t offset; UNUSED void *pad; uintptr_t oldAddr; void *newAddr; - + offset = ALIGN16(arg1 * arg2); oldAddr = gNextFreeMemoryAddress; newAddr = (void *) (oldAddr + offset); @@ -357,7 +357,7 @@ UNUSED s32 func_802A8348(s32 arg0, s32 arg1, s32 arg2) { osInvalDCache(newAddr, offset); osPiStartDma(&gDmaIoMesg, 0, 0, (uintptr_t) &_other_texturesSegmentRomStart[SEGMENT_OFFSET(arg0)], newAddr, offset, &gDmaMesgQueue); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1); - + func_80040030((u8 *) newAddr, (u8 *) oldAddr); gNextFreeMemoryAddress += offset; return oldAddr; @@ -370,7 +370,7 @@ UNUSED u8 *func_802A841C(u8* arg0, s32 arg1, s32 arg2) { temp_a0 = temp_v0 + arg2; arg1 = ALIGN16(arg1); arg2 = ALIGN16(arg2); - + osInvalDCache(temp_a0, arg1); osPiStartDma(&gDmaIoMesg, 0, 0, (uintptr_t) &_other_texturesSegmentRomStart[SEGMENT_OFFSET(arg0)],temp_a0, arg1, &gDmaMesgQueue); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1); @@ -395,8 +395,8 @@ u8 *dma_textures(u8 texture[], size_t arg1, size_t arg2) { return temp_v0; } -u32 MIO0_0F(u8 *arg0, u32 arg1, u32 arg2) { - u32 oldHeapEndPtr; +uintptr_t MIO0_0F(u8 *arg0, uintptr_t arg1, uintptr_t arg2) { + uintptr_t oldHeapEndPtr; void *temp_v0; arg1 = ALIGN16(arg1); @@ -497,7 +497,7 @@ void unpack_lights(Gfx *arg0, UNUSED u8 *arg1, s8 arg2) { } void unpack_displaylist(Gfx *arg0, u8 *args, UNUSED s8 opcode) { - u32 temp_v0 = args[sPackedSeekPosition++]; + uintptr_t temp_v0 = args[sPackedSeekPosition++]; uintptr_t temp_t7 = ((args[sPackedSeekPosition++]) << 8 | temp_v0) * 8; arg0[sGfxSeekPosition].words.w0 = 0x06000000; // Segment seven addr @@ -507,7 +507,7 @@ void unpack_displaylist(Gfx *arg0, u8 *args, UNUSED s8 opcode) { // end displaylist void unpack_end_displaylist(Gfx *arg0, UNUSED u8 *arg1, UNUSED s8 arg2) { - arg0[sGfxSeekPosition].words.w0 = G_ENDDL << 24; + arg0[sGfxSeekPosition].words.w0 = (uintptr_t)(uint8_t)G_ENDDL << 24; arg0[sGfxSeekPosition].words.w1 = 0; sGfxSeekPosition++; } @@ -533,70 +533,70 @@ void unpack_cull_displaylist(Gfx *arg0, UNUSED u8 *arg1, UNUSED s8 arg2) { sGfxSeekPosition++; } -void unpack_combine_mode1(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 arg2) { +void unpack_combine_mode1(Gfx *arg0, UNUSED u8 *arg1, UNUSED uintptr_t arg2) { Gfx macro[] = {gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA)}; arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; sGfxSeekPosition++; } -void unpack_combine_mode2(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 arg2) { +void unpack_combine_mode2(Gfx *arg0, UNUSED u8 *arg1, UNUSED uintptr_t arg2) { Gfx macro[] = {gsDPSetCombineMode(G_CC_MODULATERGBDECALA, G_CC_MODULATERGBDECALA)}; arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; sGfxSeekPosition++; } -void unpack_combine_mode_shade(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 arg2) { +void unpack_combine_mode_shade(Gfx *arg0, UNUSED u8 *arg1, UNUSED uintptr_t arg2) { Gfx macro[] = {gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE)}; arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; sGfxSeekPosition++; } -void unpack_combine_mode4(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 arg2) { +void unpack_combine_mode4(Gfx *arg0, UNUSED u8 *arg1, UNUSED uintptr_t arg2) { Gfx macro[] = {gsDPSetCombineMode(G_CC_MODULATERGBDECALA, G_CC_MODULATERGBDECALA)}; arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; sGfxSeekPosition++; } -void unpack_combine_mode5(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 arg2) { +void unpack_combine_mode5(Gfx *arg0, UNUSED u8 *arg1, UNUSED uintptr_t arg2) { Gfx macro[] = {gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA)}; arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; sGfxSeekPosition++; } -void unpack_render_mode_opaque(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 arg2) { +void unpack_render_mode_opaque(Gfx *arg0, UNUSED u8 *arg1, UNUSED uintptr_t arg2) { Gfx macro[] = {gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2)}; arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; sGfxSeekPosition++; } -void unpack_render_mode_tex_edge(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 arg2) { +void unpack_render_mode_tex_edge(Gfx *arg0, UNUSED u8 *arg1, UNUSED uintptr_t arg2) { Gfx macro[] = {gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2)}; arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; sGfxSeekPosition++; } -void unpack_render_mode_translucent(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 arg2) { +void unpack_render_mode_translucent(Gfx *arg0, UNUSED u8 *arg1, UNUSED uintptr_t arg2) { Gfx macro[] = {gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2)}; arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; sGfxSeekPosition++; } -void unpack_render_mode_opaque_decal(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 arg2) { +void unpack_render_mode_opaque_decal(Gfx *arg0, UNUSED u8 *arg1, UNUSED uintptr_t arg2) { Gfx macro[] = {gsDPSetRenderMode(G_RM_AA_ZB_OPA_DECAL, G_RM_AA_ZB_OPA_DECAL)}; arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; sGfxSeekPosition++; } -void unpack_render_mode_translucent_decal(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 arg2) { +void unpack_render_mode_translucent_decal(Gfx *arg0, UNUSED u8 *arg1, UNUSED uintptr_t arg2) { Gfx macro[] = {gsDPSetRenderMode(G_RM_AA_ZB_XLU_DECAL, G_RM_AA_ZB_XLU_DECAL)}; arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; @@ -605,9 +605,9 @@ void unpack_render_mode_translucent_decal(Gfx *arg0, UNUSED u8 *arg1, UNUSED u32 void unpack_tile_sync(Gfx *gfx, u8 *args, s8 opcode) { Gfx tileSync[] = { gsDPTileSync() }; - u32 temp_a0; - u32 lo; - u32 hi; + uintptr_t temp_a0; + uintptr_t lo; + uintptr_t hi; s32 width; s32 height; @@ -682,9 +682,9 @@ void unpack_tile_sync(Gfx *gfx, u8 *args, s8 opcode) { gfx[sGfxSeekPosition].words.w1 = tileSync->words.w1; sGfxSeekPosition++; - lo = (G_SETTILE << 24) | (fmt << 21) | (siz << 19) | (line << 9) | tmem; + lo = ((uintptr_t)(uint8_t)G_SETTILE << 24) | (fmt << 21) | (siz << 19) | (line << 9) | tmem; hi = ((cmt) << 18) | ((maskt) << 14) | ((cms) << 8) | ((masks) << 4); - + gfx[sGfxSeekPosition].words.w0 = lo; gfx[sGfxSeekPosition].words.w1 = hi; sGfxSeekPosition++; @@ -692,7 +692,7 @@ void unpack_tile_sync(Gfx *gfx, u8 *args, s8 opcode) { lrs = (width - 1) << 2; lrt = (height - 1) << 2; - lo = (G_SETTILESIZE << 24); + lo = ((uintptr_t)(uint8_t)G_SETTILESIZE << 24); hi = (lrs << 12) | lrt; gfx[sGfxSeekPosition].words.w0 = lo; @@ -701,20 +701,20 @@ void unpack_tile_sync(Gfx *gfx, u8 *args, s8 opcode) { } void unpack_tile_load_sync(Gfx *gfx, u8 *args, s8 opcode) { - UNUSED u32 var; + UNUSED uintptr_t var; Gfx tileSync[] = { gsDPTileSync() }; Gfx loadSync[] = { gsDPLoadSync() }; - u32 arg; - u32 lo; - u32 hi; - u32 addr; - u32 width; - u32 height; - u32 fmt; - u32 siz; - u32 tmem; - u32 tile; + uintptr_t arg; + uintptr_t lo; + uintptr_t hi; + uintptr_t addr; + uintptr_t width; + uintptr_t height; + uintptr_t fmt; + uintptr_t siz; + uintptr_t tmem; + uintptr_t tile; switch (opcode) { case 32: @@ -763,7 +763,7 @@ void unpack_tile_load_sync(Gfx *gfx, u8 *args, s8 opcode) { // Generate gfx - lo = (G_SETTIMG << 24) | (fmt << 21) | (siz << 19); + lo = ((uintptr_t)(uint8_t)G_SETTIMG << 24) | (fmt << 21) | (siz << 19); gfx[sGfxSeekPosition].words.w0 = lo; gfx[sGfxSeekPosition].words.w1 = addr; sGfxSeekPosition++; @@ -772,7 +772,7 @@ void unpack_tile_load_sync(Gfx *gfx, u8 *args, s8 opcode) { gfx[sGfxSeekPosition].words.w1 = tileSync->words.w1; sGfxSeekPosition++; - lo = (G_SETTILE << 24) | (fmt << 21) | (siz << 19) | tmem; + lo = ((uintptr_t)(uint8_t)G_SETTILE << 24) | (fmt << 21) | (siz << 19) | tmem; hi = tile << 24; gfx[sGfxSeekPosition].words.w0 = lo; @@ -783,7 +783,7 @@ void unpack_tile_load_sync(Gfx *gfx, u8 *args, s8 opcode) { gfx[sGfxSeekPosition].words.w1 = loadSync->words.w1; sGfxSeekPosition++; - lo = G_LOADBLOCK << 24; + lo = (uintptr_t)(uint8_t)G_LOADBLOCK << 24; hi = (tile << 24) | (MIN((width * height) - 1, 0x7FF) << 12) | CALC_DXT(width, G_IM_SIZ_16b_BYTES); gfx[sGfxSeekPosition].words.w0 = lo; @@ -793,6 +793,7 @@ void unpack_tile_load_sync(Gfx *gfx, u8 *args, s8 opcode) { void unpack_texture_on(Gfx *arg0, UNUSED u8 *args, UNUSED s8 arg2) { Gfx macro[] = { gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON) }; + arg0[sGfxSeekPosition].words.w0 = macro->words.w0; arg0[sGfxSeekPosition].words.w1 = macro->words.w1; sGfxSeekPosition++; @@ -807,42 +808,42 @@ void unpack_texture_off(Gfx *arg0, UNUSED u8 *args, UNUSED s8 arg2) { } void unpack_vtx1(Gfx *gfx, u8 *args, UNUSED s8 arg2) { - u32 temp_t7; - u32 temp_t7_2; + uintptr_t temp_t7; + uintptr_t temp_t7_2; - u32 temp = args[sPackedSeekPosition++]; - u32 temp2 = ((args[sPackedSeekPosition++] << 8) | temp) * 0x10; + uintptr_t temp = args[sPackedSeekPosition++]; + uintptr_t temp2 = ((args[sPackedSeekPosition++] << 8) | temp) * 0x10; temp = args[sPackedSeekPosition++]; temp_t7 = temp & 0x3F; temp = args[sPackedSeekPosition++]; temp_t7_2 = temp & 0x3F; - gfx[sGfxSeekPosition].words.w0 = (G_VTX << 24) | (temp_t7_2 * 2 << 16) | (((temp_t7 << 10) + ((0x10 * temp_t7) - 1))); + gfx[sGfxSeekPosition].words.w0 = ((uintptr_t)(uint8_t)G_VTX << 24) | (temp_t7_2 * 2 << 16) | (((temp_t7 << 10) + ((0x10 * temp_t7) - 1))); gfx[sGfxSeekPosition].words.w1 = 0x04000000 + temp2; sGfxSeekPosition++; } void unpack_vtx2(Gfx *gfx, u8 *args, s8 arg2) { - u32 temp_t9; - u32 temp_v1; - u32 temp_v2; + uintptr_t temp_t9; + uintptr_t temp_v1; + uintptr_t temp_v2; temp_v1 = args[sPackedSeekPosition++]; temp_v2 = ((args[sPackedSeekPosition++] << 8) | temp_v1) * 0x10; temp_t9 = arg2 - 50; - gfx[sGfxSeekPosition].words.w0 = (G_VTX << 24) | ((temp_t9 << 10) + (((temp_t9) * 0x10) - 1)); + gfx[sGfxSeekPosition].words.w0 = ((uintptr_t)(uint8_t)G_VTX << 24) | ((temp_t9 << 10) + (((temp_t9) * 0x10) - 1)); gfx[sGfxSeekPosition].words.w1 = 0x4000000 + temp_v2; sGfxSeekPosition++; } void unpack_triangle(Gfx *gfx, u8 *args, UNUSED s8 arg2) { - u32 temp_v0; - u32 phi_a0; - u32 phi_a2; - u32 phi_a3; + uintptr_t temp_v0; + uintptr_t phi_a0; + uintptr_t phi_a2; + uintptr_t phi_a3; temp_v0 = args[sPackedSeekPosition++]; @@ -859,19 +860,19 @@ void unpack_triangle(Gfx *gfx, u8 *args, UNUSED s8 arg2) { phi_a2 |= (temp_v0 & 3) * 8; phi_a3 = (temp_v0 >> 2) & 0x1F; } - gfx[sGfxSeekPosition].words.w0 = (G_TRI1 << 24); + gfx[sGfxSeekPosition].words.w0 = ((uintptr_t)(uint8_t)G_TRI1 << 24); gfx[sGfxSeekPosition].words.w1 = ((phi_a0 * 2) << 16) | ((phi_a2 * 2) << 8) | (phi_a3 * 2); sGfxSeekPosition++; } void unpack_quadrangle(Gfx *gfx, u8 *args, UNUSED s8 arg2) { - u32 temp_v0; - u32 phi_t0; - u32 phi_a3; - u32 phi_a0; - u32 phi_t2; - u32 phi_t1; - u32 phi_a2; + uintptr_t temp_v0; + uintptr_t phi_t0; + uintptr_t phi_a3; + uintptr_t phi_a0; + uintptr_t phi_t2; + uintptr_t phi_t1; + uintptr_t phi_a2; temp_v0 = args[sPackedSeekPosition++]; @@ -905,17 +906,17 @@ void unpack_quadrangle(Gfx *gfx, u8 *args, UNUSED s8 arg2) { phi_a2 = (temp_v0 >> 2) & 0x1F; } gfx[sGfxSeekPosition].words.w0 = - (G_TRI2 << 24) | ((phi_a0 * 2) << 16) | ((phi_a3 * 2) << 8) | (phi_t0 * 2); + ((uintptr_t)(uint8_t)G_TRI2 << 24) | ((phi_a0 * 2) << 16) | ((phi_a3 * 2) << 8) | (phi_t0 * 2); gfx[sGfxSeekPosition].words.w1 = ((phi_t2 * 2) << 16) | ((phi_t1 * 2) << 8) | (phi_a2 * 2); sGfxSeekPosition++; } void unpack_spline_3D(Gfx *gfx, u8 *arg1, UNUSED s8 arg2) { - u32 temp_v0; - u32 phi_a0; - u32 phi_t0; - u32 phi_a3; - u32 phi_a2; + uintptr_t temp_v0; + uintptr_t phi_a0; + uintptr_t phi_t0; + uintptr_t phi_a3; + uintptr_t phi_a2; temp_v0 = arg1[sPackedSeekPosition++]; @@ -938,7 +939,7 @@ void unpack_spline_3D(Gfx *gfx, u8 *arg1, UNUSED s8 arg2) { temp_v0 = arg1[sPackedSeekPosition++]; phi_a0 |= (temp_v0 & 0xF) * 2; } - gfx[sGfxSeekPosition].words.w0 = (G_LINE3D << 24); + gfx[sGfxSeekPosition].words.w0 = ((uintptr_t)(uint8_t)G_QUAD << 24); gfx[sGfxSeekPosition].words.w1 = ((phi_a0 * 2) << 24) | ((phi_t0 * 2) << 16) | ((phi_a3 * 2) << 8) | (phi_a2 * 2); sGfxSeekPosition++; @@ -954,7 +955,7 @@ UNUSED void func_802A9AEC(void) { * The opcodes range from 0 to 87 which are used to run the relevant unpack function. * The file pointer increments when arguments are used. This way, * displaylist_unpack will always read an opcode and not an argument by accident. - * + * * @warning opcodes that do not contain a definition in the switch are ignored. If an undefined opcode * contained arguments the unpacker might try to unpack those arguments. * This issue is prevented so long as the packed file adheres to correct opcodes and unpack code @@ -977,14 +978,14 @@ void displaylist_unpack(uintptr_t *data, uintptr_t finalDisplaylistOffset, u32 a sGfxSeekPosition = 0; sPackedSeekPosition = 0; - while(TRUE) { + while(true) { // Seek to the next byte opcode = packed_dl[sPackedSeekPosition++]; // Break when the eof has been reached denoted by opcode 0xFF if (opcode == 0xFF) break; - + switch (opcode) { case 0x0: unpack_lights(gfx, packed_dl, opcode); @@ -1257,9 +1258,9 @@ void displaylist_unpack(uintptr_t *data, uintptr_t finalDisplaylistOffset, u32 a struct UnkStr_802AA7C8 { u8 *unk0; - u32 unk4; - u32 unk8; - u32 unkC; + uintptr_t unk4; + uintptr_t unk8; + uintptr_t unkC; }; void decompress_textures(u32 *arg0) { @@ -1268,14 +1269,14 @@ void decompress_textures(u32 *arg0) { struct UnkStr_802AA7C8 *phi_s0 = (struct UnkStr_802AA7C8 *) VIRTUAL_TO_PHYSICAL2(gSegmentTable[segment] + offset); struct UnkStr_802AA7C8 *temp_s0; - u32 temp_t2; + uintptr_t temp_t2; u8 *temp_a0; - u32 phi_v0; - u32 sp20; + uintptr_t phi_v0; + uintptr_t sp20; phi_v0 = 0; temp_s0 = phi_s0; - while (TRUE) { + while (true) { temp_a0 = phi_s0->unk0; if ((temp_a0) == 0) { break; @@ -1287,7 +1288,7 @@ void decompress_textures(u32 *arg0) { gHeapEndPtr -= phi_v0; sp20 = gHeapEndPtr; - while (TRUE) { + while (true) { temp_a0 = phi_s0->unk0; if ((temp_a0) == 0) { break; @@ -1334,7 +1335,7 @@ u8 *load_course(s32 courseId) { CourseVtx *vertexStart; // mio0 compressed u8 *packedStart; u32 vertexCount; - uintptr_t finalDisplaylistOffset; + u8 *finalDisplaylistOffset; u32 unknown1; s32 prevLoadedAddress_saved; u8 *offsetRomStart; diff --git a/src/racing/memory.h b/src/racing/memory.h index 7a9111b0f..6fbdc0c05 100644 --- a/src/racing/memory.h +++ b/src/racing/memory.h @@ -1,7 +1,6 @@ #ifndef MEMORY_H #define MEMORY_H -#include "types.h" struct MainPoolBlock { struct MainPoolBlock *prev; @@ -9,7 +8,7 @@ struct MainPoolBlock { }; struct MainPoolState { - u32 freeSpace; + uintptr_t freeSpace; struct MainPoolBlock *listHeadL; struct MainPoolBlock *listHeadR; struct MainPoolState *prev; @@ -42,31 +41,31 @@ struct AllocOnlyPool { extern f32 vtxStretchY; -void *get_next_available_memory_addr(u32); +void *get_next_available_memory_addr(uintptr_t); uintptr_t set_segment_base_addr(s32, void*); void *get_segment_base_addr(s32); void *segmented_to_virtual(const void *); void move_segment_table_to_dmem(void); void initialize_memory_pool(uintptr_t, uintptr_t); void *decompress_segments(u8*, u8*); -void *allocate_memory(u32); +void *allocate_memory(size_t); void *load_data(uintptr_t, uintptr_t); void func_802A7D54(s32, s32); -void main_pool_init(u32, u32); -void *main_pool_alloc(u32, u32); -u32 main_pool_free(void*); -void *main_pool_realloc(void*, u32); -s32 main_pool_available(void); -u32 main_pool_push_state(void); -u32 main_pool_pop_state(void); +void main_pool_init(uintptr_t, uintptr_t); +void *main_pool_alloc(uintptr_t, uintptr_t); +uintptr_t main_pool_free(void*); +void *main_pool_realloc(void*, uintptr_t); +uintptr_t main_pool_available(void); +uintptr_t main_pool_push_state(void); +uintptr_t main_pool_pop_state(void); void *func_802A80B0(u8*, u8*, u8*); void func_802A81EC(void); -struct AllocOnlyPool *alloc_only_pool_init(u32, u32); -u32 func_802A82AC(s32); -s32 func_802A8348(s32, s32, s32); +struct AllocOnlyPool *alloc_only_pool_init(uintptr_t, uintptr_t); +uintptr_t func_802A82AC(s32); +uintptr_t func_802A8348(s32, s32, s32); u8 *dma_textures(u8*, u32, u32); -u32 MIO0_0F(u8*, u32, u32); +uintptr_t MIO0_0F(u8*, uintptr_t, uintptr_t); void func_802A8844(void); void unpack_lights(Gfx*, u8*, s8); void unpack_displaylist(Gfx*, u8*, s8); @@ -74,16 +73,16 @@ void unpack_end_displaylist(Gfx*, u8*, s8); void unpack_set_geometry_mode(Gfx*, u8*, s8); void unpack_clear_geometry_mode(Gfx*, u8*, s8); void unpack_cull_displaylist(Gfx*, u8*, s8); -void unpack_combine_mode1(Gfx*, u8*, u32); -void unpack_combine_mode2(Gfx*, u8*, u32); -void unpack_combine_mode_shade(Gfx*, u8*, u32); -void unpack_combine_mode4(Gfx*, u8*, u32); -void unpack_combine_mode5(Gfx*, u8*, u32); -void unpack_render_mode_opaque(Gfx*, u8*, u32); -void unpack_render_mode_tex_edge(Gfx*, u8*, u32); -void unpack_render_mode_translucent(Gfx*, u8*, u32); -void unpack_render_mode_opaque_decal(Gfx*, u8*, u32); -void unpack_render_mode_translucent_decal(Gfx*, u8*, u32); +void unpack_combine_mode1(Gfx*, u8*, uintptr_t); +void unpack_combine_mode2(Gfx*, u8*, uintptr_t); +void unpack_combine_mode_shade(Gfx*, u8*, uintptr_t); +void unpack_combine_mode4(Gfx*, u8*, uintptr_t); +void unpack_combine_mode5(Gfx*, u8*, uintptr_t); +void unpack_render_mode_opaque(Gfx*, u8*, uintptr_t); +void unpack_render_mode_tex_edge(Gfx*, u8*, uintptr_t); +void unpack_render_mode_translucent(Gfx*, u8*, uintptr_t); +void unpack_render_mode_opaque_decal(Gfx*, u8*, uintptr_t); +void unpack_render_mode_translucent_decal(Gfx*, u8*, uintptr_t); void unpack_tile_sync(Gfx*, u8*, s8); void unpack_tile_load_sync(Gfx*, u8*, s8); void unpack_texture_on(Gfx*, u8*, s8); diff --git a/src/racing/race_logic.c b/src/racing/race_logic.c index 04f8ce945..5c9772b71 100644 --- a/src/racing/race_logic.c +++ b/src/racing/race_logic.c @@ -1,8 +1,7 @@ #include #include -#include +#include #include -#include #include #include #include "camera.h" @@ -505,7 +504,7 @@ f32 func_8028EE8C(s32 arg0) { f32 temp_v1 = gPlayers[arg0].copy_rotation_z; f32 temp_f14 = D_8015F8D0[2] - temp_v0; f32 temp_f16 = temp_v1 - D_8015F8D0[2]; - return gCourseTimer - ((0.01666666f * temp_f14) / (temp_f14 + temp_f16)); + return gCourseTimer - ((COURSE_TIMER_ITER_f * temp_f14) / (temp_f14 + temp_f16)); } void func_8028EEF0(s32 i) { @@ -837,7 +836,7 @@ void func_8028F970(void) { return; } } - + if (gEnableDebugMode) { if (gModeSelection == BATTLE) { // do stuff? @@ -1109,7 +1108,7 @@ void func_802903B0(void) { void func_802903D8(Player *playerOne, Player *playerTwo) { f32 sp70 = (playerOne->boundingBoxSize + playerTwo->boundingBoxSize) - 5.0f; f32 temp_f0; - f32 sp74; + f32 sp74; Vec3f sp60; Vec3f sp54; f32 temp_f0_2; diff --git a/src/racing/render_courses.c b/src/racing/render_courses.c index a0dea7f8b..0e5a5067b 100644 --- a/src/racing/render_courses.c +++ b/src/racing/render_courses.c @@ -1,8 +1,8 @@ #include #include +#include #include #include -#include #include #include "render_courses.h" @@ -31,13 +31,13 @@ s16 D_802B87D4 = 0; s16 currentScreenSection = 0; s32 func_80290C20(Camera *camera) { - if (camera->unk_54.unk34 == 0) { + if (camera->collision.unk34 == 0) { return 1; } - if ((camera->unk_54.unk30 == 1) && (camera->unk_54.unk3C[0] < 3.0f)) { + if ((camera->collision.unk30 == 1) && (camera->collision.surfaceDistance[0] < 3.0f)) { return 1; } - if ((camera->unk_54.unk32 == 1) && (camera->unk_54.unk3C[1] < 3.0f)) { + if ((camera->collision.unk32 == 1) && (camera->collision.surfaceDistance[1] < 3.0f)) { return 1; } return 0; @@ -64,22 +64,22 @@ void parse_course_displaylists(uintptr_t addr) { } else { D_8015F5A4 = 0; } - find_and_set_vertex_data(section->addr, section->surfaceType, section->sectionId); + generate_collision_mesh(section->addr, section->surfaceType, section->sectionId); section++; } } extern u32 isFlycam; -void render_course_section(uintptr_t sectionAddr, struct UnkStruct_800DC5EC *arg1) { +void render_course_segments(uintptr_t addr, struct UnkStruct_800DC5EC *arg1) { Player *player = arg1->player; Camera *camera = arg1->camera; u32 segment = SEGMENT_NUMBER2(sectionAddr); u32 offset = SEGMENT_OFFSET(sectionAddr); //! @todo Should be Gfx* - s32 *sectionGfx = (s32 *) VIRTUAL_TO_PHYSICAL2(gSegmentTable[segment] + offset); - s16 direction; - s16 section; + s32 *gfx = (s32 *) VIRTUAL_TO_PHYSICAL2(gSegmentTable[segment] + offset); + s16 var_a3; + s16 index; s16 sp1E; s16 temp_v0_3; u16 rot; @@ -116,72 +116,71 @@ void render_course_section(uintptr_t sectionAddr, struct UnkStruct_800DC5EC *arg arg1->playerDirection = direction; if (D_80152300[camera - camera1] == 1) { - sp1E = get_course_section(camera->unk_54.unk3A); - temp_v0_3 = get_course_section(player->unk_110.unk3A); - section = sp1E - temp_v0_3; - if ((section < 2) && (section >= -1)) { + sp1E = get_section_id(camera->collision.meshIndexZX); + temp_v0_3 = get_section_id(player->collision.meshIndexZX); + index = sp1E - temp_v0_3; + if ((index < 2) && (index >= -1)) { if (sp1E == 255) { if (temp_v0_3 == 255) { - section = arg1->pathCounter; - } else if (player->unk_110.unk3C[2] > 30.0f) { - section = arg1->pathCounter; - } else { - section = temp_v0_3; + index = arg1->pathCounter; + } else if (player->collision.surfaceDistance[2] > 30.0f) { + index = arg1->pathCounter; + } else { + index = temp_v0_3; } - } else if (camera->unk_54.unk3C[2] > 30.0f) { - section = arg1->pathCounter; - } else { - section = sp1E; + } else if (camera->collision.surfaceDistance[2] > 30.0f) { + index = arg1->pathCounter; + } else { + index = sp1E; } } else { switch(gCurrentCourseId) { case COURSE_BOWSER_CASTLE: if ((temp_v0_3 >= 0x11) && (temp_v0_3 < 0x18)) { - section = temp_v0_3; + index = temp_v0_3; } else if ((temp_v0_3 == 255) && (sp1E != 255)) { - section = sp1E; + index = sp1E; } else if ((temp_v0_3 != 255) && (sp1E == 255)) { - section = temp_v0_3; + index = temp_v0_3; } else { - section = arg1->pathCounter; + index = arg1->pathCounter; } break; case COURSE_CHOCO_MOUNTAIN: if ((temp_v0_3 >= 0xE) && (temp_v0_3 < 0x16)) { - section = temp_v0_3; + index = temp_v0_3; } else if ((temp_v0_3 == 255) && (sp1E != 255)) { - section = sp1E; + index = sp1E; } else if ((temp_v0_3 != 255) && (sp1E == 255)) { - section = temp_v0_3; + index = temp_v0_3; } else { - section = arg1->pathCounter; + index = arg1->pathCounter; } break; default: if (temp_v0_3 == 255) { - section = arg1->pathCounter; - } else if (player->unk_110.unk3C[2] > 30.0f) { - section = arg1->pathCounter; - } else { - section = temp_v0_3; + index = arg1->pathCounter; + } else if (player->collision.surfaceDistance[2] > 30.0f) { + index = arg1->pathCounter; + } else { + index = temp_v0_3; } break; } } } else { - section = get_course_section(camera->unk_54.unk3A); - if (camera->unk_54.unk3C[2] > 30.0f) { - section = arg1->pathCounter; - } else if (section == 255) { - section = arg1->pathCounter; + index = get_section_id(camera->collision.meshIndexZX); + if (camera->collision.surfaceDistance[2] > 30.0f) { + index = arg1->pathCounter; + } else if (index == 255) { + index = arg1->pathCounter; } } - arg1->pathCounter = section; - section = ((section - 1) * 4) + direction; - - gSPDisplayList(gDisplayListHead++, sectionGfx[section]); + arg1->pathCounter = index; + index = ((index - 1) * 4) + var_a3; + gSPDisplayList(gDisplayListHead++, gfx[index]); } void func_80291198(void) { @@ -287,7 +286,7 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 playerId) { gDPSetBlendMask(gDisplayListHead++, 0xFF); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); - render_course_section((uintptr_t)d_course_koopa_troopa_beach_section_dl2, arg0); + render_course_segments((uintptr_t)d_course_koopa_troopa_beach_section_dl2, arg0); gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 1, 1, G_OFF); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); @@ -305,7 +304,7 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 playerId) { mtxf_identity(matrix); render_set_position(matrix, 0); - render_course_section((uintptr_t) d_course_sherbet_land_section_dl2, arg0); + render_course_segments((uintptr_t) d_course_sherbet_land_section_dl2, arg0); gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); if ((func_80290C20(arg0->camera) == 1) && (func_802AAB4C(player) < player->pos[1])) { @@ -322,7 +321,7 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 playerId) { mtxf_identity(matrix); render_set_position(matrix, 0); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); - render_course_section((uintptr_t) &d_course_rainbow_road_dl_list, arg0); + render_course_segments((uintptr_t) &d_course_rainbow_road_dl_list, arg0); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); gDPPipeSync(gDisplayListHead++); @@ -608,7 +607,7 @@ void render_mario_raceway(struct UnkStruct_800DC5EC *arg0) { // d_course_mario_raceway_packed_dl_14A0 gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070014A0)); - render_course_section((uintptr_t) mario_raceway_dls, arg0); + render_course_segments((uintptr_t) mario_raceway_dls, arg0); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); @@ -655,7 +654,7 @@ void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) { gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005868)); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); - render_course_section((uintptr_t) choco_mountain_dls, arg0); + render_course_segments((uintptr_t) choco_mountain_dls, arg0); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2); @@ -693,7 +692,7 @@ void render_bowsers_castle(struct UnkStruct_800DC5EC *arg0) { if (D_802B87BC > 255) { D_802B87BC = 0; } - render_course_section((uintptr_t) bowsers_castle_dls, arg0); + render_course_segments((uintptr_t) bowsers_castle_dls, arg0); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); @@ -732,7 +731,7 @@ void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) { // d_course_banshee_boardwalk_packed_dl_69B0 gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070069B0)); - render_course_section((uintptr_t) banshee_boardwalk_dls, arg0); + render_course_segments((uintptr_t) banshee_boardwalk_dls, arg0); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); @@ -766,7 +765,7 @@ void render_yoshi_valley(struct UnkStruct_800DC5EC *arg0) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); - render_course_section((uintptr_t) d_course_yoshi_valley_dl_list, arg0); + render_course_segments((uintptr_t) d_course_yoshi_valley_dl_list, arg0); gDPPipeSync(gDisplayListHead++); } @@ -785,7 +784,7 @@ void render_frappe_snowland(struct UnkStruct_800DC5EC *arg0) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); - render_course_section((uintptr_t) d_course_frappe_snowland_dl_list, arg0); + render_course_segments((uintptr_t) d_course_frappe_snowland_dl_list, arg0); } void render_koopa_troopa_beach(struct UnkStruct_800DC5EC *arg0) { @@ -805,7 +804,7 @@ void render_koopa_troopa_beach(struct UnkStruct_800DC5EC *arg0) { gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); // d_course_koopa_troopa_beach_packed_dl_9688 gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07009688)); - render_course_section((uintptr_t) d_course_koopa_troopa_beach_section_dl1, arg0); + render_course_segments((uintptr_t) d_course_koopa_troopa_beach_section_dl1, arg0); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); @@ -833,7 +832,7 @@ void render_royal_raceway(struct UnkStruct_800DC5EC *arg0) { // d_course_royal_raceway_packed_dl_A648 gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A648)); - render_course_section((uintptr_t) royal_raceway_dls, arg0); + render_course_segments((uintptr_t) royal_raceway_dls, arg0); // d_course_royal_raceway_packed_dl_11A8 gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070011A8)); @@ -865,7 +864,7 @@ void render_luigi_raceway(struct UnkStruct_800DC5EC *arg0) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); - render_course_section((uintptr_t) luigi_raceway_dls, arg0); + render_course_segments((uintptr_t) luigi_raceway_dls, arg0); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); @@ -936,23 +935,23 @@ void render_moo_moo_farm(struct UnkStruct_800DC5EC *arg0) { gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005640)); gSPFogPosition(gDisplayListHead++, D_802B87B0, D_802B87B4); - render_course_section((uintptr_t) moo_moo_farm_dls, arg0); + render_course_segments((uintptr_t) moo_moo_farm_dls, arg0); if ((temp_s0 < 14) && (temp_s0 > 10)) { if ((playerDirection == 2) || (playerDirection == 3) || (playerDirection == 1)) // gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_13FF8); - + } else if (temp_s0 < 16) { gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_13FF8); } else if (temp_s0 < 19) { if (playerDirection != 2) gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_13FF8); - + } else if (temp_s0 < 20) { if (playerDirection == 0) gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_13FF8); - + } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); @@ -961,27 +960,27 @@ void render_moo_moo_farm(struct UnkStruct_800DC5EC *arg0) { if ((playerDirection == 2) || (playerDirection == 3)) // d_course_moo_moo_farm_packed_dl_5410 gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005410)); - + } else if (temp_s0 < 9) { if (playerDirection == 2) // d_course_moo_moo_farm_packed_dl_5410 gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005410)); - + } if (temp_s0 < 4) { if (playerDirection != 0) gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060); - + } else if (temp_s0 < 8) { if (playerDirection == 2) gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060); - + } else if (temp_s0 >= 22) { gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060); } else if (temp_s0 >= 18) { if ((playerDirection == 0) || (playerDirection == 3)) gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060); - + } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); @@ -1003,7 +1002,7 @@ void render_toads_turnpike(struct UnkStruct_800DC5EC *arg0) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_PASS2); gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2); - render_course_section((uintptr_t) d_course_toads_turnpike_dl_list, arg0); + render_course_segments((uintptr_t) d_course_toads_turnpike_dl_list, arg0); gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2); gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_PASS2); @@ -1034,7 +1033,7 @@ void render_kalimari_desert(struct UnkStruct_800DC5EC *arg0) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); - render_course_section((uintptr_t) kalimari_desert_dls, arg0); + render_course_segments((uintptr_t) kalimari_desert_dls, arg0); // d_course_kalimari_desert_packed_dl_1ED8 gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07001ED8)); // d_course_kalimari_desert_packed_dl_1B18 @@ -1058,7 +1057,7 @@ void render_sherbet_land(struct UnkStruct_800DC5EC *arg0) { gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); - render_course_section((uintptr_t) d_course_sherbet_land_section_dl1, arg0); + render_course_segments((uintptr_t) d_course_sherbet_land_section_dl1, arg0); } void render_rainbow_road(UNUSED struct UnkStruct_800DC5EC *arg0) { @@ -1088,7 +1087,7 @@ void render_wario_stadium(struct UnkStruct_800DC5EC *arg0) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATERGBA, G_CC_MODULATERGBA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); - render_course_section((uintptr_t) wario_stadium_dls, arg0); + render_course_segments((uintptr_t) wario_stadium_dls, arg0); // d_course_wario_stadium_packed_dl_A228 gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A228)); @@ -1201,7 +1200,7 @@ void render_dks_jungle_parkway(struct UnkStruct_800DC5EC *arg0) { gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); - render_course_section((uintptr_t) d_course_dks_jungle_parkway_unknown_dl_list, arg0); + render_course_segments((uintptr_t) d_course_dks_jungle_parkway_unknown_dl_list, arg0); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } @@ -1369,27 +1368,27 @@ void render_course(struct UnkStruct_800DC5EC *arg0) { void func_80295BF8(s32 playerIndex) { Player* player = &gPlayers[playerIndex]; - func_802AAAAC(&player->unk_110); - player->boundingBoxCorners[FRONT_RIGHT_TYRE].surfaceFlags = 0; - player->boundingBoxCorners[FRONT_LEFT_TYRE].surfaceFlags = 0; - player->boundingBoxCorners[BACK_RIGHT_TYRE].surfaceFlags = 0; - player->boundingBoxCorners[BACK_LEFT_TYRE].surfaceFlags = 0; + func_802AAAAC(&player->collision); + player->tyres[FRONT_RIGHT].surfaceFlags = 0; + player->tyres[FRONT_LEFT].surfaceFlags = 0; + player->tyres[BACK_RIGHT].surfaceFlags = 0; + player->tyres[BACK_LEFT].surfaceFlags = 0; - player->boundingBoxCorners[FRONT_RIGHT_TYRE].surfaceMapIndex = 0x1388; - player->boundingBoxCorners[FRONT_LEFT_TYRE].surfaceMapIndex = 0x1388; - player->boundingBoxCorners[BACK_RIGHT_TYRE].surfaceMapIndex = 0x1388; - player->boundingBoxCorners[BACK_LEFT_TYRE].surfaceMapIndex = 0x1388; + player->tyres[FRONT_RIGHT].collisionMeshIndex = 0x1388; + player->tyres[FRONT_LEFT].collisionMeshIndex = 0x1388; + player->tyres[BACK_RIGHT].collisionMeshIndex = 0x1388; + player->tyres[BACK_LEFT].collisionMeshIndex = 0x1388; } void func_80295C6C(void) { - gNextFreeMemoryAddress += ALIGN16(D_8015F588 * sizeof(mk64_surface_map_ram)); + gNextFreeMemoryAddress += ALIGN16(gCollisionMeshCount * sizeof(CollisionTriangle)); gCourseMaxX += 20; gCourseMaxZ += 20; gCourseMinX += -20; gCourseMinZ += -20; gCourseMinY += -20; - func_802AF314(); - gNextFreeMemoryAddress += ALIGN16(D_8015F58A * 2); + generate_collision_grid(); + gNextFreeMemoryAddress += ALIGN16(gNumCollisionTriangles * sizeof(u16)); } UNUSED void func_80295D50(s16 arg0, s16 arg1) { @@ -1412,25 +1411,25 @@ void func_80295D88(void) { gCourseMaxX = 0; gCourseMaxY = 0; gCourseMaxZ = 0; - + D_8015F59C = 0; D_8015F5A0 = 0; func_80295D6C(); D_8015F58C = 0; - D_8015F588 = 0; - gSurfaceMap = (mk64_surface_map_ram *) gNextFreeMemoryAddress; + gCollisionMeshCount = 0; + gCollisionMesh = (CollisionTriangle *) gNextFreeMemoryAddress; D_800DC5BC = 0; D_800DC5C8 = 0; switch (gCurrentCourseId) { case COURSE_MARIO_RACEWAY: // d_course_mario_raceway_packed_dl_1140 - set_vertex_data_with_defaults((uintptr_t)0x07001140); + generate_collision_mesh_with_defaults((Gfx *)0x07001140); if (gScreenModeSelection == SCREEN_MODE_1P) { // d_course_mario_raceway_packed_dl_8E8 - set_vertex_data_with_defaults((uintptr_t)0x070008E8); + generate_collision_mesh_with_defaults((Gfx *)0x070008E8); } else { // d_course_mario_raceway_packed_dl_2D68 - set_vertex_data_with_defaults((uintptr_t)0x07002D68); + generate_collision_mesh_with_defaults((Gfx *)0x07002D68); } parse_course_displaylists((uintptr_t) d_course_mario_raceway_addr); func_80295C6C(); @@ -1485,7 +1484,7 @@ void func_80295D88(void) { D_8015F8E4 = -80.0f; break; case COURSE_YOSHI_VALLEY: - func_802B5D64(&d_course_yoshi_valley_lights4, -0x38F0, 0x1C70, 1); + func_802B5D64((uintptr_t) &d_course_yoshi_valley_lights4, -0x38F0, 0x1C70, 1); parse_course_displaylists((uintptr_t) d_course_yoshi_valley_addr); func_80295C6C(); D_8015F8E4 = gCourseMinY - 10.0f; @@ -1585,22 +1584,22 @@ void func_80295D88(void) { break; case COURSE_BLOCK_FORT: // d_course_block_fort_packed_dl_15C0 - set_vertex_data_with_default_section_id((uintptr_t)0x070015C0, 1); + generate_collision_mesh_with_default_section_id((Gfx *)0x070015C0, 1); func_80295C6C(); D_8015F8E4 = gCourseMinY - 10.0f; break; case COURSE_SKYSCRAPER: // d_course_skyscraper_packed_dl_1110 - set_vertex_data_with_default_section_id((uintptr_t)0x07001110, 1); + generate_collision_mesh_with_default_section_id((Gfx *)0x07001110, 1); // d_course_skyscraper_packed_dl_258 - set_vertex_data_with_default_section_id((uintptr_t)0x07000258, 1); + generate_collision_mesh_with_default_section_id((Gfx *)0x07000258, 1); func_80295C6C(); D_8015F8E4 = -480.0f; break; case COURSE_DOUBLE_DECK: // d_course_double_deck_packed_dl_738 - set_vertex_data_with_default_section_id((uintptr_t)0x07000738, 1); + generate_collision_mesh_with_default_section_id((Gfx *)0x07000738, 1); func_80295C6C(); D_8015F8E4 = gCourseMinY - 10.0f; break; @@ -1613,15 +1612,15 @@ void func_80295D88(void) { break; case COURSE_BIG_DONUT: // d_course_big_donut_packed_dl_1018 - set_vertex_data_with_default_section_id((uintptr_t)0x07001018, 6); + generate_collision_mesh_with_default_section_id((Gfx *)0x07001018, 6); // d_course_big_donut_packed_dl_450 - set_vertex_data_with_default_section_id((uintptr_t)0x07000450, 6); + generate_collision_mesh_with_default_section_id((Gfx *)0x07000450, 6); // d_course_big_donut_packed_dl_AC0 - set_vertex_data_with_default_section_id((uintptr_t)0x07000AC0, 6); + generate_collision_mesh_with_default_section_id((Gfx *)0x07000AC0, 6); // d_course_big_donut_packed_dl_B58 - set_vertex_data_with_default_section_id((uintptr_t)0x07000B58, 6); + generate_collision_mesh_with_default_section_id((Gfx *)0x07000B58, 6); // d_course_big_donut_packed_dl_230 - set_vertex_data_with_default_section_id((uintptr_t)0x07000230, 6); + generate_collision_mesh_with_default_section_id((Gfx *)0x07000230, 6); func_80295C6C(); D_8015F8E4 = 100.0f; break; diff --git a/src/racing/render_courses.h b/src/racing/render_courses.h index ad386d123..ac0421b2e 100644 --- a/src/racing/render_courses.h +++ b/src/racing/render_courses.h @@ -1,10 +1,12 @@ #ifndef RENDER_COURSES_H #define RENDER_COURSES_H +#include "code_800029B0.h" + void func_8029122C(struct UnkStruct_800DC5EC*, s32); s32 func_80290C20(Camera*); void parse_course_displaylists(uintptr_t); -void render_course_section(uintptr_t, struct UnkStruct_800DC5EC*); +void render_course_segments(uintptr_t, struct UnkStruct_800DC5EC*); void func_80291198(void); void func_802911C4(void); void render_mario_raceway(struct UnkStruct_800DC5EC*); @@ -47,6 +49,6 @@ extern Lights1 D_800DC610[]; extern Lights1 D_800DC610[]; // Light data? -extern u16 D_8015F58A; +extern u16 gNumCollisionTriangles; #endif diff --git a/src/racing/skybox_and_splitscreen.c b/src/racing/skybox_and_splitscreen.c index adecada21..66a149e80 100644 --- a/src/racing/skybox_and_splitscreen.c +++ b/src/racing/skybox_and_splitscreen.c @@ -1,8 +1,7 @@ #include #include #include -#include -#include +#include #include "skybox_and_splitscreen.h" #include "code_800029B0.h" @@ -310,12 +309,15 @@ struct Skybox { s16 unkA; }; -// unreferenced F3D. Perhaps goes in an unused func? -s32 D_802B8A90[] = { - 0xe7000000, 0x00000000, 0xb900031d, 0x0f0a4000, - 0xba001402, 0x00300000, 0xf7000000, 0x00000000, - 0xf64fc3bc, 0x00000000, 0xe7000000, 0x00000000, - 0xba001402, 0x00000000, 0xb8000000, 0x00000000, +UNUSED Gfx D_802B8A90[] = { + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2), + gsDPSetCycleType(G_CYC_FILL), + gsDPSetFillColor(0x00000000), + gsDPFillRectangle(0, 0, 319, 239), + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPEndDisplayList(), }; struct Skybox sSkyColors[] = { @@ -469,7 +471,7 @@ void func_802A4A0C(Vtx *vtx, struct UnkStruct_800DC5EC *arg1, UNUSED s32 arg2, U vtx[2].v.ob[1] = temp_t5; vtx[4].v.ob[1] = temp_t5; vtx[7].v.ob[1] = temp_t5; - + init_rdp(); gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2); gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_LIGHTING); diff --git a/src/racing/skybox_and_splitscreen.h b/src/racing/skybox_and_splitscreen.h index ec2d7d8b3..820a593bc 100644 --- a/src/racing/skybox_and_splitscreen.h +++ b/src/racing/skybox_and_splitscreen.h @@ -2,6 +2,7 @@ #define SKYBOX_AND_SPLITSCREEN_H #include +#include "code_800029B0.h" #define G_CLEAR_ALL_MODES 0xFFFFFFFF diff --git a/src/render_objects.c b/src/render_objects.c index 457d5acce..670f5d483 100644 --- a/src/render_objects.c +++ b/src/render_objects.c @@ -4,12 +4,13 @@ **/ #include +#include #include #include #include #include #include -#include +#include "camera.h" #include "memory.h" #include "math_util.h" #include "math_util_2.h" @@ -43,7 +44,7 @@ void func_800431B0(Vec3f pos, Vec3su orientation, f32 scale, Vtx *vtx) { void func_80043220(Vec3f pos, Vec3su orientation, f32 scale, Gfx *gfx) { rsp_set_matrix_transformation(pos, orientation, scale); - gSPDisplayList(gDisplayListHead++, &D_0D0077A0); + gSPDisplayList(gDisplayListHead++, D_0D0077A0); gSPDisplayList(gDisplayListHead++, gfx); } @@ -152,7 +153,7 @@ UNUSED void func_8004398C(s32 arg0, s32 arg1, u16 arg2, f32 arg3, Vtx *vtx, s32 gSPVertex(gDisplayListHead++, vtx, 4, 0); gSPDisplayList(gDisplayListHead++, common_rectangle_display); } - + s32 func_80043A54(s32 arg0) { s32 temp_a1; s32 phi_v0; @@ -224,7 +225,7 @@ void load_texture_block_i8_nomirror(u8 *texture, s32 width, s32 height) { void func_80044924(u8 *texture, s32 width, s32 height) { // This macro ought to be equivalent to the block of macros below but it doesn't match // See comment above the `gDPLoadBlock` macro - // gDPLoadTextureBlock_4b(gDisplayListHead++, texture, G_IM_FMT_I, width, height, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + //gDPLoadTextureBlock_4b(gDisplayListHead++, texture, G_IM_FMT_I, width, height, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, texture); gDPSetTile(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 0, G_TX_RENDERTILE, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD); @@ -251,7 +252,7 @@ void func_80044DA0(u8 *image, s32 width, s32 height) { // This macro ought to be equivalent to the block of macros below but it doesn't match // See comment above the `gDPLoadBlock` macro // gDPLoadTextureBlock_4b(gDisplayListHead++, image, G_IM_FMT_I, width, height, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_I, G_IM_SIZ_16b, 1, image); gDPSetTile(gDisplayListHead++, G_IM_FMT_I, G_IM_SIZ_16b, 0, G_TX_RENDERTILE, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); @@ -267,7 +268,7 @@ void func_80044F34(u8 *image, s32 width, s32 height) { // This macro ought to be equivalent to the block of macros below but it doesn't match // See comment above the `gDPLoadBlock` macro // gDPLoadTextureBlock_4b(gDisplayListHead++, image, G_IM_FMT_I, width, height, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_I, G_IM_SIZ_16b, 1, image); gDPSetTile(gDisplayListHead++, G_IM_FMT_I, G_IM_SIZ_16b, 0, G_TX_RENDERTILE, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); @@ -563,19 +564,19 @@ UNUSED void func_80046C78(s32 arg0, s32 arg1, u16 arg2, f32 arg3, u8 *texture) { } UNUSED void func_80046CDC(s32 arg0, s32 arg1, u16 arg2, f32 arg3, u8 *texture) { - func_800464D0(arg0, arg1, arg2, arg3, texture, &D_0D005FB0, 64, 32, 64, 32); + func_800464D0(arg0, arg1, arg2, arg3, texture, D_0D005FB0, 64, 32, 64, 32); } UNUSED void func_80046D40(Vec3f arg0, Vec3su arg1, f32 arg2, u8 *texture) { - func_80046808(arg0, arg1, arg2, texture, &D_0D005FB0, 64, 32, 64, 32); + func_80046808(arg0, arg1, arg2, texture, D_0D005FB0, 64, 32, 64, 32); } UNUSED void func_80046D90(s32 arg0, s32 arg1, u16 arg2, f32 arg3, u8 *texture) { - func_800464D0(arg0, arg1, arg2, arg3, texture, D_0D0060B0, 64, 64, 64, 32); + func_800464D0(arg0, arg1, arg2, arg3, texture, common_vtx_hedgehog, 64, 64, 64, 32); } UNUSED void func_80046DF4(s32 arg0, s32 arg1, u16 arg2, f32 arg3, s32 arg4, u8 *texture) { - func_800465B8(arg0, arg1, arg2, arg3, arg4, texture, D_0D0060B0, 64, 64, 64, 32); + func_800465B8(arg0, arg1, arg2, arg3, arg4, texture, common_vtx_hedgehog, 64, 64, 64, 32); } void load_texture_and_tlut(u8 *tlut, u8 *texture, s32 width, s32 height) { @@ -830,7 +831,7 @@ void func_800485C4(Vec3f arg0, Vec3su arg1, f32 arg2, s32 arg3, u8 *tlut, u8 *te set_transparency(arg3); draw_rectangle_texture_overlap(tlut, texture, arg6, arg7, arg8, arg9, argA); - + gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); } @@ -1194,7 +1195,7 @@ UNUSED void func_8004A5E4(Vec3f arg0, Vec3su arg1, f32 arg2, u8 *texture, Vtx *a void func_8004A630(Collision *arg0, Vec3f arg1, f32 arg2) { if (func_80041924(arg0, arg1) != 0) { D_80183E50[0] = arg1[0]; - D_80183E50[1] = func_802ABE30(arg1[0], 0.0f, arg1[2], arg0->unk3A) + 0.8; + D_80183E50[1] = calculate_surface_height(arg1[0], 0.0f, arg1[2], arg0->meshIndexZX) + 0.8; D_80183E50[2] = arg1[2]; rsp_set_matrix_transl_rot_scale(D_80183E50, arg0->orientationVector, arg2); gSPDisplayList(gDisplayListHead++, D_0D007B98); @@ -1202,26 +1203,26 @@ void func_8004A630(Collision *arg0, Vec3f arg1, f32 arg2) { } void func_8004A6EC(s32 objectIndex, f32 scale) { - Objects *temp_v0; + Object *object; if ((is_obj_flag_status_active(objectIndex, 0x00000020) != 0) && (is_obj_flag_status_active(objectIndex, 0x00800000) != 0)) { - temp_v0 = &gObjectList[objectIndex]; - D_80183E50[0] = temp_v0->pos[0]; - D_80183E50[1] = temp_v0->unk_044 + 0.8; - D_80183E50[2] = temp_v0->pos[2]; - rsp_set_matrix_transformation(D_80183E50, temp_v0->unk_0B8, scale); + object = &gObjectList[objectIndex]; + D_80183E50[0] = object->pos[0]; + D_80183E50[1] = object->surfaceHeight + 0.8; + D_80183E50[2] = object->pos[2]; + rsp_set_matrix_transformation(D_80183E50, object->unk_0B8, scale); gSPDisplayList(gDisplayListHead++, D_0D007B20); } } void func_8004A7AC(s32 objectIndex, f32 arg1) { - Objects *temp_v0; + Object *object; if (is_obj_flag_status_active(objectIndex, 0x00000020) != 0) { - temp_v0 = &gObjectList[objectIndex]; - D_80183E50[0] = temp_v0->pos[0]; - D_80183E50[1] = temp_v0->unk_044 + 0.8; - D_80183E50[2] = temp_v0->pos[2]; + object = &gObjectList[objectIndex]; + D_80183E50[0] = object->pos[0]; + D_80183E50[1] = object->surfaceHeight + 0.8; + D_80183E50[2] = object->pos[2]; D_80183E98[0] = 0x4000; D_80183E98[1] = 0; D_80183E98[2] = 0; @@ -1232,14 +1233,14 @@ void func_8004A7AC(s32 objectIndex, f32 arg1) { void func_8004A870(s32 objectIndex, f32 arg1) { Mat4 sp30; - Objects *temp_v0; + Object *object; if ((is_obj_flag_status_active(objectIndex, 0x00000020) != 0) && (is_obj_flag_status_active(objectIndex, 0x00800000) != 0)) { - temp_v0 = &gObjectList[objectIndex]; - D_80183E50[0] = temp_v0->pos[0]; - D_80183E50[1] = temp_v0->unk_044 + 0.8; - D_80183E50[2] = temp_v0->pos[2]; - set_transform_matrix(sp30, temp_v0->unk_01C, D_80183E50, 0U, arg1); + object = &gObjectList[objectIndex]; + D_80183E50[0] = object->pos[0]; + D_80183E50[1] = object->surfaceHeight + 0.8; + D_80183E50[2] = object->pos[2]; + set_transform_matrix(sp30, object->unk_01C, D_80183E50, 0U, arg1); convert_to_fixed_point_matrix(&gGfxPool->mtxHud[gMatrixHudCount], sp30); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxHud[gMatrixHudCount++]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(gDisplayListHead++, D_0D007B98); @@ -1682,7 +1683,7 @@ void func_8004C6FC(s16 arg0, s16 arg1, u8 *texture, u32 width, u32 arg4) { athing += var_s4 * 0; var_s4 += heigth; } - + gSPDisplayList(gDisplayListHead++, D_0D007EB8); } #else @@ -1888,7 +1889,7 @@ void func_8004D4E8(s32 arg0, s32 arg1, u8 *texture, s32 arg3, s32 arg4, s32 arg5 } } -void func_8004D654(s32 arg0, s32 arg1, u8 *texture, f32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 width, s32 arg9, s32 argA, s32 height) { +void func_8004D654(s32 arg0, s32 arg1, u8 *texture, f32 arg3, s32 arg4, s32 arg5, s32 arg6, UNUSED s32 arg7, s32 width, s32 arg9, UNUSED s32 argA, s32 height) { s32 i; s32 var_s3; u8 *textureCopy; @@ -2073,7 +2074,7 @@ void func_8004DF5C(s32 arg0, s32 arg1, u8 *texture, s32 width, s32 arg4, s32 hei s32 var_s0 = var_s0 = arg1 - (arg4 / 2); u8 *img = texture; s32 i; - + for (i = 0; i < arg4 / height; i++) { rsp_load_texture(img, width, height); func_8004B97C(arg0 - (width / 2), var_s0, width, height, 1); @@ -2192,33 +2193,33 @@ UNUSED void func_8004E604(s32 arg0, s32 arg1, u8 *tlut, u8 *texture) { void draw_item_window(s32 playerId) { s32 objectIndex; - Objects *temp_v1; + Object *object; hud_player *temp_v0; objectIndex = gItemWindowObjectByPlayerId[playerId]; - temp_v1 = &gObjectList[objectIndex]; - if (temp_v1->state >= 2) { + object = &gObjectList[objectIndex]; + if (object->state >= 2) { temp_v0 = &playerHUD[playerId]; - func_8004E4CC(temp_v0->slideItemBoxX + temp_v0->itemBoxX, temp_v0->slideItemBoxY + temp_v0->itemBoxY, (u8 *) temp_v1->activeTLUT, temp_v1->activeTexture); + func_8004E4CC(temp_v0->slideItemBoxX + temp_v0->itemBoxX, temp_v0->slideItemBoxY + temp_v0->itemBoxY, (u8 *) object->activeTLUT, object->activeTexture); } } void func_8004E6C4(s32 playerId) { s32 objectIndex; - Objects *temp_v1; + Object *object; hud_player *temp_v0; objectIndex = gItemWindowObjectByPlayerId[playerId]; - temp_v1 = &gObjectList[objectIndex]; - if (temp_v1->state >= 2) { + object = &gObjectList[objectIndex]; + if (object->state >= 2) { temp_v0 = &playerHUD[playerId]; - func_80047910(temp_v0->slideItemBoxX + temp_v0->itemBoxX, temp_v0->slideItemBoxY + temp_v0->itemBoxY, 0U, temp_v0->unknownScaling, (u8 *) temp_v1->activeTLUT, (u8 *) temp_v1->activeTexture, D_0D005C30, 0x00000028, 0x00000020, 0x00000028, 0x00000020); + func_80047910(temp_v0->slideItemBoxX + temp_v0->itemBoxX, temp_v0->slideItemBoxY + temp_v0->itemBoxY, 0U, temp_v0->unknownScaling, (u8 *) object->activeTLUT, (u8 *) object->activeTexture, D_0D005C30, 0x00000028, 0x00000020, 0x00000028, 0x00000020); } } void draw_simplified_lap_count(s32 playerId) { - draw_hud_2d_texture_32x8((s32) playerHUD[playerId].lapX, playerHUD[playerId].lapY + 3, common_texture_hud_lap); - draw_hud_2d_texture_32x16(playerHUD[playerId].lapX + 0x1C, (s32) playerHUD[playerId].lapY, gHudLapTextures[playerHUD[playerId].alsoLapCount]); + draw_hud_2d_texture_32x8((s32) playerHUD[playerId].lapX, playerHUD[playerId].lapY + 3, (u8*) common_texture_hud_lap); + draw_hud_2d_texture_32x16(playerHUD[playerId].lapX + 0x1C, (s32) playerHUD[playerId].lapY, (u8*) gHudLapTextures[playerHUD[playerId].alsoLapCount]); } void func_8004E800(s32 playerId) { @@ -2258,26 +2259,26 @@ void func_8004EB38(s32 playerId) { temp_s0 = &playerHUD[playerId]; if ((u8) temp_s0->unk_7B != 0) { - func_8004C9D8(temp_s0->lap1CompletionTimeX - 0x13, temp_s0->timerY + 8, 0x00000080, common_texture_hud_time, 0x00000020, 0x00000010, 0x00000020, 0x00000010); + func_8004C9D8(temp_s0->lap1CompletionTimeX - 0x13, temp_s0->timerY + 8, 0x00000080, (u8*) common_texture_hud_time, 0x00000020, 0x00000010, 0x00000020, 0x00000010); func_8004F950((s32) temp_s0->lap1CompletionTimeX, (s32) temp_s0->timerY, 0x00000080, (s32) temp_s0->someTimer); } if ((u8) temp_s0->unk_7C != 0) { - func_8004C9D8(temp_s0->lap2CompletionTimeX - 0x13, temp_s0->timerY + 8, 0x00000050, common_texture_hud_time, 0x00000020, 0x00000010, 0x00000020, 0x00000010); + func_8004C9D8(temp_s0->lap2CompletionTimeX - 0x13, temp_s0->timerY + 8, 0x00000050, (u8*) common_texture_hud_time, 0x00000020, 0x00000010, 0x00000020, 0x00000010); func_8004F950((s32) temp_s0->lap2CompletionTimeX, (s32) temp_s0->timerY, 0x00000050, (s32) temp_s0->someTimer); } if ((u8) temp_s0->unk_7E != 0) { - func_8004C9D8((s32) temp_s0->lapAfterImage1X, temp_s0->lapY + 3, 0x00000080, common_texture_hud_lap, 0x00000020, 8, 0x00000020, 8); - func_8004C9D8(temp_s0->lapAfterImage1X + 0x1C, (s32) temp_s0->lapY, 0x00000080, gHudLapTextures[temp_s0->alsoLapCount], 0x00000020, 0x00000010, 0x00000020, 0x00000010); + func_8004C9D8((s32) temp_s0->lapAfterImage1X, temp_s0->lapY + 3, 0x00000080, (u8*) common_texture_hud_lap, 0x00000020, 8, 0x00000020, 8); + func_8004C9D8(temp_s0->lapAfterImage1X + 0x1C, (s32) temp_s0->lapY, 0x00000080, (u8*) gHudLapTextures[temp_s0->alsoLapCount], 0x00000020, 0x00000010, 0x00000020, 0x00000010); } if ((u8) temp_s0->unk_7F != 0) { - func_8004C9D8((s32) temp_s0->lapAfterImage2X, temp_s0->lapY + 3, 0x00000050, common_texture_hud_lap, 0x00000020, 8, 0x00000020, 8); - func_8004C9D8(temp_s0->lapAfterImage2X + 0x1C, (s32) temp_s0->lapY, 0x00000050, gHudLapTextures[temp_s0->alsoLapCount], 0x00000020, 0x00000010, 0x00000020, 0x00000010); + func_8004C9D8((s32) temp_s0->lapAfterImage2X, temp_s0->lapY + 3, 0x00000050, (u8*) common_texture_hud_lap, 0x00000020, 8, 0x00000020, 8); + func_8004C9D8(temp_s0->lapAfterImage2X + 0x1C, (s32) temp_s0->lapY, 0x00000050, (u8*) gHudLapTextures[temp_s0->alsoLapCount], 0x00000020, 0x00000010, 0x00000020, 0x00000010); } } void func_8004ED40(s32 arg0) { - func_8004A2F4(playerHUD[arg0].speedometerX, playerHUD[arg0].speedometerY, 0U, 1.0f, D_8018D300, D_8018D308, D_8018D310, 0xFF, common_texture_speedometer, D_0D0064B0, 0x40, 0x60, 0x40, 0x30); - func_8004A258(D_8018CFEC, D_8018CFF4, D_8016579E, 1.0f, common_texture_speedometer_needle, &D_0D005FF0, 0x40, 0x20, 0x40, 0x20); + func_8004A2F4(playerHUD[arg0].speedometerX, playerHUD[arg0].speedometerY, 0U, 1.0f, D_8018D300, D_8018D308, D_8018D310, 0xFF, common_texture_speedometer, D_0D0064B0, 64, 96, 64, 48); + func_8004A258(D_8018CFEC, D_8018CFF4, D_8016579E, 1.0f, common_texture_speedometer_needle, D_0D005FF0, 0x40, 0x20, 0x40, 0x20); } void func_8004EE54(s32 arg0) { @@ -2314,7 +2315,7 @@ void func_8004F020(s32 arg0) { var_f0 = var_f0 + 4.0; break; } - draw_hud_2d_texture_8x8(var_f2, var_f0, common_texture_minimap_finish_line); + draw_hud_2d_texture_8x8(var_f2, var_f0, (u8*) common_texture_minimap_finish_line); } #ifdef NON_MATCHING @@ -2338,22 +2339,22 @@ void func_8004F168(s32 arg0, s32 playerId, s32 characterId) { if (characterId != 8) { if ((gGPCurrentRaceRankByPlayerId[playerId] == 0) && (gModeSelection != 3) && (gModeSelection != 1)) { #if EXPLICIT_AND == 1 - func_80046424(temp_a0, temp_a1, (player->rotation[1] + 0x8000) & 0xFFFF, 1.0f, common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8); + func_80046424(temp_a0, temp_a1, (player->rotation[1] + 0x8000) & 0xFFFF, 1.0f, (u8*) common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8); #else - func_80046424(temp_a0, temp_a1, player->rotation[1] + 0x8000, 1.0f, common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8); + func_80046424(temp_a0, temp_a1, player->rotation[1] + 0x8000, 1.0f, (u8*) common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8); #endif } else { #if EXPLICIT_AND == 1 - func_800463B0(temp_a0, temp_a1, (player->rotation[1] + 0x8000) & 0xFFFF, 1.0f, common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8); + func_800463B0(temp_a0, temp_a1, (player->rotation[1] + 0x8000) & 0xFFFF, 1.0f, (u8*) common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8); #else - func_800463B0(temp_a0, temp_a1, player->rotation[1] + 0x8000, 1.0f, common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8); + func_800463B0(temp_a0, temp_a1, player->rotation[1] + 0x8000, 1.0f, (u8*) common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8); #endif } } else { if (gGPCurrentRaceRankByPlayerId[playerId] == 0) { func_8004C450(temp_a0, temp_a1, 8, 8, (u8 *) common_texture_minimap_progress_dot); } else { - func_8004C364(temp_a0, temp_a1, 8, 8, (u8 *) common_texture_minimap_progress_dot); + draw_hud_2d_texture(temp_a0, temp_a1, 8, 8, (u8 *) common_texture_minimap_progress_dot); } } } @@ -2456,7 +2457,7 @@ void print_timer(s32 arg0, s32 arg1, s32 arg2) { gSPDisplayList(gDisplayListHead++, D_0D008108); gSPDisplayList(gDisplayListHead++, D_0D007EF8); gDPSetAlphaCompare(gDisplayListHead++, G_AC_THRESHOLD); - load_texture_block_rgba16_mirror(common_texture_hud_normal_digit, 104, 16); + load_texture_block_rgba16_mirror((u8*) common_texture_hud_normal_digit, 104, 16); func_8004F6D0(arg2); func_8004F774(arg0, arg1); gSPDisplayList(gDisplayListHead++, D_0D007EB8); @@ -2475,7 +2476,7 @@ void func_8004F8CC(s32 arg0, s32 arg1) { void func_8004F950(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { gSPDisplayList(gDisplayListHead++, D_0D007F38); set_transparency(arg2); - load_texture_block_rgba16_mirror(common_texture_hud_normal_digit, 104, 16); + load_texture_block_rgba16_mirror((u8*) common_texture_hud_normal_digit, 104, 16); func_8004F6D0(arg3); func_8004F8CC(arg0, arg1); } @@ -2483,7 +2484,7 @@ void func_8004F950(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { void print_timer_rainbow(s32 arg0, s32 arg1, s32 arg2) { gSPDisplayList(gDisplayListHead++, D_0D007F38); func_8004B614(D_801656C0, D_801656D0, D_801656E0, 128, 128, 128, 255); - load_texture_block_rgba16_mirror(common_texture_hud_normal_digit, 104, 16); + load_texture_block_rgba16_mirror((u8*) common_texture_hud_normal_digit, 104, 16); func_8004F6D0(arg2); func_8004F8CC(arg0, arg1); } @@ -2501,7 +2502,7 @@ void render_hud_timer(s32 playerId) { print_timer_rainbow(playerHUD[playerId].lapCompletionTimeXs[var_s0], playerHUD[playerId].timerY + (var_s0*0x10), playerHUD[playerId].lapDurations[var_s0]); } } - draw_hud_2d_texture_32x16(playerHUD[playerId].totalTimeX - 0x13, playerHUD[playerId].timerY + 0x38, common_texture_hud_total_time); + draw_hud_2d_texture_32x16(playerHUD[playerId].totalTimeX - 0x13, playerHUD[playerId].timerY + 0x38, (u8*) common_texture_hud_total_time); if (D_801657E5 != 0) { print_timer_rainbow(playerHUD[playerId].totalTimeX, playerHUD[playerId].timerY + 0x30, playerHUD[playerId].someTimer); } else { @@ -2510,10 +2511,10 @@ void render_hud_timer(s32 playerId) { } } else { if (playerHUD[playerId].blinkTimer == 0) { - draw_hud_2d_texture_32x16(playerHUD[playerId].timerX - 0x13, playerHUD[playerId].timerY + 8, common_texture_hud_time); + draw_hud_2d_texture_32x16(playerHUD[playerId].timerX - 0x13, playerHUD[playerId].timerY + 8, (u8*) common_texture_hud_time); print_timer(playerHUD[playerId].timerX, playerHUD[playerId].timerY, playerHUD[playerId].someTimer); } else { - draw_hud_2d_texture_32x16(playerHUD[playerId].timerX - 0x13, playerHUD[playerId].timerY + 8, common_texture_hud_lap_time); + draw_hud_2d_texture_32x16(playerHUD[playerId].timerX - 0x13, playerHUD[playerId].timerY + 8, (u8*) common_texture_hud_lap_time); if (D_801657E3 != 0) { print_timer_rainbow(playerHUD[playerId].timerX, playerHUD[playerId].timerY, playerHUD[playerId].someTimer1); } else if (playerHUD[playerId].blinkState == 0) { @@ -2528,8 +2529,9 @@ void draw_lap_count(s16 lapX, s16 lapY, s8 lap) { gSPDisplayList(gDisplayListHead++, D_0D008108); gSPDisplayList(gDisplayListHead++, D_0D007EF8); gDPSetAlphaCompare(gDisplayListHead++, G_AC_THRESHOLD); - load_texture_block_rgba16_mirror(common_texture_hud_123, 32, 8); + load_texture_block_rgba16_mirror((u8*) common_texture_hud_123, 32, 8); // Display current lap. Ex. 1/3 + func_8004BA98(lapX , lapY, 8, 8, lap * 8, 0, 0); // display the digit func_8004BA98(lapX + 8 , lapY, 8, 8, 24, 0, 0); // display the / func_8004BA98(lapX + 16, lapY, 8, 8, 16, 0, 0); // display the 3 @@ -2807,7 +2809,7 @@ void func_80050E34(s32 playerId, s32 arg1) { s32 characterId; s32 spB8; s32 temp_v0_2; - Objects *object; + Object *object; Player *player; player = &gPlayerOne[playerId]; @@ -2910,11 +2912,11 @@ void func_800514BC(void) { void render_object_leaf_particle(UNUSED s32 cameraId) { s32 someIndex; s32 leafIndex; - Objects *object; + Object *object; gSPDisplayList(gDisplayListHead++, D_0D0079C8); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BOTH); - load_texture_block_rgba16_mirror(common_texture_particle_leaf, 0x00000020, 0x00000010); + load_texture_block_rgba16_mirror((u8*) common_texture_particle_leaf, 0x00000020, 0x00000010); for(someIndex = 0; someIndex < gLeafParticle_SIZE; someIndex++) { leafIndex = gLeafParticle[someIndex]; if (leafIndex != -1) { @@ -2975,7 +2977,7 @@ void func_800519D4(s32 objectIndex, s16 arg1, s16 arg2) { void func_80051ABC(s16 arg0, s32 arg1) { s32 var_s0; s32 objectIndex; - Objects *object; + Object *object; D_8018D228 = 0xFF; gSPDisplayList(gDisplayListHead++, D_0D007A60); @@ -3000,7 +3002,7 @@ void func_80051C60(s16 arg0, s32 arg1) { s16 var_s5; s32 var_s0; s32 objectIndex; - Objects *object; + Object *object; if (D_801658FE == 0) { if (gCurrentCourseId == 6) { @@ -3080,6 +3082,7 @@ void func_80052080(void) { func_80051C60(240 - D_800DC5F0->cameraHeight, D_8018D1F0); } + void func_800520C0(s32 arg0) { if (gObjectList[arg0].unk_0D5 == 0) { D_800E45C0[0].l[0].l.dir[0] = D_800E45C0[1].l[0].l.dir[0] = D_800E45C0[2].l[0].l.dir[0] = D_800E45C0[3].l[0].l.dir[0] = 0; @@ -3093,7 +3096,7 @@ void func_800520C0(s32 arg0) { } void func_8005217C(UNUSED s32 arg0) { - Objects *object; + Object *object; s32 temp_a3; temp_a3 = indexObjectList2[0]; @@ -3122,7 +3125,7 @@ void func_8005217C(UNUSED s32 arg0) { void func_800523B8(s32 objectIndex, s32 arg1, u32 arg2) { UNUSED s32 pad[2]; - Objects *object; + Object *object; Camera *camera = &camera1[arg1]; object = &gObjectList[objectIndex]; @@ -3186,7 +3189,7 @@ void render_object_bat(s32 cameraId) { void render_object_trash_bin(s32 cameraId) { s32 objectIndex; - Objects *object; + Object *object; objectIndex = indexObjectList1[1]; func_8008A364(objectIndex, cameraId, 0x5555U, 0x00000320); @@ -3214,7 +3217,7 @@ void func_8005285C(s32 arg0) { void func_800528EC(s32 arg0) { s32 var_s3; s32 objectIndex; - Objects *object; + Object *object; D_80183E80[0] = D_8016582C[0]; D_80183E80[1] = D_8016582C[1]; @@ -3269,7 +3272,7 @@ void render_ice_block(s32 arg0) { for (playerId = 0; playerId < gPlayerCountSelection1; playerId++) { objectIndex = gIndexLakituList[playerId]; if (objectIndex) {} - if (func_80072320(objectIndex, 4) != FALSE) { + if (func_80072320(objectIndex, 4) != false) { func_8005285C(playerId); } func_80072320(objectIndex, 0x00000010); @@ -3314,7 +3317,7 @@ void render_object_snowmans_list_2(s32 cameraId) { Camera *sp44; s32 someIndex; s32 objectIndex; - Objects *object; + Object *object; sp44 = &camera1[cameraId]; load_texture_and_tlut(d_course_frappe_snowland_snow_tlut, d_course_frappe_snowland_snow, 0x00000020, 0x00000020); @@ -3372,7 +3375,7 @@ void render_lakitu(s32 cameraId) { f32 var_f0; f32 var_f2; s32 objectIndex; - Objects *object; + Object *object; objectIndex = gIndexLakituList[cameraId]; camera = &camera1[cameraId]; @@ -3456,7 +3459,7 @@ void render_object_thwomps(s32 cameraId) { UNUSED s32 stackPadding0; s16 minusone, plusone; Camera *camera; - Objects *object; + Object *object; camera = &camera1[cameraId]; if (cameraId == PLAYER_ONE) { @@ -3521,14 +3524,14 @@ void render_object_thwomps(s32 cameraId) { } void func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 vertexIndex) { - Objects *temp_v0; + Object *object; if (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX) { - temp_v0 = &gObjectList[objectIndex]; - D_80183E80[2] = (s16) (temp_v0->unk_084[6] + 0x8000); - rsp_set_matrix_transformation(temp_v0->pos, (u16 *) D_80183E80, temp_v0->sizeScaling); - set_color_render((s32) temp_v0->unk_084[0], (s32) temp_v0->unk_084[1], (s32) temp_v0->unk_084[2], (s32) temp_v0->unk_084[3], (s32) temp_v0->unk_084[4], (s32) temp_v0->unk_084[5], (s32) temp_v0->primAlpha); - gSPVertex(gDisplayListHead++, &D_0D0060B0[vertexIndex], 4, 0); + object = &gObjectList[objectIndex]; + D_80183E80[2] = (s16) (object->unk_084[6] + 0x8000); + rsp_set_matrix_transformation(object->pos, (u16 *) D_80183E80, object->sizeScaling); + set_color_render((s32) object->unk_084[0], (s32) object->unk_084[1], (s32) object->unk_084[2], (s32) object->unk_084[3], (s32) object->unk_084[4], (s32) object->unk_084[5], (s32) object->primAlpha); + gSPVertex(gDisplayListHead++, &common_vtx_hedgehog[vertexIndex], 4, 0); gSPDisplayList(gDisplayListHead++, common_rectangle_display); } } @@ -3542,7 +3545,7 @@ void func_80053E6C(s32 arg0) { func_8004B614(0, 0, 0, 0, 0, 0, 0); D_80183E80[0] = 0; D_80183E80[1] = 0x8000; - rsp_load_texture(D_8018D4BC, 0x40, 0x20); + rsp_load_texture(D_8018D4BC, 64, 32); for (var_s1 = 0; var_s1 < D_80165738; var_s1++) { objectIndex = gObjectParticle3[var_s1]; if ((objectIndex != NULL_OBJECT_ID) && (gObjectList[objectIndex].state >= 2)) { @@ -3632,7 +3635,7 @@ void render_object_paddle_boat_smoke_particles(s32 cameraId) { UNUSED s32 pad[2]; Camera *camera; s32 i; - + camera = &camera1[cameraId]; gSPDisplayList(gDisplayListHead++, D_0D007AE0); @@ -3654,18 +3657,18 @@ void render_object_paddle_boat_smoke_particles(s32 cameraId) { void render_object_bowser_flame_particle(s32 objectIndex, s32 cameraId) { Camera *camera; - Objects *temp_s0; + Object *object; camera = &camera1[cameraId]; if (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX) { - temp_s0 = &gObjectList[objectIndex]; - if (temp_s0->unk_0D5 == 9) { - func_8004B72C(0xFF, (s32) temp_s0->type, 0, (s32) temp_s0->unk_0A2, 0, 0, (s32) temp_s0->primAlpha); + object = &gObjectList[objectIndex]; + if (object->unk_0D5 == 9) { + func_8004B72C(0xFF, (s32) object->type, 0, (s32) object->unk_0A2, 0, 0, (s32) object->primAlpha); } else { - func_8004B138(0xFF, (s32) temp_s0->type, 0, (s32) temp_s0->primAlpha); + func_8004B138(0xFF, (s32) object->type, 0, (s32) object->primAlpha); } - D_80183E80[1] = func_800418AC(temp_s0->pos[0], temp_s0->pos[2], camera->pos); - func_800431B0(temp_s0->pos, D_80183E80, temp_s0->sizeScaling, D_0D005AE0); + D_80183E80[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos); + func_800431B0(object->pos, D_80183E80, object->sizeScaling, D_0D005AE0); } } @@ -3714,7 +3717,7 @@ void render_object_smoke_particles(s32 cameraId) { Camera *sp54; s32 var_s0; s32 objectIndex; - Objects *object; + Object *object; sp54 = &camera1[cameraId]; gSPDisplayList(gDisplayListHead++, D_0D007AE0); @@ -3787,7 +3790,7 @@ void func_80054E10(s32 objectIndex) { if (gObjectList[objectIndex].state > 0) { if (is_obj_flag_status_active(objectIndex, 0x00800000) != 0) { D_80183E50[0] = gObjectList[objectIndex].pos[0]; - D_80183E50[1] = gObjectList[objectIndex].unk_044 + 0.8; + D_80183E50[1] = gObjectList[objectIndex].surfaceHeight + 0.8; D_80183E50[2] = gObjectList[objectIndex].pos[2]; D_80183E70[0] = gObjectList[objectIndex].velocity[0]; D_80183E70[1] = gObjectList[objectIndex].velocity[1]; @@ -3810,7 +3813,7 @@ void func_80054F04(s32 cameraId) { s32 var_s2; s32 objectIndex; Camera *sp44; - Objects * object; + Object *object; sp44 = &camera1[cameraId]; gSPDisplayList(gDisplayListHead++, D_0D0079C8); @@ -3906,7 +3909,7 @@ void draw_crabs(s32 objectIndex, s32 cameraId) { camera = &camera1[cameraId]; func_8004A6EC(objectIndex, 0.5f); gObjectList[objectIndex].orientation[1] = func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], camera->pos); - draw_2d_texture_at(gObjectList[objectIndex].pos, gObjectList[objectIndex].orientation, gObjectList[objectIndex].sizeScaling, (u8 *) gObjectList[objectIndex].activeTLUT, gObjectList[objectIndex].activeTexture, D_0D0060B0, 0x00000040, 0x00000040, 0x00000040, 0x00000020); + draw_2d_texture_at(gObjectList[objectIndex].pos, gObjectList[objectIndex].orientation, gObjectList[objectIndex].sizeScaling, (u8 *) gObjectList[objectIndex].activeTLUT, gObjectList[objectIndex].activeTexture, common_vtx_hedgehog, 0x00000040, 0x00000040, 0x00000040, 0x00000020); } } @@ -3965,7 +3968,7 @@ UNUSED void func_800557AC() { void func_800557B4(s32 objectIndex, u32 arg1, u32 arg2) { Vec3f sp34; - Objects *object; + Object *object; object = &gObjectList[objectIndex]; if (object->state >= 2) { @@ -4075,7 +4078,7 @@ void func_80055CCC(s32 objectIndex, s32 cameraId) { camera = &camera1[cameraId]; if (gObjectList[objectIndex].state >= 2) { func_8008A454(objectIndex, cameraId, 0x0000012C); - test = gObjectList[objectIndex].pos[1] - gObjectList[objectIndex].unk_044; + test = gObjectList[objectIndex].pos[1] - gObjectList[objectIndex].surfaceHeight; func_8004A6EC(objectIndex, (20.0 / test) + 0.5); if (is_obj_index_flag_status_inactive(objectIndex, 0x00100000) != 0) { func_80043328(gObjectList[objectIndex].pos, (u16 *) gObjectList[objectIndex].direction_angle, gObjectList[objectIndex].sizeScaling, d_course_luigi_raceway_dl_F960); @@ -4108,7 +4111,7 @@ void render_object_hot_air_balloon(s32 arg0) { } void func_80055EF4(s32 objectIndex, UNUSED s32 arg1) { - Objects *object; + Object *object; object = &gObjectList[objectIndex]; if (object->state >= 2) { @@ -4127,7 +4130,7 @@ void func_80055F48(s32 arg0) { void func_80055FA0(s32 objectIndex, UNUSED s32 arg1) { Mat4 someMatrix1; Mat4 someMatrix2; - Objects *object; + Object *object; object = &gObjectList[objectIndex]; if (object->state >= 2) { @@ -4152,7 +4155,7 @@ void render_object_neon(s32 cameraId) { Camera *camera; s32 var_s2; s32 objectIndex; - Objects *object; + Object *object; camera = &camera1[cameraId]; for (var_s2 =0; var_s2 < 10; var_s2++) { @@ -4161,7 +4164,7 @@ void render_object_neon(s32 cameraId) { object = &gObjectList[objectIndex]; if ((object->state >= 2) && (is_obj_index_flag_status_inactive(objectIndex, 0x00080000) != 0) && (is_object_visible_on_camera(objectIndex, camera, 0x2AABU) != 0)) { object->orientation[1] = angle_between_object_camera(objectIndex, camera); - draw_2d_texture_at(object->pos, object->orientation, object->sizeScaling, (u8 *) object->activeTLUT, object->activeTexture, D_0D0060B0, 0x00000040, 0x00000040, 0x00000040, 0x00000020); + draw_2d_texture_at(object->pos, object->orientation, object->sizeScaling, (u8 *) object->activeTLUT, object->activeTexture, common_vtx_hedgehog, 0x00000040, 0x00000040, 0x00000040, 0x00000020); } } } @@ -4183,7 +4186,7 @@ void func_800563DC(s32 objectIndex, s32 cameraId, s32 arg2) { s32 temp_v0; s32 residue; Camera *camera; - Objects *object; + Object *object; camera = &camera1[cameraId]; object = &gObjectList[objectIndex]; @@ -4197,7 +4200,7 @@ void func_800563DC(s32 objectIndex, s32 cameraId, s32 arg2) { rsp_set_matrix_transformation(D_80183E40, D_80183E80, 0.2f); gSPDisplayList(gDisplayListHead++, D_0D007E98); func_8004B310(arg2); - draw_rectangle_texture_overlap(common_tlut_bomb, common_texture_bomb[residue], D_0D005AE0, 0x00000020, 0x00000020, 0x00000020, 0x00000020); + draw_rectangle_texture_overlap((u8*) common_tlut_bomb, common_texture_bomb[residue], D_0D005AE0, 0x00000020, 0x00000020, 0x00000020, 0x00000020); temp_s0 = D_8018D400; gSPDisplayList(gDisplayListHead++, D_0D007B00); func_8004B414(0, 0, 0, arg2); @@ -4216,7 +4219,7 @@ void func_800563DC(s32 objectIndex, s32 cameraId, s32 arg2) { void func_8005669C(s32 objectIndex, UNUSED s32 arg1, s32 arg2) { gSPDisplayList(gDisplayListHead++, D_0D0079E8); func_8004B310(arg2); - load_texture_block_rgba16_mirror(D_0D02AA58, 0x00000010, 0x00000010); + load_texture_block_rgba16_mirror((u8*) D_0D02AA58, 0x00000010, 0x00000010); D_80183E40[1] = gObjectList[objectIndex].pos[1] - 2.0; D_80183E40[0] = gObjectList[objectIndex].pos[0] + 2.0; D_80183E40[2] = gObjectList[objectIndex].pos[2] + 2.0; @@ -4239,9 +4242,9 @@ void func_800568A0(s32 objectIndex, s32 playerId) { player = &gPlayerOne[playerId]; D_80183E50[0] = gObjectList[objectIndex].pos[0]; - D_80183E50[1] = gObjectList[objectIndex].unk_044 + 0.8; + D_80183E50[1] = gObjectList[objectIndex].surfaceHeight + 0.8; D_80183E50[2] = gObjectList[objectIndex].pos[2]; - set_transform_matrix(sp30, player->unk_110.orientationVector, D_80183E50, 0U, 0.5f); + set_transform_matrix(sp30, player->collision.orientationVector, D_80183E50, 0U, 0.5f); convert_to_fixed_point_matrix(&gGfxPool->mtxHud[gMatrixHudCount], sp30); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxHud[gMatrixHudCount++]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(gDisplayListHead++, D_0D007B98); @@ -4272,18 +4275,18 @@ void render_object_bomb_kart(s32 cameraId) { s32 temp_s1; s32 temp_s0; s32 payerId; - Objects *temp_v1; + Object *object; for (payerId = 0; payerId < NUM_BOMB_KARTS_BATTLE; payerId++) { temp_s0 = gIndexObjectBombKart[payerId]; - temp_v1 = &gObjectList[temp_s0]; - if (temp_v1->state != 0) { - temp_s1 = temp_v1->primAlpha; + object = &gObjectList[temp_s0]; + if (object->state != 0) { + temp_s1 = object->primAlpha; temp_v0 = &gPlayerOne[payerId]; - temp_v1->pos[0] = temp_v0->pos[0]; - temp_v1->pos[1] = temp_v0->pos[1] - 2.0; - temp_v1->pos[2] = temp_v0->pos[2]; - temp_v1->unk_044 = temp_v0->unk_074; + object->pos[0] = temp_v0->pos[0]; + object->pos[1] = temp_v0->pos[1] - 2.0; + object->pos[2] = temp_v0->pos[2]; + object->surfaceHeight = temp_v0->unk_074; func_800563DC(temp_s0, cameraId, temp_s1); func_8005669C(temp_s0, cameraId, temp_s1); func_800568A0(temp_s0, cameraId); @@ -4305,7 +4308,7 @@ void func_80056BF0(s32 bombIndex) { D_80183E40[0] = sp40.bombPos[0]; D_80183E40[1] = sp40.bombPos[1] + 1.0; D_80183E40[2] = sp40.bombPos[2]; - draw_2d_texture_at(D_80183E40, D_80183E80, 0.25f, common_tlut_bomb, bombFrame, D_0D005AE0, 0x20, 0x20, 0x20, 0x20); + draw_2d_texture_at(D_80183E40, D_80183E80, 0.25f, (u8*) common_tlut_bomb, bombFrame, D_0D005AE0, 0x20, 0x20, 0x20, 0x20); temp_s0 = D_8018D400; gSPDisplayList(gDisplayListHead++, D_0D007B00); func_8004B414(0, 0, 0, 0xFF); @@ -4327,7 +4330,7 @@ void func_80056E24(s32 bombIndex, Vec3f arg1) { D_80183E80[0] = 0; D_80183E80[2] = 0x8000; gSPDisplayList(gDisplayListHead++, D_0D0079C8); - load_texture_block_rgba16_mirror(D_0D02AA58, 0x00000010, 0x00000010); + load_texture_block_rgba16_mirror((u8*) D_0D02AA58, 0x00000010, 0x00000010); D_80183E80[1] = func_800418AC(sp2C.wheel1Pos[0], sp2C.wheel1Pos[2], arg1); func_800431B0(sp2C.wheel1Pos, D_80183E80, 0.15f, common_vtx_rectangle); D_80183E80[1] = func_800418AC(sp2C.wheel2Pos[0], sp2C.wheel2Pos[2], arg1); @@ -4419,18 +4422,18 @@ UNUSED void func_800573BC(void) { } UNUSED void func_800573C4(void) { - + } UNUSED void func_800573CC(void) { - + } UNUSED void func_800573D4(void) { - + } UNUSED void func_800573DC(void) { - + } @@ -4472,7 +4475,7 @@ void debug_print_number(s32 *x, s32 *y, s32 number, u32 numDigits) debug_wrap_text(x, y); n = -number; } - + *D_801657B8 = -1; ptr = D_801657B8; if (n != 0) { @@ -4484,7 +4487,7 @@ void debug_print_number(s32 *x, s32 *y, s32 number, u32 numDigits) } else { *++ptr = 0; } - + do { func_800573E4(*x, *y, *ptr--); debug_wrap_text(x, y); @@ -4501,7 +4504,7 @@ void func_8005762C(s32 *x, s32 *y, s32 pathCount, u32 numDigits) { s8 *ptr; s32 count; s8 remainder; - + debug_wrap_text(x, y); *D_801657B8 = -1; ptr = D_801657B8; @@ -4517,7 +4520,7 @@ void func_8005762C(s32 *x, s32 *y, s32 pathCount, u32 numDigits) { } else { *++ptr = 0; } - + do { func_800573E4(*x, *y, *ptr--); debug_wrap_text(x, y); diff --git a/src/render_objects.h b/src/render_objects.h index 8eb66a754..e0c3c9471 100644 --- a/src/render_objects.h +++ b/src/render_objects.h @@ -1,7 +1,7 @@ #ifndef RENDER_OBJECTS_H #define RENDER_OBJECTS_H -#include "common_structs.h" +#include #include "main.h" void func_80045738(u8*, u8*, s32, s32); @@ -447,8 +447,6 @@ extern s16 D_8018D2E8; extern u8* D_8018D4BC; extern u8* D_8018D4C0; -// Probably aren't really part of this file, but don't have a better place to put them -extern u8 *gPortraitTLUTs[]; extern u8 *gPortraitTextures[]; extern Lights1 D_800E4638; diff --git a/src/render_player.c b/src/render_player.c index f56af8e0c..fca27a012 100644 --- a/src/render_player.c +++ b/src/render_player.c @@ -1,9 +1,10 @@ #include #include +#include #include #include -#include #include "code_800029B0.h" +#include "camera.h" #include "math_util.h" #include "math_util_2.h" #include "main.h" @@ -33,27 +34,27 @@ UNUSED void *D_800DDB5C[3] = { gFramebuffer0, gFramebuffer1, gFramebuffer2 }; -s16 D_80164AB0[8]; -s16 D_80164AC0[8]; -Player *D_80164AD0[8]; +s16 gPlayersToRenderPlayerId[8]; +s16 gPlayersToRenderScreenId[8]; +Player *gPlayersToRenderPlayer[8]; s16 gMatrixEffectCount; s32 D_80164AF4[3]; struct_D_802F1F80 *gPlayerPalette; -u8 *D_80164B08; -u8 *D_80164B0C; +u8 *sKartUpperTexture; +u8 *sKartLowerTexture; u16 gPlayerRedEffect[8]; u16 gPlayerGreenEffect[8]; u16 gPlayerBlueEffect[8]; u16 gPlayerCyanEffect[8]; u16 gPlayerMagentaEffect[8]; u16 gPlayerYellowEffect[8]; -//if it's also a color effect like before +// Likely an unused colour effect. UNUSED u16 gPlayerWhiteEffect[8]; s32 D_80164B80[296]; s16 D_80165020[40]; Vec3f D_80165070[8]; -s16 D_801650D0[4][8]; -s16 D_80165110[4][8]; +s16 gLastAnimFrameSelector[4][8]; +s16 gLastAnimGroupSelector[4][8]; s16 D_80165150[4][8]; s16 D_80165190[4][8]; s16 D_801651D0[4][8]; @@ -71,7 +72,7 @@ void func_8001F980(s32 *arg0, s32 *arg1) { *arg1 = 0; } -void func_8001F9E4(Player *player, Camera *camera, s8 arg2) { +void func_8001F9E4(Player *player, Camera *camera, s8 screenId) { UNUSED s32 pad; s32 sp30; s32 sp2C; @@ -80,14 +81,14 @@ void func_8001F9E4(Player *player, Camera *camera, s8 arg2) { get_player_index_for_player(player); func_8001F980(&sp30, &sp2C); - player->unk_002 &= ~(2 << (arg2 * 4)); - player->unk_002 &= ~(8 << (arg2 * 4)); + player->unk_002 &= ~(2 << (screenId * 4)); + player->unk_002 &= ~(8 << (screenId * 4)); if (check_player_camera_collision(player, camera, (f32) (D_80165578 + sp30), (f32) (D_8016557A + sp2C)) == 1) { - player->unk_002 |= 2 << (arg2 * 4); + player->unk_002 |= 2 << (screenId * 4); } if (check_player_camera_collision(player, camera, (f32) D_80165580, (f32) D_80165582) == 1) { - player->unk_002 |= 8 << (arg2 * 4); + player->unk_002 |= 8 << (screenId * 4); } } @@ -105,7 +106,7 @@ u16 check_player_camera_collision(Player *player, Camera *camera, f32 arg2, f32 s16 var_v0; u16 ret; - ret = FALSE; + ret = false; switch (gActiveScreenMode) { /* irregular */ case SCREEN_MODE_1P: var_v0 = 0x293C; @@ -134,7 +135,7 @@ u16 check_player_camera_collision(Player *player, Camera *camera, f32 arg2, f32 sp5C = ((sp44 - player->pos[2]) * (sp58 - player->pos[0])) - ((sp4C - player->pos[2]) * (sp50 - player->pos[0])); if (((sp64 >= 0) && (sp60 >= 0) && (sp5C >= 0)) || (((sp64) <= 0) && (sp60 <= 0) && (sp5C <= 0))) { - ret = TRUE; + ret = true; } return ret; } @@ -151,7 +152,7 @@ u16 func_8001FD78(Player *player, f32 posX, UNUSED f32 arg2, f32 posZ) { f32 thing1; u16 ret; - ret = FALSE; + ret = false; sp58 = (70.0f * coss(((player->unk_0C0 - player->rotation[1]) - 0x71C))) + player->pos[2]; sp64 = (70.0f * sins(((player->unk_0C0 - player->rotation[1]) - 0x71C))) + player->pos[0]; @@ -164,78 +165,81 @@ u16 func_8001FD78(Player *player, f32 posX, UNUSED f32 arg2, f32 posZ) { thing0 = ((sp54 - posZ) * (sp5c - posX)) - ((sp50 - posZ) * (sp60 - posX)); thing1 = ((sp50 - posZ) * (sp64 - posX)) - ((sp58 - posZ) * (sp5c - posX)); if (((temp_f14 >= 0) && (thing0 >= 0) && (thing1 >= 0)) || ((temp_f14 <= 0) && (thing0 <= 0) && (thing1 <= 0))) { - ret = TRUE; + ret = true; } return ret; } -void init_render_player(Player *player, Camera *camera, s8 playerId, s8 playerRenderId) { - s32 pad[4]; +/** + * @brief one of his function is to put the frame to load in to a list to load it to be only applied for the next frame + */ +void init_render_player(Player *player, Camera *camera, s8 playerId, s8 screenId) { + UNUSED s32 pad[4]; s32 sp4C; s32 sp48; - s32 pad2; + UNUSED s32 pad2; s32 temp_v0; s32 temp_v0_2; if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) { - func_8001F9E4(player, camera, playerRenderId); - temp_v0 = 2 << (playerRenderId << 2); + func_8001F9E4(player, camera, screenId); + temp_v0 = 2 << (screenId << 2); if (temp_v0 == (player->unk_002 & temp_v0)) { if (!(player->type & PLAYER_START_SEQUENCE)) { - func_8002934C(player, camera, playerRenderId, playerId); + func_8002934C(player, camera, screenId, playerId); } else { - func_8002934C(player, camera, playerRenderId, playerId); + func_8002934C(player, camera, screenId, playerId); player->slopeAccel = 0; player->unk_206 = 0; - player->unk_050[playerRenderId] = 0; + player->unk_050[screenId] = 0; } } func_8001F980(&sp4C, &sp48); - temp_v0_2 = 1 << (playerRenderId << 2); + temp_v0_2 = 1 << (screenId << 2); if ((temp_v0 == (player->unk_002 & temp_v0)) && (temp_v0_2 == (player->unk_002 & temp_v0_2))) { if ((check_player_camera_collision(player, camera, D_80165570 + sp4C, D_80165572 + sp48) == 1) & 0xFFFF) { - D_80164AB0[gPlayersToRenderCount] = (s16) playerId; - D_80164AC0[gPlayersToRenderCount] = (s16) playerRenderId; - D_80164AD0[gPlayersToRenderCount] = player; + gPlayersToRenderPlayerId[gPlayersToRenderCount] = (s16) playerId; + gPlayersToRenderScreenId[gPlayersToRenderCount] = (s16) screenId; + gPlayersToRenderPlayer[gPlayersToRenderCount] = player; gPlayersToRenderCount += 1; - D_80165190[playerRenderId][playerId] = 0; - D_801650D0[playerRenderId][playerId] = player->animFrameSelector[playerRenderId]; - D_80165110[playerRenderId][playerId] = player->animGroupSelector[playerRenderId]; - D_80165150[playerRenderId][playerId] = player->unk_0A8; - D_801651D0[playerRenderId][playerId] += 1; - if (D_801651D0[playerRenderId][playerId] == 2) { - D_801651D0[playerRenderId][playerId] = 0; + D_80165190[screenId][playerId] = 0; + gLastAnimFrameSelector[screenId][playerId] = player->animFrameSelector[screenId]; + gLastAnimGroupSelector[screenId][playerId] = player->animGroupSelector[screenId]; + D_80165150[screenId][playerId] = player->unk_0A8; + D_801651D0[screenId][playerId] += 1; + if (D_801651D0[screenId][playerId] == 2) { + D_801651D0[screenId][playerId] = 0; } } else { if ((check_player_camera_collision(player, camera, D_80165574 + sp4C, D_80165576) == 1) & 0xFFFF) { - if ((sRenderingFramebuffer == gRenderingFramebufferByPlayer[playerId]) || ((D_801650D0[playerRenderId][playerId] - player->animFrameSelector[playerRenderId]) > 0x13) || ((D_801650D0[playerRenderId][playerId] - player->animFrameSelector[playerRenderId]) < -0x13) || (D_80165190[playerRenderId][playerId] == (s16) 1U)) { - D_80164AB0[gPlayersToRenderCount] = (s16) playerId; - D_80164AC0[gPlayersToRenderCount] = (s16) playerRenderId; - D_80164AD0[gPlayersToRenderCount] = player; + if ((sRenderingFramebuffer == gRenderingFramebufferByPlayer[playerId]) || ((gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId]) > 0x13) || ((gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId]) < -0x13) || (D_80165190[screenId][playerId] == (s16) 1U)) { + gPlayersToRenderPlayerId[gPlayersToRenderCount] = (s16) playerId; + gPlayersToRenderScreenId[gPlayersToRenderCount] = (s16) screenId; + gPlayersToRenderPlayer[gPlayersToRenderCount] = player; gPlayersToRenderCount += 1; - D_801650D0[playerRenderId][playerId] = player->animFrameSelector[playerRenderId]; - D_80165110[playerRenderId][playerId] = player->animGroupSelector[playerRenderId]; - D_80165150[playerRenderId][playerId] = player->unk_0A8; - D_80165190[playerRenderId][playerId] = 0; - D_801651D0[playerRenderId][playerId] += 1; - if (D_801651D0[playerRenderId][playerId] == 2) { - D_801651D0[playerRenderId][playerId] = 0; + gLastAnimFrameSelector[screenId][playerId] = player->animFrameSelector[screenId]; + gLastAnimGroupSelector[screenId][playerId] = player->animGroupSelector[screenId]; + D_80165150[screenId][playerId] = player->unk_0A8; + D_80165190[screenId][playerId] = 0; + D_801651D0[screenId][playerId] += 1; + if (D_801651D0[screenId][playerId] == 2) { + D_801651D0[screenId][playerId] = 0; } } } else { if (( - (D_801650D0[playerRenderId][playerId] - player->animFrameSelector[playerRenderId]) > 0x13) || ((D_801650D0[playerRenderId][playerId] - player->animFrameSelector[playerRenderId]) < -0x13) || (D_80165190[playerRenderId][playerId] == (s16) 1U)) { - D_80164AB0[gPlayersToRenderCount] = (s16) playerId; - D_80164AC0[gPlayersToRenderCount] = (s16) playerRenderId; - D_80164AD0[gPlayersToRenderCount] = player; + (gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId]) > 0x13) || ((gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId]) < -0x13) || (D_80165190[screenId][playerId] == (s16) 1U)) { + gPlayersToRenderPlayerId[gPlayersToRenderCount] = (s16) playerId; + gPlayersToRenderScreenId[gPlayersToRenderCount] = (s16) screenId; + gPlayersToRenderPlayer[gPlayersToRenderCount] = player; gPlayersToRenderCount += 1; - D_801650D0[playerRenderId][playerId] = (s16) player->animFrameSelector[playerRenderId]; - D_80165110[playerRenderId][playerId] = player->animGroupSelector[playerRenderId]; - D_80165150[playerRenderId][playerId] = player->unk_0A8; - D_80165190[playerRenderId][playerId] = 0; - D_801651D0[playerRenderId][playerId] += 1; - if (D_801651D0[playerRenderId][playerId] == 2) { - D_801651D0[playerRenderId][playerId] = 0; + gLastAnimFrameSelector[screenId][playerId] = (s16) player->animFrameSelector[screenId]; + gLastAnimGroupSelector[screenId][playerId] = player->animGroupSelector[screenId]; + D_80165150[screenId][playerId] = player->unk_0A8; + D_80165190[screenId][playerId] = 0; + D_801651D0[screenId][playerId] += 1; + if (D_801651D0[screenId][playerId] == 2) { + D_801651D0[screenId][playerId] = 0; } } } @@ -244,104 +248,104 @@ void init_render_player(Player *player, Camera *camera, s8 playerId, s8 playerRe } } -void func_80020524(void) { +void load_kart_texture_and_render_kart_particle_on_screen_one(void) { s16 i; - func_80027560(D_80164AD0[0], D_80164AB0[0], D_80164AC0[0], D_80164AC0[0], D_801651D0[D_80164AC0[0]][D_80164AB0[0]]); - func_8006E5AC(gPlayerOneCopy, 0, 0); - func_8006E5AC(gPlayerTwo, 1, 0); - func_8006E5AC(gPlayerThree, 2, 0); - func_8006E5AC(gPlayerFour, 3, 0); + load_kart_texture_non_blocking(gPlayersToRenderPlayer[0], gPlayersToRenderPlayerId[0], gPlayersToRenderScreenId[0], gPlayersToRenderScreenId[0], D_801651D0[gPlayersToRenderScreenId[0]][gPlayersToRenderPlayerId[0]]); + render_kart_particle_on_screen_one(gPlayerOneCopy, PLAYER_ONE, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerTwo, PLAYER_TWO, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerThree, PLAYER_THREE, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerFour, PLAYER_FOUR, PLAYER_ONE); if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) { - func_8006E5AC(gPlayerFive, 4, 0); - func_8006E5AC(gPlayerSix, 5, 0); - func_8006E5AC(gPlayerSeven, 6, 0); - func_8006E5AC(gPlayerEight, 7, 0); + render_kart_particle_on_screen_one(gPlayerFive, PLAYER_FIVE, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerSix, PLAYER_SIX, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerSeven, PLAYER_SEVEN, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerEight, PLAYER_EIGHT, PLAYER_ONE); } osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); for (i = 1; i < gPlayersToRenderCount; i++) { - func_80027560(D_80164AD0[i], D_80164AB0[i], D_80164AC0[i], D_80164AC0[i], D_801651D0[D_80164AC0[i]][D_80164AB0[i]]); + load_kart_texture_non_blocking(gPlayersToRenderPlayer[i], gPlayersToRenderPlayerId[i], gPlayersToRenderScreenId[i], gPlayersToRenderScreenId[i], D_801651D0[gPlayersToRenderScreenId[i]][gPlayersToRenderPlayerId[i]]); - mio0decode(D_802DFB80[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].unk_00, - D_802BFB80.arraySize8[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].pixel_index_array); + mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[i - 1]][gPlayersToRenderPlayerId[i - 1]]][gPlayersToRenderScreenId[i - 1]][gPlayersToRenderPlayerId[i - 1]].unk_00, + D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[i - 1]][gPlayersToRenderPlayerId[i - 1]]][gPlayersToRenderScreenId[i - 1]][gPlayersToRenderPlayerId[i - 1]].pixel_index_array); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } - mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00, - D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array); + mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]].unk_00, + D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]].pixel_index_array); } -void func_8002088C(void) { +void load_kart_texture_and_render_kart_particle_on_screen_two(void) { s16 var_s0; - func_80027560(D_80164AD0[0], D_80164AB0[0], D_80164AC0[0], D_80164AC0[0], D_801651D0[D_80164AC0[0]][D_80164AB0[0]]); - func_8006E634(gPlayerOneCopy, 0, 1); - func_8006E634(gPlayerTwo, 1, 1); - func_8006E634(gPlayerThree, 2, 1); - func_8006E634(gPlayerFour, 3, 1); + load_kart_texture_non_blocking(gPlayersToRenderPlayer[0], gPlayersToRenderPlayerId[0], gPlayersToRenderScreenId[0], gPlayersToRenderScreenId[0], D_801651D0[gPlayersToRenderScreenId[0]][gPlayersToRenderPlayerId[0]]); + render_kart_particle_on_screen_two(gPlayerOneCopy, PLAYER_ONE, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerTwo, PLAYER_TWO, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerThree, PLAYER_THREE, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerFour, PLAYER_FOUR, PLAYER_TWO); if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) { - func_8006E634(gPlayerFive, 4, 1); - func_8006E634(gPlayerSix, 5, 1); - func_8006E634(gPlayerSeven, 6, 1); - func_8006E634(gPlayerEight, 7, 1); + render_kart_particle_on_screen_two(gPlayerFive, PLAYER_FIVE, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerSix, PLAYER_SIX, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerSeven, PLAYER_SEVEN, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerEight, PLAYER_EIGHT, PLAYER_TWO); } osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); for (var_s0 = 1; var_s0 < gPlayersToRenderCount; var_s0++) { - func_80027560(D_80164AD0[var_s0], D_80164AB0[var_s0], D_80164AC0[var_s0], D_80164AC0[var_s0], D_801651D0[D_80164AC0[var_s0]][D_80164AB0[var_s0]]); - mio0decode(D_802DFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]].unk_00, - D_802BFB80.arraySize8[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]].pixel_index_array); + load_kart_texture_non_blocking(gPlayersToRenderPlayer[var_s0], gPlayersToRenderPlayerId[var_s0], gPlayersToRenderScreenId[var_s0], gPlayersToRenderScreenId[var_s0], D_801651D0[gPlayersToRenderScreenId[var_s0]][gPlayersToRenderPlayerId[var_s0]]); + mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]].unk_00, + D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]].pixel_index_array); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } - mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00, - D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array); + mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]].unk_00, + D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]].pixel_index_array); } -void func_80020BF4(void) { +void load_kart_texture_and_render_kart_particle_on_screen_three(void) { s16 var_s0; - func_80027560(D_80164AD0[0], D_80164AB0[0] + 4, D_80164AC0[0], D_80164AC0[0] - 2, D_801651D0[D_80164AC0[0]][D_80164AB0[0]]); - func_8006E6BC(gPlayerOneCopy, 0, 2); - func_8006E6BC(gPlayerTwo, 1, 2); - func_8006E6BC(gPlayerThree, 2, 2); - func_8006E6BC(gPlayerFour, 3, 2); + load_kart_texture_non_blocking(gPlayersToRenderPlayer[0], gPlayersToRenderPlayerId[0] + 4, gPlayersToRenderScreenId[0], gPlayersToRenderScreenId[0] - 2, D_801651D0[gPlayersToRenderScreenId[0]][gPlayersToRenderPlayerId[0]]); + render_kart_particle_on_screen_three(gPlayerOneCopy, PLAYER_ONE, PLAYER_THREE); + render_kart_particle_on_screen_three(gPlayerTwo, PLAYER_TWO, PLAYER_THREE); + render_kart_particle_on_screen_three(gPlayerThree, PLAYER_THREE, PLAYER_THREE); + render_kart_particle_on_screen_three(gPlayerFour, PLAYER_FOUR, PLAYER_THREE); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); for (var_s0 = 1; var_s0 < gPlayersToRenderCount; var_s0++) { - func_80027560(D_80164AD0[var_s0], D_80164AB0[var_s0] + 4, D_80164AC0[var_s0], D_80164AC0[var_s0] - 2, D_801651D0[D_80164AC0[var_s0]][D_80164AB0[var_s0]]); - mio0decode(D_802DFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].unk_00, - D_802BFB80.arraySize8[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].pixel_index_array); + load_kart_texture_non_blocking(gPlayersToRenderPlayer[var_s0], gPlayersToRenderPlayerId[var_s0] + 4, gPlayersToRenderScreenId[var_s0], gPlayersToRenderScreenId[var_s0] - 2, D_801651D0[gPlayersToRenderScreenId[var_s0]][gPlayersToRenderPlayerId[var_s0]]); + mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1] - 2][gPlayersToRenderPlayerId[var_s0 - 1] + 4].unk_00, + D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1] - 2][gPlayersToRenderPlayerId[var_s0 - 1] + 4].pixel_index_array); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } - mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00, - D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array); + mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1] - 2][gPlayersToRenderPlayerId[gPlayersToRenderCount-1] + 4].unk_00, + D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1] - 2][gPlayersToRenderPlayerId[gPlayersToRenderCount-1] + 4].pixel_index_array); } -void func_80020F1C(void) { +void load_kart_texture_and_render_kart_particle_on_screen_four(void) { s16 var_s0; - func_80027560(D_80164AD0[0], D_80164AB0[0] + 4, D_80164AC0[0], D_80164AC0[0] - 2, D_801651D0[D_80164AC0[0]][D_80164AB0[0]]); - func_8006E744(gPlayerOneCopy, 0, 3); - func_8006E744(gPlayerTwo, 1, 3); - func_8006E744(gPlayerThree, 2, 3); - func_8006E744(gPlayerFour, 3, 3); + load_kart_texture_non_blocking(gPlayersToRenderPlayer[0], gPlayersToRenderPlayerId[0] + 4, gPlayersToRenderScreenId[0], gPlayersToRenderScreenId[0] - 2, D_801651D0[gPlayersToRenderScreenId[0]][gPlayersToRenderPlayerId[0]]); + render_kart_particle_on_screen_four(gPlayerOneCopy, PLAYER_ONE, PLAYER_FOUR); + render_kart_particle_on_screen_four(gPlayerTwo, PLAYER_TWO, PLAYER_FOUR); + render_kart_particle_on_screen_four(gPlayerThree, PLAYER_THREE, PLAYER_FOUR); + render_kart_particle_on_screen_four(gPlayerFour, PLAYER_FOUR, PLAYER_FOUR); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); for (var_s0 = 1; var_s0 < gPlayersToRenderCount; var_s0++) { - func_80027560(D_80164AD0[var_s0], D_80164AB0[var_s0] + 4, D_80164AC0[var_s0], D_80164AC0[var_s0] - 2, D_801651D0[D_80164AC0[var_s0]][D_80164AB0[var_s0]]); - mio0decode(D_802DFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].unk_00, - D_802BFB80.arraySize8[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].pixel_index_array); + load_kart_texture_non_blocking(gPlayersToRenderPlayer[var_s0], gPlayersToRenderPlayerId[var_s0] + 4, gPlayersToRenderScreenId[var_s0], gPlayersToRenderScreenId[var_s0] - 2, D_801651D0[gPlayersToRenderScreenId[var_s0]][gPlayersToRenderPlayerId[var_s0]]); + mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1] - 2][gPlayersToRenderPlayerId[var_s0 - 1] + 4].unk_00, + D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1] - 2][gPlayersToRenderPlayerId[var_s0 - 1] + 4].pixel_index_array); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } - mio0decode(D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00, - D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array); + mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1] - 2][gPlayersToRenderPlayerId[gPlayersToRenderCount-1] + 4].unk_00, + D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1] - 2][gPlayersToRenderPlayerId[gPlayersToRenderCount-1] + 4].pixel_index_array); } -void try_render_player(Player *player, s8 playerId, s8 arg2) { +void try_rendering_player(Player *player, s8 playerId, s8 arg2) { if (((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) && ((player->type & PLAYER_UNKNOWN_0x40) == 0)) { if ((player->unk_002 & 2 << (arg2 * 4)) == 2 << (arg2 * 4)) { - player_render(player, playerId, arg2); + render_player(player, playerId, arg2); } } } @@ -358,38 +362,38 @@ void render_players_on_screen_one(void) { }; gPlayersToRenderCount = 0; - init_render_player(gPlayerOneCopy, camera1, 0U, 0U); - init_render_player(gPlayerTwo, camera1, 1U, 0U); - init_render_player(gPlayerThree, camera1, 2U, 0U); - init_render_player(gPlayerFour, camera1, 3U, 0U); + init_render_player(gPlayerOneCopy, camera1, PLAYER_ONE, PLAYER_ONE); + init_render_player(gPlayerTwo, camera1, PLAYER_TWO, PLAYER_ONE); + init_render_player(gPlayerThree, camera1, PLAYER_THREE, PLAYER_ONE); + init_render_player(gPlayerFour, camera1, PLAYER_FOUR, PLAYER_ONE); if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) { - init_render_player(gPlayerFive, camera1, 4U, 0U); - init_render_player(gPlayerSix, camera1, 5U, 0U); - init_render_player(gPlayerSeven, camera1, 6U, 0U); - init_render_player(gPlayerEight, camera1, 7U, 0U); + init_render_player(gPlayerFive, camera1, PLAYER_FIVE, PLAYER_ONE); + init_render_player(gPlayerSix, camera1, PLAYER_SIX, PLAYER_ONE); + init_render_player(gPlayerSeven, camera1, PLAYER_SEVEN, PLAYER_ONE); + init_render_player(gPlayerEight, camera1, PLAYER_EIGHT, PLAYER_ONE); } - try_render_player(gPlayerOne, 0U, 0U); - try_render_player(gPlayerTwo, 1U, 0U); - try_render_player(gPlayerThree, 2U, 0U); - try_render_player(gPlayerFour, 3U, 0U); + try_rendering_player(gPlayerOne, PLAYER_ONE, PLAYER_ONE); + try_rendering_player(gPlayerTwo, PLAYER_TWO, PLAYER_ONE); + try_rendering_player(gPlayerThree, PLAYER_THREE, PLAYER_ONE); + try_rendering_player(gPlayerFour, PLAYER_FOUR, PLAYER_ONE); if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) { - try_render_player(gPlayerFive, 4U, 0U); - try_render_player(gPlayerSix, 5U, 0U); - try_render_player(gPlayerSeven, 6U, 0U); - try_render_player(gPlayerEight, 7U, 0U); + try_rendering_player(gPlayerFive, PLAYER_FIVE, PLAYER_ONE); + try_rendering_player(gPlayerSix, PLAYER_SIX, PLAYER_ONE); + try_rendering_player(gPlayerSeven, PLAYER_SEVEN, PLAYER_ONE); + try_rendering_player(gPlayerEight, PLAYER_EIGHT, PLAYER_ONE); } if (gPlayersToRenderCount != 0) { - func_80020524(); + load_kart_texture_and_render_kart_particle_on_screen_one(); } else { - func_8006E5AC(gPlayerOneCopy, 0, 0); - func_8006E5AC(gPlayerTwo, 1, 0); - func_8006E5AC(gPlayerThree, 2, 0); - func_8006E5AC(gPlayerFour, 3, 0); + render_kart_particle_on_screen_one(gPlayerOneCopy, PLAYER_ONE, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerTwo, PLAYER_TWO, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerThree, PLAYER_THREE, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerFour, PLAYER_FOUR, PLAYER_ONE); if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) { - func_8006E5AC(gPlayerFive, 4, 0); - func_8006E5AC(gPlayerSix, 5, 0); - func_8006E5AC(gPlayerSeven, 6, 0); - func_8006E5AC(gPlayerEight, 7, 0); + render_kart_particle_on_screen_one(gPlayerFive, PLAYER_FIVE, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerSix, PLAYER_SIX, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerSeven, PLAYER_SEVEN, PLAYER_ONE); + render_kart_particle_on_screen_one(gPlayerEight, PLAYER_EIGHT, PLAYER_ONE); } } gPlayersToRenderCount = 0; @@ -507,14 +511,14 @@ u8 **gKartWarioWheels1[] = { gKartWario189Wheel0 }; -u16 **D_800DDE34[] = { - gKartMarioWheels0, gKartLuigiWheels0, gKartYoshiWheels0, gKartToadWheels0, - gKartDKWheels0, gKartWarioWheels0, gKartPeachWheels0, gKartBowserWheels0 +u16 **gKartWheels0[] = { + (u16 **)gKartMarioWheels0, (u16 **)gKartLuigiWheels0, (u16 **)gKartYoshiWheels0, (u16 **)gKartToadWheels0, + (u16 **)gKartDKWheels0, (u16 **)gKartWarioWheels0, (u16 **)gKartPeachWheels0, (u16 **)gKartBowserWheels0 }; -u16 **D_800DDE54[] = { - gKartMarioWheels1, gKartLuigiWheels1, gKartYoshiWheels1, gKartToadWheels1, - gKartDKWheels1, gKartWarioWheels1, gKartPeachWheels1, gKartBowserWheels1 +u16 **gKartWheels1[] = { + (u16 **)gKartMarioWheels1, (u16 **)gKartLuigiWheels1, (u16 **)gKartYoshiWheels1, (u16 **)gKartToadWheels1, + (u16 **)gKartDKWheels1, (u16 **)gKartWarioWheels1, (u16 **)gKartPeachWheels1, (u16 **)gKartBowserWheels1 }; s32 D_800DDE74[] = { @@ -527,38 +531,38 @@ s32 maybeCompilerPadding = 0; void render_players_on_screen_two(void) { gPlayersToRenderCount = 0; - init_render_player(gPlayerOneCopy, camera2, 0, 1); - init_render_player(gPlayerTwo, camera2, 1, 1); - init_render_player(gPlayerThree, camera2, 2, 1); - init_render_player(gPlayerFour, camera2, 3, 1); + init_render_player(gPlayerOneCopy, camera2, PLAYER_ONE, PLAYER_TWO); + init_render_player(gPlayerTwo, camera2, PLAYER_TWO, PLAYER_TWO); + init_render_player(gPlayerThree, camera2, PLAYER_THREE, PLAYER_TWO); + init_render_player(gPlayerFour, camera2, PLAYER_FOUR, PLAYER_TWO); if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) { - init_render_player(gPlayerFive, camera2, 4, 1); - init_render_player(gPlayerSix, camera2, 5, 1); - init_render_player(gPlayerSeven, camera2, 6, 1); - init_render_player(gPlayerEight, camera2, 7, 1); + init_render_player(gPlayerFive, camera2, PLAYER_FIVE, PLAYER_TWO); + init_render_player(gPlayerSix, camera2, PLAYER_SIX, PLAYER_TWO); + init_render_player(gPlayerSeven, camera2, PLAYER_SEVEN, PLAYER_TWO); + init_render_player(gPlayerEight, camera2, PLAYER_EIGHT, PLAYER_TWO); } - try_render_player(gPlayerOne, 0, 1); - try_render_player(gPlayerTwo, 1, 1); - try_render_player(gPlayerThree, 2, 1); - try_render_player(gPlayerFour, 3, 1); + try_rendering_player(gPlayerOne, PLAYER_ONE, PLAYER_TWO); + try_rendering_player(gPlayerTwo, PLAYER_TWO, PLAYER_TWO); + try_rendering_player(gPlayerThree, PLAYER_THREE, PLAYER_TWO); + try_rendering_player(gPlayerFour, PLAYER_FOUR, PLAYER_TWO); if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) { - try_render_player(gPlayerFive, 4, 1); - try_render_player(gPlayerSix, 5, 1); - try_render_player(gPlayerSeven, 6, 1); - try_render_player(gPlayerEight, 7, 1); + try_rendering_player(gPlayerFive, PLAYER_FIVE, PLAYER_TWO); + try_rendering_player(gPlayerSix, PLAYER_SIX, PLAYER_TWO); + try_rendering_player(gPlayerSeven, PLAYER_SEVEN, PLAYER_TWO); + try_rendering_player(gPlayerEight, PLAYER_EIGHT, PLAYER_TWO); } if (gPlayersToRenderCount != 0) { - func_8002088C(); + load_kart_texture_and_render_kart_particle_on_screen_two(); } else { - func_8006E634(gPlayerOneCopy, 0, 1); - func_8006E634(gPlayerTwo, 1, 1); - func_8006E634(gPlayerThree, 2, 1); - func_8006E634(gPlayerFour, 3, 1); + render_kart_particle_on_screen_two(gPlayerOneCopy, PLAYER_ONE, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerTwo, PLAYER_TWO, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerThree, PLAYER_THREE, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerFour, PLAYER_FOUR, PLAYER_TWO); if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) { - func_8006E634(gPlayerFive, 4, 1); - func_8006E634(gPlayerSix, 5, 1); - func_8006E634(gPlayerSeven, 6, 1); - func_8006E634(gPlayerEight, 7, 1); + render_kart_particle_on_screen_two(gPlayerFive, PLAYER_FIVE, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerSix, PLAYER_SIX, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerSeven, PLAYER_SEVEN, PLAYER_TWO); + render_kart_particle_on_screen_two(gPlayerEight, PLAYER_EIGHT, PLAYER_TWO); } } gPlayersToRenderCount = 0; @@ -566,42 +570,42 @@ void render_players_on_screen_two(void) { void render_players_on_screen_three(void) { gPlayersToRenderCount = 0; - init_render_player(gPlayerOneCopy, camera3, 0, 2); - init_render_player(gPlayerTwo, camera3, 1, 2); - init_render_player(gPlayerThree, camera3, 2, 2); - init_render_player(gPlayerFour, camera3, 3, 2); - try_render_player(gPlayerOne, 0, 2); - try_render_player(gPlayerTwo, 1, 2); - try_render_player(gPlayerThree, 2, 2); - try_render_player(gPlayerFour, 3, 2); + init_render_player(gPlayerOneCopy, camera3, PLAYER_ONE, PLAYER_THREE); + init_render_player(gPlayerTwo, camera3, PLAYER_TWO, PLAYER_THREE); + init_render_player(gPlayerThree, camera3, PLAYER_THREE, PLAYER_THREE); + init_render_player(gPlayerFour, camera3, PLAYER_FOUR, PLAYER_THREE); + try_rendering_player(gPlayerOne, PLAYER_ONE, PLAYER_THREE); + try_rendering_player(gPlayerTwo, PLAYER_TWO, PLAYER_THREE); + try_rendering_player(gPlayerThree, PLAYER_THREE, PLAYER_THREE); + try_rendering_player(gPlayerFour, PLAYER_FOUR, PLAYER_THREE); if (gPlayersToRenderCount != 0) { - func_80020BF4(); + load_kart_texture_and_render_kart_particle_on_screen_three(); } else { - func_8006E6BC(gPlayerOneCopy, 0, 2); - func_8006E6BC(gPlayerTwo, 1, 2); - func_8006E6BC(gPlayerThree, 2, 2); - func_8006E6BC(gPlayerFour, 3, 2); + render_kart_particle_on_screen_three(gPlayerOneCopy, PLAYER_ONE, PLAYER_THREE); + render_kart_particle_on_screen_three(gPlayerTwo, PLAYER_TWO, PLAYER_THREE); + render_kart_particle_on_screen_three(gPlayerThree, PLAYER_THREE, PLAYER_THREE); + render_kart_particle_on_screen_three(gPlayerFour, PLAYER_FOUR, PLAYER_THREE); } gPlayersToRenderCount = 0; } void render_players_on_screen_four(void) { gPlayersToRenderCount = 0; - init_render_player(gPlayerOneCopy, camera4, 0, 3); - init_render_player(gPlayerTwo, camera4, 1, 3); - init_render_player(gPlayerThree, camera4, 2, 3); - init_render_player(gPlayerFour, camera4, 3, 3); - try_render_player(gPlayerOne, 0, 3); - try_render_player(gPlayerTwo, 1, 3); - try_render_player(gPlayerThree, 2, 3); - try_render_player(gPlayerFour, 3, 3); + init_render_player(gPlayerOneCopy, camera4, PLAYER_ONE, PLAYER_FOUR); + init_render_player(gPlayerTwo, camera4, PLAYER_TWO, PLAYER_FOUR); + init_render_player(gPlayerThree, camera4, PLAYER_THREE, PLAYER_FOUR); + init_render_player(gPlayerFour, camera4, PLAYER_FOUR, PLAYER_FOUR); + try_rendering_player(gPlayerOne, PLAYER_ONE, PLAYER_FOUR); + try_rendering_player(gPlayerTwo, PLAYER_TWO, PLAYER_FOUR); + try_rendering_player(gPlayerThree, PLAYER_THREE, PLAYER_FOUR); + try_rendering_player(gPlayerFour, PLAYER_FOUR, PLAYER_FOUR); if (gPlayersToRenderCount != 0) { - func_80020F1C(); + load_kart_texture_and_render_kart_particle_on_screen_four(); } else { - func_8006E744(gPlayerOneCopy, 0, 3); - func_8006E744(gPlayerTwo, 1, 3); - func_8006E744(gPlayerThree, 2, 3); - func_8006E744(gPlayerFour, 3, 3); + render_kart_particle_on_screen_four(gPlayerOneCopy, PLAYER_ONE, PLAYER_FOUR); + render_kart_particle_on_screen_four(gPlayerTwo, PLAYER_TWO, PLAYER_FOUR); + render_kart_particle_on_screen_four(gPlayerThree, PLAYER_THREE, PLAYER_FOUR); + render_kart_particle_on_screen_four(gPlayerFour, PLAYER_FOUR, PLAYER_FOUR); } gPlayersToRenderCount = 0; } @@ -709,7 +713,7 @@ void mtxf_scale2(Mat4 arg0, f32 scale) { * This function writes a fixed-point value to each Mtx entry. This is not how the Mtx struct works. * The first half of Mtx only holds s16 whole numbers and the second half holds the s16 decimal (fractional) parts. * See convert_to_fixed_point_matrix() for correct calculations. Note that each Mtx entry is the size of s32. - * This means each Mtx entry holds two s16 values. + * This means each Mtx entry holds two s16 values. * The first sixteen entries contain only the integer parts and the second sixteen entries hold only the decimal (fractional) parts. */ UNUSED void failed_fixed_point_matrix_conversion(Mtx *dest, Mat4 src) { @@ -792,9 +796,9 @@ bool adjust_angle(s16 *angle, s16 targetAngle, s16 step) { } } if (targetAngle == *angle) { - return FALSE; + return false; } - return TRUE; + return true; } void move_s32_towards(s32 *startingValue, s32 targetValue, f32 somePercent) { @@ -974,24 +978,24 @@ void func_80022BC4(Player *player, UNUSED s8 arg1) { player->unk_DB4.unk2 = temp_v0; } -void func_80022CA8(Player *player, s8 arg1, UNUSED s8 arg2, s8 arg3) { +void func_80022CA8(Player *player, s8 playerId, UNUSED s8 screenId, s8 arg3) { s16 temp_v0 = player->unk_DA4; - D_800DDBB4[arg1][arg3 + 0x0].v.ob[1] = 18 - (temp_v0 * 2.3); - D_800DDBB4[arg1][arg3 + 0x1].v.ob[1] = 9 - temp_v0; - D_800DDBB4[arg1][arg3 + 0x2].v.ob[1] = 9 - temp_v0; - D_800DDBB4[arg1][arg3 + 0x3].v.ob[1] = 18 - (temp_v0 * 2.3); - D_800DDBB4[arg1][arg3 + 0x4].v.ob[1] = 9 - temp_v0; - D_800DDBB4[arg1][arg3 + 0x7].v.ob[1] = 9 - temp_v0; + D_800DDBB4[playerId][arg3 + 0x0].v.ob[1] = 18 - (temp_v0 * 2.3); + D_800DDBB4[playerId][arg3 + 0x1].v.ob[1] = 9 - temp_v0; + D_800DDBB4[playerId][arg3 + 0x2].v.ob[1] = 9 - temp_v0; + D_800DDBB4[playerId][arg3 + 0x3].v.ob[1] = 18 - (temp_v0 * 2.3); + D_800DDBB4[playerId][arg3 + 0x4].v.ob[1] = 9 - temp_v0; + D_800DDBB4[playerId][arg3 + 0x7].v.ob[1] = 9 - temp_v0; } /** * Seems to stretch/warp a specific players texture for a * short period of time. Perhaps does not do anything **/ -void func_80022D60(UNUSED Player *player, s8 arg1, UNUSED s8 arg2, s8 arg3) { - D_800DDBB4[arg1][arg3].v.ob[1] = 21; - D_800DDBB4[arg1][arg3 + 0x3].v.ob[1] = 21; +void func_80022D60(UNUSED Player *player, s8 playerId, UNUSED s8 screenId, s8 arg3) { + D_800DDBB4[playerId][arg3].v.ob[1] = 21; + D_800DDBB4[playerId][arg3 + 0x3].v.ob[1] = 21; } void func_80022DB4(Player *player, UNUSED s8 arg1) { @@ -1019,15 +1023,15 @@ void func_80022DB4(Player *player, UNUSED s8 arg1) { player->unk_DB4.unk18 = temp_v0; } -void func_80022E84(Player *player, s8 arg1, UNUSED s8 arg2, s8 arg3) { +void func_80022E84(Player *player, s8 playerId, UNUSED s8 screenId, s8 arg3) { s16 temp_v0 = player->unk_DB4.unk1E; - D_800DDBB4[arg1][arg3 + 0x0].v.ob[1] = 18 - temp_v0; - D_800DDBB4[arg1][arg3 + 0x1].v.ob[1] = 9 - temp_v0; - D_800DDBB4[arg1][arg3 + 0x2].v.ob[1] = 9 - temp_v0; - D_800DDBB4[arg1][arg3 + 0x3].v.ob[1] = 18 - temp_v0; - D_800DDBB4[arg1][arg3 + 0x4].v.ob[1] = 9 - temp_v0; - D_800DDBB4[arg1][arg3 + 0x7].v.ob[1] = 9 - temp_v0; + D_800DDBB4[playerId][arg3 + 0x0].v.ob[1] = 18 - temp_v0; + D_800DDBB4[playerId][arg3 + 0x1].v.ob[1] = 9 - temp_v0; + D_800DDBB4[playerId][arg3 + 0x2].v.ob[1] = 9 - temp_v0; + D_800DDBB4[playerId][arg3 + 0x3].v.ob[1] = 18 - temp_v0; + D_800DDBB4[playerId][arg3 + 0x4].v.ob[1] = 9 - temp_v0; + D_800DDBB4[playerId][arg3 + 0x7].v.ob[1] = 9 - temp_v0; } /** @@ -1062,12 +1066,12 @@ bool is_player_under_light_luigi_raceway(Player *player, s8 arg1) { change_player_color_effect_rgb(player, arg1, COLOR_LIGHT, 0.3f); change_player_color_effect_cmy(player, arg1, 0xE0, 0.3f); D_80164B80[arg1] = 0; - return TRUE; + return true; } - return FALSE; + return false; default: - return FALSE; + return false; } } @@ -1077,7 +1081,7 @@ void render_light_environment_on_player(Player *player, s8 arg1) { if (((gNearestWaypointByPlayerId[arg1] >= 0x15) && (gNearestWaypointByPlayerId[arg1] < 0x2A)) || ((gNearestWaypointByPlayerId[arg1] >= 0x14D) && (gNearestWaypointByPlayerId[arg1] < 0x15C)) || ((gNearestWaypointByPlayerId[arg1] >= 0x1D1) && (gNearestWaypointByPlayerId[arg1] < 0x1E4)) - || (player->unk_110.unk3C[2] >= 500.0f)) { // over lava + || (player->collision.surfaceDistance[2] >= 500.0f)) { // over lava change_player_color_effect_rgb(player, arg1, COLOR_LAVA, 0.3f); change_player_color_effect_cmy(player, arg1, 0x004040, 0.3f); D_80164B80[arg1] = 0; @@ -1213,10 +1217,10 @@ void func_800235AC(Player *player, s8 arg1) { return; } } - if (is_player_under_light_luigi_raceway(player, arg1) != TRUE) { - if (((player->boundingBoxCorners[3].unk_14 & 1) == 1) - || ((player->boundingBoxCorners[3].unk_14 & 2) == 2) - || ((player->boundingBoxCorners[0].unk_14 & 3) == 3)) { + if (is_player_under_light_luigi_raceway(player, arg1) != true) { + if (((player->tyres[BACK_RIGHT].unk_14 & 1) == 1) + || ((player->tyres[BACK_RIGHT].unk_14 & 2) == 2) + || ((player->tyres[FRONT_LEFT].unk_14 & 3) == 3)) { change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 0.3f); change_player_color_effect_cmy(player, arg1, 0x6F6F6F, 0.3f); return; @@ -1229,18 +1233,18 @@ void func_800235AC(Player *player, s8 arg1) { } } -void func_80023BF0(Player *player, s8 arg1, s8 arg2, s8 arg3) { +void func_80023BF0(Player *player, s8 playerId, s8 screenId, s8 arg3) { if (((player->effects & HIT_EFFECT) == HIT_EFFECT) || ((player->effects & 0x8000000) == 0x8000000)) { - func_80022CA8(player, arg1, arg2, arg3); + func_80022CA8(player, playerId, screenId, arg3); } else { - func_80022E84(player, arg1, arg2, arg3); + func_80022E84(player, playerId, screenId, arg3); } if ((player->unk_0CA & 2) == 2) { - func_80022D60(player, arg1, arg2, arg3); + func_80022D60(player, playerId, screenId, arg3); } } -void render_player_shadow(Player *player, s8 arg1, s8 arg2) { +void render_player_shadow(Player *player, s8 playerId, s8 screenId) { Mat4 sp118; UNUSED Mat4 pad; Vec3f spCC; @@ -1253,7 +1257,7 @@ void render_player_shadow(Player *player, s8 arg1, s8 arg2) { UNUSED Vec3f pad2; f32 var_f2; - temp_t9 = (u16)(player->unk_048[arg2] + player->rotation[1] + player->unk_0C0) / 128; // << 7) & 0xFFFF; + temp_t9 = (u16)(player->unk_048[screenId] + player->rotation[1] + player->unk_0C0) / 128; // << 7) & 0xFFFF; spC0 = -player->rotation[1] - player->unk_0C0; spB0 = -coss(temp_t9 << 7) * 2; @@ -1269,12 +1273,12 @@ void render_player_shadow(Player *player, s8 arg1, s8 arg2) { || ((player->effects & 0x10000) == 0x10000) || ((player->effects & 8) == 8)) { - var_f2 = (f32) (1.0 - ((f64) player->unk_110.unk3C[2] * 0.02)); + var_f2 = (f32) (1.0 - ((f64) player->collision.surfaceDistance[2] * 0.02)); if (var_f2 < 0.0f) {var_f2 = 0.0f;} if (var_f2 > 1.0f) {var_f2 = 1.0f;} - spB4[0] = player->unk_110.orientationVector[0]; - spB4[2] = player->unk_110.orientationVector[2]; - spB4[1] = player->unk_110.orientationVector[1]; + spB4[0] = player->collision.orientationVector[0]; + spB4[2] = player->collision.orientationVector[2]; + spB4[1] = player->collision.orientationVector[1]; spCC[0] = player->pos[0] + ((spB0 * sins(spC0)) + (spAC * coss(spC0))); spCC[1] = player->unk_074 + 1.0f; @@ -1292,10 +1296,10 @@ void render_player_shadow(Player *player, s8 arg1, s8 arg2) { mtxf_translate_rotate(sp118, spCC, spC4); mtxf_scale2(sp118, gCharacterSize[player->characterId] * player->size); } - convert_to_fixed_point_matrix(&gGfxPool->mtxShadow[arg1 + (arg2 * 8)], sp118); + convert_to_fixed_point_matrix(&gGfxPool->mtxShadow[playerId + (screenId * 8)], sp118); + + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxShadow[playerId + (screenId * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxShadow[arg1 + (arg2 * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, D_0D008D58); gDPSetTextureLUT(gDisplayListHead++, G_TT_NONE); gDPLoadTextureBlock(gDisplayListHead++, D_8018D474, G_IM_FMT_I, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR @@ -1303,14 +1307,14 @@ void render_player_shadow(Player *player, s8 arg1, s8 arg2) { func_8004B414(0, 0, 0, 0xFF); gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2); gSPVertex(gDisplayListHead++, &D_800E51D0[0], 4, 0); - + gSPDisplayList(gDisplayListHead++, common_square_plain_render); gDPLoadTextureBlock(gDisplayListHead++, (D_8018D474 + SOME_TEXTURE_POINTER_MATH), G_IM_FMT_I, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); func_8004B414(0, 0, 0, 0xFF); gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2); gSPVertex(gDisplayListHead++, &D_800E5210[0], 4, 0); - + gSPDisplayList(gDisplayListHead++, common_square_plain_render); gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); } @@ -1345,9 +1349,9 @@ void render_player_shadow_credits(Player *player, s8 playerId, s8 arg2) { mtxf_translate_rotate(sp118, spCC, spC4); mtxf_scale2(sp118, gCharacterSize[player->characterId] * player->size); convert_to_fixed_point_matrix(&gGfxPool->mtxShadow[playerId + (arg2 * 8)], sp118); - + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxShadow[playerId + (arg2 * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - + gSPDisplayList(gDisplayListHead++, D_0D008D58); gDPSetTextureLUT(gDisplayListHead++, G_TT_NONE); gDPLoadTextureBlock(gDisplayListHead++, D_8018D474, G_IM_FMT_I, G_IM_SIZ_8b, 64, 32, 0, @@ -1355,22 +1359,22 @@ void render_player_shadow_credits(Player *player, s8 playerId, s8 arg2) { func_8004B414(0, 0, 0, 0x000000D0); gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2); gSPVertex(gDisplayListHead++, &D_800E51D0[0], 4, 0); - + gSPDisplayList(gDisplayListHead++, common_square_plain_render); gDPLoadTextureBlock(gDisplayListHead++, (D_8018D474 + SOME_TEXTURE_POINTER_MATH), G_IM_FMT_I, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); func_8004B414(0, 0, 0, 0x000000D0); gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2); gSPVertex(gDisplayListHead++, &D_800E5210[0], 4, 0); - + gSPDisplayList(gDisplayListHead++, common_square_plain_render); gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); } -void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) { - s32 pad; +void render_kart(Player *player, s8 playerId, s8 arg2, s8 arg3) { + UNUSED s32 pad; Mat4 sp1A4; - s32 pad2[17]; + UNUSED s32 pad2[17]; Vec3f sp154; Vec3s sp14C; f32 sp148; @@ -1410,16 +1414,16 @@ void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) { } } #ifdef AVOID_UB - gPlayerPalette = &D_802F1F80[D_801651D0[arg2][playerId]][arg2][playerId]; + gPlayerPalette = &gPlayerPalettesList[D_801651D0[arg2][playerId]][arg2][playerId]; #else - gPlayerPalette = &D_802F1F80[D_801651D0[arg2][playerId]][arg2][playerId * 0x100]; + gPlayerPalette = (struct_D_802F1F80 *) &gPlayerPalettesList[D_801651D0[arg2][playerId]][arg2][playerId * 0x100]; #endif if ((arg2 == 0) || (arg2 == 1)) { - D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0]; - D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0x7C0]; + sKartUpperTexture = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0]; + sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0x7C0]; } else { - D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0]; - D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0x7C0]; + sKartUpperTexture = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0]; + sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0x7C0]; } mtxf_translate_rotate(sp1A4, sp154, sp14C); mtxf_scale2(sp1A4, gCharacterSize[player->characterId] * player->size); @@ -1489,62 +1493,62 @@ void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) { gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); } - gDPLoadTextureBlock(gDisplayListHead++, D_80164B08, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(gDisplayListHead++, sKartUpperTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3], 4, 0); gSPDisplayList(gDisplayListHead++, common_square_plain_render); - gDPLoadTextureBlock(gDisplayListHead++, D_80164B0C, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(gDisplayListHead++, sKartLowerTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3 + 4], 4, 0); gSPDisplayList(gDisplayListHead++, common_square_plain_render); gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); } -void ghost_render(Player *player, s8 playerId, s8 arg2, s8 arg3) { - s32 pad; +void render_ghost(Player *player, s8 playerId, s8 screenId, s8 arg3) { + UNUSED s32 pad; Mat4 sp12C; - s32 pad2[17]; + UNUSED s32 pad2[17]; Vec3f spDC; Vec3s spD4; f32 spD0; f32 spCC; f32 spC8; - s32 pad3; + UNUSED s32 pad3; s16 spC2; s16 thing; - if (arg2) {} + if (screenId) {} if (D_8015F890 == 1) { spC2 = 0x00FF; } else { spC2 = 0x0070; } - thing = (u16)(player->unk_048[arg2] - player->rotation[1]); + thing = (u16)(player->unk_048[screenId] - player->rotation[1]); spD4[0] = (-(s16)(sins(thing) * (0.0f * 0.0f)) * 0.8); - spD4[1] = player->unk_048[arg2]; - spD4[2] = player->unk_050[arg2]; - func_80062B18(&spD0, &spCC, &spC8, 0, 1.5f, 0, -player->unk_048[arg2], player->unk_050[arg2]); + spD4[1] = player->unk_048[screenId]; + spD4[2] = player->unk_050[screenId]; + func_80062B18(&spD0, &spCC, &spC8, 0, 1.5f, 0, -player->unk_048[screenId], player->unk_050[screenId]); spDC[1] = (player->pos[1] - player->boundingBoxSize) + (spCC - 2.0); spDC[0] = player->pos[0] + spD0; spDC[2] = player->pos[2] + spC8; #ifdef AVOID_UB - gPlayerPalette = &D_802F1F80[D_801651D0[arg2][playerId]][arg2][playerId]; + gPlayerPalette = &gPlayerPalettesList[D_801651D0[screenId][playerId]][screenId][playerId]; #else - gPlayerPalette = &D_802F1F80[D_801651D0[arg2][playerId]][arg2][playerId * 0x100]; + gPlayerPalette = (struct_D_802F1F80 *) &gPlayerPalettesList[D_801651D0[screenId][playerId]][screenId][playerId * 0x100]; #endif - if ((arg2 == 0) || (arg2 == 1)) { - D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0]; - D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0x7C0]; + if ((screenId == 0) || (screenId == 1)) { + sKartUpperTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0]; + sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0x7C0]; } else { - D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0]; - D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0x7C0]; + sKartUpperTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array[0]; + sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array[0x7C0]; } mtxf_translate_rotate(sp12C, spDC, spD4); mtxf_scale2(sp12C, gCharacterSize[player->characterId] * player->size); - convert_to_fixed_point_matrix(&gGfxPool->mtxKart[playerId + (arg2 * 8)], sp12C); + convert_to_fixed_point_matrix(&gGfxPool->mtxKart[playerId + (screenId * 8)], sp12C); - gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (arg2 * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (screenId * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(gDisplayListHead++, common_setting_render_character); gDPLoadTLUT_pal256(gDisplayListHead++, gPlayerPalette); gDPSetTextureLUT(gDisplayListHead++, G_TT_RGBA16); @@ -1559,18 +1563,18 @@ void ghost_render(Player *player, s8 playerId, s8 arg2, s8 arg3) { ); gDPSetRenderMode(gDisplayListHead++, AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); - gDPLoadTextureBlock(gDisplayListHead++, D_80164B08, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(gDisplayListHead++, sKartUpperTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3], 4, 0); gSPDisplayList(gDisplayListHead++, common_square_plain_render); - gDPLoadTextureBlock(gDisplayListHead++, D_80164B0C, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(gDisplayListHead++, sKartLowerTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3 + 4], 4, 0); gSPDisplayList(gDisplayListHead++, common_square_plain_render); gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); } -void func_80025DE8(Player *player, s8 playerId, s8 arg2, s8 arg3) { +void func_80025DE8(Player *player, s8 playerId, s8 screenId, s8 arg3) { Mat4 spA8; Vec3f sp9C; Vec3s sp94; @@ -1579,8 +1583,8 @@ void func_80025DE8(Player *player, s8 playerId, s8 arg2, s8 arg3) { sp9C[1] = ((player->pos[1] - player->boundingBoxSize) + player->unk_108) + 0.1; sp9C[2] = player->pos[2] + (coss(-player->rotation[1]) * -1.5); sp94[0] = -0x00B6; - sp94[1] = player->unk_048[arg2]; - sp94[2] = player->unk_050[arg2]; + sp94[1] = player->unk_048[screenId]; + sp94[2] = player->unk_050[screenId]; mtxf_translate_rotate(spA8, sp9C, sp94); mtxf_scale2(spA8, gCharacterSize[player->characterId] * player->size); @@ -1600,29 +1604,29 @@ void func_80025DE8(Player *player, s8 playerId, s8 arg2, s8 arg3) { ); gDPSetRenderMode(gDisplayListHead++, AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); - gDPLoadTextureBlock(gDisplayListHead++, D_80164B08, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(gDisplayListHead++, sKartUpperTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3], 4, 0); gSPDisplayList(gDisplayListHead++, common_square_plain_render); - gDPLoadTextureBlock(gDisplayListHead++, D_80164B0C, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(gDisplayListHead++, sKartLowerTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3 + 4], 4, 0); gSPDisplayList(gDisplayListHead++, common_square_plain_render); gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); gMatrixEffectCount += 1; } -void player_ice_reflection_render(Player *player, s8 playerId, s8 arg2, s8 arg3) { +void render_player_ice_reflection(Player *player, s8 playerId, s8 screenId, s8 arg3) { Mat4 spA8; Vec3f sp9C; Vec3s sp94; sp94[0] = 0; - sp94[1] = player->unk_048[arg2]; - sp94[2] = player->unk_050[arg2] + 0x8000; // invert Y + sp94[1] = player->unk_048[screenId]; + sp94[2] = player->unk_050[screenId] + 0x8000; // invert Y sp9C[0] = player->pos[0]; sp9C[1] = player->unk_074 + (4.0f * player->size); sp9C[2] = player->pos[2]; - if (!(player->unk_002 & (4 << (arg2 * 4)))) { + if (!(player->unk_002 & (4 << (screenId * 4)))) { arg3 = 8; } else { arg3 = 0; @@ -1645,50 +1649,50 @@ void player_ice_reflection_render(Player *player, s8 playerId, s8 arg2, s8 arg3) (s16) player->unk_0C6 / 2 ); gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2); - gDPLoadTextureBlock(gDisplayListHead++, D_80164B08, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(gDisplayListHead++, sKartUpperTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3], 4, 0); gSPDisplayList(gDisplayListHead++, common_square_plain_render); - gDPLoadTextureBlock(gDisplayListHead++, D_80164B0C, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(gDisplayListHead++, sKartLowerTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3 + 4], 4, 0); gSPDisplayList(gDisplayListHead++, common_square_plain_render); gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); gMatrixEffectCount += 1; } -void player_render(Player *player, s8 playerId, s8 arg2) { - s32 pad[2]; +void render_player(Player *player, s8 playerId, s8 screenId) { + UNUSED s32 pad[2]; s32 temp_t1; s32 var_v1; OSMesg *sp34; - func_80026B4C(player, playerId, arg2, D_801651D0[arg2][playerId]); - if (!(player->unk_002 & (4 << (arg2 * 4)))) { + update_wheel_palette(player, playerId, screenId, D_801651D0[screenId][playerId]); + if (!(player->unk_002 & (4 << (screenId * 4)))) { var_v1 = 0; } else { var_v1 = 8; } - func_80023BF0(player, playerId, arg2, var_v1); - temp_t1 = 8 << (arg2 * 4); - if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->unk_110.unk3C[2] <= 50.0f) && (player->surfaceType != ICE)) { + func_80023BF0(player, playerId, screenId, var_v1); + temp_t1 = 8 << (screenId * 4); + if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->collision.surfaceDistance[2] <= 50.0f) && (player->surfaceType != ICE)) { if ((player->effects & BOO_EFFECT) == BOO_EFFECT) { - if (playerId == arg2) { - render_player_shadow(player, playerId, arg2); + if (playerId == screenId) { + render_player_shadow(player, playerId, screenId); } } else { - render_player_shadow(player, playerId, arg2); + render_player_shadow(player, playerId, screenId); } } if ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB) { - kart_render(player, playerId, arg2, var_v1); + render_kart(player, playerId, screenId, var_v1); } else { - ghost_render(player, playerId, arg2, var_v1); + render_ghost(player, playerId, screenId, var_v1); } - osRecvMesg(&gDmaMesgQueue, &sp34, OS_MESG_BLOCK); - if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->surfaceType == ICE) && ((player->unk_0CA & 1) != 1) && (player->unk_110.unk3C[2] <= 30.0f)) { - player_ice_reflection_render(player, playerId, arg2, var_v1); + osRecvMesg(&gDmaMesgQueue, (OSMesg *) &sp34, OS_MESG_BLOCK); + if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->surfaceType == ICE) && ((player->unk_0CA & 1) != 1) && (player->collision.surfaceDistance[2] <= 30.0f)) { + render_player_ice_reflection(player, playerId, screenId, var_v1); } if (player->boostPower >= 2.0f) { - func_80025DE8(player, playerId, arg2, var_v1); + func_80025DE8(player, playerId, screenId, var_v1); } } @@ -1704,7 +1708,7 @@ void func_80026A48(Player *player, s8 arg1) { } temp_f0 = ((player->unk_094 * (1.0f + player->unk_104)) / 18.0f) * 216.0f; - if ((temp_f0 <= 1.0f) || (gIsPlayerTripleBButtonCombo[arg1] == TRUE)) { + if ((temp_f0 <= 1.0f) || (gIsPlayerTripleBButtonCombo[arg1] == true)) { player->unk_240 = 0; } else { player->unk_240 += D_800DDE74[(s32)(temp_f0 / 12.0f)]; @@ -1716,14 +1720,14 @@ void func_80026A48(Player *player, s8 arg1) { // Properly define struct pointers, see buffers.h comment for more information. #ifdef AVOID_UB -#define D_802F1F80_WHEEL(a, b, c) &D_802F1F80[a][b][c].wheel_palette +#define D_802F1F80_WHEEL(a, b, c) &gPlayerPalettesList[a][b][c].wheel_palette #else -#define D_802F1F80_WHEEL(a, b, c) &D_802F1F80[a][b][(c * 0x100) + 0xC0] +#define D_802F1F80_WHEEL(a, b, c) &gPlayerPalettesList[a][b][(c * 0x100) + 0xC0] #endif -void func_80026B4C(Player *player, s8 playerId, s8 arg2, s8 arg3) { - s16 temp_t0 = D_801650D0[arg2][playerId]; - s16 temp_t1 = D_80165110[arg2][playerId]; +void update_wheel_palette(Player *player, s8 playerId, s8 screenId, s8 arg3) { + s16 frameId = gLastAnimFrameSelector[screenId][playerId]; + s16 groupId = gLastAnimGroupSelector[screenId][playerId]; s16 temp_t2 = player->unk_240; s16 temp_num = 0x40; // setting this as a variable gets rid of regalloc @@ -1732,16 +1736,16 @@ void func_80026B4C(Player *player, s8 playerId, s8 arg2, s8 arg3) { && ((player->effects & 0x20000) != 0x20000) && ((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) && ((player->unk_044 & 0x800) == 0)) { - if (temp_t0 <= 20) { - func_80027C74(player, D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80); + if (frameId <= 20) { + load_player_data_non_blocking(player, (s32) (gKartWheels0[player->characterId][groupId] + (frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } else { - func_80027C74(player, D_800DDE54[player->characterId][temp_t1] + (temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600, D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80); + load_player_data_non_blocking(player, (s32) (gKartWheels1[player->characterId][groupId] + (frameId - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } } else { - if (temp_t0 == 0) { - func_80027C74(player, D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80); + if (frameId == 0) { + load_player_data_non_blocking(player, (s32) (gKartWheels0[player->characterId][groupId] + (frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } else { - func_80027C74(player, D_800DDE54[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80); + load_player_data_non_blocking(player, (s32) (gKartWheels1[player->characterId][groupId] + (frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } } } else { @@ -1749,16 +1753,16 @@ void func_80026B4C(Player *player, s8 playerId, s8 arg2, s8 arg3) { && ((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) && ((player->effects & 0x20000) != 0x20000) && ((player->unk_044 & 0x800) == 0)) { - if (temp_t0 <= 20) { - func_80027C74(player, D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80); + if (frameId <= 20) { + load_player_data_non_blocking(player, (s32) (gKartWheels0[player->characterId][groupId] + (frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } else { - func_80027C74(player, D_800DDE54[player->characterId][temp_t1] + (temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600, D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80); + load_player_data_non_blocking(player, (s32) (gKartWheels1[player->characterId][groupId] + (frameId - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } } else { - if (temp_t0 == 0) { - func_80027C74(player, D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80); + if (frameId == 0) { + load_player_data_non_blocking(player, (s32) (gKartWheels0[player->characterId][groupId] + (frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } else { - func_80027C74(player, D_800DDE54[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80); + load_player_data_non_blocking(player, (s32) (gKartWheels1[player->characterId][groupId] + (frameId * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80); } } } diff --git a/src/render_player.h b/src/render_player.h index f1663633d..f3e1000e7 100644 --- a/src/render_player.h +++ b/src/render_player.h @@ -1,9 +1,9 @@ #ifndef CODE_8001F980_H #define CODE_8001F980_H -#include "types.h" -#include "common_structs.h" +#include #include "buffers.h" +#include "camera.h" #define SOME_TEXTURE_POINTER_MATH 0x800 @@ -14,11 +14,11 @@ void func_8001F9E4(Player*, Camera*, s8); u16 check_player_camera_collision(Player*, Camera*, f32, f32); u16 func_8001FD78(Player*, f32, f32, f32); void init_render_player(Player*, Camera*, s8, s8); -void func_80020524(void); -void func_8002088C(void); -void func_80020BF4(void); -void func_80020F1C(void); -void try_render_player(Player*, s8, s8); +void load_kart_texture_and_render_kart_particle_on_screen_one(void); +void load_kart_texture_and_render_kart_particle_on_screen_two(void); +void load_kart_texture_and_render_kart_particle_on_screen_three(void); +void load_kart_texture_and_render_kart_particle_on_screen_four(void); +void try_rendering_player(Player*, s8, s8); void render_players_on_screen_one(void); void render_players_on_screen_two(void); void render_players_on_screen_three(void); @@ -32,7 +32,7 @@ void func_80021F50(Mat4, Vec3f); void mtxf_scale2(Mat4, f32); void failed_fixed_point_matrix_conversion(Mtx*, Mat4); void convert_to_fixed_point_matrix(Mtx*, Mat4); -s32 adjust_angle(s16*, s16, s16); +bool adjust_angle(s16*, s16, s16); void move_s32_towards(s32*, s32, f32); void move_f32_towards(f32*, f32, f32); void move_s16_towards(s16*, s16, f32); @@ -48,19 +48,19 @@ void func_80022DB4(Player*, s8); void func_80022E84(Player*, s8, s8, s8); void change_player_color_effect_rgb(Player*, s8, s32, f32); void change_player_color_effect_cmy(Player*, s8, s32, f32); -s32 is_player_under_light_luigi_raceway(Player*, s8); +bool is_player_under_light_luigi_raceway(Player*, s8); void render_light_environment_on_player(Player*, s8); void func_800235AC(Player*, s8); void func_80023BF0(Player*, s8, s8, s8); void render_player_shadow(Player*, s8, s8); void render_player_shadow_credits(Player*, s8, s8); -void kart_render(Player*, s8, s8, s8); -void ghost_render(Player*, s8, s8, s8); +void render_kart(Player*, s8, s8, s8); +void render_ghost(Player*, s8, s8, s8); void func_80025DE8(Player*, s8, s8, s8); -void player_ice_reflection_render(Player*, s8, s8, s8); -void player_render(Player*, s8, s8); +void render_player_ice_reflection(Player*, s8, s8, s8); +void render_player(Player*, s8, s8); void func_80026A48(Player*, s8); -void func_80026B4C(Player*, s8, s8, s8); +void update_wheel_palette(Player*, s8, s8, s8); void func_80030A34(Player*); void func_8002701C(void); void func_80027024(s32, s32, s32); @@ -68,14 +68,14 @@ void func_80027024(s32, s32, s32); /* This is where I'd put my static data, if I had any */ extern struct_D_802F1F80 *gPlayerPalette; -extern u8 *D_80164B08; -extern u8 *D_80164B0C; +extern u8 *sKartUpperTexture; +extern u8 *sKartLowerTexture; extern s32 D_80164A28; -extern s16 D_80164AB0[]; +extern s16 gPlayersToRenderPlayerId[]; extern s16 D_80164ABE[]; -extern s16 D_80164AC0[]; -extern Player *D_80164AD0[]; +extern s16 gPlayersToRenderScreenId[]; +extern Player *gPlayersToRenderPlayer[]; extern s16 gMatrixEffectCount; extern u16 gPlayerRedEffect[]; extern u16 gPlayerGreenEffect[]; @@ -129,8 +129,8 @@ extern u8 **gKartWarioWheels0[]; extern u8 **gKartWarioWheels1[]; -extern u16 **D_800DDE34[]; -extern u16 **D_800DDE54[]; +extern u16 **gKartWheels0[]; +extern u16 **gKartWheels1[]; // These all come the kart data stuff, they should end up in their own inc.c eventually @@ -281,8 +281,8 @@ extern u8 *gKartWario189Wheel0[]; extern s16 D_80165020[40]; extern Vec3f D_80165070[8]; -extern s16 D_801650D0[4][8]; -extern s16 D_80165110[4][8]; +extern s16 gLastAnimFrameSelector[4][8]; +extern s16 gLastAnimGroupSelector[4][8]; extern s16 D_80165150[4][8]; extern s16 D_80165190[4][8]; extern s16 D_801651D0[4][8]; diff --git a/src/save.c b/src/save.c index 6392764d3..fcea25270 100644 --- a/src/save.c +++ b/src/save.c @@ -144,7 +144,7 @@ void load_save_data(void) { for (i = 0; i < 16; i++) { func_800B4A9C(i); } - + validate_save_data(); gSoundMode = gSaveData.main.soundMode; @@ -165,7 +165,7 @@ void func_800B4A9C(s32 course) { .unknownBytes[0] = 1; } sp24 = &gSaveData.allCourseTimeTrialRecords.cupRecords[course / 4].courseRecords[course % 4]; - + func_800B4FB0(course); if(sp24) {} @@ -209,7 +209,7 @@ void validate_save_data(void) { Stuff *backup = &gSaveData.backup; if (main->checksum[1] != (compute_save_data_checksum_1()) || (main->checksum[2] != compute_save_data_checksum_2())) { reset_save_data_grand_prix_points_and_sound_mode(); - + if (validate_save_data_checksum_backup() == 0) { for (cup_index = 0; cup_index < 4; cup_index++) { main->grandPrixPoints[cup_index] = backup->grandPrixPoints[cup_index]; @@ -385,7 +385,7 @@ void func_800B536C(s32 arg0) { if (arg0 >= 0) { points = &gSaveData.main.grandPrixPoints[gCCSelection]; - + tmp = func_800B54EC(gCupSelection, *points); tmp2 = 3 - arg0; if ((arg0 < 3) && (tmp < (3-arg0))) { @@ -411,7 +411,7 @@ void func_800B5404(s32 arg0, s32 arg1) if ((arg0 < 3) && (temp < (temp_a0 = 3 - arg0))) { *points = func_800B5508(temp2, *points, temp_a0); - + write_save_data_grand_prix_points_and_sound_mode(); update_save_data_backup(); } @@ -499,7 +499,7 @@ void func_800B559C(s32 arg0) { * odd. It calculates a checksum for 51 bytes in 17 byte chunks, but that doesn't line * up with anything in the save data cleanly. At that byte count it would get the 48 bytes * for the records plus 3 of the unknown bytes. -* +* * But only unknown bytes 7 and 8 ever get set, so why the extra 3, and why in chunks of 17? **/ s32 func_800B578C(s32 arg0) { @@ -595,7 +595,7 @@ s32 check_for_controller_pak(s32 controller) { } osPfsIsPlug(&gSIEventMesgQueue, &controllerBitpattern); - + if ((controllerBitpattern & (1 << controller)) != 0) { return PAK; } @@ -618,8 +618,8 @@ s32 controller_pak_1_status(void) { gControllerPak1State = BAD; break; } - } - + } + if (!gControllerPak1State) { s32 errorCode; if (check_for_controller_pak(CONTROLLER_1) == NO_PAK) { @@ -639,7 +639,7 @@ s32 controller_pak_1_status(void) { return PFS_PAK_BAD_READ; } } - + gControllerPak1State = OK; if (osPfsFindFile(&gControllerPak1FileHandle, gCompanyCode, gGameCode, (u8 *) gGameName, (u8 *) gExtCode, &gControllerPak1FileNote) == PFS_NO_ERROR) { return PFS_NO_ERROR; @@ -663,13 +663,13 @@ s32 controller_pak_1_status(void) { } // gives status info about controller pak insterted in controller 2 -s32 controller_pak_2_status(void) { +s32 controller_pak_2_status(void) { s32 stateBorrow = sControllerPak2State; - + if (stateBorrow) { switch (osPfsFindFile(&gControllerPak2FileHandle, gCompanyCode, gGameCode, (u8 *) gGameName, (u8 *) gExtCode, &gControllerPak2FileNote)) { case PFS_NO_ERROR: - return PFS_NO_ERROR; + return PFS_NO_ERROR; case PFS_ERR_INVALID: return PFS_INVALID_DATA; default: @@ -683,7 +683,7 @@ s32 controller_pak_2_status(void) { if (check_for_controller_pak(CONTROLLER_2) == NO_PAK) { return PFS_NO_PAK_INSERTED; } - + errorCode = osPfsInit(&gSIEventMesgQueue, &gControllerPak2FileHandle, CONTROLLER_2); if (errorCode) { switch (errorCode) { @@ -699,7 +699,7 @@ s32 controller_pak_2_status(void) { } sControllerPak2State = OK; - + switch (osPfsFindFile(&gControllerPak2FileHandle, gCompanyCode, gGameCode, (u8 *) gGameName, (u8 *) gExtCode, &gControllerPak2FileNote)) { case PFS_NO_ERROR: return PFS_NO_ERROR; @@ -765,7 +765,7 @@ u8 func_800B60E8(s32 page) { s32 i; u32 checksum = 0; u8 *addr; - + for (i = 0, addr = (u8*) &((u8*)D_800DC714)[page * 256]; i < 256; i++) { checksum += (*addr++ * (page + 1) + i); } @@ -847,7 +847,7 @@ s32 func_800B63F0(s32 arg0) { func_800051C4(); D_80162DD6 = 1; func_80005AE8(gPlayerThree); - + phi_s3 = 0; if (((gCupSelection * 4) + gCupCourseSelection) != D_8018EE10[arg0].courseIndex) { phi_s3 = 2; @@ -859,14 +859,14 @@ s32 func_800B63F0(s32 arg0) { } else { temp_s0 = 0; phi_s1 = (u8*) &D_8018EE10[arg0]; - + while (temp_s0 < 0x3C) { if (phi_s1[7] != func_800B60E8(temp_s0)) { phi_s3 = 1; break; } - + ++phi_s1; ++temp_s0; } @@ -925,7 +925,7 @@ s32 func_800B65F4(s32 arg0, s32 arg1) { } writeStatus = osPfsReadWriteFile(&gControllerPak2FileHandle, gControllerPak2FileNote, 0U, (arg0 * 0x3C00) + 0x100, 0x00003C00, (u8 *) D_800DC714); if (writeStatus == 0) { - temp_s3 = &D_8018D9C0->arr[arg0]; + temp_s3 = &((struct_8018EE10_entry*)D_8018D9C0)[arg0]; for (i = 0; i < 0x3C; i++) { if (temp_s3->unk_07[i] != func_800B60E8(i)) { temp_s3->ghostDataSaved = 0; @@ -943,7 +943,7 @@ void func_800B6708(void) { s32 temp_s0; osPfsReadWriteFile(&gControllerPak1FileHandle, gControllerPak1FileNote, PFS_READ, 0, 0x100 /* 2*sizeof(struct_8018EE10_entry) ? */, (u8*) &D_8018EE10); - + for (temp_s0 = 0; temp_s0 < 2; ++temp_s0) { if (D_8018EE10[temp_s0].checksum != func_800B6828(temp_s0)) { D_8018EE10[temp_s0].ghostDataSaved = 0; @@ -954,7 +954,7 @@ void func_800B6708(void) { void func_800B6798(void) { s32 temp_s0; u8* tmp; - + tmp = (u8*) D_8018D9C0; osPfsReadWriteFile(&gControllerPak2FileHandle, gControllerPak2FileNote, PFS_READ, 0, 0x100 /* 2*sizeof(struct_8018EE10_entry) ? */, tmp); @@ -986,7 +986,7 @@ u8 func_800B68F4(s32 arg0) { s32 i; checksum = 0; for (i = 0; i < 0x43; i++) { - u8 *addr = (u8 *) (&D_8018D9C0[arg0]); + u8 *addr = &((u8*)D_8018D9C0)[arg0]; checksum += addr[i] * multiplier + i; } return checksum; @@ -995,30 +995,20 @@ u8 func_800B68F4(s32 arg0) { GLOBAL_ASM("asm/non_matchings/save/func_800B68F4.s") #endif -#ifdef NON_MATCHING -// Stack nonsense. As it stands now there's too much on the stack, but everything else is fine -// But if you try to reduce the stack you get bigger issues. No idea what's going on s32 func_800B69BC(s32 arg0) { s32 i; - s32 offset; - struct_8018EE10_entry *plz; + struct_8018EE10_entry *plz = &D_8018EE10[arg0]; - offset = sizeof(struct_8018EE10_entry); - offset *= arg0; - - plz = &D_8018EE10[arg0]; - plz->ghostDataSaved = FALSE; + plz->ghostDataSaved = false; plz->courseIndex = 0; plz->characterId = 0; - for (i = 0; i < 60; i++) { + for (i = 0; i < sizeof(plz->unk_07); i++) { plz->unk_07[i] = i; } plz->checksum = func_800B6828(arg0); - return osPfsReadWriteFile(&gControllerPak1FileHandle, gControllerPak1FileNote, PFS_WRITE, offset, sizeof(struct_8018EE10_entry), (u8 *)plz); + + return osPfsReadWriteFile(&gControllerPak1FileHandle, gControllerPak1FileNote, PFS_WRITE, (s32) sizeof(struct_8018EE10_entry) * arg0, sizeof(struct_8018EE10_entry), (u8 *)plz); } -#else -GLOBAL_ASM("asm/non_matchings/save/func_800B69BC.s") -#endif s32 func_800B6A68(void) { UNUSED s32 pad; diff --git a/src/save.h b/src/save.h index c68c2a806..a429bc4d8 100644 --- a/src/save.h +++ b/src/save.h @@ -1,9 +1,8 @@ #ifndef SAVE_H #define SAVE_H -#include "PR/os.h" -#include "common_structs.h" -#include +#include +#include /* define symbols */ diff --git a/src/spawn_players.c b/src/spawn_players.c index 2c3719357..76b257157 100644 --- a/src/spawn_players.c +++ b/src/spawn_players.c @@ -1,4 +1,5 @@ #include +#include #include "spawn_players.h" #include "code_800029B0.h" @@ -22,6 +23,7 @@ #include "render_player.h" #include "code_80091750.h" #include "effects.h" +#include "decode.h" f32 D_80165210[8]; f32 D_80165230[8]; @@ -108,7 +110,7 @@ void spawn_player(Player *player, s8 playerIndex, f32 startingRow, f32 startingC } player->pos[0] = startingRow; - ret = func_802AE1C0(startingRow, arg4 + 50.0f, startingColumn) + player->boundingBoxSize; + ret = spawn_actor_on_surface(startingRow, arg4 + 50.0f, startingColumn) + player->boundingBoxSize; player->pos[2] = startingColumn; player->pos[1] = ret; player->copy_rotation_x = startingRow; @@ -248,14 +250,14 @@ void spawn_player(Player *player, s8 playerIndex, f32 startingRow, f32 startingC idx = playerIndex; - D_801650D0[0][idx] = 0; - D_801650D0[1][idx] = 0; - D_801650D0[2][idx] = 0; - D_801650D0[3][idx] = 0; - D_80165110[0][idx] = 0; - D_80165110[1][idx] = 0; - D_80165110[2][idx] = 0; - D_80165110[3][idx] = 0; + gLastAnimFrameSelector[0][idx] = 0; + gLastAnimFrameSelector[1][idx] = 0; + gLastAnimFrameSelector[2][idx] = 0; + gLastAnimFrameSelector[3][idx] = 0; + gLastAnimGroupSelector[0][idx] = 0; + gLastAnimGroupSelector[1][idx] = 0; + gLastAnimGroupSelector[2][idx] = 0; + gLastAnimGroupSelector[3][idx] = 0; D_80165190[0][idx] = 0; D_80165190[1][idx] = 0; D_80165190[2][idx] = 0; @@ -267,11 +269,11 @@ void spawn_player(Player *player, s8 playerIndex, f32 startingRow, f32 startingC gFrameSinceLastACombo[idx] = 0; gCountASwitch[idx] = 0; - gIsPlayerTripleAButtonCombo[idx] = FALSE; + gIsPlayerTripleAButtonCombo[idx] = false; gTimerBoostTripleACombo[idx] = 0; gFrameSinceLastBCombo[idx] = 0; gCountBChangement[idx] = 0; - gIsPlayerTripleBButtonCombo[idx] = FALSE; + gIsPlayerTripleBButtonCombo[idx] = false; gTimerBoostTripleBCombo[playerIndex] = 0; D_8018D900[0] = 0; @@ -289,66 +291,66 @@ void spawn_player(Player *player, s8 playerIndex, f32 startingRow, f32 startingC D_801654C0[playerIndex] = 0; D_80165340 = 0; - player->boundingBoxCorners[FRONT_LEFT_TYRE].surfaceType = 0; - player->boundingBoxCorners[FRONT_RIGHT_TYRE].surfaceType = 0; - player->boundingBoxCorners[BACK_LEFT_TYRE].surfaceType = 0; - player->boundingBoxCorners[BACK_RIGHT_TYRE].surfaceType = 0; + player->tyres[FRONT_LEFT].surfaceType = 0; + player->tyres[FRONT_RIGHT].surfaceType = 0; + player->tyres[BACK_LEFT].surfaceType = 0; + player->tyres[BACK_RIGHT].surfaceType = 0; - player->boundingBoxCorners[FRONT_LEFT_TYRE].surfaceFlags = 0; - player->boundingBoxCorners[FRONT_RIGHT_TYRE].surfaceFlags = 0; - player->boundingBoxCorners[BACK_LEFT_TYRE].surfaceFlags = 0; - player->boundingBoxCorners[BACK_RIGHT_TYRE].surfaceFlags = 0; + player->tyres[FRONT_LEFT].surfaceFlags = 0; + player->tyres[FRONT_RIGHT].surfaceFlags = 0; + player->tyres[BACK_LEFT].surfaceFlags = 0; + player->tyres[BACK_RIGHT].surfaceFlags = 0; - player->boundingBoxCorners[FRONT_LEFT_TYRE].surfaceMapIndex = 0; - player->boundingBoxCorners[FRONT_RIGHT_TYRE].surfaceMapIndex = 0; - player->boundingBoxCorners[BACK_LEFT_TYRE].surfaceMapIndex = 0; - player->boundingBoxCorners[BACK_RIGHT_TYRE].surfaceMapIndex = 0; + player->tyres[FRONT_LEFT].collisionMeshIndex = 0; + player->tyres[FRONT_RIGHT].collisionMeshIndex = 0; + player->tyres[BACK_LEFT].collisionMeshIndex = 0; + player->tyres[BACK_RIGHT].collisionMeshIndex = 0; - player->boundingBoxCorners[FRONT_RIGHT_TYRE].unk_14 = 0; - player->boundingBoxCorners[FRONT_LEFT_TYRE].unk_14 = 0; - player->boundingBoxCorners[BACK_LEFT_TYRE].unk_14 = 0; - player->boundingBoxCorners[BACK_RIGHT_TYRE].unk_14 = 0; + player->tyres[FRONT_RIGHT].unk_14 = 0; + player->tyres[FRONT_LEFT].unk_14 = 0; + player->tyres[BACK_LEFT].unk_14 = 0; + player->tyres[BACK_RIGHT].unk_14 = 0; - player->unk_110.unk30 = 0; - player->unk_110.unk32 = 0; - player->unk_110.unk34 = 0; - player->unk_110.unk36 = 0; - player->unk_110.unk38 = 0; - player->unk_110.unk3A = 0; + player->collision.unk30 = 0; + player->collision.unk32 = 0; + player->collision.unk34 = 0; + player->collision.meshIndexYX = 0; + player->collision.meshIndexZY = 0; + player->collision.meshIndexZX = 0; - player->boundingBoxCorners[FRONT_LEFT_TYRE].cornerPos[0] = 0.0f; - player->boundingBoxCorners[FRONT_LEFT_TYRE].cornerPos[1] = 0.0f; - player->boundingBoxCorners[FRONT_LEFT_TYRE].cornerPos[2] = 0.0f; + player->tyres[FRONT_LEFT].pos[0] = 0.0f; + player->tyres[FRONT_LEFT].pos[1] = 0.0f; + player->tyres[FRONT_LEFT].pos[2] = 0.0f; - player->boundingBoxCorners[FRONT_RIGHT_TYRE].cornerPos[0] = 0.0f; - player->boundingBoxCorners[FRONT_RIGHT_TYRE].cornerPos[1] = 0.0f; - player->boundingBoxCorners[FRONT_RIGHT_TYRE].cornerPos[2] = 0.0f; + player->tyres[FRONT_RIGHT].pos[0] = 0.0f; + player->tyres[FRONT_RIGHT].pos[1] = 0.0f; + player->tyres[FRONT_RIGHT].pos[2] = 0.0f; - player->boundingBoxCorners[BACK_LEFT_TYRE].cornerPos[0] = 0.0f; - player->boundingBoxCorners[BACK_LEFT_TYRE].cornerPos[1] = 0.0f; - player->boundingBoxCorners[BACK_LEFT_TYRE].cornerPos[2] = 0.0f; + player->tyres[BACK_LEFT].pos[0] = 0.0f; + player->tyres[BACK_LEFT].pos[1] = 0.0f; + player->tyres[BACK_LEFT].pos[2] = 0.0f; - player->boundingBoxCorners[BACK_RIGHT_TYRE].cornerPos[0] = 0.0f; - player->boundingBoxCorners[BACK_RIGHT_TYRE].cornerPos[1] = 0.0f; - player->boundingBoxCorners[BACK_RIGHT_TYRE].cornerPos[2] = 0.0f; + player->tyres[BACK_RIGHT].pos[0] = 0.0f; + player->tyres[BACK_RIGHT].pos[1] = 0.0f; + player->tyres[BACK_RIGHT].pos[2] = 0.0f; - player->boundingBoxCorners[ FRONT_LEFT_TYRE].cornerGroundY = 0.0f; - player->boundingBoxCorners[FRONT_RIGHT_TYRE].cornerGroundY = 0.0f; - player->boundingBoxCorners[ BACK_LEFT_TYRE].cornerGroundY = 0.0f; - player->boundingBoxCorners[ BACK_RIGHT_TYRE].cornerGroundY = 0.0f; + player->tyres[FRONT_LEFT].baseHeight = 0.0f; + player->tyres[FRONT_RIGHT].baseHeight = 0.0f; + player->tyres[BACK_LEFT].baseHeight = 0.0f; + player->tyres[BACK_RIGHT].baseHeight = 0.0f; - player->unk_110.unk3C[0] = 0.0f; - player->unk_110.unk3C[1] = 0.0f; - player->unk_110.unk3C[2] = 0.0f; - player->unk_110.unk48[0] = 0.0f; - player->unk_110.unk48[1] = 0.0f; - player->unk_110.unk48[2] = 0.0f; - player->unk_110.unk54[0] = 0.0f; - player->unk_110.unk54[1] = 0.0f; - player->unk_110.unk54[2] = 0.0f; - player->unk_110.orientationVector[0] = 0.0f; - player->unk_110.orientationVector[1] = 0.0f; - player->unk_110.orientationVector[2] = 0.0f; + player->collision.surfaceDistance[0] = 0.0f; + player->collision.surfaceDistance[1] = 0.0f; + player->collision.surfaceDistance[2] = 0.0f; + player->collision.unk48[0] = 0.0f; + player->collision.unk48[1] = 0.0f; + player->collision.unk48[2] = 0.0f; + player->collision.unk54[0] = 0.0f; + player->collision.unk54[1] = 0.0f; + player->collision.unk54[2] = 0.0f; + player->collision.orientationVector[0] = 0.0f; + player->collision.orientationVector[1] = 0.0f; + player->collision.orientationVector[2] = 0.0f; D_80165300[playerIndex] = 0; D_8018CE10[playerIndex].unk_04[0] = 0.0f; @@ -454,7 +456,7 @@ void func_80039AE4(void) { void func_80039DA4(void) { s32 i; - + s32 sp2C[] = { 7, 6, 5, 4, 3, 2, 1, 0, @@ -913,7 +915,7 @@ void func_8003C0F0(void) { case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: temp = 5; - if (1); + if (1) {}; D_80165210[0] = 0; D_80165210[1] = 0; D_80165230[1] = -200.0f; @@ -945,7 +947,7 @@ void func_8003C0F0(void) { case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: temp = 0x1E0; - if (1); + if (1) {}; D_80165210[0] = 0.0f; D_80165210[1] = 0.0f; D_80165230[1] = -400.0f; @@ -977,7 +979,7 @@ void func_8003C0F0(void) { case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: temp = 0x37; - if (1); + if (1) {}; D_80165210[0] = 0.0f; D_80165210[1] = 0.0f; D_80165230[1] = -160.0f; @@ -1009,7 +1011,7 @@ void func_8003C0F0(void) { case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: temp = 0xC8; - if (1); + if (1) {}; D_80165210[0] = 0.0f; D_80165210[1] = 0.0f; D_80165230[1] = -575.0f; @@ -1068,29 +1070,29 @@ void func_8003CD78(void) { func_8003BE30(); } -void func_8003CD98(Player *player, Camera *camera, s8 playerId, s8 arg3) { +void func_8003CD98(Player *player, Camera *camera, s8 playerId, s8 screenId) { if (player->type & PLAYER_EXISTS) { - if (arg3 == 0) { - func_8002D268(player, camera, arg3, playerId); + if (screenId == 0) { + func_8002D268(player, camera, screenId, playerId); } - func_8002934C(player, camera, arg3, playerId); - if ((arg3 == 0) || (arg3 == 1)) { - load_kart_palette(player, playerId, arg3, 0); - load_kart_palette(player, playerId, arg3, 1); - load_kart_texture(player, playerId, arg3, arg3, 0); - mio0decode((u8 *) &D_802DFB80[0][arg3][playerId], (u8 *) &D_802BFB80.arraySize8[0][arg3][playerId]); + func_8002934C(player, camera, screenId, playerId); + if ((screenId == 0) || (screenId == 1)) { + load_kart_palette(player, playerId, screenId, 0); + load_kart_palette(player, playerId, screenId, 1); + load_kart_texture(player, playerId, screenId, screenId, 0); + mio0decode((u8 *) &gEncodedKartTexture[0][screenId][playerId], (u8 *) &D_802BFB80.arraySize8[0][screenId][playerId]); } else { - load_kart_palette(player, playerId, arg3, 0); - load_kart_palette(player, playerId, arg3, 1); - load_kart_texture(player, (s8) (playerId + 4), arg3, (s8) (arg3 - 2), 0); - mio0decode((u8 *) &D_802DFB80[0][arg3 - 2][playerId + 4], (u8 *) &D_802BFB80.arraySize8[0][arg3 - 2][playerId + 4]); + load_kart_palette(player, playerId, screenId, 0); + load_kart_palette(player, playerId, screenId, 1); + load_kart_texture(player, (s8) (playerId + 4), screenId, (s8) (screenId - 2), 0); + mio0decode((u8 *) &gEncodedKartTexture[0][screenId - 2][playerId + 4], (u8 *) &D_802BFB80.arraySize8[0][screenId - 2][playerId + 4]); } - D_801650D0[arg3][playerId] = player->animFrameSelector[arg3]; - D_80165110[arg3][playerId] = player->animGroupSelector[arg3]; - D_80165150[arg3][playerId] = player->unk_0A8; - D_801651D0[arg3][playerId] = 0; - player_render(player, playerId, arg3); + gLastAnimFrameSelector[screenId][playerId] = player->animFrameSelector[screenId]; + gLastAnimGroupSelector[screenId][playerId] = player->animGroupSelector[screenId]; + D_80165150[screenId][playerId] = player->unk_0A8; + D_801651D0[screenId][playerId] = 0; + render_player(player, playerId, screenId); } } diff --git a/src/spawn_players.h b/src/spawn_players.h index 504e2b057..baec17a9a 100644 --- a/src/spawn_players.h +++ b/src/spawn_players.h @@ -2,7 +2,7 @@ #define SPAWN_PLAYERS_H #include "camera.h" -#include "common_structs.h" +#include /* Function Prototypes */ /** @cond */ @@ -38,17 +38,17 @@ extern s16 gCopyNearestWaypointByPlayerId[]; extern s16 D_80165330[]; extern s16 D_80165340; extern Player *D_801653C0[]; -extern s32 gPlayerIsThrottleActive[]; +extern bool gPlayerIsThrottleActive[]; extern s32 D_80165400[]; extern s32 gFrameSinceLastACombo[]; extern s32 gCountASwitch[]; extern bool gIsPlayerTripleAButtonCombo[]; extern s32 gTimerBoostTripleACombo[]; -extern s32 gPlayerIsBrakeActive[]; +extern bool gPlayerIsBrakeActive[]; extern s32 D_801654C0[]; extern s32 gFrameSinceLastBCombo[]; extern s32 gCountBChangement[]; -extern s32 gIsPlayerTripleBButtonCombo[]; +extern bool gIsPlayerTripleBButtonCombo[]; extern s32 gTimerBoostTripleBCombo[]; extern s16 chooseKartAIPlayers[]; extern s16 D_8016556E; diff --git a/src/staff_ghosts.c b/src/staff_ghosts.c index ff52c60b3..08f478a41 100644 --- a/src/staff_ghosts.c +++ b/src/staff_ghosts.c @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include #include @@ -12,6 +12,7 @@ #include "code_8006E9C0.h" #include "code_80091750.h" #include "code_80057C60.h" +#include "kart_dma.h" extern s32 mio0encode(s32 input, s32, s32); extern s32 func_80040174(void *, s32, s32); @@ -61,8 +62,6 @@ s32 D_80162E00; u32 *D_800DC710 = (u32 *) &D_802BFB80.arraySize8[0][2][3]; u32 *D_800DC714 = (u32 *) &D_802BFB80.arraySize8[1][1][3]; -extern u8 _kart_texturesSegmentRomStart; - extern s32 gLapCountByPlayerId[]; extern StaffGhost *d_mario_raceway_staff_ghost; @@ -72,7 +71,7 @@ extern StaffGhost *d_luigi_raceway_staff_ghost; void func_80004EF0(void) { D_80162DA4 = (u32 *) &D_802BFB80.arraySize8[0][2][3]; osInvalDCache(&D_80162DA4[0], 0x4000); - osPiStartDma(&gDmaIoMesg, 0, 0, (uintptr_t) ((D_80162DC4 & 0xFFFFFF) + &_kart_texturesSegmentRomStart), D_80162DA4, 0x4000, &gDmaMesgQueue); + osPiStartDma(&gDmaIoMesg, 0, 0, (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(D_80162DC4)], D_80162DA4, 0x4000, &gDmaMesgQueue); osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); D_80162D9C = (*D_80162DA4 & 0xFF0000); D_80162DA0 = 0; @@ -413,8 +412,8 @@ void func_8000599C(void) { u32 temp_t0; u32 temp_a0_2; - if (((D_80162DB8 >= 0x1000) || - ((gPlayerOne->unk_0CA & 2) != 0)) || + if (((D_80162DB8 >= 0x1000) || + ((gPlayerOne->unk_0CA & 2) != 0)) || ((gPlayerOne->unk_0CA & 8) != 0)) { D_80162DF8 = 1; return; @@ -459,7 +458,7 @@ void func_8000599C(void) { temp_t0 += 0x10000; D_80162DBC[D_80162DB8] = temp_t0; - + } } else { D_80162DB8++; D_80162DBC[D_80162DB8] = phi_a3; diff --git a/src/staff_ghosts.h b/src/staff_ghosts.h index 3ff61cda6..c48e28563 100644 --- a/src/staff_ghosts.h +++ b/src/staff_ghosts.h @@ -1,9 +1,8 @@ #ifndef STAFF_GHOSTS_H #define STAFF_GHOSTS_H -#include "PR/os.h" -#include "common_structs.h" -#include +#include +#include void func_80005B18(void); void func_80004EF0(void); diff --git a/src/textures.h b/src/textures.h index 079c8703e..5c02dcbd3 100644 --- a/src/textures.h +++ b/src/textures.h @@ -1,7 +1,7 @@ #ifndef TEXTURES_H #define TEXTURES_H -#include "PR/ultratypes.h" +#include /** * @brief struct for a texture use in menu mainly diff --git a/src/update_objects.c b/src/update_objects.c index 02038fdc7..9e9b363f4 100644 --- a/src/update_objects.c +++ b/src/update_objects.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "update_objects.h" #include "main.h" @@ -33,9 +34,10 @@ #include "menus.h" #include "data/other_textures.h" #include "data/some_data.h" +#include "memory.h" //! @todo unused? -f32 D_800E43B0[] = { +f32 D_800E43B0[] = { 65536.0, 0.0, 1.0, 0.0, 0.0, 65536.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, @@ -67,7 +69,7 @@ Vtx D_800E44B0[] = { {{{ -24, 20, 0}, 0, { 3008, 2496}, { 0xFF, 0xFF, 0xFF, 0xFF}}}, }; -u8 *gItemWindowTLUTs[] = { +u16 *gItemWindowTLUTs[] = { common_tlut_item_window_none, common_tlut_item_window_banana, common_tlut_item_window_banana_bunch, common_tlut_item_window_green_shell, common_tlut_item_window_triple_green_shell, common_tlut_item_window_red_shell, common_tlut_item_window_triple_red_shell, common_tlut_item_window_blue_shell, common_tlut_item_window_thunder_bolt, common_tlut_item_window_fake_item_box, common_tlut_item_window_star, common_tlut_item_window_boo, @@ -81,11 +83,11 @@ u8 *gItemWindowTextures[] = { common_texture_item_window_mushroom, common_texture_item_window_double_mushroom, common_texture_item_window_triple_mushroom, common_texture_item_window_super_mushroom }; -u8 *gHudLapTextures[] = { +u16 *gHudLapTextures[] = { common_texture_hud_lap_1_on_3, common_texture_hud_lap_2_on_3, common_texture_hud_lap_3_on_3 }; -u8 *gPortraitTLUTs[] = { +u16 *gPortraitTLUTs[] = { common_tlut_portrait_mario, common_tlut_portrait_luigi, common_tlut_portrait_yoshi, common_tlut_portrait_toad, common_tlut_portrait_donkey_kong, common_tlut_portrait_wario, common_tlut_portrait_peach, common_tlut_portrait_bowser }; @@ -100,16 +102,14 @@ s32 find_unused_obj_index(s32* arg0) { s32 temp_v1; temp_v1 = objectListSize; - temp_v0 = 0; do - { + temp_v0 = 0; do { // this two SHOULD be on the same line ++temp_v1; ++temp_v0; - if (temp_v1 == 0x226) { + if (temp_v1 == OBJECT_LIST_SIZE) { temp_v1 = 0; } - - } while ((gObjectList[temp_v1].unk_0CA != 0) && (temp_v0 != 0x226)); + } while ((gObjectList[temp_v1].unk_0CA != 0) && (temp_v0 != OBJECT_LIST_SIZE)); gObjectList[temp_v1].unk_0CA = 1; @@ -209,9 +209,9 @@ UNUSED void func_80072214(s32 objectIndex, s32 arg1) { } bool is_obj_flag_status_active(s32 objectIndex, s32 arg1) { - s32 phi_v1 = FALSE; + s32 phi_v1 = false; if ((gObjectList[objectIndex].status & arg1) != 0) { - phi_v1 = TRUE; + phi_v1 = true; } return phi_v1; } @@ -237,17 +237,17 @@ UNUSED void func_800722F8(s32 objectIndex, s32 arg1) { } bool func_80072320(s32 objectIndex, s32 arg1) { - s32 b = FALSE; + s32 b = false; if ((gObjectList[objectIndex].unk_058 & arg1) != 0) { - b = TRUE; + b = true; } return b; } bool func_80072354(s32 objectIndex, s32 arg1) { - s32 b = FALSE; + s32 b = false; if ((gObjectList[objectIndex].unk_058 & arg1) == 0) { - b = TRUE; + b = true; } return b; } @@ -361,7 +361,7 @@ s32 func_8007278C(s32 objectIndex, s32 arg1) { func_80072488(objectIndex); phi_v1 = 1; } - + return phi_v1; } @@ -380,7 +380,7 @@ UNUSED s32 func_8007281C(s32 objectIndex, s32 arg1) { func_80072488(objectIndex); phi_a2 = 1; } - + return phi_a2; } @@ -399,7 +399,7 @@ UNUSED s32 func_800728B0(s32 objectIndex, s32 arg1, s32 arg2) { func_80072488(objectIndex); phi_a3 = 1; } - + return phi_a3; } @@ -428,7 +428,7 @@ void set_type_object(s32 objectIndex, s32 arg1) { } void func_800729EC(s32 objectIndex) { - u32 temp_v1 = 1; + u32 temp_v1 = 1; s32 i; start_race(); @@ -545,7 +545,7 @@ void func_80072D3C(s32 objectIndex, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { } else { gObjectList[objectIndex].itemDisplay = arg2; } - + if (gObjectList[objectIndex].unk_0D4 < 0) { gObjectList[objectIndex].unk_0D4 = 1; if (gObjectList[objectIndex].unk_0CC > 0) { @@ -598,7 +598,7 @@ s32 func_80072E54(s32 objectIndex, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 a bool func_80072F88(s32 objectIndex, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { s32 sp24; - sp24 = FALSE; + sp24 = false; if (is_obj_index_flag_status_inactive(objectIndex, 0x2000) != 0) { gObjectList[objectIndex].itemDisplay = arg1; gObjectList[objectIndex].unk_050 = arg4; @@ -619,7 +619,7 @@ bool func_80072F88(s32 objectIndex, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 set_object_flag_status_false(objectIndex, 0x2000); set_object_unk_0CB(objectIndex, 0); func_80072488(objectIndex); - sp24 = TRUE; + sp24 = true; } else { gObjectList[objectIndex].itemDisplay = arg1; } @@ -632,7 +632,7 @@ bool func_80072F88(s32 objectIndex, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 bool func_800730BC(s32 objectIndex, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { s32 sp24; - sp24 = FALSE; + sp24 = false; if (is_obj_index_flag_status_inactive(objectIndex ,0x2000) != 0) { gObjectList[objectIndex].itemDisplay = arg1; gObjectList[objectIndex].unk_050 = arg4; @@ -663,7 +663,7 @@ bool func_800730BC(s32 objectIndex, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 set_object_flag_status_false(objectIndex, 0x2000); set_object_unk_0CB(objectIndex, 0); func_80072488(objectIndex); - sp24 = TRUE; + sp24 = true; } else { set_object_flag_status_false(objectIndex, 0x4000); set_object_flag_status_true(objectIndex, 0x80); @@ -753,7 +753,7 @@ UNUSED void func_800734D4() { void update_neon_texture(s32 objectIndex) { // I have no idea why this typecast works - gObjectList[objectIndex].activeTLUT = (u32*)gObjectList[objectIndex].tlutList + (gObjectList[objectIndex].itemDisplay * 128); + gObjectList[objectIndex].activeTLUT = (u8*)((u32*)gObjectList[objectIndex].tlutList + (gObjectList[objectIndex].itemDisplay * 128)); gObjectList[objectIndex].activeTexture = gObjectList[objectIndex].textureList; } @@ -773,7 +773,7 @@ UNUSED void func_80073570(s32 objectIndex) { D_8018D1EC = 0; } (*test)++; -} +} void func_800735BC(s32 objectIndex, Gfx *arg1, f32 arg2) { gObjectList[objectIndex].status = 0; @@ -812,7 +812,7 @@ void func_80073720(s32 objectIndex) { bool func_8007375C(s32 objectIndex, s32 arg1) { s32 sp24; - sp24 = FALSE; + sp24 = false; if (is_obj_index_flag_status_inactive(objectIndex, 0x00008000) != 0) { gObjectList[objectIndex].unk_04C = arg1; set_object_flag_status_true(objectIndex, 0x00008000); @@ -821,7 +821,7 @@ bool func_8007375C(s32 objectIndex, s32 arg1) { if (gObjectList[objectIndex].unk_04C < 0) { set_object_flag_status_false(objectIndex, 0x00008000); func_80073654(objectIndex); - sp24 = TRUE; + sp24 = true; } return sp24; } @@ -891,7 +891,7 @@ UNUSED void func_800739CC(s32 arg0, s16* arg1, s32 arg2, s32 arg3, s32 arg4, s32 bool func_80073A10(s32 objectIndex, s16* arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6) { bool phi_t0; - phi_t0 = FALSE; + phi_t0 = false; if (gObjectList[objectIndex].unk_0CF == 0) { *arg1 = arg2; gObjectList[objectIndex].unk_0AC = arg5; @@ -911,7 +911,7 @@ bool func_80073A10(s32 objectIndex, s16* arg1, s32 arg2, s32 arg3, s32 arg4, s32 *arg1 = arg3; func_80073800(objectIndex, 0); func_8007381C(objectIndex); - phi_t0 = TRUE; + phi_t0 = true; } else { *arg1 = arg2; } @@ -935,7 +935,7 @@ s32 func_80073B34(s32 arg0, s16* arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s bool func_80073B78(s32 arg0, s32 objectIndex, s16* arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7) { s32 phi_t0; - phi_t0 = FALSE; + phi_t0 = false; if (gObjectList[objectIndex].unk_0CF == 0) { gObjectList[objectIndex].unk_0AC = arg6; if (arg0 != 0) { @@ -963,7 +963,7 @@ bool func_80073B78(s32 arg0, s32 objectIndex, s16* arg2, s32 arg3, s32 arg4, s32 if (gObjectList[objectIndex].unk_0D0 == 0) { func_80073800(objectIndex, 0); func_8007381C(objectIndex); - phi_t0 = TRUE; + phi_t0 = true; } else { gObjectList[objectIndex].unk_0CF = 1; } @@ -1005,7 +1005,7 @@ bool func_80073E18(s32 objectIndex, u16* arg1, u16 arg2, s32 arg3) { bool phi_t0; s32 temp_v1; - phi_t0 = FALSE; + phi_t0 = false; if (gObjectList[objectIndex].unk_0CF == 0) { func_80073800(objectIndex, 1); gObjectList[objectIndex].unk_048 = arg3; @@ -1015,12 +1015,12 @@ bool func_80073E18(s32 objectIndex, u16* arg1, u16 arg2, s32 arg3) { if (temp_v1 <= 0) { *arg1 += gObjectList[objectIndex].unk_048; func_80073800(objectIndex, 0); - phi_t0 = TRUE; + phi_t0 = true; } else { *arg1 += arg2; gObjectList[objectIndex].unk_048 = temp_v1; } - + return phi_t0; } @@ -1028,7 +1028,7 @@ UNUSED bool func_80073ED4(s32 objectIndex, u16* arg1, u16 arg2, s32 arg3) { bool phi_t0; s32 temp_v1; - phi_t0 = FALSE; + phi_t0 = false; if (gObjectList[objectIndex].unk_0CF == 0) { func_80073800(objectIndex, 1); gObjectList[objectIndex].unk_048 = arg3; @@ -1038,7 +1038,7 @@ UNUSED bool func_80073ED4(s32 objectIndex, u16* arg1, u16 arg2, s32 arg3) { if (temp_v1 <= 0) { *arg1 += gObjectList[objectIndex].unk_048; func_80073800(objectIndex, 0); - phi_t0 = TRUE; + phi_t0 = true; } else { *arg1 -= arg2; gObjectList[objectIndex].unk_048 = temp_v1; @@ -1066,7 +1066,7 @@ UNUSED void func_80074014(void) { bool func_8007401C(s32 objectIndex, f32* arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5, s32 arg6) { bool phi_a3; - phi_a3 = FALSE; + phi_a3 = false; if (gObjectList[objectIndex].unk_0CD == 0) { *arg1 = arg2; gObjectList[objectIndex].unk_0AA = arg5; @@ -1085,14 +1085,14 @@ bool func_8007401C(s32 objectIndex, f32* arg1, f32 arg2, f32 arg3, f32 arg4, s32 *arg1 = arg3; func_80073F90(objectIndex, 0); func_80073FAC(objectIndex); - phi_a3 = TRUE; + phi_a3 = true; } else { *arg1 = arg2; } } } } - + return phi_a3; } @@ -1131,7 +1131,7 @@ s32 func_800741B4(s32 objectIndex, f32* arg1, f32 arg2, f32 arg3, f32 arg4, s32 } } } - + return 0; } @@ -1209,7 +1209,7 @@ void func_80074574(u8 *arg0, void *arg1, u16 arg2, u16 arg3) { } //! @todo arg1 should likely be a u8 * -void func_800745C8(s32 objectIndex, s32 arg1) { +void func_800745C8(s32 objectIndex, uintptr_t arg1) { s32 phi_a1; if ((gObjectList[objectIndex].status & 1) != 0) { @@ -1222,18 +1222,18 @@ void func_800745C8(s32 objectIndex, s32 arg1) { if ((gObjectList[objectIndex].status & 2) != 0) { phi_a1 = 1; } - + gObjectList[objectIndex].activeTexture = (u8 *) (gObjectList[objectIndex].textureWidth * gObjectList[objectIndex].textureHeight * phi_a1) + arg1; func_800744A0(objectIndex); } } -void func_8007466C(s32 objectIndex, s32 arg1) { +void func_8007466C(s32 objectIndex, uintptr_t arg1) { s32 phi_a1; if ((gObjectList[objectIndex].status & 1) != 0) { // I have no idea why this typecase works - gObjectList[objectIndex].activeTLUT = (u32*)gObjectList[objectIndex].tlutList + (gObjectList[objectIndex].unk_0D3 << 7) ; + gObjectList[objectIndex].activeTLUT = (u8*) ((u32*)gObjectList[objectIndex].tlutList + (gObjectList[objectIndex].unk_0D3 << 7)) ; gObjectList[objectIndex].status ^= 2; phi_a1 = 0; if ((gObjectList[objectIndex].status & 2) != 0) { @@ -1244,9 +1244,9 @@ void func_8007466C(s32 objectIndex, s32 arg1) { } } -void func_80074704(s32 objectIndex, s32 arg1) { +void func_80074704(s32 objectIndex, uintptr_t arg1) { s32 phi_a1; - + if ((gObjectList[objectIndex].status & 1) != 0) { gObjectList[objectIndex].activeTLUT = gObjectList[objectIndex].tlutList; gObjectList[objectIndex].status ^= 2; @@ -1282,17 +1282,17 @@ void func_800747F0(s32 objectIndex, u8 *arg1) { void func_80074894(s32 objectIndex, u8 *arg1) { func_800747F0(objectIndex, arg1); - func_800745C8(objectIndex, (s32)arg1); + func_800745C8(objectIndex, (uintptr_t)arg1); } void func_800748C4(s32 objectIndex, u8 *arg1) { func_800747F0(objectIndex, arg1); - func_8007466C(objectIndex, (s32)arg1); + func_8007466C(objectIndex, (uintptr_t)arg1); } void func_800748F4(s32 objectIndex, u8 *arg1) { func_800747F0(objectIndex, arg1); - func_80074704(objectIndex, (s32)arg1); + func_80074704(objectIndex, (uintptr_t)arg1); } void func_80074924(s32 objectIndex) { @@ -1302,10 +1302,10 @@ void func_80074924(s32 objectIndex) { s32 sp20; s16 temp_v0; s32 temp_a0; - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - temp_s0->sizeScaling = 0.15f; + object = &gObjectList[objectIndex]; + object->sizeScaling = 0.15f; temp_v0 = gCurrentCourseId; switch (temp_v0) { /* irregular */ case COURSE_MARIO_RACEWAY: @@ -1313,49 +1313,49 @@ void func_80074924(s32 objectIndex) { sp28 = random_int(D_80165748); sp24 = random_int(0x0096U); sp20 = random_int(0x2000U); - temp_s0->origin_pos[0] = (f32) ((((f64) D_80165718 + 100.0) - (f64) sp2C) * (f64) xOrientation); - temp_s0->origin_pos[1] = (f32) (D_80165720 + sp28); - temp_s0->origin_pos[2] = (f32) (((f64) D_80165728 + 200.0) - (f64) sp24); + object->origin_pos[0] = (f32) ((((f64) D_80165718 + 100.0) - (f64) sp2C) * (f64) xOrientation); + object->origin_pos[1] = (f32) (D_80165720 + sp28); + object->origin_pos[2] = (f32) (((f64) D_80165728 + 200.0) - (f64) sp24); break; case COURSE_ROYAL_RACEWAY: sp2C = random_int(0x0168U); sp28 = random_int(D_80165748); sp24 = random_int(0x00B4U); sp20 = random_int(0x2000U); - temp_s0->origin_pos[0] = (f32) ((((f64) D_80165718 + 180.0) - (f64) sp2C) * (f64) xOrientation); - temp_s0->origin_pos[1] = (f32) (D_80165720 + sp28); - temp_s0->origin_pos[2] = (f32) (((f64) D_80165728 + 200.0) - (f64) sp24); + object->origin_pos[0] = (f32) ((((f64) D_80165718 + 180.0) - (f64) sp2C) * (f64) xOrientation); + object->origin_pos[1] = (f32) (D_80165720 + sp28); + object->origin_pos[2] = (f32) (((f64) D_80165728 + 200.0) - (f64) sp24); break; case COURSE_LUIGI_RACEWAY: sp2C = random_int(0x012CU); sp28 = random_int(D_80165748); sp24 = random_int(0x0096U); sp20 = random_int(0x2000U); - temp_s0->origin_pos[0] = (f32) ((((f64) D_80165718 + 150.0) - (f64) sp2C) * (f64) xOrientation); - temp_s0->origin_pos[1] = (f32) (D_80165720 + sp28); - temp_s0->origin_pos[2] = (f32) (((f64) D_80165728 + 200.0) - (f64) sp24); + object->origin_pos[0] = (f32) ((((f64) D_80165718 + 150.0) - (f64) sp2C) * (f64) xOrientation); + object->origin_pos[1] = (f32) (D_80165720 + sp28); + object->origin_pos[2] = (f32) (((f64) D_80165728 + 200.0) - (f64) sp24); break; } set_obj_origin_offset(objectIndex, 0, 0, 0); if (gPlayerCount == 1) { - temp_s0->velocity[1] = (f32) (((f64) (f32) (sp2C % 4) * 0.25) + 0.8); + object->velocity[1] = (f32) (((f64) (f32) (sp2C % 4) * 0.25) + 0.8); } else { - temp_s0->velocity[1] = (f32) (((f64) (f32) (sp2C % 3) * 0.2) + 0.4); + object->velocity[1] = (f32) (((f64) (f32) (sp2C % 3) * 0.2) + 0.4); } temp_a0 = sp2C % 8; - temp_s0->unk_084[0] = D_800E6F30[temp_a0][0]; - temp_s0->unk_084[1] = D_800E6F30[temp_a0][1]; - temp_s0->unk_084[2] = D_800E6F30[temp_a0][2]; - temp_s0->unk_084[3] = D_800E6F48[temp_a0][0]; - temp_s0->unk_084[4] = D_800E6F48[temp_a0][1]; - temp_s0->unk_084[5] = D_800E6F48[temp_a0][2]; - temp_s0->unk_084[6] = sp20 - 0x1000; + object->unk_084[0] = D_800E6F30[temp_a0][0]; + object->unk_084[1] = D_800E6F30[temp_a0][1]; + object->unk_084[2] = D_800E6F30[temp_a0][2]; + object->unk_084[3] = D_800E6F48[temp_a0][0]; + object->unk_084[4] = D_800E6F48[temp_a0][1]; + object->unk_084[5] = D_800E6F48[temp_a0][2]; + object->unk_084[6] = sp20 - 0x1000; if (sp2C & 1) { - temp_s0->unk_084[7] = (sp20 / 32) + 0x100; + object->unk_084[7] = (sp20 / 32) + 0x100; } else { - temp_s0->unk_084[7] = -0x100 - (sp20 / 32); + object->unk_084[7] = -0x100 - (sp20 / 32); } - temp_s0->primAlpha = 0x00E6; + object->primAlpha = 0x00E6; func_80072488(objectIndex); } @@ -1394,7 +1394,7 @@ void func_80074EE8(void) { s32 someIndex; s32 objectIndex; s32 someCount; - Objects *object; + Object *object; someCount = 0; for (someIndex = 0; someIndex < D_80165738; someIndex++) { @@ -1439,24 +1439,24 @@ void func_80074FD8(s32 objectIndex) { void func_800750D8(s32 objectIndex, s32 arg1, Vec3f arg2, s32 arg3, s32 arg4) { s32 sp24; s32 temp_v0; - Objects *temp_v1; + Object *object; init_object(objectIndex, 0); sp24 = random_int(0x01F4U); temp_v0 = random_int(0x0032U); - temp_v1 = &gObjectList[objectIndex]; - temp_v1->unk_0D5 = arg3; - temp_v1->sizeScaling = ((f64) (f32) sp24 * 0.0005) + 0.05; + object = &gObjectList[objectIndex]; + object->unk_0D5 = arg3; + object->sizeScaling = ((f64) (f32) sp24 * 0.0005) + 0.05; // ALL HAIL THE FAKE MATCH GODS!!!!! - temp_v1->velocity[1] = ((f64) (f32) temp_v0 * (0.05 * 1.0)) + 2.0; - temp_v1->unk_034 = ((f64) (f32)(temp_v0 % 5) * 0.1) + 1.0; - temp_v1->direction_angle[1] = (arg1 << 0x10) / arg4; - temp_v1->origin_pos[0] = (arg2[0] + (temp_v0 / 2)) - 12.0f; - temp_v1->origin_pos[1] = (arg2[1] - 10.0) + random_int(0x000AU); - temp_v1->origin_pos[2] = (arg2[2] + (temp_v0 / 2)) - 12.0f; - temp_v1->orientation[0] = sp24 << 7; - temp_v1->orientation[1] = temp_v0 * 0x50; - temp_v1->orientation[2] = temp_v0 * 0x50; + object->velocity[1] = ((f64) (f32) temp_v0 * (0.05 * 1.0)) + 2.0; + object->unk_034 = ((f64) (f32)(temp_v0 % 5) * 0.1) + 1.0; + object->direction_angle[1] = (arg1 << 0x10) / arg4; + object->origin_pos[0] = (arg2[0] + (temp_v0 / 2)) - 12.0f; + object->origin_pos[1] = (arg2[1] - 10.0) + random_int(0x000AU); + object->origin_pos[2] = (arg2[2] + (temp_v0 / 2)) - 12.0f; + object->orientation[0] = sp24 << 7; + object->orientation[1] = temp_v0 * 0x50; + object->orientation[2] = temp_v0 * 0x50; } void func_80075304(Vec3f arg0, s32 arg1, s32 arg2, s32 arg3) { @@ -1484,7 +1484,7 @@ void func_8007542C(s32 arg0) { s32 objectIndex; s32 var_s2; s32 *var_s3; - Objects *temp_s0; + Object *object; D_8016582C[0] += 0x2000; D_8016582C[1] += 0x1000; @@ -1503,10 +1503,10 @@ void func_8007542C(s32 arg0) { } objectIndex = var_s3[var_s2]; if (objectIndex != DELETED_OBJECT_ID) { - temp_s0 = &gObjectList[objectIndex]; - if (temp_s0->state != 0) { + object = &gObjectList[objectIndex]; + if (object->state != 0) { func_80074FD8(objectIndex); - if (temp_s0->state == 0) { + if (object->state == 0) { delete_object_wrapper(&var_s3[var_s2]); } } @@ -1516,16 +1516,16 @@ void func_8007542C(s32 arg0) { } void func_80075574(s32 objectIndex, Vec3f arg1, f32 arg2) { - Objects *temp_v1; + Object *object; UNUSED s32 pad[2]; init_object(objectIndex, 0); - temp_v1 = &gObjectList[objectIndex]; - temp_v1->origin_pos[0] = arg1[0]; - temp_v1->origin_pos[1] = arg1[1]; - temp_v1->origin_pos[2] = arg1[2]; - temp_v1->velocity[1] = arg2; - temp_v1->type = random_int(0x0064U) + 0x1E; + object = &gObjectList[objectIndex]; + object->origin_pos[0] = arg1[0]; + object->origin_pos[1] = arg1[1]; + object->origin_pos[2] = arg1[2]; + object->velocity[1] = arg2; + object->type = random_int(0x0064U) + 0x1E; } s32 func_800755FC(s32 arg0, Vec3f arg1, f32 arg2) { @@ -1579,16 +1579,16 @@ void func_80075714(s32 objectIndex) { case 0: break; } - + object_calculate_new_pos_offset(objectIndex); } void update_train_smoke(void) { - s32 pad[2]; + UNUSED s32 pad[2]; s32 count; s32 i; s32 temp_a0; - Objects *temp; + Object *object; if (D_8016578C != 0) { D_8016578C -= 1; } @@ -1600,10 +1600,10 @@ void update_train_smoke(void) { for (i = 0; i < 128; i++) { temp_a0 = gObjectParticle2[i]; if (temp_a0 != -1) { - temp = &gObjectList[temp_a0]; - if (temp->state != 0) { + object = &gObjectList[temp_a0]; + if (object->state != 0) { func_80075714(temp_a0); - if (temp->state == 0) { + if (object->state == 0) { delete_object_wrapper(&gObjectParticle2[i]); } count += 1; @@ -1619,10 +1619,10 @@ void update_train_smoke(void) { for (i = 0; i < 128; i++) { temp_a0 = gObjectParticle3[i]; if (temp_a0 != -1) { - temp = &gObjectList[temp_a0]; - if (temp->state != 0) { + object = &gObjectList[temp_a0]; + if (object->state != 0) { func_80075714(temp_a0); - if (temp->state == 0) { + if (object->state == 0) { delete_object_wrapper(&gObjectParticle3[i]); } count += 1; @@ -1636,16 +1636,16 @@ void update_train_smoke(void) { } void func_800759EC(s32 objectIndex, Vec3f arg1, f32 arg2) { - Objects *temp_v0; + Object *object; init_object(objectIndex, 0); - temp_v0 = &gObjectList[objectIndex]; - temp_v0->origin_pos[0] = arg1[0]; - temp_v0->origin_pos[1] = arg1[1]; - temp_v0->origin_pos[2] = arg1[2]; - temp_v0->velocity[1] = arg2; - temp_v0->type = 0x00FF; - temp_v0->unk_0A2 = 0x0096; + object = &gObjectList[objectIndex]; + object->origin_pos[0] = arg1[0]; + object->origin_pos[1] = arg1[1]; + object->origin_pos[2] = arg1[2]; + object->velocity[1] = arg2; + object->type = 0x00FF; + object->unk_0A2 = 0x0096; } s32 func_80075A6C(s32 arg0, Vec3f arg1, f32 arg2) { @@ -1662,7 +1662,7 @@ s32 func_80075A6C(s32 arg0, Vec3f arg1, f32 arg2) { func_800759EC(objectIndex, arg1, arg2); } } - + return objectIndex; } @@ -1705,11 +1705,11 @@ void func_80075B84(s32 objectIndex) { } void update_ferries_smoke_particle(void) { - s32 pad[2]; + UNUSED s32 pad[2]; s32 count; s32 i; s32 temp_a0; - Objects *temp; + Object *object; if (D_8016578C != 0) { D_8016578C -= 1; } @@ -1721,10 +1721,10 @@ void update_ferries_smoke_particle(void) { for (i = 0; i < 128; i++) { temp_a0 = gObjectParticle2[i]; if (temp_a0 != -1) { - temp = &gObjectList[temp_a0]; - if (temp->state != 0) { + object = &gObjectList[temp_a0]; + if (object->state != 0) { func_80075B84(temp_a0); - if (temp->state == 0) { + if (object->state == 0) { delete_object_wrapper(&gObjectParticle2[i]); } count += 1; @@ -1740,10 +1740,10 @@ void update_ferries_smoke_particle(void) { for (i = 0; i < 128; i++) { temp_a0 = gObjectParticle3[i]; if (temp_a0 != -1) { - temp = &gObjectList[temp_a0]; - if (temp->state != 0) { + object = &gObjectList[temp_a0]; + if (object->state != 0) { func_80075B84(temp_a0); - if (temp->state == 0) { + if (object->state == 0) { delete_object_wrapper(&gObjectParticle3[i]); } count += 1; @@ -1757,22 +1757,22 @@ void update_ferries_smoke_particle(void) { } void func_80075E5C(s32 objectIndex, Vec3f arg1, u16 arg2, f32 arg3, s32 arg4) { - Objects *temp_v0; + Object *object; init_object(objectIndex, 0); - temp_v0 = &gObjectList[objectIndex]; - temp_v0->sizeScaling = 0.5f; - temp_v0->unk_0D5 = 5; - temp_v0->origin_pos[0] = arg1[0]; - temp_v0->origin_pos[1] = arg1[1]; - temp_v0->origin_pos[2] = arg1[2]; - temp_v0->direction_angle[0] = 0x0C00; - temp_v0->direction_angle[2] = 0; - temp_v0->unk_034 = arg3 * 4.0; - temp_v0->direction_angle[1] = arg2; - temp_v0->type = 0x00FF; - temp_v0->unk_0A2 = 0x00FF; - temp_v0->unk_048 = arg4 * 2; + object = &gObjectList[objectIndex]; + object->sizeScaling = 0.5f; + object->unk_0D5 = 5; + object->origin_pos[0] = arg1[0]; + object->origin_pos[1] = arg1[1]; + object->origin_pos[2] = arg1[2]; + object->direction_angle[0] = 0x0C00; + object->direction_angle[2] = 0; + object->unk_034 = arg3 * 4.0; + object->direction_angle[1] = arg2; + object->type = 0x00FF; + object->unk_0A2 = 0x00FF; + object->unk_048 = arg4 * 2; } s32 func_80075F28(Vec3f arg0, u16 arg1, f32 arg2, s32 arg3) { @@ -1839,25 +1839,25 @@ void func_8007614C(void) { } void func_80076194(s32 objectIndex, Vec3f arg1, f32 arg2, s32 arg3) { - Objects *temp_v0; + Object *object; init_object(objectIndex, 0); - temp_v0 = &gObjectList[objectIndex]; - temp_v0->unk_0D5 = 4; - temp_v0->sizeScaling = 1.0f; - temp_v0->origin_pos[0] = arg1[0]; - temp_v0->origin_pos[1] = arg1[1]; - temp_v0->origin_pos[2] = arg1[2]; - temp_v0->direction_angle[0] = 0x0C00; - temp_v0->direction_angle[2] = 0; - temp_v0->direction_angle[1] = 0x2100; + object = &gObjectList[objectIndex]; + object->unk_0D5 = 4; + object->sizeScaling = 1.0f; + object->origin_pos[0] = arg1[0]; + object->origin_pos[1] = arg1[1]; + object->origin_pos[2] = arg1[2]; + object->direction_angle[0] = 0x0C00; + object->direction_angle[2] = 0; + object->direction_angle[1] = 0x2100; if (gIsMirrorMode != 0) { - temp_v0->direction_angle[1] += -0x4000; + object->direction_angle[1] += -0x4000; } - temp_v0->type = 0x00FF; - temp_v0->unk_0A2 = 0x00FF; - temp_v0->unk_048 = arg3 * 2; - temp_v0->unk_034 = arg2 * 8.0; + object->type = 0x00FF; + object->unk_0A2 = 0x00FF; + object->unk_048 = arg3 * 2; + object->unk_034 = arg2 * 8.0; } s32 func_80076278(Vec3f arg0, f32 arg1, s32 arg2) { @@ -1879,42 +1879,42 @@ void func_800762DC(Vec3f arg0, f32 arg1) { } void func_8007634C(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->activeTexture = common_texture_particle_smoke; - temp_v0->textureList = common_texture_particle_smoke; - temp_v0->primAlpha = 0x00FF; + object = &gObjectList[objectIndex]; + object->activeTexture = common_texture_particle_smoke[0]; + object->textureList = common_texture_particle_smoke[0]; + object->primAlpha = 0x00FF; set_obj_orientation(objectIndex, 0U, 0U, 0U); set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); func_80072488(objectIndex); } void func_800763CC(s32 objectIndex) { - Objects *temp_s0; + Object *object; if(objectIndex){} - temp_s0 = &gObjectList[objectIndex]; - switch (temp_s0->state) { + object = &gObjectList[objectIndex]; + switch (object->state) { case 1: func_8007634C(objectIndex); break; case 2: - if (func_8007278C(objectIndex, temp_s0->unk_048) != 0) { + if (func_8007278C(objectIndex, object->unk_048) != 0) { func_80086E70(objectIndex); } break; case 3: - if (temp_s0->unk_0D5 == 4) { - f32_step_towards(&temp_s0->sizeScaling, 4.0f, 0.1f); - s16_step_towards(&temp_s0->type, 0, 0x0018); - s16_step_towards(&temp_s0->unk_0A2, 0x0080, 0x000C); + if (object->unk_0D5 == 4) { + f32_step_towards(&object->sizeScaling, 4.0f, 0.1f); + s16_step_towards(&object->type, 0, 0x0018); + s16_step_towards(&object->unk_0A2, 0x0080, 0x000C); } else { - f32_step_towards(&temp_s0->sizeScaling, 1.0f, 0.1f); - s16_step_towards(&temp_s0->type, 0, 0x0018); - s16_step_towards(&temp_s0->unk_0A2, 0x0080, 0x000C); + f32_step_towards(&object->sizeScaling, 1.0f, 0.1f); + s16_step_towards(&object->type, 0, 0x0018); + s16_step_towards(&object->unk_0A2, 0x0080, 0x000C); } - if ((temp_s0->unk_0AE >= 2) && (func_80073B00(objectIndex, &temp_s0->primAlpha, 0x000000FF, 0x00000050, 0x00000020, 0, 0) != 0)) { + if ((object->unk_0AE >= 2) && (func_80073B00(objectIndex, &object->primAlpha, 0x000000FF, 0x00000050, 0x00000020, 0, 0) != 0)) { func_80072488(objectIndex); } break; @@ -1988,23 +1988,23 @@ void func_8007661C(void) { } void func_8007675C(s32 objectIndex, Vec3s arg1, s32 arg2) { - Objects *temp_v0; + Object *object; init_object(objectIndex, 0); - temp_v0 = &gObjectList[objectIndex]; - temp_v0->unk_0D5 = 9; - temp_v0->sizeScaling = 1.0f; - temp_v0->origin_pos[0] = arg1[0]; - temp_v0->origin_pos[1] = arg1[1]; - temp_v0->origin_pos[2] = arg1[2]; - temp_v0->direction_angle[0] = 0x0C00; - temp_v0->direction_angle[1] = 0x2100; - temp_v0->direction_angle[2] = 0; - temp_v0->type = 0x00FF; - temp_v0->unk_0A2 = 0x00FF; - temp_v0->unk_034 = 8.0f; - temp_v0->velocity[1] = 8.0f; - temp_v0->unk_048 = arg2; + object = &gObjectList[objectIndex]; + object->unk_0D5 = 9; + object->sizeScaling = 1.0f; + object->origin_pos[0] = arg1[0]; + object->origin_pos[1] = arg1[1]; + object->origin_pos[2] = arg1[2]; + object->direction_angle[0] = 0x0C00; + object->direction_angle[1] = 0x2100; + object->direction_angle[2] = 0; + object->type = 0x00FF; + object->unk_0A2 = 0x00FF; + object->unk_034 = 8.0f; + object->velocity[1] = 8.0f; + object->unk_048 = arg2; } s32 func_80076828(Vec3s arg0, s32 arg1) { @@ -2018,7 +2018,7 @@ s32 func_80076828(Vec3s arg0, s32 arg1) { } void func_80076884(s32 arg0) { - s32 stackPadding0; + UNUSED s32 stackPadding0; s32 i; s32 temp_v0; s16 *var_s2; @@ -2049,36 +2049,36 @@ void func_80076884(s32 arg0) { } void func_80076958(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->activeTexture = common_texture_particle_smoke; - temp_v0->textureList = common_texture_particle_smoke; - temp_v0->primAlpha = 0x00FF; + object = &gObjectList[objectIndex]; + object->activeTexture = common_texture_particle_smoke[0]; + object->textureList = common_texture_particle_smoke[0]; + object->primAlpha = 0x00FF; set_obj_orientation(objectIndex, 0U, 0U, 0U); set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); func_80072488(objectIndex); } void func_800769D8(s32 objectIndex) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - switch (temp_s0->state) { + object = &gObjectList[objectIndex]; + switch (object->state) { case 0: break; case 1: func_80076958(objectIndex); break; case 2: - if (func_8007278C(objectIndex, temp_s0->unk_048) != 0) { + if (func_8007278C(objectIndex, object->unk_048) != 0) { func_80086E70(objectIndex); } break; case 3: - f32_step_towards(&temp_s0->sizeScaling, 2.0f, 0.05f); - s16_step_towards(&temp_s0->type, 0, 0x0018); - if ((temp_s0->unk_0AE >= 2) && (func_80073B00(objectIndex, &temp_s0->primAlpha, 0x000000FF, 0x00000050, 0x00000020, 0, 0) != 0)) { + f32_step_towards(&object->sizeScaling, 2.0f, 0.05f); + s16_step_towards(&object->type, 0, 0x0018); + if ((object->unk_0AE >= 2) && (func_80073B00(objectIndex, &object->primAlpha, 0x000000FF, 0x00000050, 0x00000020, 0, 0) != 0)) { func_80072488(objectIndex); } break; @@ -2115,7 +2115,7 @@ void func_80076B7C(void) { void update_flame_particle(void) { s32 someIndex; s32 objectIndex; - Objects *object; + Object *object; func_8007661C(); func_8007614C(); @@ -2140,17 +2140,17 @@ void update_flame_particle(void) { } void init_object_smoke_paticle(s32 objectIndex, Vec3f arg1, s16 arg2) { - Objects *temp_v0; + Object *object; init_object(objectIndex, (s32) arg2); - temp_v0 = &gObjectList[objectIndex]; - temp_v0->unk_0D5 = 0x0A; - temp_v0->activeTexture = common_texture_particle_smoke; - temp_v0->textureList = common_texture_particle_smoke; - temp_v0->sizeScaling = 0.3f; + object = &gObjectList[objectIndex]; + object->unk_0D5 = 0x0A; + object->activeTexture = common_texture_particle_smoke[0]; + object->textureList = common_texture_particle_smoke[0]; + object->sizeScaling = 0.3f; set_obj_origin_pos(objectIndex, arg1[0], arg1[1], arg1[2]); - temp_v0->type = 0x00FF; - temp_v0->unk_034 = 0.0f; + object->type = 0x00FF; + object->unk_034 = 0.0f; set_obj_orientation(objectIndex, 0U, 0U, 0U); set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); } @@ -2200,7 +2200,7 @@ void func_80076ED8(s32 objectIndex) { void func_80076F2C(void) { s32 someIndex; s32 flameIndex; - Objects *object; + Object *object; for (someIndex = 0; someIndex < gObjectParticle4_SIZE; someIndex++) { flameIndex = gObjectParticle4[someIndex]; @@ -2221,8 +2221,8 @@ void init_object_smoke_particle(s32 objectIndex, s32 flameIndex) { init_object(objectIndex, 3); gObjectList[objectIndex].unk_0D5 = 0xB; - gObjectList[objectIndex].activeTexture = common_texture_particle_smoke; - gObjectList[objectIndex].textureList = common_texture_particle_smoke; + gObjectList[objectIndex].activeTexture = common_texture_particle_smoke[0]; + gObjectList[objectIndex].textureList = common_texture_particle_smoke[0]; gObjectList[objectIndex].sizeScaling = 0.8f; gObjectList[objectIndex].origin_pos[0] = (f32)*(gTorchSpawns + (flameIndex * 3) + 0) * xOrientation; @@ -2336,18 +2336,18 @@ void func_80077450(s32 objectIndex) { } void func_80077584(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - if ((temp_v0->unk_0AE != 0) && (temp_v0->unk_0AE == 1) && ((u8) temp_v0->unk_0D8 != 0)) { - if (temp_v0->velocity[1] >= -0.5) { - temp_v0->velocity[1] -= 0.15; + object = &gObjectList[objectIndex]; + if ((object->unk_0AE != 0) && (object->unk_0AE == 1) && ((u8) object->unk_0D8 != 0)) { + if (object->velocity[1] >= -0.5) { + object->velocity[1] -= 0.15; } else { - temp_v0->velocity[2] = 0.0f; - temp_v0->velocity[0] = 0.0f; + object->velocity[2] = 0.0f; + object->velocity[0] = 0.0f; } } - temp_v0->orientation[2] += temp_v0->unk_084[3]; + object->orientation[2] += object->unk_084[3]; object_add_velocity_offset_xyz(objectIndex); object_calculate_new_pos_offset(objectIndex); } @@ -2355,7 +2355,7 @@ void func_80077584(s32 objectIndex) { void func_80077640(void) { s32 someIndex; s32 objectIndex; - Objects *object; + Object *object; for(someIndex = 0; someIndex < gObjectParticle3_SIZE; someIndex++) { objectIndex = gObjectParticle3[someIndex]; @@ -2381,10 +2381,10 @@ void init_object_leaf_particle(s32 objectIndex, Vec3f arg1, s32 num) { init_object(objectIndex, 0); gObjectList[objectIndex].unk_0D5 = 7; - gObjectList[objectIndex].activeTLUT = (u32 *) common_texture_particle_leaf; - gObjectList[objectIndex].tlutList = (u32 *) common_texture_particle_leaf; + gObjectList[objectIndex].activeTLUT = (u8*) common_texture_particle_leaf; + gObjectList[objectIndex].tlutList = (u8*) common_texture_particle_leaf; gObjectList[objectIndex].sizeScaling = 0.1f; - gObjectList[objectIndex].unk_044 = arg1[1]; + gObjectList[objectIndex].surfaceHeight = arg1[1]; switch (gCurrentCourseId) { case COURSE_MARIO_RACEWAY: object_origin_pos_randomize_around_xyz(objectIndex, arg1[0], arg1[1] + 25.0, arg1[2], 0x14, 0x1E, 0x14); @@ -2438,17 +2438,17 @@ void func_80077B14(s32 arg0) { } void func_80077B3C(s32 objectIndex) { - Objects *temp_v1; - temp_v1 = &gObjectList[objectIndex]; + Object *object; + object = &gObjectList[objectIndex]; - switch (temp_v1->state) { + switch (object->state) { case 0: break; case 1: func_80077B14(objectIndex); break; case 2: - if (temp_v1->unk_0AE == 0) { + if (object->unk_0AE == 0) { func_80072488(objectIndex); } break; @@ -2464,7 +2464,7 @@ void func_80077BCC(s32 objectIndex) { func_80087E08(objectIndex, gObjectList[objectIndex].velocity[1], 0.2f, gObjectList[objectIndex].unk_034, (s16) (s32) gObjectList[objectIndex].direction_angle[1], 0x0000000A); break; case 2: - if (func_80087B84(objectIndex, 0.4f, gObjectList[objectIndex].unk_044) != 0) { + if (func_80087B84(objectIndex, 0.4f, gObjectList[objectIndex].surfaceHeight) != 0) { func_80086F60(objectIndex); } break; @@ -2477,7 +2477,7 @@ void func_80077BCC(s32 objectIndex) { void update_leaf(void) { s32 someIndex; s32 leafIndex; - Objects *object; + Object *object; for(someIndex = 0; someIndex < gLeafParticle_SIZE; someIndex++) { leafIndex = gLeafParticle[someIndex]; @@ -2514,21 +2514,21 @@ void func_80077D5C(s32 arg0) { } void func_80077E20(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->activeTexture = D_0D0293D8; - temp_v0->textureList = D_0D0293D8; + object = &gObjectList[objectIndex]; + object->activeTexture = D_0D0293D8; + object->textureList = D_0D0293D8; // There's something up with the handling of common_vtx_rectangle and the loading of 0x10 right here - temp_v0->vertex = common_vtx_rectangle; - temp_v0->textureHeight = 0x10; - temp_v0->textureWidth = temp_v0->textureHeight; - temp_v0->sizeScaling = 0.15f; + object->vertex = common_vtx_rectangle; + object->textureHeight = 0x10; + object->textureWidth = object->textureHeight; + object->sizeScaling = 0.15f; set_object_flag_status_true(objectIndex, 0x00000010); func_80086EF0(objectIndex); - temp_v0->primAlpha = 0x00FF; - temp_v0->unk_0D5 = 0; - temp_v0->type = 0; + object->primAlpha = 0x00FF; + object->unk_0D5 = 0; + object->type = 0; func_80072488(objectIndex); } @@ -2609,13 +2609,13 @@ void func_80078170(s32 arg0, Camera *arg1) { } void func_80078220(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->activeTexture = D_0D0293D8; - temp_v0->textureList = D_0D0293D8; - temp_v0->vertex = common_vtx_rectangle; - temp_v0->sizeScaling = 0.15f; + object = &gObjectList[objectIndex]; + object->activeTexture = D_0D0293D8; + object->textureList = D_0D0293D8; + object->vertex = common_vtx_rectangle; + object->sizeScaling = 0.15f; func_80086EF0(objectIndex); func_80072488(objectIndex); } @@ -2932,19 +2932,19 @@ void func_80079114(s32 objectIndex, s32 arg1, s32 arg2) { } void func_800791F0(s32 objectIndex, s32 playerId) { - Player *temp_v1 = &gPlayerOne[playerId]; + Player *player = &gPlayerOne[playerId]; if ((gObjectList[objectIndex].unk_0D8 != 3) && (gObjectList[objectIndex].unk_0D8 != 7)) { func_800722CC(objectIndex, 1); if (gCurrentCourseId == COURSE_SHERBET_LAND) { - temp_v1->unk_0CA &= 0xFFEF; + player->unk_0CA &= 0xFFEF; } } else { // ????? } if (gCurrentCourseId == COURSE_SHERBET_LAND) { func_800722CC(objectIndex, 0x00000010); - temp_v1->unk_0CA &= 0xFFDF; + player->unk_0CA &= 0xFFDF; } func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28)); } @@ -2955,7 +2955,7 @@ void init_obj_lakitu_red_flag_countdown(s32 objectIndex, s32 arg1) { D_8018D168 = 0; } init_texture_object(objectIndex, (u8 *) common_tlut_lakitu_countdown, gTextureLakituNoLights1, 0x38U, (u16) 0x00000048); - gObjectList[objectIndex].vertex = D_0D005EB0; + gObjectList[objectIndex].vertex = common_vtx_lakitu; gObjectList[objectIndex].sizeScaling = 0.15f; set_object_flag_status_false(objectIndex, 0x00000010); func_80072488(objectIndex); @@ -3042,17 +3042,17 @@ void update_object_lakitu_countdown(s32 objectIndex, s32 arg1) { } void init_obj_lakitu_red_flag(s32 objectIndex, s32 playerIndex) { - Objects *temp_v0; + Object *object; func_800791F0(objectIndex, playerIndex); - init_texture_object(objectIndex, common_tlut_lakitu_checkered_flag, gTextureLakituCheckeredFlag01, 0x48U, (u16) 0x00000038); - temp_v0 = &gObjectList[objectIndex]; - temp_v0->activeTexture = D_8018C028; - temp_v0->vertex = D_0D006730; - temp_v0->pos[2] = 5000.0f; - temp_v0->pos[1] = 5000.0f; - temp_v0->pos[0] = 5000.0f; - temp_v0->sizeScaling = 0.15f; + init_texture_object(objectIndex, (u8*) common_tlut_lakitu_checkered_flag, gTextureLakituCheckeredFlag01, 0x48U, (u16) 0x00000038); + object = &gObjectList[objectIndex]; + object->activeTexture = D_8018C028; + object->vertex = common_vtx_also_lakitu; + object->pos[2] = 5000.0f; + object->pos[1] = 5000.0f; + object->pos[0] = 5000.0f; + object->sizeScaling = 0.15f; func_80086F10(objectIndex, 2, &D_800E6834); set_object_flag_status_false(objectIndex, 0x00000010); func_80072488(objectIndex); @@ -3101,7 +3101,7 @@ void func_80079860(s32 playerId) { player = &gPlayerOne[playerId]; if ((func_80072354(objectIndex, 1) != 0) && ( - ((func_802ABDF4(player->unk_110.unk3A) != 0) && (player->unk_110.unk3C[2] <= 3.0f)) || + ((func_802ABDF4(player->collision.meshIndexZX) != 0) && (player->collision.surfaceDistance[2] <= 3.0f)) || (player->unk_0CA & 1) || ((player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & 8)) ) @@ -3122,7 +3122,7 @@ void func_8007993C(s32 objectIndex, Player *player) { void init_obj_lakitu_red_flag_fishing(s32 objectIndex, s32 arg1) { func_800791F0(objectIndex, arg1); - init_texture_object(objectIndex, common_tlut_lakitu_fishing, gTextureLakituFishing1, 0x38U, (u16) 0x00000048); + init_texture_object(objectIndex, (u8*) common_tlut_lakitu_fishing, gTextureLakituFishing1, 0x38U, (u16) 0x00000048); gObjectList[objectIndex].vertex = D_0D005F30; gObjectList[objectIndex].sizeScaling = 0.15f; func_80086E70(objectIndex); @@ -3213,10 +3213,8 @@ void update_object_lakitu_fishing(s32 objectIndex, s32 playerId) { } void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) { + Player *player = &gPlayerOne[playerId]; - Player *temp_s1; - - temp_s1 = &gPlayerOne[playerId]; switch (gObjectList[objectIndex].state) { /* switch 1; irregular */ case 0: /* switch 1 */ break; @@ -3226,7 +3224,7 @@ void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) { case 2: /* switch 1 */ set_object_flag_status_true(objectIndex, 0x00000010); func_800736E0(objectIndex); - temp_s1->unk_0CA |= 0x80; + player->unk_0CA |= 0x80; func_80072488(objectIndex); break; case 3: /* switch 1 */ @@ -3241,15 +3239,15 @@ void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) { } break; case 2: - func_80090868(temp_s1); + func_80090868(player); func_800722A4(objectIndex, 4); func_80073654(objectIndex); break; case 3: - if ((temp_s1->surfaceType == ICE) && !(temp_s1->unk_0CA & 1) && ((f64) temp_s1->unk_110.unk3C[2] <= 30.0)) { + if ((player->surfaceType == ICE) && !(player->unk_0CA & 1) && ((f64) player->collision.surfaceDistance[2] <= 30.0)) { func_800722A4(objectIndex, 8); } - if (!(temp_s1->unk_0CA & 2)) { + if (!(player->unk_0CA & 2)) { func_80086EAC(objectIndex, 0, 3); func_80073654(objectIndex); } @@ -3258,7 +3256,7 @@ void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) { func_8007375C(objectIndex, 0x0000001E); break; case 5: - temp_s1->unk_0CA &= 0xFF7F; + player->unk_0CA &= 0xFF7F; func_800722A4(objectIndex, 0x00000010); func_800722A4(objectIndex, 0x00000020); func_800722CC(objectIndex, 4); @@ -3269,8 +3267,8 @@ void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) { case 6: if (func_8007375C(objectIndex, 0x000000A0) != 0) { func_800722CC(objectIndex, 0x00000010); - temp_s1->unk_0CA &= 0xFFEF; - temp_s1->unk_0CA |= 0x20; + player->unk_0CA &= 0xFFEF; + player->unk_0CA |= 0x20; } break; case 7: @@ -3279,30 +3277,30 @@ void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) { case 8: func_80073720(objectIndex); func_80072428(objectIndex); - temp_s1->unk_0CA &= 0xFFDF; + player->unk_0CA &= 0xFFDF; func_800722CC(objectIndex, 1); func_800C9018((u8) playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28)); break; } if (gObjectList[objectIndex].state >= 2) { - func_8007993C(objectIndex, temp_s1); + func_8007993C(objectIndex, player); } - func_80079A5C(objectIndex, temp_s1); + func_80079A5C(objectIndex, player); } void func_8007A060(s32 objectIndex, s32 playerIndex) { - Objects *temp_v0; + Object *object; func_800791F0(objectIndex, playerIndex); - init_texture_object(objectIndex, common_tlut_lakitu_second_lap, gTextureLakituSecondLap01, 0x48U, (u16) 0x00000038); - temp_v0 = &gObjectList[objectIndex]; - temp_v0->activeTexture = D_8018C028; - temp_v0->vertex = D_0D006730; - temp_v0->pos[2] = 5000.0f; - temp_v0->pos[1] = 5000.0f; - temp_v0->pos[0] = 5000.0f; - temp_v0->sizeScaling = 0.15f; + init_texture_object(objectIndex, (u8*) common_tlut_lakitu_second_lap, gTextureLakituSecondLap01, 0x48U, (u16) 0x00000038); + object = &gObjectList[objectIndex]; + object->activeTexture = D_8018C028; + object->vertex = common_vtx_also_lakitu; + object->pos[2] = 5000.0f; + object->pos[1] = 5000.0f; + object->pos[0] = 5000.0f; + object->sizeScaling = 0.15f; set_object_flag_status_false(objectIndex, 0x00000010); func_80086F10(objectIndex, 5, &D_800E694C); func_80072488(objectIndex); @@ -3340,17 +3338,17 @@ void update_object_lakitu_second_lap(s32 objectIndex, s32 playerIndex) { } void func_8007A228(s32 objectIndex, s32 playerIndex) { - Objects *temp_v0; + Object *object; func_800791F0(objectIndex, playerIndex); - init_texture_object(objectIndex, common_tlut_lakitu_final_lap, gTextureLakituFinalLap01, 0x48U, (u16) 0x00000038); - temp_v0 = &gObjectList[objectIndex]; - temp_v0->activeTexture = D_8018C028; - temp_v0->vertex = D_0D006730; - temp_v0->pos[2] = 5000.0f; - temp_v0->pos[1] = 5000.0f; - temp_v0->pos[0] = 5000.0f; - temp_v0->sizeScaling = 0.15f; + init_texture_object(objectIndex, (u8*) common_tlut_lakitu_final_lap, gTextureLakituFinalLap01, 0x48U, (u16) 0x00000038); + object = &gObjectList[objectIndex]; + object->activeTexture = D_8018C028; + object->vertex = common_vtx_also_lakitu; + object->pos[2] = 5000.0f; + object->pos[1] = 5000.0f; + object->pos[0] = 5000.0f; + object->sizeScaling = 0.15f; set_object_flag_status_false(objectIndex, 0x00000010); func_80086F10(objectIndex, 5, &D_800E694C); func_80072488(objectIndex); @@ -3390,9 +3388,9 @@ void update_object_lakitu_final_lap(s32 objectIndex, s32 playerIndex) { void func_8007A3F0(s32 objectIndex, s32 arg1) { f32 var = 5000.0f; func_800791F0(objectIndex, arg1); - init_texture_object(objectIndex, common_tlut_lakitu_reverse, gTextureLakituReverse01, 0x48U, (u16) 0x00000038); + init_texture_object(objectIndex, (u8*) common_tlut_lakitu_reverse, gTextureLakituReverse01, 0x48U, (u16) 0x00000038); gObjectList[objectIndex].activeTexture = D_8018C028; - gObjectList[objectIndex].vertex = D_0D006730; + gObjectList[objectIndex].vertex = common_vtx_also_lakitu; gObjectList[objectIndex].pos[2] = var; gObjectList[objectIndex].pos[1] = var; gObjectList[objectIndex].pos[0] = var; @@ -3565,7 +3563,7 @@ void func_8007AA44(s32 playerId) { void func_8007ABFC(s32 playerId, bool arg1) { s32 itemWindow; - if (playerHUD[playerId].raceCompleteBool == FALSE) { + if (playerHUD[playerId].raceCompleteBool == false) { itemWindow = gItemWindowObjectByPlayerId[playerId]; if (func_80072354(itemWindow, 4) != 0) { init_object(itemWindow, 0); @@ -3585,7 +3583,7 @@ void consume_item(s32 playerId) { player = &gPlayerOne[playerId]; objectIndex = gItemWindowObjectByPlayerId[playerId]; - itemWindow = &gObjectList[objectIndex]; + itemWindow = (ItemWindowObjects *) &gObjectList[objectIndex]; if (itemWindow->currentItem == ITEM_SUPER_MUSHROOM) { if (func_80072354(objectIndex, 2) != 0) { func_800722A4(objectIndex, 2); @@ -3642,15 +3640,16 @@ u8 gen_random_item(s16 rank, s16 isCpu) } randomItem = *((rank * 100) + curve + sRandomItemIndex); } + return randomItem; } u8 gen_random_item_human(UNUSED s16 arg0, s16 rank) { - return gen_random_item(rank, FALSE); + return gen_random_item(rank, false); } u8 kart_ai_gen_random_item(UNUSED s32 arg0, s16 rank) { - return gen_random_item(rank, TRUE); + return gen_random_item(rank, true); } s16 func_8007AFB0(s32 objectIndex, s32 arg1) { @@ -3658,7 +3657,7 @@ s16 func_8007AFB0(s32 objectIndex, s32 arg1) { s16 randomItem; randomItem = gen_random_item_human(gLapCountByPlayerId[arg1], gGPCurrentRaceRankByPlayerId[arg1]); - + if (playerHUD[arg1].itemOverride != 0) { randomItem = (s16) playerHUD[arg1].itemOverride; playerHUD[arg1].itemOverride = 0; @@ -3670,7 +3669,7 @@ s16 func_8007AFB0(s32 objectIndex, s32 arg1) { } s32 func_8007B040(s32 objectIndex, s32 playerId) { - s16 stackPadding; + UNUSED s16 stackPadding; s32 temp_v1; s32 var_a3; s32 var_t3; @@ -3757,7 +3756,7 @@ void func_8007B254(s32 objectIndex, s32 arg1) { void func_8007B34C(s32 playerId) { s32 temp_s0; s32 sp40; - Objects *temp_t0; + Object *object; Player *sp38; struct Controller *new_var; @@ -3771,8 +3770,8 @@ void func_8007B34C(s32 playerId) { if (D_80165888 != 0) { init_object(temp_s0, 0); } - temp_t0 = &gObjectList[temp_s0]; - switch (temp_t0->state) { + object = &gObjectList[temp_s0]; + switch (object->state) { case 1: func_8007B254(temp_s0, playerId); break; @@ -3811,20 +3810,20 @@ void func_8007B34C(s32 playerId) { func_80072E54(temp_s0, 1, 4, 1, 0x00000010, 1); break; case 6: - temp_t0->itemDisplay = func_8007AFB0(temp_s0, playerId); - temp_t0->unk_04C = 8; - temp_t0->unk_0D6 = 2; + object->itemDisplay = func_8007AFB0(temp_s0, playerId); + object->unk_04C = 8; + object->unk_0D6 = 2; func_80072488(temp_s0); func_800C9018((u8) playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFE, 0x1C)); func_800C8F80((u8) playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFE, 0x47)); break; case 7: - func_80072D3C(temp_s0, (s32) temp_t0->unk_0A2, 0, 8, 0x0000000A); + func_80072D3C(temp_s0, (s32) object->unk_0A2, 0, 8, 0x0000000A); break; case 9: func_800722CC(temp_s0, 4); func_80073600(temp_s0); - temp_t0->itemDisplay = 0; + object->itemDisplay = 0; func_80072488(temp_s0); break; case 10: @@ -3855,55 +3854,55 @@ void func_8007B34C(s32 playerId) { func_80072428(temp_s0); break; case 20: - if (temp_t0->unk_0A2 == 0x000B) { - func_80072D3C(temp_s0, temp_t0->unk_0A2, 0, 8, 0x0000000A); + if (object->unk_0A2 == 0x000B) { + func_80072D3C(temp_s0, object->unk_0A2, 0, 8, 0x0000000A); } else { - func_80072D3C(temp_s0, temp_t0->unk_0A2, 0x0000000B, 8, 0x0000000A); + func_80072D3C(temp_s0, object->unk_0A2, 0x0000000B, 8, 0x0000000A); } break; case 21: func_800726CC(temp_s0, 8); - temp_t0->unk_0D6 = 2; + object->unk_0D6 = 2; break; case 30: - if (temp_t0->unk_0A2 == 0x000B) { - func_80072D3C(temp_s0, temp_t0->unk_0A2, 0, 8, 0x0000000A); + if (object->unk_0A2 == 0x000B) { + func_80072D3C(temp_s0, object->unk_0A2, 0, 8, 0x0000000A); } else { - func_80072D3C(temp_s0, temp_t0->unk_0A2, 0x0000000B, 8, 0x0000000A); + func_80072D3C(temp_s0, object->unk_0A2, 0x0000000B, 8, 0x0000000A); } break; case 31: func_800726CC(temp_s0, 9); break; case 40: - if (temp_t0->unk_0A2 == 0x000D) { - func_80072D3C(temp_s0, temp_t0->unk_0A2, 0x0000000E, 8, 0x0000000A); + if (object->unk_0A2 == 0x000D) { + func_80072D3C(temp_s0, object->unk_0A2, 0x0000000E, 8, 0x0000000A); } else { - func_80072D3C(temp_s0, temp_t0->unk_0A2, 0x0000000D, 8, 0x0000000A); + func_80072D3C(temp_s0, object->unk_0A2, 0x0000000D, 8, 0x0000000A); } break; case 41: func_800726CC(temp_s0, 8); break; case 50: - func_80072D3C(temp_s0, (s32) temp_t0->unk_0A2, 0, 8, 0x00000064); + func_80072D3C(temp_s0, (s32) object->unk_0A2, 0, 8, 0x00000064); break; case 0: default: break; } if (func_80072320(temp_s0, 2) != 0) { - if (temp_t0->timer == 0) { + if (object->timer == 0) { consume_item(playerId); } else { - temp_t0->timer--; + object->timer--; } } - if (temp_t0->unk_04C >= 0) { - if (temp_t0->unk_04C > 0) { - temp_t0->unk_04C--; + if (object->unk_04C >= 0) { + if (object->unk_04C > 0) { + object->unk_04C--; } else { - switch (temp_t0->unk_0D6) { /* switch 1; irregular */ + switch (object->unk_0D6) { /* switch 1; irregular */ case 1: /* switch 1 */ if (sp40 != 0) { func_80073600(temp_s0); @@ -3911,23 +3910,23 @@ void func_8007B34C(s32 playerId) { } break; case 2: /* switch 1 */ - set_type_object(temp_s0, (s32) temp_t0->unk_0A2); - temp_t0->unk_0D6 = 3; + set_type_object(temp_s0, (s32) object->unk_0A2); + object->unk_0D6 = 3; break; case 3: /* switch 1 */ - if (temp_t0->type == 0) { + if (object->type == 0) { if (func_80072354(temp_s0, 1) != 0) { - if (temp_t0->unk_0A2 == 0x000B) { + if (object->unk_0A2 == 0x000B) { if (func_8007B040(temp_s0, playerId) != 0) { func_800726CC(temp_s0, 0x00000014); - temp_t0->unk_0D6 = 0; + object->unk_0D6 = 0; } else { func_800726CC(temp_s0, 9); } - } else if ((temp_t0->unk_0A2 == 0x000D) || (temp_t0->unk_0A2 == 0x000E)) { - temp_t0->unk_0A2--; - set_type_object(temp_s0, (s32) temp_t0->unk_0A2); - temp_t0->unk_0D6 = 3; + } else if ((object->unk_0A2 == 0x000D) || (object->unk_0A2 == 0x000E)) { + object->unk_0A2--; + set_type_object(temp_s0, (s32) object->unk_0A2); + object->unk_0D6 = 3; func_800726CC(temp_s0, 0x00000028); } else { func_800726CC(temp_s0, 9); @@ -3935,16 +3934,16 @@ void func_8007B34C(s32 playerId) { } else { func_800722CC(temp_s0, 1); func_800726CC(temp_s0, 0x0000001E); - temp_t0->unk_0D6 = 0; + object->unk_0D6 = 0; } } break; } } } - temp_t0->activeTLUT = gItemWindowTLUTs[temp_t0->itemDisplay]; - temp_t0->activeTexture = gItemWindowTextures[temp_t0->itemDisplay]; - sp38->currentItemCopy = temp_t0->type; + object->activeTLUT = (u8*) gItemWindowTLUTs[object->itemDisplay]; + object->activeTexture = gItemWindowTextures[object->itemDisplay]; + sp38->currentItemCopy = object->type; } void func_8007BB9C(s32 arg0) { @@ -3953,14 +3952,14 @@ void func_8007BB9C(s32 arg0) { void func_8007BBBC(s32 objectIndex) { f32 var_f14; - Objects *temp_s1; + Object *object; - temp_s1 = &gObjectList[objectIndex]; - switch (temp_s1->state) { /* irregular */ + object = &gObjectList[objectIndex]; + switch (object->state) { /* irregular */ case 1: func_800735BC(objectIndex, d_course_banshee_boardwalk_dl_cheep_cheep, 2.0f); set_object_flag_status_true(objectIndex, 0x00000010); - temp_s1->unk_0D5 = 0; + object->unk_0D5 = 0; break; case 2: if (gIsMirrorMode != 0) { @@ -3968,12 +3967,12 @@ void func_8007BBBC(s32 objectIndex) { } else { func_80087E08(objectIndex, 18.0f, 0.7f, 25.0f, (s16) 0x00005800, 0x0000012C); } - if (temp_s1->velocity[2] < 0.0f) { - var_f14 = -temp_s1->velocity[2]; + if (object->velocity[2] < 0.0f) { + var_f14 = -object->velocity[2]; } else { - var_f14 = temp_s1->velocity[2]; + var_f14 = object->velocity[2]; } - temp_s1->direction_angle[0] = func_80041658(temp_s1->velocity[1], var_f14); + object->direction_angle[0] = func_80041658(object->velocity[1], var_f14); func_8007278C(objectIndex, 0x00000046); break; case 3: @@ -4007,13 +4006,13 @@ void update_cheep_cheep_race(void) { } void init_var_cheep_cheep(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->unk_0D5 = 1; - temp_v0->status = 0; - temp_v0->model = d_course_banshee_boardwalk_dl_cheep_cheep; - temp_v0->sizeScaling = 0.2f; + object = &gObjectList[objectIndex]; + object->unk_0D5 = 1; + object->status = 0; + object->model = d_course_banshee_boardwalk_dl_cheep_cheep; + object->sizeScaling = 0.2f; func_80072488(objectIndex); set_obj_origin_pos(objectIndex, D_800E634C[0][0], D_800E634C[0][1] + 55.0, D_800E634C[0][2]); set_obj_origin_offset(objectIndex, 0.0f, 30.0f, 0.0f); @@ -4021,10 +4020,10 @@ void init_var_cheep_cheep(s32 objectIndex) { } void func_8007BEC8(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - switch (temp_v0->state) { + object = &gObjectList[objectIndex]; + switch (object->state) { case 1: init_var_cheep_cheep(objectIndex); break; @@ -4035,7 +4034,7 @@ void func_8007BEC8(s32 objectIndex) { } break; case 3: - if (temp_v0->unk_0AE == 0) { + if (object->unk_0AE == 0) { func_80072488(objectIndex); } break; @@ -4045,7 +4044,7 @@ void func_8007BEC8(s32 objectIndex) { } break; case 5: - if (temp_v0->unk_0AE == 0) { + if (object->unk_0AE == 0) { func_80072428(objectIndex); } break; @@ -4056,47 +4055,47 @@ void func_8007BEC8(s32 objectIndex) { } void func_8007BFB0(s32 objectIndex) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - switch (temp_s0->unk_0AE) { + object = &gObjectList[objectIndex]; + switch (object->unk_0AE) { case 0: break; case 1: - temp_s0->velocity[1] = -0.2f; - if ((f64) temp_s0->offset[1] <= 0.0) { - temp_s0->offset[1] = 0.0f; - temp_s0->velocity[1] = 0.0f; + object->velocity[1] = -0.2f; + if ((f64) object->offset[1] <= 0.0) { + object->offset[1] = 0.0f; + object->velocity[1] = 0.0f; func_80086F60(objectIndex); } break; case 2: if (func_800871AC(objectIndex, 0x00000014) != 0) { - temp_s0->unk_084[7] = 0x0040; + object->unk_084[7] = 0x0040; } break; case 3: - temp_s0->sizeScaling = (f32) ((f64) temp_s0->sizeScaling - 0.0015); - if ((s32) temp_s0->direction_angle[0] >= 0xA01) { - temp_s0->unk_084[7] -= 4; + object->sizeScaling = (f32) ((f64) object->sizeScaling - 0.0015); + if ((s32) object->direction_angle[0] >= 0xA01) { + object->unk_084[7] -= 4; } - if (u16_step_up_towards(temp_s0->direction_angle, 0x0C00U, (u16) temp_s0->unk_084[7]) != 0) { + if (u16_step_up_towards(object->direction_angle, 0x0C00U, (u16) object->unk_084[7]) != 0) { func_80086FD4(objectIndex); } break; case 4: - temp_s0->sizeScaling = (f32) ((f64) temp_s0->sizeScaling - 0.0015); - temp_s0->unk_034 = 0.001f; + object->sizeScaling = (f32) ((f64) object->sizeScaling - 0.0015); + object->unk_034 = 0.001f; func_80086FD4(objectIndex); - temp_s0->unk_084[7] = 0; + object->unk_084[7] = 0; break; case 5: - if (temp_s0->unk_034 <= 0.004) { - temp_s0->unk_034 += 0.0002; + if (object->unk_034 <= 0.004) { + object->unk_034 += 0.0002; } - temp_s0->sizeScaling += temp_s0->unk_034; - s16_step_up_towards(&temp_s0->unk_084[7], 0x0100, 0x0010); - temp_s0->direction_angle[0] -= temp_s0->unk_084[7]; + object->sizeScaling += object->unk_034; + s16_step_up_towards(&object->unk_084[7], 0x0100, 0x0010); + object->direction_angle[0] -= object->unk_084[7]; if (func_80087060(objectIndex, 0x00000035) != 0) { func_80086FD4(objectIndex); } @@ -4108,10 +4107,10 @@ void func_8007BFB0(s32 objectIndex) { } break; case 7: - temp_s0->sizeScaling = (f32) ((f64) temp_s0->sizeScaling - 0.05); - if ((f64) temp_s0->sizeScaling <= 0.01) { + object->sizeScaling = (f32) ((f64) object->sizeScaling - 0.05); + if ((f64) object->sizeScaling <= 0.01) { set_object_flag_status_false(objectIndex, 0x00000010); - temp_s0->sizeScaling = 0.000001f; + object->sizeScaling = 0.000001f; func_80086FD4(objectIndex); } break; @@ -4119,8 +4118,8 @@ void func_8007BFB0(s32 objectIndex) { func_80086F60(objectIndex); break; } - if (temp_s0->unk_0AE < 0xA) { - func_80074344(objectIndex, &temp_s0->sizeScaling, 0.2f, 0.21f, 0.001f, 0, -1); + if (object->unk_0AE < 0xA) { + func_80074344(objectIndex, &object->sizeScaling, 0.2f, 0.21f, 0.001f, 0, -1); } object_add_velocity_offset_y(objectIndex); object_calculate_new_pos_offset(objectIndex); @@ -4155,34 +4154,20 @@ void wrapper_update_boos(void) { update_boos(); } -#ifdef NON_MATCHING -// https://decomp.me/scratch/9JBIl -// No idea what the source of the diff is -void func_8007C360(s32 objectIndex, Camera *camera) { - s32 temp_t0; - s32 var_t1; - Objects *temp_a2; +// Updates the display status on an object based on its relative direction to the camera +void func_8007C360(s32 objectIndex, Camera* camera) { + u16 rot = camera->rot[1]; + u16 temp = ((u16)(gObjectList[objectIndex].direction_angle[1] - rot + 0x8000) * 0x24) / 0x10000; - temp_a2 = &gObjectList[objectIndex]; - temp_t0 = (u16)camera->rot[1]; - temp_t0 = (((temp_a2->direction_angle[1] - temp_t0) + 0x8000) & 0xFFFF) * 0x24; - var_t1 = temp_t0 >> 0x10; - if (temp_t0 < 0) { - var_t1 = temp_t0 + 0xFFFF; - var_t1 >>= 0x10; - } - var_t1 &= 0xFFFF; - if (var_t1 < 0x13) { + if (temp < 0x13) { set_object_flag_status_false(objectIndex, 0x80); - temp_a2->itemDisplay = var_t1; + gObjectList[objectIndex].itemDisplay = temp; } else { set_object_flag_status_true(objectIndex, 0x80); - temp_a2->itemDisplay = 0x24 - var_t1; + gObjectList[objectIndex].itemDisplay = 0x24 - temp; } + } -#else -GLOBAL_ASM("asm/non_matchings/update_objects/func_8007C360.s") -#endif void func_8007C420(s32 objectIndex, Player *player, Camera *camera) { f32 x; @@ -4198,32 +4183,19 @@ UNUSED void func_8007C49C(void) { } -#ifdef NON_MATCHING -// https://decomp.me/scratch/IH8Vx -// No idea what the source of the diff is void func_8007C4A4(s32 objectIndex) { - s32 temp_t8; - s32 var_t1; + u16 var_t9; - temp_t8 = gObjectList[objectIndex].direction_angle[1] * 0x24; - var_t1 = temp_t8 >> 0x10; - if (temp_t8 < 0) { - var_t1 = temp_t8 + 0xFFFF; - var_t1 >>= 0x10; - } - var_t1 &= 0xFFFF; - if (var_t1 < 0x13) { + var_t9 = gObjectList[objectIndex].direction_angle[1] * 0x24 / 0x10000; + + if (var_t9 < 0x13) { set_object_flag_status_false(objectIndex, 0x80); - gObjectList[objectIndex].itemDisplay = var_t1; - } - else { + gObjectList[objectIndex].itemDisplay = var_t9; + } else { set_object_flag_status_true(objectIndex, 0x80); - gObjectList[objectIndex].itemDisplay = 0x24 - var_t1; + gObjectList[objectIndex].itemDisplay = 0x24 - var_t9; } } -#else -GLOBAL_ASM("asm/non_matchings/update_objects/func_8007C4A4.s") -#endif void func_8007C550(s32 objectIndex) { gObjectList[objectIndex].direction_angle[1] = func_800417B4(gObjectList[objectIndex].direction_angle[1], atan2s(gObjectList[objectIndex].velocity[0], gObjectList[objectIndex].velocity[2])); @@ -4231,24 +4203,24 @@ void func_8007C550(s32 objectIndex) { } void func_8007C5B4(s32 objectIndex) { - Objects *temp_s0; + Object *object; init_texture_object(objectIndex, d_course_banshee_boardwalk_boo_tlut, D_80165880, 48, 40); - temp_s0 = &gObjectList[objectIndex]; - temp_s0->pos[0] = 0.0f; - temp_s0->pos[1] = 0.0f; - temp_s0->pos[2] = 0.0f; + object = &gObjectList[objectIndex]; + object->pos[0] = 0.0f; + object->pos[1] = 0.0f; + object->pos[2] = 0.0f; set_object_flag_status_true(objectIndex, 0x00000020); func_80072488(objectIndex); - temp_s0->primAlpha = 0; + object->primAlpha = 0; func_80073844(objectIndex); - temp_s0->sizeScaling = 0.15f; - temp_s0->unk_034 = 1.0f; + object->sizeScaling = 0.15f; + object->unk_034 = 1.0f; func_80073FD4(objectIndex); func_80086EF0(objectIndex); set_object_flag_status_true(objectIndex, 0x00000800); - temp_s0->orientation[0] = 0; - temp_s0->orientation[2] = 0x8000; + object->orientation[0] = 0; + object->orientation[2] = 0x8000; } void func_8007C684(s32 objectIndex) { @@ -4403,7 +4375,7 @@ void update_boos(void) { s32 objectIndex; Player *player; Camera *camera; - Objects *object; + Object *object; func_8007CA70(); for (someIndex = 0; someIndex < NUM_BOOS; someIndex++) { @@ -4429,28 +4401,28 @@ void update_boos(void) { } void func_8007CE0C(s32 objectIndex) { - Objects *temp_s0; + Object *object; init_texture_object(objectIndex, d_course_banshee_boardwalk_boo_tlut, gTextureGhosts, 0x30U, (u16) 0x00000028); - temp_s0 = &gObjectList[objectIndex]; - temp_s0->itemDisplay = 0x1C; - temp_s0->pos[0] = 0.0f; - temp_s0->pos[1] = 0.0f; - temp_s0->pos[2] = 0.0f; - temp_s0->sizeScaling = 0.15f; + object = &gObjectList[objectIndex]; + object->itemDisplay = 0x1C; + object->pos[0] = 0.0f; + object->pos[1] = 0.0f; + object->pos[2] = 0.0f; + object->sizeScaling = 0.15f; func_80072488(objectIndex); - temp_s0->primAlpha = 0; + object->primAlpha = 0; func_80073844(objectIndex); func_80086EF0(objectIndex); - temp_s0->direction_angle[2] = 0x8000; - temp_s0->direction_angle[1] = atan2s(D_8018CF1C->pos[0] - temp_s0->origin_pos[0], D_8018CF1C->pos[2] - temp_s0->origin_pos[2]); + object->direction_angle[2] = 0x8000; + object->direction_angle[1] = atan2s(D_8018CF1C->pos[0] - object->origin_pos[0], D_8018CF1C->pos[2] - object->origin_pos[2]); } void func_8007CEDC(s32 objectIndex) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - switch (temp_s0->state) { /* switch 1 */ + object = &gObjectList[objectIndex]; + switch (object->state) { /* switch 1 */ case 0: /* switch 1 */ break; case 1: /* switch 1 */ @@ -4468,21 +4440,21 @@ void func_8007CEDC(s32 objectIndex) { default: /* switch 2 */ break; } - if (temp_s0->state >= 2) { - func_80072950(objectIndex, (s32) temp_s0->unk_0DC, 0, 4); + if (object->state >= 2) { + func_80072950(objectIndex, (s32) object->unk_0DC, 0, 4); func_80073514(objectIndex); - switch (temp_s0->unk_0DC) { /* switch 2 */ + switch (object->unk_0DC) { /* switch 2 */ case 1: /* switch 2 */ - func_80073998(objectIndex, &temp_s0->primAlpha, 0x00000028, 0x00000050, 4, 0, 0); + func_80073998(objectIndex, &object->primAlpha, 0x00000028, 0x00000050, 4, 0, 0); break; case 2: /* switch 2 */ - func_80073CB0(objectIndex, &temp_s0->primAlpha, 0x00000050, 0x000000B4, 2, 0, -1); - if ((temp_s0->unk_0AE == 0) || (temp_s0->state == 3)) { - temp_s0->unk_0DC += 1; + func_80073CB0(objectIndex, &object->primAlpha, 0x00000050, 0x000000B4, 2, 0, -1); + if ((object->unk_0AE == 0) || (object->state == 3)) { + object->unk_0DC += 1; } break; case 3: /* switch 2 */ - func_80073DC0(objectIndex, &temp_s0->primAlpha, 0, 4); + func_80073DC0(objectIndex, &object->primAlpha, 0, 4); break; case 4: /* switch 2 */ func_80073884(objectIndex); @@ -4578,14 +4550,14 @@ void func_8007D360(s32 objectIndex, s32 arg1) { void func_8007D6A8(s32 objectIndex, s32 arg1) { UNUSED s32 pad[2]; - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->unk_0D5 = 0x0D; + object = &gObjectList[objectIndex]; + object->unk_0D5 = 0x0D; func_8007D360(objectIndex, arg1); - temp_v0->sizeScaling = 0.1f; + object->sizeScaling = 0.1f; set_object_flag_status_true(objectIndex, 0x00000200); - temp_v0->boundingBoxSize = 3; + object->boundingBoxSize = 3; } void func_8007D714(s32 arg0) { @@ -4693,7 +4665,7 @@ void func_8007DAF8(s32 objectIndex, s32 arg1) { void update_bat(void) { s32 var_s2; s32 temp_s0; - Objects *temp_s1; + Object *object; if (D_8018CFC8 != 0) { D_8018CFC8 -= 1; @@ -4704,22 +4676,22 @@ void update_bat(void) { temp_s0 = indexObjectList1[0]; func_80072E54(temp_s0, 0, 3, 1, 0, -1); func_80073514(temp_s0); - temp_s1 = &gObjectList[temp_s0]; - func_80073CB0(temp_s0, &temp_s1->primAlpha, -0x00001000, 0x00001000, 0x00000400, 0, -1); - temp_s1->orientation[2] = temp_s1->primAlpha + 0x8000; + object = &gObjectList[temp_s0]; + func_80073CB0(temp_s0, &object->primAlpha, -0x00001000, 0x00001000, 0x00000400, 0, -1); + object->orientation[2] = object->primAlpha + 0x8000; if ((D_8018CFB0 != 0) || (D_8018CFC8 != 0)) { D_8018CFD8 = 0; for (var_s2 = 0; var_s2 < 40; var_s2++) { temp_s0 = gObjectParticle2[var_s2]; if (temp_s0 == -1) continue; - temp_s1 = &gObjectList[temp_s0]; - if (temp_s1->state == 0) continue; + object = &gObjectList[temp_s0]; + if (object->state == 0) continue; func_8007D8D4(temp_s0, 1); func_8007DAF8(temp_s0, 1); func_8007D794(temp_s0); - if (temp_s1->state == 0) { + if (object->state == 0) { delete_object_wrapper(&gObjectParticle2[var_s2]); } D_8018CFD8 += 1; @@ -4734,13 +4706,13 @@ void update_bat(void) { temp_s0 = gObjectParticle3[var_s2]; if (temp_s0 == -1) continue; - temp_s1 = &gObjectList[temp_s0]; - if (temp_s1->state == 0) continue; + object = &gObjectList[temp_s0]; + if (object->state == 0) continue; func_8007D8D4(temp_s0, 2); func_8007DAF8(temp_s0, 2); func_8007D794(temp_s0); - if (temp_s1->state == 0) { + if (object->state == 0) { delete_object_wrapper(&gObjectParticle3[var_s2]); } D_8018D010 += 1; @@ -4753,41 +4725,41 @@ void update_bat(void) { void func_8007DDC0(s32 objectIndex) { f32 sp2C; - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - if (temp_s0->unk_04C > 0) { - temp_s0->unk_04C--; - if (temp_s0->unk_04C == 0) { + object = &gObjectList[objectIndex]; + if (object->unk_04C > 0) { + object->unk_04C--; + if (object->unk_04C == 0) { func_800722CC(objectIndex, 1); } } - if (temp_s0->unk_048 > 0) { - temp_s0->unk_048--; - if (temp_s0->unk_048 == 0) { - func_800C9EF4(temp_s0->pos, SOUND_ARG_LOAD(0x51, 0x02, 0x80, 0x06)); + if (object->unk_048 > 0) { + object->unk_048--; + if (object->unk_048 == 0) { + func_800C9EF4(object->pos, SOUND_ARG_LOAD(0x51, 0x02, 0x80, 0x06)); } } - if (temp_s0->unk_04C == 0) { + if (object->unk_04C == 0) { if ((gCCSelection == CC_50) || (gCCSelection == CC_100) || (gCCSelection == CC_150) || (gCCSelection == CC_EXTRA)) { sp2C = 1150.0f; } func_8008A6DC(objectIndex, sp2C); if ((is_obj_flag_status_active(objectIndex, VISIBLE) != 0) && (func_80072354(objectIndex, 1) != 0)) { func_800722A4(objectIndex, 1); - func_800C9D80(temp_s0->pos, temp_s0->velocity, SOUND_ARG_LOAD(0x51, 0x02, 0x80, 0x06)); + func_800C9D80(object->pos, object->velocity, SOUND_ARG_LOAD(0x51, 0x02, 0x80, 0x06)); func_800726CC(objectIndex, 3); - if (temp_s0->type > 0) { - temp_s0->type--; - temp_s0->unk_04C = 0x00000168; + if (object->type > 0) { + object->type--; + object->unk_04C = 0x00000168; } else { - temp_s0->unk_04C = 0x00000168; + object->unk_04C = 0x00000168; } - temp_s0->unk_048 = 0x0000012C; + object->unk_048 = 0x0000012C; } } if (func_8008A8B0(0x000F, 0x0012) == 0) { - temp_s0->type = 2; + object->type = 2; } } @@ -4871,41 +4843,41 @@ void update_trash_bin(void) { void func_8007E1F4(s32 objectIndex) { f32 sp2C; - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - if (temp_s0->unk_04C > 0) { - temp_s0->unk_04C--; - if (temp_s0->unk_04C == 0) { + object = &gObjectList[objectIndex]; + if (object->unk_04C > 0) { + object->unk_04C--; + if (object->unk_04C == 0) { func_800722CC(objectIndex, 1); } } - if (temp_s0->unk_048 > 0) { - temp_s0->unk_048--; - if (temp_s0->unk_048 == 0) { - func_800C9EF4(temp_s0->pos, SOUND_ARG_LOAD(0x51, 0x02, 0x80, 0x06)); + if (object->unk_048 > 0) { + object->unk_048--; + if (object->unk_048 == 0) { + func_800C9EF4(object->pos, SOUND_ARG_LOAD(0x51, 0x02, 0x80, 0x06)); } } - if (temp_s0->unk_04C == 0) { + if (object->unk_04C == 0) { if ((gCCSelection == CC_50) || (gCCSelection == CC_100) || (gCCSelection == CC_150) || (gCCSelection == CC_EXTRA)) { sp2C = 700.0f; } func_8008A6DC(objectIndex, sp2C); if ((is_obj_flag_status_active(objectIndex, VISIBLE) != 0) && (func_80072354(objectIndex, 1) != 0)) { func_800722A4(objectIndex, 1); - func_800C9D80(temp_s0->pos, temp_s0->velocity, SOUND_ARG_LOAD(0x51, 0x02, 0x80, 0x06)); + func_800C9D80(object->pos, object->velocity, SOUND_ARG_LOAD(0x51, 0x02, 0x80, 0x06)); func_800726CC(objectIndex, 3); - if (temp_s0->type > 0) { - temp_s0->type--; - temp_s0->unk_04C = 0x00000168; + if (object->type > 0) { + object->type--; + object->unk_04C = 0x00000168; } else { - temp_s0->unk_04C = 0x00000168; + object->unk_04C = 0x00000168; } - temp_s0->unk_048 = 0x0000012C; + object->unk_048 = 0x0000012C; } } if (func_8008A8B0(0x000F, 0x0013) == 0) { - temp_s0->type = 2; + object->type = 2; } } @@ -5124,11 +5096,11 @@ void func_8007E63C(s32 objectIndex) { } void func_8007EC30(s32 objectIndex) { - Objects *temp_s1; + Object *object; - temp_s1 = &gObjectList[objectIndex]; - temp_s1->unk_044 = 0.0f; - temp_s1->origin_pos[1] = 0.0f; + object = &gObjectList[objectIndex]; + object->surfaceHeight = 0.0f; + object->origin_pos[1] = 0.0f; set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); if (gIsMirrorMode != 0) { set_obj_direction_angle(objectIndex, 0U, 0x4000U, 0U); @@ -5138,13 +5110,13 @@ void func_8007EC30(s32 objectIndex) { set_obj_orientation(objectIndex, 0U, 0xC000U, 0U); } init_texture_object(objectIndex, d_course_bowsers_castle_thwomp_tlut, (u8*) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); - temp_s1->model = d_course_bowsers_castle_dl_thwomp; - temp_s1->boundingBoxSize = 0x000C; - temp_s1->sizeScaling = 1.0f; - temp_s1->unk_01C[1] = 30.0f; + object->model = d_course_bowsers_castle_dl_thwomp; + object->boundingBoxSize = 0x000C; + object->sizeScaling = 1.0f; + object->unk_01C[1] = 30.0f; set_object_flag_status_true(objectIndex, 0x05000220); - temp_s1->type = 0; - temp_s1->unk_0DF = 6; + object->type = 0; + object->unk_0DF = 6; func_800724DC(objectIndex); func_80072488(objectIndex); } @@ -5178,21 +5150,21 @@ void func_8007ED6C(s32 objectIndex) { } void func_8007EE5C(s32 objectIndex) { - Objects *temp_s0; + Object *object; init_texture_object(objectIndex, d_course_bowsers_castle_thwomp_tlut, (u8*) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); - temp_s0 = &gObjectList[objectIndex]; - temp_s0->sizeScaling = 1.0f; - temp_s0->model = d_course_bowsers_castle_dl_thwomp; - temp_s0->boundingBoxSize = 0x000C; + object = &gObjectList[objectIndex]; + object->sizeScaling = 1.0f; + object->model = d_course_bowsers_castle_dl_thwomp; + object->boundingBoxSize = 0x000C; set_object_flag_status_true(objectIndex, 0x04000220); - temp_s0->type = 0; - temp_s0->unk_0DF = 6; + object->type = 0; + object->unk_0DF = 6; func_80086E70(objectIndex); - temp_s0->unk_044 = 0.0f; - temp_s0->origin_pos[1] = 0.0f; + object->surfaceHeight = 0.0f; + object->origin_pos[1] = 0.0f; set_obj_origin_offset(objectIndex, 0.0f, 20.0f, 0.0f); - temp_s0->unk_01C[1] = 20.0f; + object->unk_01C[1] = 20.0f; if (gIsMirrorMode != 0) { set_obj_direction_angle(objectIndex, 0U, 0x4000U, 0U); set_obj_orientation(objectIndex, 0U, 0x4000U, 0U); @@ -5200,11 +5172,11 @@ void func_8007EE5C(s32 objectIndex) { set_obj_direction_angle(objectIndex, 0U, 0xC000U, 0U); set_obj_orientation(objectIndex, 0U, 0xC000U, 0U); } - temp_s0->unk_0AE = 1; - if (temp_s0->primAlpha == 0) { - temp_s0->unk_0DD = 1; + object->unk_0AE = 1; + if (object->primAlpha == 0) { + object->unk_0DD = 1; } else { - temp_s0->unk_0DD = 2; + object->unk_0DD = 2; } func_80072488(objectIndex); } @@ -5395,14 +5367,14 @@ void func_8007F5A8(s32 objectIndex) { } void func_8007F660(s32 objectIndex, s32 arg1, s32 arg2) { - Objects *temp_v0; + Object *object; func_800722A4(objectIndex, 8); func_80086E70(objectIndex); - temp_v0 = &gObjectList[objectIndex]; - temp_v0->unk_0DD = 1; - temp_v0->unk_0D1 = arg1; - temp_v0->unk_048 = arg2; + object = &gObjectList[objectIndex]; + object->unk_0DD = 1; + object->unk_0D1 = arg1; + object->unk_048 = arg2; } void func_8007F6C4(s32 objectIndex, s32 playerId) { @@ -5452,7 +5424,7 @@ void func_8007F8D8(void) { s32 var_s0; s32 someIndex; s32 var_s4; - Objects *object; + Object *object; player = gPlayerOne; var_s4 = 1; @@ -5477,17 +5449,17 @@ void func_8007F8D8(void) { } void func_8007FA08(s32 objectIndex) { - Objects *temp_s0; + Object *object; init_texture_object(objectIndex, d_course_bowsers_castle_thwomp_tlut, (u8*) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); - temp_s0 = &gObjectList[objectIndex]; - temp_s0->model = d_course_bowsers_castle_dl_thwomp; - temp_s0->boundingBoxSize = 0x000C; - temp_s0->sizeScaling = 1.0f; + object = &gObjectList[objectIndex]; + object->model = d_course_bowsers_castle_dl_thwomp; + object->boundingBoxSize = 0x000C; + object->sizeScaling = 1.0f; set_object_flag_status_true(objectIndex, 0x04000220); - temp_s0->type = 0; - temp_s0->unk_044 = 0.0f; - temp_s0->origin_pos[1] = 0.0f; + object->type = 0; + object->surfaceHeight = 0.0f; + object->origin_pos[1] = 0.0f; set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); set_obj_direction_angle(objectIndex, 0U, 0U, 0U); if (gIsMirrorMode != 0) { @@ -5495,12 +5467,12 @@ void func_8007FA08(s32 objectIndex) { } else { set_obj_orientation(objectIndex, 0U, 0x4000U, 0U); } - temp_s0->velocity[0] = 0.0f; - temp_s0->direction_angle[1] = temp_s0->orientation[1]; - temp_s0->unk_0DD = 1; - temp_s0->unk_0DF = 8; - temp_s0->offset[1] = 15.0f; - temp_s0->unk_01C[1] = 15.0f; + object->velocity[0] = 0.0f; + object->direction_angle[1] = object->orientation[1]; + object->unk_0DD = 1; + object->unk_0DF = 8; + object->offset[1] = 15.0f; + object->unk_01C[1] = 15.0f; func_80072488(objectIndex); } @@ -5581,12 +5553,12 @@ void func_8007FB48(s32 objectIndex) { } void func_8007FEA4(s32 objectIndex) { - Objects *temp_v1; + Object *object; - temp_v1 = &gObjectList[objectIndex]; - switch (temp_v1->unk_0AE) { + object = &gObjectList[objectIndex]; + switch (object->unk_0AE) { case 1: - if (f32_step_towards(&temp_v1->offset[0], temp_v1->unk_01C[0], 5.0f) != 0) { + if (f32_step_towards(&object->offset[0], object->unk_01C[0], 5.0f) != 0) { func_800726CC(objectIndex, 3); func_80086FD4(objectIndex); break; @@ -5595,7 +5567,7 @@ void func_8007FEA4(s32 objectIndex) { case 2: break; case 3: - if (f32_step_towards(&temp_v1->offset[0], 0.0f, 5.0f) != 0) { + if (f32_step_towards(&object->offset[0], 0.0f, 5.0f) != 0) { func_80086FD4(objectIndex); func_800722CC(objectIndex, 8); } @@ -5637,38 +5609,38 @@ void func_8007FFC0(s32 objectIndex) { } void func_80080078(s32 objectIndex) { - Objects *temp_s0; + Object *object; init_texture_object(objectIndex, d_course_bowsers_castle_thwomp_tlut, (u8*) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); - temp_s0 = &gObjectList[objectIndex]; - temp_s0->model = d_course_bowsers_castle_dl_thwomp; - temp_s0->boundingBoxSize = 0x000C; - temp_s0->sizeScaling = 1.0f; + object = &gObjectList[objectIndex]; + object->model = d_course_bowsers_castle_dl_thwomp; + object->boundingBoxSize = 0x000C; + object->sizeScaling = 1.0f; set_object_flag_status_true(objectIndex, 0x04000220); - temp_s0->type = 2; - temp_s0->unk_0DF = 8; + object->type = 2; + object->unk_0DF = 8; set_obj_direction_angle(objectIndex, 0U, 0U, 0U); - temp_s0->unk_044 = 0.0f; - temp_s0->origin_pos[1] = 0.0f; + object->surfaceHeight = 0.0f; + object->origin_pos[1] = 0.0f; set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); - temp_s0->unk_01C[1] = 30.0f; + object->unk_01C[1] = 30.0f; if (gIsMirrorMode != 0) { set_obj_orientation(objectIndex, 0U, 0x4000U, 0U); } else { set_obj_orientation(objectIndex, 0U, 0xC000U, 0U); } - switch (temp_s0->primAlpha) { /* irregular */ + switch (object->primAlpha) { /* irregular */ case 0: - temp_s0->unk_050 = 2; + object->unk_050 = 2; break; case 1: - temp_s0->unk_050 = 0x0000003C; + object->unk_050 = 0x0000003C; break; case 2: - temp_s0->unk_050 = 0x00000078; + object->unk_050 = 0x00000078; break; case 3: - temp_s0->unk_050 = 0x000000B4; + object->unk_050 = 0x000000B4; break; } func_800724DC(objectIndex); @@ -5676,23 +5648,23 @@ void func_80080078(s32 objectIndex) { } void func_800801FC(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - switch (temp_v0->state) { + object = &gObjectList[objectIndex]; + switch (object->state) { case 0: break; case 1: func_80080078(objectIndex); break; case 2: - func_8007278C(objectIndex, temp_v0->unk_050); + func_8007278C(objectIndex, object->unk_050); break; case 3: func_80072568(objectIndex, 0x00000032); break; case 4: - temp_v0->unk_050 = 0x0000003C; + object->unk_050 = 0x0000003C; func_800726CC(objectIndex, 2); break; } @@ -5702,31 +5674,31 @@ void func_800801FC(s32 objectIndex) { } void func_800802C0(s32 objectIndex) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - temp_s0->unk_0D8 = 0; + object = &gObjectList[objectIndex]; + object->unk_0D8 = 0; init_texture_object(objectIndex, d_course_bowsers_castle_thwomp_tlut, (u8*) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); - temp_s0->model = d_course_bowsers_castle_dl_thwomp; - temp_s0->itemDisplay = 0; - temp_s0->boundingBoxSize = 0x000C; - temp_s0->sizeScaling = 1.5f; + object->model = d_course_bowsers_castle_dl_thwomp; + object->itemDisplay = 0; + object->boundingBoxSize = 0x000C; + object->sizeScaling = 1.5f; set_object_flag_status_true(objectIndex, 0x05000220); - temp_s0->type = 1; - temp_s0->unk_0DF = 6; + object->type = 1; + object->unk_0DF = 6; set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); set_obj_direction_angle(objectIndex, 0U, 0U, 0U); - temp_s0->unk_044 = 0.0f; - temp_s0->origin_pos[1] = 0.0f; - temp_s0->offset[1] = 10.0f; - temp_s0->unk_01C[1] = 10.0f; + object->surfaceHeight = 0.0f; + object->origin_pos[1] = 0.0f; + object->offset[1] = 10.0f; + object->unk_01C[1] = 10.0f; if (gIsMirrorMode != 0) { set_obj_orientation(objectIndex, 0U, 0x4000U, 0U); } else { set_obj_orientation(objectIndex, 0U, 0xC000U, 0U); } - temp_s0->offset[0] = 0.0f; - temp_s0->offset[2] = 0.0f; + object->offset[0] = 0.0f; + object->offset[2] = 0.0f; func_800724DC(objectIndex); func_80072488(objectIndex); } @@ -5761,36 +5733,36 @@ void func_80080408(s32 objectIndex) { } void func_80080524(s32 objectIndex) { - Objects *temp_s0; + Object *object; init_texture_object(objectIndex, d_course_bowsers_castle_thwomp_tlut, (u8*) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); - temp_s0 = &gObjectList[objectIndex]; - temp_s0->model = d_course_bowsers_castle_dl_thwomp; - temp_s0->boundingBoxSize = 0x000C; - temp_s0->itemDisplay = 0; - temp_s0->sizeScaling = 1.0f; + object = &gObjectList[objectIndex]; + object->model = d_course_bowsers_castle_dl_thwomp; + object->boundingBoxSize = 0x000C; + object->itemDisplay = 0; + object->sizeScaling = 1.0f; set_object_flag_status_true(objectIndex, 0x04000220); - temp_s0->type = 0; - temp_s0->unk_0DF = 0x0A; + object->type = 0; + object->unk_0DF = 0x0A; func_80086E70(objectIndex); set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); - temp_s0->unk_044 = 70.0f; - temp_s0->origin_pos[1] = 70.0f; - temp_s0->unk_01C[1] = 0.0f; + object->surfaceHeight = 70.0f; + object->origin_pos[1] = 70.0f; + object->unk_01C[1] = 0.0f; set_obj_direction_angle(objectIndex, 0U, 0U, 0U); if ((gIsMirrorMode != 0) || (gGamestate == 9)) { set_obj_orientation(objectIndex, 0U, 0xC000U, 0U); } else { set_obj_orientation(objectIndex, 0U, 0x4000U, 0U); } - switch (temp_s0->primAlpha) { /* irregular */ + switch (object->primAlpha) { /* irregular */ case 0: - temp_s0->unk_0DD = 2; - temp_s0->velocity[2] = -1.0f; + object->unk_0DD = 2; + object->velocity[2] = -1.0f; break; case 1: - temp_s0->unk_0DD = 2; - temp_s0->velocity[2] = -1.5f; + object->unk_0DD = 2; + object->velocity[2] = -1.5f; break; } func_800722A4(objectIndex, 0x00000080); @@ -5874,7 +5846,7 @@ void func_800808CC(s32 objectIndex) { void func_80080A14(s32 objectIndex, Player *player) { if (is_within_horizontal_distance_of_player(objectIndex, player, 12.0f) != 0) { - player->boundingBoxCorners[0].unk_14 |= 3; + player->tyres[FRONT_LEFT].unk_14 |= 3; } } @@ -5883,7 +5855,7 @@ void func_80080A4C(s32 objectIndex, s32 cameraPlayerId) { Player *player = &gPlayerOne[cameraPlayerId]; if (gScreenModeSelection != SCREEN_MODE_3P_4P_SPLITSCREEN) { - if ((func_80072320(objectIndex, 0x00000010) != 0) && (is_within_horizontal_distance_of_player(objectIndex, player, 500.0f) != FALSE)) { + if ((func_80072320(objectIndex, 0x00000010) != 0) && (is_within_horizontal_distance_of_player(objectIndex, player, 500.0f) != false)) { func_8001CA10(camera); func_800C98B8(gObjectList[objectIndex].pos, gObjectList[objectIndex].velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x0F)); } @@ -5963,7 +5935,7 @@ void func_80080E8C(s32 objectIndex1, s32 objectIndex2, s32 arg2) { thing1 = func_800416D8(temp_v1[1], temp_v1[0], anAngle); thing0 = func_80041724(temp_v1[1], temp_v1[0], anAngle); gObjectList[objectIndex1].origin_pos[0] = gObjectList[objectIndex2].pos[0] + thing0; - gObjectList[objectIndex1].origin_pos[1] = gObjectList[objectIndex2].unk_044 - 9.0; + gObjectList[objectIndex1].origin_pos[1] = gObjectList[objectIndex2].surfaceHeight - 9.0; gObjectList[objectIndex1].origin_pos[2] = gObjectList[objectIndex2].pos[2] + thing1; anAngle = D_800E597C[arg2] + gObjectList[objectIndex2].direction_angle[1]; gObjectList[objectIndex1].velocity[0] = sins(anAngle) * 0.6; @@ -5985,19 +5957,19 @@ void func_80080FEC(s32 arg0) { } void func_80081080(s32 objectIndex) { - Objects *temp_v0; + Object *object; - temp_v0 = &gObjectList[objectIndex]; - temp_v0->activeTexture = D_8018D490; - temp_v0->textureList = D_8018D490; - temp_v0->primAlpha = 0x00FF; - temp_v0->direction_angle[1] = 0; - temp_v0->orientation[0] = 0; - temp_v0->orientation[2] = 0; - temp_v0->offset[0] = 0.0f; - temp_v0->offset[1] = 0.0f; - temp_v0->offset[2] = 0.0f; - temp_v0->sizeScaling = 0.25f; + object = &gObjectList[objectIndex]; + object->activeTexture = D_8018D490; + object->textureList = D_8018D490; + object->primAlpha = 0x00FF; + object->direction_angle[1] = 0; + object->orientation[0] = 0; + object->orientation[2] = 0; + object->offset[0] = 0.0f; + object->offset[1] = 0.0f; + object->offset[2] = 0.0f; + object->sizeScaling = 0.25f; func_80072488(objectIndex); } @@ -6069,7 +6041,7 @@ void func_80081210(void) { } player = gPlayerOne; for (var_s4 = 0; var_s4 < NUM_PLAYERS; var_s4++, player++) { - player->boundingBoxCorners[0].unk_14 &= ~3; + player->tyres[FRONT_LEFT].unk_14 &= ~3; player->unk_046 &= ~0x0006; for (var_s2_3 = 0; var_s2_3 < gNumActiveThwomps; var_s2_3++) { objectIndex = indexObjectList1[var_s2_3]; @@ -6139,7 +6111,7 @@ void func_8008153C(s32 objectIndex) { } void func_80081790(s32 objectIndex) { - switch (gObjectList[objectIndex].state) { + switch (gObjectList[objectIndex].state) { case 0: break; /* irregular */ case 1: @@ -6220,28 +6192,28 @@ void func_80081A88(s32 objectIndex) { void func_80081AFC(s32 objectIndex, s32 arg1) { s8 *sp2C; - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - switch (temp_s0->state) { /* irregular */ + object = &gObjectList[objectIndex]; + switch (object->state) { /* irregular */ case 0x1: func_80081848(objectIndex); break; case 0x2: - if (temp_s0->unk_04C == 0) { + if (object->unk_04C == 0) { func_80086EAC(objectIndex, 2, 1); func_80072488(objectIndex); set_object_flag_status_true(objectIndex, 0x00000200); } else { - temp_s0->unk_04C--; + object->unk_04C--; } break; case 0x3: - if (temp_s0->unk_0AE == 0) { + if (object->unk_0AE == 0) { func_80086EAC(objectIndex, 2, 4); func_8008153C(objectIndex); func_80072488(objectIndex); - func_800C98B8(temp_s0->pos, temp_s0->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x07)); + func_800C98B8(object->pos, object->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x07)); } break; case 0x4: @@ -6251,12 +6223,12 @@ void func_80081AFC(s32 objectIndex, s32 arg1) { break; case 0xA: func_80072E54(objectIndex, 1, 6, 1, 0, -1); - if (temp_s0->unk_0AE == 0) { + if (object->unk_0AE == 0) { func_800726CC(objectIndex, 0x00000064); } break; case 0x64: - if (temp_s0->unk_0AE == 0) { + if (object->unk_0AE == 0) { set_object_flag_status_false(objectIndex, 0x00000200); func_80072428(objectIndex); switch (arg1) { /* switch 1; irregular */ @@ -6270,58 +6242,58 @@ void func_80081AFC(s32 objectIndex, s32 arg1) { sp2C = D_8018D1B8; break; } - sp2C[temp_s0->type] = 0; + sp2C[object->type] = 0; } break; case 0: default: break; } - if (temp_s0->state >= 2) { + if (object->state >= 2) { func_80073514(objectIndex); } } void func_80081D34(s32 objectIndex) { - Player *var_s1; + Player *player; Camera *var_s4; s32 var_s2; s32 var_s5; - Objects *temp_s0; + Object *object; var_s5 = 0; - var_s1 = gPlayerOne; + player = gPlayerOne; var_s4 = camera1; - for (var_s2 = 0; var_s2 < D_8018D158; var_s2++, var_s1++, var_s4++) { - if ((is_obj_flag_status_active(objectIndex, 0x00000200) != 0) && !(var_s1->effects & 0x80000000) && (has_collided_with_player(objectIndex, var_s1) != 0)) { - if ((var_s1->type & 0x8000) && !(var_s1->type & 0x100)) { + for (var_s2 = 0; var_s2 < D_8018D158; var_s2++, player++, var_s4++) { + if ((is_obj_flag_status_active(objectIndex, 0x00000200) != 0) && !(player->effects & 0x80000000) && (has_collided_with_player(objectIndex, player) != 0)) { + if ((player->type & 0x8000) && !(player->type & 0x100)) { var_s5 = 1; - temp_s0 = &gObjectList[objectIndex]; + object = &gObjectList[objectIndex]; if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) { func_80072180(); } - if (var_s1->effects & 0x200) { + if (player->effects & 0x200) { func_800C9060(var_s2, 0x1900A046U); } else { - var_s1->soundEffects |= 2; + player->soundEffects |= 2; } - temp_s0->direction_angle[1] = var_s4->rot[1]; - temp_s0->velocity[1] = (var_s1->unk_094 / 2) + 3.0; - temp_s0->unk_034 = var_s1->unk_094 + 1.0; - if (temp_s0->velocity[1] >= 5.0) { - temp_s0->velocity[1] = 5.0f; + object->direction_angle[1] = var_s4->rot[1]; + object->velocity[1] = (player->unk_094 / 2) + 3.0; + object->unk_034 = player->unk_094 + 1.0; + if (object->velocity[1] >= 5.0) { + object->velocity[1] = 5.0f; } - if (temp_s0->unk_034 >= 4.0) { - temp_s0->velocity[1] = 4.0f; + if (object->unk_034 >= 4.0) { + object->velocity[1] = 4.0f; } } } } if (var_s5 != 0) { - temp_s0 = &gObjectList[objectIndex]; + object = &gObjectList[objectIndex]; set_object_flag_status_false(objectIndex, 0x00000200); func_80086F60(objectIndex); - set_obj_origin_pos(objectIndex, temp_s0->pos[0], temp_s0->pos[1], temp_s0->pos[2]); + set_obj_origin_pos(objectIndex, object->pos[0], object->pos[1], object->pos[2]); set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); func_80086EAC(objectIndex, 2, 0x000A); func_800726CC(objectIndex, 0x0000000A); @@ -6487,7 +6459,7 @@ void func_8008275C(s32 objectIndex) { case 2: func_8008B78C(objectIndex); vec3f_copy(gObjectList[objectIndex].unk_01C, gObjectList[objectIndex].pos); - func_8000D940(gObjectList[objectIndex].origin_pos, &gObjectList[objectIndex].unk_0C6, gObjectList[objectIndex].unk_034, 0.0f, 0); + func_8000D940(gObjectList[objectIndex].origin_pos, (s16 *) &gObjectList[objectIndex].unk_0C6, gObjectList[objectIndex].unk_034, 0.0f, 0); gObjectList[objectIndex].offset[0] *= 2.0; gObjectList[objectIndex].offset[1] *= 2.5; gObjectList[objectIndex].offset[2] *= 2.0; @@ -6499,7 +6471,7 @@ void func_8008275C(s32 objectIndex) { } void update_seagulls(void) { - Objects *temp_s1; + Object *object; UNUSED s32 *var_s4; s32 temp_s0; s32 var_s3; @@ -6507,8 +6479,8 @@ void update_seagulls(void) { for (var_s3 = 0; var_s3 < NUM_SEAGULLS; var_s3++) { temp_s0 = indexObjectList2[var_s3]; - temp_s1 = &gObjectList[temp_s0]; - if (temp_s1->state == 0) continue; + object = &gObjectList[temp_s0]; + if (object->state == 0) continue; func_80082714(temp_s0, var_s3); func_8008275C(temp_s0); @@ -6520,12 +6492,12 @@ void update_seagulls(void) { D_80183E40[1] = 0.0f; D_80183E40[2] = 0.0f; if (gGamestate != CREDITS_SEQUENCE) { - func_800C98B8(temp_s1->pos, D_80183E40, SOUND_ARG_LOAD(0x19, 0x01, 0x70, 0x43)); + func_800C98B8(object->pos, D_80183E40, SOUND_ARG_LOAD(0x19, 0x01, 0x70, 0x43)); } else { temp_s0 = indexObjectList2[1]; if (gCutsceneShotTimer < 0x97) { - temp_s1 = &gObjectList[temp_s0]; - func_800C98B8(temp_s1->pos, D_80183E40, SOUND_ARG_LOAD(0x19, 0x01, 0x70, 0x43)); + object = &gObjectList[temp_s0]; + func_800C98B8(object->pos, D_80183E40, SOUND_ARG_LOAD(0x19, 0x01, 0x70, 0x43)); } } } @@ -6547,7 +6519,7 @@ void update_seagulls(void) { } void init_ktb_crab(s32 objectIndex) { - Objects *object; + Object *object; init_texture_object(objectIndex, d_course_koopa_troopa_beach_crab_tlut, (u8*) d_course_koopa_troopa_beach_crab_frames, 0x40U, (u16) 0x00000040); object = &gObjectList[objectIndex]; @@ -6619,7 +6591,7 @@ void func_80082C30(s32 objectIndex) { object_calculate_new_pos_offset(objectIndex); if (is_obj_flag_status_active(objectIndex, VISIBLE) != 0) { func_80088538(objectIndex); - gObjectList[objectIndex].pos[1] = (f32) (gObjectList[objectIndex].unk_044 + 2.5); + gObjectList[objectIndex].pos[1] = (f32) (gObjectList[objectIndex].surfaceHeight + 2.5); } } @@ -6692,22 +6664,22 @@ void func_80083080(void) { } void func_8008311C(s32 objectIndex, s32 arg1) { - Objects *temp_s0; + Object *object; init_texture_object(objectIndex, d_course_yoshi_valley_hedgehog_tlut, d_course_yoshi_valley_hedgehog, 0x40U, (u16) 0x00000040); - temp_s0 = &gObjectList[objectIndex]; - temp_s0->activeTLUT = d_course_yoshi_valley_hedgehog_tlut; - temp_s0->activeTexture = d_course_yoshi_valley_hedgehog; - temp_s0->vertex = D_0D0060B0; - temp_s0->sizeScaling = 0.2f; - temp_s0->itemDisplay = 0; + object = &gObjectList[objectIndex]; + object->activeTLUT = d_course_yoshi_valley_hedgehog_tlut; + object->activeTexture = d_course_yoshi_valley_hedgehog; + object->vertex = common_vtx_hedgehog; + object->sizeScaling = 0.2f; + object->itemDisplay = 0; func_80072488(objectIndex); set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); set_obj_orientation(objectIndex, 0U, 0U, 0x8000U); - temp_s0->unk_034 = ((arg1 % 6) * 0.1) + 0.5; + object->unk_034 = ((arg1 % 6) * 0.1) + 0.5; func_80086E70(objectIndex); set_object_flag_status_true(objectIndex, 0x04000600); - temp_s0->boundingBoxSize = 2; + object->boundingBoxSize = 2; } void func_80083248(s32 objectIndex) { @@ -6738,7 +6710,7 @@ void func_80083248(s32 objectIndex) { if (is_obj_flag_status_active(objectIndex, 0x00400000) != 0) { func_8008861C(objectIndex); } - gObjectList[objectIndex].pos[1] = gObjectList[objectIndex].unk_044 + 6.0; + gObjectList[objectIndex].pos[1] = gObjectList[objectIndex].surfaceHeight + 6.0; } } @@ -6754,7 +6726,7 @@ void func_800833D0(s32 objectIndex, s32 arg1) { break; } if (gObjectList[objectIndex].itemDisplay == 0) { - gObjectList[objectIndex].vertex = D_0D0060B0; + gObjectList[objectIndex].vertex = common_vtx_hedgehog; } else { gObjectList[objectIndex].vertex = D_0D006130; } @@ -6780,25 +6752,25 @@ void update_hedgehogs(void) { } void func_80083538(s32 objectIndex, Vec3f arg1, s32 arg2, s32 arg3) { - Objects *temp_s0; + Object *object; init_object(objectIndex, 0); - temp_s0 = &gObjectList[objectIndex]; - temp_s0->activeTexture = d_course_frappe_snowland_snow; - temp_s0->textureList = d_course_frappe_snowland_snow; - temp_s0->activeTLUT = d_course_frappe_snowland_snow_tlut; - temp_s0->tlutList = d_course_frappe_snowland_snow_tlut; - temp_s0->sizeScaling = random_int(0x0064U); - temp_s0->sizeScaling = (temp_s0->sizeScaling * 0.001) + 0.05; - temp_s0->velocity[1] = random_int(0x0014U); - temp_s0->velocity[1] = (temp_s0->velocity[1] * 0.5) + 2.6; - temp_s0->unk_034 = random_int(0x000AU); - temp_s0->unk_034 = (temp_s0->unk_034 *0.1) + 4.5; - temp_s0->direction_angle[1] = (arg2 << 0x10) / arg3; - temp_s0->origin_pos[0] = arg1[0]; - temp_s0->origin_pos[1] = arg1[1]; - temp_s0->origin_pos[2] = arg1[2]; - temp_s0->primAlpha = random_int(0x4000U) + 0x1000; + object = &gObjectList[objectIndex]; + object->activeTexture = d_course_frappe_snowland_snow; + object->textureList = d_course_frappe_snowland_snow; + object->activeTLUT = d_course_frappe_snowland_snow_tlut; + object->tlutList = d_course_frappe_snowland_snow_tlut; + object->sizeScaling = random_int(0x0064U); + object->sizeScaling = (object->sizeScaling * 0.001) + 0.05; + object->velocity[1] = random_int(0x0014U); + object->velocity[1] = (object->velocity[1] * 0.5) + 2.6; + object->unk_034 = random_int(0x000AU); + object->unk_034 = (object->unk_034 *0.1) + 4.5; + object->direction_angle[1] = (arg2 << 0x10) / arg3; + object->origin_pos[0] = arg1[0]; + object->origin_pos[1] = arg1[1]; + object->origin_pos[2] = arg1[2]; + object->primAlpha = random_int(0x4000U) + 0x1000; } void func_800836F0(Vec3f arg0) { @@ -6831,21 +6803,21 @@ void func_8008379C(s32 objectIndex) { } void func_80083868(s32 objectIndex) { - Objects *temp_s0; + Object *object; init_texture_object(objectIndex, d_course_frappe_snowland_snowman_tlut, d_course_frappe_snowland_snowman_head, 0x40U, (u16) 0x00000040); - temp_s0 = &gObjectList[objectIndex]; - temp_s0->vertex = D_0D0061B0; - temp_s0->sizeScaling = 0.1f; - temp_s0->itemDisplay = 0; + object = &gObjectList[objectIndex]; + object->vertex = D_0D0061B0; + object->sizeScaling = 0.1f; + object->itemDisplay = 0; func_80072488(objectIndex); set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); - temp_s0->orientation[0] = 0; - temp_s0->orientation[1] = 0; - temp_s0->orientation[2] = 0x8000; - temp_s0->primAlpha = random_int(0x2000U) - 0x1000; + object->orientation[0] = 0; + object->orientation[1] = 0; + object->orientation[2] = 0x8000; + object->primAlpha = random_int(0x2000U) - 0x1000; func_80086E70(objectIndex); - temp_s0->unk_034 = 1.5f; + object->unk_034 = 1.5f; set_object_flag_status_true(objectIndex, 0x00000200); } @@ -6897,7 +6869,7 @@ void func_80083A94(s32 objectIndex) { void func_80083B0C(s32 objectIndex) { init_texture_object(objectIndex, d_course_frappe_snowland_snowman_tlut, d_course_frappe_snowland_snowman_body, 0x40U, (u16) 0x00000040); - gObjectList[objectIndex].vertex = D_0D0060B0; + gObjectList[objectIndex].vertex = common_vtx_hedgehog; gObjectList[objectIndex].sizeScaling = 0.1f; gObjectList[objectIndex].itemDisplay = 0; func_80072488(objectIndex); @@ -6915,10 +6887,10 @@ void func_80083BE4(s32 objectIndex) { } void func_80083C04(s32 objectIndex) { - Objects *temp_s1; + Object *object; - temp_s1 = &gObjectList[objectIndex]; - switch (temp_s1->state) { + object = &gObjectList[objectIndex]; + switch (object->state) { case 0: break; case 1: @@ -6935,11 +6907,11 @@ void func_80083C04(s32 objectIndex) { case 11: if (func_8007278C(objectIndex, 0x0000000A) != 0) { set_object_flag_status_true(objectIndex, 0x00000010); - temp_s1->sizeScaling = 0.001f; + object->sizeScaling = 0.001f; } break; case 12: - if (func_80074118(objectIndex, &temp_s1->sizeScaling, 0.001f, 0.1f, 0.0025f, 0, 0) != 0) { + if (func_80074118(objectIndex, &object->sizeScaling, 0.001f, 0.1f, 0.0025f, 0, 0) != 0) { func_80072488(objectIndex); } break; @@ -6948,7 +6920,7 @@ void func_80083C04(s32 objectIndex) { set_object_flag_status_false(objectIndex, 0x00001000); break; } - if (temp_s1->state >= 2) { + if (object->state >= 2) { func_80073514(objectIndex); } func_80083BE4(objectIndex); @@ -6959,7 +6931,7 @@ void update_snowmen(void) { s32 var_s3; s32 var_s4; s32 objectIndex; - Objects *temp_s1; + Object *object; for (var_s0 = 0; var_s0 < gObjectParticle2_SIZE; var_s0++) { objectIndex = gObjectParticle2[var_s0]; @@ -6979,13 +6951,13 @@ void update_snowmen(void) { func_80083A94(var_s3); func_80083C04(var_s4); if (is_obj_index_flag_status_inactive(var_s4, 0x00001000) != 0) { - temp_s1 = &gObjectList[var_s4]; - if ((func_8008A8B0(temp_s1->unk_0D5 - 1, temp_s1->unk_0D5 + 1) != 0) && (func_80089B50(var_s4) != 0)) { + object = &gObjectList[var_s4]; + if ((func_8008A8B0(object->unk_0D5 - 1, object->unk_0D5 + 1) != 0) && (func_80089B50(var_s4) != 0)) { set_object_flag_status_true(var_s4, 0x00001000); set_object_flag_status_false(var_s4, 0x00000010); func_800726CC(var_s4, 0x0000000A); func_8008701C(var_s3, 0x0000000A); - func_800836F0(temp_s1->pos); + func_800836F0(object->pos); } } else if (func_80072320(var_s4, 2) != 0) { func_800722CC(var_s4, 2); @@ -7012,22 +6984,22 @@ void func_80083F18(s32 objectIndex) { } void func_80083FD0(s32 objectIndex, s32 arg1, s32 playerId) { - Objects *temp_s0; + Object *object; Player *sp20; - temp_s0 = &gObjectList[objectIndex]; + object = &gObjectList[objectIndex]; sp20 = &gPlayerOne[playerId]; - temp_s0->unk_084[7] = playerId; + object->unk_084[7] = playerId; init_object(objectIndex, 0); - temp_s0->activeTLUT = d_course_sherbet_land_ice; - temp_s0->tlutList = d_course_sherbet_land_ice; - temp_s0->sizeScaling = ((f32) random_int(0x01F4U) * 0.0002) + 0.04; - temp_s0->velocity[1] = ((f32) random_int(0x0032U) * 0.05) + 1.0; - temp_s0->unk_034 = ((f32) random_int(0x000AU) * 0.1) + 1.0; - temp_s0->direction_angle[1] = D_801657A2 * arg1; - temp_s0->origin_pos[0] = (sp20->pos[0] + random_int(0x0014U)) - 10.0f; - temp_s0->origin_pos[1] = (sp20->pos[1] - 10.0) + random_int(0x000AU); - temp_s0->origin_pos[2] = (sp20->pos[2] + random_int(0x0014U)) - 10.0f; + object->activeTLUT = d_course_sherbet_land_ice; + object->tlutList = d_course_sherbet_land_ice; + object->sizeScaling = ((f32) random_int(0x01F4U) * 0.0002) + 0.04; + object->velocity[1] = ((f32) random_int(0x0032U) * 0.05) + 1.0; + object->unk_034 = ((f32) random_int(0x000AU) * 0.1) + 1.0; + object->direction_angle[1] = D_801657A2 * arg1; + object->origin_pos[0] = (sp20->pos[0] + random_int(0x0014U)) - 10.0f; + object->origin_pos[1] = (sp20->pos[1] - 10.0) + random_int(0x000AU); + object->origin_pos[2] = (sp20->pos[2] + random_int(0x0014U)) - 10.0f; } void func_8008421C(UNUSED s32 arg0, s32 playerId) { @@ -7072,22 +7044,22 @@ void func_800842C8(void) { } void func_80084430(s32 objectIndex, UNUSED s32 arg1) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - temp_s0->unk_0D8 = 0; - temp_s0->model = (Gfx *) d_course_sherbet_land_unk_data1; - temp_s0->vertex = (Vtx *) d_course_sherbet_land_unk_data11; - temp_s0->sizeScaling = 0.2f; - temp_s0->boundingBoxSize = 0x000C; - temp_s0->unk_09C = 1; + object = &gObjectList[objectIndex]; + object->unk_0D8 = 0; + object->model = (Gfx *) d_course_sherbet_land_unk_data1; + object->vertex = (Vtx *) d_course_sherbet_land_unk_data11; + object->sizeScaling = 0.2f; + object->boundingBoxSize = 0x000C; + object->unk_09C = 1; set_obj_origin_pos(objectIndex, xOrientation * -383.0, 2.0f, -690.0f); set_obj_direction_angle(objectIndex, 0U, 0U, 0U); - temp_s0->unk_0DD = 1; + object->unk_0DD = 1; func_80086EF0(objectIndex); - temp_s0->spline = D_800E672C[0]; + object->spline = D_800E672C[0]; set_object_flag_status_true(objectIndex, 0x04000800); - temp_s0->type = func_80004EAC(d_course_sherbet_land_unk_data11, 0); + object->type = func_80004EAC(d_course_sherbet_land_unk_data11, 0); func_80072488(objectIndex); } @@ -7107,38 +7079,38 @@ void func_8008453C(s32 objectIndex, s32 arg1) { } void func_800845C8(s32 objectIndex, s32 arg1) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - temp_s0->unk_0D8 = 0; - temp_s0->model = (Gfx *) d_course_sherbet_land_unk_data1; - temp_s0->vertex = (Vtx *) d_course_sherbet_land_unk_data11; - temp_s0->boundingBoxSize = 4; - temp_s0->unk_09C = 2; - temp_s0->unk_04C = random_int(0x012CU); + object = &gObjectList[objectIndex]; + object->unk_0D8 = 0; + object->model = (Gfx *) d_course_sherbet_land_unk_data1; + object->vertex = (Vtx *) d_course_sherbet_land_unk_data11; + object->boundingBoxSize = 4; + object->unk_09C = 2; + object->unk_04C = random_int(0x012CU); set_object_flag_status_true(objectIndex, 0x04000220); if ((arg1 > 0) && (arg1 < 9)) { if ((arg1 == 1) || (arg1 == 2)) { set_obj_origin_pos(objectIndex, xOrientation * -2960.0, -80.0f, 1521.0f); - temp_s0->unk_0C6 = 0x0150; - temp_s0->unk_01C[1] = 100.0f; + object->unk_0C6 = 0x0150; + object->unk_01C[1] = 100.0f; } else if ((arg1 == 3) || (arg1 == 4)) { set_obj_origin_pos(objectIndex, xOrientation * -2490.0, -80.0f, 1612.0f); - temp_s0->unk_0C6 = 0x0100; - temp_s0->unk_01C[1] = 80.0f; + object->unk_0C6 = 0x0100; + object->unk_01C[1] = 80.0f; } else if ((arg1 == 5) || (arg1 == 6)) { set_obj_origin_pos(objectIndex, xOrientation * -2098.0, -80.0f, 1624.0f); - temp_s0->unk_0C6 = 0xFF00; - temp_s0->unk_01C[1] = 80.0f; + object->unk_0C6 = 0xFF00; + object->unk_01C[1] = 80.0f; } else if ((arg1 == 7) || (arg1 == 8)) { set_obj_origin_pos(objectIndex, xOrientation * -2080.0, -80.0f, 1171.0f); - temp_s0->unk_0C6 = 0x0150; - temp_s0->unk_01C[1] = 80.0f; + object->unk_0C6 = 0x0150; + object->unk_01C[1] = 80.0f; } - temp_s0->unk_0C4 = (arg1 << 0xF) & 0xFFFF; - temp_s0->unk_044 = -80.0f; - temp_s0->sizeScaling = 0.08f; - temp_s0->unk_0DD = 2; + object->unk_0C4 = (arg1 << 0xF) & 0xFFFF; + object->surfaceHeight = -80.0f; + object->sizeScaling = 0.08f; + object->unk_0DD = 2; func_800722A4(objectIndex, 8); } else if ((arg1 > 8) && (arg1 < 15)) { switch (arg1) { /* irregular */ @@ -7147,91 +7119,91 @@ void func_800845C8(s32 objectIndex, s32 arg1) { set_obj_origin_pos(objectIndex, xOrientation * 146.0, 0.0f, -380.0f); } else { set_obj_origin_pos(objectIndex, xOrientation * 380.0, 0.0f, -535.0f); - temp_s0->sizeScaling = 0.15f; + object->sizeScaling = 0.15f; } - temp_s0->unk_0C6 = 0x9000; + object->unk_0C6 = 0x9000; if (gIsMirrorMode != 0) { - temp_s0->unk_0C6 -= 0x4000; + object->unk_0C6 -= 0x4000; } - temp_s0->unk_0DD = 3; + object->unk_0DD = 3; break; case 10: set_obj_origin_pos(objectIndex, xOrientation * 380.0, 0.0f, -766.0f); - temp_s0->unk_0C6 = 0x5000; + object->unk_0C6 = 0x5000; if (gIsMirrorMode != 0) { - temp_s0->unk_0C6 += 0x8000; + object->unk_0C6 += 0x8000; } - temp_s0->unk_0DD = 4; + object->unk_0DD = 4; break; case 11: set_obj_origin_pos(objectIndex, xOrientation * -2300.0, 0.0f, -210.0f); - temp_s0->unk_0C6 = 0xC000; - temp_s0->unk_0DD = 6; + object->unk_0C6 = 0xC000; + object->unk_0DD = 6; if (gIsMirrorMode != 0) { - temp_s0->unk_0C6 += 0x8000; + object->unk_0C6 += 0x8000; } break; case 12: set_obj_origin_pos(objectIndex, xOrientation * -2500.0, 0.0f, -250.0f); - temp_s0->unk_0C6 = 0x4000; - temp_s0->unk_0DD = 6; + object->unk_0C6 = 0x4000; + object->unk_0DD = 6; if (gIsMirrorMode != 0) { - temp_s0->unk_0C6 += 0x8000; + object->unk_0C6 += 0x8000; } break; case 13: set_obj_origin_pos(objectIndex, xOrientation * -535.0, 0.0f, 875.0f); - temp_s0->unk_0C6 = 0x8000; - temp_s0->unk_0DD = 6; + object->unk_0C6 = 0x8000; + object->unk_0DD = 6; if (gIsMirrorMode != 0) { - temp_s0->unk_0C6 -= 0x4000; + object->unk_0C6 -= 0x4000; } break; case 14: set_obj_origin_pos(objectIndex, xOrientation * -250.0, 0.0f, 953.0f); - temp_s0->unk_0C6 = 0x9000; - temp_s0->unk_0DD = 6; + object->unk_0C6 = 0x9000; + object->unk_0DD = 6; if (gIsMirrorMode != 0) { - temp_s0->unk_0C6 -= 0x4000; + object->unk_0C6 -= 0x4000; } break; default: break; } - set_obj_direction_angle(objectIndex, 0U, temp_s0->unk_0C6 + 0x8000, 0U); - temp_s0->unk_044 = 5.0f; - temp_s0->sizeScaling = 0.04f; + set_obj_direction_angle(objectIndex, 0U, object->unk_0C6 + 0x8000, 0U); + object->surfaceHeight = 5.0f; + object->sizeScaling = 0.04f; func_800722A4(objectIndex, 0x00000014); } func_80086EF0(objectIndex); - temp_s0->unk_034 = 0.0f; - temp_s0->type = func_80004EAC(d_course_sherbet_land_unk_data11, 0); + object->unk_034 = 0.0f; + object->type = func_80004EAC(d_course_sherbet_land_unk_data11, 0); func_80072488(objectIndex); } void func_80084B7C(s32 objectIndex, s32 arg1) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - switch (temp_s0->state) { + object = &gObjectList[objectIndex]; + switch (object->state) { case 0: break; case 1: func_800845C8(objectIndex, arg1); break; case 2: - func_80072E54(objectIndex, 0, (s32) temp_s0->type, (s32) temp_s0->unk_09C, 0, -1); + func_80072E54(objectIndex, 0, (s32) object->type, (s32) object->unk_09C, 0, -1); if (func_80072354(objectIndex, 0x00000020) != 0) { - if (temp_s0->unk_084[6] == 0) { - temp_s0->unk_084[6] = random_int(0x005AU) + 0x5A; + if (object->unk_084[6] == 0) { + object->unk_084[6] = random_int(0x005AU) + 0x5A; func_800722A4(objectIndex, 0x00000080); } else { - temp_s0->unk_084[6]--; + object->unk_084[6]--; } } break; case 3: - func_80072E54(objectIndex, 0, temp_s0->type, 1, 0, 0); + func_80072E54(objectIndex, 0, object->type, 1, 0, 0); break; case 4: func_800722CC(objectIndex, 2); @@ -7239,19 +7211,19 @@ void func_80084B7C(s32 objectIndex, s32 arg1) { break; } if (func_80072320(objectIndex, 0x00000020) != 0) { - if (temp_s0->unk_084[6] == 0) { + if (object->unk_084[6] == 0) { func_800722A4(objectIndex, 0x00000080); - temp_s0->unk_084[6] = 0x0010; + object->unk_084[6] = 0x0010; } else { - temp_s0->unk_084[6]--; + object->unk_084[6]--; } } if (func_80072320(objectIndex, 0x00000080) != 0) { func_800722CC(objectIndex, 0x00000080); if (func_80072320(objectIndex, 0x00000010) != 0) { - func_800C98B8(temp_s0->pos, temp_s0->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x70, 0x49)); + func_800C98B8(object->pos, object->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x70, 0x49)); } else { - func_800C98B8(temp_s0->pos, temp_s0->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x70, 0x17)); + func_800C98B8(object->pos, object->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x70, 0x17)); } } } @@ -7355,10 +7327,10 @@ void func_80085080(s32 objectIndex) { } void func_800850B0(s32 objectIndex, s32 arg1) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - switch (temp_s0->unk_0DD) { + object = &gObjectList[objectIndex]; + switch (object->unk_0DD) { case 1: func_80085080(objectIndex); break; @@ -7381,21 +7353,21 @@ void func_800850B0(s32 objectIndex, s32 arg1) { if (func_80072320(objectIndex, 0x00000020) != 0) { if (func_80072320(objectIndex, 0x00000040) != 0) { func_800722CC(objectIndex, 0x00000040); - temp_s0->unk_084[6] = 0; - temp_s0->unk_084[7] = 0x0096; + object->unk_084[6] = 0; + object->unk_084[7] = 0x0096; } - if (temp_s0->unk_084[7] == 0) { + if (object->unk_084[7] == 0) { func_800722CC(objectIndex, 0x00000020); } else { - temp_s0->unk_084[7]--; - temp_s0->orientation[0] = temp_s0->direction_angle[0]; - temp_s0->orientation[1] += 0x2000; - temp_s0->orientation[2] = temp_s0->direction_angle[2]; + object->unk_084[7]--; + object->orientation[0] = object->direction_angle[0]; + object->orientation[1] += 0x2000; + object->orientation[2] = object->direction_angle[2]; } } else { - temp_s0->orientation[0] = temp_s0->direction_angle[0]; - temp_s0->orientation[1] = temp_s0->direction_angle[1]; - temp_s0->orientation[2] = temp_s0->direction_angle[2]; + object->orientation[0] = object->direction_angle[0]; + object->orientation[1] = object->direction_angle[1]; + object->orientation[2] = object->direction_angle[2]; } } @@ -7526,58 +7498,58 @@ void update_hot_air_balloon(void) { void func_80085878(s32 objectIndex, s32 arg1) { TrackWaypoint *temp_v0; - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - temp_s0->unk_0D8 = 1; - temp_s0->model = (Gfx *) d_rainbow_road_unk4; - temp_s0->vertex = (Vtx *) d_rainbow_road_unk3; - temp_s0->sizeScaling = 0.03f; - temp_s0->boundingBoxSize = 0x000A; + object = &gObjectList[objectIndex]; + object->unk_0D8 = 1; + object->model = (Gfx *) d_rainbow_road_unk4; + object->vertex = (Vtx *) d_rainbow_road_unk3; + object->sizeScaling = 0.03f; + object->boundingBoxSize = 0x000A; set_object_flag_status_true(objectIndex, 0x04000200); - temp_s0->unk_084[8] = (arg1 * 0x12C) + 0x1F4; + object->unk_084[8] = (arg1 * 0x12C) + 0x1F4; set_obj_origin_pos(objectIndex, 0.0f, -15.0f, 0.0f); - temp_v0 = &D_80164490[(u16)temp_s0->unk_084[8]]; + temp_v0 = &D_80164490[(u16)object->unk_084[8]]; set_obj_origin_offset(objectIndex, temp_v0->posX, temp_v0->posY, temp_v0->posZ); set_obj_direction_angle(objectIndex, 0U, 0U, 0U); - temp_s0->unk_034 = 4.0f; - temp_s0->type = func_80004EAC(d_rainbow_road_unk3, 0); + object->unk_034 = 4.0f; + object->type = func_80004EAC(d_rainbow_road_unk3, 0); func_80072488(objectIndex); } void func_800859C8(s32 objectIndex, s32 arg1) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - switch (temp_s0->state) { /* irregular */ + object = &gObjectList[objectIndex]; + switch (object->state) { /* irregular */ case 0: break; case 1: func_80085878(objectIndex, arg1); break; case 2: - func_80072E54(objectIndex, 0, (s32) temp_s0->type, 1, 0, -1); + func_80072E54(objectIndex, 0, (s32) object->type, 1, 0, -1); break; } if (D_8018D40C == 0) { - func_800C98B8(temp_s0->pos, temp_s0->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x57)); + func_800C98B8(object->pos, object->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x57)); } - func_80074344(objectIndex, &temp_s0->unk_044, -0.8f, 0.8f, 0.03f, 0, -1); + func_80074344(objectIndex, &object->surfaceHeight, -0.8f, 0.8f, 0.03f, 0, -1); } void update_chain_chomps(void) { s32 objectIndex; s32 var_s4; - Objects *temp_s0; + Object *object; for (var_s4 = 0; var_s4 < NUM_CHAIN_CHOMPS; var_s4++) { objectIndex = indexObjectList2[var_s4]; - temp_s0 = &gObjectList[objectIndex]; - if (temp_s0->state != 0) { + object = &gObjectList[objectIndex]; + if (object->state != 0) { func_800859C8(objectIndex, var_s4); - vec3f_copy(temp_s0->unk_01C, temp_s0->offset); - func_8000D940(temp_s0->offset, &temp_s0->unk_084[8], temp_s0->unk_034, temp_s0->unk_044, 0); - temp_s0->direction_angle[1] = get_angle_between_two_vectors(temp_s0->unk_01C, temp_s0->offset); + vec3f_copy(object->unk_01C, object->offset); + func_8000D940(object->offset, &object->unk_084[8], object->unk_034, object->surfaceHeight, 0); + object->direction_angle[1] = get_angle_between_two_vectors(object->unk_01C, object->offset); object_calculate_new_pos_offset(objectIndex); func_80089CBC(objectIndex, 30.0f); } @@ -7888,19 +7860,19 @@ void func_80086700(s32 objectIndex) { } void func_80086940(s32 objectIndex) { - Objects *temp_s0; + Object *object; - temp_s0 = &gObjectList[objectIndex]; - switch (temp_s0->unk_0AE) { + object = &gObjectList[objectIndex]; + switch (object->unk_0AE) { case 0: break; case 1: func_80086FD4(objectIndex); break; case 2: - f32_step_towards(&temp_s0->sizeScaling, 0.025f, 0.001f); + f32_step_towards(&object->sizeScaling, 0.025f, 0.001f); func_80087C48(objectIndex, 6.0f, 0.1f, 0x000000C8); - if ((f64) temp_s0->velocity[1] <= 0.0) { + if ((f64) object->velocity[1] <= 0.0) { func_8008701C(objectIndex, 3); } break; @@ -7909,27 +7881,27 @@ void func_80086940(s32 objectIndex) { break; case 4: D_801658D6 = 1; - temp_s0->velocity[1] = -0.4f; + object->velocity[1] = -0.4f; func_80086FD4(objectIndex); - temp_s0->origin_pos[1] = 90.0f; - temp_s0->offset[1] = 60.0f; + object->origin_pos[1] = 90.0f; + object->offset[1] = 60.0f; switch (D_802874D8.unk1D) { /* switch 1; irregular */ case 1: /* switch 1 */ - temp_s0->origin_pos[0] -= 3.0; - temp_s0->origin_pos[2] += 15.0; + object->origin_pos[0] -= 3.0; + object->origin_pos[2] += 15.0; break; case 2: /* switch 1 */ - temp_s0->origin_pos[0] -= 2.0; - temp_s0->origin_pos[2] -= 15.0; + object->origin_pos[0] -= 2.0; + object->origin_pos[2] -= 15.0; break; } break; case 5: - if ((f64) temp_s0->offset[1] <= 8.0) { - f32_step_towards(&temp_s0->velocity[1], -0.1f, -0.01f); + if ((f64) object->offset[1] <= 8.0) { + f32_step_towards(&object->velocity[1], -0.1f, -0.01f); } object_add_velocity_offset_y(objectIndex); - if ((f64) temp_s0->offset[1] <= 0.0) { + if ((f64) object->offset[1] <= 0.0) { func_80086FD4(objectIndex); } break; @@ -7946,12 +7918,12 @@ void func_80086940(s32 objectIndex) { break; } if (D_801658D6 != 0) { - temp_s0->direction_angle[0] += 0x400; - temp_s0->direction_angle[1] = 0xE800; - temp_s0->direction_angle[2] = 0xDA00; + object->direction_angle[0] += 0x400; + object->direction_angle[1] = 0xE800; + object->direction_angle[2] = 0xDA00; } else { - temp_s0->direction_angle[0] += 0x400; - temp_s0->direction_angle[1] -= 0x200; + object->direction_angle[0] += 0x400; + object->direction_angle[1] -= 0x200; } object_calculate_new_pos_offset(objectIndex); } diff --git a/src/update_objects.h b/src/update_objects.h index 11d317917..ab648eaaa 100644 --- a/src/update_objects.h +++ b/src/update_objects.h @@ -2,7 +2,7 @@ #define UPDATE_OBJECTS_H #include "code_80004740.h" -#include "common_structs.h" +#include #include "camera.h" #include "objects.h" @@ -19,13 +19,13 @@ void func_80072180(void); void set_object_flag_status_true(s32, s32); void set_object_flag_status_false(s32, s32); void func_80072214(s32, s32); -s32 is_obj_flag_status_active(s32, s32); +bool is_obj_flag_status_active(s32, s32); s32 is_obj_index_flag_status_inactive(s32, s32); void func_800722A4(s32, s32); void func_800722CC(s32, s32); void func_800722F8(s32, s32); -s32 func_80072320(s32, s32); -s32 func_80072354(s32, s32); +bool func_80072320(s32, s32); +bool func_80072354(s32, s32); void set_object_unk_0CB(s32, s32); void init_object(s32, s32); void func_80072408(s32); @@ -55,8 +55,8 @@ s32 func_80072B48(s32, s32); void func_80072C00(s32, s32, s32, s32); void func_80072D3C(s32, s32, s32, s32, s32); s32 func_80072E54(s32, s32, s32, s32, s32, s32); -s32 func_80072F88(s32, s32, s32, s32, s32, s32); -s32 func_800730BC(s32, s32, s32, s32, s32, s32); +bool func_80072F88(s32, s32, s32, s32, s32, s32); +bool func_800730BC(s32, s32, s32, s32, s32, s32); s32 func_8007326C(s32, s32, s32, s32, s32, s32); void func_80073404(s32, u8, u8, Vtx*); void init_texture_object(s32, u8*, u8*, u8, u16); @@ -71,7 +71,7 @@ void func_80073654(s32); void func_8007369C(s32, s32); void func_800736E0(s32); void func_80073720(s32); -s32 func_8007375C(s32, s32); +bool func_8007375C(s32, s32); void func_80073800(s32, s32); void func_8007381C(s32); void func_80073844(s32); @@ -79,21 +79,21 @@ void func_80073884(s32); s32 func_800738A8(s32, s16*, s32, s32, s32, s32, s32); void func_80073998(s32, s16*, s32, s32, s32, s32, s32); void func_800739CC(s32, s16*, s32, s32, s32, s32, s32); -s32 func_80073A10(s32, s16*, s32, s32, s32, s32, s32); +bool func_80073A10(s32, s16*, s32, s32, s32, s32, s32); s32 func_80073B00(s32, s16*, s32, s32, s32, s32, s32); s32 func_80073B34(s32, s16*, s32, s32, s32, s32, s32); -s32 func_80073B78(s32, s32, s16*, s32, s32, s32, s32, s32); +bool func_80073B78(s32, s32, s16*, s32, s32, s32, s32, s32); bool func_80073CB0(s32, s16*, s32, s32, s32, s32, s32); bool func_80073D0C(s32, s16*, s32, s32, s32, s32, s32); void func_80073D68(s32, s16*, s16, s32); void func_80073DC0(s32, s16*, s16, s32); -s32 func_80073E18(s32, u16*, u16, s32); -s32 func_80073ED4(s32, u16*, u16, s32); +bool func_80073E18(s32, u16*, u16, s32); +UNUSED bool func_80073ED4(s32, u16*, u16, s32); void func_80073F90(s32, s32); void func_80073FAC(s32); void func_80073FD4(s32); void func_80074014(void); -s32 func_8007401C(s32, f32*, f32, f32, f32, s32, s32); +bool func_8007401C(s32, f32*, f32, f32, f32, s32, s32); s32 func_80074118(s32, f32*, f32, f32, f32, s32, s32); s32 func_8007415C(s32, f32*, f32, f32, f32, s32, s32); s32 func_800741B4(s32, f32*, f32, f32, f32, s32, s32); @@ -104,9 +104,9 @@ void func_80074478(s32); void func_800744A0(s32); void func_800744CC(void); void func_80074510(uintptr_t, void*, size_t); -void func_800745C8(s32, s32); -void func_8007466C(s32, s32); -void func_80074704(s32, s32); +void func_800745C8(s32, uintptr_t); +void func_8007466C(s32, uintptr_t); +void func_80074704(s32, uintptr_t); u8 *func_80074790(s32, u8*); void func_800747F0(s32, u8*); void func_80074894(s32, u8*); @@ -124,11 +124,13 @@ void func_80075574(s32, Vec3f, f32); s32 func_800755FC(s32, Vec3f, f32); void func_80075698(s32); void func_80075714(s32); +void update_train_smoke(void); void func_80075838(void); void func_800759EC(s32, Vec3f, f32); s32 func_80075A6C(s32, Vec3f, f32); void func_80075B08(s32); void func_80075B84(s32); +void update_ferries_smoke_particle(void); void func_80075E5C(s32, Vec3f, u16, f32, s32); s32 func_80075F28(Vec3f, u16, f32, s32); void func_80075F98(Vec3f, u16, f32); @@ -198,7 +200,7 @@ void func_8007A88C(s32); void func_8007A910(s32); void update_object_lakitu(s32); void func_8007AA44(s32); -void func_8007ABFC(s32, s32); +void func_8007ABFC(s32, bool); void consume_item(s32); u8 gen_random_item(s16, s16); u8 gen_random_item_human(s16, s16); @@ -340,6 +342,7 @@ void func_80085024(void); void func_8008502C(s32, s32); void func_80085080(s32); void func_800850B0(s32, s32); +void update_penguins(void); void init_hot_air_balloon(s32); void func_80085534(s32); void func_80085768(s32); @@ -375,10 +378,10 @@ extern f32 D_800E43B0[]; extern Vtx D_800E43F0[]; extern Vtx D_800E4470[]; extern Vtx D_800E44B0[]; -extern u8 *gItemWindowTLUTs[]; +extern u16 *gItemWindowTLUTs[]; extern u8 *gItemWindowTextures[]; -extern u8 *gHudLapTextures[]; -extern u8 *gPortraitTLUTs[]; +extern u16 *gHudLapTextures[]; +extern u16 *gPortraitTLUTs[]; extern u8 *gPortraitTextures[]; extern s32 D_80162DF8; diff --git a/tools/linkonly_generator.py b/tools/linkonly_generator.py index 16ef21e6d..163051b17 100644 --- a/tools/linkonly_generator.py +++ b/tools/linkonly_generator.py @@ -2,6 +2,7 @@ import re import sys +import io abbreviations = { "banshee_boardwalk": "BB", @@ -365,6 +366,6 @@ with open(f"courses/{course_name}/course_offsets.c", "r") as offsets: # Write to files only after we've generated their entire contents. That way if an # error occurs during the generation we don't write an incomplete file -with open(f"courses/{course_name}/course_textures.linkonly.c", "w") as linkonlyc, open(f"courses/{course_name}/course_textures.linkonly.h", "w") as linkonlyh: +with io.open(f"courses/{course_name}/course_textures.linkonly.c", "w", newline="\n") as linkonlyc, io.open(f"courses/{course_name}/course_textures.linkonly.h", "w", newline="\n") as linkonlyh: linkonlyh.write(h_string) linkonlyc.write(c_string) diff --git a/tools/mkgccgen.py b/tools/mkgccgen.py new file mode 100644 index 000000000..b93f25918 --- /dev/null +++ b/tools/mkgccgen.py @@ -0,0 +1,65 @@ +#!/usr/bin/python3 + +# Complete file list producer v0.7 +# Written by ProjectRevoTPP + +import os +from glob import glob +import sys + +def holecount(file): + with open(file, 'r', encoding = 'utf-8') as infile: + contents = infile.readlines() + asm_count = 0 + for i, line in enumerate(contents): + if(line.count("GLOBAL_ASM") > 0 and (i + 1 == len(contents) or contents[i+1].count("#endif") == 0)): + asm_count += 1 + return asm_count + +def noncount(file): + with open(file, 'r', encoding = 'utf-8') as infile: + contents = infile.readlines() + noncount = 0 + for i, line in enumerate(contents): + if(line.count("NON_") > 0): + noncount += 1 + return noncount + +def holecount_all(src): + for subdir, dirs, files in os.walk(src): + for filename in files: + filepath = subdir + os.sep + filename + if(not filename.endswith('.c')): + continue + holes = holecount(filepath) + nonmatches = noncount(filepath) + if(holes > 0 and nonmatches > 0): + print(filename, holes, nonmatches) + return 1 + +# get file encoding type +def get_encoding_type(file): + with open(file, 'rb') as f: + rawdata = f.read() + return detect(rawdata)['encoding'] + +outfile = open(sys.argv[1], "w") +outfile.write("# This file is auto-generated. DO NOT MODIFY!\n\n") +outfile.write("SAFE_C_FILES := \\\n") +for directory in os.walk("src"): + for filename in glob(os.path.join(directory[0], "*.c")): + infile = open(filename, "r", encoding="ascii", errors="surrogateescape") + # Open content. + contents = infile.read() + # Set the counts. + nonm_count = contents.count("NON_MATCHING") + noneq_count = contents.count("NON_EQUIVALENT") + global_asm_count = contents.count("GLOBAL_ASM") + # NOTE: As of now there is no distinction between unattempted files and unfinished ones. + if nonm_count + noneq_count == global_asm_count : + outfile.write(" build/us/") + outfile.write(os.path.splitext(filename)[0]) + outfile.write(".o \\\n") + infile.close() +outfile.close() + diff --git a/tools/torch b/tools/torch index 74b0c1202..4d8ac381c 160000 --- a/tools/torch +++ b/tools/torch @@ -1 +1 @@ -Subproject commit 74b0c120290083a5e3571a43deada72781af072b +Subproject commit 4d8ac381c08fd30cc6a4f247576c7dbfe09dc708 diff --git a/yamls/us/ceremony_data.yml b/yamls/us/ceremony_data.yml index 1f5f1cf5b..bc68825e6 100644 --- a/yamls/us/ceremony_data.yml +++ b/yamls/us/ceremony_data.yml @@ -5,7 +5,8 @@ code: - '#include ' header: - - '#include ' + - '#include ' + - '#include ' - '#include ' silver_trophy_dl: diff --git a/yamls/us/ceremony_rsp_init_80284EE0.yml b/yamls/us/ceremony_rsp_init_80284EE0.yml index 6b6c53e06..c316b45ca 100644 --- a/yamls/us/ceremony_rsp_init_80284EE0.yml +++ b/yamls/us/ceremony_rsp_init_80284EE0.yml @@ -4,7 +4,8 @@ offset: 0x128520 header: code: - - '#include ' + - '#include ' + - '#include ' - '#include ' - '#include "courses/royal_raceway/course_displaylists.inc.h"' D_80284EE0: diff --git a/yamls/us/common_data.yml b/yamls/us/common_data.yml index 9a48b2792..75f6e250c 100644 --- a/yamls/us/common_data.yml +++ b/yamls/us/common_data.yml @@ -8,7 +8,8 @@ - '#include ' header: - '#include ' - - '#include ' + - '#include ' + - '#include ' tables: common_grand_prix_human_item_curve: range: [0x8150, 0x840C] @@ -73,6 +74,61 @@ D_0D001200: type: vtx offset: 0x1200 count: 1 +D_0D001210: + symbol: D_0D001210 + type: vtx + offset: 0x1210 + count: 3 +D_0D001240: + symbol: D_0D001240 + type: vtx + offset: 0x1240 + count: 3 +D_0D001270: + symbol: D_0D001270 + type: vtx + offset: 0x1270 + count: 3 +D_0D0012A0: + symbol: D_0D0012A0 + type: vtx + offset: 0x12A0 + count: 3 +D_0D0012D0: + symbol: D_0D0012D0 + type: vtx + offset: 0x12D0 + count: 3 +D_0D001300: + symbol: D_0D001300 + type: vtx + offset: 0x1300 + count: 3 +D_0D001330: + symbol: D_0D001330 + type: vtx + offset: 0x1330 + count: 3 +D_0D001360: + symbol: D_0D001360 + type: vtx + offset: 0x1360 + count: 3 +common_vtx_finish_line_banner: + symbol: common_vtx_finish_line_banner + type: vtx + offset: 0x1390 + count: 32 +common_vtx_finish_post: + symbol: common_vtx_finish_post + type: vtx + offset: 0x1590 + count: 24 +D_0D001710: + symbol: D_0D001710 + type: vtx + offset: 0x1710 + count: 4 D_0D001750: symbol: D_0D001750 type: gfx @@ -137,16 +193,12 @@ D_0D001C88: symbol: D_0D001C88 type: gfx offset: 0x1C88 -common_vtx_itembox_question_mark: - symbol: common_vtx_itembox_question_mark - type: vtx - offset: 0x1D28 - count: 4 -D_0D001D68: - symbol: D_0D001D68 - type: vtx - offset: 0x1D68 - count: 3 + +common_vtx_itembox: + symbol: common_vtx_itembox + type: VTX + offset: 0x0D001CE8 + count: 32 common_texture_item_box_question_mark: symbol: common_texture_item_box_question_mark type: texture @@ -173,10 +225,11 @@ itemBoxQuestionMarkModel: symbol: itemBoxQuestionMarkModel type: gfx offset: 0x3008 + D_0D003090: symbol: D_0D003090 type: gfx - offset: 0x3090 + offset: 0x0D003090 D_0D0030F8: symbol: D_0D0030F8 type: gfx @@ -396,116 +449,61 @@ D_0D005E80: type: vtx offset: 0x5E80 count: 3 -D_0D005EB0: - symbol: D_0D005EB0 +common_vtx_lakitu: + symbol: common_vtx_lakitu type: vtx offset: 0x5EB0 - count: 5 -D_0D005F00: - symbol: D_0D005F00 - type: vtx - offset: 0x5F00 - count: 3 + count: 8 D_0D005F30: symbol: D_0D005F30 type: vtx offset: 0x5F30 - count: 5 -D_0D005F80: - symbol: D_0D005F80 - type: vtx - offset: 0x5F80 - count: 3 + count: 8 D_0D005FB0: symbol: D_0D005FB0 type: vtx offset: 0x5FB0 - count: 1 -D_0D005FC0: - symbol: D_0D005FC0 - type: vtx - offset: 0x5FC0 - count: 3 + count: 4 D_0D005FF0: symbol: D_0D005FF0 type: vtx offset: 0x5FF0 - count: 1 -D_0D006000: - symbol: D_0D006000 - type: vtx - offset: 0x6000 - count: 3 + count: 4 D_0D006030: symbol: D_0D006030 type: vtx offset: 0x6030 - count: 5 -D_0D006080: - symbol: D_0D006080 - type: vtx - offset: 0x6080 - count: 3 -D_0D0060B0: - symbol: D_0D0060B0 + count: 8 +common_vtx_hedgehog: + symbol: common_vtx_hedgehog type: vtx offset: 0x60B0 - count: 5 -D_0D006100: - symbol: D_0D006100 - type: vtx - offset: 0x6100 - count: 3 + count: 8 D_0D006130: symbol: D_0D006130 type: vtx offset: 0x6130 - count: 5 -D_0D006180: - symbol: D_0D006180 - type: vtx - offset: 0x6180 - count: 3 + count: 8 D_0D0061B0: symbol: D_0D0061B0 type: vtx offset: 0x61B0 - count: 13 -D_0D006280: - symbol: D_0D006280 - type: vtx - offset: 0x6280 - count: 3 + count: 16 D_0D0062B0: symbol: D_0D0062B0 type: vtx offset: 0x62B0 - count: 29 -D_0D006480: - symbol: D_0D006480 - type: vtx - offset: 0x6480 - count: 3 + count: 32 D_0D0064B0: symbol: D_0D0064B0 type: vtx offset: 0x64B0 - count: 37 -D_0D006700: - symbol: D_0D006700 - type: vtx - offset: 0x6700 - count: 3 -D_0D006730: - symbol: D_0D006730 + count: 40 +common_vtx_also_lakitu: + symbol: common_vtx_also_lakitu type: vtx offset: 0x6730 - count: 25 -D_0D0068C0: - symbol: D_0D0068C0 - type: vtx - offset: 0x68C0 - count: 3 + count: 28 D_0D0068F0: symbol: D_0D0068F0 type: vtx @@ -2254,58 +2252,58 @@ D_0D02AA58: width: 16 height: 16 format: rgba16 -common_texture_particle_spark_1.i8.png: - symbol: common_texture_particle_spark_1.i8.png +common_texture_particle_spark_1: + symbol: common_texture_particle_spark_1 offset: 0x2AC58 width: 32 height: 32 ctype: u8 type: texture format: i8 -common_texture_particle_spark_2.i8.png: - symbol: common_texture_particle_spark_2.i8.png +common_texture_particle_spark_2: + symbol: common_texture_particle_spark_2 offset: 0x2B058 width: 32 height: 32 type: texture format: i8 -common_texture_particle_spark_3.i8.png: - symbol: common_texture_particle_spark_3.i8.png +common_texture_particle_spark_3: + symbol: common_texture_particle_spark_3 offset: 0x2B458 width: 32 height: 32 type: texture format: i8 -common_texture_particle_spark_4.i8.png: - symbol: common_texture_particle_spark_4.i8.png +common_texture_particle_spark_4: + symbol: common_texture_particle_spark_4 offset: 0x2B858 width: 32 height: 32 type: texture format: i8 -common_texture_particle_smoke_1.i8.png: - symbol: common_texture_particle_smoke_1.i8.png +common_texture_particle_smoke_1: + symbol: common_texture_particle_smoke_1 offset: 0x2BC58 width: 32 height: 32 type: texture format: i8 -common_texture_particle_smoke_2.i8.png: - symbol: common_texture_particle_smoke_2.i8.png +common_texture_particle_smoke_2: + symbol: common_texture_particle_smoke_2 offset: 0x2C058 width: 32 height: 32 type: texture format: i8 -common_texture_particle_smoke_3.i8.png: - symbol: common_texture_particle_smoke_3.i8.png +common_texture_particle_smoke_3: + symbol: common_texture_particle_smoke_3 offset: 0x2C458 width: 32 height: 32 type: texture format: i8 -common_texture_particle_smoke_4.i8.png: - symbol: common_texture_particle_smoke_4.i8.png +common_texture_particle_smoke_4: + symbol: common_texture_particle_smoke_4 offset: 0x2C858 width: 32 height: 32 diff --git a/yamls/us/data_segment2.yml b/yamls/us/data_segment2.yml index 58c93a360..b4f76de73 100644 --- a/yamls/us/data_segment2.yml +++ b/yamls/us/data_segment2.yml @@ -5,322 +5,323 @@ header: code: - '#include ' - - '#include ' + - '#include ' + - '#include ' - '#include ' - '#include ' - '#include "data_segment2.h"' - '#include ' header: - '#include ' -D_02007650: - symbol: D_02007650 - type: gfx - offset: 0x7650 -D_020076B0: - symbol: D_020076B0 - type: Gfx - offset: 0x76B0 -D_020076E0: - symbol: D_020076E0 - type: Gfx - offset: 0x76E0 -D_02007708: - symbol: D_02007708 - type: Gfx - offset: 0x7708 -D_02007728: - symbol: D_02007728 - type: Gfx - offset: 0x7728 -D_02007748: - symbol: D_02007748 - type: Gfx - offset: 0x7748 -D_02007768: - symbol: D_02007768 - type: Gfx - offset: 0x7768 -D_02007788: - symbol: D_02007788 - type: Gfx - offset: 0x7788 -D_020077A8: - symbol: D_020077A8 - type: Gfx - offset: 0x77A8 -D_020077D8: - symbol: D_020077D8 - type: Gfx - offset: 0x77D8 -D_020077F8: - symbol: D_020077F8 - type: Gfx - offset: 0x77F8 -D_02007818: - symbol: D_02007818 - type: Gfx - offset: 0x7818 -D_02007838: - symbol: D_02007838 - type: Gfx - offset: 0x7838 -D_02007858: - symbol: D_02007858 - type: Gfx - offset: 0x7858 -D_02007878: - symbol: D_02007878 - type: Gfx - offset: 0x7878 -D_02007898: - symbol: D_02007898 - type: Gfx - offset: 0x7898 -D_020078B8: - symbol: D_020078B8 - type: Gfx - offset: 0x78B8 -D_020078D8: - symbol: D_020078D8 - type: Gfx - offset: 0x78D8 -D_020078F8: - symbol: D_020078F8 - type: Gfx - offset: 0x78F8 -D_02007918: - symbol: D_02007918 - type: Gfx - offset: 0x7918 -D_02007938: - symbol: D_02007938 - type: Gfx - offset: 0x7938 -D_02007958: - symbol: D_02007958 - type: Gfx - offset: 0x7958 -D_02007978: - symbol: D_02007978 - type: Gfx - offset: 0x7978 -D_02007998: - symbol: D_02007998 - type: Gfx - offset: 0x7998 -D_020079B8: - symbol: D_020079B8 - type: Gfx - offset: 0x79B8 -D_020079D8: - symbol: D_020079D8 - type: Gfx - offset: 0x79D8 -D_020079F8: - symbol: D_020079F8 - type: Gfx - offset: 0x79F8 -D_02007A18: - symbol: D_02007A18 - type: Gfx - offset: 0x7A18 -D_02007A38: - symbol: D_02007A38 - type: Gfx - offset: 0x7A38 -D_02007A58: - symbol: D_02007A58 - type: Gfx - offset: 0x7A58 -D_02007A78: - symbol: D_02007A78 - type: Gfx - offset: 0x7A78 -D_02007A98: - symbol: D_02007A98 - type: Gfx - offset: 0x7A98 -D_02007AB8: - symbol: D_02007AB8 - type: Gfx - offset: 0x7AB8 -D_02007AD8: - symbol: D_02007AD8 - type: Gfx - offset: 0x7AD8 -D_02007AF8: - symbol: D_02007AF8 - type: Gfx - offset: 0x7AF8 -D_02007B18: - symbol: D_02007B18 - type: Gfx - offset: 0x7B18 -D_02007B38: - symbol: D_02007B38 - type: vtx - offset: 0x7B38 - count: 8 -D_02007BB8: - symbol: D_02007BB8 - type: vtx - offset: 0x7BB8 - count: 2 -D_02007BD8: - symbol: D_02007BD8 - type: vtx - offset: 0x7BD8 - count: 2 -D_02007BF8: - symbol: D_02007BF8 - type: vtx - offset: 0x7BF8 - count: 2 -D_02007C18: - symbol: D_02007C18 - type: vtx - offset: 0x7C18 - count: 2 -D_02007C38: - symbol: D_02007C38 - type: vtx - offset: 0x7C38 - count: 2 -D_02007C58: - symbol: D_02007C58 - type: vtx - offset: 0x7C58 - count: 2 -D_02007C78: - symbol: D_02007C78 - type: vtx - offset: 0x7C78 - count: 2 -D_02007C98: - symbol: D_02007C98 - type: vtx - offset: 0x7C98 - count: 2 -D_02007CB8: - symbol: D_02007CB8 - type: vtx - offset: 0x7CB8 - count: 2 -D_02007CD8: - symbol: D_02007CD8 - type: vtx - offset: 0x7CD8 - count: 2 -D_02007CF8: - symbol: D_02007CF8 - type: vtx - offset: 0x7CF8 - count: 2 -D_02007D18: - symbol: D_02007D18 - type: vtx - offset: 0x7D18 - count: 2 -D_02007D38: - symbol: D_02007D38 - type: vtx - offset: 0x7D38 - count: 2 -D_02007D58: - symbol: D_02007D58 - type: vtx - offset: 0x7D58 - count: 2 -D_02007D78: - symbol: D_02007D78 - type: vtx - offset: 0x7D78 - count: 2 -D_02007D98: - symbol: D_02007D98 - type: vtx - offset: 0x7D98 - count: 2 -D_02007DB8: - symbol: D_02007DB8 - type: vtx - offset: 0x7DB8 - count: 2 -D_02007DD8: - symbol: D_02007DD8 - type: vtx - offset: 0x7DD8 - count: 2 -D_02007DF8: - symbol: D_02007DF8 - type: vtx - offset: 0x7DF8 - count: 2 -D_02007E18: - symbol: D_02007E18 - type: vtx - offset: 0x7E18 - count: 2 -D_02007E38: - symbol: D_02007E38 - type: vtx - offset: 0x7E38 - count: 2 -D_02007E58: - symbol: D_02007E58 - type: vtx - offset: 0x7E58 - count: 2 -D_02007E78: - symbol: D_02007E78 - type: vtx - offset: 0x7E78 - count: 2 -D_02007E98: - symbol: D_02007E98 - type: vtx - offset: 0x7E98 - count: 2 -D_02007EB8: - symbol: D_02007EB8 - type: vtx - offset: 0x7EB8 - count: 2 -D_02007ED8: - symbol: D_02007ED8 - type: vtx - offset: 0x7ED8 - count: 2 -D_02007EF8: - symbol: D_02007EF8 - type: vtx - offset: 0x7EF8 - count: 2 -D_02007F18: - symbol: D_02007F18 - type: gfx - offset: 0x7F18 -D_02007F48: - symbol: D_02007F48 - type: gfx - offset: 0x7F48 -D_02007F60: - symbol: D_02007F60 - type: gfx - offset: 0x7F60 -D_02007FC8: - symbol: D_02007FC8 - type: gfx - offset: 0x7FC8 -D_02008008: - symbol: D_02008008 - type: gfx - offset: 0x8008 -D_02008030: - symbol: D_02008030 - type: gfx - offset: 0x8030 -D_02008058: - symbol: D_02008058 - type: gfx - offset: 0x8058 +# D_02007650: +# symbol: D_02007650 +# type: gfx +# offset: 0x7650 +# D_020076B0: +# symbol: D_020076B0 +# type: Gfx +# offset: 0x76B0 +# D_020076E0: +# symbol: D_020076E0 +# type: Gfx +# offset: 0x76E0 +# D_02007708: +# symbol: D_02007708 +# type: Gfx +# offset: 0x7708 +# D_02007728: +# symbol: D_02007728 +# type: Gfx +# offset: 0x7728 +# D_02007748: +# symbol: D_02007748 +# type: Gfx +# offset: 0x7748 +# D_02007768: +# symbol: D_02007768 +# type: Gfx +# offset: 0x7768 +# D_02007788: +# symbol: D_02007788 +# type: Gfx +# offset: 0x7788 +# D_020077A8: +# symbol: D_020077A8 +# type: Gfx +# offset: 0x77A8 +# D_020077D8: +# symbol: D_020077D8 +# type: Gfx +# offset: 0x77D8 +# D_020077F8: +# symbol: D_020077F8 +# type: Gfx +# offset: 0x77F8 +# D_02007818: +# symbol: D_02007818 +# type: Gfx +# offset: 0x7818 +# D_02007838: +# symbol: D_02007838 +# type: Gfx +# offset: 0x7838 +# D_02007858: +# symbol: D_02007858 +# type: Gfx +# offset: 0x7858 +# D_02007878: +# symbol: D_02007878 +# type: Gfx +# offset: 0x7878 +# D_02007898: +# symbol: D_02007898 +# type: Gfx +# offset: 0x7898 +# D_020078B8: +# symbol: D_020078B8 +# type: Gfx +# offset: 0x78B8 +# D_020078D8: +# symbol: D_020078D8 +# type: Gfx +# offset: 0x78D8 +# D_020078F8: +# symbol: D_020078F8 +# type: Gfx +# offset: 0x78F8 +# D_02007918: +# symbol: D_02007918 +# type: Gfx +# offset: 0x7918 +# D_02007938: +# symbol: D_02007938 +# type: Gfx +# offset: 0x7938 +# D_02007958: +# symbol: D_02007958 +# type: Gfx +# offset: 0x7958 +# D_02007978: +# symbol: D_02007978 +# type: Gfx +# offset: 0x7978 +# D_02007998: +# symbol: D_02007998 +# type: Gfx +# offset: 0x7998 +# D_020079B8: +# symbol: D_020079B8 +# type: Gfx +# offset: 0x79B8 +# D_020079D8: +# symbol: D_020079D8 +# type: Gfx +# offset: 0x79D8 +# D_020079F8: +# symbol: D_020079F8 +# type: Gfx +# offset: 0x79F8 +# D_02007A18: +# symbol: D_02007A18 +# type: Gfx +# offset: 0x7A18 +# D_02007A38: +# symbol: D_02007A38 +# type: Gfx +# offset: 0x7A38 +# D_02007A58: +# symbol: D_02007A58 +# type: Gfx +# offset: 0x7A58 +# D_02007A78: +# symbol: D_02007A78 +# type: Gfx +# offset: 0x7A78 +# D_02007A98: +# symbol: D_02007A98 +# type: Gfx +# offset: 0x7A98 +# D_02007AB8: +# symbol: D_02007AB8 +# type: Gfx +# offset: 0x7AB8 +# D_02007AD8: +# symbol: D_02007AD8 +# type: Gfx +# offset: 0x7AD8 +# D_02007AF8: +# symbol: D_02007AF8 +# type: Gfx +# offset: 0x7AF8 +# D_02007B18: +# symbol: D_02007B18 +# type: Gfx +# offset: 0x7B18 +# D_02007B38: # unused +# symbol: D_02007B38 +# type: vtx +# offset: 0x7B38 +# count: 8 +# D_02007BB8: +# symbol: D_02007BB8 +# type: vtx +# offset: 0x7BB8 +# count: 54 +# D_02007BD8: +# symbol: D_02007BD8 +# type: vtx +# offset: 0x7BD8 +# count: 2 +# D_02007BF8: +# symbol: D_02007BF8 +# type: vtx +# offset: 0x7BF8 +# count: 2 +# D_02007C18: +# symbol: D_02007C18 +# type: vtx +# offset: 0x7C18 +# count: 2 +# D_02007C38: +# symbol: D_02007C38 +# type: vtx +# offset: 0x7C38 +# count: 2 +# D_02007C58: +# symbol: D_02007C58 +# type: vtx +# offset: 0x7C58 +# count: 2 +# D_02007C78: +# symbol: D_02007C78 +# type: vtx +# offset: 0x7C78 +# count: 2 +# D_02007C98: +# symbol: D_02007C98 +# type: vtx +# offset: 0x7C98 +# count: 2 +# D_02007CB8: +# symbol: D_02007CB8 +# type: vtx +# offset: 0x7CB8 +# count: 2 +# D_02007CD8: +# symbol: D_02007CD8 +# type: vtx +# offset: 0x7CD8 +# count: 2 +# D_02007CF8: +# symbol: D_02007CF8 +# type: vtx +# offset: 0x7CF8 +# count: 2 +# D_02007D18: +# symbol: D_02007D18 +# type: vtx +# offset: 0x7D18 +# count: 2 +# D_02007D38: +# symbol: D_02007D38 +# type: vtx +# offset: 0x7D38 +# count: 2 +# D_02007D58: +# symbol: D_02007D58 +# type: vtx +# offset: 0x7D58 +# count: 2 +# D_02007D78: +# symbol: D_02007D78 +# type: vtx +# offset: 0x7D78 +# count: 2 +# D_02007D98: +# symbol: D_02007D98 +# type: vtx +# offset: 0x7D98 +# count: 2 +# D_02007DB8: +# symbol: D_02007DB8 +# type: vtx +# offset: 0x7DB8 +# count: 2 +# D_02007DD8: +# symbol: D_02007DD8 +# type: vtx +# offset: 0x7DD8 +# count: 2 +# D_02007DF8: +# symbol: D_02007DF8 +# type: vtx +# offset: 0x7DF8 +# count: 2 +# D_02007E18: +# symbol: D_02007E18 +# type: vtx +# offset: 0x7E18 +# count: 2 +# D_02007E38: +# symbol: D_02007E38 +# type: vtx +# offset: 0x7E38 +# count: 2 +# D_02007E58: +# symbol: D_02007E58 +# type: vtx +# offset: 0x7E58 +# count: 2 +# D_02007E78: +# symbol: D_02007E78 +# type: vtx +# offset: 0x7E78 +# count: 2 +# D_02007E98: +# symbol: D_02007E98 +# type: vtx +# offset: 0x7E98 +# count: 2 +# D_02007EB8: +# symbol: D_02007EB8 +# type: vtx +# offset: 0x7EB8 +# count: 2 +# D_02007ED8: +# symbol: D_02007ED8 +# type: vtx +# offset: 0x7ED8 +# count: 2 +# D_02007EF8: +# symbol: D_02007EF8 +# type: vtx +# offset: 0x7EF8 +# count: 2 +# D_02007F18: +# symbol: D_02007F18 +# type: gfx +# offset: 0x7F18 +# D_02007F48: +# symbol: D_02007F48 +# type: gfx +# offset: 0x7F48 +# D_02007F60: +# symbol: D_02007F60 +# type: gfx +# offset: 0x7F60 +# D_02007FC8: +# symbol: D_02007FC8 +# type: gfx +# offset: 0x7FC8 +# D_02008008: +# symbol: D_02008008 +# type: gfx +# offset: 0x8008 +# D_02008030: +# symbol: D_02008030 +# type: gfx +# offset: 0x8030 +# D_02008058: +# symbol: D_02008058 +# type: gfx +# offset: 0x8058 diff --git a/yamls/us/startup_logo.yml b/yamls/us/startup_logo.yml index 6c5459ed5..52483c382 100644 --- a/yamls/us/startup_logo.yml +++ b/yamls/us/startup_logo.yml @@ -5,7 +5,8 @@ code: - '#include ' header: - - '#include "types.h"' + - '#include ' + - '#include ' dl1: symbol: startup_logo_dl