diff --git a/Jenkinsfile b/Jenkinsfile index 2cf1549e88..8a8345e992 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -26,71 +26,69 @@ pipeline { } } } - stage('Build ntsc-1.2, check disasm metadata') { - steps { - sh 'ln -s /usr/local/etc/roms/oot-ntsc-1.2-us.z64 baseroms/ntsc-1.2/baserom.z64' - sh 'make -j$(nproc) setup VERSION=ntsc-1.2' - sh 'make -j$(nproc) VERSION=ntsc-1.2' - sh '.venv/bin/python3 tools/check_disasm_metadata_unksyms.py -v ntsc-1.2' - sh 'make clean assetclean VERSION=ntsc-1.2' - } - } // The ROMs are built in an order that maximizes compiler flags coverage in a "fail fast" approach. // Specifically we start with a retail ROM for BSS ordering, and make sure we cover all of - // NTSC/PAL/MQ/DEBUG as quickly as possible. + // N64/GC/NTSC/PAL/MQ/DEBUG as quickly as possible. + stage('Build ntsc-1.2') { + steps { + script { + build('ntsc-1.2', 'oot-ntsc-1.2-us.z64') + } + } + } stage('Build gc-jp') { steps { script { - build('gc-jp') + build('gc-jp', 'oot-gc-jp.z64') } } } stage('Build gc-eu-mq') { steps { script { - build('gc-eu-mq') + build('gc-eu-mq', 'oot-gc-eu-mq.z64') } } } stage('Build gc-eu-mq-dbg') { steps { script { - build('gc-eu-mq-dbg') + build('gc-eu-mq-dbg', 'oot-gc-eu-mq-dbg.z64') } } } stage('Build gc-us') { steps { script { - build('gc-us') + build('gc-us', 'oot-gc-us.z64') } } } stage('Build gc-jp-ce') { steps { script { - build('gc-jp-ce') + build('gc-jp-ce', 'oot-gc-jp-ce.z64') } } } stage('Build gc-eu') { steps { script { - build('gc-eu') + build('gc-eu', 'oot-gc-eu.z64') } } } stage('Build gc-jp-mq') { steps { script { - build('gc-jp-mq') + build('gc-jp-mq', 'oot-gc-jp-mq.z64') } } } stage('Build gc-us-mq') { steps { script { - build('gc-us-mq') + build('gc-us-mq', 'oot-gc-us-mq.z64') } } } @@ -122,8 +120,8 @@ pipeline { } } -def build(String version) { - sh "ln -s /usr/local/etc/roms/oot-${version}.z64 baseroms/${version}/baserom.z64" +def build(String version, String rom) { + sh "ln -s /usr/local/etc/roms/${rom} baseroms/${version}/baserom.z64" sh "make -j\$(nproc) setup VERSION=${version}" try { sh "make -j\$(nproc) VERSION=${version}" diff --git a/Makefile b/Makefile index eac3532953..295bb66993 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,7 @@ ORIG_COMPILER ?= 0 # If COMPILER is "gcc", compile with GCC instead of IDO. COMPILER ?= ido # Target game version. Currently the following versions are supported: +# ntsc-1.2 N64 NTSC 1.2 (Japan/US depending on REGION) # gc-jp GameCube Japan # gc-jp-mq GameCube Japan Master Quest # gc-jp-ce GameCube Japan (Collector's Edition disc) @@ -27,7 +28,7 @@ COMPILER ?= ido # gc-eu-mq GameCube Europe/PAL Master Quest # gc-eu-mq-dbg GameCube Europe/PAL Master Quest Debug (default) # The following versions are work-in-progress and not yet matching: -# ntsc-1.2 N64 NTSC 1.2 (Japan/US depending on REGION) +# (none currently) VERSION ?= gc-eu-mq-dbg # Number of threads to extract and compress with N_THREADS ?= $(shell nproc) @@ -52,7 +53,6 @@ ifeq ($(VERSION),ntsc-1.2) REGION ?= JP PLATFORM := N64 DEBUG := 0 - COMPARE := 0 else ifeq ($(VERSION),gc-jp) REGION ?= JP PLATFORM := GC diff --git a/include/fault.h b/include/fault.h index c398a003cd..a95ae59064 100644 --- a/include/fault.h +++ b/include/fault.h @@ -91,7 +91,9 @@ s32 Fault_VPrintf(const char* fmt, va_list args); #if PLATFORM_N64 +extern vs32 gFaultExit; extern vs32 gFaultMsgId; +extern vs32 gFaultDisplayEnable; extern volatile OSThread* gFaultFaultedThread; #define FAULT_MSG_ID gFaultMsgId diff --git a/src/audio/general.c b/src/audio/general.c index 8fb70bc463..fadbed0a9a 100644 --- a/src/audio/general.c +++ b/src/audio/general.c @@ -1273,7 +1273,6 @@ u8 sFanfareStartTimer; u16 sFanfareSeqId; #if PLATFORM_N64 -// TODO: Unsure where in bss this is located u16 sPrevAmbienceSeqId; #endif diff --git a/src/boot/boot_main.c b/src/boot/boot_main.c index d12a87512c..d485a5b1f9 100644 --- a/src/boot/boot_main.c +++ b/src/boot/boot_main.c @@ -5,7 +5,8 @@ #include "cic6105.h" #endif -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:128" StackEntry sBootThreadInfo; OSThread sIdleThread; diff --git a/src/boot/cic6105.c b/src/boot/cic6105.c index bd50096b71..e0ddcb2c49 100644 --- a/src/boot/cic6105.c +++ b/src/boot/cic6105.c @@ -1,3 +1,5 @@ +#pragma increment_block_number "ntsc-1.2:128" + #include "global.h" #include "cic6105.h" #include "fault.h" diff --git a/src/boot/idle.c b/src/boot/idle.c index d698b8cef9..9f11e3a3a0 100644 --- a/src/boot/idle.c +++ b/src/boot/idle.c @@ -2,7 +2,7 @@ #include "stack.h" #include "terminal.h" -#pragma increment_block_number "gc-eu:64 gc-eu-mq:64 gc-jp:64 gc-jp-ce:64 gc-jp-mq:64 gc-us:64 gc-us-mq:64" +#pragma increment_block_number "gc-eu:64 gc-eu-mq:64 gc-jp:64 gc-jp-ce:64 gc-jp-mq:64 gc-us:64 gc-us-mq:64 ntsc-1.2:64" OSThread sMainThread; STACK(sMainStack, 0x900); diff --git a/src/boot/yaz0.c b/src/boot/yaz0.c index 6e56fbbe36..cbd6a87a1d 100644 --- a/src/boot/yaz0.c +++ b/src/boot/yaz0.c @@ -1,6 +1,7 @@ #include "global.h" -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:128" ALIGNED(16) u8 sYaz0DataBuffer[0x400]; u8* sYaz0DataBufferEnd; diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index 1bd0f71701..c3e97aa190 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -26,30 +26,32 @@ #include "n64dd.h" #endif -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:111" StackEntry sDmaMgrStackInfo; OSMesgQueue sDmaMgrMsgQueue; OSMesg sDmaMgrMsgBuf[32]; -OSThread sDmaMgrThread; -STACK(sDmaMgrStack, 0x500); - -#if OOT_DEBUG -const char* sDmaMgrCurFileName; -s32 sDmaMgrCurFileLine; -#endif u32 gDmaMgrVerbose = 0; size_t gDmaMgrDmaBuffSize = DMAMGR_DEFAULT_BUFSIZE; u32 sDmaMgrIsRomCompressed = false; +OSThread sDmaMgrThread; +STACK(sDmaMgrStack, 0x500); + +#if OOT_DEBUG + +const char* sDmaMgrCurFileName; +s32 sDmaMgrCurFileLine; + // dmadata filenames #define DEFINE_DMA_ENTRY(_0, nameString) nameString, -#if OOT_DEBUG const char* sDmaMgrFileNames[] = { #include "tables/dmadata_table.h" }; + #endif #undef DEFINE_DMA_ENTRY diff --git a/src/code/fault_n64.c b/src/code/fault_n64.c index eb3019d33e..762301b562 100644 --- a/src/code/fault_n64.c +++ b/src/code/fault_n64.c @@ -1,10 +1,14 @@ +#if PLATFORM_N64 + +#pragma increment_block_number "ntsc-1.2:128" + #include "global.h" #include "fault.h" #include "libc64/os_malloc.h" #include "stack.h" #include "terminal.h" -#if PLATFORM_N64 +#pragma increment_block_number "ntsc-1.2:96" typedef struct FaultMgr { OSThread thread; @@ -80,7 +84,7 @@ const char* sFpExceptionNames[] = { }; u16 sFaultFontColor = GPACK_RGBA5551(255, 255, 255, 1); -s32 D_800FF9C4[7] = { 0 }; // Unused (file padding?) +s32 D_800FF9C4[7] = { 0 }; // Unused Input sFaultInputs[MAXCONTROLLERS]; @@ -90,12 +94,10 @@ STACK(sFaultStack, 0x400); StackEntry sFaultStackInfo; FaultCursorCoords sFaultCursorPos; -vs32 sFaultExit; +vs32 gFaultExit; vs32 gFaultMsgId; -vs32 sFaultDisplayEnable; +vs32 gFaultDisplayEnable; volatile OSThread* gFaultFaultedThread; -s32 B_80122570[16]; -s32 B_801225B0[8]; // Unused (file padding?) void Fault_SleepImpl(u32 ms) { Sleep_Msec(ms); @@ -653,6 +655,8 @@ void Fault_DrawMemDumpSP(OSThread* thread) { } void func_800AF3DC(void) { + static s32 B_80122570[16]; + static s32 B_801225B0[8]; // Unused s32 i; Fault_DrawRecBlack(22, 16, 276, 208); @@ -773,8 +777,8 @@ void Fault_ThreadEntry(void* arg0) { gFaultFaultedThread = faultedThread; Fault_LogThreadContext(faultedThread); osSyncPrintf("%d %s %d:%s = %d\n", osGetThreadId(NULL), "fault.c", 1454, "fault_display_enable", - sFaultDisplayEnable); - while (!sFaultDisplayEnable) { + gFaultDisplayEnable); + while (!gFaultDisplayEnable) { Fault_SleepImpl(1000); } Fault_SleepImpl(500); @@ -793,8 +797,8 @@ void Fault_ThreadEntry(void* arg0) { Fault_DrawMemDumpPC(faultedThread); Fault_WaitForInput(); Fault_ProcessClients(); - } while (!sFaultExit); - while (!sFaultExit) {} + } while (!gFaultExit); + while (!gFaultExit) {} Fault_ResumeThread(faultedThread); } } @@ -806,7 +810,7 @@ void Fault_SetFrameBuffer(void* fb, u16 w, u16 h) { } void Fault_Init(void) { - sFaultDisplayEnable = 1; + gFaultDisplayEnable = 1; gFaultMgr.fb = (u16*)(PHYS_TO_K0(osMemSize) - sizeof(u16[SCREEN_HEIGHT][SCREEN_WIDTH])); gFaultMgr.fbWidth = SCREEN_WIDTH; gFaultMgr.fbDepth = 16; @@ -823,7 +827,7 @@ void Fault_AddHungupAndCrashImpl(const char* exp1, const char* exp2) { osSyncPrintf("HungUp on Thread %d", osGetThreadId(NULL)); osSyncPrintf("%s\n", exp1 != NULL ? exp1 : "(NULL)"); osSyncPrintf("%s\n", exp2 != NULL ? exp2 : "(NULL)"); - while (sFaultDisplayEnable == 0) { + while (gFaultDisplayEnable == 0) { Fault_SleepImpl(1000); } Fault_SleepImpl(500); diff --git a/src/code/graph.c b/src/code/graph.c index 2b4777ea63..7c562f160b 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -5,7 +5,8 @@ #define GFXPOOL_HEAD_MAGIC 0x1234 #define GFXPOOL_TAIL_MAGIC 0x5678 -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:223" /** * The time at which the previous `Graph_Update` ended. @@ -19,12 +20,6 @@ OSTime sGraphPrevTaskTimeStart; #if OOT_DEBUG FaultClient sGraphFaultClient; -#endif - -CfbInfo sGraphCfbInfos[3]; - -#if OOT_DEBUG -FaultClient sGraphUcodeFaultClient; UCodeInfo D_8012D230[3] = { { UCODE_F3DZEX, gspF3DZEX2_NoN_PosLight_fifoTextStart }, @@ -165,11 +160,6 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) { #if OOT_DEBUG static Gfx* sPrevTaskWorkBuffer = NULL; #endif - static s32 sGraphCfbInfoIdx = 0; - - OSTime timeNow; - OSTimer timer; - OSMesg msg; OSTask_t* task = &gfxCtx->task.list.t; OSScTask* scTask = &gfxCtx->task; @@ -177,7 +167,8 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) { osGetTime() - sGraphPrevTaskTimeStart - gAudioThreadUpdateTimeAcc; { - CfbInfo* cfb; + OSTimer timer; + OSMesg msg; // Schedule a message to be handled in 3 seconds, for RCP timeout osSetTimer(&timer, OS_USEC_TO_CYCLES(3000000), 0, &gfxCtx->queue, (OSMesg)666); @@ -212,12 +203,15 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) { #if OOT_DEBUG sPrevTaskWorkBuffer = gfxCtx->workBuffer; #endif + } - if (gfxCtx->callback != NULL) { - gfxCtx->callback(gfxCtx, gfxCtx->callbackParam); - } + if (gfxCtx->callback != NULL) { + gfxCtx->callback(gfxCtx, gfxCtx->callbackParam); + } + + { + OSTime timeNow = osGetTime(); - timeNow = osGetTime(); if (gAudioThreadUpdateTimeStart != 0) { // The audio thread update is running // Add the time already spent to the accumulator and leave the rest for the next cycle @@ -229,41 +223,45 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) { gAudioThreadUpdateTimeAcc = 0; sGraphPrevTaskTimeStart = osGetTime(); + } - task->type = M_GFXTASK; - task->flags = OS_SC_DRAM_DLIST; - task->ucode_boot = SysUcode_GetUCodeBoot(); - task->ucode_boot_size = SysUcode_GetUCodeBootSize(); - task->ucode = SysUcode_GetUCode(); - task->ucode_data = SysUcode_GetUCodeData(); - task->ucode_size = SP_UCODE_SIZE; - task->ucode_data_size = SP_UCODE_DATA_SIZE; - task->dram_stack = gGfxSPTaskStack; - task->dram_stack_size = sizeof(gGfxSPTaskStack); - task->output_buff = gGfxSPTaskOutputBuffer; - task->output_buff_size = gGfxSPTaskOutputBuffer + ARRAY_COUNT(gGfxSPTaskOutputBuffer); - task->data_ptr = (u64*)gfxCtx->workBuffer; + task->type = M_GFXTASK; + task->flags = OS_SC_DRAM_DLIST; + task->ucode_boot = SysUcode_GetUCodeBoot(); + task->ucode_boot_size = SysUcode_GetUCodeBootSize(); + task->ucode = SysUcode_GetUCode(); + task->ucode_data = SysUcode_GetUCodeData(); + task->ucode_size = SP_UCODE_SIZE; + task->ucode_data_size = SP_UCODE_DATA_SIZE; + task->dram_stack = gGfxSPTaskStack; + task->dram_stack_size = sizeof(gGfxSPTaskStack); + task->output_buff = gGfxSPTaskOutputBuffer; + task->output_buff_size = gGfxSPTaskOutputBuffer + ARRAY_COUNT(gGfxSPTaskOutputBuffer); + task->data_ptr = (u64*)gfxCtx->workBuffer; - OPEN_DISPS(gfxCtx, "../graph.c", 828); - task->data_size = (uintptr_t)WORK_DISP - (uintptr_t)gfxCtx->workBuffer; - CLOSE_DISPS(gfxCtx, "../graph.c", 830); + OPEN_DISPS(gfxCtx, "../graph.c", 828); + task->data_size = (uintptr_t)WORK_DISP - (uintptr_t)gfxCtx->workBuffer; + CLOSE_DISPS(gfxCtx, "../graph.c", 830); - task->yield_data_ptr = gGfxSPTaskYieldBuffer; + task->yield_data_ptr = gGfxSPTaskYieldBuffer; - task->yield_data_size = sizeof(gGfxSPTaskYieldBuffer); + task->yield_data_size = sizeof(gGfxSPTaskYieldBuffer); - scTask->next = NULL; - scTask->flags = OS_SC_NEEDS_RSP | OS_SC_NEEDS_RDP | OS_SC_SWAPBUFFER | OS_SC_LAST_TASK; - if (R_GRAPH_TASKSET00_FLAGS & 1) { - R_GRAPH_TASKSET00_FLAGS &= ~1; - scTask->flags &= ~OS_SC_SWAPBUFFER; - gfxCtx->fbIdx--; - } + scTask->next = NULL; + scTask->flags = OS_SC_NEEDS_RSP | OS_SC_NEEDS_RDP | OS_SC_SWAPBUFFER | OS_SC_LAST_TASK; + if (R_GRAPH_TASKSET00_FLAGS & 1) { + R_GRAPH_TASKSET00_FLAGS &= ~1; + scTask->flags &= ~OS_SC_SWAPBUFFER; + gfxCtx->fbIdx--; + } - scTask->msgQueue = &gfxCtx->queue; - scTask->msg = NULL; + scTask->msgQueue = &gfxCtx->queue; + scTask->msg = NULL; - { s16 pad; } + { + static CfbInfo sGraphCfbInfos[3]; + static s32 sGraphCfbInfoIdx = 0; + CfbInfo* cfb; cfb = &sGraphCfbInfos[sGraphCfbInfoIdx]; @@ -279,14 +277,12 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) { cfb->updateRate = R_UPDATE_RATE; scTask->framebuffer = cfb; - - { s16 pad2; } - - gfxCtx->schedMsgQueue = &gScheduler.cmdQueue; - - osSendMesg(&gScheduler.cmdQueue, (OSMesg)scTask, OS_MESG_BLOCK); - Sched_Notify(&gScheduler); } + + gfxCtx->schedMsgQueue = &gScheduler.cmdQueue; + + osSendMesg(&gScheduler.cmdQueue, (OSMesg)scTask, OS_MESG_BLOCK); + Sched_Notify(&gScheduler); } void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) { @@ -339,6 +335,8 @@ void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) { } if (R_HREG_MODE == HREG_MODE_UCODE_DISAS && R_UCODE_DISAS_TOGGLE != 0) { + static FaultClient sGraphUcodeFaultClient; + if (R_UCODE_DISAS_LOG_MODE == 3) { Fault_AddClient(&sGraphUcodeFaultClient, Graph_UCodeFaultClient, gfxCtx->workBuffer, "do_count_fault"); } diff --git a/src/code/main.c b/src/code/main.c index 34b0bfaf1a..8024db9412 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -1,18 +1,19 @@ #include "ultra64.h" -#pragma increment_block_number "gc-eu:80 gc-eu-mq:80 gc-jp:80 gc-jp-ce:80 gc-jp-mq:80 gc-us:80 gc-us-mq:80" +// Declared before including other headers for BSS ordering +extern uintptr_t gSegments[NUM_SEGMENTS]; -struct PreNmiBuff* gAppNmiBufferPtr; +#pragma increment_block_number "gc-eu:252 gc-eu-mq:252 gc-jp:252 gc-jp-ce:252 gc-jp-mq:252 gc-us:252 gc-us-mq:252" \ + "ntsc-1.2:128" -#include "segmented_address.h" - -struct Scheduler gScheduler; -struct PadMgr gPadMgr; -struct IrqMgr gIrqMgr; -uintptr_t gSegments[NUM_SEGMENTS]; +extern struct PreNmiBuff* gAppNmiBufferPtr; +extern struct Scheduler gScheduler; +extern struct PadMgr gPadMgr; +extern struct IrqMgr gIrqMgr; #include "global.h" #include "fault.h" +#include "segmented_address.h" #include "stack.h" #include "terminal.h" #include "versions.h" @@ -21,12 +22,21 @@ uintptr_t gSegments[NUM_SEGMENTS]; #include "n64dd.h" #endif +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ + "ntsc-1.2:168" + extern u8 _buffersSegmentEnd[]; s32 gScreenWidth = SCREEN_WIDTH; s32 gScreenHeight = SCREEN_HEIGHT; u32 gSystemHeapSize = 0; +PreNmiBuff* gAppNmiBufferPtr; +Scheduler gScheduler; +PadMgr gPadMgr; +IrqMgr gIrqMgr; +uintptr_t gSegments[NUM_SEGMENTS]; + OSThread sGraphThread; STACK(sGraphStack, 0x1800); STACK(sSchedStack, 0x600); @@ -38,7 +48,7 @@ StackEntry sSchedStackInfo; StackEntry sAudioStackInfo; StackEntry sPadMgrStackInfo; StackEntry sIrqMgrStackInfo; -AudioMgr gAudioMgr; +AudioMgr sAudioMgr; OSMesgQueue sSerialEventQueue; OSMesg sSerialMsgBuf[1]; @@ -130,12 +140,12 @@ void Main(void* arg) { IrqMgr_AddClient(&gIrqMgr, &irqClient, &irqMgrMsgQueue); StackCheck_Init(&sAudioStackInfo, sAudioStack, STACK_TOP(sAudioStack), 0, 0x100, "audio"); - AudioMgr_Init(&gAudioMgr, STACK_TOP(sAudioStack), THREAD_PRI_AUDIOMGR, THREAD_ID_AUDIOMGR, &gScheduler, &gIrqMgr); + AudioMgr_Init(&sAudioMgr, STACK_TOP(sAudioStack), THREAD_PRI_AUDIOMGR, THREAD_ID_AUDIOMGR, &gScheduler, &gIrqMgr); StackCheck_Init(&sPadMgrStackInfo, sPadMgrStack, STACK_TOP(sPadMgrStack), 0, 0x100, "padmgr"); PadMgr_Init(&gPadMgr, &sSerialEventQueue, &gIrqMgr, THREAD_ID_PADMGR, THREAD_PRI_PADMGR, STACK_TOP(sPadMgrStack)); - AudioMgr_WaitForInit(&gAudioMgr); + AudioMgr_WaitForInit(&sAudioMgr); StackCheck_Init(&sGraphStackInfo, sGraphStack, STACK_TOP(sGraphStack), 0, 0x100, "graph"); osCreateThread(&sGraphThread, THREAD_ID_GRAPH, Graph_ThreadEntry, arg, STACK_TOP(sGraphStack), THREAD_PRI_GRAPH); diff --git a/src/code/speed_meter.c b/src/code/speed_meter.c index 903cd0fc76..b3bfa6d7ce 100644 --- a/src/code/speed_meter.c +++ b/src/code/speed_meter.c @@ -1,4 +1,5 @@ -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:128" #include "global.h" #include "terminal.h" diff --git a/src/code/sys_math3d.c b/src/code/sys_math3d.c index 570da1ab01..c0ebcea868 100644 --- a/src/code/sys_math3d.c +++ b/src/code/sys_math3d.c @@ -5,7 +5,8 @@ #include "macros.h" #include "sys_math3d.h" -#pragma increment_block_number "gc-eu:106 gc-eu-mq:106 gc-jp:106 gc-jp-ce:106 gc-jp-mq:106 gc-us:106 gc-us-mq:106" +#pragma increment_block_number "gc-eu:106 gc-eu-mq:106 gc-jp:106 gc-jp-ce:106 gc-jp-mq:106 gc-us:106 gc-us-mq:106" \ + "ntsc-1.2:79" s32 Math3D_LineVsLineClosestTwoPoints(Vec3f* lineAPointA, Vec3f* lineAPointB, Vec3f* lineBPointA, Vec3f* lineBPointB, Vec3f* lineAClosestToB, Vec3f* lineBClosestToA); diff --git a/src/code/z_actor.c b/src/code/z_actor.c index e0d1c50420..e36110e79b 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -11,7 +11,8 @@ #include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #include "assets/objects/object_bdoor/object_bdoor.h" -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:0" static CollisionPoly* sCurCeilingPoly; static s32 sCurCeilingBgId; @@ -2019,7 +2020,7 @@ s32 func_8002F9EC(PlayState* play, Actor* actor, CollisionPoly* poly, s32 bgId, return false; } -#pragma increment_block_number "gc-eu:22 gc-eu-mq:22 gc-jp:22 gc-jp-ce:22 gc-jp-mq:22 gc-us:22 gc-us-mq:22" +#pragma increment_block_number "gc-eu:22 gc-eu-mq:22 gc-jp:22 gc-jp-ce:22 gc-jp-mq:22 gc-us:22 gc-us-mq:22 ntsc-1.2:22" // Local data used for Farore's Wind light (stored in BSS) LightInfo D_8015BC00; diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index 415dcd4741..dcc2a0df33 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -1,6 +1,8 @@ #include "global.h" #include "terminal.h" +#pragma increment_block_number "ntsc-1.2:152" + u16 DynaSSNodeList_GetNextNodeIdx(DynaSSNodeList* nodeList); void BgCheck_GetStaticLookupIndicesFromPos(CollisionContext* colCtx, Vec3f* pos, Vec3i* sector); s32 BgCheck_PosInStaticBoundingBox(CollisionContext* colCtx, Vec3f* pos); diff --git a/src/code/z_camera.c b/src/code/z_camera.c index ce22019150..58c6c87ee5 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -4,7 +4,8 @@ #include "terminal.h" #include "overlays/actors/ovl_En_Horse/z_en_horse.h" -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ + "ntsc-1.2:192" s16 Camera_RequestSettingImpl(Camera* camera, s16 requestedSetting, s16 flags); s32 Camera_RequestModeImpl(Camera* camera, s16 requestedMode, u8 forceModeChange); @@ -3636,7 +3637,8 @@ s32 Camera_KeepOn3(Camera* camera) { return 1; } -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:112" s32 Camera_KeepOn4(Camera* camera) { static Vec3f D_8015BD50; diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c index 4d5ccbc95d..922b7e0521 100644 --- a/src/code/z_collision_check.c +++ b/src/code/z_collision_check.c @@ -5,7 +5,7 @@ #include "overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.h" -#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0" +#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ntsc-1.2:224" typedef s32 (*ColChkResetFunc)(PlayState*, Collider*); typedef void (*ColChkApplyFunc)(PlayState*, CollisionCheckContext*, Collider*); @@ -2195,7 +2195,8 @@ void CollisionCheck_ATTrisVsACCyl(PlayState* play, CollisionCheckContext* colChk } } -#pragma increment_block_number "gc-eu:252 gc-eu-mq:252 gc-jp:252 gc-jp-ce:252 gc-jp-mq:252 gc-us:252 gc-us-mq:252" +#pragma increment_block_number "gc-eu:252 gc-eu-mq:252 gc-jp:252 gc-jp-ce:252 gc-jp-mq:252 gc-us:252 gc-us-mq:252" \ + "ntsc-1.2:252" void CollisionCheck_ATCylVsACQuad(PlayState* play, CollisionCheckContext* colChkCtx, Collider* atCol, Collider* acCol) { static TriNorm tri1; diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index 30a1398dff..dcd0ee4d2e 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -2,7 +2,8 @@ #include "region.h" #include "versions.h" -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:192" ALIGNED(16) SaveContext gSaveContext; u32 D_8015FA88; diff --git a/src/code/z_debug.c b/src/code/z_debug.c index 963e934ff3..4ca9b2071f 100644 --- a/src/code/z_debug.c +++ b/src/code/z_debug.c @@ -12,7 +12,8 @@ typedef struct InputCombo { /* 0x2 */ u16 press; } InputCombo; // size = 0x4 -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:128" RegEditor* gRegEditor; diff --git a/src/code/z_demo.c b/src/code/z_demo.c index f46e33a552..29e18394e1 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -123,7 +123,8 @@ u16 gCamAtSplinePointsAppliedFrame; u16 gCamEyePointAppliedFrame; u16 gCamAtPointAppliedFrame; -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ + "ntsc-1.2:96" // Cam ID to return to when a scripted cutscene is finished s16 sReturnToCamId; diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index 1f4ea9a508..e97c8a8cf0 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -1,7 +1,8 @@ #include "global.h" #include "terminal.h" -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:128" void (*sKaleidoScopeUpdateFunc)(PlayState* play); void (*sKaleidoScopeDrawFunc)(PlayState* play); diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 52be77e440..16ccf3b47b 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -7,7 +7,8 @@ #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:0" typedef enum LightningBoltState { /* 0x00 */ LIGHTNING_BOLT_START, @@ -212,7 +213,8 @@ s16 sLightningFlashAlpha; s16 sSunDepthTestX; s16 sSunDepthTestY; -#pragma increment_block_number "gc-eu:112 gc-eu-mq:112 gc-jp:96 gc-jp-ce:96 gc-jp-mq:96 gc-us:96 gc-us-mq:96" +#pragma increment_block_number "gc-eu:112 gc-eu-mq:112 gc-jp:96 gc-jp-ce:96 gc-jp-mq:96 gc-us:96 gc-us-mq:96" \ + "ntsc-1.2:224" LightNode* sNGameOverLightNode; LightInfo sNGameOverLightInfo; diff --git a/src/code/z_message.c b/src/code/z_message.c index ea603ac425..86b1e20709 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -8,7 +8,8 @@ #include "n64dd.h" #endif -#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:112" #if !PLATFORM_GC #define OCARINA_BUTTON_A_PRIM_1_R 80 @@ -90,6 +91,9 @@ #define OCARINA_ICON_ENV_2_B 130 #endif +s32 sCharTexSize; +s32 sCharTexScale; + s16 sTextFade = false; // original name: key_off_flag ? u8 D_8014B2F4 = 0; @@ -250,8 +254,6 @@ s16 gOcarinaSongItemMap[] = { OCARINA_SONG_SARIAS, OCARINA_SONG_SUNS, OCARINA_SONG_TIME, OCARINA_SONG_STORMS, }; -s32 sCharTexSize; -s32 sCharTexScale; s16 sOcarinaButtonAPrimR; s16 sOcarinaButtonAPrimB; s16 sOcarinaButtonAPrimG; diff --git a/src/code/z_player_call.c b/src/code/z_player_call.c index 7b44d6afec..a004f0b534 100644 --- a/src/code/z_player_call.c +++ b/src/code/z_player_call.c @@ -3,7 +3,8 @@ #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_4 | ACTOR_FLAG_5 | ACTOR_FLAG_25 | ACTOR_FLAG_26) -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:128" void (*sPlayerCallInitFunc)(Actor* thisx, PlayState* play); void (*sPlayerCallDestroyFunc)(Actor* thisx, PlayState* play); diff --git a/src/n64dd/z_n64dd.c b/src/n64dd/z_n64dd.c index 4e90806e9a..fd06d02526 100644 --- a/src/n64dd/z_n64dd.c +++ b/src/n64dd/z_n64dd.c @@ -6,6 +6,8 @@ #include "stack.h" #include "versions.h" +#pragma increment_block_number "ntsc-1.2:128" + typedef struct struct_801D9C30 { /* 0x000 */ s32 unk_000; // disk start /* 0x004 */ s32 unk_004; // disk end diff --git a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c index 4d4bcb6493..e7d19d1453 100644 --- a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c +++ b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c @@ -100,19 +100,21 @@ static ColliderCylinderInit sLightBallCylinderInit = { static u8 D_808E4C58[] = { 0, 12, 10, 12, 14, 16, 12, 14, 16, 12, 14, 16, 12, 14, 16, 10, 16, 14 }; static Vec3f sZeroVec = { 0.0f, 0.0f, 0.0f }; -#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0" +#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ntsc-1.2:0" static EnGanonMant* sCape; // TODO: There's probably a way to match BSS ordering with less padding by spreading the variables out and moving // data around. It would be easier if we had more options for controlling BSS ordering in debug. -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ + "ntsc-1.2:128" static s32 sSeed1; static s32 sSeed2; static s32 sSeed3; -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ + "ntsc-1.2:128" static BossGanon* sGanondorf; diff --git a/src/overlays/actors/ovl_Boss_Va/z_boss_va.c b/src/overlays/actors/ovl_Boss_Va/z_boss_va.c index a07d358dae..0b993fa463 100644 --- a/src/overlays/actors/ovl_Boss_Va/z_boss_va.c +++ b/src/overlays/actors/ovl_Boss_Va/z_boss_va.c @@ -9,7 +9,7 @@ #include "overlays/actors/ovl_En_Boom/z_en_boom.h" #include "assets/objects/gameplay_keep/gameplay_keep.h" -#pragma increment_block_number "gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128 ntsc-1.2:128" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_4 | ACTOR_FLAG_5) diff --git a/src/overlays/actors/ovl_En_Xc/z_en_xc.c b/src/overlays/actors/ovl_En_Xc/z_en_xc.c index bc71fe7dd6..b6444ad3d5 100644 --- a/src/overlays/actors/ovl_En_Xc/z_en_xc.c +++ b/src/overlays/actors/ovl_En_Xc/z_en_xc.c @@ -14,7 +14,7 @@ #include "assets/scenes/dungeons/ice_doukutu/ice_doukutu_scene.h" #include "terminal.h" -#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0" +#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ntsc-1.2:0" #define FLAGS ACTOR_FLAG_4 @@ -1395,7 +1395,8 @@ void func_80B3F3D8(void) { Sfx_PlaySfxCentered2(NA_SE_PL_SKIP); } -#pragma increment_block_number "gc-eu:64 gc-eu-mq:64 gc-jp:64 gc-jp-ce:64 gc-jp-mq:64 gc-us:64 gc-us-mq:64" +#pragma increment_block_number "gc-eu:64 gc-eu-mq:64 gc-jp:64 gc-jp-ce:64 gc-jp-mq:64 gc-us:64 gc-us-mq:64" \ + "ntsc-1.2:128" void EnXc_PlayDiveSFX(Vec3f* src, PlayState* play) { static Vec3f D_80B42DA0; diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 6844e76727..31a638ed3e 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -354,19 +354,22 @@ void Player_Action_CsAction(Player* this, PlayState* play); // .bss part 1 -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ + "ntsc-1.2:128" static s32 D_80858AA0; // TODO: There's probably a way to match BSS ordering with less padding by spreading the variables out and moving // data around. It would be easier if we had more options for controlling BSS ordering in debug. -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ + "ntsc-1.2:192" static s32 D_80858AA4; static Vec3f sInteractWallCheckResult; static Input* sControlInput; -#pragma increment_block_number "gc-eu:224 gc-eu-mq:224 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ + "ntsc-1.2:128" // .data @@ -4744,7 +4747,7 @@ s32 func_80838FB8(PlayState* play, Player* this) { * * Note: grottos and normal fairy fountains use `ENTR_RETURN_GROTTO` */ -s16 sReturnEntranceGroupData[] = { +static s16 sReturnEntranceGroupData[] = { // ENTR_RETURN_GREAT_FAIRYS_FOUNTAIN_MAGIC /* 0 */ ENTR_DEATH_MOUNTAIN_TRAIL_4, // from Magic Fairy Fountain /* 1 */ ENTR_DEATH_MOUNTAIN_CRATER_3, // from Double Magic Fairy Fountain @@ -4775,7 +4778,7 @@ s16 sReturnEntranceGroupData[] = { /** * The values are indices into `sReturnEntranceGroupData` marking the start of each group */ -u8 sReturnEntranceGroupIndices[] = { +static u8 sReturnEntranceGroupIndices[] = { 11, // ENTR_RETURN_GREAT_FAIRYS_FOUNTAIN_SPELLS 9, // ENTR_RETURN_SHOOTING_GALLERY 3, // ENTR_RETURN_2 @@ -14262,7 +14265,12 @@ void Player_Action_80850AEC(Player* this, PlayState* play) { void Player_Action_80850C68(Player* this, PlayState* play) { if ((this->av2.actionVar2 != 0) && ((this->unk_858 != 0.0f) || (this->unk_85C != 0.0f))) { - static Vec3s D_80858AD8[25]; + // 144-byte buffer, declared as a u64 array for 8-byte alignment. LinkAnimation_BlendToMorph will round up + // the buffer address to the nearest 16-byte alignment before passing it to AnimTaskQueue_AddLoadPlayerFrame, + // and AnimTaskQueue_AddLoadPlayerFrame requires space for `sizeof(Vec3s) * limbCount + 2` bytes. Link's + // skeleton has 22 limbs (including the root limb) so we need 134 bytes of space, plus 8 bytes of margin for + // the 16-byte alignment operation. + static u64 D_80858AD8[18]; f32 updateScale = R_UPDATE_RATE * 0.5f; this->skelAnime.curFrame += this->skelAnime.playSpeed * updateScale; @@ -14277,7 +14285,7 @@ void Player_Action_80850C68(Player* this, PlayState* play) { LinkAnimation_BlendToMorph(play, &this->skelAnime, &gPlayerAnim_link_fishing_wait, this->skelAnime.curFrame, (this->unk_85C < 0.0f) ? &gPlayerAnim_link_fishing_reel_up : &gPlayerAnim_link_fishing_reel_down, - 5.0f, fabsf(this->unk_85C), D_80858AD8); + 5.0f, fabsf(this->unk_85C), (Vec3s*)D_80858AD8); LinkAnimation_InterpJointMorph(play, &this->skelAnime, 0.5f); } else if (LinkAnimation_Update(play, &this->skelAnime)) { this->unk_860 = 2; diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c index 505876aa2e..6fa15a382f 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c @@ -15,6 +15,8 @@ #include "assets/textures/icon_item_gameover_static/icon_item_gameover_static.h" #include "terminal.h" +#pragma increment_block_number "ntsc-1.2:128" + #if !PLATFORM_GC #define KALEIDO_PROMPT_CURSOR_R 100 #define KALEIDO_PROMPT_CURSOR_G 100 diff --git a/tools/disasm/ntsc-1.2/variables.txt b/tools/disasm/ntsc-1.2/variables.txt index 497a427118..7dddb10d3c 100644 --- a/tools/disasm/ntsc-1.2/variables.txt +++ b/tools/disasm/ntsc-1.2/variables.txt @@ -45,7 +45,7 @@ gScheduler = 0x8011D978; // size:0x258 type:Scheduler gViConfigModeType = 0x80008350; // size:0x1 type:u8 sAudioStackInfo = 0x801214A8; sAudioStack = 0x80120268; -gAudioMgr = 0x80121548; // size:0x298 type:AudioMgr +sAudioMgr = 0x80121548; // size:0x298 type:AudioMgr sPadMgrStackInfo = 0x801214C8; sPadMgrStack = 0x80120A68; gPadMgr = 0x8011DBD0; // size:0x468 type:PadMgr