summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/asm/unk_0208890C.s73
-rw-r--r--arm9/src/unk_0208890C.c53
-rw-r--r--include/script.h4
-rw-r--r--include/unk_0208890C.h25
4 files changed, 81 insertions, 74 deletions
diff --git a/arm9/asm/unk_0208890C.s b/arm9/asm/unk_0208890C.s
deleted file mode 100644
index d27130c9..00000000
--- a/arm9/asm/unk_0208890C.s
+++ /dev/null
@@ -1,73 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020FD6E4
-UNK_020FD6E4: ; 0x020FD6E4
- .word FUN_020889B0, FUN_02088A00, FUN_02088A78, 0xFFFFFFFF
-
- .text
-
- thumb_func_start FUN_0208890C
-FUN_0208890C: ; 0x0208890C
- push {r3-r7, lr}
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r0, r2, #0x0
- mov r1, #0x20
- add r7, r3, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- mov r1, #0x0
- mov r2, #0x20
- bl MI_CpuFill8
- str r5, [r4, #0xc]
- add r0, r5, #0x0
- bl FUN_02028048
- str r0, [r4, #0x8]
- add r0, r5, #0x0
- bl Sav2_PlayerData_GetProfileAddr
- str r0, [r4, #0x10]
- add r0, r5, #0x0
- bl Sav2_Bag_get
- str r0, [r4, #0x14]
- add r0, r5, #0x0
- bl Sav2_PlayerData_GetOptionsAddr
- str r0, [r4, #0x18]
- str r7, [r4, #0x1c]
- str r6, [r4, #0x4]
- add r0, r4, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02088950
-FUN_02088950: ; 0x02088950
- ldr r3, _02088958 ; =FUN_020373D4
- add r2, r1, #0x0
- ldr r1, _0208895C ; =UNK_020FD6E4
- bx r3
- .balign 4
-_02088958: .word FUN_020373D4
-_0208895C: .word UNK_020FD6E4
-
- thumb_func_start FUN_02088960
-FUN_02088960: ; 0x02088960
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- bl ScriptEnvironment_GetSav2Ptr
- add r3, r5, #0x0
- add r3, #0x98
- add r1, r0, #0x0
- ldr r3, [r3, #0x0]
- add r0, r4, #0x0
- add r2, r6, #0x0
- bl FUN_0208890C
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02088950
- add r0, r4, #0x0
- pop {r4-r6, pc}
- .balign 4
diff --git a/arm9/src/unk_0208890C.c b/arm9/src/unk_0208890C.c
new file mode 100644
index 00000000..0bc8803f
--- /dev/null
+++ b/arm9/src/unk_0208890C.c
@@ -0,0 +1,53 @@
+#include "global.h"
+#include "bag.h"
+#include "heap.h"
+#include "main.h"
+#include "MI_memory.h"
+#include "player_data.h"
+#include "script.h"
+#include "unk_0208890C.h"
+
+extern struct SaveBlock2* ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80*);
+extern void* FUN_02028048(struct SaveBlock2* sav2);
+extern void FUN_020373D4(struct UnkSavStruct80*, struct Unk21DBE18*, void*);
+extern BOOL FUN_020889B0(struct UnkStruct_02006234*, u32*);
+extern BOOL FUN_02088A00(struct UnkStruct_02006234*, u32*);
+extern BOOL FUN_02088A78(struct UnkStruct_02006234*, u32*);
+
+const struct Unk21DBE18 UNK_020FD6E4 = {
+ FUN_020889B0,
+ FUN_02088A00,
+ FUN_02088A78,
+ 0xFFFFFFFF,
+};
+
+THUMB_FUNC struct UnkStruct_0208890C* FUN_0208890C(void* a0, struct SaveBlock2* sav2, u32 heap_id, void* a3)
+{
+ struct UnkStruct_0208890C* ret = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0208890C));
+ MI_CpuFill8(ret, 0, sizeof(struct UnkStruct_0208890C));
+
+ ret->sav2 = sav2;
+ ret->unk8 = FUN_02028048(sav2);
+ ret->player = Sav2_PlayerData_GetProfileAddr(sav2);
+ ret->bag = Sav2_Bag_get(sav2);
+ ret->options = Sav2_PlayerData_GetOptionsAddr(sav2);
+ ret->unk1C = a3;
+ ret->unk4 = a0;
+
+ return ret;
+}
+
+THUMB_FUNC void FUN_02088950(struct UnkSavStruct80* unk, struct UnkStruct_0208890C* unk2)
+{
+ FUN_020373D4(unk, (struct Unk21DBE18*)&UNK_020FD6E4, unk2);
+}
+
+THUMB_FUNC struct UnkStruct_0208890C* FUN_02088960(struct UnkSavStruct80* unk, void* a1, u32 heap_id)
+{
+ struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(unk);
+ struct UnkStruct_0208890C* ret = FUN_0208890C(a1, sav2, heap_id, unk->unk98);
+
+ FUN_02088950(unk, ret);
+
+ return ret;
+}
diff --git a/include/script.h b/include/script.h
index bb237523..cb41889d 100644
--- a/include/script.h
+++ b/include/script.h
@@ -37,7 +37,9 @@ struct UnkSavStruct80
u32 unk60;
u8 padding5[0x14];
u32 unk78;
- u8 padding6[0x2C];
+ u8 padding6[0x1C];
+ void *unk98;
+ u8 padding7[0xC];
struct UnkStruct_02046444 * unkA8;
};
diff --git a/include/unk_0208890C.h b/include/unk_0208890C.h
new file mode 100644
index 00000000..9ec040a1
--- /dev/null
+++ b/include/unk_0208890C.h
@@ -0,0 +1,25 @@
+#ifndef POKEDIAMOND_UNK_0208890C_H
+#define POKEDIAMOND_UNK_0208890C_H
+
+struct Bag;
+struct Options;
+struct PlayerData;
+struct SaveBlock2;
+
+struct UnkStruct_0208890C
+{
+ u8 padding[0x4];
+ void* unk4;
+ void* unk8;
+ struct SaveBlock2* sav2;
+ struct PlayerData* player;
+ struct Bag* bag;
+ struct Options* options;
+ void* unk1C;
+};
+
+struct UnkStruct_0208890C* FUN_0208890C(void*, struct SaveBlock2* sav2, u32 heap_id, void*);
+void FUN_02088950(struct UnkSavStruct80*, struct UnkStruct_0208890C*);
+struct UnkStruct_0208890C* FUN_02088960(struct UnkSavStruct80*, void*, u32 heap_id);
+
+#endif