finish off pokemon_3.s thanks to @DizzyEggg

This commit is contained in:
Seth Barberee 2024-12-15 10:08:16 -08:00
parent 073a207c0e
commit cd2c46d027
6 changed files with 950 additions and 1010 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,7 @@
#include "structs/menu.h"
#include "structs/str_text.h"
#include "pokemon_3.h"
struct unkStruct_203B2AC
{
@ -11,8 +12,7 @@ struct unkStruct_203B2AC
u32 unk34[3];
u8 unk40[0x48 - 0x40];
s16 speciesNum;
u32 unk4C;
u8 unk50[0xB0 - 0x50];
struct unkStruct_808FF20 unk4C;
u32 unkB0;
u8 fillB4[0xE0 - 0xB4];
u32 unkE0;

View File

@ -15,6 +15,40 @@ typedef struct EvolveStatus
/* 0x6 */ s16 targetEvolveSpecies;
} EvolveStatus;
struct unkStruct_808FF20
{
// size: 0x64
s16 species;
u8 nameBuffer[0x14];
u8 types[2]; // 0x16
u8 abilities[2]; // 0x18
u8 fill1A[0x1C - 0x1A];
DungeonLocation dungeonLocation; // 0x1C
Item item; // 0x20
s32 HP1;
s32 HP2;
s32 level;
u32 exp;
Offense offense;
bool8 isTeamLeader;
u8 atkBoost;
u8 spAtkBoost;
u8 defBoost;
u8 spDefBoost;
u8 fill3D;
s16 IQ; // 0x3E
s16 unk40;
s16 fill42;
struct unkPokeSubStruct_C unk44[2];
u8 unk4C;
u8 fill4D[3];
IqSkillFlags IQSkills; // 0x50
u8 tactic;
u8 fill55[1];
s16 unk56;
u8 unk58[12];
};
bool8 HasRecruitedMon(s16 species);
s16 GetBaseSpecies(s16 index);
s16 GetBaseSpeciesNoUnown(s16 index);
@ -36,9 +70,7 @@ s16 ExtractSpeciesIndex(UnkDungeonGlobal_unk1CD98 *r0);
void SetSpeciesLevelToExtract(UnkDungeonGlobal_unk1CD98 *r0, s32 level, s32 species);
s32 ExtractLevel(UnkDungeonGlobal_unk1CD98 *r0);
PokemonStruct1 *sub_808F798(PokemonStruct1 *pokemon, short _species);
// pokemon_3.s
extern void CreatePokemonInfoTabScreen(u32, s16, u32 *, u32 *, u32);
extern void sub_808FF20(u32 *, PokemonStruct1 *, bool8);
void CreatePokemonInfoTabScreen(u32, s32, struct unkStruct_808FF20 *, u8 *, u32);
void sub_808FF20(struct unkStruct_808FF20 *param_1, struct PokemonStruct1 *pokemon, bool8 param_3);
#endif // GUARD_POKEMON_3_H

View File

@ -288,7 +288,6 @@ SECTIONS {
src/pokemon.o(.text);
asm/pokemon_2.o(.text);
src/pokemon_3.o(.text);
asm/pokemon_3.o(.text);
src/dungeon.o(.text);
asm/dungeon_2.o(.text);
src/dungeon_2_1.o(.text);

View File

@ -83,13 +83,13 @@ static void sub_8024588(void)
static void sub_80245D0(void)
{
CreatePokemonInfoTabScreen(sUnknown_203B2AC->unk34[sUnknown_203B2AC->input.unk1E], sUnknown_203B2AC->input.unk1E, &sUnknown_203B2AC->unk4C, &sUnknown_203B2AC->unkB0, sUnknown_203B2AC->unkE0);
CreatePokemonInfoTabScreen(sUnknown_203B2AC->unk34[sUnknown_203B2AC->input.unk1E], sUnknown_203B2AC->input.unk1E, &sUnknown_203B2AC->unk4C, (u8 *)&sUnknown_203B2AC->unkB0, sUnknown_203B2AC->unkE0);
}
static void sub_8024604(void)
{
PokemonStruct1 *pokeStruct;
u32 *iVar3;
struct unkStruct_808FF20 *iVar3;
sUnknown_203B2AC->unk34[0] = 2;
sUnknown_203B2AC->unk34[1] = 3;

View File

@ -2,6 +2,7 @@
#include "pokemon.h"
#include "pokemon_3.h"
#include "random.h"
#include "constants/colors.h"
#include "constants/dungeon.h"
#include "constants/evolve_type.h"
#include "constants/evolution_status.h"
@ -41,6 +42,48 @@ extern s16 gUnknown_810AC62; // 0xC
extern s16 gUnknown_810AC68; // 0x8
extern s16 gUnknown_810AC64; // 0x8
extern s16 gUnknown_810AC66; // 0x8
extern u8 *gUnknown_810DD58[];
extern u8 *gEvolutionStrings[];
extern u8 *gExpPts810DD9C_Ptr[];
extern u8 *gIQSkill810DD68_Ptr[];
extern u8 *gLevel810DD6C_Ptr[];
extern u8 *gStatusNames[];
extern u8 gUnknown_8107754[];
extern u8 gUnknown_810775C[];
extern u8 gUnknown_8107768[];
extern u8 gUnknown_8107770[];
extern u8 gUnknown_8107784[];
extern u8 gUnknown_8107788[];
extern u8 gUnknown_810778C[];
extern u8 gUnknown_8107790[];
extern u8 gUnknown_8107798[];
extern u8 *gUnknown_810DDB8[];
extern u8 *gUnknown_810DDD0[];
extern u8 *gUnknown_810DDE4[];
extern u8 *gUnknown_810DDFC[];
extern u8 *gUnknown_810DE0C[];
extern u8 *gUnknown_810DE20[];
extern u8 *gUnknown_810DE24[];
extern u8 *gUnknown_810DE28[];
extern u8 *gUnknown_810DE38[];
extern u8 *gUnknown_810DE4C[];
extern u8 *gUnknown_810DE50[];
extern u8 *gUnknown_810DE54[];
extern u8 *gUnknown_810DE58[];
extern u8 *gUnknown_810DE6C[];
extern u8 *gUnknown_810DE80[];
extern u8 *gUnknown_810DE98[];
extern u8 *gUnknown_810DEB4[];
extern u8 *gUnknown_810DEC8[];
extern u8 *gUnknown_810DEDC[];
extern u8 *gUnknown_810DEF4[];
extern u8 *gUnknown_810DF78[];
extern u8 *gUnknown_810DF84[];
extern u8 *gUnknown_810DF98[];
extern u8 *gUnknown_810DFB4[];
extern u8 *gUnknown_810DFC8[];
extern u8 *gUnknown_810E02C[];
extern u8 *gUnknown_8115718[];
// 2, 4, 6, 7, 8, 9, 0xA, 0xD, 0xF, 0x11
extern s32 gUnknown_810AC90[10];
@ -1160,3 +1203,870 @@ UNUSED void sub_808F83C(PokemonStruct1 *pokemon, s16 species, u8 *r2)
{
*r2 = 0;
}
// https://decomp.me/scratch/qONOW - 91.59% matched (Seth)
NAKED
void CreatePokemonInfoTabScreen(u32 param_1, s32 param_2, struct unkStruct_808FF20 *param_3, u8 *param_4, u32 param_5)
{
asm_unified(
" push {r4-r7,lr}\n"
" mov r7, r10\n"
" mov r6, r9\n"
" mov r5, r8\n"
" push {r5-r7}\n"
" sub sp, 0x30\n"
" adds r5, r0, 0\n"
" adds r4, r1, 0\n"
" mov r10, r2\n"
" str r3, [sp, 0x2C]\n"
" ldr r0, [sp, 0x50]\n"
" bl sub_80073B8\n"
" ldr r0, _0808F880\n"
" mov r1, r10\n"
" adds r1, 0x2\n"
" movs r2, 0x14\n"
" bl strncpy\n"
" movs r0, 0x20\n"
" mov r9, r0\n"
" cmp r5, 0x5\n"
" bls _0808F874\n"
" b _0808FED6\n"
"_0808F874:\n"
" lsls r0, r5, 2\n"
" ldr r1, _0808F884\n"
" adds r0, r1\n"
" ldr r0, [r0]\n"
" mov pc, r0\n"
" .align 2, 0\n"
"_0808F880: .4byte gFormatBuffer_Monsters\n"
"_0808F884: .4byte _0808F888\n"
" .align 2, 0\n"
"_0808F888:\n"
" .4byte _0808FED6\n"
" .4byte _0808FBF4\n"
" .4byte _0808F8A0\n"
" .4byte _0808FB44\n"
" .4byte _0808FCB0\n"
" .4byte _0808FDB0\n"
"_0808F8A0:\n"
" lsls r0, r4, 3\n"
" adds r0, 0x10\n"
" ldr r2, _0808F998\n"
" movs r5, 0\n"
" str r5, [sp]\n"
" movs r1, 0\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" ldr r4, _0808F99C\n"
" mov r1, r10\n"
" ldr r0, [r1, 0x2C]\n"
" str r0, [r4]\n"
" ldr r0, [r1, 0x30]\n"
" str r0, [r4, 0x4]\n"
" ldr r0, _0808F9A0\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r2, 0xA\n"
" add r9, r2\n"
" ldr r0, _0808F9A4\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r3, 0xA\n"
" add r9, r3\n"
" mov r0, r10\n"
" ldr r2, [r0, 0x2C]\n"
" cmp r2, 0x63\n"
" bgt _0808F914\n"
" movs r3, 0\n"
" ldrsh r1, [r0, r3]\n"
" adds r2, 0x1\n"
" add r0, sp, 0x8\n"
" bl GetPokemonLevelData\n"
" ldr r0, [sp, 0x8]\n"
" mov r2, r10\n"
" ldr r1, [r2, 0x30]\n"
" subs r0, r1\n"
" str r0, [r4]\n"
" ldr r0, _0808F9A8\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
"_0808F914:\n"
" movs r3, 0xC\n"
" add r9, r3\n"
" mov r1, r10\n"
" ldr r0, [r1, 0x24]\n"
" str r0, [r4]\n"
" ldr r0, [r1, 0x28]\n"
" str r0, [r4, 0x4]\n"
" ldr r0, _0808F9AC\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r2, 0xA\n"
" add r9, r2\n"
" ldr r0, _0808F9B0\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" ldr r0, _0808F9B4\n"
" ldr r2, [r0]\n"
" mov r0, r10\n"
" adds r0, 0x34\n"
" ldrb r3, [r0]\n"
" str r3, [r4]\n"
" mov r1, r10\n"
" adds r1, 0x39\n"
" ldrb r0, [r1]\n"
" cmp r0, 0\n"
" beq _0808F964\n"
" adds r0, r3, r0\n"
" str r0, [r4]\n"
" ldr r0, _0808F9B8\n"
" ldr r2, [r0]\n"
"_0808F964:\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" mov r1, r10\n"
" adds r1, 0x3B\n"
" ldrb r3, [r1]\n"
" cmp r3, 0\n"
" beq _0808F9C0\n"
" mov r0, r10\n"
" adds r0, 0x36\n"
" ldrb r0, [r0]\n"
" adds r1, r3, 0\n"
" adds r0, r1\n"
" str r0, [r4]\n"
" ldr r0, _0808F9BC\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" b _0808F9D8\n"
" .align 2, 0\n"
"_0808F998: .4byte gUnknown_8107754\n"
"_0808F99C: .4byte gFormatArgs\n"
"_0808F9A0: .4byte gLevel810DD6C_Ptr\n"
"_0808F9A4: .4byte gExpPts810DD9C_Ptr\n"
"_0808F9A8: .4byte gUnknown_810DDB8\n"
"_0808F9AC: .4byte gUnknown_810DDD0\n"
"_0808F9B0: .4byte gUnknown_810DDE4\n"
"_0808F9B4: .4byte gUnknown_810DE0C\n"
"_0808F9B8: .4byte gUnknown_810DE20\n"
"_0808F9BC: .4byte gUnknown_810DE4C\n"
"_0808F9C0:\n"
" mov r0, r10\n"
" adds r0, 0x36\n"
" ldrb r0, [r0]\n"
" str r0, [r4]\n"
" ldr r0, _0808FA44\n"
" ldr r2, [r0]\n"
" str r3, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
"_0808F9D8:\n"
" movs r3, 0xA\n"
" add r9, r3\n"
" ldr r0, _0808FA48\n"
" ldr r2, [r0]\n"
" movs r5, 0\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" ldr r0, _0808FA4C\n"
" ldr r2, [r0]\n"
" ldr r4, _0808FA50\n"
" mov r0, r10\n"
" adds r0, 0x35\n"
" ldrb r3, [r0]\n"
" str r3, [r4]\n"
" mov r1, r10\n"
" adds r1, 0x3A\n"
" ldrb r0, [r1]\n"
" cmp r0, 0\n"
" beq _0808FA0E\n"
" adds r0, r3, r0\n"
" str r0, [r4]\n"
" ldr r0, _0808FA54\n"
" ldr r2, [r0]\n"
"_0808FA0E:\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" mov r1, r10\n"
" adds r1, 0x3C\n"
" ldrb r3, [r1]\n"
" cmp r3, 0\n"
" beq _0808FA5C\n"
" mov r0, r10\n"
" adds r0, 0x37\n"
" ldrb r0, [r0]\n"
" adds r1, r3, 0\n"
" adds r0, r1\n"
" str r0, [r4]\n"
" ldr r0, _0808FA58\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" b _0808FA74\n"
" .align 2, 0\n"
"_0808FA44: .4byte gUnknown_810DE38\n"
"_0808FA48: .4byte gUnknown_810DDFC\n"
"_0808FA4C: .4byte gUnknown_810DE24\n"
"_0808FA50: .4byte gFormatArgs\n"
"_0808FA54: .4byte gUnknown_810DE28\n"
"_0808FA58: .4byte gUnknown_810DE54\n"
"_0808FA5C:\n"
" mov r0, r10\n"
" adds r0, 0x37\n"
" ldrb r0, [r0]\n"
" str r0, [r4]\n"
" ldr r0, _0808FA94\n"
" ldr r2, [r0]\n"
" str r3, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
"_0808FA74:\n"
" movs r0, 0xA\n"
" add r9, r0\n"
" mov r2, r10\n"
" adds r2, 0x20\n"
" ldrb r1, [r2]\n"
" movs r0, 0x1\n"
" ands r0, r1\n"
" cmp r0, 0\n"
" beq _0808FA9C\n"
" ldr r0, _0808FA98\n"
" adds r1, r2, 0\n"
" movs r2, 0\n"
" bl sub_8090E14\n"
" b _0808FAA6\n"
" .align 2, 0\n"
"_0808FA94: .4byte gUnknown_810DE50\n"
"_0808FA98: .4byte gFormatBuffer_Items\n"
"_0808FA9C:\n"
" ldr r0, _0808FB24\n"
" ldr r1, _0808FB28\n"
" ldr r1, [r1]\n"
" bl strcpy\n"
"_0808FAA6:\n"
" ldr r0, _0808FB2C\n"
" ldr r2, [r0]\n"
" movs r4, 0\n"
" str r4, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r1, 0xC\n"
" add r9, r1\n"
" ldr r1, _0808FB30\n"
" mov r2, r10\n"
" movs r3, 0x3E\n"
" ldrsh r0, [r2, r3]\n"
" str r0, [r1]\n"
" movs r1, 0x3E\n"
" ldrsh r0, [r2, r1]\n"
" movs r1, 0xA\n"
" bl __divsi3\n"
" lsls r0, 16\n"
" asrs r0, 16\n"
" cmp r0, 0\n"
" bge _0808FADA\n"
" movs r0, 0\n"
"_0808FADA:\n"
" cmp r0, 0x62\n"
" ble _0808FAE0\n"
" movs r0, 0x63\n"
"_0808FAE0:\n"
" ldr r1, _0808FB34\n"
" lsls r0, 2\n"
" adds r0, r1\n"
" ldr r5, _0808FB38\n"
" ldr r1, [r0]\n"
" adds r0, r5, 0\n"
" bl strcpy\n"
" ldr r0, _0808FB3C\n"
" ldr r2, [r0]\n"
" str r4, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r2, 0xA\n"
" add r9, r2\n"
" mov r0, r10\n"
" adds r0, 0x38\n"
" ldrb r4, [r0]\n"
" cmp r4, 0\n"
" beq _0808FB10\n"
" b _0808FED6\n"
"_0808FB10:\n"
" adds r0, 0x1C\n"
" ldrb r1, [r0]\n"
" adds r0, r5, 0\n"
" bl CopyTacticsNameToBuffer\n"
" ldr r0, _0808FB40\n"
" ldr r2, [r0]\n"
" str r4, [sp]\n"
" b _0808FECC\n"
" .align 2, 0\n"
"_0808FB24: .4byte gFormatBuffer_Items\n"
"_0808FB28: .4byte gUnknown_810DE58\n"
"_0808FB2C: .4byte gUnknown_810DE6C\n"
"_0808FB30: .4byte gFormatArgs\n"
"_0808FB34: .4byte gUnknown_8115718\n"
"_0808FB38: .4byte gFormatBuffer_Monsters\n"
"_0808FB3C: .4byte gUnknown_810DE80\n"
"_0808FB40: .4byte gUnknown_810DE98\n"
"_0808FB44:\n"
" lsls r0, r4, 3\n"
" adds r0, 0x10\n"
" ldr r2, _0808FBE8\n"
" movs r4, 0\n"
" str r4, [sp]\n"
" movs r1, 0\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" ldr r2, _0808FBEC\n"
" str r4, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" mov r3, r10\n"
" ldrb r0, [r3, 0x16]\n"
" bl GetFormattedTypeString\n"
" adds r2, r0, 0\n"
" str r4, [sp]\n"
" movs r0, 0x38\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" mov r1, r10\n"
" ldrb r0, [r1, 0x17]\n"
" cmp r0, 0\n"
" beq _0808FB94\n"
" bl GetFormattedTypeString\n"
" adds r2, r0, 0\n"
" str r4, [sp]\n"
" movs r0, 0x60\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
"_0808FB94:\n"
" movs r2, 0xC\n"
" add r9, r2\n"
" ldr r2, _0808FBF0\n"
" str r4, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r3, 0xC\n"
" add r9, r3\n"
" mov r1, r10\n"
" ldrb r0, [r1, 0x18]\n"
" bl GetAbilityDescription\n"
" adds r2, r0, 0\n"
" str r4, [sp]\n"
" movs r5, 0xB\n"
" str r5, [sp, 0x4]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow2\n"
" movs r2, 0x21\n"
" add r9, r2\n"
" mov r3, r10\n"
" ldrb r0, [r3, 0x19]\n"
" cmp r0, 0\n"
" bne _0808FBD2\n"
" b _0808FED6\n"
"_0808FBD2:\n"
" bl GetAbilityDescription\n"
" adds r2, r0, 0\n"
" str r4, [sp]\n"
" str r5, [sp, 0x4]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow2\n"
" b _0808FED6\n"
" .align 2, 0\n"
"_0808FBE8: .4byte gUnknown_810775C\n"
"_0808FBEC: .4byte gUnknown_8107768\n"
"_0808FBF0: .4byte gUnknown_8107770\n"
"_0808FBF4:\n"
" lsls r0, r4, 3\n"
" adds r0, 0x10\n"
" ldr r1, _0808FC34\n"
" ldr r2, [r1]\n"
" movs r1, 0\n"
" str r1, [sp]\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" mov r0, r10\n"
" adds r0, 0x56\n"
" movs r1, 0\n"
" ldrsh r0, [r0, r1]\n"
" subs r5, r0, 0x1\n"
" movs r2, 0xC\n"
" negs r2, r2\n"
" add r9, r2\n"
" movs r7, 0\n"
" ldr r6, [sp, 0x2C]\n"
" adds r6, 0xC\n"
" adds r1, r6, 0\n"
" movs r2, 0\n"
" ldr r0, [sp, 0x2C]\n"
" adds r0, 0x2C\n"
"_0808FC24:\n"
" str r2, [r0]\n"
" subs r0, 0x4\n"
" cmp r0, r1\n"
" bge _0808FC24\n"
" movs r3, 0\n"
" mov r8, r3\n"
" b _0808FC88\n"
" .align 2, 0\n"
"_0808FC34: .4byte gUnknown_810DD58\n"
"_0808FC38:\n"
" mov r0, r10\n"
" adds r0, 0x58\n"
" adds r4, r0, r5\n"
" ldrb r0, [r4]\n"
" cmp r0, 0\n"
" beq _0808FC78\n"
" movs r7, 0x1\n"
" ldr r0, _0808FCA0\n"
" ldrb r1, [r4]\n"
" lsls r1, 2\n"
" adds r1, r0\n"
" ldr r0, _0808FCA4\n"
" ldr r1, [r1]\n"
" movs r2, 0x50\n"
" bl strncpy\n"
" ldr r2, _0808FCA8\n"
" movs r0, 0\n"
" str r0, [sp]\n"
" movs r0, 0xC\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" mov r0, r8\n"
" cmp r0, 0\n"
" ble _0808FC78\n"
" subs r0, 0x1\n"
" lsls r0, 2\n"
" adds r0, r6, r0\n"
" ldrb r1, [r4]\n"
" str r1, [r0]\n"
"_0808FC78:\n"
" movs r1, 0x1\n"
" add r8, r1\n"
" adds r5, 0x1\n"
" movs r2, 0xC\n"
" add r9, r2\n"
" mov r3, r8\n"
" cmp r3, 0x9\n"
" bgt _0808FC90\n"
"_0808FC88:\n"
" cmp r5, 0\n"
" blt _0808FC78\n"
" cmp r5, 0xB\n"
" ble _0808FC38\n"
"_0808FC90:\n"
" cmp r7, 0\n"
" beq _0808FC96\n"
" b _0808FED6\n"
"_0808FC96:\n"
" ldr r0, _0808FCAC\n"
" ldr r2, [r0]\n"
" str r7, [sp]\n"
" b _0808FD98\n"
" .align 2, 0\n"
"_0808FCA0: .4byte gStatusNames\n"
"_0808FCA4: .4byte gFormatBuffer_Items + 0x50\n"
"_0808FCA8: .4byte gUnknown_8107784\n"
"_0808FCAC: .4byte gUnknown_810DF78\n"
"_0808FCB0:\n"
" lsls r0, r4, 3\n"
" adds r0, 0x10\n"
" ldr r1, _0808FCF8\n"
" ldr r2, [r1]\n"
" movs r1, 0\n"
" str r1, [sp]\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" add r4, sp, 0x14\n"
" mov r0, r10\n"
" movs r2, 0x3E\n"
" ldrsh r1, [r0, r2]\n"
" adds r0, r4, 0\n"
" bl GetNumAvailableIQSkills\n"
" mov r0, r10\n"
" adds r0, 0x40\n"
" movs r3, 0\n"
" ldrsh r0, [r0, r3]\n"
" subs r7, r0, 0x1\n"
" mov r1, r9\n"
" subs r1, 0xC\n"
" movs r2, 0\n"
" ldr r0, [sp, 0x2C]\n"
" adds r0, 0x8\n"
"_0808FCE4:\n"
" strb r2, [r0]\n"
" subs r0, 0x1\n"
" ldr r3, [sp, 0x2C]\n"
" cmp r0, r3\n"
" bge _0808FCE4\n"
" mov r9, r1\n"
" movs r4, 0\n"
" mov r8, r4\n"
" b _0808FD84\n"
" .align 2, 0\n"
"_0808FCF8: .4byte gIQSkill810DD68_Ptr\n"
"_0808FCFC:\n"
" mov r5, sp\n"
" adds r5, r7\n"
" adds r5, 0x14\n"
" ldrb r0, [r5]\n"
" cmp r0, 0\n"
" beq _0808FD74\n"
" movs r4, 0x1\n"
" bl GetIQSkillName\n"
" adds r1, r0, 0\n"
" ldr r6, _0808FD3C\n"
" adds r0, r6, 0\n"
" movs r2, 0x50\n"
" bl strncpy\n"
" mov r0, r10\n"
" adds r0, 0x50\n"
" adds r1, r4, 0\n"
" ldrb r5, [r5]\n"
" lsls r1, r5\n"
" bl IsIQSkillSet\n"
" lsls r0, 24\n"
" cmp r0, 0\n"
" beq _0808FD44\n"
" adds r0, r6, 0\n"
" subs r0, 0x50\n"
" ldr r1, _0808FD40\n"
" bl strcpy\n"
" b _0808FD4E\n"
" .align 2, 0\n"
"_0808FD3C: .4byte gFormatBuffer_Items + 0x50\n"
"_0808FD40: .4byte gUnknown_8107788\n"
"_0808FD44:\n"
" adds r0, r6, 0\n"
" subs r0, 0x50\n"
" ldr r1, _0808FDA4\n"
" bl strcpy\n"
"_0808FD4E:\n"
" mov r0, r8\n"
" cmp r0, 0\n"
" ble _0808FD64\n"
" subs r0, 0x1\n"
" ldr r1, [sp, 0x2C]\n"
" adds r0, r1, r0\n"
" mov r1, sp\n"
" adds r1, r7\n"
" adds r1, 0x14\n"
" ldrb r1, [r1]\n"
" strb r1, [r0]\n"
"_0808FD64:\n"
" ldr r2, _0808FDA8\n"
" movs r0, 0\n"
" str r0, [sp]\n"
" movs r0, 0xC\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
"_0808FD74:\n"
" movs r2, 0x1\n"
" add r8, r2\n"
" adds r7, 0x1\n"
" movs r3, 0xC\n"
" add r9, r3\n"
" mov r0, r8\n"
" cmp r0, 0x9\n"
" bgt _0808FD8C\n"
"_0808FD84:\n"
" cmp r7, 0\n"
" blt _0808FD74\n"
" cmp r7, 0x17\n"
" ble _0808FCFC\n"
"_0808FD8C:\n"
" cmp r4, 0\n"
" beq _0808FD92\n"
" b _0808FED6\n"
"_0808FD92:\n"
" ldr r0, _0808FDAC\n"
" ldr r2, [r0]\n"
" str r4, [sp]\n"
"_0808FD98:\n"
" movs r0, 0xC\n"
" movs r1, 0x20\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" b _0808FED6\n"
" .align 2, 0\n"
"_0808FDA4: .4byte gUnknown_810778C\n"
"_0808FDA8: .4byte gUnknown_8107790\n"
"_0808FDAC: .4byte gUnknown_810DF84\n"
"_0808FDB0:\n"
" lsls r0, r4, 3\n"
" adds r0, 0x10\n"
" ldr r2, _0808FEEC\n"
" movs r5, 0\n"
" str r5, [sp]\n"
" movs r1, 0\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" ldr r6, _0808FEF0\n"
" mov r2, r10\n"
" movs r3, 0\n"
" ldrsh r1, [r2, r3]\n"
" adds r0, r6, 0\n"
" bl CopyMonsterNameToBuffer\n"
" ldr r1, _0808FEF4\n"
" mov r2, r10\n"
" movs r3, 0\n"
" ldrsh r0, [r2, r3]\n"
" str r0, [r1]\n"
" ldr r0, _0808FEF8\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r0, 0xA\n"
" add r9, r0\n"
" mov r1, r10\n"
" movs r2, 0\n"
" ldrsh r0, [r1, r2]\n"
" bl GetFriendArea\n"
" lsls r0, 24\n"
" lsrs r0, 24\n"
" bl GetFriendAreaName\n"
" adds r1, r0, 0\n"
" ldr r4, _0808FEFC\n"
" adds r0, r4, 0\n"
" movs r2, 0x50\n"
" bl strncpy\n"
" ldr r0, _0808FF00\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r3, 0xA\n"
" add r9, r3\n"
" ldr r0, _0808FF04\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r0, 0xD\n"
" add r9, r0\n"
" ldr r0, _0808FF08\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r1, 0xA\n"
" add r9, r1\n"
" mov r1, r10\n"
" adds r1, 0x1C\n"
" adds r0, r4, 0\n"
" bl PrintYellowDungeonNametoBuffer\n"
" ldr r0, _0808FF0C\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r2, 0xD\n"
" add r9, r2\n"
" mov r3, r10\n"
" movs r1, 0\n"
" ldrsh r0, [r3, r1]\n"
" bl GetCategoryString\n"
" adds r1, r0, 0\n"
" adds r0, r6, 0\n"
" movs r2, 0x14\n"
" bl strncpy\n"
" ldr r0, _0808FF10\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r2, 0xD\n"
" add r9, r2\n"
" ldr r4, _0808FF14\n"
" mov r3, r10\n"
" movs r1, 0\n"
" ldrsh r0, [r3, r1]\n"
" bl GetBodySize\n"
" lsls r0, 24\n"
" lsrs r0, 22\n"
" adds r0, r4\n"
" ldr r1, [r0]\n"
" adds r0, r6, 0\n"
" bl strcpy\n"
" ldr r0, _0808FF18\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
" movs r2, 0xD\n"
" add r9, r2\n"
" ldr r1, _0808FF1C\n"
" mov r0, r10\n"
" adds r0, 0x4C\n"
" ldrb r0, [r0]\n"
" lsls r0, 2\n"
" adds r0, r1\n"
" ldr r2, [r0]\n"
" str r5, [sp]\n"
"_0808FECC:\n"
" movs r0, 0x4\n"
" mov r1, r9\n"
" ldr r3, [sp, 0x50]\n"
" bl PrintFormattedStringOnWindow\n"
"_0808FED6:\n"
" ldr r0, [sp, 0x50]\n"
" bl sub_80073E0\n"
" add sp, 0x30\n"
" pop {r3-r5}\n"
" mov r8, r3\n"
" mov r9, r4\n"
" mov r10, r5\n"
" pop {r4-r7}\n"
" pop {r0}\n"
" bx r0\n"
" .align 2, 0\n"
"_0808FEEC: .4byte gUnknown_8107798\n"
"_0808FEF0: .4byte gFormatBuffer_Monsters\n"
"_0808FEF4: .4byte gFormatArgs\n"
"_0808FEF8: .4byte gUnknown_810DEB4\n"
"_0808FEFC: .4byte gFormatBuffer_Items\n"
"_0808FF00: .4byte gUnknown_810DEC8\n"
"_0808FF04: .4byte gUnknown_810DEDC\n"
"_0808FF08: .4byte gUnknown_810DFB4\n"
"_0808FF0C: .4byte gUnknown_810DFC8\n"
"_0808FF10: .4byte gUnknown_810DEF4\n"
"_0808FF14: .4byte gUnknown_810E02C\n"
"_0808FF18: .4byte gUnknown_810DF98\n"
"_0808FF1C: .4byte gEvolutionStrings");
}
void sub_808FF20(struct unkStruct_808FF20 *param_1, struct PokemonStruct1 *pokemon, bool8 param_3)
{
s32 index;
PrintColoredPokeNameToBuffer(param_1->nameBuffer, pokemon, COLOR_WHITE);
param_1->species = pokemon->speciesNum;
param_1->HP1 = pokemon->pokeHP;
param_1->HP2 = pokemon->pokeHP;
param_1->level = pokemon->level;
param_1->exp = pokemon->currExp;
for(index = 0; index < 2; index++)
{
param_1->offense.att[index] = pokemon->offense.att[index];
param_1->offense.def[index] = pokemon->offense.def[index];
param_1->types[index] = GetPokemonType(pokemon->speciesNum,index);
param_1->abilities[index] = GetPokemonAbility(pokemon->speciesNum,index);
}
param_1->isTeamLeader = pokemon->isTeamLeader;
param_1->atkBoost = 0;
param_1->spAtkBoost = 0;
param_1->defBoost = 0;
param_1->spDefBoost = 0;
if (pokemon->heldItem.id != 0) {
if (pokemon->heldItem.id == ITEM_POWER_BAND) {
param_1->atkBoost += gUnknown_810AC60;
}
if (pokemon->heldItem.id == ITEM_SPECIAL_BAND) {
param_1->spAtkBoost+= gUnknown_810AC62;
}
if (pokemon->heldItem.id == ITEM_MUNCH_BELT) {
param_1->atkBoost += gUnknown_810AC68;
}
if (pokemon->heldItem.id == ITEM_MUNCH_BELT) {
param_1->spAtkBoost+= gUnknown_810AC68;
}
if (pokemon->heldItem.id == ITEM_DEF_SCARF) {
param_1->defBoost += gUnknown_810AC64;
}
if (pokemon->heldItem.id == ITEM_ZINC_BAND) {
param_1->spDefBoost += gUnknown_810AC66;
}
}
param_1->tactic = pokemon->tacticIndex;
HeldItemToSlot(&param_1->item,&pokemon->heldItem);
param_1->IQ = pokemon->IQ;
param_1->dungeonLocation = pokemon->dungeonLocation;
param_1->unk44[0] = pokemon->unkC[0];
param_1->unk44[1] = pokemon->unkC[1];
param_1->IQSkills = pokemon->IQSkills;
if (param_3) {
param_1->unk4C = sub_808F700(pokemon);
}
else {
param_1->unk4C = 3;
}
for(index = 0; index < 0xC; index++)
{
param_1->unk58[index] = 0;
}
}