#include <snes.h>
Public Member Functions | |
Snes ()=default | |
~Snes ()=default | |
void | Init (std::vector< uint8_t > &rom_data) |
void | Reset (bool hard=false) |
void | RunFrame () |
void | CatchUpApu () |
void | HandleInput () |
void | RunCycle () |
void | RunCycles (int cycles) |
void | SyncCycles (bool start, int sync_cycles) |
uint8_t | ReadBBus (uint8_t adr) |
uint8_t | ReadReg (uint16_t adr) |
uint8_t | Rread (uint32_t adr) |
uint8_t | Read (uint32_t adr) |
void | WriteBBus (uint8_t adr, uint8_t val) |
void | WriteReg (uint16_t adr, uint8_t val) |
void | Write (uint32_t adr, uint8_t val) |
int | GetAccessTime (uint32_t adr) |
uint8_t | CpuRead (uint32_t adr) |
void | CpuWrite (uint32_t adr, uint8_t val) |
void | CpuIdle (bool waiting) |
void | InitAccessTime (bool recalc) |
void | SetSamples (int16_t *sample_data, int wanted_samples) |
void | SetPixels (uint8_t *pixel_data) |
void | SetButtonState (int player, int button, bool pressed) |
bool | running () const |
auto | cpu () -> Cpu & |
auto | ppu () -> Ppu & |
auto | apu () -> Apu & |
auto | Memory () -> MemoryImpl & |
auto | get_ram () -> uint8_t * |
auto | mutable_cycles () -> uint64_t & |
Public Attributes | |
std::vector< uint8_t > | access_time |
Private Attributes | |
MemoryImpl | memory_ |
CpuCallbacks | cpu_callbacks_ |
Cpu | cpu_ {memory_, cpu_callbacks_} |
Ppu | ppu_ {memory_} |
Apu | apu_ {memory_} |
std::vector< uint8_t > | rom_data |
bool | running_ = false |
uint8_t | ram [0x20000] |
uint32_t | ram_adr_ |
uint32_t | frames_ = 0 |
uint64_t | cycles_ = 0 |
uint64_t | sync_cycle_ = 0 |
double | apu_catchup_cycles_ |
uint32_t | next_horiz_event |
bool | h_irq_enabled_ = false |
bool | v_irq_enabled_ = false |
bool | nmi_enabled_ = false |
uint16_t | h_timer_ = 0 |
uint16_t | v_timer_ = 0 |
bool | in_nmi_ = false |
bool | irq_condition_ = false |
bool | in_irq_ = false |
bool | in_vblank_ |
uint8_t | multiply_a_ |
uint16_t | multiply_result_ |
uint16_t | divide_a_ |
uint16_t | divide_result_ |
Input | input1 |
Input | input2 |
uint16_t | port_auto_read_ [4] |
bool | auto_joy_read_ = false |
uint16_t | auto_joy_timer_ = 0 |
bool | ppu_latch_ |
bool | fast_mem_ = false |
|
default |
|
default |
References rom_data.
void yaze::emu::Snes::Init | ( | std::vector< uint8_t > & | rom_data | ) |
void yaze::emu::Snes::Reset | ( | bool | hard = false | ) |
Definition at line 40 of file snes.cc.
References apu_, apu_catchup_cycles_, auto_joy_read_, auto_joy_timer_, cpu_, cycles_, divide_a_, divide_result_, fast_mem_, frames_, h_irq_enabled_, h_timer_, in_irq_, in_nmi_, in_vblank_, InitAccessTime(), input1, input2, irq_condition_, memory_, multiply_a_, multiply_result_, next_horiz_event, nmi_enabled_, port_auto_read_, ppu_, ppu_latch_, ram, ram_adr_, yaze::emu::ResetDma(), sync_cycle_, v_irq_enabled_, and v_timer_.
Referenced by Init().
void yaze::emu::Snes::RunFrame | ( | ) |
void yaze::emu::Snes::CatchUpApu | ( | ) |
Definition at line 90 of file snes.cc.
Referenced by ReadBBus(), RunCycle(), and WriteBBus().
void yaze::emu::Snes::HandleInput | ( | ) |
Definition at line 92 of file snes.cc.
References input1, input2, and port_auto_read_.
Referenced by RunCycle().
void yaze::emu::Snes::RunCycle | ( | ) |
Definition at line 109 of file snes.cc.
References apu_, auto_joy_read_, auto_joy_timer_, CatchUpApu(), cpu_, cycles_, frames_, h_irq_enabled_, h_timer_, HandleInput(), in_irq_, in_nmi_, in_vblank_, irq_condition_, memory_, next_horiz_event, nmi_enabled_, ppu_, v_irq_enabled_, and v_timer_.
Referenced by RunCycles().
void yaze::emu::Snes::RunCycles | ( | int | cycles | ) |
Definition at line 224 of file snes.cc.
References memory_, and RunCycle().
Referenced by CpuIdle(), CpuRead(), CpuWrite(), yaze::emu::DoHdma(), yaze::emu::InitHdma(), SyncCycles(), and yaze::emu::WaitCycle().
void yaze::emu::Snes::SyncCycles | ( | bool | start, |
int | sync_cycles ) |
Definition at line 234 of file snes.cc.
References cycles_, RunCycles(), and sync_cycle_.
Referenced by yaze::emu::DoDma(), yaze::emu::DoHdma(), and yaze::emu::InitHdma().
uint8_t yaze::emu::Snes::ReadBBus | ( | uint8_t | adr | ) |
Definition at line 245 of file snes.cc.
References apu_, CatchUpApu(), memory_, ppu_, ppu_latch_, ram, and ram_adr_.
Referenced by Rread(), and yaze::emu::TransferByte().
uint8_t yaze::emu::Snes::ReadReg | ( | uint16_t | adr | ) |
Definition at line 261 of file snes.cc.
References auto_joy_timer_, cpu_, divide_result_, in_irq_, in_nmi_, in_vblank_, memory_, multiply_result_, port_auto_read_, and ppu_latch_.
Referenced by Rread().
uint8_t yaze::emu::Snes::Rread | ( | uint32_t | adr | ) |
Definition at line 314 of file snes.cc.
References input1, input2, memory_, ram, ReadBBus(), yaze::emu::ReadDma(), and ReadReg().
Referenced by Read().
uint8_t yaze::emu::Snes::Read | ( | uint32_t | adr | ) |
Definition at line 344 of file snes.cc.
References memory_, and Rread().
Referenced by CpuRead(), yaze::emu::DoHdma(), yaze::emu::InitHdma(), and yaze::emu::TransferByte().
void yaze::emu::Snes::WriteBBus | ( | uint8_t | adr, |
uint8_t | val ) |
Definition at line 350 of file snes.cc.
References apu_, CatchUpApu(), ppu_, ram, and ram_adr_.
Referenced by yaze::emu::TransferByte(), and Write().
void yaze::emu::Snes::WriteReg | ( | uint16_t | adr, |
uint8_t | val ) |
Definition at line 381 of file snes.cc.
References auto_joy_read_, auto_joy_timer_, cpu_, divide_a_, divide_result_, fast_mem_, h_irq_enabled_, h_timer_, in_irq_, in_nmi_, memory_, multiply_a_, multiply_result_, nmi_enabled_, ppu_, ppu_latch_, yaze::emu::StartDma(), v_irq_enabled_, and v_timer_.
Referenced by Write().
void yaze::emu::Snes::Write | ( | uint32_t | adr, |
uint8_t | val ) |
Definition at line 468 of file snes.cc.
References input1, input2, memory_, ram, WriteBBus(), yaze::emu::WriteDma(), and WriteReg().
Referenced by CpuWrite(), and yaze::emu::TransferByte().
int yaze::emu::Snes::GetAccessTime | ( | uint32_t | adr | ) |
uint8_t yaze::emu::Snes::CpuRead | ( | uint32_t | adr | ) |
Definition at line 512 of file snes.cc.
References access_time, cpu_, yaze::emu::HandleDma(), memory_, Read(), and RunCycles().
void yaze::emu::Snes::CpuWrite | ( | uint32_t | adr, |
uint8_t | val ) |
Definition at line 523 of file snes.cc.
References access_time, cpu_, yaze::emu::HandleDma(), memory_, RunCycles(), and Write().
void yaze::emu::Snes::CpuIdle | ( | bool | waiting | ) |
Definition at line 531 of file snes.cc.
References cpu_, yaze::emu::HandleDma(), memory_, and RunCycles().
void yaze::emu::Snes::InitAccessTime | ( | bool | recalc | ) |
Definition at line 560 of file snes.cc.
References access_time, and GetAccessTime().
Referenced by Reset().
void yaze::emu::Snes::SetSamples | ( | int16_t * | sample_data, |
int | wanted_samples ) |
void yaze::emu::Snes::SetPixels | ( | uint8_t * | pixel_data | ) |
void yaze::emu::Snes::SetButtonState | ( | int | player, |
int | button, | ||
bool | pressed ) |
|
inline |
|
inline |
Definition at line 57 of file snes.h.
References cpu_.
Referenced by yaze::emu::DoDma(), yaze::emu::DoHdma(), and yaze::emu::InitHdma().
|
inline |
|
inline |
|
inline |
std::vector<uint8_t> yaze::emu::Snes::access_time |
Definition at line 50 of file snes.h.
Referenced by CpuRead(), CpuWrite(), and InitAccessTime().
|
private |
Definition at line 65 of file snes.h.
Referenced by CpuIdle(), CpuRead(), CpuWrite(), Init(), Memory(), Read(), ReadBBus(), ReadReg(), Reset(), Rread(), RunCycle(), RunCycles(), SetSamples(), Write(), and WriteReg().
|
private |
|
private |
Definition at line 71 of file snes.h.
Referenced by cpu(), CpuIdle(), CpuRead(), CpuWrite(), ReadReg(), Reset(), RunCycle(), RunFrame(), and WriteReg().
Definition at line 72 of file snes.h.
Referenced by Init(), ppu(), ReadBBus(), Reset(), RunCycle(), SetPixels(), WriteBBus(), and WriteReg().
Definition at line 73 of file snes.h.
Referenced by apu(), CatchUpApu(), Init(), ReadBBus(), Reset(), RunCycle(), SetSamples(), and WriteBBus().
|
private |
|
private |
|
private |
Definition at line 80 of file snes.h.
Referenced by get_ram(), ReadBBus(), Reset(), Rread(), Write(), and WriteBBus().
|
private |
Definition at line 81 of file snes.h.
Referenced by ReadBBus(), Reset(), and WriteBBus().
|
private |
Definition at line 84 of file snes.h.
Referenced by Reset(), RunCycle(), and RunFrame().
|
private |
Definition at line 85 of file snes.h.
Referenced by CatchUpApu(), mutable_cycles(), Reset(), RunCycle(), and SyncCycles().
|
private |
Definition at line 86 of file snes.h.
Referenced by Reset(), and SyncCycles().
|
private |
|
private |
Definition at line 88 of file snes.h.
Referenced by Reset(), and RunCycle().
|
private |
Definition at line 91 of file snes.h.
Referenced by Reset(), RunCycle(), and WriteReg().
|
private |
Definition at line 92 of file snes.h.
Referenced by Reset(), RunCycle(), and WriteReg().
|
private |
Definition at line 93 of file snes.h.
Referenced by Reset(), RunCycle(), and WriteReg().
|
private |
Definition at line 94 of file snes.h.
Referenced by Reset(), RunCycle(), and WriteReg().
|
private |
Definition at line 95 of file snes.h.
Referenced by Reset(), RunCycle(), and WriteReg().
|
private |
Definition at line 96 of file snes.h.
Referenced by ReadReg(), Reset(), RunCycle(), and WriteReg().
|
private |
Definition at line 97 of file snes.h.
Referenced by Reset(), and RunCycle().
|
private |
Definition at line 98 of file snes.h.
Referenced by ReadReg(), Reset(), RunCycle(), and WriteReg().
|
private |
Definition at line 99 of file snes.h.
Referenced by ReadReg(), Reset(), RunCycle(), and RunFrame().
|
private |
Definition at line 102 of file snes.h.
Referenced by Reset(), and WriteReg().
|
private |
Definition at line 103 of file snes.h.
Referenced by ReadReg(), Reset(), and WriteReg().
|
private |
Definition at line 104 of file snes.h.
Referenced by Reset(), and WriteReg().
|
private |
Definition at line 105 of file snes.h.
Referenced by ReadReg(), Reset(), and WriteReg().
|
private |
Definition at line 108 of file snes.h.
Referenced by HandleInput(), Reset(), Rread(), SetButtonState(), and Write().
|
private |
Definition at line 109 of file snes.h.
Referenced by HandleInput(), Reset(), Rread(), SetButtonState(), and Write().
|
private |
Definition at line 110 of file snes.h.
Referenced by HandleInput(), ReadReg(), and Reset().
|
private |
Definition at line 111 of file snes.h.
Referenced by Reset(), RunCycle(), and WriteReg().
|
private |
Definition at line 112 of file snes.h.
Referenced by ReadReg(), Reset(), RunCycle(), and WriteReg().
|
private |
Definition at line 113 of file snes.h.
Referenced by ReadBBus(), ReadReg(), Reset(), and WriteReg().
|
private |
Definition at line 115 of file snes.h.
Referenced by GetAccessTime(), Reset(), and WriteReg().