From 6479dcaecf94836c257216617751291f3d2c9778 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sun, 2 Apr 2023 08:37:11 -0500 Subject: [PATCH] chore(console): split out console device functions --- src/client/Client.cpp | 1 + src/console/Client.cpp | 204 ---------------------------------------- src/console/Client.hpp | 8 -- src/console/Device.cpp | 205 +++++++++++++++++++++++++++++++++++++++++ src/console/Device.hpp | 12 +++ 5 files changed, 218 insertions(+), 212 deletions(-) create mode 100644 src/console/Device.cpp create mode 100644 src/console/Device.hpp diff --git a/src/client/Client.cpp b/src/client/Client.cpp index 1660948..f3918cf 100644 --- a/src/client/Client.cpp +++ b/src/client/Client.cpp @@ -3,6 +3,7 @@ #include "client/ClientServices.hpp" #include "console/CVar.hpp" #include "console/Client.hpp" +#include "console/Device.hpp" #include "db/Db.hpp" #include "glue/CGlueMgr.hpp" #include "gx/Screen.hpp" diff --git a/src/console/Client.cpp b/src/console/Client.cpp index 376a92c..24a5c84 100644 --- a/src/console/Client.cpp +++ b/src/console/Client.cpp @@ -1,145 +1,4 @@ #include "console/Client.hpp" -#include "client/Gui.hpp" -#include "console/CVar.hpp" -#include "event/Input.hpp" -#include "gx/Device.hpp" -#include - -CVar* s_cvGxMaximize; -CVar* s_cvGxResolution; -CVar* s_cvGxWidescreen; -CVar* s_cvGxWindow; -DefaultSettings s_defaults; -bool s_hwDetect; -bool s_hwChanged; -CGxFormat s_requestedFormat; - -bool CVGxMaximizeCallback(CVar*, const char*, const char*, void*) { - // TODO - return true; -} - -bool CVGxResolutionCallback(CVar*, const char*, const char*, void*) { - // TODO - return true; -} - -bool CVGxWindowCallback(CVar*, const char*, const char*, void*) { - // TODO - return true; -} - -void RegisterGxCVars() { - auto& format = s_defaults.format; - - // TODO CURRENT_LANGUAGE check? - auto v1 = true; - - s_cvGxWidescreen = CVar::Register( - "widescreen", - "Allow widescreen support", - 0x0, - "1", - nullptr, - 1, - false, - nullptr, - false - ); - - s_cvGxWindow = CVar::Register( - "gxWindow", - "toggle fullscreen/window", - 0x1 | 0x2, - v1 ? "1" : "0", - &CVGxWindowCallback, - 1, - 0, - 0, - 0 - ); - - s_cvGxMaximize = CVar::Register( - "gxMaximize", - "maximize game window", - 0x1 | 0x2, - v1 ? "1" : "0", - &CVGxMaximizeCallback, - 1, - 0, - 0, - 0 - ); - - // TODO s_cvGxColorBits - // TODO s_cvGxDepthBits - - char resolution[260]; - SStrPrintf(resolution, 260, "%dx%d", format.size.x, format.size.y); - s_cvGxResolution = CVar::Register( - "gxResolution", - "resolution", - 0x1 | 0x2, - resolution, - &CVGxResolutionCallback, - 1, - false, - nullptr, - false - ); - - // TODO s_cvGxRefresh - // TODO s_cvGxTripleBuffer - // TODO s_cvGxApi - // TODO s_cvGxVSync - // TODO s_cvGxAspect - // TODO s_cvGxCursor - // TODO s_cvGxMultisample - // TODO s_cvGxFixLag - // TODO s_cvGxStereoEnabled - // TODO s_cvGxOverride - // TODO s_cvGxAspect - // TODO s_cvGxMaxFPS - // TODO s_cvGxMaxFPSBk - // TODO s_cvWindowResizeLock - // TODO s_cvFixedFunction -} - -void UpdateGxCVars() { - // TODO others - - s_cvGxWindow->Update(); - s_cvGxResolution->Update(); - - // TODO others - - s_cvGxMaximize->Update(); - - // TODO others -} - -void SetGxCVars(const CGxFormat& format) { - char value[1024]; - - // TODO s_cvGxColorBits - // TODO s_cvGxDepthBits - - SStrPrintf(value, sizeof(value), "%d", format.window); - s_cvGxWindow->Set(value, true, false, false, true); - - SStrPrintf(value, sizeof(value), "%dx%d", format.size.x, format.size.y); - s_cvGxResolution->Set(value, true, false, false, true); - - // TODO s_cvGxRefresh - // TODO others - - SStrPrintf(value, sizeof(value), "%d", format.maximize); - s_cvGxMaximize->Set(value, true, false, false, true); - - // TODO others - - UpdateGxCVars(); -} void ConsoleInitializeClientCommand() { // TODO @@ -148,66 +7,3 @@ void ConsoleInitializeClientCommand() { void ConsoleInitializeClientCVar(const char* a1) { // TODO } - -void ConsoleDeviceInitialize(const char* title) { - // TODO - - // TODO proper logic - s_hwDetect = true; - - // TODO - - RegisterGxCVars(); - - // TODO ConsoleCommandRegister("gxRestart", &CCGxRestart, 1, nullptr); - - // TODO - - // TODO - // - source the size values correctly - s_requestedFormat.size.x = 1024; - s_requestedFormat.size.y = 768; - s_requestedFormat.colorFormat = CGxFormat::Fmt_Argb8888; - s_requestedFormat.depthFormat = CGxFormat::Fmt_Ds248; - - if (s_hwDetect || s_hwChanged) { - // TODO Sub76B3F0(&UnkCABAF0, &UnkCABB38); - // TODO s_cvFixedFunction->Set("0", 1, 0, 0, 1); - // TODO memcpy(&s_requestedFormat, &s_defaults.format, sizeof(s_requestedFormat)); - - s_requestedFormat.window = s_cvGxWindow->GetInt() != 0; - s_requestedFormat.maximize = s_cvGxMaximize->GetInt() != 0; - - // TODO temporary override - s_requestedFormat.maximize = 0; - - SetGxCVars(s_requestedFormat); - } - - // TODO - - // TODO s_requestedFormat.hwTnL = !CmdLineGetBool(CMD_SW_TNL); - s_requestedFormat.hwTnL = true; - - // TODO - - CGxFormat format; - memcpy(&format, &s_requestedFormat, sizeof(s_requestedFormat)); - - // TODO proper api selection - EGxApi api = GxApi_OpenGl; -#if defined(WHOA_SYSTEM_WIN) - api = GxApi_D3d9; -#elif defined(WHOA_SYSTEM_MAC) - api = GxApi_GLL; -#endif - - CGxDevice* device = GxDevCreate(api, OsWindowProc, format); - - // TODO - - auto gxWindow = GxDevWindow(); - OsGuiSetGxWindow(gxWindow); - - // TODO -} diff --git a/src/console/Client.hpp b/src/console/Client.hpp index 20540d3..3ace87d 100644 --- a/src/console/Client.hpp +++ b/src/console/Client.hpp @@ -1,16 +1,8 @@ #ifndef CONSOLE_CLIENT_HPP #define CONSOLE_CLIENT_HPP -#include "gx/CGxFormat.hpp" - -struct DefaultSettings { - CGxFormat format; -}; - void ConsoleInitializeClientCommand(); void ConsoleInitializeClientCVar(const char* a1); -void ConsoleDeviceInitialize(const char* title); - #endif diff --git a/src/console/Device.cpp b/src/console/Device.cpp new file mode 100644 index 0000000..7d59bc3 --- /dev/null +++ b/src/console/Device.cpp @@ -0,0 +1,205 @@ +#include "console/Device.hpp" +#include "client/Gui.hpp" +#include "console/CVar.hpp" +#include "event/Input.hpp" +#include "gx/Device.hpp" +#include + +CVar* s_cvGxMaximize; +CVar* s_cvGxResolution; +CVar* s_cvGxWidescreen; +CVar* s_cvGxWindow; +DefaultSettings s_defaults; +bool s_hwDetect; +bool s_hwChanged; +CGxFormat s_requestedFormat; + +bool CVGxMaximizeCallback(CVar*, const char*, const char*, void*) { + // TODO + return true; +} + +bool CVGxResolutionCallback(CVar*, const char*, const char*, void*) { + // TODO + return true; +} + +bool CVGxWindowCallback(CVar*, const char*, const char*, void*) { + // TODO + return true; +} + +void RegisterGxCVars() { + auto& format = s_defaults.format; + + // TODO CURRENT_LANGUAGE check? + auto v1 = true; + + s_cvGxWidescreen = CVar::Register( + "widescreen", + "Allow widescreen support", + 0x0, + "1", + nullptr, + 1, + false, + nullptr, + false + ); + + s_cvGxWindow = CVar::Register( + "gxWindow", + "toggle fullscreen/window", + 0x1 | 0x2, + v1 ? "1" : "0", + &CVGxWindowCallback, + 1, + 0, + 0, + 0 + ); + + s_cvGxMaximize = CVar::Register( + "gxMaximize", + "maximize game window", + 0x1 | 0x2, + v1 ? "1" : "0", + &CVGxMaximizeCallback, + 1, + 0, + 0, + 0 + ); + + // TODO s_cvGxColorBits + // TODO s_cvGxDepthBits + + char resolution[260]; + SStrPrintf(resolution, 260, "%dx%d", format.size.x, format.size.y); + s_cvGxResolution = CVar::Register( + "gxResolution", + "resolution", + 0x1 | 0x2, + resolution, + &CVGxResolutionCallback, + 1, + false, + nullptr, + false + ); + + // TODO s_cvGxRefresh + // TODO s_cvGxTripleBuffer + // TODO s_cvGxApi + // TODO s_cvGxVSync + // TODO s_cvGxAspect + // TODO s_cvGxCursor + // TODO s_cvGxMultisample + // TODO s_cvGxFixLag + // TODO s_cvGxStereoEnabled + // TODO s_cvGxOverride + // TODO s_cvGxAspect + // TODO s_cvGxMaxFPS + // TODO s_cvGxMaxFPSBk + // TODO s_cvWindowResizeLock + // TODO s_cvFixedFunction +} + +void UpdateGxCVars() { + // TODO others + + s_cvGxWindow->Update(); + s_cvGxResolution->Update(); + + // TODO others + + s_cvGxMaximize->Update(); + + // TODO others +} + +void SetGxCVars(const CGxFormat& format) { + char value[1024]; + + // TODO s_cvGxColorBits + // TODO s_cvGxDepthBits + + SStrPrintf(value, sizeof(value), "%d", format.window); + s_cvGxWindow->Set(value, true, false, false, true); + + SStrPrintf(value, sizeof(value), "%dx%d", format.size.x, format.size.y); + s_cvGxResolution->Set(value, true, false, false, true); + + // TODO s_cvGxRefresh + // TODO others + + SStrPrintf(value, sizeof(value), "%d", format.maximize); + s_cvGxMaximize->Set(value, true, false, false, true); + + // TODO others + + UpdateGxCVars(); +} + +void ConsoleDeviceInitialize(const char* title) { + // TODO + + // TODO proper logic + s_hwDetect = true; + + // TODO + + RegisterGxCVars(); + + // TODO ConsoleCommandRegister("gxRestart", &CCGxRestart, 1, nullptr); + + // TODO + + // TODO + // - source the size values correctly + s_requestedFormat.size.x = 1024; + s_requestedFormat.size.y = 768; + s_requestedFormat.colorFormat = CGxFormat::Fmt_Argb8888; + s_requestedFormat.depthFormat = CGxFormat::Fmt_Ds248; + + if (s_hwDetect || s_hwChanged) { + // TODO Sub76B3F0(&UnkCABAF0, &UnkCABB38); + // TODO s_cvFixedFunction->Set("0", 1, 0, 0, 1); + // TODO memcpy(&s_requestedFormat, &s_defaults.format, sizeof(s_requestedFormat)); + + s_requestedFormat.window = s_cvGxWindow->GetInt() != 0; + s_requestedFormat.maximize = s_cvGxMaximize->GetInt() != 0; + + // TODO temporary override + s_requestedFormat.maximize = 0; + + SetGxCVars(s_requestedFormat); + } + + // TODO + + // TODO s_requestedFormat.hwTnL = !CmdLineGetBool(CMD_SW_TNL); + s_requestedFormat.hwTnL = true; + + // TODO + + CGxFormat format; + memcpy(&format, &s_requestedFormat, sizeof(s_requestedFormat)); + + // TODO proper api selection + EGxApi api = GxApi_OpenGl; +#if defined(WHOA_SYSTEM_WIN) + api = GxApi_D3d9; +#elif defined(WHOA_SYSTEM_MAC) + api = GxApi_GLL; +#endif + + CGxDevice* device = GxDevCreate(api, OsWindowProc, format); + + // TODO + + auto gxWindow = GxDevWindow(); + OsGuiSetGxWindow(gxWindow); + + // TODO +} diff --git a/src/console/Device.hpp b/src/console/Device.hpp new file mode 100644 index 0000000..a958f38 --- /dev/null +++ b/src/console/Device.hpp @@ -0,0 +1,12 @@ +#ifndef CONSOLE_DEVICE_HPP +#define CONSOLE_DEVICE_HPP + +#include "gx/CGxFormat.hpp" + +struct DefaultSettings { + CGxFormat format; +}; + +void ConsoleDeviceInitialize(const char* title); + +#endif