summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNieDzejkob <niedzejkob@gmail.com>2017-01-07 23:08:51 +0100
committerNieDzejkob <niedzejkob@gmail.com>2017-05-21 19:31:18 +0200
commit4a9cb7aa4de9571f79c46e0df1733b26849c0904 (patch)
treedd41c93df91a41528554eaa1f5e84fe52ed5e49e
parent135bbb721e0b7e34ad19d818e097add64693ab15 (diff)
Decompile daycare_empty_slot and unify the function prototype of daycare_count_pokemon. Presumably identify the daycare data in the save structure
-rw-r--r--asm/daycare.s91
-rw-r--r--include/global.h6
-rw-r--r--src/daycare.c75
3 files changed, 78 insertions, 94 deletions
diff --git a/asm/daycare.s b/asm/daycare.s
index 47a84e8e0..7307e8365 100644
--- a/asm/daycare.s
+++ b/asm/daycare.s
@@ -6,97 +6,6 @@
.text
- thumb_func_start sub_8041324
-sub_8041324: @ 8041324
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- mov r10, r1
- movs r7, 0
- movs r5, 0
- mov r6, r10
- adds r6, 0x74
- movs r0, 0x1
- mov r8, r0
-_0804133E:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 4
- mov r1, r9
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _0804136E
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, 0
- movs r1, 0xC
- bl GetBoxMonData
- adds r1, r0, 0
- cmp r1, 0
- bne _0804136E
- lsls r0, r5, 1
- adds r0, r6, r0
- b _08041374
-_0804136E:
- lsls r0, r5, 1
- adds r0, r6, r0
- mov r1, r8
-_08041374:
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _0804133E
- mov r0, r10
- str r7, [r0, 0x70]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8041324
-
- thumb_func_start daycare_empty_slot
-daycare_empty_slot: @ 8041394
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r4, 0
-_0804139A:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- adds r0, r5, r0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _080413B2
- lsls r0, r4, 24
- asrs r0, 24
- b _080413C0
-_080413B2:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _0804139A
- movs r0, 0x1
- negs r0, r0
-_080413C0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end daycare_empty_slot
-
thumb_func_start sub_80413C8
sub_80413C8: @ 80413C8
push {r4-r7,lr}
diff --git a/include/global.h b/include/global.h
index 5edb3239f..2045f5b43 100644
--- a/include/global.h
+++ b/include/global.h
@@ -536,9 +536,9 @@ struct SaveBlock1 /* 0x02025734 */
/*0x2D94*/ OldMan oldMan;
/*0x2DC0*/ u8 unk_2DC0[0x14];
/*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
- /*0x2DFC*/ u8 filler_2DFC[0x8];
- /*0x2E04*/ SB_Struct sbStruct;
- /*0x2F9C*/ u8 filler_2F9C[0xA0];
+ /*0x2DFC*/ u8 filler_2DFC[0x100];
+ /*0x2EFC*/ struct SB1_2EFC_Struct sb1_2EFC_struct[5];
+ /*0x2F9C*/ struct BoxPokemon filler_2F9C[2]; // daycare related
/*0x303C*/ u8 filler_303C[0x38];
/*0x3074*/ u8 filler_3074[0x42];
/*0x30B6*/ u8 filler_30B6;
diff --git a/src/daycare.c b/src/daycare.c
index 23f0305d8..864d86aa8 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "pokemon.h"
#include "string_util.h"
+#include "asm.h"
u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest)
{
@@ -31,3 +32,77 @@ u8 daycare_count_pokemon(struct BoxPokemon *daycare_data)
return count;
}
+
+__attribute__((naked))
+void sub_8041324(struct BoxPokemon * box_pokemon, void * void_pointer){
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ mov r9, r0\n\
+ mov r10, r1\n\
+ movs r7, 0\n\
+ movs r5, 0\n\
+ mov r6, r10\n\
+ adds r6, 0x74\n\
+ movs r0, 0x1\n\
+ mov r8, r0\n\
+_0804133E:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 4\n\
+ mov r1, r9\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetBoxMonData\n\
+ cmp r0, 0\n\
+ beq _0804136E\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xC\n\
+ bl GetBoxMonData\n\
+ adds r1, r0, 0\n\
+ cmp r1, 0\n\
+ bne _0804136E\n\
+ lsls r0, r5, 1\n\
+ adds r0, r6, r0\n\
+ b _08041374\n\
+_0804136E:\n\
+ lsls r0, r5, 1\n\
+ adds r0, r6, r0\n\
+ mov r1, r8\n\
+_08041374:\n\
+ strh r1, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x1\n\
+ bls _0804133E\n\
+ mov r0, r10\n\
+ str r7, [r0, 0x70]\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+
+s8 daycare_empty_slot(struct BoxPokemon * daycare_data){
+ u8 i;
+
+ for(i = 0;i <= 1;i++){
+ if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0){
+ return i;
+ }
+ }
+
+ return -1;
+}