summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-11-09 19:49:19 +0000
committerred031000 <rubenru09@aol.com>2020-11-09 19:49:44 +0000
commit697c2313123690ebb4af45629cbc337d19941d04 (patch)
tree76220126ea07581c2987ca644043f96fcfa4a629
parent80caebd738c642db675a37685a2d89338196dd35 (diff)
start decompiling mod21_02254854
-rw-r--r--CMakeLists.txt2
-rw-r--r--arm9/arm9.lsf3
-rw-r--r--arm9/modules/21/asm/mod21_02254854_asm.s (renamed from arm9/modules/21/asm/mod21_02254854.s)37
-rw-r--r--arm9/modules/21/include/mod21_02254854.h8
-rw-r--r--arm9/modules/21/src/mod21_02254854_src.c21
-rw-r--r--arm9/modules/21/src/module_21_sinit.c2
-rw-r--r--arm9/src/unk_0200CA44.c20
-rw-r--r--include/unk_0200CA44.h8
8 files changed, 47 insertions, 54 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dc3f7fcc..4ef6e929 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,7 +16,7 @@ add_compile_options(-fms-extensions)
file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp")
add_executable(PokeDiamond ${SOURCES})
-target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include arm7/lib/include arm9/modules/05/include arm9/modules/59/include arm9/modules/63/include)
+target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include arm7/lib/include arm9/modules/05/include arm9/modules/21/include arm9/modules/59/include arm9/modules/63/include)
add_executable(calcrom .travis/calcrom/calcrom.cpp)
target_include_directories(calcrom PRIVATE /usr/local/include)
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index d95024ae..20c1b64c 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -664,7 +664,8 @@ Overlay MODULE_21
##Pokétch Clock##
After MODULE_20
Object module_21_sinit.o
- Object mod21_02254854.o
+ Object mod21_02254854_src.o
+ Object mod21_02254854_asm.o
Object mod21_02254A6C.o
}
diff --git a/arm9/modules/21/asm/mod21_02254854.s b/arm9/modules/21/asm/mod21_02254854_asm.s
index bcbbf915..5e5dd958 100644
--- a/arm9/modules/21/asm/mod21_02254854.s
+++ b/arm9/modules/21/asm/mod21_02254854_asm.s
@@ -3,43 +3,6 @@
.section .text
.balign 4, 0
- thumb_func_start MOD21_02254854
-MOD21_02254854: ; 0x02254854
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r6, r1, #0
- mov r0, #8
- mov r1, #0x2c
- add r7, r2, #0
- str r3, [sp]
- bl AllocFromHeap
- add r4, r0, #0
- beq _02254892
- ldr r3, [sp]
- add r1, r6, #0
- add r2, r7, #0
- bl MOD21_0225489C
- cmp r0, #0
- beq _0225488C
- ldr r0, _02254898 ; =MOD21_02254930
- add r1, r4, #0
- mov r2, #1
- bl FUN_0200CA44
- cmp r0, #0
- beq _0225488C
- str r4, [r5]
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_0225488C:
- add r0, r4, #0
- bl FreeToHeap
-_02254892:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_02254898: .word MOD21_02254930
- thumb_func_end MOD21_02254854
-
thumb_func_start MOD21_0225489C
MOD21_0225489C: ; 0x0225489C
push {r3, r4, r5, lr}
diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h
new file mode 100644
index 00000000..061e7e4b
--- /dev/null
+++ b/arm9/modules/21/include/mod21_02254854.h
@@ -0,0 +1,8 @@
+#ifndef POKEDIAMOND_MOD21_02254854_H
+#define POKEDIAMOND_MOD21_02254854_H
+
+#include "nitro/types.h"
+
+BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3);
+
+#endif //POKEDIAMOND_MOD21_02254854_H
diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c
new file mode 100644
index 00000000..8a0c4146
--- /dev/null
+++ b/arm9/modules/21/src/mod21_02254854_src.c
@@ -0,0 +1,21 @@
+#include "global.h"
+#include "heap.h"
+#include "unk_0200CA44.h"
+
+extern BOOL MOD21_0225489C(void *param0, u32 param1, u32 param2, u32 param3);
+extern void MOD21_02254930(void *, void *);
+
+THUMB_FUNC BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3) //param0 is likely actually a struct
+{
+ void * alloced = AllocFromHeap(8, 0x2c);
+ if (alloced != NULL)
+ {
+ if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44(MOD21_02254930, alloced, (void *)1))
+ {
+ *param0 = (u32)alloced;
+ return TRUE;
+ }
+ FreeToHeap(alloced);
+ }
+ return FALSE;
+} \ No newline at end of file
diff --git a/arm9/modules/21/src/module_21_sinit.c b/arm9/modules/21/src/module_21_sinit.c
index 2af569ec..c4b2ac5a 100644
--- a/arm9/modules/21/src/module_21_sinit.c
+++ b/arm9/modules/21/src/module_21_sinit.c
@@ -1,7 +1,7 @@
#include "global.h"
+#include "mod21_02254854.h"
extern void Poketch_InitApp(void *func1, void *func2);
-extern void MOD21_02254854();
extern void MOD21_0225496C();
THUMB_FUNC static void MOD21_02254840(void)
diff --git a/arm9/src/unk_0200CA44.c b/arm9/src/unk_0200CA44.c
index fc4656b2..1a572a89 100644
--- a/arm9/src/unk_0200CA44.c
+++ b/arm9/src/unk_0200CA44.c
@@ -2,30 +2,30 @@
#include "main.h"
#include "unk_0200CA44.h"
-extern void FUN_0201B60C(void *, void (*)(void *, void *), void *, void *);
+extern BOOL FUN_0201B60C(void *, void (*)(void *, void *), void *, void *);
extern void FUN_0201B6A0(s32);
-THUMB_FUNC void FUN_0200CA44(void (*r0)(void *, void *), void * r1, void * r2)
+THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(void *, void *), void * r1, void * r2)
{
- FUN_0201B60C(gMain.unk18, r0, r1, r2);
+ return FUN_0201B60C(gMain.unk18, r0, r1, r2);
}
-THUMB_FUNC void FUN_0200CA60(void (*r0)(void *, void *), void * r1, void * r2)
+THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(void *, void *), void * r1, void * r2)
{
- FUN_0201B60C(gMain.unk1C, r0, r1, r2);
+ return FUN_0201B60C(gMain.unk1C, r0, r1, r2);
}
-THUMB_FUNC void FUN_0200CA7C(void (*r0)(void *, void *), void * r1, void * r2)
+THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(void *, void *), void * r1, void * r2)
{
- FUN_0201B60C(gMain.unk24, r0, r1, r2);
+ return FUN_0201B60C(gMain.unk24, r0, r1, r2);
}
-THUMB_FUNC void FUN_0200CA98(void (*r0)(void *, void *), void * r1, void * r2)
+THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(void *, void *), void * r1, void * r2)
{
- FUN_0201B60C(gMain.unk20, r0, r1, r2);
+ return FUN_0201B60C(gMain.unk20, r0, r1, r2);
}
-THUMB_FUNC void FUN_0200CAB4(s32 unk1)
+THUMB_FUNC void FUN_0200CAB4(s32 unk1) //bool?
{
FUN_0201B6A0(unk1);
}
diff --git a/include/unk_0200CA44.h b/include/unk_0200CA44.h
index 27d58c5c..3a3be022 100644
--- a/include/unk_0200CA44.h
+++ b/include/unk_0200CA44.h
@@ -1,10 +1,10 @@
#ifndef POKEDIAMOND_UNK_0200CA44_H
#define POKEDIAMOND_UNK_0200CA44_H
-void FUN_0200CA44(void (*r0)(void *, void *), void * r1, void * r2);
-void FUN_0200CA60(void (*r0)(void *, void *), void * r1, void * r2);
-void FUN_0200CA7C(void (*r0)(void *, void *), void * r1, void * r2);
-void FUN_0200CA98(void (*r0)(void *, void *), void * r1, void * r2);
+BOOL FUN_0200CA44(void (*r0)(void *, void *), void * r1, void * r2);
+BOOL FUN_0200CA60(void (*r0)(void *, void *), void * r1, void * r2);
+BOOL FUN_0200CA7C(void (*r0)(void *, void *), void * r1, void * r2);
+BOOL FUN_0200CA98(void (*r0)(void *, void *), void * r1, void * r2);
void FUN_0200CAB4(s32 unk1);
#endif //POKEDIAMOND_UNK_0200CA44_H