decomp (terribly) some pokemon compare funcs

This commit is contained in:
Seth Barberee
2022-12-22 17:35:00 -08:00
parent c23a65753e
commit a0aa6c9233
2 changed files with 155 additions and 336 deletions

View File

@@ -10498,339 +10498,4 @@ _0802417E:
bx r1
thumb_func_end sub_8024108
thumb_func_start sub_8024184
sub_8024184:
push {r4,lr}
lsls r4, r1, 24
lsrs r4, 24
movs r1, 0x8
ldrsh r0, [r0, r1]
bl GetFriendArea
lsls r0, 24
lsrs r0, 24
cmp r4, r0
beq _0802419E
movs r0, 0
b _080241A0
_0802419E:
movs r0, 0x1
_080241A0:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8024184
thumb_func_start sub_80241A8
sub_80241A8:
push {r4,lr}
ldr r4, _080241C0
ldr r1, [r4]
ldr r0, [r1, 0x4]
cmp r0, 0x2
beq _080241CA
cmp r0, 0x2
bhi _080241C4
cmp r0, 0x1
beq _08024206
b _08024222
.align 2, 0
_080241C0: .4byte gUnknown_3001B60
_080241C4:
cmp r0, 0x3
beq _080241E8
b _08024222
_080241CA:
ldr r0, [r1, 0xC]
ldr r1, [r1, 0x10]
cmp r0, r1
beq _080241D6
bl sub_80242D0
_080241D6:
ldr r0, [r4]
ldr r2, [r0, 0x10]
ldr r1, [r0, 0x8]
cmp r2, r1
beq _08024222
adds r0, r2, 0
bl sub_80242D0
b _08024222
_080241E8:
ldr r0, [r1, 0xC]
ldr r1, [r1, 0x10]
cmp r0, r1
beq _080241F4
bl sub_802437C
_080241F4:
ldr r0, [r4]
ldr r2, [r0, 0x10]
ldr r1, [r0, 0x8]
cmp r2, r1
beq _08024222
adds r0, r2, 0
bl sub_802437C
b _08024222
_08024206:
ldr r0, [r1, 0xC]
ldr r1, [r1, 0x10]
cmp r0, r1
beq _08024212
bl sub_8024228
_08024212:
ldr r0, [r4]
ldr r2, [r0, 0x10]
ldr r1, [r0, 0x8]
cmp r2, r1
beq _08024222
adds r0, r2, 0
bl sub_8024228
_08024222:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80241A8
thumb_func_start sub_8024228
sub_8024228:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
ldr r3, _080242C8
lsls r2, r1, 1
adds r2, 0x18
ldr r3, [r3]
adds r3, r2
str r3, [sp]
adds r2, r0, 0
subs r1, 0x1
cmp r2, r1
bge _080242B8
str r1, [sp, 0x4]
_0802424A:
ldr r5, [sp]
adds r7, r1, 0
adds r0, r2, 0x1
mov r10, r0
cmp r7, r2
ble _080242B0
ldr r3, _080242CC
mov r9, r3
movs r0, 0x58
mov r8, r0
_0802425E:
mov r3, r9
ldr r1, [r3]
subs r6, r5, 0x2
movs r3, 0
ldrsh r0, [r6, r3]
mov r3, r8
muls r3, r0
adds r0, r3, 0
adds r1, r0
movs r3, 0x8
ldrsh r0, [r1, r3]
str r2, [sp, 0x8]
bl GetInternalNo
adds r4, r0, 0
mov r0, r9
ldr r1, [r0]
movs r3, 0
ldrsh r0, [r5, r3]
mov r3, r8
muls r3, r0
adds r0, r3, 0
adds r1, r0
movs r3, 0x8
ldrsh r0, [r1, r3]
bl GetInternalNo
lsls r4, 16
lsls r0, 16
ldr r2, [sp, 0x8]
cmp r4, r0
ble _080242A8
movs r0, 0
ldrsh r1, [r5, r0]
ldrh r0, [r6]
strh r0, [r5]
strh r1, [r6]
_080242A8:
adds r5, r6, 0
subs r7, 0x1
cmp r7, r2
bgt _0802425E
_080242B0:
mov r2, r10
ldr r1, [sp, 0x4]
cmp r2, r1
blt _0802424A
_080242B8:
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080242C8: .4byte gUnknown_3001B60
_080242CC: .4byte gRecruitedPokemonRef
thumb_func_end sub_8024228
thumb_func_start sub_80242D0
sub_80242D0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
ldr r3, _08024374
lsls r2, r1, 1
adds r2, 0x18
ldr r3, [r3]
adds r3, r2
str r3, [sp]
adds r2, r0, 0
subs r1, 0x1
cmp r2, r1
bge _08024364
str r1, [sp, 0x4]
_080242F2:
ldr r5, [sp]
adds r7, r1, 0
adds r0, r2, 0x1
mov r10, r0
cmp r7, r2
ble _0802435C
ldr r3, _08024378
mov r9, r3
movs r0, 0x58
mov r8, r0
_08024306:
mov r3, r9
ldr r1, [r3]
subs r6, r5, 0x2
movs r3, 0
ldrsh r0, [r6, r3]
mov r3, r8
muls r3, r0
adds r0, r3, 0
adds r1, r0
movs r3, 0x8
ldrsh r0, [r1, r3]
movs r1, 0
str r2, [sp, 0x8]
bl GetAlphabetParentNo
adds r4, r0, 0
mov r0, r9
ldr r1, [r0]
movs r3, 0
ldrsh r0, [r5, r3]
mov r3, r8
muls r3, r0
adds r0, r3, 0
adds r1, r0
movs r3, 0x8
ldrsh r0, [r1, r3]
movs r1, 0
bl GetAlphabetParentNo
lsls r4, 16
lsls r0, 16
ldr r2, [sp, 0x8]
cmp r4, r0
ble _08024354
movs r0, 0
ldrsh r1, [r5, r0]
ldrh r0, [r6]
strh r0, [r5]
strh r1, [r6]
_08024354:
adds r5, r6, 0
subs r7, 0x1
cmp r7, r2
bgt _08024306
_0802435C:
mov r2, r10
ldr r1, [sp, 0x4]
cmp r2, r1
blt _080242F2
_08024364:
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08024374: .4byte gUnknown_3001B60
_08024378: .4byte gRecruitedPokemonRef
thumb_func_end sub_80242D0
thumb_func_start sub_802437C
sub_802437C:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r3, _080243E4
lsls r2, r1, 1
adds r2, 0x18
ldr r3, [r3]
adds r3, r2
mov r10, r3
adds r7, r0, 0
subs r1, 0x1
cmp r7, r1
bge _080243D6
mov r9, r1
_0802439C:
mov r4, r10
adds r6, r1, 0
adds r0, r7, 0x1
mov r8, r0
cmp r6, r7
ble _080243CE
_080243A8:
subs r5, r4, 0x2
movs r1, 0
ldrsh r0, [r5, r1]
movs r2, 0
ldrsh r1, [r4, r2]
bl ComparePokemonNames
lsls r0, 24
cmp r0, 0
beq _080243C6
movs r0, 0
ldrsh r1, [r4, r0]
ldrh r0, [r5]
strh r0, [r4]
strh r1, [r5]
_080243C6:
adds r4, r5, 0
subs r6, 0x1
cmp r6, r7
bgt _080243A8
_080243CE:
mov r7, r8
mov r1, r9
cmp r7, r1
blt _0802439C
_080243D6:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080243E4: .4byte gUnknown_3001B60
thumb_func_end sub_802437C
.align 2,0

View File

@@ -27,7 +27,13 @@ extern struct unkStruct_203B2AC *gUnknown_203B2AC;
struct unkStruct_3001B60
{
u8 fill0[0x1A];
u32 unk0;
u32 unk4;
u32 unk8;
u32 unkC;
u32 unk10;
u8 fill14[0x18 - 0x14];
s16 unk18;
s16 unk1A[2];
u8 fill1C[0x370 - 0x1E];
s16 unk370;
@@ -51,6 +57,7 @@ extern void sub_802452C(void);
extern void PlayMenuSoundEffect(u32);
extern void sub_8013984(void *);
void sub_80922B4(u8 *buffer, u8 *string, s32 size);
bool8 ComparePokemonNames(s16 a1, s16 a2);
void sub_8024588(void);
void sub_80245D0(void);
@@ -58,6 +65,153 @@ void sub_8024604(void);
extern u8 gUnknown_80DC9A4[];
void CompareInternalNo(s32 param_1, s32 param_2);
void CompareAlphabetNo(s32 param_1,s32 param_2);
void CompareNames(s32 param_1,s32 param_2);
bool8 sub_8024184(struct PokemonStruct *pokemon, u8 area)
{
if(area == GetFriendArea(pokemon->speciesNum))
return TRUE;
else
return FALSE;
}
void sub_80241A8(void)
{
switch(gUnknown_3001B60->unk4)
{
case 2:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
CompareAlphabetNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
CompareAlphabetNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
case 3:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
CompareNames(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
CompareNames(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
case 1:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
CompareInternalNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
CompareInternalNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
}
}
void CompareInternalNo(s32 param_1, s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
if (GetInternalNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum) > GetInternalNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
void CompareAlphabetNo(s32 param_1,s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
if (GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum, 0) > GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum, 0)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
void CompareNames(s32 param_1,s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
r5 = r4 - 1;
if (ComparePokemonNames(*r5, *r4)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
struct PokemonStruct *sub_80243E8(void)
{
u8 buffer [40];