diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-05-20 11:09:41 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-05-20 11:09:41 -0400 |
commit | 348bd19fddefede38716607ffe0ecdb4ae199bea (patch) | |
tree | edfa2508b386beb4b7537cf58c345fe0afada8ca /src | |
parent | 68ac134c0c82db82e0b59b071d766108c3bbd9f6 (diff) |
text_window
Diffstat (limited to 'src')
-rw-r--r-- | src/bag.c | 40 | ||||
-rw-r--r-- | src/daycare.c | 6 | ||||
-rw-r--r-- | src/egg_hatch.c | 884 | ||||
-rw-r--r-- | src/mystery_gift_menu.c | 22 | ||||
-rw-r--r-- | src/oak_speech.c | 22 | ||||
-rw-r--r-- | src/quest_log.c | 4 | ||||
-rw-r--r-- | src/text_window.c | 169 | ||||
-rw-r--r-- | src/window.c | 40 | ||||
-rw-r--r-- | src/window_8bpp.c | 14 | ||||
-rw-r--r-- | src/wireless_communication_status_screen.c | 6 |
10 files changed, 248 insertions, 959 deletions
@@ -21,7 +21,7 @@ const struct TextColor gUnknown_84530B8[] = { }; const struct WindowTemplate gUnknown_84530C4[] = { { - .priority = 0, + .bg = 0, .tilemapLeft = 0x0b, .tilemapTop = 0x01, .width = 0x12, @@ -29,7 +29,7 @@ const struct WindowTemplate gUnknown_84530C4[] = { .paletteNum = 0x0f, .baseBlock = 0x008a }, { - .priority = 0, + .bg = 0, .tilemapLeft = 0x05, .tilemapTop = 0x0e, .width = 0x19, @@ -37,7 +37,7 @@ const struct WindowTemplate gUnknown_84530C4[] = { .paletteNum = 0x0f, .baseBlock = 0x0162 }, { - .priority = 0, + .bg = 0, .tilemapLeft = 0x01, .tilemapTop = 0x01, .width = 0x09, @@ -48,7 +48,7 @@ const struct WindowTemplate gUnknown_84530C4[] = { }; const struct WindowTemplate gUnknown_84530E4[] = { { - .priority = 0, + .bg = 0, .tilemapLeft = 0x0b, .tilemapTop = 0x01, .width = 0x12, @@ -56,7 +56,7 @@ const struct WindowTemplate gUnknown_84530E4[] = { .paletteNum = 0x0f, .baseBlock = 0x008a }, { - .priority = 0, + .bg = 0, .tilemapLeft = 0x05, .tilemapTop = 0x0e, .width = 0x19, @@ -64,7 +64,7 @@ const struct WindowTemplate gUnknown_84530E4[] = { .paletteNum = 0x0f, .baseBlock = 0x0162 }, { - .priority = 0, + .bg = 0, .tilemapLeft = 0x01, .tilemapTop = 0x01, .width = 0x08, @@ -75,7 +75,7 @@ const struct WindowTemplate gUnknown_84530E4[] = { }; const struct WindowTemplate gUnknown_8453104[] = { { - .priority = 0, + .bg = 0, .tilemapLeft = 24, .tilemapTop = 15, .width = 5, @@ -83,7 +83,7 @@ const struct WindowTemplate gUnknown_8453104[] = { .paletteNum = 0xF, .baseBlock = 0x242 }, { - .priority = 0, + .bg = 0, .tilemapLeft = 17, .tilemapTop = 9, .width = 12, @@ -91,7 +91,7 @@ const struct WindowTemplate gUnknown_8453104[] = { .paletteNum = 0xF, .baseBlock = 0x242 }, { - .priority = 0, + .bg = 0, .tilemapLeft = 1, .tilemapTop = 1, .width = 8, @@ -102,7 +102,7 @@ const struct WindowTemplate gUnknown_8453104[] = { }; const struct WindowTemplate gUnknown_845311C = { - .priority = 0, + .bg = 0, .tilemapLeft = 23, .tilemapTop = 15, .width = 6, @@ -112,7 +112,7 @@ const struct WindowTemplate gUnknown_845311C = { }; const struct WindowTemplate gUnknown_8453124 = { - .priority = 0, + .bg = 0, .tilemapLeft = 21, .tilemapTop = 9, .width = 6, @@ -123,7 +123,7 @@ const struct WindowTemplate gUnknown_8453124 = { const struct WindowTemplate gUnknown_845312C[] = { { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x02, .tilemapTop = 0x0f, .width = 0x1a, @@ -131,7 +131,7 @@ const struct WindowTemplate gUnknown_845312C[] = { .paletteNum = 0x0f, .baseBlock = 0x02a2 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x06, .tilemapTop = 0x0f, .width = 0x0e, @@ -139,7 +139,7 @@ const struct WindowTemplate gUnknown_845312C[] = { .paletteNum = 0x0c, .baseBlock = 0x02a2 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x06, .tilemapTop = 0x0f, .width = 0x0f, @@ -147,7 +147,7 @@ const struct WindowTemplate gUnknown_845312C[] = { .paletteNum = 0x0c, .baseBlock = 0x02da }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x06, .tilemapTop = 0x0f, .width = 0x10, @@ -155,7 +155,7 @@ const struct WindowTemplate gUnknown_845312C[] = { .paletteNum = 0x0c, .baseBlock = 0x0316 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x06, .tilemapTop = 0x0f, .width = 0x17, @@ -163,7 +163,7 @@ const struct WindowTemplate gUnknown_845312C[] = { .paletteNum = 0x0c, .baseBlock = 0x0356 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x16, .tilemapTop = 0x11, .width = 0x07, @@ -171,7 +171,7 @@ const struct WindowTemplate gUnknown_845312C[] = { .paletteNum = 0x0f, .baseBlock = 0x020a }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x16, .tilemapTop = 0x0f, .width = 0x07, @@ -179,7 +179,7 @@ const struct WindowTemplate gUnknown_845312C[] = { .paletteNum = 0x0f, .baseBlock = 0x020a }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x16, .tilemapTop = 0x0d, .width = 0x07, @@ -187,7 +187,7 @@ const struct WindowTemplate gUnknown_845312C[] = { .paletteNum = 0x0f, .baseBlock = 0x020a }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x16, .tilemapTop = 0x0b, .width = 0x07, diff --git a/src/daycare.c b/src/daycare.c index 66e5c3f32..26ebedc5d 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -114,7 +114,7 @@ EWRAM_DATA static u16 sHatchedEggMotherMoves[4] = {0}; static const struct WindowTemplate sDaycareLevelMenuWindowTemplate = { - .priority = 0, + .bg = 0, .tilemapLeft = 12, .tilemapTop = 1, .width = 17, @@ -333,7 +333,7 @@ static const struct BgTemplate sBgTemplates_EggHatch[2] = static const struct WindowTemplate sWinTemplates_EggHatch[2] = { { - .priority = 0, + .bg = 0, .tilemapLeft = 2, .tilemapTop = 15, .width = 26, @@ -346,7 +346,7 @@ static const struct WindowTemplate sWinTemplates_EggHatch[2] = static const struct WindowTemplate sYesNoWinTemplate = { - .priority = 0, + .bg = 0, .tilemapLeft = 21, .tilemapTop = 9, .width = 6, diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 59d61c569..d8e1a4d55 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -38,886 +38,6 @@ #include "help_system.h" #include "field_fadetransition.h" #include "new_menu_helpers.h" -/* - -struct EggHatchData -{ - u8 eggSpriteID; - u8 pokeSpriteID; - u8 CB2_state; - u8 CB2_PalCounter; - u8 eggPartyID; - u8 unused_5; - u8 unused_6; - u8 eggShardVelocityID; - u8 windowId; - u8 unused_9; - u8 unused_A; - u16 species; - struct TextColor textColor; -}; - -extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle -extern const u8 gText_HatchedFromEgg[]; -extern const u8 gText_NickHatchPrompt[]; - -static void Task_EggHatch(u8 taskID); -static void CB2_EggHatch_0(void); -static void CB2_EggHatch_1(void); -static void SpriteCB_Egg_0(struct Sprite* sprite); -static void SpriteCB_Egg_1(struct Sprite* sprite); -static void SpriteCB_Egg_2(struct Sprite* sprite); -static void SpriteCB_Egg_3(struct Sprite* sprite); -static void SpriteCB_Egg_4(struct Sprite* sprite); -static void SpriteCB_Egg_5(struct Sprite* sprite); -static void SpriteCB_EggShard(struct Sprite* sprite); -static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed); -static void CreateRandomEggShardSprite(void); -static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex); - -// IWRAM bss -static IWRAM_DATA struct EggHatchData *sEggHatchData; - -// rom data -static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/palettes/egg_palette.gbapal"); -static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp"); -static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp"); - -static const struct OamData sOamData_EggHatch = -{ - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .matrixNum = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 1, - .paletteNum = 0, - .affineParam = 0, -}; - -static const union AnimCmd sSpriteAnim_EggHatch0[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_END -}; - -static const union AnimCmd sSpriteAnim_EggHatch1[] = -{ - ANIMCMD_FRAME(16, 5), - ANIMCMD_END -}; - -static const union AnimCmd sSpriteAnim_EggHatch2[] = -{ - ANIMCMD_FRAME(32, 5), - ANIMCMD_END -}; - -static const union AnimCmd sSpriteAnim_EggHatch3[] = -{ - ANIMCMD_FRAME(48, 5), - ANIMCMD_END -}; - -static const union AnimCmd *const sSpriteAnimTable_EggHatch[] = -{ - sSpriteAnim_EggHatch0, - sSpriteAnim_EggHatch1, - sSpriteAnim_EggHatch2, - sSpriteAnim_EggHatch3, -}; - -static const struct SpriteSheet sEggHatch_Sheet = -{ - .data = sEggHatchTiles, - .size = 2048, - .tag = 12345, -}; - -static const struct SpriteSheet sEggShards_Sheet = -{ - .data = sEggShardTiles, - .size = 128, - .tag = 23456, -}; - -static const struct SpritePalette sEgg_SpritePalette = -{ - .data = sEggPalette, - .tag = 54321 -}; - -static const struct SpriteTemplate sSpriteTemplate_EggHatch = -{ - .tileTag = 12345, - .paletteTag = 54321, - .oam = &sOamData_EggHatch, - .anims = sSpriteAnimTable_EggHatch, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCallbackDummy -}; - -static const struct OamData sOamData_EggShard = -{ - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .matrixNum = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, - .affineParam = 0, -}; - -static const union AnimCmd sSpriteAnim_EggShard0[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_END -}; - -static const union AnimCmd sSpriteAnim_EggShard1[] = -{ - ANIMCMD_FRAME(1, 5), - ANIMCMD_END -}; - -static const union AnimCmd sSpriteAnim_EggShard2[] = -{ - ANIMCMD_FRAME(2, 5), - ANIMCMD_END -}; - -static const union AnimCmd sSpriteAnim_EggShard3[] = -{ - ANIMCMD_FRAME(3, 5), - ANIMCMD_END -}; - -static const union AnimCmd *const sSpriteAnimTable_EggShard[] = -{ - sSpriteAnim_EggShard0, - sSpriteAnim_EggShard1, - sSpriteAnim_EggShard2, - sSpriteAnim_EggShard3, -}; - -static const struct SpriteTemplate sSpriteTemplate_EggShard = -{ - .tileTag = 23456, - .paletteTag = 54321, - .oam = &sOamData_EggShard, - .anims = sSpriteAnimTable_EggShard, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_EggShard -}; - -static const struct BgTemplate sBgTemplates_EggHatch[2] = -{ - { - .bg = 0, - .charBaseIndex = 2, - .mapBaseIndex = 24, - .screenSize = 3, - .paletteMode = 0, - .priority = 0, - .baseTile = 0 - }, - - { - .bg = 1, - .charBaseIndex = 0, - .mapBaseIndex = 8, - .screenSize = 1, - .paletteMode = 0, - .priority = 2, - .baseTile = 0 - }, -}; - -static const struct WindowTemplate sWinTemplates_EggHatch[2] = -{ - { - .priority = 0, - .tilemapLeft = 2, - .tilemapTop = 15, - .width = 26, - .height = 4, - .paletteNum = 0, - .baseBlock = 64 - }, - DUMMY_WIN_TEMPLATE -}; - -static const struct WindowTemplate sYesNoWinTemplate = -{ - .priority = 0, - .tilemapLeft = 21, - .tilemapTop = 9, - .width = 5, - .height = 4, - .paletteNum = 15, - .baseBlock = 424 -}; - -static const s16 sEggShardVelocities[][2] = -{ - {Q_8_8(-1.5), Q_8_8(-3.75)}, - {Q_8_8(-5), Q_8_8(-3)}, - {Q_8_8(3.5), Q_8_8(-3)}, - {Q_8_8(-4), Q_8_8(-3.75)}, - {Q_8_8(2), Q_8_8(-1.5)}, - {Q_8_8(-0.5), Q_8_8(-6.75)}, - {Q_8_8(5), Q_8_8(-2.25)}, - {Q_8_8(-1.5), Q_8_8(-3.75)}, - {Q_8_8(4.5), Q_8_8(-1.5)}, - {Q_8_8(-1), Q_8_8(-6.75)}, - {Q_8_8(4), Q_8_8(-2.25)}, - {Q_8_8(-3.5), Q_8_8(-3.75)}, - {Q_8_8(1), Q_8_8(-1.5)}, - {Q_8_8(-3.515625), Q_8_8(-6.75)}, - {Q_8_8(4.5), Q_8_8(-2.25)}, - {Q_8_8(-0.5), Q_8_8(-7.5)}, - {Q_8_8(1), Q_8_8(-4.5)}, - {Q_8_8(-2.5), Q_8_8(-2.25)}, - {Q_8_8(2.5), Q_8_8(-7.5)}, -}; - -// code - -static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) -{ - u16 species; - u32 personality, pokerus; - u8 i, friendship, language, gameMet, markings, obedience; - u16 moves[4]; - u32 ivs[NUM_STATS]; - - - species = GetMonData(egg, MON_DATA_SPECIES); - - for (i = 0; i < 4; i++) - { - moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i); - } - - personality = GetMonData(egg, MON_DATA_PERSONALITY); - - for (i = 0; i < NUM_STATS; i++) - { - ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i); - } - -// language = GetMonData(egg, MON_DATA_LANGUAGE); - gameMet = GetMonData(egg, MON_DATA_MET_GAME); - markings = GetMonData(egg, MON_DATA_MARKINGS); - pokerus = GetMonData(egg, MON_DATA_POKERUS); - obedience = GetMonData(egg, MON_DATA_OBEDIENCE); - - CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0); - - for (i = 0; i < 4; i++) - { - SetMonData(temp, MON_DATA_MOVE1 + i, &moves[i]); - } - - for (i = 0; i < NUM_STATS; i++) - { - SetMonData(temp, MON_DATA_HP_IV + i, &ivs[i]); - } - - language = GAME_LANGUAGE; - SetMonData(temp, MON_DATA_LANGUAGE, &language); - SetMonData(temp, MON_DATA_MET_GAME, &gameMet); - SetMonData(temp, MON_DATA_MARKINGS, &markings); - - friendship = 120; - SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship); - SetMonData(temp, MON_DATA_POKERUS, &pokerus); - SetMonData(temp, MON_DATA_OBEDIENCE, &obedience); - - *egg = *temp; -} - -static void AddHatchedMonToParty(u8 id) -{ - u8 isEgg = 0x46; // ? - u16 pokeNum; - u8 name[12]; - u16 ball; - u16 caughtLvl; - u8 mapNameID; - struct Pokemon* mon = &gPlayerParty[id]; - - CreatedHatchedMon(mon, &gEnemyParty[0]); - SetMonData(mon, MON_DATA_IS_EGG, &isEgg); - - pokeNum = GetMonData(mon, MON_DATA_SPECIES); - GetSpeciesName(name, pokeNum); - SetMonData(mon, MON_DATA_NICKNAME, name); - - pokeNum = SpeciesToNationalPokedexNum(pokeNum); - GetSetPokedexFlag(pokeNum, FLAG_SET_SEEN); - GetSetPokedexFlag(pokeNum, FLAG_SET_CAUGHT); - - GetMonNick(mon, gStringVar1); - - ball = ITEM_POKE_BALL; - SetMonData(mon, MON_DATA_POKEBALL, &ball); - - caughtLvl = 0; - SetMonData(mon, MON_DATA_MET_LEVEL, &caughtLvl); - - mapNameID = GetCurrentRegionMapSectionId(); - SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID); - - MonRestorePP(mon); - CalculateMonStats(mon); -} - -void ScriptHatchMon(void) -{ - AddHatchedMonToParty(gSpecialVar_0x8004); -} - -static bool8 sub_8046E34(struct DayCare *daycare, u8 daycareId) -{ - u8 nick[0x20]; - struct DaycareMon *daycareMon = &daycare->mons[daycareId]; - - GetBoxMonNick(&daycareMon->mon, nick); - if (daycareMon->mail.message.itemId != 0 - && (StringCompare(nick, daycareMon->mail.monName) != 0 - || StringCompare(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0)) - { - StringCopy(gStringVar1, nick); - StringCopy(gStringVar2, daycareMon->mail.OT_name); - StringCopy(gStringVar3, daycareMon->mail.monName); - return TRUE; - } - return FALSE; -} - -bool8 sub_8046EAC(void) -{ - return sub_8046E34(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004); -} - -extern const struct CompressedSpriteSheet gMonFrontPicTable[]; - -static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc) -{ - u8 r4 = 0; - u8 spriteID = 0; // r7 - struct Pokemon* mon = NULL; // r5 - - if (a0 == 0) - { - mon = &gPlayerParty[pokeID]; - r4 = 1; - } - if (a0 == 1) - { - mon = &gPlayerParty[pokeID]; - r4 = 3; - } - switch (switchID) - { - case 0: - { - u16 species = GetMonData(mon, MON_DATA_SPECIES); - u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); - sub_800ECC4(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid); - LoadCompressedObjectPalette(GetMonSpritePalStruct(mon)); - *speciesLoc = species; - } - break; - case 1: - SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, r4); - spriteID = CreateSprite(&gMultiuseSpriteTemplate, 120, 70, 6); - gSprites[spriteID].invisible = TRUE; - gSprites[spriteID].callback = SpriteCallbackDummy; - break; - } - return spriteID; -} - -static void VBlankCB_EggHatch(void) -{ - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); -} - -void EggHatch(void) -{ - ScriptContext2_Enable(); - CreateTask(Task_EggHatch, 10); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - sub_812B478(); -} - -static void Task_EggHatch(u8 taskID) -{ - if (!gPaletteFade.active) - { - CleanupOverworldWindowsAndTilemaps(); - SetMainCallback2(CB2_EggHatch_0); - gFieldCallback = FieldCallback_ReturnToEventScript2; - DestroyTask(taskID); - } -} - -static void CB2_EggHatch_0(void) -{ - switch (gMain.state) - { - case 0: - SetGpuReg(REG_OFFSET_DISPCNT, 0); - - sEggHatchData = Alloc(sizeof(struct EggHatchData)); - AllocateMonSpritesGfx(); - sEggHatchData->eggPartyID = gSpecialVar_0x8004; - sEggHatchData->eggShardVelocityID = 0; - - SetVBlankCallback(VBlankCB_EggHatch); - gSpecialVar_0x8005 = GetCurrentMapMusic(); - - reset_temp_tile_data_buffers(); - ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, sBgTemplates_EggHatch, ARRAY_COUNT(sBgTemplates_EggHatch)); - - ChangeBgX(1, 0, 0); - ChangeBgY(1, 0, 0); - ChangeBgX(0, 0, 0); - ChangeBgY(0, 0, 0); - - SetBgAttribute(1, 7, 2); - SetBgTilemapBuffer(1, Alloc(0x1000)); - SetBgTilemapBuffer(0, Alloc(0x2000)); - - DeactivateAllTextPrinters(); - ResetPaletteFade(); - FreeAllSpritePalettes(); - ResetSpriteData(); - ResetTasks(); - ScanlineEffect_Stop(); - m4aSoundVSyncOn(); - gMain.state++; - break; - case 1: - InitWindows(sWinTemplates_EggHatch); - sEggHatchData->windowId = 0; - gMain.state++; - break; - case 2: - DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); - CopyToBgTilemapBuffer(0, gFile_graphics_interface_menu_map_tilemap, 0, 0); - LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20); - gMain.state++; - break; - case 3: - LoadSpriteSheet(&sEggHatch_Sheet); - LoadSpriteSheet(&sEggShards_Sheet); - LoadSpritePalette(&sEgg_SpritePalette); - gMain.state++; - break; - case 4: - CopyBgTilemapBufferToVram(0); - AddHatchedMonToParty(sEggHatchData->eggPartyID); - gMain.state++; - break; - case 5: - EggHatchCreateMonSprite(0, 0, sEggHatchData->eggPartyID, &sEggHatchData->species); - gMain.state++; - break; - case 6: - sEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, sEggHatchData->eggPartyID, &sEggHatchData->species); - gMain.state++; - break; - case 7: - SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); - LoadPalette(gTradeGba2_Pal, 0x10, 0xA0); - LoadBgTiles(1, gTradeGba_Gfx, 0x1420, 0); - CopyToBgTilemapBuffer(1, gUnknown_08331F60, 0x1000, 0); - CopyBgTilemapBufferToVram(1); - gMain.state++; - break; - case 8: - SetMainCallback2(CB2_EggHatch_1); - sEggHatchData->CB2_state = 0; - break; - } - RunTasks(); - RunTextPrinters(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); -} - -static void EggHatchSetMonNickname(void) -{ - SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); - FreeMonSpritesGfx(); - Free(sEggHatchData); - sub_812B484(); - SetMainCallback2(CB2_ReturnToField); -} - -static void Task_EggHatchPlayBGM(u8 taskID) -{ - if (gTasks[taskID].data[0] == 0) - { - StopMapMusic(); - } - if (gTasks[taskID].data[0] == 1) - PlayBGM(MUS_ME_SHINKA); - if (gTasks[taskID].data[0] > 60) - { - PlayBGM(MUS_SHINKA); - DestroyTask(taskID); - // UB: task is destroyed, yet the value is incremented - } - gTasks[taskID].data[0]++; -} - -static void CB2_EggHatch_1(void) -{ - u16 species; - u8 gender; - u32 personality; - - switch (sEggHatchData->CB2_state) - { - case 0: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); - sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_EggHatch, 120, 75, 5); - ShowBg(0); - ShowBg(1); - sEggHatchData->CB2_state++; - CreateTask(Task_EggHatchPlayBGM, 5); - break; - case 1: - if (!gPaletteFade.active) - { - FillWindowPixelBuffer(sEggHatchData->windowId, 0x00); - sEggHatchData->CB2_PalCounter = 0; - sEggHatchData->CB2_state++; - } - break; - case 2: - if (++sEggHatchData->CB2_PalCounter > 30) - { - sEggHatchData->CB2_state++; - gSprites[sEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0; - } - break; - case 3: - if (gSprites[sEggHatchData->eggSpriteID].callback == SpriteCallbackDummy) - { - PlayCry1(sEggHatchData->species, 0); - sEggHatchData->CB2_state++; - } - break; - case 4: - if (IsCryFinished()) - { - sEggHatchData->CB2_state++; - } - break; - case 5: - GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); - StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg); - EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, 0xFF); - PlayFanfare(MUS_FANFA5); - sEggHatchData->CB2_state++; - PutWindowTilemap(sEggHatchData->windowId); - CopyWindowToVram(sEggHatchData->windowId, 3); - break; - case 6: - if (IsFanfareTaskInactive()) - sEggHatchData->CB2_state++; - break; - case 7: - if (IsFanfareTaskInactive()) - sEggHatchData->CB2_state++; - break; - case 8: - GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); - StringExpandPlaceholders(gStringVar4, gText_NickHatchPrompt); - EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 2, 1); - sEggHatchData->CB2_state++; - break; - case 9: - if (!IsTextPrinterActive(sEggHatchData->windowId)) - { - LoadUserWindowBorderGfx(sEggHatchData->windowId, 0x140, 0xE0); - CreateYesNoMenu(&sYesNoWinTemplate, 3, 0, 2, 0x140, 0xE, 0); - sEggHatchData->CB2_state++; - } - break; - case 10: - switch (Menu_ProcessInputNoWrapClearOnChoose()) - { - case 0: - GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3); - species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); - gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]); - personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0); - DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname); - break; - case 1: - case -1: - sEggHatchData->CB2_state++; - } - break; - case 11: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); - sEggHatchData->CB2_state++; - break; - case 12: - if (!gPaletteFade.active) - { - RemoveWindow(sEggHatchData->windowId); - UnsetBgTilemapBuffer(0); - UnsetBgTilemapBuffer(1); - Free(sEggHatchData); - SetMainCallback2(CB2_ReturnToField); - sub_812B484(); - } - break; - } - - RunTasks(); - RunTextPrinters(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); -} - -static void SpriteCB_Egg_0(struct Sprite* sprite) -{ - if (++sprite->data[0] > 20) - { - sprite->callback = SpriteCB_Egg_1; - sprite->data[0] = 0; - } - else - { - sprite->data[1] = (sprite->data[1] + 20) & 0xFF; - sprite->pos2.x = Sin(sprite->data[1], 1); - if (sprite->data[0] == 15) - { - PlaySE(SE_BOWA); - StartSpriteAnim(sprite, 1); - CreateRandomEggShardSprite(); - } - } -} - -static void SpriteCB_Egg_1(struct Sprite* sprite) -{ - if (++sprite->data[2] > 30) - { - if (++sprite->data[0] > 20) - { - sprite->callback = SpriteCB_Egg_2; - sprite->data[0] = 0; - sprite->data[2] = 0; - } - else - { - sprite->data[1] = (sprite->data[1] + 20) & 0xFF; - sprite->pos2.x = Sin(sprite->data[1], 2); - if (sprite->data[0] == 15) - { - PlaySE(SE_BOWA); - StartSpriteAnim(sprite, 2); - } - } - } -} - -struct UnkStruct_82349CC -{ - u8 field_0; - u8 field_1; - u8 field_2; - u8 field_3; -}; - -extern const struct UnkStruct_82349CC gUnknown_82349CC[NUM_SPECIES]; - -static void SpriteCB_Egg_2(struct Sprite* sprite) -{ - if (++sprite->data[2] > 30) - { - if (++sprite->data[0] > 38) - { - u16 species; - - sprite->callback = SpriteCB_Egg_3; - sprite->data[0] = 0; - species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES); - gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0; - gSprites[sEggHatchData->pokeSpriteID].pos2.y = gUnknown_82349CC[species].field_1; - } - else - { - sprite->data[1] = (sprite->data[1] + 20) & 0xFF; - sprite->pos2.x = Sin(sprite->data[1], 2); - if (sprite->data[0] == 15) - { - PlaySE(SE_BOWA); - StartSpriteAnim(sprite, 2); - CreateRandomEggShardSprite(); - CreateRandomEggShardSprite(); - } - if (sprite->data[0] == 30) - PlaySE(SE_BOWA); - } - } -} - -static void SpriteCB_Egg_3(struct Sprite* sprite) -{ - if (++sprite->data[0] > 50) - { - sprite->callback = SpriteCB_Egg_4; - sprite->data[0] = 0; - } -} - -static void SpriteCB_Egg_4(struct Sprite* sprite) -{ - s16 i; - if (sprite->data[0] == 0) - BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0xFFFF); - if (sprite->data[0] < 4u) - { - for (i = 0; i <= 3; i++) - CreateRandomEggShardSprite(); - } - sprite->data[0]++; - if (!gPaletteFade.active) - { - PlaySE(SE_JIHANKI); - sprite->invisible = TRUE; - sprite->callback = SpriteCB_Egg_5; - sprite->data[0] = 0; - } -} - -static void SpriteCB_Egg_5(struct Sprite* sprite) -{ - if (sprite->data[0] == 0) - { - gSprites[sEggHatchData->pokeSpriteID].invisible = FALSE; - StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1); - } - if (sprite->data[0] == 8) - BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, 0xFFFF); - if (sprite->data[0] <= 9) - gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1; - if (sprite->data[0] > 40) - sprite->callback = SpriteCallbackDummy; - sprite->data[0]++; -} - -static void SpriteCB_EggShard(struct Sprite* sprite) -{ - sprite->data[4] += sprite->data[1]; - sprite->data[5] += sprite->data[2]; - - sprite->pos2.x = sprite->data[4] / 256; - sprite->pos2.y = sprite->data[5] / 256; - - sprite->data[2] += sprite->data[3]; - - if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data[2] > 0) - DestroySprite(sprite); -} - -static void CreateRandomEggShardSprite(void) -{ - u16 spriteAnimIndex; - - s16 velocity1 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][0]; - s16 velocity2 = sEggShardVelocities[sEggHatchData->eggShardVelocityID][1]; - sEggHatchData->eggShardVelocityID++; - spriteAnimIndex = Random() % 4; - CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex); -} - -static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex) -{ - u8 spriteID = CreateSprite(&sSpriteTemplate_EggShard, x, y, 4); - gSprites[spriteID].data[1] = data1; - gSprites[spriteID].data[2] = data2; - gSprites[spriteID].data[3] = data3; - StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex); -} - -static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed) -{ - FillWindowPixelBuffer(windowId, 0xFF); - sEggHatchData->textColor.fgColor = 0; - sEggHatchData->textColor.bgColor = 5; - sEggHatchData->textColor.shadowColor = 6; - AddTextPrinterParametrized2(windowId, 3, x, y, 1, 1, &sEggHatchData->textColor, speed, string); -} -*/ -#include "global.h" -#include "pokemon.h" -#include "egg_hatch.h" -#include "pokedex.h" -#include "constants/items.h" -#include "script.h" -#include "decompress.h" -#include "task.h" -#include "palette.h" -#include "main.h" -#include "event_data.h" -#include "sound.h" -#include "constants/songs.h" -#include "text.h" -#include "text_window.h" -#include "string_util.h" -#include "menu.h" -#include "trig.h" -#include "random.h" -#include "malloc.h" -#include "dma3.h" -#include "gpu_regs.h" -#include "bg.h" -#include "m4a.h" -#include "window.h" -#include "graphics.h" -#include "constants/abilities.h" -#include "constants/species.h" -#include "daycare.h" -#include "overworld.h" -#include "scanline_effect.h" -#include "field_weather.h" -#include "international_string_util.h" -#include "naming_screen.h" -#include "pokemon_storage_system.h" -#include "field_screen_effect.h" -#include "battle.h" // to get rid of later -#include "help_system.h" -#include "field_fadetransition.h" -#include "new_menu_helpers.h" struct EggHatchData { @@ -1128,7 +248,7 @@ static const struct BgTemplate sBgTemplates_EggHatch[2] = static const struct WindowTemplate sWinTemplates_EggHatch[2] = { { - .priority = 0, + .bg = 0, .tilemapLeft = 2, .tilemapTop = 15, .width = 26, @@ -1141,7 +261,7 @@ static const struct WindowTemplate sWinTemplates_EggHatch[2] = static const struct WindowTemplate sYesNoWinTemplate = { - .priority = 0, + .bg = 0, .tilemapLeft = 21, .tilemapTop = 9, .width = 5, diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index 599ef387b..1ec4e6157 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -153,7 +153,7 @@ const struct BgTemplate sBGTemplates[] = { const struct WindowTemplate sMainWindows[] = { { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x00, .tilemapTop = 0x00, .width = 0x1e, @@ -161,7 +161,7 @@ const struct WindowTemplate sMainWindows[] = { .paletteNum = 0x0f, .baseBlock = 0x0013 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x01, .tilemapTop = 0x0f, .width = 0x1c, @@ -169,7 +169,7 @@ const struct WindowTemplate sMainWindows[] = { .paletteNum = 0x0f, .baseBlock = 0x004f }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x00, .tilemapTop = 0x0f, .width = 0x1e, @@ -182,7 +182,7 @@ const struct WindowTemplate sMainWindows[] = { }; const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width28 = { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x01, .tilemapTop = 0x0f, .width = 0x1c, @@ -192,7 +192,7 @@ const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width28 = { }; const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width20 = { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x01, .tilemapTop = 0x0f, .width = 0x14, @@ -202,7 +202,7 @@ const struct WindowTemplate sWindowTemplate_PromptYesOrNo_Width20 = { }; const struct WindowTemplate sMysteryGiftMenuWindowTemplate = { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x01, .tilemapTop = 0x0f, .width = 0x13, @@ -212,7 +212,7 @@ const struct WindowTemplate sMysteryGiftMenuWindowTemplate = { }; const struct WindowTemplate sWindowTemplate_ThreeOptions = { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x08, .tilemapTop = 0x05, .width = 0x0e, @@ -222,7 +222,7 @@ const struct WindowTemplate sWindowTemplate_ThreeOptions = { }; const struct WindowTemplate sWindowTemplate_YesNoBox = { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x17, .tilemapTop = 0x0f, .width = 0x06, @@ -232,7 +232,7 @@ const struct WindowTemplate sWindowTemplate_YesNoBox = { }; const struct WindowTemplate sWindowTemplate_7by8 = { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x16, .tilemapTop = 0x0c, .width = 0x07, @@ -242,7 +242,7 @@ const struct WindowTemplate sWindowTemplate_7by8 = { }; const struct WindowTemplate sWindowTemplate_7by6 = { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x16, .tilemapTop = 0x0e, .width = 0x07, @@ -252,7 +252,7 @@ const struct WindowTemplate sWindowTemplate_7by6 = { }; const struct WindowTemplate sWindowTemplate_7by4 = { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x16, .tilemapTop = 0x0f, .width = 0x07, diff --git a/src/oak_speech.c b/src/oak_speech.c index 0100d76d3..75f636041 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -165,7 +165,7 @@ static const struct BgTemplate sBgTemplates[3] = { static const struct WindowTemplate sHelpDocsWindowTemplates1[] = { { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x00, .tilemapTop = 0x07, .width = 0x1e, @@ -177,7 +177,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates1[] = { static const struct WindowTemplate sHelpDocsWindowTemplates2[] = { { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x06, .tilemapTop = 0x03, .width = 0x18, @@ -185,7 +185,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates2[] = { .paletteNum = 0x0f, .baseBlock = 0x0001 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x06, .tilemapTop = 0x0a, .width = 0x18, @@ -193,7 +193,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates2[] = { .paletteNum = 0x0f, .baseBlock = 0x0092 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x06, .tilemapTop = 0x0f, .width = 0x18, @@ -205,7 +205,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates2[] = { static const struct WindowTemplate sHelpDocsWindowTemplates3[] = { { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x06, .tilemapTop = 0x03, .width = 0x18, @@ -213,7 +213,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates3[] = { .paletteNum = 0x0f, .baseBlock = 0x0001 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x06, .tilemapTop = 0x08, .width = 0x18, @@ -221,7 +221,7 @@ static const struct WindowTemplate sHelpDocsWindowTemplates3[] = { .paletteNum = 0x0f, .baseBlock = 0x0062 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x06, .tilemapTop = 0x0d, .width = 0x18, @@ -239,7 +239,7 @@ static const struct WindowTemplate *const sHelpDocsWindowTemplatePtrs[3] = { static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = { { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x01, .tilemapTop = 0x04, .width = 0x1c, @@ -247,7 +247,7 @@ static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = { .paletteNum = 0x0f, .baseBlock = 0x0001 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x12, .tilemapTop = 0x09, .width = 0x09, @@ -255,7 +255,7 @@ static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = { .paletteNum = 0x0f, .baseBlock = 0x0174 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x02, .tilemapTop = 0x02, .width = 0x06, @@ -263,7 +263,7 @@ static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = { .paletteNum = 0x0f, .baseBlock = 0x0180 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x02, .tilemapTop = 0x02, .width = 0x0c, diff --git a/src/quest_log.c b/src/quest_log.c index ea695d3af..b52de727e 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -2291,7 +2291,7 @@ void sub_8112E3C(u8 a0, struct UnkStruct_300201C * a1, u16 a2) } } -const u16 gUnknown_84566A8[][16] = INCBIN_U16("data/graphics/unknown_84566a8.bin"); +const u16 gUnknown_84566A8[] = INCBIN_U16("data/graphics/unknown_84566a8.bin"); const struct WindowTemplate gUnknown_8456928 = { 0x00, 0, 15, 30, 5, 15, 0x008F @@ -2349,7 +2349,7 @@ void sub_8112F18(u8 a0) else k = 5; CpuCopy32( - gUnknown_84566A8[k], // operand swap on "add" instruction + (void *)gUnknown_84566A8 + 32 * k, // operand swap on "add" instruction buffer + 32 * (i * width + j), 32 ); diff --git a/src/text_window.c b/src/text_window.c new file mode 100644 index 000000000..90db8f599 --- /dev/null +++ b/src/text_window.c @@ -0,0 +1,169 @@ +#include "global.h" +#include "bg.h" +#include "palette.h" +#include "text.h" +#include "window.h" +#include "text_window.h" +#include "text_window_graphics.h" +#include "quest_log.h" + +extern const u16 gUnknown_841F1C8[]; + +void sub_814FFC4(u8 windowId, u8 frameType, u16 destOffset, u8 palIdx); + +void sub_814FD04(u8 bgId, u16 destOffset, u8 palIdx) +{ + LoadBgTiles(bgId, gUnknown_84566A8, 0x280, destOffset); + LoadPalette(stdpal_get(2), palIdx, 32); +} + +void sub_814FD38(u8 bgId, u16 destOffset, u8 palIdx) +{ + LoadBgTiles(bgId, gUnknown_841F1C8, 0x280, destOffset); + LoadPalette(stdpal_get(0), palIdx, 32); +} + +void sub_814FD6C(u8 bgId, u16 destOffset, u8 palIdx) +{ + LoadBgTiles(bgId, gUnknown_8470B0C, 0x260, destOffset); + LoadPalette(stdpal_get(1), palIdx, 32); +} + +void sub_814FDA0(u8 bgId, u16 destOffset, u8 palIdx) +{ + LoadBgTiles(bgId, gUnknown_8471A4C, 0x120, destOffset); + LoadPalette(stdpal_get(3), palIdx, 32); +} + +void sub_814FDD4(u8 bgId, u16 destOffset) +{ + LoadBgTiles(bgId, gUnknown_8471B6C, 0x280, destOffset); +} + +void sub_814FDF4(u8 bgId, u8 frameType, u16 destOffset, u8 palIdx) +{ + LoadBgTiles(bgId, gUnknown_8471E8C[frameType].tiles, 0x120, destOffset); + LoadPalette(gUnknown_8471E8C[frameType].palette, palIdx, 32); +} + +void LoadUserWindowBorderGfx(u8 windowId, u16 destOffset, u8 palIdx) +{ + sub_814FFC4(windowId, gSaveBlock2Ptr->optionsWindowFrameType, destOffset, palIdx); +} + +void sub_814FE6C(u8 windowId, u16 destOffset, u8 palIdx) +{ + LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_84566A8, 0x280, destOffset); + LoadPalette(stdpal_get(2), palIdx, 32); +} + +void sub_814FEAC(u8 windowId, u16 destOffset, u8 palIdx) +{ + LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_841F1C8, 0x280, destOffset); + LoadPalette(stdpal_get(0), palIdx, 32); +} + +void sub_814FEEC(u8 windowId, u16 destOffset, u8 palIdx) +{ + LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8470B0C, 0x260, destOffset); + LoadPalette(stdpal_get(1), palIdx, 32); +} + +void sub_814FF2C(u8 windowId, u16 destOffset, u8 palIdx) +{ + LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471A4C, 0x120, destOffset); + LoadPalette(stdpal_get(3), palIdx, 32); +} + +void sub_814FF6C(u8 windowId, u16 destOffset) +{ + LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471A4C, 0x120, destOffset); +} + +void sub_814FF98(u8 windowId, u16 destOffset) +{ + LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471B6C, 0x280, destOffset); +} + +void sub_814FFC4(u8 windowId, u8 frameType, u16 destOffset, u8 palIdx) +{ + LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gUnknown_8471E8C[frameType].tiles, 0x120, destOffset); + LoadPalette(gUnknown_8471E8C[frameType].palette, palIdx, 32); +} + +void sub_815001C(u8 windowId, u16 destOffset, u8 palIdx) +{ + sub_814FFC4(windowId, gSaveBlock2Ptr->optionsWindowFrameType, destOffset, palIdx); +} + +void DrawTextBorderOuter(u8 windowId, u16 tileNum, u8 palNum) +{ + u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG); + u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT); + u16 tilemapTop = GetWindowAttribute(windowId, WINDOW_TILEMAP_TOP); + u16 width = GetWindowAttribute(windowId, WINDOW_WIDTH); + u16 height = GetWindowAttribute(windowId, WINDOW_HEIGHT); + + FillBgTilemapBufferRect(bgLayer, tileNum + 0, tilemapLeft - 1, tilemapTop - 1, 1, 1, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 1, tilemapLeft, tilemapTop - 1, width, 1, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 2, tilemapLeft + width, tilemapTop - 1, 1, 1, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 3, tilemapLeft - 1, tilemapTop, 1, height, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 5, tilemapLeft + width, tilemapTop, 1, height, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 6, tilemapLeft - 1, tilemapTop + height, 1, 1, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 7, tilemapLeft, tilemapTop + height, width, 1, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 8, tilemapLeft + width, tilemapTop + height, 1, 1, palNum); +} + +void DrawTextBorderInner(u8 windowId, u16 tileNum, u8 palNum) +{ + u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG); + u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT); + u16 tilemapTop = GetWindowAttribute(windowId, WINDOW_TILEMAP_TOP); + u16 width = GetWindowAttribute(windowId, WINDOW_WIDTH); + u16 height = GetWindowAttribute(windowId, WINDOW_HEIGHT); + + FillBgTilemapBufferRect(bgLayer, tileNum + 0, tilemapLeft, tilemapTop, 1, 1, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 1, tilemapLeft + 1, tilemapTop, width - 2, 1, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 2, tilemapLeft + width - 1, tilemapTop, 1, 1, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 3, tilemapLeft, tilemapTop + 1, 1, height - 2, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 5, tilemapLeft + width - 1, tilemapTop + 1, 1, height - 2, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 6, tilemapLeft, tilemapTop + height - 1, 1, 1, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 7, tilemapLeft + 1, tilemapTop + height - 1, width - 2, 1, palNum); + FillBgTilemapBufferRect(bgLayer, tileNum + 8, tilemapLeft + width - 1, tilemapTop + height - 1, 1, 1, palNum); +} + +void rbox_fill_rectangle(u8 windowId) +{ + u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG); + u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT); + u16 tilemapTop = GetWindowAttribute(windowId, WINDOW_TILEMAP_TOP); + u16 width = GetWindowAttribute(windowId, WINDOW_WIDTH); + u16 height = GetWindowAttribute(windowId, WINDOW_HEIGHT); + + FillBgTilemapBufferRect(bgLayer, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, 0x11); +} + +const u16 *stdpal_get(u8 id) +{ + switch (id) + { + case 0: + id = 0; + break; + case 1: + id = 0x10; + break; + case 2: + id = 0x20; + break; + case 3: + id = 0x30; + break; + case 4: + default: + id = 0x40; + break; + } + + return (const u16 *)(gUnknown_8471DEC) + id; +} diff --git a/src/window.c b/src/window.c index c4ea49956..9d38ba2c3 100644 --- a/src/window.c +++ b/src/window.c @@ -43,7 +43,7 @@ bool16 InitWindows(const struct WindowTemplate *templates) gWindows[i].tileData = NULL; } - for (i = 0, allocatedBaseBlock = 0, bgLayer = templates[i].priority; bgLayer != 0xFF && i < 0x20; ++i, bgLayer = templates[i].priority) + for (i = 0, allocatedBaseBlock = 0, bgLayer = templates[i].bg; bgLayer != 0xFF && i < 0x20; ++i, bgLayer = templates[i].bg) { if (gWindowTileAutoAllocEnabled == TRUE) { @@ -112,14 +112,14 @@ u16 AddWindow(const struct WindowTemplate *template) for (win = 0; win < 0x20; ++win) { - if ((bgLayer = gWindows[win].window.priority) == 0xFF) + if ((bgLayer = gWindows[win].window.bg) == 0xFF) break; } if (win == 0x20) return 0xFF; - bgLayer = template->priority; + bgLayer = template->bg; allocatedBaseBlock = 0; if (gWindowTileAutoAllocEnabled == TRUE) @@ -175,7 +175,7 @@ u16 AddWindow(const struct WindowTemplate *template) void RemoveWindow(u8 windowId) { - u8 bgLayer = gWindows[windowId].window.priority; + u8 bgLayer = gWindows[windowId].window.bg; if (gWindowTileAutoAllocEnabled == TRUE) { @@ -231,14 +231,14 @@ void CopyWindowToVram(u8 windowId, u8 mode) switch (mode) { case 1: - CopyBgTilemapBufferToVram(windowLocal.window.priority); + CopyBgTilemapBufferToVram(windowLocal.window.bg); break; case 2: - LoadBgTiles(windowLocal.window.priority, windowLocal.tileData, windowSize, windowLocal.window.baseBlock); + LoadBgTiles(windowLocal.window.bg, windowLocal.tileData, windowSize, windowLocal.window.baseBlock); break; case 3: - LoadBgTiles(windowLocal.window.priority, windowLocal.tileData, windowSize, windowLocal.window.baseBlock); - CopyBgTilemapBufferToVram(windowLocal.window.priority); + LoadBgTiles(windowLocal.window.bg, windowLocal.tileData, windowSize, windowLocal.window.baseBlock); + CopyBgTilemapBufferToVram(windowLocal.window.bg); break; } } @@ -248,8 +248,8 @@ void PutWindowTilemap(u8 windowId) struct Window windowLocal = gWindows[windowId]; WriteSequenceToBgTilemapBuffer( - windowLocal.window.priority, - GetBgAttribute(windowLocal.window.priority, 0xA) + windowLocal.window.baseBlock, + windowLocal.window.bg, + GetBgAttribute(windowLocal.window.bg, 0xA) + windowLocal.window.baseBlock, windowLocal.window.tilemapLeft, windowLocal.window.tilemapTop, windowLocal.window.width, @@ -261,13 +261,13 @@ void PutWindowTilemap(u8 windowId) void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette) { struct Window windowLocal = gWindows[windowId]; - u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.priority, 0xA); + u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, 0xA); int i; for (i = 0; i < height; ++i) { WriteSequenceToBgTilemapBuffer( - windowLocal.window.priority, + windowLocal.window.bg, currentRow, windowLocal.window.tilemapLeft + x, windowLocal.window.tilemapTop + y + i, @@ -285,7 +285,7 @@ void ClearWindowTilemap(u8 windowId) struct Window windowLocal = gWindows[windowId]; FillBgTilemapBufferRect( - windowLocal.window.priority, + windowLocal.window.bg, gWindowClearTile, windowLocal.window.tilemapLeft, windowLocal.window.tilemapTop, @@ -297,13 +297,13 @@ void ClearWindowTilemap(u8 windowId) void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height) { struct Window windowLocal = gWindows[windowId]; - u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.priority, 0xA); + u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, 0xA); int i; for (i = 0; i < height; ++i) { WriteSequenceToBgTilemapBuffer( - windowLocal.window.priority, + windowLocal.window.bg, currentRow, windowLocal.window.tilemapLeft + x, windowLocal.window.tilemapTop + y + i, @@ -1072,7 +1072,7 @@ _08004046:\n\ void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8)) { struct WindowTemplate window = gWindows[windowId].window; - func(window.priority, window.tilemapLeft, window.tilemapTop, window.width, window.height, window.paletteNum); + func(window.bg, window.tilemapLeft, window.tilemapTop, window.width, window.height, window.paletteNum); } bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value) @@ -1092,7 +1092,7 @@ bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value) gWindows[windowId].window.baseBlock = value; return FALSE; case WINDOW_TILE_DATA: - case WINDOW_PRIORITY: + case WINDOW_BG: case WINDOW_WIDTH: case WINDOW_HEIGHT: default: @@ -1104,8 +1104,8 @@ u32 GetWindowAttribute(u8 windowId, u8 attributeId) { switch (attributeId) { - case WINDOW_PRIORITY: - return gWindows[windowId].window.priority; + case WINDOW_BG: + return gWindows[windowId].window.bg; case WINDOW_TILEMAP_LEFT: return gWindows[windowId].window.tilemapLeft; case WINDOW_TILEMAP_TOP: @@ -1131,7 +1131,7 @@ static u8 GetNumActiveWindowsOnBg(u8 bgId) s32 i; for (i = 0; i < WINDOWS_MAX; i++) { - if (gWindows[i].window.priority == bgId) + if (gWindows[i].window.bg == bgId) windowsNum++; } return windowsNum; diff --git a/src/window_8bpp.c b/src/window_8bpp.c index 8e5d19565..c58c13802 100644 --- a/src/window_8bpp.c +++ b/src/window_8bpp.c @@ -21,12 +21,12 @@ u16 AddWindow8Bit(struct WindowTemplate *template) for (windowId = 0; windowId < 32; windowId++) { - if (gWindows[windowId].window.priority == 0xFF) + if (gWindows[windowId].window.bg == 0xFF) break; } if (windowId == WINDOWS_MAX) return 0xFF; - bgLayer = template->priority; + bgLayer = template->bg; if (gWindowBgTilemapBuffers[bgLayer] == 0) { u16 attribute = GetBgAttribute(bgLayer, 8); @@ -105,14 +105,14 @@ void CopyWindowToVram8Bit(u8 windowId, u8 mode) switch (mode) { case 1: - CopyBgTilemapBufferToVram(sWindowPtr->window.priority); + CopyBgTilemapBufferToVram(sWindowPtr->window.bg); break; case 2: - LoadBgTiles(sWindowPtr->window.priority, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock); + LoadBgTiles(sWindowPtr->window.bg, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock); break; case 3: - LoadBgTiles(sWindowPtr->window.priority, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock); - CopyBgTilemapBufferToVram(sWindowPtr->window.priority); + LoadBgTiles(sWindowPtr->window.bg, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock); + CopyBgTilemapBufferToVram(sWindowPtr->window.bg); break; } } @@ -123,7 +123,7 @@ static u8 GetNumActiveWindowsOnBg8Bit(u8 bgId) s32 i; for (i = 0; i < WINDOWS_MAX; i++) { - if (gWindows[i].window.priority == bgId) + if (gWindows[i].window.bg == bgId) windowsNum++; } return windowsNum; diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c index 4907bd6e1..baf44cafc 100644 --- a/src/wireless_communication_status_screen.c +++ b/src/wireless_communication_status_screen.c @@ -90,7 +90,7 @@ const struct BgTemplate gUnknown_846FA74[] = { const struct WindowTemplate gUnknown_846FA7C[] = { { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x03, .tilemapTop = 0x00, .width = 0x18, @@ -98,7 +98,7 @@ const struct WindowTemplate gUnknown_846FA7C[] = { .paletteNum = 0x0f, .baseBlock = 0x0001 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x03, .tilemapTop = 0x04, .width = 0x16, @@ -106,7 +106,7 @@ const struct WindowTemplate gUnknown_846FA7C[] = { .paletteNum = 0x0f, .baseBlock = 0x0049 }, { - .priority = 0x00, + .bg = 0x00, .tilemapLeft = 0x19, .tilemapTop = 0x04, .width = 0x02, |