From 70411783cd357883d5467f6e8a236ea85a1daa5b Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 6 Aug 2024 16:10:15 +1000 Subject: [PATCH] System: Make more functions static --- src/core/system.cpp | 89 ++++++++++++++++++++++++++------------------- src/core/system.h | 17 --------- 2 files changed, 51 insertions(+), 55 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index 5a2f01e49..873cde483 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -106,6 +106,29 @@ SystemBootParameters::SystemBootParameters(std::string filename_) : filename(std SystemBootParameters::~SystemBootParameters() = default; namespace System { +/// Memory save states - only for internal use. +namespace { +struct SaveStateBuffer +{ + std::string serial; + std::string title; + std::string media_path; + u32 media_subimage_index; + u32 version; + RGBA8Image screenshot; + DynamicHeapArray state_data; + size_t state_size; +}; +struct MemorySaveState +{ + std::unique_ptr vram_texture; + DynamicHeapArray state_data; +#ifdef PROFILE_MEMORY_SAVE_STATES + size_t state_size; +#endif +}; +} // namespace + static void CheckCacheLineSize(); static void LoadInputBindings(SettingsInterface& si, std::unique_lock& lock); @@ -116,20 +139,24 @@ static bool ReadExecutableFromImage(IsoReader& iso, std::string* out_executable_ static GameHash GetGameHashFromBuffer(std::string_view exe_name, std::span exe_buffer, const IsoReader::ISOPrimaryVolumeDescriptor& iso_pvd, u32 track_1_length); +/// Checks for settings changes, std::move() the old settings away for comparing beforehand. +static void CheckForSettingsChanges(const Settings& old_settings); +static void WarnAboutUnsafeSettings(); +static void LogUnsafeSettingsToConsole(const SmallStringBase& messages); + +static bool Initialize(bool force_software_renderer, Error* error); static bool LoadBIOS(Error* error); static void ResetBootMode(); static void InternalReset(); static void ClearRunningGame(); static void DestroySystem(); -static std::string GetMediaPathFromSaveState(const char* path); static bool CreateGPU(GPURenderer renderer, bool is_switching, Error* error); -static bool SaveUndoLoadState(); -static void WarnAboutUnsafeSettings(); -static void LogUnsafeSettingsToConsole(const SmallStringBase& messages); +static bool RecreateGPU(GPURenderer renderer, bool force_recreate_device = false, bool update_display = true); -/// Checks for settings changes, std::move() the old settings away for comparing beforehand. -static void CheckForSettingsChanges(const Settings& old_settings); +/// Updates the throttle period, call when target emulation speed changes. +static void UpdateThrottlePeriod(); +static void ResetThrottler(); /// Throttles the system, i.e. sleeps until it's time to execute the next frame. static void Throttle(Common::Timer::Value current_time); @@ -137,47 +164,26 @@ static void UpdatePerformanceCounters(); static void AccumulatePreFrameSleepTime(); static void UpdatePreFrameSleepTime(); static void UpdateDisplayVSync(); - -static void SetRewinding(bool enabled); -static bool SaveRewindState(); -static void DoRewind(); - -static void SaveRunaheadState(); -static bool DoRunahead(); - -static bool Initialize(bool force_software_renderer, Error* error); +static void ResetPerformanceCounters(); static bool UpdateGameSettingsLayer(); static void UpdateRunningGame(const std::string_view path, CDImage* image, bool booting); static bool CheckForSBIFile(CDImage* image, Error* error); -static std::unique_ptr GetMemoryCardForSlot(u32 slot, MemoryCardType type); -/// Memory save states - only for internal use. -namespace { -struct SaveStateBuffer -{ - std::string serial; - std::string title; - std::string media_path; - u32 media_subimage_index; - u32 version; - RGBA8Image screenshot; - DynamicHeapArray state_data; - size_t state_size; -}; -struct MemorySaveState -{ - std::unique_ptr vram_texture; - DynamicHeapArray state_data; -#ifdef PROFILE_MEMORY_SAVE_STATES - size_t state_size; -#endif -}; -} // namespace +static void UpdateControllers(); +static void UpdateControllerSettings(); +static void ResetControllers(); +static void UpdatePerGameMemoryCards(); +static std::unique_ptr GetMemoryCardForSlot(u32 slot, MemoryCardType type); +static void UpdateMultitaps(); /// Returns the maximum size of a save state, considering the current configuration. static size_t GetMaxSaveStateSize(); +static std::string GetMediaPathFromSaveState(const char* path); +static bool SaveUndoLoadState(); +static void UpdateMemorySaveStateSettings(); +static bool LoadRewindState(u32 skip_saves = 0, bool consume_state = true); static bool SaveMemoryState(MemorySaveState* mss); static bool LoadMemoryState(const MemorySaveState& mss); static bool LoadStateFromBuffer(const SaveStateBuffer& buffer, Error* error, bool update_display); @@ -192,6 +198,13 @@ static bool SaveStateBufferToFile(const SaveStateBuffer& buffer, std::FILE* fp, static u32 CompressAndWriteStateData(std::FILE* fp, std::span src, SaveStateCompression method, Error* error); static bool DoState(StateWrapper& sw, GPUTexture** host_texture, bool update_display, bool is_memory_state); +static void SetRewinding(bool enabled); +static bool SaveRewindState(); +static void DoRewind(); + +static void SaveRunaheadState(); +static bool DoRunahead(); + static void UpdateSessionTime(const std::string& prev_serial); static void SetTimerResolutionIncreased(bool enabled); diff --git a/src/core/system.h b/src/core/system.h index 804d9a9ac..e26fe9aa0 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -210,7 +210,6 @@ u64 GetSessionPlayedTime(); const BIOS::ImageInfo* GetBIOSImageInfo(); -// TODO: Move to PerformanceMetrics static constexpr u32 NUM_FRAME_TIME_SAMPLES = 150; using FrameTimeHistory = std::array; @@ -259,9 +258,6 @@ bool SaveResumeState(Error* error); /// Runs the VM until the CPU execution is canceled. void Execute(); -/// Recreates the GPU component, saving/loading the state so it is preserved. Call when the GPU renderer changes. -bool RecreateGPU(GPURenderer renderer, bool force_recreate_device = false, bool update_display = true); - void SingleStepCPU(); /// Sets target emulation speed. @@ -271,26 +267,15 @@ float GetAudioNominalRate(); /// Adjusts the throttle frequency, i.e. how many times we should sleep per second. void SetThrottleFrequency(float frequency); -/// Updates the throttle period, call when target emulation speed changes. -void UpdateThrottlePeriod(); -void ResetThrottler(); -void ResetPerformanceCounters(); - // Access controllers for simulating input. Controller* GetController(u32 slot); -void UpdateControllers(); -void UpdateControllerSettings(); -void ResetControllers(); void UpdateMemoryCardTypes(); -void UpdatePerGameMemoryCards(); bool HasMemoryCard(u32 slot); bool IsSavingMemoryCards(); /// Swaps memory cards in slot 1/2. void SwapMemoryCards(); -void UpdateMultitaps(); - /// Dumps RAM to a file. bool DumpRAM(const char* filename); @@ -461,8 +446,6 @@ void InvalidateDisplay(); ////////////////////////////////////////////////////////////////////////// void CalculateRewindMemoryUsage(u32 num_saves, u32 resolution_scale, u64* ram_usage, u64* vram_usage); void ClearMemorySaveStates(); -void UpdateMemorySaveStateSettings(); -bool LoadRewindState(u32 skip_saves = 0, bool consume_state = true); void SetRunaheadReplayFlag(); /// Shared socket multiplexer, used by PINE/GDB/etc.