2019-07-20 04:57:33 +02:00
|
|
|
#include "global.h"
|
|
|
|
#include "pokenav.h"
|
|
|
|
#include "bg.h"
|
|
|
|
#include "window.h"
|
|
|
|
|
2019-08-04 19:09:12 +02:00
|
|
|
struct PokenavSub9
|
|
|
|
{
|
|
|
|
u32 (*unk0)(struct PokenavSub9*);
|
|
|
|
u32 loopedTaskId;
|
|
|
|
u8 filler[0xC];
|
|
|
|
u32 unk14;
|
|
|
|
u32 unk18;
|
|
|
|
struct PokenavSub18 *unk1C;
|
|
|
|
};
|
|
|
|
|
|
|
|
u32 sub_81CFA68(struct PokenavSub9 *structPtr);
|
|
|
|
u32 sub_81CFA88(struct PokenavSub9 *structPtr);
|
|
|
|
u32 sub_81CFB08(struct PokenavSub9 *structPtr);
|
|
|
|
u32 sub_81CFB10(struct PokenavSub9 *structPtr);
|
2019-07-20 04:57:33 +02:00
|
|
|
u32 sub_81CFB8C(void);
|
|
|
|
u32 sub_81CFC2C(void);
|
|
|
|
u32 sub_81CFC40(void);
|
2019-08-04 19:09:12 +02:00
|
|
|
u32 sub_81CFB74(s32 state);
|
|
|
|
u32 sub_81CFFFC(s32 state);
|
|
|
|
u32 sub_81D0074(s32 state);
|
|
|
|
u32 sub_81D00EC(s32 state);
|
|
|
|
u32 sub_81D0164(s32 state);
|
|
|
|
u32 sub_81D01DC(s32 state);
|
|
|
|
u32 sub_81D021C(s32 state);
|
|
|
|
|
|
|
|
u32 (*const gUnknown_086235D8[])(void) =
|
2019-07-20 04:57:33 +02:00
|
|
|
{
|
|
|
|
sub_81CFB8C,
|
|
|
|
sub_81CFC2C,
|
|
|
|
sub_81CFC40
|
|
|
|
};
|
|
|
|
|
|
|
|
const u16 gUnknown_086235E4[] = INCBIN_U16("graphics/pokenav/ui_ribbons.gbapal");
|
|
|
|
const u32 gUnknown_08623604[] = INCBIN_U32("graphics/pokenav/ui_ribbons.4bpp.lz");
|
|
|
|
const u32 gUnknown_086236CC[] = INCBIN_U32("graphics/pokenav/ui_ribbons.bin.lz");
|
|
|
|
const u16 gUnknown_08623790[] = INCBIN_U16("graphics/pokenav/8623790.gbapal");
|
|
|
|
|
2019-08-04 19:09:12 +02:00
|
|
|
const struct BgTemplate gUnknown_086237B0 =
|
2019-07-20 04:57:33 +02:00
|
|
|
{
|
|
|
|
.bg = 1,
|
|
|
|
.charBaseIndex = 1,
|
|
|
|
.mapBaseIndex = 0x06,
|
|
|
|
.screenSize = 0,
|
|
|
|
.paletteMode = 0,
|
|
|
|
.priority = 2,
|
|
|
|
.baseTile = 0
|
|
|
|
};
|
|
|
|
|
2019-08-04 19:09:12 +02:00
|
|
|
const struct BgTemplate gUnknown_086237B4 =
|
2019-07-20 04:57:33 +02:00
|
|
|
{
|
|
|
|
.bg = 2,
|
|
|
|
.charBaseIndex = 2,
|
|
|
|
.mapBaseIndex = 0x07,
|
|
|
|
.screenSize = 0,
|
|
|
|
.paletteMode = 0,
|
|
|
|
.priority = 3,
|
|
|
|
.baseTile = 0
|
|
|
|
};
|
|
|
|
|
2019-08-04 19:09:12 +02:00
|
|
|
const LoopedTask gUnknown_086237B8[] =
|
2019-07-20 04:57:33 +02:00
|
|
|
{
|
|
|
|
NULL,
|
|
|
|
sub_81CFFFC,
|
|
|
|
sub_81D0074,
|
|
|
|
sub_81D00EC,
|
|
|
|
sub_81D0164,
|
|
|
|
sub_81D01DC,
|
|
|
|
sub_81D021C
|
|
|
|
};
|
|
|
|
|
2019-08-04 19:09:12 +02:00
|
|
|
const struct WindowTemplate gUnknown_086237D4 =
|
2019-07-20 04:57:33 +02:00
|
|
|
{
|
|
|
|
.bg = 1,
|
|
|
|
.tilemapLeft = 1,
|
|
|
|
.tilemapTop = 6,
|
|
|
|
.width = 7,
|
|
|
|
.height = 2,
|
|
|
|
.paletteNum = 1,
|
|
|
|
.baseBlock = 20
|
|
|
|
};
|
|
|
|
|
|
|
|
const u8 gUnknown_086237DC[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
|
|
|
|
const u8 gUnknown_086237E8[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
|
|
|
|
const u8 gUnknown_086237F4[] = _("{UNK_SPACER}");
|
2019-08-04 19:09:12 +02:00
|
|
|
|
|
|
|
bool32 sub_81CF9BC(void)
|
|
|
|
{
|
|
|
|
struct PokenavSub9 *structPtr = AllocSubstruct(9, sizeof(struct PokenavSub9));
|
|
|
|
if (structPtr == NULL)
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
structPtr->unk1C = AllocSubstruct(18, sizeof(struct PokenavSub18));
|
|
|
|
if (structPtr->unk1C == NULL)
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
structPtr->unk0 = sub_81CFA68;
|
|
|
|
structPtr->loopedTaskId = CreateLoopedTask(sub_81CFB74, 1);
|
|
|
|
structPtr->unk14 = 0;
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool32 sub_81CFA04(void)
|
|
|
|
{
|
|
|
|
struct PokenavSub9 *structPtr = AllocSubstruct(9, sizeof(struct PokenavSub9));
|
|
|
|
if (structPtr == NULL)
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
structPtr->unk1C = GetSubstructPtr(18);
|
|
|
|
structPtr->unk0 = sub_81CFA88;
|
|
|
|
structPtr->unk14 = 1;
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
u32 sub_81CFA34(void)
|
|
|
|
{
|
|
|
|
struct PokenavSub9 *structPtr = GetSubstructPtr(9);
|
|
|
|
return structPtr->unk0(structPtr);
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_81CFA48(void)
|
|
|
|
{
|
|
|
|
struct PokenavSub9 *structPtr = GetSubstructPtr(9);
|
|
|
|
if (!structPtr->unk18)
|
|
|
|
FreePokenavSubstruct(18);
|
|
|
|
FreePokenavSubstruct(9);
|
|
|
|
}
|
|
|
|
|
|
|
|
u32 sub_81CFA68(struct PokenavSub9 *structPtr)
|
|
|
|
{
|
|
|
|
if (!IsLoopedTaskActive(structPtr->loopedTaskId))
|
|
|
|
structPtr->unk0 = sub_81CFA88;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
u32 sub_81CFA88(struct PokenavSub9 *structPtr)
|
|
|
|
{
|
|
|
|
if (gMain.newAndRepeatedKeys & DPAD_UP)
|
|
|
|
return 1;
|
|
|
|
if (gMain.newAndRepeatedKeys & DPAD_DOWN)
|
|
|
|
return 2;
|
|
|
|
if (gMain.newKeys & DPAD_LEFT)
|
|
|
|
return 3;
|
|
|
|
if (gMain.newKeys & DPAD_RIGHT)
|
|
|
|
return 4;
|
|
|
|
if (gMain.newKeys & B_BUTTON)
|
|
|
|
{
|
|
|
|
structPtr->unk18 = 0;
|
|
|
|
structPtr->unk0 = sub_81CFB08;
|
|
|
|
return 5;
|
|
|
|
}
|
|
|
|
if (gMain.newKeys & A_BUTTON)
|
|
|
|
{
|
|
|
|
structPtr->unk1C->unk2 = GetSelectedMatchCall();
|
|
|
|
structPtr->unk18 = 1;
|
|
|
|
structPtr->unk0 = sub_81CFB10;
|
|
|
|
return 6;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
u32 sub_81CFB08(struct PokenavSub9 *structPtr)
|
|
|
|
{
|
|
|
|
return 0x186a5;
|
|
|
|
}
|
|
|
|
|
|
|
|
u32 sub_81CFB10(struct PokenavSub9 *structPtr)
|
|
|
|
{
|
|
|
|
return 0x186ad;
|
|
|
|
}
|
|
|
|
|
|
|
|
u32 sub_81CFB18(void)
|
|
|
|
{
|
|
|
|
struct PokenavSub9 *structPtr = GetSubstructPtr(9);
|
|
|
|
return structPtr->unk14;
|
|
|
|
}
|