#ifndef _OPCODE_H_ #define _OPCODE_H_ #include #include #include #include "Chip8.h" #define N (opcode&0x000F) #define NNN (opcode&0x0FFF) #define X (opcode&0x0F00)>>8 #define Y (opcode&0x00F0)>>4 #define KK (opcode&0x00FF) void execute(); void op0table(); // void op00E0(); //clear screen void op00EE(); //return void op1NNN(); //jump void op2NNN(); //call void op3XKK(); //skip if reg[X] equal KK void op4XKK(); //skip if reg[X] not equal KK void op5XY0(); //skip if reg[X] equal reg[Y] void op6XKK(); //Load KK in reg[X] void op7XKK(); //reg[X] += KK, no carry void op8table(); void op8XY0(); //load reg[Y] in reg [X] void op8XY1(); //OR reg[X] and reg[Y] in reg [X] void op8XY2(); //AND reg[X] and reg[Y] in reg [X] void op8XY3(); //XOR reg[X] and reg[Y] in reg [X] void op8XY4(); //add reg[X] and reg[Y] in reg[X] whit carry void op8XY5(); //reg[X] = reg[X] -reg[Y] with NOT borrow void op8XY6(); //rotate reg[X] -> and save the least significant bit in the carry flag void op8XY7(); //reg[X] = reg[X] -reg[Y] with NOT borrow void op8XYE(); //rotate reg[X] <- and save the least significant bit in the carry flag void op9XY0(); //skip if reg[X] not equal reg[Y] void opANNN(); //load NNN into I void opBNNN(); //jump to address regist[0]+NNN void opCXKK(); //set regist[X] = random(0,255) AND KK void opDXYN(); //xor the sprite of size 8*N at adress I on the screen at position (regist[X],regist[Y]) //if a pixel is erased, set set carry flag. void opEtable(); void opEX9E(); //skip if regist[X] equal value of key pressed void opEXA1(); //skip if regist[X] not equal value of key pressed void opFtable(); void opF5table(); void opFX07(); //set regist[X] = DelayTimer void opFX0A(); //set regist[X] = keycode of pressed key (wait for press if not any) void opFX15(); //set DelayTimer = regist[X] void opFX18(); //set SoundTimer = regist[X] void opFX1E(); //set I = I + regist[X] void opFX29(); //set I to the location to draw the char stored in regist[X] void opFX33(); //store BCD representation of regist[X] in the adress I(hundreds), I+1(tens), I+2(digits) void opFX55(); //store regist[0]~regist[X] into memory adress I~I+X void opFX65(); //load regist[0]~regist[X] from memory adress I~I+X void uninplemented(); #endif // _OPCODE_H_