Mangle ActorRupee actor type and resource

This commit is contained in:
Aetias
2024-04-07 15:04:51 +02:00
parent c628010c04
commit 392ccb357e
8 changed files with 70 additions and 22 deletions
+1 -1
View File
@@ -93,7 +93,7 @@
.extern data_ov14_0215b1a0
.extern data_ov14_0215b1c0
.extern data_ov14_0215b1e0
.extern data_ov14_0215b200
.extern _ZN10ActorRupee5gTypeE
.extern data_ov14_0215b220
.extern data_ov14_0215b240
.extern data_ov14_0215b258
+1 -1
View File
@@ -3515,7 +3515,7 @@ data_ov06_021031ac: ; 0x021031ac
.word data_ov14_0215b1c0
.global data_ov06_021031b0
data_ov06_021031b0: ; 0x021031b0
.word data_ov14_0215b200
.word _ZN10ActorRupee5gTypeE
.global data_ov06_021031b4
data_ov06_021031b4: ; 0x021031b4
.word data_ov17_0216cf0c ; data_ov18_0216cf0c
+13 -17
View File
@@ -26,7 +26,7 @@ _ZN10ActorRupeeC2Ev: ; 0x0213ae98
stmdb sp!, {r4, lr}
mov r4, r0
bl func_ov00_020c1554
ldr r1, _0213aec8 ; =data_ov14_021589e4
ldr r1, _0213aec8 ; =_ZTV10ActorRupee
mov r0, #8
str r1, [r4]
str r0, [r4, #0x158]
@@ -37,7 +37,7 @@ _ZN10ActorRupeeC2Ev: ; 0x0213ae98
ldmia sp!, {r4, pc}
.align 2, 0
arm_func_end _ZN10ActorRupeeC2Ev
_0213aec8: .word data_ov14_021589e4
_0213aec8: .word _ZTV10ActorRupee
.global _ZN10ActorRupee8vfunc_08Ev
arm_func_start _ZN10ActorRupee8vfunc_08Ev
@@ -736,14 +736,14 @@ data_ov14_02153e28: ; 0x02153e28
arm_func_start func_ov14_0215517c
func_ov14_0215517c: ; 0x0215517c
stmdb sp!, {r3, lr}
ldr r0, _021551bc ; =data_ov14_0215b200
ldr r0, _021551bc ; =_ZN10ActorRupee5gTypeE
ldr r1, _021551c0 ; =0x52555059
ldr r2, _021551c4 ; =_ZN10ActorRupee6CreateEv
mov r3, #0
bl func_0203e784
ldr r0, _021551bc ; =data_ov14_0215b200
ldr r0, _021551bc ; =_ZN10ActorRupee5gTypeE
ldr r1, _021551c8 ; =func_0203e7b4
ldr r2, _021551cc ; =data_ov14_0215b1f4
ldr r2, _021551cc ; =_ZN10ActorRupee9gResourceE
bl func_0204f8d4
ldr r2, _021551d0 ; =0x000003bb
ldr r0, _021551d4 ; =data_ov14_021589b4
@@ -753,11 +753,11 @@ func_ov14_0215517c: ; 0x0215517c
ldmia sp!, {r3, pc}
.align 2, 0
arm_func_end func_ov14_0215517c
_021551bc: .word data_ov14_0215b200
_021551bc: .word _ZN10ActorRupee5gTypeE
_021551c0: .word 0x52555059
_021551c4: .word _ZN10ActorRupee6CreateEv
_021551c8: .word func_0203e7b4
_021551cc: .word data_ov14_0215b1f4
_021551cc: .word _ZN10ActorRupee9gResourceE
_021551d0: .word 0x000003bb
_021551d4: .word data_ov14_021589b4
@@ -829,14 +829,10 @@ data_ov14_021589d4: ; 0x021589d4
.global data_ov14_021589d8
data_ov14_021589d8: ; 0x021589d8
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov14_021589dc
data_ov14_021589dc: ; 0x021589dc
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov14_021589e0
data_ov14_021589e0: ; 0x021589e0
.byte 0x00, 0x00, 0x00, 0x00
.global data_ov14_021589e4
data_ov14_021589e4: ; 0x021589e4
.global _ZTV10ActorRupee
_ZTV10ActorRupee: ; 0x021589e4
.word _ZN10ActorRupeeD2Ev
.global data_ov14_021589e8
data_ov14_021589e8: ; 0x021589e8
@@ -972,9 +968,9 @@ data_ov14_02158a94: ; 0x02158a94
.word func_ov00_020c322c
.bss
.global data_ov14_0215b1f4
data_ov14_0215b1f4:
.global _ZN10ActorRupee9gResourceE
_ZN10ActorRupee9gResourceE:
.space 0xc
.global data_ov14_0215b200
data_ov14_0215b200:
.global _ZN10ActorRupee5gTypeE
_ZN10ActorRupee5gTypeE:
.space 0x14
+5
View File
@@ -4,7 +4,9 @@
#include "types.h"
#include "lib/math.h"
#include "System/Resource.hpp"
#include "Actor/Actor.hpp"
#include "Actor/ActorType.hpp"
#include "Item/Item.hpp"
typedef u32 RupeeId;
@@ -22,6 +24,9 @@ enum RupeeId_ {
class ActorRupee : public Actor {
public:
static Resource gResource;
static ActorType gType;
/* 000 (base) */
/* 158 */ RupeeId mRupeeId;
/* 15c */ unk16 mUnk_15c;
+17
View File
@@ -0,0 +1,17 @@
#pragma once
#include "global.h"
#include "types.h"
#include "Actor/Actor.hpp"
typedef Actor* (*ActorCreateFunc)();
struct ActorType {
/* 00 */ char type[4];
/* 04 */ ActorCreateFunc create;
/* 08 */ unk32 unk_08;
/* 0c */ unk32 unk_0c;
/* 10 */ ActorType *next;
/* 14 */
};
+13
View File
@@ -0,0 +1,13 @@
#pragma once
#include "global.h"
#include "types.h"
typedef void (*ResourceCleanupFunc)(void *object);
struct Resource {
/* 0 */ Resource *next;
/* 4 */ ResourceCleanupFunc cleanup;
/* 8 */ void *object;
/* c */
};
+3
View File
@@ -2,6 +2,9 @@
#ifdef STUBS
Resource ActorRupee::gResource;
ActorType ActorRupee::gType;
ActorRupee* ActorRupee::Create() {}
ActorRupee::ActorRupee() {}
bool ActorRupee::vfunc_08() {}
+17 -3
View File
@@ -40,6 +40,20 @@ output = output.decode()
# print(output)
mangled_names: list[str] = re.findall(r'.text +(_Z\S+)', output)
for name in mangled_names:
print(name)
mangled_funcs: list[str] = re.findall(r'.text +(_Z\S+)', output)
mangled_data: list[str] = re.findall(r'(?:.data|.bss) +(_Z\S+)', output)
if len(mangled_funcs) > 0:
print('Functions:')
print()
for func in mangled_funcs:
print(func)
print()
print()
if len(mangled_data) > 0:
print('Data:')
print()
for data in mangled_data:
print(data)
print()
print()