yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
i_emulator.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EMU_I_EMULATOR_H_
2#define YAZE_APP_EMU_I_EMULATOR_H_
3
4#include <cstdint>
5#include <string>
6#include <vector>
7
8#include "absl/status/status.h"
9#include "absl/status/statusor.h"
11
12namespace yaze {
13namespace emu {
14
23class IEmulator {
24 public:
25 virtual ~IEmulator() = default;
26
27 // --- Core Lifecycle ---
28 virtual bool IsConnected() const = 0;
29 virtual bool IsRunning() const = 0;
30 virtual void Pause() = 0;
31 virtual void Resume() = 0;
32 virtual void Reset() = 0;
33 virtual absl::Status Step(int count) = 0;
34 virtual absl::Status StepOver() = 0;
35 virtual absl::Status StepOut() = 0;
36
37 // --- ROM ---
38 virtual absl::Status LoadRom(const std::string& path) = 0;
39 virtual std::string GetLoadedRomPath() const = 0;
40
41 // --- Memory ---
42 virtual absl::StatusOr<uint8_t> ReadByte(uint32_t addr) = 0;
43 virtual absl::StatusOr<std::vector<uint8_t>> ReadBlock(uint32_t addr,
44 size_t len) = 0;
45 virtual absl::Status WriteByte(uint32_t addr, uint8_t val) = 0;
46 virtual absl::Status WriteBlock(uint32_t addr,
47 const std::vector<uint8_t>& data) = 0;
48
49 // --- CPU State ---
50 virtual absl::Status GetCpuState(CpuStateSnapshot* out_state) = 0;
51
52 // --- Game State (ALTTP specific) ---
53 virtual absl::Status GetGameState(GameSnapshot* out_state) = 0;
54
55 // --- Breakpoints ---
56 virtual absl::Status RunToBreakpoint(BreakpointHitResult* response) = 0;
57
58 virtual absl::StatusOr<uint32_t> AddBreakpoint(
59 uint32_t addr, BreakpointKind type, CpuKind cpu,
60 const std::string& condition, const std::string& description) = 0;
61 virtual absl::Status RemoveBreakpoint(uint32_t breakpoint_id) = 0;
62 virtual absl::Status ToggleBreakpoint(uint32_t breakpoint_id,
63 bool enabled) = 0;
64 virtual std::vector<BreakpointSnapshot> ListBreakpoints() = 0;
65
66 // --- Input ---
67 virtual absl::Status PressButton(InputButton button) = 0;
68 virtual absl::Status ReleaseButton(InputButton button) = 0;
69
70 // --- Save State ---
71 virtual absl::Status SaveState(int slot) {
72 return absl::UnimplementedError("SaveState not supported by this backend");
73 }
74 virtual absl::Status LoadState(int slot) {
75 return absl::UnimplementedError("LoadState not supported by this backend");
76 }
77
78 // --- Feature Query ---
79 virtual bool SupportsFeature(EmulatorFeature feature) const {
80 (void)feature;
81 return false;
82 }
83
84 // --- Optional Backend-Specific Features ---
85 virtual absl::Status SetCollisionOverlay(bool enable) {
86 return absl::UnimplementedError(
87 "Collision overlay not supported by this backend");
88 }
89};
90
91} // namespace emu
92} // namespace yaze
93
94#endif // YAZE_APP_EMU_I_EMULATOR_H_
Abstract interface for emulator backends (Internal vs Mesen2)
Definition i_emulator.h:23
virtual ~IEmulator()=default
virtual bool IsRunning() const =0
virtual absl::StatusOr< std::vector< uint8_t > > ReadBlock(uint32_t addr, size_t len)=0
virtual void Pause()=0
virtual absl::Status StepOver()=0
virtual absl::Status LoadRom(const std::string &path)=0
virtual void Resume()=0
virtual absl::Status GetCpuState(CpuStateSnapshot *out_state)=0
virtual absl::Status RemoveBreakpoint(uint32_t breakpoint_id)=0
virtual absl::Status WriteByte(uint32_t addr, uint8_t val)=0
virtual absl::Status ToggleBreakpoint(uint32_t breakpoint_id, bool enabled)=0
virtual absl::StatusOr< uint8_t > ReadByte(uint32_t addr)=0
virtual absl::Status Step(int count)=0
virtual absl::Status ReleaseButton(InputButton button)=0
virtual bool SupportsFeature(EmulatorFeature feature) const
Definition i_emulator.h:79
virtual absl::Status GetGameState(GameSnapshot *out_state)=0
virtual absl::Status StepOut()=0
virtual std::string GetLoadedRomPath() const =0
virtual bool IsConnected() const =0
virtual absl::Status SetCollisionOverlay(bool enable)
Definition i_emulator.h:85
virtual absl::Status SaveState(int slot)
Definition i_emulator.h:71
virtual absl::Status WriteBlock(uint32_t addr, const std::vector< uint8_t > &data)=0
virtual absl::Status PressButton(InputButton button)=0
virtual std::vector< BreakpointSnapshot > ListBreakpoints()=0
virtual absl::StatusOr< uint32_t > AddBreakpoint(uint32_t addr, BreakpointKind type, CpuKind cpu, const std::string &condition, const std::string &description)=0
virtual absl::Status RunToBreakpoint(BreakpointHitResult *response)=0
virtual void Reset()=0
virtual absl::Status LoadState(int slot)
Definition i_emulator.h:74
EmulatorFeature
Features that emulator backends may optionally support. Use with IEmulator::SupportsFeature() to quer...