yaze 0.2.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::emu::MemoryImpl Class Reference

Implementation of the Memory interface for emulating memory in a SNES system. More...

#include <memory.h>

Inheritance diagram for yaze::emu::MemoryImpl:
Collaboration diagram for yaze::emu::MemoryImpl:

Public Member Functions

void Initialize (const std::vector< uint8_t > &romData, bool verbose=false)
 
uint16_t GetHeaderOffset ()
 
uint8_t cart_read (uint8_t bank, uint16_t adr)
 
void cart_write (uint8_t bank, uint16_t adr, uint8_t val)
 
uint8_t cart_readLorom (uint8_t bank, uint16_t adr)
 
void cart_writeLorom (uint8_t bank, uint16_t adr, uint8_t val)
 
uint8_t cart_readHirom (uint8_t bank, uint16_t adr)
 
uint8_t cart_readExHirom (uint8_t bank, uint16_t adr)
 
void cart_writeHirom (uint8_t bank, uint16_t adr, uint8_t val)
 
uint8_t ReadByte (uint32_t address) const override
 
uint16_t ReadWord (uint32_t address) const override
 
uint32_t ReadWordLong (uint32_t address) const override
 
std::vector< uint8_t > ReadByteVector (uint32_t address, uint16_t length) const override
 
void WriteByte (uint32_t address, uint8_t value) override
 
void WriteWord (uint32_t address, uint16_t value) override
 
void WriteLong (uint32_t address, uint32_t value) override
 
void PushByte (uint8_t value) override
 
uint8_t PopByte () override
 
void PushWord (uint16_t value) override
 
uint16_t PopWord () override
 
void PushLong (uint32_t value) override
 
uint32_t PopLong () override
 
uint16_t SP () const override
 
auto mutable_sp () -> uint16_t &
 
void SetSP (uint16_t value) override
 
void ClearMemory () override
 
uint8_t at (int i) const override
 
uint8_t operator[] (int i) const override
 
auto size () const
 
auto begin () const
 
auto end () const
 
auto data () const
 
void set_open_bus (uint8_t value) override
 
auto open_bus () const -> uint8_t override
 
auto hdma_init_requested () const -> bool override
 
auto hdma_run_requested () const -> bool override
 
void init_hdma_request () override
 
void run_hdma_request () override
 
void set_hdma_run_requested (bool value) override
 
void set_hdma_init_requested (bool value) override
 
void set_pal_timing (bool value) override
 
void set_h_pos (uint16_t value) override
 
void set_v_pos (uint16_t value) override
 
auto h_pos () const -> uint16_t override
 
auto v_pos () const -> uint16_t override
 
auto pal_timing () const -> bool override
 
auto dma_state () -> uint8_t &
 
void set_dma_state (uint8_t value)
 
auto dma_channels () -> DmaChannel *
 
- Public Member Functions inherited from yaze::emu::Memory
virtual ~Memory ()=default
 

Public Attributes

std::vector< uint8_t > rom_
 
std::vector< uint8_t > ram_
 

Private Member Functions

uint32_t GetMappedAddress (uint32_t address) const
 

Private Attributes

bool verbose_ = false
 
bool hdma_run_requested_ = false
 
bool hdma_init_requested_ = false
 
bool pal_timing_ = false
 
uint32_t rom_size_
 
uint32_t sram_size_
 
uint16_t h_pos_ = 0
 
uint16_t v_pos_ = 0
 
uint8_t dma_state_ = 0
 
uint8_t open_bus_ = 0
 
uint16_t SP_ = 0
 
uint8_t type_ = 1
 
DmaChannel channel [8]
 
std::vector< uint8_t > memory_
 

Detailed Description

Implementation of the Memory interface for emulating memory in a SNES system.

Definition at line 118 of file memory.h.

Member Function Documentation

◆ Initialize()

void yaze::emu::MemoryImpl::Initialize ( const std::vector< uint8_t > & romData,
bool verbose = false )

Definition at line 9 of file memory.cc.

References memory_, ram_, rom_, rom_size_, sram_size_, type_, and verbose_.

◆ GetHeaderOffset()

uint16_t yaze::emu::MemoryImpl::GetHeaderOffset ( )
inline

Definition at line 122 of file memory.h.

References memory_.

◆ cart_read()

uint8_t yaze::emu::MemoryImpl::cart_read ( uint8_t bank,
uint16_t adr )

Definition at line 44 of file memory.cc.

References cart_readExHirom(), cart_readHirom(), cart_readLorom(), open_bus_, and type_.

Here is the call graph for this function:

◆ cart_write()

void yaze::emu::MemoryImpl::cart_write ( uint8_t bank,
uint16_t adr,
uint8_t val )

Definition at line 58 of file memory.cc.

References cart_writeHirom(), cart_writeLorom(), and type_.

Here is the call graph for this function:

◆ cart_readLorom()

uint8_t yaze::emu::MemoryImpl::cart_readLorom ( uint8_t bank,
uint16_t adr )

Definition at line 74 of file memory.cc.

References open_bus_, ram_, rom_, rom_size_, and sram_size_.

Referenced by cart_read().

◆ cart_writeLorom()

void yaze::emu::MemoryImpl::cart_writeLorom ( uint8_t bank,
uint16_t adr,
uint8_t val )

Definition at line 88 of file memory.cc.

References ram_, and sram_size_.

Referenced by cart_write().

◆ cart_readHirom()

uint8_t yaze::emu::MemoryImpl::cart_readHirom ( uint8_t bank,
uint16_t adr )

Definition at line 96 of file memory.cc.

References open_bus_, ram_, rom_, rom_size_, and sram_size_.

Referenced by cart_read().

◆ cart_readExHirom()

uint8_t yaze::emu::MemoryImpl::cart_readExHirom ( uint8_t bank,
uint16_t adr )

Definition at line 109 of file memory.cc.

References open_bus_, ram_, rom_, rom_size_, and sram_size_.

Referenced by cart_read().

◆ cart_writeHirom()

void yaze::emu::MemoryImpl::cart_writeHirom ( uint8_t bank,
uint16_t adr,
uint8_t val )

Definition at line 124 of file memory.cc.

References ram_, and sram_size_.

Referenced by cart_write().

◆ ReadByte()

uint8_t yaze::emu::MemoryImpl::ReadByte ( uint32_t address) const
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 154 of file memory.h.

References GetMappedAddress(), and memory_.

Here is the call graph for this function:

◆ ReadWord()

uint16_t yaze::emu::MemoryImpl::ReadWord ( uint32_t address) const
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 158 of file memory.h.

References GetMappedAddress(), and memory_.

Here is the call graph for this function:

◆ ReadWordLong()

uint32_t yaze::emu::MemoryImpl::ReadWordLong ( uint32_t address) const
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 163 of file memory.h.

References GetMappedAddress(), and memory_.

Here is the call graph for this function:

◆ ReadByteVector()

std::vector< uint8_t > yaze::emu::MemoryImpl::ReadByteVector ( uint32_t address,
uint16_t length ) const
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 169 of file memory.h.

References GetMappedAddress(), and memory_.

Here is the call graph for this function:

◆ WriteByte()

void yaze::emu::MemoryImpl::WriteByte ( uint32_t address,
uint8_t value )
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 176 of file memory.h.

References GetMappedAddress(), and memory_.

Here is the call graph for this function:

◆ WriteWord()

void yaze::emu::MemoryImpl::WriteWord ( uint32_t address,
uint16_t value )
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 180 of file memory.h.

References GetMappedAddress(), and memory_.

Here is the call graph for this function:

◆ WriteLong()

void yaze::emu::MemoryImpl::WriteLong ( uint32_t address,
uint32_t value )
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 185 of file memory.h.

References GetMappedAddress(), and memory_.

Here is the call graph for this function:

◆ PushByte()

void yaze::emu::MemoryImpl::PushByte ( uint8_t value)
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 193 of file memory.h.

References memory_, and SP_.

◆ PopByte()

uint8_t yaze::emu::MemoryImpl::PopByte ( )
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 203 of file memory.h.

References memory_, and SP_.

◆ PushWord()

void yaze::emu::MemoryImpl::PushWord ( uint16_t value)
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 213 of file memory.h.

References yaze::emu::Memory::PushByte().

Here is the call graph for this function:

◆ PopWord()

uint16_t yaze::emu::MemoryImpl::PopWord ( )
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 218 of file memory.h.

References yaze::emu::Memory::PopByte().

Here is the call graph for this function:

◆ PushLong()

void yaze::emu::MemoryImpl::PushLong ( uint32_t value)
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 224 of file memory.h.

References yaze::emu::Memory::PushByte().

Here is the call graph for this function:

◆ PopLong()

uint32_t yaze::emu::MemoryImpl::PopLong ( )
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 230 of file memory.h.

References yaze::emu::Memory::PopByte().

Here is the call graph for this function:

◆ SP()

uint16_t yaze::emu::MemoryImpl::SP ( ) const
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 239 of file memory.h.

References SP_.

◆ mutable_sp()

auto yaze::emu::MemoryImpl::mutable_sp ( ) -> uint16_t &
inline

Definition at line 240 of file memory.h.

References SP_.

◆ SetSP()

void yaze::emu::MemoryImpl::SetSP ( uint16_t value)
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 241 of file memory.h.

References SP_.

◆ ClearMemory()

void yaze::emu::MemoryImpl::ClearMemory ( )
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 242 of file memory.h.

References memory_.

◆ at()

uint8_t yaze::emu::MemoryImpl::at ( int i) const
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 244 of file memory.h.

References memory_.

◆ operator[]()

uint8_t yaze::emu::MemoryImpl::operator[] ( int i) const
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 245 of file memory.h.

References memory_.

◆ size()

auto yaze::emu::MemoryImpl::size ( ) const
inline

Definition at line 253 of file memory.h.

References memory_.

◆ begin()

auto yaze::emu::MemoryImpl::begin ( ) const
inline

Definition at line 254 of file memory.h.

References memory_.

◆ end()

auto yaze::emu::MemoryImpl::end ( ) const
inline

Definition at line 255 of file memory.h.

References memory_.

◆ data()

auto yaze::emu::MemoryImpl::data ( ) const
inline

Definition at line 256 of file memory.h.

References memory_.

◆ set_open_bus()

void yaze::emu::MemoryImpl::set_open_bus ( uint8_t value)
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 257 of file memory.h.

References open_bus_.

◆ open_bus()

auto yaze::emu::MemoryImpl::open_bus ( ) const -> uint8_t
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 258 of file memory.h.

References open_bus_.

Referenced by yaze::emu::ReadDma(), and yaze::emu::TransferByte().

◆ hdma_init_requested()

auto yaze::emu::MemoryImpl::hdma_init_requested ( ) const -> bool
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 259 of file memory.h.

References hdma_init_requested_.

Referenced by yaze::emu::HandleDma(), and yaze::emu::WaitCycle().

◆ hdma_run_requested()

auto yaze::emu::MemoryImpl::hdma_run_requested ( ) const -> bool
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 262 of file memory.h.

References hdma_run_requested_.

Referenced by yaze::emu::HandleDma(), and yaze::emu::WaitCycle().

◆ init_hdma_request()

void yaze::emu::MemoryImpl::init_hdma_request ( )
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 265 of file memory.h.

References hdma_init_requested_.

◆ run_hdma_request()

void yaze::emu::MemoryImpl::run_hdma_request ( )
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 266 of file memory.h.

References hdma_run_requested_.

◆ set_hdma_run_requested()

void yaze::emu::MemoryImpl::set_hdma_run_requested ( bool value)
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 267 of file memory.h.

References hdma_run_requested_.

Referenced by yaze::emu::DoHdma(), and yaze::emu::ResetDma().

◆ set_hdma_init_requested()

void yaze::emu::MemoryImpl::set_hdma_init_requested ( bool value)
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 270 of file memory.h.

References hdma_init_requested_.

Referenced by yaze::emu::InitHdma(), and yaze::emu::ResetDma().

◆ set_pal_timing()

void yaze::emu::MemoryImpl::set_pal_timing ( bool value)
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 273 of file memory.h.

References pal_timing_.

◆ set_h_pos()

void yaze::emu::MemoryImpl::set_h_pos ( uint16_t value)
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 274 of file memory.h.

References h_pos_.

◆ set_v_pos()

void yaze::emu::MemoryImpl::set_v_pos ( uint16_t value)
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 275 of file memory.h.

References v_pos_.

◆ h_pos()

auto yaze::emu::MemoryImpl::h_pos ( ) const -> uint16_t
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 276 of file memory.h.

References h_pos_.

◆ v_pos()

auto yaze::emu::MemoryImpl::v_pos ( ) const -> uint16_t
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 277 of file memory.h.

References v_pos_.

◆ pal_timing()

auto yaze::emu::MemoryImpl::pal_timing ( ) const -> bool
inlineoverridevirtual

Implements yaze::emu::Memory.

Definition at line 278 of file memory.h.

References pal_timing_.

◆ dma_state()

auto yaze::emu::MemoryImpl::dma_state ( ) -> uint8_t &
inline

Definition at line 280 of file memory.h.

References dma_state_.

Referenced by yaze::emu::HandleDma().

◆ set_dma_state()

void yaze::emu::MemoryImpl::set_dma_state ( uint8_t value)
inline

Definition at line 281 of file memory.h.

References dma_state_.

Referenced by yaze::emu::HandleDma(), yaze::emu::ResetDma(), and yaze::emu::StartDma().

◆ dma_channels()

auto yaze::emu::MemoryImpl::dma_channels ( ) -> DmaChannel *
inline

◆ GetMappedAddress()

uint32_t yaze::emu::MemoryImpl::GetMappedAddress ( uint32_t address) const
private

Member Data Documentation

◆ rom_

std::vector<uint8_t> yaze::emu::MemoryImpl::rom_

Definition at line 285 of file memory.h.

Referenced by cart_readExHirom(), cart_readHirom(), cart_readLorom(), and Initialize().

◆ ram_

std::vector<uint8_t> yaze::emu::MemoryImpl::ram_

◆ verbose_

bool yaze::emu::MemoryImpl::verbose_ = false
private

Definition at line 291 of file memory.h.

Referenced by Initialize().

◆ hdma_run_requested_

bool yaze::emu::MemoryImpl::hdma_run_requested_ = false
private

Definition at line 294 of file memory.h.

Referenced by hdma_run_requested(), run_hdma_request(), and set_hdma_run_requested().

◆ hdma_init_requested_

bool yaze::emu::MemoryImpl::hdma_init_requested_ = false
private

Definition at line 295 of file memory.h.

Referenced by hdma_init_requested(), init_hdma_request(), and set_hdma_init_requested().

◆ pal_timing_

bool yaze::emu::MemoryImpl::pal_timing_ = false
private

Definition at line 297 of file memory.h.

Referenced by pal_timing(), and set_pal_timing().

◆ rom_size_

uint32_t yaze::emu::MemoryImpl::rom_size_
private

Definition at line 300 of file memory.h.

Referenced by cart_readExHirom(), cart_readHirom(), cart_readLorom(), and Initialize().

◆ sram_size_

uint32_t yaze::emu::MemoryImpl::sram_size_
private

◆ h_pos_

uint16_t yaze::emu::MemoryImpl::h_pos_ = 0
private

Definition at line 304 of file memory.h.

Referenced by h_pos(), and set_h_pos().

◆ v_pos_

uint16_t yaze::emu::MemoryImpl::v_pos_ = 0
private

Definition at line 305 of file memory.h.

Referenced by set_v_pos(), and v_pos().

◆ dma_state_

uint8_t yaze::emu::MemoryImpl::dma_state_ = 0
private

Definition at line 308 of file memory.h.

Referenced by dma_state(), and set_dma_state().

◆ open_bus_

uint8_t yaze::emu::MemoryImpl::open_bus_ = 0
private

◆ SP_

uint16_t yaze::emu::MemoryImpl::SP_ = 0
private

Definition at line 314 of file memory.h.

Referenced by mutable_sp(), PopByte(), PushByte(), SetSP(), and SP().

◆ type_

uint8_t yaze::emu::MemoryImpl::type_ = 1
private

Definition at line 317 of file memory.h.

Referenced by cart_read(), cart_write(), and Initialize().

◆ channel

DmaChannel yaze::emu::MemoryImpl::channel[8]
private

Definition at line 320 of file memory.h.

Referenced by dma_channels().

◆ memory_

std::vector<uint8_t> yaze::emu::MemoryImpl::memory_
private

The documentation for this class was generated from the following files: