From c2770e210d803c33f014052ef7d084c449589d0b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 15 Aug 2023 21:11:36 -0400 Subject: [PATCH] thru sub_02055900 --- asm/unk_020557E0.s | 190 +---------------------------------------- include/battle_setup.h | 1 + include/unk_020557E0.h | 2 + src/unk_020557E0_c.c | 65 ++++++++++++-- 4 files changed, 61 insertions(+), 197 deletions(-) diff --git a/asm/unk_020557E0.s b/asm/unk_020557E0.s index d7f68b114e..1200a14720 100644 --- a/asm/unk_020557E0.s +++ b/asm/unk_020557E0.s @@ -3,198 +3,10 @@ .include "global.inc" .extern _021D4178 + .extern sub_02055900 .text -; thumb_func_start sub_020557E0 -; sub_020557E0: ; 0x020557E0 -; mov r2, #0 -; ldr r3, _020557F4 ; =_021D4178 -; add r1, r2, #0 -; _020557E6: -; add r0, r3, r2 -; add r0, #0x30 -; add r2, r2, #1 -; strb r1, [r0] -; cmp r2, #6 -; blt _020557E6 -; bx lr -; .balign 4, 0 -; _020557F4: .word _021D4178 -; thumb_func_end sub_020557E0 - -; thumb_func_start sub_020557F8 -; sub_020557F8: ; 0x020557F8 -; push {r4, lr} -; ldr r1, _02055820 ; =_021D4178 -; add r4, r0, #0 -; mov r0, #0 -; mov r2, #0x4c -; bl MIi_CpuClearFast -; ldr r1, _02055820 ; =_021D4178 -; add r0, r4, #0 -; bl sub_0205592C -; ldr r0, _02055820 ; =_021D4178 -; bl sub_020559D0 -; bl GF_RTC_DateTimeToSec -; ldr r2, _02055824 ; =_021D4178 -; str r0, [r2, #0x40] -; str r1, [r2, #0x44] -; pop {r4, pc} -; .balign 4, 0 -; _02055820: .word _021D4178 -; _02055824: .word _021D4178 -; thumb_func_end sub_020557F8 - -; thumb_func_start sub_02055828 -; sub_02055828: ; 0x02055828 -; push {r3, r4, r5, lr} -; ldr r0, [r0, #0xc] -; ldr r4, _0205586C ; =_021D4178 -; bl Save_GameStats_Get -; add r5, r0, #0 -; bl GF_RTC_DateTimeToSec -; add r3, r1, #0 -; ldr r1, _02055870 ; =_021D4178 -; add r2, r0, #0 -; ldr r0, [r1, #0x40] -; ldr r1, [r1, #0x44] -; bl GF_RTC_TimeDelta -; mov r2, #0xfa -; mov r3, #0 -; lsl r2, r2, #2 -; sub r2, r0, r2 -; sbc r1, r3 -; bge _0205585C -; mov r1, #0xfa -; lsl r1, r1, #2 -; sub r0, r1, r0 -; lsl r0, r0, #1 -; b _0205585E -; _0205585C: -; mov r0, #0 -; _0205585E: -; str r0, [r4, #0x48] -; add r0, r5, #0 -; mov r1, #0x11 -; bl GameStats_AddSpecial -; pop {r3, r4, r5, pc} -; nop -; _0205586C: .word _021D4178 -; _02055870: .word _021D4178 -; thumb_func_end sub_02055828 - - thumb_func_start sub_02055874 -sub_02055874: ; 0x02055874 - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, _02055898 ; =_021D4178 - add r4, r1, #0 - add r6, r2, #0 - bl sub_020559E8 - cmp r0, #1 - bne _02055894 - ldr r1, _02055898 ; =_021D4178 - add r0, r5, #0 - add r2, r4, #0 - add r3, r6, #0 - bl sub_02055A48 - pop {r4, r5, r6, pc} -_02055894: - mov r0, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 -_02055898: .word _021D4178 - thumb_func_end sub_02055874 - - thumb_func_start sub_0205589C -sub_0205589C: ; 0x0205589C - ldr r3, _020558A4 ; =sub_02055B1C - ldr r1, _020558A8 ; =_021D4178 - bx r3 - nop -_020558A4: .word sub_02055B1C -_020558A8: .word _021D4178 - thumb_func_end sub_0205589C - - thumb_func_start sub_020558AC -sub_020558AC: ; 0x020558AC - ldr r3, _020558B4 ; =sub_02055AF4 - ldr r2, _020558B8 ; =_021D4178 - bx r3 - nop -_020558B4: .word sub_02055AF4 -_020558B8: .word _021D4178 - thumb_func_end sub_020558AC - - thumb_func_start sub_020558BC -sub_020558BC: ; 0x020558BC - push {r3, lr} - ldr r0, _020558CC ; =_021D4178 - bl sub_020559B4 - mov r1, #6 - sub r0, r1, r0 - pop {r3, pc} - nop -_020558CC: .word _021D4178 - thumb_func_end sub_020558BC - - thumb_func_start sub_020558D0 -sub_020558D0: ; 0x020558D0 - ldr r3, _020558D8 ; =sub_02055B68 - ldr r0, _020558DC ; =_021D4178 - bx r3 - nop -_020558D8: .word sub_02055B68 -_020558DC: .word _021D4178 - thumb_func_end sub_020558D0 - - thumb_func_start sub_020558E0 -sub_020558E0: ; 0x020558E0 - ldr r3, _020558E8 ; =sub_02055BEC - ldr r0, _020558EC ; =_021D4178 - bx r3 - nop -_020558E8: .word sub_02055BEC -_020558EC: .word _021D4178 - thumb_func_end sub_020558E0 - - thumb_func_start sub_020558F0 -sub_020558F0: ; 0x020558F0 - ldr r3, _020558F8 ; =sub_02055B7C - ldr r0, _020558FC ; =_021D4178 - bx r3 - nop -_020558F8: .word sub_02055B7C -_020558FC: .word _021D4178 - thumb_func_end sub_020558F0 - - thumb_func_start sub_02055900 -sub_02055900: ; 0x02055900 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - cmp r5, #0 - beq _02055910 - ldr r0, _02055928 ; =0x000001ED - cmp r5, r0 - bls _02055914 -_02055910: - bl GF_AssertFail -_02055914: - mov r3, #6 - add r0, r4, #0 - sub r4, r5, #1 - str r3, [sp] - mov r1, #0x7d - mov r2, #0 - mul r3, r4 - bl ReadFromNarcMemberByIdPair - pop {r3, r4, r5, pc} - .balign 4, 0 -_02055928: .word 0x000001ED - thumb_func_end sub_02055900 - thumb_func_start sub_0205592C sub_0205592C: ; 0x0205592C push {r3, r4, r5, r6, r7, lr} diff --git a/include/battle_setup.h b/include/battle_setup.h index 2bad3bd087..8466603a64 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -75,5 +75,6 @@ BATTLE_SETUP *BattleSetup_New(HeapID heapId, u32 battleFlags); void sub_020522F0(BATTLE_SETUP *setup, FieldSystem *fsys, void *a1); void sub_02051F2C(BATTLE_SETUP *setup, FieldSystem *fsys, int level); void sub_020520B0(BATTLE_SETUP *setup, FieldSystem *fsys, PARTY *party, void *a4); +BATTLE_SETUP* sub_02051A98(HeapID heapId, int a1); #endif //POKEHEARTGOLD_BATTLE_SETUP_H diff --git a/include/unk_020557E0.h b/include/unk_020557E0.h index 59eae89f88..021cc17116 100644 --- a/include/unk_020557E0.h +++ b/include/unk_020557E0.h @@ -12,6 +12,8 @@ void sub_0202EC70(struct UnkStruct_0202EB30 *a0, int i, Pokemon *mon); int sub_020558D0(FieldSystem *fsys); int sub_020558E0(FieldSystem *fsys); int sub_020558F0(FieldSystem *fsys); +BOOL sub_02055874(FieldSystem* fsys, int x, int y); +BATTLE_SETUP* sub_0205589C(FieldSystem* fsys); void sub_020558AC(FieldSystem *fsys, BATTLE_SETUP *setup); int sub_020558BC(FieldSystem *fsys); diff --git a/src/unk_020557E0_c.c b/src/unk_020557E0_c.c index 6160d06f67..ce55e2dad9 100644 --- a/src/unk_020557E0_c.c +++ b/src/unk_020557E0_c.c @@ -2,10 +2,18 @@ #include "field_system.h" #include "gf_rtc.h" #include "game_stats.h" +#include "battle_setup.h" #include "constants/game_stat.h" +#include "unk_020557E0.h" + +struct UnkStruct_021D4178_sub { + u8 filler_0[4]; + u16 unk_4; + u8 filler_6[2]; +}; struct UnkStruct_021D4178 { - u8 filler_00[0x30]; + struct UnkStruct_021D4178_sub unk_00[6]; u8 unk_30[6]; u8 filler_36[0xA]; s64 timestamp; @@ -14,14 +22,19 @@ struct UnkStruct_021D4178 { struct UnkStruct_021D4178 _021D4178; -extern void sub_0205592C(FieldSystem* fsys, struct UnkStruct_021D4178* unk); -extern void sub_020559D0(struct UnkStruct_021D4178* unk); - -void sub_020557E0(void); -void sub_020557F8(FieldSystem* fsys); -void sub_02055828(FieldSystem* fsys); +void sub_02055900(u16 species, u8* dest); +void sub_0205592C(FieldSystem* fsys, struct UnkStruct_021D4178* unk); +int sub_020559B4(struct UnkStruct_021D4178* unk); +void sub_020559D0(struct UnkStruct_021D4178* unk); +BOOL sub_020559E8(struct UnkStruct_021D4178* unk); +BOOL sub_02055A48(FieldSystem* fsys, struct UnkStruct_021D4178* unk, int x, int y); +BATTLE_SETUP* sub_02055B1C(FieldSystem* fsys, struct UnkStruct_021D4178* unk); +void sub_02055AF4(FieldSystem *fsys, BATTLE_SETUP *setup, struct UnkStruct_021D4178* unk); +int sub_02055B68(struct UnkStruct_021D4178* unk); +int sub_02055BEC(struct UnkStruct_021D4178* unk); +int sub_02055B7C(struct UnkStruct_021D4178* unk); -void sub_020557E0(void) { +void sub_020557E0(FieldSystem* fsys) { s32 i; struct UnkStruct_021D4178* r3 = &_021D4178; for (i = 0; i < 6; ++i) { @@ -47,3 +60,39 @@ void sub_02055828(FieldSystem* fsys) { } GameStats_AddSpecial(stats, GAME_STAT_UNK17); } + +BOOL sub_02055874(FieldSystem* fsys, int x, int y) { + if (sub_020559E8(&_021D4178) == TRUE) { + return sub_02055A48(fsys, &_021D4178, x, y); + } + return FALSE; +} + +BATTLE_SETUP* sub_0205589C(FieldSystem* fsys) { + return sub_02055B1C(fsys, &_021D4178); +} + +void sub_020558AC(FieldSystem *fsys, BATTLE_SETUP *setup) { + return sub_02055AF4(fsys, setup, &_021D4178); +} + +int sub_020558BC(FieldSystem* fsys) { + return 6 - sub_020559B4(&_021D4178); +} + +int sub_020558D0(FieldSystem* fsys) { + return sub_02055B68(&_021D4178); +} + +int sub_020558E0(FieldSystem *fsys) { + return sub_02055BEC(&_021D4178); +} + +int sub_020558F0(FieldSystem *fsys) { + return sub_02055B7C(&_021D4178); +} + +void sub_02055900(u16 species, u8* dest) { + GF_ASSERT(species != SPECIES_NONE && species <= SPECIES_ARCEUS); + ReadFromNarcMemberByIdPair(dest, NARC_a_1_2_5, 0, (species - 1) * 6, 6); +}