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;
  }
}