📄 codes.h
字号:
/* Copyright 2001, ESS Technology, Inc. /* SCCSID @(#)codes.h 1.1 03/13/02 *//* Based on codes.h 1.7 12/07/01 *//* * $Log$ *//** VGB: portable GameBoy emulator ***************************//** **//** Codes.h **//** **//** This file contains implementation for the main table of **//** Z80 commands. It is included from Z80.c. **//** **//** Copyright (C) Marat Fayzullin 1994-2001 **//** The contents of this file are property of Marat **//** Fayzullin and should only be used as agreed with **//** him. The file is confidential. Absolutely no **//** distribution allowed. **//*************************************************************/#ifdef VGBcase 0x08: ICount -= 20; J.B.l=RdZ80(RPC.W++);J.B.h=RdZ80(RPC.W++); WrZ80(J.W++,R->SP.B.l);WrZ80(J.W,R->SP.B.h); break;case 0x22: ICount -= 12; WrZ80(R->HL.W++,R->AF.B.h);break;case 0x2A: ICount -= 8; R->AF.B.h=RdZ80(R->HL.W++);break;case 0x32: ICount -= 12; WrZ80(R->HL.W--,R->AF.B.h);break;case 0x3A: ICount -= 8; R->AF.B.h=RdZ80(R->HL.W--);break;case 0xD9: ICount -= 16; if(!(R->IFF&0x01)) { R->IFF|=0x20; R->IBackup=ICount; ICount=1; } M_RET; break;case 0xE0: ICount -= 12; WrZ80(0xFF00+RdZ80(RPC.W++),R->AF.B.h);break;case 0xE2: ICount -= 8; WrZ80(0xFF00+R->BC.B.l,R->AF.B.h);break;case 0xE8: ICount -= 16; R->SP.W+=(signed char)RdZ80(RPC.W++);break;case 0xEA: ICount -= 16; J.B.l=RdZ80(RPC.W++); J.B.h=RdZ80(RPC.W++); WrZ80(J.W,R->AF.B.h); break;case 0xF0: ICount -= 12; R->AF.B.h=RdZ80(0xFF00+RdZ80(RPC.W++));break;case 0xF2: ICount -= 8; R->AF.B.h=RdZ80(0xFF00+R->BC.B.l);break;case 0xF8: ICount -= 12; R->HL.W=R->SP.W+(signed char)RdZ80(RPC.W++);break;case 0xFA: ICount -= 16; J.B.l=RdZ80(RPC.W++); J.B.h=RdZ80(RPC.W++); R->AF.B.h=RdZ80(J.W); break;case JR_NZ: ICount -= 8; if(R->AF.B.l&Z_FLAG) RPC.W++; else { ICount-=4;M_JR; } break;case JR_NC: ICount -= 8; if(R->AF.B.l&C_FLAG) RPC.W++; else { ICount-=4;M_JR; } break;case JR_Z: ICount -= 12; if(R->AF.B.l&Z_FLAG) { ICount-=4;M_JR; } else RPC.W++; break;case JR_C: ICount -= 8; if(R->AF.B.l&C_FLAG) { ICount-=4;M_JR; } else RPC.W++; break;case JP_NZ: ICount -= 12; if(R->AF.B.l&Z_FLAG) RPC.W+=2; else { ICount-=4;M_JP; } break;case JP_NC: ICount -= 12; if(R->AF.B.l&C_FLAG) RPC.W+=2; else { ICount-=4;M_JP; } break;case JP_Z: ICount -= 12; if(R->AF.B.l&Z_FLAG) { ICount-=4;M_JP; } else RPC.W+=2; break;case JP_C: ICount -= 12; if(R->AF.B.l&C_FLAG) { ICount-=4;M_JP; } else RPC.W+=2; break;case RET_NZ: ICount -= 8; if(!(R->AF.B.l&Z_FLAG)) { ICount-=12;M_RET; } break;case RET_NC: ICount -= 8; if(!(R->AF.B.l&C_FLAG)) { ICount-=12;M_RET; } break;case RET_Z: ICount -= 8; if(R->AF.B.l&Z_FLAG) { ICount-=12;M_RET; } break;case RET_C: ICount -= 8; if(R->AF.B.l&C_FLAG) { ICount-=12;M_RET; } break;case CALL_NZ: ICount -= 12; if(R->AF.B.l&Z_FLAG) RPC.W+=2; else { ICount-=12;M_CALL; } break;case CALL_NC: ICount -= 12; if(R->AF.B.l&C_FLAG) RPC.W+=2; else { ICount-=12;M_CALL; } break;case CALL_Z: ICount -= 12; if(R->AF.B.l&Z_FLAG) { ICount-=12;M_CALL; } else RPC.W+=2; break;case CALL_C: ICount -= 12; if(R->AF.B.l&C_FLAG) { ICount-=12;M_CALL; } else RPC.W+=2; break;case ADD_B: ICount -= 4; M_ADD(R->BC.B.h);break;case ADD_C: ICount -= 4; M_ADD(R->BC.B.l);break;case ADD_D: ICount -= 4; M_ADD(R->DE.B.h);break;case ADD_E: ICount -= 4; M_ADD(R->DE.B.l);break;case ADD_H: ICount -= 4; M_ADD(R->HL.B.h);break;case ADD_L: ICount -= 4; M_ADD(R->HL.B.l);break;case ADD_A: ICount -= 4; M_ADD(R->AF.B.h);break;case ADD_xHL: ICount -= 8; I=RdZ80(R->HL.W);M_ADD(I);break;case ADD_BYTE: ICount -= 8; I=RdZ80(RPC.W++);M_ADD(I);break;case SUB_B: ICount -= 4; M_SUB(R->BC.B.h);break;case SUB_C: ICount -= 4; M_SUB(R->BC.B.l);break;case SUB_D: ICount -= 4; M_SUB(R->DE.B.h);break;case SUB_E: ICount -= 4; M_SUB(R->DE.B.l);break;case SUB_H: ICount -= 4; M_SUB(R->HL.B.h);break;case SUB_L: ICount -= 4; M_SUB(R->HL.B.l);break;case SUB_A: ICount -= 4; R->AF.B.h=0;R->AF.B.l=/*N_FLAG|Z_FLAG*/0x42;break;case SUB_xHL: ICount -= 8; I=RdZ80(R->HL.W);M_SUB(I);break;case SUB_BYTE: ICount -= 4; I=RdZ80(RPC.W++);M_SUB(I);break;case AND_B: ICount -= 4; M_AND(R->BC.B.h);break;case AND_C: ICount -= 4; M_AND(R->BC.B.l);break;case AND_D: ICount -= 4; M_AND(R->DE.B.h);break;case AND_E: ICount -= 4; M_AND(R->DE.B.l);break;case AND_H: ICount -= 4; M_AND(R->HL.B.h);break;case AND_L: ICount -= 4; M_AND(R->HL.B.l);break;case AND_A: ICount -= 4; M_AND(R->AF.B.h);break;case AND_xHL: ICount -= 8; I=RdZ80(R->HL.W);M_AND(I);break;case AND_BYTE: ICount -= 8; I=RdZ80(RPC.W++);M_AND(I);break;case OR_B: ICount -= 4; M_OR(R->BC.B.h);break;case OR_C: ICount -= 4; M_OR(R->BC.B.l);break;case OR_D: ICount -= 4; M_OR(R->DE.B.h);break;case OR_E: ICount -= 4; M_OR(R->DE.B.l);break;case OR_H: ICount -= 4; M_OR(R->HL.B.h);break;case OR_L: ICount -= 4; M_OR(R->HL.B.l);break;case OR_A: ICount -= 4; M_OR(R->AF.B.h);break;case OR_xHL: ICount -= 8; I=RdZ80(R->HL.W);M_OR(I);break;case OR_BYTE: ICount -= 8; I=RdZ80(RPC.W++);M_OR(I);break;case ADC_B: ICount -= 4; M_ADC(R->BC.B.h);break;case ADC_C: ICount -= 4; M_ADC(R->BC.B.l);break;case ADC_D: ICount -= 4; M_ADC(R->DE.B.h);break;case ADC_E: ICount -= 4; M_ADC(R->DE.B.l);break;case ADC_H: ICount -= 4; M_ADC(R->HL.B.h);break;case ADC_L: ICount -= 4; M_ADC(R->HL.B.l);break;case ADC_A: ICount -= 4; M_ADC(R->AF.B.h);break;case ADC_xHL: ICount -= 8; I=RdZ80(R->HL.W);M_ADC(I);break;case ADC_BYTE: ICount -= 8; I=RdZ80(RPC.W++);M_ADC(I);break;case SBC_B: ICount -= 4; M_SBC(R->BC.B.h);break;case SBC_C: ICount -= 4; M_SBC(R->BC.B.l);break;case SBC_D: ICount -= 4; M_SBC(R->DE.B.h);break;case SBC_E: ICount -= 4; M_SBC(R->DE.B.l);break;case SBC_H: ICount -= 4; M_SBC(R->HL.B.h);break;case SBC_L: ICount -= 4; M_SBC(R->HL.B.l);break;case SBC_A: ICount -= 4; M_SBC(R->AF.B.h);break;case SBC_xHL: ICount -= 8; I=RdZ80(R->HL.W);M_SBC(I);break;case SBC_BYTE: ICount -= 8; I=RdZ80(RPC.W++);M_SBC(I);break;case XOR_B: ICount -= 4; M_XOR(R->BC.B.h);break;case XOR_C: ICount -= 4; M_XOR(R->BC.B.l);break;case XOR_D: ICount -= 4; M_XOR(R->DE.B.h);break;case XOR_E: ICount -= 4; M_XOR(R->DE.B.l);break;case XOR_H: ICount -= 4; M_XOR(R->HL.B.h);break;case XOR_L: ICount -= 4; M_XOR(R->HL.B.l);break;case XOR_A: ICount -= 4; R->AF.B.h=0;R->AF.B.l=Z_FLAG;break;case XOR_xHL: ICount -= 8; I=RdZ80(R->HL.W);M_XOR(I);break;case XOR_BYTE: ICount -= 8; I=RdZ80(RPC.W++);M_XOR(I);break;case CP_B: ICount -= 4; M_CP(R->BC.B.h);break;case CP_C: ICount -= 4; M_CP(R->BC.B.l);break;case CP_D: ICount -= 4; M_CP(R->DE.B.h);break;case CP_E: ICount -= 4; M_CP(R->DE.B.l);break;case CP_H: ICount -= 4; M_CP(R->HL.B.h);break;case CP_L: ICount -= 4; M_CP(R->HL.B.l);break;case CP_A: ICount -= 4; R->AF.B.l=/*N_FLAG|Z_FLAG*/0x42;break;case CP_xHL: ICount -= 8; I=RdZ80(R->HL.W);M_CP(I);break;case CP_BYTE: ICount -= 8; I=RdZ80(RPC.W++);M_CP(I);break; case LD_BC_WORD: ICount -= 12; M_LDWORD(BC);break;case LD_DE_WORD: ICount -= 12; M_LDWORD(DE);break;case LD_HL_WORD: ICount -= 12; M_LDWORD(HL);break;case LD_SP_WORD: ICount -= 12; M_LDWORD(SP);break;case LD_PC_HL: ICount -= 16; RPC.W=R->HL.W;break;case LD_SP_HL: ICount -= 12; R->SP.W=R->HL.W;break;case LD_A_xBC: ICount -= 8; R->AF.B.h=RdZ80(R->BC.W);break;case LD_A_xDE: ICount -= 8; R->AF.B.h=RdZ80(R->DE.W);break;case ADD_HL_BC: ICount -= 8; M_ADDW(HL,BC);break;case ADD_HL_DE: ICount -= 8; M_ADDW(HL,DE);break;case ADD_HL_HL: ICount -= 8; M_ADDW(HL,HL);break;case ADD_HL_SP: ICount -= 8; M_ADDW(HL,SP);break;case DEC_BC: ICount -= 8; R->BC.W--;break;case DEC_DE: ICount -= 8; R->DE.W--;break;case DEC_HL: ICount -= 8; R->HL.W--;break;case DEC_SP: ICount -= 8; R->SP.W--;break;case INC_BC: ICount -= 8; R->BC.W++;break;case INC_DE: ICount -= 8; R->DE.W++;break;case INC_HL: ICount -= 8; R->HL.W++;break;case INC_SP: ICount -= 8; R->SP.W++;break;case DEC_B: ICount -= 4; M_DEC(R->BC.B.h);break;case DEC_C: ICount -= 4; M_DEC(R->BC.B.l);break;case DEC_D: ICount -= 4; M_DEC(R->DE.B.h);break;case DEC_E: ICount -= 4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -