void NesCpuBase::reset() { u8 lo = nesCpuRead(ResetVectorAddress ); u8 hi = nesCpuRead(ResetVectorAddress+1); m_stateRegs.pc = lo|(hi<<8); m_stateRegs.a = 0; m_stateRegs.y = 0; m_stateRegs.x = 0; m_stateRegs.s = 0xff; m_stateRegs.p = IrqDisable; }
bool NesApuDMChannel::clockDma() { if (!(m_dmaLength&7)) { m_buffer = nesCpuRead(m_address); m_address = 0x8000 | (m_address+1); } m_dmaLength--; if (!m_dmaLength) { if (m_looping) restart(); else return false; } return true; }
static inline u16 READ16(u16 address) { u16 ret = nesCpuRead(address); ret |= nesCpuRead(address+1) << 8; return ret; }
static inline u8 READ8(u16 address) { return nesCpuRead(address); }