summaryrefslogtreecommitdiff
path: root/tools/libdol2asm/data/base.py
diff options
context:
space:
mode:
authorJulgodis <>2021-04-08 21:05:48 +0200
committerJulgodis <>2021-04-08 21:05:48 +0200
commit2661db6aaa98a5bbd17691cb438ef64752dbcdf4 (patch)
tree4e6d8499431192316bc2bae0cec8e6f92636b4b4 /tools/libdol2asm/data/base.py
parenta23a10639979ee10cbea5ffdadadc490d9e60227 (diff)
auto decompile more functions
Diffstat (limited to 'tools/libdol2asm/data/base.py')
-rw-r--r--tools/libdol2asm/data/base.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/libdol2asm/data/base.py b/tools/libdol2asm/data/base.py
index 6ceada5eb9..6878ca1341 100644
--- a/tools/libdol2asm/data/base.py
+++ b/tools/libdol2asm/data/base.py
@@ -84,6 +84,12 @@ class ArbitraryData(Symbol):
self.size // self.element_size,
self.padding // self.element_size)
+ def return_type(self):
+ array_type = self.array_type()
+ if isinstance(array_type, ArrayType) or isinstance(array_type, PaddingArrayType) or isinstance(array_type, ZeroArrayType):
+ return PointerType(array_type.base)
+ return array_type
+
def cpp_reference(self, accessor, addr):
name = self.declaration_name(forward=False, c_export=False,full_qualified_name=True)
if addr == self.addr:
@@ -92,6 +98,14 @@ class ArbitraryData(Symbol):
offset = addr - self.addr
return f"(((char*)&{name})+0x{offset:X})"
+ def cpp_load(self, accessor, addr):
+ name = self.declaration_name(forward=False, c_export=False,full_qualified_name=True)
+ if addr == self.addr:
+ return f"{name}"
+ else:
+ offset = addr - self.addr
+ return f"*(((char*)&{name})+0x{offset:X})"
+
def declaration_name(self, forward: bool,
c_export: bool,
full_qualified_name: bool):