annotate src/gb/gbCodesCB.h @ 44:a80a707cc402

add readme.
author Robert McIntyre <rlm@mit.edu>
date Tue, 26 Feb 2013 10:13:11 +0000
parents f9f4f1b99eed
children
rev   line source
rlm@1 1 case 0x00:
rlm@1 2 // RLC B
rlm@1 3 AF.B.B0 = (BC.B.B1 & 0x80)?C_FLAG:0;
rlm@1 4 BC.B.B1 = ((BC.B.B1<<1) | (BC.B.B1>>7)) & 0xFF;
rlm@1 5 AF.B.B0 |= ZeroTable[BC.B.B1];
rlm@1 6 break;
rlm@1 7 case 0x01:
rlm@1 8 // RLC C
rlm@1 9 AF.B.B0 = (BC.B.B0 & 0x80)?C_FLAG:0;
rlm@1 10 BC.B.B0 = ((BC.B.B0<<1) | (BC.B.B0>>7)) & 0xFF;
rlm@1 11 AF.B.B0 |= ZeroTable[BC.B.B0];
rlm@1 12 break;
rlm@1 13 case 0x02:
rlm@1 14 // RLC D
rlm@1 15 AF.B.B0 = (DE.B.B1 & 0x80)?C_FLAG:0;
rlm@1 16 DE.B.B1 = ((DE.B.B1<<1) | (DE.B.B1>>7)) & 0xFF;
rlm@1 17 AF.B.B0 |= ZeroTable[DE.B.B1];
rlm@1 18 break;
rlm@1 19 case 0x03:
rlm@1 20 // RLC E
rlm@1 21 AF.B.B0 = (DE.B.B0 & 0x80)?C_FLAG:0;
rlm@1 22 DE.B.B0 = ((DE.B.B0<<1) | (DE.B.B0>>7)) & 0xFF;
rlm@1 23 AF.B.B0 |= ZeroTable[DE.B.B0];
rlm@1 24 break;
rlm@1 25 case 0x04:
rlm@1 26 // RLC H
rlm@1 27 AF.B.B0 = (HL.B.B1 & 0x80)?C_FLAG:0;
rlm@1 28 HL.B.B1 = ((HL.B.B1<<1) | (HL.B.B1>>7)) & 0xFF;
rlm@1 29 AF.B.B0 |= ZeroTable[HL.B.B1];
rlm@1 30 break;
rlm@1 31 case 0x05:
rlm@1 32 // RLC L
rlm@1 33 AF.B.B0 = (HL.B.B0 & 0x80)?C_FLAG:0;
rlm@1 34 HL.B.B0 = ((HL.B.B0<<1) | (HL.B.B0>>7)) & 0xFF;
rlm@1 35 AF.B.B0 |= ZeroTable[HL.B.B0];
rlm@1 36 break;
rlm@1 37 case 0x06:
rlm@1 38 // RLC (HL)
rlm@1 39 tempValue=gbReadMemory(HL.W);
rlm@1 40 AF.B.B0 = (tempValue & 0x80)?C_FLAG:0;
rlm@1 41 tempValue = ((tempValue<<1) | (tempValue>>7)) & 0xFF;
rlm@1 42 AF.B.B0 |= ZeroTable[tempValue];
rlm@1 43 gbWriteMemory(HL.W,tempValue);
rlm@1 44 break;
rlm@1 45 case 0x07:
rlm@1 46 // RLC A
rlm@1 47 AF.B.B0 = (AF.B.B1 & 0x80)?C_FLAG:0;
rlm@1 48 AF.B.B1 = ((AF.B.B1<<1) | (AF.B.B1>>7)) & 0xFF;
rlm@1 49 AF.B.B0 |= ZeroTable[AF.B.B1];
rlm@1 50 break;
rlm@1 51 case 0x08:
rlm@1 52 // RRC B
rlm@1 53 AF.B.B0=(BC.B.B1&0x01 ? C_FLAG : 0);
rlm@1 54 BC.B.B1=((BC.B.B1>>1)|(BC.B.B1<<7)) & 0xFF;
rlm@1 55 AF.B.B0|=ZeroTable[BC.B.B1];
rlm@1 56 break;
rlm@1 57 case 0x09:
rlm@1 58 // RRC C
rlm@1 59 AF.B.B0=(BC.B.B0&0x01 ? C_FLAG : 0);
rlm@1 60 BC.B.B0=((BC.B.B0>>1)|(BC.B.B0<<7)) & 0xFF;
rlm@1 61 AF.B.B0|=ZeroTable[BC.B.B0];
rlm@1 62 break;
rlm@1 63 case 0x0a:
rlm@1 64 // RRC D
rlm@1 65 AF.B.B0=(DE.B.B1&0x01 ? C_FLAG : 0);
rlm@1 66 DE.B.B1=((DE.B.B1>>1)|(DE.B.B1<<7)) & 0xFF;
rlm@1 67 AF.B.B0|=ZeroTable[DE.B.B1];
rlm@1 68 break;
rlm@1 69 case 0x0b:
rlm@1 70 // RRC E
rlm@1 71 AF.B.B0=(DE.B.B0&0x01 ? C_FLAG : 0);
rlm@1 72 DE.B.B0=((DE.B.B0>>1)|(DE.B.B0<<7)) & 0xFF;
rlm@1 73 AF.B.B0|=ZeroTable[DE.B.B0];
rlm@1 74 break;
rlm@1 75 case 0x0c:
rlm@1 76 // RRC H
rlm@1 77 AF.B.B0=(HL.B.B1&0x01 ? C_FLAG : 0);
rlm@1 78 HL.B.B1=((HL.B.B1>>1)|(HL.B.B1<<7)) & 0xFF;
rlm@1 79 AF.B.B0|=ZeroTable[HL.B.B1];
rlm@1 80 break;
rlm@1 81 case 0x0d:
rlm@1 82 // RRC L
rlm@1 83 AF.B.B0=(HL.B.B0&0x01 ? C_FLAG : 0);
rlm@1 84 HL.B.B0=((HL.B.B0>>1)|(HL.B.B0<<7)) & 0xFF;
rlm@1 85 AF.B.B0|=ZeroTable[HL.B.B0];
rlm@1 86 break;
rlm@1 87 case 0x0e:
rlm@1 88 // RRC (HL)
rlm@1 89 tempValue=gbReadMemory(HL.W);
rlm@1 90 AF.B.B0=(tempValue&0x01 ? C_FLAG : 0);
rlm@1 91 tempValue=((tempValue>>1)|(tempValue<<7)) & 0xFF;
rlm@1 92 AF.B.B0|=ZeroTable[tempValue];
rlm@1 93 gbWriteMemory(HL.W,tempValue);
rlm@1 94 break;
rlm@1 95 case 0x0f:
rlm@1 96 // RRC A
rlm@1 97 AF.B.B0=(AF.B.B1&0x01 ? C_FLAG : 0);
rlm@1 98 AF.B.B1=((AF.B.B1>>1)|(AF.B.B1<<7)) & 0xFF;
rlm@1 99 AF.B.B0|=ZeroTable[AF.B.B1];
rlm@1 100 break;
rlm@1 101 case 0x10:
rlm@1 102 // RL B
rlm@1 103 if(BC.B.B1&0x80) {
rlm@1 104 BC.B.B1=((BC.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 105 AF.B.B0=ZeroTable[BC.B.B1]|C_FLAG;
rlm@1 106 } else {
rlm@1 107 BC.B.B1=((BC.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 108 AF.B.B0=ZeroTable[BC.B.B1];
rlm@1 109 }
rlm@1 110 break;
rlm@1 111 case 0x11:
rlm@1 112 // RL C
rlm@1 113 if(BC.B.B0&0x80) {
rlm@1 114 BC.B.B0=((BC.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 115 AF.B.B0=ZeroTable[BC.B.B0]|C_FLAG;
rlm@1 116 } else {
rlm@1 117 BC.B.B0=((BC.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 118 AF.B.B0=ZeroTable[BC.B.B0];
rlm@1 119 }
rlm@1 120 break;
rlm@1 121 case 0x12:
rlm@1 122 // RL D
rlm@1 123 if(DE.B.B1&0x80) {
rlm@1 124 DE.B.B1=((DE.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 125 AF.B.B0=ZeroTable[DE.B.B1]|C_FLAG;
rlm@1 126 } else {
rlm@1 127 DE.B.B1=((DE.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 128 AF.B.B0=ZeroTable[DE.B.B1];
rlm@1 129 }
rlm@1 130 break;
rlm@1 131 case 0x13:
rlm@1 132 // RL E
rlm@1 133 if(DE.B.B0&0x80) {
rlm@1 134 DE.B.B0=((DE.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 135 AF.B.B0=ZeroTable[DE.B.B0]|C_FLAG;
rlm@1 136 } else {
rlm@1 137 DE.B.B0=((DE.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 138 AF.B.B0=ZeroTable[DE.B.B0];
rlm@1 139 }
rlm@1 140 break;
rlm@1 141 case 0x14:
rlm@1 142 // RL H
rlm@1 143 if(HL.B.B1&0x80) {
rlm@1 144 HL.B.B1=((HL.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 145 AF.B.B0=ZeroTable[HL.B.B1]|C_FLAG;
rlm@1 146 } else {
rlm@1 147 HL.B.B1=((HL.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 148 AF.B.B0=ZeroTable[HL.B.B1];
rlm@1 149 }
rlm@1 150 break;
rlm@1 151 case 0x15:
rlm@1 152 // RL L
rlm@1 153 if(HL.B.B0&0x80) {
rlm@1 154 HL.B.B0=((HL.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 155 AF.B.B0=ZeroTable[HL.B.B0]|C_FLAG;
rlm@1 156 } else {
rlm@1 157 HL.B.B0=((HL.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 158 AF.B.B0=ZeroTable[HL.B.B0];
rlm@1 159 }
rlm@1 160 break;
rlm@1 161 case 0x16:
rlm@1 162 // RL (HL)
rlm@1 163 tempValue=gbReadMemory(HL.W);
rlm@1 164 if(tempValue&0x80) {
rlm@1 165 tempValue=((tempValue<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 166 AF.B.B0=ZeroTable[tempValue]|C_FLAG;
rlm@1 167 } else {
rlm@1 168 tempValue=((tempValue<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 169 AF.B.B0=ZeroTable[tempValue];
rlm@1 170 }
rlm@1 171 gbWriteMemory(HL.W,tempValue);
rlm@1 172 break;
rlm@1 173 case 0x17:
rlm@1 174 // RL A
rlm@1 175 if(AF.B.B1&0x80) {
rlm@1 176 AF.B.B1=((AF.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 177 AF.B.B0=ZeroTable[AF.B.B1]|C_FLAG;
rlm@1 178 } else {
rlm@1 179 AF.B.B1=((AF.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0)) & 0xFF;
rlm@1 180 AF.B.B0=ZeroTable[AF.B.B1];
rlm@1 181 }
rlm@1 182 break;
rlm@1 183 case 0x18:
rlm@1 184 // RR B
rlm@1 185 if(BC.B.B1&0x01) {
rlm@1 186 BC.B.B1=(BC.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 187 AF.B.B0=ZeroTable[BC.B.B1]|C_FLAG;
rlm@1 188 } else {
rlm@1 189 BC.B.B1=(BC.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 190 AF.B.B0=ZeroTable[BC.B.B1];
rlm@1 191 }
rlm@1 192 break;
rlm@1 193 case 0x19:
rlm@1 194 // RR C
rlm@1 195 if(BC.B.B0&0x01) {
rlm@1 196 BC.B.B0=(BC.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 197 AF.B.B0=ZeroTable[BC.B.B0]|C_FLAG;
rlm@1 198 } else {
rlm@1 199 BC.B.B0=(BC.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 200 AF.B.B0=ZeroTable[BC.B.B0];
rlm@1 201 }
rlm@1 202 break;
rlm@1 203 case 0x1a:
rlm@1 204 // RR D
rlm@1 205 if(DE.B.B1&0x01) {
rlm@1 206 DE.B.B1=(DE.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 207 AF.B.B0=ZeroTable[DE.B.B1]|C_FLAG;
rlm@1 208 } else {
rlm@1 209 DE.B.B1=(DE.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 210 AF.B.B0=ZeroTable[DE.B.B1];
rlm@1 211 }
rlm@1 212 break;
rlm@1 213 case 0x1b:
rlm@1 214 // RR E
rlm@1 215 if(DE.B.B0&0x01) {
rlm@1 216 DE.B.B0=(DE.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 217 AF.B.B0=ZeroTable[DE.B.B0]|C_FLAG;
rlm@1 218 } else {
rlm@1 219 DE.B.B0=(DE.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 220 AF.B.B0=ZeroTable[DE.B.B0];
rlm@1 221 }
rlm@1 222 break;
rlm@1 223 case 0x1c:
rlm@1 224 // RR H
rlm@1 225 if(HL.B.B1&0x01) {
rlm@1 226 HL.B.B1=(HL.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 227 AF.B.B0=ZeroTable[HL.B.B1]|C_FLAG;
rlm@1 228 } else {
rlm@1 229 HL.B.B1=(HL.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 230 AF.B.B0=ZeroTable[HL.B.B1];
rlm@1 231 }
rlm@1 232 break;
rlm@1 233 case 0x1d:
rlm@1 234 // RR L
rlm@1 235 if(HL.B.B0&0x01) {
rlm@1 236 HL.B.B0=(HL.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 237 AF.B.B0=ZeroTable[HL.B.B0]|C_FLAG;
rlm@1 238 } else {
rlm@1 239 HL.B.B0=(HL.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 240 AF.B.B0=ZeroTable[HL.B.B0];
rlm@1 241 }
rlm@1 242 break;
rlm@1 243 case 0x1e:
rlm@1 244 // RR (HL)
rlm@1 245 tempValue=gbReadMemory(HL.W);
rlm@1 246 if(tempValue&0x01) {
rlm@1 247 tempValue=(tempValue>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 248 AF.B.B0=ZeroTable[tempValue]|C_FLAG;
rlm@1 249 } else {
rlm@1 250 tempValue=(tempValue>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 251 AF.B.B0=ZeroTable[tempValue];
rlm@1 252 }
rlm@1 253 gbWriteMemory(HL.W,tempValue);
rlm@1 254 break;
rlm@1 255 case 0x1f:
rlm@1 256 // RR A
rlm@1 257 if(AF.B.B1&0x01) {
rlm@1 258 AF.B.B1=(AF.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 259 AF.B.B0=ZeroTable[AF.B.B1]|C_FLAG;
rlm@1 260 } else {
rlm@1 261 AF.B.B1=(AF.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0);
rlm@1 262 AF.B.B0=ZeroTable[AF.B.B1];
rlm@1 263 }
rlm@1 264 break;
rlm@1 265 case 0x20:
rlm@1 266 // SLA B
rlm@1 267 AF.B.B0=(BC.B.B1&0x80?C_FLAG : 0);
rlm@1 268 BC.B.B1<<=1;
rlm@1 269 AF.B.B0|=ZeroTable[BC.B.B1];
rlm@1 270 break;
rlm@1 271 case 0x21:
rlm@1 272 // SLA C
rlm@1 273 AF.B.B0=(BC.B.B0&0x80?C_FLAG : 0);
rlm@1 274 BC.B.B0<<=1;
rlm@1 275 AF.B.B0|=ZeroTable[BC.B.B0];
rlm@1 276 break;
rlm@1 277 case 0x22:
rlm@1 278 // SLA D
rlm@1 279 AF.B.B0=(DE.B.B1&0x80?C_FLAG : 0);
rlm@1 280 DE.B.B1<<=1;
rlm@1 281 AF.B.B0|=ZeroTable[DE.B.B1];
rlm@1 282 break;
rlm@1 283 case 0x23:
rlm@1 284 // SLA E
rlm@1 285 AF.B.B0=(DE.B.B0&0x80?C_FLAG : 0);
rlm@1 286 DE.B.B0<<=1;
rlm@1 287 AF.B.B0|=ZeroTable[DE.B.B0];
rlm@1 288 break;
rlm@1 289 case 0x24:
rlm@1 290 // SLA H
rlm@1 291 AF.B.B0=(HL.B.B1&0x80?C_FLAG : 0);
rlm@1 292 HL.B.B1<<=1;
rlm@1 293 AF.B.B0|=ZeroTable[HL.B.B1];
rlm@1 294 break;
rlm@1 295 case 0x25:
rlm@1 296 // SLA L
rlm@1 297 AF.B.B0=(HL.B.B0&0x80?C_FLAG : 0);
rlm@1 298 HL.B.B0<<=1;
rlm@1 299 AF.B.B0|=ZeroTable[HL.B.B0];
rlm@1 300 break;
rlm@1 301 case 0x26:
rlm@1 302 // SLA (HL)
rlm@1 303 tempValue=gbReadMemory(HL.W);
rlm@1 304 AF.B.B0=(tempValue&0x80?C_FLAG : 0);
rlm@1 305 tempValue<<=1;
rlm@1 306 AF.B.B0|=ZeroTable[tempValue];
rlm@1 307 gbWriteMemory(HL.W,tempValue);
rlm@1 308 break;
rlm@1 309 case 0x27:
rlm@1 310 // SLA A
rlm@1 311 AF.B.B0=(AF.B.B1&0x80?C_FLAG : 0);
rlm@1 312 AF.B.B1<<=1;
rlm@1 313 AF.B.B0|=ZeroTable[AF.B.B1];
rlm@1 314 break;
rlm@1 315 case 0x28:
rlm@1 316 // SRA B
rlm@1 317 AF.B.B0=(BC.B.B1&0x01 ? C_FLAG: 0);
rlm@1 318 BC.B.B1=(BC.B.B1>>1)|(BC.B.B1&0x80);
rlm@1 319 AF.B.B0|=ZeroTable[BC.B.B1];
rlm@1 320 break;
rlm@1 321 case 0x29:
rlm@1 322 // SRA C
rlm@1 323 AF.B.B0=(BC.B.B0&0x01 ? C_FLAG: 0);
rlm@1 324 BC.B.B0=(BC.B.B0>>1)|(BC.B.B0&0x80);
rlm@1 325 AF.B.B0|=ZeroTable[BC.B.B0];
rlm@1 326 break;
rlm@1 327 case 0x2a:
rlm@1 328 // SRA D
rlm@1 329 AF.B.B0=(DE.B.B1&0x01 ? C_FLAG: 0);
rlm@1 330 DE.B.B1=(DE.B.B1>>1)|(DE.B.B1&0x80);
rlm@1 331 AF.B.B0|=ZeroTable[DE.B.B1];
rlm@1 332 break;
rlm@1 333 case 0x2b:
rlm@1 334 // SRA E
rlm@1 335 AF.B.B0=(DE.B.B0&0x01 ? C_FLAG: 0);
rlm@1 336 DE.B.B0=(DE.B.B0>>1)|(DE.B.B0&0x80);
rlm@1 337 AF.B.B0|=ZeroTable[DE.B.B0];
rlm@1 338 break;
rlm@1 339 case 0x2c:
rlm@1 340 // SRA H
rlm@1 341 AF.B.B0=(HL.B.B1&0x01 ? C_FLAG: 0);
rlm@1 342 HL.B.B1=(HL.B.B1>>1)|(HL.B.B1&0x80);
rlm@1 343 AF.B.B0|=ZeroTable[HL.B.B1];
rlm@1 344 break;
rlm@1 345 case 0x2d:
rlm@1 346 // SRA L
rlm@1 347 AF.B.B0=(HL.B.B0&0x01 ? C_FLAG: 0);
rlm@1 348 HL.B.B0=(HL.B.B0>>1)|(HL.B.B0&0x80);
rlm@1 349 AF.B.B0|=ZeroTable[HL.B.B0];
rlm@1 350 break;
rlm@1 351 case 0x2e:
rlm@1 352 // SRA (HL)
rlm@1 353 tempValue=gbReadMemory(HL.W);
rlm@1 354 AF.B.B0=(tempValue&0x01 ? C_FLAG: 0);
rlm@1 355 tempValue=(tempValue>>1)|(tempValue&0x80);
rlm@1 356 AF.B.B0|=ZeroTable[tempValue];
rlm@1 357 gbWriteMemory(HL.W,tempValue);
rlm@1 358 break;
rlm@1 359 case 0x2f:
rlm@1 360 // SRA A
rlm@1 361 AF.B.B0=(AF.B.B1&0x01 ? C_FLAG: 0);
rlm@1 362 AF.B.B1=(AF.B.B1>>1)|(AF.B.B1&0x80);
rlm@1 363 AF.B.B0|=ZeroTable[AF.B.B1];
rlm@1 364 break;
rlm@1 365 case 0x30:
rlm@1 366 // SWAP B
rlm@1 367 BC.B.B1 = (BC.B.B1&0xf0)>>4 | (BC.B.B1&0x0f)<<4;
rlm@1 368 AF.B.B0 = ZeroTable[BC.B.B1];
rlm@1 369 break;
rlm@1 370 case 0x31:
rlm@1 371 // SWAP C
rlm@1 372 BC.B.B0 = (BC.B.B0&0xf0)>>4 | (BC.B.B0&0x0f)<<4;
rlm@1 373 AF.B.B0 = ZeroTable[BC.B.B0];
rlm@1 374 break;
rlm@1 375 case 0x32:
rlm@1 376 // SWAP D
rlm@1 377 DE.B.B1 = (DE.B.B1&0xf0)>>4 | (DE.B.B1&0x0f)<<4;
rlm@1 378 AF.B.B0 = ZeroTable[DE.B.B1];
rlm@1 379 break;
rlm@1 380 case 0x33:
rlm@1 381 // SWAP E
rlm@1 382 DE.B.B0 = (DE.B.B0&0xf0)>>4 | (DE.B.B0&0x0f)<<4;
rlm@1 383 AF.B.B0 = ZeroTable[DE.B.B0];
rlm@1 384 break;
rlm@1 385 case 0x34:
rlm@1 386 // SWAP H
rlm@1 387 HL.B.B1 = (HL.B.B1&0xf0)>>4 | (HL.B.B1&0x0f)<<4;
rlm@1 388 AF.B.B0 = ZeroTable[HL.B.B1];
rlm@1 389 break;
rlm@1 390 case 0x35:
rlm@1 391 // SWAP L
rlm@1 392 HL.B.B0 = (HL.B.B0&0xf0)>>4 | (HL.B.B0&0x0f)<<4;
rlm@1 393 AF.B.B0 = ZeroTable[HL.B.B0];
rlm@1 394 break;
rlm@1 395 case 0x36:
rlm@1 396 // SWAP (HL)
rlm@1 397 tempValue=gbReadMemory(HL.W);
rlm@1 398 tempValue = (tempValue&0xf0)>>4 | (tempValue&0x0f)<<4;
rlm@1 399 AF.B.B0 = ZeroTable[tempValue];
rlm@1 400 gbWriteMemory(HL.W,tempValue);
rlm@1 401 break;
rlm@1 402 case 0x37:
rlm@1 403 // SWAP A
rlm@1 404 AF.B.B1 = (AF.B.B1&0xf0)>>4 | (AF.B.B1&0x0f)<<4;
rlm@1 405 AF.B.B0 = ZeroTable[AF.B.B1];
rlm@1 406 break;
rlm@1 407 case 0x38:
rlm@1 408 // SRL B
rlm@1 409 AF.B.B0=(BC.B.B1&0x01)?C_FLAG:0;
rlm@1 410 BC.B.B1>>=1;
rlm@1 411 AF.B.B0|=ZeroTable[BC.B.B1];
rlm@1 412 break;
rlm@1 413 case 0x39:
rlm@1 414 // SRL C
rlm@1 415 AF.B.B0=(BC.B.B0&0x01)?C_FLAG:0;
rlm@1 416 BC.B.B0>>=1;
rlm@1 417 AF.B.B0|=ZeroTable[BC.B.B0];
rlm@1 418 break;
rlm@1 419 case 0x3a:
rlm@1 420 // SRL D
rlm@1 421 AF.B.B0=(DE.B.B1&0x01)?C_FLAG:0;
rlm@1 422 DE.B.B1>>=1;
rlm@1 423 AF.B.B0|=ZeroTable[DE.B.B1];
rlm@1 424 break;
rlm@1 425 case 0x3b:
rlm@1 426 // SRL E
rlm@1 427 AF.B.B0=(DE.B.B0&0x01)?C_FLAG:0;
rlm@1 428 DE.B.B0>>=1;
rlm@1 429 AF.B.B0|=ZeroTable[DE.B.B0];
rlm@1 430 break;
rlm@1 431 case 0x3c:
rlm@1 432 // SRL H
rlm@1 433 AF.B.B0=(HL.B.B1&0x01)?C_FLAG:0;
rlm@1 434 HL.B.B1>>=1;
rlm@1 435 AF.B.B0|=ZeroTable[HL.B.B1];
rlm@1 436 break;
rlm@1 437 case 0x3d:
rlm@1 438 // SRL L
rlm@1 439 AF.B.B0=(HL.B.B0&0x01)?C_FLAG:0;
rlm@1 440 HL.B.B0>>=1;
rlm@1 441 AF.B.B0|=ZeroTable[HL.B.B0];
rlm@1 442 break;
rlm@1 443 case 0x3e:
rlm@1 444 // SRL (HL)
rlm@1 445 tempValue=gbReadMemory(HL.W);
rlm@1 446 AF.B.B0=(tempValue&0x01)?C_FLAG:0;
rlm@1 447 tempValue>>=1;
rlm@1 448 AF.B.B0|=ZeroTable[tempValue];
rlm@1 449 gbWriteMemory(HL.W,tempValue);
rlm@1 450 break;
rlm@1 451 case 0x3f:
rlm@1 452 // SRL A
rlm@1 453 AF.B.B0=(AF.B.B1&0x01)?C_FLAG:0;
rlm@1 454 AF.B.B1>>=1;
rlm@1 455 AF.B.B0|=ZeroTable[AF.B.B1];
rlm@1 456 break;
rlm@1 457 case 0x40:
rlm@1 458 // BIT 0,B
rlm@1 459 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<0)? 0:Z_FLAG);
rlm@1 460 break;
rlm@1 461 case 0x41:
rlm@1 462 // BIT 0,C
rlm@1 463 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<0)? 0:Z_FLAG);
rlm@1 464 break;
rlm@1 465 case 0x42:
rlm@1 466 // BIT 0,D
rlm@1 467 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<0)? 0:Z_FLAG);
rlm@1 468 break;
rlm@1 469 case 0x43:
rlm@1 470 // BIT 0,E
rlm@1 471 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<0)? 0:Z_FLAG);
rlm@1 472 break;
rlm@1 473 case 0x44:
rlm@1 474 // BIT 0,H
rlm@1 475 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<0)? 0:Z_FLAG);
rlm@1 476 break;
rlm@1 477 case 0x45:
rlm@1 478 // BIT 0,L
rlm@1 479 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<0)? 0:Z_FLAG);
rlm@1 480 break;
rlm@1 481 case 0x46:
rlm@1 482 // BIT 0,(HL)
rlm@1 483 tempValue=gbReadMemory(HL.W);
rlm@1 484 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<0)? 0:Z_FLAG);
rlm@1 485 break;
rlm@1 486 case 0x47:
rlm@1 487 // BIT 0,A
rlm@1 488 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<0)? 0:Z_FLAG);
rlm@1 489 break;
rlm@1 490 case 0x48:
rlm@1 491 // BIT 1,B
rlm@1 492 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<1)? 0:Z_FLAG);
rlm@1 493 break;
rlm@1 494 case 0x49:
rlm@1 495 // BIT 1,C
rlm@1 496 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<1)? 0:Z_FLAG);
rlm@1 497 break;
rlm@1 498 case 0x4a:
rlm@1 499 // BIT 1,D
rlm@1 500 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<1)? 0:Z_FLAG);
rlm@1 501 break;
rlm@1 502 case 0x4b:
rlm@1 503 // BIT 1,E
rlm@1 504 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<1)? 0:Z_FLAG);
rlm@1 505 break;
rlm@1 506 case 0x4c:
rlm@1 507 // BIT 1,H
rlm@1 508 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<1)? 0:Z_FLAG);
rlm@1 509 break;
rlm@1 510 case 0x4d:
rlm@1 511 // BIT 1,L
rlm@1 512 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<1)? 0:Z_FLAG);
rlm@1 513 break;
rlm@1 514 case 0x4e:
rlm@1 515 // BIT 1,(HL)
rlm@1 516 tempValue=gbReadMemory(HL.W);
rlm@1 517 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<1)? 0:Z_FLAG);
rlm@1 518 break;
rlm@1 519 case 0x4f:
rlm@1 520 // BIT 1,A
rlm@1 521 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<1)? 0:Z_FLAG);
rlm@1 522 break;
rlm@1 523 case 0x50:
rlm@1 524 // BIT 2,B
rlm@1 525 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<2)? 0:Z_FLAG);
rlm@1 526 break;
rlm@1 527 case 0x51:
rlm@1 528 // BIT 2,C
rlm@1 529 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<2)? 0:Z_FLAG);
rlm@1 530 break;
rlm@1 531 case 0x52:
rlm@1 532 // BIT 2,D
rlm@1 533 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<2)? 0:Z_FLAG);
rlm@1 534 break;
rlm@1 535 case 0x53:
rlm@1 536 // BIT 2,E
rlm@1 537 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<2)? 0:Z_FLAG);
rlm@1 538 break;
rlm@1 539 case 0x54:
rlm@1 540 // BIT 2,H
rlm@1 541 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<2)? 0:Z_FLAG);
rlm@1 542 break;
rlm@1 543 case 0x55:
rlm@1 544 // BIT 2,L
rlm@1 545 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<2)? 0:Z_FLAG);
rlm@1 546 break;
rlm@1 547 case 0x56:
rlm@1 548 // BIT 2,(HL)
rlm@1 549 tempValue=gbReadMemory(HL.W);
rlm@1 550 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<2)? 0:Z_FLAG);
rlm@1 551 break;
rlm@1 552 case 0x57:
rlm@1 553 // BIT 2,A
rlm@1 554 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<2)? 0:Z_FLAG);
rlm@1 555 break;
rlm@1 556 case 0x58:
rlm@1 557 // BIT 3,B
rlm@1 558 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<3)? 0:Z_FLAG);
rlm@1 559 break;
rlm@1 560 case 0x59:
rlm@1 561 // BIT 3,C
rlm@1 562 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<3)? 0:Z_FLAG);
rlm@1 563 break;
rlm@1 564 case 0x5a:
rlm@1 565 // BIT 3,D
rlm@1 566 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<3)? 0:Z_FLAG);
rlm@1 567 break;
rlm@1 568 case 0x5b:
rlm@1 569 // BIT 3,E
rlm@1 570 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<3)? 0:Z_FLAG);
rlm@1 571 break;
rlm@1 572 case 0x5c:
rlm@1 573 // BIT 3,H
rlm@1 574 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<3)? 0:Z_FLAG);
rlm@1 575 break;
rlm@1 576 case 0x5d:
rlm@1 577 // BIT 3,L
rlm@1 578 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<3)? 0:Z_FLAG);
rlm@1 579 break;
rlm@1 580 case 0x5e:
rlm@1 581 // BIT 3,(HL)
rlm@1 582 tempValue=gbReadMemory(HL.W);
rlm@1 583 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<3)? 0:Z_FLAG);
rlm@1 584 break;
rlm@1 585 case 0x5f:
rlm@1 586 // BIT 3,A
rlm@1 587 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<3)? 0:Z_FLAG);
rlm@1 588 break;
rlm@1 589 case 0x60:
rlm@1 590 // BIT 4,B
rlm@1 591 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<4)? 0:Z_FLAG);
rlm@1 592 break;
rlm@1 593 case 0x61:
rlm@1 594 // BIT 4,C
rlm@1 595 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<4)? 0:Z_FLAG);
rlm@1 596 break;
rlm@1 597 case 0x62:
rlm@1 598 // BIT 4,D
rlm@1 599 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<4)? 0:Z_FLAG);
rlm@1 600 break;
rlm@1 601 case 0x63:
rlm@1 602 // BIT 4,E
rlm@1 603 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<4)? 0:Z_FLAG);
rlm@1 604 break;
rlm@1 605 case 0x64:
rlm@1 606 // BIT 4,H
rlm@1 607 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<4)? 0:Z_FLAG);
rlm@1 608 break;
rlm@1 609 case 0x65:
rlm@1 610 // BIT 4,L
rlm@1 611 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<4)? 0:Z_FLAG);
rlm@1 612 break;
rlm@1 613 case 0x66:
rlm@1 614 // BIT 4,(HL)
rlm@1 615 tempValue=gbReadMemory(HL.W);
rlm@1 616 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<4)? 0:Z_FLAG);
rlm@1 617 break;
rlm@1 618 case 0x67:
rlm@1 619 // BIT 4,A
rlm@1 620 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<4)? 0:Z_FLAG);
rlm@1 621 break;
rlm@1 622 case 0x68:
rlm@1 623 // BIT 5,B
rlm@1 624 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<5)? 0:Z_FLAG);
rlm@1 625 break;
rlm@1 626 case 0x69:
rlm@1 627 // BIT 5,C
rlm@1 628 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<5)? 0:Z_FLAG);
rlm@1 629 break;
rlm@1 630 case 0x6a:
rlm@1 631 // BIT 5,D
rlm@1 632 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<5)? 0:Z_FLAG);
rlm@1 633 break;
rlm@1 634 case 0x6b:
rlm@1 635 // BIT 5,E
rlm@1 636 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<5)? 0:Z_FLAG);
rlm@1 637 break;
rlm@1 638 case 0x6c:
rlm@1 639 // BIT 5,H
rlm@1 640 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<5)? 0:Z_FLAG);
rlm@1 641 break;
rlm@1 642 case 0x6d:
rlm@1 643 // BIT 5,L
rlm@1 644 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<5)? 0:Z_FLAG);
rlm@1 645 break;
rlm@1 646 case 0x6e:
rlm@1 647 // BIT 5,(HL)
rlm@1 648 tempValue=gbReadMemory(HL.W);
rlm@1 649 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<5)? 0:Z_FLAG);
rlm@1 650 break;
rlm@1 651 case 0x6f:
rlm@1 652 // BIT 5,A
rlm@1 653 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<5)? 0:Z_FLAG);
rlm@1 654 break;
rlm@1 655 case 0x70:
rlm@1 656 // BIT 6,B
rlm@1 657 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<6)? 0:Z_FLAG);
rlm@1 658 break;
rlm@1 659 case 0x71:
rlm@1 660 // BIT 6,C
rlm@1 661 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<6)? 0:Z_FLAG);
rlm@1 662 break;
rlm@1 663 case 0x72:
rlm@1 664 // BIT 6,D
rlm@1 665 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<6)? 0:Z_FLAG);
rlm@1 666 break;
rlm@1 667 case 0x73:
rlm@1 668 // BIT 6,E
rlm@1 669 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<6)? 0:Z_FLAG);
rlm@1 670 break;
rlm@1 671 case 0x74:
rlm@1 672 // BIT 6,H
rlm@1 673 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<6)? 0:Z_FLAG);
rlm@1 674 break;
rlm@1 675 case 0x75:
rlm@1 676 // BIT 6,L
rlm@1 677 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<6)? 0:Z_FLAG);
rlm@1 678 break;
rlm@1 679 case 0x76:
rlm@1 680 // BIT 6,(HL)
rlm@1 681 tempValue=gbReadMemory(HL.W);
rlm@1 682 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<6)? 0:Z_FLAG);
rlm@1 683 break;
rlm@1 684 case 0x77:
rlm@1 685 // BIT 6,A
rlm@1 686 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<6)? 0:Z_FLAG);
rlm@1 687 break;
rlm@1 688 case 0x78:
rlm@1 689 // BIT 7,B
rlm@1 690 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<7)? 0:Z_FLAG);
rlm@1 691 break;
rlm@1 692 case 0x79:
rlm@1 693 // BIT 7,C
rlm@1 694 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<7)? 0:Z_FLAG);
rlm@1 695 break;
rlm@1 696 case 0x7a:
rlm@1 697 // BIT 7,D
rlm@1 698 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<7)? 0:Z_FLAG);
rlm@1 699 break;
rlm@1 700 case 0x7b:
rlm@1 701 // BIT 7,E
rlm@1 702 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<7)? 0:Z_FLAG);
rlm@1 703 break;
rlm@1 704 case 0x7c:
rlm@1 705 // BIT 7,H
rlm@1 706 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<7)? 0:Z_FLAG);
rlm@1 707 break;
rlm@1 708 case 0x7d:
rlm@1 709 // BIT 7,L
rlm@1 710 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<7)? 0:Z_FLAG);
rlm@1 711 break;
rlm@1 712 case 0x7e:
rlm@1 713 // BIT 7,(HL)
rlm@1 714 tempValue=gbReadMemory(HL.W);
rlm@1 715 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<7)? 0:Z_FLAG);
rlm@1 716 break;
rlm@1 717 case 0x7f:
rlm@1 718 // BIT 7,A
rlm@1 719 AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<7)? 0:Z_FLAG);
rlm@1 720 break;
rlm@1 721 case 0x80:
rlm@1 722 // RES 0,B
rlm@1 723 BC.B.B1&=~(1<<0);
rlm@1 724 break;
rlm@1 725 case 0x81:
rlm@1 726 // RES 0,C
rlm@1 727 BC.B.B0&=~(1<<0);
rlm@1 728 break;
rlm@1 729 case 0x82:
rlm@1 730 // RES 0,D
rlm@1 731 DE.B.B1&=~(1<<0);
rlm@1 732 break;
rlm@1 733 case 0x83:
rlm@1 734 // RES 0,E
rlm@1 735 DE.B.B0&=~(1<<0);
rlm@1 736 break;
rlm@1 737 case 0x84:
rlm@1 738 // RES 0,H
rlm@1 739 HL.B.B1&=~(1<<0);
rlm@1 740 break;
rlm@1 741 case 0x85:
rlm@1 742 // RES 0,L
rlm@1 743 HL.B.B0&=~(1<<0);
rlm@1 744 break;
rlm@1 745 case 0x86:
rlm@1 746 // RES 0,(HL)
rlm@1 747 tempValue=gbReadMemory(HL.W);
rlm@1 748 tempValue&=~(1<<0);
rlm@1 749 gbWriteMemory(HL.W,tempValue);
rlm@1 750 break;
rlm@1 751 case 0x87:
rlm@1 752 // RES 0,A
rlm@1 753 AF.B.B1&=~(1<<0);
rlm@1 754 break;
rlm@1 755 case 0x88:
rlm@1 756 // RES 1,B
rlm@1 757 BC.B.B1&=~(1<<1);
rlm@1 758 break;
rlm@1 759 case 0x89:
rlm@1 760 // RES 1,C
rlm@1 761 BC.B.B0&=~(1<<1);
rlm@1 762 break;
rlm@1 763 case 0x8a:
rlm@1 764 // RES 1,D
rlm@1 765 DE.B.B1&=~(1<<1);
rlm@1 766 break;
rlm@1 767 case 0x8b:
rlm@1 768 // RES 1,E
rlm@1 769 DE.B.B0&=~(1<<1);
rlm@1 770 break;
rlm@1 771 case 0x8c:
rlm@1 772 // RES 1,H
rlm@1 773 HL.B.B1&=~(1<<1);
rlm@1 774 break;
rlm@1 775 case 0x8d:
rlm@1 776 // RES 1,L
rlm@1 777 HL.B.B0&=~(1<<1);
rlm@1 778 break;
rlm@1 779 case 0x8e:
rlm@1 780 // RES 1,(HL)
rlm@1 781 tempValue=gbReadMemory(HL.W);
rlm@1 782 tempValue&=~(1<<1);
rlm@1 783 gbWriteMemory(HL.W,tempValue);
rlm@1 784 break;
rlm@1 785 case 0x8f:
rlm@1 786 // RES 1,A
rlm@1 787 AF.B.B1&=~(1<<1);
rlm@1 788 break;
rlm@1 789 case 0x90:
rlm@1 790 // RES 2,B
rlm@1 791 BC.B.B1&=~(1<<2);
rlm@1 792 break;
rlm@1 793 case 0x91:
rlm@1 794 // RES 2,C
rlm@1 795 BC.B.B0&=~(1<<2);
rlm@1 796 break;
rlm@1 797 case 0x92:
rlm@1 798 // RES 2,D
rlm@1 799 DE.B.B1&=~(1<<2);
rlm@1 800 break;
rlm@1 801 case 0x93:
rlm@1 802 // RES 2,E
rlm@1 803 DE.B.B0&=~(1<<2);
rlm@1 804 break;
rlm@1 805 case 0x94:
rlm@1 806 // RES 2,H
rlm@1 807 HL.B.B1&=~(1<<2);
rlm@1 808 break;
rlm@1 809 case 0x95:
rlm@1 810 // RES 2,L
rlm@1 811 HL.B.B0&=~(1<<2);
rlm@1 812 break;
rlm@1 813 case 0x96:
rlm@1 814 // RES 2,(HL)
rlm@1 815 tempValue=gbReadMemory(HL.W);
rlm@1 816 tempValue&=~(1<<2);
rlm@1 817 gbWriteMemory(HL.W,tempValue);
rlm@1 818 break;
rlm@1 819 case 0x97:
rlm@1 820 // RES 2,A
rlm@1 821 AF.B.B1&=~(1<<2);
rlm@1 822 break;
rlm@1 823 case 0x98:
rlm@1 824 // RES 3,B
rlm@1 825 BC.B.B1&=~(1<<3);
rlm@1 826 break;
rlm@1 827 case 0x99:
rlm@1 828 // RES 3,C
rlm@1 829 BC.B.B0&=~(1<<3);
rlm@1 830 break;
rlm@1 831 case 0x9a:
rlm@1 832 // RES 3,D
rlm@1 833 DE.B.B1&=~(1<<3);
rlm@1 834 break;
rlm@1 835 case 0x9b:
rlm@1 836 // RES 3,E
rlm@1 837 DE.B.B0&=~(1<<3);
rlm@1 838 break;
rlm@1 839 case 0x9c:
rlm@1 840 // RES 3,H
rlm@1 841 HL.B.B1&=~(1<<3);
rlm@1 842 break;
rlm@1 843 case 0x9d:
rlm@1 844 // RES 3,L
rlm@1 845 HL.B.B0&=~(1<<3);
rlm@1 846 break;
rlm@1 847 case 0x9e:
rlm@1 848 // RES 3,(HL)
rlm@1 849 tempValue=gbReadMemory(HL.W);
rlm@1 850 tempValue&=~(1<<3);
rlm@1 851 gbWriteMemory(HL.W,tempValue);
rlm@1 852 break;
rlm@1 853 case 0x9f:
rlm@1 854 // RES 3,A
rlm@1 855 AF.B.B1&=~(1<<3);
rlm@1 856 break;
rlm@1 857 case 0xa0:
rlm@1 858 // RES 4,B
rlm@1 859 BC.B.B1&=~(1<<4);
rlm@1 860 break;
rlm@1 861 case 0xa1:
rlm@1 862 // RES 4,C
rlm@1 863 BC.B.B0&=~(1<<4);
rlm@1 864 break;
rlm@1 865 case 0xa2:
rlm@1 866 // RES 4,D
rlm@1 867 DE.B.B1&=~(1<<4);
rlm@1 868 break;
rlm@1 869 case 0xa3:
rlm@1 870 // RES 4,E
rlm@1 871 DE.B.B0&=~(1<<4);
rlm@1 872 break;
rlm@1 873 case 0xa4:
rlm@1 874 // RES 4,H
rlm@1 875 HL.B.B1&=~(1<<4);
rlm@1 876 break;
rlm@1 877 case 0xa5:
rlm@1 878 // RES 4,L
rlm@1 879 HL.B.B0&=~(1<<4);
rlm@1 880 break;
rlm@1 881 case 0xa6:
rlm@1 882 // RES 4,(HL)
rlm@1 883 tempValue=gbReadMemory(HL.W);
rlm@1 884 tempValue&=~(1<<4);
rlm@1 885 gbWriteMemory(HL.W,tempValue);
rlm@1 886 break;
rlm@1 887 case 0xa7:
rlm@1 888 // RES 4,A
rlm@1 889 AF.B.B1&=~(1<<4);
rlm@1 890 break;
rlm@1 891 case 0xa8:
rlm@1 892 // RES 5,B
rlm@1 893 BC.B.B1&=~(1<<5);
rlm@1 894 break;
rlm@1 895 case 0xa9:
rlm@1 896 // RES 5,C
rlm@1 897 BC.B.B0&=~(1<<5);
rlm@1 898 break;
rlm@1 899 case 0xaa:
rlm@1 900 // RES 5,D
rlm@1 901 DE.B.B1&=~(1<<5);
rlm@1 902 break;
rlm@1 903 case 0xab:
rlm@1 904 // RES 5,E
rlm@1 905 DE.B.B0&=~(1<<5);
rlm@1 906 break;
rlm@1 907 case 0xac:
rlm@1 908 // RES 5,H
rlm@1 909 HL.B.B1&=~(1<<5);
rlm@1 910 break;
rlm@1 911 case 0xad:
rlm@1 912 // RES 5,L
rlm@1 913 HL.B.B0&=~(1<<5);
rlm@1 914 break;
rlm@1 915 case 0xae:
rlm@1 916 // RES 5,(HL)
rlm@1 917 tempValue=gbReadMemory(HL.W);
rlm@1 918 tempValue&=~(1<<5);
rlm@1 919 gbWriteMemory(HL.W,tempValue);
rlm@1 920 break;
rlm@1 921 case 0xaf:
rlm@1 922 // RES 5,A
rlm@1 923 AF.B.B1&=~(1<<5);
rlm@1 924 break;
rlm@1 925 case 0xb0:
rlm@1 926 // RES 6,B
rlm@1 927 BC.B.B1&=~(1<<6);
rlm@1 928 break;
rlm@1 929 case 0xb1:
rlm@1 930 // RES 6,C
rlm@1 931 BC.B.B0&=~(1<<6);
rlm@1 932 break;
rlm@1 933 case 0xb2:
rlm@1 934 // RES 6,D
rlm@1 935 DE.B.B1&=~(1<<6);
rlm@1 936 break;
rlm@1 937 case 0xb3:
rlm@1 938 // RES 6,E
rlm@1 939 DE.B.B0&=~(1<<6);
rlm@1 940 break;
rlm@1 941 case 0xb4:
rlm@1 942 // RES 6,H
rlm@1 943 HL.B.B1&=~(1<<6);
rlm@1 944 break;
rlm@1 945 case 0xb5:
rlm@1 946 // RES 6,L
rlm@1 947 HL.B.B0&=~(1<<6);
rlm@1 948 break;
rlm@1 949 case 0xb6:
rlm@1 950 // RES 6,(HL)
rlm@1 951 tempValue=gbReadMemory(HL.W);
rlm@1 952 tempValue&=~(1<<6);
rlm@1 953 gbWriteMemory(HL.W,tempValue);
rlm@1 954 break;
rlm@1 955 case 0xb7:
rlm@1 956 // RES 6,A
rlm@1 957 AF.B.B1&=~(1<<6);
rlm@1 958 break;
rlm@1 959 case 0xb8:
rlm@1 960 // RES 7,B
rlm@1 961 BC.B.B1&=~(1<<7);
rlm@1 962 break;
rlm@1 963 case 0xb9:
rlm@1 964 // RES 7,C
rlm@1 965 BC.B.B0&=~(1<<7);
rlm@1 966 break;
rlm@1 967 case 0xba:
rlm@1 968 // RES 7,D
rlm@1 969 DE.B.B1&=~(1<<7);
rlm@1 970 break;
rlm@1 971 case 0xbb:
rlm@1 972 // RES 7,E
rlm@1 973 DE.B.B0&=~(1<<7);
rlm@1 974 break;
rlm@1 975 case 0xbc:
rlm@1 976 // RES 7,H
rlm@1 977 HL.B.B1&=~(1<<7);
rlm@1 978 break;
rlm@1 979 case 0xbd:
rlm@1 980 // RES 7,L
rlm@1 981 HL.B.B0&=~(1<<7);
rlm@1 982 break;
rlm@1 983 case 0xbe:
rlm@1 984 // RES 7,(HL)
rlm@1 985 tempValue=gbReadMemory(HL.W);
rlm@1 986 tempValue&=~(1<<7);
rlm@1 987 gbWriteMemory(HL.W,tempValue);
rlm@1 988 break;
rlm@1 989 case 0xbf:
rlm@1 990 // RES 7,A
rlm@1 991 AF.B.B1&=~(1<<7);
rlm@1 992 break;
rlm@1 993 case 0xc0:
rlm@1 994 // SET 0,B
rlm@1 995 BC.B.B1|=1<<0;
rlm@1 996 break;
rlm@1 997 case 0xc1:
rlm@1 998 // SET 0,C
rlm@1 999 BC.B.B0|=1<<0;
rlm@1 1000 break;
rlm@1 1001 case 0xc2:
rlm@1 1002 // SET 0,D
rlm@1 1003 DE.B.B1|=1<<0;
rlm@1 1004 break;
rlm@1 1005 case 0xc3:
rlm@1 1006 // SET 0,E
rlm@1 1007 DE.B.B0|=1<<0;
rlm@1 1008 break;
rlm@1 1009 case 0xc4:
rlm@1 1010 // SET 0,H
rlm@1 1011 HL.B.B1|=1<<0;
rlm@1 1012 break;
rlm@1 1013 case 0xc5:
rlm@1 1014 // SET 0,L
rlm@1 1015 HL.B.B0|=1<<0;
rlm@1 1016 break;
rlm@1 1017 case 0xc6:
rlm@1 1018 // SET 0,(HL)
rlm@1 1019 tempValue=gbReadMemory(HL.W);
rlm@1 1020 tempValue|=1<<0;
rlm@1 1021 gbWriteMemory(HL.W,tempValue);
rlm@1 1022 break;
rlm@1 1023 case 0xc7:
rlm@1 1024 // SET 0,A
rlm@1 1025 AF.B.B1|=1<<0;
rlm@1 1026 break;
rlm@1 1027 case 0xc8:
rlm@1 1028 // SET 1,B
rlm@1 1029 BC.B.B1|=1<<1;
rlm@1 1030 break;
rlm@1 1031 case 0xc9:
rlm@1 1032 // SET 1,C
rlm@1 1033 BC.B.B0|=1<<1;
rlm@1 1034 break;
rlm@1 1035 case 0xca:
rlm@1 1036 // SET 1,D
rlm@1 1037 DE.B.B1|=1<<1;
rlm@1 1038 break;
rlm@1 1039 case 0xcb:
rlm@1 1040 // SET 1,E
rlm@1 1041 DE.B.B0|=1<<1;
rlm@1 1042 break;
rlm@1 1043 case 0xcc:
rlm@1 1044 // SET 1,H
rlm@1 1045 HL.B.B1|=1<<1;
rlm@1 1046 break;
rlm@1 1047 case 0xcd:
rlm@1 1048 // SET 1,L
rlm@1 1049 HL.B.B0|=1<<1;
rlm@1 1050 break;
rlm@1 1051 case 0xce:
rlm@1 1052 // SET 1,(HL)
rlm@1 1053 tempValue=gbReadMemory(HL.W);
rlm@1 1054 tempValue|=1<<1;
rlm@1 1055 gbWriteMemory(HL.W,tempValue);
rlm@1 1056 break;
rlm@1 1057 case 0xcf:
rlm@1 1058 // SET 1,A
rlm@1 1059 AF.B.B1|=1<<1;
rlm@1 1060 break;
rlm@1 1061 case 0xd0:
rlm@1 1062 // SET 2,B
rlm@1 1063 BC.B.B1|=1<<2;
rlm@1 1064 break;
rlm@1 1065 case 0xd1:
rlm@1 1066 // SET 2,C
rlm@1 1067 BC.B.B0|=1<<2;
rlm@1 1068 break;
rlm@1 1069 case 0xd2:
rlm@1 1070 // SET 2,D
rlm@1 1071 DE.B.B1|=1<<2;
rlm@1 1072 break;
rlm@1 1073 case 0xd3:
rlm@1 1074 // SET 2,E
rlm@1 1075 DE.B.B0|=1<<2;
rlm@1 1076 break;
rlm@1 1077 case 0xd4:
rlm@1 1078 // SET 2,H
rlm@1 1079 HL.B.B1|=1<<2;
rlm@1 1080 break;
rlm@1 1081 case 0xd5:
rlm@1 1082 // SET 2,L
rlm@1 1083 HL.B.B0|=1<<2;
rlm@1 1084 break;
rlm@1 1085 case 0xd6:
rlm@1 1086 // SET 2,(HL)
rlm@1 1087 tempValue=gbReadMemory(HL.W);
rlm@1 1088 tempValue|=1<<2;
rlm@1 1089 gbWriteMemory(HL.W,tempValue);
rlm@1 1090 break;
rlm@1 1091 case 0xd7:
rlm@1 1092 // SET 2,A
rlm@1 1093 AF.B.B1|=1<<2;
rlm@1 1094 break;
rlm@1 1095 case 0xd8:
rlm@1 1096 // SET 3,B
rlm@1 1097 BC.B.B1|=1<<3;
rlm@1 1098 break;
rlm@1 1099 case 0xd9:
rlm@1 1100 // SET 3,C
rlm@1 1101 BC.B.B0|=1<<3;
rlm@1 1102 break;
rlm@1 1103 case 0xda:
rlm@1 1104 // SET 3,D
rlm@1 1105 DE.B.B1|=1<<3;
rlm@1 1106 break;
rlm@1 1107 case 0xdb:
rlm@1 1108 // SET 3,E
rlm@1 1109 DE.B.B0|=1<<3;
rlm@1 1110 break;
rlm@1 1111 case 0xdc:
rlm@1 1112 // SET 3,H
rlm@1 1113 HL.B.B1|=1<<3;
rlm@1 1114 break;
rlm@1 1115 case 0xdd:
rlm@1 1116 // SET 3,L
rlm@1 1117 HL.B.B0|=1<<3;
rlm@1 1118 break;
rlm@1 1119 case 0xde:
rlm@1 1120 // SET 3,(HL)
rlm@1 1121 tempValue=gbReadMemory(HL.W);
rlm@1 1122 tempValue|=1<<3;
rlm@1 1123 gbWriteMemory(HL.W,tempValue);
rlm@1 1124 break;
rlm@1 1125 case 0xdf:
rlm@1 1126 // SET 3,A
rlm@1 1127 AF.B.B1|=1<<3;
rlm@1 1128 break;
rlm@1 1129 case 0xe0:
rlm@1 1130 // SET 4,B
rlm@1 1131 BC.B.B1|=1<<4;
rlm@1 1132 break;
rlm@1 1133 case 0xe1:
rlm@1 1134 // SET 4,C
rlm@1 1135 BC.B.B0|=1<<4;
rlm@1 1136 break;
rlm@1 1137 case 0xe2:
rlm@1 1138 // SET 4,D
rlm@1 1139 DE.B.B1|=1<<4;
rlm@1 1140 break;
rlm@1 1141 case 0xe3:
rlm@1 1142 // SET 4,E
rlm@1 1143 DE.B.B0|=1<<4;
rlm@1 1144 break;
rlm@1 1145 case 0xe4:
rlm@1 1146 // SET 4,H
rlm@1 1147 HL.B.B1|=1<<4;
rlm@1 1148 break;
rlm@1 1149 case 0xe5:
rlm@1 1150 // SET 4,L
rlm@1 1151 HL.B.B0|=1<<4;
rlm@1 1152 break;
rlm@1 1153 case 0xe6:
rlm@1 1154 // SET 4,(HL)
rlm@1 1155 tempValue=gbReadMemory(HL.W);
rlm@1 1156 tempValue|=1<<4;
rlm@1 1157 gbWriteMemory(HL.W,tempValue);
rlm@1 1158 break;
rlm@1 1159 case 0xe7:
rlm@1 1160 // SET 4,A
rlm@1 1161 AF.B.B1|=1<<4;
rlm@1 1162 break;
rlm@1 1163 case 0xe8:
rlm@1 1164 // SET 5,B
rlm@1 1165 BC.B.B1|=1<<5;
rlm@1 1166 break;
rlm@1 1167 case 0xe9:
rlm@1 1168 // SET 5,C
rlm@1 1169 BC.B.B0|=1<<5;
rlm@1 1170 break;
rlm@1 1171 case 0xea:
rlm@1 1172 // SET 5,D
rlm@1 1173 DE.B.B1|=1<<5;
rlm@1 1174 break;
rlm@1 1175 case 0xeb:
rlm@1 1176 // SET 5,E
rlm@1 1177 DE.B.B0|=1<<5;
rlm@1 1178 break;
rlm@1 1179 case 0xec:
rlm@1 1180 // SET 5,H
rlm@1 1181 HL.B.B1|=1<<5;
rlm@1 1182 break;
rlm@1 1183 case 0xed:
rlm@1 1184 // SET 5,L
rlm@1 1185 HL.B.B0|=1<<5;
rlm@1 1186 break;
rlm@1 1187 case 0xee:
rlm@1 1188 // SET 5,(HL)
rlm@1 1189 tempValue=gbReadMemory(HL.W);
rlm@1 1190 tempValue|=1<<5;
rlm@1 1191 gbWriteMemory(HL.W,tempValue);
rlm@1 1192 break;
rlm@1 1193 case 0xef:
rlm@1 1194 // SET 5,A
rlm@1 1195 AF.B.B1|=1<<5;
rlm@1 1196 break;
rlm@1 1197 case 0xf0:
rlm@1 1198 // SET 6,B
rlm@1 1199 BC.B.B1|=1<<6;
rlm@1 1200 break;
rlm@1 1201 case 0xf1:
rlm@1 1202 // SET 6,C
rlm@1 1203 BC.B.B0|=1<<6;
rlm@1 1204 break;
rlm@1 1205 case 0xf2:
rlm@1 1206 // SET 6,D
rlm@1 1207 DE.B.B1|=1<<6;
rlm@1 1208 break;
rlm@1 1209 case 0xf3:
rlm@1 1210 // SET 6,E
rlm@1 1211 DE.B.B0|=1<<6;
rlm@1 1212 break;
rlm@1 1213 case 0xf4:
rlm@1 1214 // SET 6,H
rlm@1 1215 HL.B.B1|=1<<6;
rlm@1 1216 break;
rlm@1 1217 case 0xf5:
rlm@1 1218 // SET 6,L
rlm@1 1219 HL.B.B0|=1<<6;
rlm@1 1220 break;
rlm@1 1221 case 0xf6:
rlm@1 1222 // SET 6,(HL)
rlm@1 1223 tempValue=gbReadMemory(HL.W);
rlm@1 1224 tempValue|=1<<6;
rlm@1 1225 gbWriteMemory(HL.W,tempValue);
rlm@1 1226 break;
rlm@1 1227 case 0xf7:
rlm@1 1228 // SET 6,A
rlm@1 1229 AF.B.B1|=1<<6;
rlm@1 1230 break;
rlm@1 1231 case 0xf8:
rlm@1 1232 // SET 7,B
rlm@1 1233 BC.B.B1|=1<<7;
rlm@1 1234 break;
rlm@1 1235 case 0xf9:
rlm@1 1236 // SET 7,C
rlm@1 1237 BC.B.B0|=1<<7;
rlm@1 1238 break;
rlm@1 1239 case 0xfa:
rlm@1 1240 // SET 7,D
rlm@1 1241 DE.B.B1|=1<<7;
rlm@1 1242 break;
rlm@1 1243 case 0xfb:
rlm@1 1244 // SET 7,E
rlm@1 1245 DE.B.B0|=1<<7;
rlm@1 1246 break;
rlm@1 1247 case 0xfc:
rlm@1 1248 // SET 7,H
rlm@1 1249 HL.B.B1|=1<<7;
rlm@1 1250 break;
rlm@1 1251 case 0xfd:
rlm@1 1252 // SET 7,L
rlm@1 1253 HL.B.B0|=1<<7;
rlm@1 1254 break;
rlm@1 1255 case 0xfe:
rlm@1 1256 // SET 7,(HL)
rlm@1 1257 tempValue=gbReadMemory(HL.W);
rlm@1 1258 tempValue|=1<<7;
rlm@1 1259 gbWriteMemory(HL.W,tempValue);
rlm@1 1260 break;
rlm@1 1261 case 0xff:
rlm@1 1262 // SET 7,A
rlm@1 1263 AF.B.B1|=1<<7;
rlm@1 1264 break;
rlm@1 1265 default:
rlm@1 1266 systemMessage(0, N_("Unknown opcode %02x at %04x"),
rlm@1 1267 gbReadOpcode(PC.W-1),PC.W-1);
rlm@1 1268 emulating = false;
rlm@1 1269 return;