summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf1
-rw-r--r--arm9/modules/63/asm/mod63_021DB450_asm.s52
-rw-r--r--arm9/modules/63/include/mod63_021DB450.h18
-rw-r--r--arm9/modules/63/src/mod63_021DB450.c17
4 files changed, 32 insertions, 56 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 225d62cf..27d530ed 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -946,7 +946,6 @@ Overlay MODULE_63
Object mod63_021DA640.o
Object mod63_021DAE5C.o
Object mod63_021DB450.o
- Object mod63_021DB450_asm.o
}
Overlay MODULE_64
diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s
deleted file mode 100644
index dd2f570d..00000000
--- a/arm9/modules/63/asm/mod63_021DB450_asm.s
+++ /dev/null
@@ -1,52 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .section .text
-
- thumb_func_start MOD63_021DB940
-MOD63_021DB940: ; 0x021DB940
- push {r4, r5, lr}
- sub sp, #0xc
- add r5, r0, #0
- bl FUN_0201341C
- add r2, sp, #0
- mov r1, #0
- str r1, [r2]
- str r1, [r2, #4]
- add r4, r0, #0
- str r1, [r2, #8]
- bl FUN_0200782C
- sub r0, #0x80
- mov r1, #0xac
- mul r1, r0
- str r1, [sp]
- add r0, r4, #0
- mov r1, #1
- bl FUN_0200782C
- sub r0, #0x60
- mov r1, #0xac
- mul r1, r0
- str r1, [sp, #4]
- mov r0, #0x40
- str r0, [sp, #8]
- ldr r0, [r5, #0x20]
- ldr r1, [sp]
- ldr r0, [r0]
- ldr r0, [r0, #4]
- add r0, r1, r0
- str r0, [r5, #0x28]
- ldr r0, [r5, #0x20]
- ldr r1, [sp, #4]
- ldr r0, [r0]
- ldr r0, [r0, #8]
- add r0, r1, r0
- str r0, [r5, #0x2c]
- ldr r0, [r5, #0x20]
- ldr r1, [sp, #8]
- ldr r0, [r0]
- ldr r0, [r0, #0xc]
- add r0, r1, r0
- str r0, [r5, #0x30]
- add sp, #0xc
- pop {r4, r5, pc}
- .align 2, 0
- thumb_func_end MOD63_021DB940
diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h
index 32985960..5de4609b 100644
--- a/arm9/modules/63/include/mod63_021DB450.h
+++ b/arm9/modules/63/include/mod63_021DB450.h
@@ -59,6 +59,23 @@ typedef struct UnkStruct63_021DBED8
BOOL (*unk_04)(struct UnkStruct63_021DB5CC *, u32);
} UnkStruct63_021DBED8;
+typedef struct UnkStruct_02090A58
+{
+ struct UnkStruct_02090A58 * unk_00;
+ u32 unk_04;
+ u32 unk_08;
+ u32 unk_0C;
+ u32 unk_10;
+ u32 unk_14;
+ u32 unk_18;
+ u32 unk_1C;
+ u32 ** unk_20;
+ u32 unk_24;
+ u32 unk_28;
+ u32 unk_2C;
+ u32 unk_30;
+} UnkStruct_02090A58;
+
u32 MOD63_021DB450(u32 param0, u32 param1);
u32 MOD63_021DB474(u32 param0, u32 param1);
u32 MOD63_021DB498(void);
@@ -74,5 +91,6 @@ BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1);
BOOL MOD63_021DB884(UnkStruct63_021DB5CC *param0, u32 param1);
BOOL MOD63_021DB8E8(UnkStruct63_021DB5CC *param0, u32 param1);
void MOD63_021DB934(void);
+void MOD63_021DB940(struct UnkStruct_02090A58 * a0);
#endif //POKEDIAMOND_MOD63_021DB450_H
diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c
index 51b9a3ad..975836e8 100644
--- a/arm9/modules/63/src/mod63_021DB450.c
+++ b/arm9/modules/63/src/mod63_021DB450.c
@@ -42,10 +42,9 @@ extern void FUN_020079E0(u32, u32, s32);
extern void FUN_02013364(void);
extern void FUN_02013388(void);
-//todo funcs
-extern void MOD63_021DB940();
+void * FUN_0201341C(struct UnkStruct_02090A58 *);
+int FUN_0200782C(void *, int);
-//todo data
const s32 MOD63_021DBEC0[3] = {0x703, 0x7CE, 0x8A8};
const struct UnkStruct63_021DBEF0 MOD63_021DBEF0[3];
@@ -293,3 +292,15 @@ THUMB_FUNC void MOD63_021DB934(void)
FUN_02013364();
FUN_02013388();
}
+
+THUMB_FUNC void MOD63_021DB940(struct UnkStruct_02090A58 * a0)
+{
+ void * r4 = FUN_0201341C(a0);
+ int sp0[3] = {0, 0, 0};
+ sp0[0] = (FUN_0200782C(r4, 0) - 0x80) * 0xAC;
+ sp0[1] = (FUN_0200782C(r4, 1) - 0x60) * 0xAC;
+ sp0[2] = 0x40;
+ a0->unk_28 = sp0[0] + (*a0->unk_20)[1];
+ a0->unk_2C = sp0[1] + (*a0->unk_20)[2];
+ a0->unk_30 = sp0[2] + (*a0->unk_20)[3];
+}