gameboy superoptimizer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

313 lines
5.1 KiB

import pytest
from tests.cpu.insn.helpers import *
def test_rlca():
cpu = CPU()
cpu.set_reg8(R8.A, 0x80)
RLCA().exec(cpu)
assert cpu.get_reg8(R8.A) == 0x01
assert cpu.state.carry == 1
RLCA().exec(cpu)
assert cpu.get_reg8(R8.A) == 0x02
assert cpu.state.carry == 0
def test_rla():
cpu = CPU()
cpu.set_reg8(R8.A, 0x80)
RLA().exec(cpu)
assert cpu.get_reg8(R8.A) == 0x00
assert cpu.state.carry == 1
RLA().exec(cpu)
assert cpu.get_reg8(R8.A) == 0x01
assert cpu.state.carry == 0
def test_rrca():
cpu = CPU()
cpu.set_reg8(R8.A, 0x01)
RRCA().exec(cpu)
assert cpu.get_reg8(R8.A) == 0x80
assert cpu.state.carry == 1
RRCA().exec(cpu)
assert cpu.get_reg8(R8.A) == 0x40
assert cpu.state.carry == 0
def test_rra():
cpu = CPU()
cpu.set_reg8(R8.A, 0x01)
RRA().exec(cpu)
assert cpu.get_reg8(R8.A) == 0x00
assert cpu.state.carry == 1
RRA().exec(cpu)
assert cpu.get_reg8(R8.A) == 0x80
assert cpu.state.carry == 0
@pytest.mark.parametrize("r", R8)
def test_rlc_r(r):
cpu = CPU()
cpu.set_reg8(r, 0x80)
RLC_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x01
assert cpu.state.carry == 1
RLC_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x02
assert cpu.state.carry == 0
def test_rlc_hl():
cpu = CPU()
cpu.hl = 0x80
RLC_HL().exec(cpu)
assert cpu.hl == 0x01
assert cpu.state.carry == 1
RLC_HL().exec(cpu)
assert cpu.hl == 0x02
assert cpu.state.carry == 0
@pytest.mark.parametrize("r", R8)
def test_rl_r(r):
cpu = CPU()
cpu.set_reg8(r, 0x80)
RL_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x00
assert cpu.state.carry == 1
RL_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x01
assert cpu.state.carry == 0
def test_rl_hl():
cpu = CPU()
cpu.hl = 0x80
RL_HL().exec(cpu)
assert cpu.hl == 0x00
assert cpu.state.carry == 1
RL_HL().exec(cpu)
assert cpu.hl == 0x01
assert cpu.state.carry == 0
@pytest.mark.parametrize("r", R8)
def test_rrc_r(r):
cpu = CPU()
cpu.set_reg8(r, 0x01)
RRC_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x80
assert cpu.state.carry == 1
RRC_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x40
assert cpu.state.carry == 0
def test_rrc_hl():
cpu = CPU()
cpu.set_reg16(R16.HL, 0x1234)
cpu.hl = 0x01
RRC_HL().exec(cpu)
assert cpu.hl == 0x80
assert cpu.state.carry == 1
RRC_HL().exec(cpu)
assert cpu.hl == 0x40
assert cpu.state.carry == 0
@pytest.mark.parametrize("r", R8)
def test_rr_r(r):
cpu = CPU()
cpu.set_reg8(r, 0x01)
RR_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x00
assert cpu.state.carry == 1
RR_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x80
assert cpu.state.carry == 0
def test_rr_hl():
cpu = CPU()
cpu.set_reg16(R16.HL, 0x1234)
cpu.hl = 0x01
RR_HL().exec(cpu)
assert cpu.hl == 0x00
assert cpu.state.carry == 1
RR_HL().exec(cpu)
assert cpu.hl == 0x80
assert cpu.state.carry == 0
@pytest.mark.parametrize("r", R8)
def test_sla_r(r):
cpu = CPU()
cpu.set_reg8(r, 0xFF)
SLA_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0xFE
assert cpu.state.carry == 1
cpu.set_reg8(r, 0x01)
SLA_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x02
assert cpu.state.carry == 0
def test_sla_hl():
cpu = CPU()
cpu.set_reg16(R16.HL, 0x1234)
cpu.hl = 0xFF
SLA_HL().exec(cpu)
assert cpu.hl == 0xFE
assert cpu.state.carry == 1
cpu.hl = 0x01
SLA_HL().exec(cpu)
assert cpu.hl == 0x02
assert cpu.state.carry == 0
@pytest.mark.parametrize("r", R8)
def test_swap_r(r):
cpu = CPU()
cpu.set_reg8(r, 0xAB)
SWAP_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0xBA
assert cpu.state.carry == 0
def test_swap_hl():
cpu = CPU()
cpu.set_reg16(R16.HL, 0x1234)
cpu.hl = 0xAB
SWAP_HL().exec(cpu)
assert cpu.hl == 0xBA
assert cpu.state.carry == 0
@pytest.mark.parametrize("r", R8)
def test_sra_r(r):
cpu = CPU()
cpu.set_reg8(r, 0xFF)
SRA_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0xFF
assert cpu.state.carry == 1
cpu.set_reg8(r, 0x02)
SRA_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x01
assert cpu.state.carry == 0
def test_sra_hl():
cpu = CPU()
cpu.set_reg16(R16.HL, 0x1234)
cpu.hl = 0xFF
SRA_HL().exec(cpu)
assert cpu.hl == 0xFF
assert cpu.state.carry == 1
cpu.hl = 0x02
SRA_HL().exec(cpu)
assert cpu.hl == 0x01
assert cpu.state.carry == 0
@pytest.mark.parametrize("r", R8)
def test_srl_r(r):
cpu = CPU()
cpu.set_reg8(r, 0xFF)
SRL_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x7F
assert cpu.state.carry == 1
cpu.set_reg8(r, 0x02)
SRL_R(r).exec(cpu)
assert cpu.get_reg8(r) == 0x01
assert cpu.state.carry == 0
def test_srl_hl():
cpu = CPU()
cpu.set_reg16(R16.HL, 0x1234)
cpu.hl = 0xFF
SRL_HL().exec(cpu)
assert cpu.hl == 0x7F
assert cpu.state.carry == 1
cpu.hl = 0x02
SRL_HL().exec(cpu)
assert cpu.hl == 0x01
assert cpu.state.carry == 0