From 5bd43a464381c4796392e33cd24128a25ea930e1 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Wed, 11 Mar 2026 07:27:06 -0500 Subject: [PATCH] Fix Dolphin crash --- src/dusk/engine/engine.c | 3 +-- src/dusk/input/input.c | 6 ++++-- src/dusk/input/input.h | 5 ++++- src/dusk/time/time.c | 2 -- src/duskdolphin/debug/debug.c | 1 + src/duskdolphin/input/inputdolphin.c | 7 +++++++ src/duskdolphin/input/inputdolphin.h | 8 ++++++++ src/duskdolphin/input/inputplatform.h | 1 + src/dusklinux/asset/assetlinux.c | 2 +- 9 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/dusk/engine/engine.c b/src/dusk/engine/engine.c index d973bb9..83ee8c3 100644 --- a/src/dusk/engine/engine.c +++ b/src/dusk/engine/engine.c @@ -16,7 +16,6 @@ #include "ui/ui.h" #include "map/map.h" #include "script/scriptmanager.h" -#include "debug/debug.h" #include "item/backpack.h" #include "assert/assert.h" @@ -30,7 +29,7 @@ errorret_t engineInit(const int32_t argc, const char_t **argv) { // Init systems. Order is important. timeInit(); - inputInit(); + errorChain(inputInit()); errorChain(assetInit()); errorChain(localeManagerInit()); errorChain(scriptManagerInit()); diff --git a/src/dusk/input/input.c b/src/dusk/input/input.c index f5f4a72..fa5a61b 100644 --- a/src/dusk/input/input.c +++ b/src/dusk/input/input.c @@ -15,7 +15,7 @@ input_t INPUT; -void inputInit(void) { +errorret_t inputInit(void) { memoryZero(&INPUT, sizeof(input_t)); for(uint8_t i = 0; i < INPUT_ACTION_COUNT; i++) { @@ -29,7 +29,7 @@ void inputInit(void) { #endif #ifdef inputInitPlatform - inputInitPlatform(); + errorChain(inputInitPlatform()); #endif eventInit( @@ -38,6 +38,8 @@ void inputInit(void) { eventInit( &INPUT.eventReleased, INPUT.releasedListeners, INPUT_LISTENER_RELEASED_MAX ); + + errorOk(); } void inputUpdate(void) { diff --git a/src/dusk/input/input.h b/src/dusk/input/input.h index 345486f..b5281f9 100644 --- a/src/dusk/input/input.h +++ b/src/dusk/input/input.h @@ -6,6 +6,7 @@ */ #pragma once +#include "error/error.h" #include "inputbutton.h" #include "inputaction.h" #include "event/event.h" @@ -36,8 +37,10 @@ extern input_t INPUT; /** * Initialize the input system. + * + * @return An error code if initialization fails. */ -void inputInit(void); +errorret_t inputInit(void); /** * Updates the input state. diff --git a/src/dusk/time/time.c b/src/dusk/time/time.c index ef70fb5..2b672a3 100644 --- a/src/dusk/time/time.c +++ b/src/dusk/time/time.c @@ -33,8 +33,6 @@ void timeUpdate(void) { TIME.dynamicTime += TIME.dynamicDelta; TIME.dynamicUpdate = true; - printf("Time delta: %f\n", TIME.dynamicDelta); - assertTrue(TIME.dynamicDelta >= 0.0f, "Time delta is negative"); // Is within 1ms of a full step? diff --git a/src/duskdolphin/debug/debug.c b/src/duskdolphin/debug/debug.c index 85b9bd7..70d4566 100644 --- a/src/duskdolphin/debug/debug.c +++ b/src/duskdolphin/debug/debug.c @@ -22,6 +22,7 @@ void debugPrint(const char_t *message, ...) { va_copy(copy, args); vfprintf(stdout, message, copy); va_end(copy); + fflush(stdout); // Append to buffer vsnprintf( diff --git a/src/duskdolphin/input/inputdolphin.c b/src/duskdolphin/input/inputdolphin.c index 5a3a807..2e3b90b 100644 --- a/src/duskdolphin/input/inputdolphin.c +++ b/src/duskdolphin/input/inputdolphin.c @@ -7,6 +7,7 @@ #include "input/input.h" #include "assert/assert.h" +#include "debug/debug.h" inputbuttondata_t INPUT_BUTTON_DATA[] = { #ifdef DUSK_INPUT_GAMEPAD @@ -38,6 +39,12 @@ inputbuttondata_t INPUT_BUTTON_DATA[] = { { .name = NULL } }; +errorret_t inputInitDolphin(void) { + PAD_Init(); + + errorOk(); +} + void inputUpdateDolphin(void) { PAD_ScanPads(); diff --git a/src/duskdolphin/input/inputdolphin.h b/src/duskdolphin/input/inputdolphin.h index e17db80..7884d01 100644 --- a/src/duskdolphin/input/inputdolphin.h +++ b/src/duskdolphin/input/inputdolphin.h @@ -7,6 +7,7 @@ #pragma once #include "dusk.h" +#include "error/error.h" #define INPUT_DOLPHIN_PAD_COUNT PAD_CHANMAX #define INPUT_DOLPHIN_AXIS(value) ((float_t)(value) / 128.0f) @@ -44,6 +45,13 @@ typedef struct { #endif } inputdolphin_t; +/** + * Initializes the input system for Dolphin. + * + * @return An error code if initialization fails. + */ +errorret_t inputInitDolphin(void); + /** * Updates the input state for Dolphin. */ diff --git a/src/duskdolphin/input/inputplatform.h b/src/duskdolphin/input/inputplatform.h index 4a02e38..4be4317 100644 --- a/src/duskdolphin/input/inputplatform.h +++ b/src/duskdolphin/input/inputplatform.h @@ -15,5 +15,6 @@ typedef inputdolphin_t inputplatform_t; +#define inputInitPlatform inputInitDolphin #define inputUpdatePlatform inputUpdateDolphin #define inputButtonGetValuePlatform inputButtonGetValueDolphin \ No newline at end of file diff --git a/src/dusklinux/asset/assetlinux.c b/src/dusklinux/asset/assetlinux.c index 6f1e228..025e3a3 100644 --- a/src/dusklinux/asset/assetlinux.c +++ b/src/dusklinux/asset/assetlinux.c @@ -61,7 +61,7 @@ errorret_t assetInitLinux(void) { ASSET.zip = zip_open(searchPath, ZIP_RDONLY, &error); if(ASSET.zip == NULL) continue; if(error != 0) { - printf("Warning: Opened asset file with non-zero error code: %d\n", error); + printf("Opened asset file with non-zero error code: %d\n", error); ASSET.zip = NULL; continue; }