diff --git a/build_win_release_experimental_steamclient.bat b/build_win_release_experimental_steamclient.bat index 540a8e1..22566d4 100644 --- a/build_win_release_experimental_steamclient.bat +++ b/build_win_release_experimental_steamclient.bat @@ -8,7 +8,7 @@ call build_env_x86.bat cl dll/rtlgenrandom.c dll/rtlgenrandom.def cl /LD /DEMU_RELEASE_BUILD /DEMU_EXPERIMENTAL_BUILD /DSTEAMCLIENT_DLL /DCONTROLLER_SUPPORT /DEMU_OVERLAY /DGLEW_STATIC /IImGui /Iglew\include /DNDEBUG /I%PROTOBUF_X86_DIRECTORY%\include\ dll/*.cpp dll/*.cc detours/*.cpp controller/gamepad.c ImGui/*.cpp ImGui/impls/*.cpp ImGui/impls/windows/*.cpp overlay_experimental/*.cpp overlay_experimental/windows/*.cpp "%PROTOBUF_X86_LIBRARY%" glew\glew.c opengl32.lib Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Winmm.lib /EHsc /MP12 /Ox /link /debug:none /OUT:release\experimental_steamclient\steamclient.dll "%PROTOC_X64_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto -cl steamclient_loader/*.cpp advapi32.lib user32.lib /EHsc /MP12 /Od /link /debug:none /OUT:release\experimental_steamclient\steamclient_loader.exe +cl steamclient_loader/*.cpp advapi32.lib user32.lib /EHsc /MP12 /Ox /link /debug:none /OUT:release\experimental_steamclient\steamclient_loader.exe copy steamclient_loader\ColdClientLoader.ini release\experimental_steamclient\ call build_env_x64.bat cl dll/rtlgenrandom.c dll/rtlgenrandom.def diff --git a/dll/steam_client.h b/dll/steam_client.h index c085709..b46285e 100644 --- a/dll/steam_client.h +++ b/dll/steam_client.h @@ -27,11 +27,7 @@ #include "steam_remote_storage.h" #include "steam_screenshots.h" #include "steam_http.h" -#ifdef CONTROLLER_SUPPORT #include "steam_controller.h" -#else -#include "steam_controller_disabled.h" -#endif #include "steam_ugc.h" #include "steam_applist.h" #include "steam_music.h" diff --git a/dll/steam_controller.h b/dll/steam_controller.h index 7cefb6f..741ce18 100644 --- a/dll/steam_controller.h +++ b/dll/steam_controller.h @@ -16,6 +16,18 @@ . */ #include "base.h" +#ifndef CONTROLLER_SUPPORT +inline void GamepadInit(void) {} +inline void GamepadShutdown(void) {} +inline void GamepadUpdate(void) {} +inline GAMEPAD_BOOL GamepadIsConnected(GAMEPAD_DEVICE device) { return GAMEPAD_FALSE; } +inline GAMEPAD_BOOL GamepadButtonDown(GAMEPAD_DEVICE device, GAMEPAD_BUTTON button) { return GAMEPAD_FALSE; } +inline float GamepadTriggerLength(GAMEPAD_DEVICE device, GAMEPAD_TRIGGER trigger) { return 0.0; } +inline GAMEPAD_STICKDIR GamepadStickDir(GAMEPAD_DEVICE device, GAMEPAD_STICK stick) { return STICKDIR_CENTER; } +inline void GamepadStickNormXY(GAMEPAD_DEVICE device, GAMEPAD_STICK stick, float* outX, float* outY) {} +inline float GamepadStickLength(GAMEPAD_DEVICE device, GAMEPAD_STICK stick) { return 0.0; } +inline void GamepadSetRumble(GAMEPAD_DEVICE device, float left, float right, unsigned int rumble_length_ms) {} +#endif struct Controller_Map { std::map> active_digital; @@ -756,7 +768,7 @@ int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) // Returns the associated controller handle for the specified emulated gamepad ControllerHandle_t GetControllerForGamepadIndex( int nIndex ) { - PRINT_DEBUG("Steam_Controller::GetControllerForGamepadIndex\n"); + PRINT_DEBUG("Steam_Controller::GetControllerForGamepadIndex %i\n", nIndex); ControllerHandle_t out = nIndex + 1; auto controller = controllers.find(out); if (controller == controllers.end()) return 0; @@ -890,7 +902,7 @@ const char *GetGlyphForActionOrigin( EInputActionOrigin eOrigin ) // Returns the input type for a particular handle ESteamInputType GetInputTypeForHandle( ControllerHandle_t controllerHandle ) { - PRINT_DEBUG("Steam_Controller::GetInputTypeForHandle\n"); + PRINT_DEBUG("Steam_Controller::GetInputTypeForHandle %llu\n", controllerHandle); auto controller = controllers.find(controllerHandle); if (controller == controllers.end()) return k_ESteamInputType_Unknown; return k_ESteamInputType_XBox360Controller; diff --git a/dll/steam_controller_disabled.h b/dll/steam_controller_disabled.h deleted file mode 100644 index 825ff0b..0000000 --- a/dll/steam_controller_disabled.h +++ /dev/null @@ -1,375 +0,0 @@ -/* Copyright (C) 2019 Mr Goldberg - This file is part of the Goldberg Emulator - - The Goldberg Emulator is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 3 of the License, or (at your option) any later version. - - The Goldberg Emulator is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the Goldberg Emulator; if not, see - . */ - -#include "base.h" - -class Steam_Controller : -public ISteamController001, -public ISteamController003, -public ISteamController004, -public ISteamController005, -public ISteamController006, -public ISteamController, -public ISteamInput -{ -public: - -Steam_Controller(class Settings *settings, class SteamCallResults *callback_results, class SteamCallBacks *callbacks, class RunEveryRunCB *run_every_runcb) -{ -} - -// Init and Shutdown must be called when starting/ending use of this interface -bool Init() -{ - PRINT_DEBUG("Steam_Controller::Init()\n"); - return true; -} - -bool Init( const char *pchAbsolutePathToControllerConfigVDF ) -{ - PRINT_DEBUG("Steam_Controller::Init() old\n"); - return Init(); -} - -bool Shutdown() -{ - PRINT_DEBUG("Steam_Controller::Shutdown()\n"); - return true; -} - -void SetOverrideMode( const char *pchMode ) -{ - PRINT_DEBUG("Steam_Controller::SetOverrideMode\n"); -} - -// Synchronize API state with the latest Steam Controller inputs available. This -// is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest -// possible latency, you call this directly before reading controller state. -void RunFrame() -{ - PRINT_DEBUG("Steam_Controller::RunFrame()\n"); -} - -bool GetControllerState( uint32 unControllerIndex, SteamControllerState001_t *pState ) -{ - PRINT_DEBUG("Steam_Controller::GetControllerState()\n"); - return false; -} - -// Enumerate currently connected controllers -// handlesOut should point to a STEAM_CONTROLLER_MAX_COUNT sized array of ControllerHandle_t handles -// Returns the number of handles written to handlesOut -int GetConnectedControllers( ControllerHandle_t *handlesOut ) -{ - PRINT_DEBUG("GetConnectedControllers\n"); - return 0; -} - - -// Invokes the Steam overlay and brings up the binding screen -// Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode -bool ShowBindingPanel( ControllerHandle_t controllerHandle ) -{ - PRINT_DEBUG("ShowBindingPanel\n"); - return false; -} - - -// ACTION SETS -// Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls. -ControllerActionSetHandle_t GetActionSetHandle( const char *pszActionSetName ) -{ - PRINT_DEBUG("GetActionSetHandle %s\n", pszActionSetName); - return 124; -} - - -// Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive') -// This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in -// your state loops, instead of trying to place it in all of your state transitions. -void ActivateActionSet( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ) -{ - PRINT_DEBUG("ActivateActionSet\n"); -} - -ControllerActionSetHandle_t GetCurrentActionSet( ControllerHandle_t controllerHandle ) -{ - PRINT_DEBUG("GetCurrentActionSet\n"); - return 124; -} - - -void ActivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ) -{ - PRINT_DEBUG("ActivateActionSetLayer\n"); -} - -void DeactivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ) -{ - PRINT_DEBUG("DeactivateActionSetLayer\n"); -} - -void DeactivateAllActionSetLayers( ControllerHandle_t controllerHandle ) -{ - PRINT_DEBUG("DeactivateAllActionSetLayers\n"); -} - -int GetActiveActionSetLayers( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t *handlesOut ) -{ - PRINT_DEBUG("GetActiveActionSetLayers\n"); - return 0; -} - - - -// ACTIONS -// Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls. -ControllerDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName ) -{ - PRINT_DEBUG("GetDigitalActionHandle %s\n", pszActionName); - return 123; -} - - -// Returns the current state of the supplied digital game action -ControllerDigitalActionData_t GetDigitalActionData( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ) -{ - PRINT_DEBUG("GetDigitalActionData\n"); - ControllerDigitalActionData_t digitalData; - digitalData.bActive = false; - return digitalData; -} - - -// Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. -// originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles -int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin *originsOut ) -{ - PRINT_DEBUG("GetDigitalActionOrigins\n"); - return 0; -} - -int GetDigitalActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, EInputActionOrigin *originsOut ) -{ - PRINT_DEBUG("GetDigitalActionOrigins steaminput\n"); - return 0; -} - -// Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. -ControllerAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) -{ - PRINT_DEBUG("GetAnalogActionHandle %s\n", pszActionName); - return 125; -} - - -// Returns the current state of these supplied analog game action -ControllerAnalogActionData_t GetAnalogActionData( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ) -{ - PRINT_DEBUG("GetAnalogActionData\n"); - ControllerAnalogActionData_t data; - data.eMode = k_EInputSourceMode_None; - data.x = data.y = 0; - data.bActive = false; - return data; -} - - -// Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. -// originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles -int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin *originsOut ) -{ - PRINT_DEBUG("GetAnalogActionOrigins\n"); - return 0; -} - -int GetAnalogActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, EInputActionOrigin *originsOut ) -{ - PRINT_DEBUG("GetAnalogActionOrigins steaminput\n"); - return 0; -} - - -void StopAnalogActionMomentum( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ) -{ - PRINT_DEBUG("StopAnalogActionMomentum\n"); -} - - -// Trigger a haptic pulse on a controller -void TriggerHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) -{ - PRINT_DEBUG("TriggerHapticPulse\n"); -} - -void TriggerHapticPulse( uint32 unControllerIndex, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) -{ - PRINT_DEBUG("TriggerHapticPulse old\n"); - TriggerHapticPulse(unControllerIndex, eTargetPad, usDurationMicroSec ); -} - -// Trigger a pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. -// nFlags is currently unused and reserved for future use. -void TriggerRepeatedHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) -{ - PRINT_DEBUG("TriggerRepeatedHapticPulse\n"); -} - - -// Tigger a vibration event on supported controllers. -void TriggerVibration( ControllerHandle_t controllerHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ) -{ - PRINT_DEBUG("TriggerVibration\n"); -} - - -// Set the controller LED color on supported controllers. -void SetLEDColor( ControllerHandle_t controllerHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ) -{ - PRINT_DEBUG("SetLEDColor\n"); -} - - -// Returns the associated gamepad index for the specified controller, if emulating a gamepad -int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) -{ - PRINT_DEBUG("GetGamepadIndexForController\n"); - return 0; -} - - -// Returns the associated controller handle for the specified emulated gamepad -ControllerHandle_t GetControllerForGamepadIndex( int nIndex ) -{ - PRINT_DEBUG("GetControllerForGamepadIndex\n"); - return 0; -} - - -// Returns raw motion data from the specified controller -ControllerMotionData_t GetMotionData( ControllerHandle_t controllerHandle ) -{ - PRINT_DEBUG("GetMotionData\n"); - ControllerMotionData_t data = {}; - return data; -} - - -// Attempt to display origins of given action in the controller HUD, for the currently active action set -// Returns false is overlay is disabled / unavailable, or the user is not in Big Picture mode -bool ShowDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle, float flScale, float flXPosition, float flYPosition ) -{ - PRINT_DEBUG("ShowDigitalActionOrigins\n"); - return true; -} - -bool ShowAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle, float flScale, float flXPosition, float flYPosition ) -{ - PRINT_DEBUG("ShowAnalogActionOrigins\n"); - return true; -} - - -// Returns a localized string (from Steam's language setting) for the specified origin -const char *GetStringForActionOrigin( EControllerActionOrigin eOrigin ) -{ - PRINT_DEBUG("GetStringForActionOrigin\n"); - return "Button String"; -} - -const char *GetStringForActionOrigin( EInputActionOrigin eOrigin ) -{ - PRINT_DEBUG("GetStringForActionOrigin steaminput\n"); - return "Button String"; -} - - -// Get a local path to art for on-screen glyph for a particular origin -const char *GetGlyphForActionOrigin( EControllerActionOrigin eOrigin ) -{ - PRINT_DEBUG("GetGlyphForActionOrigin\n"); - return ""; -} - -const char *GetGlyphForActionOrigin( EInputActionOrigin eOrigin ) -{ - PRINT_DEBUG("GetGlyphForActionOrigin steaminput\n"); - return ""; -} - -// Returns the input type for a particular handle -ESteamInputType GetInputTypeForHandle( ControllerHandle_t controllerHandle ) -{ - PRINT_DEBUG("GetInputTypeForHandle\n"); - return k_ESteamInputType_Unknown; -} - -const char *GetStringForXboxOrigin( EXboxOrigin eOrigin ) -{ - PRINT_DEBUG("GetStringForXboxOrigin\n"); - return ""; -} - -const char *GetGlyphForXboxOrigin( EXboxOrigin eOrigin ) -{ - PRINT_DEBUG("GetGlyphForXboxOrigin\n"); - return ""; -} - -EControllerActionOrigin GetActionOriginFromXboxOrigin_( ControllerHandle_t controllerHandle, EXboxOrigin eOrigin ) -{ - PRINT_DEBUG("GetActionOriginFromXboxOrigin\n"); - return k_EControllerActionOrigin_None; -} - -EInputActionOrigin GetActionOriginFromXboxOrigin( InputHandle_t inputHandle, EXboxOrigin eOrigin ) -{ - PRINT_DEBUG("GetActionOriginFromXboxOrigin steaminput\n"); - return k_EInputActionOrigin_None; -} - -EControllerActionOrigin TranslateActionOrigin( ESteamInputType eDestinationInputType, EControllerActionOrigin eSourceOrigin ) -{ - PRINT_DEBUG("TranslateActionOrigin\n"); - return k_EControllerActionOrigin_None; -} - -EInputActionOrigin TranslateActionOrigin( ESteamInputType eDestinationInputType, EInputActionOrigin eSourceOrigin ) -{ - PRINT_DEBUG("TranslateActionOrigin steaminput\n"); - return k_EInputActionOrigin_None; -} - -bool GetControllerBindingRevision( ControllerHandle_t controllerHandle, int *pMajor, int *pMinor ) -{ - PRINT_DEBUG("GetControllerBindingRevision\n"); - return false; -} - -bool GetDeviceBindingRevision( InputHandle_t inputHandle, int *pMajor, int *pMinor ) -{ - PRINT_DEBUG("GetDeviceBindingRevision\n"); - return false; -} - -uint32 GetRemotePlaySessionID( InputHandle_t inputHandle ) -{ - PRINT_DEBUG("GetRemotePlaySessionID\n"); - return 0; -} - -};