From ae97c32f7d4b55ae83a65ce934b974937e0e93bd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 2 Nov 2019 17:25:17 -0400 Subject: Port mon_markings --- src/mon_markings.c | 513 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 513 insertions(+) create mode 100644 src/mon_markings.c (limited to 'src') diff --git a/src/mon_markings.c b/src/mon_markings.c new file mode 100644 index 000000000..88ed0d6af --- /dev/null +++ b/src/mon_markings.c @@ -0,0 +1,513 @@ +#include "global.h" +#include "dma3.h" +#include "text_window_graphics.h" +#include "sound.h" +#include "mon_markings.h" +#include "graphics.h" +#include "constants/songs.h" + +EWRAM_DATA struct PokemonMarkMenu * sMenu = NULL; + +void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag); +void nullsub_62(struct Sprite * sprite); +void sub_80BEA8C(struct Sprite * sprite); +void sub_80BEAC8(struct Sprite * sprite); +struct Sprite * sub_80BEB20(u16 tilesTag, u16 paletteTag, const u16 *palette, u16 size); + +const u16 gUnknown_83EE008[] = INCBIN_U16("graphics/misc/mon_markings.gbapal"); +const u16 gUnknown_83EE028[] = INCBIN_U16("graphics/misc/mon_markings.4bpp"); +const u8 gUnknown_83EE828[] = {0x09, 0x50, 0x13, 0x02, 0xFF}; + +const struct OamData gUnknown_83EE830 = { + .shape = SPRITE_SHAPE(64x64), + .size = SPRITE_SIZE(64x64) +}; + +const struct OamData gUnknown_83EE838 = { + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8) +}; + +const union AnimCmd gAnimCmd_83EE840[] = { + ANIMCMD_FRAME(0x0, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE848[] = { + ANIMCMD_FRAME(0x1, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE850[] = { + ANIMCMD_FRAME(0x2, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE858[] = { + ANIMCMD_FRAME(0x3, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE860[] = { + ANIMCMD_FRAME(0x4, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE868[] = { + ANIMCMD_FRAME(0x5, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE870[] = { + ANIMCMD_FRAME(0x6, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE878[] = { + ANIMCMD_FRAME(0x7, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE880[] = { + ANIMCMD_FRAME(0x8, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE888[] = { + ANIMCMD_FRAME(0x9, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_83EE890[] = { + gAnimCmd_83EE840, + gAnimCmd_83EE848, + gAnimCmd_83EE850, + gAnimCmd_83EE858, + gAnimCmd_83EE860, + gAnimCmd_83EE868, + gAnimCmd_83EE870, + gAnimCmd_83EE878, + gAnimCmd_83EE880, + gAnimCmd_83EE888 +}; + +const union AnimCmd gAnimCmd_83EE8B8[] = { + ANIMCMD_FRAME(0x0, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE8C0[] = { + ANIMCMD_FRAME(0x40, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_83EE8C8[] = { + gAnimCmd_83EE8B8, + gAnimCmd_83EE8C0 +}; + +const struct OamData gUnknown_83EE8D0 = { + .shape = SPRITE_SHAPE(32x8), + .size = SPRITE_SIZE(32x8) +}; + +const union AnimCmd gAnimCmd_83EE8D8[] = { + ANIMCMD_FRAME(0x0, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE8E0[] = { + ANIMCMD_FRAME(0x4, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE8E8[] = { + ANIMCMD_FRAME(0x8, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE8F0[] = { + ANIMCMD_FRAME(0xc, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE8F8[] = { + ANIMCMD_FRAME(0x10, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE900[] = { + ANIMCMD_FRAME(0x14, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE908[] = { + ANIMCMD_FRAME(0x18, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE910[] = { + ANIMCMD_FRAME(0x1c, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE918[] = { + ANIMCMD_FRAME(0x20, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE920[] = { + ANIMCMD_FRAME(0x24, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE928[] = { + ANIMCMD_FRAME(0x28, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE930[] = { + ANIMCMD_FRAME(0x2c, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE938[] = { + ANIMCMD_FRAME(0x30, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE940[] = { + ANIMCMD_FRAME(0x34, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE948[] = { + ANIMCMD_FRAME(0x38, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE950[] = { + ANIMCMD_FRAME(0x3c, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_83EE958[] = { + gAnimCmd_83EE8D8, + gAnimCmd_83EE8E0, + gAnimCmd_83EE8E8, + gAnimCmd_83EE8F0, + gAnimCmd_83EE8F8, + gAnimCmd_83EE900, + gAnimCmd_83EE908, + gAnimCmd_83EE910, + gAnimCmd_83EE918, + gAnimCmd_83EE920, + gAnimCmd_83EE928, + gAnimCmd_83EE930, + gAnimCmd_83EE938, + gAnimCmd_83EE940, + gAnimCmd_83EE948, + gAnimCmd_83EE950 +}; + +void sub_80BE46C(struct PokemonMarkMenu * markMenu) +{ + sMenu = markMenu; +} + +void sub_80BE478(void) +{ + const struct TextWindowGraphics * frame = GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType); + sMenu->frameTiles = frame->tiles; + sMenu->framePalette = frame->palette; + sMenu->tileLoadState = 0; + CpuFill16(0, sMenu->menuWindowSpriteTiles, sizeof(sMenu->menuWindowSpriteTiles)); +} + +bool8 sub_80BE4C0(void) +{ + u16 i; + u8 *menuWindowSpriteTiles = &sMenu->menuWindowSpriteTiles[256 * sMenu->tileLoadState]; + switch (sMenu->tileLoadState) + { + case 0: + CpuFastCopy(sMenu->frameTiles + 0x00, menuWindowSpriteTiles, 0x20); + for (i = 0; i < 6; i++) + CpuFastCopy(sMenu->frameTiles + 0x20, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20); + CpuFastCopy(sMenu->frameTiles + 0x40, menuWindowSpriteTiles + 0x20 * 7, 0x20); + sMenu->tileLoadState++; + break; + default: + CpuFastCopy(sMenu->frameTiles + 0x60, menuWindowSpriteTiles + 0x00, 0x20); + for (i = 0; i < 6; i++) + CpuFastCopy(sMenu->frameTiles + 0x80, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20); + CpuFastCopy(sMenu->frameTiles + 0xA0, menuWindowSpriteTiles + 0x20 * 7, 0x20); + sMenu->tileLoadState++; + break; + case 13: + CpuFastCopy(sMenu->frameTiles + 0xC0, menuWindowSpriteTiles + 0x00, 0x20); + for (i = 0; i < 6; i++) + CpuFastCopy(sMenu->frameTiles + 0xE0, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20); + CpuFastCopy(sMenu->frameTiles + 0x100, menuWindowSpriteTiles + 0x20 * 7, 0x20); + sMenu->tileLoadState++; + return FALSE; + case 14: + return FALSE; + } + return TRUE; +} + +void sub_80BE5F0(void) +{ + sub_80BE478(); + while (sub_80BE4C0()) + {} +} + +void sub_80BE604(u8 markings, s16 x, s16 y) +{ + u16 i; + sMenu->cursorPos = 0; + sMenu->markings = markings; + for (i = 0; i < 4; i++) + { + sMenu->markingsArray[i] = (sMenu->markings >> i) & 1; + } + sub_80BE7CC(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);; +} + +void sub_80BE658(void) +{ + u16 i; + for (i = 0; i < 3; i++) + FreeSpriteTilesByTag(sMenu->baseTileTag + i); + FreeSpritePaletteByTag(sMenu->basePaletteTag); + FreeSpritePaletteByTag(sMenu->basePaletteTag + 1); + for (i = 0; i < 2; i++) + { + if (sMenu->menuWindowSprites[i] == NULL) + return; // break; + DestroySprite(sMenu->menuWindowSprites[i]); + } + for (i = 0; i < 4; i++) + { + if (sMenu->menuMarkingSprites[i] == NULL) + return; // break; + DestroySprite(sMenu->menuMarkingSprites[i]); + } + if (sMenu->unkSprite != NULL) + DestroySprite(sMenu->unkSprite); + if (sMenu->menuTextSprite != NULL) + DestroySprite(sMenu->menuTextSprite); +} + +bool8 sub_80BE6F0(void) +{ + u16 i; + if (JOY_NEW(DPAD_UP)) + { + PlaySE(SE_SELECT); + if (--sMenu->cursorPos < 0) + sMenu->cursorPos = 5; + return TRUE; + } + if (JOY_NEW(DPAD_DOWN)) + { + PlaySE(SE_SELECT); + if (++sMenu->cursorPos > 5) + sMenu->cursorPos = 0; + return TRUE; + } + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + switch (sMenu->cursorPos) + { + case 4: + sMenu->markings = 0; + for (i = 0; i < 4; i++) + sMenu->markings |= sMenu->markingsArray[i] << i; + return FALSE; + case 5: + return FALSE; + } + sMenu->markingsArray[sMenu->cursorPos] = sMenu->markingsArray[sMenu->cursorPos] ? FALSE : TRUE; + return TRUE; + } + if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + return FALSE; + } + return TRUE; +} + +void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag) +{ + u16 i; + u8 spriteId; + struct SpriteSheet sheets[] = { + { + .data = sMenu->menuWindowSpriteTiles, + .size = 0x1000, + .tag = tilesTag + }, { + .data = gUnknown_8E9CBBC, + .size = 0x320, + .tag = tilesTag + 1 + }, {} + }; + struct SpritePalette palettes[] = { + { + .data = sMenu->framePalette, + .tag = paletteTag + }, { + .data = gUnknown_8E9CB9C, + .tag = paletteTag + 1 + }, {} + }; + struct SpriteTemplate sprTemplate = { + .tileTag = tilesTag, + .paletteTag = paletteTag, + .oam = &gUnknown_83EE830, + .anims = gUnknown_83EE8C8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = nullsub_62 + }; + LoadSpriteSheets(sheets); + LoadSpritePalettes(palettes); + + for (i = 0; i < 2; i++) + { + spriteId = CreateSprite(&sprTemplate, x + 32, y + 32, 1); + if (spriteId != MAX_SPRITES) + { + sMenu->menuWindowSprites[i] = &gSprites[spriteId]; + StartSpriteAnim(&gSprites[spriteId], i); + } + else + { + sMenu->menuWindowSprites[i] = NULL; + return; + } + } + + sMenu->menuWindowSprites[1]->pos1.y = y + 96; + + sprTemplate.tileTag++; + sprTemplate.paletteTag++; + sprTemplate.anims = gUnknown_83EE890; + sprTemplate.callback = sub_80BEA8C; + sprTemplate.oam = &gUnknown_83EE838; + + for (i = 0; i < 4; i++) + { + spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 0); + if (spriteId != MAX_SPRITES) + { + sMenu->menuMarkingSprites[i] = &gSprites[spriteId]; + gSprites[spriteId].data[0] = i; + } + else + { + sMenu->menuMarkingSprites[i] = NULL; + return; + } + } + + sprTemplate.callback = SpriteCallbackDummy; + + spriteId = CreateSprite(&sprTemplate, 0, 0, 0); + + if (spriteId != MAX_SPRITES) + { + sMenu->menuTextSprite = &gSprites[spriteId]; + sMenu->menuTextSprite->oam.shape = ST_OAM_SQUARE; + sMenu->menuTextSprite->oam.size = 2; + StartSpriteAnim(sMenu->menuTextSprite, 9); + sMenu->menuTextSprite->pos1.x = x + 32; + sMenu->menuTextSprite->pos1.y = y + 80; + CalcCenterToCornerVec(sMenu->menuTextSprite, 1, 2, 0); + } + else + { + sMenu->menuTextSprite = NULL; + } + + sprTemplate.callback = sub_80BEAC8; + spriteId = CreateSprite(&sprTemplate, x + 12, 0, 0); + if (spriteId != MAX_SPRITES) + { + sMenu->unkSprite = &gSprites[spriteId]; + sMenu->unkSprite->data[0] = y + 16; + StartSpriteAnim(sMenu->unkSprite, 8); + } + else + { + sMenu->unkSprite = NULL; + } +} + +void nullsub_62(struct Sprite * sprite) +{} + +void sub_80BEA8C(struct Sprite * sprite) +{ + if (sMenu->markingsArray[sprite->data[0]]) + StartSpriteAnim(sprite, 2 * sprite->data[0] + 1); + else + StartSpriteAnim(sprite, 2 * sprite->data[0] + 0); +} + +void sub_80BEAC8(struct Sprite * sprite) +{ + sprite->pos1.y = 16 * sMenu->cursorPos + sprite->data[0]; +} + +struct Sprite * sub_80BEAE0(u16 tileTag, u16 paletteTag, const u16 *palette) +{ + if (palette == NULL) + palette = gUnknown_83EE008; + return sub_80BEB20(tileTag, paletteTag, palette, 16); +} + +struct Sprite * sub_80BEB00(u16 tileTag, u16 paletteTag, const u16 *palette) +{ + if (palette == NULL) + palette = gUnknown_83EE008; + return sub_80BEB20(tileTag, paletteTag, palette, 1); +} + +struct Sprite * sub_80BEB20(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size) +{ + u8 spriteId; + struct SpriteTemplate sprTemplate; + struct SpriteSheet sheet = { gUnknown_83EE028, 0x80, tileTag }; + struct SpritePalette sprPalette = { palette, paletteTag }; + + sprTemplate.tileTag = tileTag; + sprTemplate.paletteTag = paletteTag; + sprTemplate.oam = &gUnknown_83EE8D0; + sprTemplate.anims = gUnknown_83EE958; + sprTemplate.images = NULL; + sprTemplate.affineAnims = gDummySpriteAffineAnimTable; + sprTemplate.callback = nullsub_62; + + sheet.size = size * 0x80; + + LoadSpriteSheet(&sheet); + LoadSpritePalette(&sprPalette); + + spriteId = CreateSprite(&sprTemplate, 0, 0, 0); + if (spriteId != MAX_SPRITES) + return &gSprites[spriteId]; + else + return NULL; +} + +void sub_80BEBD0(u8 markings, void * dest) +{ + RequestDma3Copy(&gUnknown_83EE028[64 * markings], dest, 0x80, 1); +} + -- cgit v1.2.3 From 94a4aab58089ab97ef9e1a88323e4c2db06a1cf6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 2 Nov 2019 18:07:22 -0400 Subject: Document mon_markings --- src/mon_markings.c | 210 +++++++++++++++++++++++++++-------------------------- 1 file changed, 106 insertions(+), 104 deletions(-) (limited to 'src') diff --git a/src/mon_markings.c b/src/mon_markings.c index 88ed0d6af..dfef23821 100644 --- a/src/mon_markings.c +++ b/src/mon_markings.c @@ -6,216 +6,216 @@ #include "graphics.h" #include "constants/songs.h" -EWRAM_DATA struct PokemonMarkMenu * sMenu = NULL; +static EWRAM_DATA struct PokemonMarkMenu * sMenu = NULL; -void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag); -void nullsub_62(struct Sprite * sprite); -void sub_80BEA8C(struct Sprite * sprite); -void sub_80BEAC8(struct Sprite * sprite); -struct Sprite * sub_80BEB20(u16 tilesTag, u16 paletteTag, const u16 *palette, u16 size); +static void CreateMonMarkingsMenuSprites(s16 x, s16 y, u16 tilesTag, u16 paletteTag); +static void nullsub_62(struct Sprite * sprite); +static void SpriteCB_MarkingIcon(struct Sprite * sprite); +static void SpriteCB_Cursor(struct Sprite * sprite); +static struct Sprite * CreateMonMarkingSprite(u16 tilesTag, u16 paletteTag, const u16 *palette, u16 size); -const u16 gUnknown_83EE008[] = INCBIN_U16("graphics/misc/mon_markings.gbapal"); -const u16 gUnknown_83EE028[] = INCBIN_U16("graphics/misc/mon_markings.4bpp"); -const u8 gUnknown_83EE828[] = {0x09, 0x50, 0x13, 0x02, 0xFF}; +static const u16 sMonMarkingsPal[] = INCBIN_U16("graphics/misc/mon_markings.gbapal"); +static const u16 sMonMarkingsTiles[] = INCBIN_U16("graphics/misc/mon_markings.4bpp"); +static const u8 sUnref_83EE828[] = {0x09, 0x50, 0x13, 0x02, 0xFF}; -const struct OamData gUnknown_83EE830 = { +static const struct OamData sOamData_64x64 = { .shape = SPRITE_SHAPE(64x64), .size = SPRITE_SIZE(64x64) }; -const struct OamData gUnknown_83EE838 = { +static const struct OamData sOamData_8x8 = { .shape = SPRITE_SHAPE(8x8), .size = SPRITE_SIZE(8x8) }; -const union AnimCmd gAnimCmd_83EE840[] = { +static const union AnimCmd sAnimCmd_MenuMark_CircleOff[] = { ANIMCMD_FRAME(0x0, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE848[] = { +static const union AnimCmd sAnimCmd_MenuMark_CircleOn[] = { ANIMCMD_FRAME(0x1, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE850[] = { +static const union AnimCmd sAnimCmd_MenuMark_SquareOff[] = { ANIMCMD_FRAME(0x2, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE858[] = { +static const union AnimCmd sAnimCmd_MenuMark_SquareOn[] = { ANIMCMD_FRAME(0x3, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE860[] = { +static const union AnimCmd sAnimCmd_MenuMark_TriangleOff[] = { ANIMCMD_FRAME(0x4, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE868[] = { +static const union AnimCmd sAnimCmd_MenuMark_TriangleOn[] = { ANIMCMD_FRAME(0x5, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE870[] = { +static const union AnimCmd sAnimCmd_MenuMark_HeartOff[] = { ANIMCMD_FRAME(0x6, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE878[] = { +static const union AnimCmd sAnimCmd_MenuMark_HeartOn[] = { ANIMCMD_FRAME(0x7, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE880[] = { +static const union AnimCmd sAnimCmd_MenuMark_Cursor[] = { ANIMCMD_FRAME(0x8, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE888[] = { +static const union AnimCmd sAnimCmd_MenuMark_Blank[] = { ANIMCMD_FRAME(0x9, 5), ANIMCMD_END }; -const union AnimCmd *const gUnknown_83EE890[] = { - gAnimCmd_83EE840, - gAnimCmd_83EE848, - gAnimCmd_83EE850, - gAnimCmd_83EE858, - gAnimCmd_83EE860, - gAnimCmd_83EE868, - gAnimCmd_83EE870, - gAnimCmd_83EE878, - gAnimCmd_83EE880, - gAnimCmd_83EE888 +static const union AnimCmd *const sSpriteAnimTable_MenuMark[] = { + sAnimCmd_MenuMark_CircleOff, + sAnimCmd_MenuMark_CircleOn, + sAnimCmd_MenuMark_SquareOff, + sAnimCmd_MenuMark_SquareOn, + sAnimCmd_MenuMark_TriangleOff, + sAnimCmd_MenuMark_TriangleOn, + sAnimCmd_MenuMark_HeartOff, + sAnimCmd_MenuMark_HeartOn, + sAnimCmd_MenuMark_Cursor, + sAnimCmd_MenuMark_Blank }; -const union AnimCmd gAnimCmd_83EE8B8[] = { +static const union AnimCmd sAnimCmd_Frame_0[] = { ANIMCMD_FRAME(0x0, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE8C0[] = { +static const union AnimCmd sAnimCmd_Frame_1[] = { ANIMCMD_FRAME(0x40, 5), ANIMCMD_END }; -const union AnimCmd *const gUnknown_83EE8C8[] = { - gAnimCmd_83EE8B8, - gAnimCmd_83EE8C0 +static const union AnimCmd *const sSpriteAnimTable_Frame[] = { + sAnimCmd_Frame_0, + sAnimCmd_Frame_1 }; -const struct OamData gUnknown_83EE8D0 = { +static const struct OamData sOamData_32x8 = { .shape = SPRITE_SHAPE(32x8), .size = SPRITE_SIZE(32x8) }; -const union AnimCmd gAnimCmd_83EE8D8[] = { +static const union AnimCmd sAnimCmd_MonMark_0000[] = { ANIMCMD_FRAME(0x0, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE8E0[] = { +static const union AnimCmd sAnimCmd_MonMark_1000[] = { ANIMCMD_FRAME(0x4, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE8E8[] = { +static const union AnimCmd sAnimCmd_MonMark_0100[] = { ANIMCMD_FRAME(0x8, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE8F0[] = { +static const union AnimCmd sAnimCmd_MonMark_1100[] = { ANIMCMD_FRAME(0xc, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE8F8[] = { +static const union AnimCmd sAnimCmd_MonMark_0010[] = { ANIMCMD_FRAME(0x10, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE900[] = { +static const union AnimCmd sAnimCmd_MonMark_1010[] = { ANIMCMD_FRAME(0x14, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE908[] = { +static const union AnimCmd sAnimCmd_MonMark_0110[] = { ANIMCMD_FRAME(0x18, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE910[] = { +static const union AnimCmd sAnimCmd_MonMark_1110[] = { ANIMCMD_FRAME(0x1c, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE918[] = { +static const union AnimCmd sAnimCmd_MonMark_0001[] = { ANIMCMD_FRAME(0x20, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE920[] = { +static const union AnimCmd sAnimCmd_MonMark_1001[] = { ANIMCMD_FRAME(0x24, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE928[] = { +static const union AnimCmd sAnimCmd_MonMark_0101[] = { ANIMCMD_FRAME(0x28, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE930[] = { +static const union AnimCmd sAnimCmd_MonMark_1101[] = { ANIMCMD_FRAME(0x2c, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE938[] = { +static const union AnimCmd sAnimCmd_MonMark_0011[] = { ANIMCMD_FRAME(0x30, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE940[] = { +static const union AnimCmd sAnimCmd_MonMark_1011[] = { ANIMCMD_FRAME(0x34, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE948[] = { +static const union AnimCmd sAnimCmd_MonMark_0111[] = { ANIMCMD_FRAME(0x38, 5), ANIMCMD_END }; -const union AnimCmd gAnimCmd_83EE950[] = { +static const union AnimCmd sAnimCmd_MonMark_1111[] = { ANIMCMD_FRAME(0x3c, 5), ANIMCMD_END }; -const union AnimCmd *const gUnknown_83EE958[] = { - gAnimCmd_83EE8D8, - gAnimCmd_83EE8E0, - gAnimCmd_83EE8E8, - gAnimCmd_83EE8F0, - gAnimCmd_83EE8F8, - gAnimCmd_83EE900, - gAnimCmd_83EE908, - gAnimCmd_83EE910, - gAnimCmd_83EE918, - gAnimCmd_83EE920, - gAnimCmd_83EE928, - gAnimCmd_83EE930, - gAnimCmd_83EE938, - gAnimCmd_83EE940, - gAnimCmd_83EE948, - gAnimCmd_83EE950 -}; - -void sub_80BE46C(struct PokemonMarkMenu * markMenu) +static const union AnimCmd *const sSpriteAnimTable_MonMarkSet[] = { + sAnimCmd_MonMark_0000, + sAnimCmd_MonMark_1000, + sAnimCmd_MonMark_0100, + sAnimCmd_MonMark_1100, + sAnimCmd_MonMark_0010, + sAnimCmd_MonMark_1010, + sAnimCmd_MonMark_0110, + sAnimCmd_MonMark_1110, + sAnimCmd_MonMark_0001, + sAnimCmd_MonMark_1001, + sAnimCmd_MonMark_0101, + sAnimCmd_MonMark_1101, + sAnimCmd_MonMark_0011, + sAnimCmd_MonMark_1011, + sAnimCmd_MonMark_0111, + sAnimCmd_MonMark_1111 +}; + +void SetMonMarkingsMenuPointer(struct PokemonMarkMenu * markMenu) { sMenu = markMenu; } -void sub_80BE478(void) +static void GetUserFrameForMonMarkings(void) { const struct TextWindowGraphics * frame = GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType); sMenu->frameTiles = frame->tiles; @@ -224,7 +224,7 @@ void sub_80BE478(void) CpuFill16(0, sMenu->menuWindowSpriteTiles, sizeof(sMenu->menuWindowSpriteTiles)); } -bool8 sub_80BE4C0(void) +static bool8 DoLoadMonMarkingsFrameGfx(void) { u16 i; u8 *menuWindowSpriteTiles = &sMenu->menuWindowSpriteTiles[256 * sMenu->tileLoadState]; @@ -257,14 +257,14 @@ bool8 sub_80BE4C0(void) return TRUE; } -void sub_80BE5F0(void) +void LoadMonMarkingsFrameGfx(void) { - sub_80BE478(); - while (sub_80BE4C0()) + GetUserFrameForMonMarkings(); + while (DoLoadMonMarkingsFrameGfx()) {} } -void sub_80BE604(u8 markings, s16 x, s16 y) +void DrawMonMarkingsMenu(u8 markings, s16 x, s16 y) { u16 i; sMenu->cursorPos = 0; @@ -273,10 +273,10 @@ void sub_80BE604(u8 markings, s16 x, s16 y) { sMenu->markingsArray[i] = (sMenu->markings >> i) & 1; } - sub_80BE7CC(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);; + CreateMonMarkingsMenuSprites(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);; } -void sub_80BE658(void) +void TeardownMonMarkingsMenu(void) { u16 i; for (i = 0; i < 3; i++) @@ -301,7 +301,7 @@ void sub_80BE658(void) DestroySprite(sMenu->menuTextSprite); } -bool8 sub_80BE6F0(void) +bool8 MonMarkingsHandleInput(void) { u16 i; if (JOY_NEW(DPAD_UP)) @@ -342,7 +342,7 @@ bool8 sub_80BE6F0(void) return TRUE; } -void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag) +static void CreateMonMarkingsMenuSprites(s16 x, s16 y, u16 tilesTag, u16 paletteTag) { u16 i; u8 spriteId; @@ -369,8 +369,8 @@ void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag) struct SpriteTemplate sprTemplate = { .tileTag = tilesTag, .paletteTag = paletteTag, - .oam = &gUnknown_83EE830, - .anims = gUnknown_83EE8C8, + .oam = &sOamData_64x64, + .anims = sSpriteAnimTable_Frame, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = nullsub_62 @@ -397,9 +397,9 @@ void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag) sprTemplate.tileTag++; sprTemplate.paletteTag++; - sprTemplate.anims = gUnknown_83EE890; - sprTemplate.callback = sub_80BEA8C; - sprTemplate.oam = &gUnknown_83EE838; + sprTemplate.anims = sSpriteAnimTable_MenuMark; + sprTemplate.callback = SpriteCB_MarkingIcon; + sprTemplate.oam = &sOamData_8x8; for (i = 0; i < 4; i++) { @@ -435,8 +435,10 @@ void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag) sMenu->menuTextSprite = NULL; } - sprTemplate.callback = sub_80BEAC8; + sprTemplate.callback = SpriteCB_Cursor; + spriteId = CreateSprite(&sprTemplate, x + 12, 0, 0); + if (spriteId != MAX_SPRITES) { sMenu->unkSprite = &gSprites[spriteId]; @@ -449,10 +451,10 @@ void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag) } } -void nullsub_62(struct Sprite * sprite) +static void nullsub_62(struct Sprite * sprite) {} -void sub_80BEA8C(struct Sprite * sprite) +static void SpriteCB_MarkingIcon(struct Sprite * sprite) { if (sMenu->markingsArray[sprite->data[0]]) StartSpriteAnim(sprite, 2 * sprite->data[0] + 1); @@ -460,36 +462,36 @@ void sub_80BEA8C(struct Sprite * sprite) StartSpriteAnim(sprite, 2 * sprite->data[0] + 0); } -void sub_80BEAC8(struct Sprite * sprite) +static void SpriteCB_Cursor(struct Sprite * sprite) { sprite->pos1.y = 16 * sMenu->cursorPos + sprite->data[0]; } -struct Sprite * sub_80BEAE0(u16 tileTag, u16 paletteTag, const u16 *palette) +struct Sprite * CreateMonMarkingSprite_SelectCombo(u16 tileTag, u16 paletteTag, const u16 *palette) { if (palette == NULL) - palette = gUnknown_83EE008; - return sub_80BEB20(tileTag, paletteTag, palette, 16); + palette = sMonMarkingsPal; + return CreateMonMarkingSprite(tileTag, paletteTag, palette, 16); } -struct Sprite * sub_80BEB00(u16 tileTag, u16 paletteTag, const u16 *palette) +struct Sprite * CreateMonMarkingSprite_AllOff(u16 tileTag, u16 paletteTag, const u16 *palette) { if (palette == NULL) - palette = gUnknown_83EE008; - return sub_80BEB20(tileTag, paletteTag, palette, 1); + palette = sMonMarkingsPal; + return CreateMonMarkingSprite(tileTag, paletteTag, palette, 1); } -struct Sprite * sub_80BEB20(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size) +static struct Sprite * CreateMonMarkingSprite(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size) { u8 spriteId; struct SpriteTemplate sprTemplate; - struct SpriteSheet sheet = { gUnknown_83EE028, 0x80, tileTag }; + struct SpriteSheet sheet = { sMonMarkingsTiles, 0x80, tileTag }; struct SpritePalette sprPalette = { palette, paletteTag }; sprTemplate.tileTag = tileTag; sprTemplate.paletteTag = paletteTag; - sprTemplate.oam = &gUnknown_83EE8D0; - sprTemplate.anims = gUnknown_83EE958; + sprTemplate.oam = &sOamData_32x8; + sprTemplate.anims = sSpriteAnimTable_MonMarkSet; sprTemplate.images = NULL; sprTemplate.affineAnims = gDummySpriteAffineAnimTable; sprTemplate.callback = nullsub_62; @@ -508,6 +510,6 @@ struct Sprite * sub_80BEB20(u16 tileTag, u16 paletteTag, const u16 *palette, u16 void sub_80BEBD0(u8 markings, void * dest) { - RequestDma3Copy(&gUnknown_83EE028[64 * markings], dest, 0x80, 1); + RequestDma3Copy(&sMonMarkingsTiles[64 * markings], dest, 0x80, 1); } -- cgit v1.2.3 From 5b47585549e185530cc7a69abd1970a901837e78 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 3 Nov 2019 13:36:05 -0500 Subject: Split data_83FECCC --- src/new_menu_helpers.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c index f82dbe9c6..84befe63e 100644 --- a/src/new_menu_helpers.c +++ b/src/new_menu_helpers.c @@ -26,6 +26,9 @@ static EWRAM_DATA u16 gUnknown_203AB5C = {0}; static EWRAM_DATA void *gUnknown_203AB60[0x20] = {NULL}; static EWRAM_DATA u8 sStartMenuWindowId = {0}; +const u16 gUnknown_841F1C8[] = INCBIN_U16("graphics/text_window/unk_841F1C8.4bpp"); +const u16 gTMCaseMainWindowPalette[] = INCBIN_U16("graphics/tm_case/unk_841F408.gbapal"); + static const u8 gUnknown_841F428[] = { 8, 4, 1 }; static const struct WindowTemplate sStandardTextBox_WindowTemplates[] = -- cgit v1.2.3