+#else
+ for (;;) {
+ APU_EXECUTE(1);
+ if (CPU.Flags) {
+ if (CPU.Flags & NMI_FLAG) {
+ if (--CPU.NMICycleCount == 0) {
+ CPU.Flags &= ~NMI_FLAG;
+ if (CPU.WaitingForInterrupt) {
+ CPU.WaitingForInterrupt = FALSE;
+ CPU.PC++;
+ }
+ S9xOpcode_NMI ();
+ }
+ }
+
+ if (CPU.Flags & IRQ_PENDING_FLAG) {
+ if (CPU.IRQCycleCount == 0) {
+ if (CPU.WaitingForInterrupt) {
+ CPU.WaitingForInterrupt = FALSE;
+ CPU.PC++;
+ }
+ if (CPU.IRQActive && !Settings.DisableIRQ) {
+ if (!CheckFlag(IRQ))
+ S9xOpcode_IRQ ();
+ } else {
+ CPU.Flags &= ~IRQ_PENDING_FLAG;
+ }
+ } else {
+ CPU.IRQCycleCount--;
+ }
+ }
+
+ if (CPU.Flags & SCAN_KEYS_FLAG)
+ break;
+ }
+
+#ifdef CPU_SHUTDOWN
+ CPU.PCAtOpcodeStart = CPU.PC;
+#endif
+ CPU.Cycles += CPU.MemSpeed;
+
+ (*ICPU.S9xOpcodes[*CPU.PC++].S9xOpcode) ();
+
+#ifdef USE_SA1
+ if (SA1.Executing)
+ S9xSA1MainLoop ();
+#endif
+
+ DO_HBLANK_CHECK ();
+ }
+#endif