diff --git a/cmake/targets/gamecube.cmake b/cmake/targets/gamecube.cmake index e88b36e6..13ffda96 100644 --- a/cmake/targets/gamecube.cmake +++ b/cmake/targets/gamecube.cmake @@ -2,4 +2,9 @@ include(cmake/targets/dolphin.cmake) target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC DUSK_GAMECUBE -) \ No newline at end of file +) + +# Link libraries +target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PRIVATE + bba +) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ea011c4e..74b611a4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,11 +21,7 @@ elseif(DUSK_TARGET_SYSTEM STREQUAL "vita") add_subdirectory(dusksdl2) add_subdirectory(duskgl) -elseif(DUSK_TARGET_SYSTEM STREQUAL "wii") - add_subdirectory(duskwii) - add_subdirectory(duskdolphin) - -elseif(DUSK_TARGET_SYSTEM STREQUAL "gamecube") +elseif(DUSK_TARGET_SYSTEM STREQUAL "wii" OR DUSK_TARGET_SYSTEM STREQUAL "gamecube") add_subdirectory(duskdolphin) endif() \ No newline at end of file diff --git a/src/dusk/display/spritebatch/spritebatch.h b/src/dusk/display/spritebatch/spritebatch.h index c4e4e38f..d7a4f878 100644 --- a/src/dusk/display/spritebatch/spritebatch.h +++ b/src/dusk/display/spritebatch/spritebatch.h @@ -8,7 +8,7 @@ #pragma once #include "display/mesh/quad.h" -#define SPRITEBATCH_SPRITES_MAX 240 +#define SPRITEBATCH_SPRITES_MAX 32 #define SPRITEBATCH_VERTEX_COUNT (SPRITEBATCH_SPRITES_MAX * QUAD_VERTEX_COUNT) #define SPRITEBATCH_FLUSH_COUNT 4 #define SPRITEBATCH_SPRITES_MAX_PER_FLUSH (\ diff --git a/src/dusk/engine/engine.c b/src/dusk/engine/engine.c index 956a327c..0c45ed68 100644 --- a/src/dusk/engine/engine.c +++ b/src/dusk/engine/engine.c @@ -98,6 +98,8 @@ errorret_t engineInit(const int32_t argc, const char_t **argv) { ENGINE.argc = argc; ENGINE.argv = argv; + assertUnreachable("Here fine"); + // Init systems. Order is important. errorChain(systemInit()); timeInit(); @@ -110,7 +112,7 @@ errorret_t engineInit(const int32_t argc, const char_t **argv) { errorChain(sceneInit()); entityManagerInit(); physicsManagerInit(); - errorChain(networkInit()); + // errorChain(networkInit()); errorChain(gameInit()); sceneLog("Init done, going to queue online in 3 seconds...\n"); @@ -170,7 +172,7 @@ errorret_t engineInit(const int32_t argc, const char_t **argv) { } errorret_t engineUpdate(void) { - errorChain(networkUpdate()); + // errorChain(networkUpdate()); timeUpdate(); inputUpdate(); @@ -210,7 +212,7 @@ void engineExit(void) { } errorret_t engineDispose(void) { - errorChain(networkDispose()); + // errorChain(networkDispose()); sceneDispose(); errorChain(gameDispose()); entityManagerDispose(); diff --git a/src/dusk/entity/entitybase.h b/src/dusk/entity/entitybase.h index b051dafb..d14cf6c6 100644 --- a/src/dusk/entity/entitybase.h +++ b/src/dusk/entity/entitybase.h @@ -8,8 +8,8 @@ #pragma once #include "dusk.h" -#define ENTITY_COUNT_MAX 64 -#define ENTITY_COMPONENT_COUNT_MAX 16 +#define ENTITY_COUNT_MAX 6 +#define ENTITY_COMPONENT_COUNT_MAX 6 typedef uint8_t entityid_t; typedef uint8_t componentid_t; diff --git a/src/duskdolphin/CMakeLists.txt b/src/duskdolphin/CMakeLists.txt index 2020cd58..cded9291 100644 --- a/src/duskdolphin/CMakeLists.txt +++ b/src/duskdolphin/CMakeLists.txt @@ -19,4 +19,5 @@ add_subdirectory(asset) add_subdirectory(log) add_subdirectory(display) add_subdirectory(input) +add_subdirectory(network) add_subdirectory(system) \ No newline at end of file diff --git a/src/duskdolphin/duskplatform.h b/src/duskdolphin/duskplatform.h index 4d1660a0..6625b736 100644 --- a/src/duskdolphin/duskplatform.h +++ b/src/duskdolphin/duskplatform.h @@ -8,4 +8,12 @@ #pragma once #include #include -#include \ No newline at end of file +#include + +#ifdef DUSK_GAMECUBE + #define CONF_ASPECT_4_3 0 + #define CONF_ASPECT_16_9 1 + #define CONF_GetAspectRatio() CONF_ASPECT_4_3 + + #define CONF_GetLanguage() SYS_GetLanguage() +#endif \ No newline at end of file diff --git a/src/duskwii/network/CMakeLists.txt b/src/duskdolphin/network/CMakeLists.txt similarity index 89% rename from src/duskwii/network/CMakeLists.txt rename to src/duskdolphin/network/CMakeLists.txt index 5a01b909..e514c3b9 100644 --- a/src/duskwii/network/CMakeLists.txt +++ b/src/duskdolphin/network/CMakeLists.txt @@ -5,5 +5,5 @@ target_sources(${DUSK_LIBRARY_TARGET_NAME} PUBLIC - networkwii.c + networkdolphin.c ) diff --git a/src/duskwii/network/networkwii.c b/src/duskdolphin/network/networkdolphin.c similarity index 77% rename from src/duskwii/network/networkwii.c rename to src/duskdolphin/network/networkdolphin.c index d1d91982..2030a8cb 100644 --- a/src/duskwii/network/networkwii.c +++ b/src/duskdolphin/network/networkdolphin.c @@ -1,34 +1,36 @@ -/** - * Copyright (c) 2026 Dominic Masters - * - * This software is released under the MIT License. - * https://opensource.org/licenses/MIT - */ +// /** +// * Copyright (c) 2026 Dominic Masters +// * +// * This software is released under the MIT License. +// * https://opensource.org/licenses/MIT +// */ #include "network/network.h" #include "util/memory.h" #include "assert/assert.h" -errorret_t networkWiiInit() { - s32 ret = net_init(); - if(ret < 0) errorThrow("Failed to init Wii network stack: %d", ret); +errorret_t networkDolphinInit() { + // s32 ret = net_init(); + // if(ret < 0) errorThrow("Failed to init network stack: %d", ret); errorOk(); } -errorret_t networkWiiUpdate() { +errorret_t networkDolphinUpdate() { errorOk(); } -errorret_t networkWiiDispose() { - net_deinit(); +errorret_t networkDolphinDispose() { + // #ifdef DUSK_WII + // net_deinit(); + // #endif errorOk(); } -bool_t networkWiiIsConnected() { +bool_t networkDolphinIsConnected() { return NETWORK.state == NETWORK_STATE_CONNECTED; } -void networkWiiRequestConnection( +void networkDolphinRequestConnection( void (*onConnected)(void *user), void (*onFailed)(errorret_t error, void *user), void (*onDisconnect)(errorret_t error, void *user), @@ -74,13 +76,13 @@ void networkWiiRequestConnection( &NETWORK.errorState, ERROR_NOT_OK, __FILE__, __func__, __LINE__, - "Failed to connect to Wii network" + "Failed to connect to network" ); NETWORK.platform.onFailed(error, NETWORK.platform.onConnectedUser); } } -void networkWiiRequestDisconnection( +void networkDolphinRequestDisconnection( void (*onComplete)(void *user), void *user ) { @@ -93,7 +95,7 @@ void networkWiiRequestDisconnection( onComplete(user); } -networkinfo_t networkWiiGetInfo() { +networkinfo_t networkDolphinGetInfo() { networkinfo_t info; memoryZero(&info, sizeof(networkinfo_t)); @@ -106,7 +108,7 @@ networkinfo_t networkWiiGetInfo() { &info.ipv4.ip[2], &info.ipv4.ip[3] ); - assertTrue(ret == 4, "Failed to parse Wii IP address"); + assertTrue(ret == 4, "Failed to parse IP address"); return info; -} +} \ No newline at end of file diff --git a/src/duskwii/network/networkwii.h b/src/duskdolphin/network/networkdolphin.h similarity index 77% rename from src/duskwii/network/networkwii.h rename to src/duskdolphin/network/networkdolphin.h index bb1734e1..993219a0 100644 --- a/src/duskwii/network/networkwii.h +++ b/src/duskdolphin/network/networkdolphin.h @@ -10,46 +10,46 @@ #include "network/networkinfo.h" #include -#define NETWORK_WII_IP_MAX 16 +#define NETWORK_DOLPHIN_IP_MAX 16 typedef struct { - char_t ip[NETWORK_WII_IP_MAX]; - char_t netmask[NETWORK_WII_IP_MAX]; - char_t gateway[NETWORK_WII_IP_MAX]; + char_t ip[NETWORK_DOLPHIN_IP_MAX]; + char_t netmask[NETWORK_DOLPHIN_IP_MAX]; + char_t gateway[NETWORK_DOLPHIN_IP_MAX]; void *onConnectedUser; void (*onConnected)(void *user); void (*onFailed)(errorret_t error, void *user); -} networkwii_t; +} networkdolphin_t; /** * Initializes the Wii network stack via IOS. Does not connect; use - * networkWiiRequestConnection for that. + * networkDolphinRequestConnection for that. * * @return Error state (if any). */ -errorret_t networkWiiInit(); +errorret_t networkDolphinInit(); /** * Called each frame. No-op on Wii since connection is synchronous. * * @return Error state (if any). */ -errorret_t networkWiiUpdate(); +errorret_t networkDolphinUpdate(); /** * Disposes the Wii network stack. * * @return Error state (if any). */ -errorret_t networkWiiDispose(); +errorret_t networkDolphinDispose(); /** * Returns true if the Wii is connected to a network. * * @return True if connected. */ -bool_t networkWiiIsConnected(); +bool_t networkDolphinIsConnected(); /** * Requests the Wii to connect to the network using the Wi-Fi settings saved @@ -60,7 +60,7 @@ bool_t networkWiiIsConnected(); * @param onDisconnect Callback when connection is later lost. * @param user User data passed to all callbacks. */ -void networkWiiRequestConnection( +void networkDolphinRequestConnection( void (*onConnected)(void *user), void (*onFailed)(errorret_t error, void *user), void (*onDisconnect)(errorret_t error, void *user), @@ -73,7 +73,7 @@ void networkWiiRequestConnection( * @param onComplete Callback when disconnection is complete. * @param user User data passed to the callback. */ -void networkWiiRequestDisconnection( +void networkDolphinRequestDisconnection( void (*onComplete)(void *user), void *user ); @@ -83,4 +83,4 @@ void networkWiiRequestDisconnection( * * @return Network info for the active connection. */ -networkinfo_t networkWiiGetInfo(); +networkinfo_t networkDolphinGetInfo(); diff --git a/src/duskdolphin/network/networkplatform.h b/src/duskdolphin/network/networkplatform.h new file mode 100644 index 00000000..c46b13fe --- /dev/null +++ b/src/duskdolphin/network/networkplatform.h @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2026 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#pragma once +#include "networkdolphin.h" + +#define networkPlatformInit networkDolphinInit +#define networkPlatformUpdate networkDolphinUpdate +#define networkPlatformDispose networkDolphinDispose +#define networkPlatformIsConnected networkDolphinIsConnected +#define networkPlatformRequestConnection networkDolphinRequestConnection +#define networkPlatformRequestDisconnection networkDolphinRequestDisconnection +#define networkPlatformGetInfo networkDolphinGetInfo + +typedef networkdolphin_t networkplatform_t; diff --git a/src/duskdolphin/system/systemdolphin.h b/src/duskdolphin/system/systemdolphin.h index 1f31bc4b..41322641 100644 --- a/src/duskdolphin/system/systemdolphin.h +++ b/src/duskdolphin/system/systemdolphin.h @@ -40,6 +40,9 @@ int32_t systemGetAspectRatioDolphin(void); * Refer to; * https://github.com/devkitPro/libogc/blob/20d90e944b83c8991538e88b00b1e5f309428e85/gc/ogc/conf.h#L190 * + * On gamecube, refer to; + * https://libogc.devkitpro.org/system_8h.html + * * @return System language. */ int32_t systemGetLanguageDolphin(void); diff --git a/src/duskwii/CMakeLists.txt b/src/duskwii/CMakeLists.txt deleted file mode 100644 index b85a8f61..00000000 --- a/src/duskwii/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) 2026 Dominic Masters -# -# This software is released under the MIT License. -# https://opensource.org/licenses/MIT - -# Includes -target_include_directories(${DUSK_LIBRARY_TARGET_NAME} - PUBLIC - ${CMAKE_CURRENT_LIST_DIR} -) - -# Sources -target_sources(${DUSK_BINARY_TARGET_NAME} - PUBLIC -) - -# Subdirs -add_subdirectory(network) \ No newline at end of file diff --git a/src/duskwii/network/networkplatform.h b/src/duskwii/network/networkplatform.h deleted file mode 100644 index 2f62a01e..00000000 --- a/src/duskwii/network/networkplatform.h +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Copyright (c) 2026 Dominic Masters - * - * This software is released under the MIT License. - * https://opensource.org/licenses/MIT - */ - -#pragma once -#include "networkwii.h" - -#define networkPlatformInit networkWiiInit -#define networkPlatformUpdate networkWiiUpdate -#define networkPlatformDispose networkWiiDispose -#define networkPlatformIsConnected networkWiiIsConnected -#define networkPlatformRequestConnection networkWiiRequestConnection -#define networkPlatformRequestDisconnection networkWiiRequestDisconnection -#define networkPlatformGetInfo networkWiiGetInfo - -typedef networkwii_t networkplatform_t;