Skip to content

Commit

Permalink
WIP o6_assign implementation (NEEDS REVIEW)
Browse files Browse the repository at this point in the history
  • Loading branch information
BJNFNE committed Feb 20, 2025
1 parent c58ebc7 commit 7099845
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/boozook/codex/decomp_tot.py
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,42 @@ def o2_assign(scf):
printl("{} = {}".format(var_index, expr))


def o6_assign(scf):
dest_type = peek_uint8(scf)
var_index = read_var_index(scf)

if var_index != 0:
var_index2 = read_var_index(scf)
var_6 = reads_uint16le(scf)

printl("memcpy({}, {}, {});".format(var_index, var_index2, var_6 * 4))

return

if peek_uint8(scf) == 98:
_skip = scf.read(1)
loop_count = scf.read(1)[0]

off = 0
for _ in range(loop_count):
c = scf.read(1)[0]
n = reads_uint16le(scf)

printl("memset({} + {}, {}, {});".format(var_index, off, c, n))

off += n
elif peek_uint8(scf) == 99:
_skip = scf.read(1)
loop_count = scf.read(1)[0]

for i in range(loop_count):
expr = read_expr(scf)
printl("{}[{}] = {};".format(var_index, i * 2 if dest_type == 24 else i, expr))
else:
expr = read_expr(scf)
printl("{} = {};".format(var_index, expr))


def reads_uint8(stream):
return ord(stream.read(1))

Expand Down

0 comments on commit 7099845

Please sign in to comment.