Exemple #1
0
//$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();
}
Exemple #3
0
//$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();
}
Exemple #5
0
//$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();
}