Processor.h (17369B)
1/* 2 * Gearboy - Nintendo Game Boy Emulator 3 * Copyright (C) 2012 Ignacio Sanchez 4 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * any later version. 9 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see http://www.gnu.org/licenses/ 17 * 18 */ 19 20#ifndef PROCESSOR_H 21#define PROCESSOR_H 22 23#include <list> 24#include "definitions.h" 25#include "SixteenBitRegister.h" 26 27class Memory; 28 29class Processor 30{ 31public: 32 enum Interrupts 33 { 34 None_Interrupt = 0x00, 35 VBlank_Interrupt = 0x01, 36 LCDSTAT_Interrupt = 0x02, 37 Timer_Interrupt = 0x04, 38 Serial_Interrupt = 0x08, 39 Joypad_Interrupt = 0x10 40 }; 41 42 struct ProcessorState 43 { 44 SixteenBitRegister* AF; 45 SixteenBitRegister* BC; 46 SixteenBitRegister* DE; 47 SixteenBitRegister* HL; 48 SixteenBitRegister* SP; 49 SixteenBitRegister* PC; 50 bool* IME; 51 bool* Halt; 52 }; 53 54public: 55 Processor(Memory* pMemory); 56 ~Processor(); 57 void Init(); 58 void Reset(bool bCGB, bool bGBA); 59 u8 RunFor(u8 ticks); 60 void RequestInterrupt(Interrupts interrupt); 61 void ResetTIMACycles(); 62 void ResetDIVCycles(); 63 bool Halted() const; 64 bool DuringOpCode() const; 65 bool CGBSpeed() const; 66 void AddCycles(unsigned int cycles); 67 bool InterruptIsAboutToRaise(); 68 void SaveState(std::ostream& stream); 69 void LoadState(std::istream& stream); 70 void SetGameSharkCheat(const char* szCheat); 71 void ClearGameSharkCheats(); 72 ProcessorState* GetState(); 73 bool Disassemble(u16 address); 74 bool BreakpointHit(); 75 void RequestMemoryBreakpoint(); 76 void UpdateTimers(u8 ticks); 77 void UpdateSerial(u8 ticks); 78 79private: 80 typedef void (Processor::*OPCptr) (void); 81 OPCptr m_OPCodes[256]; 82 OPCptr m_OPCodesCB[256]; 83 Memory* m_pMemory; 84 SixteenBitRegister AF; 85 SixteenBitRegister BC; 86 SixteenBitRegister DE; 87 SixteenBitRegister HL; 88 SixteenBitRegister SP; 89 SixteenBitRegister PC; 90 bool m_bIME; 91 bool m_bHalt; 92 bool m_bBranchTaken; 93 bool m_bSkipPCBug; 94 unsigned int m_iCurrentClockCycles; 95 unsigned int m_iDIVCycles; 96 unsigned int m_iTIMACycles; 97 int m_iSerialBit; 98 int m_iSerialCycles; 99 int m_iIMECycles; 100 int m_iUnhaltCycles; 101 bool m_bCGB; 102 int m_iInterruptDelayCycles; 103 bool m_bCGBSpeed; 104 int m_iSpeedMultiplier; 105 int m_iAccurateOPCodeState; 106 u8 m_iReadCache; 107 bool m_bBreakpointHit; 108 bool m_bRequestMemBreakpoint; 109 110 struct GameSharkCode 111 { 112 u8 type; 113 u16 address; 114 u8 value; 115 }; 116 std::list<GameSharkCode> m_GameSharkList; 117 118 ProcessorState m_ProcessorState; 119 120private: 121 Processor::Interrupts InterruptPending(); 122 void ServeInterrupt(Interrupts interrupt); 123 void UpdateGameShark(); 124 void ClearAllFlags(); 125 void ToggleZeroFlagFromResult(u8 result); 126 void SetFlag(u8 flag); 127 void FlipFlag(u8 flag); 128 void ToggleFlag(u8 flag); 129 void UntoggleFlag(u8 flag); 130 bool IsSetFlag(u8 flag); 131 void StackPush(SixteenBitRegister* reg); 132 void StackPop(SixteenBitRegister* reg); 133 int AdjustedCycles(int cycles); 134 void InvalidOPCode(); 135 void OPCodes_LD(u8* reg1, u8 reg2); 136 void OPCodes_LD(u8* reg, u16 address); 137 void OPCodes_LD(u16 address, u8 reg); 138 void OPCodes_OR(u8 number); 139 void OPCodes_XOR(u8 number); 140 void OPCodes_AND(u8 number); 141 void OPCodes_CP(u8 number); 142 void OPCodes_INC(u8* reg); 143 void OPCodes_INC_HL(); 144 void OPCodes_DEC(u8* reg); 145 void OPCodes_DEC_HL(); 146 void OPCodes_ADD(u8 number); 147 void OPCodes_ADC(u8 number); 148 void OPCodes_SUB(u8 number); 149 void OPCodes_SBC(u8 number); 150 void OPCodes_ADD_HL(u16 number); 151 void OPCodes_ADD_SP(s8 number); 152 void OPCodes_SWAP_Register(u8* reg); 153 void OPCodes_SWAP_HL(); 154 void OPCodes_SLA(u8* reg); 155 void OPCodes_SLA_HL(); 156 void OPCodes_SRA(u8* reg); 157 void OPCodes_SRA_HL(); 158 void OPCodes_SRL(u8* reg); 159 void OPCodes_SRL_HL(); 160 void OPCodes_RLC(u8* reg, bool isRegisterA = false); 161 void OPCodes_RLC_HL(); 162 void OPCodes_RL(u8* reg, bool isRegisterA = false); 163 void OPCodes_RL_HL(); 164 void OPCodes_RRC(u8* reg, bool isRegisterA = false); 165 void OPCodes_RRC_HL(); 166 void OPCodes_RR(u8* reg, bool isRegisterA = false); 167 void OPCodes_RR_HL(); 168 void OPCodes_BIT(u8* reg, int bit); 169 void OPCodes_BIT_HL(int bit); 170 void OPCodes_SET(u8* reg, int bit); 171 void OPCodes_SET_HL(int bit); 172 void OPCodes_RES(u8* reg, int bit); 173 void OPCodes_RES_HL(int bit); 174 void InitOPCodeFunctors(); 175 void OPCode0x00(); 176 void OPCode0x01(); 177 void OPCode0x02(); 178 void OPCode0x03(); 179 void OPCode0x04(); 180 void OPCode0x05(); 181 void OPCode0x06(); 182 void OPCode0x07(); 183 void OPCode0x08(); 184 void OPCode0x09(); 185 void OPCode0x0A(); 186 void OPCode0x0B(); 187 void OPCode0x0C(); 188 void OPCode0x0D(); 189 void OPCode0x0E(); 190 void OPCode0x0F(); 191 void OPCode0x10(); 192 void OPCode0x11(); 193 void OPCode0x12(); 194 void OPCode0x13(); 195 void OPCode0x14(); 196 void OPCode0x15(); 197 void OPCode0x16(); 198 void OPCode0x17(); 199 void OPCode0x18(); 200 void OPCode0x19(); 201 void OPCode0x1A(); 202 void OPCode0x1B(); 203 void OPCode0x1C(); 204 void OPCode0x1D(); 205 void OPCode0x1E(); 206 void OPCode0x1F(); 207 void OPCode0x20(); 208 void OPCode0x21(); 209 void OPCode0x22(); 210 void OPCode0x23(); 211 void OPCode0x24(); 212 void OPCode0x25(); 213 void OPCode0x26(); 214 void OPCode0x27(); 215 void OPCode0x28(); 216 void OPCode0x29(); 217 void OPCode0x2A(); 218 void OPCode0x2B(); 219 void OPCode0x2C(); 220 void OPCode0x2D(); 221 void OPCode0x2E(); 222 void OPCode0x2F(); 223 void OPCode0x30(); 224 void OPCode0x31(); 225 void OPCode0x32(); 226 void OPCode0x33(); 227 void OPCode0x34(); 228 void OPCode0x35(); 229 void OPCode0x36(); 230 void OPCode0x37(); 231 void OPCode0x38(); 232 void OPCode0x39(); 233 void OPCode0x3A(); 234 void OPCode0x3B(); 235 void OPCode0x3C(); 236 void OPCode0x3D(); 237 void OPCode0x3E(); 238 void OPCode0x3F(); 239 void OPCode0x40(); 240 void OPCode0x41(); 241 void OPCode0x42(); 242 void OPCode0x43(); 243 void OPCode0x44(); 244 void OPCode0x45(); 245 void OPCode0x46(); 246 void OPCode0x47(); 247 void OPCode0x48(); 248 void OPCode0x49(); 249 void OPCode0x4A(); 250 void OPCode0x4B(); 251 void OPCode0x4C(); 252 void OPCode0x4D(); 253 void OPCode0x4E(); 254 void OPCode0x4F(); 255 void OPCode0x50(); 256 void OPCode0x51(); 257 void OPCode0x52(); 258 void OPCode0x53(); 259 void OPCode0x54(); 260 void OPCode0x55(); 261 void OPCode0x56(); 262 void OPCode0x57(); 263 void OPCode0x58(); 264 void OPCode0x59(); 265 void OPCode0x5A(); 266 void OPCode0x5B(); 267 void OPCode0x5C(); 268 void OPCode0x5D(); 269 void OPCode0x5E(); 270 void OPCode0x5F(); 271 void OPCode0x60(); 272 void OPCode0x61(); 273 void OPCode0x62(); 274 void OPCode0x63(); 275 void OPCode0x64(); 276 void OPCode0x65(); 277 void OPCode0x66(); 278 void OPCode0x67(); 279 void OPCode0x68(); 280 void OPCode0x69(); 281 void OPCode0x6A(); 282 void OPCode0x6B(); 283 void OPCode0x6C(); 284 void OPCode0x6D(); 285 void OPCode0x6E(); 286 void OPCode0x6F(); 287 void OPCode0x70(); 288 void OPCode0x71(); 289 void OPCode0x72(); 290 void OPCode0x73(); 291 void OPCode0x74(); 292 void OPCode0x75(); 293 void OPCode0x76(); 294 void OPCode0x77(); 295 void OPCode0x78(); 296 void OPCode0x79(); 297 void OPCode0x7A(); 298 void OPCode0x7B(); 299 void OPCode0x7C(); 300 void OPCode0x7D(); 301 void OPCode0x7E(); 302 void OPCode0x7F(); 303 void OPCode0x80(); 304 void OPCode0x81(); 305 void OPCode0x82(); 306 void OPCode0x83(); 307 void OPCode0x84(); 308 void OPCode0x85(); 309 void OPCode0x86(); 310 void OPCode0x87(); 311 void OPCode0x88(); 312 void OPCode0x89(); 313 void OPCode0x8A(); 314 void OPCode0x8B(); 315 void OPCode0x8C(); 316 void OPCode0x8D(); 317 void OPCode0x8E(); 318 void OPCode0x8F(); 319 void OPCode0x90(); 320 void OPCode0x91(); 321 void OPCode0x92(); 322 void OPCode0x93(); 323 void OPCode0x94(); 324 void OPCode0x95(); 325 void OPCode0x96(); 326 void OPCode0x97(); 327 void OPCode0x98(); 328 void OPCode0x99(); 329 void OPCode0x9A(); 330 void OPCode0x9B(); 331 void OPCode0x9C(); 332 void OPCode0x9D(); 333 void OPCode0x9E(); 334 void OPCode0x9F(); 335 void OPCode0xA0(); 336 void OPCode0xA1(); 337 void OPCode0xA2(); 338 void OPCode0xA3(); 339 void OPCode0xA4(); 340 void OPCode0xA5(); 341 void OPCode0xA6(); 342 void OPCode0xA7(); 343 void OPCode0xA8(); 344 void OPCode0xA9(); 345 void OPCode0xAA(); 346 void OPCode0xAB(); 347 void OPCode0xAC(); 348 void OPCode0xAD(); 349 void OPCode0xAE(); 350 void OPCode0xAF(); 351 void OPCode0xB0(); 352 void OPCode0xB1(); 353 void OPCode0xB2(); 354 void OPCode0xB3(); 355 void OPCode0xB4(); 356 void OPCode0xB5(); 357 void OPCode0xB6(); 358 void OPCode0xB7(); 359 void OPCode0xB8(); 360 void OPCode0xB9(); 361 void OPCode0xBA(); 362 void OPCode0xBB(); 363 void OPCode0xBC(); 364 void OPCode0xBD(); 365 void OPCode0xBE(); 366 void OPCode0xBF(); 367 void OPCode0xC0(); 368 void OPCode0xC1(); 369 void OPCode0xC2(); 370 void OPCode0xC3(); 371 void OPCode0xC4(); 372 void OPCode0xC5(); 373 void OPCode0xC6(); 374 void OPCode0xC7(); 375 void OPCode0xC8(); 376 void OPCode0xC9(); 377 void OPCode0xCA(); 378 void OPCode0xCB(); 379 void OPCode0xCC(); 380 void OPCode0xCD(); 381 void OPCode0xCE(); 382 void OPCode0xCF(); 383 void OPCode0xD0(); 384 void OPCode0xD1(); 385 void OPCode0xD2(); 386 void OPCode0xD3(); 387 void OPCode0xD4(); 388 void OPCode0xD5(); 389 void OPCode0xD6(); 390 void OPCode0xD7(); 391 void OPCode0xD8(); 392 void OPCode0xD9(); 393 void OPCode0xDA(); 394 void OPCode0xDB(); 395 void OPCode0xDC(); 396 void OPCode0xDD(); 397 void OPCode0xDE(); 398 void OPCode0xDF(); 399 void OPCode0xE0(); 400 void OPCode0xE1(); 401 void OPCode0xE2(); 402 void OPCode0xE3(); 403 void OPCode0xE4(); 404 void OPCode0xE5(); 405 void OPCode0xE6(); 406 void OPCode0xE7(); 407 void OPCode0xE8(); 408 void OPCode0xE9(); 409 void OPCode0xEA(); 410 void OPCode0xEB(); 411 void OPCode0xEC(); 412 void OPCode0xED(); 413 void OPCode0xEE(); 414 void OPCode0xEF(); 415 void OPCode0xF0(); 416 void OPCode0xF1(); 417 void OPCode0xF2(); 418 void OPCode0xF3(); 419 void OPCode0xF4(); 420 void OPCode0xF5(); 421 void OPCode0xF6(); 422 void OPCode0xF7(); 423 void OPCode0xF8(); 424 void OPCode0xF9(); 425 void OPCode0xFA(); 426 void OPCode0xFB(); 427 void OPCode0xFC(); 428 void OPCode0xFD(); 429 void OPCode0xFE(); 430 void OPCode0xFF(); 431 void OPCodeCB0x00(); 432 void OPCodeCB0x01(); 433 void OPCodeCB0x02(); 434 void OPCodeCB0x03(); 435 void OPCodeCB0x04(); 436 void OPCodeCB0x05(); 437 void OPCodeCB0x06(); 438 void OPCodeCB0x07(); 439 void OPCodeCB0x08(); 440 void OPCodeCB0x09(); 441 void OPCodeCB0x0A(); 442 void OPCodeCB0x0B(); 443 void OPCodeCB0x0C(); 444 void OPCodeCB0x0D(); 445 void OPCodeCB0x0E(); 446 void OPCodeCB0x0F(); 447 void OPCodeCB0x10(); 448 void OPCodeCB0x11(); 449 void OPCodeCB0x12(); 450 void OPCodeCB0x13(); 451 void OPCodeCB0x14(); 452 void OPCodeCB0x15(); 453 void OPCodeCB0x16(); 454 void OPCodeCB0x17(); 455 void OPCodeCB0x18(); 456 void OPCodeCB0x19(); 457 void OPCodeCB0x1A(); 458 void OPCodeCB0x1B(); 459 void OPCodeCB0x1C(); 460 void OPCodeCB0x1D(); 461 void OPCodeCB0x1E(); 462 void OPCodeCB0x1F(); 463 void OPCodeCB0x20(); 464 void OPCodeCB0x21(); 465 void OPCodeCB0x22(); 466 void OPCodeCB0x23(); 467 void OPCodeCB0x24(); 468 void OPCodeCB0x25(); 469 void OPCodeCB0x26(); 470 void OPCodeCB0x27(); 471 void OPCodeCB0x28(); 472 void OPCodeCB0x29(); 473 void OPCodeCB0x2A(); 474 void OPCodeCB0x2B(); 475 void OPCodeCB0x2C(); 476 void OPCodeCB0x2D(); 477 void OPCodeCB0x2E(); 478 void OPCodeCB0x2F(); 479 void OPCodeCB0x30(); 480 void OPCodeCB0x31(); 481 void OPCodeCB0x32(); 482 void OPCodeCB0x33(); 483 void OPCodeCB0x34(); 484 void OPCodeCB0x35(); 485 void OPCodeCB0x36(); 486 void OPCodeCB0x37(); 487 void OPCodeCB0x38(); 488 void OPCodeCB0x39(); 489 void OPCodeCB0x3A(); 490 void OPCodeCB0x3B(); 491 void OPCodeCB0x3C(); 492 void OPCodeCB0x3D(); 493 void OPCodeCB0x3E(); 494 void OPCodeCB0x3F(); 495 void OPCodeCB0x40(); 496 void OPCodeCB0x41(); 497 void OPCodeCB0x42(); 498 void OPCodeCB0x43(); 499 void OPCodeCB0x44(); 500 void OPCodeCB0x45(); 501 void OPCodeCB0x46(); 502 void OPCodeCB0x47(); 503 void OPCodeCB0x48(); 504 void OPCodeCB0x49(); 505 void OPCodeCB0x4A(); 506 void OPCodeCB0x4B(); 507 void OPCodeCB0x4C(); 508 void OPCodeCB0x4D(); 509 void OPCodeCB0x4E(); 510 void OPCodeCB0x4F(); 511 void OPCodeCB0x50(); 512 void OPCodeCB0x51(); 513 void OPCodeCB0x52(); 514 void OPCodeCB0x53(); 515 void OPCodeCB0x54(); 516 void OPCodeCB0x55(); 517 void OPCodeCB0x56(); 518 void OPCodeCB0x57(); 519 void OPCodeCB0x58(); 520 void OPCodeCB0x59(); 521 void OPCodeCB0x5A(); 522 void OPCodeCB0x5B(); 523 void OPCodeCB0x5C(); 524 void OPCodeCB0x5D(); 525 void OPCodeCB0x5E(); 526 void OPCodeCB0x5F(); 527 void OPCodeCB0x60(); 528 void OPCodeCB0x61(); 529 void OPCodeCB0x62(); 530 void OPCodeCB0x63(); 531 void OPCodeCB0x64(); 532 void OPCodeCB0x65(); 533 void OPCodeCB0x66(); 534 void OPCodeCB0x67(); 535 void OPCodeCB0x68(); 536 void OPCodeCB0x69(); 537 void OPCodeCB0x6A(); 538 void OPCodeCB0x6B(); 539 void OPCodeCB0x6C(); 540 void OPCodeCB0x6D(); 541 void OPCodeCB0x6E(); 542 void OPCodeCB0x6F(); 543 void OPCodeCB0x70(); 544 void OPCodeCB0x71(); 545 void OPCodeCB0x72(); 546 void OPCodeCB0x73(); 547 void OPCodeCB0x74(); 548 void OPCodeCB0x75(); 549 void OPCodeCB0x76(); 550 void OPCodeCB0x77(); 551 void OPCodeCB0x78(); 552 void OPCodeCB0x79(); 553 void OPCodeCB0x7A(); 554 void OPCodeCB0x7B(); 555 void OPCodeCB0x7C(); 556 void OPCodeCB0x7D(); 557 void OPCodeCB0x7E(); 558 void OPCodeCB0x7F(); 559 void OPCodeCB0x80(); 560 void OPCodeCB0x81(); 561 void OPCodeCB0x82(); 562 void OPCodeCB0x83(); 563 void OPCodeCB0x84(); 564 void OPCodeCB0x85(); 565 void OPCodeCB0x86(); 566 void OPCodeCB0x87(); 567 void OPCodeCB0x88(); 568 void OPCodeCB0x89(); 569 void OPCodeCB0x8A(); 570 void OPCodeCB0x8B(); 571 void OPCodeCB0x8C(); 572 void OPCodeCB0x8D(); 573 void OPCodeCB0x8E(); 574 void OPCodeCB0x8F(); 575 void OPCodeCB0x90(); 576 void OPCodeCB0x91(); 577 void OPCodeCB0x92(); 578 void OPCodeCB0x93(); 579 void OPCodeCB0x94(); 580 void OPCodeCB0x95(); 581 void OPCodeCB0x96(); 582 void OPCodeCB0x97(); 583 void OPCodeCB0x98(); 584 void OPCodeCB0x99(); 585 void OPCodeCB0x9A(); 586 void OPCodeCB0x9B(); 587 void OPCodeCB0x9C(); 588 void OPCodeCB0x9D(); 589 void OPCodeCB0x9E(); 590 void OPCodeCB0x9F(); 591 void OPCodeCB0xA0(); 592 void OPCodeCB0xA1(); 593 void OPCodeCB0xA2(); 594 void OPCodeCB0xA3(); 595 void OPCodeCB0xA4(); 596 void OPCodeCB0xA5(); 597 void OPCodeCB0xA6(); 598 void OPCodeCB0xA7(); 599 void OPCodeCB0xA8(); 600 void OPCodeCB0xA9(); 601 void OPCodeCB0xAA(); 602 void OPCodeCB0xAB(); 603 void OPCodeCB0xAC(); 604 void OPCodeCB0xAD(); 605 void OPCodeCB0xAE(); 606 void OPCodeCB0xAF(); 607 void OPCodeCB0xB0(); 608 void OPCodeCB0xB1(); 609 void OPCodeCB0xB2(); 610 void OPCodeCB0xB3(); 611 void OPCodeCB0xB4(); 612 void OPCodeCB0xB5(); 613 void OPCodeCB0xB6(); 614 void OPCodeCB0xB7(); 615 void OPCodeCB0xB8(); 616 void OPCodeCB0xB9(); 617 void OPCodeCB0xBA(); 618 void OPCodeCB0xBB(); 619 void OPCodeCB0xBC(); 620 void OPCodeCB0xBD(); 621 void OPCodeCB0xBE(); 622 void OPCodeCB0xBF(); 623 void OPCodeCB0xC0(); 624 void OPCodeCB0xC1(); 625 void OPCodeCB0xC2(); 626 void OPCodeCB0xC3(); 627 void OPCodeCB0xC4(); 628 void OPCodeCB0xC5(); 629 void OPCodeCB0xC6(); 630 void OPCodeCB0xC7(); 631 void OPCodeCB0xC8(); 632 void OPCodeCB0xC9(); 633 void OPCodeCB0xCA(); 634 void OPCodeCB0xCB(); 635 void OPCodeCB0xCC(); 636 void OPCodeCB0xCD(); 637 void OPCodeCB0xCE(); 638 void OPCodeCB0xCF(); 639 void OPCodeCB0xD0(); 640 void OPCodeCB0xD1(); 641 void OPCodeCB0xD2(); 642 void OPCodeCB0xD3(); 643 void OPCodeCB0xD4(); 644 void OPCodeCB0xD5(); 645 void OPCodeCB0xD6(); 646 void OPCodeCB0xD7(); 647 void OPCodeCB0xD8(); 648 void OPCodeCB0xD9(); 649 void OPCodeCB0xDA(); 650 void OPCodeCB0xDB(); 651 void OPCodeCB0xDC(); 652 void OPCodeCB0xDD(); 653 void OPCodeCB0xDE(); 654 void OPCodeCB0xDF(); 655 void OPCodeCB0xE0(); 656 void OPCodeCB0xE1(); 657 void OPCodeCB0xE2(); 658 void OPCodeCB0xE3(); 659 void OPCodeCB0xE4(); 660 void OPCodeCB0xE5(); 661 void OPCodeCB0xE6(); 662 void OPCodeCB0xE7(); 663 void OPCodeCB0xE8(); 664 void OPCodeCB0xE9(); 665 void OPCodeCB0xEA(); 666 void OPCodeCB0xEB(); 667 void OPCodeCB0xEC(); 668 void OPCodeCB0xED(); 669 void OPCodeCB0xEE(); 670 void OPCodeCB0xEF(); 671 void OPCodeCB0xF0(); 672 void OPCodeCB0xF1(); 673 void OPCodeCB0xF2(); 674 void OPCodeCB0xF3(); 675 void OPCodeCB0xF4(); 676 void OPCodeCB0xF5(); 677 void OPCodeCB0xF6(); 678 void OPCodeCB0xF7(); 679 void OPCodeCB0xF8(); 680 void OPCodeCB0xF9(); 681 void OPCodeCB0xFA(); 682 void OPCodeCB0xFB(); 683 void OPCodeCB0xFC(); 684 void OPCodeCB0xFD(); 685 void OPCodeCB0xFE(); 686 void OPCodeCB0xFF(); 687}; 688 689#include "Processor_inline.h" 690 691#endif /* PROCESSOR_H */