How to use the gilgamesh.snes.state.State function in gilgamesh

To help you get started, we’ve selected a few gilgamesh examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github AndreaOrru / gilgamesh / tests / test_state.py View on Github external
def test_from_state_expr(self):
        state = State.from_expr("m=0,x=1")
        self.assertEqual(state, State(m=0, x=1))

        state = State.from_expr("x=0,m=1")
        self.assertEqual(state, State(x=0, m=1))
github AndreaOrru / gilgamesh / tests / test_state.py View on Github external
def test_sizes(self):
        state = State(0b0011_0000)
        self.assertEqual(state.a_size, 1)
        self.assertEqual(state.x_size, 1)

        state = State(m=1, x=0)
        self.assertEqual(state.a_size, 1)
        self.assertEqual(state.x_size, 2)

        state = State(m=0, x=1)
        self.assertEqual(state.a_size, 2)
        self.assertEqual(state.x_size, 1)
github AndreaOrru / gilgamesh / tests / test_register.py View on Github external
def test_register(self):
        state = State(m=1, x=1)

        a = Register(state, True)
        x = Register(state, False)

        a.set(0xFF)
        self.assertEqual(a.lo, 0xFF)
        self.assertEqual(a.hi, None)
        self.assertEqual(a.get(), 0xFF)
        state.m = 0
        self.assertEqual(a.get(), None)

        x.set(0xFF)
        self.assertEqual(x.lo, 0xFF)
        self.assertEqual(x.hi, None)
        self.assertEqual(x.get(), 0xFF)
        state.x = 0
github AndreaOrru / gilgamesh / tests / test_state.py View on Github external
def test_reset(self):
        state = State(m=1, x=1)
        state.reset(0b0011_0000)
        self.assertEqual(state.m, 0)
        self.assertEqual(state.x, 0)
github AndreaOrru / gilgamesh / tests / test_state.py View on Github external
def test_repr(self):
        state = State(m=1, x=1)
        self.assertEqual(repr(state), "")
github AndreaOrru / gilgamesh / tests / test_state.py View on Github external
def test_sizes(self):
        state = State(0b0011_0000)
        self.assertEqual(state.a_size, 1)
        self.assertEqual(state.x_size, 1)

        state = State(m=1, x=0)
        self.assertEqual(state.a_size, 1)
        self.assertEqual(state.x_size, 2)

        state = State(m=0, x=1)
        self.assertEqual(state.a_size, 2)
        self.assertEqual(state.x_size, 1)
github AndreaOrru / gilgamesh / tests / test_state.py View on Github external
def test_simplify(self):
        state = State(m=0, x=1)

        change = StateChange()
        self.assertEqual(change.simplify(state), StateChange())

        change = StateChange(m=0)
        self.assertEqual(change.simplify(state), StateChange())

        change = StateChange(m=0, x=1)
        self.assertEqual(change.simplify(state), StateChange())

        change = StateChange(m=0, x=0)
        self.assertEqual(change.simplify(state), StateChange(x=0))

        change = StateChange(unknown=True)
        self.assertEqual(change.simplify(state), StateChange(unknown=True))
github AndreaOrru / gilgamesh / gilgamesh / snes / instruction.py View on Github external
def __init__(
        self,
        log,
        pc: int,
        p: int,
        subroutine_pc: int,
        opcode: int,
        argument: int,
        registers: Dict[str, Optional[int]],
        state_change_before: StateChange,
    ):
        super().__init__()
        self.log = log
        self.pc = pc
        self.state = State(p)
        self.registers = registers

        self.subroutine_pc = subroutine_pc
        self.opcode = opcode
        self._argument = argument

        self.state_change_before = state_change_before
        self.state_change_after = StateChange(unknown_reason=UnknownReason.UNKNOWN)
        self.stack_manipulation = StackManipulation.NONE
        self.ret_indirect_type = RetIndirectType.NONE
github AndreaOrru / gilgamesh / gilgamesh / snes / state.py View on Github external
def set(self, p_change: int) -> None:
        change = State(p_change)
        self.m = 1 if change.m else self.m
        self.x = 1 if change.x else self.x