diff options
author | NieDzejkob <niedzejkob@gmail.com> | 2017-05-14 18:35:47 +0200 |
---|---|---|
committer | NieDzejkob <niedzejkob@gmail.com> | 2017-05-21 19:31:18 +0200 |
commit | 6563ec9bada46058c095be12ff1719a525a6f799 (patch) | |
tree | 5a9ef6e06a2d8902506701b714f960acfb94b3eb | |
parent | b60ad4ccba10b7c570b633edcdb74c64055a0aa4 (diff) |
Name gSaveBlock1.daycareData, decompile sub_8041648
-rw-r--r-- | asm/daycare.s | 115 | ||||
-rw-r--r-- | include/global.h | 2 | ||||
-rw-r--r-- | src/daycare.c | 118 | ||||
-rw-r--r-- | src/mori_debug_menu.c | 4 | ||||
-rw-r--r-- | src/record_mixing.c | 2 |
5 files changed, 117 insertions, 124 deletions
diff --git a/asm/daycare.s b/asm/daycare.s index cd1b7091f..962a0555a 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,121 +6,6 @@ .text - thumb_func_start sub_8041570 -sub_8041570: @ 8041570 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x68 - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r7, r4, 2 - adds r0, r7, r4 - lsls r0, 4 - adds r6, r5, r0 - ldr r1, _08041640 @ =gStringVar1 - adds r0, r6, 0 - bl pokemon_get_nick_ - adds r0, r6, 0 - movs r1, 0xB - bl GetBoxMonData - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - adds r0, r6, 0 - mov r1, sp - bl sub_803B4B4 - mov r0, sp - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - beq _080415D8 - mov r0, sp - movs r1, 0x19 - bl GetMonData - movs r2, 0x88 - lsls r2, 1 - adds r1, r5, r2 - adds r1, r7 - ldr r1, [r1] - adds r0, r1 - str r0, [sp, 0x64] - add r2, sp, 0x64 - mov r0, sp - movs r1, 0x19 - bl SetMonData - mov r0, sp - bl sub_804151C -_080415D8: - ldr r0, _08041644 @ =gPlayerParty - movs r1, 0xFA - lsls r1, 1 - adds r1, r0 - mov r8, r1 - mov r0, r8 - mov r1, sp - movs r2, 0x64 - bl memcpy - lsls r0, r4, 3 - subs r0, r4 - lsls r1, r0, 3 - adds r0, r5, r1 - adds r0, 0xC0 - ldrh r0, [r0] - cmp r0, 0 - beq _08041610 - adds r4, r1, 0 - adds r4, 0xA0 - adds r4, r5, r4 - mov r0, r8 - adds r1, r4, 0 - bl GiveMailToMon2 - adds r0, r4, 0 - bl sub_80417F4 -_08041610: - bl party_compaction - adds r0, r6, 0 - bl ZeroBoxMonData - movs r2, 0x88 - lsls r2, 1 - adds r0, r5, r2 - adds r0, r7 - movs r1, 0 - str r1, [r0] - adds r0, r5, 0 - bl sub_80414C0 - bl CalculatePlayerPartyCount - mov r0, r9 - add sp, 0x68 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08041640: .4byte gStringVar1 -_08041644: .4byte gPlayerParty - thumb_func_end sub_8041570 - - thumb_func_start sub_8041648 -sub_8041648: @ 8041648 - push {lr} - ldr r0, _0804165C @ =gSaveBlock1 + 0x2F9C - ldr r1, _08041660 @ =gSpecialVar_0x8004 - ldrb r1, [r1] - bl sub_8041570 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_0804165C: .4byte gSaveBlock1 + 0x2F9C -_08041660: .4byte gSpecialVar_0x8004 - thumb_func_end sub_8041648 - thumb_func_start sub_8041664 sub_8041664: @ 8041664 push {r4,r5,lr} diff --git a/include/global.h b/include/global.h index 443b2a1d2..957181d45 100644 --- a/include/global.h +++ b/include/global.h @@ -538,7 +538,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff /*0x2DFC*/ u8 filler_2DFC[0x8]; /*0x2E04*/ SB_Struct sbStruct; - /*0x2F9C*/ struct BoxPokemon filler_2F9C[2]; // daycare related + /*0x2F9C*/ struct BoxPokemon daycareData[2]; /*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 ca480329b..3d8de4ef6 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -118,7 +118,7 @@ s8 daycare_empty_slot(struct BoxPokemon * daycare_data) if(MonHasMail(mon) != 0){ // if the mon holds a mail? u8 empty_slot_times_56 = empty_slot * 56; u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36; - StringCopy(something2, gSaveBlock2); + StringCopy(something2, gSaveBlock2.playerName); PadNameString(something2, 0xFC); something2 += 8; pokemon_get_nick(mon, something2); @@ -230,7 +230,7 @@ _08041498: .4byte 0x00002b4c\n\ void daycare_send() { - sub_80413C8(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.filler_2F9C); + sub_80413C8(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData); } void sub_80417F4(u8 *); @@ -238,9 +238,9 @@ void sub_80417F4(u8 *); void sub_80414C0(struct BoxPokemon * daycare_data) { u32 second_species; - if((GetBoxMonData(daycare_data + 1, MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(daycare_data, MON_DATA_SPECIES)) == 0)){ - memcpy(daycare_data, daycare_data + 1, 80); - ZeroBoxMonData(daycare_data + 1); + if((GetBoxMonData(&daycare_data[1], MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(&daycare_data[0], MON_DATA_SPECIES)) == 0)){ + daycare_data[0] = daycare_data[1]; + ZeroBoxMonData(&daycare_data[1]); memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38); *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69); *((u32 *)(daycare_data) + 69) = second_species; @@ -273,3 +273,111 @@ void sub_804151C(struct Pokemon * mon) CalculateMonStats(mon); } + +__attribute__((naked)) +u16 sub_8041570(struct BoxPokemon * daycare_data, u8 a2){ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + sub sp, 0x68\n\ + adds r5, r0, 0\n\ + lsls r1, 24\n\ + lsrs r4, r1, 24\n\ + lsls r7, r4, 2\n\ + adds r0, r7, r4\n\ + lsls r0, 4\n\ + adds r6, r5, r0\n\ + ldr r1, _08041640 @ =gStringVar1\n\ + adds r0, r6, 0\n\ + bl pokemon_get_nick_\n\ + adds r0, r6, 0\n\ + movs r1, 0xB\n\ + bl GetBoxMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + adds r0, r6, 0\n\ + mov r1, sp\n\ + bl sub_803B4B4\n\ + mov r0, sp\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + cmp r0, 0x64\n\ + beq _080415D8\n\ + mov r0, sp\n\ + movs r1, 0x19\n\ + bl GetMonData\n\ + movs r2, 0x88\n\ + lsls r2, 1\n\ + adds r1, r5, r2\n\ + adds r1, r7\n\ + ldr r1, [r1]\n\ + adds r0, r1\n\ + str r0, [sp, 0x64]\n\ + add r2, sp, 0x64\n\ + mov r0, sp\n\ + movs r1, 0x19\n\ + bl SetMonData\n\ + mov r0, sp\n\ + bl sub_804151C\n\ +_080415D8:\n\ + ldr r0, _08041644 @ =gPlayerParty\n\ + movs r1, 0xFA\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + mov r8, r1\n\ + mov r0, r8\n\ + mov r1, sp\n\ + movs r2, 0x64\n\ + bl memcpy\n\ + lsls r0, r4, 3\n\ + subs r0, r4\n\ + lsls r1, r0, 3\n\ + adds r0, r5, r1\n\ + adds r0, 0xC0\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _08041610\n\ + adds r4, r1, 0\n\ + adds r4, 0xA0\n\ + adds r4, r5, r4\n\ + mov r0, r8\n\ + adds r1, r4, 0\n\ + bl GiveMailToMon2\n\ + adds r0, r4, 0\n\ + bl sub_80417F4\n\ +_08041610:\n\ + bl party_compaction\n\ + adds r0, r6, 0\n\ + bl ZeroBoxMonData\n\ + movs r2, 0x88\n\ + lsls r2, 1\n\ + adds r0, r5, r2\n\ + adds r0, r7\n\ + movs r1, 0\n\ + str r1, [r0]\n\ + adds r0, r5, 0\n\ + bl sub_80414C0\n\ + bl CalculatePlayerPartyCount\n\ + mov r0, r9\n\ + add sp, 0x68\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_08041640: .4byte gStringVar1\n\ +_08041644: .4byte gPlayerParty\n\ + .syntax divided"); +} + +extern u8 gSpecialVar_0x8004; + +u16 sub_8041648() +{ + return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004); +} diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index 9f586dcb9..ab0e00c8a 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -65,7 +65,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) s8 MoriDebugMenu_Egg(void) { - if ( daycare_count_pokemon(gSaveBlock1.filler_2F9C) == 2 && daycare_relationship_score_from_savegame() ) + if ( daycare_count_pokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041940(); CloseMenu(); @@ -74,7 +74,7 @@ s8 MoriDebugMenu_Egg(void) s8 MoriDebugMenu_MaleEgg(void) { - if ( daycare_count_pokemon(gSaveBlock1.filler_2F9C) == 2 && daycare_relationship_score_from_savegame() ) + if ( daycare_count_pokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041950(); CloseMenu(); diff --git a/src/record_mixing.c b/src/record_mixing.c index ddf9a5376..5f2077432 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -66,7 +66,7 @@ void sub_80B92AC(void) memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, 0x28); memcpy(gUnknown_02038738, gSaveBlock1.filler_303C, 0x38); memcpy(gUnknown_02038738 + 0x38, gSaveBlock1.filler_3074, 0x38); - sub_8041324(gSaveBlock1.filler_2F9C, gUnknown_02038738); + sub_8041324(gSaveBlock1.daycareData, gUnknown_02038738); memcpy(unk_2018000.filler10AC, gUnknown_083D0280, 0x78); memcpy(unk_2018000.filler1124, gUnknown_083D0284, 0xA4); |