SDL: log: Rework NGAGE logging. (#14321)

From f773da2273b874ee5ec0e66fb06dd89fe207685a Mon Sep 17 00:00:00 2001
From: Eddy Jansson <[EMAIL REDACTED]>
Date: Mon, 27 Oct 2025 16:48:04 +0100
Subject: [PATCH] log: Rework NGAGE logging. (#14321)

This moves the NGAGE file logging into SDL_LogOutput(), following the pattern of the 3DS, VITA, PSP, etc.
---
 src/SDL_log.c                | 33 +++++++++++++--------------------
 src/core/ngage/SDL_ngage.cpp | 19 ++-----------------
 src/core/ngage/SDL_ngage.h   |  1 +
 3 files changed, 16 insertions(+), 37 deletions(-)

diff --git a/src/SDL_log.c b/src/SDL_log.c
index a77edd602e7ec..ae39c0b7dac38 100644
--- a/src/SDL_log.c
+++ b/src/SDL_log.c
@@ -24,6 +24,10 @@
 #include "core/windows/SDL_windows.h"
 #endif
 
+#if defined(SDL_PLATFORM_NGAGE)
+#include "core/ngage/SDL_ngage.h"
+#endif
+
 // Simple log messages in SDL
 
 #include "SDL_log_c.h"
@@ -598,25 +602,6 @@ void SDL_LogMessageV(int category, SDL_LogPriority priority, SDL_PRINTF_FORMAT_S
         return;
     }
 
-#if defined(SDL_PLATFORM_NGAGE)
-    extern void NGAGE_vnprintf(char *buf, size_t size, const char *fmt, va_list ap);
-    char buf[1024];
-    NGAGE_vnprintf(buf, sizeof(buf), fmt, ap);
-
-#ifdef ENABLE_FILE_LOG
-    FILE* file;
-    file = fopen("E:/SDL_Log.txt", "a");
-    if (file)
-    {
-        vfprintf(file, fmt, ap);
-        fprintf(file, "\n");
-        (void)fclose(file);
-    }
-#endif
-
-    return;
-#endif
-
     // Render into stack buffer
     va_copy(aq, ap);
     len = SDL_vsnprintf(stack_buf, sizeof(stack_buf), fmt, aq);
@@ -799,7 +784,15 @@ static void SDLCALL SDL_LogOutput(void *userdata, int category, SDL_LogPriority
     }
 #elif defined(SDL_PLATFORM_NGAGE)
     {
-        /* Nothing to do here. */
+        NGAGE_DebugPrintf("%s%s", GetLogPriorityPrefix(priority), message);
+#ifdef ENABLE_FILE_LOG
+        FILE *pFile;
+        pFile = fopen("E:/SDL_Log.txt", "a");
+        if (pFile) {
+            (void)fprintf(pFile, "%s%s\n", GetLogPriorityPrefix(priority), message);
+            (void)fclose(pFile);
+        }
+#endif
     }
 #endif
 #if defined(HAVE_STDIO_H) && \
diff --git a/src/core/ngage/SDL_ngage.cpp b/src/core/ngage/SDL_ngage.cpp
index 5f14af1ddc7f6..b52c5d0682df7 100644
--- a/src/core/ngage/SDL_ngage.cpp
+++ b/src/core/ngage/SDL_ngage.cpp
@@ -36,13 +36,13 @@ bool NGAGE_IsClassicModel()
     return (0x101f8c19 == phone_id);
 }
 
-void NGAGE_printf(const char *fmt, ...)
+void NGAGE_DebugPrintf(const char *fmt, ...)
 {
     char buffer[512] = { 0 };
 
     va_list ap;
     va_start(ap, fmt);
-    vsprintf(buffer, fmt, ap);
+    (void)SDL_vsnprintf(buffer, sizeof(buffer), fmt, ap);
     va_end(ap);
 
     TBuf<512> buf;
@@ -51,21 +51,6 @@ void NGAGE_printf(const char *fmt, ...)
     RDebug::Print(_L("%S"), &buf);
 }
 
-void NGAGE_vnprintf(char *buf, size_t size, const char *fmt, va_list ap)
-{
-    char buffer[512] = { 0 };
-
-    vsprintf(buffer, fmt, ap);
-
-    TBuf<512> tbuf;
-    tbuf.Copy(TPtrC8((TText8 *)buffer));
-
-    RDebug::Print(_L("%S"), &tbuf);
-
-    strncpy(buf, buffer, size - 1);
-    buf[size - 1] = '\0';
-}
-
 TInt NGAGE_GetFreeHeapMemory()
 {
     TInt free = 0;
diff --git a/src/core/ngage/SDL_ngage.h b/src/core/ngage/SDL_ngage.h
index 66c4c60ec192d..b8ad88055e755 100644
--- a/src/core/ngage/SDL_ngage.h
+++ b/src/core/ngage/SDL_ngage.h
@@ -28,6 +28,7 @@ extern "C" {
 #endif
 
 bool NGAGE_IsClassicModel();
+void NGAGE_DebugPrintf(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
 
 #ifdef __cplusplus
 }