📄 codes.h
字号:
case DEC_H: ICount -= 4; M_DEC(R->HL.B.h);break;case DEC_L: ICount -= 4; M_DEC(R->HL.B.l);break;case DEC_A: ICount -= 4; M_DEC(R->AF.B.h);break;case DEC_xHL: ICount -= 12; I=RdZ80(R->HL.W);M_DEC(I);WrZ80(R->HL.W,I);break;case INC_B: ICount -= 4; M_INC(R->BC.B.h);break;case INC_C: ICount -= 4; M_INC(R->BC.B.l);break;case INC_D: ICount -= 4; M_INC(R->DE.B.h);break;case INC_E: ICount -= 4; M_INC(R->DE.B.l);break;case INC_H: ICount -= 4; M_INC(R->HL.B.h);break;case INC_L: ICount -= 4; M_INC(R->HL.B.l);break;case INC_A: ICount -= 4; M_INC(R->AF.B.h);break;case INC_xHL: ICount -= 12; I=RdZ80(R->HL.W);M_INC(I);WrZ80(R->HL.W,I);break;case RLCA: ICount -= 4; I=R->AF.B.h>>7; R->AF.B.h=(R->AF.B.h<<1)|I; R->AF.B.l=I; break;case RLA: ICount -= 4; I=R->AF.B.h>>7; R->AF.B.h=(R->AF.B.h<<1)|(R->AF.B.l&0x01); R->AF.B.l=I; break;case RRCA: ICount -= 4; I=R->AF.B.h&0x01; R->AF.B.h=(R->AF.B.h>>1)|(I<<7); R->AF.B.l=I; break;case RRA: ICount -= 4; I=R->AF.B.h&0x01; R->AF.B.h=(R->AF.B.h>>1)|(R->AF.B.l<<7); R->AF.B.l=I; break;case RST00: ICount -= 16; M_RST(0x0000);break;case RST08: ICount -= 16; M_RST(0x0008);break;case RST10: ICount -= 16; M_RST(0x0010);break;case RST18: ICount -= 16; M_RST(0x0018);break;case RST20: ICount -= 16; M_RST(0x0020);break;case RST28: ICount -= 16; M_RST(0x0028);break;case RST30: ICount -= 16; M_RST(0x0030);break;case RST38: ICount -= 16; M_RST(0x0038);break;case PUSH_BC: ICount -= 16; M_PUSH(BC);break;case PUSH_DE: ICount -= 16; M_PUSH(DE);break;case PUSH_HL: ICount -= 16; M_PUSH(HL);break;case PUSH_AF: ICount -= 16; WrZ80(--R->SP.W,R->AF.B.h); WrZ80(--R->SP.W,PZ80toGB[R->AF.B.l]); break;case POP_BC: ICount -= 12; M_POP(BC);break;case POP_DE: ICount -= 12; M_POP(DE);break;case POP_HL: ICount -= 12; M_POP(HL);break;case POP_AF: ICount -= 12; R->AF.B.l=PGBtoZ80[RdZ80(R->SP.W++)]; R->AF.B.h=RdZ80(R->SP.W++); break;case JP: ICount -= 16; M_JP;break;case JR: ICount -= 8; M_JR;break;case CALL: M_CALL;break;case RET: ICount -= 16; M_RET;break;case SCF: ICount -= 12; S(C_FLAG);R(/*N_FLAG|H_FLAG*/0x12);break;case CPL: ICount -= 4; R->AF.B.h=~R->AF.B.h;S(/*N_FLAG|H_FLAG*/0x12);break;case NOP: ICount -= 4; break;case STOP: ICount -= 4; /* High speed switch */ if(HIGHSPD&0x01) { R->IPeriod=HIGHSPD&0x80? R->IPeriod/2:R->IPeriod*2; HIGHSPD=(HIGHSPD&0xFE)^0x80; RPC.W++; break; } /* Wait for a keypress */ if((JOYPAD&0x0F)==0x0F) { RPC.W--; ICount=0; } break;case HALT: /* GameBoy CPU skips HALT with interrupts disabled */ /* In this case, it may also execute the opcode */ /* after HALT twice, but we do not emulate it here */ /* When HALT is used right after EI, it still */ /* HALTs the CPU (see Byelorussian Mig21 demo) */ ICount -= 4; if(R->IFF&0x21) { RPC.W--; R->IFF|=0x80; ICount=0; } break;case DI: ICount -= 4; /* If EI pending, cancel it */ if(R->IFF&0x20) ICount+=R->IBackup-1; /* Interrupts off, pending EI off */ R->IFF&=0xDE; break;case EI: ICount -= 4; if(!(R->IFF&0x01)) { R->IFF|=0x20; R->IBackup=ICount; ICount=1; } break;case CCF: ICount -= 4; R->AF.B.l^=C_FLAG;R(/*N_FLAG|H_FLAG*/0x12); R->AF.B.l|=R->AF.B.l&C_FLAG? 0:H_FLAG; break;case LD_B_B: ICount -= 4; R->BC.B.h=R->BC.B.h;break;case LD_C_B: ICount -= 4; R->BC.B.l=R->BC.B.h;break;case LD_D_B: ICount -= 4; R->DE.B.h=R->BC.B.h;break;case LD_E_B: ICount -= 4; R->DE.B.l=R->BC.B.h;break;case LD_H_B: ICount -= 4; R->HL.B.h=R->BC.B.h;break;case LD_L_B: ICount -= 4; R->HL.B.l=R->BC.B.h;break;case LD_A_B: ICount -= 4; R->AF.B.h=R->BC.B.h;break;case LD_xHL_B: ICount -= 8; WrZ80(R->HL.W,R->BC.B.h);break;case LD_B_C: ICount -= 4; R->BC.B.h=R->BC.B.l;break;case LD_C_C: ICount -= 4; R->BC.B.l=R->BC.B.l;break;case LD_D_C: ICount -= 4; R->DE.B.h=R->BC.B.l;break;case LD_E_C: ICount -= 4; R->DE.B.l=R->BC.B.l;break;case LD_H_C: ICount -= 4; R->HL.B.h=R->BC.B.l;break;case LD_L_C: ICount -= 4; R->HL.B.l=R->BC.B.l;break;case LD_A_C: ICount -= 4; R->AF.B.h=R->BC.B.l;break;case LD_xHL_C: ICount -= 8; WrZ80(R->HL.W,R->BC.B.l);break;case LD_B_D: ICount -= 4; R->BC.B.h=R->DE.B.h;break;case LD_C_D: ICount -= 4; R->BC.B.l=R->DE.B.h;break;case LD_D_D: ICount -= 4; R->DE.B.h=R->DE.B.h;break;case LD_E_D: ICount -= 4; R->DE.B.l=R->DE.B.h;break;case LD_H_D: ICount -= 4; R->HL.B.h=R->DE.B.h;break;case LD_L_D: ICount -= 4; R->HL.B.l=R->DE.B.h;break;case LD_A_D: ICount -= 4; R->AF.B.h=R->DE.B.h;break;case LD_xHL_D: ICount -= 8; WrZ80(R->HL.W,R->DE.B.h);break;case LD_B_E: ICount -= 4; R->BC.B.h=R->DE.B.l;break;case LD_C_E: ICount -= 4; R->BC.B.l=R->DE.B.l;break;case LD_D_E: ICount -= 4; R->DE.B.h=R->DE.B.l;break;case LD_E_E: ICount -= 4; R->DE.B.l=R->DE.B.l;break;case LD_H_E: ICount -= 4; R->HL.B.h=R->DE.B.l;break;case LD_L_E: ICount -= 4; R->HL.B.l=R->DE.B.l;break;case LD_A_E: ICount -= 4; R->AF.B.h=R->DE.B.l;break;case LD_xHL_E: ICount -= 8; WrZ80(R->HL.W,R->DE.B.l);break;case LD_B_H: ICount -= 4; R->BC.B.h=R->HL.B.h;break;case LD_C_H: ICount -= 4; R->BC.B.l=R->HL.B.h;break;case LD_D_H: ICount -= 4; R->DE.B.h=R->HL.B.h;break;case LD_E_H: ICount -= 4; R->DE.B.l=R->HL.B.h;break;case LD_H_H: ICount -= 4; R->HL.B.h=R->HL.B.h;break;case LD_L_H: ICount -= 4; R->HL.B.l=R->HL.B.h;break;case LD_A_H: ICount -= 4; R->AF.B.h=R->HL.B.h;break;case LD_xHL_H: ICount -= 8; WrZ80(R->HL.W,R->HL.B.h);break;case LD_B_L: ICount -= 4; R->BC.B.h=R->HL.B.l;break;case LD_C_L: ICount -= 4; R->BC.B.l=R->HL.B.l;break;case LD_D_L: ICount -= 4; R->DE.B.h=R->HL.B.l;break;case LD_E_L: ICount -= 4; R->DE.B.l=R->HL.B.l;break;case LD_H_L: ICount -= 4; R->HL.B.h=R->HL.B.l;break;case LD_L_L: ICount -= 4; R->HL.B.l=R->HL.B.l;break;case LD_A_L: ICount -= 4; R->AF.B.h=R->HL.B.l;break;case LD_xHL_L: ICount -= 8; WrZ80(R->HL.W,R->HL.B.l);break;case LD_B_A: ICount -= 4; R->BC.B.h=R->AF.B.h;break;case LD_C_A: ICount -= 4; R->BC.B.l=R->AF.B.h;break;case LD_D_A: ICount -= 4; R->DE.B.h=R->AF.B.h;break;case LD_E_A: ICount -= 4; R->DE.B.l=R->AF.B.h;break;case LD_H_A: ICount -= 4; R->HL.B.h=R->AF.B.h;break;case LD_L_A: ICount -= 4; R->HL.B.l=R->AF.B.h;break;case LD_A_A: ICount -= 4; R->AF.B.h=R->AF.B.h;break;case LD_xHL_A: ICount -= 8; WrZ80(R->HL.W,R->AF.B.h);break;case LD_xBC_A: ICount -= 8; WrZ80(R->BC.W,R->AF.B.h);break;case LD_xDE_A: ICount -= 8; WrZ80(R->DE.W,R->AF.B.h);break;case LD_B_xHL: ICount -= 8; R->BC.B.h=RdZ80(R->HL.W);break;case LD_C_xHL: ICount -= 8; R->BC.B.l=RdZ80(R->HL.W);break;case LD_D_xHL: ICount -= 8; R->DE.B.h=RdZ80(R->HL.W);break;case LD_E_xHL: ICount -= 8; R->DE.B.l=RdZ80(R->HL.W);break;case LD_H_xHL: ICount -= 8; R->HL.B.h=RdZ80(R->HL.W);break;case LD_L_xHL: ICount -= 8; R->HL.B.l=RdZ80(R->HL.W);break;case LD_A_xHL: ICount -= 8; R->AF.B.h=RdZ80(R->HL.W);break;case LD_B_BYTE: ICount -= 8; R->BC.B.h=RdZ80(RPC.W++);break;case LD_C_BYTE: ICount -= 8; R->BC.B.l=RdZ80(RPC.W++);break;case LD_D_BYTE: ICount -= 8; R->DE.B.h=RdZ80(RPC.W++);break;case LD_E_BYTE: ICount -= 8; R->DE.B.l=RdZ80(RPC.W++);break;case LD_H_BYTE: ICount -= 8; R->HL.B.h=RdZ80(RPC.W++);break;case LD_L_BYTE: ICount -= 8; R->HL.B.l=RdZ80(RPC.W++);break;case LD_A_BYTE: ICount -= 8; R->AF.B.h=RdZ80(RPC.W++);break;case LD_xHL_BYTE: ICount -= 12; WrZ80(R->HL.W,RdZ80(RPC.W++));break;case DAA: ICount -= 4; J.W=R->AF.B.h; if(R->AF.B.l&C_FLAG) J.W|=256; if(R->AF.B.l&H_FLAG) J.W|=512; if(R->AF.B.l&N_FLAG) J.W|=1024; R->AF.W=PDAATable[J.W]; break;default: ICount-=4; break;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -