def testSetVXToSubtractionOfVXFromVYWithCarry(self): cpu = chip8() cpu.registers[0xA] = 0xF cpu.registers[0xE] = 0xA cpu.executeInstruction(0x8AE7) self.assertEqual(cpu.registers[0xA], 0xFA) self.assertEqual(cpu.registers[0xF], 0x1)
def testSetVXToVY(self): cpu = chip8() cpu.registers[0xA] = 0x0 cpu.registers[0xF] = 0xFA self.assertEqual(cpu.registers[0xA], 0x0) cpu.executeInstruction(0x8AF0) self.assertEqual(cpu.registers[0xA], 0xFA)
def testAddVYToVXWithCarry(self): cpu = chip8() cpu.registers[0xA] = 0xFF cpu.registers[0xE] = 0xFA cpu.executeInstruction(0x8AE4) self.assertEqual(cpu.registers[0xA], 0xFA) self.assertEqual(cpu.registers[0xF], 0x1)
def testInstructionSkipsTheNextInstructionIfVXDoesNotEqualsNN(self): cpu = chip8() cpu.PC = 0 cpu.registers[0xA] = 0xFF self.assertEqual(cpu.registers[0xA], 0xFF) self.assertEqual(cpu.PC, 0) cpu.executeInstruction(0x4AFF) self.assertEqual(cpu.PC, 2) cpu.executeInstruction(0x4AFA) self.assertEqual(cpu.PC, 6)
def testShiftVXLeft(self): cpu = chip8() cpu.registers[0xA] = 0x8A cpu.executeInstruction(0x8AEE) self.assertEqual(cpu.registers[0xA], 0x14) self.assertEqual(cpu.registers[0xF], 0x1) cpu.registers[0xA] = 0x2 cpu.executeInstruction(0x8AEE) self.assertEqual(cpu.registers[0xA], 0x4) self.assertEqual(cpu.registers[0xF], 0x0)
def testShiftVXRight(self): cpu = chip8() cpu.registers[0xA] = 0x3 cpu.executeInstruction(0x8AE6) self.assertEqual(cpu.registers[0xA], 0x1) self.assertEqual(cpu.registers[0xF], 0x1) cpu.registers[0xA] = 0x2 cpu.executeInstruction(0x8AE6) self.assertEqual(cpu.registers[0xA], 0x1) self.assertEqual(cpu.registers[0xF], 0x0)
def testSkipNextInstructionIfVXEqualsVY(self): cpu = chip8() cpu.PC = 0 cpu.registers[0xA] = 0xFF self.assertEqual(cpu.registers[0xA], 0xFF) self.assertEqual(cpu.PC, 0) cpu.executeInstruction(0x5AF0) self.assertEqual(cpu.PC, 2) cpu.registers[0xF] = 0xFF self.assertEqual(cpu.registers[0xF], 0xFF) cpu.executeInstruction(0x5AF0) self.assertEqual(cpu.PC, 6)
def testSetVXToVXxorVY(self): cpu = chip8() cpu.registers[0xA] = 0x2 cpu.registers[0xF] = 0xA cpu.executeInstruction(0x8AF3) self.assertEqual(cpu.registers[0xA], 0x8)
def testSetVXToVXandVY(self): cpu = chip8() cpu.registers[0xA] = 0x7 cpu.registers[0xF] = 0x3 cpu.executeInstruction(0x8AF2) self.assertEqual(cpu.registers[0xA], 0x3)
def testAddValueToVX(self): cpu = chip8() cpu.registers[0xA] = 0x5 self.assertEqual(cpu.registers[0xA], 0x5) cpu.executeInstruction(0x7A05) self.assertEqual(cpu.registers[0xA], 0xA)
def testSetValueToVX(self): cpu = chip8() cpu.registers[0xA] = 0x0 self.assertEqual(cpu.registers[0xA], 0x0) cpu.executeInstruction(0x6AFA) self.assertEqual(cpu.registers[0xA], 0xFA)
def testInstructionJumpTo(self): cpu = chip8() cpu.PC = 0 cpu.executeInstruction(0x1FFF) self.assertEqual(cpu.PC, 0x0FFF)
def main(): emulator=chip8() emulator.load_rom('/home/misha/Desktop/chip8/PONG2') emulator.run_cycle()