Beispiel #1
0
 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
Beispiel #2
0
 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
Beispiel #3
0
 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
Beispiel #4
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)
Beispiel #5
0
 def op_Fx0A(self):
     # print("Fx0A")
     x = get_x(self.opcode)
     not_pressed = True
     while not_pressed:
         for event in pygame.event.get():
             self.system_relevant_keypress(event)
             self.game_keydown(event)
             self.game_keyup(event)
             for index, key in enumerate(self.keyboard_register):
                 if key:
                     self.register[x] = index
                     not_pressed = False
                     break
Beispiel #6
0
 def op_Fx07(self):
     # print("Fx07")
     x = get_x(self.opcode)
     self.register[x] = self.delay_timer
Beispiel #7
0
 def op_ExA1(self):
     x = get_x(self.opcode)
     # print("ExA1", f"x={x}", f"register[{x}]={self.register[x]}")
     if not self.keyboard_register[self.register[x]]:
         self.pc += 2
Beispiel #8
0
 def op_Cxkk(self):
     # print("Cxkk")
     x = get_x(self.opcode)
     kk = get_kk(self.opcode)
     rand = randint(0, 255)
     self.register[x] = kk & rand
Beispiel #9
0
 def op_4xkk(self):
     # print("4xkk")
     x = get_x(self.opcode)
     kk = get_kk(self.opcode)
     if self.register[x] != kk:
         self.pc += 2
Beispiel #10
0
 def op_7xkk(self):
     # print("7xkk")
     x = get_x(self.opcode)
     kk = get_kk(self.opcode)
     self.register[x] = (kk + self.register[x]) & 0xFF
Beispiel #11
0
 def op_Fx1E(self):
     # print("Fx1E")
     x = get_x(self.opcode)
     self.I_register += self.register[x]
Beispiel #12
0
 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
Beispiel #13
0
 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]
Beispiel #14
0
 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]
Beispiel #15
0
 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]
Beispiel #16
0
 def op_Fx15(self):
     # print("Fx15")
     x = get_x(self.opcode)
     self.delay_timer = self.register[x]
Beispiel #17
0
 def op_Fx33(self):
     # print("Fx33")
     x = get_x(self.opcode)
     bcd_repr = self.get_binary_decimal(x)
     for index, number in enumerate(bcd_repr):
         self.memory[self.I_register + index] = number
Beispiel #18
0
 def op_Fx18(self):
     # print("Fx18")
     x = get_x(self.opcode)
     self.music_timer = self.register[x]
Beispiel #19
0
 def op_6xkk(self):
     x = get_x(self.opcode)
     kk = get_kk(self.opcode)
     # print("6xkk", f"x={hex(x)}", f"kk={hex(kk)}")
     self.register[x] = kk
Beispiel #20
0
 def op_Fx29(self):
     # print("Fx29")
     x = get_x(self.opcode)
     self.I_register = self.register[x] * 5
Beispiel #21
0
 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
Beispiel #22
0
 def op_Fx65(self):
     # print("Fx65")
     x = get_x(self.opcode)
     for index in range(0, x + 1):
         self.register[index] = self.memory[self.I_register + index]
Beispiel #23
0
 def op_3xkk(self):
     x = get_x(self.opcode)
     kk = get_kk(self.opcode)
     # print("3xkk", f"x={hex(x)}", f"kk={hex(kk)}")
     if self.register[x] == kk:
         self.pc += 2