From 7f82b9995ec0aa306a67744bf7b0c9fb1bfa88de Mon Sep 17 00:00:00 2001 From: KaiN Date: Sun, 20 Nov 2022 15:12:24 +0100 Subject: [PATCH] systemKill now checks for DOSBaase before printing, don't depend on printf this saves 2k of executable size if rest of game doesn't use printf --- src/ace/managers/system.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/ace/managers/system.c b/src/ace/managers/system.c index 4cff58e7..89612e7b 100644 --- a/src/ace/managers/system.c +++ b/src/ace/managers/system.c @@ -448,8 +448,12 @@ static void systemFlushIo() { } void systemKill(const char *szMsg) { - printf("ERR: SYSKILL: '%s'", szMsg); - logWrite("ERR: SYSKILL: '%s'", szMsg); + logWrite("ERR: ACE SYSKILL: '%s'", szMsg); + if(DOSBase) { + BPTR lOut = Output(); + Write(lOut, "ERR: ACE SYSKILL: ", sizeof("ERR: ACE SYSKILL: ")); + Write(lOut, (char*)szMsg, strlen(szMsg)); + } if(GfxBase) { CloseLibrary((struct Library *) GfxBase); @@ -466,26 +470,28 @@ void systemCreate(void) { SysBase = *((struct ExecBase**)4UL); #endif - GfxBase = (struct GfxBase *)OpenLibrary((CONST_STRPTR)"graphics.library", 0L); - if (!GfxBase) { - systemKill("Can't open Gfx Library!\n"); - return; - } - DOSBase = (struct DosLibrary*)OpenLibrary((CONST_STRPTR)"dos.library", 0); if (!DOSBase) { systemKill("Can't open DOS Library!\n"); return; } + GfxBase = (struct GfxBase *)OpenLibrary((CONST_STRPTR)"graphics.library", 0L); + if (!GfxBase) { + systemKill("Can't open Gfx Library!\n"); + return; + } + // Determine original stack size s_pProcess = (struct Process *)FindTask(NULL); char *pStackLower = (char *)s_pProcess->pr_Task.tc_SPLower; +#if defined(ACE_DEBUG) ULONG ulStackSize = (char *)s_pProcess->pr_Task.tc_SPUpper - pStackLower; if(s_pProcess->pr_CLI) { ulStackSize = *(ULONG *)s_pProcess->pr_ReturnAddr; } logWrite("Stack size: %lu\n", ulStackSize); +#endif *pStackLower = SYSTEM_STACK_CANARY; // Reserve all audio channels - apparantly this allows for int flag polling