Add return_addr to ZStackBottom for uniform frame access

ZStackBottom already had stack and local_vars for uniform treatment,
but was missing return_addr. Adding it removes 5 type: ignore
suppressions and fixes all ty possibly-missing-attribute warnings.
This commit is contained in:
Jared Miller 2026-02-10 17:16:25 -05:00
parent e72f13e78a
commit 3140a4d617
Signed by: shmup
GPG key ID: 22B5C6D66A38B06C

View file

@ -104,6 +104,7 @@ class ZStackBottom:
def __init__(self): def __init__(self):
self.program_counter = 0 # used as a cache only self.program_counter = 0 # used as a cache only
self.return_addr = None
self.stack = [] self.stack = []
self.local_vars = [0 for _ in range(15)] self.local_vars = [0 for _ in range(15)]
@ -201,15 +202,14 @@ class ZStackManager:
current_routine = self._call_stack[-1] current_routine = self._call_stack[-1]
# Depending on many things, return stuff. # Depending on many things, return stuff.
if exiting_routine.return_addr is not None: # type: ignore[possibly-missing-attribute] if exiting_routine.return_addr is not None:
if exiting_routine.return_addr == 0: # type: ignore[possibly-missing-attribute] if exiting_routine.return_addr == 0:
# Push to stack # Push to stack
self.push_stack(return_value) self.push_stack(return_value)
elif 0 < exiting_routine.return_addr < 0x10: # type: ignore[possibly-missing-attribute] elif 0 < exiting_routine.return_addr < 0x10:
# Store in local var # Store in local var
self.set_local_variable(exiting_routine.return_addr - 1, return_value) # type: ignore[possibly-missing-attribute] self.set_local_variable(exiting_routine.return_addr - 1, return_value)
else: else:
# Store in global var # Store in global var
self._memory.write_global(exiting_routine.return_addr, return_value) # type: ignore[possibly-missing-attribute] self._memory.write_global(exiting_routine.return_addr, return_value)
return current_routine.program_counter return current_routine.program_counter