mirror of
https://github.com/pret/pmd-red.git
synced 2026-10-02 05:48:45 -05:00
decomp (terribly) some pokemon compare funcs
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user