def __init__(self): self.registers = bytearray(self.REG_COUNT) self.index_register = 0 self.program_counter = self.ENTRY_POINT self.memory = Memory() self.screen = Screen() self.keyboard = bytearray(self.KEY_COUNT) self.stack = [] self.delay_timer = 0 self.sound_timer = 0 self.INSTRUCTION_SET = { 0x00E0: self.op_00E0, 0x00EE: self.op_00EE, 0x1: self.op_1NNN, 0x2: self.op_2NNN, 0x3: self.op_3XNN, 0x4: self.op_4XNN, 0x5: self.op_5XY0, 0x6: self.op_6XNN, 0x7: self.op_7XNN, 0x8000: self.op_8XY0, 0x8001: self.op_8XY1, 0x8002: self.op_8XY2, 0x8003: self.op_8XY3, 0x8004: self.op_8XY4, 0x8005: self.op_8XY5, 0x8006: self.op_8XY6, 0x8007: self.op_8XY7, 0x800E: self.op_8XYE, 0x9000: self.op_9XY0, 0xA: self.op_ANNN, 0xB: self.op_BNNN, 0xC: self.op_CXNN, 0xD: self.op_DXYN, 0xE09E: self.op_EX9E, 0xE0A1: self.op_EXA1, 0xF007: self.op_FX07, 0xF00A: self.op_FX0A, 0xF015: self.op_FX15, 0xF018: self.op_FX18, 0xF01E: self.op_FX1E, 0xF029: self.op_FX29, 0xF033: self.op_FX33, 0xF055: self.op_F055, 0xF065: self.op_FX65, }