Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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 
Ejemplo n.º 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