Skip to content

Commit

Permalink
Create constants for m_Do_machine heap/buffer sizes
Browse files Browse the repository at this point in the history
  • Loading branch information
LagoLunatic committed Jan 31, 2025
1 parent 4d2dda9 commit 2ece7c9
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 34 deletions.
1 change: 1 addition & 0 deletions .clangd
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ CompileFlags:
Add: [
"-Wno-c++11-compat-deprecated-writable-strings",
"-Wno-undefined-inline",
"-Wno-multichar",
]
---
If:
Expand Down
5 changes: 0 additions & 5 deletions include/SSystem/SComponent/c_m3d_g_sph.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,4 @@ class cM3dGSph {

STATIC_ASSERT(0x14 == sizeof(cM3dGSph));

// additional symbols needed for cM3dGSph
extern "C" {
void Set__8cM3dGSphFRC4cXyzf(void);
}

#endif
62 changes: 35 additions & 27 deletions src/m_Do/m_Do_machine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,27 @@ static int archiveHeapErrors;
static int unknownHeapErrors;
static u32 heapErrors;

#if VERSION == VERSION_JPN
const int FifoBufSize = 0x80000; // 512 KB
const int CommandHeapSize = 0x1000; // 4 KB
const int ArchiveHeapSize = 0xA3F000; // 10492 KB
const int GameHeapSize = 0x2CE000; // 2872 KB
const int SysHeapNonZeldaSize = 0x10000; // 64 KB
#else
const int FifoBufSize = 0xA0000; // 640 KB
const int CommandHeapSize = 0x1000; // 4 KB
const int ArchiveHeapSize = 0xA51400; // 10565 KB
const int GameHeapSize = 0x2CE800; // 2874 KB
const int SysHeapNonZeldaSize = 0x10000; // 64 KB
#endif

const int AramAudioBufSize = 0xA00000; // 10240 KB
const int AramGraphBufSize = 0x5CE000; // 5944 KB
const int TransBufferSize = 0x2000; // 8 KB
const int SzpBufferSize = 0x2000; // 8 KB

const int JMASinTableBitSize = 0xC; // 20 KB (5*(2^N) bytes)

/* 8000BD24-8000BEEC .text myGetHeapTypeByString__FP7JKRHeap */
const char* myGetHeapTypeByString(JKRHeap* p_heap) {
static char tmpString[5];
Expand Down Expand Up @@ -442,15 +463,10 @@ bool mDoMch_Create() {
arenaSize += mDoMain::memMargin;
}

#if VERSION == VERSION_JPN
JFWSystem::setSysHeapSize(arenaSize - 0xD0E000);
JFWSystem::setFifoBufSize(0x80000);
#else
JFWSystem::setSysHeapSize(arenaSize - 0xD20C00);
JFWSystem::setFifoBufSize(0xA0000);
#endif
JFWSystem::setAramAudioBufSize(0xA00000);
JFWSystem::setAramGraphBufSize(0x5CE000);
JFWSystem::setSysHeapSize(arenaSize - CommandHeapSize - ArchiveHeapSize - GameHeapSize);
JFWSystem::setFifoBufSize(FifoBufSize);
JFWSystem::setAramAudioBufSize(AramAudioBufSize);
JFWSystem::setAramGraphBufSize(AramGraphBufSize);
#if VERSION == VERSION_PAL
if (OSGetResetCode() - 0x80000000 == 0 && OSGetEuRgb60Mode() == 1) {
mDoMch_render_c::setProgressiveMode();
Expand All @@ -472,34 +488,26 @@ bool mDoMch_Create() {
#if VERSION == VERSION_JPN
rootHeap->dump_sort();
#endif
// Command Heap size: 4 KB
mDoExt_createCommandHeap(0x1000, rootHeap);
mDoExt_createCommandHeap(CommandHeapSize, rootHeap);
#if VERSION == VERSION_JPN
rootHeap->dump_sort();
#endif

#if VERSION == VERSION_JPN
mDoExt_createArchiveHeap(0xA3F000, rootHeap);
mDoExt_createGameHeap(0x2CE000, rootHeap);
#else
// Archive Heap size: 10565 KB
mDoExt_createArchiveHeap(0xA51400, rootHeap);
mDoExt_createArchiveHeap(ArchiveHeapSize, rootHeap);

// Game Heap size: 2874 KB
mDoExt_createGameHeap(0x2CE800, rootHeap);
#endif
mDoExt_createGameHeap(GameHeapSize, rootHeap);


JKRHeap* sysHeap = JKRHeap::getSystemHeap();
s32 size = sysHeap->getFreeSize() - 0x10000;
JKRHeap* sysHeap = JKRGetSystemHeap();
s32 size = sysHeap->getFreeSize() - SysHeapNonZeldaSize;
JUT_ASSERT(VERSION_SELECT(996, 1104, 1143), size > 0);
JKRHeap* zeldaHeap = mDoExt_createZeldaHeap(size, sysHeap);
zeldaHeap->becomeCurrentHeap();

JKRAramStream::setTransBuffer(NULL, 0x2000, JKRHeap::getSystemHeap());
JKRAram::setSzpBufferSize(0x2000);
JKRDvdAramRipper::setSzpBufferSize(0x2000);
JKRDvdRipper::setSzpBufferSize(0x2000);
JKRAramStream::setTransBuffer(NULL, TransBufferSize, JKRGetSystemHeap());
JKRAram::setSzpBufferSize(SzpBufferSize);
JKRDvdAramRipper::setSzpBufferSize(SzpBufferSize);
JKRDvdRipper::setSzpBufferSize(SzpBufferSize);
JKRThreadSwitch::createManager(NULL);
JKRThread* thread = new JKRThread(OSGetCurrentThread(), 0);

Expand All @@ -510,7 +518,7 @@ bool mDoMch_Create() {
JUTException::appendMapFile("/maps/framework.map");
JUTException::setPreUserCallback(myExceptionCallback);
JUTException::setPostUserCallback(fault_callback_scroll);
JMANewSinTable(0xc);
JMANewSinTable(JMASinTableBitSize);

cMl::init(mDoExt_getZeldaHeap());
cM_initRnd(100, 100, 100);
Expand Down
2 changes: 0 additions & 2 deletions src/m_Do/m_Do_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@

#include "weak_data_1811.h" // IWYU pragma: keep

class JUTGamePad;

/* 800056E0-80005748 .text version_check__Fv */
void version_check() {
if (strcmp("05Sep2002", "05Sep2002") == 0 && strcmp("", "") == 0) {
Expand Down

0 comments on commit 2ece7c9

Please sign in to comment.