#pragma once #include "PPUOpcodes.h" class ppu_thread; using ppu_intrp_func_t = void(*)(ppu_thread& ppu_, ppu_opcode_t op, be_t* this_op, struct ppu_intrp_func* next_fn); struct ppu_intrp_func { ppu_intrp_func_t fn; }; template struct ppu_interpreter_t; namespace asmjit { struct ppu_builder; } struct ppu_interpreter_rt_base { protected: std::unique_ptr> ptrs; ppu_interpreter_rt_base() noexcept; ppu_interpreter_rt_base(const ppu_interpreter_rt_base&) = delete; ppu_interpreter_rt_base& operator=(const ppu_interpreter_rt_base&) = delete; virtual ~ppu_interpreter_rt_base(); }; struct ppu_interpreter_rt : ppu_interpreter_rt_base { ppu_interpreter_rt() noexcept; ppu_intrp_func_t decode(u32 op) const noexcept; private: ppu_decoder, ppu_intrp_func_t> table; };