diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-08-27 08:31:38 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-08-27 08:32:50 -0400 |
commit | 04c7c3de6a47c9952d0fd66f97a19ad10569c0f6 (patch) | |
tree | 1a741b38efa1c26f3f6676c60a86276338299e5a | |
parent | 5d7b65886813e92ddd538cf8da6a43038a7cda0a (diff) |
Decompile daycare
-rw-r--r-- | arm9/asm/daycare.s | 201 | ||||
-rw-r--r-- | arm9/asm/scrcmd_16.s | 8 | ||||
-rw-r--r-- | arm9/global.inc | 36 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021D80E8.s | 2 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 112 | ||||
-rw-r--r-- | arm9/modules/35/asm/module_35.s | 8 | ||||
-rw-r--r-- | arm9/src/daycare.c | 114 | ||||
-rw-r--r-- | arm9/src/save_arrays.c | 5 | ||||
-rw-r--r-- | include/daycare.h | 46 |
9 files changed, 245 insertions, 287 deletions
diff --git a/arm9/asm/daycare.s b/arm9/asm/daycare.s deleted file mode 100644 index 3de96399..00000000 --- a/arm9/asm/daycare.s +++ /dev/null @@ -1,201 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .include "constants/species.h" - - .text - - thumb_func_start Sav2_Daycare_sizeof -Sav2_Daycare_sizeof: ; 0x02023C40 - mov r0, #0x1e - lsl r0, r0, #0x4 - bx lr - .balign 4 - - thumb_func_start Sav2_Daycare_init -Sav2_Daycare_init: ; 0x02023C48 - push {r4, lr} - mov r2, #0x1e - add r4, r0, #0x0 - mov r1, #0x0 - lsl r2, r2, #0x4 - bl memset - add r0, r4, #0x0 - bl ZeroBoxMonData - add r0, r4, #0x0 - add r0, #0xec - bl ZeroBoxMonData - mov r0, #0x76 - mov r1, #0x0 - lsl r0, r0, #0x2 - str r1, [r4, r0] - add r0, r0, #0x4 - strb r1, [r4, r0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02023C74 -FUN_02023C74: ; 0x02023C74 - mov r2, #0xec - mul r2, r1 - add r0, r0, r2 - bx lr - - thumb_func_start FUN_02023C7C -FUN_02023C7C: ; 0x02023C7C - bx lr - .balign 4 - - thumb_func_start FUN_02023C80 -FUN_02023C80: ; 0x02023C80 - add r0, #0x88 - bx lr - - thumb_func_start FUN_02023C84 -FUN_02023C84: ; 0x02023C84 - add r0, #0xe8 - ldr r0, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_02023C8C -FUN_02023C8C: ; 0x02023C8C - bx lr - .balign 4 - - thumb_func_start FUN_02023C90 -FUN_02023C90: ; 0x02023C90 - mov r1, #0x76 - lsl r1, r1, #0x2 - ldr r0, [r0, r1] - bx lr - - thumb_func_start FUN_02023C98 -FUN_02023C98: ; 0x02023C98 - mov r1, #0x77 - lsl r1, r1, #0x2 - ldrb r0, [r0, r1] - bx lr - - thumb_func_start FUN_02023CA0 -FUN_02023CA0: ; 0x02023CA0 - add r0, #0xe8 - str r1, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_02023CA8 -FUN_02023CA8: ; 0x02023CA8 - add r2, r0, #0x0 - add r2, #0xe8 - ldr r2, [r2, #0x0] - add r0, #0xe8 - add r1, r2, r1 - str r1, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_02023CB8 -FUN_02023CB8: ; 0x02023CB8 - mov r2, #0x76 - lsl r2, r2, #0x2 - str r1, [r0, r2] - bx lr - - thumb_func_start FUN_02023CC0 -FUN_02023CC0: ; 0x02023CC0 - mov r2, #0x77 - lsl r2, r2, #0x2 - strb r1, [r0, r2] - bx lr - - thumb_func_start FUN_02023CC8 -FUN_02023CC8: ; 0x02023CC8 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r1, #0xc - mov r2, #0x0 - bl GetBoxMonData - add r5, #0xec - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xc - mov r2, #0x0 - bl GetBoxMonData - cmp r4, r0 - beq _02023CEA - mov r0, #0x1 - pop {r3-r5, pc} -_02023CEA: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02023CF0 -FUN_02023CF0: ; 0x02023CF0 - push {r3-r4} - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r2, #0x1d -_02023CF8: - ldmia r3!, {r0-r1} - stmia r4!, {r0-r1} - sub r2, r2, #0x1 - bne _02023CF8 - ldr r0, [r3, #0x0] - str r0, [r4, #0x0] - pop {r3-r4} - bx lr - - thumb_func_start FUN_02023D08 -FUN_02023D08: ; 0x02023D08 - push {r3-r4} - mov r1, #0x0 - add r2, r0, #0x0 - add r4, r1, #0x0 -_02023D10: - add r1, r1, #0x1 - strh r4, [r2, #0x38] - add r2, r2, #0x2 - cmp r1, #0x8 - blt _02023D10 - add r3, r0, #0x0 - mov r2, #0x0 -_02023D1E: - add r1, r3, #0x0 - add r1, #0x48 - add r4, r4, #0x1 - add r3, r3, #0x2 - strh r2, [r1, #0x0] - cmp r4, #0xb - blt _02023D1E - ldr r1, _02023D38 ; =0x0000FFFF - strh r1, [r0, #0x38] - add r0, #0x48 - strh r1, [r0, #0x0] - pop {r3-r4} - bx lr - .balign 4 -_02023D38: .word 0x0000FFFF - - thumb_func_start FUN_02023D3C -FUN_02023D3C: ; 0x02023D3C - push {r4, lr} - add r4, r0, #0x0 - bl ZeroBoxMonData - add r0, r4, #0x0 - mov r1, #0x0 - add r0, #0xe8 - add r4, #0x88 - str r1, [r0, #0x0] - add r0, r4, #0x0 - bl FUN_02023D08 - pop {r4, pc} - .balign 4 - - thumb_func_start Sav2_Daycare_get -Sav2_Daycare_get: ; 0x02023D58 - ldr r3, _02023D60 ; =SavArray_get - mov r1, #0x8 - bx r3 - nop -_02023D60: .word SavArray_get diff --git a/arm9/asm/scrcmd_16.s b/arm9/asm/scrcmd_16.s index 374d9ace..8afbf518 100644 --- a/arm9/asm/scrcmd_16.s +++ b/arm9/asm/scrcmd_16.s @@ -13,7 +13,7 @@ FUN_02043E00: ; 0x02043E00 bl FUN_02039438 add r4, r0, #0x0 add r0, r5, #0x0 - bl Sav2_Daycare_get + bl Sav2_DayCare_get ldr r1, [r4, #0x0] bl MOD05_021ED4E0 mov r0, #0x0 @@ -75,7 +75,7 @@ FUN_02043E68: ; 0x02043E68 add r2, r0, #0x0 add r0, r6, #0x0 add r1, r5, #0x0 - bl MOD05_021ED0CC + bl MOD05_DayCare_GiveEggToPlayer mov r0, #0x0 pop {r4-r6, pc} @@ -306,7 +306,7 @@ FUN_02044034: ; 0x02044034 bl VarGet add r4, r0, #0x0 add r0, r5, #0x0 - bl Sav2_Daycare_get + bl Sav2_DayCare_get lsl r1, r4, #0x18 lsr r1, r1, #0x18 str r1, [sp, #0x0] @@ -365,7 +365,7 @@ FUN_020440F0: ; 0x020440F0 add r0, r4, #0x0 mov r1, #0x8 bl SavArray_get - bl FUN_02023C90 + bl Sav2_DayCare_GetEggPID strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} diff --git a/arm9/global.inc b/arm9/global.inc index 4537bdc8..6a0bb058 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1517,23 +1517,23 @@ .extern FUN_02023BD4 .extern FUN_02023BE8 .extern FUN_02023C04 -.extern Sav2_Daycare_sizeof -.extern Sav2_Daycare_init -.extern FUN_02023C74 -.extern FUN_02023C7C -.extern FUN_02023C80 -.extern FUN_02023C84 -.extern FUN_02023C8C -.extern FUN_02023C90 -.extern FUN_02023C98 -.extern FUN_02023CA0 -.extern FUN_02023CA8 -.extern FUN_02023CB8 -.extern FUN_02023CC0 -.extern FUN_02023CC8 -.extern FUN_02023CF0 -.extern FUN_02023D3C -.extern Sav2_Daycare_get +.extern Sav2_DayCare_sizeof +.extern Sav2_DayCare_init +.extern Sav2_DayCare_GetMonX +.extern DayCareMon_GetBoxMon +.extern DayCareMon_GetExtras +.extern DayCareMon_GetSteps +.extern DayCareMail_GetCapsule +.extern Sav2_DayCare_GetEggPID +.extern Sav2_DayCare_GetEggCycleCounter +.extern DayCareMon_SetSteps +.extern DayCareMon_AddSteps +.extern Sav2_DayCare_SetEggPID +.extern Sav2_DayCare_SetEggCycleCounter +.extern Sav2_DayCare_MasudaCheck +.extern DayCareMon_Copy +.extern DayCareMon_Init +.extern Sav2_DayCare_get .extern Sav2_Pokedex_sizeof .extern Sav2_Pokedex_new .extern Sav2_Pokedex_Copy @@ -6565,7 +6565,7 @@ .extern MOD05_021EC864 .extern MOD05_021ECD64 .extern MOD05_SetEggStats -.extern MOD05_021ED0CC +.extern MOD05_DayCare_GiveEggToPlayer .extern MOD05_021ED378 .extern MOD05_021ED49C .extern MOD05_021ED4E0 diff --git a/arm9/modules/05/asm/mod05_021D80E8.s b/arm9/modules/05/asm/mod05_021D80E8.s index c5546619..946b25da 100644 --- a/arm9/modules/05/asm/mod05_021D80E8.s +++ b/arm9/modules/05/asm/mod05_021D80E8.s @@ -1765,7 +1765,7 @@ MOD05_021D8F38: ; 0x021D8F38 bl SavArray_PlayerParty_get add r5, r0, #0 ldr r0, [r4, #0xc] - bl Sav2_Daycare_get + bl Sav2_DayCare_get add r1, r5, #0 add r2, r4, #0 bl MOD05_021ED378 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 8ed0618c..2244fdd6 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -14321,8 +14321,8 @@ _021EC454: .word UNK05_021F7930 thumb_func_start MOD05_021EC458 MOD05_021EC458: ; 0x021EC458 push {r3, lr} - bl FUN_02023C74 - bl FUN_02023C7C + bl Sav2_DayCare_GetMonX + bl DayCareMon_GetBoxMon pop {r3, pc} thumb_func_start MOD05_021EC464 @@ -14335,8 +14335,8 @@ MOD05_021EC464: ; 0x021EC464 _021EC46E: add r0, r6, #0 add r1, r5, #0 - bl FUN_02023C74 - bl FUN_02023C7C + bl Sav2_DayCare_GetMonX + bl DayCareMon_GetBoxMon add r1, r7, #0 mov r2, #0 bl GetBoxMonData @@ -14367,8 +14367,8 @@ MOD05_021EC49C: ; 0x021EC49C _021EC4AA: add r0, r5, #0 add r1, r4, #0 - bl FUN_02023C74 - bl FUN_02023C7C + bl Sav2_DayCare_GetMonX + bl DayCareMon_GetBoxMon add r1, r6, #0 add r2, r7, #0 bl GetBoxMonData @@ -14410,10 +14410,10 @@ MOD05_021EC4F0: ; 0x021EC4F0 bl GetPartyMonByIndex add r4, r0, #0 add r0, r5, #0 - bl FUN_02023C80 + bl DayCareMon_GetExtras str r0, [sp, #8] add r0, r5, #0 - bl FUN_02023C7C + bl DayCareMon_GetBoxMon str r0, [sp, #4] add r0, r7, #0 bl Sav2_PlayerData_GetProfileAddr @@ -14428,7 +14428,7 @@ MOD05_021EC4F0: ; 0x021EC4F0 cmp r0, #0 beq _021EC544 ldr r0, [sp, #8] - bl FUN_02023C8C + bl DayCareMail_GetCapsule add r2, r0, #0 add r0, r4, #0 mov r1, #0xa9 @@ -14439,7 +14439,7 @@ _021EC544: bl FUN_02069BB4 add r0, r5, #0 mov r1, #0 - bl FUN_02023CA0 + bl DayCareMon_SetSteps ldr r1, [sp] add r0, r6, #0 bl RemoveMonFromParty @@ -14472,7 +14472,7 @@ MOD05_021EC57C: ; 0x021EC57C bl MOD05_021EC49C add r1, r0, #0 add r0, r4, #0 - bl FUN_02023C74 + bl Sav2_DayCare_GetMonX add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 @@ -14486,17 +14486,17 @@ MOD05_021EC5B0: ; 0x021EC5B0 push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 mov r1, #0 - bl FUN_02023C74 + bl Sav2_DayCare_GetMonX add r5, r0, #0 add r0, r4, #0 mov r1, #1 - bl FUN_02023C74 + bl Sav2_DayCare_GetMonX add r4, r0, #0 add r0, r5, #0 - bl FUN_02023C7C + bl DayCareMon_GetBoxMon add r6, r0, #0 add r0, r4, #0 - bl FUN_02023C7C + bl DayCareMon_GetBoxMon add r7, r0, #0 add r0, r6, #0 mov r1, #5 @@ -14512,9 +14512,9 @@ MOD05_021EC5B0: ; 0x021EC5B0 beq _021EC600 add r0, r5, #0 add r1, r4, #0 - bl FUN_02023CF0 + bl DayCareMon_Copy add r0, r4, #0 - bl FUN_02023D3C + bl DayCareMon_Init _021EC600: pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 @@ -14582,10 +14582,10 @@ MOD05_021EC668: ; 0x021EC668 bl AllocMonZeroed add r4, r0, #0 add r0, r6, #0 - bl FUN_02023C7C + bl DayCareMon_GetBoxMon add r5, r0, #0 add r0, r6, #0 - bl FUN_02023C80 + bl DayCareMon_GetExtras str r0, [sp, #4] add r0, r7, #0 mov r1, #0 @@ -14612,7 +14612,7 @@ MOD05_021EC668: ; 0x021EC668 bl GetMonData str r0, [sp, #8] add r0, r6, #0 - bl FUN_02023C84 + bl DayCareMon_GetSteps ldr r1, [sp, #8] add r2, sp, #8 add r0, r1, r0 @@ -14628,7 +14628,7 @@ _021EC6E0: cmp r0, #0 beq _021EC6FA ldr r0, [sp, #4] - bl FUN_02023C8C + bl DayCareMail_GetCapsule add r2, r0, #0 add r0, r4, #0 mov r1, #0xa9 @@ -14641,7 +14641,7 @@ _021EC6FA: bl ZeroBoxMonData add r0, r6, #0 mov r1, #0 - bl FUN_02023CA0 + bl DayCareMon_SetSteps add r0, r4, #0 bl FreeToHeap add r0, r7, #0 @@ -14656,7 +14656,7 @@ MOD05_021EC71C: ; 0x021EC71C add r4, r1, #0 add r0, r6, #0 add r1, r3, #0 - bl FUN_02023C74 + bl Sav2_DayCare_GetMonX add r1, r0, #0 add r0, r5, #0 add r2, r4, #0 @@ -14704,13 +14704,13 @@ MOD05_021EC744: ; 0x021EC744 MOD05_021EC78C: ; 0x021EC78C push {r4, r5, r6, lr} add r5, r0, #0 - bl FUN_02023C7C + bl DayCareMon_GetBoxMon add r6, r0, #0 bl CalcBoxMonLevel lsl r0, r0, #0x18 lsr r4, r0, #0x18 add r0, r5, #0 - bl FUN_02023C84 + bl DayCareMon_GetSteps add r1, r0, #0 add r0, r6, #0 bl MOD05_021EC744 @@ -14723,10 +14723,10 @@ MOD05_021EC78C: ; 0x021EC78C MOD05_021EC7B4: ; 0x021EC7B4 push {r3, r4, r5, lr} add r5, r0, #0 - bl FUN_02023C7C + bl DayCareMon_GetBoxMon add r4, r0, #0 add r0, r5, #0 - bl FUN_02023C84 + bl DayCareMon_GetSteps add r1, r0, #0 add r0, r4, #0 bl MOD05_021EC744 @@ -14741,7 +14741,7 @@ MOD05_021EC7D4: ; 0x021EC7D4 sub sp, #8 add r4, r0, #0 add r5, r1, #0 - bl FUN_02023C7C + bl DayCareMon_GetBoxMon add r6, r0, #0 add r0, r4, #0 bl MOD05_021EC78C @@ -14770,7 +14770,7 @@ MOD05_021EC810: ; 0x021EC810 sub sp, #8 add r4, r0, #0 add r5, r1, #0 - bl FUN_02023C7C + bl DayCareMon_GetBoxMon add r6, r0, #0 add r0, r4, #0 bl MOD05_021EC78C @@ -14801,7 +14801,7 @@ MOD05_021EC810: ; 0x021EC810 MOD05_021EC854: ; 0x021EC854 push {r4, lr} add r4, r2, #0 - bl FUN_02023C74 + bl Sav2_DayCare_GetMonX add r1, r4, #0 bl MOD05_021EC810 pop {r4, pc} @@ -14810,9 +14810,9 @@ MOD05_021EC854: ; 0x021EC854 MOD05_021EC864: ; 0x021EC864 push {r3, r4, r5, lr} add r5, r2, #0 - bl FUN_02023C74 + bl Sav2_DayCare_GetMonX add r4, r0, #0 - bl FUN_02023C7C + bl DayCareMon_GetBoxMon mov r1, #5 mov r2, #0 bl GetBoxMonData @@ -14935,7 +14935,7 @@ MOD05_021EC944: ; 0x021EC944 bl MTRandom add r1, r0, #0 ldr r0, [sp] - bl FUN_02023CB8 + bl Sav2_DayCare_SetEggPID pop {r3, r4, r5, r6, r7, pc} _021EC960: ldr r0, [sp] @@ -14962,7 +14962,7 @@ _021EC98A: _021EC990: ldr r0, [sp] add r1, r4, #0 - bl FUN_02023CB8 + bl Sav2_DayCare_SetEggPID pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 @@ -15467,10 +15467,10 @@ MOD05_021ECD64: ; 0x021ECD64 push {r4, lr} add r4, r0, #0 mov r1, #0 - bl FUN_02023CB8 + bl Sav2_DayCare_SetEggPID add r0, r4, #0 mov r1, #0 - bl FUN_02023CC0 + bl Sav2_DayCare_SetEggCycleCounter pop {r4, pc} thumb_func_start MOD05_021ECD78 @@ -15628,7 +15628,7 @@ _021ECE8C: cmp r4, #0x1d bne _021ECEBC ldr r0, [sp] - bl FUN_02023C90 + bl Sav2_DayCare_GetEggPID mov r1, #2 lsl r1, r1, #0xe tst r0, r1 @@ -15642,7 +15642,7 @@ _021ECEBC: cmp r4, r0 bne _021ECED6 ldr r0, [sp] - bl FUN_02023C90 + bl Sav2_DayCare_GetEggPID mov r1, #2 lsl r1, r1, #0xe tst r0, r1 @@ -15794,8 +15794,8 @@ _021ECFEE: .balign 4, 0 _021ED008: .word 0x000001EE - thumb_func_start MOD05_021ED00C -MOD05_021ED00C: ; 0x021ED00C + thumb_func_start MOD05_DayCare_CreateEgg +MOD05_DayCare_CreateEgg: ; 0x021ED00C push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 str r1, [sp, #0x10] @@ -15808,10 +15808,10 @@ MOD05_021ED00C: ; 0x021ED00C add r1, sp, #0x14 strb r0, [r1] add r0, r5, #0 - bl FUN_02023C90 + bl Sav2_DayCare_GetEggPID add r4, r0, #0 add r0, r5, #0 - bl FUN_02023CC8 + bl Sav2_DayCare_MasudaCheck cmp r0, #0 beq _021ED05E add r0, r6, #0 @@ -15881,8 +15881,8 @@ _021ED05E: .balign 4, 0 _021ED0C8: .word 0x000001EE - thumb_func_start MOD05_021ED0CC -MOD05_021ED0CC: ; 0x021ED0CC + thumb_func_start MOD05_DayCare_GiveEggToPlayer +MOD05_DayCare_GiveEggToPlayer: ; 0x021ED0CC push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 @@ -15915,7 +15915,7 @@ MOD05_021ED0CC: ; 0x021ED0CC add r0, r4, #0 add r1, r6, #0 add r2, r5, #0 - bl MOD05_021ED00C + bl MOD05_DayCare_CreateEgg add r0, r4, #0 add r1, r5, #0 bl MOD05_021EC9D4 @@ -16251,9 +16251,9 @@ _021ED38E: beq _021ED3AC ldr r0, [sp] add r1, r4, #0 - bl FUN_02023C74 + bl Sav2_DayCare_GetMonX mov r1, #1 - bl FUN_02023CA8 + bl DayCareMon_AddSteps add r6, r6, #1 _021ED3AC: add r4, r4, #1 @@ -16261,15 +16261,15 @@ _021ED3AC: cmp r4, #2 blo _021ED38E ldr r0, [sp] - bl FUN_02023C90 + bl Sav2_DayCare_GetEggPID cmp r0, #0 bne _021ED3F8 cmp r6, #2 bne _021ED3F8 ldr r0, [sp] mov r1, #1 - bl FUN_02023C74 - bl FUN_02023C84 + bl Sav2_DayCare_GetMonX + bl DayCareMon_GetSteps lsl r0, r0, #0x18 lsr r0, r0, #0x18 cmp r0, #0xff @@ -16289,11 +16289,11 @@ _021ED3AC: bl MOD05_021EC944 _021ED3F8: ldr r0, [sp] - bl FUN_02023C98 + bl Sav2_DayCare_GetEggCycleCounter add r4, r0, #0 ldr r0, [sp] add r1, r4, #1 - bl FUN_02023CC0 + bl Sav2_DayCare_SetEggCycleCounter ldr r0, [sp, #4] bl MOD05_021ED334 add r1, r4, #1 @@ -16301,7 +16301,7 @@ _021ED3F8: bne _021ED490 ldr r0, [sp] mov r1, #0 - bl FUN_02023CC0 + bl Sav2_DayCare_SetEggCycleCounter add r0, r7, #0 bl MOD05_021ED190 add r6, r0, #0 @@ -16448,7 +16448,7 @@ MOD05_021ED52C: ; 0x021ED52C add r7, r2, #0 add r1, r6, #0 str r3, [sp, #8] - bl FUN_02023C74 + bl Sav2_DayCare_GetMonX str r0, [sp, #0xc] add r0, r5, #0 add r1, r6, #0 @@ -16459,7 +16459,7 @@ MOD05_021ED52C: ; 0x021ED52C add r2, r5, #0 bl BufferBoxMonNickname ldr r0, [sp, #0xc] - bl FUN_02023C84 + bl DayCareMon_GetSteps add r1, r0, #0 add r0, r5, #0 bl MOD05_021EC744 @@ -16531,7 +16531,7 @@ MOD05_021ED5C4: ; 0x021ED5C4 MOD05_021ED5EC: ; 0x021ED5EC push {r4, lr} add r4, r0, #0 - bl FUN_02023C90 + bl Sav2_DayCare_GetEggPID cmp r0, #0 beq _021ED5FC mov r0, #1 diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s index 8892667e..45cab8d3 100644 --- a/arm9/modules/35/asm/module_35.s +++ b/arm9/modules/35/asm/module_35.s @@ -48,7 +48,7 @@ MOD35_0225489C: ; 0x0225489C add r0, r4, #0 add r6, r2, #0 bl MOD20_02252C40 - bl Sav2_Daycare_get + bl Sav2_DayCare_get str r0, [r5, #0x30] ldr r1, [r5, #0x30] add r0, r5, #4 @@ -301,7 +301,7 @@ MOD35_02254A50: ; 0x02254A50 ldr r1, [sp] strb r0, [r1] ldr r0, [sp, #4] - bl FUN_02023C90 + bl Sav2_DayCare_GetEggPID ldr r1, [sp] mov r7, #0 strb r0, [r1, #1] @@ -314,9 +314,9 @@ MOD35_02254A50: ; 0x02254A50 _02254A7A: ldr r0, [sp, #4] add r1, r7, #0 - bl FUN_02023C74 + bl Sav2_DayCare_GetMonX str r0, [sp, #8] - bl FUN_02023C7C + bl DayCareMon_GetBoxMon add r4, r0, #0 bl AcquireBoxMonLock str r0, [sp, #0xc] diff --git a/arm9/src/daycare.c b/arm9/src/daycare.c new file mode 100644 index 00000000..eff25151 --- /dev/null +++ b/arm9/src/daycare.c @@ -0,0 +1,114 @@ +#include "global.h" +#include "pokemon.h" +#include "seals.h" +#include "save_block_2.h" +#include "daycare.h" + +#pragma thumb on + +u32 Sav2_DayCare_sizeof(void) +{ + return sizeof(struct DayCare); +} + +void Sav2_DayCare_init(struct DayCare * daycare) +{ + memset(daycare, 0, sizeof(struct DayCare)); + ZeroBoxMonData(&daycare->mons[0].mon); + ZeroBoxMonData(&daycare->mons[1].mon); + daycare->egg_pid = 0; + daycare->egg_cycles = 0; +} + +struct DayCareMon * Sav2_DayCare_GetMonX(struct DayCare * daycare, s32 i) +{ + return &daycare->mons[i]; +} + +struct BoxPokemon * DayCareMon_GetBoxMon(struct DayCareMon * dcmon) +{ + return &dcmon->mon; +} + +struct DayCareMail * DayCareMon_GetExtras(struct DayCareMon * dcmon) +{ + return &dcmon->mail; +} + +u32 DayCareMon_GetSteps(struct DayCareMon * dcmon) +{ + return dcmon->steps; +} + +struct SealStruct * DayCareMail_GetCapsule(struct DayCareMail * dcmail) +{ + return &dcmail->seal; +} + +u32 Sav2_DayCare_GetEggPID(struct DayCare * daycare) +{ + return daycare->egg_pid; +} + +u8 Sav2_DayCare_GetEggCycleCounter(struct DayCare * daycare) +{ + return daycare->egg_cycles; +} + +void DayCareMon_SetSteps(struct DayCareMon * dcmon, u32 steps) +{ + dcmon->steps = steps; +} + +void DayCareMon_AddSteps(struct DayCareMon * dcmon, u32 steps) +{ + dcmon->steps += steps; +} + +void Sav2_DayCare_SetEggPID(struct DayCare * daycare, u32 pid) +{ + daycare->egg_pid = pid; +} + +void Sav2_DayCare_SetEggCycleCounter(struct DayCare * daycare, u8 count) +{ + daycare->egg_cycles = count; +} + +BOOL Sav2_DayCare_MasudaCheck(struct DayCare * daycare) +{ + // Checks if the pokemon come from different countries. + // Uses language as a proxy for country, even though it + // only accounts for European languages and Japanese. + // If true, shiny odds are increased (see overlay 05). + return GetBoxMonData(&daycare->mons[0].mon, MON_DATA_GAME_LANGUAGE, NULL) != GetBoxMonData(&daycare->mons[1].mon, MON_DATA_GAME_LANGUAGE, NULL); +} + +void DayCareMon_Copy(struct DayCareMon * dest, const struct DayCareMon * src) +{ + *dest = *src; +} + +void DayCareMon_Extras_init(struct DayCareMail * mail) +{ + int i; + + for (i = 0; i < OT_NAME_LENGTH + 1; i++) + mail->ot_name[i] = 0; + for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++) + mail->nickname[i] = 0; + mail->ot_name[0] = EOS; + mail->nickname[0] = EOS; +} + +void DayCareMon_Init(struct DayCareMon * mon) +{ + ZeroBoxMonData(&mon->mon); + mon->steps = 0; + DayCareMon_Extras_init(&mon->mail); +} + +struct DayCare * Sav2_DayCare_get(struct SaveBlock2 * sav2) +{ + return (struct DayCare *)SavArray_get(sav2, 8); +} diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c index 201a313a..96808ba6 100644 --- a/arm9/src/save_arrays.c +++ b/arm9/src/save_arrays.c @@ -9,11 +9,11 @@ #include "poketch.h" #include "hall_of_fame.h" #include "unk_020286F8.h" +#include "daycare.h" extern u32 FUN_0202AC20(void); extern u32 FUN_02034D7C(void); extern u32 Sav2_Pokedex_sizeof(void); -extern u32 Sav2_Daycare_sizeof(void); extern u32 FUN_020254B8(void); extern u32 FUN_02024E64(void); extern u32 FUN_02034D80(void); @@ -41,7 +41,6 @@ extern u32 FUN_02013B28(void); extern void FUN_0202AC28(void *); extern void FUN_02034D98(void *); extern void Sav2_Pokedex_init(void *); -extern void Sav2_Daycare_init(void *); extern void FUN_020254CC(void *); extern void FUN_02024E6C(void *); extern void FUN_02034D88(void *); @@ -81,7 +80,7 @@ const struct SaveChunkHeader UNK_020EE700[] = { { 5, 0, (SAVSIZEFN)Sav2_Poketch_sizeof, (SAVINITFN)Sav2_Poketch_init }, { 6, 0, (SAVSIZEFN)FUN_02034D7C, (SAVINITFN)FUN_02034D98 }, { 7, 0, (SAVSIZEFN)Sav2_Pokedex_sizeof, (SAVINITFN)Sav2_Pokedex_init }, - { 8, 0, (SAVSIZEFN)Sav2_Daycare_sizeof, (SAVINITFN)Sav2_Daycare_init }, + { 8, 0, (SAVSIZEFN)Sav2_DayCare_sizeof, (SAVINITFN)Sav2_DayCare_init }, { 9, 0, (SAVSIZEFN)FUN_020254B8, (SAVINITFN)FUN_020254CC }, { 10, 0, (SAVSIZEFN)FUN_02024E64, (SAVINITFN)FUN_02024E6C }, { 11, 0, (SAVSIZEFN)FUN_02034D80, (SAVINITFN)FUN_02034D88 }, diff --git a/include/daycare.h b/include/daycare.h new file mode 100644 index 00000000..d1026f76 --- /dev/null +++ b/include/daycare.h @@ -0,0 +1,46 @@ +#ifndef POKEDIAMOND_DAYCARE_H +#define POKEDIAMOND_DAYCARE_H + +struct DayCareMail +{ + struct SealStruct seal; + u16 ot_name[OT_NAME_LENGTH + 1]; + u16 nickname[POKEMON_NAME_LENGTH + 1]; + u8 padding_5E[2]; +}; + +struct DayCareMon +{ + struct BoxPokemon mon; + struct DayCareMail mail; + u32 steps; +}; + +struct DayCare +{ + struct DayCareMon mons[2]; + u32 egg_pid; + u8 egg_cycles; + u8 padding_1DD[3]; +}; + +u32 Sav2_DayCare_sizeof(void); +void Sav2_DayCare_init(struct DayCare * daycare); +struct DayCareMon * Sav2_DayCare_GetMonX(struct DayCare * daycare, s32 i); +struct BoxPokemon * DayCareMon_GetBoxMon(struct DayCareMon * dcmon); +struct DayCareMail * DayCareMon_GetExtras(struct DayCareMon * dcmon); +u32 DayCareMon_GetSteps(struct DayCareMon * dcmon); +struct SealStruct * DayCareMail_GetCapsule(struct DayCareMail * dcmail); +u32 Sav2_DayCare_GetEggPID(struct DayCare * daycare); +u8 Sav2_DayCare_GetEggCycleCounter(struct DayCare * daycare); +void DayCareMon_SetSteps(struct DayCareMon * dcmon, u32 steps); +void DayCareMon_AddSteps(struct DayCareMon * dcmon, u32 steps); +void Sav2_DayCare_SetEggPID(struct DayCare * daycare, u32 pid); +void Sav2_DayCare_SetEggCycleCounter(struct DayCare * daycare, u8 count); +BOOL Sav2_DayCare_MasudaCheck(struct DayCare * daycare); +void DayCareMon_Copy(struct DayCareMon * dest, const struct DayCareMon * src); +void DayCareMon_Extras_init(struct DayCareMail * mail); +void DayCareMon_Init(struct DayCareMon * mon); +struct DayCare * Sav2_DayCare_get(struct SaveBlock2 * sav2); + +#endif //POKEDIAMOND_DAYCARE_H |