@Override
    public int execute(int cycles) {
        konami_ICount[0] = cycles - konami.extra_cycles;
        konami.extra_cycles = 0;

        if ((konami.int_state & (KONAMI_CWAI | KONAMI_SYNC)) != 0) {
            konami_ICount[0] = 0;
        } else {
            do {
                konami.ppc = konami.pc;

                konami.ireg = ROP(konami.pc);
                konami.pc = konami.pc + 1 & 0xFFFF;

                if (konami_main[konami.ireg] != null) {
                    konami_main[konami.ireg].handler();
                } else {
                    System.out.println("Unsupported konami_main instruction 0x" + Integer.toHexString(konami.ireg));
                }

                konami_ICount[0] -= cycles1[konami.ireg];
            } while (konami_ICount[0] > 0);

            konami_ICount[0] -= konami.extra_cycles;
            konami.extra_cycles = 0;
        }

        return cycles - konami_ICount[0];
    }