Implemented 0x4XKK and 0x5XY0
parent
8de34f6091
commit
e08895d35d
|
@ -39,6 +39,16 @@ private:
|
||||||
* Handles Chip8 instruction 0x3000
|
* Handles Chip8 instruction 0x3000
|
||||||
*/
|
*/
|
||||||
static void handle3000(Chip8&, Instruction);
|
static void handle3000(Chip8&, Instruction);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles Chip8 instruction 0x4000
|
||||||
|
*/
|
||||||
|
static void handle4000(Chip8&, Instruction);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles Chip8 instruction 0x5000
|
||||||
|
*/
|
||||||
|
static void handle5000(Chip8&, Instruction);
|
||||||
public:
|
public:
|
||||||
InstructionHandler();
|
InstructionHandler();
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ InstructionHandler::InstructionHandler() {
|
||||||
this->handlers[0x1000] = handle1000;
|
this->handlers[0x1000] = handle1000;
|
||||||
this->handlers[0x2000] = handle2000;
|
this->handlers[0x2000] = handle2000;
|
||||||
this->handlers[0x3000] = handle3000;
|
this->handlers[0x3000] = handle3000;
|
||||||
|
this->handlers[0x4000] = handle4000;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -81,4 +82,30 @@ void InstructionHandler::handle3000(Chip8& chip8, Instruction instruction) {
|
||||||
if (chip8.getRegister(instruction.x()) == instruction.kk()) {
|
if (chip8.getRegister(instruction.x()) == instruction.kk()) {
|
||||||
chip8.setProgramCounter(chip8.getProgramCounter() + 2);
|
chip8.setProgramCounter(chip8.getProgramCounter() + 2);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the 0x4XKK Chip8 instruction which is used to skip the next instruction if V[x] != kk.
|
||||||
|
* This will compare V[x] to kk and increases the program counter by 2 if they are not equal.
|
||||||
|
*
|
||||||
|
* @param chip8 The Chip8 instance
|
||||||
|
* @param instruction The Instruction instance
|
||||||
|
*/
|
||||||
|
void InstructionHandler::handle4000(Chip8& chip8, Instruction instruction) {
|
||||||
|
if (chip8.getRegister(instruction.x()) != instruction.kk()) {
|
||||||
|
chip8.setProgramCounter(chip8.getProgramCounter() + 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the 0x5XY0 Chip8 instruction which is used to skip the next instruction if V[x] == V[y].
|
||||||
|
* This will compare V[x] to V[y] and increases the program counter by 2 if they are equal.
|
||||||
|
*
|
||||||
|
* @param chip8 The Chip8 instance
|
||||||
|
* @param instruction The Instruction instance
|
||||||
|
*/
|
||||||
|
void InstructionHandler::handle5000(Chip8& chip8, Instruction instruction) {
|
||||||
|
if (chip8.getRegister(instruction.x()) == chip8.getRegister(instruction.y())) {
|
||||||
|
chip8.setProgramCounter(chip8.getProgramCounter() + 2);
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue