diff --git a/Makefile b/Makefile index 4b7eead53..6996913ab 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 @@ -328,7 +339,7 @@ else CFLAGS += $(HIDE_WARNINGS) -non_shared -Wab,-r4300_mul -Xcpluscomm -Xfullwarn -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 @@ -384,6 +395,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 + #==============================================================================# 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/include/PR/os.h b/include/PR/os.h index 3126f4817..e710ccaa8 100644 --- a/include/PR/os.h +++ b/include/PR/os.h @@ -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/defines.h b/include/defines.h index 91d2bbd27..8851cdaa8 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) /** diff --git a/mk64.ld b/mk64.ld index a38b34832..fda768fd0 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) @@ -414,33 +428,36 @@ SECTIONS } 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/audio/data.c b/src/audio/data.c index ffaf3aa58..f1cb322ad 100644 --- a/src/audio/data.c +++ b/src/audio/data.c @@ -1,4 +1,5 @@ #include +#include #include "data.h" #include "effects.h" @@ -440,4 +441,4 @@ u16 D_803B7192; // unconfirmed u32 gAudioRandom; s32 gAudioErrorFlags; u32 D_803B71A0[4]; // unconfirmed -u8 D_803B71B0[4]; // unconfirmed +ALIGNED8 u8 D_803B71B0[4]; // unconfirmed diff --git a/src/audio/data.h b/src/audio/data.h index fe9ca89b0..801137152 100644 --- a/src/audio/data.h +++ b/src/audio/data.h @@ -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 D_803B71B0[]; // unconfirmed extern struct ReverbSettingsEU sReverbSettings[]; extern struct AudioSessionSettingsEU gAudioSessionPresets[]; 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/code_800029B0.c b/src/code_800029B0.c index 86acf4c63..a665de1b8 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -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,7 +65,7 @@ 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; diff --git a/src/code_80057C60.c b/src/code_80057C60.c index 70698aeeb..053573c47 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -5722,7 +5722,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; @@ -5848,16 +5848,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; diff --git a/src/code_80057C60.h b/src/code_80057C60.h index adec3a860..f8f5eeeeb 100644 --- a/src/code_80057C60.h +++ b/src/code_80057C60.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); diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index 18a044ef4..d9392cdcb 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -616,7 +616,7 @@ void init_cloud_object(s32 objectIndex, s32 arg1, CloudData *arg2) { 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); + func_80073404(objectIndex, 0x40U, 0x20U, &D_0D005FB0[0]); temp_v0->primAlpha = 0x00FF; } diff --git a/src/code_80091750.c b/src/code_80091750.c index 2fdbf0c99..1e08b0fa9 100644 --- a/src/code_80091750.c +++ b/src/code_80091750.c @@ -90,7 +90,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 +1152,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[] = { @@ -2791,6 +2791,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,6 +2807,9 @@ Gfx *func_800959F8(Gfx *displayListHead, Vtx *arg1) { } else if (arg1 == D_02007DF8) { gSPDisplayList(displayListHead++, D_800E850C[index]); } +#endif + + return displayListHead; } @@ -2863,16 +2875,16 @@ 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; } diff --git a/src/crash_screen.c b/src/crash_screen.c index d2225a297..54f77037a 100644 --- a/src/crash_screen.c +++ b/src/crash_screen.c @@ -211,8 +211,7 @@ 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 +#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/data/data_segment2.c b/src/data/data_segment2.c index f2cd14e91..8598f825e 100644 --- a/src/data/data_segment2.c +++ b/src/data/data_segment2.c @@ -3,7 +3,7 @@ #include #include #include "data_segment2.h" -#include " +#include Gfx D_02007650[] = { gsDPPipeSync(), @@ -104,168 +104,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 +281,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 +473,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/trig_tables_bss.c b/src/data/trig_tables_bss.c new file mode 100644 index 000000000..aa2bc38d1 --- /dev/null +++ b/src/data/trig_tables_bss.c @@ -0,0 +1,13 @@ +#include +#include + +/** + * Trig tables get loaded into memory at this location. + * See trig_tables.c for the real file. + */ + +#ifdef VERSION_EU +ALIGNED8 u8 trigTablesPadding[0x5750]; +#else +ALIGNED8 u8 trigTablesPadding[0x5810]; +#endif 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/main.c b/src/main.c index 78222bca6..873d8efd6 100644 --- a/src/main.c +++ b/src/main.c @@ -1,4 +1,6 @@ -#define STRANGE_MAIN_HEADER_H +#ifndef GCC +#define D_800DC510_AS_U16 +#endif #include #include #include @@ -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,14 @@ OSMesgQueue gSIEventMesgQueue; OSMesg gSIEventMesgBuf[3]; OSContStatus gControllerStatuses[4]; - OSContPad gControllerPads[4]; u8 gControllerBits; - struct UnkStruct_8015F584 D_8014F110[1024]; u16 gNumActors; u16 gMatrixObjectCount; s32 gTickSpeed; f32 D_80150118; + u16 wasSoftReset; u16 D_8015011E; @@ -120,9 +121,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 +131,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 +160,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; diff --git a/src/main.h b/src/main.h index eca35b4a5..b4f759d85 100644 --- a/src/main.h +++ b/src/main.h @@ -136,23 +136,21 @@ 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[]; @@ -203,11 +201,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/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/__osLeoInterrupt.c b/src/os/__osLeoInterrupt.c index d08a40e5e..e77c5af6d 100644 --- a/src/os/__osLeoInterrupt.c +++ b/src/os/__osLeoInterrupt.c @@ -1,8 +1,8 @@ #include "ultra64.h" #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/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/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/osEepromLongWrite.c b/src/os/osEepromLongWrite.c index 8a7f72e60..d68104ccd 100644 --- a/src/os/osEepromLongWrite.c +++ b/src/os/osEepromLongWrite.c @@ -1,8 +1,7 @@ #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]; diff --git a/src/os/osEepromRead.c b/src/os/osEepromRead.c index a3fc3a4b3..040594444 100644 --- a/src/os/osEepromRead.c +++ b/src/os/osEepromRead.c @@ -1,30 +1,11 @@ #include "libultra_internal.h" -#include "controller.h" #include "macros.h" +#include "controller.h" -extern u8 __osContLastCmd; +extern u8 _osLastSentSiCmd; extern OSPifRam __osEepPifRam; -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 *, OSContStatus *); void __osPackEepReadData(u8); diff --git a/src/os/osEepromWrite.c b/src/os/osEepromWrite.c index 845432502..a48f6873b 100644 --- a/src/os/osEepromWrite.c +++ b/src/os/osEepromWrite.c @@ -7,25 +7,6 @@ OSPifRam __osEepPifRam; extern u8 __osContLastCmd; -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 *, OSContStatus *); void __osPackEepWriteData(u8, u8 *); 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/racing/math_util.c b/src/racing/math_util.c index c28210f63..a49ff6a4e 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) diff --git a/src/racing/math_util.h b/src/racing/math_util.h index d9ee99e63..3addd2a9e 100644 --- a/src/racing/math_util.h +++ b/src/racing/math_util.h @@ -22,6 +22,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); diff --git a/src/racing/memory.c b/src/racing/memory.c index 013c1c62c..41f7ef535 100644 --- a/src/racing/memory.c +++ b/src/racing/memory.c @@ -26,6 +26,7 @@ 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 diff --git a/src/render_objects.c b/src/render_objects.c index 457d5acce..6519871b3 100644 --- a/src/render_objects.c +++ b/src/render_objects.c @@ -563,19 +563,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) { @@ -3528,7 +3528,7 @@ void func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 vertexIndex) { 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); + gSPVertex(gDisplayListHead++, &common_vtx_hedgehog[vertexIndex], 4, 0); gSPDisplayList(gDisplayListHead++, common_rectangle_display); } } @@ -3906,7 +3906,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); } } @@ -4161,7 +4161,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); } } } diff --git a/src/update_objects.c b/src/update_objects.c index 02038fdc7..298ca5e02 100644 --- a/src/update_objects.c +++ b/src/update_objects.c @@ -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); @@ -3048,7 +3048,7 @@ void init_obj_lakitu_red_flag(s32 objectIndex, s32 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->vertex = common_vtx_also_lakitu; temp_v0->pos[2] = 5000.0f; temp_v0->pos[1] = 5000.0f; temp_v0->pos[0] = 5000.0f; @@ -3298,7 +3298,7 @@ void func_8007A060(s32 objectIndex, s32 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->vertex = common_vtx_also_lakitu; temp_v0->pos[2] = 5000.0f; temp_v0->pos[1] = 5000.0f; temp_v0->pos[0] = 5000.0f; @@ -3346,7 +3346,7 @@ void func_8007A228(s32 objectIndex, s32 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->vertex = common_vtx_also_lakitu; temp_v0->pos[2] = 5000.0f; temp_v0->pos[1] = 5000.0f; temp_v0->pos[0] = 5000.0f; @@ -3392,7 +3392,7 @@ void func_8007A3F0(s32 objectIndex, s32 arg1) { func_800791F0(objectIndex, arg1); init_texture_object(objectIndex, 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; @@ -6698,7 +6698,7 @@ void func_8008311C(s32 objectIndex, s32 arg1) { 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->vertex = common_vtx_hedgehog; temp_s0->sizeScaling = 0.2f; temp_s0->itemDisplay = 0; func_80072488(objectIndex); @@ -6754,7 +6754,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; } @@ -6897,7 +6897,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); 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..c82b4a842 160000 --- a/tools/torch +++ b/tools/torch @@ -1 +1 @@ -Subproject commit 74b0c120290083a5e3571a43deada72781af072b +Subproject commit c82b4a8423eb41202dc61378aa50f0052140c132 diff --git a/yamls/us/common_data.yml b/yamls/us/common_data.yml index 9a48b2792..782a4dce5 100644 --- a/yamls/us/common_data.yml +++ b/yamls/us/common_data.yml @@ -73,6 +73,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 +192,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 +224,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 +448,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 diff --git a/yamls/us/data_segment2.yml b/yamls/us/data_segment2.yml index 58c93a360..57afa7b32 100644 --- a/yamls/us/data_segment2.yml +++ b/yamls/us/data_segment2.yml @@ -156,7 +156,7 @@ D_02007B18: symbol: D_02007B18 type: Gfx offset: 0x7B18 -D_02007B38: +D_02007B38: # unused symbol: D_02007B38 type: vtx offset: 0x7B38 @@ -165,137 +165,137 @@ 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 + 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