Skip to content

Commit

Permalink
System: Make more functions static
Browse files Browse the repository at this point in the history
  • Loading branch information
stenzek committed Aug 6, 2024
1 parent e6a682f commit 7041178
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 55 deletions.
89 changes: 51 additions & 38 deletions src/core/system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<u8> state_data;
size_t state_size;
};
struct MemorySaveState
{
std::unique_ptr<GPUTexture> vram_texture;
DynamicHeapArray<u8> state_data;
#ifdef PROFILE_MEMORY_SAVE_STATES
size_t state_size;
#endif
};
} // namespace

static void CheckCacheLineSize();

static void LoadInputBindings(SettingsInterface& si, std::unique_lock<std::mutex>& lock);
Expand All @@ -116,68 +139,51 @@ static bool ReadExecutableFromImage(IsoReader& iso, std::string* out_executable_
static GameHash GetGameHashFromBuffer(std::string_view exe_name, std::span<const u8> 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);
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<MemoryCard> 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<u8> state_data;
size_t state_size;
};
struct MemorySaveState
{
std::unique_ptr<GPUTexture> vram_texture;
DynamicHeapArray<u8> 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<MemoryCard> 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);
Expand All @@ -192,6 +198,13 @@ static bool SaveStateBufferToFile(const SaveStateBuffer& buffer, std::FILE* fp,
static u32 CompressAndWriteStateData(std::FILE* fp, std::span<const u8> 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);
Expand Down
17 changes: 0 additions & 17 deletions src/core/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -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<float, NUM_FRAME_TIME_SAMPLES>;

Expand Down Expand Up @@ -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.
Expand All @@ -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);

Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit 7041178

Please sign in to comment.