view src/gb/gbCodesCB.h @ 83:95cb2152d7cd

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