Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 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)
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
 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)
Пример #8
0
 def testSetVXToVXxorVY(self):
     cpu = chip8()
     cpu.registers[0xA] = 0x2
     cpu.registers[0xF] = 0xA
     cpu.executeInstruction(0x8AF3)
     self.assertEqual(cpu.registers[0xA], 0x8)
Пример #9
0
 def testSetVXToVXandVY(self):
     cpu = chip8()
     cpu.registers[0xA] = 0x7
     cpu.registers[0xF] = 0x3
     cpu.executeInstruction(0x8AF2)
     self.assertEqual(cpu.registers[0xA], 0x3)
Пример #10
0
 def testAddValueToVX(self):
     cpu = chip8()
     cpu.registers[0xA] = 0x5
     self.assertEqual(cpu.registers[0xA], 0x5)
     cpu.executeInstruction(0x7A05)
     self.assertEqual(cpu.registers[0xA], 0xA)
Пример #11
0
 def testSetValueToVX(self):
     cpu = chip8()
     cpu.registers[0xA] = 0x0
     self.assertEqual(cpu.registers[0xA], 0x0)
     cpu.executeInstruction(0x6AFA)
     self.assertEqual(cpu.registers[0xA], 0xFA)
Пример #12
0
 def testInstructionJumpTo(self):
     cpu = chip8()
     cpu.PC = 0
     cpu.executeInstruction(0x1FFF)
     self.assertEqual(cpu.PC, 0x0FFF)
Пример #13
0
def main():

    emulator=chip8()
    emulator.load_rom('/home/misha/Desktop/chip8/PONG2')
    emulator.run_cycle()