1#ifndef YAZE_APP_EMU_I_EMULATOR_H_
2#define YAZE_APP_EMU_I_EMULATOR_H_
8#include "absl/status/status.h"
9#include "absl/status/statusor.h"
33 virtual absl::Status
Step(
int count) = 0;
38 virtual absl::Status
LoadRom(
const std::string& path) = 0;
42 virtual absl::StatusOr<uint8_t>
ReadByte(uint32_t addr) = 0;
43 virtual absl::StatusOr<std::vector<uint8_t>>
ReadBlock(uint32_t addr,
45 virtual absl::Status
WriteByte(uint32_t addr, uint8_t val) = 0;
47 const std::vector<uint8_t>& data) = 0;
60 const std::string& condition,
const std::string& description) = 0;
72 return absl::UnimplementedError(
"SaveState not supported by this backend");
75 return absl::UnimplementedError(
"LoadState not supported by this backend");
86 return absl::UnimplementedError(
87 "Collision overlay not supported by this backend");
Abstract interface for emulator backends (Internal vs Mesen2)
virtual ~IEmulator()=default
virtual bool IsRunning() const =0
virtual absl::StatusOr< std::vector< uint8_t > > ReadBlock(uint32_t addr, size_t len)=0
virtual absl::Status StepOver()=0
virtual absl::Status LoadRom(const std::string &path)=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
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)
virtual absl::Status SaveState(int slot)
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 absl::Status LoadState(int slot)
EmulatorFeature
Features that emulator backends may optionally support. Use with IEmulator::SupportsFeature() to quer...