Path: blob/master/RSDKv5/RSDK/User/Core/UserCore.hpp
1162 views
#ifndef USER_CORE_H1#define USER_CORE_H23namespace RSDK4{56namespace SKU7{89#undef STATUS_TIMEOUT1011enum StatusCodes {12STATUS_NONE = 0,13STATUS_CONTINUE = 100,14STATUS_OK = 200,15STATUS_FORBIDDEN = 403,16STATUS_NOTFOUND = 404,17STATUS_ERROR = 500,18STATUS_NOWIFI = 503,19STATUS_TIMEOUT = 504,20STATUS_CORRUPT = 505,21STATUS_NOSPACE = 506,22};2324#if RETRO_REV0225struct SKUInfo {26int32 platform;27int32 language;28int32 region;29};3031struct UnknownInfo {32int32 unknown1;33int32 unknown2;34int32 unknown3;35int32 unknown4;36bool32 pausePress;37int32 unknown5;38int32 unknown6;39int32 unknown7;40int32 unknown8;41int32 unknown9;42bool32 anyKeyPress;43int32 unknown10;44};4546extern SKUInfo curSKU;47extern UnknownInfo unknownInfo;4849#define Unknown_pausePress UnknownInfo->pausePress50#define Unknown_anyKeyPress UnknownInfo->anyPress51#else52#define Unknown_pausePress TouchInfo->pausePress53#define Unknown_anyKeyPress TouchInfo->anyPress54#endif5556#if RETRO_REV025758// This is the base struct, it serves as the base for any API-specific stats59// This struct should never be removed60struct UserCore {61virtual ~UserCore() = default;6263virtual void Shutdown() {}64virtual bool32 CheckAPIInitialized() { return true; }65virtual bool32 CheckFocusLost() { return false; }66virtual bool32 CheckEnginePause() { return false; }67virtual void StageLoad();68virtual void FrameInit();69// I do not know what this is, both PC & Switch vers never call it as far as I can see70virtual void OnUnknownEvent();71virtual int32 GetUserLanguage() { return LANGUAGE_EN; }72virtual int32 GetUserRegion() { return REGION_US; }73virtual int32 GetUserPlatform() { return PLATFORM_PC; }74virtual bool32 GetConfirmButtonFlip() { return false; }75virtual void LaunchManual() {}76virtual void ExitGame() {}77virtual int32 GetDefaultGamepadType() { return (DEVICE_API_NONE << 16) | (DEVICE_TYPE_CONTROLLER << 8) | (0 << 0); }78virtual bool32 IsOverlayEnabled(uint32 deviceID) { return false; }79virtual bool32 CheckDLC(uint8 id)80{81if (id < 8)82return values[id];83else84return 0;85}86#if RETRO_VER_EGS87virtual bool32 SetupExtensionOverlay() { return true; }88virtual bool32 CanShowExtensionOverlay(int32 overlay) { return true; }89virtual bool32 ShowExtensionOverlay(int32 overlay) { return false; }90virtual bool32 CanShowAltExtensionOverlay(int32 overlay) { return false; }91virtual bool32 ShowAltExtensionOverlay(int32 overlay) { return ShowExtensionOverlay(overlay); }92virtual int32 GetConnectingStringID() { return -1; }93virtual bool32 ShowLimitedVideoOptions(int32 id) { return false; }94virtual void InitInputDevices() {}95virtual void Unknown() {}96#else97virtual bool32 ShowExtensionOverlay(int32 overlay) { return false; }98#endif99100bool32 values[8] = { false, false, false, false, false, false, false, false };101uint8 valueCount = 0;102103// Not Original, but I gotta store it somewhere /shrug104uint8 focusState = 0;105};106107extern UserCore *userCore;108109// ====================110// API Cores111// ====================112113// Dummy API114#if RETRO_USERCORE_DUMMY115#include "RSDK/User/Dummy/DummyCore.hpp"116#endif117118// Steam API119#if RETRO_USERCORE_STEAM120#include "RSDK/User/Steam/SteamCore.hpp"121#endif122123// Epic Games API124#if RETRO_USERCORE_EOS125#include "RSDK/User/EOS/EOSCore.hpp"126#endif127128// Switch API129#if RETRO_USERCORE_NX130#include "RSDK/User/NX/NXCore.hpp"131#endif132133#endif134135void InitUserCore();136void ReleaseUserCore();137void SaveUserData();138139#if RETRO_REV02140void HandleUserStatuses();141#endif142143#if RETRO_REV02144inline int32 GetUserLanguage() { return userCore->GetUserLanguage(); }145inline bool32 GetConfirmButtonFlip() { return userCore->GetConfirmButtonFlip(); }146#if RETRO_REV0U147inline int32 GetDefaultGamepadType() { return userCore->GetDefaultGamepadType(); }148#endif149inline void ExitGame() { userCore->ExitGame(); }150inline void LaunchManual() { userCore->LaunchManual(); }151inline bool32 IsOverlayEnabled(uint32 deviceID) { return userCore->IsOverlayEnabled(deviceID); }152inline bool32 CheckDLC(uint8 id) { return userCore->CheckDLC(id); }153inline bool32 ShowExtensionOverlay(int32 overlay) { return userCore->ShowExtensionOverlay(overlay); }154#else155bool32 GetConfirmButtonFlip();156void LaunchManual();157void ExitGame();158int32 GetDefaultGamepadType();159bool32 ShowExtensionOverlay(uint8 overlay);160#endif161162bool32 GetXYButtonFlip();163164#if RETRO_VER_EGS165inline bool32 SetupExtensionOverlay() { return userCore->SetupExtensionOverlay(); }166inline bool32 CanShowExtensionOverlay(int32 overlay) { return userCore->CanShowExtensionOverlay(overlay); }167inline bool32 CanShowAltExtensionOverlay(int32 overlay) { return userCore->CanShowAltExtensionOverlay(overlay); }168inline bool32 ShowAltExtensionOverlay(int32 overlay) { return userCore->ShowAltExtensionOverlay(overlay); }169inline int32 GetConnectingStringID() { return userCore->GetConnectingStringID(); }170inline void ShowLimitedVideoOptions(int32 id) { userCore->ShowLimitedVideoOptions(id); }171#endif172173} // namespace SKU174175#if !RETRO_USE_ORIGINAL_CODE176struct CustomSettings {177int8 region;178bool32 confirmButtonFlip;179bool32 xyButtonFlip;180bool32 enableControllerDebugging;181bool32 disableFocusPause;182#if RETRO_REV0U183bool32 forceScripts;184#endif185int32 maxPixWidth;186char username[0x80];187};188189extern CustomSettings customSettings;190#endif191192void LoadSettingsINI();193void SaveSettingsINI(bool32 writeToFile);194195inline void WriteText(FileIO *file, const char *string, ...)196{197// make the full string198char buffer[0x100];199va_list args;200va_start(args, string);201vsprintf(buffer, string, args);202va_end(args);203204fWrite(buffer, sizeof(char), strlen(buffer), file);205}206207} // namespace RSDK208209#endif // !USER_CORE_H210211212