summaryrefslogtreecommitdiff
path: root/tools/libdol2asm/data/function/ret.py
diff options
context:
space:
mode:
authorJulgodis <>2021-04-10 07:02:38 +0200
committerJulgodis <>2021-04-10 07:02:38 +0200
commit0ad6ebe7b499ad3efffad93e2e7eb1033bcb6598 (patch)
treea40631b0654c4d310ebff2360e2a4ef32437a2b5 /tools/libdol2asm/data/function/ret.py
parent2661db6aaa98a5bbd17691cb438ef64752dbcdf4 (diff)
moved strings + decompile simple store functions
Diffstat (limited to 'tools/libdol2asm/data/function/ret.py')
-rw-r--r--tools/libdol2asm/data/function/ret.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/tools/libdol2asm/data/function/ret.py b/tools/libdol2asm/data/function/ret.py
index aed96c2315..c9ae3b8d1d 100644
--- a/tools/libdol2asm/data/function/ret.py
+++ b/tools/libdol2asm/data/function/ret.py
@@ -29,6 +29,8 @@ class CustomReturnFunction(ReturnFunction):
class SymbolReturnFunction(ReturnFunction):
symbol_addr: int = 0
load_or_reference: bool = True
+ load_type: Type = None
+ cast_type: Type = None
def gather_references(self, context, valid_range):
self.references = set([ self.symbol_addr ])
@@ -37,8 +39,11 @@ class SymbolReturnFunction(ReturnFunction):
symbol = symbol_table[-1, self.symbol_addr]
assert symbol
name = symbol.cpp_reference(self, self.symbol_addr)
- type = PointerType(self.return_type)
+ load_type = PointerType(self.load_type)
dereference = ""
+ cast = ""
if self.load_or_reference:
dereference = "*"
- return f"{dereference}({type.type()})({name})"
+ if self.cast_type:
+ cast = f"({self.cast_type.type()})"
+ return f"{cast}{dereference}({load_type.type()})({name})"