103 行
2.9 KiB
C++
103 行
2.9 KiB
C++
struct Program : ares::Platform {
|
|
auto create() -> void;
|
|
auto main() -> void;
|
|
auto quit() -> void;
|
|
|
|
//platform.cpp
|
|
auto attach(ares::Node::Object) -> void override;
|
|
auto detach(ares::Node::Object) -> void override;
|
|
auto pak(ares::Node::Object) -> shared_pointer<vfs::directory> override;
|
|
auto event(ares::Event) -> void override;
|
|
auto log(ares::Node::Debugger::Tracer::Tracer tracer, string_view message) -> void override;
|
|
auto status(string_view message) -> void override;
|
|
auto video(ares::Node::Video::Screen, const u32* data, u32 pitch, u32 width, u32 height) -> void override;
|
|
auto refreshRateHint(double refreshRate) -> void override;
|
|
auto audio(ares::Node::Audio::Stream) -> void override;
|
|
auto input(ares::Node::Input::Input) -> void override;
|
|
auto cheat(u32 address) -> maybe<u32> override;
|
|
|
|
//load.cpp
|
|
auto identify(const string& filename) -> shared_pointer<Emulator>;
|
|
auto load(shared_pointer<Emulator> emulator, string location = {}) -> bool;
|
|
auto load(string location) -> bool;
|
|
auto unload() -> void;
|
|
|
|
//states.cpp
|
|
auto stateSave(u32 slot) -> bool;
|
|
auto stateLoad(u32 slot) -> bool;
|
|
auto undoStateSave() -> bool;
|
|
auto undoStateLoad() -> bool;
|
|
auto clearUndoStates() -> void;
|
|
|
|
//status.cpp
|
|
auto updateMessage() -> void;
|
|
auto showMessage(const string&) -> void;
|
|
|
|
//utility.cpp
|
|
auto pause(bool) -> void;
|
|
auto mute() -> void;
|
|
auto paletteUpdate() -> void;
|
|
auto runAheadUpdate() -> void;
|
|
auto captureScreenshot(const u32* data, u32 pitch, u32 width, u32 height) -> void;
|
|
auto openFile(BrowserDialog&) -> string;
|
|
auto selectFolder(BrowserDialog&) -> string;
|
|
|
|
//drivers.cpp
|
|
auto videoDriverUpdate() -> void;
|
|
auto videoMonitorUpdate() -> void;
|
|
auto videoFormatUpdate() -> void;
|
|
auto videoFullScreenToggle() -> void;
|
|
|
|
auto audioDriverUpdate() -> void;
|
|
auto audioDeviceUpdate() -> void;
|
|
auto audioFrequencyUpdate() -> void;
|
|
auto audioLatencyUpdate() -> void;
|
|
|
|
auto inputDriverUpdate() -> void;
|
|
|
|
bool startFullScreen = false;
|
|
vector<string> startGameLoad;
|
|
bool noFilePrompt = false;
|
|
|
|
string startSystem;
|
|
string startShader;
|
|
|
|
vector<ares::Node::Video::Screen> screens;
|
|
vector<ares::Node::Audio::Stream> streams;
|
|
|
|
bool paused = false;
|
|
bool fastForwarding = false;
|
|
bool rewinding = false;
|
|
bool runAhead = false;
|
|
bool requestFrameAdvance = false;
|
|
bool requestScreenshot = false;
|
|
bool keyboardCaptured = false;
|
|
|
|
struct State {
|
|
u32 slot = 1;
|
|
u32 undoSlot = 1;
|
|
} state;
|
|
|
|
//rewind.cpp
|
|
struct Rewind {
|
|
enum class Mode : u32 { Playing, Rewinding } mode = Mode::Playing;
|
|
vector<serializer> history;
|
|
u32 length = 0;
|
|
u32 frequency = 0;
|
|
u32 counter = 0;
|
|
} rewind;
|
|
auto rewindSetMode(Rewind::Mode) -> void;
|
|
auto rewindReset() -> void;
|
|
auto rewindRun() -> void;
|
|
|
|
struct Message {
|
|
u64 timestamp = 0;
|
|
string text;
|
|
} message;
|
|
|
|
vector<Message> messages;
|
|
maybe<u64> vblanksPerSecond;
|
|
};
|
|
|
|
extern Program program;
|