/* Keep these headers */ #include #include #include #include /* Standard headers - it's recommended to leave them included */ #include #include #include #include #include "text8bpp.h" #include "tools.h" static const uint8_t* safeRAM_orig_ptr = (uint8_t*)0xD07396; // 52.290k uint8_t* safeRAM_ptr = (uint8_t*)0xD07396; // safeRAM_orig_ptr uint16_t safeRAM_free = 52290; // D07396h: cmdPixelShadow (8400 b) + D09466h: plotSScreen (21945 b) + D0EA1Fh: saveSScreen (21945 b) uint8_t* safeRAM_ptr_old = (uint8_t*)0xD07396; /* Your code here */ void* myMalloc(size_t size) { if (safeRAM_free > size) { safeRAM_ptr_old = safeRAM_ptr; safeRAM_ptr += size; safeRAM_free -= size; return safeRAM_ptr-size; } else { cleanUp(); printSmall8bpp("No RAM left... :(", 0, 0); //asm("jp exitPrgmOops"); // Force quit program return 0; } } void myFreeLast() { safeRAM_free += safeRAM_ptr - safeRAM_ptr_old; safeRAM_ptr = safeRAM_ptr_old; }