yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
emulator_service_impl.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4
6
7#include <grpcpp/grpcpp.h>
8
11#include "protos/emulator_service.grpc.pb.h"
12
13namespace yaze {
14class Rom;
15namespace emu {
16class Emulator;
17}
18}
19
20namespace yaze::net {
21
22class EmulatorServiceImpl final : public agent::EmulatorService::Service {
23 public:
24 using RomGetter = std::function<Rom*()>;
25 using RomLoader = std::function<bool(const std::string& path)>;
27 RomGetter rom_getter = nullptr,
28 RomLoader rom_loader = nullptr);
29
30 // --- ROM Loading ---
31 grpc::Status LoadRom(grpc::ServerContext* context,
32 const agent::LoadRomRequest* request,
33 agent::LoadRomResponse* response) override;
34 grpc::Status GetLoadedRomPath(grpc::ServerContext* context,
35 const agent::Empty* request,
36 agent::LoadedRomPathResponse* response) override;
37
38 // --- Core Lifecycle & Control ---
39 grpc::Status ControlEmulator(grpc::ServerContext* context,
40 const agent::ControlRequest* request,
41 agent::CommandResponse* response) override;
42
43 grpc::Status StepEmulator(grpc::ServerContext* context,
44 const agent::StepControlRequest* request,
45 agent::StepResponse* response) override;
46
47 grpc::Status RunToBreakpoint(grpc::ServerContext* context,
48 const agent::Empty* request,
49 agent::BreakpointHitResponse* response) override;
50
51 // --- Input & State ---
52 grpc::Status PressButtons(grpc::ServerContext* context,
53 const agent::ButtonRequest* request,
54 agent::CommandResponse* response) override;
55 grpc::Status ReleaseButtons(grpc::ServerContext* context,
56 const agent::ButtonRequest* request,
57 agent::CommandResponse* response) override;
58 grpc::Status HoldButtons(grpc::ServerContext* context,
59 const agent::ButtonHoldRequest* request,
60 agent::CommandResponse* response) override;
61 grpc::Status GetGameState(grpc::ServerContext* context,
62 const agent::GameStateRequest* request,
63 agent::GameStateResponse* response) override;
64 grpc::Status ReadMemory(grpc::ServerContext* context,
65 const agent::MemoryRequest* request,
66 agent::MemoryResponse* response) override;
67 grpc::Status WriteMemory(grpc::ServerContext* context,
68 const agent::MemoryWriteRequest* request,
69 agent::CommandResponse* response) override;
70
71 // --- Debugging Management ---
72 grpc::Status BreakpointControl(grpc::ServerContext* context,
73 const agent::BreakpointControlRequest* request,
74 agent::BreakpointControlResponse* response) override;
75
76 grpc::Status WatchpointControl(grpc::ServerContext* context,
77 const agent::WatchpointControlRequest* request,
78 agent::WatchpointControlResponse* response) override;
79
80 // --- Analysis & Symbols ---
81 grpc::Status GetDisassembly(grpc::ServerContext* context,
82 const agent::DisassemblyRequest* request,
83 agent::DisassemblyResponse* response) override;
84 grpc::Status GetExecutionTrace(grpc::ServerContext* context,
85 const agent::TraceRequest* request,
86 agent::TraceResponse* response) override;
87 grpc::Status ResolveSymbol(grpc::ServerContext* context,
88 const agent::SymbolLookupRequest* request,
89 agent::SymbolLookupResponse* response) override;
90 grpc::Status GetSymbolAt(grpc::ServerContext* context,
91 const agent::AddressRequest* request,
92 agent::SymbolLookupResponse* response) override;
93 grpc::Status LoadSymbols(grpc::ServerContext* context,
94 const agent::SymbolFileRequest* request,
95 agent::CommandResponse* response) override;
96
97 // --- Session & Experiments ---
98 grpc::Status GetDebugStatus(grpc::ServerContext* context,
99 const agent::Empty* request,
100 agent::DebugStatusResponse* response) override;
101 grpc::Status TestRun(grpc::ServerContext* context,
102 const agent::TestRunRequest* request,
103 agent::TestRunResponse* response) override;
104
105 private:
107 void CaptureCPUState(agent::CPUState* state);
108
110 emulator_; // Non-owning pointer to the emulator instance
114
116};
117
118} // namespace yaze::net
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:24
A class for emulating and debugging SNES games.
Definition emulator.h:39
Controller for intelligent step operations.
Provider for symbol (label) resolution in disassembly.
grpc::Status GetSymbolAt(grpc::ServerContext *context, const agent::AddressRequest *request, agent::SymbolLookupResponse *response) override
std::function< bool(const std::string &path)> RomLoader
grpc::Status ControlEmulator(grpc::ServerContext *context, const agent::ControlRequest *request, agent::CommandResponse *response) override
yaze::emu::debug::StepController step_controller_
grpc::Status TestRun(grpc::ServerContext *context, const agent::TestRunRequest *request, agent::TestRunResponse *response) override
grpc::Status GetDebugStatus(grpc::ServerContext *context, const agent::Empty *request, agent::DebugStatusResponse *response) override
grpc::Status WriteMemory(grpc::ServerContext *context, const agent::MemoryWriteRequest *request, agent::CommandResponse *response) override
grpc::Status ReleaseButtons(grpc::ServerContext *context, const agent::ButtonRequest *request, agent::CommandResponse *response) override
grpc::Status PressButtons(grpc::ServerContext *context, const agent::ButtonRequest *request, agent::CommandResponse *response) override
grpc::Status GetGameState(grpc::ServerContext *context, const agent::GameStateRequest *request, agent::GameStateResponse *response) override
grpc::Status BreakpointControl(grpc::ServerContext *context, const agent::BreakpointControlRequest *request, agent::BreakpointControlResponse *response) override
grpc::Status GetDisassembly(grpc::ServerContext *context, const agent::DisassemblyRequest *request, agent::DisassemblyResponse *response) override
grpc::Status LoadSymbols(grpc::ServerContext *context, const agent::SymbolFileRequest *request, agent::CommandResponse *response) override
yaze::emu::debug::SymbolProvider symbol_provider_
grpc::Status ReadMemory(grpc::ServerContext *context, const agent::MemoryRequest *request, agent::MemoryResponse *response) override
grpc::Status StepEmulator(grpc::ServerContext *context, const agent::StepControlRequest *request, agent::StepResponse *response) override
grpc::Status HoldButtons(grpc::ServerContext *context, const agent::ButtonHoldRequest *request, agent::CommandResponse *response) override
grpc::Status LoadRom(grpc::ServerContext *context, const agent::LoadRomRequest *request, agent::LoadRomResponse *response) override
EmulatorServiceImpl(yaze::emu::Emulator *emulator, RomGetter rom_getter=nullptr, RomLoader rom_loader=nullptr)
grpc::Status GetLoadedRomPath(grpc::ServerContext *context, const agent::Empty *request, agent::LoadedRomPathResponse *response) override
grpc::Status ResolveSymbol(grpc::ServerContext *context, const agent::SymbolLookupRequest *request, agent::SymbolLookupResponse *response) override
grpc::Status GetExecutionTrace(grpc::ServerContext *context, const agent::TraceRequest *request, agent::TraceResponse *response) override
grpc::Status RunToBreakpoint(grpc::ServerContext *context, const agent::Empty *request, agent::BreakpointHitResponse *response) override
void CaptureCPUState(agent::CPUState *state)
grpc::Status WatchpointControl(grpc::ServerContext *context, const agent::WatchpointControlRequest *request, agent::WatchpointControlResponse *response) override