def op_8xyE(self): # print("8xyE") x = get_x(self.opcode) y = get_y(self.opcode) self.register[15] = (self.register[x] >> 7) & 0x01 self.register[x] *= 2 if self.register[x] > 255: self.register[x] = self.register[x] & 0xFF
def op_8xy7(self): # print("8xy7") x = get_x(self.opcode) y = get_y(self.opcode) if self.register[y] > self.register[x]: self.register[15] = 1 else: self.register[15] = 0 self.register[x] = (self.register[y] - self.register[x]) & 0xFF
def op_8xy4(self): # print("8xy4") x = get_x(self.opcode) y = get_y(self.opcode) self.register[x] = self.register[y] + self.register[x] if self.register[x] > 255: self.register[x] = self.register[x] & 0xFF self.register[15] = 1 elif self.register[x] <= 255: self.register[15] = 0
def op_Dxyn(self): # print("Dxyn") x = get_x(self.opcode) y = get_y(self.opcode) n = get_n(self.opcode) drawable_chunk = self.get_binary_array(n) for y_index, row in enumerate(drawable_chunk): for x_index, pixel_bit in enumerate(row): current_y, current_x = self.get_coordinates( y, y_index, x, x_index) self.draw_pixel_to_array(pixel_bit, current_y, current_x)
def op_9xy0(self): # print("9xy0") x = get_x(self.opcode) y = get_y(self.opcode) if self.register[x] != self.register[y]: self.pc += 2
def op_8xy6(self): # print("8xy6") x = get_x(self.opcode) y = get_y(self.opcode) self.register[15] = self.register[x] & 0x01 self.register[x] = self.register[x] >> 1
def op_8xy3(self): # print("8xy3") x = get_x(self.opcode) y = get_y(self.opcode) self.register[x] = self.register[x] ^ self.register[y]
def op_8xy2(self): # print("8xy2") x = get_x(self.opcode) y = get_y(self.opcode) self.register[x] = self.register[x] & self.register[y]
def op_8xy1(self): # print("8xy1") x = get_x(self.opcode) y = get_y(self.opcode) self.register[x] = self.register[x] | self.register[y]