Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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
Пример #10
0
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
Пример #11
0
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
Пример #12
0
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
Пример #13
0
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
Пример #14
0
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 
Пример #15
0
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