mirror of
https://github.com/libretro/Mesen.git
synced 2024-11-24 01:29:41 +00:00
76 lines
1.6 KiB
C++
76 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include "stdafx.h"
|
|
#include "CPU.h"
|
|
#include "PPU.h"
|
|
#include "APU.h"
|
|
#include "MemoryManager.h"
|
|
#include "ControlManager.h"
|
|
#include "../Utilities/SimpleLock.h"
|
|
|
|
enum EmulationFlags
|
|
{
|
|
LimitFPS = 0x01,
|
|
Paused = 0x02,
|
|
};
|
|
|
|
class Debugger;
|
|
class BaseMapper;
|
|
|
|
class Console
|
|
{
|
|
private:
|
|
static shared_ptr<Console> Instance;
|
|
static uint32_t Flags;
|
|
SimpleLock _pauseLock;
|
|
SimpleLock _runLock;
|
|
SimpleLock _stopLock;
|
|
|
|
shared_ptr<CPU> _cpu;
|
|
shared_ptr<PPU> _ppu;
|
|
unique_ptr<APU> _apu;
|
|
shared_ptr<BaseMapper> _mapper;
|
|
unique_ptr<ControlManager> _controlManager;
|
|
shared_ptr<MemoryManager> _memoryManager;
|
|
|
|
string _romFilepath;
|
|
|
|
bool _stop = false;
|
|
bool _reset = false;
|
|
|
|
bool _initialized = false;
|
|
|
|
void ResetComponents(bool softReset);
|
|
void Initialize(string filename);
|
|
|
|
public:
|
|
Console();
|
|
~Console();
|
|
void Run();
|
|
void Stop();
|
|
static void Reset(bool softReset = true);
|
|
|
|
//Used to pause the emu loop to perform thread-safe operations
|
|
static void Pause();
|
|
|
|
//Used to resume the emu loop after calling Pause()
|
|
static void Resume();
|
|
|
|
shared_ptr<Debugger> Console::GetDebugger();
|
|
|
|
static void SaveState(ostream &saveStream);
|
|
static void LoadState(istream &loadStream);
|
|
static void LoadState(uint8_t *buffer, uint32_t bufferSize);
|
|
|
|
static void LoadROM(string filepath);
|
|
static bool LoadROM(string romName, uint32_t crc32Hash);
|
|
static string FindMatchingRomInFolder(string folder, string romFilename, uint32_t crc32Hash);
|
|
static string GetROMPath();
|
|
|
|
static bool CheckFlag(int flag);
|
|
static void SetFlags(int flags);
|
|
static void ClearFlags(int flags);
|
|
|
|
static shared_ptr<Console> GetInstance();
|
|
};
|