thanks to @DizzyEggg for matching the two funcs

This commit is contained in:
Seth Barberee
2025-07-17 19:16:40 -07:00
parent 7acae3ac35
commit 81f28e81e6
5 changed files with 38 additions and 98 deletions

View File

@@ -1,90 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_803B628
sub_803B628:
push {r4,r5,lr}
adds r4, r0, 0
ldr r2, _0803B654
movs r3, 0
_0803B630:
ldr r1, [r2]
ldr r0, [r4, 0xC]
cmp r1, r0
beq _0803B650
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r5, 0xC
ldrsh r0, [r4, r5]
cmp r1, r0
bne _0803B658
movs r0, 0
ldrsh r1, [r2, r0]
movs r5, 0xE
ldrsh r0, [r4, r5]
cmp r1, r0
bne _0803B658
_0803B650:
adds r0, r3, 0
b _0803B664
.align 2, 0
_0803B654: .4byte gUnknown_80E9F8C
_0803B658:
adds r2, 0xC
adds r3, 0x1
cmp r3, 0x2C
ble _0803B630
movs r0, 0x1
negs r0, r0
_0803B664:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_803B628
thumb_func_start sub_803B66C
sub_803B66C:
push {r4,r5,lr}
adds r4, r0, 0
ldr r2, _0803B698
movs r3, 0
_0803B674:
ldr r1, [r2]
ldr r0, [r4, 0xC]
cmp r1, r0
beq _0803B694
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r5, 0xC
ldrsh r0, [r4, r5]
cmp r1, r0
bne _0803B69C
movs r0, 0
ldrsh r1, [r2, r0]
movs r5, 0xE
ldrsh r0, [r4, r5]
cmp r1, r0
bne _0803B69C
_0803B694:
adds r0, r3, 0
b _0803B6A8
.align 2, 0
_0803B698: .4byte gUnknown_80E8168
_0803B69C:
adds r2, 0x4
adds r3, 0x1
cmp r3, 0x5
ble _0803B674
movs r0, 0x1
negs r0, r0
_0803B6A8:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_803B66C
.align 2,0

View File

@@ -2,6 +2,7 @@
#define POKEMON_MAIL_H
#include "structs/str_802C39C.h"
#include "pokemon_mail_pre.h"
// size: 0x8
typedef struct PokemonMail
@@ -21,8 +22,7 @@ typedef struct unkStruct_80E9920
// size: 0xC
typedef struct unkStruct_80E9F8C
{
/* 0x0 */ s16 speciesA;
/* 0x2 */ s16 speciesB;
/* 0x0 */ struct PokemonPair species;
/* 0x4 */ const u8 *headline;
/* 0x8 */ const u8 *text;
} unkStruct_80E9F8C;

View File

@@ -188,7 +188,6 @@ SECTIONS {
src/debug_menu4.o(.text);
src/code_803B050.o(.text);
src/code_803B344.o(.text);
asm/code_803B050.o(.text);
src/pokemon_mail.o(.text);
src/code_803C1B4.o(.text);
src/personality_test1.o(.text);

View File

@@ -201,3 +201,34 @@ static s32 sub_803B600(WonderMail *mail)
return -1;
}
s32 sub_803B628(WonderMail *param_1)
{
const unkStruct_80E9F8C *ptr;
int i;
ptr = &gUnknown_80E9F8C[0];
for (i = 0; i < ARRAY_COUNT_INT(gUnknown_80E9F8C); ptr++, i++) {
if (ptr->species.speciesA == param_1->clientSpecies && ptr->species.speciesB == param_1->targetSpecies)
return i;
if (ptr->species.speciesB == param_1->clientSpecies && ptr->species.speciesA == param_1->targetSpecies)
return i;
}
return -1;
}
s32 sub_803B66C(WonderMail *param_1)
{
const struct PokemonPair *ptr;
int i;
ptr = &gUnknown_80E8168[0];
for (i = 0; i < ARRAY_COUNT_INT(gUnknown_80E8168); ptr++, i++) {
if (ptr->speciesA == param_1->clientSpecies && ptr->speciesB == param_1->targetSpecies)
return i;
if (ptr->speciesB == param_1->clientSpecies && ptr->speciesA == param_1->targetSpecies)
return i;
}
return -1;
}

View File

@@ -176,7 +176,7 @@ bool8 sub_803C45C(WonderMail *mail)
counter = 0;
ptr = &gUnknown_80E9F8C[0];
for (id = 0; id < ARRAY_COUNT_INT(gUnknown_80E9F8C); ptr++, id++) {
if (sub_803C110(ptr->speciesA) && sub_803C110(ptr->speciesB)) {
if (sub_803C110(ptr->species.speciesA) && sub_803C110(ptr->species.speciesB)) {
stack[counter++] = id;
}
}
@@ -186,12 +186,12 @@ bool8 sub_803C45C(WonderMail *mail)
ptr = &gUnknown_80E9F8C[id];
if ((Rand32Bit() & 0x10)) {
mail->clientSpecies = ptr->speciesA;
mail->targetSpecies = ptr->speciesB;
mail->clientSpecies = ptr->species.speciesA;
mail->targetSpecies = ptr->species.speciesB;
}
else {
mail->clientSpecies = ptr->speciesB;
mail->targetSpecies = ptr->speciesA;
mail->clientSpecies = ptr->species.speciesB;
mail->targetSpecies = ptr->species.speciesA;
}
mail->unk2 = 8;