diff options
| author | Julgodis <> | 2021-04-08 21:05:48 +0200 |
|---|---|---|
| committer | Julgodis <> | 2021-04-08 21:05:48 +0200 |
| commit | 2661db6aaa98a5bbd17691cb438ef64752dbcdf4 (patch) | |
| tree | 4e6d8499431192316bc2bae0cec8e6f92636b4b4 /tools/libdol2asm/data/base.py | |
| parent | a23a10639979ee10cbea5ffdadadc490d9e60227 (diff) | |
auto decompile more functions
Diffstat (limited to 'tools/libdol2asm/data/base.py')
| -rw-r--r-- | tools/libdol2asm/data/base.py | 14 |
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): |
