tick method
void
tick()
Implementation
void tick() {
var opcode = _memory[_registers.pc] << 8 | _memory[_registers.pc + 1];
_registers.pc += 2;
var firstNibble = (opcode & 0xF000) >> 12;
switch (firstNibble) {
case 0x0:
switch (opcode & 0x00FF) {
case 0xE0:
_chip8.cls();
break;
case 0xEE:
_chip8.rts();
break;
}
break;
case 0x1:
_chip8.jmp(opcode);
break;
case 0x2:
_chip8.jsr(opcode);
break;
case 0x3:
_chip8.skeqConst(opcode);
break;
case 0x4:
_chip8.skneConst(opcode);
break;
case 0x5:
_chip8.skeq(opcode);
break;
case 0x6:
_chip8.movConst(opcode);
break;
case 0x7:
_chip8.addConst(opcode);
break;
case 0x8:
switch (opcode & 0x000F) {
case 0x0:
_chip8.mov(opcode);
break;
case 0x1:
_chip8.or(opcode);
break;
case 0x2:
_chip8.and(opcode);
break;
case 0x3:
_chip8.xor(opcode);
break;
case 0x4:
_chip8.add(opcode);
break;
case 0x5:
_chip8.sub(opcode);
break;
}
break;
case 0x9:
_chip8.skne(opcode);
break;
case 0xA:
_chip8.mvi(opcode);
break;
case 0xB:
_chip8.jmi(opcode);
break;
case 0xC:
_chip8.rand(opcode);
break;
case 0xD:
_chip8.sprite(opcode);
break;
case 0xE:
switch (opcode & 0x0FF) {
case 0x9E:
_chip8.skpr(opcode);
break;
case 0xA1:
_chip8.skup(opcode);
break;
}
break;
case 0xF:
switch (opcode & 0x0FF) {
case 0x07:
_chip8.gdelay(opcode);
break;
case 0x0A:
_chip8.key(opcode);
break;
case 0x15:
_chip8.sdelay(opcode);
break;
case 0x18:
_chip8.ssound(opcode);
_sendPort.send(Chip8PlaySoundEvent());
break;
case 0x1E:
_chip8.adi(opcode);
break;
case 0x29:
_chip8.font(opcode);
break;
case 0x33:
_chip8.bcd(opcode);
break;
case 0x55:
_chip8.str(opcode);
break;
case 0x65:
_chip8.ldr(opcode);
break;
}
break;
}
}