From a3e3720cb1a710025a238ce4b1b436ef3b83fcc2 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Tue, 31 Mar 2026 22:51:26 -0700 Subject: [PATCH] coo crash fix --- src/d/d_stage.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index 6c828b97e3..057bcdf4ff 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -392,6 +392,16 @@ static void dummy1(dStage_roomControl_c* roomControl) { } JKRExpHeap* dStage_roomControl_c::createMemoryBlock(int i_blockIdx, u32 i_heapSize) { + #if TARGET_PC + // Cave of Ordeals crashes around floor 29 due to no free heap space + // Increasing the size here avoids that, though its ugly. maybe TODO a better fix + if (strcmp(dComIfGp_getStartStageName(), "D_SB01") == 0) { + u32 prev = i_heapSize; + i_heapSize *= 2; + DuskLog.warn("Doubling heap size for D_SB01... ({}) -> ({})", prev, i_heapSize); + } + #endif + if (mMemoryBlock[i_blockIdx] == NULL) { mMemoryBlock[i_blockIdx] = JKRCreateExpHeap(i_heapSize, mDoExt_getArchiveHeap(), false); JKRHEAP_NAMEF(mMemoryBlock[i_blockIdx], "Room control memory block %d", i_blockIdx);