split out into multiple files and move data to src

This commit is contained in:
Seth Barberee
2024-02-19 11:24:25 -08:00
parent 2489c11cec
commit e99149c556
6 changed files with 483 additions and 523 deletions

View File

@@ -1,103 +0,0 @@
.section .rodata
@ code_801EE10
.align 2,0
.string "pksdir0\0"
.align 2,0
.global gUnknown_80DC240
gUnknown_80DC240: @ 80DC240
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global Data_80DC258
Data_80DC258:
.byte 0x01, 0x00, 0x0f, 0x00
.global gUnknown_80DC25C
gUnknown_80DC25C: @ 80DC25C
.byte 0x00, 0x00
.byte 0x00, 0x00
.byte 0x06, 0x00
.byte 0x00, 0x00
.byte 0x02, 0x00
.byte 0x02, 0x00
.byte 0x12, 0x00
.byte 0x08, 0x00
.byte 0x08, 0x00
.byte 0x00, 0x00
.4byte Data_80DC258
.global gUnknown_80DC274
gUnknown_80DC274: @ 80DC274
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x0f, 0x00
.byte 0x1a, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DC28C
gUnknown_80DC28C: @ 80DC28C
.string "Moves: {COLOR_1 YELLOW}{ARG_POKEMON_0}{END_COLOR_TEXT_1} \0"
.align 2,0
.global gUnknown_80DC2A0
gUnknown_80DC2A0: @ 80DC2A0
.string "{ARG_MOVE_ITEM_0}\0"
@ code_801EE10_mid #1
.align 2,0
.string "pksdir0\0"
.align 2,0
.global gUnknown_80DC2AC
gUnknown_80DC2AC: @ 80DC2AC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DC2C4
gUnknown_80DC2C4: @ 80DC2C4
.byte 0x00, 0x00
.byte 0x00, 0x00
.byte 0x06, 0x00
.byte 0x00, 0x00
.byte 0x02, 0x00
.byte 0x02, 0x00
.byte 0x0f, 0x00
.byte 0x04, 0x00
.byte 0x06, 0x00
.byte 0x00, 0x00
.byte 0x00, 0x00
.byte 0x00, 0x00
.global gUnknown_80DC2DC
gUnknown_80DC2DC: @ 80DC2DC
.string "Moves Page: %d/%d \0"
.align 2,0
@ code_801EE10_mid #2
.string "pksdir0\0"
.align 2,0
.global gUnknown_80DC2F8
gUnknown_80DC2F8: @ 80DC2F8
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DC310
gUnknown_80DC310: @ 80DC310
.string "{ARG_POKEMON_0}\0"

View File

@@ -123,6 +123,8 @@ SECTIONS {
src/code_801EE10.o(.text);
asm/code_801EE10.o(.text);
src/code_801EE10_mid.o(.text);
src/code_801F428.o(.text);
src/code_801F808.o(.text);
src/gulpin_shop_801FB50.o(.text);
src/wigglytuff_shop1.o(.text);
src/wigglytuff_shop2.o(.text);
@@ -460,7 +462,9 @@ SECTIONS {
src/hints_menu1.o(.rodata);
src/hints_menu2.o(.rodata);
src/gulpin_shop.o(.rodata);
data/data_80DC240.o(.rodata);
src/code_801EE10.o(.rodata);
src/code_801F428.o(.rodata);
src/code_801F808.o(.rodata);
src/gulpin_shop_801FB50.o(.rodata);
src/wigglytuff_shop1.o(.rodata);
src/wigglytuff_shop2.o(.rodata);

View File

@@ -1,4 +1,5 @@
#include "global.h"
#include "globaldata.h"
#include "constants/input.h"
#include "input.h"
#include "items.h"
@@ -11,9 +12,38 @@
#include "menu_input.h"
extern unkStruct_203B270 *gUnknown_203B270;
extern UnkTextStruct2 gUnknown_80DC25C;
extern UnkTextStruct2 gUnknown_80DC274;
extern UnkTextStruct2 gUnknown_80DC240;
const UnkTextStruct2 gUnknown_80DC240 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const u8 gUnkData_80DC258[4] = {0x01, 0x00, 0x0F, 0x00};
const UnkTextStruct2 gUnknown_80DC25C = {
0, 0, 0, 0,
6,
0x2, 0x2,
0x12, 0x8,
0x8, 0,
gUnkData_80DC258
};
const UnkTextStruct2 gUnknown_80DC274 = {
0, 0, 0, 0,
3,
0x2, 0xF,
0x1A, 0x3,
0x3, 0,
NULL,
};
ALIGNED(4) const u8 gUnknown_80DC28C[] = _("Moves: {COLOR_1 YELLOW}{ARG_POKEMON_0}{END_COLOR_TEXT_1} ");
ALIGNED(4) const u8 gUnknown_80DC2A0[] = _("{ARG_MOVE_ITEM_0}");
u32 sub_8006544(u32 index);
s32 sub_801F3F8(void);

View File

@@ -1,72 +1,8 @@
#include "global.h"
#include "memory.h"
#include "text1.h"
#include "text2.h"
#include "pokemon.h"
#include "code_800D090.h"
#include "moves.h"
#include "code_801EE10.h"
#include "menu_input.h"
#include "structs/subStruct_203B240.h"
#include "sprite.h"
#include "code_80130A8.h"
#include "code_801EE10_mid.h"
#include "code_80118A4.h"
#include "input.h"
extern unkStruct_203B270 *gUnknown_203B270;
struct unkStruct_203B274
{
// size: 0x3e8
PokemonStruct1 *pokeStruct;
unkStruct_808E218_arg *unk4;
unkStruct_808E218_arg unk8;
MenuInputStruct input;
s32 unk37C;
UnkTextStruct2 *unk380;
UnkTextStruct2 unk384[4];
u8 unk3E4[4];
};
extern struct unkStruct_203B274 *gUnknown_203B274;
struct unkStruct_203B278
{
s32 state;
u16 *moveIDs;
u16 unk8;
u16 fillA;
s32 unkC;
s32 unk10;
struct subStruct_203B240 *unk14[4];
u32 unk24;
MenuInputStruct unk28;
u32 unk5C;
UnkTextStruct2 *unk60;
UnkTextStruct2 unk64[4];
u8 unkC4[4];
MenuInputStructSub unkC8;
};
extern struct unkStruct_203B278 *gUnknown_203B278;
extern UnkTextStruct2 gUnknown_80DC2C4;
extern UnkTextStruct2 gUnknown_80DC2AC;
extern UnkTextStruct2 gUnknown_80DC2F8;
extern u8 gAvailablePokemonNames[];
extern u8 gUnknown_80DC310[];
extern u8 gUnknown_80DC2DC[];
extern void sub_801F918(s32);
extern void sub_801FA58(void);
extern void sub_801FAD4(void);
extern void sub_801F930(void);
extern void sub_801F9A4(void);
u32 sub_801F7E4(void);
void sub_801F690(void);
s32 sub_801F3F8(void)
{
Move *move;
@@ -83,355 +19,3 @@ s32 sub_801F3F8(void)
}
return counter;
}
// THIS IS A NEW FILE
bool8 sub_801F428(s16 index, s32 param_2)
{
s32 index_s32 = index;
gUnknown_203B274 = MemoryAlloc(sizeof(struct unkStruct_203B274), 0x8);
gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32];
gUnknown_203B274->unk4 = &gUnknown_203B274->unk8;
gUnknown_203B274->unk37C = param_2;
gUnknown_203B274->unk380 = &gUnknown_203B274->unk384[gUnknown_203B274->unk37C];
sub_8006518(gUnknown_203B274->unk384);
gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = gUnknown_80DC2C4;
gUnknown_203B274->unk380->unk14 = gUnknown_203B274->unk3E4;
gUnknown_203B274->unk3E4[0] = 1;
gUnknown_203B274->unk3E4[1] = 0;
gUnknown_203B274->unk3E4[2] = 0xC;
gUnknown_203B274->unk3E4[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE);
sub_8013818(&gUnknown_203B274->input, sub_801F7E4(), 4, param_2);
sub_801F690();
sub_801F700();
return TRUE;
}
u32 sub_801F520(u8 param_1)
{
if (param_1 == 0) {
sub_8013660(&gUnknown_203B274->input);
return 0;
}
else {
switch(GetKeyPress(&gUnknown_203B274->input))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
case 4:
PlayMenuSoundEffect(4);
return 4;
default:
break;
}
if (sub_80138B8(&gUnknown_203B274->input,1) != 0) {
sub_801F690();
sub_801F700();
return 1;
}
else {
return 0;
}
}
}
u16 sub_801F5B4(void)
{
return gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + gUnknown_203B274->input.menuIndex];
}
void sub_801F5F0(bool8 r0)
{
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, FALSE, FALSE);
sub_8013984(&gUnknown_203B274->input);
sub_801F690();
sub_801F700();
if(r0)
AddMenuCursorSprite(&gUnknown_203B274->input);
}
void sub_801F63C(void)
{
if(gUnknown_203B274 != NULL)
{
gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = gUnknown_80DC2AC;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE);
MemoryFree(gUnknown_203B274);
gUnknown_203B274 = NULL;
}
}
NAKED // sub_80095E4 memes
void sub_801F690(void)
{
asm_unified(
"\tpush {r4,r5,lr}\n"
"\tldr r5, _0801F6F4\n"
"\tldr r0, [r5]\n"
"\tldr r1, _0801F6F8\n"
"\tadds r0, r1\n"
"\tmovs r2, 0\n"
"\tldrsh r0, [r0, r2]\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r3, [r5]\n"
"\tmovs r1, 0xDF\n"
"\tlsls r1, 2\n"
"\tadds r4, r3, r1\n"
"\tldr r2, [r4]\n"
"\tlsls r1, r2, 1\n"
"\tadds r1, r2\n"
"\tlsls r1, 3\n"
"\tadds r1, r3, r1\n"
"\tldr r2, _0801F6FC\n"
"\tadds r1, r2\n"
"\tasrs r2, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r4]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r3, r0\n"
"\tadds r2, 0x2\n"
"\tmovs r0, 0xE5\n"
"\tlsls r0, 2\n"
"\tadds r3, r0\n"
"\tstrh r2, [r3]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r5]\n"
"\tmovs r1, 0xE1\n"
"\tlsls r1, 2\n"
"\tadds r0, r1\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4,r5}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0801F6F4: .4byte gUnknown_203B274\n"
"_0801F6F8: .4byte 0x00000362\n"
"_0801F6FC: .4byte 0x00000392");
}
void sub_801F700(void)
{
u32 y;
int index;
u8 buffer2 [48];
u8 buffer1 [128];
sub_8008C54(gUnknown_203B274->unk37C);
sub_80073B8(gUnknown_203B274->unk37C);
sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->input.unk1E + 1,gUnknown_203B274->input.unk20); // Moves Page: %d/%d
xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->unk37C,0);
for(index = 0; index < gUnknown_203B274->input.unk1A; index++)
{
sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + index]);
y = sub_8013800(&gUnknown_203B274->input, index);
xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->unk37C,0);
}
sub_80073E0(gUnknown_203B274->unk37C);
}
u32 sub_801F7E4(void)
{
sub_808E218(gUnknown_203B274->unk4, gUnknown_203B274->pokeStruct);
return gUnknown_203B274->unk4->count;
}
// THIS IS A NEW FILE
bool8 sub_801F808(u16 *moveIDs)
{
s32 index;
ResetSprites(TRUE);
gUnknown_203B278 = MemoryAlloc(sizeof(struct unkStruct_203B278), 8);
gUnknown_203B278->unk5C = 0;
gUnknown_203B278->unk60 = gUnknown_203B278->unk64;
sub_80140B4(gUnknown_203B278->unk64);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
gUnknown_203B278->moveIDs = moveIDs;
for(index = 4; index > 1; index--)
{
if(gUnknown_203B278->moveIDs[index - 1] != 0) break;
}
sub_8013818(&gUnknown_203B278->unk28,index,1,gUnknown_203B278->unk5C);
sub_801317C(&gUnknown_203B278->unkC8);
sub_801F918(0);
return 1;
}
u32 sub_801F890(void)
{
switch (gUnknown_203B278->state) {
case 0:
sub_801FA58();
break;
case 1:
sub_801FAD4();
break;
case 3:
return 3;
default:
case 2:
return 2;
}
return 0;
}
void sub_801F8D0(void)
{
if(gUnknown_203B278)
{
gUnknown_203B278->unk64[gUnknown_203B278->unk5C] = gUnknown_80DC2F8;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
MemoryFree(gUnknown_203B278);
gUnknown_203B278 = NULL;
}
}
void sub_801F918(s32 newState)
{
gUnknown_203B278->state = newState;
sub_801F930();
sub_801F9A4();
}
void sub_801F930(void)
{
sub_80140B4(gUnknown_203B278->unk64);
switch(gUnknown_203B278->state)
{
case 0:
gUnknown_203B278->unk60->unk14 = gUnknown_203B278->unkC4;
gUnknown_203B278->unkC4[0] = gUnknown_203B278->unk28.unk20;
gUnknown_203B278->unkC4[1] = gUnknown_203B278->unk28.unk1E;
gUnknown_203B278->unkC4[2] = 0x10;
gUnknown_203B278->unkC4[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
break;
case 1:
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
break;
default:
break;
}
}
void sub_801F9A4(void)
{
u8 **name;
switch (gUnknown_203B278->state) {
case 0:
sub_8008C54(gUnknown_203B278->unk5C);
gUnknown_203B278->unk8 = gUnknown_203B278->moveIDs[gUnknown_203B278->unk28.unk1E];
gUnknown_203B278->unk10 = unk_MoveIDPrintMoveDescription(gUnknown_203B278->unk28.unk1E,gUnknown_203B278->unk8,gUnknown_203B278->unk5C,gUnknown_203B278->unk14);
gUnknown_203B278->unk24 = 0;
break;
case 1:
sub_8008C54(gUnknown_203B278->unk5C);
sub_80073B8(gUnknown_203B278->unk5C);
name = &(gUnknown_203B278->unk14[gUnknown_203B278->unkC]->pokeName);
strcpy(gAvailablePokemonNames, *name);
xxx_format_and_draw(0x10,0,gUnknown_80DC310,gUnknown_203B278->unk5C,0); // $m0
xxx_format_and_draw(4,0x10,gUnknown_203B278->unk14[gUnknown_203B278->unkC]->unk4,gUnknown_203B278->unk5C,0);
sub_80073E0(gUnknown_203B278->unk5C);
break;
case 2:
break;
}
}
void sub_801FA58(void)
{
if(gUnknown_203B278->unk10 != 0)
{
if(gUnknown_203B278->unk24 & 8)
{
sub_8013F84();
}
gUnknown_203B278->unk24++;
}
switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C))
{
case 1:
PlayMenuSoundEffect(0);
if(gUnknown_203B278->unk10 != 0)
{
gUnknown_203B278->unkC = 0;
sub_801F918(1);
}
else
{
sub_801F918(3);
}
break;
case 2:
PlayMenuSoundEffect(1);
sub_801F918(2);
break;
default:
if(sub_8013938(&gUnknown_203B278->unk28))
{
sub_801F918(0);
}
}
}
void sub_801FAD4(void)
{
if(gUnknown_203B278->unkC < gUnknown_203B278->unk10 - 1)
{
if(gUnknown_203B278->unk24 & 8)
{
sub_8013F84();
}
gUnknown_203B278->unk24++;
}
switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C))
{
case 1:
PlayMenuSoundEffect(0);
gUnknown_203B278->unkC++;
if(gUnknown_203B278->unkC < gUnknown_203B278->unk10)
{
sub_801F918(1);
}
else {
sub_801F918(0);
}
break;
case 2:
PlayMenuSoundEffect(1);
sub_801F918(2);
break;
}
}

218
src/code_801F428.c Normal file
View File

@@ -0,0 +1,218 @@
#include "global.h"
#include "globaldata.h"
#include "code_80118A4.h"
#include "code_800D090.h"
#include "input.h"
#include "memory.h"
#include "menu_input.h"
#include "moves.h"
#include "pokemon.h"
#include "text1.h"
#include "text2.h"
struct unkStruct_203B274
{
// size: 0x3e8
PokemonStruct1 *pokeStruct;
unkStruct_808E218_arg *unk4;
unkStruct_808E218_arg unk8;
MenuInputStruct input;
s32 unk37C;
UnkTextStruct2 *unk380;
UnkTextStruct2 unk384[4];
u8 unk3E4[4];
};
extern struct unkStruct_203B274 *gUnknown_203B274;
extern u8 gAvailablePokemonNames[];
static const UnkTextStruct2 sUnknown_80DC2AC = {
0, 0, 0, 0,
3,
0, 0,
0, 0,
0, 0,
NULL
};
static const UnkTextStruct2 sUnknown_80DC2C4 = {
0, 0, 0, 0,
6,
2, 2,
0xF, 4,
6, 0,
NULL
};
ALIGNED(4) const u8 gUnknown_80DC2DC[] = _("Moves Page: %d/%d ");
u32 sub_801F7E4(void);
void sub_801F690(void);
void sub_801F700(void);
bool8 sub_801F428(s16 index, s32 param_2)
{
s32 index_s32 = index;
gUnknown_203B274 = MemoryAlloc(sizeof(struct unkStruct_203B274), 0x8);
gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32];
gUnknown_203B274->unk4 = &gUnknown_203B274->unk8;
gUnknown_203B274->unk37C = param_2;
gUnknown_203B274->unk380 = &gUnknown_203B274->unk384[gUnknown_203B274->unk37C];
sub_8006518(gUnknown_203B274->unk384);
gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = sUnknown_80DC2C4;
gUnknown_203B274->unk380->unk14 = gUnknown_203B274->unk3E4;
gUnknown_203B274->unk3E4[0] = 1;
gUnknown_203B274->unk3E4[1] = 0;
gUnknown_203B274->unk3E4[2] = 0xC;
gUnknown_203B274->unk3E4[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE);
sub_8013818(&gUnknown_203B274->input, sub_801F7E4(), 4, param_2);
sub_801F690();
sub_801F700();
return TRUE;
}
u32 sub_801F520(u8 param_1)
{
if (param_1 == 0) {
sub_8013660(&gUnknown_203B274->input);
return 0;
}
else {
switch(GetKeyPress(&gUnknown_203B274->input))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
case 4:
PlayMenuSoundEffect(4);
return 4;
default:
break;
}
if (sub_80138B8(&gUnknown_203B274->input,1) != 0) {
sub_801F690();
sub_801F700();
return 1;
}
else {
return 0;
}
}
}
u16 sub_801F5B4(void)
{
return gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + gUnknown_203B274->input.menuIndex];
}
void sub_801F5F0(bool8 r0)
{
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, FALSE, FALSE);
sub_8013984(&gUnknown_203B274->input);
sub_801F690();
sub_801F700();
if(r0)
AddMenuCursorSprite(&gUnknown_203B274->input);
}
void sub_801F63C(void)
{
if(gUnknown_203B274 != NULL)
{
gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = sUnknown_80DC2AC;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE);
MemoryFree(gUnknown_203B274);
gUnknown_203B274 = NULL;
}
}
NAKED // sub_80095E4 memes
void sub_801F690(void)
{
asm_unified(
"\tpush {r4,r5,lr}\n"
"\tldr r5, _0801F6F4\n"
"\tldr r0, [r5]\n"
"\tldr r1, _0801F6F8\n"
"\tadds r0, r1\n"
"\tmovs r2, 0\n"
"\tldrsh r0, [r0, r2]\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r3, [r5]\n"
"\tmovs r1, 0xDF\n"
"\tlsls r1, 2\n"
"\tadds r4, r3, r1\n"
"\tldr r2, [r4]\n"
"\tlsls r1, r2, 1\n"
"\tadds r1, r2\n"
"\tlsls r1, 3\n"
"\tadds r1, r3, r1\n"
"\tldr r2, _0801F6FC\n"
"\tadds r1, r2\n"
"\tasrs r2, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r4]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r3, r0\n"
"\tadds r2, 0x2\n"
"\tmovs r0, 0xE5\n"
"\tlsls r0, 2\n"
"\tadds r3, r0\n"
"\tstrh r2, [r3]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r5]\n"
"\tmovs r1, 0xE1\n"
"\tlsls r1, 2\n"
"\tadds r0, r1\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4,r5}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0801F6F4: .4byte gUnknown_203B274\n"
"_0801F6F8: .4byte 0x00000362\n"
"_0801F6FC: .4byte 0x00000392");
}
void sub_801F700(void)
{
u32 y;
int index;
u8 buffer2 [48];
u8 buffer1 [128];
sub_8008C54(gUnknown_203B274->unk37C);
sub_80073B8(gUnknown_203B274->unk37C);
sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->input.unk1E + 1,gUnknown_203B274->input.unk20); // Moves Page: %d/%d
xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->unk37C,0);
for(index = 0; index < gUnknown_203B274->input.unk1A; index++)
{
sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + index]);
y = sub_8013800(&gUnknown_203B274->input, index);
xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->unk37C,0);
}
sub_80073E0(gUnknown_203B274->unk37C);
}
u32 sub_801F7E4(void)
{
sub_808E218(gUnknown_203B274->unk4, gUnknown_203B274->pokeStruct);
return gUnknown_203B274->unk4->count;
}

227
src/code_801F808.c Normal file
View File

@@ -0,0 +1,227 @@
#include "global.h"
#include "globaldata.h"
#include "code_80130A8.h"
#include "code_80118A4.h"
#include "input.h"
#include "memory.h"
#include "menu_input.h"
#include "moves.h"
#include "sprite.h"
#include "structs/menu.h"
#include "structs/str_text.h"
#include "text1.h"
#include "text2.h"
extern u8 gAvailablePokemonNames[];
struct unkStruct_203B278
{
s32 state;
u16 *moveIDs;
u16 unk8;
u16 fillA;
s32 unkC;
s32 unk10;
struct subStruct_203B240 *unk14[4];
u32 unk24;
MenuInputStruct unk28;
u32 unk5C;
UnkTextStruct2 *unk60;
UnkTextStruct2 unk64[4];
u8 unkC4[4];
MenuInputStructSub unkC8;
};
extern struct unkStruct_203B278 *gUnknown_203B278;
static const UnkTextStruct2 sUnknown_80DC2F8 = {
0, 0, 0, 0,
3,
0, 0,
0, 0,
0, 0,
NULL
};
const u8 gUnknown_80DC310[] = _("{ARG_POKEMON_0}");
extern void sub_801F918(s32);
extern void sub_801FA58(void);
extern void sub_801FAD4(void);
extern void sub_801F930(void);
extern void sub_801F9A4(void);
bool8 sub_801F808(u16 *moveIDs)
{
s32 index;
ResetSprites(TRUE);
gUnknown_203B278 = MemoryAlloc(sizeof(struct unkStruct_203B278), 8);
gUnknown_203B278->unk5C = 0;
gUnknown_203B278->unk60 = gUnknown_203B278->unk64;
sub_80140B4(gUnknown_203B278->unk64);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
gUnknown_203B278->moveIDs = moveIDs;
for(index = 4; index > 1; index--)
{
if(gUnknown_203B278->moveIDs[index - 1] != 0) break;
}
sub_8013818(&gUnknown_203B278->unk28,index,1,gUnknown_203B278->unk5C);
sub_801317C(&gUnknown_203B278->unkC8);
sub_801F918(0);
return 1;
}
u32 sub_801F890(void)
{
switch (gUnknown_203B278->state) {
case 0:
sub_801FA58();
break;
case 1:
sub_801FAD4();
break;
case 3:
return 3;
default:
case 2:
return 2;
}
return 0;
}
void sub_801F8D0(void)
{
if(gUnknown_203B278)
{
gUnknown_203B278->unk64[gUnknown_203B278->unk5C] = sUnknown_80DC2F8;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
MemoryFree(gUnknown_203B278);
gUnknown_203B278 = NULL;
}
}
void sub_801F918(s32 newState)
{
gUnknown_203B278->state = newState;
sub_801F930();
sub_801F9A4();
}
void sub_801F930(void)
{
sub_80140B4(gUnknown_203B278->unk64);
switch(gUnknown_203B278->state)
{
case 0:
gUnknown_203B278->unk60->unk14 = gUnknown_203B278->unkC4;
gUnknown_203B278->unkC4[0] = gUnknown_203B278->unk28.unk20;
gUnknown_203B278->unkC4[1] = gUnknown_203B278->unk28.unk1E;
gUnknown_203B278->unkC4[2] = 0x10;
gUnknown_203B278->unkC4[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
break;
case 1:
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B278->unk64, TRUE, TRUE);
break;
default:
break;
}
}
void sub_801F9A4(void)
{
u8 **name;
switch (gUnknown_203B278->state) {
case 0:
sub_8008C54(gUnknown_203B278->unk5C);
gUnknown_203B278->unk8 = gUnknown_203B278->moveIDs[gUnknown_203B278->unk28.unk1E];
gUnknown_203B278->unk10 = unk_MoveIDPrintMoveDescription(gUnknown_203B278->unk28.unk1E,gUnknown_203B278->unk8,gUnknown_203B278->unk5C,gUnknown_203B278->unk14);
gUnknown_203B278->unk24 = 0;
break;
case 1:
sub_8008C54(gUnknown_203B278->unk5C);
sub_80073B8(gUnknown_203B278->unk5C);
name = &(gUnknown_203B278->unk14[gUnknown_203B278->unkC]->pokeName);
strcpy(gAvailablePokemonNames, *name);
xxx_format_and_draw(0x10,0,gUnknown_80DC310,gUnknown_203B278->unk5C,0); // $m0
xxx_format_and_draw(4,0x10,gUnknown_203B278->unk14[gUnknown_203B278->unkC]->unk4,gUnknown_203B278->unk5C,0);
sub_80073E0(gUnknown_203B278->unk5C);
break;
case 2:
break;
}
}
void sub_801FA58(void)
{
if(gUnknown_203B278->unk10 != 0)
{
if(gUnknown_203B278->unk24 & 8)
{
sub_8013F84();
}
gUnknown_203B278->unk24++;
}
switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C))
{
case 1:
PlayMenuSoundEffect(0);
if(gUnknown_203B278->unk10 != 0)
{
gUnknown_203B278->unkC = 0;
sub_801F918(1);
}
else
{
sub_801F918(3);
}
break;
case 2:
PlayMenuSoundEffect(1);
sub_801F918(2);
break;
default:
if(sub_8013938(&gUnknown_203B278->unk28))
{
sub_801F918(0);
}
}
}
void sub_801FAD4(void)
{
if(gUnknown_203B278->unkC < gUnknown_203B278->unk10 - 1)
{
if(gUnknown_203B278->unk24 & 8)
{
sub_8013F84();
}
gUnknown_203B278->unk24++;
}
switch(sub_8012A64(&gUnknown_203B278->unkC8, gUnknown_203B278->unk5C))
{
case 1:
PlayMenuSoundEffect(0);
gUnknown_203B278->unkC++;
if(gUnknown_203B278->unkC < gUnknown_203B278->unk10)
{
sub_801F918(1);
}
else {
sub_801F918(0);
}
break;
case 2:
PlayMenuSoundEffect(1);
sub_801F918(2);
break;
}
}