void SuperFX::enter() { while(true) { if(scheduler.sync == Scheduler::SynchronizeMode::All) { scheduler.exit(Scheduler::ExitReason::SynchronizeEvent); } if(regs.sfr.g == 0) { add_clocks(6); continue; } op_exec(peekpipe()); if(r15_modified == false) regs.r[15]++; } }
void SuperFX::enter() { while(true) { if(scheduler.sync.i == Scheduler::SynchronizeMode::All) { scheduler.exit(Scheduler::ExitReason::SynchronizeEvent); } if(regs.sfr.g == 0) { add_clocks(6); synchronize_cpu(); continue; } (this->*opcode_table[(regs.sfr & 0x0300) + peekpipe()])(); if(r15_modified == false) regs.r[15]++; if(++instruction_counter >= 128) { instruction_counter = 0; synchronize_cpu(); } } }