cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

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 */