def test_load_from_memory(opcode,dest,addr): processor = gbc.Processor() processor.memory[0x0110] = 0x5A processor.registers[addr] = 0x0110 gbc.run_instruction(opcode, processor) assert processor.program_counter == 1 assert processor.registers[dest] == 0x5A
def test_load_from_memory_half_addr(opcode,dest,low): processor = gbc.Processor() processor.memory[0xFF10] = 0x5A processor.registers[low] = 0x10 gbc.run_instruction(opcode, processor) assert processor.program_counter == 1 assert processor.registers[dest] == 0x5A
def test_copy_sp(): program = "\x08\x10\x01" processor = gbc.Processor() processor.registers["SP"] = 0x5AA5 gbc.run_instruction(program,processor) assert processor.program_counter == 3 assert processor.memory[0x0110] == 0x5AA5
def test_register_copies(opcode,src,dest): processor = gbc.Processor() processor.registers[src] = 100 gbc.run_instruction(opcode, processor) assert processor.program_counter == 1 assert processor.registers[src] == 100 assert processor.registers[dest] == 100
def test_copy_from_mem_immediate_address(): program = "\xF0\x11" processor = gbc.Processor() processor.memory[0xFF11] = 0xA5 gbc.run_instruction(program,processor) assert processor.program_counter == 2 assert processor.registers["A"] == 0xA5
def test_copy_sp_and_add_imm(): program = "\xF8\x02" processor = gbc.Processor() processor.registers["SP"] = 0x03 gbc.run_instruction(program,processor) assert processor.program_counter == 2 assert processor.registers["HL"] == 0x05
def test_copy_from_immediate_address(): program = "\xFA\x10\x01" processor = gbc.Processor() processor.memory[0x0110] = 0x5A gbc.run_instruction(program, processor) assert processor.program_counter == 3 assert processor.registers["A"] == 0x5A
def test_copy_immediate_to_memory(): program = "\x36\x5A" processor = gbc.Processor() processor.registers["HL"] = 0x0110 gbc.run_instruction(program, processor) assert processor.program_counter == 2 assert processor.memory[0x0110] == 0x5A
def test_load_to_memory_half_addr(opcode,src,addr): processor = gbc.Processor() processor.registers[src] = 0x5A processor.registers[addr] = 0x01 gbc.run_instruction(opcode, processor) assert processor.program_counter == 1 assert processor.memory[0xFF01] == 0x5A
def test_pop_stack(opcode,reg): program = opcode processor = gbc.Processor() processor.registers["SP"] = 3 processor.memory[3] = 0xA55A gbc.run_instruction(program,processor) assert processor.registers["SP"] == 5 assert processor.registers[reg] == 0xA55A
def test_copy_to_mem_and_increment_addr(): program = "\x22" processor = gbc.Processor() processor.registers["HL"] = 0x0110 processor.registers["A"] = 0x5A gbc.run_instruction(program, processor) assert processor.program_counter == 1 assert processor.registers["HL"] == 0x0111 assert processor.memory[0x0110] == 0x5A
def test_add_both_carry(opcode,reg): program = opcode processor = gbc.Processor() processor.registers["A"] = 0x88 processor.registers[reg] = 0x88 gbc.run_instruction(program,processor) assert processor.registers["A"] == 0x10 assert processor.flags["zero"] == False assert processor.flags["subtract"] == False assert processor.flags["half_carry"] == True assert processor.flags["carry"] == True
def test_load_to_memory(opcode,src,addr): processor = gbc.Processor() processor.registers[src] = 0x5A processor.registers[addr] = 0x0110 gbc.run_instruction(opcode, processor) assert processor.program_counter == 1 if src == "H": assert processor.memory[0x0110] == 0x10 elif src == "L": assert processor.memory[0x0110] == 0x01 else: assert processor.memory[0x0110] == 0x5A
def test_basic_add(opcode,reg): program = opcode processor = gbc.Processor() processor.registers["A"] = 5 processor.registers[reg] = 4 gbc.run_instruction(program,processor) if reg == "A": assert processor.registers["A"] == 8 else: assert processor.registers["A"] == 9 assert processor.flags["zero"] == False assert processor.flags["subtract"] == False assert processor.flags["half_carry"] == False assert processor.flags["carry"] == False
def test_16bit_loads(opcode, reg): program = "{}\x10\x01".format(opcode) processor = gbc.Processor() gbc.run_instruction(program, processor) assert processor.program_counter == 3 assert processor.registers[reg] == 0x0110