From 56bc2e5a6ea644658d292032a20df2e0fa167156 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 3 Feb 2025 18:59:28 -0600 Subject: [PATCH] Decompile 4 more pokedex.c functions --- asm/pokedex.s | 377 --------------------------------------- expected_objs/sub_5E60.o | Bin 1224 -> 0 bytes expected_objs/sub_5EA4.o | Bin 880 -> 0 bytes expected_objs/sub_5EC8.o | Bin 880 -> 0 bytes expected_objs/sub_5EEC.o | Bin 2400 -> 0 bytes include/functions.h | 7 - src/pokedex.c | 124 ++++++++++++- 7 files changed, 122 insertions(+), 386 deletions(-) delete mode 100644 expected_objs/sub_5E60.o delete mode 100644 expected_objs/sub_5EA4.o delete mode 100644 expected_objs/sub_5EC8.o delete mode 100644 expected_objs/sub_5EEC.o diff --git a/asm/pokedex.s b/asm/pokedex.s index b18037b..dbbf6b8 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -5,383 +5,6 @@ .text - thumb_func_start sub_5E60 -sub_5E60: @ 0x08005E60 - ldr r1, _08005E84 @ =gUnknown_0202C5F0 - movs r2, #0 - ldr r0, _08005E88 @ =0x0000DDDD - strh r0, [r1] - ldr r0, _08005E8C @ =gUnknown_0202C5B4 - movs r1, #1 - strh r1, [r0] - ldr r0, _08005E90 @ =gUnknown_0201C180 - strh r1, [r0] - ldr r0, _08005E94 @ =gUnknown_0201B128 - strb r2, [r0] - ldr r0, _08005E98 @ =gUnknown_0201C1BC - strb r2, [r0] - ldr r0, _08005E9C @ =gUnknown_0202C544 - strb r2, [r0] - ldr r0, _08005EA0 @ =gUnknown_0202BECC - strb r2, [r0] - bx lr - .align 2, 0 -_08005E84: .4byte gUnknown_0202C5F0 -_08005E88: .4byte 0x0000DDDD -_08005E8C: .4byte gUnknown_0202C5B4 -_08005E90: .4byte gUnknown_0201C180 -_08005E94: .4byte gUnknown_0201B128 -_08005E98: .4byte gUnknown_0201C1BC -_08005E9C: .4byte gUnknown_0202C544 -_08005EA0: .4byte gUnknown_0202BECC - - thumb_func_start sub_5EA4 -sub_5EA4: @ 0x08005EA4 - push {lr} - ldr r0, _08005EB4 @ =gLink - ldrb r0, [r0] - cmp r0, #0 - beq _08005EB8 - bl sub_639C - b _08005EBC - .align 2, 0 -_08005EB4: .4byte gLink -_08005EB8: - bl sub_65DC -_08005EBC: - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - pop {r1} - bx r1 - - thumb_func_start sub_5EC8 -sub_5EC8: @ 0x08005EC8 - push {lr} - ldr r0, _08005ED8 @ =gLink - ldrb r0, [r0] - cmp r0, #0 - beq _08005EDC - bl sub_5EEC - b _08005EE0 - .align 2, 0 -_08005ED8: .4byte gLink -_08005EDC: - bl sub_6144 -_08005EE0: - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - pop {r1} - bx r1 - - thumb_func_start sub_5EEC -sub_5EEC: @ 0x08005EEC - push {r4, r5, lr} - ldr r0, _08005F0C @ =gUnknown_0201B128 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _08005F5C - ldr r0, _08005F10 @ =gUnknown_0201C1BC - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _08005F14 - cmp r0, #1 - beq _08005F4C - b _08006136 - .align 2, 0 -_08005F0C: .4byte gUnknown_0201B128 -_08005F10: .4byte gUnknown_0201C1BC -_08005F14: - ldr r0, _08005F28 @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08005F34 - ldr r1, _08005F2C @ =gUnknown_0202C5F0 - ldr r0, _08005F30 @ =0x0000FEFE - strh r0, [r1] - b _08006136 - .align 2, 0 -_08005F28: .4byte gMain -_08005F2C: .4byte gUnknown_0202C5F0 -_08005F30: .4byte 0x0000FEFE -_08005F34: - ldr r1, _08005F48 @ =gUnknown_0202C5F0 - movs r2, #0 - adds r0, r1, #0 - adds r0, #0xe -_08005F3C: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _08005F3C - b _08006136 - .align 2, 0 -_08005F48: .4byte gUnknown_0202C5F0 -_08005F4C: - ldr r1, _08005F54 @ =gUnknown_0202C5F0 - ldr r0, _08005F58 @ =0x0000ECEC - strh r0, [r1] - b _08006136 - .align 2, 0 -_08005F54: .4byte gUnknown_0202C5F0 -_08005F58: .4byte 0x0000ECEC -_08005F5C: - ldr r0, _08005F78 @ =gUnknown_0201C180 - ldrh r1, [r0] - adds r5, r0, #0 - cmp r1, #7 - bhi _08005F84 - ldr r1, _08005F7C @ =gUnknown_0202C5F0 - ldr r2, _08005F80 @ =0x0000DDDD - adds r0, r1, #0 - adds r0, #0xe -_08005F6E: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _08005F6E - b _08006130 - .align 2, 0 -_08005F78: .4byte gUnknown_0201C180 -_08005F7C: .4byte gUnknown_0202C5F0 -_08005F80: .4byte 0x0000DDDD -_08005F84: - cmp r1, #0xf - bls _08005F8A - b _08006120 -_08005F8A: - ldrh r2, [r5] - adds r1, r2, #0 - subs r1, #8 - lsls r0, r1, #3 - subs r0, r0, r1 - lsls r0, r0, #0x12 - lsrs r0, r0, #0x10 - mov ip, r0 - ldr r4, _08006118 @ =gUnknown_0202C5F0 - strh r2, [r4] - ldr r3, _0800611C @ =gUnknown_0202A1C0 - lsls r2, r0, #1 - adds r2, r2, r3 - adds r0, #1 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r1, [r0] - lsls r1, r1, #4 - ldrh r0, [r2] - orrs r1, r0 - mov r0, ip - adds r0, #2 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #8 - orrs r1, r0 - mov r0, ip - adds r0, #3 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #0xc - orrs r1, r0 - strh r1, [r4, #2] - mov r2, ip - adds r2, #4 - lsls r2, r2, #1 - adds r2, r2, r3 - mov r0, ip - adds r0, #5 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r1, [r0] - lsls r1, r1, #4 - ldrh r0, [r2] - orrs r1, r0 - mov r0, ip - adds r0, #6 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #8 - orrs r1, r0 - mov r0, ip - adds r0, #7 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #0xc - orrs r1, r0 - strh r1, [r4, #4] - mov r2, ip - adds r2, #8 - lsls r2, r2, #1 - adds r2, r2, r3 - mov r0, ip - adds r0, #9 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r1, [r0] - lsls r1, r1, #4 - ldrh r0, [r2] - orrs r1, r0 - mov r0, ip - adds r0, #0xa - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #8 - orrs r1, r0 - mov r0, ip - adds r0, #0xb - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #0xc - orrs r1, r0 - strh r1, [r4, #6] - mov r2, ip - adds r2, #0xc - lsls r2, r2, #1 - adds r2, r2, r3 - mov r0, ip - adds r0, #0xd - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r1, [r0] - lsls r1, r1, #4 - ldrh r0, [r2] - orrs r1, r0 - mov r0, ip - adds r0, #0xe - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #8 - orrs r1, r0 - mov r0, ip - adds r0, #0xf - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #0xc - orrs r1, r0 - strh r1, [r4, #8] - mov r2, ip - adds r2, #0x10 - lsls r2, r2, #1 - adds r2, r2, r3 - mov r0, ip - adds r0, #0x11 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r1, [r0] - lsls r1, r1, #4 - ldrh r0, [r2] - orrs r1, r0 - mov r0, ip - adds r0, #0x12 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #8 - orrs r1, r0 - mov r0, ip - adds r0, #0x13 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #0xc - orrs r1, r0 - strh r1, [r4, #0xa] - mov r2, ip - adds r2, #0x14 - lsls r2, r2, #1 - adds r2, r2, r3 - mov r0, ip - adds r0, #0x15 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r1, [r0] - lsls r1, r1, #4 - ldrh r0, [r2] - orrs r1, r0 - mov r0, ip - adds r0, #0x16 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #8 - orrs r1, r0 - mov r0, ip - adds r0, #0x17 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #0xc - orrs r1, r0 - strh r1, [r4, #0xc] - mov r2, ip - adds r2, #0x18 - lsls r2, r2, #1 - adds r2, r2, r3 - mov r0, ip - adds r0, #0x19 - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r1, [r0] - lsls r1, r1, #4 - ldrh r0, [r2] - orrs r1, r0 - mov r0, ip - adds r0, #0x1a - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #8 - orrs r1, r0 - mov r0, ip - adds r0, #0x1b - lsls r0, r0, #1 - adds r0, r0, r3 - ldrh r0, [r0] - lsls r0, r0, #0xc - orrs r1, r0 - strh r1, [r4, #0xe] - b _08006130 - .align 2, 0 -_08006118: .4byte gUnknown_0202C5F0 -_0800611C: .4byte gUnknown_0202A1C0 -_08006120: - ldr r1, _08006140 @ =gUnknown_0202C5F0 - movs r2, #0 - adds r0, r1, #0 - adds r0, #0xe -_08006128: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _08006128 -_08006130: - ldrh r0, [r5] - adds r0, #1 - strh r0, [r5] -_08006136: - movs r0, #0 - pop {r4, r5} - pop {r1} - bx r1 - .align 2, 0 -_08006140: .4byte gUnknown_0202C5F0 - thumb_func_start sub_6144 sub_6144: @ 0x08006144 push {r4, r5, lr} diff --git a/expected_objs/sub_5E60.o b/expected_objs/sub_5E60.o deleted file mode 100644 index 33287186f596300279e1a57640a4af2a45f84741..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1224 zcma)5&2G~`5T0E(#Ss!eg(4&llqyJ(K-MO5T36!W#7$`ty`UnFsjWs(wS*|%igJPj z&wzLYo`GlJ70Q{%;2Yb!tX(9SXlK4}_S?yNXZPdy`Hm2Rj0x(}A4YWO6*H}{2wiHE zPyQaQ`@8-pe^)#Z>@nor9rLFwzqlwC{nZWcBb`pu?3lzVU~BkdfAe5_e~*@>FWT-F zF0J=!J0$Y(bIqfrLea5FL02tiAm|!=*X9J>1%B-CbztRio-5CQlY%zjBZh?uiV>fb z1YXcH_}JkG!0vwR6o5x9dWC2{dIjjv5!?V?H2CKR|I*;!8vJ{M|7dWUs7R^7I0~tw zEr~2j4BAo_g%(-ememavb&e=M%O->IhN9OmXD73F?`IR$SN&wLb15?lYnooti|U%* zsMn90no&~ApmJER(;tnK1mDVMFL99EM|rdCtz0R4DsPp&l()+sN?gd8b$8%`{KH$F zW{7%G#y18nrl*0Po@)w@Qk_zeEiE5%aKrr$8m3E^Xii7>bCa$`pyXz>ew3^g2$H+%}HhqLg}{ zeSOc&58h&i6!L_E@oJql_Gr-yJbwtWO*GxO>{hQ@-3w$4OJwyUIDNs)g$@9dKHW?@ zWU+vt6<}j75?Ci*(Bd89jMxMYi0FE*r|T18V-NKBo%MaG|a4 zIQ9d@#=)H}gQl(UWZ{w0Mo+t%6Ye{$}RA{xX;Lh1vK0yx;Hp zn|U+uP3GFlsg_cTbW>EOM?~~*K8o12s4G*E3gmpBZ_`!E(IF~3zuQLVc2v2vGj(6r z%C^-fs#Nf(T->obnRa2AGqHyciLxDmj1i_;9l%h9SgbtM6|n0lxwSz zJ(E8={-@osPfEv~#6fiTF46v@bnDl9$3~Mgh1Y%|@9;27V;{A;r)G!UH<##-Y2|qI z)3h2D)x=2oy_OX*jmTokXv!!*81`G)>KZ(~mYs6tbYA4jYl7=*xC)7@m~uU(^CH(i zO>o_ZYbPo(ulMB&?f}*gk-%{a9hORhV}#p(9423ChJ`SpBHhiFY9fCPm8z*eNON- z=!=5c-xK^X^ku;ww9Nkud_%<9FYo7<;4eh{8|Y63e+T`!;2)ts6#O&va_au3&nN5u zhWxLD{}yyj`2PYQ7yLKa5$u7F34Q=RBbetW>+x&!gov|$O)${34B4~~`CNnB0jMbr z;0YWrrMQ{m*He5t#r+i1Tu5D~={WV4<7-tn%60UZThpqRL>umWgXS*i;c8Q>d6QZ- zh2~A6+M_%Zts6((L>G)|n&^UYG)=w6N_<{iju~q%>al7v)^OdV9+a6t%|vnagYAB| zzOv%eJ8x}X+I;W*&8|~*+$9&GJtMxmgq+o2V{^}V)yFN|GvfL#E>n7|i>~ib3D420 z#P1R7)p);JPQ0%zH{P$@^FHF9*RxfP_XRVrPwshLTJ!PxW2VaBgLlKAk3QUr`-@s_ ztzWK$>sLdnTnNH|D*eHLDtMPxf-v0L=x>MX0~C0&#;;^vM!6)NzXQ&iHI4t_$@mfU zMI2tjJ$yHug=Qc7Ij?}@#e_5Hx!n-8nDvr<8JhDSmxo))Iakm{jq8;X&7H2ty*$;o o01rm~ym(r2qf` diff --git a/include/functions.h b/include/functions.h index a4eb15d..b782c44 100644 --- a/include/functions.h +++ b/include/functions.h @@ -352,13 +352,6 @@ extern void sub_3FAC(void); //extern ? sub_4BB4(); //extern ? sub_4C80(); //extern ? sub_4D50(); -extern void sub_5E60(void); -//extern ? sub_5EA4(); -//extern ? sub_5EC8(); -//extern ? sub_5EEC(); -//extern ? sub_6144(); -//extern ? sub_639C(); -//extern ? sub_65DC(); extern void sub_681C(); extern void sub_6BEC(); extern void sub_6CA0(s16); diff --git a/src/pokedex.c b/src/pokedex.c index 980d1b1..7d8d431 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -15,12 +15,23 @@ void sub_4F50(void); void sub_4FC8(void); void sub_5064(void); void sub_51CC(void); -s16 sub_5EA4(void); // TODO Pretty sure it's s16, but could be u16 -void sub_5EC8(void); +static s16 sub_5EA4(void); +s16 sub_5EC8(void); void sub_70E0(s16, s32); void sub_88E4(void); void sub_51FC(void); static void sub_599C(void); +static void sub_5E60(void); +int sub_639C(void); +int sub_65DC(void); +int sub_5EEC(void); +int sub_6144(void); + +extern u16 gUnknown_0201C180; +extern u16 gUnknown_0202C5B4; +extern s8 gUnknown_0201C1BC; +extern u8 gUnknown_0202C544; +extern u8 gUnknown_0202BECC; extern const struct SpriteSet *const gUnknown_086A6148[]; extern u16 gUnknown_0202BF08; @@ -1298,3 +1309,112 @@ static void sub_599C(void) group7->available = 0; } + +static void sub_5E60(void) +{ + gUnknown_0202C5F0[0] = 0xDDDD; + gUnknown_0202C5B4 = 1; + gUnknown_0201C180 = 1; + gUnknown_0201B128 = 0; + gUnknown_0201C1BC = 0; + gUnknown_0202C544 = 0; + gUnknown_0202BECC = 0; +} + +static s16 sub_5EA4(void) +{ + s16 result; + + if (gLink.isMaster) + result = sub_639C(); + else + result = sub_65DC(); + + return result; +} + +s16 sub_5EC8(void) +{ + s16 result; + + if (gLink.isMaster) + result = sub_5EEC(); + else + result = sub_6144(); + + return result; +} + +int sub_5EEC(void) +{ + int i; + u16 var0; + + if (gUnknown_0201B128 == 0) + { + switch (gUnknown_0201C1BC) + { + case 0: + if (JOY_NEW(A_BUTTON)) + { + gUnknown_0202C5F0[0] = 0xFEFE; + } + else + { + for (i = 0; i < 8; i++) + gUnknown_0202C5F0[i] = 0; + } + return 0; + case 1: + gUnknown_0202C5F0[0] = 0xECEC; + return 0; + } + return 0; + } + else if (gUnknown_0201C180 < 8) + { + for (i = 0; i < 8; i++) + gUnknown_0202C5F0[i] = 0xDDDD; + } + else if (gUnknown_0201C180 < 16) + { + var0 = (gUnknown_0201C180 - 8) * 28; + gUnknown_0202C5F0[0] = gUnknown_0201C180; + gUnknown_0202C5F0[1] = gUnknown_0202A1C0[var0] | + (gUnknown_0202A1C0[var0 + 1] << 4) | + (gUnknown_0202A1C0[var0 + 2] << 8) | + (gUnknown_0202A1C0[var0 + 3] << 12); + gUnknown_0202C5F0[2] = gUnknown_0202A1C0[var0 + 4] | + (gUnknown_0202A1C0[var0 + 5] << 4) | + (gUnknown_0202A1C0[var0 + 6] << 8) | + (gUnknown_0202A1C0[var0 + 7] << 12); + gUnknown_0202C5F0[3] = gUnknown_0202A1C0[var0 + 8] | + (gUnknown_0202A1C0[var0 + 9] << 4) | + (gUnknown_0202A1C0[var0 + 10] << 8) | + (gUnknown_0202A1C0[var0 + 11] << 12); + gUnknown_0202C5F0[4] = gUnknown_0202A1C0[var0 + 12] | + (gUnknown_0202A1C0[var0 + 13] << 4) | + (gUnknown_0202A1C0[var0 + 14] << 8) | + (gUnknown_0202A1C0[var0 + 15] << 12); + gUnknown_0202C5F0[5] = gUnknown_0202A1C0[var0 + 16] | + (gUnknown_0202A1C0[var0 + 17] << 4) | + (gUnknown_0202A1C0[var0 + 18] << 8) | + (gUnknown_0202A1C0[var0 + 19] << 12); + gUnknown_0202C5F0[6] = gUnknown_0202A1C0[var0 + 20] | + (gUnknown_0202A1C0[var0 + 21] << 4) | + (gUnknown_0202A1C0[var0 + 22] << 8) | + (gUnknown_0202A1C0[var0 + 23] << 12); + gUnknown_0202C5F0[7] = gUnknown_0202A1C0[var0 + 24] | + (gUnknown_0202A1C0[var0 + 25] << 4) | + (gUnknown_0202A1C0[var0 + 26] << 8) | + (gUnknown_0202A1C0[var0 + 27] << 12); + } + else + { + for (i = 0; i < 8; i++) + gUnknown_0202C5F0[i] = 0; + } + + gUnknown_0201C180++; + return 0; +}