//$40-4b(alt0): ldw (rN) //$40-4b(alt1): ldb (rN) void SuperFX::op_ldw_ldb(unsigned n) { regs.ramaddr = regs.r[n]; unsigned data = rambuffer_read(regs.ramaddr); if(!regs.sfr.alt1) data |= rambuffer_read(regs.ramaddr ^ 1) << 8; regs.dr() = data; regs.reset(); }
auto GSU::op_ldw_ir() { regs.ramaddr = regs.r[n]; uint16_t data; data = rambuffer_read(regs.ramaddr ^ 0) << 0; data |= rambuffer_read(regs.ramaddr ^ 1) << 8; regs.dr() = data; regs.reset(); }
//$40-4b(alt0): ldw (rN) template<int n> alwaysinline void SuperFX::op_ldw_ir() { regs.ramaddr = regs.r[n]; uint16_t data; data = rambuffer_read(regs.ramaddr ^ 0) << 0; data |= rambuffer_read(regs.ramaddr ^ 1) << 8; regs.dr() = data; regs.reset(); }
auto GSU::op_ldb_ir() { regs.ramaddr = regs.r[n]; regs.dr() = rambuffer_read(regs.ramaddr); regs.reset(); }
//$40-4b(alt1): ldb (rN) template<int n> alwaysinline void SuperFX::op_ldb_ir() { regs.ramaddr = regs.r[n]; regs.dr() = rambuffer_read(regs.ramaddr); regs.reset(); }