rlm@1: case 0x00: rlm@1: // RLC B rlm@1: AF.B.B0 = (BC.B.B1 & 0x80)?C_FLAG:0; rlm@1: BC.B.B1 = ((BC.B.B1<<1) | (BC.B.B1>>7)) & 0xFF; rlm@1: AF.B.B0 |= ZeroTable[BC.B.B1]; rlm@1: break; rlm@1: case 0x01: rlm@1: // RLC C rlm@1: AF.B.B0 = (BC.B.B0 & 0x80)?C_FLAG:0; rlm@1: BC.B.B0 = ((BC.B.B0<<1) | (BC.B.B0>>7)) & 0xFF; rlm@1: AF.B.B0 |= ZeroTable[BC.B.B0]; rlm@1: break; rlm@1: case 0x02: rlm@1: // RLC D rlm@1: AF.B.B0 = (DE.B.B1 & 0x80)?C_FLAG:0; rlm@1: DE.B.B1 = ((DE.B.B1<<1) | (DE.B.B1>>7)) & 0xFF; rlm@1: AF.B.B0 |= ZeroTable[DE.B.B1]; rlm@1: break; rlm@1: case 0x03: rlm@1: // RLC E rlm@1: AF.B.B0 = (DE.B.B0 & 0x80)?C_FLAG:0; rlm@1: DE.B.B0 = ((DE.B.B0<<1) | (DE.B.B0>>7)) & 0xFF; rlm@1: AF.B.B0 |= ZeroTable[DE.B.B0]; rlm@1: break; rlm@1: case 0x04: rlm@1: // RLC H rlm@1: AF.B.B0 = (HL.B.B1 & 0x80)?C_FLAG:0; rlm@1: HL.B.B1 = ((HL.B.B1<<1) | (HL.B.B1>>7)) & 0xFF; rlm@1: AF.B.B0 |= ZeroTable[HL.B.B1]; rlm@1: break; rlm@1: case 0x05: rlm@1: // RLC L rlm@1: AF.B.B0 = (HL.B.B0 & 0x80)?C_FLAG:0; rlm@1: HL.B.B0 = ((HL.B.B0<<1) | (HL.B.B0>>7)) & 0xFF; rlm@1: AF.B.B0 |= ZeroTable[HL.B.B0]; rlm@1: break; rlm@1: case 0x06: rlm@1: // RLC (HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0 = (tempValue & 0x80)?C_FLAG:0; rlm@1: tempValue = ((tempValue<<1) | (tempValue>>7)) & 0xFF; rlm@1: AF.B.B0 |= ZeroTable[tempValue]; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x07: rlm@1: // RLC A rlm@1: AF.B.B0 = (AF.B.B1 & 0x80)?C_FLAG:0; rlm@1: AF.B.B1 = ((AF.B.B1<<1) | (AF.B.B1>>7)) & 0xFF; rlm@1: AF.B.B0 |= ZeroTable[AF.B.B1]; rlm@1: break; rlm@1: case 0x08: rlm@1: // RRC B rlm@1: AF.B.B0=(BC.B.B1&0x01 ? C_FLAG : 0); rlm@1: BC.B.B1=((BC.B.B1>>1)|(BC.B.B1<<7)) & 0xFF; rlm@1: AF.B.B0|=ZeroTable[BC.B.B1]; rlm@1: break; rlm@1: case 0x09: rlm@1: // RRC C rlm@1: AF.B.B0=(BC.B.B0&0x01 ? C_FLAG : 0); rlm@1: BC.B.B0=((BC.B.B0>>1)|(BC.B.B0<<7)) & 0xFF; rlm@1: AF.B.B0|=ZeroTable[BC.B.B0]; rlm@1: break; rlm@1: case 0x0a: rlm@1: // RRC D rlm@1: AF.B.B0=(DE.B.B1&0x01 ? C_FLAG : 0); rlm@1: DE.B.B1=((DE.B.B1>>1)|(DE.B.B1<<7)) & 0xFF; rlm@1: AF.B.B0|=ZeroTable[DE.B.B1]; rlm@1: break; rlm@1: case 0x0b: rlm@1: // RRC E rlm@1: AF.B.B0=(DE.B.B0&0x01 ? C_FLAG : 0); rlm@1: DE.B.B0=((DE.B.B0>>1)|(DE.B.B0<<7)) & 0xFF; rlm@1: AF.B.B0|=ZeroTable[DE.B.B0]; rlm@1: break; rlm@1: case 0x0c: rlm@1: // RRC H rlm@1: AF.B.B0=(HL.B.B1&0x01 ? C_FLAG : 0); rlm@1: HL.B.B1=((HL.B.B1>>1)|(HL.B.B1<<7)) & 0xFF; rlm@1: AF.B.B0|=ZeroTable[HL.B.B1]; rlm@1: break; rlm@1: case 0x0d: rlm@1: // RRC L rlm@1: AF.B.B0=(HL.B.B0&0x01 ? C_FLAG : 0); rlm@1: HL.B.B0=((HL.B.B0>>1)|(HL.B.B0<<7)) & 0xFF; rlm@1: AF.B.B0|=ZeroTable[HL.B.B0]; rlm@1: break; rlm@1: case 0x0e: rlm@1: // RRC (HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(tempValue&0x01 ? C_FLAG : 0); rlm@1: tempValue=((tempValue>>1)|(tempValue<<7)) & 0xFF; rlm@1: AF.B.B0|=ZeroTable[tempValue]; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x0f: rlm@1: // RRC A rlm@1: AF.B.B0=(AF.B.B1&0x01 ? C_FLAG : 0); rlm@1: AF.B.B1=((AF.B.B1>>1)|(AF.B.B1<<7)) & 0xFF; rlm@1: AF.B.B0|=ZeroTable[AF.B.B1]; rlm@1: break; rlm@1: case 0x10: rlm@1: // RL B rlm@1: if(BC.B.B1&0x80) { rlm@1: BC.B.B1=((BC.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[BC.B.B1]|C_FLAG; rlm@1: } else { rlm@1: BC.B.B1=((BC.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[BC.B.B1]; rlm@1: } rlm@1: break; rlm@1: case 0x11: rlm@1: // RL C rlm@1: if(BC.B.B0&0x80) { rlm@1: BC.B.B0=((BC.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[BC.B.B0]|C_FLAG; rlm@1: } else { rlm@1: BC.B.B0=((BC.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[BC.B.B0]; rlm@1: } rlm@1: break; rlm@1: case 0x12: rlm@1: // RL D rlm@1: if(DE.B.B1&0x80) { rlm@1: DE.B.B1=((DE.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[DE.B.B1]|C_FLAG; rlm@1: } else { rlm@1: DE.B.B1=((DE.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[DE.B.B1]; rlm@1: } rlm@1: break; rlm@1: case 0x13: rlm@1: // RL E rlm@1: if(DE.B.B0&0x80) { rlm@1: DE.B.B0=((DE.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[DE.B.B0]|C_FLAG; rlm@1: } else { rlm@1: DE.B.B0=((DE.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[DE.B.B0]; rlm@1: } rlm@1: break; rlm@1: case 0x14: rlm@1: // RL H rlm@1: if(HL.B.B1&0x80) { rlm@1: HL.B.B1=((HL.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[HL.B.B1]|C_FLAG; rlm@1: } else { rlm@1: HL.B.B1=((HL.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[HL.B.B1]; rlm@1: } rlm@1: break; rlm@1: case 0x15: rlm@1: // RL L rlm@1: if(HL.B.B0&0x80) { rlm@1: HL.B.B0=((HL.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[HL.B.B0]|C_FLAG; rlm@1: } else { rlm@1: HL.B.B0=((HL.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[HL.B.B0]; rlm@1: } rlm@1: break; rlm@1: case 0x16: rlm@1: // RL (HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: if(tempValue&0x80) { rlm@1: tempValue=((tempValue<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[tempValue]|C_FLAG; rlm@1: } else { rlm@1: tempValue=((tempValue<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[tempValue]; rlm@1: } rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x17: rlm@1: // RL A rlm@1: if(AF.B.B1&0x80) { rlm@1: AF.B.B1=((AF.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[AF.B.B1]|C_FLAG; rlm@1: } else { rlm@1: AF.B.B1=((AF.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF; rlm@1: AF.B.B0=ZeroTable[AF.B.B1]; rlm@1: } rlm@1: break; rlm@1: case 0x18: rlm@1: // RR B rlm@1: if(BC.B.B1&0x01) { rlm@1: BC.B.B1=(BC.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[BC.B.B1]|C_FLAG; rlm@1: } else { rlm@1: BC.B.B1=(BC.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[BC.B.B1]; rlm@1: } rlm@1: break; rlm@1: case 0x19: rlm@1: // RR C rlm@1: if(BC.B.B0&0x01) { rlm@1: BC.B.B0=(BC.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[BC.B.B0]|C_FLAG; rlm@1: } else { rlm@1: BC.B.B0=(BC.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[BC.B.B0]; rlm@1: } rlm@1: break; rlm@1: case 0x1a: rlm@1: // RR D rlm@1: if(DE.B.B1&0x01) { rlm@1: DE.B.B1=(DE.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[DE.B.B1]|C_FLAG; rlm@1: } else { rlm@1: DE.B.B1=(DE.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[DE.B.B1]; rlm@1: } rlm@1: break; rlm@1: case 0x1b: rlm@1: // RR E rlm@1: if(DE.B.B0&0x01) { rlm@1: DE.B.B0=(DE.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[DE.B.B0]|C_FLAG; rlm@1: } else { rlm@1: DE.B.B0=(DE.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[DE.B.B0]; rlm@1: } rlm@1: break; rlm@1: case 0x1c: rlm@1: // RR H rlm@1: if(HL.B.B1&0x01) { rlm@1: HL.B.B1=(HL.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[HL.B.B1]|C_FLAG; rlm@1: } else { rlm@1: HL.B.B1=(HL.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[HL.B.B1]; rlm@1: } rlm@1: break; rlm@1: case 0x1d: rlm@1: // RR L rlm@1: if(HL.B.B0&0x01) { rlm@1: HL.B.B0=(HL.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[HL.B.B0]|C_FLAG; rlm@1: } else { rlm@1: HL.B.B0=(HL.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[HL.B.B0]; rlm@1: } rlm@1: break; rlm@1: case 0x1e: rlm@1: // RR (HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: if(tempValue&0x01) { rlm@1: tempValue=(tempValue>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[tempValue]|C_FLAG; rlm@1: } else { rlm@1: tempValue=(tempValue>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[tempValue]; rlm@1: } rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x1f: rlm@1: // RR A rlm@1: if(AF.B.B1&0x01) { rlm@1: AF.B.B1=(AF.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[AF.B.B1]|C_FLAG; rlm@1: } else { rlm@1: AF.B.B1=(AF.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); rlm@1: AF.B.B0=ZeroTable[AF.B.B1]; rlm@1: } rlm@1: break; rlm@1: case 0x20: rlm@1: // SLA B rlm@1: AF.B.B0=(BC.B.B1&0x80?C_FLAG : 0); rlm@1: BC.B.B1<<=1; rlm@1: AF.B.B0|=ZeroTable[BC.B.B1]; rlm@1: break; rlm@1: case 0x21: rlm@1: // SLA C rlm@1: AF.B.B0=(BC.B.B0&0x80?C_FLAG : 0); rlm@1: BC.B.B0<<=1; rlm@1: AF.B.B0|=ZeroTable[BC.B.B0]; rlm@1: break; rlm@1: case 0x22: rlm@1: // SLA D rlm@1: AF.B.B0=(DE.B.B1&0x80?C_FLAG : 0); rlm@1: DE.B.B1<<=1; rlm@1: AF.B.B0|=ZeroTable[DE.B.B1]; rlm@1: break; rlm@1: case 0x23: rlm@1: // SLA E rlm@1: AF.B.B0=(DE.B.B0&0x80?C_FLAG : 0); rlm@1: DE.B.B0<<=1; rlm@1: AF.B.B0|=ZeroTable[DE.B.B0]; rlm@1: break; rlm@1: case 0x24: rlm@1: // SLA H rlm@1: AF.B.B0=(HL.B.B1&0x80?C_FLAG : 0); rlm@1: HL.B.B1<<=1; rlm@1: AF.B.B0|=ZeroTable[HL.B.B1]; rlm@1: break; rlm@1: case 0x25: rlm@1: // SLA L rlm@1: AF.B.B0=(HL.B.B0&0x80?C_FLAG : 0); rlm@1: HL.B.B0<<=1; rlm@1: AF.B.B0|=ZeroTable[HL.B.B0]; rlm@1: break; rlm@1: case 0x26: rlm@1: // SLA (HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(tempValue&0x80?C_FLAG : 0); rlm@1: tempValue<<=1; rlm@1: AF.B.B0|=ZeroTable[tempValue]; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x27: rlm@1: // SLA A rlm@1: AF.B.B0=(AF.B.B1&0x80?C_FLAG : 0); rlm@1: AF.B.B1<<=1; rlm@1: AF.B.B0|=ZeroTable[AF.B.B1]; rlm@1: break; rlm@1: case 0x28: rlm@1: // SRA B rlm@1: AF.B.B0=(BC.B.B1&0x01 ? C_FLAG: 0); rlm@1: BC.B.B1=(BC.B.B1>>1)|(BC.B.B1&0x80); rlm@1: AF.B.B0|=ZeroTable[BC.B.B1]; rlm@1: break; rlm@1: case 0x29: rlm@1: // SRA C rlm@1: AF.B.B0=(BC.B.B0&0x01 ? C_FLAG: 0); rlm@1: BC.B.B0=(BC.B.B0>>1)|(BC.B.B0&0x80); rlm@1: AF.B.B0|=ZeroTable[BC.B.B0]; rlm@1: break; rlm@1: case 0x2a: rlm@1: // SRA D rlm@1: AF.B.B0=(DE.B.B1&0x01 ? C_FLAG: 0); rlm@1: DE.B.B1=(DE.B.B1>>1)|(DE.B.B1&0x80); rlm@1: AF.B.B0|=ZeroTable[DE.B.B1]; rlm@1: break; rlm@1: case 0x2b: rlm@1: // SRA E rlm@1: AF.B.B0=(DE.B.B0&0x01 ? C_FLAG: 0); rlm@1: DE.B.B0=(DE.B.B0>>1)|(DE.B.B0&0x80); rlm@1: AF.B.B0|=ZeroTable[DE.B.B0]; rlm@1: break; rlm@1: case 0x2c: rlm@1: // SRA H rlm@1: AF.B.B0=(HL.B.B1&0x01 ? C_FLAG: 0); rlm@1: HL.B.B1=(HL.B.B1>>1)|(HL.B.B1&0x80); rlm@1: AF.B.B0|=ZeroTable[HL.B.B1]; rlm@1: break; rlm@1: case 0x2d: rlm@1: // SRA L rlm@1: AF.B.B0=(HL.B.B0&0x01 ? C_FLAG: 0); rlm@1: HL.B.B0=(HL.B.B0>>1)|(HL.B.B0&0x80); rlm@1: AF.B.B0|=ZeroTable[HL.B.B0]; rlm@1: break; rlm@1: case 0x2e: rlm@1: // SRA (HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(tempValue&0x01 ? C_FLAG: 0); rlm@1: tempValue=(tempValue>>1)|(tempValue&0x80); rlm@1: AF.B.B0|=ZeroTable[tempValue]; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x2f: rlm@1: // SRA A rlm@1: AF.B.B0=(AF.B.B1&0x01 ? C_FLAG: 0); rlm@1: AF.B.B1=(AF.B.B1>>1)|(AF.B.B1&0x80); rlm@1: AF.B.B0|=ZeroTable[AF.B.B1]; rlm@1: break; rlm@1: case 0x30: rlm@1: // SWAP B rlm@1: BC.B.B1 = (BC.B.B1&0xf0)>>4 | (BC.B.B1&0x0f)<<4; rlm@1: AF.B.B0 = ZeroTable[BC.B.B1]; rlm@1: break; rlm@1: case 0x31: rlm@1: // SWAP C rlm@1: BC.B.B0 = (BC.B.B0&0xf0)>>4 | (BC.B.B0&0x0f)<<4; rlm@1: AF.B.B0 = ZeroTable[BC.B.B0]; rlm@1: break; rlm@1: case 0x32: rlm@1: // SWAP D rlm@1: DE.B.B1 = (DE.B.B1&0xf0)>>4 | (DE.B.B1&0x0f)<<4; rlm@1: AF.B.B0 = ZeroTable[DE.B.B1]; rlm@1: break; rlm@1: case 0x33: rlm@1: // SWAP E rlm@1: DE.B.B0 = (DE.B.B0&0xf0)>>4 | (DE.B.B0&0x0f)<<4; rlm@1: AF.B.B0 = ZeroTable[DE.B.B0]; rlm@1: break; rlm@1: case 0x34: rlm@1: // SWAP H rlm@1: HL.B.B1 = (HL.B.B1&0xf0)>>4 | (HL.B.B1&0x0f)<<4; rlm@1: AF.B.B0 = ZeroTable[HL.B.B1]; rlm@1: break; rlm@1: case 0x35: rlm@1: // SWAP L rlm@1: HL.B.B0 = (HL.B.B0&0xf0)>>4 | (HL.B.B0&0x0f)<<4; rlm@1: AF.B.B0 = ZeroTable[HL.B.B0]; rlm@1: break; rlm@1: case 0x36: rlm@1: // SWAP (HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue = (tempValue&0xf0)>>4 | (tempValue&0x0f)<<4; rlm@1: AF.B.B0 = ZeroTable[tempValue]; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x37: rlm@1: // SWAP A rlm@1: AF.B.B1 = (AF.B.B1&0xf0)>>4 | (AF.B.B1&0x0f)<<4; rlm@1: AF.B.B0 = ZeroTable[AF.B.B1]; rlm@1: break; rlm@1: case 0x38: rlm@1: // SRL B rlm@1: AF.B.B0=(BC.B.B1&0x01)?C_FLAG:0; rlm@1: BC.B.B1>>=1; rlm@1: AF.B.B0|=ZeroTable[BC.B.B1]; rlm@1: break; rlm@1: case 0x39: rlm@1: // SRL C rlm@1: AF.B.B0=(BC.B.B0&0x01)?C_FLAG:0; rlm@1: BC.B.B0>>=1; rlm@1: AF.B.B0|=ZeroTable[BC.B.B0]; rlm@1: break; rlm@1: case 0x3a: rlm@1: // SRL D rlm@1: AF.B.B0=(DE.B.B1&0x01)?C_FLAG:0; rlm@1: DE.B.B1>>=1; rlm@1: AF.B.B0|=ZeroTable[DE.B.B1]; rlm@1: break; rlm@1: case 0x3b: rlm@1: // SRL E rlm@1: AF.B.B0=(DE.B.B0&0x01)?C_FLAG:0; rlm@1: DE.B.B0>>=1; rlm@1: AF.B.B0|=ZeroTable[DE.B.B0]; rlm@1: break; rlm@1: case 0x3c: rlm@1: // SRL H rlm@1: AF.B.B0=(HL.B.B1&0x01)?C_FLAG:0; rlm@1: HL.B.B1>>=1; rlm@1: AF.B.B0|=ZeroTable[HL.B.B1]; rlm@1: break; rlm@1: case 0x3d: rlm@1: // SRL L rlm@1: AF.B.B0=(HL.B.B0&0x01)?C_FLAG:0; rlm@1: HL.B.B0>>=1; rlm@1: AF.B.B0|=ZeroTable[HL.B.B0]; rlm@1: break; rlm@1: case 0x3e: rlm@1: // SRL (HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(tempValue&0x01)?C_FLAG:0; rlm@1: tempValue>>=1; rlm@1: AF.B.B0|=ZeroTable[tempValue]; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x3f: rlm@1: // SRL A rlm@1: AF.B.B0=(AF.B.B1&0x01)?C_FLAG:0; rlm@1: AF.B.B1>>=1; rlm@1: AF.B.B0|=ZeroTable[AF.B.B1]; rlm@1: break; rlm@1: case 0x40: rlm@1: // BIT 0,B rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<0)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x41: rlm@1: // BIT 0,C rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<0)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x42: rlm@1: // BIT 0,D rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<0)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x43: rlm@1: // BIT 0,E rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<0)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x44: rlm@1: // BIT 0,H rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<0)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x45: rlm@1: // BIT 0,L rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<0)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x46: rlm@1: // BIT 0,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<0)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x47: rlm@1: // BIT 0,A rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<0)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x48: rlm@1: // BIT 1,B rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<1)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x49: rlm@1: // BIT 1,C rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<1)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x4a: rlm@1: // BIT 1,D rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<1)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x4b: rlm@1: // BIT 1,E rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<1)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x4c: rlm@1: // BIT 1,H rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<1)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x4d: rlm@1: // BIT 1,L rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<1)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x4e: rlm@1: // BIT 1,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<1)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x4f: rlm@1: // BIT 1,A rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<1)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x50: rlm@1: // BIT 2,B rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<2)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x51: rlm@1: // BIT 2,C rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<2)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x52: rlm@1: // BIT 2,D rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<2)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x53: rlm@1: // BIT 2,E rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<2)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x54: rlm@1: // BIT 2,H rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<2)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x55: rlm@1: // BIT 2,L rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<2)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x56: rlm@1: // BIT 2,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<2)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x57: rlm@1: // BIT 2,A rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<2)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x58: rlm@1: // BIT 3,B rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<3)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x59: rlm@1: // BIT 3,C rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<3)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x5a: rlm@1: // BIT 3,D rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<3)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x5b: rlm@1: // BIT 3,E rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<3)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x5c: rlm@1: // BIT 3,H rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<3)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x5d: rlm@1: // BIT 3,L rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<3)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x5e: rlm@1: // BIT 3,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<3)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x5f: rlm@1: // BIT 3,A rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<3)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x60: rlm@1: // BIT 4,B rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<4)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x61: rlm@1: // BIT 4,C rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<4)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x62: rlm@1: // BIT 4,D rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<4)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x63: rlm@1: // BIT 4,E rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<4)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x64: rlm@1: // BIT 4,H rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<4)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x65: rlm@1: // BIT 4,L rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<4)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x66: rlm@1: // BIT 4,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<4)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x67: rlm@1: // BIT 4,A rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<4)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x68: rlm@1: // BIT 5,B rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<5)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x69: rlm@1: // BIT 5,C rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<5)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x6a: rlm@1: // BIT 5,D rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<5)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x6b: rlm@1: // BIT 5,E rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<5)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x6c: rlm@1: // BIT 5,H rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<5)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x6d: rlm@1: // BIT 5,L rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<5)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x6e: rlm@1: // BIT 5,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<5)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x6f: rlm@1: // BIT 5,A rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<5)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x70: rlm@1: // BIT 6,B rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<6)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x71: rlm@1: // BIT 6,C rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<6)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x72: rlm@1: // BIT 6,D rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<6)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x73: rlm@1: // BIT 6,E rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<6)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x74: rlm@1: // BIT 6,H rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<6)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x75: rlm@1: // BIT 6,L rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<6)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x76: rlm@1: // BIT 6,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<6)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x77: rlm@1: // BIT 6,A rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<6)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x78: rlm@1: // BIT 7,B rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<7)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x79: rlm@1: // BIT 7,C rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<7)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x7a: rlm@1: // BIT 7,D rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<7)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x7b: rlm@1: // BIT 7,E rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<7)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x7c: rlm@1: // BIT 7,H rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<7)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x7d: rlm@1: // BIT 7,L rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<7)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x7e: rlm@1: // BIT 7,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<7)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x7f: rlm@1: // BIT 7,A rlm@1: AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<7)? 0:Z_FLAG); rlm@1: break; rlm@1: case 0x80: rlm@1: // RES 0,B rlm@1: BC.B.B1&=~(1<<0); rlm@1: break; rlm@1: case 0x81: rlm@1: // RES 0,C rlm@1: BC.B.B0&=~(1<<0); rlm@1: break; rlm@1: case 0x82: rlm@1: // RES 0,D rlm@1: DE.B.B1&=~(1<<0); rlm@1: break; rlm@1: case 0x83: rlm@1: // RES 0,E rlm@1: DE.B.B0&=~(1<<0); rlm@1: break; rlm@1: case 0x84: rlm@1: // RES 0,H rlm@1: HL.B.B1&=~(1<<0); rlm@1: break; rlm@1: case 0x85: rlm@1: // RES 0,L rlm@1: HL.B.B0&=~(1<<0); rlm@1: break; rlm@1: case 0x86: rlm@1: // RES 0,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue&=~(1<<0); rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x87: rlm@1: // RES 0,A rlm@1: AF.B.B1&=~(1<<0); rlm@1: break; rlm@1: case 0x88: rlm@1: // RES 1,B rlm@1: BC.B.B1&=~(1<<1); rlm@1: break; rlm@1: case 0x89: rlm@1: // RES 1,C rlm@1: BC.B.B0&=~(1<<1); rlm@1: break; rlm@1: case 0x8a: rlm@1: // RES 1,D rlm@1: DE.B.B1&=~(1<<1); rlm@1: break; rlm@1: case 0x8b: rlm@1: // RES 1,E rlm@1: DE.B.B0&=~(1<<1); rlm@1: break; rlm@1: case 0x8c: rlm@1: // RES 1,H rlm@1: HL.B.B1&=~(1<<1); rlm@1: break; rlm@1: case 0x8d: rlm@1: // RES 1,L rlm@1: HL.B.B0&=~(1<<1); rlm@1: break; rlm@1: case 0x8e: rlm@1: // RES 1,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue&=~(1<<1); rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x8f: rlm@1: // RES 1,A rlm@1: AF.B.B1&=~(1<<1); rlm@1: break; rlm@1: case 0x90: rlm@1: // RES 2,B rlm@1: BC.B.B1&=~(1<<2); rlm@1: break; rlm@1: case 0x91: rlm@1: // RES 2,C rlm@1: BC.B.B0&=~(1<<2); rlm@1: break; rlm@1: case 0x92: rlm@1: // RES 2,D rlm@1: DE.B.B1&=~(1<<2); rlm@1: break; rlm@1: case 0x93: rlm@1: // RES 2,E rlm@1: DE.B.B0&=~(1<<2); rlm@1: break; rlm@1: case 0x94: rlm@1: // RES 2,H rlm@1: HL.B.B1&=~(1<<2); rlm@1: break; rlm@1: case 0x95: rlm@1: // RES 2,L rlm@1: HL.B.B0&=~(1<<2); rlm@1: break; rlm@1: case 0x96: rlm@1: // RES 2,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue&=~(1<<2); rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x97: rlm@1: // RES 2,A rlm@1: AF.B.B1&=~(1<<2); rlm@1: break; rlm@1: case 0x98: rlm@1: // RES 3,B rlm@1: BC.B.B1&=~(1<<3); rlm@1: break; rlm@1: case 0x99: rlm@1: // RES 3,C rlm@1: BC.B.B0&=~(1<<3); rlm@1: break; rlm@1: case 0x9a: rlm@1: // RES 3,D rlm@1: DE.B.B1&=~(1<<3); rlm@1: break; rlm@1: case 0x9b: rlm@1: // RES 3,E rlm@1: DE.B.B0&=~(1<<3); rlm@1: break; rlm@1: case 0x9c: rlm@1: // RES 3,H rlm@1: HL.B.B1&=~(1<<3); rlm@1: break; rlm@1: case 0x9d: rlm@1: // RES 3,L rlm@1: HL.B.B0&=~(1<<3); rlm@1: break; rlm@1: case 0x9e: rlm@1: // RES 3,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue&=~(1<<3); rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0x9f: rlm@1: // RES 3,A rlm@1: AF.B.B1&=~(1<<3); rlm@1: break; rlm@1: case 0xa0: rlm@1: // RES 4,B rlm@1: BC.B.B1&=~(1<<4); rlm@1: break; rlm@1: case 0xa1: rlm@1: // RES 4,C rlm@1: BC.B.B0&=~(1<<4); rlm@1: break; rlm@1: case 0xa2: rlm@1: // RES 4,D rlm@1: DE.B.B1&=~(1<<4); rlm@1: break; rlm@1: case 0xa3: rlm@1: // RES 4,E rlm@1: DE.B.B0&=~(1<<4); rlm@1: break; rlm@1: case 0xa4: rlm@1: // RES 4,H rlm@1: HL.B.B1&=~(1<<4); rlm@1: break; rlm@1: case 0xa5: rlm@1: // RES 4,L rlm@1: HL.B.B0&=~(1<<4); rlm@1: break; rlm@1: case 0xa6: rlm@1: // RES 4,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue&=~(1<<4); rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xa7: rlm@1: // RES 4,A rlm@1: AF.B.B1&=~(1<<4); rlm@1: break; rlm@1: case 0xa8: rlm@1: // RES 5,B rlm@1: BC.B.B1&=~(1<<5); rlm@1: break; rlm@1: case 0xa9: rlm@1: // RES 5,C rlm@1: BC.B.B0&=~(1<<5); rlm@1: break; rlm@1: case 0xaa: rlm@1: // RES 5,D rlm@1: DE.B.B1&=~(1<<5); rlm@1: break; rlm@1: case 0xab: rlm@1: // RES 5,E rlm@1: DE.B.B0&=~(1<<5); rlm@1: break; rlm@1: case 0xac: rlm@1: // RES 5,H rlm@1: HL.B.B1&=~(1<<5); rlm@1: break; rlm@1: case 0xad: rlm@1: // RES 5,L rlm@1: HL.B.B0&=~(1<<5); rlm@1: break; rlm@1: case 0xae: rlm@1: // RES 5,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue&=~(1<<5); rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xaf: rlm@1: // RES 5,A rlm@1: AF.B.B1&=~(1<<5); rlm@1: break; rlm@1: case 0xb0: rlm@1: // RES 6,B rlm@1: BC.B.B1&=~(1<<6); rlm@1: break; rlm@1: case 0xb1: rlm@1: // RES 6,C rlm@1: BC.B.B0&=~(1<<6); rlm@1: break; rlm@1: case 0xb2: rlm@1: // RES 6,D rlm@1: DE.B.B1&=~(1<<6); rlm@1: break; rlm@1: case 0xb3: rlm@1: // RES 6,E rlm@1: DE.B.B0&=~(1<<6); rlm@1: break; rlm@1: case 0xb4: rlm@1: // RES 6,H rlm@1: HL.B.B1&=~(1<<6); rlm@1: break; rlm@1: case 0xb5: rlm@1: // RES 6,L rlm@1: HL.B.B0&=~(1<<6); rlm@1: break; rlm@1: case 0xb6: rlm@1: // RES 6,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue&=~(1<<6); rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xb7: rlm@1: // RES 6,A rlm@1: AF.B.B1&=~(1<<6); rlm@1: break; rlm@1: case 0xb8: rlm@1: // RES 7,B rlm@1: BC.B.B1&=~(1<<7); rlm@1: break; rlm@1: case 0xb9: rlm@1: // RES 7,C rlm@1: BC.B.B0&=~(1<<7); rlm@1: break; rlm@1: case 0xba: rlm@1: // RES 7,D rlm@1: DE.B.B1&=~(1<<7); rlm@1: break; rlm@1: case 0xbb: rlm@1: // RES 7,E rlm@1: DE.B.B0&=~(1<<7); rlm@1: break; rlm@1: case 0xbc: rlm@1: // RES 7,H rlm@1: HL.B.B1&=~(1<<7); rlm@1: break; rlm@1: case 0xbd: rlm@1: // RES 7,L rlm@1: HL.B.B0&=~(1<<7); rlm@1: break; rlm@1: case 0xbe: rlm@1: // RES 7,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue&=~(1<<7); rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xbf: rlm@1: // RES 7,A rlm@1: AF.B.B1&=~(1<<7); rlm@1: break; rlm@1: case 0xc0: rlm@1: // SET 0,B rlm@1: BC.B.B1|=1<<0; rlm@1: break; rlm@1: case 0xc1: rlm@1: // SET 0,C rlm@1: BC.B.B0|=1<<0; rlm@1: break; rlm@1: case 0xc2: rlm@1: // SET 0,D rlm@1: DE.B.B1|=1<<0; rlm@1: break; rlm@1: case 0xc3: rlm@1: // SET 0,E rlm@1: DE.B.B0|=1<<0; rlm@1: break; rlm@1: case 0xc4: rlm@1: // SET 0,H rlm@1: HL.B.B1|=1<<0; rlm@1: break; rlm@1: case 0xc5: rlm@1: // SET 0,L rlm@1: HL.B.B0|=1<<0; rlm@1: break; rlm@1: case 0xc6: rlm@1: // SET 0,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue|=1<<0; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xc7: rlm@1: // SET 0,A rlm@1: AF.B.B1|=1<<0; rlm@1: break; rlm@1: case 0xc8: rlm@1: // SET 1,B rlm@1: BC.B.B1|=1<<1; rlm@1: break; rlm@1: case 0xc9: rlm@1: // SET 1,C rlm@1: BC.B.B0|=1<<1; rlm@1: break; rlm@1: case 0xca: rlm@1: // SET 1,D rlm@1: DE.B.B1|=1<<1; rlm@1: break; rlm@1: case 0xcb: rlm@1: // SET 1,E rlm@1: DE.B.B0|=1<<1; rlm@1: break; rlm@1: case 0xcc: rlm@1: // SET 1,H rlm@1: HL.B.B1|=1<<1; rlm@1: break; rlm@1: case 0xcd: rlm@1: // SET 1,L rlm@1: HL.B.B0|=1<<1; rlm@1: break; rlm@1: case 0xce: rlm@1: // SET 1,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue|=1<<1; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xcf: rlm@1: // SET 1,A rlm@1: AF.B.B1|=1<<1; rlm@1: break; rlm@1: case 0xd0: rlm@1: // SET 2,B rlm@1: BC.B.B1|=1<<2; rlm@1: break; rlm@1: case 0xd1: rlm@1: // SET 2,C rlm@1: BC.B.B0|=1<<2; rlm@1: break; rlm@1: case 0xd2: rlm@1: // SET 2,D rlm@1: DE.B.B1|=1<<2; rlm@1: break; rlm@1: case 0xd3: rlm@1: // SET 2,E rlm@1: DE.B.B0|=1<<2; rlm@1: break; rlm@1: case 0xd4: rlm@1: // SET 2,H rlm@1: HL.B.B1|=1<<2; rlm@1: break; rlm@1: case 0xd5: rlm@1: // SET 2,L rlm@1: HL.B.B0|=1<<2; rlm@1: break; rlm@1: case 0xd6: rlm@1: // SET 2,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue|=1<<2; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xd7: rlm@1: // SET 2,A rlm@1: AF.B.B1|=1<<2; rlm@1: break; rlm@1: case 0xd8: rlm@1: // SET 3,B rlm@1: BC.B.B1|=1<<3; rlm@1: break; rlm@1: case 0xd9: rlm@1: // SET 3,C rlm@1: BC.B.B0|=1<<3; rlm@1: break; rlm@1: case 0xda: rlm@1: // SET 3,D rlm@1: DE.B.B1|=1<<3; rlm@1: break; rlm@1: case 0xdb: rlm@1: // SET 3,E rlm@1: DE.B.B0|=1<<3; rlm@1: break; rlm@1: case 0xdc: rlm@1: // SET 3,H rlm@1: HL.B.B1|=1<<3; rlm@1: break; rlm@1: case 0xdd: rlm@1: // SET 3,L rlm@1: HL.B.B0|=1<<3; rlm@1: break; rlm@1: case 0xde: rlm@1: // SET 3,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue|=1<<3; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xdf: rlm@1: // SET 3,A rlm@1: AF.B.B1|=1<<3; rlm@1: break; rlm@1: case 0xe0: rlm@1: // SET 4,B rlm@1: BC.B.B1|=1<<4; rlm@1: break; rlm@1: case 0xe1: rlm@1: // SET 4,C rlm@1: BC.B.B0|=1<<4; rlm@1: break; rlm@1: case 0xe2: rlm@1: // SET 4,D rlm@1: DE.B.B1|=1<<4; rlm@1: break; rlm@1: case 0xe3: rlm@1: // SET 4,E rlm@1: DE.B.B0|=1<<4; rlm@1: break; rlm@1: case 0xe4: rlm@1: // SET 4,H rlm@1: HL.B.B1|=1<<4; rlm@1: break; rlm@1: case 0xe5: rlm@1: // SET 4,L rlm@1: HL.B.B0|=1<<4; rlm@1: break; rlm@1: case 0xe6: rlm@1: // SET 4,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue|=1<<4; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xe7: rlm@1: // SET 4,A rlm@1: AF.B.B1|=1<<4; rlm@1: break; rlm@1: case 0xe8: rlm@1: // SET 5,B rlm@1: BC.B.B1|=1<<5; rlm@1: break; rlm@1: case 0xe9: rlm@1: // SET 5,C rlm@1: BC.B.B0|=1<<5; rlm@1: break; rlm@1: case 0xea: rlm@1: // SET 5,D rlm@1: DE.B.B1|=1<<5; rlm@1: break; rlm@1: case 0xeb: rlm@1: // SET 5,E rlm@1: DE.B.B0|=1<<5; rlm@1: break; rlm@1: case 0xec: rlm@1: // SET 5,H rlm@1: HL.B.B1|=1<<5; rlm@1: break; rlm@1: case 0xed: rlm@1: // SET 5,L rlm@1: HL.B.B0|=1<<5; rlm@1: break; rlm@1: case 0xee: rlm@1: // SET 5,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue|=1<<5; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xef: rlm@1: // SET 5,A rlm@1: AF.B.B1|=1<<5; rlm@1: break; rlm@1: case 0xf0: rlm@1: // SET 6,B rlm@1: BC.B.B1|=1<<6; rlm@1: break; rlm@1: case 0xf1: rlm@1: // SET 6,C rlm@1: BC.B.B0|=1<<6; rlm@1: break; rlm@1: case 0xf2: rlm@1: // SET 6,D rlm@1: DE.B.B1|=1<<6; rlm@1: break; rlm@1: case 0xf3: rlm@1: // SET 6,E rlm@1: DE.B.B0|=1<<6; rlm@1: break; rlm@1: case 0xf4: rlm@1: // SET 6,H rlm@1: HL.B.B1|=1<<6; rlm@1: break; rlm@1: case 0xf5: rlm@1: // SET 6,L rlm@1: HL.B.B0|=1<<6; rlm@1: break; rlm@1: case 0xf6: rlm@1: // SET 6,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue|=1<<6; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xf7: rlm@1: // SET 6,A rlm@1: AF.B.B1|=1<<6; rlm@1: break; rlm@1: case 0xf8: rlm@1: // SET 7,B rlm@1: BC.B.B1|=1<<7; rlm@1: break; rlm@1: case 0xf9: rlm@1: // SET 7,C rlm@1: BC.B.B0|=1<<7; rlm@1: break; rlm@1: case 0xfa: rlm@1: // SET 7,D rlm@1: DE.B.B1|=1<<7; rlm@1: break; rlm@1: case 0xfb: rlm@1: // SET 7,E rlm@1: DE.B.B0|=1<<7; rlm@1: break; rlm@1: case 0xfc: rlm@1: // SET 7,H rlm@1: HL.B.B1|=1<<7; rlm@1: break; rlm@1: case 0xfd: rlm@1: // SET 7,L rlm@1: HL.B.B0|=1<<7; rlm@1: break; rlm@1: case 0xfe: rlm@1: // SET 7,(HL) rlm@1: tempValue=gbReadMemory(HL.W); rlm@1: tempValue|=1<<7; rlm@1: gbWriteMemory(HL.W,tempValue); rlm@1: break; rlm@1: case 0xff: rlm@1: // SET 7,A rlm@1: AF.B.B1|=1<<7; rlm@1: break; rlm@1: default: rlm@1: systemMessage(0, N_("Unknown opcode %02x at %04x"), rlm@1: gbReadOpcode(PC.W-1),PC.W-1); rlm@1: emulating = false; rlm@1: return;