diff --git a/src/common/Port.h b/src/common/Port.h index 1d5c3554..eba80d7a 100644 --- a/src/common/Port.h +++ b/src/common/Port.h @@ -1,6 +1,8 @@ #ifndef PORT_H #define PORT_H +#include + #ifdef __CELLOS_LV2__ /* PlayStation3 */ #include @@ -12,7 +14,7 @@ #endif // swaps a 16-bit value -static inline uint16_t swap16(u16 v) +static inline uint16_t swap16(uint16_t v) { return (v << 8) | (v >> 8); } diff --git a/src/gb/gb.h b/src/gb/gb.h index 9ad68997..0244589d 100644 --- a/src/gb/gb.h +++ b/src/gb/gb.h @@ -1,10 +1,10 @@ #ifndef GB_H #define GB_H -#define C_FLAG 0x10 -#define H_FLAG 0x20 -#define N_FLAG 0x40 -#define Z_FLAG 0x80 +const int GB_C_FLAG = 0x10; +const int GB_H_FLAG = 0x20; +const int GB_N_FLAG = 0x40; +const int GB_Z_FLAG = 0x80; typedef union { struct { diff --git a/src/gb/gbCodes.h b/src/gb/gbCodes.h index 10a85d6c..523079a9 100644 --- a/src/gb/gbCodes.h +++ b/src/gb/gbCodes.h @@ -17,12 +17,12 @@ break; case 0x04: // INC B BC.B.B1++; -AF.B.B0 = (AF.B.B0 & C_FLAG) | ZeroTable[BC.B.B1] | (BC.B.B1 & 0x0F ? 0 : H_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | ZeroTable[BC.B.B1] | (BC.B.B1 & 0x0F ? 0 : GB_H_FLAG); break; case 0x05: // DEC B BC.B.B1--; -AF.B.B0 = N_FLAG | (AF.B.B0 & C_FLAG) | ZeroTable[BC.B.B1] | ((BC.B.B1 & 0x0F) == 0x0F ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (AF.B.B0 & GB_C_FLAG) | ZeroTable[BC.B.B1] | ((BC.B.B1 & 0x0F) == 0x0F ? GB_H_FLAG : 0); break; case 0x06: // LD B, NN @@ -30,7 +30,7 @@ BC.B.B1 = gbReadOpcode(PC.W++); break; case 0x07: // RLCA -tempValue = AF.B.B1 & 0x80 ? C_FLAG : 0; +tempValue = AF.B.B1 & 0x80 ? GB_C_FLAG : 0; AF.B.B1 = (AF.B.B1 << 1) | (AF.B.B1 >> 7); AF.B.B0 = tempValue; break; @@ -44,7 +44,7 @@ break; case 0x09: // ADD HL,BC tempRegister.W = (HL.W + BC.W) & 0xFFFF; -AF.B.B0 = (AF.B.B0 & Z_FLAG) | ((HL.W ^ BC.W ^ tempRegister.W) & 0x1000 ? H_FLAG : 0) | (((long)HL.W + (long)BC.W) & 0x10000 ? C_FLAG : 0); +AF.B.B0 = (AF.B.B0 & GB_Z_FLAG) | ((HL.W ^ BC.W ^ tempRegister.W) & 0x1000 ? GB_H_FLAG : 0) | (((long)HL.W + (long)BC.W) & 0x10000 ? GB_C_FLAG : 0); HL.W = tempRegister.W; break; case 0x0a: @@ -58,12 +58,12 @@ break; case 0x0c: // INC C BC.B.B0++; -AF.B.B0 = (AF.B.B0 & C_FLAG) | ZeroTable[BC.B.B0] | (BC.B.B0 & 0x0F ? 0 : H_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | ZeroTable[BC.B.B0] | (BC.B.B0 & 0x0F ? 0 : GB_H_FLAG); break; case 0x0d: // DEC C BC.B.B0--; -AF.B.B0 = N_FLAG | (AF.B.B0 & C_FLAG) | ZeroTable[BC.B.B0] | ((BC.B.B0 & 0x0F) == 0x0F ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (AF.B.B0 & GB_C_FLAG) | ZeroTable[BC.B.B0] | ((BC.B.B0 & 0x0F) == 0x0F ? GB_H_FLAG : 0); break; case 0x0e: // LD C, NN @@ -106,12 +106,12 @@ break; case 0x14: // INC D DE.B.B1++; -AF.B.B0 = (AF.B.B0 & C_FLAG) | ZeroTable[DE.B.B1] | (DE.B.B1 & 0x0F ? 0 : H_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | ZeroTable[DE.B.B1] | (DE.B.B1 & 0x0F ? 0 : GB_H_FLAG); break; case 0x15: // DEC D DE.B.B1--; -AF.B.B0 = N_FLAG | (AF.B.B0 & C_FLAG) | ZeroTable[DE.B.B1] | ((DE.B.B1 & 0x0F) == 0x0F ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (AF.B.B0 & GB_C_FLAG) | ZeroTable[DE.B.B1] | ((DE.B.B1 & 0x0F) == 0x0F ? GB_H_FLAG : 0); break; case 0x16: // LD D,NN @@ -119,8 +119,8 @@ DE.B.B1 = gbReadOpcode(PC.W++); break; case 0x17: // RLA -tempValue = AF.B.B1 & 0x80 ? C_FLAG : 0; -AF.B.B1 = (AF.B.B1 << 1) | ((AF.B.B0 & C_FLAG) >> 4); +tempValue = AF.B.B1 & 0x80 ? GB_C_FLAG : 0; +AF.B.B1 = (AF.B.B1 << 1) | ((AF.B.B0 & GB_C_FLAG) >> 4); AF.B.B0 = tempValue; break; case 0x18: @@ -130,7 +130,7 @@ break; case 0x19: // ADD HL,DE tempRegister.W = (HL.W + DE.W) & 0xFFFF; -AF.B.B0 = (AF.B.B0 & Z_FLAG) | ((HL.W ^ DE.W ^ tempRegister.W) & 0x1000 ? H_FLAG : 0) | (((long)HL.W + (long)DE.W) & 0x10000 ? C_FLAG : 0); +AF.B.B0 = (AF.B.B0 & GB_Z_FLAG) | ((HL.W ^ DE.W ^ tempRegister.W) & 0x1000 ? GB_H_FLAG : 0) | (((long)HL.W + (long)DE.W) & 0x10000 ? GB_C_FLAG : 0); HL.W = tempRegister.W; break; case 0x1a: @@ -144,12 +144,12 @@ break; case 0x1c: // INC E DE.B.B0++; -AF.B.B0 = (AF.B.B0 & C_FLAG) | ZeroTable[DE.B.B0] | (DE.B.B0 & 0x0F ? 0 : H_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | ZeroTable[DE.B.B0] | (DE.B.B0 & 0x0F ? 0 : GB_H_FLAG); break; case 0x1d: // DEC E DE.B.B0--; -AF.B.B0 = N_FLAG | (AF.B.B0 & C_FLAG) | ZeroTable[DE.B.B0] | ((DE.B.B0 & 0x0F) == 0x0F ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (AF.B.B0 & GB_C_FLAG) | ZeroTable[DE.B.B0] | ((DE.B.B0 & 0x0F) == 0x0F ? GB_H_FLAG : 0); break; case 0x1e: // LD E,NN @@ -158,12 +158,12 @@ break; case 0x1f: // RRA tempValue = AF.B.B1 & 0x01; -AF.B.B1 = (AF.B.B1 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); +AF.B.B1 = (AF.B.B1 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); AF.B.B0 = (tempValue << 4); break; case 0x20: // JR NZ,NN -if (AF.B.B0 & Z_FLAG) +if (AF.B.B0 & GB_Z_FLAG) PC.W++; else { PC.W += (s8)gbReadOpcode(PC.W) + 1; @@ -186,12 +186,12 @@ break; case 0x24: // INC H HL.B.B1++; -AF.B.B0 = (AF.B.B0 & C_FLAG) | ZeroTable[HL.B.B1] | (HL.B.B1 & 0x0F ? 0 : H_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | ZeroTable[HL.B.B1] | (HL.B.B1 & 0x0F ? 0 : GB_H_FLAG); break; case 0x25: // DEC H HL.B.B1--; -AF.B.B0 = N_FLAG | (AF.B.B0 & C_FLAG) | ZeroTable[HL.B.B1] | ((HL.B.B1 & 0x0F) == 0x0F ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (AF.B.B0 & GB_C_FLAG) | ZeroTable[HL.B.B1] | ((HL.B.B1 & 0x0F) == 0x0F ? GB_H_FLAG : 0); break; case 0x26: // LD H,NN @@ -200,12 +200,12 @@ break; case 0x27: // DAA tempRegister.W = AF.B.B1; -tempRegister.W |= (AF.B.B0 & (C_FLAG | H_FLAG | N_FLAG)) << 4; +tempRegister.W |= (AF.B.B0 & (GB_C_FLAG | GB_H_FLAG | GB_N_FLAG)) << 4; AF.W = DAATable[tempRegister.W]; break; case 0x28: // JR Z,NN -if (AF.B.B0 & Z_FLAG) { +if (AF.B.B0 & GB_Z_FLAG) { PC.W += (s8)gbReadOpcode(PC.W) + 1; clockTicks++; } else @@ -214,7 +214,7 @@ break; case 0x29: // ADD HL,HL tempRegister.W = (HL.W + HL.W) & 0xFFFF; -AF.B.B0 = (AF.B.B0 & Z_FLAG) | ((HL.W ^ HL.W ^ tempRegister.W) & 0x1000 ? H_FLAG : 0) | (((long)HL.W + (long)HL.W) & 0x10000 ? C_FLAG : 0); +AF.B.B0 = (AF.B.B0 & GB_Z_FLAG) | ((HL.W ^ HL.W ^ tempRegister.W) & 0x1000 ? GB_H_FLAG : 0) | (((long)HL.W + (long)HL.W) & 0x10000 ? GB_C_FLAG : 0); HL.W = tempRegister.W; break; case 0x2a: @@ -228,12 +228,12 @@ break; case 0x2c: // INC L HL.B.B0++; -AF.B.B0 = (AF.B.B0 & C_FLAG) | ZeroTable[HL.B.B0] | (HL.B.B0 & 0x0F ? 0 : H_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | ZeroTable[HL.B.B0] | (HL.B.B0 & 0x0F ? 0 : GB_H_FLAG); break; case 0x2d: // DEC L HL.B.B0--; -AF.B.B0 = N_FLAG | (AF.B.B0 & C_FLAG) | ZeroTable[HL.B.B0] | ((HL.B.B0 & 0x0F) == 0x0F ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (AF.B.B0 & GB_C_FLAG) | ZeroTable[HL.B.B0] | ((HL.B.B0 & 0x0F) == 0x0F ? GB_H_FLAG : 0); break; case 0x2e: // LD L,NN @@ -242,11 +242,11 @@ break; case 0x2f: // CPL AF.B.B1 ^= 255; -AF.B.B0 |= N_FLAG | H_FLAG; +AF.B.B0 |= GB_N_FLAG | GB_H_FLAG; break; case 0x30: // JR NC,NN -if (AF.B.B0 & C_FLAG) +if (AF.B.B0 & GB_C_FLAG) PC.W++; else { PC.W += (s8)gbReadOpcode(PC.W) + 1; @@ -269,13 +269,13 @@ break; case 0x34: // INC (HL) tempValue = gbReadMemory(HL.W) + 1; -AF.B.B0 = (AF.B.B0 & C_FLAG) | ZeroTable[tempValue] | (tempValue & 0x0F ? 0 : H_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | ZeroTable[tempValue] | (tempValue & 0x0F ? 0 : GB_H_FLAG); gbWriteMemory(HL.W, tempValue); break; case 0x35: // DEC (HL) tempValue = gbReadMemory(HL.W) - 1; -AF.B.B0 = N_FLAG | (AF.B.B0 & C_FLAG) | ZeroTable[tempValue] | ((tempValue & 0x0F) == 0x0F ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (AF.B.B0 & GB_C_FLAG) | ZeroTable[tempValue] | ((tempValue & 0x0F) == 0x0F ? GB_H_FLAG : 0); gbWriteMemory(HL.W, tempValue); break; case 0x36: @@ -284,11 +284,11 @@ gbWriteMemory(HL.W, gbReadOpcode(PC.W++)); break; case 0x37: // SCF -AF.B.B0 = (AF.B.B0 & Z_FLAG) | C_FLAG; +AF.B.B0 = (AF.B.B0 & GB_Z_FLAG) | GB_C_FLAG; break; case 0x38: // JR C,NN -if (AF.B.B0 & C_FLAG) { +if (AF.B.B0 & GB_C_FLAG) { PC.W += (s8)gbReadOpcode(PC.W) + 1; clockTicks++; } else @@ -297,7 +297,7 @@ break; case 0x39: // ADD HL,SP tempRegister.W = (HL.W + SP.W) & 0xFFFF; -AF.B.B0 = (AF.B.B0 & Z_FLAG) | ((HL.W ^ SP.W ^ tempRegister.W) & 0x1000 ? H_FLAG : 0) | (((long)HL.W + (long)SP.W) & 0x10000 ? C_FLAG : 0); +AF.B.B0 = (AF.B.B0 & GB_Z_FLAG) | ((HL.W ^ SP.W ^ tempRegister.W) & 0x1000 ? GB_H_FLAG : 0) | (((long)HL.W + (long)SP.W) & 0x10000 ? GB_C_FLAG : 0); HL.W = tempRegister.W; break; case 0x3a: @@ -311,12 +311,12 @@ break; case 0x3c: // INC A AF.B.B1++; -AF.B.B0 = (AF.B.B0 & C_FLAG) | ZeroTable[AF.B.B1] | (AF.B.B1 & 0x0F ? 0 : H_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | ZeroTable[AF.B.B1] | (AF.B.B1 & 0x0F ? 0 : GB_H_FLAG); break; case 0x3d: // DEC A AF.B.B1--; -AF.B.B0 = N_FLAG | (AF.B.B0 & C_FLAG) | ZeroTable[AF.B.B1] | ((AF.B.B1 & 0x0F) == 0x0F ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (AF.B.B0 & GB_C_FLAG) | ZeroTable[AF.B.B1] | ((AF.B.B1 & 0x0F) == 0x0F ? GB_H_FLAG : 0); break; case 0x3e: // LD A,NN @@ -324,8 +324,8 @@ AF.B.B1 = gbReadOpcode(PC.W++); break; case 0x3f: // CCF -AF.B.B0 ^= C_FLAG; -AF.B.B0 &= ~(N_FLAG | H_FLAG); +AF.B.B0 ^= GB_C_FLAG; +AF.B.B0 &= ~(GB_N_FLAG | GB_H_FLAG); break; case 0x40: // LD B,B @@ -599,238 +599,238 @@ break; case 0x80: // ADD B tempRegister.W = AF.B.B1 + BC.B.B1; -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x81: // ADD C tempRegister.W = AF.B.B1 + BC.B.B0; -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x82: // ADD D tempRegister.W = AF.B.B1 + DE.B.B1; -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x83: // ADD E tempRegister.W = AF.B.B1 + DE.B.B0; -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x84: // ADD H tempRegister.W = AF.B.B1 + HL.B.B1; -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x85: // ADD L tempRegister.W = AF.B.B1 + HL.B.B0; -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x86: // ADD (HL) tempValue = gbReadMemory(HL.W); tempRegister.W = AF.B.B1 + tempValue; -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x87: // ADD A tempRegister.W = AF.B.B1 + AF.B.B1; -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ AF.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ AF.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x88: // ADC B: -tempRegister.W = AF.B.B1 + BC.B.B1 + (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 + BC.B.B1 + (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x89: // ADC C -tempRegister.W = AF.B.B1 + BC.B.B0 + (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 + BC.B.B0 + (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x8a: // ADC D -tempRegister.W = AF.B.B1 + DE.B.B1 + (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 + DE.B.B1 + (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x8b: // ADC E -tempRegister.W = AF.B.B1 + DE.B.B0 + (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 + DE.B.B0 + (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x8c: // ADC H -tempRegister.W = AF.B.B1 + HL.B.B1 + (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 + HL.B.B1 + (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x8d: // ADC L -tempRegister.W = AF.B.B1 + HL.B.B0 + (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 + HL.B.B0 + (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x8e: // ADC (HL) tempValue = gbReadMemory(HL.W); -tempRegister.W = AF.B.B1 + tempValue + (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 + tempValue + (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x8f: // ADC A -tempRegister.W = AF.B.B1 + AF.B.B1 + (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ AF.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 + AF.B.B1 + (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ AF.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x90: // SUB B tempRegister.W = AF.B.B1 - BC.B.B1; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x91: // SUB C tempRegister.W = AF.B.B1 - BC.B.B0; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x92: // SUB D tempRegister.W = AF.B.B1 - DE.B.B1; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x93: // SUB E tempRegister.W = AF.B.B1 - DE.B.B0; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x94: // SUB H tempRegister.W = AF.B.B1 - HL.B.B1; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x95: // SUB L tempRegister.W = AF.B.B1 - HL.B.B0; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x96: // SUB (HL) tempValue = gbReadMemory(HL.W); tempRegister.W = AF.B.B1 - tempValue; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x97: // SUB A AF.B.B1 = 0; -AF.B.B0 = N_FLAG | Z_FLAG; +AF.B.B0 = GB_N_FLAG | GB_Z_FLAG; break; case 0x98: // SBC B -tempRegister.W = AF.B.B1 - BC.B.B1 - (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 - BC.B.B1 - (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x99: // SBC C -tempRegister.W = AF.B.B1 - BC.B.B0 - (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 - BC.B.B0 - (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x9a: // SBC D -tempRegister.W = AF.B.B1 - DE.B.B1 - (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 - DE.B.B1 - (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x9b: // SBC E -tempRegister.W = AF.B.B1 - DE.B.B0 - (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 - DE.B.B0 - (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x9c: // SBC H -tempRegister.W = AF.B.B1 - HL.B.B1 - (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 - HL.B.B1 - (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x9d: // SBC L -tempRegister.W = AF.B.B1 - HL.B.B0 - (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 - HL.B.B0 - (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x9e: // SBC (HL) tempValue = gbReadMemory(HL.W); -tempRegister.W = AF.B.B1 - tempValue - (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 - tempValue - (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0x9f: // SBC A -tempRegister.W = AF.B.B1 - AF.B.B1 - (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ AF.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 - AF.B.B1 - (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ AF.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0xa0: // AND B AF.B.B1 &= BC.B.B1; -AF.B.B0 = H_FLAG | ZeroTable[AF.B.B1]; +AF.B.B0 = GB_H_FLAG | ZeroTable[AF.B.B1]; break; case 0xa1: // AND C AF.B.B1 &= BC.B.B0; -AF.B.B0 = H_FLAG | ZeroTable[AF.B.B1]; +AF.B.B0 = GB_H_FLAG | ZeroTable[AF.B.B1]; break; case 0xa2: // AND_D AF.B.B1 &= DE.B.B1; -AF.B.B0 = H_FLAG | ZeroTable[AF.B.B1]; +AF.B.B0 = GB_H_FLAG | ZeroTable[AF.B.B1]; break; case 0xa3: // AND E AF.B.B1 &= DE.B.B0; -AF.B.B0 = H_FLAG | ZeroTable[AF.B.B1]; +AF.B.B0 = GB_H_FLAG | ZeroTable[AF.B.B1]; break; case 0xa4: // AND H AF.B.B1 &= HL.B.B1; -AF.B.B0 = H_FLAG | ZeroTable[AF.B.B1]; +AF.B.B0 = GB_H_FLAG | ZeroTable[AF.B.B1]; break; case 0xa5: // AND L AF.B.B1 &= HL.B.B0; -AF.B.B0 = H_FLAG | ZeroTable[AF.B.B1]; +AF.B.B0 = GB_H_FLAG | ZeroTable[AF.B.B1]; break; case 0xa6: // AND (HL) tempValue = gbReadMemory(HL.W); AF.B.B1 &= tempValue; -AF.B.B0 = H_FLAG | ZeroTable[AF.B.B1]; +AF.B.B0 = GB_H_FLAG | ZeroTable[AF.B.B1]; break; case 0xa7: // AND A AF.B.B1 &= AF.B.B1; -AF.B.B0 = H_FLAG | ZeroTable[AF.B.B1]; +AF.B.B0 = GB_H_FLAG | ZeroTable[AF.B.B1]; break; case 0xa8: // XOR B @@ -871,7 +871,7 @@ break; case 0xaf: // XOR A AF.B.B1 = 0; -AF.B.B0 = Z_FLAG; +AF.B.B0 = GB_Z_FLAG; break; case 0xb0: // OR B @@ -917,46 +917,46 @@ break; case 0xb8: // CP B: tempRegister.W = AF.B.B1 - BC.B.B1; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); break; case 0xb9: // CP C tempRegister.W = AF.B.B1 - BC.B.B0; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ BC.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); break; case 0xba: // CP D tempRegister.W = AF.B.B1 - DE.B.B1; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); break; case 0xbb: // CP E tempRegister.W = AF.B.B1 - DE.B.B0; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ DE.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); break; case 0xbc: // CP H tempRegister.W = AF.B.B1 - HL.B.B1; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B1 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B1 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); break; case 0xbd: // CP L tempRegister.W = AF.B.B1 - HL.B.B0; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B0 ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ HL.B.B0 ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); break; case 0xbe: // CP (HL) tempValue = gbReadMemory(HL.W); tempRegister.W = AF.B.B1 - tempValue; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); break; case 0xbf: // CP A -AF.B.B0 = N_FLAG | Z_FLAG; +AF.B.B0 = GB_N_FLAG | GB_Z_FLAG; break; case 0xc0: // RET NZ -if (!(AF.B.B0 & Z_FLAG)) { +if (!(AF.B.B0 & GB_Z_FLAG)) { PC.B.B0 = gbReadMemory(SP.W++); PC.B.B1 = gbReadMemory(SP.W++); clockTicks += 3; @@ -969,7 +969,7 @@ BC.B.B1 = gbReadMemory(SP.W++); break; case 0xc2: // JP NZ,NNNN -if (AF.B.B0 & Z_FLAG) +if (AF.B.B0 & GB_Z_FLAG) PC.W += 2; else { tempRegister.B.B0 = gbReadOpcode(PC.W++); @@ -986,7 +986,7 @@ PC.W = tempRegister.W; break; case 0xc4: // CALL NZ,NNNN -if (AF.B.B0 & Z_FLAG) +if (AF.B.B0 & GB_Z_FLAG) PC.W += 2; else { tempRegister.B.B0 = gbReadOpcode(PC.W++); @@ -1006,7 +1006,7 @@ case 0xc6: // ADD NN tempValue = gbReadOpcode(PC.W++); tempRegister.W = AF.B.B1 + tempValue; -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0xc7: @@ -1017,7 +1017,7 @@ PC.W = 0x0000; break; case 0xc8: // RET Z -if (AF.B.B0 & Z_FLAG) { +if (AF.B.B0 & GB_Z_FLAG) { PC.B.B0 = gbReadMemory(SP.W++); PC.B.B1 = gbReadMemory(SP.W++); clockTicks += 3; @@ -1030,7 +1030,7 @@ PC.B.B1 = gbReadMemory(SP.W++); break; case 0xca: // JP Z,NNNN -if (AF.B.B0 & Z_FLAG) { +if (AF.B.B0 & GB_Z_FLAG) { tempRegister.B.B0 = gbReadOpcode(PC.W++); tempRegister.B.B1 = gbReadOpcode(PC.W); PC.W = tempRegister.W; @@ -1041,7 +1041,7 @@ break; // CB done outside case 0xcc: // CALL Z,NNNN -if (AF.B.B0 & Z_FLAG) { +if (AF.B.B0 & GB_Z_FLAG) { tempRegister.B.B0 = gbReadOpcode(PC.W++); tempRegister.B.B1 = gbReadOpcode(PC.W++); gbWriteMemory(--SP.W, PC.B.B1); @@ -1062,8 +1062,8 @@ break; case 0xce: // ADC NN tempValue = gbReadOpcode(PC.W++); -tempRegister.W = AF.B.B1 + tempValue + (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 + tempValue + (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0xcf: @@ -1074,7 +1074,7 @@ PC.W = 0x0008; break; case 0xd0: // RET NC -if (!(AF.B.B0 & C_FLAG)) { +if (!(AF.B.B0 & GB_C_FLAG)) { PC.B.B0 = gbReadMemory(SP.W++); PC.B.B1 = gbReadMemory(SP.W++); clockTicks += 3; @@ -1087,7 +1087,7 @@ DE.B.B1 = gbReadMemory(SP.W++); break; case 0xd2: // JP NC,NNNN -if (AF.B.B0 & C_FLAG) +if (AF.B.B0 & GB_C_FLAG) PC.W += 2; else { tempRegister.B.B0 = gbReadOpcode(PC.W++); @@ -1103,7 +1103,7 @@ IFF = 0; break; case 0xd4: // CALL NC,NNNN -if (AF.B.B0 & C_FLAG) +if (AF.B.B0 & GB_C_FLAG) PC.W += 2; else { tempRegister.B.B0 = gbReadOpcode(PC.W++); @@ -1123,7 +1123,7 @@ case 0xd6: // SUB NN tempValue = gbReadOpcode(PC.W++); tempRegister.W = AF.B.B1 - tempValue; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0xd7: @@ -1134,7 +1134,7 @@ PC.W = 0x0010; break; case 0xd8: // RET C -if (AF.B.B0 & C_FLAG) { +if (AF.B.B0 & GB_C_FLAG) { PC.B.B0 = gbReadMemory(SP.W++); PC.B.B1 = gbReadMemory(SP.W++); clockTicks += 3; @@ -1148,7 +1148,7 @@ IFF |= 0x01; break; case 0xda: // JP C,NNNN -if (AF.B.B0 & C_FLAG) { +if (AF.B.B0 & GB_C_FLAG) { tempRegister.B.B0 = gbReadOpcode(PC.W++); tempRegister.B.B1 = gbReadOpcode(PC.W); PC.W = tempRegister.W; @@ -1163,7 +1163,7 @@ IFF = 0; break; case 0xdc: // CALL C,NNNN -if (AF.B.B0 & C_FLAG) { +if (AF.B.B0 & GB_C_FLAG) { tempRegister.B.B0 = gbReadOpcode(PC.W++); tempRegister.B.B1 = gbReadOpcode(PC.W++); gbWriteMemory(--SP.W, PC.B.B1); @@ -1181,8 +1181,8 @@ break; case 0xde: // SBC NN tempValue = gbReadOpcode(PC.W++); -tempRegister.W = AF.B.B1 - tempValue - (AF.B.B0 & C_FLAG ? 1 : 0); -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +tempRegister.W = AF.B.B1 - tempValue - (AF.B.B0 & GB_C_FLAG ? 1 : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); AF.B.B1 = tempRegister.B.B0; break; case 0xdf: @@ -1220,7 +1220,7 @@ case 0xe6: // AND NN tempValue = gbReadOpcode(PC.W++); AF.B.B1 &= tempValue; -AF.B.B0 = H_FLAG | ZeroTable[AF.B.B1]; +AF.B.B0 = GB_H_FLAG | ZeroTable[AF.B.B1]; break; case 0xe7: // RST 20 @@ -1232,7 +1232,7 @@ case 0xe8: // ADD SP,NN offset = (s8)gbReadOpcode(PC.W++); tempRegister.W = SP.W + offset; -AF.B.B0 = ((SP.W ^ offset ^ tempRegister.W) & 0x100 ? C_FLAG : 0) | ((SP.W ^ offset ^ tempRegister.W) & 0x10 ? H_FLAG : 0); +AF.B.B0 = ((SP.W ^ offset ^ tempRegister.W) & 0x100 ? GB_C_FLAG : 0) | ((SP.W ^ offset ^ tempRegister.W) & 0x10 ? GB_H_FLAG : 0); SP.W = tempRegister.W; break; case 0xe9: @@ -1310,7 +1310,7 @@ case 0xf8: // LD HL,SP+NN offset = (s8)gbReadOpcode(PC.W++); tempRegister.W = SP.W + offset; -AF.B.B0 = ((SP.W ^ offset ^ tempRegister.W) & 0x100 ? C_FLAG : 0) | ((SP.W ^ offset ^ tempRegister.W) & 0x10 ? H_FLAG : 0); +AF.B.B0 = ((SP.W ^ offset ^ tempRegister.W) & 0x100 ? GB_C_FLAG : 0) | ((SP.W ^ offset ^ tempRegister.W) & 0x10 ? GB_H_FLAG : 0); HL.W = tempRegister.W; break; case 0xf9: @@ -1346,7 +1346,7 @@ case 0xfe: // CP NN tempValue = gbReadOpcode(PC.W++); tempRegister.W = AF.B.B1 - tempValue; -AF.B.B0 = N_FLAG | (tempRegister.B.B1 ? C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? H_FLAG : 0); +AF.B.B0 = GB_N_FLAG | (tempRegister.B.B1 ? GB_C_FLAG : 0) | ZeroTable[tempRegister.B.B0] | ((AF.B.B1 ^ tempValue ^ tempRegister.B.B0) & 0x10 ? GB_H_FLAG : 0); break; case 0xff: // RST 38 diff --git a/src/gb/gbCodesCB.h b/src/gb/gbCodesCB.h index 00096036..54986e3e 100644 --- a/src/gb/gbCodesCB.h +++ b/src/gb/gbCodesCB.h @@ -1,160 +1,160 @@ case 0x00: // RLC B -AF.B.B0 = (BC.B.B1 & 0x80) ? C_FLAG : 0; +AF.B.B0 = (BC.B.B1 & 0x80) ? GB_C_FLAG : 0; BC.B.B1 = (BC.B.B1 << 1) | (BC.B.B1 >> 7); AF.B.B0 |= ZeroTable[BC.B.B1]; break; case 0x01: // RLC C -AF.B.B0 = (BC.B.B0 & 0x80) ? C_FLAG : 0; +AF.B.B0 = (BC.B.B0 & 0x80) ? GB_C_FLAG : 0; BC.B.B0 = (BC.B.B0 << 1) | (BC.B.B0 >> 7); AF.B.B0 |= ZeroTable[BC.B.B0]; break; case 0x02: // RLC D -AF.B.B0 = (DE.B.B1 & 0x80) ? C_FLAG : 0; +AF.B.B0 = (DE.B.B1 & 0x80) ? GB_C_FLAG : 0; DE.B.B1 = (DE.B.B1 << 1) | (DE.B.B1 >> 7); AF.B.B0 |= ZeroTable[DE.B.B1]; break; case 0x03: // RLC E -AF.B.B0 = (DE.B.B0 & 0x80) ? C_FLAG : 0; +AF.B.B0 = (DE.B.B0 & 0x80) ? GB_C_FLAG : 0; DE.B.B0 = (DE.B.B0 << 1) | (DE.B.B0 >> 7); AF.B.B0 |= ZeroTable[DE.B.B0]; break; case 0x04: // RLC H -AF.B.B0 = (HL.B.B1 & 0x80) ? C_FLAG : 0; +AF.B.B0 = (HL.B.B1 & 0x80) ? GB_C_FLAG : 0; HL.B.B1 = (HL.B.B1 << 1) | (HL.B.B1 >> 7); AF.B.B0 |= ZeroTable[HL.B.B1]; break; case 0x05: // RLC L -AF.B.B0 = (HL.B.B0 & 0x80) ? C_FLAG : 0; +AF.B.B0 = (HL.B.B0 & 0x80) ? GB_C_FLAG : 0; HL.B.B0 = (HL.B.B0 << 1) | (HL.B.B0 >> 7); AF.B.B0 |= ZeroTable[HL.B.B0]; break; case 0x06: // RLC (HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (tempValue & 0x80) ? C_FLAG : 0; +AF.B.B0 = (tempValue & 0x80) ? GB_C_FLAG : 0; tempValue = (tempValue << 1) | (tempValue >> 7); AF.B.B0 |= ZeroTable[tempValue]; gbWriteMemory(HL.W, tempValue); break; case 0x07: // RLC A -AF.B.B0 = (AF.B.B1 & 0x80) ? C_FLAG : 0; +AF.B.B0 = (AF.B.B1 & 0x80) ? GB_C_FLAG : 0; AF.B.B1 = (AF.B.B1 << 1) | (AF.B.B1 >> 7); AF.B.B0 |= ZeroTable[AF.B.B1]; break; case 0x08: // RRC B -AF.B.B0 = (BC.B.B1 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (BC.B.B1 & 0x01 ? GB_C_FLAG : 0); BC.B.B1 = (BC.B.B1 >> 1) | (BC.B.B1 << 7); AF.B.B0 |= ZeroTable[BC.B.B1]; break; case 0x09: // RRC C -AF.B.B0 = (BC.B.B0 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (BC.B.B0 & 0x01 ? GB_C_FLAG : 0); BC.B.B0 = (BC.B.B0 >> 1) | (BC.B.B0 << 7); AF.B.B0 |= ZeroTable[BC.B.B0]; break; case 0x0a: // RRC D -AF.B.B0 = (DE.B.B1 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (DE.B.B1 & 0x01 ? GB_C_FLAG : 0); DE.B.B1 = (DE.B.B1 >> 1) | (DE.B.B1 << 7); AF.B.B0 |= ZeroTable[DE.B.B1]; break; case 0x0b: // RRC E -AF.B.B0 = (DE.B.B0 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (DE.B.B0 & 0x01 ? GB_C_FLAG : 0); DE.B.B0 = (DE.B.B0 >> 1) | (DE.B.B0 << 7); AF.B.B0 |= ZeroTable[DE.B.B0]; break; case 0x0c: // RRC H -AF.B.B0 = (HL.B.B1 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (HL.B.B1 & 0x01 ? GB_C_FLAG : 0); HL.B.B1 = (HL.B.B1 >> 1) | (HL.B.B1 << 7); AF.B.B0 |= ZeroTable[HL.B.B1]; break; case 0x0d: // RRC L -AF.B.B0 = (HL.B.B0 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (HL.B.B0 & 0x01 ? GB_C_FLAG : 0); HL.B.B0 = (HL.B.B0 >> 1) | (HL.B.B0 << 7); AF.B.B0 |= ZeroTable[HL.B.B0]; break; case 0x0e: // RRC (HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (tempValue & 0x01 ? C_FLAG : 0); +AF.B.B0 = (tempValue & 0x01 ? GB_C_FLAG : 0); tempValue = (tempValue >> 1) | (tempValue << 7); AF.B.B0 |= ZeroTable[tempValue]; gbWriteMemory(HL.W, tempValue); break; case 0x0f: // RRC A -AF.B.B0 = (AF.B.B1 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (AF.B.B1 & 0x01 ? GB_C_FLAG : 0); AF.B.B1 = (AF.B.B1 >> 1) | (AF.B.B1 << 7); AF.B.B0 |= ZeroTable[AF.B.B1]; break; case 0x10: // RL B if (BC.B.B1 & 0x80) { - BC.B.B1 = (BC.B.B1 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); - AF.B.B0 = ZeroTable[BC.B.B1] | C_FLAG; + BC.B.B1 = (BC.B.B1 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); + AF.B.B0 = ZeroTable[BC.B.B1] | GB_C_FLAG; } else { - BC.B.B1 = (BC.B.B1 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); + BC.B.B1 = (BC.B.B1 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); AF.B.B0 = ZeroTable[BC.B.B1]; } break; case 0x11: // RL C if (BC.B.B0 & 0x80) { - BC.B.B0 = (BC.B.B0 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); - AF.B.B0 = ZeroTable[BC.B.B0] | C_FLAG; + BC.B.B0 = (BC.B.B0 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); + AF.B.B0 = ZeroTable[BC.B.B0] | GB_C_FLAG; } else { - BC.B.B0 = (BC.B.B0 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); + BC.B.B0 = (BC.B.B0 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); AF.B.B0 = ZeroTable[BC.B.B0]; } break; case 0x12: // RL D if (DE.B.B1 & 0x80) { - DE.B.B1 = (DE.B.B1 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); - AF.B.B0 = ZeroTable[DE.B.B1] | C_FLAG; + DE.B.B1 = (DE.B.B1 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); + AF.B.B0 = ZeroTable[DE.B.B1] | GB_C_FLAG; } else { - DE.B.B1 = (DE.B.B1 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); + DE.B.B1 = (DE.B.B1 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); AF.B.B0 = ZeroTable[DE.B.B1]; } break; case 0x13: // RL E if (DE.B.B0 & 0x80) { - DE.B.B0 = (DE.B.B0 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); - AF.B.B0 = ZeroTable[DE.B.B0] | C_FLAG; + DE.B.B0 = (DE.B.B0 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); + AF.B.B0 = ZeroTable[DE.B.B0] | GB_C_FLAG; } else { - DE.B.B0 = (DE.B.B0 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); + DE.B.B0 = (DE.B.B0 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); AF.B.B0 = ZeroTable[DE.B.B0]; } break; case 0x14: // RL H if (HL.B.B1 & 0x80) { - HL.B.B1 = (HL.B.B1 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); - AF.B.B0 = ZeroTable[HL.B.B1] | C_FLAG; + HL.B.B1 = (HL.B.B1 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); + AF.B.B0 = ZeroTable[HL.B.B1] | GB_C_FLAG; } else { - HL.B.B1 = (HL.B.B1 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); + HL.B.B1 = (HL.B.B1 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); AF.B.B0 = ZeroTable[HL.B.B1]; } break; case 0x15: // RL L if (HL.B.B0 & 0x80) { - HL.B.B0 = (HL.B.B0 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); - AF.B.B0 = ZeroTable[HL.B.B0] | C_FLAG; + HL.B.B0 = (HL.B.B0 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); + AF.B.B0 = ZeroTable[HL.B.B0] | GB_C_FLAG; } else { - HL.B.B0 = (HL.B.B0 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); + HL.B.B0 = (HL.B.B0 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); AF.B.B0 = ZeroTable[HL.B.B0]; } break; @@ -162,10 +162,10 @@ case 0x16: // RL (HL) tempValue = gbReadMemory(HL.W); if (tempValue & 0x80) { - tempValue = (tempValue << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); - AF.B.B0 = ZeroTable[tempValue] | C_FLAG; + tempValue = (tempValue << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); + AF.B.B0 = ZeroTable[tempValue] | GB_C_FLAG; } else { - tempValue = (tempValue << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); + tempValue = (tempValue << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); AF.B.B0 = ZeroTable[tempValue]; } gbWriteMemory(HL.W, tempValue); @@ -173,70 +173,70 @@ break; case 0x17: // RL A if (AF.B.B1 & 0x80) { - AF.B.B1 = (AF.B.B1 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); - AF.B.B0 = ZeroTable[AF.B.B1] | C_FLAG; + AF.B.B1 = (AF.B.B1 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); + AF.B.B0 = ZeroTable[AF.B.B1] | GB_C_FLAG; } else { - AF.B.B1 = (AF.B.B1 << 1) | (AF.B.B0 & C_FLAG ? 1 : 0); + AF.B.B1 = (AF.B.B1 << 1) | (AF.B.B0 & GB_C_FLAG ? 1 : 0); AF.B.B0 = ZeroTable[AF.B.B1]; } break; case 0x18: // RR B if (BC.B.B1 & 0x01) { - BC.B.B1 = (BC.B.B1 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); - AF.B.B0 = ZeroTable[BC.B.B1] | C_FLAG; + BC.B.B1 = (BC.B.B1 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); + AF.B.B0 = ZeroTable[BC.B.B1] | GB_C_FLAG; } else { - BC.B.B1 = (BC.B.B1 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); + BC.B.B1 = (BC.B.B1 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); AF.B.B0 = ZeroTable[BC.B.B1]; } break; case 0x19: // RR C if (BC.B.B0 & 0x01) { - BC.B.B0 = (BC.B.B0 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); - AF.B.B0 = ZeroTable[BC.B.B0] | C_FLAG; + BC.B.B0 = (BC.B.B0 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); + AF.B.B0 = ZeroTable[BC.B.B0] | GB_C_FLAG; } else { - BC.B.B0 = (BC.B.B0 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); + BC.B.B0 = (BC.B.B0 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); AF.B.B0 = ZeroTable[BC.B.B0]; } break; case 0x1a: // RR D if (DE.B.B1 & 0x01) { - DE.B.B1 = (DE.B.B1 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); - AF.B.B0 = ZeroTable[DE.B.B1] | C_FLAG; + DE.B.B1 = (DE.B.B1 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); + AF.B.B0 = ZeroTable[DE.B.B1] | GB_C_FLAG; } else { - DE.B.B1 = (DE.B.B1 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); + DE.B.B1 = (DE.B.B1 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); AF.B.B0 = ZeroTable[DE.B.B1]; } break; case 0x1b: // RR E if (DE.B.B0 & 0x01) { - DE.B.B0 = (DE.B.B0 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); - AF.B.B0 = ZeroTable[DE.B.B0] | C_FLAG; + DE.B.B0 = (DE.B.B0 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); + AF.B.B0 = ZeroTable[DE.B.B0] | GB_C_FLAG; } else { - DE.B.B0 = (DE.B.B0 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); + DE.B.B0 = (DE.B.B0 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); AF.B.B0 = ZeroTable[DE.B.B0]; } break; case 0x1c: // RR H if (HL.B.B1 & 0x01) { - HL.B.B1 = (HL.B.B1 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); - AF.B.B0 = ZeroTable[HL.B.B1] | C_FLAG; + HL.B.B1 = (HL.B.B1 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); + AF.B.B0 = ZeroTable[HL.B.B1] | GB_C_FLAG; } else { - HL.B.B1 = (HL.B.B1 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); + HL.B.B1 = (HL.B.B1 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); AF.B.B0 = ZeroTable[HL.B.B1]; } break; case 0x1d: // RR L if (HL.B.B0 & 0x01) { - HL.B.B0 = (HL.B.B0 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); - AF.B.B0 = ZeroTable[HL.B.B0] | C_FLAG; + HL.B.B0 = (HL.B.B0 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); + AF.B.B0 = ZeroTable[HL.B.B0] | GB_C_FLAG; } else { - HL.B.B0 = (HL.B.B0 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); + HL.B.B0 = (HL.B.B0 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); AF.B.B0 = ZeroTable[HL.B.B0]; } break; @@ -244,10 +244,10 @@ case 0x1e: // RR (HL) tempValue = gbReadMemory(HL.W); if (tempValue & 0x01) { - tempValue = (tempValue >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); - AF.B.B0 = ZeroTable[tempValue] | C_FLAG; + tempValue = (tempValue >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); + AF.B.B0 = ZeroTable[tempValue] | GB_C_FLAG; } else { - tempValue = (tempValue >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); + tempValue = (tempValue >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); AF.B.B0 = ZeroTable[tempValue]; } gbWriteMemory(HL.W, tempValue); @@ -255,110 +255,110 @@ break; case 0x1f: // RR A if (AF.B.B1 & 0x01) { - AF.B.B1 = (AF.B.B1 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); - AF.B.B0 = ZeroTable[AF.B.B1] | C_FLAG; + AF.B.B1 = (AF.B.B1 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); + AF.B.B0 = ZeroTable[AF.B.B1] | GB_C_FLAG; } else { - AF.B.B1 = (AF.B.B1 >> 1) | (AF.B.B0 & C_FLAG ? 0x80 : 0); + AF.B.B1 = (AF.B.B1 >> 1) | (AF.B.B0 & GB_C_FLAG ? 0x80 : 0); AF.B.B0 = ZeroTable[AF.B.B1]; } break; case 0x20: // SLA B -AF.B.B0 = (BC.B.B1 & 0x80 ? C_FLAG : 0); +AF.B.B0 = (BC.B.B1 & 0x80 ? GB_C_FLAG : 0); BC.B.B1 <<= 1; AF.B.B0 |= ZeroTable[BC.B.B1]; break; case 0x21: // SLA C -AF.B.B0 = (BC.B.B0 & 0x80 ? C_FLAG : 0); +AF.B.B0 = (BC.B.B0 & 0x80 ? GB_C_FLAG : 0); BC.B.B0 <<= 1; AF.B.B0 |= ZeroTable[BC.B.B0]; break; case 0x22: // SLA D -AF.B.B0 = (DE.B.B1 & 0x80 ? C_FLAG : 0); +AF.B.B0 = (DE.B.B1 & 0x80 ? GB_C_FLAG : 0); DE.B.B1 <<= 1; AF.B.B0 |= ZeroTable[DE.B.B1]; break; case 0x23: // SLA E -AF.B.B0 = (DE.B.B0 & 0x80 ? C_FLAG : 0); +AF.B.B0 = (DE.B.B0 & 0x80 ? GB_C_FLAG : 0); DE.B.B0 <<= 1; AF.B.B0 |= ZeroTable[DE.B.B0]; break; case 0x24: // SLA H -AF.B.B0 = (HL.B.B1 & 0x80 ? C_FLAG : 0); +AF.B.B0 = (HL.B.B1 & 0x80 ? GB_C_FLAG : 0); HL.B.B1 <<= 1; AF.B.B0 |= ZeroTable[HL.B.B1]; break; case 0x25: // SLA L -AF.B.B0 = (HL.B.B0 & 0x80 ? C_FLAG : 0); +AF.B.B0 = (HL.B.B0 & 0x80 ? GB_C_FLAG : 0); HL.B.B0 <<= 1; AF.B.B0 |= ZeroTable[HL.B.B0]; break; case 0x26: // SLA (HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (tempValue & 0x80 ? C_FLAG : 0); +AF.B.B0 = (tempValue & 0x80 ? GB_C_FLAG : 0); tempValue <<= 1; AF.B.B0 |= ZeroTable[tempValue]; gbWriteMemory(HL.W, tempValue); break; case 0x27: // SLA A -AF.B.B0 = (AF.B.B1 & 0x80 ? C_FLAG : 0); +AF.B.B0 = (AF.B.B1 & 0x80 ? GB_C_FLAG : 0); AF.B.B1 <<= 1; AF.B.B0 |= ZeroTable[AF.B.B1]; break; case 0x28: // SRA B -AF.B.B0 = (BC.B.B1 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (BC.B.B1 & 0x01 ? GB_C_FLAG : 0); BC.B.B1 = (BC.B.B1 >> 1) | (BC.B.B1 & 0x80); AF.B.B0 |= ZeroTable[BC.B.B1]; break; case 0x29: // SRA C -AF.B.B0 = (BC.B.B0 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (BC.B.B0 & 0x01 ? GB_C_FLAG : 0); BC.B.B0 = (BC.B.B0 >> 1) | (BC.B.B0 & 0x80); AF.B.B0 |= ZeroTable[BC.B.B0]; break; case 0x2a: // SRA D -AF.B.B0 = (DE.B.B1 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (DE.B.B1 & 0x01 ? GB_C_FLAG : 0); DE.B.B1 = (DE.B.B1 >> 1) | (DE.B.B1 & 0x80); AF.B.B0 |= ZeroTable[DE.B.B1]; break; case 0x2b: // SRA E -AF.B.B0 = (DE.B.B0 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (DE.B.B0 & 0x01 ? GB_C_FLAG : 0); DE.B.B0 = (DE.B.B0 >> 1) | (DE.B.B0 & 0x80); AF.B.B0 |= ZeroTable[DE.B.B0]; break; case 0x2c: // SRA H -AF.B.B0 = (HL.B.B1 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (HL.B.B1 & 0x01 ? GB_C_FLAG : 0); HL.B.B1 = (HL.B.B1 >> 1) | (HL.B.B1 & 0x80); AF.B.B0 |= ZeroTable[HL.B.B1]; break; case 0x2d: // SRA L -AF.B.B0 = (HL.B.B0 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (HL.B.B0 & 0x01 ? GB_C_FLAG : 0); HL.B.B0 = (HL.B.B0 >> 1) | (HL.B.B0 & 0x80); AF.B.B0 |= ZeroTable[HL.B.B0]; break; case 0x2e: // SRA (HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (tempValue & 0x01 ? C_FLAG : 0); +AF.B.B0 = (tempValue & 0x01 ? GB_C_FLAG : 0); tempValue = (tempValue >> 1) | (tempValue & 0x80); AF.B.B0 |= ZeroTable[tempValue]; gbWriteMemory(HL.W, tempValue); break; case 0x2f: // SRA A -AF.B.B0 = (AF.B.B1 & 0x01 ? C_FLAG : 0); +AF.B.B0 = (AF.B.B1 & 0x01 ? GB_C_FLAG : 0); AF.B.B1 = (AF.B.B1 >> 1) | (AF.B.B1 & 0x80); AF.B.B0 |= ZeroTable[AF.B.B1]; break; @@ -406,317 +406,317 @@ AF.B.B0 = ZeroTable[AF.B.B1]; break; case 0x38: // SRL B -AF.B.B0 = (BC.B.B1 & 0x01) ? C_FLAG : 0; +AF.B.B0 = (BC.B.B1 & 0x01) ? GB_C_FLAG : 0; BC.B.B1 >>= 1; AF.B.B0 |= ZeroTable[BC.B.B1]; break; case 0x39: // SRL C -AF.B.B0 = (BC.B.B0 & 0x01) ? C_FLAG : 0; +AF.B.B0 = (BC.B.B0 & 0x01) ? GB_C_FLAG : 0; BC.B.B0 >>= 1; AF.B.B0 |= ZeroTable[BC.B.B0]; break; case 0x3a: // SRL D -AF.B.B0 = (DE.B.B1 & 0x01) ? C_FLAG : 0; +AF.B.B0 = (DE.B.B1 & 0x01) ? GB_C_FLAG : 0; DE.B.B1 >>= 1; AF.B.B0 |= ZeroTable[DE.B.B1]; break; case 0x3b: // SRL E -AF.B.B0 = (DE.B.B0 & 0x01) ? C_FLAG : 0; +AF.B.B0 = (DE.B.B0 & 0x01) ? GB_C_FLAG : 0; DE.B.B0 >>= 1; AF.B.B0 |= ZeroTable[DE.B.B0]; break; case 0x3c: // SRL H -AF.B.B0 = (HL.B.B1 & 0x01) ? C_FLAG : 0; +AF.B.B0 = (HL.B.B1 & 0x01) ? GB_C_FLAG : 0; HL.B.B1 >>= 1; AF.B.B0 |= ZeroTable[HL.B.B1]; break; case 0x3d: // SRL L -AF.B.B0 = (HL.B.B0 & 0x01) ? C_FLAG : 0; +AF.B.B0 = (HL.B.B0 & 0x01) ? GB_C_FLAG : 0; HL.B.B0 >>= 1; AF.B.B0 |= ZeroTable[HL.B.B0]; break; case 0x3e: // SRL (HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (tempValue & 0x01) ? C_FLAG : 0; +AF.B.B0 = (tempValue & 0x01) ? GB_C_FLAG : 0; tempValue >>= 1; AF.B.B0 |= ZeroTable[tempValue]; gbWriteMemory(HL.W, tempValue); break; case 0x3f: // SRL A -AF.B.B0 = (AF.B.B1 & 0x01) ? C_FLAG : 0; +AF.B.B0 = (AF.B.B1 & 0x01) ? GB_C_FLAG : 0; AF.B.B1 >>= 1; AF.B.B0 |= ZeroTable[AF.B.B1]; break; case 0x40: // BIT 0,B -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B1 & (1 << 0) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B1 & (1 << 0) ? 0 : GB_Z_FLAG); break; case 0x41: // BIT 0,C -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B0 & (1 << 0) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B0 & (1 << 0) ? 0 : GB_Z_FLAG); break; case 0x42: // BIT 0,D -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B1 & (1 << 0) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B1 & (1 << 0) ? 0 : GB_Z_FLAG); break; case 0x43: // BIT 0,E -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B0 & (1 << 0) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B0 & (1 << 0) ? 0 : GB_Z_FLAG); break; case 0x44: // BIT 0,H -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B1 & (1 << 0) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B1 & (1 << 0) ? 0 : GB_Z_FLAG); break; case 0x45: // BIT 0,L -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B0 & (1 << 0) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B0 & (1 << 0) ? 0 : GB_Z_FLAG); break; case 0x46: // BIT 0,(HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (tempValue & (1 << 0) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (tempValue & (1 << 0) ? 0 : GB_Z_FLAG); break; case 0x47: // BIT 0,A -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (AF.B.B1 & (1 << 0) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (AF.B.B1 & (1 << 0) ? 0 : GB_Z_FLAG); break; case 0x48: // BIT 1,B -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B1 & (1 << 1) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B1 & (1 << 1) ? 0 : GB_Z_FLAG); break; case 0x49: // BIT 1,C -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B0 & (1 << 1) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B0 & (1 << 1) ? 0 : GB_Z_FLAG); break; case 0x4a: // BIT 1,D -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B1 & (1 << 1) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B1 & (1 << 1) ? 0 : GB_Z_FLAG); break; case 0x4b: // BIT 1,E -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B0 & (1 << 1) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B0 & (1 << 1) ? 0 : GB_Z_FLAG); break; case 0x4c: // BIT 1,H -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B1 & (1 << 1) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B1 & (1 << 1) ? 0 : GB_Z_FLAG); break; case 0x4d: // BIT 1,L -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B0 & (1 << 1) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B0 & (1 << 1) ? 0 : GB_Z_FLAG); break; case 0x4e: // BIT 1,(HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (tempValue & (1 << 1) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (tempValue & (1 << 1) ? 0 : GB_Z_FLAG); break; case 0x4f: // BIT 1,A -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (AF.B.B1 & (1 << 1) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (AF.B.B1 & (1 << 1) ? 0 : GB_Z_FLAG); break; case 0x50: // BIT 2,B -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B1 & (1 << 2) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B1 & (1 << 2) ? 0 : GB_Z_FLAG); break; case 0x51: // BIT 2,C -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B0 & (1 << 2) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B0 & (1 << 2) ? 0 : GB_Z_FLAG); break; case 0x52: // BIT 2,D -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B1 & (1 << 2) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B1 & (1 << 2) ? 0 : GB_Z_FLAG); break; case 0x53: // BIT 2,E -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B0 & (1 << 2) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B0 & (1 << 2) ? 0 : GB_Z_FLAG); break; case 0x54: // BIT 2,H -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B1 & (1 << 2) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B1 & (1 << 2) ? 0 : GB_Z_FLAG); break; case 0x55: // BIT 2,L -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B0 & (1 << 2) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B0 & (1 << 2) ? 0 : GB_Z_FLAG); break; case 0x56: // BIT 2,(HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (tempValue & (1 << 2) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (tempValue & (1 << 2) ? 0 : GB_Z_FLAG); break; case 0x57: // BIT 2,A -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (AF.B.B1 & (1 << 2) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (AF.B.B1 & (1 << 2) ? 0 : GB_Z_FLAG); break; case 0x58: // BIT 3,B -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B1 & (1 << 3) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B1 & (1 << 3) ? 0 : GB_Z_FLAG); break; case 0x59: // BIT 3,C -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B0 & (1 << 3) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B0 & (1 << 3) ? 0 : GB_Z_FLAG); break; case 0x5a: // BIT 3,D -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B1 & (1 << 3) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B1 & (1 << 3) ? 0 : GB_Z_FLAG); break; case 0x5b: // BIT 3,E -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B0 & (1 << 3) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B0 & (1 << 3) ? 0 : GB_Z_FLAG); break; case 0x5c: // BIT 3,H -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B1 & (1 << 3) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B1 & (1 << 3) ? 0 : GB_Z_FLAG); break; case 0x5d: // BIT 3,L -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B0 & (1 << 3) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B0 & (1 << 3) ? 0 : GB_Z_FLAG); break; case 0x5e: // BIT 3,(HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (tempValue & (1 << 3) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (tempValue & (1 << 3) ? 0 : GB_Z_FLAG); break; case 0x5f: // BIT 3,A -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (AF.B.B1 & (1 << 3) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (AF.B.B1 & (1 << 3) ? 0 : GB_Z_FLAG); break; case 0x60: // BIT 4,B -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B1 & (1 << 4) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B1 & (1 << 4) ? 0 : GB_Z_FLAG); break; case 0x61: // BIT 4,C -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B0 & (1 << 4) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B0 & (1 << 4) ? 0 : GB_Z_FLAG); break; case 0x62: // BIT 4,D -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B1 & (1 << 4) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B1 & (1 << 4) ? 0 : GB_Z_FLAG); break; case 0x63: // BIT 4,E -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B0 & (1 << 4) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B0 & (1 << 4) ? 0 : GB_Z_FLAG); break; case 0x64: // BIT 4,H -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B1 & (1 << 4) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B1 & (1 << 4) ? 0 : GB_Z_FLAG); break; case 0x65: // BIT 4,L -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B0 & (1 << 4) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B0 & (1 << 4) ? 0 : GB_Z_FLAG); break; case 0x66: // BIT 4,(HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (tempValue & (1 << 4) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (tempValue & (1 << 4) ? 0 : GB_Z_FLAG); break; case 0x67: // BIT 4,A -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (AF.B.B1 & (1 << 4) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (AF.B.B1 & (1 << 4) ? 0 : GB_Z_FLAG); break; case 0x68: // BIT 5,B -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B1 & (1 << 5) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B1 & (1 << 5) ? 0 : GB_Z_FLAG); break; case 0x69: // BIT 5,C -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B0 & (1 << 5) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B0 & (1 << 5) ? 0 : GB_Z_FLAG); break; case 0x6a: // BIT 5,D -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B1 & (1 << 5) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B1 & (1 << 5) ? 0 : GB_Z_FLAG); break; case 0x6b: // BIT 5,E -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B0 & (1 << 5) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B0 & (1 << 5) ? 0 : GB_Z_FLAG); break; case 0x6c: // BIT 5,H -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B1 & (1 << 5) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B1 & (1 << 5) ? 0 : GB_Z_FLAG); break; case 0x6d: // BIT 5,L -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B0 & (1 << 5) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B0 & (1 << 5) ? 0 : GB_Z_FLAG); break; case 0x6e: // BIT 5,(HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (tempValue & (1 << 5) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (tempValue & (1 << 5) ? 0 : GB_Z_FLAG); break; case 0x6f: // BIT 5,A -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (AF.B.B1 & (1 << 5) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (AF.B.B1 & (1 << 5) ? 0 : GB_Z_FLAG); break; case 0x70: // BIT 6,B -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B1 & (1 << 6) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B1 & (1 << 6) ? 0 : GB_Z_FLAG); break; case 0x71: // BIT 6,C -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B0 & (1 << 6) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B0 & (1 << 6) ? 0 : GB_Z_FLAG); break; case 0x72: // BIT 6,D -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B1 & (1 << 6) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B1 & (1 << 6) ? 0 : GB_Z_FLAG); break; case 0x73: // BIT 6,E -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B0 & (1 << 6) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B0 & (1 << 6) ? 0 : GB_Z_FLAG); break; case 0x74: // BIT 6,H -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B1 & (1 << 6) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B1 & (1 << 6) ? 0 : GB_Z_FLAG); break; case 0x75: // BIT 6,L -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B0 & (1 << 6) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B0 & (1 << 6) ? 0 : GB_Z_FLAG); break; case 0x76: // BIT 6,(HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (tempValue & (1 << 6) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (tempValue & (1 << 6) ? 0 : GB_Z_FLAG); break; case 0x77: // BIT 6,A -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (AF.B.B1 & (1 << 6) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (AF.B.B1 & (1 << 6) ? 0 : GB_Z_FLAG); break; case 0x78: // BIT 7,B -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B1 & (1 << 7) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B1 & (1 << 7) ? 0 : GB_Z_FLAG); break; case 0x79: // BIT 7,C -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (BC.B.B0 & (1 << 7) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (BC.B.B0 & (1 << 7) ? 0 : GB_Z_FLAG); break; case 0x7a: // BIT 7,D -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B1 & (1 << 7) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B1 & (1 << 7) ? 0 : GB_Z_FLAG); break; case 0x7b: // BIT 7,E -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (DE.B.B0 & (1 << 7) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (DE.B.B0 & (1 << 7) ? 0 : GB_Z_FLAG); break; case 0x7c: // BIT 7,H -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B1 & (1 << 7) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B1 & (1 << 7) ? 0 : GB_Z_FLAG); break; case 0x7d: // BIT 7,L -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (HL.B.B0 & (1 << 7) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (HL.B.B0 & (1 << 7) ? 0 : GB_Z_FLAG); break; case 0x7e: // BIT 7,(HL) tempValue = gbReadMemory(HL.W); -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (tempValue & (1 << 7) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (tempValue & (1 << 7) ? 0 : GB_Z_FLAG); break; case 0x7f: // BIT 7,A -AF.B.B0 = (AF.B.B0 & C_FLAG) | H_FLAG | (AF.B.B1 & (1 << 7) ? 0 : Z_FLAG); +AF.B.B0 = (AF.B.B0 & GB_C_FLAG) | GB_H_FLAG | (AF.B.B1 & (1 << 7) ? 0 : GB_Z_FLAG); break; case 0x80: // RES 0,B diff --git a/src/gb/gbMemory.h b/src/gb/gbMemory.h index 997099ef..31f7d8b0 100644 --- a/src/gb/gbMemory.h +++ b/src/gb/gbMemory.h @@ -1,6 +1,7 @@ #ifndef GBMEMORY_H #define GBMEMORY_H +#include #include struct mapperMBC1 { diff --git a/src/gba/BreakpointStructures.h b/src/gba/BreakpointStructures.h index aa9c0b11..e55f1ded 100644 --- a/src/gba/BreakpointStructures.h +++ b/src/gba/BreakpointStructures.h @@ -1,6 +1,8 @@ #ifndef VBA_BKS_H #define VBA_BKS_H +#include + #define readWord(addr) \ ((map[(addr) >> 24].address[(addr)&map[(addr) >> 24].mask]) + ((map[(addr + 1) >> 24].address[(addr + 1) & map[(addr + 1) >> 24].mask]) << 8) + ((map[(addr + 2) >> 24].address[(addr + 2) & map[(addr + 2) >> 24].mask]) << 16) + ((map[(addr + 3) >> 24].address[(addr + 3) & map[(addr + 3) >> 24].mask]) << 24)) @@ -61,4 +63,4 @@ bool doBreak(struct ConditionalBreak* toTest); // uint8_t printConditionalsFromAddress(uint32_t address); // void printAllFlagConditionals(uint8_t flag, bool orMode); // void printAllFlagConditionalsWithAddress(uint32_t address, uint8_t flag, bool orMode); -#endif \ No newline at end of file +#endif diff --git a/src/gba/EEprom.h b/src/gba/EEprom.h index a3d25840..bf854f5f 100644 --- a/src/gba/EEprom.h +++ b/src/gba/EEprom.h @@ -1,6 +1,9 @@ #ifndef EEPROM_H #define EEPROM_H +#include +#include + #ifdef __LIBRETRO__ extern void eepromSaveGame(uint8_t*& data); extern void eepromReadGame(const uint8_t*& data, int version); diff --git a/src/gba/Flash.h b/src/gba/Flash.h index 3088f814..58cb0512 100644 --- a/src/gba/Flash.h +++ b/src/gba/Flash.h @@ -1,6 +1,9 @@ #ifndef FLASH_H #define FLASH_H +#include +#include + #define FLASH_128K_SZ 0x20000 #ifdef __LIBRETRO__ diff --git a/src/gba/Sram.h b/src/gba/Sram.h index fdc9aa01..52191b17 100644 --- a/src/gba/Sram.h +++ b/src/gba/Sram.h @@ -1,8 +1,10 @@ #ifndef SRAM_H #define SRAM_H -u8 sramRead(u32 address); -void sramWrite(u32 address, u8 byte); -void sramDelayedWrite(u32 address, u8 byte); +#include + +uint8_t sramRead(uint32_t address); +void sramWrite(uint32_t address, uint8_t byte); +void sramDelayedWrite(uint32_t address, uint8_t byte); #endif // SRAM_H diff --git a/src/wx/viewers.cpp b/src/wx/viewers.cpp index 1ec1bd6c..66af25f2 100644 --- a/src/wx/viewers.cpp +++ b/src/wx/viewers.cpp @@ -250,10 +250,10 @@ public: } void UpdateDis() { - Z->SetValue(AF.B.B0 & Z_FLAG); - N->SetValue(AF.B.B0 & N_FLAG); - H->SetValue(AF.B.B0 & H_FLAG); - C->SetValue(AF.B.B0 & C_FLAG); + Z->SetValue(AF.B.B0 & GB_Z_FLAG); + N->SetValue(AF.B.B0 & GB_N_FLAG); + H->SetValue(AF.B.B0 & GB_H_FLAG); + C->SetValue(AF.B.B0 & GB_C_FLAG); #define grv16(n, val) \ do { \ wxString s; \