mirror of
https://github.com/pret/pmd-red.git
synced 2026-07-02 16:41:40 -05:00
208 lines
4.7 KiB
C
208 lines
4.7 KiB
C
#include "global.h"
|
|
#include "code_80118A4.h"
|
|
#include "code_801BEEC.h"
|
|
#include "code_801C244.h"
|
|
#include "code_801C620.h"
|
|
#include "common_strings.h"
|
|
#include "input.h"
|
|
#include "memory.h"
|
|
#include "menu_input.h"
|
|
#include "pokemon_3.h"
|
|
#include "text1.h"
|
|
#include "text2.h"
|
|
|
|
static EWRAM_DATA_2 struct unkStruct_203B238 *sUnknown_203B238 = {0};
|
|
|
|
#include "data/code_801BEEC.h"
|
|
|
|
static void sub_801BFB4(s32 newState);
|
|
static void sub_801BFCC(void);
|
|
static void sub_801C03C(void);
|
|
static void sub_801C0C8(void);
|
|
static void sub_801C118(void);
|
|
static void sub_801C1A0(void);
|
|
static void sub_801C228(void);
|
|
|
|
bool8 sub_801BEEC(s16 species)
|
|
{
|
|
s32 species_s32 = species;
|
|
|
|
if (HasNoAvailIQSkills(species_s32))
|
|
return FALSE;
|
|
|
|
sUnknown_203B238 = MemoryAlloc(sizeof(struct unkStruct_203B238), 8);
|
|
sUnknown_203B238->menuAction = 0;
|
|
sUnknown_203B238->species = species_s32;
|
|
sUnknown_203B238->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
|
|
sUnknown_203B238->numIQSkills = GetNumAvailableIQSkills(sUnknown_203B238->iqSkills, sUnknown_203B238->pokeStruct->IQ);
|
|
sub_801BFB4(0);
|
|
return TRUE;
|
|
}
|
|
|
|
u32 sub_801BF48(void)
|
|
{
|
|
switch (sUnknown_203B238->state) {
|
|
case 4:
|
|
return 3;
|
|
case 0:
|
|
case 1:
|
|
sub_801C118();
|
|
break;
|
|
case 2:
|
|
sub_801C1A0();
|
|
break;
|
|
case 3:
|
|
sub_801C228();
|
|
break;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void sub_801BF98(void)
|
|
{
|
|
if (sUnknown_203B238 != NULL) {
|
|
MemoryFree(sUnknown_203B238);
|
|
sUnknown_203B238 = NULL;
|
|
}
|
|
}
|
|
|
|
static void sub_801BFB4(s32 newState)
|
|
{
|
|
sUnknown_203B238->state = newState;
|
|
sub_801BFCC();
|
|
sub_801C03C();
|
|
}
|
|
|
|
static void sub_801BFCC(void)
|
|
{
|
|
s32 i;
|
|
|
|
sub_8006518(sUnknown_203B238->unkC4);
|
|
|
|
if (sUnknown_203B238->state == 2)
|
|
sUnknown_203B238->unkC4[2] = sUnknown_80DBDB0;
|
|
else {
|
|
for (i = 0; i < 4; i++)
|
|
sUnknown_203B238->unkC4[i] = sUnknown_80DBD98;
|
|
}
|
|
|
|
ResetUnusedInputStruct();
|
|
sub_800641C(sUnknown_203B238->unkC4, TRUE, TRUE);
|
|
}
|
|
|
|
static void sub_801C03C(void)
|
|
{
|
|
switch (sUnknown_203B238->state) {
|
|
case 0:
|
|
sub_801C244(sUnknown_203B238->species, 0, 8);
|
|
break;
|
|
case 1:
|
|
sub_801C3B0(TRUE);
|
|
break;
|
|
case 2:
|
|
sub_801C4C8();
|
|
sub_801C0C8();
|
|
sub_8012D60(&sUnknown_203B238->unk74, sUnknown_203B238->unk34, 0, 0, sUnknown_203B238->menuAction, 2);
|
|
break;
|
|
case 3:
|
|
sub_801C620(sUnknown_203B238->iqSkillIndex);
|
|
break;
|
|
case 4:
|
|
break;
|
|
}
|
|
}
|
|
|
|
static void sub_801C0C8(void)
|
|
{
|
|
struct unkStruct_203B238 *puVar1;
|
|
s32 i;
|
|
u8 *nullText;
|
|
u32 menuAction;
|
|
s32 max;
|
|
|
|
puVar1 = sUnknown_203B238;
|
|
nullText = NULL;
|
|
|
|
sUnknown_203B238->unk34[0].text = sSwitch;
|
|
puVar1->unk34[0].menuAction = 2;
|
|
|
|
menuAction = 1;
|
|
puVar1->unk34[1].text = gCommonInfo[0];
|
|
puVar1->unk34[1].menuAction = 3;
|
|
|
|
max = 2;
|
|
puVar1->unk34[2].text = nullText;
|
|
puVar1->unk34[2].menuAction = menuAction;
|
|
|
|
for (i = 0; i < max; i++) {
|
|
if (sUnknown_203B238->unk34[i].menuAction == sUnknown_203B238->menuAction)
|
|
return;
|
|
}
|
|
|
|
sUnknown_203B238->menuAction = 2;
|
|
}
|
|
|
|
static void sub_801C118(void)
|
|
{
|
|
switch (sub_801C308(TRUE)) {
|
|
case 3:
|
|
sUnknown_203B238->unk24 = sub_801C390();
|
|
sUnknown_203B238->iqSkillIndex = sUnknown_203B238->iqSkills[sUnknown_203B238->unk24];
|
|
sub_801BFB4(2);
|
|
break;
|
|
case 4:
|
|
sUnknown_203B238->unk24 = sub_801C390();
|
|
sUnknown_203B238->iqSkillIndex = sUnknown_203B238->iqSkills[sUnknown_203B238->unk24];
|
|
sub_801BFB4(3);
|
|
break;
|
|
case 2:
|
|
sub_801C3F8();
|
|
sub_801BFB4(4);
|
|
break;
|
|
case 0:
|
|
case 1:
|
|
break;
|
|
}
|
|
}
|
|
|
|
static void sub_801C1A0(void)
|
|
{
|
|
s32 menuAction;
|
|
|
|
menuAction = 0;
|
|
sub_801C308(FALSE);
|
|
|
|
if (!sub_8012FD8(&sUnknown_203B238->unk74)) {
|
|
sub_8013114(&sUnknown_203B238->unk74, &menuAction);
|
|
|
|
if (menuAction != 1)
|
|
sUnknown_203B238->menuAction = menuAction;
|
|
}
|
|
|
|
switch (menuAction) {
|
|
case 2:
|
|
PlaySound(307);
|
|
ToggleIQSkill((u8 *)&sUnknown_203B238->pokeStruct->IQSkills, sUnknown_203B238->iqSkillIndex);
|
|
sub_801BFB4(1);
|
|
break;
|
|
case 3:
|
|
sub_801BFB4(3);
|
|
break;
|
|
case 1:
|
|
sub_801BFB4(1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
static void sub_801C228(void)
|
|
{
|
|
switch (sub_801C674()) {
|
|
case 2:
|
|
case 3:
|
|
sub_801C6B4();
|
|
sub_801BFB4(1);
|
|
case 0:
|
|
case 1:
|
|
break;
|
|
}
|
|
} |