From de9ba8e00dc91a8c98ebb6a321101d3d4fd79877 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 16:06:59 -0500 Subject: fix BuyMenuDrawGraphics --- src/field/shop.c | 65 ++++++++++++++++++++++++-------------------------------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/src/field/shop.c b/src/field/shop.c index 1dc6ba0cd..6ca515848 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -236,48 +236,41 @@ void sub_80B3094(void) void sub_80B30AC(void) { - void *addr; - void *addr2; - void *addr3; - u16 *tempArr; - u16 *tempArr2; - u16 *tempArr3; - LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - - // temp vars needed to match for some dumb reason - tempArr = gBGTilemapBuffers[1]; - addr = (void *)(VRAM + 0xE800); - DmaCopy16(3, tempArr, addr, 0x800); - tempArr2 = gBGTilemapBuffers[2]; - addr2 = (void *)(VRAM + 0xE000); - DmaCopy16(3, tempArr2, addr2, 0x800); - tempArr3 = gBGTilemapBuffers[3]; - addr3 = (void *)(VRAM + 0xF000); - DmaCopy16(3, tempArr3, addr3, 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[1], (void *)(VRAM + 0xE800), 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0xE000), 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[3], (void *)(VRAM + 0xF000), 0x800); } -// this function is fugly. pls fix void BuyMenuDrawGraphics(void) { - void *addr; - register u16 zero2 asm("r5"); - sub_80F9438(); ScanlineEffect_Stop(); - REG_BG1HOFS = (zero2 = 0); - REG_BG1VOFS = zero2; - REG_BG2HOFS = zero2; - REG_BG2VOFS = zero2; - REG_BG3HOFS = zero2; - REG_BG3VOFS = zero2; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; gPaletteFade.bufferTransferDisabled = 1; - addr = (void*)OAM; - { - register const u32 zero asm("r6") = 0; - DmaFill32(3, zero, addr, OAM_SIZE); + + /* + THEORY: This seemingly useless loop is required in order to match this + function without hacks. The reason is because it alters the 0 optimization + of a later assignment into using 2 different 0s instead of the same register. + It is speculated that at some point Game Freak insert an artificial + breakpoint here in order to look at the contents of OAM before it is cleared, + possibly because a programmer made a mistake in shop.c which corrupted its + contents. There may have been a macro here which at one point idled on the + while(1) but was changed to 0 for release due to a define somewhere. A + while(0) also matches, but it is more correct to use do {} while(0) as it + was a fix to prevent compiler warnings on older compilers. + */ + do {} while(0); + + DmaFill32Defvars(3, 0, (void*)OAM, OAM_SIZE); LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00)); LZDecompressWram(gBuyMenuFrame_Tilemap, ewram18000_2); LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal)); @@ -288,8 +281,8 @@ void BuyMenuDrawGraphics(void) Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC); InitMenuWindow(&gWindowTemplate_81E6DFC); BuyMenuDrawMapGraphics(); - gMartInfo.cursor = zero; - gMartInfo.choicesAbove = zero2; + gMartInfo.cursor = 0; + gMartInfo.choicesAbove = 0; Menu_EraseWindowRect(0, 0, 0x20, 0x20); OpenMoneyWindow(gSaveBlock1.money, 0, 0); sub_80B3764(0, 7); @@ -297,12 +290,10 @@ void BuyMenuDrawGraphics(void) sub_80B3270(); CreateTask(sub_80B40E8, 0x8); sub_80B3240(); - asm("":::"r4"); // what?? - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, zero); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); gPaletteFade.bufferTransferDisabled = 0; SetVBlankCallback(sub_80B30AC); SetMainCallback2(sub_80B3094); - } } void sub_80B3240(void) -- cgit v1.2.3 From 98be8bf60937cbb7f733e0e2308619cc7168e187 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 16:09:10 -0500 Subject: fix PrintFlyTargetName --- src/field/region_map.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/field/region_map.c b/src/field/region_map.c index a098eb73d..30d0d580c 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1608,8 +1608,8 @@ static void PrintFlyTargetName(void) { if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4) { - u16 i = 0; - int zero; + u16 i; + bool32 drawFrameDisabled = FALSE; for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++) { @@ -1627,9 +1627,8 @@ static void PrintFlyTargetName(void) break; } } - // This check is always true, but somehow the compiler still performed it. - asm("mov %0, #0\n":"=r"(zero)); // zero = 0 - if (zero == 0) + + if (!drawFrameDisabled) { Menu_DrawStdWindowFrame(16, 16, 29, 19); Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 17); -- cgit v1.2.3 From b05f8f4dc492a5e60dfaf8b01220bc4e1de2a675 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 16:12:08 -0500 Subject: tabs --- src/field/region_map.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/field/region_map.c b/src/field/region_map.c index 30d0d580c..1378820fe 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1609,7 +1609,7 @@ static void PrintFlyTargetName(void) if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4) { u16 i; - bool32 drawFrameDisabled = FALSE; + bool32 drawFrameDisabled = FALSE; for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++) { -- cgit v1.2.3 From bdb0628c913fe7f2e77598d6390f8f7d951b1703 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 15 Jan 2018 18:58:59 -0500 Subject: vertical scroll indicator labeling and more shop.c --- include/decoration.h | 2 +- include/item_menu.h | 2 +- include/menu_helpers.h | 27 +++- include/money.h | 2 +- include/shop.h | 18 ++- src/field/berry_tag_screen.c | 2 +- src/field/decoration.c | 24 ++-- src/field/field_specials.c | 24 ++-- src/field/item_menu.c | 84 ++++++------- src/field/menu_helpers.c | 120 +++++++++--------- src/field/money.c | 2 +- src/field/player_pc.c | 50 ++++---- src/field/pokeblock.c | 42 +++---- src/field/secret_base.c | 26 ++-- src/field/shop.c | 290 ++++++++++++++++++++++--------------------- src/field/trader.c | 4 +- src/field/tv.c | 22 ++-- src/pokemon/pokeblock_feed.c | 2 +- src/roulette.c | 6 +- 19 files changed, 389 insertions(+), 360 deletions(-) diff --git a/include/decoration.h b/include/decoration.h index 972e82faf..5e73df071 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -151,7 +151,7 @@ extern const struct YesNoFuncTable gUnknown_083EC634[]; extern const u8 gUnknown_083EC65A[]; extern const u8 gUnknown_083EC97C[]; extern const u8 gUnknown_083EC984[]; -extern void sub_80B3068(u8); // src/shop +extern void Shop_RunExitSellMenuTask(u8); // src/shop extern const struct YesNoFuncTable gUnknown_083EC95C; extern const struct YesNoFuncTable gUnknown_083EC964; extern const struct YesNoFuncTable gUnknown_083EC9CC; diff --git a/include/item_menu.h b/include/item_menu.h index 29618f347..726d36789 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -27,7 +27,7 @@ void CleanUpItemMenuMessage(u8); void CleanUpOverworldMessage(u8); void ExecuteItemUseFromBlackPalette(void); void sub_80A5D04(void); -void sub_80A6300(void); +void ItemMenu_LoadSellMenu(void); void sub_80A68CC(); void sub_80A6A30(void); bool32 sub_80A6D1C(void); diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 993d698bd..a1c872c73 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -9,7 +9,22 @@ struct YesNoFuncTable void (*noFunc)(u8); }; -void sub_80F9020(void); +// SetVerticalScrollIndicators enums +enum +{ + TOP_ARROW, + BOTTOM_ARROW, + LEFT_ARROW, // Bag arrows + RIGHT_ARROW +}; + +enum +{ + VISIBLE, + INVISIBLE +}; + +void ClearBGTilemapBuffers(void); void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); void DoYesNoFuncWithChoice(u8, const struct YesNoFuncTable *); void sub_80F914C(u8, const struct YesNoFuncTable *); @@ -19,21 +34,21 @@ bool8 sub_80F92F4(u16); bool8 sub_80F931C(u16); bool8 sub_80F9344(void); void sub_80F9368(void); -void sub_80F9438(void); -void sub_80F944C(void); +void ClearVideoCallbacks(void); +void ClearVerticalScrollIndicatorPalettes(void); void sub_80F9480(u8 *, u8); void sub_80F94A4(u8, u8 *, s16, s16); void sub_80F94F8(u8 *); void sub_80F9520(u8 *, u8); void CreateVerticalScrollIndicators(u8, u16, u16); -void sub_80F979C(u8, bool8); +void SetVerticalScrollIndicators(u8, bool8); void DestroyVerticalScrollIndicator(u8); void LoadScrollIndicatorPalette(void); void BuyMenuFreeMemory(void); -void sub_80F98A4(u8); +void StopVerticalScrollIndicators(u8); void StartVerticalScrollIndicators(u8); void sub_80F98DC(u8); void PauseVerticalScrollIndicator(u8); -void sub_80F9988(u8, u8); +void SetVerticalScrollIndicatorPriority(u8, u8); #endif // GUARD_MENU_HELPERS_H diff --git a/include/money.h b/include/money.h index 9f4ef71bc..e3a3f898d 100644 --- a/include/money.h +++ b/include/money.h @@ -7,7 +7,7 @@ void RemoveMoney(u32 *, u32); void GetMoneyAmountText(u8 *buffer, u32 arg1, u8 arg2); void PrintMoneyAmount(u32 arg0, u8 arg1, u8 x, u8 y); void sub_80B7AEC(u32, u8 left, u8 top); -void sub_80B7B34(u8, u8, int); +void Draw10000Sprite(u8, u8, int); void UpdateMoneyWindow(u32, u8, u8); void OpenMoneyWindow(u32, u8, u8); void CloseMoneyWindow(u8, u8); diff --git a/include/shop.h b/include/shop.h index b785ca764..8ab24c724 100644 --- a/include/shop.h +++ b/include/shop.h @@ -17,6 +17,14 @@ enum ANIM_NUM }; +// shop options +enum +{ + BUY, + SELL, + EXIT +}; + struct MartInfo { /* 0x0 */ void (* callback) (void); @@ -31,18 +39,18 @@ struct MartInfo void sub_80B2E38(u8); void HandleShopMenuQuit(u8); -void sub_80B2FA0(u8); +void Shop_FadeAndRunBuySellCallback(u8); void BuyMenuDrawGraphics(void); void sub_80B3240(void); void sub_80B3270(void); -void BuyMenuDrawMapGraphics(void); +void Shop_DrawViewport(void); void sub_80B3764(int, int); -void sub_80B37EC(void); +void Shop_PrintItemDesc(void); void sub_80B40E8(u8); void CreatePokemartMenu(u16 *); void CreateDecorationShop1Menu(u16 *); void CreateDecorationShop2Menu(u16 *); -void sub_80B356C(void); -void sub_80B368C(void); +void Shop_LoadViewportObjects(void); +void Shop_AnimViewportObjects(void); #endif // GUARD_SHOP_H diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index a05d9bf87..bec16334d 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -93,7 +93,7 @@ static bool8 sub_8146058(void) switch (gMain.state) { case 0: - sub_80F9438(); + ClearVideoCallbacks(); sub_80F9368(); sub_8146288(); REG_BLDCNT = 0; diff --git a/src/field/decoration.c b/src/field/decoration.c index a6c0bd21f..889e8e8a2 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -1614,7 +1614,7 @@ void sub_80FE604(u8 taskId) sub_8134104(gUnknown_020388F6); gUnknown_020388D0 = gDecorationInventories[gUnknown_020388F6].items; sub_80FEF50(taskId); - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); sub_80F9480(gUnknown_020388F7, 8); LoadScrollIndicatorPalette(); gTasks[taskId].func = sub_80FE868; @@ -1659,7 +1659,7 @@ void sub_80FE758(u8 taskId) gTasks[taskId].func = Task_DecorationPCProcessMenuInput; } else { - sub_80B3068(taskId); + Shop_RunExitSellMenuTask(taskId); } } @@ -1783,17 +1783,17 @@ void sub_80FEABC(u8 taskId, u8 dummy1) u16 i; u16 j; u8 ni; - if (gUnknown_020388F4 != 0 || (DestroyVerticalScrollIndicator(0), gUnknown_020388F4 != 0)) + if (gUnknown_020388F4 != 0 || (DestroyVerticalScrollIndicator(TOP_ARROW), gUnknown_020388F4 != 0)) { - CreateVerticalScrollIndicators(0, 0x3c, 0x08); + CreateVerticalScrollIndicators(TOP_ARROW, 0x3c, 0x08); } if (gUnknown_020388F4 + 7 == gUnknown_020388D5) { - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } if (gUnknown_020388F4 + 7 < gUnknown_020388D5) { - CreateVerticalScrollIndicators(1, 0x3c, 0x98); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0x3c, 0x98); } for (i=gUnknown_020388F4; i> 1 != 1) { gUnknown_0203925C |= 0x2; - CreateVerticalScrollIndicators(0, 0x24, 0x08); + CreateVerticalScrollIndicators(TOP_ARROW, 0x24, 0x08); } } @@ -1356,7 +1356,7 @@ void sub_810ECD4(void) if ((gUnknown_0203925C & 1) == 0) { gUnknown_0203925C |= 0x1; - CreateVerticalScrollIndicators(1, 0x24, 0x48); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0x24, 0x48); } } @@ -1428,11 +1428,11 @@ void sub_810EEDC(void) { if ((gUnknown_0203925C & 1) != 0) { - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } if ((gUnknown_0203925C >> 1) == 1) { - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); } BuyMenuFreeMemory(); } @@ -1542,7 +1542,7 @@ void ShowGlassWorkshopMenu(void) Menu_DrawStdWindowFrame(0, 0, 10, 11); InitMenu(0, 1, 1, 5, 0, 9); gUnknown_0203925C = 0; - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); sub_810F2B4(); for (i=0; i<5; i++) @@ -1721,7 +1721,7 @@ void sub_810F290(void) if (gUnknown_0203925C >> 1 != 1) { gUnknown_0203925C |= 0x02; - CreateVerticalScrollIndicators(0, 0x2c, 0x08); + CreateVerticalScrollIndicators(TOP_ARROW, 0x2c, 0x08); } } @@ -1730,7 +1730,7 @@ void sub_810F2B4(void) if (!(gUnknown_0203925C & 0x01)) { gUnknown_0203925C |= 0x01; - CreateVerticalScrollIndicators(1, 0x2c, 0x58); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0x2c, 0x58); } } @@ -1739,7 +1739,7 @@ void GlassWorkshopUpdateScrollIndicators(u8 newPos, u8 maxItems) if (newPos == 0) { gUnknown_0203925C ^= 0x02; - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); } else { @@ -1752,7 +1752,7 @@ void GlassWorkshopUpdateScrollIndicators(u8 newPos, u8 maxItems) else if (newPos + maxItems == gUnknown_0203925A) { gUnknown_0203925C ^= 0x01; - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } } diff --git a/src/field/item_menu.c b/src/field/item_menu.c index e0575af4c..e07021acd 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -34,12 +34,12 @@ #include "task.h" #include "text.h" #include "scanline_effect.h" +#include "menu_helpers.h" #include "ewram.h" // External stuff extern void gpu_pal_allocator_reset__manage_upper_four(void); -extern void sub_80F9020(void); -extern void sub_80F9988(); +extern void SetVerticalScrollIndicatorPriority(); extern void sub_809D104(u16 *, u16, u16, const u8 *, u16, u16, u16, u16); extern void PauseVerticalScrollIndicator(); extern u8 sub_80F9284(void); @@ -50,7 +50,7 @@ extern void pal_fill_black(void); extern bool8 sub_807D770(void); extern u8 sub_80F931C(); extern void sub_808A3F8(u8); -extern void sub_80B3050(void); +extern void Shop_InitExitSellMenu(void); extern void sub_80546B8(u8); extern void sub_804E990(u8); extern void sub_802E424(u8); @@ -392,7 +392,7 @@ static bool8 SetupBagMultistep(void) switch (gMain.state) { case 0: - sub_80F9438(); + ClearVideoCallbacks(); sub_80A34E8(); gMain.state++; break; @@ -405,7 +405,7 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 3: - sub_80F9020(); + ClearBGTilemapBuffers(); ewramBagSetupStep = 0; gMain.state++; break; @@ -437,20 +437,20 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 10: - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); - CreateVerticalScrollIndicators(0, 172, 12); - CreateVerticalScrollIndicators(1, 172, 148); - CreateVerticalScrollIndicators(2, 28, 88); - CreateVerticalScrollIndicators(3, 100, 88); - sub_80F9988(0, 2); - sub_80F9988(1, 2); - sub_80F9988(2, 2); - sub_80F9988(3, 2); + CreateVerticalScrollIndicators(TOP_ARROW, 172, 12); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 172, 148); + CreateVerticalScrollIndicators(LEFT_ARROW, 28, 88); + CreateVerticalScrollIndicators(RIGHT_ARROW, 100, 88); + SetVerticalScrollIndicatorPriority(TOP_ARROW, 2); + SetVerticalScrollIndicatorPriority(BOTTOM_ARROW, 2); + SetVerticalScrollIndicatorPriority(LEFT_ARROW, 2); + SetVerticalScrollIndicatorPriority(RIGHT_ARROW, 2); if (sReturnLocation == RETURN_TO_FIELD_4 || sReturnLocation == RETURN_TO_FIELD_5) { - sub_80F979C(2, 1); - sub_80F979C(3, 1); + SetVerticalScrollIndicators(LEFT_ARROW, INVISIBLE); + SetVerticalScrollIndicators(RIGHT_ARROW, INVISIBLE); } gMain.state++; break; @@ -657,10 +657,10 @@ static void sub_80A3770(void) static void sub_80A37C0(u8 taskId) { gTasks[taskId].func = sub_80A50C8; - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); - StartVerticalScrollIndicators(2); - StartVerticalScrollIndicators(3); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); + StartVerticalScrollIndicators(LEFT_ARROW); + StartVerticalScrollIndicators(RIGHT_ARROW); } static void sub_80A37F8(u8 taskId) @@ -702,8 +702,8 @@ static void sub_80A37F8(u8 taskId) sub_80A37C0(FindTaskIdByFunc(sub_80A4F68)); DestroyTask(taskId); ItemListMenu_InitMenu(); - sub_80F979C(2, 0); - sub_80F979C(3, 0); + SetVerticalScrollIndicators(LEFT_ARROW, VISIBLE); + SetVerticalScrollIndicators(RIGHT_ARROW, VISIBLE); } } @@ -1505,14 +1505,14 @@ static void sub_80A47E8(u16 a, int b, int c, int d) break; } if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop != 0) - sub_80F979C(0, 0); + SetVerticalScrollIndicators(TOP_ARROW, VISIBLE); else - sub_80F979C(0, 1); + SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); if ((sReturnLocation != RETURN_TO_FIELD_5 && gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 8 < gBagPocketScrollStates[sCurrentBagPocket].numSlots + 1) || (sReturnLocation == RETURN_TO_FIELD_5 && gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 8 < gBagPocketScrollStates[sCurrentBagPocket].numSlots)) - sub_80F979C(1, 0); + SetVerticalScrollIndicators(BOTTOM_ARROW, VISIBLE); else - sub_80F979C(1, 1); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); } static void sub_80A48E8(u16 taskId, int b, int c) @@ -1707,14 +1707,14 @@ static void sub_80A4DD8(u8 taskId, u8 b, u8 c, u8 d, u8 e, u8 digits) static void sub_80A4E8C(s8 delta, u8 b) { PlaySE(SE_SELECT); - sub_80F979C(0, 1); - sub_80F979C(1, 1); - sub_80F979C(2, 1); - sub_80F979C(3, 1); - PauseVerticalScrollIndicator(0); - PauseVerticalScrollIndicator(1); - PauseVerticalScrollIndicator(2); - PauseVerticalScrollIndicator(3); + SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); + SetVerticalScrollIndicators(LEFT_ARROW, INVISIBLE); + SetVerticalScrollIndicators(RIGHT_ARROW, INVISIBLE); + PauseVerticalScrollIndicator(TOP_ARROW); + PauseVerticalScrollIndicator(BOTTOM_ARROW); + PauseVerticalScrollIndicator(LEFT_ARROW); + PauseVerticalScrollIndicator(RIGHT_ARROW); ChangePocket(gBGTilemapBuffers[2], delta); DrawPocketIndicatorDots(gBGTilemapBuffers[2], sCurrentBagPocket); sub_80A3770(); @@ -1866,10 +1866,10 @@ static void sub_80A50C8(u8 taskId) gUnknown_02038560 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; gSpecialVar_ItemId = gCurrentBagPocketItemSlots[gUnknown_02038560].itemId; gUnknown_083C16BC[sReturnLocation].onItemSelect(taskId); - sub_80F98A4(0); - sub_80F98A4(1); - sub_80F98A4(2); - sub_80F98A4(3); + StopVerticalScrollIndicators(TOP_ARROW); + StopVerticalScrollIndicators(BOTTOM_ARROW); + StopVerticalScrollIndicators(LEFT_ARROW); + StopVerticalScrollIndicators(RIGHT_ARROW); sub_80A797C(); } else @@ -2963,7 +2963,7 @@ static void sub_80A62D8(void) gUnknown_02038563 = CreateTask(sub_80A50C8, 0); } -void sub_80A6300(void) +void ItemMenu_LoadSellMenu(void) { sReturnLocation = RETURN_TO_SHOP; SetMainCallback2(sub_80A62D8); @@ -2971,7 +2971,7 @@ void sub_80A6300(void) static void OnBagClose_Shop(u8 taskId) { - gFieldCallback = sub_80B3050; + gFieldCallback = Shop_InitExitSellMenu; gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; sub_80A5AE4(taskId); @@ -3523,8 +3523,8 @@ static void sub_80A7230(u8 taskId) break; case 204: PlaySE(SE_SELECT); - sub_80F98A4(2); - sub_80F98A4(3); + StopVerticalScrollIndicators(LEFT_ARROW); + StopVerticalScrollIndicators(RIGHT_ARROW); gSpecialVar_ItemId = ITEM_POKE_BALL; sPopupMenuActionList = gUnknown_083C1708; gUnknown_02038564 = 2; diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index 76f0d367e..54668addb 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -18,7 +18,7 @@ static void sub_80F9834(struct Sprite *sprite); -static EWRAM_DATA u8 gUnknown_020388C0[4] = {0}; +static EWRAM_DATA u8 gVerticalScrollIndicatorIds[4] = {0}; static EWRAM_DATA struct YesNoFuncTable gUnknown_020388C4 = {0}; static TaskFunc gUnknown_0300074C; @@ -125,7 +125,7 @@ static const struct SpriteTemplate gSpriteTemplate_83E5A00 = .callback = SpriteCallbackDummy, }; -void sub_80F9020(void) +void ClearBGTilemapBuffers(void) { memset(&gBGTilemapBuffers[1], 0, 0x800); memset(&gBGTilemapBuffers[2], 0, 0x800); @@ -331,19 +331,19 @@ void sub_80F9368(void) DmaClear16(3, PLTT, PLTT_SIZE); } -void sub_80F9438(void) +void ClearVideoCallbacks(void) { SetVBlankCallback(NULL); SetHBlankCallback(NULL); } -void sub_80F944C(void) +void ClearVerticalScrollIndicatorPalettes(void) { u8 i; for (i = 0; i < 4; i++) { - gUnknown_020388C0[i] = 0xFF; + gVerticalScrollIndicatorIds[i] = 0xFF; } FreeSpritePaletteByTag(SCROLL_INDICATOR_PAL_TAG); @@ -401,92 +401,92 @@ void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y) switch (id) { - case 0: - if (gUnknown_020388C0[0] == 0xFF) + case TOP_ARROW: + if (gVerticalScrollIndicatorIds[TOP_ARROW] == 0xFF) { - gUnknown_020388C0[0] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); - gSprites[gUnknown_020388C0[0]].data[2] = -1; - if (gUnknown_020388C0[1] != 0xFF) + gVerticalScrollIndicatorIds[TOP_ARROW] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); + gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[2] = -1; + if (gVerticalScrollIndicatorIds[BOTTOM_ARROW] != 0xFF) { - gSprites[gUnknown_020388C0[0]].pos2.y = gSprites[gUnknown_020388C0[1]].pos2.y * -1; - gSprites[gUnknown_020388C0[0]].data[3] = gSprites[gUnknown_020388C0[1]].data[3]; + gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].pos2.y = gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].pos2.y * -1; + gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[3] = gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[3]; } else { - gSprites[gUnknown_020388C0[0]].data[3] = 0; + gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[3] = 0; } } break; - case 1: - if (gUnknown_020388C0[1] == 0xFF) + case BOTTOM_ARROW: + if (gVerticalScrollIndicatorIds[BOTTOM_ARROW] == 0xFF) { - gUnknown_020388C0[1] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); - gSprites[gUnknown_020388C0[1]].data[2] = 1; - if (gUnknown_020388C0[0] != 0xFF) + gVerticalScrollIndicatorIds[BOTTOM_ARROW] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); + gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[2] = 1; + if (gVerticalScrollIndicatorIds[TOP_ARROW] != 0xFF) { - gSprites[gUnknown_020388C0[1]].pos2.y = gSprites[gUnknown_020388C0[0]].pos2.y * -1; - gSprites[gUnknown_020388C0[1]].data[3] = gSprites[gUnknown_020388C0[0]].data[3]; + gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].pos2.y = gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].pos2.y * -1; + gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[3] = gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[3]; } else { - gSprites[gUnknown_020388C0[1]].data[3] = 0; + gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[3] = 0; } } break; - case 2: - if (gUnknown_020388C0[2] == 0xFF) + case LEFT_ARROW: + if (gVerticalScrollIndicatorIds[LEFT_ARROW] == 0xFF) { - gUnknown_020388C0[2] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); - gSprites[gUnknown_020388C0[2]].data[0] = -1; - if (gUnknown_020388C0[3] != 0xFF) + gVerticalScrollIndicatorIds[LEFT_ARROW] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); + gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[0] = -1; + if (gVerticalScrollIndicatorIds[RIGHT_ARROW] != 0xFF) { - gSprites[gUnknown_020388C0[2]].pos2.x = gSprites[gUnknown_020388C0[3]].pos2.x * -1; - gSprites[gUnknown_020388C0[2]].data[1] = gSprites[gUnknown_020388C0[3]].data[1]; + gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].pos2.x = gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].pos2.x * -1; + gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[1] = gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[1]; } else { - gSprites[gUnknown_020388C0[2]].data[1] = 0; + gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[1] = 0; } } break; - case 3: - if (gUnknown_020388C0[3] == 0xFF) + case RIGHT_ARROW: + if (gVerticalScrollIndicatorIds[RIGHT_ARROW] == 0xFF) { - gUnknown_020388C0[3] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); - gSprites[gUnknown_020388C0[3]].data[0] = 1; - if (gUnknown_020388C0[2] != 0xFF) + gVerticalScrollIndicatorIds[RIGHT_ARROW] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); + gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[0] = 1; + if (gVerticalScrollIndicatorIds[LEFT_ARROW] != 0xFF) { - gSprites[gUnknown_020388C0[3]].pos2.x = gSprites[gUnknown_020388C0[2]].pos2.x * -1; - gSprites[gUnknown_020388C0[3]].data[1] = gSprites[gUnknown_020388C0[2]].data[1]; + gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].pos2.x = gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].pos2.x * -1; + gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[1] = gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[1]; } else { - gSprites[gUnknown_020388C0[3]].data[1] = 0; + gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[1] = 0; } } break; } - StartSpriteAnim(&gSprites[gUnknown_020388C0[id]], id & 1); + StartSpriteAnim(&gSprites[gVerticalScrollIndicatorIds[id]], id & 1); } -void sub_80F979C(u8 id, bool8 invisible) +void SetVerticalScrollIndicators(u8 id, bool8 invisible) { - if (id < 4 && gUnknown_020388C0[id] != 0xFF) + if (id < 4 && gVerticalScrollIndicatorIds[id] != 0xFF) { - gSprites[gUnknown_020388C0[id]].invisible = invisible; + gSprites[gVerticalScrollIndicatorIds[id]].invisible = invisible; } } void DestroyVerticalScrollIndicator(u8 id) { - if (id < 4 && gUnknown_020388C0[id] != 0xFF) + if (id < 4 && gVerticalScrollIndicatorIds[id] != 0xFF) { - DestroySprite(&gSprites[gUnknown_020388C0[id]]); - gUnknown_020388C0[id] = 0xFF; + DestroySprite(&gSprites[gVerticalScrollIndicatorIds[id]]); + gVerticalScrollIndicatorIds[id] = 0xFF; } } @@ -530,43 +530,43 @@ static void sub_80F9834(struct Sprite *sprite) } } -void sub_80F98A4(u8 id) +void StopVerticalScrollIndicators(u8 id) { - if (gUnknown_020388C0[id] != 0xFF && id < 4) + if (gVerticalScrollIndicatorIds[id] != 0xFF && id < 4) { - gSprites[gUnknown_020388C0[id]].callback = SpriteCallbackDummy; + gSprites[gVerticalScrollIndicatorIds[id]].callback = SpriteCallbackDummy; } } void StartVerticalScrollIndicators(u8 id) { - if (gUnknown_020388C0[id] != 0xFF && id < 4) + if (gVerticalScrollIndicatorIds[id] != 0xFF && id < 4) { - gSprites[gUnknown_020388C0[id]].callback = sub_80F9834; + gSprites[gVerticalScrollIndicatorIds[id]].callback = sub_80F9834; } } -static void sub_80F9914(u8 id) +static void ResetVerticalScrollIndicators(u8 id) { - if (gUnknown_020388C0[id] != 0xFF && id < 4) + if (gVerticalScrollIndicatorIds[id] != 0xFF && id < 4) { - gSprites[gUnknown_020388C0[id]].pos2.x = 0; - gSprites[gUnknown_020388C0[id]].pos2.y = 0; - gSprites[gUnknown_020388C0[id]].data[1] = 0; - gSprites[gUnknown_020388C0[id]].data[3] = 0; + gSprites[gVerticalScrollIndicatorIds[id]].pos2.x = 0; + gSprites[gVerticalScrollIndicatorIds[id]].pos2.y = 0; + gSprites[gVerticalScrollIndicatorIds[id]].data[1] = 0; + gSprites[gVerticalScrollIndicatorIds[id]].data[3] = 0; } } void PauseVerticalScrollIndicator(u8 id) { - sub_80F98A4(id); - sub_80F9914(id); + StopVerticalScrollIndicators(id); + ResetVerticalScrollIndicators(id); } -void sub_80F9988(u8 id, u8 priority) +void SetVerticalScrollIndicatorPriority(u8 id, u8 priority) { - if (gUnknown_020388C0[id] != 0xFF && id < 4) + if (gVerticalScrollIndicatorIds[id] != 0xFF && id < 4) { - gSprites[gUnknown_020388C0[id]].oam.priority = priority; + gSprites[gVerticalScrollIndicatorIds[id]].oam.priority = priority; } } diff --git a/src/field/money.c b/src/field/money.c index b85ed8009..6cd73f600 100644 --- a/src/field/money.c +++ b/src/field/money.c @@ -175,7 +175,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top) } __attribute__((naked)) -void sub_80B7B34(u8 var1, u8 var2, int var3) +void Draw10000Sprite(u8 var1, u8 var2, int var3) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 0d5c5234b..c6813b955 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -31,7 +31,7 @@ extern void LoadScrollIndicatorPalette(void); extern void ClearMailStruct(struct MailStruct *); extern u8 sub_807D770(void); extern void sub_808B020(void); -extern void sub_80F944C(void); +extern void ClearVerticalScrollIndicatorPalettes(void); static EWRAM_DATA const u8 *gPcItemMenuOptionOrder = NULL; @@ -563,8 +563,8 @@ static void ItemStorage_ProcessInput(u8 taskId) static void ItemStorage_GoBackToPlayerPCMenu(u8 taskId) { BuyMenuFreeMemory(); - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); Menu_EraseWindowRect(0, 0, 29, 19); Menu_DisplayDialogueFrame(); InitItemStorageMenu(TASK.CURRENT_ITEM_STORAGE_MENU); @@ -576,8 +576,8 @@ static void ItemStorage_DoItemAction(u8 taskId) s16 *data = TASK.data; u8 trueIndex = PAGE_INDEX + ITEMS_ABOVE_TOP; - PauseVerticalScrollIndicator(0); - PauseVerticalScrollIndicator(1); // PauseVerticalScrollIndicator + PauseVerticalScrollIndicator(TOP_ARROW); + PauseVerticalScrollIndicator(BOTTOM_ARROW); if(CURRENT_ITEM_STORAGE_MENU == ITEMPC_MENU_WITHDRAW) { @@ -663,8 +663,8 @@ static void ItemStorage_HandleQuantityRolling(u8 taskId) { PlaySE(SE_SELECT); Menu_EraseWindowRect(6, 6, 0xD, 0xB); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); // why not use trueIndex? TASK.FUNC = ItemStorage_ProcessInput; } @@ -724,8 +724,8 @@ static void ItemStorage_ResumeInputFromNoToss(u8 taskId) Menu_EraseWindowRect(0x6, 0x6, 0xD, 0xB); InitMenu(0, 16, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); TASK.FUNC = ItemStorage_ProcessInput; } @@ -757,8 +757,8 @@ static void ItemStorage_WaitPressHandleResumeProcessInput(u8 taskId) if(gMain.newKeys & A_BUTTON || gMain.newKeys == B_BUTTON) { ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); TASK.FUNC = ItemStorage_ProcessInput; } } @@ -766,8 +766,8 @@ static void ItemStorage_WaitPressHandleResumeProcessInput(u8 taskId) static void ItemStorage_HandleResumeProcessInput(u8 taskId) { Menu_EraseWindowRect(0x6, 0x6, 0xD, 0xB); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); ItemStorage_DrawBothListAndDescription(taskId); TASK.FUNC = ItemStorage_ProcessInput; } @@ -903,14 +903,14 @@ static void ItemStorage_DrawItemList(u8 taskId) Menu_BlankWindowRect(16, yCoord + 4, 0x1C, 0x12); if (ITEMS_ABOVE_TOP != 0) - CreateVerticalScrollIndicators(0, 0xB8, 8); + CreateVerticalScrollIndicators(TOP_ARROW, 0xB8, 8); else - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); if (ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS <= NUM_ITEMS) - CreateVerticalScrollIndicators(1, 0xB8, 0x98); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xB8, 0x98); else - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } static void ItemStorage_PrintItemPcResponse(u16 itemId) @@ -974,7 +974,7 @@ static void ItemStorage_GoBackToItemPCMenu(u8 taskId, u8 var) { s16 *data = TASK.data; - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); ItemStorage_LoadPalette(); Menu_DrawStdWindowFrame(0xF, 0, 0x1D, 0x13); @@ -1055,19 +1055,19 @@ static void Mailbox_DrawMailList(u8 taskId) // taskId is unused Menu_BlankWindowRect(0x15, yCoord + 4, 0x1C, 0x12); if (eMailboxInfo.itemsAbove != 0) - CreateVerticalScrollIndicators(0, 0xC8, 8); + CreateVerticalScrollIndicators(TOP_ARROW, 0xC8, 8); else - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); if (eMailboxInfo.itemsAbove + eMailboxInfo.pageItems <= eMailboxInfo.count) - CreateVerticalScrollIndicators(1, 0xC8, 0x98); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xC8, 0x98); else - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } static void Mailbox_DrawMailboxMenu(u8 taskId) { - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); Menu_EraseWindowRect(0, 0, 0x1D, 0x13); Menu_DrawStdWindowFrame(0, 0, 0x8, 0x3); @@ -1137,8 +1137,8 @@ static void Mailbox_ProcessInput(u8 taskId) static void Mailbox_CloseScrollIndicators(void) { BuyMenuFreeMemory(); - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId) diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 7e8bdc2ce..31bdcc398 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -1,7 +1,3 @@ -// - -// - #include "global.h" #include "overworld.h" #include "sprite.h" @@ -248,7 +244,7 @@ static bool8 sub_810B6C0(void) switch (gMain.state) { case 0: - sub_80F9438(); + ClearVideoCallbacks(); sub_80F9368(); REG_BG2CNT = BGCNT_SCREENBASE(15) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(2); REG_BLDCNT = 0; @@ -310,10 +306,10 @@ static bool8 sub_810B6C0(void) } break; case 12: - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); - CreateVerticalScrollIndicators(0, 0xb0, 0x08); - CreateVerticalScrollIndicators(1, 0xb0, 0x98); + CreateVerticalScrollIndicators(TOP_ARROW, 0xb0, 0x08); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xb0, 0x98); gMain.state++; break; case 13: @@ -560,19 +556,19 @@ static void sub_810BDAC(bool8 flag) } if (gUnknown_02039248.unk1) { - sub_80F979C(0, 0); + SetVerticalScrollIndicators(TOP_ARROW, VISIBLE); } else { - sub_80F979C(0, 1); + SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); } if (gUnknown_02039248.unk2 > gUnknown_02039248.unk3 && gUnknown_02039248.unk1 + gUnknown_02039248.unk3 != gUnknown_02039248.unk2) { - sub_80F979C(1, 0); + SetVerticalScrollIndicators(BOTTOM_ARROW, VISIBLE); } else { - sub_80F979C(1, 1); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); } for (i=0; i<5; i++) { @@ -776,8 +772,8 @@ static void sub_810C23C(u8 taskId) static void sub_810C2B0(void) { - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); BuyMenuFreeMemory(); } @@ -810,8 +806,8 @@ static void sub_810C368(u8 taskId) int v0 = 0; if (gUnknown_02039244 > 1) v0 = 2; - sub_80F98A4(0); - sub_80F98A4(1); + StopVerticalScrollIndicators(TOP_ARROW); + StopVerticalScrollIndicators(BOTTOM_ARROW); BasicInitMenuWindow(&gWindowTemplate_81E6E50); Menu_DrawStdWindowFrame(7, v0 + 4, 13, 11); Menu_PrintItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); @@ -878,7 +874,7 @@ static void sub_810C540(u8 taskId) static void sub_810C5C0(u8 taskId) { - sub_80F979C(1, 1); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); gTasks[taskId].func = sub_810C540; } @@ -900,11 +896,11 @@ static void sub_810C610(u8 taskId) static void sub_810C668(u8 taskId) { - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); if (gUnknown_02039248.unk2 > gUnknown_02039248.unk3 && gUnknown_02039248.unk1 + gUnknown_02039248.unk3 != gUnknown_02039248.unk2) { - sub_80F979C(1, 0); + SetVerticalScrollIndicators(BOTTOM_ARROW, VISIBLE); } BasicInitMenuWindow(&gWindowTemplate_81E6E50); Menu_EraseWindowRect(7, 6, 13, 11); @@ -924,14 +920,14 @@ static void sub_810C704(u8 taskId) { BasicInitMenuWindow(&gWindowTemplate_81E6E34); sub_810BC84(gUnknown_02039248.unk1); - sub_80F979C(1, 1); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); gTasks[taskId].func = sub_810C6DC; } static void sub_810C748(u8 taskId) { - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); Menu_DestroyCursor(); Menu_EraseWindowRect(7, 4, 13, 11); gTasks[taskId].func = sub_810BF7C; diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 203b57867..311cb614a 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -895,7 +895,7 @@ void Task_SecretBasePC_Registry(u8 taskId) s16 *taskData; ScriptContext2_Enable(); - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); taskData = gTasks[taskId].data; @@ -959,17 +959,17 @@ void sub_80BC6B0(u8 taskId) { Menu_BlankWindowRect(18, 2 * n + 2, 28, 2 * n + 3); Menu_PrintText(gUnknownText_Exit, 18, 2 * n + 2); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); if (n != 7) Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match } else - CreateVerticalScrollIndicators(1, 0xbc, 0x98); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xbc, 0x98); if (taskData[2] == 0) - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); else - CreateVerticalScrollIndicators(0, 0xbc, 0x08); + CreateVerticalScrollIndicators(TOP_ARROW, 0xbc, 0x08); } void sub_80BC7D8(u8 taskId) @@ -1064,8 +1064,8 @@ u8 sub_80BC948(u8 a) void sub_80BC980(u8 taskId) { - PauseVerticalScrollIndicator(0); - PauseVerticalScrollIndicator(1); + PauseVerticalScrollIndicator(TOP_ARROW); + PauseVerticalScrollIndicator(BOTTOM_ARROW); Menu_DrawStdWindowFrame(1, 0, 12, 5); Menu_PrintItems(2, 1, 2, (const struct MenuAction *)gUnknown_083D13D4); InitMenu(0, 2, 1, 2, 0, 10); @@ -1106,8 +1106,8 @@ void sub_80BCA84(u8 taskId) { s16 *taskData = gTasks[taskId].data; - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); @@ -1165,8 +1165,8 @@ void sub_80BCBF8(u8 taskId) InitMenu(0, 18, 2, taskData[3] + 1, taskData[1], 11); Menu_EraseWindowRect(1, 0, 12, 5); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); gTasks[taskId].func = sub_80BC824; } @@ -1176,8 +1176,8 @@ void sub_80BCC54(u8 taskId) u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE); BuyMenuFreeMemory(); - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); if (curBaseIndex == 0) { diff --git a/src/field/shop.c b/src/field/shop.c index 6ca515848..ab529d9a2 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -34,45 +34,45 @@ extern u8 gBuyMenuFrame_Gfx[]; extern u16 gBuyMenuFrame_Tilemap[]; extern u16 gMenuMoneyPal[16]; -void sub_80B39D0(int var1, int var2, bool32 hasControlCode); -void sub_80B3A70(void); -void sub_80B4378(u8); +void Shop_DisplayPriceInList(int var1, int var2, bool32 hasControlCode); +void Shop_PrintItemDescText(void); +void Shop_ReturnToBuyMenu(u8); void sub_80B43F0(u8); void Task_ExitBuyMenu(u8); void sub_80B4470(u8); -void sub_80B2EFC(u8 taskId); -void sub_80B2F30(u8 taskId); +void HandleShopMenuBuy(u8 taskId); +void HandleShopMenuSell(u8 taskId); void HandleShopMenuQuit(u8 taskId); -void sub_80B3BF4(u8 taskId); -void sub_80B3D7C(u8 taskId); +void Shop_DoItemPurchase(u8 taskId); +void Shop_CancelItemPurchase(u8 taskId); // iwram static struct MartInfo gMartInfo; // ewram EWRAM_DATA u32 gMartTotalCost = 0; -EWRAM_DATA s16 gUnknown_020386A4[16][4] = {0}; -EWRAM_DATA struct ItemSlot gUnknown_02038724[3] = {0}; // tv.c uses this, so it cant be static -EWRAM_DATA u8 gUnknown_02038730 = 0; +EWRAM_DATA s16 gMartViewportObjects[16][4] = {0}; +EWRAM_DATA struct ItemSlot gMartPurchaseHistory[3] = {0}; +EWRAM_DATA u8 gMartPurchaseHistoryId = 0; EWRAM_DATA u8 gUnknown_02038731 = 0; // rodata static const struct MenuAction2 sBuySellQuitMenuActions[] = { - { MartText_Buy, sub_80B2EFC }, - { MartText_Sell, sub_80B2F30 }, + { MartText_Buy, HandleShopMenuBuy }, + { MartText_Sell, HandleShopMenuSell }, { MartText_Quit2, HandleShopMenuQuit }, }; -static const u8 gUnknown_083CC6E8[] = {0, 1, 2}; // BUY SELL EXIT -static const u8 gUnknown_083CC6EB[] = {0, 2}; // BUY EXIT +static const u8 gMartBuySellOptionList[] = {BUY, SELL, EXIT}; +static const u8 gMartBuyNoSellOptionList[] = {BUY, EXIT}; static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, 0xE, 0xE, 0xE, 0x0, 0x0}; -static const struct YesNoFuncTable gUnknown_083CC708[] = +static const struct YesNoFuncTable sShopPurchaseYesNoFuncs[] = { - sub_80B3BF4, - sub_80B3D7C + Shop_DoItemPurchase, + Shop_CancelItemPurchase }; u8 CreateShopMenu(u8 martType) @@ -85,13 +85,13 @@ u8 CreateShopMenu(u8 martType) { gMartInfo.numChoices = 2; Menu_DrawStdWindowFrame(0, 0, 10, 7); - Menu_PrintItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8); + Menu_PrintItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gMartBuySellOptionList); } else { gMartInfo.numChoices = 1; Menu_DrawStdWindowFrame(0, 0, 10, 5); - Menu_PrintItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB); + Menu_PrintItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gMartBuyNoSellOptionList); } InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel @@ -142,11 +142,11 @@ void sub_80B2E38(u8 var) PlaySE(SE_SELECT); if (gMartInfo.martType == MART_TYPE_0) { - sBuySellQuitMenuActions[gUnknown_083CC6E8[gMartInfo.cursor]].func(local); + sBuySellQuitMenuActions[gMartBuySellOptionList[gMartInfo.cursor]].func(local); } else { - sBuySellQuitMenuActions[gUnknown_083CC6EB[gMartInfo.cursor]].func(local); + sBuySellQuitMenuActions[gMartBuyNoSellOptionList[gMartInfo.cursor]].func(local); } } else if (gMain.newKeys & B_BUTTON) @@ -156,19 +156,19 @@ void sub_80B2E38(u8 var) } } -void sub_80B2EFC(u8 taskId) +void HandleShopMenuBuy(u8 taskId) { gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; - gTasks[taskId].func = sub_80B2FA0; + gTasks[taskId].func = Shop_FadeAndRunBuySellCallback; fade_screen(1, 0); } -void sub_80B2F30(u8 taskId) +void HandleShopMenuSell(u8 taskId) { - gTasks[taskId].data[8] = (u32)sub_80A6300 >> 16; - gTasks[taskId].data[9] = (u32)sub_80A6300; - gTasks[taskId].func = sub_80B2FA0; + gTasks[taskId].data[8] = (u32)ItemMenu_LoadSellMenu >> 16; + gTasks[taskId].data[9] = (u32)ItemMenu_LoadSellMenu; + gTasks[taskId].func = Shop_FadeAndRunBuySellCallback; fade_screen(1, 0); } @@ -184,7 +184,7 @@ void HandleShopMenuQuit(u8 taskId) gMartInfo.callback(); // run the callback if it exists. } -void sub_80B2FA0(u8 taskId) +void Shop_FadeAndRunBuySellCallback(u8 taskId) { if (!gPaletteFade.active) { @@ -210,23 +210,24 @@ void Task_ExitSellMenu(u8 taskId) } } -void sub_80B3050(void) +void Shop_InitExitSellMenu(void) { pal_fill_black(); CreateTask(Task_ExitSellMenu, 0x8); } -void sub_80B3068(u8 taskId) +void Shop_RunExitSellMenuTask(u8 taskId) { Task_ExitSellMenu(taskId); } -void unref_sub_80B3078(u8 taskId) +// unused +void Shop_LoadExitSellMenuTask(u8 taskId) { gTasks[taskId].func = Task_ExitSellMenu; } -void sub_80B3094(void) +static void MainCB2(void) { AnimateSprites(); BuildOamBuffer(); @@ -234,7 +235,7 @@ void sub_80B3094(void) UpdatePaletteFade(); } -void sub_80B30AC(void) +static void VBlankCB(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -246,7 +247,7 @@ void sub_80B30AC(void) void BuyMenuDrawGraphics(void) { - sub_80F9438(); + ClearVideoCallbacks(); ScanlineEffect_Stop(); REG_BG1HOFS = 0; REG_BG1VOFS = 0; @@ -280,53 +281,55 @@ void BuyMenuDrawGraphics(void) ResetTasks(); Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC); InitMenuWindow(&gWindowTemplate_81E6DFC); - BuyMenuDrawMapGraphics(); + Shop_DrawViewport(); gMartInfo.cursor = 0; gMartInfo.choicesAbove = 0; Menu_EraseWindowRect(0, 0, 0x20, 0x20); OpenMoneyWindow(gSaveBlock1.money, 0, 0); sub_80B3764(0, 7); - sub_80B37EC(); + Shop_PrintItemDesc(); sub_80B3270(); CreateTask(sub_80B40E8, 0x8); sub_80B3240(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); gPaletteFade.bufferTransferDisabled = 0; - SetVBlankCallback(sub_80B30AC); - SetMainCallback2(sub_80B3094); + SetVBlankCallback(VBlankCB); + SetMainCallback2(MainCB2); } void sub_80B3240(void) { - u16 tempArr[2] = {0x41EE, 0x7FFF}; + u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE}; - LoadPalette(&tempArr[1], 0xD1, 2); - LoadPalette(&tempArr[0], 0xD8, 2); + LoadPalette(&colors[1], 0xD1, sizeof colors[1]); + LoadPalette(&colors[0], 0xD8, sizeof colors[0]); } void sub_80B3270(void) { - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); if (gMartInfo.itemCount > 7) { - CreateVerticalScrollIndicators(0, 172, 12); - CreateVerticalScrollIndicators(1, 172, 148); - sub_80F979C(0, 1); + CreateVerticalScrollIndicators(TOP_ARROW, 172, 12); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 172, 148); + SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); } } -void sub_80B32A4(void) +void Shop_TryDrawVerticalScrollIndicators(void) { + // TOP ARROW if (gMartInfo.choicesAbove == 0) - sub_80F979C(0, 1); + SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); else - sub_80F979C(0, 0); + SetVerticalScrollIndicators(TOP_ARROW, VISIBLE); + // DOWN ARROW if (gMartInfo.choicesAbove + 7 >= gMartInfo.itemCount) - sub_80F979C(1, 1); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); else - sub_80F979C(1, 0); + SetVerticalScrollIndicators(BOTTOM_ARROW, VISIBLE); } void sub_80B32EC(u16 *array, s16 offset1, s16 offset2) @@ -375,7 +378,7 @@ void sub_80B33D0(s16 var1, int var2, u16 *var3) BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); } -void sub_80B3420(void) +void Shop_DrawViewportTiles(void) { s16 facingX; s16 facingY; @@ -415,15 +418,15 @@ void sub_80B3420(void) } } -void BuyMenuDrawMapGraphics(void) +void Shop_DrawViewport(void) { - sub_80F9020(); - sub_80B356C(); - sub_80B368C(); - sub_80B3420(); + ClearBGTilemapBuffers(); + Shop_LoadViewportObjects(); + Shop_AnimViewportObjects(); + Shop_DrawViewportTiles(); } -void sub_80B356C(void) +void Shop_LoadViewportObjects(void) { s16 facingX; s16 facingY; @@ -435,7 +438,7 @@ void sub_80B356C(void) GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); playerHeight = PlayerGetZCoord(); for (y = 0; y < 16; y++) - gUnknown_020386A4[y][MAP_OBJ_ID] = 16; + gMartViewportObjects[y][MAP_OBJ_ID] = 16; for (y = 0; y < 5; y++) { for (x = 0; x < 7; x++) @@ -444,39 +447,39 @@ void sub_80B356C(void) if (mapObjId != 16) { - gUnknown_020386A4[r8][MAP_OBJ_ID] = mapObjId; - gUnknown_020386A4[r8][X_COORD] = x; - gUnknown_020386A4[r8][Y_COORD] = y; + gMartViewportObjects[r8][MAP_OBJ_ID] = mapObjId; + gMartViewportObjects[r8][X_COORD] = x; + gMartViewportObjects[r8][Y_COORD] = y; if (gMapObjects[mapObjId].mapobj_unk_18 == 1) - gUnknown_020386A4[r8][ANIM_NUM] = 0; + gMartViewportObjects[r8][ANIM_NUM] = 0; if (gMapObjects[mapObjId].mapobj_unk_18 == 2) - gUnknown_020386A4[r8][ANIM_NUM] = 1; + gMartViewportObjects[r8][ANIM_NUM] = 1; if (gMapObjects[mapObjId].mapobj_unk_18 == 3) - gUnknown_020386A4[r8][ANIM_NUM] = 2; + gMartViewportObjects[r8][ANIM_NUM] = 2; if (gMapObjects[mapObjId].mapobj_unk_18 == 4) - gUnknown_020386A4[r8][ANIM_NUM] = 3; + gMartViewportObjects[r8][ANIM_NUM] = 3; r8++; } } } } -void sub_80B368C(void) +void Shop_AnimViewportObjects(void) { u8 i; for (i = 0; i < 16; i++) // max objects? { - if (gUnknown_020386A4[i][MAP_OBJ_ID] == 16) + if (gMartViewportObjects[i][MAP_OBJ_ID] == 16) continue; StartSpriteAnim(&gSprites[AddPseudoFieldObject( - gMapObjects[gUnknown_020386A4[i][MAP_OBJ_ID]].graphicsId, + gMapObjects[gMartViewportObjects[i][MAP_OBJ_ID]].graphicsId, SpriteCallbackDummy, - (u16)gUnknown_020386A4[i][X_COORD] * 16 + 8, - (u16)gUnknown_020386A4[i][Y_COORD] * 16 + 32, + (u16)gMartViewportObjects[i][X_COORD] * 16 + 8, + (u16)gMartViewportObjects[i][Y_COORD] * 16 + 32, 2)], - gUnknown_020386A4[i][ANIM_NUM]); + gMartViewportObjects[i][ANIM_NUM]); } } @@ -494,7 +497,7 @@ void sub_80B3720(void) void sub_80B3764(int var1, int var2) { sub_80B3720(); - sub_80B39D0(var1, var2, 0); + Shop_DisplayPriceInList(var1, var2, 0); InitMenu(0, 0xE, 0x2, 0x8, gMartInfo.cursor, 0xF); } @@ -507,27 +510,29 @@ void sub_80B379C(void) gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18300[32 * i + j] + 0xC3E0; } -void sub_80B37EC(void) +void Shop_PrintItemDesc(void) { - sub_80B3A70(); + Shop_PrintItemDescText(); } -void sub_80B37F8(u8 taskId) +#define tItemCount data[1] + +void Shop_DisplayPriceInCheckoutWindow(u8 taskId) { u16 itemListIndex = gMartInfo.choicesAbove + gMartInfo.cursor; u16 itemId = gMartInfo.itemList[itemListIndex]; u32 price = (ItemId_GetPrice(itemId) >> GetPriceReduction(1)); - PrintMoneyAmount(gTasks[taskId].data[1] * price, 6, 6, 11); + PrintMoneyAmount(gTasks[taskId].tItemCount * price, 6, 6, 11); gStringVar1[0] = EXT_CTRL_CODE_BEGIN; gStringVar1[1] = 0x14; gStringVar1[2] = 0x6; - ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].data[1], 1, 2); + ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].tItemCount, 1, 2); Menu_PrintText(gOtherText_xString1, 1, 11); sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1); } -void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode) +void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) { u8 *stringPtr = gStringVar1; @@ -551,7 +556,7 @@ void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode) Menu_PrintTextPixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); } -void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) +void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) { u8 *stringPtr = gStringVar1; @@ -570,9 +575,12 @@ void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) if (hasControlCode != FALSE) stringPtr = &gStringVar1[3]; + // some names are the maximum string length for a shop item. Because there is no room for + // a 6 character price (including the currency), a sprite is instead used for anything that + // is the maximum decoration price in order to fit it on screen. if (gDecorations[itemId].price == 10000) { - sub_80B7B34(0x19, var2, hasControlCode); // huh??? + Draw10000Sprite(0x19, var2, hasControlCode); } else { @@ -581,16 +589,16 @@ void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) } } -void sub_80B39D0(int var1, int var2, bool32 hasControlCode) +void Shop_DisplayPriceInList(int var1, int var2, bool32 hasControlCode) { u8 i; for (i = var1; i <= var2 && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++) { if (gMartInfo.martType == MART_TYPE_0) - sub_80B389C(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); + Shop_DisplayNormalPriceInList(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); else - sub_80B3930(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); + Shop_DisplayDecorationPriceInList(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); } if (i != 8 && gMartInfo.choicesAbove + i == gMartInfo.itemCount) @@ -600,7 +608,7 @@ void sub_80B39D0(int var1, int var2, bool32 hasControlCode) } } -void sub_80B3A70(void) +void Shop_PrintItemDescText(void) { if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) { @@ -623,13 +631,13 @@ void sub_80B3AEC(u8 taskId) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { - sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // huh??? + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); PlaySE(SE_SELECT); - if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].data[1] >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE) - DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, sub_80B4378, 0xC3E1); + if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].tItemCount >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE) + DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, Shop_ReturnToBuyMenu, 0xC3E1); else - sub_80B4378(taskId); + Shop_ReturnToBuyMenu(taskId); } } @@ -644,22 +652,22 @@ void sub_80B3B80(u8 taskId) void sub_80B3BD0(u8 taskId) { - sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above? - sub_80B4378(taskId); + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above? + Shop_ReturnToBuyMenu(taskId); } -void sub_80B3BF4(u8 taskId) +void Shop_DoItemPurchase(u8 taskId) { Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); sub_80B379C(); - sub_80B3420(); + Shop_DrawViewportTiles(); if (IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) { if (gMartInfo.martType == MART_TYPE_0) { - if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].data[1])) + if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].tItemCount)) { DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, sub_80B3B80, 0xC3E1); sub_80B4470(taskId); @@ -687,43 +695,43 @@ void sub_80B3BF4(u8 taskId) DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); } -void sub_80B3D38(u8 taskId) +void Shop_DoYesNoPurchase(u8 taskId) { DisplayYesNoMenu(7, 8, 1); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0xC3E1); - DoYesNoFuncWithChoice(taskId, gUnknown_083CC708); + DoYesNoFuncWithChoice(taskId, sShopPurchaseYesNoFuncs); } -void sub_80B3D7C(u8 taskId) +void Shop_CancelItemPurchase(u8 taskId) { - sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0); - sub_80B4378(taskId); + Shop_ReturnToBuyMenu(taskId); } -void sub_80B3DC8(u8 taskId) +void Shop_PrintPrice(u8 taskId) { if (sub_80A52C4(taskId, gMartInfo.curItemCount) == TRUE) - sub_80B37F8(taskId); + Shop_DisplayPriceInCheckoutWindow(taskId); if (gMain.newKeys & A_BUTTON) { - gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].data[1]; // set total cost of your purchase. + gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].tItemCount; // set total cost of your purchase. Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); sub_80B379C(); - sub_80B3420(); + Shop_DrawViewportTiles(); CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); - ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].data[1], 0, 0x2); + ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].tItemCount, 0, 0x2); ConvertIntToDecimalStringN(gStringVar3, gMartTotalCost, 0, 0x8); StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe); - DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1); + DisplayItemMessageOnField(taskId, gStringVar4, Shop_DoYesNoPurchase, 0xC3E1); } else if (gMain.newKeys & B_BUTTON) { - sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); - sub_80B4378(taskId); + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); + Shop_ReturnToBuyMenu(taskId); } } @@ -731,9 +739,9 @@ void sub_80B3EFC(u8 taskId) { u16 var; - gTasks[taskId].data[1] = 1; + gTasks[taskId].tItemCount = 1; Menu_DrawStdWindowFrame(0, 0xA, 0xD, 0xD); - sub_80B37F8(taskId); + Shop_DisplayPriceInCheckoutWindow(taskId); var = gSaveBlock1.money / (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); if (var > 99) @@ -741,7 +749,7 @@ void sub_80B3EFC(u8 taskId) else gMartInfo.curItemCount = var; - gTasks[taskId].func = sub_80B3DC8; + gTasks[taskId].func = Shop_PrintPrice; } #ifdef NONMATCHING @@ -1033,15 +1041,15 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction PlaySE(SE_SELECT); gMartInfo.choicesAbove--; // since cursor is at the top and there are choices above the top, scroll the menu up by updating choicesAbove. sub_80B3F88(); - sub_80B39D0(0, 0, 0); - sub_80B3A70(); - sub_80B32A4(); + Shop_DisplayPriceInList(0, 0, 0); + Shop_PrintItemDescText(); + Shop_TryDrawVerticalScrollIndicators(); } else // if the cursor is not 0, choicesAbove cannot be updated yet since the cursor is at the top of the menu, so update cursor. { PlaySE(SE_SELECT); gMartInfo.cursor = Menu_MoveCursor(-1); // move cursor up - sub_80B3A70(); + Shop_PrintItemDescText(); } } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) // only down can be pressed @@ -1054,15 +1062,15 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction PlaySE(SE_SELECT); gMartInfo.choicesAbove++; sub_80B403C(); - sub_80B39D0(7, 7, 0); - sub_80B3A70(); - sub_80B32A4(); + Shop_DisplayPriceInList(7, 7, 0); + Shop_PrintItemDescText(); + Shop_TryDrawVerticalScrollIndicators(); } else if (gMartInfo.cursor != gMartInfo.itemCount) { PlaySE(SE_SELECT); gMartInfo.cursor = Menu_MoveCursor(1); - sub_80B3A70(); + Shop_PrintItemDescText(); } } else if (gMain.newKeys & A_BUTTON) @@ -1071,10 +1079,10 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) // did you not hit CANCEL? { - PauseVerticalScrollIndicator(0); - PauseVerticalScrollIndicator(1); - sub_80F979C(1, 1); - sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1); + PauseVerticalScrollIndicator(TOP_ARROW); + PauseVerticalScrollIndicator(BOTTOM_ARROW); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 1); Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0xC, 0xD, 0x13); @@ -1113,7 +1121,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction { StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe3); } - DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1); + DisplayItemMessageOnField(taskId, gStringVar4, Shop_DoYesNoPurchase, 0xC3E1); } } } @@ -1128,23 +1136,23 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction } } -void sub_80B4378(u8 taskId) +void Shop_ReturnToBuyMenu(u8 taskId) { Menu_EraseWindowRect(0, 0xE, 0x1D, 0x13); Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); - sub_80B3420(); + Shop_DrawViewportTiles(); sub_80B3764(6, 7); - sub_80B37EC(); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); - sub_80B32A4(); + Shop_PrintItemDesc(); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); + Shop_TryDrawVerticalScrollIndicators(); gTasks[taskId].func = sub_80B40E8; } void sub_80B43F0(u8 taskId) { - gFieldCallback = sub_80B3050; + gFieldCallback = Shop_InitExitSellMenu; BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_ExitBuyMenu; } @@ -1166,29 +1174,31 @@ void sub_80B4470(u8 taskId) for (i = 0; i < 3; i++) { - if (gUnknown_02038724[i].itemId == gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] - && gUnknown_02038724[i].quantity != 0) + if (gMartPurchaseHistory[i].itemId == gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] + && gMartPurchaseHistory[i].quantity != 0) { - if (gUnknown_02038724[i].quantity + gTasks[taskId].data[1] > 255) - gUnknown_02038724[i].quantity = 255; + if (gMartPurchaseHistory[i].quantity + gTasks[taskId].tItemCount > 255) + gMartPurchaseHistory[i].quantity = 255; else - gUnknown_02038724[i].quantity += gTasks[taskId].data[1]; + gMartPurchaseHistory[i].quantity += gTasks[taskId].tItemCount; return; } } - if (gUnknown_02038730 < 3) + if (gMartPurchaseHistoryId < 3) { - gUnknown_02038724[gUnknown_02038730].itemId = gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]; - gUnknown_02038724[gUnknown_02038730].quantity = gTasks[taskId].data[1]; - gUnknown_02038730++; + gMartPurchaseHistory[gMartPurchaseHistoryId].itemId = gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]; + gMartPurchaseHistory[gMartPurchaseHistoryId].quantity = gTasks[taskId].tItemCount; + gMartPurchaseHistoryId++; } } +#undef tItemCount + void ClearItemPurchases(void) { - gUnknown_02038730 = 0; - ClearItemSlots(gUnknown_02038724, 3); + gMartPurchaseHistoryId = 0; + ClearItemSlots(gMartPurchaseHistory, 3); } void CreatePokemartMenu(u16 *itemList) diff --git a/src/field/trader.c b/src/field/trader.c index b4732ab15..64bd708f6 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -217,8 +217,8 @@ void sub_8109D04(u8 taskId) { Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); sub_80F9520(gUnknown_020388F7, 8); BuyMenuFreeMemory(); if (sub_80FEFA4() == TRUE) diff --git a/src/field/tv.c b/src/field/tv.c index e1eade130..efda4b925 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -64,7 +64,7 @@ struct TVSaleItem { extern u8 gUnknown_02038694; -extern struct TVSaleItem gUnknown_02038724[3]; +extern struct TVSaleItem gMartPurchaseHistory[3]; struct UnkTvStruct gUnknown_03005D38; @@ -1032,7 +1032,7 @@ void sub_80BE3BC(void) if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) { sub_80BF20C(); - if (gUnknown_02038724[0].item_amount >= 20) + if (gMartPurchaseHistory[0].item_amount >= 20) { struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].smartshopperShow; @@ -1041,8 +1041,8 @@ void sub_80BE3BC(void) smartShopper->shopLocation = gMapHeader.regionMapSectionId; for (i=0; i<3; i++) { - smartShopper->itemIds[i] = gUnknown_02038724[i].item_id; - smartShopper->itemAmounts[i] = gUnknown_02038724[i].item_amount; + smartShopper->itemIds[i] = gMartPurchaseHistory[i].item_id; + smartShopper->itemAmounts[i] = gMartPurchaseHistory[i].item_amount; } smartShopper->priceReduced = GetPriceReduction(1); StringCopy(smartShopper->playerName, gSaveBlock2.playerName); @@ -1646,14 +1646,14 @@ void sub_80BF20C(void) { for (j = i + 1; j < 3; j++) { - if (gUnknown_02038724[i].item_amount < gUnknown_02038724[j].item_amount) + if (gMartPurchaseHistory[i].item_amount < gMartPurchaseHistory[j].item_amount) { - tmpId = gUnknown_02038724[i].item_id; - tmpAmount = gUnknown_02038724[i].item_amount; - gUnknown_02038724[i].item_id = gUnknown_02038724[j].item_id; - gUnknown_02038724[i].item_amount = gUnknown_02038724[j].item_amount; - gUnknown_02038724[j].item_id = tmpId; - gUnknown_02038724[j].item_amount = tmpAmount; + tmpId = gMartPurchaseHistory[i].item_id; + tmpAmount = gMartPurchaseHistory[i].item_amount; + gMartPurchaseHistory[i].item_id = gMartPurchaseHistory[j].item_id; + gMartPurchaseHistory[i].item_amount = gMartPurchaseHistory[j].item_amount; + gMartPurchaseHistory[j].item_id = tmpId; + gMartPurchaseHistory[j].item_amount = tmpAmount; } } } diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c index 194636e4d..2f2ce2f8f 100644 --- a/src/pokemon/pokeblock_feed.c +++ b/src/pokemon/pokeblock_feed.c @@ -511,7 +511,7 @@ static bool8 TransitionToPokeblockFeedScene(void) switch (gMain.state) { case 0: - sub_80F9438(); + ClearVideoCallbacks(); sub_80F9368(); sub_8147B04(); gMain.state++; diff --git a/src/roulette.c b/src/roulette.c index 6d79f9d38..41e8ef77f 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -579,7 +579,7 @@ void sub_8115384(void) case 0x0: SetVBlankCallback(NULL); ScanlineEffect_Stop(); - sub_80F9438(); + ClearVideoCallbacks(); sub_80F9368(); REG_BG2CNT = 0x4686; REG_BG1CNT = 0x4401; @@ -603,7 +603,7 @@ void sub_8115384(void) break; case 0x3: sub_8115238(); - sub_80F9020(); + ClearBGTilemapBuffers(); LZ77UnCompWram(&gUnknown_083F88BC, (void *)(ewram18800)); LZ77UnCompVram(&gUnknown_083F8A60, (void *)(VRAM + 0x3000)); gMain.state++; @@ -1604,7 +1604,7 @@ void sub_8116B40(u8 taskid) // end oulette ? FreeAllSpritePalettes(); ResetPaletteFade(); ResetSpriteData(); - sub_80F9020(); + ClearBGTilemapBuffers(); REG_BLDCNT = 0x0; REG_BLDALPHA = 0x0; REG_BLDY = 0x0; -- cgit v1.2.3 From 1771d7761e4ff1406a8ffe3da4e636d633ad3135 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 15 Jan 2018 21:26:15 -0500 Subject: split out fldeff_escalator and label shop.c more --- include/shop.h | 10 +- ld_script.txt | 2 + src/field/fldeff_escalator.c | 132 ++++++++++++++++++ src/field/item_menu.c | 8 +- src/field/shop.c | 320 ++++++++++++++----------------------------- sym_ewram.txt | 1 + 6 files changed, 244 insertions(+), 229 deletions(-) create mode 100644 src/field/fldeff_escalator.c diff --git a/include/shop.h b/include/shop.h index 8ab24c724..63dd6cc81 100644 --- a/include/shop.h +++ b/include/shop.h @@ -37,16 +37,16 @@ struct MartInfo /* 0xD */ u8 curItemCount; // if you are selling an item, this is the count of the current item stack you have. }; -void sub_80B2E38(u8); -void HandleShopMenuQuit(u8); +void Task_DoBuySellMenu(u8); +void Task_HandleShopMenuQuit(u8); void Shop_FadeAndRunBuySellCallback(u8); void BuyMenuDrawGraphics(void); void sub_80B3240(void); -void sub_80B3270(void); +void DrawFirstMartScrollIndicators(void); void Shop_DrawViewport(void); -void sub_80B3764(int, int); +void Shop_InitMenus(int, int); void Shop_PrintItemDesc(void); -void sub_80B40E8(u8); +void Shop_DoCursorAction(u8); void CreatePokemartMenu(u16 *); void CreateDecorationShop1Menu(u16 *); void CreateDecorationShop2Menu(u16 *); diff --git a/ld_script.txt b/ld_script.txt index 7bc64638c..afa71a0c5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -143,6 +143,7 @@ SECTIONS { src/debug/matsuda_debug_menu.o(.text); src/contest.o(.text); src/field/shop.o(.text); + src/field/fldeff_escalator.o(.text); src/field/berry.o(.text); src/field/script_menu.o(.text); src/engine/naming_screen.o(.text); @@ -557,6 +558,7 @@ SECTIONS { src/debug/matsuda_debug_menu.o(.rodata); data/contest.o(.rodata); src/field/shop.o(.rodata); + src/field/fldeff_escalator.o(.rodata); src/field/berry.o(.rodata); src/field/script_menu.o(.rodata); src/engine/naming_screen.o(.rodata); diff --git a/src/field/fldeff_escalator.c b/src/field/fldeff_escalator.c new file mode 100644 index 000000000..981233480 --- /dev/null +++ b/src/field/fldeff_escalator.c @@ -0,0 +1,132 @@ +#include "global.h" +#include "task.h" +#include "fieldmap.h" +#include "field_camera.h" +#include "field_player_avatar.h" + +extern u8 gUnknown_02038731; + +void sub_80B45B4(u8 taskId, const s16 *list, u16 c) +{ + s16 r5 = gTasks[taskId].data[4] - 1; + s16 r3 = gTasks[taskId].data[5] - 1; + s16 r4 = gTasks[taskId].data[1]; + s16 y; + s16 x; + + if (gTasks[taskId].data[2] == 0) + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); + + if (list[r4] == metatileId) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]); + else + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]); + } + } + } + } + else + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); + + if (list[2 - r4] == metatileId) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]); + else + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]); + } + } + } + } +} + +const u16 gUnknown_083CC714[] = {0x284, 0x282, 0x280}; +const u16 gUnknown_083CC71A[] = {0x285, 0x283, 0x281}; +const u16 gUnknown_083CC720[] = {0x28C, 0x28A, 0x288}; +const u16 gUnknown_083CC726[] = {0x28D, 0x28B, 0x289}; +const u16 gUnknown_083CC72C[] = {0x2A0, 0x2A2, 0x2A4}; +const u16 gUnknown_083CC732[] = {0x2A1, 0x2A3, 0x2A5}; +const u16 gUnknown_083CC738[] = {0x2A8, 0x2AA, 0x2AC}; + +void sub_80B4710(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[3] = 1; + + switch (data[0]) + { + case 0: + sub_80B45B4(taskId, gUnknown_083CC714, 0); + break; + case 1: + sub_80B45B4(taskId, gUnknown_083CC71A, 0); + break; + case 2: + sub_80B45B4(taskId, gUnknown_083CC720, 0xC00); + break; + case 3: + sub_80B45B4(taskId, gUnknown_083CC726, 0); + break; + case 4: + sub_80B45B4(taskId, gUnknown_083CC72C, 0xC00); + break; + case 5: + sub_80B45B4(taskId, gUnknown_083CC732, 0); + break; + case 6: + sub_80B45B4(taskId, gUnknown_083CC738, 0); + break; + } + + data[0] = (data[0] + 1) & 7; + if (!data[0]) + { + DrawWholeMapView(); + data[1] = (data[1] + 1) % 3; + data[3] = 0; + } +} + +u8 sub_80B47D8(u16 var) +{ + u8 taskId = CreateTask(sub_80B4710, 0); + s16 *data = gTasks[taskId].data; + + PlayerGetDestCoords(&data[4], &data[5]); + data[0] = 0; + data[1] = 0; + data[2] = var; + sub_80B4710(taskId); + return taskId; +} + +void sub_80B4824(u8 var) +{ + gUnknown_02038731 = sub_80B47D8(var); +} + +void sub_80B483C(void) +{ + DestroyTask(gUnknown_02038731); +} + +bool8 sub_80B4850(void) +{ + if (gTasks[gUnknown_02038731].data[3] == 0 && gTasks[gUnknown_02038731].data[1] == 2) + return FALSE; + else + return TRUE; +} diff --git a/src/field/item_menu.c b/src/field/item_menu.c index e07021acd..d86550eb6 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -50,7 +50,7 @@ extern void pal_fill_black(void); extern bool8 sub_807D770(void); extern u8 sub_80F931C(); extern void sub_808A3F8(u8); -extern void Shop_InitExitSellMenu(void); +extern void Shop_FadeReturnToMartMenu(void); extern void sub_80546B8(u8); extern void sub_804E990(u8); extern void sub_802E424(u8); @@ -1901,7 +1901,7 @@ static void sub_80A50C8(u8 taskId) } } -bool8 sub_80A52C4(u8 taskId, u16 b) +bool8 SellMenu_QuantityRoller(u8 taskId, u16 b) { s16 *taskData = gTasks[taskId].data; @@ -1948,7 +1948,7 @@ static bool8 sub_80A5350(u8 taskId) { s16 *taskData = gTasks[taskId].data; - if (sub_80A52C4(taskId, gCurrentBagPocketItemSlots[gUnknown_02038560].quantity) == TRUE) + if (SellMenu_QuantityRoller(taskId, gCurrentBagPocketItemSlots[gUnknown_02038560].quantity) == TRUE) { // if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1) @@ -2971,7 +2971,7 @@ void ItemMenu_LoadSellMenu(void) static void OnBagClose_Shop(u8 taskId) { - gFieldCallback = Shop_InitExitSellMenu; + gFieldCallback = Shop_FadeReturnToMartMenu; gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; sub_80A5AE4(taskId); diff --git a/src/field/shop.c b/src/field/shop.c index ab529d9a2..233e430ee 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -28,23 +28,23 @@ #include "field_camera.h" #include "ewram.h" -extern bool8 sub_80A52C4(u8, u8); +extern bool8 SellMenu_QuantityRoller(u8, u8); extern u8 gBuyMenuFrame_Gfx[]; extern u16 gBuyMenuFrame_Tilemap[]; extern u16 gMenuMoneyPal[16]; -void Shop_DisplayPriceInList(int var1, int var2, bool32 hasControlCode); +void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode); void Shop_PrintItemDescText(void); -void Shop_ReturnToBuyMenu(u8); -void sub_80B43F0(u8); +void Task_ReturnToBuyMenu(u8); void Task_ExitBuyMenu(u8); -void sub_80B4470(u8); -void HandleShopMenuBuy(u8 taskId); -void HandleShopMenuSell(u8 taskId); -void HandleShopMenuQuit(u8 taskId); -void Shop_DoItemPurchase(u8 taskId); -void Shop_CancelItemPurchase(u8 taskId); +void Task_ExitBuyMenuDoFade(u8); +void Task_UpdatePurchaseHistory(u8); +void Task_HandleShopMenuBuy(u8 taskId); +void Task_HandleShopMenuSell(u8 taskId); +void Task_HandleShopMenuQuit(u8 taskId); +void Task_DoItemPurchase(u8 taskId); +void Task_CancelItemPurchase(u8 taskId); // iwram static struct MartInfo gMartInfo; @@ -54,14 +54,15 @@ EWRAM_DATA u32 gMartTotalCost = 0; EWRAM_DATA s16 gMartViewportObjects[16][4] = {0}; EWRAM_DATA struct ItemSlot gMartPurchaseHistory[3] = {0}; EWRAM_DATA u8 gMartPurchaseHistoryId = 0; -EWRAM_DATA u8 gUnknown_02038731 = 0; + +EWRAM_DATA u8 gUnknown_02038731 = 0; // This really should be in fldeff_escalator, but being in a new file aligns the ewram, which doesnt match the ROM. // rodata static const struct MenuAction2 sBuySellQuitMenuActions[] = { - { MartText_Buy, HandleShopMenuBuy }, - { MartText_Sell, HandleShopMenuSell }, - { MartText_Quit2, HandleShopMenuQuit }, + { MartText_Buy, Task_HandleShopMenuBuy }, + { MartText_Sell, Task_HandleShopMenuSell }, + { MartText_Quit2, Task_HandleShopMenuQuit }, }; static const u8 gMartBuySellOptionList[] = {BUY, SELL, EXIT}; @@ -71,8 +72,8 @@ static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, static const struct YesNoFuncTable sShopPurchaseYesNoFuncs[] = { - Shop_DoItemPurchase, - Shop_CancelItemPurchase + Task_DoItemPurchase, + Task_CancelItemPurchase }; u8 CreateShopMenu(u8 martType) @@ -95,7 +96,7 @@ u8 CreateShopMenu(u8 martType) } InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel - return CreateTask(sub_80B2E38, 8); + return CreateTask(Task_DoBuySellMenu, 8); } void SetShopMenuCallback(void *callbackPtr) @@ -117,9 +118,9 @@ void SetShopItemsForSale(u16 *items) } } -void sub_80B2E38(u8 var) +void Task_DoBuySellMenu(u8 taskId) { - const u8 local = var; + const u8 taskIdConst = taskId; // why is a local const needed to match? if (gMain.newAndRepeatedKeys & DPAD_UP) { @@ -142,21 +143,21 @@ void sub_80B2E38(u8 var) PlaySE(SE_SELECT); if (gMartInfo.martType == MART_TYPE_0) { - sBuySellQuitMenuActions[gMartBuySellOptionList[gMartInfo.cursor]].func(local); + sBuySellQuitMenuActions[gMartBuySellOptionList[gMartInfo.cursor]].func(taskIdConst); } else { - sBuySellQuitMenuActions[gMartBuyNoSellOptionList[gMartInfo.cursor]].func(local); + sBuySellQuitMenuActions[gMartBuyNoSellOptionList[gMartInfo.cursor]].func(taskIdConst); } } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - HandleShopMenuQuit(local); + Task_HandleShopMenuQuit(taskIdConst); } } -void HandleShopMenuBuy(u8 taskId) +void Task_HandleShopMenuBuy(u8 taskId) { gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; @@ -164,7 +165,7 @@ void HandleShopMenuBuy(u8 taskId) fade_screen(1, 0); } -void HandleShopMenuSell(u8 taskId) +void Task_HandleShopMenuSell(u8 taskId) { gTasks[taskId].data[8] = (u32)ItemMenu_LoadSellMenu >> 16; gTasks[taskId].data[9] = (u32)ItemMenu_LoadSellMenu; @@ -172,7 +173,7 @@ void HandleShopMenuSell(u8 taskId) fade_screen(1, 0); } -void HandleShopMenuQuit(u8 taskId) +void Task_HandleShopMenuQuit(u8 taskId) { Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 8); @@ -199,7 +200,7 @@ void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) DestroyTask(taskId); } -void Task_ExitSellMenu(u8 taskId) +void Task_ReturnToMartMenu(u8 taskId) { if (sub_807D770() == 1) { @@ -210,21 +211,21 @@ void Task_ExitSellMenu(u8 taskId) } } -void Shop_InitExitSellMenu(void) +void Shop_FadeReturnToMartMenu(void) { pal_fill_black(); - CreateTask(Task_ExitSellMenu, 0x8); + CreateTask(Task_ReturnToMartMenu, 0x8); } void Shop_RunExitSellMenuTask(u8 taskId) { - Task_ExitSellMenu(taskId); + Task_ReturnToMartMenu(taskId); } // unused void Shop_LoadExitSellMenuTask(u8 taskId) { - gTasks[taskId].func = Task_ExitSellMenu; + gTasks[taskId].func = Task_ReturnToMartMenu; } static void MainCB2(void) @@ -286,10 +287,10 @@ void BuyMenuDrawGraphics(void) gMartInfo.choicesAbove = 0; Menu_EraseWindowRect(0, 0, 0x20, 0x20); OpenMoneyWindow(gSaveBlock1.money, 0, 0); - sub_80B3764(0, 7); + Shop_InitMenus(0, 7); Shop_PrintItemDesc(); - sub_80B3270(); - CreateTask(sub_80B40E8, 0x8); + DrawFirstMartScrollIndicators(); + CreateTask(Shop_DoCursorAction, 0x8); sub_80B3240(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); gPaletteFade.bufferTransferDisabled = 0; @@ -305,7 +306,7 @@ void sub_80B3240(void) LoadPalette(&colors[0], 0xD8, sizeof colors[0]); } -void sub_80B3270(void) +void DrawFirstMartScrollIndicators(void) { ClearVerticalScrollIndicatorPalettes(); @@ -319,20 +320,19 @@ void sub_80B3270(void) void Shop_TryDrawVerticalScrollIndicators(void) { - // TOP ARROW if (gMartInfo.choicesAbove == 0) SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); else SetVerticalScrollIndicators(TOP_ARROW, VISIBLE); - // DOWN ARROW if (gMartInfo.choicesAbove + 7 >= gMartInfo.itemCount) SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); else SetVerticalScrollIndicators(BOTTOM_ARROW, VISIBLE); } -void sub_80B32EC(u16 *array, s16 offset1, s16 offset2) +// what is the point of this function? the tiles always get overwritten by BuyMenuDrawTextboxBG. +void BuyMenuDrawTextboxBG_Old(u16 *array, s16 offset1, s16 offset2) { array[offset1 + offset2] = 0xC3E1; array[offset1 + offset2 + 1] = 0xC3E1; @@ -340,10 +340,11 @@ void sub_80B32EC(u16 *array, s16 offset1, s16 offset2) void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2) { - array[offset1 + offset2] = array2[0]; - array[offset1 + offset2 + 1] = array2[1]; - array[offset1 + offset2 + 32] = array2[2]; - array[offset1 + offset2 + 33] = array2[3]; + // This function draws a whole 2x2 metatile. + array[offset1 + offset2] = array2[0]; // top left + array[offset1 + offset2 + 1] = array2[1]; // top right + array[offset1 + offset2 + 32] = array2[2]; // bottom left + array[offset1 + offset2 + 33] = array2[3]; // bottom right } void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) @@ -369,7 +370,8 @@ void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) } } -void sub_80B33D0(s16 var1, int var2, u16 *var3) +// used to draw the border tiles around the viewport. +void BuyMenuDrawMapPartialMetatile(s16 var1, int var2, u16 *var3) { s16 offset1 = var1 * 2; s16 offset2 = (var2 * 0x40) + 0x40; @@ -407,13 +409,13 @@ void Shop_DrawViewportTiles(void) else { if (metatileId < 512) - sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8); + BuyMenuDrawMapPartialMetatile(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8); else - sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8); + BuyMenuDrawMapPartialMetatile(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8); } if (y == 0 && x != 0 && x != 6) - sub_80B32EC(gBGTilemapBuffers[1], x * 2, 64); + BuyMenuDrawTextboxBG_Old(gBGTilemapBuffers[1], x * 2, 64); } } } @@ -483,7 +485,7 @@ void Shop_AnimViewportObjects(void) } } -void sub_80B3720(void) +void BuyMenuDrawTextboxBG(void) { s16 i; @@ -494,14 +496,15 @@ void sub_80B3720(void) } } -void sub_80B3764(int var1, int var2) +void Shop_InitMenus(int firstItemId, int lastItemId) { - sub_80B3720(); - Shop_DisplayPriceInList(var1, var2, 0); + BuyMenuDrawTextboxBG(); + Shop_DisplayPriceInList(firstItemId, lastItemId, 0); InitMenu(0, 0xE, 0x2, 0x8, gMartInfo.cursor, 0xF); } -void sub_80B379C(void) +// after printing the item quantity and price, restore the textbox tiles before the Yes/No prompt. +void BuyMenuDrawTextboxBG_Restore(void) { u16 i, j; @@ -589,11 +592,11 @@ void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasControlCod } } -void Shop_DisplayPriceInList(int var1, int var2, bool32 hasControlCode) +void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode) { u8 i; - for (i = var1; i <= var2 && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++) + for (i = firstItemId; i <= lastItemId && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++) { if (gMartInfo.martType == MART_TYPE_0) Shop_DisplayNormalPriceInList(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); @@ -627,7 +630,7 @@ void Shop_PrintItemDescText(void) } } -void sub_80B3AEC(u8 taskId) +void Shop_DoPremierBallCheck(u8 taskId) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { @@ -635,32 +638,32 @@ void sub_80B3AEC(u8 taskId) PlaySE(SE_SELECT); if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].tItemCount >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE) - DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, Shop_ReturnToBuyMenu, 0xC3E1); + DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, Task_ReturnToBuyMenu, 0xC3E1); else - Shop_ReturnToBuyMenu(taskId); + Task_ReturnToBuyMenu(taskId); } } -void sub_80B3B80(u8 taskId) +void Shop_DoItemTransaction(u8 taskId) { IncrementGameStat(0x26); RemoveMoney(&gSaveBlock1.money, gMartTotalCost); PlaySE(SE_REGI); UpdateMoneyWindow(gSaveBlock1.money, 0, 0); - gTasks[taskId].func = sub_80B3AEC; + gTasks[taskId].func = Shop_DoPremierBallCheck; } -void sub_80B3BD0(u8 taskId) +void Shop_DoPricePrintAndReturnToBuyMenu(u8 taskId) { - Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above? - Shop_ReturnToBuyMenu(taskId); + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); + Task_ReturnToBuyMenu(taskId); } -void Shop_DoItemPurchase(u8 taskId) +void Task_DoItemPurchase(u8 taskId) { Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); - sub_80B379C(); + BuyMenuDrawTextboxBG_Restore(); Shop_DrawViewportTiles(); if (IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) @@ -669,30 +672,30 @@ void Shop_DoItemPurchase(u8 taskId) { if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].tItemCount)) { - DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, sub_80B3B80, 0xC3E1); - sub_80B4470(taskId); + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, Shop_DoItemTransaction, 0xC3E1); + Task_UpdatePurchaseHistory(taskId); } else - DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, sub_80B3BD0, 0xC3E1); + DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); } else // a normal mart is only type 0, so types 1 and 2 are decoration marts. { if (IsThereStorageSpaceForDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor])) { if (gMartInfo.martType == MART_TYPE_1) - DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, sub_80B3B80, 0xC3E1); + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, Shop_DoItemTransaction, 0xC3E1); else - DisplayItemMessageOnField(taskId, gOtherText_HereYouGo3, sub_80B3B80, 0xC3E1); + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo3, Shop_DoItemTransaction, 0xC3E1); } else { StringExpandPlaceholders(gStringVar4, gOtherText_SpaceForIsFull); - DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3BD0, 0xC3E1); + DisplayItemMessageOnField(taskId, gStringVar4, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); } } } else - DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); } void Shop_DoYesNoPurchase(u8 taskId) @@ -702,17 +705,17 @@ void Shop_DoYesNoPurchase(u8 taskId) DoYesNoFuncWithChoice(taskId, sShopPurchaseYesNoFuncs); } -void Shop_CancelItemPurchase(u8 taskId) +void Task_CancelItemPurchase(u8 taskId) { Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0); - Shop_ReturnToBuyMenu(taskId); + Task_ReturnToBuyMenu(taskId); } void Shop_PrintPrice(u8 taskId) { - if (sub_80A52C4(taskId, gMartInfo.curItemCount) == TRUE) + if (SellMenu_QuantityRoller(taskId, gMartInfo.curItemCount) == TRUE) Shop_DisplayPriceInCheckoutWindow(taskId); if (gMain.newKeys & A_BUTTON) @@ -720,7 +723,7 @@ void Shop_PrintPrice(u8 taskId) gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].tItemCount; // set total cost of your purchase. Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); - sub_80B379C(); + BuyMenuDrawTextboxBG_Restore(); Shop_DrawViewportTiles(); CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].tItemCount, 0, 0x2); @@ -731,11 +734,12 @@ void Shop_PrintPrice(u8 taskId) else if (gMain.newKeys & B_BUTTON) { Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); - Shop_ReturnToBuyMenu(taskId); + Task_ReturnToBuyMenu(taskId); } } -void sub_80B3EFC(u8 taskId) +// set the item count in the mart info to the maximum allowed by the player's budget. +void Shop_UpdateCurItemCountToMax(u8 taskId) { u16 var; @@ -753,7 +757,7 @@ void sub_80B3EFC(u8 taskId) } #ifdef NONMATCHING -void sub_80B3F88(void) +void Shop_MoveItemListUp(void) { u16 *r1; u16 *r2; @@ -795,7 +799,7 @@ void sub_80B3F88(void) } #else __attribute__((naked)) -void sub_80B3F88(void) +void Shop_MoveItemListUp(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -890,7 +894,7 @@ _080B4038: .4byte 0xfffffc40\n\ #endif #ifdef NONMATCHING -void sub_80B403C(void) +void Shop_MoveItemListDown(void) { u16 *r1; u16 *r2; @@ -934,7 +938,7 @@ void sub_80B403C(void) } #else __attribute__((naked)) -void sub_80B403C(void) +void Shop_MoveItemListDown(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -1027,7 +1031,7 @@ _080B40E4: .4byte 0x800000f0\n\ } #endif -void sub_80B40E8(u8 taskId) // Mart_DoCursorAction +void Shop_DoCursorAction(u8 taskId) { if (!gPaletteFade.active) { @@ -1040,7 +1044,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction PlaySE(SE_SELECT); gMartInfo.choicesAbove--; // since cursor is at the top and there are choices above the top, scroll the menu up by updating choicesAbove. - sub_80B3F88(); + Shop_MoveItemListUp(); Shop_DisplayPriceInList(0, 0, 0); Shop_PrintItemDescText(); Shop_TryDrawVerticalScrollIndicators(); @@ -1061,7 +1065,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction PlaySE(SE_SELECT); gMartInfo.choicesAbove++; - sub_80B403C(); + Shop_MoveItemListDown(); Shop_DisplayPriceInList(7, 7, 0); Shop_PrintItemDescText(); Shop_TryDrawVerticalScrollIndicators(); @@ -1091,13 +1095,13 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); // set 1x price if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) { - DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); // tail merge } else // _080B42BA { CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_HowManyYouWant); - DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3EFC, 0xC3E1); + DisplayItemMessageOnField(taskId, gStringVar4, Shop_UpdateCurItemCountToMax, 0xC3E1); } } else // _080B428C @@ -1106,7 +1110,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) { - DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); // tail merge } else { @@ -1126,38 +1130,38 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction } } else - sub_80B43F0(taskId); + Task_ExitBuyMenu(taskId); } else if (gMain.newKeys & B_BUTTON) // go back to buy/sell/exit menu { PlaySE(SE_SELECT); - sub_80B43F0(taskId); + Task_ExitBuyMenu(taskId); } } } -void Shop_ReturnToBuyMenu(u8 taskId) +void Task_ReturnToBuyMenu(u8 taskId) { Menu_EraseWindowRect(0, 0xE, 0x1D, 0x13); Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); Shop_DrawViewportTiles(); - sub_80B3764(6, 7); + Shop_InitMenus(6, 7); Shop_PrintItemDesc(); StartVerticalScrollIndicators(TOP_ARROW); StartVerticalScrollIndicators(BOTTOM_ARROW); Shop_TryDrawVerticalScrollIndicators(); - gTasks[taskId].func = sub_80B40E8; + gTasks[taskId].func = Shop_DoCursorAction; } -void sub_80B43F0(u8 taskId) +void Task_ExitBuyMenu(u8 taskId) { - gFieldCallback = Shop_InitExitSellMenu; + gFieldCallback = Shop_FadeReturnToMartMenu; BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskId].func = Task_ExitBuyMenu; + gTasks[taskId].func = Task_ExitBuyMenuDoFade; } -void Task_ExitBuyMenu(u8 taskId) +void Task_ExitBuyMenuDoFade(u8 taskId) { if (!gPaletteFade.active) { @@ -1168,7 +1172,8 @@ void Task_ExitBuyMenu(u8 taskId) } } -void sub_80B4470(u8 taskId) +// Task_UpdatePurchaseHistory +void Task_UpdatePurchaseHistory(u8 taskId) { u16 i; @@ -1222,128 +1227,3 @@ void CreateDecorationShop2Menu(u16 *itemList) SetShopItemsForSale(itemList); SetShopMenuCallback(EnableBothScriptContexts); } - -void sub_80B45B4(u8 taskId, const s16 *list, u16 c) -{ - s16 r5 = gTasks[taskId].data[4] - 1; - s16 r3 = gTasks[taskId].data[5] - 1; - s16 r4 = gTasks[taskId].data[1]; - s16 y; - s16 x; - - if (gTasks[taskId].data[2] == 0) - { - for (y = 0; y < 3; y++) - { - for (x = 0; x < 3; x++) - { - s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); - - if (list[r4] == metatileId) - { - if (r4 != 2) - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]); - else - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]); - } - } - } - } - else - { - for (y = 0; y < 3; y++) - { - for (x = 0; x < 3; x++) - { - s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); - - if (list[2 - r4] == metatileId) - { - if (r4 != 2) - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]); - else - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]); - } - } - } - } -} - -static const u16 gUnknown_083CC714[] = {0x284, 0x282, 0x280}; -static const u16 gUnknown_083CC71A[] = {0x285, 0x283, 0x281}; -static const u16 gUnknown_083CC720[] = {0x28C, 0x28A, 0x288}; -static const u16 gUnknown_083CC726[] = {0x28D, 0x28B, 0x289}; -static const u16 gUnknown_083CC72C[] = {0x2A0, 0x2A2, 0x2A4}; -static const u16 gUnknown_083CC732[] = {0x2A1, 0x2A3, 0x2A5}; -static const u16 gUnknown_083CC738[] = {0x2A8, 0x2AA, 0x2AC}; - -void sub_80B4710(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - - data[3] = 1; - - switch (data[0]) - { - case 0: - sub_80B45B4(taskId, gUnknown_083CC714, 0); - break; - case 1: - sub_80B45B4(taskId, gUnknown_083CC71A, 0); - break; - case 2: - sub_80B45B4(taskId, gUnknown_083CC720, 0xC00); - break; - case 3: - sub_80B45B4(taskId, gUnknown_083CC726, 0); - break; - case 4: - sub_80B45B4(taskId, gUnknown_083CC72C, 0xC00); - break; - case 5: - sub_80B45B4(taskId, gUnknown_083CC732, 0); - break; - case 6: - sub_80B45B4(taskId, gUnknown_083CC738, 0); - break; - } - - data[0] = (data[0] + 1) & 7; - if (!data[0]) - { - DrawWholeMapView(); - data[1] = (data[1] + 1) % 3; - data[3] = 0; - } -} - -u8 sub_80B47D8(u16 var) -{ - u8 taskId = CreateTask(sub_80B4710, 0); - s16 *data = gTasks[taskId].data; - - PlayerGetDestCoords(&data[4], &data[5]); - data[0] = 0; - data[1] = 0; - data[2] = var; - sub_80B4710(taskId); - return taskId; -} - -void sub_80B4824(u8 var) -{ - gUnknown_02038731 = sub_80B47D8(var); -} - -void sub_80B483C(void) -{ - DestroyTask(gUnknown_02038731); -} - -bool8 sub_80B4850(void) -{ - if (gTasks[gUnknown_02038731].data[3] == 0 && gTasks[gUnknown_02038731].data[1] == 2) - return FALSE; - else - return TRUE; -} diff --git a/sym_ewram.txt b/sym_ewram.txt index b9c08aac6..ae96c7873 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -486,6 +486,7 @@ gSpecialVar_ContestRank: @ 203869E .space 0x2 .include "src/field/shop.o" + .include "src/field/fldeff_escalator.o" .include "src/field/money.o" @ record_mixing -- cgit v1.2.3 From 0432df3afaa917f7df50820206bc7b42316ea505 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 15 Jan 2018 21:27:08 -0500 Subject: tab --- sym_ewram.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sym_ewram.txt b/sym_ewram.txt index ae96c7873..a3de14b52 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -486,7 +486,7 @@ gSpecialVar_ContestRank: @ 203869E .space 0x2 .include "src/field/shop.o" - .include "src/field/fldeff_escalator.o" + .include "src/field/fldeff_escalator.o" .include "src/field/money.o" @ record_mixing -- cgit v1.2.3 From 7860ce8dbe3d4abca3a8d3fb336705e3d09b32e0 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 16 Jan 2018 14:00:52 -0500 Subject: split data2a and make shop.c stuff static --- data/btl_attrs.s | 337 ++++++++++++++++ data/data2a.s | 1032 ------------------------------------------------ data/mon_attrs.s | 704 +++++++++++++++++++++++++++++++++ include/decoration.h | 1 - include/shop.h | 19 +- ld_script.txt | 3 +- src/field/decoration.c | 1 + src/field/scrcmd.c | 6 +- src/field/shop.c | 137 ++++--- 9 files changed, 1125 insertions(+), 1115 deletions(-) create mode 100644 data/btl_attrs.s delete mode 100644 data/data2a.s create mode 100644 data/mon_attrs.s diff --git a/data/btl_attrs.s b/data/btl_attrs.s new file mode 100644 index 000000000..1bd5ed6e5 --- /dev/null +++ b/data/btl_attrs.s @@ -0,0 +1,337 @@ +@ the second big chunk of data + +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/species.h" + .include "include/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +@ 81ECAD8 + .include "data/graphics/trainers/back_pic_coords.inc" + +@ 81ECAE4 + .include "data/graphics/trainers/back_pic_table.inc" + +@ 81ECAFC + .include "data/graphics/trainers/back_pic_palette_table.inc" + +@ 81ECB14 + .include "data/enemy_mon_elevation.inc" + +@ 81ECCB0 + .include "data/trainer_parties.inc" + +@ 81F0208 + .include "data/text/trainer_class_names.inc" + +@ 81F04FC + .include "data/trainers.inc" + +@ 81F716C + .include "data/text/species_names.inc" + +@ 81F8320 + .include "data/text/move_names.inc" + + .align 2 +@ 81F9528 + .4byte 0x101 @ unknown data + + .align 2 +gOamData_81F952C:: @ 81F952C + .2byte 0x0300 + .2byte 0xC000 + .2byte 0x0000 + + .align 2 +gOamData_81F9534:: @ 81F9534 + .2byte 0x0300 + .2byte 0xC000 + .2byte 0x0040 + + .align 2 +gSpriteAffineAnim_81F953C:: @ 81F953C + obj_rot_scal_anim_frame 0x80, 0x80, 0, 0 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81F954C:: @ 81F954C + obj_rot_scal_anim_frame 0x80, 0x80, 0, 0 + obj_rot_scal_anim_frame 0x18, 0x18, 0, -128 + obj_rot_scal_anim_frame 0x18, 0x18, 0, -128 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnimTable_81F956C:: @ 81F956C + .4byte gSpriteAffineAnim_81F953C + .4byte gSpriteAffineAnim_81F954C + + .align 2 +gSpriteTemplate_81F9574:: @ 81F9574 + spr_template 10000, 10000, gOamData_81F952C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_81F956C, nullsub_36 + + .align 2 +gSpriteTemplate_81F958C:: @ 81F958C + spr_template 10000, 10000, gOamData_81F9534, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_81F956C, nullsub_36 + + .align 2 +gUnknown_081F95A4:: @ 81F95A4 + obj_tiles gUnknown_08E5DC2C, 4096, 0x2710 + + .align 2 +gBattleTerrainTable:: @ 81F95AC + @ tall_grass + .4byte gBattleTerrainTiles_TallGrass + .4byte gBattleTerrainTilemap_TallGrass + .4byte gBattleTerrainAnimTiles_TallGrass + .4byte gBattleTerrainAnimTilemap_TallGrass + .4byte gBattleTerrainPalette_TallGrass + + @ long_grass + .4byte gBattleTerrainTiles_LongGrass + .4byte gBattleTerrainTilemap_LongGrass + .4byte gBattleTerrainAnimTiles_LongGrass + .4byte gBattleTerrainAnimTilemap_LongGrass + .4byte gBattleTerrainPalette_LongGrass + + @ sand + .4byte gBattleTerrainTiles_Sand + .4byte gBattleTerrainTilemap_Sand + .4byte gBattleTerrainAnimTiles_Sand + .4byte gBattleTerrainAnimTilemap_Sand + .4byte gBattleTerrainPalette_Sand + + @ underwater + .4byte gBattleTerrainTiles_Underwater + .4byte gBattleTerrainTilemap_Underwater + .4byte gBattleTerrainAnimTiles_Underwater + .4byte gBattleTerrainAnimTilemap_Underwater + .4byte gBattleTerrainPalette_Underwater + + @ water + .4byte gBattleTerrainTiles_Water + .4byte gBattleTerrainTilemap_Water + .4byte gBattleTerrainAnimTiles_Water + .4byte gBattleTerrainAnimTilemap_Water + .4byte gBattleTerrainPalette_Water + + @ pond_water + .4byte gBattleTerrainTiles_PondWater + .4byte gBattleTerrainTilemap_PondWater + .4byte gBattleTerrainAnimTiles_PondWater + .4byte gBattleTerrainAnimTilemap_PondWater + .4byte gBattleTerrainPalette_PondWater + + @ rock + .4byte gBattleTerrainTiles_Rock + .4byte gBattleTerrainTilemap_Rock + .4byte gBattleTerrainAnimTiles_Rock + .4byte gBattleTerrainAnimTilemap_Rock + .4byte gBattleTerrainPalette_Rock + + @ cave + .4byte gBattleTerrainTiles_Cave + .4byte gBattleTerrainTilemap_Cave + .4byte gBattleTerrainAnimTiles_Cave + .4byte gBattleTerrainAnimTilemap_Cave + .4byte gBattleTerrainPalette_Cave + + @ building + .4byte gBattleTerrainTiles_Building + .4byte gBattleTerrainTilemap_Building + .4byte gBattleTerrainAnimTiles_Building + .4byte gBattleTerrainAnimTilemap_Building + .4byte gBattleTerrainPalette_Building + + @ plain + .4byte gBattleTerrainTiles_Building + .4byte gBattleTerrainTilemap_Building + .4byte gBattleTerrainAnimTiles_Building + .4byte gBattleTerrainAnimTilemap_Building + .4byte gBattleTerrainPalette_Plain + + .align 2 +gUnknown_081F9674:: @ 81F9674 + .4byte REG_BG3HOFS + .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 + .4byte 1 + + .align 2 +gUnknown_081F9680:: @ 81F9680 + .4byte gUnknown_030041D0 + .2byte 0x20 + .byte 0x13 + .byte 0x10 + .4byte BG_VRAM + 0xE104 + + .4byte gUnknown_03004250 + .2byte 0x40 + .byte 0x13 + .byte 0x10 + .4byte BG_VRAM + 0xF104 + + .4byte gUnknown_030041D0 + .2byte 0x60 + .byte 0x13 + .byte 0x30 + .4byte BG_VRAM + 0xE204 + + .4byte gUnknown_03004250 + .2byte 0x80 + .byte 0x13 + .byte 0x30 + .4byte BG_VRAM + 0xF204 + + .4byte gUnknown_030041D0 + .2byte 0x20 + .byte 0x13 + .byte 0x18 + .4byte BG_VRAM + 0xE1C4 + + .4byte gUnknown_03004250 + .2byte 0x40 + .byte 0x13 + .byte 0x18 + .4byte BG_VRAM + 0xF1C4 + +gUnknown_081F96C8:: @ 81F96C8 + .string "ヌケニン$" @ "Nukenin" (Shedinja) + + .align 2 +gSpriteTemplate_81F96D0:: @ 81F96D0 + spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_800F828 + + .align 2 +gOamData_81F96E8:: @ 81F96E8 + .2byte 0x0100 + .2byte 0xC000 + .2byte 0x0800 + + .align 2 +gOamData_81F96F0:: @ 81F96F0 + .2byte 0x0100 + .2byte 0xC000 + .2byte 0x2800 + + .align 2 +gSpriteAnim_81F96F8:: @ 81F96F8 + obj_image_anim_frame 0, 5 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnimTable_81F9700:: @ 81F9700 + .4byte gSpriteAnim_81F96F8 + + .align 2 +gSpriteAffineAnim_81F9704:: @ 81F9704 + obj_rot_scal_anim_frame 0xFFF0, 0x0, 0, 4 + obj_rot_scal_anim_frame 0x0, 0x0, 0, 60 + obj_rot_scal_anim_jump 1 + + .align 2 +gSpriteAffineAnimTable_81F971C:: @ 81F971C + .4byte gSpriteAffineAnim_81F9704 + +@ 81F9720 + .include "data/type_effectiveness.inc" + +@ 81F9870 + .include "data/text/type_names.inc" + +@ 81F98F0 + .include "data/trainer_money.inc" + +@ 81F99CC + .include "data/text/ability_descriptions.inc" + +@ 81FA248 + .include "data/text/ability_names.inc" + + .align 2 +gUnknown_081FA640:: @ 81FA640 + .4byte HandleAction_UseMove + .4byte HandleAction_UseItem + .4byte HandleAction_Switch + .4byte HandleAction_Run + .4byte HandleAction_WatchesCarefully + .4byte HandleAction_SafariZoneBallThrow + .4byte HandleAction_ThrowPokeblock + .4byte HandleAction_GoNear + .4byte HandleAction_SafriZoneRun + .4byte HandleAction_Action9 + .4byte sub_801B594 + .4byte HandleAction_Action11 + .4byte HandleAction_ActionFinished + .4byte HandleAction_NothingIsFainted + + .align 2 +gUnknown_081FA678:: @ 81FA678 + .4byte bc_8013B1C + .4byte HandleEndTurn_BattleWon + .4byte HandleEndTurn_BattleLost + .4byte HandleEndTurn_BattleLost + .4byte HandleEndTurn_RanFromBattle + .4byte HandleEndTurn_FinishBattle + .4byte HandleEndTurn_MonFled + .4byte HandleEndTurn_FinishBattle + .4byte HandleEndTurn_FinishBattle + +gStatusConditionString_PoisonJpn:: @ 81FA69C + .string "どく$$$$$$" + +gStatusConditionString_SleepJpn:: @ 81FA6A4 + .string "ねむり$$$$$" + +gStatusConditionString_ParalysisJpn:: @ 81FA6AC + .string "まひ$$$$$$" + +gStatusConditionString_BurnJpn:: @ 81FA6B4 + .string "やけど$$$$$" + +gStatusConditionString_IceJpn:: @ 81FA6BC + .string "こおり$$$$$" + +gStatusConditionString_ConfusionJpn:: @ 81FA6C4 + .string "こんらん$$$$" + +gStatusConditionString_LoveJpn:: @ 81FA6CC + .string "メロメロ$$$$" + + .align 2 +gUnknown_081FA6D4:: @ 81FA6D4 + .4byte gStatusConditionString_PoisonJpn, BattleText_PoisonStatus + .4byte gStatusConditionString_SleepJpn, BattleText_Sleep + .4byte gStatusConditionString_ParalysisJpn, BattleText_Paralysis + .4byte gStatusConditionString_BurnJpn, BattleText_Burn + .4byte gStatusConditionString_IceJpn, BattleText_IceStatus + .4byte gStatusConditionString_ConfusionJpn, BattleText_Confusion + .4byte gStatusConditionString_LoveJpn, BattleText_Love + +gUnknown_081FA70C:: @ 81FA70C + .byte 0, 0, 0 + .byte 3, 5, 0 + .byte 2, 3, 0 + .byte 1, 2, 0 + .byte 1, 1, 0 + +gUnknown_081FA71B:: @ 81FA71B + .byte 4, 3, 2, 1 + +gUnknown_081FA71F:: @ 81FA71F + .byte 4, 4, 4, 4 + + .align 1 +gSoundMovesTable:: @ 81FA724 + .2byte 0x2D + .2byte 0x2E + .2byte 0x2F + .2byte 0x30 + .2byte 0x67 + .2byte 0xAD + .2byte 0xFD + .2byte 0x13F + .2byte 0x140 + .2byte 0x130 + .2byte 0xFFFF diff --git a/data/data2a.s b/data/data2a.s deleted file mode 100644 index c4d6343d8..000000000 --- a/data/data2a.s +++ /dev/null @@ -1,1032 +0,0 @@ -@ the second big chunk of data - -#include "constants/items.h" -#include "constants/moves.h" -#include "constants/species.h" - .include "include/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSpriteImageTable_81E7A10:: @ 81E7A10 - obj_frame_tiles gSharedMem + 0x8000, 0x800 - obj_frame_tiles gSharedMem + 0x8800, 0x800 - obj_frame_tiles gSharedMem + 0x9000, 0x800 - obj_frame_tiles gSharedMem + 0x9800, 0x800 - - .align 2 -gSpriteImageTable_81E7A30:: @ 81E7A30 - obj_frame_tiles gSharedMem + 0xA000, 0x800 - obj_frame_tiles gSharedMem + 0xA800, 0x800 - obj_frame_tiles gSharedMem + 0xB000, 0x800 - obj_frame_tiles gSharedMem + 0xB800, 0x800 - - .align 2 -gSpriteImageTable_81E7A50:: @ 81E7A50 - obj_frame_tiles gSharedMem + 0xC000, 0x800 - obj_frame_tiles gSharedMem + 0xC800, 0x800 - obj_frame_tiles gSharedMem + 0xD000, 0x800 - obj_frame_tiles gSharedMem + 0xD800, 0x800 - - .align 2 -gSpriteImageTable_81E7A70:: @ 81E7A70 - obj_frame_tiles gSharedMem + 0xE000, 0x800 - obj_frame_tiles gSharedMem + 0xE800, 0x800 - obj_frame_tiles gSharedMem + 0xF000, 0x800 - obj_frame_tiles gSharedMem + 0xF800, 0x800 - - .align 2 -gSpriteAnim_81E7A90:: @ 81E7A90 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_81E7A98:: @ 81E7A98 - obj_image_anim_frame 3, 0 - obj_image_anim_end - - .align 2 -gSpriteAffineAnim_81E7AA0:: @ 81E7AA0 - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7AB0:: @ 81E7AB0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7AC0:: @ 81E7AC0 - obj_rot_scal_anim_frame 0x28, 0x28, 0, 0 - obj_rot_scal_anim_frame 0x12, 0x12, 0, 12 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7AD8:: @ 81E7AD8 - obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 18 - obj_rot_scal_anim_frame 0xFFF0, 0xFFF0, 0, 15 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7AF0:: @ 81E7AF0 - obj_rot_scal_anim_frame 0xA0, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x4, 0x0, 0, 8 - obj_rot_scal_anim_frame 0xFFFC, 0x0, 0, 8 - obj_rot_scal_anim_jump 1 - - .align 2 -gSpriteAffineAnim_81E7B10:: @ 81E7B10 - obj_rot_scal_anim_frame 0x2, 0x2, 0, 20 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7B20:: @ 81E7B20 - obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 20 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7B30:: @ 81E7B30 - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_frame 0xFFF0, 0xFFF0, 0, 9 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7B48:: @ 81E7B48 - obj_rot_scal_anim_frame 0x4, 0x4, 0, 63 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7B58:: @ 81E7B58 - obj_rot_scal_anim_frame 0x0, 0x0, -3, 5 - obj_rot_scal_anim_frame 0x0, 0x0, 3, 5 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_81E7B70:: @ 81E7B70 - .4byte gSpriteAffineAnim_81E7AA0 - .4byte gSpriteAffineAnim_81E7AC0 - .4byte gSpriteAffineAnim_81E7AD8 - .4byte gSpriteAffineAnim_81E7AF0 - .4byte gSpriteAffineAnim_81E7B10 - .4byte gSpriteAffineAnim_81E7B20 - .4byte gSpriteAffineAnim_81E7B48 - .4byte gSpriteAffineAnim_81E7B58 - .4byte gSpriteAffineAnim_81E7B30 - - .align 2 -gSpriteAffineAnim_81E7B94:: @ 81E7B94 - obj_rot_scal_anim_frame 0xFFFC, 0xFFFC, 4, 63 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7BA4:: @ 81E7BA4 - obj_rot_scal_anim_frame 0x0, 0x0, 3, 5 - obj_rot_scal_anim_frame 0x0, 0x0, -3, 5 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7BBC:: @ 81E7BBC - obj_rot_scal_anim_frame 0x0, 0x0, -5, 20 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 20 - obj_rot_scal_anim_frame 0x0, 0x0, 5, 20 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81E7BDC:: @ 81E7BDC - obj_rot_scal_anim_frame 0x0, 0x0, 9, 110 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_81E7BEC:: @ 81E7BEC - .4byte gSpriteAffineAnim_81E7AA0 - .4byte gSpriteAffineAnim_81E7AC0 - .4byte gSpriteAffineAnim_81E7AD8 - .4byte gSpriteAffineAnim_81E7AF0 - .4byte gSpriteAffineAnim_81E7B10 - .4byte gSpriteAffineAnim_81E7B20 - .4byte gSpriteAffineAnim_81E7B94 - .4byte gSpriteAffineAnim_81E7BA4 - .4byte gSpriteAffineAnim_81E7BBC - .4byte gSpriteAffineAnim_81E7B30 - .4byte gSpriteAffineAnim_81E7BDC - - .align 2 -gSpriteAffineAnimTable_81E7C18:: @ 81E7C18 - .4byte gSpriteAffineAnim_81E7AB0 - .4byte gSpriteAffineAnim_81E7AC0 - .4byte gSpriteAffineAnim_81E7AD8 - .4byte gSpriteAffineAnim_81E7AF0 - .4byte gSpriteAffineAnim_81E7B10 - .4byte gSpriteAffineAnim_81E7B20 - .4byte gSpriteAffineAnim_81E7B94 - .4byte gSpriteAffineAnim_81E7BA4 - .4byte gSpriteAffineAnim_81E7BBC - .4byte gSpriteAffineAnim_81E7B30 - .4byte gSpriteAffineAnim_81E7BDC - - .align 2 -gSpriteAnim_81E7C44:: @ 81E7C44 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_81E7C4C:: @ 81E7C4C - obj_image_anim_frame 1, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_81E7C54:: @ 81E7C54 - obj_image_anim_frame 2, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_81E7C5C:: @ 81E7C5C - obj_image_anim_frame 3, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_81E7C64:: @ 81E7C64 - .4byte gSpriteAnim_81E7C44 - .4byte gSpriteAnim_81E7C4C - .4byte gSpriteAnim_81E7C54 - .4byte gSpriteAnim_81E7C5C - -@ 81E7C74 - .include "data/graphics/pokemon/front_pic_coords.inc" - -@ 81E8354 - .include "data/graphics/pokemon/front_pic_table.inc" - -@ 81E9114 - .include "data/graphics/pokemon/back_pic_coords.inc" - -@ 81E97F4 - .include "data/graphics/pokemon/back_pic_table.inc" - -@ 81EA5B4 - .include "data/graphics/pokemon/palette_table.inc" - -@ 81EB374 - .include "data/graphics/pokemon/shiny_palette_table.inc" - - .align 2 -gSpriteAnim_81EC134:: @ 81EC134 - obj_image_anim_frame 0, 7 - obj_image_anim_end - - .align 2 -gSpriteAnim_81EC13C:: @ 81EC13C - obj_image_anim_frame 0, 2 - obj_image_anim_end - - .align 2 -gSpriteAnim_81EC144:: @ 81EC144 - obj_image_anim_frame 0, 2 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_81EC14C:: @ 81EC14C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC150:: @ 81EC150 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC154:: @ 81EC154 - .4byte gSpriteAnim_81E7A90 - .4byte gSpriteAnim_81EC134 - - .align 2 -gSpriteAnimTable_81EC15C:: @ 81EC15C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC160:: @ 81EC160 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC164:: @ 81EC164 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC168:: @ 81EC168 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC16C:: @ 81EC16C - .4byte gSpriteAnim_81E7A90 - .4byte gSpriteAnim_81EC13C - - .align 2 -gSpriteAnimTable_81EC174:: @ 81EC174 - .4byte gSpriteAnim_81E7A90 - .4byte gSpriteAnim_81EC144 - - .align 2 -gSpriteAnimTable_81EC17C:: @ 81EC17C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC180:: @ 81EC180 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC184:: @ 81EC184 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC188:: @ 81EC188 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC18C:: @ 81EC18C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC190:: @ 81EC190 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC194:: @ 81EC194 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC198:: @ 81EC198 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC19C:: @ 81EC19C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1A0:: @ 81EC1A0 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1A4:: @ 81EC1A4 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1A8:: @ 81EC1A8 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1AC:: @ 81EC1AC - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1B0:: @ 81EC1B0 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1B4:: @ 81EC1B4 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1B8:: @ 81EC1B8 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1BC:: @ 81EC1BC - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1C0:: @ 81EC1C0 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1C4:: @ 81EC1C4 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1C8:: @ 81EC1C8 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1CC:: @ 81EC1CC - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1D0:: @ 81EC1D0 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1D4:: @ 81EC1D4 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1D8:: @ 81EC1D8 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1DC:: @ 81EC1DC - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1E0:: @ 81EC1E0 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1E4:: @ 81EC1E4 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1E8:: @ 81EC1E8 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1EC:: @ 81EC1EC - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1F0:: @ 81EC1F0 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1F4:: @ 81EC1F4 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1F8:: @ 81EC1F8 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC1FC:: @ 81EC1FC - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC200:: @ 81EC200 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC204:: @ 81EC204 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC208:: @ 81EC208 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC20C:: @ 81EC20C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC210:: @ 81EC210 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC214:: @ 81EC214 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC218:: @ 81EC218 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC21C:: @ 81EC21C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC220:: @ 81EC220 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC224:: @ 81EC224 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC228:: @ 81EC228 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC22C:: @ 81EC22C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC230:: @ 81EC230 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC234:: @ 81EC234 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC238:: @ 81EC238 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC23C:: @ 81EC23C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC240:: @ 81EC240 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC244:: @ 81EC244 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC248:: @ 81EC248 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC24C:: @ 81EC24C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC250:: @ 81EC250 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC254:: @ 81EC254 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC258:: @ 81EC258 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC25C:: @ 81EC25C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC260:: @ 81EC260 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC264:: @ 81EC264 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC268:: @ 81EC268 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC26C:: @ 81EC26C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC270:: @ 81EC270 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC274:: @ 81EC274 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC278:: @ 81EC278 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC27C:: @ 81EC27C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC280:: @ 81EC280 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC284:: @ 81EC284 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC288:: @ 81EC288 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC28C:: @ 81EC28C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC290:: @ 81EC290 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC294:: @ 81EC294 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC298:: @ 81EC298 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC29C:: @ 81EC29C - .4byte gSpriteAnim_81E7A90 - - .align 2 -gSpriteAnimTable_81EC2A0:: @ 81EC2A0 - .4byte gSpriteAnim_81E7A90 - - .align 2 -gUnknown_081EC2A4:: @ 81EC2A4 - .4byte gSpriteAnimTable_81EC14C - .4byte gSpriteAnimTable_81EC150 - .4byte gSpriteAnimTable_81EC154 - .4byte gSpriteAnimTable_81EC15C - .4byte gSpriteAnimTable_81EC160 - .4byte gSpriteAnimTable_81EC164 - .4byte gSpriteAnimTable_81EC168 - .4byte gSpriteAnimTable_81EC16C - .4byte gSpriteAnimTable_81EC174 - .4byte gSpriteAnimTable_81EC17C - .4byte gSpriteAnimTable_81EC180 - .4byte gSpriteAnimTable_81EC184 - .4byte gSpriteAnimTable_81EC188 - .4byte gSpriteAnimTable_81EC18C - .4byte gSpriteAnimTable_81EC190 - .4byte gSpriteAnimTable_81EC194 - .4byte gSpriteAnimTable_81EC198 - .4byte gSpriteAnimTable_81EC19C - .4byte gSpriteAnimTable_81EC1A0 - .4byte gSpriteAnimTable_81EC1A4 - .4byte gSpriteAnimTable_81EC1A8 - .4byte gSpriteAnimTable_81EC1AC - .4byte gSpriteAnimTable_81EC1B0 - .4byte gSpriteAnimTable_81EC1B4 - .4byte gSpriteAnimTable_81EC1B8 - .4byte gSpriteAnimTable_81EC1BC - .4byte gSpriteAnimTable_81EC1C0 - .4byte gSpriteAnimTable_81EC1C4 - .4byte gSpriteAnimTable_81EC1C8 - .4byte gSpriteAnimTable_81EC1CC - .4byte gSpriteAnimTable_81EC1D0 - .4byte gSpriteAnimTable_81EC1D4 - .4byte gSpriteAnimTable_81EC1D8 - .4byte gSpriteAnimTable_81EC1DC - .4byte gSpriteAnimTable_81EC1E0 - .4byte gSpriteAnimTable_81EC1E4 - .4byte gSpriteAnimTable_81EC1E8 - .4byte gSpriteAnimTable_81EC1EC - .4byte gSpriteAnimTable_81EC1F0 - .4byte gSpriteAnimTable_81EC1F4 - .4byte gSpriteAnimTable_81EC1F8 - .4byte gSpriteAnimTable_81EC1FC - .4byte gSpriteAnimTable_81EC200 - .4byte gSpriteAnimTable_81EC204 - .4byte gSpriteAnimTable_81EC208 - .4byte gSpriteAnimTable_81EC20C - .4byte gSpriteAnimTable_81EC210 - .4byte gSpriteAnimTable_81EC214 - .4byte gSpriteAnimTable_81EC218 - .4byte gSpriteAnimTable_81EC21C - .4byte gSpriteAnimTable_81EC220 - .4byte gSpriteAnimTable_81EC224 - .4byte gSpriteAnimTable_81EC228 - .4byte gSpriteAnimTable_81EC22C - .4byte gSpriteAnimTable_81EC230 - .4byte gSpriteAnimTable_81EC234 - .4byte gSpriteAnimTable_81EC238 - .4byte gSpriteAnimTable_81EC23C - .4byte gSpriteAnimTable_81EC240 - .4byte gSpriteAnimTable_81EC244 - .4byte gSpriteAnimTable_81EC248 - .4byte gSpriteAnimTable_81EC24C - .4byte gSpriteAnimTable_81EC250 - .4byte gSpriteAnimTable_81EC254 - .4byte gSpriteAnimTable_81EC258 - .4byte gSpriteAnimTable_81EC25C - .4byte gSpriteAnimTable_81EC260 - .4byte gSpriteAnimTable_81EC264 - .4byte gSpriteAnimTable_81EC268 - .4byte gSpriteAnimTable_81EC26C - .4byte gSpriteAnimTable_81EC270 - .4byte gSpriteAnimTable_81EC274 - .4byte gSpriteAnimTable_81EC278 - .4byte gSpriteAnimTable_81EC27C - .4byte gSpriteAnimTable_81EC280 - .4byte gSpriteAnimTable_81EC284 - .4byte gSpriteAnimTable_81EC288 - .4byte gSpriteAnimTable_81EC28C - .4byte gSpriteAnimTable_81EC290 - .4byte gSpriteAnimTable_81EC294 - .4byte gSpriteAnimTable_81EC298 - .4byte gSpriteAnimTable_81EC29C - .4byte gSpriteAnimTable_81EC2A0 - -@ 81EC3F0 - .include "data/graphics/trainers/front_pic_coords.inc" - -@ 81EC53C - .include "data/graphics/trainers/front_pic_table.inc" - -@ 81EC7D4 - .include "data/graphics/trainers/front_pic_palette_table.inc" - - .align 2 -gSpriteAnim_81ECA6C:: @ 81ECA6C - obj_image_anim_frame 0, 24 - obj_image_anim_frame 1, 9 - obj_image_anim_frame 2, 24 - obj_image_anim_frame 0, 9 - obj_image_anim_frame 3, 50 - obj_image_anim_end - - .align 2 -gSpriteAnim_81ECA84:: @ 81ECA84 - obj_image_anim_frame 0, 24 - obj_image_anim_frame 1, 9 - obj_image_anim_frame 2, 24 - obj_image_anim_frame 0, 9 - obj_image_anim_frame 3, 50 - obj_image_anim_end - - .align 2 -gSpriteAnim_81ECA9C:: @ 81ECA9C - obj_image_anim_frame 0, 24 - obj_image_anim_frame 1, 9 - obj_image_anim_frame 2, 24 - obj_image_anim_frame 0, 9 - obj_image_anim_frame 3, 50 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_81ECAB4:: @ 81ECAB4 - .4byte gSpriteAnim_81E7A98 - .4byte gSpriteAnim_81ECA6C - - .align 2 -gSpriteAnimTable_81ECABC:: @ 81ECABC - .4byte gSpriteAnim_81E7A98 - .4byte gSpriteAnim_81ECA84 - - .align 2 -gSpriteAnimTable_81ECAC4:: @ 81ECAC4 - .4byte gSpriteAnim_81E7A98 - .4byte gSpriteAnim_81ECA9C - - .align 2 -gUnknown_081ECACC:: @ 81ECACC - .4byte gSpriteAnimTable_81ECAB4 - .4byte gSpriteAnimTable_81ECABC - .4byte gSpriteAnimTable_81ECAC4 - -@ 81ECAD8 - .include "data/graphics/trainers/back_pic_coords.inc" - -@ 81ECAE4 - .include "data/graphics/trainers/back_pic_table.inc" - -@ 81ECAFC - .include "data/graphics/trainers/back_pic_palette_table.inc" - -@ 81ECB14 - .include "data/enemy_mon_elevation.inc" - -@ 81ECCB0 - .include "data/trainer_parties.inc" - -@ 81F0208 - .include "data/text/trainer_class_names.inc" - -@ 81F04FC - .include "data/trainers.inc" - -@ 81F716C - .include "data/text/species_names.inc" - -@ 81F8320 - .include "data/text/move_names.inc" - - .align 2 -@ 81F9528 - .4byte 0x101 @ unknown data - - .align 2 -gOamData_81F952C:: @ 81F952C - .2byte 0x0300 - .2byte 0xC000 - .2byte 0x0000 - - .align 2 -gOamData_81F9534:: @ 81F9534 - .2byte 0x0300 - .2byte 0xC000 - .2byte 0x0040 - - .align 2 -gSpriteAffineAnim_81F953C:: @ 81F953C - obj_rot_scal_anim_frame 0x80, 0x80, 0, 0 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_81F954C:: @ 81F954C - obj_rot_scal_anim_frame 0x80, 0x80, 0, 0 - obj_rot_scal_anim_frame 0x18, 0x18, 0, -128 - obj_rot_scal_anim_frame 0x18, 0x18, 0, -128 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_81F956C:: @ 81F956C - .4byte gSpriteAffineAnim_81F953C - .4byte gSpriteAffineAnim_81F954C - - .align 2 -gSpriteTemplate_81F9574:: @ 81F9574 - spr_template 10000, 10000, gOamData_81F952C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_81F956C, nullsub_36 - - .align 2 -gSpriteTemplate_81F958C:: @ 81F958C - spr_template 10000, 10000, gOamData_81F9534, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_81F956C, nullsub_36 - - .align 2 -gUnknown_081F95A4:: @ 81F95A4 - obj_tiles gUnknown_08E5DC2C, 4096, 0x2710 - - .align 2 -gBattleTerrainTable:: @ 81F95AC - @ tall_grass - .4byte gBattleTerrainTiles_TallGrass - .4byte gBattleTerrainTilemap_TallGrass - .4byte gBattleTerrainAnimTiles_TallGrass - .4byte gBattleTerrainAnimTilemap_TallGrass - .4byte gBattleTerrainPalette_TallGrass - - @ long_grass - .4byte gBattleTerrainTiles_LongGrass - .4byte gBattleTerrainTilemap_LongGrass - .4byte gBattleTerrainAnimTiles_LongGrass - .4byte gBattleTerrainAnimTilemap_LongGrass - .4byte gBattleTerrainPalette_LongGrass - - @ sand - .4byte gBattleTerrainTiles_Sand - .4byte gBattleTerrainTilemap_Sand - .4byte gBattleTerrainAnimTiles_Sand - .4byte gBattleTerrainAnimTilemap_Sand - .4byte gBattleTerrainPalette_Sand - - @ underwater - .4byte gBattleTerrainTiles_Underwater - .4byte gBattleTerrainTilemap_Underwater - .4byte gBattleTerrainAnimTiles_Underwater - .4byte gBattleTerrainAnimTilemap_Underwater - .4byte gBattleTerrainPalette_Underwater - - @ water - .4byte gBattleTerrainTiles_Water - .4byte gBattleTerrainTilemap_Water - .4byte gBattleTerrainAnimTiles_Water - .4byte gBattleTerrainAnimTilemap_Water - .4byte gBattleTerrainPalette_Water - - @ pond_water - .4byte gBattleTerrainTiles_PondWater - .4byte gBattleTerrainTilemap_PondWater - .4byte gBattleTerrainAnimTiles_PondWater - .4byte gBattleTerrainAnimTilemap_PondWater - .4byte gBattleTerrainPalette_PondWater - - @ rock - .4byte gBattleTerrainTiles_Rock - .4byte gBattleTerrainTilemap_Rock - .4byte gBattleTerrainAnimTiles_Rock - .4byte gBattleTerrainAnimTilemap_Rock - .4byte gBattleTerrainPalette_Rock - - @ cave - .4byte gBattleTerrainTiles_Cave - .4byte gBattleTerrainTilemap_Cave - .4byte gBattleTerrainAnimTiles_Cave - .4byte gBattleTerrainAnimTilemap_Cave - .4byte gBattleTerrainPalette_Cave - - @ building - .4byte gBattleTerrainTiles_Building - .4byte gBattleTerrainTilemap_Building - .4byte gBattleTerrainAnimTiles_Building - .4byte gBattleTerrainAnimTilemap_Building - .4byte gBattleTerrainPalette_Building - - @ plain - .4byte gBattleTerrainTiles_Building - .4byte gBattleTerrainTilemap_Building - .4byte gBattleTerrainAnimTiles_Building - .4byte gBattleTerrainAnimTilemap_Building - .4byte gBattleTerrainPalette_Plain - - .align 2 -gUnknown_081F9674:: @ 81F9674 - .4byte REG_BG3HOFS - .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 - .4byte 1 - - .align 2 -gUnknown_081F9680:: @ 81F9680 - .4byte gUnknown_030041D0 - .2byte 0x20 - .byte 0x13 - .byte 0x10 - .4byte BG_VRAM + 0xE104 - - .4byte gUnknown_03004250 - .2byte 0x40 - .byte 0x13 - .byte 0x10 - .4byte BG_VRAM + 0xF104 - - .4byte gUnknown_030041D0 - .2byte 0x60 - .byte 0x13 - .byte 0x30 - .4byte BG_VRAM + 0xE204 - - .4byte gUnknown_03004250 - .2byte 0x80 - .byte 0x13 - .byte 0x30 - .4byte BG_VRAM + 0xF204 - - .4byte gUnknown_030041D0 - .2byte 0x20 - .byte 0x13 - .byte 0x18 - .4byte BG_VRAM + 0xE1C4 - - .4byte gUnknown_03004250 - .2byte 0x40 - .byte 0x13 - .byte 0x18 - .4byte BG_VRAM + 0xF1C4 - -gUnknown_081F96C8:: @ 81F96C8 - .string "ヌケニン$" @ "Nukenin" (Shedinja) - - .align 2 -gSpriteTemplate_81F96D0:: @ 81F96D0 - spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_800F828 - - .align 2 -gOamData_81F96E8:: @ 81F96E8 - .2byte 0x0100 - .2byte 0xC000 - .2byte 0x0800 - - .align 2 -gOamData_81F96F0:: @ 81F96F0 - .2byte 0x0100 - .2byte 0xC000 - .2byte 0x2800 - - .align 2 -gSpriteAnim_81F96F8:: @ 81F96F8 - obj_image_anim_frame 0, 5 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_81F9700:: @ 81F9700 - .4byte gSpriteAnim_81F96F8 - - .align 2 -gSpriteAffineAnim_81F9704:: @ 81F9704 - obj_rot_scal_anim_frame 0xFFF0, 0x0, 0, 4 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 60 - obj_rot_scal_anim_jump 1 - - .align 2 -gSpriteAffineAnimTable_81F971C:: @ 81F971C - .4byte gSpriteAffineAnim_81F9704 - -@ 81F9720 - .include "data/type_effectiveness.inc" - -@ 81F9870 - .include "data/text/type_names.inc" - -@ 81F98F0 - .include "data/trainer_money.inc" - -@ 81F99CC - .include "data/text/ability_descriptions.inc" - -@ 81FA248 - .include "data/text/ability_names.inc" - - .align 2 -gUnknown_081FA640:: @ 81FA640 - .4byte HandleAction_UseMove - .4byte HandleAction_UseItem - .4byte HandleAction_Switch - .4byte HandleAction_Run - .4byte HandleAction_WatchesCarefully - .4byte HandleAction_SafariZoneBallThrow - .4byte HandleAction_ThrowPokeblock - .4byte HandleAction_GoNear - .4byte HandleAction_SafriZoneRun - .4byte HandleAction_Action9 - .4byte sub_801B594 - .4byte HandleAction_Action11 - .4byte HandleAction_ActionFinished - .4byte HandleAction_NothingIsFainted - - .align 2 -gUnknown_081FA678:: @ 81FA678 - .4byte bc_8013B1C - .4byte HandleEndTurn_BattleWon - .4byte HandleEndTurn_BattleLost - .4byte HandleEndTurn_BattleLost - .4byte HandleEndTurn_RanFromBattle - .4byte HandleEndTurn_FinishBattle - .4byte HandleEndTurn_MonFled - .4byte HandleEndTurn_FinishBattle - .4byte HandleEndTurn_FinishBattle - -gStatusConditionString_PoisonJpn:: @ 81FA69C - .string "どく$$$$$$" - -gStatusConditionString_SleepJpn:: @ 81FA6A4 - .string "ねむり$$$$$" - -gStatusConditionString_ParalysisJpn:: @ 81FA6AC - .string "まひ$$$$$$" - -gStatusConditionString_BurnJpn:: @ 81FA6B4 - .string "やけど$$$$$" - -gStatusConditionString_IceJpn:: @ 81FA6BC - .string "こおり$$$$$" - -gStatusConditionString_ConfusionJpn:: @ 81FA6C4 - .string "こんらん$$$$" - -gStatusConditionString_LoveJpn:: @ 81FA6CC - .string "メロメロ$$$$" - - .align 2 -gUnknown_081FA6D4:: @ 81FA6D4 - .4byte gStatusConditionString_PoisonJpn, BattleText_PoisonStatus - .4byte gStatusConditionString_SleepJpn, BattleText_Sleep - .4byte gStatusConditionString_ParalysisJpn, BattleText_Paralysis - .4byte gStatusConditionString_BurnJpn, BattleText_Burn - .4byte gStatusConditionString_IceJpn, BattleText_IceStatus - .4byte gStatusConditionString_ConfusionJpn, BattleText_Confusion - .4byte gStatusConditionString_LoveJpn, BattleText_Love - -gUnknown_081FA70C:: @ 81FA70C - .byte 0, 0, 0 - .byte 3, 5, 0 - .byte 2, 3, 0 - .byte 1, 2, 0 - .byte 1, 1, 0 - -gUnknown_081FA71B:: @ 81FA71B - .byte 4, 3, 2, 1 - -gUnknown_081FA71F:: @ 81FA71F - .byte 4, 4, 4, 4 - - .align 1 -gSoundMovesTable:: @ 81FA724 - .2byte 0x2D - .2byte 0x2E - .2byte 0x2F - .2byte 0x30 - .2byte 0x67 - .2byte 0xAD - .2byte 0xFD - .2byte 0x13F - .2byte 0x140 - .2byte 0x130 - .2byte 0xFFFF diff --git a/data/mon_attrs.s b/data/mon_attrs.s new file mode 100644 index 000000000..ea47c8de6 --- /dev/null +++ b/data/mon_attrs.s @@ -0,0 +1,704 @@ +@ the second big chunk of data + +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/species.h" + .include "include/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gSpriteImageTable_81E7A10:: @ 81E7A10 + obj_frame_tiles gSharedMem + 0x8000, 0x800 + obj_frame_tiles gSharedMem + 0x8800, 0x800 + obj_frame_tiles gSharedMem + 0x9000, 0x800 + obj_frame_tiles gSharedMem + 0x9800, 0x800 + + .align 2 +gSpriteImageTable_81E7A30:: @ 81E7A30 + obj_frame_tiles gSharedMem + 0xA000, 0x800 + obj_frame_tiles gSharedMem + 0xA800, 0x800 + obj_frame_tiles gSharedMem + 0xB000, 0x800 + obj_frame_tiles gSharedMem + 0xB800, 0x800 + + .align 2 +gSpriteImageTable_81E7A50:: @ 81E7A50 + obj_frame_tiles gSharedMem + 0xC000, 0x800 + obj_frame_tiles gSharedMem + 0xC800, 0x800 + obj_frame_tiles gSharedMem + 0xD000, 0x800 + obj_frame_tiles gSharedMem + 0xD800, 0x800 + + .align 2 +gSpriteImageTable_81E7A70:: @ 81E7A70 + obj_frame_tiles gSharedMem + 0xE000, 0x800 + obj_frame_tiles gSharedMem + 0xE800, 0x800 + obj_frame_tiles gSharedMem + 0xF000, 0x800 + obj_frame_tiles gSharedMem + 0xF800, 0x800 + + .align 2 +gSpriteAnim_81E7A90:: @ 81E7A90 + obj_image_anim_frame 0, 0 + obj_image_anim_end + + .align 2 +gSpriteAnim_81E7A98:: @ 81E7A98 + obj_image_anim_frame 3, 0 + obj_image_anim_end + + .align 2 +gSpriteAffineAnim_81E7AA0:: @ 81E7AA0 + obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7AB0:: @ 81E7AB0 + obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7AC0:: @ 81E7AC0 + obj_rot_scal_anim_frame 0x28, 0x28, 0, 0 + obj_rot_scal_anim_frame 0x12, 0x12, 0, 12 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7AD8:: @ 81E7AD8 + obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 18 + obj_rot_scal_anim_frame 0xFFF0, 0xFFF0, 0, 15 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7AF0:: @ 81E7AF0 + obj_rot_scal_anim_frame 0xA0, 0x100, 0, 0 + obj_rot_scal_anim_frame 0x4, 0x0, 0, 8 + obj_rot_scal_anim_frame 0xFFFC, 0x0, 0, 8 + obj_rot_scal_anim_jump 1 + + .align 2 +gSpriteAffineAnim_81E7B10:: @ 81E7B10 + obj_rot_scal_anim_frame 0x2, 0x2, 0, 20 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7B20:: @ 81E7B20 + obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 20 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7B30:: @ 81E7B30 + obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 + obj_rot_scal_anim_frame 0xFFF0, 0xFFF0, 0, 9 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7B48:: @ 81E7B48 + obj_rot_scal_anim_frame 0x4, 0x4, 0, 63 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7B58:: @ 81E7B58 + obj_rot_scal_anim_frame 0x0, 0x0, -3, 5 + obj_rot_scal_anim_frame 0x0, 0x0, 3, 5 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnimTable_81E7B70:: @ 81E7B70 + .4byte gSpriteAffineAnim_81E7AA0 + .4byte gSpriteAffineAnim_81E7AC0 + .4byte gSpriteAffineAnim_81E7AD8 + .4byte gSpriteAffineAnim_81E7AF0 + .4byte gSpriteAffineAnim_81E7B10 + .4byte gSpriteAffineAnim_81E7B20 + .4byte gSpriteAffineAnim_81E7B48 + .4byte gSpriteAffineAnim_81E7B58 + .4byte gSpriteAffineAnim_81E7B30 + + .align 2 +gSpriteAffineAnim_81E7B94:: @ 81E7B94 + obj_rot_scal_anim_frame 0xFFFC, 0xFFFC, 4, 63 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7BA4:: @ 81E7BA4 + obj_rot_scal_anim_frame 0x0, 0x0, 3, 5 + obj_rot_scal_anim_frame 0x0, 0x0, -3, 5 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7BBC:: @ 81E7BBC + obj_rot_scal_anim_frame 0x0, 0x0, -5, 20 + obj_rot_scal_anim_frame 0x0, 0x0, 0, 20 + obj_rot_scal_anim_frame 0x0, 0x0, 5, 20 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnim_81E7BDC:: @ 81E7BDC + obj_rot_scal_anim_frame 0x0, 0x0, 9, 110 + obj_rot_scal_anim_end + + .align 2 +gSpriteAffineAnimTable_81E7BEC:: @ 81E7BEC + .4byte gSpriteAffineAnim_81E7AA0 + .4byte gSpriteAffineAnim_81E7AC0 + .4byte gSpriteAffineAnim_81E7AD8 + .4byte gSpriteAffineAnim_81E7AF0 + .4byte gSpriteAffineAnim_81E7B10 + .4byte gSpriteAffineAnim_81E7B20 + .4byte gSpriteAffineAnim_81E7B94 + .4byte gSpriteAffineAnim_81E7BA4 + .4byte gSpriteAffineAnim_81E7BBC + .4byte gSpriteAffineAnim_81E7B30 + .4byte gSpriteAffineAnim_81E7BDC + + .align 2 +gSpriteAffineAnimTable_81E7C18:: @ 81E7C18 + .4byte gSpriteAffineAnim_81E7AB0 + .4byte gSpriteAffineAnim_81E7AC0 + .4byte gSpriteAffineAnim_81E7AD8 + .4byte gSpriteAffineAnim_81E7AF0 + .4byte gSpriteAffineAnim_81E7B10 + .4byte gSpriteAffineAnim_81E7B20 + .4byte gSpriteAffineAnim_81E7B94 + .4byte gSpriteAffineAnim_81E7BA4 + .4byte gSpriteAffineAnim_81E7BBC + .4byte gSpriteAffineAnim_81E7B30 + .4byte gSpriteAffineAnim_81E7BDC + + .align 2 +gSpriteAnim_81E7C44:: @ 81E7C44 + obj_image_anim_frame 0, 0 + obj_image_anim_end + + .align 2 +gSpriteAnim_81E7C4C:: @ 81E7C4C + obj_image_anim_frame 1, 0 + obj_image_anim_end + + .align 2 +gSpriteAnim_81E7C54:: @ 81E7C54 + obj_image_anim_frame 2, 0 + obj_image_anim_end + + .align 2 +gSpriteAnim_81E7C5C:: @ 81E7C5C + obj_image_anim_frame 3, 0 + obj_image_anim_end + + .align 2 +gSpriteAnimTable_81E7C64:: @ 81E7C64 + .4byte gSpriteAnim_81E7C44 + .4byte gSpriteAnim_81E7C4C + .4byte gSpriteAnim_81E7C54 + .4byte gSpriteAnim_81E7C5C + +@ 81E7C74 + .include "data/graphics/pokemon/front_pic_coords.inc" + +@ 81E8354 + .include "data/graphics/pokemon/front_pic_table.inc" + +@ 81E9114 + .include "data/graphics/pokemon/back_pic_coords.inc" + +@ 81E97F4 + .include "data/graphics/pokemon/back_pic_table.inc" + +@ 81EA5B4 + .include "data/graphics/pokemon/palette_table.inc" + +@ 81EB374 + .include "data/graphics/pokemon/shiny_palette_table.inc" + + .align 2 +gSpriteAnim_81EC134:: @ 81EC134 + obj_image_anim_frame 0, 7 + obj_image_anim_end + + .align 2 +gSpriteAnim_81EC13C:: @ 81EC13C + obj_image_anim_frame 0, 2 + obj_image_anim_end + + .align 2 +gSpriteAnim_81EC144:: @ 81EC144 + obj_image_anim_frame 0, 2 + obj_image_anim_end + + .align 2 +gSpriteAnimTable_81EC14C:: @ 81EC14C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC150:: @ 81EC150 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC154:: @ 81EC154 + .4byte gSpriteAnim_81E7A90 + .4byte gSpriteAnim_81EC134 + + .align 2 +gSpriteAnimTable_81EC15C:: @ 81EC15C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC160:: @ 81EC160 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC164:: @ 81EC164 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC168:: @ 81EC168 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC16C:: @ 81EC16C + .4byte gSpriteAnim_81E7A90 + .4byte gSpriteAnim_81EC13C + + .align 2 +gSpriteAnimTable_81EC174:: @ 81EC174 + .4byte gSpriteAnim_81E7A90 + .4byte gSpriteAnim_81EC144 + + .align 2 +gSpriteAnimTable_81EC17C:: @ 81EC17C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC180:: @ 81EC180 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC184:: @ 81EC184 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC188:: @ 81EC188 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC18C:: @ 81EC18C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC190:: @ 81EC190 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC194:: @ 81EC194 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC198:: @ 81EC198 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC19C:: @ 81EC19C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1A0:: @ 81EC1A0 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1A4:: @ 81EC1A4 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1A8:: @ 81EC1A8 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1AC:: @ 81EC1AC + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1B0:: @ 81EC1B0 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1B4:: @ 81EC1B4 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1B8:: @ 81EC1B8 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1BC:: @ 81EC1BC + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1C0:: @ 81EC1C0 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1C4:: @ 81EC1C4 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1C8:: @ 81EC1C8 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1CC:: @ 81EC1CC + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1D0:: @ 81EC1D0 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1D4:: @ 81EC1D4 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1D8:: @ 81EC1D8 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1DC:: @ 81EC1DC + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1E0:: @ 81EC1E0 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1E4:: @ 81EC1E4 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1E8:: @ 81EC1E8 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1EC:: @ 81EC1EC + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1F0:: @ 81EC1F0 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1F4:: @ 81EC1F4 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1F8:: @ 81EC1F8 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC1FC:: @ 81EC1FC + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC200:: @ 81EC200 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC204:: @ 81EC204 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC208:: @ 81EC208 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC20C:: @ 81EC20C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC210:: @ 81EC210 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC214:: @ 81EC214 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC218:: @ 81EC218 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC21C:: @ 81EC21C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC220:: @ 81EC220 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC224:: @ 81EC224 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC228:: @ 81EC228 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC22C:: @ 81EC22C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC230:: @ 81EC230 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC234:: @ 81EC234 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC238:: @ 81EC238 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC23C:: @ 81EC23C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC240:: @ 81EC240 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC244:: @ 81EC244 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC248:: @ 81EC248 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC24C:: @ 81EC24C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC250:: @ 81EC250 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC254:: @ 81EC254 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC258:: @ 81EC258 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC25C:: @ 81EC25C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC260:: @ 81EC260 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC264:: @ 81EC264 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC268:: @ 81EC268 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC26C:: @ 81EC26C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC270:: @ 81EC270 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC274:: @ 81EC274 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC278:: @ 81EC278 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC27C:: @ 81EC27C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC280:: @ 81EC280 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC284:: @ 81EC284 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC288:: @ 81EC288 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC28C:: @ 81EC28C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC290:: @ 81EC290 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC294:: @ 81EC294 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC298:: @ 81EC298 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC29C:: @ 81EC29C + .4byte gSpriteAnim_81E7A90 + + .align 2 +gSpriteAnimTable_81EC2A0:: @ 81EC2A0 + .4byte gSpriteAnim_81E7A90 + + .align 2 +gUnknown_081EC2A4:: @ 81EC2A4 + .4byte gSpriteAnimTable_81EC14C + .4byte gSpriteAnimTable_81EC150 + .4byte gSpriteAnimTable_81EC154 + .4byte gSpriteAnimTable_81EC15C + .4byte gSpriteAnimTable_81EC160 + .4byte gSpriteAnimTable_81EC164 + .4byte gSpriteAnimTable_81EC168 + .4byte gSpriteAnimTable_81EC16C + .4byte gSpriteAnimTable_81EC174 + .4byte gSpriteAnimTable_81EC17C + .4byte gSpriteAnimTable_81EC180 + .4byte gSpriteAnimTable_81EC184 + .4byte gSpriteAnimTable_81EC188 + .4byte gSpriteAnimTable_81EC18C + .4byte gSpriteAnimTable_81EC190 + .4byte gSpriteAnimTable_81EC194 + .4byte gSpriteAnimTable_81EC198 + .4byte gSpriteAnimTable_81EC19C + .4byte gSpriteAnimTable_81EC1A0 + .4byte gSpriteAnimTable_81EC1A4 + .4byte gSpriteAnimTable_81EC1A8 + .4byte gSpriteAnimTable_81EC1AC + .4byte gSpriteAnimTable_81EC1B0 + .4byte gSpriteAnimTable_81EC1B4 + .4byte gSpriteAnimTable_81EC1B8 + .4byte gSpriteAnimTable_81EC1BC + .4byte gSpriteAnimTable_81EC1C0 + .4byte gSpriteAnimTable_81EC1C4 + .4byte gSpriteAnimTable_81EC1C8 + .4byte gSpriteAnimTable_81EC1CC + .4byte gSpriteAnimTable_81EC1D0 + .4byte gSpriteAnimTable_81EC1D4 + .4byte gSpriteAnimTable_81EC1D8 + .4byte gSpriteAnimTable_81EC1DC + .4byte gSpriteAnimTable_81EC1E0 + .4byte gSpriteAnimTable_81EC1E4 + .4byte gSpriteAnimTable_81EC1E8 + .4byte gSpriteAnimTable_81EC1EC + .4byte gSpriteAnimTable_81EC1F0 + .4byte gSpriteAnimTable_81EC1F4 + .4byte gSpriteAnimTable_81EC1F8 + .4byte gSpriteAnimTable_81EC1FC + .4byte gSpriteAnimTable_81EC200 + .4byte gSpriteAnimTable_81EC204 + .4byte gSpriteAnimTable_81EC208 + .4byte gSpriteAnimTable_81EC20C + .4byte gSpriteAnimTable_81EC210 + .4byte gSpriteAnimTable_81EC214 + .4byte gSpriteAnimTable_81EC218 + .4byte gSpriteAnimTable_81EC21C + .4byte gSpriteAnimTable_81EC220 + .4byte gSpriteAnimTable_81EC224 + .4byte gSpriteAnimTable_81EC228 + .4byte gSpriteAnimTable_81EC22C + .4byte gSpriteAnimTable_81EC230 + .4byte gSpriteAnimTable_81EC234 + .4byte gSpriteAnimTable_81EC238 + .4byte gSpriteAnimTable_81EC23C + .4byte gSpriteAnimTable_81EC240 + .4byte gSpriteAnimTable_81EC244 + .4byte gSpriteAnimTable_81EC248 + .4byte gSpriteAnimTable_81EC24C + .4byte gSpriteAnimTable_81EC250 + .4byte gSpriteAnimTable_81EC254 + .4byte gSpriteAnimTable_81EC258 + .4byte gSpriteAnimTable_81EC25C + .4byte gSpriteAnimTable_81EC260 + .4byte gSpriteAnimTable_81EC264 + .4byte gSpriteAnimTable_81EC268 + .4byte gSpriteAnimTable_81EC26C + .4byte gSpriteAnimTable_81EC270 + .4byte gSpriteAnimTable_81EC274 + .4byte gSpriteAnimTable_81EC278 + .4byte gSpriteAnimTable_81EC27C + .4byte gSpriteAnimTable_81EC280 + .4byte gSpriteAnimTable_81EC284 + .4byte gSpriteAnimTable_81EC288 + .4byte gSpriteAnimTable_81EC28C + .4byte gSpriteAnimTable_81EC290 + .4byte gSpriteAnimTable_81EC294 + .4byte gSpriteAnimTable_81EC298 + .4byte gSpriteAnimTable_81EC29C + .4byte gSpriteAnimTable_81EC2A0 + +@ 81EC3F0 + .include "data/graphics/trainers/front_pic_coords.inc" + +@ 81EC53C + .include "data/graphics/trainers/front_pic_table.inc" + +@ 81EC7D4 + .include "data/graphics/trainers/front_pic_palette_table.inc" + + .align 2 +gSpriteAnim_81ECA6C:: @ 81ECA6C + obj_image_anim_frame 0, 24 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 2, 24 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 3, 50 + obj_image_anim_end + + .align 2 +gSpriteAnim_81ECA84:: @ 81ECA84 + obj_image_anim_frame 0, 24 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 2, 24 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 3, 50 + obj_image_anim_end + + .align 2 +gSpriteAnim_81ECA9C:: @ 81ECA9C + obj_image_anim_frame 0, 24 + obj_image_anim_frame 1, 9 + obj_image_anim_frame 2, 24 + obj_image_anim_frame 0, 9 + obj_image_anim_frame 3, 50 + obj_image_anim_end + + .align 2 +gSpriteAnimTable_81ECAB4:: @ 81ECAB4 + .4byte gSpriteAnim_81E7A98 + .4byte gSpriteAnim_81ECA6C + + .align 2 +gSpriteAnimTable_81ECABC:: @ 81ECABC + .4byte gSpriteAnim_81E7A98 + .4byte gSpriteAnim_81ECA84 + + .align 2 +gSpriteAnimTable_81ECAC4:: @ 81ECAC4 + .4byte gSpriteAnim_81E7A98 + .4byte gSpriteAnim_81ECA9C + + .align 2 +gUnknown_081ECACC:: @ 81ECACC + .4byte gSpriteAnimTable_81ECAB4 + .4byte gSpriteAnimTable_81ECABC + .4byte gSpriteAnimTable_81ECAC4 diff --git a/include/decoration.h b/include/decoration.h index 5e73df071..74ca47a3a 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -151,7 +151,6 @@ extern const struct YesNoFuncTable gUnknown_083EC634[]; extern const u8 gUnknown_083EC65A[]; extern const u8 gUnknown_083EC97C[]; extern const u8 gUnknown_083EC984[]; -extern void Shop_RunExitSellMenuTask(u8); // src/shop extern const struct YesNoFuncTable gUnknown_083EC95C; extern const struct YesNoFuncTable gUnknown_083EC964; extern const struct YesNoFuncTable gUnknown_083EC9CC; diff --git a/include/shop.h b/include/shop.h index 63dd6cc81..76b68d0e9 100644 --- a/include/shop.h +++ b/include/shop.h @@ -37,20 +37,9 @@ struct MartInfo /* 0xD */ u8 curItemCount; // if you are selling an item, this is the count of the current item stack you have. }; -void Task_DoBuySellMenu(u8); -void Task_HandleShopMenuQuit(u8); -void Shop_FadeAndRunBuySellCallback(u8); -void BuyMenuDrawGraphics(void); -void sub_80B3240(void); -void DrawFirstMartScrollIndicators(void); -void Shop_DrawViewport(void); -void Shop_InitMenus(int, int); -void Shop_PrintItemDesc(void); -void Shop_DoCursorAction(u8); -void CreatePokemartMenu(u16 *); -void CreateDecorationShop1Menu(u16 *); -void CreateDecorationShop2Menu(u16 *); -void Shop_LoadViewportObjects(void); -void Shop_AnimViewportObjects(void); +void Shop_CreatePokemartMenu(u16 *); +void Shop_CreateDecorationShop1Menu(u16 *); +void Shop_CreateDecorationShop2Menu(u16 *); +void Shop_RunExitSellMenuTask(u8 taskId); #endif // GUARD_SHOP_H diff --git a/ld_script.txt b/ld_script.txt index afa71a0c5..3749b49f5 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -481,7 +481,8 @@ SECTIONS { src/engine/link.o(.rodata); src/engine/rtc.o(.rodata); src/engine/main_menu.o(.rodata); - data/data2a.o(.rodata); + data/mon_attrs.o(.rodata); + data/btl_attrs.o(.rodata); src/battle/battle_4.o(.rodata); src/battle/battle_controller_player.o(.rodata); data/data2b.o(.rodata); diff --git a/src/field/decoration.c b/src/field/decoration.c index 889e8e8a2..e1604cfa1 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -19,6 +19,7 @@ #include "event_data.h" #include "field_weather.h" #include "decoration.h" +#include "shop.h" #include "ewram.h" EWRAM_DATA u8 *gUnknown_020388D0 = NULL; diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index e795fd8ed..36edbe472 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -1755,7 +1755,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); - CreatePokemartMenu(ptr); + Shop_CreatePokemartMenu(ptr); ScriptContext1_Stop(); return TRUE; } @@ -1764,7 +1764,7 @@ bool8 ScrCmd_pokemartdecoration(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); - CreateDecorationShop1Menu(ptr); + Shop_CreateDecorationShop1Menu(ptr); ScriptContext1_Stop(); return TRUE; } @@ -1773,7 +1773,7 @@ bool8 ScrCmd_pokemartdecoration2(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); - CreateDecorationShop2Menu(ptr); + Shop_CreateDecorationShop2Menu(ptr); ScriptContext1_Stop(); return TRUE; } diff --git a/src/field/shop.c b/src/field/shop.c index 233e430ee..5a47b033b 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -34,17 +34,28 @@ extern u8 gBuyMenuFrame_Gfx[]; extern u16 gBuyMenuFrame_Tilemap[]; extern u16 gMenuMoneyPal[16]; -void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode); -void Shop_PrintItemDescText(void); -void Task_ReturnToBuyMenu(u8); -void Task_ExitBuyMenu(u8); -void Task_ExitBuyMenuDoFade(u8); -void Task_UpdatePurchaseHistory(u8); -void Task_HandleShopMenuBuy(u8 taskId); -void Task_HandleShopMenuSell(u8 taskId); -void Task_HandleShopMenuQuit(u8 taskId); -void Task_DoItemPurchase(u8 taskId); -void Task_CancelItemPurchase(u8 taskId); +static void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode); +static void Shop_PrintItemDescText(void); +static void Task_ReturnToBuyMenu(u8); +static void Task_ExitBuyMenu(u8); +static void Task_ExitBuyMenuDoFade(u8); +static void Task_UpdatePurchaseHistory(u8); +static void Task_HandleShopMenuBuy(u8 taskId); +static void Task_HandleShopMenuSell(u8 taskId); +static void Task_HandleShopMenuQuit(u8 taskId); +static void Task_DoItemPurchase(u8 taskId); +static void Task_CancelItemPurchase(u8 taskId); +static void Task_DoBuySellMenu(u8); +static void Shop_FadeAndRunBuySellCallback(u8); +static void BuyMenuDrawGraphics(void); +static void sub_80B3240(void); +static void DrawFirstMartScrollIndicators(void); +static void Shop_DrawViewport(void); +static void Shop_InitMenus(int, int); +static void Shop_PrintItemDesc(void); +static void Shop_DoCursorAction(u8); +static void Shop_LoadViewportObjects(void); +static void Shop_AnimViewportObjects(void); // iwram static struct MartInfo gMartInfo; @@ -76,7 +87,7 @@ static const struct YesNoFuncTable sShopPurchaseYesNoFuncs[] = Task_CancelItemPurchase }; -u8 CreateShopMenu(u8 martType) +static u8 CreateShopMenu(u8 martType) { ScriptContext2_Enable(); gMartInfo.martType = martType; @@ -99,12 +110,12 @@ u8 CreateShopMenu(u8 martType) return CreateTask(Task_DoBuySellMenu, 8); } -void SetShopMenuCallback(void *callbackPtr) +static void SetShopMenuCallback(void *callbackPtr) { gMartInfo.callback = callbackPtr; } -void SetShopItemsForSale(u16 *items) +static void SetShopItemsForSale(u16 *items) { u16 i = 0; @@ -118,7 +129,7 @@ void SetShopItemsForSale(u16 *items) } } -void Task_DoBuySellMenu(u8 taskId) +static void Task_DoBuySellMenu(u8 taskId) { const u8 taskIdConst = taskId; // why is a local const needed to match? @@ -157,7 +168,7 @@ void Task_DoBuySellMenu(u8 taskId) } } -void Task_HandleShopMenuBuy(u8 taskId) +static void Task_HandleShopMenuBuy(u8 taskId) { gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; @@ -165,7 +176,7 @@ void Task_HandleShopMenuBuy(u8 taskId) fade_screen(1, 0); } -void Task_HandleShopMenuSell(u8 taskId) +static void Task_HandleShopMenuSell(u8 taskId) { gTasks[taskId].data[8] = (u32)ItemMenu_LoadSellMenu >> 16; gTasks[taskId].data[9] = (u32)ItemMenu_LoadSellMenu; @@ -173,7 +184,7 @@ void Task_HandleShopMenuSell(u8 taskId) fade_screen(1, 0); } -void Task_HandleShopMenuQuit(u8 taskId) +static void Task_HandleShopMenuQuit(u8 taskId) { Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 8); @@ -185,7 +196,7 @@ void Task_HandleShopMenuQuit(u8 taskId) gMartInfo.callback(); // run the callback if it exists. } -void Shop_FadeAndRunBuySellCallback(u8 taskId) +static void Shop_FadeAndRunBuySellCallback(u8 taskId) { if (!gPaletteFade.active) { @@ -194,13 +205,13 @@ void Shop_FadeAndRunBuySellCallback(u8 taskId) } } -void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) +static void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) { CreateShopMenu(gMartInfo.martType); DestroyTask(taskId); } -void Task_ReturnToMartMenu(u8 taskId) +static void Task_ReturnToMartMenu(u8 taskId) { if (sub_807D770() == 1) { @@ -246,7 +257,7 @@ static void VBlankCB(void) DmaCopy16Defvars(3, gBGTilemapBuffers[3], (void *)(VRAM + 0xF000), 0x800); } -void BuyMenuDrawGraphics(void) +static void BuyMenuDrawGraphics(void) { ClearVideoCallbacks(); ScanlineEffect_Stop(); @@ -298,7 +309,7 @@ void BuyMenuDrawGraphics(void) SetMainCallback2(MainCB2); } -void sub_80B3240(void) +static void sub_80B3240(void) { u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE}; @@ -306,7 +317,7 @@ void sub_80B3240(void) LoadPalette(&colors[0], 0xD8, sizeof colors[0]); } -void DrawFirstMartScrollIndicators(void) +static void DrawFirstMartScrollIndicators(void) { ClearVerticalScrollIndicatorPalettes(); @@ -318,7 +329,7 @@ void DrawFirstMartScrollIndicators(void) } } -void Shop_TryDrawVerticalScrollIndicators(void) +static void Shop_TryDrawVerticalScrollIndicators(void) { if (gMartInfo.choicesAbove == 0) SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); @@ -332,13 +343,13 @@ void Shop_TryDrawVerticalScrollIndicators(void) } // what is the point of this function? the tiles always get overwritten by BuyMenuDrawTextboxBG. -void BuyMenuDrawTextboxBG_Old(u16 *array, s16 offset1, s16 offset2) +static void BuyMenuDrawTextboxBG_Old(u16 *array, s16 offset1, s16 offset2) { array[offset1 + offset2] = 0xC3E1; array[offset1 + offset2 + 1] = 0xC3E1; } -void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2) +static void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2) { // This function draws a whole 2x2 metatile. array[offset1 + offset2] = array2[0]; // top left @@ -347,7 +358,7 @@ void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *arra array[offset1 + offset2 + 33] = array2[3]; // bottom right } -void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) +static void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) { u8 tempVar4 = var4; s16 offset1 = var1 * 2; @@ -371,7 +382,7 @@ void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) } // used to draw the border tiles around the viewport. -void BuyMenuDrawMapPartialMetatile(s16 var1, int var2, u16 *var3) +static void BuyMenuDrawMapPartialMetatile(s16 var1, int var2, u16 *var3) { s16 offset1 = var1 * 2; s16 offset2 = (var2 * 0x40) + 0x40; @@ -380,7 +391,7 @@ void BuyMenuDrawMapPartialMetatile(s16 var1, int var2, u16 *var3) BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); } -void Shop_DrawViewportTiles(void) +static void Shop_DrawViewportTiles(void) { s16 facingX; s16 facingY; @@ -420,7 +431,7 @@ void Shop_DrawViewportTiles(void) } } -void Shop_DrawViewport(void) +static void Shop_DrawViewport(void) { ClearBGTilemapBuffers(); Shop_LoadViewportObjects(); @@ -428,7 +439,7 @@ void Shop_DrawViewport(void) Shop_DrawViewportTiles(); } -void Shop_LoadViewportObjects(void) +static void Shop_LoadViewportObjects(void) { s16 facingX; s16 facingY; @@ -466,7 +477,7 @@ void Shop_LoadViewportObjects(void) } } -void Shop_AnimViewportObjects(void) +static void Shop_AnimViewportObjects(void) { u8 i; @@ -485,7 +496,7 @@ void Shop_AnimViewportObjects(void) } } -void BuyMenuDrawTextboxBG(void) +static void BuyMenuDrawTextboxBG(void) { s16 i; @@ -496,7 +507,7 @@ void BuyMenuDrawTextboxBG(void) } } -void Shop_InitMenus(int firstItemId, int lastItemId) +static void Shop_InitMenus(int firstItemId, int lastItemId) { BuyMenuDrawTextboxBG(); Shop_DisplayPriceInList(firstItemId, lastItemId, 0); @@ -504,7 +515,7 @@ void Shop_InitMenus(int firstItemId, int lastItemId) } // after printing the item quantity and price, restore the textbox tiles before the Yes/No prompt. -void BuyMenuDrawTextboxBG_Restore(void) +static void BuyMenuDrawTextboxBG_Restore(void) { u16 i, j; @@ -513,14 +524,14 @@ void BuyMenuDrawTextboxBG_Restore(void) gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18300[32 * i + j] + 0xC3E0; } -void Shop_PrintItemDesc(void) +static void Shop_PrintItemDesc(void) { Shop_PrintItemDescText(); } #define tItemCount data[1] -void Shop_DisplayPriceInCheckoutWindow(u8 taskId) +static void Shop_DisplayPriceInCheckoutWindow(u8 taskId) { u16 itemListIndex = gMartInfo.choicesAbove + gMartInfo.cursor; u16 itemId = gMartInfo.itemList[itemListIndex]; @@ -535,7 +546,7 @@ void Shop_DisplayPriceInCheckoutWindow(u8 taskId) sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1); } -void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) +static void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) { u8 *stringPtr = gStringVar1; @@ -559,7 +570,7 @@ void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) Menu_PrintTextPixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); } -void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) +static void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) { u8 *stringPtr = gStringVar1; @@ -592,7 +603,7 @@ void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasControlCod } } -void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode) +static void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode) { u8 i; @@ -611,7 +622,7 @@ void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlC } } -void Shop_PrintItemDescText(void) +static void Shop_PrintItemDescText(void) { if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) { @@ -630,7 +641,7 @@ void Shop_PrintItemDescText(void) } } -void Shop_DoPremierBallCheck(u8 taskId) +static void Shop_DoPremierBallCheck(u8 taskId) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { @@ -644,7 +655,7 @@ void Shop_DoPremierBallCheck(u8 taskId) } } -void Shop_DoItemTransaction(u8 taskId) +static void Shop_DoItemTransaction(u8 taskId) { IncrementGameStat(0x26); RemoveMoney(&gSaveBlock1.money, gMartTotalCost); @@ -653,13 +664,13 @@ void Shop_DoItemTransaction(u8 taskId) gTasks[taskId].func = Shop_DoPremierBallCheck; } -void Shop_DoPricePrintAndReturnToBuyMenu(u8 taskId) +static void Shop_DoPricePrintAndReturnToBuyMenu(u8 taskId) { Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); Task_ReturnToBuyMenu(taskId); } -void Task_DoItemPurchase(u8 taskId) +static void Task_DoItemPurchase(u8 taskId) { Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); @@ -698,14 +709,14 @@ void Task_DoItemPurchase(u8 taskId) DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); } -void Shop_DoYesNoPurchase(u8 taskId) +static void Shop_DoYesNoPurchase(u8 taskId) { DisplayYesNoMenu(7, 8, 1); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0xC3E1); DoYesNoFuncWithChoice(taskId, sShopPurchaseYesNoFuncs); } -void Task_CancelItemPurchase(u8 taskId) +static void Task_CancelItemPurchase(u8 taskId) { Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); @@ -713,7 +724,7 @@ void Task_CancelItemPurchase(u8 taskId) Task_ReturnToBuyMenu(taskId); } -void Shop_PrintPrice(u8 taskId) +static void Shop_PrintPrice(u8 taskId) { if (SellMenu_QuantityRoller(taskId, gMartInfo.curItemCount) == TRUE) Shop_DisplayPriceInCheckoutWindow(taskId); @@ -739,7 +750,7 @@ void Shop_PrintPrice(u8 taskId) } // set the item count in the mart info to the maximum allowed by the player's budget. -void Shop_UpdateCurItemCountToMax(u8 taskId) +static void Shop_UpdateCurItemCountToMax(u8 taskId) { u16 var; @@ -757,7 +768,7 @@ void Shop_UpdateCurItemCountToMax(u8 taskId) } #ifdef NONMATCHING -void Shop_MoveItemListUp(void) +static void Shop_MoveItemListUp(void) { u16 *r1; u16 *r2; @@ -799,7 +810,7 @@ void Shop_MoveItemListUp(void) } #else __attribute__((naked)) -void Shop_MoveItemListUp(void) +static void Shop_MoveItemListUp(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -894,7 +905,7 @@ _080B4038: .4byte 0xfffffc40\n\ #endif #ifdef NONMATCHING -void Shop_MoveItemListDown(void) +static void Shop_MoveItemListDown(void) { u16 *r1; u16 *r2; @@ -938,7 +949,7 @@ void Shop_MoveItemListDown(void) } #else __attribute__((naked)) -void Shop_MoveItemListDown(void) +static void Shop_MoveItemListDown(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -1031,7 +1042,7 @@ _080B40E4: .4byte 0x800000f0\n\ } #endif -void Shop_DoCursorAction(u8 taskId) +static void Shop_DoCursorAction(u8 taskId) { if (!gPaletteFade.active) { @@ -1140,7 +1151,7 @@ void Shop_DoCursorAction(u8 taskId) } } -void Task_ReturnToBuyMenu(u8 taskId) +static void Task_ReturnToBuyMenu(u8 taskId) { Menu_EraseWindowRect(0, 0xE, 0x1D, 0x13); Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); @@ -1154,14 +1165,14 @@ void Task_ReturnToBuyMenu(u8 taskId) gTasks[taskId].func = Shop_DoCursorAction; } -void Task_ExitBuyMenu(u8 taskId) +static void Task_ExitBuyMenu(u8 taskId) { gFieldCallback = Shop_FadeReturnToMartMenu; BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_ExitBuyMenuDoFade; } -void Task_ExitBuyMenuDoFade(u8 taskId) +static void Task_ExitBuyMenuDoFade(u8 taskId) { if (!gPaletteFade.active) { @@ -1173,7 +1184,7 @@ void Task_ExitBuyMenuDoFade(u8 taskId) } // Task_UpdatePurchaseHistory -void Task_UpdatePurchaseHistory(u8 taskId) +static void Task_UpdatePurchaseHistory(u8 taskId) { u16 i; @@ -1200,13 +1211,13 @@ void Task_UpdatePurchaseHistory(u8 taskId) #undef tItemCount -void ClearItemPurchases(void) +static void ClearItemPurchases(void) { gMartPurchaseHistoryId = 0; ClearItemSlots(gMartPurchaseHistory, 3); } -void CreatePokemartMenu(u16 *itemList) +void Shop_CreatePokemartMenu(u16 *itemList) { CreateShopMenu(MART_TYPE_0); SetShopItemsForSale(itemList); @@ -1214,14 +1225,14 @@ void CreatePokemartMenu(u16 *itemList) SetShopMenuCallback(EnableBothScriptContexts); } -void CreateDecorationShop1Menu(u16 *itemList) +void Shop_CreateDecorationShop1Menu(u16 *itemList) { CreateShopMenu(MART_TYPE_1); SetShopItemsForSale(itemList); SetShopMenuCallback(EnableBothScriptContexts); } -void CreateDecorationShop2Menu(u16 *itemList) +void Shop_CreateDecorationShop2Menu(u16 *itemList) { CreateShopMenu(MART_TYPE_2); SetShopItemsForSale(itemList); -- cgit v1.2.3 From b779a60ad70bcf65001bf88bc1c652629b22a2f9 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 16 Jan 2018 15:03:22 -0500 Subject: split data2b --- data/battle_7.s | 25 +++++++++++++++++ data/data2b.s | 78 ------------------------------------------------------ data/smokescreen.s | 57 +++++++++++++++++++++++++++++++++++++++ ld_script.txt | 3 ++- 4 files changed, 84 insertions(+), 79 deletions(-) create mode 100644 data/battle_7.s delete mode 100644 data/data2b.s create mode 100644 data/smokescreen.s diff --git a/data/battle_7.s b/data/battle_7.s new file mode 100644 index 000000000..50fad468a --- /dev/null +++ b/data/battle_7.s @@ -0,0 +1,25 @@ + .include "include/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gUnknown_081FAF24:: @ 81FAF24 + obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759 + + .align 2 +gOamData_81FAF2C:: @ 81FAF2C + .2byte 0x4000 + .2byte 0x4000 + .2byte 0x0C00 + + .align 2 +gSpriteTemplate_81FAF34:: @ 81FAF34 + spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978 + + .align 2 +gUnknown_081FAF4C:: @ 81FAF4C + .4byte gSharedMem + 0x8000 + .4byte gSharedMem + 0xA000 + .4byte gSharedMem + 0xC000 + .4byte gSharedMem + 0xE000 diff --git a/data/data2b.s b/data/data2b.s deleted file mode 100644 index c7cd4dfcf..000000000 --- a/data/data2b.s +++ /dev/null @@ -1,78 +0,0 @@ - .include "include/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_081FAEA4:: @ 81FAEA4 - obj_tiles gSmokescreenImpactTiles, 0x180, 55019 - - .align 2 -gUnknown_081FAEAC:: @ 81FAEAC - obj_pal gSmokescreenImpactPalette, 55019 - - .align 2 -gOamData_81FAEB4:: @ 81FAEB4 - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_81FAEBC:: @ 81FAEBC - obj_image_anim_frame 0, 4 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_end - - .align 2 -gSpriteAnim_81FAECC:: @ 81FAECC - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_81FAEDC:: @ 81FAEDC - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_81FAEEC:: @ 81FAEEC - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_81FAEFC:: @ 81FAEFC - .4byte gSpriteAnim_81FAEBC - .4byte gSpriteAnim_81FAECC - .4byte gSpriteAnim_81FAEDC - .4byte gSpriteAnim_81FAEEC - - .align 2 -gSpriteTemplate_81FAF0C:: @ 81FAF0C - spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC - - .align 2 -gUnknown_081FAF24:: @ 81FAF24 - obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759 - - .align 2 -gOamData_81FAF2C:: @ 81FAF2C - .2byte 0x4000 - .2byte 0x4000 - .2byte 0x0C00 - - .align 2 -gSpriteTemplate_81FAF34:: @ 81FAF34 - spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978 - - .align 2 -gUnknown_081FAF4C:: @ 81FAF4C - .4byte gSharedMem + 0x8000 - .4byte gSharedMem + 0xA000 - .4byte gSharedMem + 0xC000 - .4byte gSharedMem + 0xE000 diff --git a/data/smokescreen.s b/data/smokescreen.s new file mode 100644 index 000000000..21cca5917 --- /dev/null +++ b/data/smokescreen.s @@ -0,0 +1,57 @@ + .include "include/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gUnknown_081FAEA4:: @ 81FAEA4 + obj_tiles gSmokescreenImpactTiles, 0x180, 55019 + + .align 2 +gUnknown_081FAEAC:: @ 81FAEAC + obj_pal gSmokescreenImpactPalette, 55019 + + .align 2 +gOamData_81FAEB4:: @ 81FAEB4 + .2byte 0x0000 + .2byte 0x4000 + .2byte 0x0400 + + .align 2 +gSpriteAnim_81FAEBC:: @ 81FAEBC + obj_image_anim_frame 0, 4 + obj_image_anim_frame 4, 4 + obj_image_anim_frame 8, 4 + obj_image_anim_end + + .align 2 +gSpriteAnim_81FAECC:: @ 81FAECC + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + + .align 2 +gSpriteAnim_81FAEDC:: @ 81FAEDC + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP + obj_image_anim_end + + .align 2 +gSpriteAnim_81FAEEC:: @ 81FAEEC + obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP + obj_image_anim_end + + .align 2 +gSpriteAnimTable_81FAEFC:: @ 81FAEFC + .4byte gSpriteAnim_81FAEBC + .4byte gSpriteAnim_81FAECC + .4byte gSpriteAnim_81FAEDC + .4byte gSpriteAnim_81FAEEC + + .align 2 +gSpriteTemplate_81FAF0C:: @ 81FAF0C + spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC diff --git a/ld_script.txt b/ld_script.txt index 3749b49f5..38fd4ff74 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -485,7 +485,8 @@ SECTIONS { data/btl_attrs.o(.rodata); src/battle/battle_4.o(.rodata); src/battle/battle_controller_player.o(.rodata); - data/data2b.o(.rodata); + data/smokescreen.o(.rodata); /* why is smokescreen rodata way up here and not in the correct location? */ + data/battle_7.o(.rodata); src/battle/battle_controller_opponent.o(.rodata); src/battle/battle_controller_linkopponent.o(.rodata); data/battle_moves.o(.rodata); -- cgit v1.2.3 From dc872c0cbf1983d06b382dc0747df9140c9ecc03 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 16 Jan 2018 17:18:31 -0500 Subject: split data_8393054 --- data/data_8393054.s | 110 ---------------------------------------------------- data/gray_sun.s | 21 ++++++++++ data/sparkle.s | 21 ++++++++++ data/unused_hit.s | 29 ++++++++++++++ data/unused_orb.s | 24 ++++++++++++ data/unused_orb2.s | 27 +++++++++++++ data/unused_paw.s | 8 ++++ ld_script.txt | 7 +++- src/rom_8077ABC.c | 9 +++++ 9 files changed, 145 insertions(+), 111 deletions(-) delete mode 100644 data/data_8393054.s create mode 100644 data/gray_sun.s create mode 100644 data/sparkle.s create mode 100644 data/unused_hit.s create mode 100644 data/unused_orb.s create mode 100644 data/unused_orb2.s create mode 100644 data/unused_paw.s diff --git a/data/data_8393054.s b/data/data_8393054.s deleted file mode 100644 index 38ba47b63..000000000 --- a/data/data_8393054.s +++ /dev/null @@ -1,110 +0,0 @@ - .include "include/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSpriteAnim_8393054:: @ 8393054 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 8, 3 - obj_image_anim_frame 12, 3 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_8393068:: @ 8393068 - .4byte gSpriteAnim_8393054 - - .align 2 -gSpriteTemplate_839306C:: @ 839306C - spr_template 10004, 10004, gOamData_837DF2C, gSpriteAnimTable_8393068, NULL, gDummySpriteAffineAnimTable, sub_807A5C4 - - .align 2 -gSpriteTemplate_8393084:: @ 8393084 - spr_template 10004, 10004, gOamData_837DF2C, gSpriteAnimTable_8393068, NULL, gDummySpriteAffineAnimTable, sub_807A544 - - .align 2 -gSpriteAnim_839309C:: @ 839309C - obj_image_anim_frame 0, 3 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_83930A4:: @ 83930A4 - .4byte gSpriteAnim_839309C - - .align 2 -gBattleAnimSpriteTemplate_83930A8:: @ 83930A8 - spr_template 10283, 10283, gOamData_837DF34, gSpriteAnimTable_83930A4, NULL, gDummySpriteAffineAnimTable, sub_807A908 - - .align 2 -gBattleAnimSpriteTemplate_83930C0:: @ 83930C0 - spr_template 10283, 10283, gOamData_837DF34, gSpriteAnimTable_83930A4, NULL, gDummySpriteAffineAnimTable, sub_807A9BC - - .align 2 -gSpriteAnim_83930D8:: @ 83930D8 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 16, 3 - obj_image_anim_frame 32, 3 - obj_image_anim_frame 48, 3 - obj_image_anim_frame 64, 3 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83930F0:: @ 83930F0 - .4byte gSpriteAnim_83930D8 - - .align 2 -gBattleAnimSpriteTemplate_83930F4:: @ 83930F4 - spr_template 10071, 10071, gOamData_837DF34, gSpriteAnimTable_83930F0, NULL, gDummySpriteAffineAnimTable, sub_807A63C - - .align 2 -gSpriteTemplate_839310C:: @ 839310C - spr_template 10051, 10051, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807A5C4 - - .align 2 -gSpriteAnim_8393124:: @ 8393124 - obj_image_anim_frame 0, 5 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_839312C:: @ 839312C - obj_image_anim_frame 0, 5 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_8393134:: @ 8393134 - obj_image_anim_frame 0, 5 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_839313C:: @ 839313C - .4byte gSpriteAnim_8393124 - .4byte gSpriteAnim_839312C - .4byte gSpriteAnim_8393134 - - .align 2 -gSpriteTemplate_8393148:: @ 8393148 - spr_template 10135, 10135, gOamData_837DF34, gSpriteAnimTable_839313C, NULL, gDummySpriteAffineAnimTable, sub_807A5C4 - - .align 2 -gSpriteAnim_8393160:: @ 8393160 - obj_image_anim_frame 0, 15 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_8393168:: @ 8393168 - .4byte gSpriteAnim_8393160 - - .align 2 -gSpriteAffineAnim_839316C:: @ 839316C - obj_rot_scal_anim_frame 0x60, 0x60, 0, 0 - obj_rot_scal_anim_frame 0x2, 0x2, 0, 1 - obj_rot_scal_anim_jump 1 - - .align 2 -gSpriteAffineAnimTable_8393184:: @ 8393184 - .4byte gSpriteAffineAnim_839316C - - .align 2 -gSpriteTemplate_8393188:: @ 8393188 - spr_template 10004, 10004, gOamData_837DFEC, gSpriteAnimTable_8393168, NULL, gSpriteAffineAnimTable_8393184, sub_807A544 diff --git a/data/gray_sun.s b/data/gray_sun.s new file mode 100644 index 000000000..bee64873a --- /dev/null +++ b/data/gray_sun.s @@ -0,0 +1,21 @@ + .include "include/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gSpriteAnim_839309C:: @ 839309C + obj_image_anim_frame 0, 3 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnimTable_83930A4:: @ 83930A4 + .4byte gSpriteAnim_839309C + + .align 2 +gBattleAnimSpriteTemplate_83930A8:: @ 83930A8 + spr_template 10283, 10283, gOamData_837DF34, gSpriteAnimTable_83930A4, NULL, gDummySpriteAffineAnimTable, sub_807A908 + + .align 2 +gBattleAnimSpriteTemplate_83930C0:: @ 83930C0 + spr_template 10283, 10283, gOamData_837DF34, gSpriteAnimTable_83930A4, NULL, gDummySpriteAffineAnimTable, sub_807A9BC diff --git a/data/sparkle.s b/data/sparkle.s new file mode 100644 index 000000000..0c2593fbd --- /dev/null +++ b/data/sparkle.s @@ -0,0 +1,21 @@ + .include "include/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gSpriteAnim_83930D8:: @ 83930D8 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 16, 3 + obj_image_anim_frame 32, 3 + obj_image_anim_frame 48, 3 + obj_image_anim_frame 64, 3 + obj_image_anim_end + + .align 2 +gSpriteAnimTable_83930F0:: @ 83930F0 + .4byte gSpriteAnim_83930D8 + + .align 2 +gBattleAnimSpriteTemplate_83930F4:: @ 83930F4 + spr_template 10071, 10071, gOamData_837DF34, gSpriteAnimTable_83930F0, NULL, gDummySpriteAffineAnimTable, sub_807A63C diff --git a/data/unused_hit.s b/data/unused_hit.s new file mode 100644 index 000000000..d7bdef912 --- /dev/null +++ b/data/unused_hit.s @@ -0,0 +1,29 @@ + .include "include/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gSpriteAnim_8393124:: @ 8393124 + obj_image_anim_frame 0, 5 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnim_839312C:: @ 839312C + obj_image_anim_frame 0, 5 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnim_8393134:: @ 8393134 + obj_image_anim_frame 0, 5 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnimTable_839313C:: @ 839313C + .4byte gSpriteAnim_8393124 + .4byte gSpriteAnim_839312C + .4byte gSpriteAnim_8393134 + + .align 2 +gSpriteTemplate_8393148:: @ 8393148 + spr_template 10135, 10135, gOamData_837DF34, gSpriteAnimTable_839313C, NULL, gDummySpriteAffineAnimTable, sub_807A5C4 diff --git a/data/unused_orb.s b/data/unused_orb.s new file mode 100644 index 000000000..d49ddd908 --- /dev/null +++ b/data/unused_orb.s @@ -0,0 +1,24 @@ + .include "include/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gSpriteAnim_8393054:: @ 8393054 + obj_image_anim_frame 0, 3 + obj_image_anim_frame 4, 3 + obj_image_anim_frame 8, 3 + obj_image_anim_frame 12, 3 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnimTable_8393068:: @ 8393068 + .4byte gSpriteAnim_8393054 + + .align 2 +gSpriteTemplate_839306C:: @ 839306C + spr_template 10004, 10004, gOamData_837DF2C, gSpriteAnimTable_8393068, NULL, gDummySpriteAffineAnimTable, sub_807A5C4 + + .align 2 +gSpriteTemplate_8393084:: @ 8393084 + spr_template 10004, 10004, gOamData_837DF2C, gSpriteAnimTable_8393068, NULL, gDummySpriteAffineAnimTable, sub_807A544 diff --git a/data/unused_orb2.s b/data/unused_orb2.s new file mode 100644 index 000000000..899f41372 --- /dev/null +++ b/data/unused_orb2.s @@ -0,0 +1,27 @@ + .include "include/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gSpriteAnim_8393160:: @ 8393160 + obj_image_anim_frame 0, 15 + obj_image_anim_jump 0 + + .align 2 +gSpriteAnimTable_8393168:: @ 8393168 + .4byte gSpriteAnim_8393160 + + .align 2 +gSpriteAffineAnim_839316C:: @ 839316C + obj_rot_scal_anim_frame 0x60, 0x60, 0, 0 + obj_rot_scal_anim_frame 0x2, 0x2, 0, 1 + obj_rot_scal_anim_jump 1 + + .align 2 +gSpriteAffineAnimTable_8393184:: @ 8393184 + .4byte gSpriteAffineAnim_839316C + + .align 2 +gSpriteTemplate_8393188:: @ 8393188 + spr_template 10004, 10004, gOamData_837DFEC, gSpriteAnimTable_8393168, NULL, gSpriteAffineAnimTable_8393184, sub_807A544 diff --git a/data/unused_paw.s b/data/unused_paw.s new file mode 100644 index 000000000..cb29168d7 --- /dev/null +++ b/data/unused_paw.s @@ -0,0 +1,8 @@ + .include "include/macros.inc" + .include "constants/constants.inc" + + .section .rodata + + .align 2 +gSpriteTemplate_839310C:: @ 839310C + spr_template 10051, 10051, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807A5C4 diff --git a/ld_script.txt b/ld_script.txt index 38fd4ff74..3be3a6e56 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -532,7 +532,12 @@ SECTIONS { src/battle/battle_anim.o(.rodata); src/rom_8077ABC.o(.rodata); data/map_events.o(.rodata); - data/data_8393054.o(.rodata); + data/unused_orb.o(.rodata); /* these files are clearly the rodata for latter part of rom_8077ABC, but the linker linked map_events before these objects for some reason. perhaps it was compiling and linking 2 folders at the same time? */ + data/gray_sun.o(.rodata); + data/sparkle.o(.rodata); + data/unused_paw.o(.rodata); + data/unused_hit.o(.rodata); + data/unused_orb2.o(.rodata); src/engine/task.o(.rodata); src/battle/battle_anim_807B69C.o(.rodata); src/scene/title_screen.o(.rodata); diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 2b5a3c036..11a71155d 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -151,6 +151,7 @@ const struct SpriteSheet gUnknown_0837F5E0[] = { gMiscBlank_Gfx, 0x800, 55126, }, }; +// pkmn_form.c u8 GetBankPosition(u8 slot, u8 a2) { @@ -2149,6 +2150,8 @@ u8 sub_807A4A0(int a1, u8 sprite, int a3) return new_sprite; } +// unused_orb + void sub_807A544(struct Sprite *sprite) { sub_8078650(sprite); @@ -2192,6 +2195,8 @@ void sub_807A5C4(struct Sprite *sprite) sprite->callback = sub_8078504; } +// file_2 + void sub_807A63C(struct Sprite *sprite) { sub_8078650(sprite); @@ -2204,6 +2209,8 @@ void sub_807A63C(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } +// file_3 (punch effect?) + void sub_807A69C(u8 taskId) { u16 src; @@ -2287,6 +2294,8 @@ void sub_807A8D4(struct Sprite *sprite) } } +// file_4 + void sub_807A908(struct Sprite *sprite) { sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); -- cgit v1.2.3 From 31a322fdc589c381af6ec4b4c4781d28cb394cc1 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 16 Jan 2018 19:14:14 -0500 Subject: use game stat defines --- src/battle/battle_setup.c | 36 ++++++++++++++++++------------------ src/battle/post_battle_event_funcs.c | 6 +++--- src/engine/save.c | 4 ++-- src/field/field_control_avatar.c | 2 +- src/field/field_player_avatar.c | 2 +- src/field/field_weather_effects.c | 2 +- src/field/fldeff_cut.c | 4 ++-- src/field/item_use.c | 2 +- src/field/safari_zone.c | 2 +- src/field/shop.c | 2 +- src/field/start_menu.c | 4 ++-- src/field/wild_encounter.c | 2 +- src/rom6.c | 2 +- src/scene/berry_blender.c | 4 ++-- src/scene/evolution_scene.c | 4 ++-- 15 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c index b4ff407fc..892be1029 100644 --- a/src/battle/battle_setup.c +++ b/src/battle/battle_setup.c @@ -520,8 +520,8 @@ static void DoStandardWildBattle(void) gMain.savedCallback = CB2_EndWildBattle; gBattleTypeFlags = 0; CreateBattleStartTask(GetWildBattleTransition(), 0); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } void BattleSetup_StartRoamerBattle(void) @@ -532,8 +532,8 @@ void BattleSetup_StartRoamerBattle(void) gMain.savedCallback = CB2_EndWildBattle; gBattleTypeFlags = BATTLE_TYPE_ROAMER; CreateBattleStartTask(GetWildBattleTransition(), 0); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } static void DoSafariBattle(void) @@ -549,8 +549,8 @@ static void DoSafariBattle(void) static void StartTheBattle(void) { CreateBattleStartTask(GetTrainerBattleTransition(), 0); - IncrementGameStat(7); - IncrementGameStat(9); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_TRAINER_BATTLES); } //Initiates battle where Wally catches Ralts @@ -569,8 +569,8 @@ void BattleSetup_StartScriptedWildBattle(void) gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = 0; CreateBattleStartTask(GetWildBattleTransition(), 0); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } void ScrSpecial_StartSouthernIslandBattle(void) @@ -579,8 +579,8 @@ void ScrSpecial_StartSouthernIslandBattle(void) gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; CreateBattleStartTask(GetWildBattleTransition(), 0); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } void ScrSpecial_StartRayquazaBattle(void) @@ -589,8 +589,8 @@ void ScrSpecial_StartRayquazaBattle(void) gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; CreateBattleStartTask(B_TRANSITION_BLUR, BGM_BATTLE34); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } void ScrSpecial_StartGroudonKyogreBattle(void) @@ -602,8 +602,8 @@ void ScrSpecial_StartGroudonKyogreBattle(void) CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON else CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } void ScrSpecial_StartRegiBattle(void) @@ -612,8 +612,8 @@ void ScrSpecial_StartRegiBattle(void) gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE36); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } static void CB2_EndWildBattle(void) @@ -879,8 +879,8 @@ static void CB2_StartFirstBattle(void) SetMainCallback2(sub_800E7C4); prev_quest_postbuffer_cursor_backup_reset(); overworld_poison_timer_set(); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } } diff --git a/src/battle/post_battle_event_funcs.c b/src/battle/post_battle_event_funcs.c index 0617763f6..a44cf028b 100644 --- a/src/battle/post_battle_event_funcs.c +++ b/src/battle/post_battle_event_funcs.c @@ -26,8 +26,8 @@ int GameClear(void) FlagSet(FLAG_SYS_GAME_CLEAR); } - if (!GetGameStat(1)) - SetGameStat(1, (gSaveBlock2.playTimeHours << 16) | (gSaveBlock2.playTimeMinutes << 8) | gSaveBlock2.playTimeSeconds); + if (!GetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME)) + SetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME, (gSaveBlock2.playTimeHours << 16) | (gSaveBlock2.playTimeMinutes << 8) | gSaveBlock2.playTimeSeconds); SetSecretBase2Field_9(); @@ -54,7 +54,7 @@ int GameClear(void) if (ribbonGet == TRUE) { - IncrementGameStat(42); + IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); FlagSet(FLAG_SYS_RIBBON_GET); } diff --git a/src/engine/save.c b/src/engine/save.c index be907edcc..250b29a87 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -674,8 +674,8 @@ u8 Save_WriteDataInternal(u8 saveType) EraseFlashSector(i); // fall through case SAVE_HALL_OF_FAME: // hall of fame. - if (GetGameStat(10) < 999) - IncrementGameStat(10); + if (GetGameStat(GAME_STAT_ENTERED_HOF) < 999) + IncrementGameStat(GAME_STAT_ENTERED_HOF); for (i = 0; i < NUM_HALL_OF_FAME_SECTORS; i++) HandleWriteSectorNBytes(HALL_OF_FAME_SECTOR + i, sHallOfFameChunks[i].data, sHallOfFameChunks[i].size); SaveSerializedGame(); diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 52e66f16e..c156df035 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -181,7 +181,7 @@ int sub_8068024(struct FieldInput *input) return TRUE; if (input->input_field_0_6) { - IncrementGameStat(5); + IncrementGameStat(GAME_STAT_STEPS); if (sub_80687E4(&position, r4, r6) == 1) return TRUE; } diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index 9a29e2e92..ba45e506d 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -523,7 +523,7 @@ u8 CheckForFieldObjectCollision(struct MapObject *a, s16 x, s16 y, u8 direction, return 5; if (ShouldJumpLedge(x, y, direction)) { - IncrementGameStat(0x2B); + IncrementGameStat(GAME_STAT_JUMPED_DOWN_LEDGES); return COLLISION_LEDGE_JUMP; } if (collision == 4 && sub_8058F6C(x, y, direction)) diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index 5a59d6c2a..7406363a5 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -2380,5 +2380,5 @@ void UpdateRainCounter(u8 newWeather, u8 oldWeather) { if (newWeather != oldWeather && (newWeather == WEATHER_RAIN_LIGHT || newWeather == WEATHER_RAIN_MED)) - IncrementGameStat(0x28); + IncrementGameStat(GAME_STAT_GOT_RAINED_ON); } diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index e4328acfc..513107729 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -122,7 +122,7 @@ bool8 FldEff_UseCutOnGrass(void) gTasks[taskId].data[8] = (u32)sub_80A2684 >> 16; gTasks[taskId].data[9] = (u32)sub_80A2684; - IncrementGameStat(0x12); + IncrementGameStat(GAME_STAT_USED_CUT); return FALSE; } @@ -138,7 +138,7 @@ bool8 FldEff_UseCutOnTree(void) gTasks[taskId].data[8] = (u32)sub_80A2B00 >> 16; gTasks[taskId].data[9] = (u32)sub_80A2B00; - IncrementGameStat(0x12); + IncrementGameStat(GAME_STAT_USED_CUT); return FALSE; } diff --git a/src/field/item_use.c b/src/field/item_use.c index 55fb21814..9346cf42e 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -259,7 +259,7 @@ void ItemUseOnFieldCB_Rod(u8 taskId) void ItemUseOutOfBattle_Itemfinder(u8 var) { - IncrementGameStat(0x27); + IncrementGameStat(GAME_STAT_USED_ITEMFINDER); gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Itemfinder; SetUpItemUseOnFieldCallback(var); } diff --git a/src/field/safari_zone.c b/src/field/safari_zone.c index e9ca3a9f9..6c7c8b391 100644 --- a/src/field/safari_zone.c +++ b/src/field/safari_zone.c @@ -56,7 +56,7 @@ void ResetSafariZoneFlag(void) void EnterSafariMode(void) { - IncrementGameStat(0x11); + IncrementGameStat(GAME_STAT_ENTERED_SAFARI_ZONE); SetSafariZoneFlag(); ClearAllPokeblockFeeders(); gNumSafariBalls = 30; diff --git a/src/field/shop.c b/src/field/shop.c index 5a47b033b..beed50a41 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -657,7 +657,7 @@ static void Shop_DoPremierBallCheck(u8 taskId) static void Shop_DoItemTransaction(u8 taskId) { - IncrementGameStat(0x26); + IncrementGameStat(GAME_STAT_SHOPPED); RemoveMoney(&gSaveBlock1.money, gMartTotalCost); PlaySE(SE_REGI); UpdateMoneyWindow(gSaveBlock1.money, 0, 0); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 87597eb6a..110351016 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -345,7 +345,7 @@ static u8 StartMenu_PokedexCallback(void) { if (!gPaletteFade.active) { - IncrementGameStat(0x29); + IncrementGameStat(GAME_STAT_CHECKED_POKEDEX); PlayRainSoundEffect(); SetMainCallback2(CB2_InitPokedex); return 1; @@ -666,7 +666,7 @@ static u8 SaveDialogCB_DoSave(void) { u8 saveStatus; - IncrementGameStat(0); + IncrementGameStat(GAME_STAT_SAVED_GAME); if (gDifferentSaveFile == TRUE) { saveStatus = Save_WriteData(SAVE_OVERWRITE_DIFFERENT_FILE); diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index 4bf83cad8..79542422e 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -4254,7 +4254,7 @@ void FishingWildEncounter(u8 rod) gWildMonHeaders[GetCurrentMapWildMonHeader()].fishingMonsInfo, rod); } - IncrementGameStat(12); + IncrementGameStat(GAME_STAT_FISHING_CAPTURES); sub_80BEA50(species); BattleSetup_StartWildBattle(); } diff --git a/src/rom6.c b/src/rom6.c index e71484b0a..62fbc987c 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -142,7 +142,7 @@ int FldEff_RockSmash(void) gTasks[taskId].data[8] = (u32)sub_810B58C >> 16; gTasks[taskId].data[9] = (u32)sub_810B58C; - IncrementGameStat(0x13); + IncrementGameStat(GAME_STAT_USED_ROCK_SMASH); return 0; } diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index b59d02939..0a7e14e4e 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -2567,9 +2567,9 @@ static void sub_8050954(void) if (Blender_PrintBlendingResults()) { if (gInGameOpponentsNo == 0) - IncrementGameStat(34); + IncrementGameStat(GAME_STAT_POKEBLOCKS_WITH_FRIENDS); else - IncrementGameStat(33); + IncrementGameStat(GAME_STAT_POKEBLOCKS); gBerryBlenderData->field_6F++; } break; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 931ec0d4d..3ba325574 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -649,7 +649,7 @@ static void Task_EvolutionScene(u8 taskID) EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); - IncrementGameStat(14); + IncrementGameStat(GAME_STAT_EVOLVED_POKEMON); } break; case 14: // check if it wants to learn a new move @@ -991,7 +991,7 @@ static void Task_TradeEvolutionScene(u8 taskID) EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); - IncrementGameStat(14); + IncrementGameStat(GAME_STAT_EVOLVED_POKEMON); } break; case 13: -- cgit v1.2.3 From 3ab6bf09d8d6bb86e83033e8a7138d02e3917c55 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 00:29:25 -0500 Subject: split out crash.c --- include/matsuda_debug_menu.h | 1 - include/pokedex.h | 2 +- ld_script.txt | 1 + src/battle/battle_party_menu.c | 6 +-- src/debug/crash.c | 55 ++++++++++++++++++++++++++++ src/debug/matsuda_debug_menu.c | 62 +------------------------------ src/field/diploma.c | 2 +- src/field/item_use.c | 22 +++++------ src/field/money.c | 2 + src/pokemon/pokedex.c | 83 +++++++++++++++++++++++++++++++++++++++--- src/pokemon/pokemon_menu.c | 6 +-- sym_common.txt | 2 +- 12 files changed, 157 insertions(+), 87 deletions(-) create mode 100644 src/debug/crash.c diff --git a/include/matsuda_debug_menu.h b/include/matsuda_debug_menu.h index 60f2dc48c..ad877a014 100644 --- a/include/matsuda_debug_menu.h +++ b/include/matsuda_debug_menu.h @@ -3,7 +3,6 @@ #define BIT(n) (1 << (n)) -void sub_80AB184(void); void sub_80AA280(u8); void sub_80AA5E8(u8); void sub_80AA658(u8); diff --git a/include/pokedex.h b/include/pokedex.h index d8416889a..73877bead 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -23,6 +23,6 @@ s8 GetSetPokedexFlag(u16, u8); u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); bool8 CompletedHoennPokedex(void); -u16 sub_8090FF4(void); +bool16 CompletedNationalPokedex(void); #endif // GUARD_POKEDEX_H diff --git a/ld_script.txt b/ld_script.txt index 3be3a6e56..82ba46b9c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -141,6 +141,7 @@ SECTIONS { src/battle/battle_anim_80A7E7C.o(.text); src/field/item.o(.text); src/debug/matsuda_debug_menu.o(.text); + src/debug/crash.o(.text); src/contest.o(.text); src/field/shop.o(.text); src/field/fldeff_escalator.o(.text); diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c index 68a97c536..ed8cf4583 100644 --- a/src/battle/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -40,7 +40,7 @@ extern u8 gUnknown_0202E8F6; extern u8 gUnknown_02038470[3]; extern u8 gUnknown_02038473; extern u8 gUnknown_020384F0; -extern void (*gUnknown_03004AE4)(); //don't know types yet +extern void (*gPokemonItemUseCallback)(); //don't know types yet extern struct PokemonStorage gPokemonStorage; extern void nullsub_14(); @@ -466,7 +466,7 @@ void HandleBattlePartyMenu(u8 taskId) { if (gUnknown_02038473 == 3 && GetItemEffectType(gSpecialVar_ItemId) == 10) { - gUnknown_03004AE4(taskId, gSpecialVar_ItemId, Task_80952E4); + gPokemonItemUseCallback(taskId, gSpecialVar_ItemId, Task_80952E4); return; } @@ -480,7 +480,7 @@ void HandleBattlePartyMenu(u8 taskId) else { sub_806D5A4(); - gUnknown_03004AE4(taskId, gSpecialVar_ItemId, Task_80952E4); + gPokemonItemUseCallback(taskId, gSpecialVar_ItemId, Task_80952E4); } } else diff --git a/src/debug/crash.c b/src/debug/crash.c new file mode 100644 index 000000000..702dbc32a --- /dev/null +++ b/src/debug/crash.c @@ -0,0 +1,55 @@ +#include "global.h" +#include "main.h" +#include "task.h" +#include "text.h" +#include "palette.h" + +extern struct Window gUnknown_03004210; + +static void CB2_CrashIdle(void); + +// unused exception handler. Takes a string input describing the exception +// and halts on a black screen. Used in German Debug Ruby. +void Crash(u8 *text) +{ + u16 savedIme; + + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT = 8; + ResetTasks(); + ResetSpriteData(); + SetMainCallback2(CB2_CrashIdle); + DmaFill32Large(3, 0, (void *)VRAM, 0x18000, 0x1000); + Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); + LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); + Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7); +} + +static void CB2_CrashIdle(void) +{ + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; +} diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 1da337b04..b879584dd 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -37,7 +37,7 @@ extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG3_X; extern u16 gBattle_BG3_Y; -extern struct Window gUnknown_03004210; + extern u8 (*gCallback_03004AE8)(void); extern bool8 gReceivedRemoteLinkPlayers; @@ -1032,63 +1032,3 @@ u8 MatsudaDebugMenu_SetArtMuseumItems(void) CloseMenu(); return 1; } - -void unref_sub_80AB084(u8 *text) -{ - u16 savedIme; - u8 *addr; - size_t size; - - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WIN1H = 0; - REG_WIN1V = 0; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; - - savedIme = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = savedIme; - REG_DISPSTAT = 8; - ResetTasks(); - ResetSpriteData(); - SetMainCallback2(sub_80AB184); - - addr = (void *)VRAM; - size = 0x18000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8); - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); - LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); - Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7); -} - -void sub_80AB184(void) -{ - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; -} diff --git a/src/field/diploma.c b/src/field/diploma.c index 978eca7eb..b31fc7dec 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -125,7 +125,7 @@ static void Task_DiplomaFadeOut(u8 taskId) static void DisplayDiplomaText(void) { - if (sub_8090FF4()) + if (CompletedNationalPokedex()) { REG_BG3HOFS = 256; StringCopy(gStringVar1, gOtherText_NationalDex); diff --git a/src/field/item_use.c b/src/field/item_use.c index 9346cf42e..cdad3f840 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -40,7 +40,7 @@ extern void (*gFieldItemUseCallback)(u8); extern void (*gFieldCallback)(void); extern void (*gUnknown_0300485C)(void); -extern void (*gUnknown_03004AE4)(u8, u16, TaskFunc); +extern void (*gPokemonItemUseCallback)(u8, u16, TaskFunc); extern u8 gUnknown_02038561; extern u8 gLastFieldPokeMenuOpened; @@ -832,7 +832,7 @@ void sub_80C9D98(u8 taskId) void ItemUseOutOfBattle_Medicine(u8 taskId) { - gUnknown_03004AE4 = UseMedicine; + gPokemonItemUseCallback = UseMedicine; sub_80C9D98(taskId); } @@ -850,26 +850,26 @@ void ItemUseOutOfBattle_SacredAsh(u8 taskId) break; } } - gUnknown_03004AE4 = sub_8070048; + gPokemonItemUseCallback = sub_8070048; gUnknown_02038561 = 4; ItemMenu_ConfirmNormalFade(taskId); } void ItemUseOutOfBattle_PPRecovery(u8 taskId) { - gUnknown_03004AE4 = DoPPRecoveryItemEffect; + gPokemonItemUseCallback = DoPPRecoveryItemEffect; sub_80C9D98(taskId); } void ItemUseOutOfBattle_PPUp(u8 taskId) { - gUnknown_03004AE4 = DoPPUpItemEffect; + gPokemonItemUseCallback = DoPPUpItemEffect; sub_80C9D98(taskId); } void ItemUseOutOfBattle_RareCandy(u8 taskId) { - gUnknown_03004AE4 = DoRareCandyItemEffect; + gPokemonItemUseCallback = DoRareCandyItemEffect; sub_80C9D98(taskId); } @@ -908,7 +908,7 @@ void sub_80C9F80(u8 var) void sub_80C9FC0(u8 var) { - gUnknown_03004AE4 = TeachMonTMMove; + gPokemonItemUseCallback = TeachMonTMMove; sub_80C9D98(var); } @@ -1009,7 +1009,7 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId) void ItemUseOutOfBattle_EvolutionStone(u8 var) { - gUnknown_03004AE4 = DoEvolutionStoneItemEffect; + gPokemonItemUseCallback = DoEvolutionStoneItemEffect; sub_80C9D98(var); } @@ -1078,19 +1078,19 @@ void sub_80CA3C0(u8 taskId) void ItemUseInBattle_Medicine(u8 var) { - gUnknown_03004AE4 = UseMedicine; + gPokemonItemUseCallback = UseMedicine; sub_80CA3C0(var); } void unref_sub_80CA410(u8 var) { - gUnknown_03004AE4 = sub_8070048; + gPokemonItemUseCallback = sub_8070048; sub_80CA3C0(var); } void ItemUseInBattle_PPRecovery(u8 var) { - gUnknown_03004AE4 = DoPPRecoveryItemEffect; + gPokemonItemUseCallback = DoPPRecoveryItemEffect; sub_80CA3C0(var); } diff --git a/src/field/money.c b/src/field/money.c index 6cd73f600..3b7268dbc 100644 --- a/src/field/money.c +++ b/src/field/money.c @@ -100,6 +100,8 @@ void GetMoneyAmountText(u8 *buffer, u32 amount, u8 arg2) width = 7; else if (amount > 99999) width = 6; + // A special sprite is used for 10000 in the decoration + // shop, so be sure to account for this. else if (amount > 10000) width = 5; else if (amount > 999) diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 4fb6a4920..bdd136ff5 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -4121,28 +4121,101 @@ bool8 CompletedHoennPokedex(void) return TRUE; } -u16 sub_8090FF4(void) +bool16 CompletedNationalPokedex(void) { u16 i; + // BUG: This function indexes pokemon checks by 0, but adds + // 1 before passing to GetSetPokedexFlag. Normally, this is + // fine, because GetSetPokedexFlag subtracts by 1 to get the + // array index value, but since the array is 0 indexed + // starting with Bulbasaur, values passed actually means that + // dex entries 152 (Chikorita) and 252 (Treecko) are skipped. + // Because an earlier Hoenn Dex check prevented Treecko from + // being skippable, it means that Chikorita is not required + // to obtain the National Diploma. This was fixed in Emerald. for (i = 0; i < 150; i++) { if (GetSetPokedexFlag(i + 1, 1) == 0) - return 0; + return FALSE; } for (i = 152; i < 250; i++) { if (GetSetPokedexFlag(i + 1, 1) == 0) - return 0; + return FALSE; } for (i = 252; i < 384; i++) { if (GetSetPokedexFlag(i + 1, 1) == 0) - return 0; + return FALSE; } - return 1; + return TRUE; } +/* +CompletedNationalPokedex: + push {r4, r5, lr} + mov r0, #0x0 +.L1236: + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r4, #0 + mov r1, #0x1 + bl GetSetPokedexFlag + lsl r0, r0, #0x18 + cmp r0, #0 + beq .L1252 @cond_branch + add r0, r4, #0 + cmp r0, #0x95 + bls .L1236 @cond_branch + mov r0, #0x98 +.L1242: + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r4, #0 + mov r1, #0x1 + bl GetSetPokedexFlag + lsl r0, r0, #0x18 + cmp r0, #0 + beq .L1252 @cond_branch + add r0, r4, #0 + cmp r0, #0xf9 + bls .L1242 @cond_branch + mov r0, #0xfc + ldr r5, .L1253 +.L1248: + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r4, #0 + mov r1, #0x1 + bl GetSetPokedexFlag + lsl r0, r0, #0x18 + cmp r0, #0 + bne .L1247 @cond_branch +.L1252: + mov r0, #0x0 + b .L1251 +.L1254: + .align 2, 0 +.L1253: + .word 0x17f +.L1247: + add r0, r4, #0 + cmp r0, r5 + bls .L1248 @cond_branch + mov r0, #0x1 +.L1251: + pop {r4, r5} + pop {r1} + bx r1 +.Lfe84: + .size CompletedNationalPokedex,.Lfe84-CompletedNationalPokedex + .align 2, 0 +*/ + static void sub_8091060(u16 a) { if (!(a & 0x100)) diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 70234ac48..a41e197f2 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -51,7 +51,7 @@ extern u8 gUnknown_0202E8F5; extern u8 gUnknown_0202E8F6; extern u8 gUnknown_02038561; extern u16 gUnknown_0202E8F8; -extern void (*gUnknown_03004AE4)(u8 taskID, u16 itemID, TaskFunc func); +extern void (*gPokemonItemUseCallback)(u8 taskID, u16 itemID, TaskFunc func); extern TaskFunc gUnknown_03005CF0; void sub_808A520(void); @@ -1013,7 +1013,7 @@ void sub_808B0C0(u8 taskID) { sub_806D5A4(); if (gUnknown_02038561 == 0) - gUnknown_03004AE4(taskID, gSpecialVar_ItemId, sub_808B224); + gPokemonItemUseCallback(taskID, gSpecialVar_ItemId, sub_808B224); if (gUnknown_02038561 == 1) { PlaySE(SE_SELECT); @@ -1042,7 +1042,7 @@ void sub_808B0C0(u8 taskID) static void sub_808B1EC(u8 taskID) { if (!gPaletteFade.active) - gUnknown_03004AE4(taskID, gSpecialVar_ItemId, sub_808B224); + gPokemonItemUseCallback(taskID, gSpecialVar_ItemId, sub_808B224); } static void sub_808B224(u8 taskID) diff --git a/sym_common.txt b/sym_common.txt index cfb1b6b13..a37aa05ff 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -127,7 +127,7 @@ gUnknown_03004828: @ 3004828 @ party_menu? .align 2 -gUnknown_03004AE4: @ 3004AE4 +gPokemonItemUseCallback: @ 3004AE4 .space 0x4 .include "field/start_menu.o" -- cgit v1.2.3 From 4c15629b612da2e10ef2aee25cd5ecd5ebaf6bf4 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 00:30:54 -0500 Subject: oops --- src/debug/crash.c | 2 +- src/pokemon/pokedex.c | 64 --------------------------------------------------- 2 files changed, 1 insertion(+), 65 deletions(-) diff --git a/src/debug/crash.c b/src/debug/crash.c index 702dbc32a..85058d285 100644 --- a/src/debug/crash.c +++ b/src/debug/crash.c @@ -35,7 +35,7 @@ void Crash(u8 *text) ResetTasks(); ResetSpriteData(); SetMainCallback2(CB2_CrashIdle); - DmaFill32Large(3, 0, (void *)VRAM, 0x18000, 0x1000); + DmaFill32Large(3, 0, (void *)VRAM, 0x18000, 0x1000); Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index bdd136ff5..faebe526a 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -4152,70 +4152,6 @@ bool16 CompletedNationalPokedex(void) return TRUE; } -/* -CompletedNationalPokedex: - push {r4, r5, lr} - mov r0, #0x0 -.L1236: - add r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r4, #0 - mov r1, #0x1 - bl GetSetPokedexFlag - lsl r0, r0, #0x18 - cmp r0, #0 - beq .L1252 @cond_branch - add r0, r4, #0 - cmp r0, #0x95 - bls .L1236 @cond_branch - mov r0, #0x98 -.L1242: - add r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r4, #0 - mov r1, #0x1 - bl GetSetPokedexFlag - lsl r0, r0, #0x18 - cmp r0, #0 - beq .L1252 @cond_branch - add r0, r4, #0 - cmp r0, #0xf9 - bls .L1242 @cond_branch - mov r0, #0xfc - ldr r5, .L1253 -.L1248: - add r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r4, #0 - mov r1, #0x1 - bl GetSetPokedexFlag - lsl r0, r0, #0x18 - cmp r0, #0 - bne .L1247 @cond_branch -.L1252: - mov r0, #0x0 - b .L1251 -.L1254: - .align 2, 0 -.L1253: - .word 0x17f -.L1247: - add r0, r4, #0 - cmp r0, r5 - bls .L1248 @cond_branch - mov r0, #0x1 -.L1251: - pop {r4, r5} - pop {r1} - bx r1 -.Lfe84: - .size CompletedNationalPokedex,.Lfe84-CompletedNationalPokedex - .align 2, 0 -*/ - static void sub_8091060(u16 a) { if (!(a & 0x100)) -- cgit v1.2.3 From c8e231256e15362047760d094f62db5ab52c660c Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Wed, 17 Jan 2018 05:47:02 +0000 Subject: Document sub_8121D1C, sub_8121D74 and gUnknown_084016BC These are left over from the Japanese games, which provide more variation to the attack string than the English games. --- src/battle/battle_message.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/battle/battle_message.c b/src/battle/battle_message.c index e9334ef61..ed7ab3a35 100644 --- a/src/battle/battle_message.c +++ b/src/battle/battle_message.c @@ -25,6 +25,8 @@ #include "../data/battle_strings_en.h" #endif +// This is four lists of moves which use a different attack string in Japanese +// to the default. See the documentation for sub_8121D74 for more detail. const u16 gUnknown_084016BC[] = { MOVE_SWORDS_DANCE, @@ -69,7 +71,7 @@ const u16 gUnknown_084016BC[] = MOVE_MUDDY_WATER, MOVE_IRON_DEFENSE, MOVE_BOUNCE, - MOVE_NONE, + 0, MOVE_TELEPORT, MOVE_RECOVER, MOVE_BIDE, @@ -77,7 +79,7 @@ const u16 gUnknown_084016BC[] = MOVE_FLAIL, MOVE_TAUNT, MOVE_BULK_UP, - MOVE_NONE, + 0, MOVE_MEDITATE, MOVE_AGILITY, MOVE_MIMIC, @@ -96,7 +98,7 @@ const u16 gUnknown_084016BC[] = MOVE_FAKE_TEARS, MOVE_WATER_SPORT, MOVE_CALM_MIND, - MOVE_NONE, + 0, MOVE_POUND, MOVE_SCRATCH, MOVE_VICE_GRIP, @@ -144,7 +146,7 @@ const u16 gUnknown_084016BC[] = MOVE_ENDEAVOR, MOVE_TICKLE, MOVE_COVET, - MOVE_NONE, + 0, }; const u8 gUnknown_084017A8[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // empty flags @@ -971,6 +973,10 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) } } +// Loads one of two text strings into the provided buffer. This is functionally +// unused, since the value loaded into the buffer is not read; it loaded one of +// two particles (either "は" or "の") which works in tandem with sub_8121D74 +// below to effect changes in the meaning of the line. void sub_8121D1C(u8* textBuff) { s32 counter = 0; @@ -993,6 +999,24 @@ void sub_8121D1C(u8* textBuff) } } +// Appends "!" to the text buffer `dst`. In the original Japanese this looked +// into the table of moves at gUnknown_084016BC and varied the line accordingly. +// +// BattleText_Exclamation was a plain "!", used for any attack not on the list. +// It resulted in the translation "'s !". +// +// BattleText_Exclamation2 was "を つかった!". This resulted in the translation +// " used !", which was used for all attacks in English. +// +// BattleText_Exclamation3 was "した!". This was used for those moves whose +// names were verbs, such as Recover, and resulted in translations like " +// recovered itself!". +// +// BattleText_Exclamation4 was "を した!" This resulted in a translation of +// " did an !". +// +// BattleText_Exclamation5 was " こうげき!" This resulted in a translation of +// "'s attack!". void sub_8121D74(u8* dst) { s32 counter = 0; -- cgit v1.2.3 From 05d18468a4b817c0976b16017ef7b6044befed7f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 13:18:23 -0500 Subject: Dma macro cleanup and cleanup sub_8076034 and sub_8076464 --- common_syms/field/start_menu.txt | 2 +- src/battle/anim/love_bg.c | 16 +----- src/battle/anim/scary_face.c | 16 +----- src/battle/battle_anim.c | 106 ++++++++------------------------------- src/debug/matsuda_debug_menu.c | 24 ++------- src/debug/mori_debug_menu.c | 8 +-- src/debug/unknown_debug_menu.c | 6 +-- src/field/start_menu.c | 20 ++++---- 8 files changed, 44 insertions(+), 154 deletions(-) diff --git a/common_syms/field/start_menu.txt b/common_syms/field/start_menu.txt index bc0c247d1..05beaf57c 100644 --- a/common_syms/field/start_menu.txt +++ b/common_syms/field/start_menu.txt @@ -1 +1 @@ -gCallback_03004AE8 +gMenuCallback diff --git a/src/battle/anim/love_bg.c b/src/battle/anim/love_bg.c index bd3d22ca6..ef524e4be 100644 --- a/src/battle/anim/love_bg.c +++ b/src/battle/anim/love_bg.c @@ -90,21 +90,7 @@ void sub_80D21F0(u8 taskId) break; case 3: sub_8078914(&subStruct); - { - u8 *addr = subStruct.field_0; - u32 size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - } + DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000); DmaClear32(3, subStruct.field_4, 0x800); if (!IsContest()) REG_BG1CNT_BITFIELD.charBaseBlock = 0; diff --git a/src/battle/anim/scary_face.c b/src/battle/anim/scary_face.c index 47776a3cb..65b9637c0 100644 --- a/src/battle/anim/scary_face.c +++ b/src/battle/anim/scary_face.c @@ -98,21 +98,7 @@ void sub_80D24E0(u8 taskId) break; case 3: sub_8078914(&subStruct); - { - u8 *addr = subStruct.field_0; - u32 size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - } + DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000); DmaClear32(3, subStruct.field_4, 0x800); if (!IsContest()) REG_BG1CNT_BITFIELD.charBaseBlock = 0; diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index 4549d1fcb..059b8df1f 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -1910,36 +1910,19 @@ bool8 IsAnimBankSpriteVisible(u8 bank) void sub_8076034(u8 a, u8 b) { - volatile u8 pointlessZero; - u16 *addr2; u8 spriteId; if (b == 0) { + volatile u8 pointlessZero; struct UnknownStruct2 s; - u8 *addr; - u32 size; u8 r2; - u16 *addr3; sub_8078914(&s); - addr = s.unk0; - size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - pointlessZero = 0; - pointlessZero = 0; - addr2 = (void *)s.unk4; - DmaFill16(3, 0xFF, addr2, 0x1000); + DmaFill32Large(3, 0, s.unk0, 0x2000, 0x1000); + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + DmaFill16Defvars(3, 0xFF, (void *)s.unk4, 0x1000); REG_BG1CNT_BITFIELD.priority = 2; REG_BG1CNT_BITFIELD.screenSize = 1; @@ -1956,8 +1939,7 @@ void sub_8076034(u8 a, u8 b) REG_BG1VOFS = gBattle_BG1_Y; LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk8 * 16, 32); - addr3 = (u16 *)PLTT + s.unk8 * 16; - DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); + DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + a * 16, (u16 *)PLTT + s.unk8 * 16, 32); if (IsContest() != 0) r2 = 0; @@ -1969,27 +1951,12 @@ void sub_8076034(u8 a, u8 b) } else { - u8 *addr; - u32 size; - u16 *addr3; + volatile u8 pointlessZero; - addr = (void *)(VRAM + 0x6000); - size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - pointlessZero = 0; - pointlessZero = 0; - addr2 = (void *)(VRAM + 0xF000); - DmaFill32(3, 0, addr2, 0x800); + DmaFill32Large(3, 0, (void *)(VRAM + 0x6000), 0x2000, 0x1000); + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + DmaFill32Defvars(3, 0, (void *)(VRAM + 0xF000), 0x800); REG_BG2CNT_BITFIELD.priority = 2; REG_BG2CNT_BITFIELD.screenSize = 1; @@ -2004,8 +1971,7 @@ void sub_8076034(u8 a, u8 b) REG_BG2VOFS = gBattle_BG2_Y; LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, 0x90, 32); - addr3 = (void *)(PLTT + 0x120); - DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); + DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + a * 16, (void *)(PLTT + 0x120), 32); sub_80E4EF8(0, 0, GetBankIdentity(a), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock); } @@ -2060,57 +2026,25 @@ void sub_80763FC(u16 a, u16 *b, u32 c, u8 d) void sub_8076464(u8 a) { - u8 *addr; - u32 size; volatile u8 pointlessZero; struct UnknownStruct2 s; sub_8078914(&s); if (a == 0 || IsContest() != 0) { - u16 *addr2; - - addr = s.unk0; - size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - pointlessZero = 0; - pointlessZero = 0; - addr2 = s.unk4; - DmaFill32(3, 0, addr2, 0x800); + DmaFill32Large(3, 0, s.unk0, 0x2000, 0x1000); + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + DmaFill32Defvars(3, 0, s.unk4, 0x800); gBattle_BG1_X = 0; gBattle_BG1_Y = 0; } else { - u16 *addr2; - - addr = (void *)(VRAM + 0x6000); - size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - pointlessZero = 0; - pointlessZero = 0; - addr2 = (void *)(VRAM + 0xF000); - DmaFill32(3, 0, addr2, 0x800); + DmaFill32Large(3, 0, (void *)(VRAM + 0x6000), 0x2000, 0x1000); + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + DmaFill32Defvars(3, 0, (void *)(VRAM + 0xF000), 0x800); gBattle_BG2_X = 0; gBattle_BG2_Y = 0; } diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index b879584dd..da1937adb 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -38,7 +38,7 @@ extern u16 gBattle_BG2_Y; extern u16 gBattle_BG3_X; extern u16 gBattle_BG3_Y; -extern u8 (*gCallback_03004AE8)(void); +extern u8 (*gMenuCallback)(void); extern bool8 gReceivedRemoteLinkPlayers; @@ -251,7 +251,7 @@ u8 unref_sub_80A9B28(void) Menu_DrawStdWindowFrame(0, 0, 17, 18); Menu_PrintItems(1, 1, 7, gMatsudaDebugMenuActions); InitMenu(0, 1, 1, 7, 0, 16); - gCallback_03004AE8 = sub_80A9B78; + gMenuCallback = sub_80A9B78; return 0; } @@ -264,7 +264,7 @@ static bool8 sub_80A9B78(void) case -2: return FALSE; default: - gCallback_03004AE8 = gMatsudaDebugMenuActions[choice].func; + gMenuCallback = gMatsudaDebugMenuActions[choice].func; return FALSE; case -1: CloseMenu(); @@ -469,26 +469,10 @@ static void sub_80A9F50(void) static void sub_80A9FE4(void) { - u8 *addr; - u32 i; u8 ptr[5]; memcpy(ptr, gMatsudaDebugMenu_UnknownByteArray, 5); - - addr = (void *)VRAM; - i = VRAM_SIZE; - - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - i -= 0x1000; - if (i <= 0x1000) - { - DmaFill32(3, 0, addr, i); - break; - } - } + DmaFill32Large(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); sub_80034D4((void *)VRAM, ptr); LoadFontDefaultPalette(&gWindowTemplate_81E6C3C); } diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 7b9a579a7..767f4cda0 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -12,7 +12,7 @@ #define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT) -extern u8 (*gCallback_03004AE8)(void); +extern u8 (*gMenuCallback)(void); u8 gUnknown_03004DA0[0x20]; @@ -98,7 +98,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 14, 30, 19); Menu_PrintText(localPtr, 1, 15); - gCallback_03004AE8 = sub_8083D4C; + gMenuCallback = sub_8083D4C; return 0; } @@ -184,7 +184,7 @@ bool8 MoriDebugMenuProcessInput(void) switch (choice) { default: - gCallback_03004AE8 = gMoriDebugMenuActions[choice].func; + gMenuCallback = gMoriDebugMenuActions[choice].func; return FALSE; case -2: return FALSE; @@ -200,6 +200,6 @@ s8 InitMoriDebugMenu(void) Menu_DrawStdWindowFrame(0, 0, 10, 19); Menu_PrintItems(1, 1, 9, gMoriDebugMenuActions); InitMenu(0, 1, 1, 9, 0, 9); - gCallback_03004AE8 = MoriDebugMenuProcessInput; + gMenuCallback = MoriDebugMenuProcessInput; return 0; } diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index 9cece924d..ef3e0e66c 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -4,7 +4,7 @@ extern u8 gBattleCommunication[]; -extern u8 (*gCallback_03004AE8)(void); +extern u8 (*gMenuCallback)(void); static u8 sub_814A4B8(void); static u8 sub_814A464(void); @@ -36,7 +36,7 @@ int unref_sub_814A414(void) Menu_DrawStdWindowFrame(0, 0, 16, 18); Menu_PrintItems(2, 1, 8, gUnknown_0842C29C); InitMenu(0, 1, 1, 8, 0, 15); - gCallback_03004AE8 = sub_814A464; + gMenuCallback = sub_814A464; return 0; } @@ -55,7 +55,7 @@ static u8 sub_814A464(void) else { gBattleCommunication[0] = result; - gCallback_03004AE8 = gUnknown_0842C29C[result].func; + gMenuCallback = gUnknown_0842C29C[result].func; return 0; } } diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 110351016..95aa9c79e 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -54,7 +54,7 @@ extern u16 gSpecialVar_Result; extern u8 gUnknown_03004860; -u8 (*gCallback_03004AE8)(void); +u8 (*gMenuCallback)(void); EWRAM_DATA static u8 sStartMenuCursorPos = 0; EWRAM_DATA static u8 sNumStartMenuActions = 0; @@ -283,11 +283,11 @@ void sub_80712B4(u8 taskId) switch (task->data[0]) { case 0: - gCallback_03004AE8 = StartMenu_InputProcessCallback; + gMenuCallback = StartMenu_InputProcessCallback; task->data[0]++; break; case 1: - if (gCallback_03004AE8() == 1) + if (gMenuCallback() == 1) DestroyTask(taskId); break; } @@ -325,10 +325,10 @@ static u8 StartMenu_InputProcessCallback(void) if (GetNationalPokedexCount(0) == 0) return 0; } - gCallback_03004AE8 = sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func; - if (gCallback_03004AE8 != StartMenu_SaveCallback && - gCallback_03004AE8 != StartMenu_ExitCallback && - gCallback_03004AE8 != StartMenu_RetireCallback) + gMenuCallback = sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func; + if (gMenuCallback != StartMenu_SaveCallback && + gMenuCallback != StartMenu_ExitCallback && + gMenuCallback != StartMenu_RetireCallback) fade_screen(1, 0); return 0; } @@ -405,7 +405,7 @@ static u8 StartMenu_PlayerCallback(void) static u8 StartMenu_SaveCallback(void) { Menu_DestroyCursor(); - gCallback_03004AE8 = SaveCallback1; + gMenuCallback = SaveCallback1; return 0; } @@ -461,7 +461,7 @@ enum static u8 SaveCallback1(void) { sub_807160C(); - gCallback_03004AE8 = SaveCallback2; + gMenuCallback = SaveCallback2; return FALSE; } @@ -475,7 +475,7 @@ static u8 SaveCallback2(void) //Go back to start menu Menu_EraseScreen(); InitStartMenu(); - gCallback_03004AE8 = StartMenu_InputProcessCallback; + gMenuCallback = StartMenu_InputProcessCallback; return FALSE; case SAVE_SUCCESS: case SAVE_ERROR: -- cgit v1.2.3 From f07cdb4c9723bdbb1fcdbbe622d39936ae5b532f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 17:47:46 -0500 Subject: use Dma Large loops for every while(1) Dma loop --- include/gba/macro.h | 53 +++++++++++++++++++++++++++++++++++ src/battle/battle_controller_player.c | 17 +---------- src/engine/naming_screen.c | 15 +--------- src/engine/option_menu.c | 17 +---------- src/engine/reset_rtc_screen.c | 20 +------------ src/engine/trade.c | 20 ++----------- src/engine/trainer_card.c | 46 +++--------------------------- src/field/menu_helpers.c | 19 +------------ src/field/overworld.c | 19 +------------ src/field/party_menu.c | 18 +----------- src/field/wallclock.c | 19 ++----------- src/pokemon/pokedex.c | 29 ++++--------------- src/scene/contest_painting.c | 17 +---------- 13 files changed, 75 insertions(+), 234 deletions(-) diff --git a/include/gba/macro.h b/include/gba/macro.h index dcad009e1..d39d10738 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -167,4 +167,57 @@ #define DmaFill16Defvars(dmaNum, fillval, dest, size) DmaFillDefvars(dmaNum, fillval, dest, size, 16) #define DmaFill32Defvars(dmaNum, fillval, dest, size) DmaFillDefvars(dmaNum, fillval, dest, size, 32) +// from pokeemerald +// Maximum amount of data we will transfer in one operation +#define MAX_DMA_BLOCK_SIZE 0x1000 + +#define MAX_DMA_REQUESTS 128 + +#define DMA_REQUEST_COPY32 1 +#define DMA_REQUEST_FILL32 2 +#define DMA_REQUEST_COPY16 3 +#define DMA_REQUEST_FILL16 4 + +#define Dma3CopyLarge_(src, dest, size, bit) \ +{ \ + const void *_src = src; \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + if (_size <= MAX_DMA_BLOCK_SIZE) \ + { \ + DmaCopy##bit(3, _src, _dest, _size); \ + break; \ + } \ + DmaCopy##bit(3, _src, _dest, MAX_DMA_BLOCK_SIZE); \ + _src += MAX_DMA_BLOCK_SIZE; \ + _dest += MAX_DMA_BLOCK_SIZE; \ + _size -= MAX_DMA_BLOCK_SIZE; \ + } \ +} + +#define Dma3CopyLarge16_(src, dest, size) Dma3CopyLarge_(src, dest, size, 16) +#define Dma3CopyLarge32_(src, dest, size) Dma3CopyLarge_(src, dest, size, 32) + +#define Dma3FillLarge_(value, dest, size, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + if (_size <= MAX_DMA_BLOCK_SIZE) \ + { \ + DmaFill##bit(3, value, _dest, _size); \ + break; \ + } \ + DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \ + _dest += MAX_DMA_BLOCK_SIZE; \ + _size -= MAX_DMA_BLOCK_SIZE; \ + } \ +} + +#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16) +#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32) + #endif // GUARD_GBA_MACRO_H diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 0d05b7aed..f036e841f 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -2749,22 +2749,7 @@ void PlayerHandleDMATransfer(void) | (gBattleBufferA[gActiveBank][4] << 24); u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8); - const u8 *src = &gBattleBufferA[gActiveBank][7]; - u8 *dst = (u8 *)val1; - u32 size = val2; - - while (1) - { - if (size <= 0x1000) - { - DmaCopy16(3, src, dst, size); - break; - } - DmaCopy16(3, src, dst, 0x1000); - src += 0x1000; - dst += 0x1000; - size -= 0x1000; - } + Dma3CopyLarge16_(&gBattleBufferA[gActiveBank][7], (u8 *)val1, val2); PlayerBufferExecCompleted(); } diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index eddfdeda5..d54b84720 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -258,20 +258,7 @@ static void NamingScreen_InitDisplayMode(void) static void NamingScreen_ClearVram(void) { - u8 *addr = (void *)VRAM; - u32 size = 0x10000; - - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } + DmaFill16Large(3, 0, (void *)VRAM, 0x10000, 0x1000); } static void NamingScreen_ClearOam(void) diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index 1fc78efaa..d4e921a0e 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -76,9 +76,6 @@ void CB2_InitOptionMenu(void) default: case 0: { - u8 *addr; - u32 size; - SetVBlankCallback(NULL); REG_DISPCNT = 0; REG_BG2CNT = 0; @@ -90,19 +87,7 @@ void CB2_InitOptionMenu(void) REG_BG1VOFS = 0; REG_BG0HOFS = 0; REG_BG0VOFS = 0; - addr = (u8 *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } + DmaFill16Large(3, 0, (u8 *)VRAM, 0x18000, 0x1000); DmaClear32(3, OAM, OAM_SIZE); DmaClear16(3, PLTT, PLTT_SIZE); gMain.state++; diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index c7d45e929..ce4afe922 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -414,28 +414,10 @@ void Task_ResetRtc_0(u8 taskId) void CB2_InitResetRtcScreen(void) { - u8 *addr; - u32 size; - REG_DISPCNT = 0; SetVBlankCallback(NULL); - DmaClear16(3, PLTT, PLTT_SIZE); - - addr = (u8 *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - + DmaFill16Large(3, 0, (u8 *)VRAM, 0x18000, 0x1000); ResetOamRange(0, 128); LoadOam(); ScanlineEffect_Stop(); diff --git a/src/engine/trade.c b/src/engine/trade.c index 3a14adaca..81485d3f6 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1453,9 +1453,7 @@ static void sub_8048AB4(void) static void sub_8048B0C(u8 a0) { int i; - u16 *dest; - const u16 *src; - u32 size; + switch (a0) { case 0: @@ -1464,21 +1462,7 @@ static void sub_8048B0C(u8 a0) gPlttBufferUnfaded[i] = *(gUnknown_08EA02C8 + i); gPlttBufferFaded[i] = *(gUnknown_08EA02C8 + i); } - src = gUnknown_08EA0348; - dest = (u16 *)BG_VRAM; - size = 0x1280; - while (1) - { - DmaCopy16(3, src, dest, BLOCKSIZE * sizeof(u16)); - src += BLOCKSIZE; - dest += BLOCKSIZE; - size -= BLOCKSIZE * sizeof(u16); - if (size <= BLOCKSIZE * sizeof(u16)) - { - DmaCopy16(3, src, dest, size); - break; - } - } + DmaCopyLarge16(3, gUnknown_08EA0348, (void *)BG_VRAM, 0x1280, 0x1000); for (i = 0; i < 0x400; i ++) gUnknown_03004824->unk_00c8.unk_12[i] = gUnknown_08EA15C8[i]; dest = BG_SCREEN_ADDR(6); diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index 9d09575c8..b49628bfa 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -441,27 +441,12 @@ static void sub_8093550(void) void sub_8093598(void) { - u8 *addr = (void *)VRAM; - u32 size = 0x10000; - - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } + DmaFill16Large(3, 0, (void *)VRAM, 0x10000, 0x1000); } void sub_80935EC(void) { - void *addr = (void *)OAM; - - DmaFill16(3, 0, addr, 0x400); + DmaFill16Defvars(3, 0, (void *)OAM, 0x400); } void sub_8093610(void) @@ -1163,33 +1148,10 @@ static void TrainerCard_ResetOffsetRegisters(void) static void TrainerCard_CopyGraphics(void) { - const u8 *src; - u8 *dst; - u32 size; - TrainerCard_LoadPalettes(); LoadPalette(gUnknown_083B5F6C, 0xE0, 32); - src = gMenuTrainerCard_Gfx; - dst = (void *)VRAM; - size = 0x1480; - while (1) - { - DmaCopy16(3, src, dst, 0x1000); - src += 0x1000; - dst += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaCopy16(3, src, dst, size); - break; - } - } - { - const void *src = gBadgesTiles; - void *dst = (void *)(VRAM + 0x1480); - - DmaCopy16(3, src, dst, 0x400); - } + DmaCopyLarge16(3, gMenuTrainerCard_Gfx, (void *)VRAM, 0x1480, 0x1000); + DmaCopy16Defvars(3, gBadgesTiles, (void *)(VRAM + 0x1480), 0x400); } extern const u16 *const gTrainerCardPalettes[]; diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index 54668addb..388d98ec7 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -296,9 +296,6 @@ bool8 sub_80F9344(void) void sub_80F9368(void) { - u8 *addr; - u32 size; - REG_DISPCNT = 0; REG_BG3CNT = 0; REG_BG2CNT = 0; @@ -312,21 +309,7 @@ void sub_80F9368(void) REG_BG1VOFS = 0; REG_BG0HOFS = 0; REG_BG0VOFS = 0; - - addr = (u8 *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - + DmaFill16Large(3, 0, (u8 *)VRAM, 0x18000, 0x1000); DmaClear32(3, OAM, OAM_SIZE); DmaClear16(3, PLTT, PLTT_SIZE); } diff --git a/src/field/overworld.c b/src/field/overworld.c index 86b0a5dac..a6d34e103 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1664,29 +1664,12 @@ void do_load_map_stuff_loop(u8 *a1) void sub_8054BA8(void) { - u8 *addr; - u32 size; - REG_DISPCNT = 0; ScanlineEffect_Stop(); DmaClear16(3, PLTT + 2, PLTT_SIZE - 2); - - addr = (void *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - + DmaFill16Large(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); ResetOamRange(0, 128); LoadOam(); } diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 48275435e..53bad9618 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -620,27 +620,11 @@ bool8 SetupDefaultPartyMenu(void) bool8 InitPartyMenu(void) { - u8 *addr; - u32 size; - switch (gMain.state) { case 0: SetVBlankCallback(NULL); - addr = (u8 *)VRAM; - size = VRAM_SIZE; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - + DmaFill16Large(3, 0, (void *)(VRAM + 0x0), VRAM_SIZE, 0x1000); DmaClear32(3, OAM, OAM_SIZE); DmaClear16(3, PLTT, PLTT_SIZE); diff --git a/src/field/wallclock.c b/src/field/wallclock.c index aaa7f9ae8..1f743a61a 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -190,10 +190,7 @@ static void WallClockVblankCallback(void) static void LoadWallClockGraphics(void) { - u8 *addr; - u32 size; - - SetVBlankCallback(0); + SetVBlankCallback(NULL); REG_DISPCNT = 0; REG_BG3CNT = 0; REG_BG2CNT = 0; @@ -208,19 +205,7 @@ static void LoadWallClockGraphics(void) REG_BG0HOFS = 0; REG_BG0VOFS = 0; - addr = (void *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } + DmaFill16Large(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); DmaClear32(3, OAM, OAM_SIZE); DmaClear16(3, PLTT, PLTT_SIZE); diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index faebe526a..cbd816206 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1394,29 +1394,12 @@ void CB2_InitPokedex(void) { case 0: default: - { - u8 *addr; - u32 size; - - SetVBlankCallback(NULL); - sub_8091060(0); - addr = (u8 *)VRAM; - size = VRAM_SIZE; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - DmaClear32(3, OAM, OAM_SIZE); - DmaClear16(3, PLTT, PLTT_SIZE); - gMain.state = 1; - } + SetVBlankCallback(NULL); + sub_8091060(0); + DmaFill16Large(3, 0, (void *)(VRAM + 0x0), VRAM_SIZE, 0x1000); + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + gMain.state = 1; break; case 1: ScanlineEffect_Stop(); diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index 3aa898b03..0aa02312f 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -156,23 +156,8 @@ static void ShowContestPainting(void) break; case 1: { - u8 *addr; - size_t size; - ResetPaletteFade(); - addr = (void *)VRAM; - size = 0x18000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } + DmaFill32Large(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); ResetSpriteData(); gMain.state++; break; -- cgit v1.2.3 From 093422f3065ed47db9a475b0c9d67e9c5bc2c364 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 18:10:16 -0500 Subject: use dma macros for remaining missing dma while(1) loops --- src/field/slot_machine.c | 19 +------------------ src/pokemon/mon_markings.c | 3 +-- src/pokemon/pokemon_summary_screen.c | 22 +++++----------------- src/scene/berry_blender.c | 20 ++------------------ src/scene/egg_hatch.c | 19 +------------------ src/scene/hall_of_fame.c | 33 ++++----------------------------- 6 files changed, 14 insertions(+), 102 deletions(-) diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 9ff3a037c..21bf29e91 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -3901,26 +3901,9 @@ static void sub_8106404(void) } static void sub_8106448(void) { - u32 offsetRead, offsetWrite; - u32 size; - LZDecompressWram(gSlotMachine_Gfx, eSlotMachineGfxBuffer); - offsetRead = (u32)eSlotMachineGfxBuffer; - offsetWrite = BG_VRAM; - size = SLOTMACHINE_GFX_TILES * 32; - while (TRUE) - { - DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000); - offsetRead += 0x1000; - offsetWrite += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaCopy16(3, offsetRead, (void *) (offsetWrite), size); - break; - } - } + DmaCopyLarge16(3, eSlotMachineGfxBuffer, BG_VRAM, SLOTMACHINE_GFX_TILES * 32, 0x1000); LoadPalette(gUnknown_08E95A18, 0, 160); LoadPalette(gPalette_83EDE24, 208, 32); diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c index 3734856b8..66c82a706 100644 --- a/src/pokemon/mon_markings.c +++ b/src/pokemon/mon_markings.c @@ -631,6 +631,5 @@ struct Sprite *sub_80F7960(u16 tileTag, u16 paletteTag, const u16 *palette, u16 void sub_80F7A10(u8 markings, void *dest) { - const void *src = gUnknown_083E4A14 + markings * 0x80; - DmaCopy16(3, src, dest, 0x80); + DmaCopy16Defvars(3, gUnknown_083E4A14 + markings * 0x80, dest, 0x80); } diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index bf8306fc0..eab6fb4ee 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -690,9 +690,6 @@ void sub_809DA1C(void) bool8 sub_809DA84(void) { - const u16 *src; - void *dest; - switch (gMain.state) { case 0: @@ -709,8 +706,7 @@ bool8 sub_809DA84(void) gMain.state++; break; case 3: - dest = (void *)VRAM; - DmaClearLarge(3, dest, 0x10000, 0x1000, 32); + DmaClearLarge(3, (void *)(VRAM + 0x0), 0x10000, 0x1000, 32); gMain.state++; break; case 4: @@ -736,14 +732,8 @@ bool8 sub_809DA84(void) gMain.state++; break; case 9: - src = gSummaryScreenTextTiles; - dest = (void *)VRAM + 0xD000; - DmaCopy16(3, src, dest, 320); - - src = sSummaryScreenButtonTiles; - dest = (void *)VRAM + 0xD140; - DmaCopy16(3, src, dest, 256); - + DmaCopy16Defvars(3, gSummaryScreenTextTiles, (void *)(VRAM + 0xD000), 320); + DmaCopy16Defvars(3, sSummaryScreenButtonTiles, (void *)(VRAM + 0xD140), 256); pssData.loadGfxState = 0; gMain.state++; break; @@ -3622,16 +3612,14 @@ static void DrawSummaryScreenNavigationDots(void) } } - dest = (void *)(VRAM + 0xE016); - DmaCopy16(3, arr, dest, 16); + DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xE016), 16); for (i = 0; i < 8; i++) { arr[i] += 0x10; } - dest = (void *)(VRAM + 0xE056); - DmaCopy16(3, arr, dest, 16); + DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xE056), 16); } #else __attribute__((naked)) diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 0a7e14e4e..6b6469634 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -842,24 +842,8 @@ static bool8 sub_804E2EC(void) } break; case 2: - { - void* offsetRead = ewram10000; - void* offsetWrite = (void*)(VRAM); - u32 size = 0x2000; - while (TRUE) - { - DmaCopy16(3, offsetRead, offsetWrite, 0x1000); - offsetRead += 0x1000; - offsetWrite += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaCopy16(3, offsetRead, offsetWrite, size); - break; - } - } - gBerryBlenderData->field_1++; - } + DmaCopyLarge16(3, ewram10000, (void *)(VRAM + 0x0), 0x2000, 0x1000); + gBerryBlenderData->field_1++; break; case 3: LZDecompressWram(gUnknown_08E6C920, ewram10000); diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c index e0b798aea..8c585e067 100644 --- a/src/scene/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -505,28 +505,11 @@ static void CB2_EggHatch_0(void) break; case 7: { - u32 offsetRead, offsetWrite; u32 offsetRead2, offsetWrite2; - u32 size; REG_BG2CNT = 0x4C06; LoadPalette(gUnknown_0820C9F8, 0x10, 0xA0); - - offsetRead = (u32)(&gUnknown_0820CA98); - offsetWrite = (VRAM + 0x4000); - size = 0x1300; - while (TRUE) - { - DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000); - offsetRead += 0x1000; - offsetWrite += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaCopy16(3, offsetRead, (void *) (offsetWrite), size); - break; - } - } + DmaCopyLarge16(3, gUnknown_0820CA98, (void *)(VRAM + 0x4000), 0x1300, 0x1000); offsetRead2 = (u32)(&gUnknown_0820F798); offsetWrite2 = (u32)(VRAM + 0x6000); diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index a9532fd09..f7f7fb1cc 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -1199,8 +1199,8 @@ static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1) static void sub_81433E0(void) { - u32 offsetWrite, offsetWrite2, offsetWrite3, offsetWrite4; - u32 size, size2, size3, size4; + u32 offsetWrite2, offsetWrite3; + u32 size2, size3; u16 i; REG_DISPCNT = 0; @@ -1221,19 +1221,7 @@ static void sub_81433E0(void) REG_BG3HOFS = 0; REG_BG3VOFS = 0; - offsetWrite = (VRAM); - size = 0x18000; - while (TRUE) - { - DmaFill16(3, 0, offsetWrite, 0x1000); - offsetWrite += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, offsetWrite, size); - break; - } - } + DmaFill16Large(3, 0, VRAM, 0x18000, 0x1000); offsetWrite2 = OAM; size2 = OAM_SIZE; @@ -1258,20 +1246,7 @@ static void sub_81433E0(void) *((u16*)(VRAM + 0x3000) + i) = 2; } - offsetWrite4 = ewram0_6; - size4 = 0x4000; - while (TRUE) - { - DmaFill16(3, 0, offsetWrite4, 0x1000); - offsetWrite4 += 0x1000; - size4 -= 0x1000; - if (size4 <= 0x1000) - { - DmaFill16(3, 0, offsetWrite4, size4); - break; - } - } - + DmaFill16Large(3, 0, ewram0_6, 0x4000, 0x1000); ResetPaletteFade(); LoadPalette(gHallOfFame_Pal, 0, 0x20); } -- cgit v1.2.3 From 2869160d630f569110ca895ff924070d626fd54b Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 19:31:23 -0500 Subject: use Defvars instead of some Dma macros and hopefully last while(1)s --- src/battle/anim/love_bg.c | 7 +++---- src/battle/anim/scary_face.c | 5 ++--- src/battle/battle_7.c | 7 +------ src/battle/battle_anim.c | 22 ++++------------------ src/contest.c | 20 ++++---------------- src/engine/naming_screen.c | 12 ++---------- src/engine/palette.c | 4 +--- src/engine/trade.c | 13 +++---------- src/field/berry_tag_screen.c | 4 +--- src/field/item_menu.c | 16 ++-------------- src/field/party_menu.c | 4 +--- src/field/pokeblock.c | 6 +----- src/field/start_menu.c | 21 ++------------------- src/scene/berry_blender.c | 35 ++++++++--------------------------- src/scene/egg_hatch.c | 17 +++++------------ src/scene/hall_of_fame.c | 12 ++---------- src/scene/intro.c | 4 +--- 17 files changed, 43 insertions(+), 166 deletions(-) diff --git a/src/battle/anim/love_bg.c b/src/battle/anim/love_bg.c index ef524e4be..c3828c681 100644 --- a/src/battle/anim/love_bg.c +++ b/src/battle/anim/love_bg.c @@ -25,7 +25,7 @@ static void sub_80D21F0(u8 taskId); void sub_80D2100(u8 taskId) { struct Struct_sub_8078914 subStruct; - u8* tempvar; + REG_BLDCNT = 0x3F42; REG_BLDALPHA = 0x1000; REG_BG1CNT_BITFIELD.priority = 3; @@ -38,9 +38,8 @@ void sub_80D2100(u8 taskId) REG_BG1HOFS = 0; REG_BG1VOFS = 0; sub_8078914(&subStruct); - tempvar = subStruct.field_4; - DmaFill32(3, 0x0, tempvar, 0x1000); - LZDecompressVram(&gAttractTilemap, tempvar); + DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000); + LZDecompressVram(&gAttractTilemap, subStruct.field_4); LZDecompressVram(&gAttractGfx, subStruct.field_0); LoadCompressedPalette(&gAttractPal, subStruct.field_8 << 4, 32); if (IsContest()) diff --git a/src/battle/anim/scary_face.c b/src/battle/anim/scary_face.c index 65b9637c0..8d51521ee 100644 --- a/src/battle/anim/scary_face.c +++ b/src/battle/anim/scary_face.c @@ -27,7 +27,7 @@ static void sub_80D24E0(u8 taskId); void sub_80D23B4(u8 taskId) { struct Struct_sub_8078914 subStruct; - u8* tempvar; + REG_BLDCNT = 0x3F42; REG_BLDALPHA = 0x1000; REG_BG1CNT_BITFIELD.priority = 1; @@ -40,8 +40,7 @@ void sub_80D23B4(u8 taskId) REG_BG1HOFS = 0; REG_BG1VOFS = 0; sub_8078914(&subStruct); - tempvar = subStruct.field_4; - DmaFill32(3, 0x0, tempvar, 0x1000); + DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000); if (IsContest()) LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceContest, subStruct.field_4); else if (GetBankSide(gAnimBankTarget) == 1) diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c index 00216ce05..b4c71b9c2 100644 --- a/src/battle/battle_7.c +++ b/src/battle/battle_7.c @@ -624,9 +624,6 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) } else { - const void *src; - void *dst; - if (IsContest()) { r10 = 0; @@ -676,9 +673,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) gTransformedPersonalities[a]); } } - src = gUnknown_081FAF4C[r10]; - dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32); - DmaCopy32(3, src, dst, 0x800); + DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32), 0x800); paletteOffset = 0x100 + a * 16; lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); LZDecompressWram(lzPaletteData, gSharedMem); diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index 059b8df1f..a4540868c 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -2064,25 +2064,15 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) if (gTasks[taskId].data[5] == 0) { - u16 *src; - u16 *dst; - gBattle_BG1_X = x + gTasks[taskId].data[3]; gBattle_BG1_Y = y + gTasks[taskId].data[4]; - src = gPlttBufferFaded + 0x100 + palIndex * 16; - dst = gPlttBufferFaded + 0x100 + s.unk8 * 16 - 256; - DmaCopy32(3, src, dst, 32); + DmaCopy32Defvars(3, gPlttBufferFaded + 0x100 + palIndex * 16, gPlttBufferFaded + 0x100 + s.unk8 * 16 - 256, 32); } else { - u16 *src; - u16 *dst; - gBattle_BG2_X = x + gTasks[taskId].data[3]; gBattle_BG2_Y = y + gTasks[taskId].data[4]; - src = gPlttBufferFaded + 0x100 + palIndex * 16; - dst = gPlttBufferFaded + 0x100 - 112; - DmaCopy32(3, src, dst, 32); + DmaCopy32Defvars(3, gPlttBufferFaded + 0x100 + palIndex * 16, gPlttBufferFaded + 0x100 - 112, 32); } } @@ -2426,14 +2416,10 @@ static void LoadMoveBg(u16 bgId) if (IsContest()) { void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap; - void *dmaSrc; - void *dmaDest; - LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); + LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0); - dmaSrc = IsContest() ? EWRAM_14800 : EWRAM_18000; - dmaDest = (void *)(VRAM + 0xD000); - DmaCopy32(3, dmaSrc, dmaDest, 0x800); + DmaCopy32Defvars(3, IsContest() ? EWRAM_14800 : EWRAM_18000, (void *)(VRAM + 0xD000), 0x800); LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000)); LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, sub_80789BC() * 16, 32); } diff --git a/src/contest.c b/src/contest.c index df4bb361d..8081e8a8d 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3671,12 +3671,8 @@ void sub_80B0748(u8 taskId) { // What the hell? These aren't pointers. // This code would crash if run. - { - void *src = (void *)(u32)gPlttBufferFaded[(r4 + 5) * 16 + 1]; - void *dest = (void *)(u32)gPlttBufferUnfaded[(r4 + 5) * 16 + 1]; - u32 size = 6; - DmaCopy16(3, src, dest, size); - } + DmaCopy16Defvars(3, (void *)(u32)gPlttBufferFaded[(r4 + 5) * 16 + 1], + (void *)(u32)gPlttBufferUnfaded[(r4 + 5) * 16 + 1], 6); gTasks[taskId].data[r1 + 0] = 0; } } @@ -4046,21 +4042,13 @@ u8 sub_80B09E4(u8 a) CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gUnknown_02038696[a] * 5 * 64 + 0x26), (u8 *)(VRAM + 0x10000 + gSprites[r8].oam.tileNum * 32)); CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gUnknown_02038696[a] * 5 * 64 + 0x36), (u8 *)(VRAM + 0x10000 + gSprites[r6].oam.tileNum * 32)); - { - void *dest = (void *)(VRAM + 0x10000 + (0x28 + gSprites[r8].oam.tileNum) * 32); - u32 size = 0x300; - DmaFill32(3, 0, dest, size); - } + DmaFill32Defvars(3, 0, (void *)(VRAM + 0x10000 + (0x28 + gSprites[r8].oam.tileNum) * 32), 0x300); // What is this? zero = 0; zero = 0; - { - void *dest = (void *)(VRAM + 0x10000 + (0x28 + gSprites[r6].oam.tileNum) * 32); - u32 size = 0x300; - DmaFill32(3, 0, dest, size); - } + DmaFill32Defvars(3, 0, (void *)(VRAM + 0x10000 + (0x28 + gSprites[r6].oam.tileNum) * 32), 0x300); gSprites[r8].data[0] = r6; gSprites[r6].data[0] = r8; diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index d54b84720..97819322c 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -1616,16 +1616,8 @@ static void sub_80B7558(void) static void sub_80B7568(void) { - const void *src; - void *dst; - - src = gNamingScreenMenu_Gfx; - dst = (void *)(VRAM + gMenuMessageBoxContentTileOffset * 32); - DmaCopy16(3, src, dst, 0x800); - - src = gNamingScreenMenu_Gfx; - dst = (void *)(VRAM + 0x8000 + gMenuMessageBoxContentTileOffset * 32); - DmaCopy16(3, src, dst, 0x800); + DmaCopy16Defvars(3, gNamingScreenMenu_Gfx, (void *)(VRAM + gMenuMessageBoxContentTileOffset * 32), 0x800); + DmaCopy16Defvars(3, gNamingScreenMenu_Gfx, (void *)(VRAM + 0x8000 + gMenuMessageBoxContentTileOffset * 32), 0x800); } static void sub_80B75B0(void) diff --git a/src/engine/palette.c b/src/engine/palette.c index 17e9ca178..2a6602503 100644 --- a/src/engine/palette.c +++ b/src/engine/palette.c @@ -827,8 +827,6 @@ void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color) void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color) { - void *src = gPlttBufferUnfaded; - void *dest = gPlttBufferFaded; - DmaCopy32(3, src, dest, PLTT_SIZE); + DmaCopy32Defvars(3, gPlttBufferUnfaded, gPlttBufferFaded, PLTT_SIZE); BlendPalettes(selectedPalettes, coeff, color); } diff --git a/src/engine/trade.c b/src/engine/trade.c index 81485d3f6..c271649c1 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1465,13 +1465,10 @@ static void sub_8048B0C(u8 a0) DmaCopyLarge16(3, gUnknown_08EA0348, (void *)BG_VRAM, 0x1280, 0x1000); for (i = 0; i < 0x400; i ++) gUnknown_03004824->unk_00c8.unk_12[i] = gUnknown_08EA15C8[i]; - dest = BG_SCREEN_ADDR(6); - DmaCopy16(3, gTradeStripesBG2Tilemap, dest, 0x800); + DmaCopy16Defvars(3, gTradeStripesBG2Tilemap, BG_SCREEN_ADDR(6), 0x800); break; case 1: - src = gTradeStripesBG3Tilemap; - dest = BG_SCREEN_ADDR(7); - DmaCopy16(3, src, dest, 0x800); + DmaCopy16Defvars(3, gTradeStripesBG3Tilemap, BG_SCREEN_ADDR(7), 0x800); sub_804A6DC(0); sub_804A6DC(1); sub_804A938(&gUnknown_03004824->unk_00c8); @@ -5685,13 +5682,9 @@ static void sub_804E1DC(void) void sub_804E22C(void) { - const u16 *src; - u16 *dest; LZDecompressVram(gUnknown_08D00000, (void *)VRAM); CpuCopy16(gUnknown_08D00524, gSharedMem, 0x1000); - src = (const u16 *)gSharedMem; - dest = BG_SCREEN_ADDR(5); - DmaCopy16(3, src, dest, 0x500) + DmaCopy16Defvars(3, gSharedMem, BG_SCREEN_ADDR(5), 0x500); LoadCompressedPalette(gUnknown_08D004E0, 0, 32); REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5); } diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index bec16334d..bb937ea43 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -189,7 +189,6 @@ static void sub_8146288(void) bool8 sub_81462B8(void) { u16 i; - void *addr; switch (gSharedMem.var_1FFFF) { @@ -213,8 +212,7 @@ bool8 sub_81462B8(void) else gBGTilemapBuffers[2][i] = 0x5042; } - addr = (void *)(VRAM + 0x3800); - DmaCopy16(3, gBGTilemapBuffers[2], addr, 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0x3800), 0x800); gSharedMem.var_1FFFF += 1; break; case 4: diff --git a/src/field/item_menu.c b/src/field/item_menu.c index d86550eb6..6bad9f4d6 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -368,20 +368,8 @@ static void sub_80A3134(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - - { - const void *src = gBGTilemapBuffers[1]; - void *dst = (void *)(VRAM + 0x2000); - - DmaCopy16(3, src, dst, 0x800); - } - - { - const void *src = gBGTilemapBuffers[2]; - void *dst = (void *)(VRAM + 0x6000); - - DmaCopy16(3, src, dst, 0x800); - } + DmaCopy16Defvars(3, gBGTilemapBuffers[1], (void *)(VRAM + 0x2000), 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0x6000), 0x800); } static bool8 SetupBagMultistep(void) diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 53bad9618..31dd55dda 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -777,9 +777,7 @@ void ReDrawPartyMonBackgrounds(void) { if (ewram1B000.unk261) { - const void *src = gBGTilemapBuffers[2]; - void *dest = (void *)(BG_VRAM + 0x3000); - DmaCopy16(3, src, dest, 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(BG_VRAM + 0x3000), 0x800); if (ewram1B000.unk261 == 2) { diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 31bdcc398..e08a65f49 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -228,14 +228,10 @@ static void sub_810B674(void) static void sub_810B68C(void) { - u16 *src; - vu16 *dest; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - src = gBGTilemapBuffers[2]; - dest = (vu16 *)(VRAM + 0x7800); - DmaCopy16(3, src, dest, sizeof gBGTilemapBuffers[2]); + DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0x7800), sizeof gBGTilemapBuffers[2]); } static bool8 sub_810B6C0(void) diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 95aa9c79e..db41919be 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -744,29 +744,12 @@ static bool32 sub_80719FC(u8 *step) switch (*step) { case 0: - { - u8 *addr; - u32 size; - REG_DISPCNT = 0; SetVBlankCallback(NULL); ScanlineEffect_Stop(); DmaClear16(3, PLTT, PLTT_SIZE); - addr = (void *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - break; - } + DmaFill16Large(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); + break; case 1: ResetSpriteData(); ResetTasks(); diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 6b6469634..7567899ae 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -832,14 +832,9 @@ static bool8 sub_804E2EC(void) gBerryBlenderData->field_1++; break; case 1: - { - const void* offsetRead = sBlenderCenterMap; - void* offsetWrite = (void*)(VRAM + 0x4000); - - DmaCopy16(3, offsetRead, offsetWrite, 0x400); - LoadPalette(sBlenderCenterPal, 0, 0x100); - gBerryBlenderData->field_1++; - } + DmaCopy16Defvars(3, sBlenderCenterMap, (void *)(VRAM + 0x4000), 0x400); + LoadPalette(sBlenderCenterPal, 0, 0x100); + gBerryBlenderData->field_1++; break; case 2: DmaCopyLarge16(3, ewram10000, (void *)(VRAM + 0x0), 0x2000, 0x1000); @@ -854,37 +849,23 @@ static bool8 sub_804E2EC(void) gBerryBlenderData->field_1++; break; case 5: - { - void* offsetRead = ewram10000; - void* offsetWrite = (void*)(VRAM + 0xE000); - - DmaCopy16(3, offsetRead, offsetWrite, 0x1000); - gBerryBlenderData->field_1++; - } + DmaCopy16Defvars(3, ewram10000, (void *)(VRAM + 0xE000), 0x1000); + gBerryBlenderData->field_1++; break; case 6: - { - void* offsetRead = ewram11000; - void* offsetWrite = (void*)(VRAM + 0xF000); - - DmaCopy16(3, offsetRead, offsetWrite, 0x1000); - gBerryBlenderData->field_1++; - } + DmaCopy16Defvars(3, ewram11000, (void *)(VRAM + 0xF000), 0x1000); + gBerryBlenderData->field_1++; break; case 7: { u16 i; u16* palStore = (u16*)(ewram13000); - void* offsetRead; - void* offsetWrite; for (i = 0; i < 640; i++) { *(palStore + i) |= 0x100; } - offsetRead = ewram13000; - offsetWrite = (void*)(VRAM + 0x6000); - DmaCopy16(3, offsetRead, offsetWrite, 0x500); + DmaCopy16Defvars(3, ewram13000, (void *)(VRAM + 0x6000), 0x500); LoadPalette(sBlenderOuterPal, 0x80, 0x20); gBerryBlenderData->field_1++; } diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c index 8c585e067..282ad31fb 100644 --- a/src/scene/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -504,18 +504,11 @@ static void CB2_EggHatch_0(void) gMain.state++; break; case 7: - { - u32 offsetRead2, offsetWrite2; - - REG_BG2CNT = 0x4C06; - LoadPalette(gUnknown_0820C9F8, 0x10, 0xA0); - DmaCopyLarge16(3, gUnknown_0820CA98, (void *)(VRAM + 0x4000), 0x1300, 0x1000); - - offsetRead2 = (u32)(&gUnknown_0820F798); - offsetWrite2 = (u32)(VRAM + 0x6000); - DmaCopy16(3, offsetRead2, (void*)(offsetWrite2), 0x1000); - gMain.state++; - } + REG_BG2CNT = 0x4C06; + LoadPalette(gUnknown_0820C9F8, 0x10, 0xA0); + DmaCopyLarge16(3, gUnknown_0820CA98, (void *)(VRAM + 0x4000), 0x1300, 0x1000); + DmaCopy16Defvars(3, gUnknown_0820F798, (void *)(VRAM + 0x6000), 0x1000); + gMain.state++; break; case 8: REG_BG1CNT = 0x501; diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index f7f7fb1cc..e486c65a3 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -1199,8 +1199,6 @@ static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1) static void sub_81433E0(void) { - u32 offsetWrite2, offsetWrite3; - u32 size2, size3; u16 i; REG_DISPCNT = 0; @@ -1222,14 +1220,8 @@ static void sub_81433E0(void) REG_BG3VOFS = 0; DmaFill16Large(3, 0, VRAM, 0x18000, 0x1000); - - offsetWrite2 = OAM; - size2 = OAM_SIZE; - DmaFill32(3, 0, offsetWrite2, size2); - - offsetWrite3 = PLTT; - size3 = PLTT_SIZE; - DmaFill16(3, 0, offsetWrite3, size3); + DmaFill32Defvars(3, 0, OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); LZ77UnCompVram(gHallOfFame_Gfx, (void*)(VRAM)); diff --git a/src/scene/intro.c b/src/scene/intro.c index f7e196133..4da341744 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -1217,7 +1217,6 @@ static void Task_IntroWaitToSetupPart3DoubleFight(u8 taskId) static void Task_IntroLoadPart3Streaks(u8 taskId) { u16 i; - void *vram; intro_reset_and_hide_bgs(); for (i = 0; i < 32; i++) @@ -1226,8 +1225,7 @@ static void Task_IntroLoadPart3Streaks(u8 taskId) ewram0arr[1][i] = 17; ewram0arr[2][i] = 34; } - vram = (void *)VRAM; - DmaCopy16(3, gSharedMem, vram, 0x60); + DmaCopy16Defvars(3, gSharedMem, (void *)(VRAM + 0x0), 0x60); for (i = 0; i < 0x280; i++) ((u16 *)(VRAM + 0x3000))[i] = 0xF001; for (i = 0; i < 0x80; i++) -- cgit v1.2.3 From 723a50665a6417d971d183187dd9002c27517084 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 23:45:37 -0500 Subject: remove unnecessary padding --- include/pokemon.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 8f1b46387..6e3e15404 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -258,7 +258,6 @@ struct BoxPokemon /*0x13*/ u8 isBadEgg:1; u8 hasSpecies:1; u8 isEgg:1; - u8 unused:5; /*0x14*/ u8 otName[OT_NAME_LENGTH]; /*0x1B*/ u8 markings; /*0x1C*/ u16 checksum; @@ -419,7 +418,6 @@ struct BattleMove u8 target; s8 priority; u8 flags; - u8 pad[3]; }; #define FLAG_MAKES_CONTACT 0x1 -- cgit v1.2.3 From b8b4a11a032d7fb21ae14c5372a266509d2f918b Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 18 Jan 2018 01:12:45 -0500 Subject: formatting --- src/battle/battle_anim.c | 2 +- src/engine/trade.c | 2 +- src/field/start_menu.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index a4540868c..c71c12ce7 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -2417,7 +2417,7 @@ static void LoadMoveBg(u16 bgId) { void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap; - LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); + LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0); DmaCopy32Defvars(3, IsContest() ? EWRAM_14800 : EWRAM_18000, (void *)(VRAM + 0xD000), 0x800); LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000)); diff --git a/src/engine/trade.c b/src/engine/trade.c index c271649c1..bc3daf249 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1462,7 +1462,7 @@ static void sub_8048B0C(u8 a0) gPlttBufferUnfaded[i] = *(gUnknown_08EA02C8 + i); gPlttBufferFaded[i] = *(gUnknown_08EA02C8 + i); } - DmaCopyLarge16(3, gUnknown_08EA0348, (void *)BG_VRAM, 0x1280, 0x1000); + DmaCopyLarge16(3, gUnknown_08EA0348, (void *)BG_VRAM, 0x1280, 0x1000); for (i = 0; i < 0x400; i ++) gUnknown_03004824->unk_00c8.unk_12[i] = gUnknown_08EA15C8[i]; DmaCopy16Defvars(3, gTradeStripesBG2Tilemap, BG_SCREEN_ADDR(6), 0x800); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index db41919be..89cd404e9 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -749,7 +749,7 @@ static bool32 sub_80719FC(u8 *step) ScanlineEffect_Stop(); DmaClear16(3, PLTT, PLTT_SIZE); DmaFill16Large(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); - break; + break; case 1: ResetSpriteData(); ResetTasks(); -- cgit v1.2.3 From 6553903150b6ee262bead5d8c7c5b304bd323fb2 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 18 Jan 2018 18:56:44 -0600 Subject: start labeling field_weather --- include/constants/weather.h | 4 +- include/field_weather.h | 35 ++++--- src/field/coord_event_weather.c | 4 +- src/field/field_weather.c | 193 ++++++++++++++++++-------------------- src/field/field_weather_effects.c | 60 ++++++------ 5 files changed, 149 insertions(+), 147 deletions(-) diff --git a/include/constants/weather.h b/include/constants/weather.h index 946316984..1110be7a2 100644 --- a/include/constants/weather.h +++ b/include/constants/weather.h @@ -12,7 +12,7 @@ #define WEATHER_SANDSTORM 8 #define WEATHER_FOG_2 9 #define WEATHER_FOG_3 10 -#define WEATHER_DARK 11 +#define WEATHER_SHADE 11 #define WEATHER_DROUGHT 12 #define WEATHER_RAIN_HEAVY 13 #define WEATHER_BUBBLES 14 @@ -31,7 +31,7 @@ #define COORD_EVENT_WEATHER_FOG_2 7 #define COORD_EVENT_WEATHER_ASH 8 #define COORD_EVENT_WEATHER_SANDSTORM 9 -#define COORD_EVENT_WEATHER_DARK 10 +#define COORD_EVENT_WEATHER_SHADE 10 #define COORD_EVENT_WEATHER_DROUGHT 11 #define COORD_EVENT_WEATHER_ROUTE119_CYCLE 20 #define COORD_EVENT_WEATHER_ROUTE123_CYCLE 21 diff --git a/include/field_weather.h b/include/field_weather.h index 267650a2a..2c56a5a40 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -29,11 +29,11 @@ struct Weather u8 filler4A0[0x6B6-0x4A0]; s8 unknown_6B6; u8 filler_6B7[0xC0-0xB7]; - s8 unknown_6C0; - s8 unknown_6C1; - u8 unknown_6C2; - u8 unknown_6C3; - u16 unknown_6C4; + s8 gammaIndex; + s8 gammaTargetIndex; + u8 gammaStepDelay; + u8 gammaStepFrameCounter; + u16 fadeDestColor; u8 unknown_6C6; u8 unknown_6C7; u8 unknown_6C8; @@ -128,18 +128,27 @@ void nullsub_38(void); void sub_807CB10(void); void sub_807CC24(void); void sub_807CCAC(void); -u8 sub_807CDC4(void); -u8 sub_807CE24(void); -u8 sub_807CE7C(void); +u8 RainSnowShadeBlend_807CDC4(void); +u8 DroughtBlend_807CE24(void); +u8 Fog1Blend_807CE7C(void); void nullsub_39(void); // ASM -void sub_807CEBC(u8, u8, s8); -//void sub_807D1BC(u8, u8, u8, u8, u16); -void sub_807D1BC(u8 a, u8 a2, s8 c, u8 d, u16 e); -void sub_807D304(s8 a, u8 arg2, u16 c); -void sub_807D424(u8, u16); +void BlendSomething_807CEBC(u8, u8, s8); +//void BlendSomething_807D1BC(u8, u8, u8, u8, u16); +void BlendSomething_807D1BC(u8 a, u8 a2, s8 c, u8 d, u16 e); +void BlendSomething_807D304(s8 a, u8 arg2, u16 c); +void BlendSomething_807D424(u8, u16); // ... + +enum +{ + FADE_FROM_BLACK, + FADE_TO_BLACK, + FADE_FROM_WHITE, + FADE_TO_WHITE, +}; + void fade_screen(u8, u8); // ... void sub_807D78C(u8 tag); diff --git a/src/field/coord_event_weather.c b/src/field/coord_event_weather.c index db4e9c161..60b87fa30 100644 --- a/src/field/coord_event_weather.c +++ b/src/field/coord_event_weather.c @@ -34,7 +34,7 @@ static const struct CoordEventWeather sCoordEventWeatherFuncs[] = { COORD_EVENT_WEATHER_FOG_2, CoordEventWeather_DiagonalFog }, { COORD_EVENT_WEATHER_ASH, CoordEventWeather_Ash }, { COORD_EVENT_WEATHER_SANDSTORM, CoordEventWeather_Sandstorm }, - { COORD_EVENT_WEATHER_DARK, CoordEventWeather_Dark }, + { COORD_EVENT_WEATHER_SHADE, CoordEventWeather_Dark }, { COORD_EVENT_WEATHER_DROUGHT, CoordEventWeather_Drought }, { COORD_EVENT_WEATHER_ROUTE119_CYCLE, CoordEventWeather_Route119Cycle }, { COORD_EVENT_WEATHER_ROUTE123_CYCLE, CoordEventWeather_Route123Cycle }, @@ -87,7 +87,7 @@ static void CoordEventWeather_Sandstorm(void) static void CoordEventWeather_Dark(void) { - SetWeather(WEATHER_DARK); + SetWeather(WEATHER_SHADE); } static void CoordEventWeather_Drought(void) diff --git a/src/field/field_weather.c b/src/field/field_weather.c index b6475d8ff..5f3f93096 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -13,7 +13,7 @@ #include "trig.h" #include "ewram.h" -#define MACRO1(a) ((((a) >> 1) & 0xF) | (((a) >> 2) & 0xF0) | (((a) >> 3) & 0xF00)) +#define MACRO1(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) struct RGBColor { @@ -108,10 +108,10 @@ void Fog1_InitVars(void); void Fog1_Main(void); void Fog1_InitAll(void); bool8 Fog1_Finish(void); -void Weather11_InitVars(void); -void Weather11_Main(void); -void Weather11_InitAll(void); -bool8 Weather11_Finish(void); +void Shade_InitVars(void); +void Shade_Main(void); +void Shade_InitAll(void); +bool8 Shade_Finish(void); void Drought_InitVars(void); void Drought_Main(void); void Drought_InitAll(void); @@ -138,7 +138,7 @@ static const struct WeatherCallbacks sWeatherFuncs[] = {Sandstorm_InitVars, Sandstorm_Main, Sandstorm_InitAll, Sandstorm_Finish}, {Fog2_InitVars, Fog2_Main, Fog2_InitAll, Fog2_Finish}, {Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish}, - {Weather11_InitVars, Weather11_Main, Weather11_InitAll, Weather11_Finish}, + {Shade_InitVars, Shade_Main, Shade_InitAll, Shade_Finish}, {Drought_InitVars, Drought_Main, Drought_InitAll, Drought_Finish}, {HeavyRain_InitVars, Rain_Main, HeavyRain_InitAll, Rain_Finish}, {Bubbles_InitVars, Bubbles_Main, Bubbles_InitAll, Bubbles_Finish}, @@ -152,7 +152,7 @@ void (*const gUnknown_083970B8[])(void) = nullsub_39, }; -const u8 gUnknown_083970C8[] = +const u8 gUnknown_083970C8[32] = { 1, 1, @@ -193,6 +193,7 @@ const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal"); void StartWeather(void) { u8 index; + if (!FuncIsActiveTask(Task_WeatherMain)) { index = AllocSpritePalette(0x1200); @@ -266,7 +267,7 @@ void Task_WeatherMain(u8 taskId) if (!sWeatherFuncs[gWeatherPtr->currWeather].finish()) { sWeatherFuncs[gWeatherPtr->nextWeather].initVars(); - gWeatherPtr->unknown_6C3 = 0; + gWeatherPtr->gammaStepFrameCounter = 0; gWeatherPtr->unknown_6C6 = 0; gWeatherPtr->currWeather = gWeatherPtr->nextWeather; gWeatherPtr->unknown_6D3 = 1; @@ -281,8 +282,8 @@ void Task_WeatherMain(u8 taskId) void None_Init(void) { - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 0; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 0; } void None_Main(void) @@ -315,7 +316,7 @@ void sub_807CB10(void) else v1 = gWeatherPtr->unk460; - for (v2 = 0; (u16)v2 <= 0x1f; v2++) + for (v2 = 0; v2 < 32; v2++) { v4 = v2 << 8; if (v0 == 0) @@ -334,33 +335,27 @@ void sub_807CB10(void) v10 += 0xf; } v11 = v10 >> 4; - if (v2 <= 0xb) + if (v2 < 12) { - for (; v6 <= 0x12; v6++) + for (; v6 < 19; v6++) { v4 += v11; dunno = v4 - v9; if (dunno > 0) - { v4 -= (dunno + ((u16)dunno >> 15)) >> 1; - } v1[v6][v2] = v4 >> 8; if (v1[v6][v2] > 0x1f) - { v1[v6][v2] = 0x1f; - } } } else { - for (; v6 <= 0x12; v6++) + for (; v6 < 19; v6++) { v4 += v11; v1[v6][v2] = v4 >> 8; if (v1[v6][v2] > 0x1f) - { v1[v6][v2] = 0x1f; - } } } } @@ -369,20 +364,20 @@ void sub_807CB10(void) void sub_807CC24(void) { - if (gWeatherPtr->unknown_6C0 == gWeatherPtr->unknown_6C1) + if (gWeatherPtr->gammaIndex == gWeatherPtr->gammaTargetIndex) { gWeatherPtr->unknown_6C6 = 3; } else { - if (++gWeatherPtr->unknown_6C3 >= gWeatherPtr->unknown_6C2) + if (++gWeatherPtr->gammaStepFrameCounter >= gWeatherPtr->gammaStepDelay) { - gWeatherPtr->unknown_6C3 = 0; - if (gWeatherPtr->unknown_6C0 < gWeatherPtr->unknown_6C1) - gWeatherPtr->unknown_6C0++; + gWeatherPtr->gammaStepFrameCounter = 0; + if (gWeatherPtr->gammaIndex < gWeatherPtr->gammaTargetIndex) + gWeatherPtr->gammaIndex++; else - gWeatherPtr->unknown_6C0--; - sub_807CEBC(0, 0x20, gWeatherPtr->unknown_6C0); + gWeatherPtr->gammaIndex--; + BlendSomething_807CEBC(0, 0x20, gWeatherPtr->gammaIndex); } } } @@ -397,24 +392,24 @@ void sub_807CCAC(void) case WEATHER_RAIN_MED: case WEATHER_RAIN_HEAVY: case WEATHER_SNOW: - case WEATHER_DARK: - if (sub_807CDC4() == 0) + case WEATHER_SHADE: + if (RainSnowShadeBlend_807CDC4() == 0) { - gWeatherPtr->unknown_6C0 = 3; + gWeatherPtr->gammaIndex = 3; gWeatherPtr->unknown_6C6 = 3; } break; case WEATHER_DROUGHT: - if (sub_807CE24() == 0) + if (DroughtBlend_807CE24() == 0) { - gWeatherPtr->unknown_6C0 = -6; + gWeatherPtr->gammaIndex = -6; gWeatherPtr->unknown_6C6 = 3; } break; case WEATHER_FOG_1: - if (sub_807CE7C() == 0) + if (Fog1Blend_807CE7C() == 0) { - gWeatherPtr->unknown_6C0 = 0; + gWeatherPtr->gammaIndex = 0; gWeatherPtr->unknown_6C6 = 3; } break; @@ -425,47 +420,47 @@ void sub_807CCAC(void) default: if (!gPaletteFade.active) { - gWeatherPtr->unknown_6C0 = gWeatherPtr->unknown_6C1; + gWeatherPtr->gammaIndex = gWeatherPtr->gammaTargetIndex; gWeatherPtr->unknown_6C6 = 3; } break; } } -u8 sub_807CDC4(void) +u8 RainSnowShadeBlend_807CDC4(void) { if (gWeatherPtr->unknown_6C7 == 0x10) return 0; if (++gWeatherPtr->unknown_6C7 >= 0x10) { - sub_807CEBC(0, 0x20, 3); + BlendSomething_807CEBC(0, 0x20, 3); gWeatherPtr->unknown_6C7 = 0x10; return 0; } - sub_807D1BC(0, 0x20, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->unknown_6C4); + BlendSomething_807D1BC(0, 0x20, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); return 1; } -u8 sub_807CE24(void) +u8 DroughtBlend_807CE24(void) { if (gWeatherPtr->unknown_6C7 == 0x10) return 0; if (++gWeatherPtr->unknown_6C7 >= 0x10) { - sub_807CEBC(0, 0x20, -6); + BlendSomething_807CEBC(0, 0x20, -6); gWeatherPtr->unknown_6C7 = 0x10; return 0; } - sub_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->unknown_6C4); + BlendSomething_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); return 1; } -u8 sub_807CE7C(void) +u8 Fog1Blend_807CE7C(void) { if (gWeatherPtr->unknown_6C7 == 0x10) return 0; ++gWeatherPtr->unknown_6C7; - sub_807D424(0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->unknown_6C4); + BlendSomething_807D424(0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); return 1; } @@ -473,7 +468,7 @@ void nullsub_39(void) { } -void sub_807CEBC(u8 a, u8 b, s8 c) +void BlendSomething_807CEBC(u8 a, u8 b, s8 c) { u16 r4; u16 palOffset; @@ -578,7 +573,7 @@ void sub_807CEBC(u8 a, u8 b, s8 c) } } -void sub_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) +void BlendSomething_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) { u16 palOffset; u16 r4; @@ -625,7 +620,7 @@ void sub_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) } } -void sub_807D304(s8 a, u8 coeff, u16 c) +void BlendSomething_807D304(s8 a, u8 coeff, u16 c) { struct RGBColor color; u8 r_; @@ -681,31 +676,30 @@ void sub_807D304(s8 a, u8 coeff, u16 c) bool8 sub_807D574(u8); -void sub_807D424(u8 a, u16 b) +void BlendSomething_807D424(u8 coeff, u16 blendColor) { struct RGBColor color; - u8 r_; - u8 g_; - u8 b_; - u16 r4; - - BlendPalette(0, 0x100, a, b); - color = *(struct RGBColor *)&b; - r_ = color.r; - g_ = color.g; - b_ = color.b; - - r4 = 16; - while (r4 < 32) + u8 blendR; + u8 blendG; + u8 blendB; + u16 palNum; + + BlendPalette(0, 0x100, coeff, blendColor); + color = *(struct RGBColor *)&blendColor; + blendR = color.r; + blendG = color.g; + blendB = color.b; + + for (palNum = 16; palNum < 32; palNum++) { - if (sub_807D574(r4)) + if (sub_807D574(palNum)) { - u16 r12 = (r4 + 1) * 16; - u16 r6 = r4 * 16; + u16 palEnd = (palNum + 1) * 16; + u16 palOffset = palNum * 16; - while (r6 < r12) + while (palOffset < palEnd) { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[r6]; + struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; u8 r = color.r; u8 g = color.g; u8 b = color.b; @@ -714,19 +708,18 @@ void sub_807D424(u8 a, u16 b) g += ((31 - g) * 3) >> 2; b += ((28 - b) * 3) >> 2; - r += ((r_ - r) * a) >> 4; - g += ((g_ - g) * a) >> 4; - b += ((b_ - b) * a) >> 4; + r += ((blendR - r) * coeff) >> 4; + g += ((blendG - g) * coeff) >> 4; + b += ((blendB - b) * coeff) >> 4; - gPlttBufferFaded[r6] = (b << 10) | (g << 5) | r; - r6++; + gPlttBufferFaded[palOffset] = (b << 10) | (g << 5) | r; + palOffset++; } } else { - BlendPalette(r4 * 16, 16, a, b); + BlendPalette(palNum * 16, 16, coeff, blendColor); } - r4++; } } @@ -755,8 +748,8 @@ void sub_807D5BC(s8 a) { if (gWeatherPtr->unknown_6C6 == 3) { - sub_807CEBC(0, 32, a); - gWeatherPtr->unknown_6C0 = a; + BlendSomething_807CEBC(0, 32, a); + gWeatherPtr->gammaIndex = a; } } @@ -765,37 +758,37 @@ void sub_807D5F0(u8 a, u8 b, u8 c) if (gWeatherPtr->unknown_6C6 == 3) { gWeatherPtr->unknown_6C6 = 0; - gWeatherPtr->unknown_6C0 = a; - gWeatherPtr->unknown_6C1 = b; - gWeatherPtr->unknown_6C3 = 0; - gWeatherPtr->unknown_6C2 = c; + gWeatherPtr->gammaIndex = a; + gWeatherPtr->gammaTargetIndex = b; + gWeatherPtr->gammaStepFrameCounter = 0; + gWeatherPtr->gammaStepDelay = c; sub_807D5BC(a); } } -void fade_screen(u8 a, u8 delay) +void fade_screen(u8 mode, u8 delay) { u32 fadeColor; - u32 r1; - u32 r2; + bool8 fadeTo; + bool8 useWeatherPal; - switch (a) + switch (mode) { - case 0: + case FADE_FROM_BLACK: fadeColor = 0; - r1 = 0; + fadeTo = FALSE; break; - case 2: + case FADE_FROM_WHITE: fadeColor = 0xFFFF; - r1 = 0; + fadeTo = FALSE; break; - case 1: + case FADE_TO_BLACK: fadeColor = 0; - r1 = 1; + fadeTo = TRUE; break; - case 3: + case FADE_TO_WHITE: fadeColor = 0xFFFF; - r1 = 1; + fadeTo = TRUE; break; default: return; @@ -808,26 +801,26 @@ void fade_screen(u8 a, u8 delay) case WEATHER_RAIN_HEAVY: case WEATHER_SNOW: case WEATHER_FOG_1: - case WEATHER_DARK: + case WEATHER_SHADE: case WEATHER_DROUGHT: - r2 = 1; + useWeatherPal = TRUE; break; default: - r2 = 0; + useWeatherPal = FALSE; break; } - if (r1 != 0) + if (fadeTo) { - if (r2 != 0) + if (useWeatherPal) CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); BeginNormalPaletteFade(0xFFFFFFFF, delay, 0, 16, fadeColor); gWeatherPtr->unknown_6C6 = 2; } else { - gWeatherPtr->unknown_6C4 = fadeColor; - if (r2 != 0) + gWeatherPtr->fadeDestColor = fadeColor; + if (useWeatherPal) gWeatherPtr->unknown_6C7 = 0; else BeginNormalPaletteFade(0xFFFFFFFF, delay, 16, 0, fadeColor); @@ -858,7 +851,7 @@ void sub_807D78C(u8 a) sub_807D540(r4); r4 *= 16; for (i = 0; i < 16; i++) - gPlttBufferFaded[r4 + i] = gWeatherPtr->unknown_6C4; + gPlttBufferFaded[r4 + i] = gWeatherPtr->fadeDestColor; } break; case 2: @@ -869,7 +862,7 @@ void sub_807D78C(u8 a) default: if (gWeatherPtr->currWeather != WEATHER_FOG_1) { - sub_807CEBC(r4, 1, gWeatherPtr->unknown_6C0); + BlendSomething_807CEBC(r4, 1, gWeatherPtr->gammaIndex); } else { @@ -882,7 +875,7 @@ void sub_807D78C(u8 a) void sub_807D874(u8 a) { - sub_807CEBC(a, 1, gWeatherPtr->unknown_6C0); + BlendSomething_807CEBC(a, 1, gWeatherPtr->gammaIndex); } u8 unref_sub_807D894(void) diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index 5a59d6c2a..154cd2e12 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -91,8 +91,8 @@ extern void sub_807D5F0(u8 a, u8 b, u8 c); void Clouds_InitVars(void) { - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->initStep = 0; if (gWeatherPtr->cloudSpritesCreated == FALSE) @@ -159,8 +159,8 @@ bool8 Clouds_Finish(void) void Weather2_InitVars(void) { - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; } void Weather2_InitAll(void) @@ -236,8 +236,8 @@ void Drought_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 0; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 0; } void Drought_Main(void); @@ -368,8 +368,8 @@ void LightRain_InitVars(void) gWeatherPtr->unknown_6DB = 8; gWeatherPtr->unknown_6DC = 0; gWeatherPtr->unknown_6D9 = 10; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaStepDelay = 20; SetRainStrengthFromSoundEffect(SE_T_KOAME); } @@ -885,8 +885,8 @@ void Snow_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->unknown_6E5 = 16; gWeatherPtr->unknown_6E0 = 0; } @@ -1074,8 +1074,8 @@ void MedRain_InitVars(void) gWeatherPtr->unknown_6DB = 4; gWeatherPtr->unknown_6DC = 0; gWeatherPtr->unknown_6D9 = 16; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment gWeatherPtr->unknown_6ED = 0; SetRainStrengthFromSoundEffect(SE_T_AME); @@ -1102,8 +1102,8 @@ void HeavyRain_InitVars(void) gWeatherPtr->unknown_6DB = 4; gWeatherPtr->unknown_6DC = 1; gWeatherPtr->unknown_6D9 = 24; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment SetRainStrengthFromSoundEffect(SE_T_OOAME); } @@ -1296,8 +1296,8 @@ void Fog1_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; if (gWeatherPtr->fog1SpritesCreated == 0) { gWeatherPtr->unknown_6F0 = 0; @@ -1446,8 +1446,8 @@ void Ash_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->unknown_6FE = 20; if (!gWeatherPtr->ashSpritesCreated) { @@ -1634,8 +1634,8 @@ void Fog2_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = 0; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->unknown_6F0 = 0; gWeatherPtr->unknown_6F2 = 1; if (gWeatherPtr->fog2SpritesCreated == 0) @@ -1835,8 +1835,8 @@ void Sandstorm_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = 0; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; if (gWeatherPtr->sandstormSprites1Created == 0) { gWeatherPtr->unknown_704 = gWeatherPtr->unknown_708 = 0; @@ -2113,26 +2113,26 @@ void SandstormSpriteCallback3(struct Sprite *sprite) } //------------------------------------------------------------------------------ -// Weather 11 +// Shade //------------------------------------------------------------------------------ -void Weather11_InitVars(void) +void Shade_InitVars(void) { gWeatherPtr->initStep = 0; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaStepDelay = 20; } -void Weather11_InitAll(void) +void Shade_InitAll(void) { - Weather11_InitVars(); + Shade_InitVars(); } -void Weather11_Main(void) +void Shade_Main(void) { } -bool8 Weather11_Finish(void) +bool8 Shade_Finish(void) { return FALSE; } -- cgit v1.2.3 From a0cb6c72b6ba7c1b2d2464f3c1ac04354d5d05de Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 18 Jan 2018 21:18:06 -0500 Subject: shop enum --- include/shop.h | 6 +++--- src/field/shop.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/shop.h b/include/shop.h index 76b68d0e9..80602e26c 100644 --- a/include/shop.h +++ b/include/shop.h @@ -20,9 +20,9 @@ enum // shop options enum { - BUY, - SELL, - EXIT + SHOP_BUY, + SHOP_SELL, + SHOP_EXIT }; struct MartInfo diff --git a/src/field/shop.c b/src/field/shop.c index beed50a41..a228ff92f 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -76,8 +76,8 @@ static const struct MenuAction2 sBuySellQuitMenuActions[] = { MartText_Quit2, Task_HandleShopMenuQuit }, }; -static const u8 gMartBuySellOptionList[] = {BUY, SELL, EXIT}; -static const u8 gMartBuyNoSellOptionList[] = {BUY, EXIT}; +static const u8 gMartBuySellOptionList[] = {SHOP_BUY, SHOP_SELL, SHOP_EXIT}; +static const u8 gMartBuyNoSellOptionList[] = {SHOP_BUY, SHOP_EXIT}; static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, 0xE, 0xE, 0xE, 0x0, 0x0}; -- cgit v1.2.3 From 428f712da678b3f5b9256d85c0e3248cacd8e7c2 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 19 Jan 2018 21:30:16 -0800 Subject: Further document weather --- include/ewram.h | 2 +- include/field_effect.h | 1 - include/field_weather.h | 33 ++- include/global.fieldmap.h | 3 +- src/battle/battle_util.c | 6 +- src/field/decoration.c | 6 +- src/field/field_control_avatar.c | 7 +- src/field/field_effect.c | 6 +- src/field/field_weather.c | 486 ++++++++++++++++++++------------------ src/field/field_weather_effects.c | 12 +- src/field/overworld.c | 6 +- src/scene/cable_car.c | 2 +- 12 files changed, 300 insertions(+), 270 deletions(-) diff --git a/include/ewram.h b/include/ewram.h index 6f42925c1..13e478ff1 100644 --- a/include/ewram.h +++ b/include/ewram.h @@ -8,7 +8,7 @@ extern u8 gSharedMem[]; // regions overlap others but have different definitions. Until some // dupes can be determined to be the same, they will be deliberate // seperated. -#define eWeatherPaletteData (*(struct WeatherPaletteData *)gSharedMem) +#define eDroughtPaletteData (*(struct WeatherPaletteData *)gSharedMem) #define gBattleStruct ((struct BattleStruct *) (gSharedMem + 0x0)) #define ewram0_2 (*(struct Struct2000000 *)(gSharedMem + 0x0)) #define namingScreenData (*(struct NamingScreenData *)(gSharedMem + 0x0)) diff --git a/include/field_effect.h b/include/field_effect.h index bb859074f..4d0e90767 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -103,7 +103,6 @@ void FieldEffectActiveListClear(void); void FieldEffectActiveListAdd(u8 id); void FieldEffectActiveListRemove(u8 id); bool8 FieldEffectActiveListContains(u8 id); -void sub_807DE38(u8 index); void SpriteCB_PokeballGlow(struct Sprite *); void SpriteCB_PokecenterMonitor(struct Sprite *); diff --git a/include/field_weather.h b/include/field_weather.h index 2c56a5a40..15be9229d 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -23,12 +23,8 @@ struct Weather struct Sprite *sandstormSprites2[5]; } s2; } sprites; - u8 unknown_200[2][32]; - u8 filler_240[0x460-0x240]; - u8 unk460[2][32]; - u8 filler4A0[0x6B6-0x4A0]; - s8 unknown_6B6; - u8 filler_6B7[0xC0-0xB7]; + u8 gammaShifts[19][32]; + u8 altGammaShifts[19][32]; s8 gammaIndex; s8 gammaTargetIndex; u8 gammaStepDelay; @@ -47,7 +43,7 @@ struct Weather u8 weatherGfxLoaded; u8 unknown_6D3; u8 unknown_6D4; - u8 unknown_6D5; + u8 altGammaSpritePalIndex; u16 unknown_6D6; u8 unknown_6D8; u8 unknown_6D9; @@ -104,8 +100,8 @@ struct Weather u16 currBlendEVB; u16 targetBlendEVA; u16 targetBlendEVB; - u8 unknown_738; - u8 unknown_739; + u8 blendUpdateCounter; + u8 blendFrameCounter; u8 blendDelay; u8 filler_73B[0x3C-0x3B]; s16 unknown_73C; @@ -113,20 +109,18 @@ struct Weather s16 unknown_740; s16 unknown_742; u8 filler_744[0xD-4]; - s8 unknown_74D; - u8 unknown_74E; + s8 loadDroughtPalsIndex; + u8 loadDroughtPalsOffset; }; void StartWeather(void); -void DoWeatherEffect(u8 effect); +void ChangeWeather(u8 weather); void sub_807C988(u8 effect); void sub_807C9B4(u8 effect); void Task_WeatherInit(u8); void Task_WeatherMain(u8); void sub_807CAE8(void); void nullsub_38(void); -void sub_807CB10(void); -void sub_807CC24(void); void sub_807CCAC(void); u8 RainSnowShadeBlend_807CDC4(void); u8 DroughtBlend_807CE24(void); @@ -135,9 +129,7 @@ void nullsub_39(void); // ASM void BlendSomething_807CEBC(u8, u8, s8); -//void BlendSomething_807D1BC(u8, u8, u8, u8, u16); void BlendSomething_807D1BC(u8 a, u8 a2, s8 c, u8 d, u16 e); -void BlendSomething_807D304(s8 a, u8 arg2, u16 c); void BlendSomething_807D424(u8, u16); // ... @@ -156,8 +148,6 @@ void sub_807D874(u8); // ... void Weather_SetBlendCoeffs(u8, u8); // ... -void sub_807DE68(void); -// ... void PlayRainSoundEffect(void); // ... void SetSav1Weather(u32); @@ -171,6 +161,13 @@ bool8 sub_807D770(void); bool8 sub_807DDFC(void); void SetWeather(u32); void UpdateWeatherPerDay(u16); +void PreservePaletteInWeather(u8 index); +void ResetPreservedPalettesInWeather(void); +extern void ResetDroughtWeatherPaletteLoading(void); +void ResetDroughtWeatherPaletteLoading(void); +bool8 LoadDroughtWeatherPalettes(void); +u8 GetCurrentWeather(void); + extern struct Weather gWeather; diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index a828cf131..30047c677 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -101,8 +101,7 @@ struct WarpEvent struct CoordEvent { s16 x, y; - u8 unk4; - u8 filler_5; + u8 elevation; u16 trigger; u16 index; u8 filler_A[0x2]; diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c index f93664593..87b6952ff 100644 --- a/src/battle/battle_util.c +++ b/src/battle/battle_util.c @@ -4,6 +4,7 @@ #include "data2.h" #include "event_data.h" #include "ewram.h" +#include "field_weather.h" #include "item.h" #include "link.h" #include "pokemon.h" @@ -85,7 +86,6 @@ u8 CountTrailingZeroBits(u32 a); u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 sub_803FC34(u8 bank); u16 sub_803FBFC(u8 a); -u8 weather_get_current(void); void RecordAbilityBattle(u8 bank, u8 ability); void RecordItemBattle(u8 bank, u8 holdEffect); s8 GetPokeFlavourRelation(u32 pid, u8 flavor); @@ -1747,7 +1747,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { case 0xFF: //weather from overworld //_08018586 - switch (weather_get_current()) + switch (GetCurrentWeather()) { case WEATHER_RAIN_LIGHT: case WEATHER_RAIN_MED: @@ -1781,7 +1781,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } if (effect) { - gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current(); + gBattleCommunication[MULTISTRING_CHOOSER] = GetCurrentWeather(); BattleScriptPushCursorAndCallback(BattleScript_OverworldWeatherStarts); } break; diff --git a/src/field/decoration.c b/src/field/decoration.c index e1604cfa1..1cc3bbe06 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -2289,7 +2289,7 @@ void sub_80FF6AC(u8 taskId) gTasks[taskId].data[2] = 2; break; case 2: - if (sub_807D770() == 1) + if (sub_807D770() == TRUE) { gTasks[taskId].data[12] = 0; sub_810065C(taskId); @@ -3222,7 +3222,7 @@ void c1_overworld_prev_quest(u8 taskId) void sub_8100334(u8 taskId) { - if (sub_807D770() == 1) + if (sub_807D770() == TRUE) { gTasks[taskId].func = sub_80FE948; } @@ -3735,7 +3735,7 @@ void sub_8100C88(u8 taskId) gTasks[taskId].data[2] = 3; break; case 3: - if (sub_807D770() == 1) + if (sub_807D770() == TRUE) { gTasks[taskId].data[13] = -1; DisplayItemMessageOnField(taskId, gSecretBaseText_DecorReturned, sub_81010F0, 0); diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index c156df035..bf96c724f 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -767,20 +767,19 @@ static u8 *trigger_activate(struct CoordEvent *coordEvent) return NULL; } -static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16 y, u8 d) +static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) { s32 i; struct CoordEvent *coordEvents = mapHeader->events->coordEvents; u8 coordEventCount = mapHeader->events->coordEventCount; - u8 *script; for (i = 0; i < coordEventCount; i++) { if ((u16)coordEvents[i].x == x && (u16)coordEvents[i].y == y) { - if (coordEvents[i].unk4 == d || coordEvents[i].unk4 == 0) + if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == 0) { - script = trigger_activate(&coordEvents[i]); + u8 *script = trigger_activate(&coordEvents[i]); if (script != NULL) return script; } diff --git a/src/field/field_effect.c b/src/field/field_effect.c index 5ff89574b..a3134552d 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -543,7 +543,7 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority) LoadCompressedObjectPalette(&gMonPaletteTable[species]); GetMonSpriteTemplate_803C56C(species, 3); gUnknown_02024E8C.paletteTag = gMonPaletteTable[0].tag; - sub_807DE38(IndexOfSpritePaletteTag(gMonPaletteTable[0].tag) + 0x10); + PreservePaletteInWeather(IndexOfSpritePaletteTag(gMonPaletteTable[0].tag) + 0x10); return CreateSprite(&gUnknown_02024E8C, x, y, subpriority); } @@ -556,13 +556,13 @@ u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subprio LoadCompressedObjectPalette(spritePalette); GetMonSpriteTemplate_803C56C(species, 3); gUnknown_02024E8C.paletteTag = spritePalette->tag; - sub_807DE38(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10); + PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10); return CreateSprite(&gUnknown_02024E8C, x, y, subpriority); } void FreeResourcesAndDestroySprite(struct Sprite *sprite) { - sub_807DE68(); + ResetPreservedPalettesInWeather(); FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); if (sprite->oam.affineMode != 0) { diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 5f3f93096..2a5c311ab 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -15,6 +15,12 @@ #define MACRO1(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) +enum { + GAMMA_NONE, + GAMMA_NORMAL, + GAMMA_ALT, +}; + struct RGBColor { u16 r:5; @@ -24,7 +30,7 @@ struct RGBColor struct WeatherPaletteData { - u16 data[0][0x1000]; // unknown length + u16 gammaShiftColors[8][0x1000]; // 0x1000 is the number of bytes that make up all palettes. }; struct WeatherCallbacks @@ -36,10 +42,10 @@ struct WeatherCallbacks }; EWRAM_DATA struct Weather gWeather = {0}; -EWRAM_DATA u8 gUnknown_0202FF38[32] = {0}; +EWRAM_DATA u8 gFieldEffectPaletteGammaTypes[32] = {0}; EWRAM_DATA u16 gUnknown_0202FF58 = {0}; -static const u8 *gUnknown_030006DC; +static const u8 *sPaletteGammaTypes; const u8 DroughtPaletteData_0[] = INCBIN_U8("graphics/weather/drought0.bin.lz"); const u8 DroughtPaletteData_1[] = INCBIN_U8("graphics/weather/drought1.bin.lz"); @@ -56,7 +62,7 @@ static const u8 *const sCompressedDroughtPalettes[] = DroughtPaletteData_3, DroughtPaletteData_4, DroughtPaletteData_5, - gSharedMem, + (u8*)eDroughtPaletteData.gammaShiftColors, }; // This is a pointer to gWeather. All code in this file accesses gWeather directly, @@ -65,6 +71,10 @@ static const u8 *const sCompressedDroughtPalettes[] = // this file produces the same result as accessing gWeather directly. struct Weather *const gWeatherPtr = &gWeather; +static bool8 sub_807D574(u8); +static void DroughtBlendSomething_807D304(s8 gammaIndex, u8 blendCoeff, u16 blendColor); +static void BuildGammaShiftTables(void); +static void UpdateGammaShift(void); void None_Init(void); void None_Main(void); bool8 None_Finish(void); @@ -130,7 +140,7 @@ static const struct WeatherCallbacks sWeatherFuncs[] = {None_Init, None_Main, None_Init, None_Finish}, {Clouds_InitVars, Clouds_Main, Clouds_InitAll, Clouds_Finish}, {Weather2_InitVars, Weather2_Main, Weather2_InitAll, Weather2_Finish}, - {LightRain_InitVars, LightRain_Main, LightRain_InitAll, LightRain_Finish}, // light rain + {LightRain_InitVars, LightRain_Main, LightRain_InitAll, LightRain_Finish}, {Snow_InitVars, Snow_Main, Snow_InitAll, Snow_Finish}, {MedRain_InitVars, Rain_Main, MedRain_InitAll, Rain_Finish}, {Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish}, @@ -146,46 +156,50 @@ static const struct WeatherCallbacks sWeatherFuncs[] = void (*const gUnknown_083970B8[])(void) = { - sub_807CC24, + UpdateGammaShift, sub_807CCAC, nullsub_39, nullsub_39, }; -const u8 gUnknown_083970C8[32] = +// This table specifies which of the gamma shift tables should be +// applied to each of the background and sprite palettes. +static const u8 sBasePaletteGammaTypes[32] = { - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 2, - 1, - 2, - 2, - 2, - 2, - 1, - 1, - 1, - 1, - 2, - 1, - 1, - 1, - 1, - 1, + // background palettes + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NONE, + GAMMA_NONE, + // sprite palettes + GAMMA_ALT, + GAMMA_NORMAL, + GAMMA_ALT, + GAMMA_ALT, + GAMMA_ALT, + GAMMA_ALT, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_ALT, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, }; const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal"); @@ -198,8 +212,8 @@ void StartWeather(void) { index = AllocSpritePalette(0x1200); CpuCopy32(gUnknown_083970E8, &gPlttBufferUnfaded[0x100 + index * 16], 32); - sub_807CB10(); - gWeatherPtr->unknown_6D5 = index; + BuildGammaShiftTables(); + gWeatherPtr->altGammaSpritePalIndex = index; gWeatherPtr->unknown_6D4 = AllocSpritePalette(0x1201); gWeatherPtr->rainSpriteCount = 0; gWeatherPtr->unknown_6D8 = 0; @@ -221,33 +235,35 @@ void StartWeather(void) } } -void DoWeatherEffect(u8 effect) +void ChangeWeather(u8 weather) { - if (effect != WEATHER_RAIN_LIGHT && effect != WEATHER_RAIN_MED && effect != WEATHER_RAIN_HEAVY) + if (weather != WEATHER_RAIN_LIGHT && weather != WEATHER_RAIN_MED && weather != WEATHER_RAIN_HEAVY) { PlayRainSoundEffect(); } - if (gWeatherPtr->nextWeather != effect && gWeatherPtr->currWeather == effect) + + if (gWeatherPtr->nextWeather != weather && gWeatherPtr->currWeather == weather) { - sWeatherFuncs[effect].initVars(); + sWeatherFuncs[weather].initVars(); } + gWeatherPtr->unknown_6D3 = 0; - gWeatherPtr->nextWeather = effect; + gWeatherPtr->nextWeather = weather; gWeatherPtr->finishStep = 0; } -void sub_807C988(u8 effect) +void sub_807C988(u8 weather) { PlayRainSoundEffect(); - gWeatherPtr->currWeather = effect; - gWeatherPtr->nextWeather = effect; + gWeatherPtr->currWeather = weather; + gWeatherPtr->nextWeather = weather; } -void sub_807C9B4(u8 effect) +void sub_807C9B4(u8 weather) { PlayRainSoundEffect(); - gWeatherPtr->currWeather = effect; - gWeatherPtr->nextWeather = effect; + gWeatherPtr->currWeather = weather; + gWeatherPtr->nextWeather = weather; gWeatherPtr->unknown_6C8 = 1; } @@ -295,7 +311,10 @@ u8 None_Finish(void) return 0; } -void sub_807CB10(void) +// Builds two tables that contain gamma shifts for palette colors. +// It's unclear why the two tables aren't declared as const arrays, since +// this function always builds the same two tables. +static void BuildGammaShiftTables(void) { u16 v0; u8 (*v1)[32]; @@ -308,13 +327,13 @@ void sub_807CB10(void) u16 v11; s16 dunno; - gUnknown_030006DC = gUnknown_083970C8; + sPaletteGammaTypes = sBasePaletteGammaTypes; for (v0 = 0; v0 <= 1; v0++) { if (v0 == 0) - v1 = gWeatherPtr->unknown_200; + v1 = gWeatherPtr->gammaShifts; else - v1 = gWeatherPtr->unk460; + v1 = gWeatherPtr->altGammaShifts; for (v2 = 0; v2 < 32; v2++) { @@ -362,7 +381,9 @@ void sub_807CB10(void) } } -void sub_807CC24(void) +// When the weather is changing, it gradually updates the palettes +// towards the desired gamma shift. +static void UpdateGammaShift(void) { if (gWeatherPtr->gammaIndex == gWeatherPtr->gammaTargetIndex) { @@ -377,7 +398,7 @@ void sub_807CC24(void) gWeatherPtr->gammaIndex++; else gWeatherPtr->gammaIndex--; - BlendSomething_807CEBC(0, 0x20, gWeatherPtr->gammaIndex); + BlendSomething_807CEBC(0, 32, gWeatherPtr->gammaIndex); } } } @@ -433,11 +454,11 @@ u8 RainSnowShadeBlend_807CDC4(void) return 0; if (++gWeatherPtr->unknown_6C7 >= 0x10) { - BlendSomething_807CEBC(0, 0x20, 3); + BlendSomething_807CEBC(0, 32, 3); gWeatherPtr->unknown_6C7 = 0x10; return 0; } - BlendSomething_807D1BC(0, 0x20, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); + BlendSomething_807D1BC(0, 32, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); return 1; } @@ -447,11 +468,11 @@ u8 DroughtBlend_807CE24(void) return 0; if (++gWeatherPtr->unknown_6C7 >= 0x10) { - BlendSomething_807CEBC(0, 0x20, -6); + BlendSomething_807CEBC(0, 32, -6); gWeatherPtr->unknown_6C7 = 0x10; return 0; } - BlendSomething_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); + DroughtBlendSomething_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); return 1; } @@ -468,23 +489,26 @@ void nullsub_39(void) { } -void BlendSomething_807CEBC(u8 a, u8 b, s8 c) +void BlendSomething_807CEBC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) { - u16 r4; + u16 curPalIndex; u16 palOffset; - u8 *r6; + u8 *gammaTable; u16 i; - if (c > 0) + if (gammaIndex > 0) { - c = c - 1; - palOffset = a * 16; - b += a; - r4 = a; - while (r4 < b) + gammaIndex--; + palOffset = startPalIndex * 16; + numPalettes += startPalIndex; + curPalIndex = startPalIndex; + + // Loop through the speficied palette range and apply necessary gamma shifts to the colors. + while (curPalIndex < numPalettes) { - if (gUnknown_030006DC[r4] == 0) + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { + // No palette change. CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); palOffset += 16; } @@ -492,25 +516,27 @@ void BlendSomething_807CEBC(u8 a, u8 b, s8 c) { u8 r, g, b; - if (gUnknown_030006DC[r4] == 2 || r4 - 16 == gWeatherPtr->unknown_6D5) - r6 = gWeatherPtr->unk460[c]; + if (sPaletteGammaTypes[curPalIndex] == GAMMA_ALT || curPalIndex - 16 == gWeatherPtr->altGammaSpritePalIndex) + gammaTable = gWeatherPtr->altGammaShifts[gammaIndex]; else - r6 = gWeatherPtr->unknown_200[c]; - if (r4 == 16 || r4 > 0x1B) + gammaTable = gWeatherPtr->gammaShifts[gammaIndex]; + + if (curPalIndex == 16 || curPalIndex > 27) { for (i = 0; i < 16; i++) { - if (gPlttBufferUnfaded[palOffset] == 0x2D9F) + if (gPlttBufferUnfaded[palOffset] == RGB(31, 12, 11)) { + // Skip gamma shift for this specific color. (Why?) palOffset++; } else { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; - - r = r6[color.r]; - g = r6[color.g]; - b = r6[color.b]; + // Apply gamma shift to the original color. + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + r = gammaTable[baseColor.r]; + g = gammaTable[baseColor.g]; + b = gammaTable[baseColor.b]; gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; } } @@ -519,39 +545,45 @@ void BlendSomething_807CEBC(u8 a, u8 b, s8 c) { for (i = 0; i < 16; i++) { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; - - r = r6[color.r]; - g = r6[color.g]; - b = r6[color.b]; + // Apply gamma shift to the original color. + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + r = gammaTable[baseColor.r]; + g = gammaTable[baseColor.g]; + b = gammaTable[baseColor.b]; gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; } } } - r4++; + + curPalIndex++; } } - else if (c < 0) + else if (gammaIndex < 0) { - c = -c - 1; - palOffset = a * 16; - b += a; - r4 = a; - while (r4 < b) + // A negative gammIndex value means that the blending will come from the special Drought weather's palette tables. + gammaIndex = -gammaIndex - 1; + palOffset = startPalIndex * 16; + numPalettes += startPalIndex; + curPalIndex = startPalIndex; + + while (curPalIndex < numPalettes) { - if (gUnknown_030006DC[r4] == 0) + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { + // No palette change. CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); palOffset += 16; } else { - if (r4 == 16 || r4 > 0x1B) + if (curPalIndex == 16 || curPalIndex > 27) { for (i = 0; i < 16; i++) { - if (gPlttBufferUnfaded[palOffset] != 0x2D9F) - gPlttBufferFaded[palOffset] = eWeatherPaletteData.data[c][MACRO1(gPlttBufferUnfaded[palOffset])]; + // Skip gamma shift for this specific color. (Why?) + if (gPlttBufferUnfaded[palOffset] != RGB(31, 12, 11)) + gPlttBufferFaded[palOffset] = eDroughtPaletteData.gammaShiftColors[gammaIndex][MACRO1(gPlttBufferUnfaded[palOffset])]; + palOffset++; } } @@ -559,93 +591,100 @@ void BlendSomething_807CEBC(u8 a, u8 b, s8 c) { for (i = 0; i < 16; i++) { - gPlttBufferFaded[palOffset] = eWeatherPaletteData.data[c][MACRO1(gPlttBufferUnfaded[palOffset])]; + gPlttBufferFaded[palOffset] = eDroughtPaletteData.gammaShiftColors[gammaIndex][MACRO1(gPlttBufferUnfaded[palOffset])]; palOffset++; } } } - r4++; + + curPalIndex++; } } else { - CpuFastCopy(gPlttBufferUnfaded + a * 16, gPlttBufferFaded + a * 16, b * 16 * sizeof(u16)); + // No palette blending. + CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); } } -void BlendSomething_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) +void BlendSomething_807D1BC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor) { u16 palOffset; - u16 r4; + u16 curPalIndex; u16 i; - struct RGBColor color = *(struct RGBColor *)&e; - u8 r_ = color.r; - u8 g_ = color.g; - u8 b_ = color.b; - - palOffset = a1 * 16; - a2 += a1; - c = c - 1; - r4 = a1; - while (r4 < a2) + struct RGBColor color = *(struct RGBColor *)&blendColor; + u8 rBlend = color.r; + u8 gBlend = color.g; + u8 bBlend = color.b; + + palOffset = startPalIndex * 16; + numPalettes += startPalIndex; + gammaIndex--; + curPalIndex = startPalIndex; + + while (curPalIndex < numPalettes) { - if (gUnknown_030006DC[r4] == 0) + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { - BlendPalette(palOffset, 16, d, e); + // No gamma shift. Simply blend the colors. + BlendPalette(palOffset, 16, blendCoeff, blendColor); palOffset += 16; } else { - u8 *r5; + u8 *gammaTable; - if (gUnknown_030006DC[r4] == 1) - r5 = gWeatherPtr->unknown_200[c]; + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NORMAL) + gammaTable = gWeatherPtr->gammaShifts[gammaIndex]; else - r5 = gWeatherPtr->unk460[c]; + gammaTable = gWeatherPtr->altGammaShifts[gammaIndex]; for (i = 0; i < 16; i++) { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; - u8 r = r5[color.r]; - u8 g = r5[color.g]; - u8 b = r5[color.b]; - - r += ((r_ - r) * d) >> 4; - g += ((g_ - g) * d) >> 4; - b += ((b_ - b) * d) >> 4; + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + u8 r = gammaTable[baseColor.r]; + u8 g = gammaTable[baseColor.g]; + u8 b = gammaTable[baseColor.b]; + + // Apply gamma shift and target blend color to the original color. + r += ((rBlend - r) * blendCoeff) >> 4; + g += ((gBlend - g) * blendCoeff) >> 4; + b += ((bBlend - b) * blendCoeff) >> 4; gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; } } - r4++; + + curPalIndex++; } } -void BlendSomething_807D304(s8 a, u8 coeff, u16 c) +void DroughtBlendSomething_807D304(s8 gammaIndex, u8 blendCoeff, u16 blendColor) { struct RGBColor color; - u8 r_; - u8 g_; - u8 b_; - u16 r4; + u8 rBlend; + u8 gBlend; + u8 bBlend; + u16 curPalIndex; u16 palOffset; - u16 r12; + u16 i; - a = -a - 1; - color = *(struct RGBColor *)&c; - r_ = color.r; - g_ = color.g; - b_ = color.b; + gammaIndex = -gammaIndex - 1; + color = *(struct RGBColor *)&blendColor; + rBlend = color.r; + gBlend = color.g; + bBlend = color.b; palOffset = 0; - for (r4 = 0; r4 < 32; r4++) + for (curPalIndex = 0; curPalIndex < 32; curPalIndex++) { - if (gUnknown_030006DC[r4] == 0) + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { - BlendPalette(palOffset, 16, coeff, c); + // No gamma shift. Simply blend the colors. + BlendPalette(palOffset, 16, blendCoeff, blendColor); palOffset += 16; } else { - for (r12 = 0; r12 < 16; r12++) + for (i = 0; i < 16; i++) { u32 offset; struct RGBColor color1; @@ -659,14 +698,14 @@ void BlendSomething_807D304(s8 a, u8 coeff, u16 c) b1 = color1.b; offset = ((b1 & 0x1E) << 7) | ((g1 & 0x1E) << 3) | ((r1 & 0x1E) >> 1); - color2 = *(struct RGBColor *)&eWeatherPaletteData.data[a][offset]; + color2 = *(struct RGBColor *)&eDroughtPaletteData.gammaShiftColors[gammaIndex][offset]; r2 = color2.r; g2 = color2.g; b2 = color2.b; - r2 += ((r_ - r2) * coeff) >> 4; - g2 += ((g_ - g2) * coeff) >> 4; - b2 += ((b_ - b2) * coeff) >> 4; + r2 += ((rBlend - r2) * blendCoeff) >> 4; + g2 += ((gBlend - g2) * blendCoeff) >> 4; + b2 += ((bBlend - b2) * blendCoeff) >> 4; gPlttBufferFaded[palOffset++] = (b2 << 10) | (g2 << 5) | r2; } @@ -674,28 +713,26 @@ void BlendSomething_807D304(s8 a, u8 coeff, u16 c) } } -bool8 sub_807D574(u8); - -void BlendSomething_807D424(u8 coeff, u16 blendColor) +void BlendSomething_807D424(u8 blendCoeff, u16 blendColor) { struct RGBColor color; - u8 blendR; - u8 blendG; - u8 blendB; - u16 palNum; + u8 rBlend; + u8 gBlend; + u8 bBlend; + u16 curPalIndex; - BlendPalette(0, 0x100, coeff, blendColor); + BlendPalette(0, 0x100, blendCoeff, blendColor); color = *(struct RGBColor *)&blendColor; - blendR = color.r; - blendG = color.g; - blendB = color.b; + rBlend = color.r; + gBlend = color.g; + bBlend = color.b; - for (palNum = 16; palNum < 32; palNum++) + for (curPalIndex = 16; curPalIndex < 32; curPalIndex++) { - if (sub_807D574(palNum)) + if (sub_807D574(curPalIndex)) { - u16 palEnd = (palNum + 1) * 16; - u16 palOffset = palNum * 16; + u16 palEnd = (curPalIndex + 1) * 16; + u16 palOffset = curPalIndex * 16; while (palOffset < palEnd) { @@ -708,9 +745,9 @@ void BlendSomething_807D424(u8 coeff, u16 blendColor) g += ((31 - g) * 3) >> 2; b += ((28 - b) * 3) >> 2; - r += ((blendR - r) * coeff) >> 4; - g += ((blendG - g) * coeff) >> 4; - b += ((blendB - b) * coeff) >> 4; + r += ((rBlend - r) * blendCoeff) >> 4; + g += ((gBlend - g) * blendCoeff) >> 4; + b += ((bBlend - b) * blendCoeff) >> 4; gPlttBufferFaded[palOffset] = (b << 10) | (g << 5) | r; palOffset++; @@ -718,51 +755,52 @@ void BlendSomething_807D424(u8 coeff, u16 blendColor) } else { - BlendPalette(palNum * 16, 16, coeff, blendColor); + BlendPalette(curPalIndex * 16, 16, blendCoeff, blendColor); } } } -void sub_807D540(u8 a) +void sub_807D540(u8 paletteIndex) { if (gWeatherPtr->unknown_6FA < 6) { - gWeatherPtr->unknown_6F4[gWeatherPtr->unknown_6FA] = a; + gWeatherPtr->unknown_6F4[gWeatherPtr->unknown_6FA] = paletteIndex; gWeatherPtr->unknown_6FA++; } } -bool8 sub_807D574(u8 a) +bool8 sub_807D574(u8 paletteIndex) { u16 i; for (i = 0; i < gWeatherPtr->unknown_6FA; i++) { - if (gWeatherPtr->unknown_6F4[i] == a) + if (gWeatherPtr->unknown_6F4[i] == paletteIndex) return TRUE; } + return FALSE; } -void sub_807D5BC(s8 a) +void sub_807D5BC(s8 gammaIndex) { if (gWeatherPtr->unknown_6C6 == 3) { - BlendSomething_807CEBC(0, 32, a); - gWeatherPtr->gammaIndex = a; + BlendSomething_807CEBC(0, 32, gammaIndex); + gWeatherPtr->gammaIndex = gammaIndex; } } -void sub_807D5F0(u8 a, u8 b, u8 c) +void sub_807D5F0(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay) { if (gWeatherPtr->unknown_6C6 == 3) { gWeatherPtr->unknown_6C6 = 0; - gWeatherPtr->gammaIndex = a; - gWeatherPtr->gammaTargetIndex = b; + gWeatherPtr->gammaIndex = gammaIndex; + gWeatherPtr->gammaTargetIndex = gammaTargetIndex; gWeatherPtr->gammaStepFrameCounter = 0; - gWeatherPtr->gammaStepDelay = c; - sub_807D5BC(a); + gWeatherPtr->gammaStepDelay = gammaStepDelay; + sub_807D5BC(gammaIndex); } } @@ -837,9 +875,9 @@ bool8 sub_807D770(void) return (gWeatherPtr->unknown_6C6 != 1); } -void sub_807D78C(u8 a) +void sub_807D78C(u8 spritePaletteIndex) { - u16 r4 = 16 + a; + u16 paletteIndex = 16 + spritePaletteIndex; u16 i; switch (gWeatherPtr->unknown_6C6) @@ -848,34 +886,34 @@ void sub_807D78C(u8 a) if (gWeatherPtr->unknown_6CA != 0) { if (gWeatherPtr->currWeather == WEATHER_FOG_1) - sub_807D540(r4); - r4 *= 16; + sub_807D540(paletteIndex); + paletteIndex *= 16; for (i = 0; i < 16; i++) - gPlttBufferFaded[r4 + i] = gWeatherPtr->fadeDestColor; + gPlttBufferFaded[paletteIndex + i] = gWeatherPtr->fadeDestColor; } break; case 2: - r4 *= 16; - CpuFastCopy(gPlttBufferFaded + r4, gPlttBufferUnfaded + r4, 32); - BlendPalette(r4, 16, gPaletteFade.y, gPaletteFade.blendColor); + paletteIndex *= 16; + CpuFastCopy(gPlttBufferFaded + paletteIndex, gPlttBufferUnfaded + paletteIndex, 32); + BlendPalette(paletteIndex, 16, gPaletteFade.y, gPaletteFade.blendColor); break; default: if (gWeatherPtr->currWeather != WEATHER_FOG_1) { - BlendSomething_807CEBC(r4, 1, gWeatherPtr->gammaIndex); + BlendSomething_807CEBC(paletteIndex, 1, gWeatherPtr->gammaIndex); } else { - r4 *= 16; - BlendPalette(r4, 16, 12, 0x73FC); + paletteIndex *= 16; + BlendPalette(paletteIndex, 16, 12, 0x73FC); } break; } } -void sub_807D874(u8 a) +void sub_807D874(u8 paletteIndex) { - BlendSomething_807CEBC(a, 1, gWeatherPtr->gammaIndex); + BlendSomething_807CEBC(paletteIndex, 1, gWeatherPtr->gammaIndex); } u8 unref_sub_807D894(void) @@ -892,54 +930,54 @@ void sub_807D8C0(const u16 *palette) sub_807D78C(gWeatherPtr->unknown_6D4); } -void sub_807D8F0(u8 *a, u8 *b) +static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *b) { - u8 r4 = *a; + u8 gammaIndex = *gammaIndexPtr; u16 i; - if (r4 < 7) + if (gammaIndex < 7) { - r4--; - LZ77UnCompWram(sCompressedDroughtPalettes[r4], eWeatherPaletteData.data[r4]); - if (r4 == 0) + gammaIndex--; + LZ77UnCompWram(sCompressedDroughtPalettes[gammaIndex], eDroughtPaletteData.gammaShiftColors[gammaIndex]); + if (gammaIndex == 0) { - eWeatherPaletteData.data[r4][0] = 0x421; + eDroughtPaletteData.gammaShiftColors[gammaIndex][0] = RGB(1, 1, 1); for (i = 1; i < 0x1000; i++) - eWeatherPaletteData.data[r4][i] += eWeatherPaletteData.data[r4][i - 1]; + eDroughtPaletteData.gammaShiftColors[gammaIndex][i] += eDroughtPaletteData.gammaShiftColors[gammaIndex][i - 1]; } else { for (i = 0; i < 0x1000; i++) - eWeatherPaletteData.data[r4][i] += eWeatherPaletteData.data[r4 - 1][i]; + eDroughtPaletteData.gammaShiftColors[gammaIndex][i] += eDroughtPaletteData.gammaShiftColors[gammaIndex - 1][i]; } - if (++(*a) == 7) + if (++(*gammaIndexPtr) == 7) { - *a = 32; + *gammaIndexPtr = 32; *b = 32; } } } -void sub_807D9A8(void) +void ResetDroughtWeatherPaletteLoading(void) { - gWeatherPtr->unknown_74D = 1; - gWeatherPtr->unknown_74E = 1; + gWeatherPtr->loadDroughtPalsIndex = 1; + gWeatherPtr->loadDroughtPalsOffset = 1; } -bool8 sub_807D9C8(void) +bool8 LoadDroughtWeatherPalettes(void) { - if (gWeatherPtr->unknown_74D < 32) + if (gWeatherPtr->loadDroughtPalsIndex < 32) { - sub_807D8F0(&gWeatherPtr->unknown_74D, &gWeatherPtr->unknown_74E); - if (gWeatherPtr->unknown_74D < 32) + LoadDroughtWeatherPalette(&gWeatherPtr->loadDroughtPalsIndex, &gWeatherPtr->loadDroughtPalsOffset); + if (gWeatherPtr->loadDroughtPalsIndex < 32) return TRUE; } return FALSE; } -void sub_807DA04(s8 a) +void sub_807DA04(s8 gammaIndex) { - sub_807D5BC(-a - 1); + sub_807D5BC(-gammaIndex - 1); } void sub_807DA14(void) @@ -1001,8 +1039,8 @@ void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay) gWeatherPtr->targetBlendEVA = eva; gWeatherPtr->targetBlendEVB = evb; gWeatherPtr->blendDelay = delay; - gWeatherPtr->unknown_739 = 0; - gWeatherPtr->unknown_738 = 0; + gWeatherPtr->blendFrameCounter = 0; + gWeatherPtr->blendUpdateCounter = 0; } bool8 Weather_UpdateBlend(void) @@ -1011,13 +1049,13 @@ bool8 Weather_UpdateBlend(void) && gWeatherPtr->currBlendEVB == gWeatherPtr->targetBlendEVB) return TRUE; - if (++gWeatherPtr->unknown_739 > gWeatherPtr->blendDelay) + if (++gWeatherPtr->blendFrameCounter > gWeatherPtr->blendDelay) { - gWeatherPtr->unknown_739 = 0; - gWeatherPtr->unknown_738++; + gWeatherPtr->blendFrameCounter = 0; + gWeatherPtr->blendUpdateCounter++; // Update currBlendEVA and currBlendEVB on alternate frames - if (gWeatherPtr->unknown_738 & 1) + if (gWeatherPtr->blendUpdateCounter & 1) { if (gWeatherPtr->currBlendEVA < gWeatherPtr->targetBlendEVA) gWeatherPtr->currBlendEVA++; @@ -1079,7 +1117,7 @@ void unref_sub_807DCB4(u8 a) } } -u8 weather_get_current(void) +u8 GetCurrentWeather(void) { return gWeatherPtr->currWeather; } @@ -1141,14 +1179,14 @@ void unref_sub_807DE24(void) gWeatherPtr->unknown_6C6 = 3; } -void sub_807DE38(u8 a) +void PreservePaletteInWeather(u8 preservedPalIndex) { - CpuCopy16(gUnknown_083970C8, gUnknown_0202FF38, 32); - gUnknown_0202FF38[a] = 0; - gUnknown_030006DC = gUnknown_0202FF38; + CpuCopy16(sBasePaletteGammaTypes, gFieldEffectPaletteGammaTypes, 32); + gFieldEffectPaletteGammaTypes[preservedPalIndex] = GAMMA_NONE; + sPaletteGammaTypes = gFieldEffectPaletteGammaTypes; } -void sub_807DE68(void) +void ResetPreservedPalettesInWeather(void) { - gUnknown_030006DC = gUnknown_083970C8; + sPaletteGammaTypes = sBasePaletteGammaTypes; } diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index 4ffa171e8..0fee26b89 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -74,10 +74,8 @@ static const struct SpriteTemplate sCloudSpriteTemplate = .callback = sub_807E0F4, }; -extern void sub_807D5BC(s8 a); +extern void sub_807D5BC(s8 gammaIndex); extern void sub_807D8C0(const u16 *palette); -extern void sub_807D9A8(void); -extern bool8 sub_807D9C8(void); extern void sub_807DA14(void); extern void sub_807DA4C(void); extern void Weather_SetTargetBlendCoeffs(u8 a, u8 b, int c); @@ -258,11 +256,11 @@ void Drought_Main(void) gWeatherPtr->initStep++; break; case 1: - sub_807D9A8(); + ResetDroughtWeatherPaletteLoading(); gWeatherPtr->initStep++; break; case 2: - if (sub_807D9C8() == FALSE) + if (LoadDroughtWeatherPalettes() == FALSE) gWeatherPtr->initStep++; break; case 3: @@ -2322,7 +2320,7 @@ void SetSav1WeatherFromCurrMapHeader(void) void SetWeather(u32 weather) { SetSav1Weather(weather); - DoWeatherEffect(GetSav1Weather()); + ChangeWeather(GetSav1Weather()); } void SetWeather_Unused(u32 weather) @@ -2333,7 +2331,7 @@ void SetWeather_Unused(u32 weather) void DoCurrentWeather(void) { - DoWeatherEffect(GetSav1Weather()); + ChangeWeather(GetSav1Weather()); } void sub_8080750(void) diff --git a/src/field/overworld.c b/src/field/overworld.c index a6d34e103..fc313693a 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -590,7 +590,7 @@ bool8 sub_80538D0(u16 x, u16 y) void sub_80538F0(u8 mapGroup, u8 mapNum) { - s32 i; + s32 paletteIndex; Overworld_SetWarpDestination(mapGroup, mapNum, -1, -1, -1); sub_8053F0C(); @@ -611,8 +611,8 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) sub_8056D38(gMapHeader.mapData); apply_map_tileset2_palette(gMapHeader.mapData); - for (i = 6; i < 12; i++) - sub_807D874(i); + for (paletteIndex = 6; paletteIndex < 12; paletteIndex++) + sub_807D874(paletteIndex); sub_8072ED0(); UpdateLocationHistoryForRoamer(); diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index d8e099130..8b4a1bb28 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -357,7 +357,7 @@ static void sub_8123878(u8 taskId) case 0: if (sCableCarPtr->unk_0006 == sCableCarPtr->unk_0004) { - DoWeatherEffect(sCableCarPtr->unk_0002); + ChangeWeather(sCableCarPtr->unk_0002); sCableCarPtr->unk_0001 = 1; } break; -- cgit v1.2.3 From 584a68eb9d7a7c9cfa8e8ee1873ebe495f4fdec7 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 20 Jan 2018 16:02:30 -0600 Subject: use INCLUDE to include EWRAM and COMMON ld scripts --- ld_script.sed | 10 ---------- ld_script.txt | 4 ++-- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/ld_script.sed b/ld_script.sed index b91542b6f..76b18c301 100644 --- a/ld_script.sed +++ b/ld_script.sed @@ -1,14 +1,4 @@ -// { - r sym_ewram.ld - d -} - // { r sym_bss.ld d } - -// { - r sym_common.ld - d -} diff --git a/ld_script.txt b/ld_script.txt index 82ba46b9c..18de179bc 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -9,7 +9,7 @@ SECTIONS { ewram (NOLOAD) : ALIGN(4) { - + INCLUDE "sym_ewram.ld" . = 0x40000; } @@ -26,7 +26,7 @@ SECTIONS { src/libs/m4a_2.o(.bss.code); /* COMMON starts at 0x3001760 */ - + INCLUDE "sym_common.ld" tools/agbcc/lib/libc.a:sbrkr.o(COMMON); end = .; . = 0x8000; -- cgit v1.2.3 From 003ed9293b2c51f0481ed31f0e0459cbecbf757e Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 20 Jan 2018 14:17:03 -0800 Subject: More documentation of field_weather --- asm/pokemon_storage_system.s | 4 +- include/decoration.h | 2 +- include/field_weather.h | 49 ++++---- src/battle/battle_transition.c | 4 +- src/engine/cable_club.c | 4 +- src/engine/time_events.c | 2 +- src/field/choose_party.c | 2 +- src/field/decoration.c | 20 +-- src/field/field_effect.c | 12 +- src/field/field_effect_helpers.c | 4 +- src/field/field_fadetransition.c | 14 +-- src/field/field_weather.c | 259 +++++++++++++++++++++----------------- src/field/field_weather_effects.c | 11 +- src/field/item_menu.c | 4 +- src/field/item_use.c | 2 +- src/field/overworld.c | 2 +- src/field/player_pc.c | 12 +- src/field/scrcmd.c | 4 +- src/field/secret_base.c | 8 +- src/field/shop.c | 6 +- src/field/start_menu.c | 2 +- src/pokemon/pokemon_menu.c | 2 +- src/scene/cable_car.c | 7 +- 23 files changed, 229 insertions(+), 207 deletions(-) diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 2ac873fcd..5b5dfbdd5 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -593,7 +593,7 @@ _08095EF4: .align 2, 0 _08095F18: .4byte gUnknown_083B600C _08095F1C: - bl sub_807D770 + bl IsWeatherNotFadingIn lsls r0, 24 cmp r0, 0 bne _08095F28 @@ -732,7 +732,7 @@ _08096030: .4byte gPCText_OnlyOne _08096034: movs r0, 0x1 movs r1, 0 - bl fade_screen + bl FadeScreen movs r0, 0x4 strh r0, [r4, 0x8] b _080960F4 diff --git a/include/decoration.h b/include/decoration.h index 74ca47a3a..c38bd1bcb 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -160,7 +160,7 @@ extern const struct YesNoFuncTable gUnknown_083ECAA0; extern u8 sub_8134194(u8); // src/decoration_inventory extern bool8 sub_81341D4(void); // src/decoration_inventory extern void sub_8134104(u8); // src/decoration_inventory -extern bool8 sub_807D770(void); +extern bool8 IsWeatherNotFadingIn(void); extern void sub_8109DAC(u8); // src/trader extern void ReshowPlayerPC(u8); // src/player_pc void Task_SecretBasePC_Decoration(u8); diff --git a/include/field_weather.h b/include/field_weather.h index 15be9229d..0bdebf747 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -1,7 +1,15 @@ #ifndef GUARD_WEATHER_H #define GUARD_WEATHER_H -struct Sprite; +#include "sprite.h" + +// Controls how the weather should be changing the screen palettes. +enum { + WEATHER_PAL_STATE_CHANGING_WEATHER, + WEATHER_PAL_STATE_SCREEN_FADING_IN, + WEATHER_PAL_STATE_SCREEN_FADING_OUT, + WEATHER_PAL_STATE_IDLE, +}; struct Weather { @@ -30,10 +38,10 @@ struct Weather u8 gammaStepDelay; u8 gammaStepFrameCounter; u16 fadeDestColor; - u8 unknown_6C6; - u8 unknown_6C7; - u8 unknown_6C8; - u8 unknown_6C9; + u8 palProcessingState; + u8 fadeScreenCounter; + bool8 readyForInit; + u8 taskId; u8 unknown_6CA; u8 unknown_6CB; u16 initStep; @@ -41,8 +49,8 @@ struct Weather u8 currWeather; u8 nextWeather; u8 weatherGfxLoaded; - u8 unknown_6D3; - u8 unknown_6D4; + bool8 weatherChangeComplete; + u8 weatherPicSpritePalIndex; u8 altGammaSpritePalIndex; u16 unknown_6D6; u8 unknown_6D8; @@ -66,8 +74,8 @@ struct Weather u16 fog1ScrollPosX; u16 unknown_6F0; u16 unknown_6F2; - u8 unknown_6F4[6]; - u8 unknown_6FA; + u8 lightenedFogSpritePals[6]; + u8 lightenedFogSpritePalsCount; u8 fog1SpritesCreated; u16 unknown_6FC; u16 unknown_6FE; @@ -121,17 +129,7 @@ void Task_WeatherInit(u8); void Task_WeatherMain(u8); void sub_807CAE8(void); void nullsub_38(void); -void sub_807CCAC(void); -u8 RainSnowShadeBlend_807CDC4(void); -u8 DroughtBlend_807CE24(void); -u8 Fog1Blend_807CE7C(void); -void nullsub_39(void); - -// ASM -void BlendSomething_807CEBC(u8, u8, s8); -void BlendSomething_807D1BC(u8 a, u8 a2, s8 c, u8 d, u16 e); -void BlendSomething_807D424(u8, u16); -// ... +void SetWeatherScreenFadeOut(void); enum { @@ -141,10 +139,10 @@ enum FADE_TO_WHITE, }; -void fade_screen(u8, u8); +void FadeScreen(u8, u8); // ... -void sub_807D78C(u8 tag); -void sub_807D874(u8); +void UpdateSpritePaletteWithWeather(u8 tag); +void ApplyWeatherGammaShiftToPal(u8); // ... void Weather_SetBlendCoeffs(u8, u8); // ... @@ -157,8 +155,8 @@ void SetSav1WeatherFromCurrMapHeader(void); void DoCurrentWeather(void); void sub_8080750(); -bool8 sub_807D770(void); -bool8 sub_807DDFC(void); +bool8 IsWeatherNotFadingIn(void); +bool8 IsWeatherChangeComplete(void); void SetWeather(u32); void UpdateWeatherPerDay(u16); void PreservePaletteInWeather(u8 index); @@ -167,6 +165,7 @@ extern void ResetDroughtWeatherPaletteLoading(void); void ResetDroughtWeatherPaletteLoading(void); bool8 LoadDroughtWeatherPalettes(void); u8 GetCurrentWeather(void); +void LoadCustomWeatherSpritePalette(const u16 *palette); extern struct Weather gWeather; diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index f7cdc0694..a94974b27 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -6,6 +6,7 @@ #include "palette.h" #include "trig.h" #include "field_effect.h" +#include "field_weather.h" #include "random.h" #include "sprite.h" #include "sound.h" @@ -15,7 +16,6 @@ #include "ewram.h" #include "scanline_effect.h" -void sub_807DE10(void); void ScanlineEffect_Clear(void); extern const struct OamData gFieldOamData_32x32; @@ -567,7 +567,7 @@ static void Task_BattleTransitionMain(u8 taskID) static bool8 Transition_Phase1(struct Task* task) { - sub_807DE10(); + SetWeatherScreenFadeOut(); CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); if (sPhase1_Tasks[task->tTransitionID] != NULL) { diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 44d832e2b..e7c504c7b 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -676,7 +676,7 @@ static void sub_808382C(u8 taskId) switch (task->data[0]) { case 0: - fade_screen(1, 0); + FadeScreen(1, 0); gLinkType = 0x2211; ClearLinkCallback_2(); task->data[0]++; @@ -812,7 +812,7 @@ static void sub_8083AAC(u8 taskId) { case 0: ScriptContext2_Enable(); - fade_screen(1, 0); + FadeScreen(1, 0); ClearLinkCallback_2(); task->data[0]++; break; diff --git a/src/engine/time_events.c b/src/engine/time_events.c index 3e3054aa3..4bd732788 100644 --- a/src/engine/time_events.c +++ b/src/engine/time_events.c @@ -93,7 +93,7 @@ void UpdateShoalTideFlag(void) static void Task_WaitWeather(u8 taskId) { - if (sub_807DDFC()) + if (IsWeatherChangeComplete()) { EnableBothScriptContexts(); DestroyTask(taskId); diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 3ba04e489..18d26f007 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -930,7 +930,7 @@ void sub_81231AC(void) static void sub_81231C4(u8 taskId) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { DestroyTask(taskId); ScriptContext2_Disable(); diff --git a/src/field/decoration.c b/src/field/decoration.c index 1cc3bbe06..0e7fa5f41 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -2239,7 +2239,7 @@ void sub_80FF5BC(u8 taskId) { if (sub_80FF58C() == TRUE) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_80FF6AC; } else @@ -2289,7 +2289,7 @@ void sub_80FF6AC(u8 taskId) gTasks[taskId].data[2] = 2; break; case 2: - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { gTasks[taskId].data[12] = 0; sub_810065C(taskId); @@ -3193,7 +3193,7 @@ void sub_810026C(u8 taskId) void sub_810028C(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = c1_overworld_prev_quest; } @@ -3222,7 +3222,7 @@ void c1_overworld_prev_quest(u8 taskId) void sub_8100334(u8 taskId) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { gTasks[taskId].func = sub_80FE948; } @@ -3629,7 +3629,7 @@ void sub_8100A0C(u8 taskId) { if (sub_8100D38(taskId) == 1) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_8100E70; } else @@ -3735,7 +3735,7 @@ void sub_8100C88(u8 taskId) gTasks[taskId].data[2] = 3; break; case 3: - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { gTasks[taskId].data[13] = -1; DisplayItemMessageOnField(taskId, gSecretBaseText_DecorReturned, sub_81010F0, 0); @@ -3800,7 +3800,7 @@ void sub_8100E70(u8 taskId) data[2] = 2; break; case 2: - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { data[12] = 1; sub_8100EEC(taskId); @@ -4138,7 +4138,7 @@ void sub_8101518(u8 taskId) void sub_810153C(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_8100C88; } @@ -4157,7 +4157,7 @@ void sub_8101590(u8 taskId) void sub_81015B0(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_81015E0; } @@ -4184,7 +4184,7 @@ void sub_81015E0(u8 taskId) void sub_8101648(u8 taskId) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { gTasks[taskId].func = Task_DecorationPCProcessMenuInput; } diff --git a/src/field/field_effect.c b/src/field/field_effect.c index a3134552d..ad570cf7f 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -407,7 +407,7 @@ void FieldEffectScript_LoadFadedPalette(u8 **script) { struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); LoadSpritePalette(palette); - sub_807D78C(IndexOfSpritePaletteTag(palette->tag)); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); (*script) += 4; } @@ -1091,7 +1091,7 @@ void task00_8084310(u8 taskId) task = &gTasks[taskId]; if (!task->data[0]) { - if (!sub_807D770()) + if (!IsWeatherNotFadingIn()) { return; } @@ -1191,7 +1191,7 @@ bool8 sub_80867AC(struct Task *task) // gUnknown_0839F2CC[0] bool8 sub_8086854(struct Task *task) // gUnknown_0839F2CC[1] { - if (sub_807D770()) + if (IsWeatherNotFadingIn()) { task->data[0]++; } @@ -1813,7 +1813,7 @@ bool8 sub_80874CC(struct Task *task, struct MapObject *mapObject, struct Sprite bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite) { - if (sub_807D770()) + if (IsWeatherNotFadingIn()) { gFieldEffectArguments[0] = mapObject->coords2.x; gFieldEffectArguments[1] = mapObject->coords2.y; @@ -2046,7 +2046,7 @@ void sub_8087A74(u8 taskId) void sub_8087AA4(struct Task *task) { - if (sub_807D770()) + if (IsWeatherNotFadingIn()) { task->data[0]++; task->data[15] = player_get_direction_lower_nybble(); @@ -2199,7 +2199,7 @@ void sub_8087E4C(struct Task *task) { struct Sprite *sprite; s16 centerToCornerVecY; - if (sub_807D770()) + if (IsWeatherNotFadingIn()) { sprite = &gSprites[gPlayerAvatar.spriteId]; centerToCornerVecY = -(sprite->centerToCornerVecY << 1); diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c index 165829a55..93fc62bd5 100644 --- a/src/field/field_effect_helpers.c +++ b/src/field/field_effect_helpers.c @@ -95,7 +95,7 @@ static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum) { pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum); } - sub_807D78C(paletteNum); + UpdateSpritePaletteWithWeather(paletteNum); } } @@ -107,7 +107,7 @@ static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum) if (graphicsInfo->paletteTag2 != 0x11ff) { pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum); - sub_807D78C(paletteNum); + UpdateSpritePaletteWithWeather(paletteNum); } } diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c index 5014e97e3..ad1cd4a59 100644 --- a/src/field/field_fadetransition.c +++ b/src/field/field_fadetransition.c @@ -44,18 +44,18 @@ void pal_fill_for_map_transition(void) switch (fade_type_for_given_maplight_pair(map_light, Overworld_GetMapTypeOfSaveblockLocation())) { case 0: - fade_screen(0, 0); + FadeScreen(0, 0); palette_bg_fill_black(); break; case 1: - fade_screen(2, 0); + FadeScreen(2, 0); palette_bg_fill_white(); } } void pal_fill_black(void) { - fade_screen(0, 0); + FadeScreen(0, 0); palette_bg_fill_black(); } @@ -65,10 +65,10 @@ void fade_8080918(void) switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType)) { case 0: - fade_screen(1, 0); + FadeScreen(1, 0); break; case 1: - fade_screen(3, 0); + FadeScreen(3, 0); } } @@ -366,7 +366,7 @@ bool32 sub_8080E64(void) bool32 sub_8080E70(void) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) return TRUE; else return FALSE; @@ -483,7 +483,7 @@ void sub_8081050(u8 taskId) { case 0: ClearLinkCallback_2(); - fade_screen(1, 0); + FadeScreen(1, 0); sub_8053FF8(); PlaySE(SE_KAIDAN); data[0]++; diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 2a5c311ab..7beb1b440 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -71,10 +71,18 @@ static const u8 *const sCompressedDroughtPalettes[] = // this file produces the same result as accessing gWeather directly. struct Weather *const gWeatherPtr = &gWeather; -static bool8 sub_807D574(u8); -static void DroughtBlendSomething_807D304(s8 gammaIndex, u8 blendCoeff, u16 blendColor); +static bool8 LightenSpritePaletteInFog(u8); static void BuildGammaShiftTables(void); -static void UpdateGammaShift(void); +static void UpdateWeatherGammaShift(void); +static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex); +static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor); +static void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 blendColor); +static void ApplyFogBlend(u8 blendCoeff, u16 blendColor); +static bool8 FadeInScreen_RainShowShade(void); +static bool8 FadeInScreen_Drought(void); +static bool8 FadeInScreen_Fog1(void); +static void FadeInScreenWithWeather(void); +static void DoNothing(void); void None_Init(void); void None_Main(void); bool8 None_Finish(void); @@ -154,12 +162,12 @@ static const struct WeatherCallbacks sWeatherFuncs[] = {Bubbles_InitVars, Bubbles_Main, Bubbles_InitAll, Bubbles_Finish}, }; -void (*const gUnknown_083970B8[])(void) = +void (*const gWeatherPalStateFuncs[])(void) = { - UpdateGammaShift, - sub_807CCAC, - nullsub_39, - nullsub_39, + UpdateWeatherGammaShift, // WEATHER_PAL_STATE_CHANGING_WEATHER + FadeInScreenWithWeather, // WEATHER_PAL_STATE_SCREEN_FADING_IN + DoNothing, // WEATHER_PAL_STATE_SCREEN_FADING_OUT + DoNothing, // WEATHER_PAL_STATE_IDLE }; // This table specifies which of the gamma shift tables should be @@ -214,7 +222,7 @@ void StartWeather(void) CpuCopy32(gUnknown_083970E8, &gPlttBufferUnfaded[0x100 + index * 16], 32); BuildGammaShiftTables(); gWeatherPtr->altGammaSpritePalIndex = index; - gWeatherPtr->unknown_6D4 = AllocSpritePalette(0x1201); + gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(0x1201); gWeatherPtr->rainSpriteCount = 0; gWeatherPtr->unknown_6D8 = 0; gWeatherPtr->cloudSpritesCreated = 0; @@ -225,13 +233,13 @@ void StartWeather(void) gWeatherPtr->sandstormSprites1Created = 0; gWeatherPtr->sandstormSprites2Created = 0; gWeatherPtr->unknown_72E = 0; - gWeatherPtr->unknown_6FA = 0; + gWeatherPtr->lightenedFogSpritePalsCount = 0; Weather_SetBlendCoeffs(16, 0); gWeatherPtr->currWeather = 0; - gWeatherPtr->unknown_6C6 = 3; - gWeatherPtr->unknown_6C8 = 0; - gWeatherPtr->unknown_6D3 = 1; - gWeatherPtr->unknown_6C9 = CreateTask(Task_WeatherInit, 80); + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; + gWeatherPtr->readyForInit = FALSE; + gWeatherPtr->weatherChangeComplete = TRUE; + gWeatherPtr->taskId = CreateTask(Task_WeatherInit, 80); } } @@ -247,7 +255,7 @@ void ChangeWeather(u8 weather) sWeatherFuncs[weather].initVars(); } - gWeatherPtr->unknown_6D3 = 0; + gWeatherPtr->weatherChangeComplete = FALSE; gWeatherPtr->nextWeather = weather; gWeatherPtr->finishStep = 0; } @@ -264,12 +272,14 @@ void sub_807C9B4(u8 weather) PlayRainSoundEffect(); gWeatherPtr->currWeather = weather; gWeatherPtr->nextWeather = weather; - gWeatherPtr->unknown_6C8 = 1; + gWeatherPtr->readyForInit = TRUE; } void Task_WeatherInit(u8 taskId) { - if (gWeatherPtr->unknown_6C8) + // Waits until it's ok to initialize weather. + // When the screen fades in, this is set to TRUE. + if (gWeatherPtr->readyForInit) { sWeatherFuncs[gWeatherPtr->currWeather].initAll(); gTasks[taskId].func = Task_WeatherMain; @@ -282,18 +292,20 @@ void Task_WeatherMain(u8 taskId) { if (!sWeatherFuncs[gWeatherPtr->currWeather].finish()) { + // Finished cleaning up previous weather. Now transition to next weather. sWeatherFuncs[gWeatherPtr->nextWeather].initVars(); gWeatherPtr->gammaStepFrameCounter = 0; - gWeatherPtr->unknown_6C6 = 0; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_CHANGING_WEATHER; gWeatherPtr->currWeather = gWeatherPtr->nextWeather; - gWeatherPtr->unknown_6D3 = 1; + gWeatherPtr->weatherChangeComplete = TRUE; } } else { sWeatherFuncs[gWeatherPtr->currWeather].main(); } - gUnknown_083970B8[gWeatherPtr->unknown_6C6](); + + gWeatherPalStateFuncs[gWeatherPtr->palProcessingState](); } void None_Init(void) @@ -383,11 +395,11 @@ static void BuildGammaShiftTables(void) // When the weather is changing, it gradually updates the palettes // towards the desired gamma shift. -static void UpdateGammaShift(void) +static void UpdateWeatherGammaShift(void) { if (gWeatherPtr->gammaIndex == gWeatherPtr->gammaTargetIndex) { - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } else { @@ -398,15 +410,17 @@ static void UpdateGammaShift(void) gWeatherPtr->gammaIndex++; else gWeatherPtr->gammaIndex--; - BlendSomething_807CEBC(0, 32, gWeatherPtr->gammaIndex); + + ApplyGammaShift(0, 32, gWeatherPtr->gammaIndex); } } } -void sub_807CCAC(void) +static void FadeInScreenWithWeather(void) { if (++gWeatherPtr->unknown_6CB > 1) gWeatherPtr->unknown_6CA = 0; + switch (gWeatherPtr->currWeather) { case WEATHER_RAIN_LIGHT: @@ -414,24 +428,24 @@ void sub_807CCAC(void) case WEATHER_RAIN_HEAVY: case WEATHER_SNOW: case WEATHER_SHADE: - if (RainSnowShadeBlend_807CDC4() == 0) + if (FadeInScreen_RainShowShade() == FALSE) { gWeatherPtr->gammaIndex = 3; - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } break; case WEATHER_DROUGHT: - if (DroughtBlend_807CE24() == 0) + if (FadeInScreen_Drought() == FALSE) { gWeatherPtr->gammaIndex = -6; - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } break; case WEATHER_FOG_1: - if (Fog1Blend_807CE7C() == 0) + if (FadeInScreen_Fog1() == FALSE) { gWeatherPtr->gammaIndex = 0; - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } break; case WEATHER_ASH: @@ -442,54 +456,58 @@ void sub_807CCAC(void) if (!gPaletteFade.active) { gWeatherPtr->gammaIndex = gWeatherPtr->gammaTargetIndex; - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } break; } } -u8 RainSnowShadeBlend_807CDC4(void) +bool8 FadeInScreen_RainShowShade(void) { - if (gWeatherPtr->unknown_6C7 == 0x10) - return 0; - if (++gWeatherPtr->unknown_6C7 >= 0x10) + if (gWeatherPtr->fadeScreenCounter == 16) + return FALSE; + + if (++gWeatherPtr->fadeScreenCounter >= 16) { - BlendSomething_807CEBC(0, 32, 3); - gWeatherPtr->unknown_6C7 = 0x10; - return 0; + ApplyGammaShift(0, 32, 3); + gWeatherPtr->fadeScreenCounter = 16; + return FALSE; } - BlendSomething_807D1BC(0, 32, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); - return 1; + + ApplyGammaShiftWithBlend(0, 32, 3, 16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor); + return TRUE; } -u8 DroughtBlend_807CE24(void) +bool8 FadeInScreen_Drought(void) { - if (gWeatherPtr->unknown_6C7 == 0x10) - return 0; - if (++gWeatherPtr->unknown_6C7 >= 0x10) + if (gWeatherPtr->fadeScreenCounter == 16) + return FALSE; + + if (++gWeatherPtr->fadeScreenCounter >= 16) { - BlendSomething_807CEBC(0, 32, -6); - gWeatherPtr->unknown_6C7 = 0x10; - return 0; + ApplyGammaShift(0, 32, -6); + gWeatherPtr->fadeScreenCounter = 16; + return FALSE; } - DroughtBlendSomething_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); - return 1; -} -u8 Fog1Blend_807CE7C(void) -{ - if (gWeatherPtr->unknown_6C7 == 0x10) - return 0; - ++gWeatherPtr->unknown_6C7; - BlendSomething_807D424(0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); - return 1; + ApplyDroughtGammaShiftWithBlend(-6, 16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor); + return TRUE; } -void nullsub_39(void) +bool8 FadeInScreen_Fog1(void) { + if (gWeatherPtr->fadeScreenCounter == 16) + return FALSE; + + gWeatherPtr->fadeScreenCounter++; + ApplyFogBlend(16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor); + return TRUE; } -void BlendSomething_807CEBC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) +static void DoNothing(void) +{ } + +static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) { u16 curPalIndex; u16 palOffset; @@ -607,7 +625,7 @@ void BlendSomething_807CEBC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) } } -void BlendSomething_807D1BC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor) +static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor) { u16 palOffset; u16 curPalIndex; @@ -658,7 +676,7 @@ void BlendSomething_807D1BC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 } } -void DroughtBlendSomething_807D304(s8 gammaIndex, u8 blendCoeff, u16 blendColor) +void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 blendColor) { struct RGBColor color; u8 rBlend; @@ -713,7 +731,7 @@ void DroughtBlendSomething_807D304(s8 gammaIndex, u8 blendCoeff, u16 blendColor) } } -void BlendSomething_807D424(u8 blendCoeff, u16 blendColor) +void ApplyFogBlend(u8 blendCoeff, u16 blendColor) { struct RGBColor color; u8 rBlend; @@ -729,7 +747,7 @@ void BlendSomething_807D424(u8 blendCoeff, u16 blendColor) for (curPalIndex = 16; curPalIndex < 32; curPalIndex++) { - if (sub_807D574(curPalIndex)) + if (LightenSpritePaletteInFog(curPalIndex)) { u16 palEnd = (curPalIndex + 1) * 16; u16 palOffset = curPalIndex * 16; @@ -760,22 +778,22 @@ void BlendSomething_807D424(u8 blendCoeff, u16 blendColor) } } -void sub_807D540(u8 paletteIndex) +static void MarkFogSpritePalToLighten(u8 paletteIndex) { - if (gWeatherPtr->unknown_6FA < 6) + if (gWeatherPtr->lightenedFogSpritePalsCount < 6) { - gWeatherPtr->unknown_6F4[gWeatherPtr->unknown_6FA] = paletteIndex; - gWeatherPtr->unknown_6FA++; + gWeatherPtr->lightenedFogSpritePals[gWeatherPtr->lightenedFogSpritePalsCount] = paletteIndex; + gWeatherPtr->lightenedFogSpritePalsCount++; } } -bool8 sub_807D574(u8 paletteIndex) +static bool8 LightenSpritePaletteInFog(u8 paletteIndex) { u16 i; - for (i = 0; i < gWeatherPtr->unknown_6FA; i++) + for (i = 0; i < gWeatherPtr->lightenedFogSpritePalsCount; i++) { - if (gWeatherPtr->unknown_6F4[i] == paletteIndex) + if (gWeatherPtr->lightenedFogSpritePals[i] == paletteIndex) return TRUE; } @@ -784,18 +802,18 @@ bool8 sub_807D574(u8 paletteIndex) void sub_807D5BC(s8 gammaIndex) { - if (gWeatherPtr->unknown_6C6 == 3) + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE) { - BlendSomething_807CEBC(0, 32, gammaIndex); + ApplyGammaShift(0, 32, gammaIndex); gWeatherPtr->gammaIndex = gammaIndex; } } void sub_807D5F0(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay) { - if (gWeatherPtr->unknown_6C6 == 3) + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE) { - gWeatherPtr->unknown_6C6 = 0; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_CHANGING_WEATHER; gWeatherPtr->gammaIndex = gammaIndex; gWeatherPtr->gammaTargetIndex = gammaTargetIndex; gWeatherPtr->gammaStepFrameCounter = 0; @@ -804,29 +822,29 @@ void sub_807D5F0(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay) } } -void fade_screen(u8 mode, u8 delay) +void FadeScreen(u8 mode, u8 delay) { u32 fadeColor; - bool8 fadeTo; + bool8 fadeOut; bool8 useWeatherPal; switch (mode) { case FADE_FROM_BLACK: fadeColor = 0; - fadeTo = FALSE; + fadeOut = FALSE; break; case FADE_FROM_WHITE: fadeColor = 0xFFFF; - fadeTo = FALSE; + fadeOut = FALSE; break; case FADE_TO_BLACK: fadeColor = 0; - fadeTo = TRUE; + fadeOut = TRUE; break; case FADE_TO_WHITE: fadeColor = 0xFFFF; - fadeTo = TRUE; + fadeOut = TRUE; break; default: return; @@ -848,59 +866,63 @@ void fade_screen(u8 mode, u8 delay) break; } - if (fadeTo) + if (fadeOut) { if (useWeatherPal) CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + BeginNormalPaletteFade(0xFFFFFFFF, delay, 0, 16, fadeColor); - gWeatherPtr->unknown_6C6 = 2; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT; } else { gWeatherPtr->fadeDestColor = fadeColor; if (useWeatherPal) - gWeatherPtr->unknown_6C7 = 0; + gWeatherPtr->fadeScreenCounter = 0; else BeginNormalPaletteFade(0xFFFFFFFF, delay, 16, 0, fadeColor); - gWeatherPtr->unknown_6C6 = 1; + + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_IN; gWeatherPtr->unknown_6CA = 1; gWeatherPtr->unknown_6CB = 0; Weather_SetBlendCoeffs(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB); - gWeatherPtr->unknown_6C8 = 1; + gWeatherPtr->readyForInit = TRUE; } } -bool8 sub_807D770(void) +bool8 IsWeatherNotFadingIn(void) { - return (gWeatherPtr->unknown_6C6 != 1); + return (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_IN); } -void sub_807D78C(u8 spritePaletteIndex) +void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) { u16 paletteIndex = 16 + spritePaletteIndex; u16 i; - switch (gWeatherPtr->unknown_6C6) + switch (gWeatherPtr->palProcessingState) { - case 1: + case WEATHER_PAL_STATE_SCREEN_FADING_IN: if (gWeatherPtr->unknown_6CA != 0) { if (gWeatherPtr->currWeather == WEATHER_FOG_1) - sub_807D540(paletteIndex); + MarkFogSpritePalToLighten(paletteIndex); paletteIndex *= 16; for (i = 0; i < 16; i++) gPlttBufferFaded[paletteIndex + i] = gWeatherPtr->fadeDestColor; } break; - case 2: + case WEATHER_PAL_STATE_SCREEN_FADING_OUT: paletteIndex *= 16; CpuFastCopy(gPlttBufferFaded + paletteIndex, gPlttBufferUnfaded + paletteIndex, 32); BlendPalette(paletteIndex, 16, gPaletteFade.y, gPaletteFade.blendColor); break; + // WEATHER_PAL_STATE_CHANGING_WEATHER + // WEATHER_PAL_STATE_CHANGING_IDLE default: if (gWeatherPtr->currWeather != WEATHER_FOG_1) { - BlendSomething_807CEBC(paletteIndex, 1, gWeatherPtr->gammaIndex); + ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex); } else { @@ -911,23 +933,23 @@ void sub_807D78C(u8 spritePaletteIndex) } } -void sub_807D874(u8 paletteIndex) +void ApplyWeatherGammaShiftToPal(u8 paletteIndex) { - BlendSomething_807CEBC(paletteIndex, 1, gWeatherPtr->gammaIndex); + ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex); } u8 unref_sub_807D894(void) { - if (gWeatherPtr->unknown_6C6 == 1) + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_SCREEN_FADING_IN) return gWeatherPtr->unknown_6CA; else return 0; } -void sub_807D8C0(const u16 *palette) +void LoadCustomWeatherSpritePalette(const u16 *palette) { - LoadPalette(palette, 0x100 + gWeatherPtr->unknown_6D4 * 16, 32); - sub_807D78C(gWeatherPtr->unknown_6D4); + LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32); + UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); } static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *b) @@ -1085,34 +1107,34 @@ void unref_sub_807DCB4(u8 a) switch (a) { case 1: - SetWeather(1); + SetWeather(WEATHER_CLOUDS); break; case 2: - SetWeather(2); + SetWeather(WEATHER_SUNNY); break; case 3: - SetWeather(3); + SetWeather(WEATHER_RAIN_LIGHT); break; case 4: - SetWeather(4); + SetWeather(WEATHER_SNOW); break; case 5: - SetWeather(5); + SetWeather(WEATHER_RAIN_MED); break; case 6: - SetWeather(6); + SetWeather(WEATHER_FOG_1); break; case 7: - SetWeather(9); + SetWeather(WEATHER_FOG_2); break; case 8: - SetWeather(7); + SetWeather(WEATHER_ASH); break; case 9: - SetWeather(8); + SetWeather(WEATHER_SANDSTORM); break; case 10: - SetWeather(11); + SetWeather(WEATHER_SHADE); break; } } @@ -1122,11 +1144,11 @@ u8 GetCurrentWeather(void) return gWeatherPtr->currWeather; } -void SetRainStrengthFromSoundEffect(u16 sndEff) +void SetRainStrengthFromSoundEffect(u16 soundEffect) { - if (gWeatherPtr->unknown_6C6 != 2) + if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_OUT) { - switch (sndEff) + switch (soundEffect) { case SE_T_KOAME: gWeatherPtr->rainStrength = 0; @@ -1140,7 +1162,8 @@ void SetRainStrengthFromSoundEffect(u16 sndEff) default: return; } - PlaySE(sndEff); + + PlaySE(soundEffect); } } @@ -1164,19 +1187,19 @@ void PlayRainSoundEffect(void) } } -u8 sub_807DDFC(void) +u8 IsWeatherChangeComplete(void) { - return gWeatherPtr->unknown_6D3; + return gWeatherPtr->weatherChangeComplete; } -void sub_807DE10(void) +void SetWeatherScreenFadeOut(void) { - gWeatherPtr->unknown_6C6 = 2; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT; } void unref_sub_807DE24(void) { - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } void PreservePaletteInWeather(u8 preservedPalIndex) diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index 0fee26b89..eff702f8c 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -75,7 +75,6 @@ static const struct SpriteTemplate sCloudSpriteTemplate = }; extern void sub_807D5BC(s8 gammaIndex); -extern void sub_807D8C0(const u16 *palette); extern void sub_807DA14(void); extern void sub_807DA4C(void); extern void Weather_SetTargetBlendCoeffs(u8 a, u8 b, int c); @@ -182,7 +181,7 @@ void CreateCloudSprites(void) if (gWeatherPtr->cloudSpritesCreated == TRUE) return; LoadSpriteSheet(&sCloudSpriteSheet); - sub_807D8C0(gUnknown_08397108); + LoadCustomWeatherSpritePalette(gUnknown_08397108); for (i = 0; i < 3; i++) { u8 spriteId = CreateSprite(&sCloudSpriteTemplate, 0, 0, 0xFF); @@ -252,7 +251,7 @@ void Drought_Main(void) switch (gWeatherPtr->initStep) { case 0: - if (gWeatherPtr->unknown_6C6 != 0) + if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_CHANGING_WEATHER) gWeatherPtr->initStep++; break; case 1: @@ -1137,7 +1136,7 @@ void Rain_Main(void) gWeatherPtr->initStep++; break; case 3: - if (gWeatherPtr->unknown_6C6 == 0) + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_CHANGING_WEATHER) break; gWeatherPtr->initStep = 6; break; @@ -1211,7 +1210,7 @@ void Rain_Main(void) gWeatherPtr->initStep++; break; case 14: - if (gWeatherPtr->unknown_6C6 != 3) + if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_IDLE) break; gWeatherPtr->unknown_6EA = 1; gWeatherPtr->initStep = 4; @@ -2013,7 +2012,7 @@ void CreateSandstormSprites_1(void) if (!gWeatherPtr->sandstormSprites1Created) { LoadSpriteSheet(&sSandstormSpriteSheet); - sub_807D8C0(gUnknown_08397128); + LoadCustomWeatherSpritePalette(gUnknown_08397128); for (i = 0; i < 20; i++) { u8 spriteId = CreateSpriteAtEnd(&sSandstormSpriteTemplate, 0, (i / 5) * 64, 1); diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 6bad9f4d6..959eb09ae 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -47,7 +47,7 @@ extern void sub_808B5B4(); extern u8 sub_80F92F4(); extern void sub_80C9C7C(u8); extern void pal_fill_black(void); -extern bool8 sub_807D770(void); +extern bool8 IsWeatherNotFadingIn(void); extern u8 sub_80F931C(); extern void sub_808A3F8(u8); extern void Shop_FadeReturnToMartMenu(void); @@ -2699,7 +2699,7 @@ void ExecuteItemUseFromBlackPalette(void) static void Task_CallItemUseOnFieldCallback(u8 taskId) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) gFieldItemUseCallback(taskId); } diff --git a/src/field/item_use.c b/src/field/item_use.c index cdad3f840..219ef5080 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -100,7 +100,7 @@ void ItemMenu_ConfirmNormalFade(u8 var) void ItemMenu_ConfirmComplexFade(u8 var) { ExecuteSwitchToOverworldFromItemUse(var); - fade_screen(1, 0); + FadeScreen(1, 0); } void SetUpItemUseOnFieldCallback(u8 taskId) diff --git a/src/field/overworld.c b/src/field/overworld.c index fc313693a..07453e4fe 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -612,7 +612,7 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) apply_map_tileset2_palette(gMapHeader.mapData); for (paletteIndex = 6; paletteIndex < 12; paletteIndex++) - sub_807D874(paletteIndex); + ApplyWeatherGammaShiftToPal(paletteIndex); sub_8072ED0(); UpdateLocationHistoryForRoamer(); diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 3719b7c7a..27427ecaa 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -29,7 +29,7 @@ extern void DestroyVerticalScrollIndicator(u8); extern void PauseVerticalScrollIndicator(u8); extern void LoadScrollIndicatorPalette(void); extern void ClearMailStruct(struct MailStruct *); -extern u8 sub_807D770(void); +extern u8 IsWeatherNotFadingIn(void); extern void sub_808B020(void); extern void ClearVerticalScrollIndicatorPalettes(void); @@ -357,12 +357,12 @@ static void Task_ItemStorage_Deposit(u8 taskId) static void ItemStorage_Deposit(u8 taskId) { TASK.FUNC = Task_ItemStorage_Deposit; - fade_screen(1, 0); + FadeScreen(1, 0); } static void ItemStorage_HandleReturnToProcessInput(u8 taskId) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) TASK.FUNC = ItemStorageMenuProcessInput; } @@ -1196,7 +1196,7 @@ static void Mailbox_MailOptionsProcessInput(u8 taskId) static void Mailbox_DoMailRead(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); TASK.FUNC = Mailbox_FadeAndReadMail; } @@ -1211,7 +1211,7 @@ static void Mailbox_FadeAndReadMail(u8 taskId) static void Mailbox_HandleReturnToProcessInput(u8 taskId) // Mailbox_HandleReturnToProcessInput { - if(sub_807D770() == TRUE) // is black fade finished? why not gPaletteFade.active? + if (IsWeatherNotFadingIn() == TRUE) // is black fade finished? why not gPaletteFade.active? TASK.FUNC = Mailbox_ProcessInput; } @@ -1280,7 +1280,7 @@ static void Mailbox_Give(u8 taskId) Mailbox_NoPokemonForMail(taskId); // cannot be reached normally else { - fade_screen(1, 0); + FadeScreen(1, 0); TASK.FUNC = Mailbox_DoGiveMailPokeMenu; } } diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index 36edbe472..bc5cd0b1d 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -626,7 +626,7 @@ bool8 IsPaletteNotActive(void) bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) { - fade_screen(ScriptReadByte(ctx), 0); + FadeScreen(ScriptReadByte(ctx), 0); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } @@ -636,7 +636,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) u8 duration = ScriptReadByte(ctx); u8 delay = ScriptReadByte(ctx); - fade_screen(duration, delay); + FadeScreen(duration, delay); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 134aebbc6..2d02de004 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -348,7 +348,7 @@ void sub_80BBA48(u8 taskid) void sub_80BBAF0(void) { CreateTask(sub_80BBA48, 0); - fade_screen(1, 0); + FadeScreen(1, 0); saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); } @@ -362,7 +362,7 @@ bool8 sub_80BBB24(void) void sub_80BBB50(u8 taskid) { FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2); - if (sub_807D770() == 1) { + if (IsWeatherNotFadingIn() == 1) { EnableBothScriptContexts(); DestroyTask(taskid); } @@ -397,7 +397,7 @@ void sub_80BBC78(void) { u8 taskid = CreateTask(sub_80BBBEC, 0); gTasks[taskid].data[0] = 0; - fade_screen(1, 0); + FadeScreen(1, 0); } bool8 CurrentMapIsSecretBase(void) @@ -534,7 +534,7 @@ void sub_80BC074(u8 taskid) void sub_80BC0F8(void) { CreateTask(sub_80BC074, 0); - fade_screen(1, 0); + FadeScreen(1, 0); } void sub_80BC114(void) { diff --git a/src/field/shop.c b/src/field/shop.c index a228ff92f..e087628da 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -173,7 +173,7 @@ static void Task_HandleShopMenuBuy(u8 taskId) gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; gTasks[taskId].func = Shop_FadeAndRunBuySellCallback; - fade_screen(1, 0); + FadeScreen(1, 0); } static void Task_HandleShopMenuSell(u8 taskId) @@ -181,7 +181,7 @@ static void Task_HandleShopMenuSell(u8 taskId) gTasks[taskId].data[8] = (u32)ItemMenu_LoadSellMenu >> 16; gTasks[taskId].data[9] = (u32)ItemMenu_LoadSellMenu; gTasks[taskId].func = Shop_FadeAndRunBuySellCallback; - fade_screen(1, 0); + FadeScreen(1, 0); } static void Task_HandleShopMenuQuit(u8 taskId) @@ -213,7 +213,7 @@ static void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) static void Task_ReturnToMartMenu(u8 taskId) { - if (sub_807D770() == 1) + if (IsWeatherNotFadingIn() == 1) { if (gMartInfo.martType == MART_TYPE_2) DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 89cd404e9..381c19bb7 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -329,7 +329,7 @@ static u8 StartMenu_InputProcessCallback(void) if (gMenuCallback != StartMenu_SaveCallback && gMenuCallback != StartMenu_ExitCallback && gMenuCallback != StartMenu_RetireCallback) - fade_screen(1, 0); + FadeScreen(1, 0); return 0; } if (gMain.newKeys & (START_BUTTON | B_BUTTON)) diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index a41e197f2..c0cae9353 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -786,7 +786,7 @@ void FieldCallback_Teleport(void) static void sub_808ABA8(u8 taskID) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { gFieldEffectArguments[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES); gUnknown_03005CE4(); diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 8b4a1bb28..7faa8d844 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -18,6 +18,7 @@ #include "event_data.h" #include "cable_car_util.h" #include "constants/map_objects.h" +#include "constants/weather.h" // Static type declarations @@ -328,7 +329,7 @@ static void sub_8123740(void) i = 0; sub_8123FBC(0); gSpriteCoordOffsetX = 0; - sub_807C9B4(0); + sub_807C9B4(WEATHER_NONE); for (; i < 20; i++) { gWeatherPtr->sprites.s2.ashSprites[i] = NULL; @@ -769,7 +770,7 @@ static void LoadSprites(void) gSprites[spriteId].data[1] = 0x63; sCableCarPtr->unk_0002 = 7; sCableCarPtr->unk_0004 = 0x15e; - sub_807C9B4(2); + sub_807C9B4(WEATHER_SUNNY); break; case 1: CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); @@ -793,7 +794,7 @@ static void LoadSprites(void) gSprites[spriteId].data[1] = 0x41; sCableCarPtr->unk_0002 = 2; sCableCarPtr->unk_0004 = 0x109; - sub_807C9B4(7); + sub_807C9B4(WEATHER_ASH); break; } for (i = 0; i < 9; i++) -- cgit v1.2.3 From 8030b37e7585972f8c1b07b5d9200cf9975b89b0 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 20 Jan 2018 16:18:59 -0600 Subject: use manual ld scripts for common syms --- Makefile | 4 +- sym_common.txt | 854 +++++++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 616 insertions(+), 242 deletions(-) diff --git a/Makefile b/Makefile index 13c91f71d..7718ee523 100644 --- a/Makefile +++ b/Makefile @@ -115,8 +115,8 @@ $(LD_SCRIPT): $(BUILD_DIR)/sym_bss.ld $(BUILD_DIR)/sym_common.ld $(BUILD_DIR)/sy cd $(BUILD_DIR) && sed -f ../../ld_script.sed ../../ld_script.txt | sed "s#tools/#../../tools/#g" >ld_script.ld $(BUILD_DIR)/sym_bss.ld: sym_bss.txt cd $(BUILD_DIR) && ../../$(RAMSCRGEN) .bss ../../sym_bss.txt $(GAME_LANGUAGE) >sym_bss.ld -$(BUILD_DIR)/sym_common.ld: sym_common.txt $(C_OBJECTS) $(wildcard common_syms/*.txt) - cd $(BUILD_DIR) && ../../$(RAMSCRGEN) COMMON ../../sym_common.txt $(GAME_LANGUAGE) -c src,../../common_syms >sym_common.ld +$(BUILD_DIR)/sym_common.ld: sym_common.txt + $(CPP) -P $(CPPFLAGS) $< > $@ $(BUILD_DIR)/sym_ewram.ld: sym_ewram.txt cd $(BUILD_DIR) && ../../$(RAMSCRGEN) ewram_data ../../sym_ewram.txt $(GAME_LANGUAGE) >sym_ewram.ld diff --git a/sym_common.txt b/sym_common.txt index a37aa05ff..1a523e7cb 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -1,240 +1,614 @@ - .include "engine/main.o" - .include "engine/sprite.o" - .include "engine/string_util.o" - .include "engine/link.o" - .include "engine/rtc.o" - .include "rom3.o" - -@ battle - - .align 2 -gBattle_BG3_X: @ 30041B0 - .space 0x4 - -gBattle_BG1_Y: @ 30041B4 - .space 0x4 - -gBattle_BG3_Y: @ 30041B8 - .space 0x8 - -gBattleTextBuff1: @ 30041C0 - .space 0x10 - -gUnknown_030041D0: @ 30041D0 - .space 0x30 - -gBattle_WIN1H: @ 3004200 - .space 0x10 - -gUnknown_03004210: @ 3004210 - .space 0x30 - -gBattle_WIN0V: @ 3004240 - .space 0x4 - -gBattle_WIN1V: @ 3004244 - .space 0xC - -gUnknown_03004250: @ 3004250 - .space 0x30 - -gBattle_BG2_Y: @ 3004280 - .space 0x4 - -gUnknown_03004284: @ 3004284 - .space 0x4 - -gBattle_BG2_X: @ 3004288 - .space 0x4 - -gBattleTerrain: @ 300428C - .space 0x4 - -gBattleTextBuff2: @ 3004290 - .space 0x10 - -gBattle_BG0_Y: @ 30042A0 - .space 0x4 - -gBattle_BG0_X: @ 30042A4 - .space 0xC - -gBattleTextBuff3: @ 30042B0 - .space 0x10 - -gBattle_BG1_X: @ 30042C0 - .space 0x4 - -gBattle_WIN0H: @ 30042C4 - .space 0xC - -gPreBattleCallback1: @ 30042D0 - .space 0x4 - -gBattleMainFunc: @ 30042D4 - .space 0xC - -gBattleResults: @ 30042E0 - .space 0x1C - -gUnknown_030042FC: @ 30042FC - .space 0xE - -gUnknown_0300430A: @ 300430A - .space 0xC - -gUnknown_03004316: @ 3004316 - .space 0xE - -gLeveledUpInBattle: @ 3004324 - .space 0xC - -gBattleBankFunc: @ 3004330 - .space 0x10 - -gHealthboxIDs: @ 3004340 - .space 0x4 - -gUnknown_03004344: @ 3004344 - .space 0x4 - -gUnknown_03004348: @ 3004348 - .space 0x4 - -gUnknown_0300434C: @ 300434C - .space 0x4 - - .include "pokemon/pokemon_1.o" - .include "engine/random.o" - .include "scene/egg_hatch.o" - .include "engine/load_save.o" - -@ trade - -gUnknown_03004824: @ 3004824 - .space 0x4 - -gUnknown_03004828: @ 3004828 - .space 0x8 - - .include "scene/berry_blender.o" - .include "field/overworld.o" - .include "field/fieldmap.o" - .include "field/field_camera.o" - .include "field/field_map_obj.o" - .include "field/field_control_avatar.o" - -@ party_menu? - - .align 2 -gPokemonItemUseCallback: @ 3004AE4 - .space 0x4 - - .include "field/start_menu.o" - .include "engine/sound.o" - .include "battle/battle_anim.o" - .include "engine/task.o" - .include "debug/mori_debug_menu.o" - -@ unknown_task - .include "scanline_effect.o" - .include "pokemon/pokemon_menu.o" - .include "pokemon/pokedex.o" - -@ pokemon_summary_screen - - .align 4 -gUnknown_03005CF0: @ 3005CF0 - .space 0x10 - -@ item_menu - - .align 4 -gFieldItemUseCallback: @ 3005D00 - .space 0x10 - -gBagPocketScrollStates: @ 3005D10 - .space 0x14 - -gCurrentBagPocketItemSlots: @ 3005D24 - .space 0x4 - -@ contest - - .align 2 -gUnknown_03005D28: @ 3005D28 - .space 0x4 - - .include "engine/record_mixing.o" - .include "debug/sound_check_menu.o" - .include "field/tv.o" - - .space 0x64 @ unused variable? - -@ mauville_old_man - - .align 4 -gUnknown_03005DA0: @ 3005DA0 - .space 0x48 - -@ cute_sketch - -gUnknown_03005DE8: @ 3005DE8 - .space 0x4 - -gUnknown_03005DEC: @ 3005DEC - .space 0x4 - -gUnknown_03005DF0: @ 3005DF0 - .space 0x4 - -gUnknown_03005DF4: @ 3005DF4 - .space 0x4 - -gUnknown_03005DF8: @ 3005DF8 - .space 0x4 - -gUnknown_03005DFC: @ 3005DFC - .space 0x4 - -gUnknown_03005E00: @ 3005E00 - .space 0x4 - -gUnknown_03005E04: @ 3005E04 - .space 0x4 - -gUnknown_03005E08: @ 3005E08 - .space 0x4 - -gUnknown_03005E0C: @ 3005E0C - .space 0x4 - - .include "scene/contest_painting.o" - .include "scene/evolution_scene.o" - -@ pokedex_cry_screen - -gUnknown_03005E98: @ 3005E98 - .space 0x4 - - .include "engine/save.o" - - .space 0x10 @ unused variable? - - .include "scene/intro.o" - -@ battle_anim_813F0F4 - - .align 2 -gUnknown_03005F0C: @ 3005F0C - .space 0x4 - -gUnknown_03005F10: @ 3005F10 - .space 0x4 - -gUnknown_03005F14: @ 3005F14 - .space 0xC - - .include "pokemon/pokeblock_feed.o" - .include "libs/m4a_2.o" - .include "libs/agb_flash.o" +. = ALIGN(4); +. = ALIGN(4); +gKeyRepeatStartDelay = .; +. += 0x4; +. = ALIGN(4); +gLinkTransferringData = .; +. += 0x4; +. = ALIGN(16); +gMain = .; +. += 0x440; +. = ALIGN(4); +gKeyRepeatContinueDelay = .; +. += 0x4; +. = ALIGN(4); +gSoftResetDisabled = .; +. += 0x4; +. = ALIGN(16); +gIntrTable = .; +. += 0x38; +. = ALIGN(4); +gLinkVSyncDisabled = .; +. += 0x4; +. = ALIGN(16); +IntrMain_Buffer = .; +. += 0x800; +. = ALIGN(4); +gPcmDmaCounter = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(16); +gSpriteOrder = .; +. += 0x40; +. = ALIGN(16); +gSpriteTileAllocBitmap = .; +. += 0x80; +. = ALIGN(4); +gSpriteCoordOffsetX = .; +. += 0x4; +. = ALIGN(4); +gOamLimit = .; +. += 0x4; +. = ALIGN(4); +gReservedSpriteTileCount = .; +. += 0x4; +. = ALIGN(4); +gSpriteCopyRequestCount = .; +. += 0x4; +. = ALIGN(16); +gSpriteCopyRequests = .; +. += 0x300; +. = ALIGN(4); +gSpriteCoordOffsetY = .; +. += 0x4; +. = ALIGN(16); +gOamMatrices = .; +. += 0x100; +. = ALIGN(4); +gShouldProcessSpriteCopyRequests = .; +. += 0x4; +. = ALIGN(4); +gOamMatrixAllocBitmap = .; +. += 0x4; +. = ALIGN(4); +gReservedSpritePaletteCount = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(16); +gUnknownStringVar = .; +. += 0x10; +. = ALIGN(4); +. = ALIGN(8); +word_3002910 = .; +. += 0x8; +. = ALIGN(4); +gLinkDebugValue1 = .; +. += 0x4; +. = ALIGN(16); +localLinkPlayerBlock = .; +. += 0x3C; +. = ALIGN(4); +gLinkErrorOccurred = .; +. += 0x4; +. += 0x4; +. = ALIGN(4); +gLinkDebugValue2 = .; +. += 0x4; +. += 0x4; + +#ifdef GERMAN +. = ALIGN(4); +deUnkValue1 = .; +. += 0x4; +. = ALIGN(4); +deUnkValue2 = .; +. += 0x4; +#endif + +. = ALIGN(4); +gLinkPlayerPending = .; +. += 0x4; +. = ALIGN(16); +gLinkPlayers = .; +. += 0x70; +. = ALIGN(4); +gBlockReceived = .; +. += 0x4; +. += 0x4; +. = ALIGN(4); +gLinkHeldKeys = .; +. += 0x4; +. = ALIGN(4); +gLinkTimeOutCounter = .; +. += 0x4; +. += 0x4; +. = ALIGN(16); +localLinkPlayer = .; +. += 0x1C; +. = ALIGN(16); +gRecvCmds = .; +. += 0x40; +. = ALIGN(4); +gLinkStatus = .; +. += 0x4; +. = ALIGN(4); +gLinkDummyBool = .; +. += 0x4; +. = ALIGN(4); +byte_3002A68 = .; +. += 0x4; +. = ALIGN(16); +gBlockSendBuffer = .; +. += 0x100; +. = ALIGN(4); +u8_array_3002B70 = .; +. += 0x4; +. = ALIGN(4); +gLinkType = .; +. += 0x4; +. = ALIGN(4); +u8_array_3002B78 = .; +. += 0x4; +. = ALIGN(16); +gBlockRecvBuffer = .; +. += 0x400; +. = ALIGN(4); +gSuppressLinkErrorMessage = .; +. += 0x4; +. = ALIGN(4); +gSavedLinkPlayerCount = .; +. += 0x4; +. = ALIGN(16); +gSendCmd = .; +. += 0x10; +. = ALIGN(4); +gSavedMultiplayerId = .; +. += 0x4; +. = ALIGN(4); +gReceivedRemoteLinkPlayers = .; +. += 0x4; +. = ALIGN(16); +gLinkTestBGInfo = .; +. += 0x10; +. = ALIGN(4); +gLinkCallback = .; +. += 0x4; +. = ALIGN(16); +gSavedLinkPlayers = .; +. += 0x70; +. = ALIGN(4); +gShouldAdvanceLinkState = .; +. += 0x4; +. = ALIGN(8); +gLinkTestBlockChecksums = .; +. += 0x8; +. += 0x4; +. = ALIGN(4); +gBlockRequestType = .; +. += 0x4; +. += 0x4; +. += 0x4; +. = ALIGN(4); +gLastSendQueueCount = .; +. += 0x4; +. = ALIGN(16); +gLink = .; +. += 0xFC0; +. = ALIGN(4); +gLastRecvQueueCount = .; +. += 0x4; +. = ALIGN(4); +gLinkSavedIme = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(8); +gLocalTime = .; +. += 0x8; +. = ALIGN(4); +. = ALIGN(16); +gBattleBuffersTransferData = .; +. += 0x170; +. = ALIGN(4); +gBattle_BG3_X = .; +. += 0x4; +gBattle_BG1_Y = .; +. += 0x4; +gBattle_BG3_Y = .; +. += 0x8; +gBattleTextBuff1 = .; +. += 0x10; +gUnknown_030041D0 = .; +. += 0x30; +gBattle_WIN1H = .; +. += 0x10; +gUnknown_03004210 = .; +. += 0x30; +gBattle_WIN0V = .; +. += 0x4; +gBattle_WIN1V = .; +. += 0xC; +gUnknown_03004250 = .; +. += 0x30; +gBattle_BG2_Y = .; +. += 0x4; +gUnknown_03004284 = .; +. += 0x4; +gBattle_BG2_X = .; +. += 0x4; +gBattleTerrain = .; +. += 0x4; +gBattleTextBuff2 = .; +. += 0x10; +gBattle_BG0_Y = .; +. += 0x4; +gBattle_BG0_X = .; +. += 0xC; +gBattleTextBuff3 = .; +. += 0x10; +gBattle_BG1_X = .; +. += 0x4; +gBattle_WIN0H = .; +. += 0xC; +gPreBattleCallback1 = .; +. += 0x4; +gBattleMainFunc = .; +. += 0xC; +gBattleResults = .; +. += 0x1C; +gUnknown_030042FC = .; +. += 0xE; +gUnknown_0300430A = .; +. += 0xC; +gUnknown_03004316 = .; +. += 0xE; +gLeveledUpInBattle = .; +. += 0xC; +gBattleBankFunc = .; +. += 0x10; +gHealthboxIDs = .; +. += 0x4; +gUnknown_03004344 = .; +. += 0x4; +gUnknown_03004348 = .; +. += 0x4; +gUnknown_0300434C = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gPlayerPartyCount = .; +. += 0x4; +. = ALIGN(16); +gPlayerParty = .; +. += 0x258; +. = ALIGN(4); +gEnemyPartyCount = .; +. += 0x4; +. = ALIGN(16); +gEnemyParty = .; +. += 0x258; +. = ALIGN(4); +. = ALIGN(4); +gRngValue = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gEggHatchData = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gFlashMemoryPresent = .; +. += 0x4; +gUnknown_03004824 = .; +. += 0x4; +gUnknown_03004828 = .; +. += 0x8; +. = ALIGN(4); +. = ALIGN(4); +gUnknown_03004830 = .; +. += 0x4; +. = ALIGN(4); +gInGameOpponentsNo = .; +. += 0x4; +. = ALIGN(16); +gUnknown_03004840 = .; +. += 0x14; +. = ALIGN(4); +gBerryBlenderData = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +word_3004858 = .; +. += 0x4; +. = ALIGN(4); +gFieldCallback = .; +. += 0x4; +. = ALIGN(4); +gUnknown_03004860 = .; +. += 0x4; +. = ALIGN(4); +gFieldLinkPlayerCount = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(16); +gUnknown_03004870 = .; +. += 0xC; +. = ALIGN(4); +. = ALIGN(16); +gUnknown_03004880 = .; +. += 0x18; +. = ALIGN(4); +gUnknown_03004898 = .; +. += 0x4; +. = ALIGN(4); +gUnknown_0300489C = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(16); +gMapObjects = .; +. += 0x240; +. = ALIGN(4); +. = ALIGN(4); +gSelectedMapObject = .; +. += 0x4; +. = ALIGN(4); +gPokemonItemUseCallback = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gMenuCallback = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gDisableMusic = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gSoundAnimFramesToWait = .; +. += 0x4; +. = ALIGN(16); +gBattleAnimArgs = .; +. += 0x10; +. = ALIGN(16); +gAnimSpriteIndexArray = .; +. += 0x10; +. = ALIGN(4); +. = ALIGN(16); +gTasks = .; +. += 0x280; +. = ALIGN(4); +. = ALIGN(16); +gUnknown_03004DA0 = .; +. += 0x20; +. = ALIGN(4); +. = ALIGN(16); +gScanlineEffect = .; +. += 0x20; +. = ALIGN(16); +gScanlineEffectRegBuffers = .; +. += 0xF00; +. = ALIGN(4); +. = ALIGN(4); +gLastFieldPokeMenuOpened = .; +. += 0x4; +. = ALIGN(4); +gUnknown_03005CE4 = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gUnknown_03005CE8 = .; +. += 0x4; +. = ALIGN(4); +gUnknown_03005CEC = .; +. += 0x4; +. = ALIGN(16); +gUnknown_03005CF0 = .; +. += 0x10; +. = ALIGN(16); +gFieldItemUseCallback = .; +. += 0x10; +gBagPocketScrollStates = .; +. += 0x14; +gCurrentBagPocketItemSlots = .; +. += 0x4; +. = ALIGN(4); +gUnknown_03005D28 = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gUnknown_03005D2C = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gUnknown_03005D30 = .; +. += 0x4; +. = ALIGN(4); +gSoundTestCryNum = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gUnknown_03005D38 = .; +. += 0x4; +. += 0x64; +. = ALIGN(16); +gUnknown_03005DA0 = .; +. += 0x48; +gUnknown_03005DE8 = .; +. += 0x4; +gUnknown_03005DEC = .; +. += 0x4; +gUnknown_03005DF0 = .; +. += 0x4; +gUnknown_03005DF4 = .; +. += 0x4; +gUnknown_03005DF8 = .; +. += 0x4; +gUnknown_03005DFC = .; +. += 0x4; +gUnknown_03005E00 = .; +. += 0x4; +gUnknown_03005E04 = .; +. += 0x4; +gUnknown_03005E08 = .; +. += 0x4; +gUnknown_03005E0C = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gUnknown_03005E10 = .; +. += 0x4; +. = ALIGN(16); +gUnknown_03005E20 = .; +. += 0x20; +. = ALIGN(16); +gUnknown_03005E40 = .; +. += 0x4C; +. = ALIGN(4); +gUnknown_03005E8C = .; +. += 0x4; +. = ALIGN(4); +gUnknown_03005E90 = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gCB2_AfterEvolution = .; +. += 0x4; +gUnknown_03005E98 = .; +. += 0x4; +. = ALIGN(4); +. = ALIGN(4); +gFirstSaveSector = .; +. += 0x4; +. = ALIGN(4); +gPrevSaveCounter = .; +. += 0x4; +. = ALIGN(4); +gLastKnownGoodSector = .; +. += 0x4; +. = ALIGN(4); +gDamagedSaveSectors = .; +. += 0x4; +. = ALIGN(4); +gSaveCounter = .; +. += 0x4; +. = ALIGN(4); +gFastSaveSection = .; +. += 0x4; +. = ALIGN(4); +gUnknown_03005EB4 = .; +. += 0x4; +. = ALIGN(4); +gSaveFileStatus = .; +. += 0x4; +. = ALIGN(4); +gGameContinueCallback = .; +. += 0x4; +. += 0x10; +. = ALIGN(4); +. = ALIGN(4); +gIntroFrameCounter = .; +. += 0x4; +. = ALIGN(16); +gMultibootProgramStruct = .; +. += 0x2C; +. = ALIGN(4); +gUnknown_03005F0C = .; +. += 0x4; +gUnknown_03005F10 = .; +. += 0x4; +gUnknown_03005F14 = .; +. += 0xC; +. = ALIGN(4); +. = ALIGN(4); +gPokeblockFeedPokeSprite = .; +. += 0x4; +. = ALIGN(4); +gPokeblockFeedMonSpecies = .; +. += 0x4; +. = ALIGN(4); +gPokeblockMonNotFlipped = .; +. += 0x4; +. = ALIGN(4); +gPokeblockFeedMonSpriteID = .; +. += 0x4; +. = ALIGN(4); +gPokeblockFeedMonNature = .; +. += 0x4; +. = ALIGN(4); +gUnknown_03005F34 = .; +. += 0x4; +. = ALIGN(4); +gPokeblockFeedUnused0 = .; +. += 0x4; +. = ALIGN(4); +gUnknown_03005F3C = .; +. += 0x4; +. = ALIGN(4); +gUnknown_03005F40 = .; +. += 0x4; +. = ALIGN(16); +gPokeblockFeedPokeSpriteCopy = .; +. += 0x44; +. = ALIGN(4); +gUnknown_03005F94 = .; +. += 0x4; +. = ALIGN(16); +gUnknown_03005FA0 = .; +. += 0x30; +. = ALIGN(4); +. = ALIGN(16); +gSoundInfo = .; +. += 0xFB0; +. = ALIGN(16); +gPokemonCrySongs = .; +. += 0x68; +. = ALIGN(16); +gPokemonCryMusicPlayers = .; +. += 0x80; +. = ALIGN(16); +gMPlayJumpTable = .; +. += 0x90; +. = ALIGN(16); +gCgbChans = .; +. += 0x100; +. = ALIGN(16); +gPokemonCryTracks = .; +. += 0x140; +. = ALIGN(16); +gPokemonCrySong = .; +. += 0x34; +. = ALIGN(16); +gMPlay_BGM = .; +. += 0x40; +. = ALIGN(16); +gMPlay_SE1 = .; +. += 0x40; +. = ALIGN(16); +gMPlay_SE2 = .; +. += 0x40; +. = ALIGN(16); +gMPlayMemAccArea = .; +. += 0x10; +. = ALIGN(16); +gMPlay_SE3 = .; +. += 0x40; +. = ALIGN(4); +. = ALIGN(4); +gFlashTimeoutFlag = .; +. += 0x4; +. = ALIGN(4); +PollFlashStatus = .; +. += 0x4; +. = ALIGN(4); +WaitForFlashWrite = .; +. += 0x4; +. = ALIGN(4); +ProgramFlashSector = .; +. += 0x4; +. = ALIGN(4); +gFlash = .; +. += 0x4; +. = ALIGN(4); +ProgramFlashByte = .; +. += 0x4; +. = ALIGN(4); +gFlashNumRemainingBytes = .; +. += 0x4; +. = ALIGN(4); +EraseFlashChip = .; +. += 0x4; +. = ALIGN(4); +EraseFlashSector = .; +. += 0x4; +. = ALIGN(4); +gFlashMaxTime = .; +. += 0x4; -- cgit v1.2.3 From 7a4f92553a41fdd14a29ac038b512cb8603d2a0c Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 20 Jan 2018 22:06:58 -0600 Subject: use C preprocessor to generate common syms file --- common_syms/battle/battle_anim.txt | 3 - common_syms/debug/mori_debug_menu.txt | 1 - common_syms/debug/sound_check_menu.txt | 2 - common_syms/engine/link.txt | 46 -- common_syms/engine/load_save.txt | 1 - common_syms/engine/main.txt | 9 - common_syms/engine/random.txt | 1 - common_syms/engine/record_mixing.txt | 1 - common_syms/engine/rtc.txt | 1 - common_syms/engine/save.txt | 9 - common_syms/engine/sound.txt | 1 - common_syms/engine/sprite.txt | 12 - common_syms/engine/string_util.txt | 1 - common_syms/engine/task.txt | 1 - common_syms/field/field_camera.txt | 3 - common_syms/field/field_control_avatar.txt | 1 - common_syms/field/field_map_obj.txt | 1 - common_syms/field/fieldmap.txt | 1 - common_syms/field/overworld.txt | 4 - common_syms/field/start_menu.txt | 1 - common_syms/field/tv.txt | 1 - common_syms/libs/agb_flash.txt | 10 - common_syms/libs/m4a_2.txt | 12 - common_syms/pokemon/pokeblock_feed.txt | 12 - common_syms/pokemon/pokedex.txt | 2 - common_syms/pokemon/pokemon_1.txt | 4 - common_syms/pokemon/pokemon_menu.txt | 2 - common_syms/rom3.txt | 1 - common_syms/scanline_effect.txt | 2 - common_syms/scene/berry_blender.txt | 4 - common_syms/scene/contest_painting.txt | 5 - common_syms/scene/cute_sketch.txt | 0 common_syms/scene/egg_hatch.txt | 1 - common_syms/scene/evolution_scene.txt | 1 - common_syms/scene/intro.txt | 2 - src/field/tv.c | 2 - sym_common.txt | 799 ++++++++--------------------- 37 files changed, 210 insertions(+), 750 deletions(-) delete mode 100644 common_syms/battle/battle_anim.txt delete mode 100644 common_syms/debug/mori_debug_menu.txt delete mode 100644 common_syms/debug/sound_check_menu.txt delete mode 100644 common_syms/engine/link.txt delete mode 100644 common_syms/engine/load_save.txt delete mode 100644 common_syms/engine/main.txt delete mode 100644 common_syms/engine/random.txt delete mode 100644 common_syms/engine/record_mixing.txt delete mode 100644 common_syms/engine/rtc.txt delete mode 100644 common_syms/engine/save.txt delete mode 100644 common_syms/engine/sound.txt delete mode 100644 common_syms/engine/sprite.txt delete mode 100644 common_syms/engine/string_util.txt delete mode 100644 common_syms/engine/task.txt delete mode 100644 common_syms/field/field_camera.txt delete mode 100644 common_syms/field/field_control_avatar.txt delete mode 100644 common_syms/field/field_map_obj.txt delete mode 100644 common_syms/field/fieldmap.txt delete mode 100644 common_syms/field/overworld.txt delete mode 100644 common_syms/field/start_menu.txt delete mode 100644 common_syms/field/tv.txt delete mode 100644 common_syms/libs/agb_flash.txt delete mode 100644 common_syms/libs/m4a_2.txt delete mode 100644 common_syms/pokemon/pokeblock_feed.txt delete mode 100644 common_syms/pokemon/pokedex.txt delete mode 100644 common_syms/pokemon/pokemon_1.txt delete mode 100644 common_syms/pokemon/pokemon_menu.txt delete mode 100644 common_syms/rom3.txt delete mode 100644 common_syms/scanline_effect.txt delete mode 100644 common_syms/scene/berry_blender.txt delete mode 100644 common_syms/scene/contest_painting.txt delete mode 100644 common_syms/scene/cute_sketch.txt delete mode 100644 common_syms/scene/egg_hatch.txt delete mode 100644 common_syms/scene/evolution_scene.txt delete mode 100644 common_syms/scene/intro.txt diff --git a/common_syms/battle/battle_anim.txt b/common_syms/battle/battle_anim.txt deleted file mode 100644 index a93ac9b5d..000000000 --- a/common_syms/battle/battle_anim.txt +++ /dev/null @@ -1,3 +0,0 @@ -gSoundAnimFramesToWait -gBattleAnimArgs -gAnimSpriteIndexArray diff --git a/common_syms/debug/mori_debug_menu.txt b/common_syms/debug/mori_debug_menu.txt deleted file mode 100644 index 77ab5531c..000000000 --- a/common_syms/debug/mori_debug_menu.txt +++ /dev/null @@ -1 +0,0 @@ -gUnknown_03004DA0 diff --git a/common_syms/debug/sound_check_menu.txt b/common_syms/debug/sound_check_menu.txt deleted file mode 100644 index e9e3032e6..000000000 --- a/common_syms/debug/sound_check_menu.txt +++ /dev/null @@ -1,2 +0,0 @@ -gUnknown_03005D30 -gSoundTestCryNum diff --git a/common_syms/engine/link.txt b/common_syms/engine/link.txt deleted file mode 100644 index faafda4d0..000000000 --- a/common_syms/engine/link.txt +++ /dev/null @@ -1,46 +0,0 @@ -word_3002910 -gLinkDebugValue1 -localLinkPlayerBlock -gLinkErrorOccurred -4 -gLinkDebugValue2 -4 -#begin GERMAN -deUnkValue1 -deUnkValue2 -#end -gLinkPlayerPending -gLinkPlayers -gBlockReceived -4 -gLinkHeldKeys -gLinkTimeOutCounter -4 -localLinkPlayer -gRecvCmds -gLinkStatus -gLinkDummyBool -byte_3002A68 -gBlockSendBuffer -u8_array_3002B70 -gLinkType -u8_array_3002B78 -gBlockRecvBuffer -gSuppressLinkErrorMessage -gSavedLinkPlayerCount -gSendCmd -gSavedMultiplayerId -gReceivedRemoteLinkPlayers -gLinkTestBGInfo -gLinkCallback -gSavedLinkPlayers -gShouldAdvanceLinkState -gLinkTestBlockChecksums -4 -gBlockRequestType -4 -4 -gLastSendQueueCount -gLink -gLastRecvQueueCount -gLinkSavedIme diff --git a/common_syms/engine/load_save.txt b/common_syms/engine/load_save.txt deleted file mode 100644 index 3b969deca..000000000 --- a/common_syms/engine/load_save.txt +++ /dev/null @@ -1 +0,0 @@ -gFlashMemoryPresent diff --git a/common_syms/engine/main.txt b/common_syms/engine/main.txt deleted file mode 100644 index a620083d1..000000000 --- a/common_syms/engine/main.txt +++ /dev/null @@ -1,9 +0,0 @@ -gKeyRepeatStartDelay -gLinkTransferringData -gMain -gKeyRepeatContinueDelay -gSoftResetDisabled -gIntrTable -gLinkVSyncDisabled -IntrMain_Buffer -gPcmDmaCounter diff --git a/common_syms/engine/random.txt b/common_syms/engine/random.txt deleted file mode 100644 index 794439ea5..000000000 --- a/common_syms/engine/random.txt +++ /dev/null @@ -1 +0,0 @@ -gRngValue diff --git a/common_syms/engine/record_mixing.txt b/common_syms/engine/record_mixing.txt deleted file mode 100644 index a6f4f8df3..000000000 --- a/common_syms/engine/record_mixing.txt +++ /dev/null @@ -1 +0,0 @@ -gUnknown_03005D2C diff --git a/common_syms/engine/rtc.txt b/common_syms/engine/rtc.txt deleted file mode 100644 index fa00a34d5..000000000 --- a/common_syms/engine/rtc.txt +++ /dev/null @@ -1 +0,0 @@ -gLocalTime diff --git a/common_syms/engine/save.txt b/common_syms/engine/save.txt deleted file mode 100644 index 4824255bf..000000000 --- a/common_syms/engine/save.txt +++ /dev/null @@ -1,9 +0,0 @@ -gFirstSaveSector -gPrevSaveCounter -gLastKnownGoodSector -gDamagedSaveSectors -gSaveCounter -gFastSaveSection -gUnknown_03005EB4 -gSaveFileStatus -gGameContinueCallback diff --git a/common_syms/engine/sound.txt b/common_syms/engine/sound.txt deleted file mode 100644 index 0f6f2fc75..000000000 --- a/common_syms/engine/sound.txt +++ /dev/null @@ -1 +0,0 @@ -gDisableMusic diff --git a/common_syms/engine/sprite.txt b/common_syms/engine/sprite.txt deleted file mode 100644 index fe38dc61f..000000000 --- a/common_syms/engine/sprite.txt +++ /dev/null @@ -1,12 +0,0 @@ -gSpriteOrder -gSpriteTileAllocBitmap -gSpriteCoordOffsetX -gOamLimit -gReservedSpriteTileCount -gSpriteCopyRequestCount -gSpriteCopyRequests -gSpriteCoordOffsetY -gOamMatrices -gShouldProcessSpriteCopyRequests -gOamMatrixAllocBitmap -gReservedSpritePaletteCount diff --git a/common_syms/engine/string_util.txt b/common_syms/engine/string_util.txt deleted file mode 100644 index 1ee62aaad..000000000 --- a/common_syms/engine/string_util.txt +++ /dev/null @@ -1 +0,0 @@ -gUnknownStringVar diff --git a/common_syms/engine/task.txt b/common_syms/engine/task.txt deleted file mode 100644 index 6601bd11b..000000000 --- a/common_syms/engine/task.txt +++ /dev/null @@ -1 +0,0 @@ -gTasks diff --git a/common_syms/field/field_camera.txt b/common_syms/field/field_camera.txt deleted file mode 100644 index 7aad967f8..000000000 --- a/common_syms/field/field_camera.txt +++ /dev/null @@ -1,3 +0,0 @@ -gUnknown_03004880 -gUnknown_03004898 -gUnknown_0300489C diff --git a/common_syms/field/field_control_avatar.txt b/common_syms/field/field_control_avatar.txt deleted file mode 100644 index 040a9e6c1..000000000 --- a/common_syms/field/field_control_avatar.txt +++ /dev/null @@ -1 +0,0 @@ -gSelectedMapObject diff --git a/common_syms/field/field_map_obj.txt b/common_syms/field/field_map_obj.txt deleted file mode 100644 index 32d8b1915..000000000 --- a/common_syms/field/field_map_obj.txt +++ /dev/null @@ -1 +0,0 @@ -gMapObjects diff --git a/common_syms/field/fieldmap.txt b/common_syms/field/fieldmap.txt deleted file mode 100644 index 7819b3b40..000000000 --- a/common_syms/field/fieldmap.txt +++ /dev/null @@ -1 +0,0 @@ -gUnknown_03004870 diff --git a/common_syms/field/overworld.txt b/common_syms/field/overworld.txt deleted file mode 100644 index ecdb190b2..000000000 --- a/common_syms/field/overworld.txt +++ /dev/null @@ -1,4 +0,0 @@ -word_3004858 -gFieldCallback -gUnknown_03004860 -gFieldLinkPlayerCount diff --git a/common_syms/field/start_menu.txt b/common_syms/field/start_menu.txt deleted file mode 100644 index 05beaf57c..000000000 --- a/common_syms/field/start_menu.txt +++ /dev/null @@ -1 +0,0 @@ -gMenuCallback diff --git a/common_syms/field/tv.txt b/common_syms/field/tv.txt deleted file mode 100644 index 829139f8f..000000000 --- a/common_syms/field/tv.txt +++ /dev/null @@ -1 +0,0 @@ -gUnknown_03005D38 diff --git a/common_syms/libs/agb_flash.txt b/common_syms/libs/agb_flash.txt deleted file mode 100644 index cb421ec80..000000000 --- a/common_syms/libs/agb_flash.txt +++ /dev/null @@ -1,10 +0,0 @@ -gFlashTimeoutFlag -PollFlashStatus -WaitForFlashWrite -ProgramFlashSector -gFlash -ProgramFlashByte -gFlashNumRemainingBytes -EraseFlashChip -EraseFlashSector -gFlashMaxTime diff --git a/common_syms/libs/m4a_2.txt b/common_syms/libs/m4a_2.txt deleted file mode 100644 index a80d8a79d..000000000 --- a/common_syms/libs/m4a_2.txt +++ /dev/null @@ -1,12 +0,0 @@ -gSoundInfo -gPokemonCrySongs -gPokemonCryMusicPlayers -gMPlayJumpTable -gCgbChans -gPokemonCryTracks -gPokemonCrySong -gMPlay_BGM -gMPlay_SE1 -gMPlay_SE2 -gMPlayMemAccArea -gMPlay_SE3 diff --git a/common_syms/pokemon/pokeblock_feed.txt b/common_syms/pokemon/pokeblock_feed.txt deleted file mode 100644 index 827e6526e..000000000 --- a/common_syms/pokemon/pokeblock_feed.txt +++ /dev/null @@ -1,12 +0,0 @@ -gPokeblockFeedPokeSprite -gPokeblockFeedMonSpecies -gPokeblockMonNotFlipped -gPokeblockFeedMonSpriteID -gPokeblockFeedMonNature -gUnknown_03005F34 -gPokeblockFeedUnused0 -gUnknown_03005F3C -gUnknown_03005F40 -gPokeblockFeedPokeSpriteCopy -gUnknown_03005F94 -gUnknown_03005FA0 diff --git a/common_syms/pokemon/pokedex.txt b/common_syms/pokemon/pokedex.txt deleted file mode 100644 index 18b14f3ed..000000000 --- a/common_syms/pokemon/pokedex.txt +++ /dev/null @@ -1,2 +0,0 @@ -gUnknown_03005CE8 -gUnknown_03005CEC diff --git a/common_syms/pokemon/pokemon_1.txt b/common_syms/pokemon/pokemon_1.txt deleted file mode 100644 index c588d53a7..000000000 --- a/common_syms/pokemon/pokemon_1.txt +++ /dev/null @@ -1,4 +0,0 @@ -gPlayerPartyCount -gPlayerParty -gEnemyPartyCount -gEnemyParty diff --git a/common_syms/pokemon/pokemon_menu.txt b/common_syms/pokemon/pokemon_menu.txt deleted file mode 100644 index 98a1bf53b..000000000 --- a/common_syms/pokemon/pokemon_menu.txt +++ /dev/null @@ -1,2 +0,0 @@ -gLastFieldPokeMenuOpened -gUnknown_03005CE4 diff --git a/common_syms/rom3.txt b/common_syms/rom3.txt deleted file mode 100644 index 06a965ff6..000000000 --- a/common_syms/rom3.txt +++ /dev/null @@ -1 +0,0 @@ -gBattleBuffersTransferData diff --git a/common_syms/scanline_effect.txt b/common_syms/scanline_effect.txt deleted file mode 100644 index 280e7f891..000000000 --- a/common_syms/scanline_effect.txt +++ /dev/null @@ -1,2 +0,0 @@ -gScanlineEffect -gScanlineEffectRegBuffers diff --git a/common_syms/scene/berry_blender.txt b/common_syms/scene/berry_blender.txt deleted file mode 100644 index 524a31411..000000000 --- a/common_syms/scene/berry_blender.txt +++ /dev/null @@ -1,4 +0,0 @@ -gUnknown_03004830 -gInGameOpponentsNo -gUnknown_03004840 -gBerryBlenderData diff --git a/common_syms/scene/contest_painting.txt b/common_syms/scene/contest_painting.txt deleted file mode 100644 index 2e8490348..000000000 --- a/common_syms/scene/contest_painting.txt +++ /dev/null @@ -1,5 +0,0 @@ -gUnknown_03005E10 -gUnknown_03005E20 -gUnknown_03005E40 -gUnknown_03005E8C -gUnknown_03005E90 diff --git a/common_syms/scene/cute_sketch.txt b/common_syms/scene/cute_sketch.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/common_syms/scene/egg_hatch.txt b/common_syms/scene/egg_hatch.txt deleted file mode 100644 index 891ccc104..000000000 --- a/common_syms/scene/egg_hatch.txt +++ /dev/null @@ -1 +0,0 @@ -gEggHatchData diff --git a/common_syms/scene/evolution_scene.txt b/common_syms/scene/evolution_scene.txt deleted file mode 100644 index 137cd3e05..000000000 --- a/common_syms/scene/evolution_scene.txt +++ /dev/null @@ -1 +0,0 @@ -gCB2_AfterEvolution diff --git a/common_syms/scene/intro.txt b/common_syms/scene/intro.txt deleted file mode 100644 index d069b1014..000000000 --- a/common_syms/scene/intro.txt +++ /dev/null @@ -1,2 +0,0 @@ -gIntroFrameCounter -gMultibootProgramStruct diff --git a/src/field/tv.c b/src/field/tv.c index efda4b925..8bd36bb9c 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -47,8 +47,6 @@ struct UnkTvStruct s8 var0; }; -extern u8 gUnknown_0300430A[11]; - struct OutbreakPokemon { /*0x00*/ u16 species; diff --git a/sym_common.txt b/sym_common.txt index 1a523e7cb..d8dc14812 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -1,614 +1,235 @@ -. = ALIGN(4); -. = ALIGN(4); -gKeyRepeatStartDelay = .; -. += 0x4; -. = ALIGN(4); -gLinkTransferringData = .; -. += 0x4; -. = ALIGN(16); -gMain = .; -. += 0x440; -. = ALIGN(4); -gKeyRepeatContinueDelay = .; -. += 0x4; -. = ALIGN(4); -gSoftResetDisabled = .; -. += 0x4; -. = ALIGN(16); -gIntrTable = .; -. += 0x38; -. = ALIGN(4); -gLinkVSyncDisabled = .; -. += 0x4; -. = ALIGN(16); -IntrMain_Buffer = .; -. += 0x800; -. = ALIGN(4); -gPcmDmaCounter = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(16); -gSpriteOrder = .; -. += 0x40; -. = ALIGN(16); -gSpriteTileAllocBitmap = .; -. += 0x80; -. = ALIGN(4); -gSpriteCoordOffsetX = .; -. += 0x4; -. = ALIGN(4); -gOamLimit = .; -. += 0x4; -. = ALIGN(4); -gReservedSpriteTileCount = .; -. += 0x4; -. = ALIGN(4); -gSpriteCopyRequestCount = .; -. += 0x4; -. = ALIGN(16); -gSpriteCopyRequests = .; -. += 0x300; -. = ALIGN(4); -gSpriteCoordOffsetY = .; -. += 0x4; -. = ALIGN(16); -gOamMatrices = .; -. += 0x100; -. = ALIGN(4); -gShouldProcessSpriteCopyRequests = .; -. += 0x4; -. = ALIGN(4); -gOamMatrixAllocBitmap = .; -. += 0x4; -. = ALIGN(4); -gReservedSpritePaletteCount = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(16); -gUnknownStringVar = .; -. += 0x10; -. = ALIGN(4); -. = ALIGN(8); -word_3002910 = .; -. += 0x8; -. = ALIGN(4); -gLinkDebugValue1 = .; -. += 0x4; -. = ALIGN(16); -localLinkPlayerBlock = .; -. += 0x3C; -. = ALIGN(4); -gLinkErrorOccurred = .; -. += 0x4; -. += 0x4; -. = ALIGN(4); -gLinkDebugValue2 = .; -. += 0x4; -. += 0x4; +#define SYMBOL(name, size) \ + . = ALIGN (((size) > 16) ? 16 : (size)); \ + . = ALIGN(4); \ + name = .; \ + . += size; -#ifdef GERMAN -. = ALIGN(4); -deUnkValue1 = .; -. += 0x4; -. = ALIGN(4); -deUnkValue2 = .; +SYMBOL(gKeyRepeatStartDelay, 4) +SYMBOL(gLinkTransferringData, 4) +SYMBOL(gMain, 1088) +SYMBOL(gKeyRepeatContinueDelay, 4) +SYMBOL(gSoftResetDisabled, 4) +SYMBOL(gIntrTable, 56) +SYMBOL(gLinkVSyncDisabled, 4) +SYMBOL(IntrMain_Buffer, 2048) +SYMBOL(gPcmDmaCounter, 4) +SYMBOL(gSpriteOrder, 64) +SYMBOL(gSpriteTileAllocBitmap, 128) +SYMBOL(gSpriteCoordOffsetX, 4) +SYMBOL(gOamLimit, 4) +SYMBOL(gReservedSpriteTileCount, 4) +SYMBOL(gSpriteCopyRequestCount, 4) +SYMBOL(gSpriteCopyRequests, 768) +SYMBOL(gSpriteCoordOffsetY, 4) +SYMBOL(gOamMatrices, 256) +SYMBOL(gShouldProcessSpriteCopyRequests, 4) +SYMBOL(gOamMatrixAllocBitmap, 4) +SYMBOL(gReservedSpritePaletteCount, 4) +SYMBOL(gUnknownStringVar, 16) +SYMBOL(word_3002910, 8) +SYMBOL(gLinkDebugValue1, 4) +SYMBOL(localLinkPlayerBlock, 60) +SYMBOL(gLinkErrorOccurred, 4) +. += 0x4; +SYMBOL(gLinkDebugValue2, 4) . += 0x4; +#ifdef GERMAN +SYMB0L(deUnkValue1, 4) +SYMB0L(deUnkValue2, 4) #endif - -. = ALIGN(4); -gLinkPlayerPending = .; -. += 0x4; -. = ALIGN(16); -gLinkPlayers = .; -. += 0x70; -. = ALIGN(4); -gBlockReceived = .; -. += 0x4; -. += 0x4; -. = ALIGN(4); -gLinkHeldKeys = .; -. += 0x4; -. = ALIGN(4); -gLinkTimeOutCounter = .; -. += 0x4; -. += 0x4; -. = ALIGN(16); -localLinkPlayer = .; -. += 0x1C; -. = ALIGN(16); -gRecvCmds = .; -. += 0x40; -. = ALIGN(4); -gLinkStatus = .; -. += 0x4; -. = ALIGN(4); -gLinkDummyBool = .; -. += 0x4; -. = ALIGN(4); -byte_3002A68 = .; -. += 0x4; -. = ALIGN(16); -gBlockSendBuffer = .; -. += 0x100; -. = ALIGN(4); -u8_array_3002B70 = .; -. += 0x4; -. = ALIGN(4); -gLinkType = .; -. += 0x4; -. = ALIGN(4); -u8_array_3002B78 = .; -. += 0x4; -. = ALIGN(16); -gBlockRecvBuffer = .; -. += 0x400; -. = ALIGN(4); -gSuppressLinkErrorMessage = .; -. += 0x4; -. = ALIGN(4); -gSavedLinkPlayerCount = .; -. += 0x4; -. = ALIGN(16); -gSendCmd = .; -. += 0x10; -. = ALIGN(4); -gSavedMultiplayerId = .; -. += 0x4; -. = ALIGN(4); -gReceivedRemoteLinkPlayers = .; -. += 0x4; -. = ALIGN(16); -gLinkTestBGInfo = .; -. += 0x10; -. = ALIGN(4); -gLinkCallback = .; -. += 0x4; -. = ALIGN(16); -gSavedLinkPlayers = .; -. += 0x70; -. = ALIGN(4); -gShouldAdvanceLinkState = .; -. += 0x4; -. = ALIGN(8); -gLinkTestBlockChecksums = .; -. += 0x8; -. += 0x4; -. = ALIGN(4); -gBlockRequestType = .; -. += 0x4; -. += 0x4; -. += 0x4; -. = ALIGN(4); -gLastSendQueueCount = .; -. += 0x4; -. = ALIGN(16); -gLink = .; -. += 0xFC0; -. = ALIGN(4); -gLastRecvQueueCount = .; -. += 0x4; -. = ALIGN(4); -gLinkSavedIme = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(8); -gLocalTime = .; +SYMBOL(gLinkPlayerPending, 4) +SYMBOL(gLinkPlayers, 112) +SYMBOL(gBlockReceived, 4) +. += 0x4; +SYMBOL(gLinkHeldKeys, 4) +SYMBOL(gLinkTimeOutCounter, 4) +. += 0x4; +SYMBOL(localLinkPlayer, 28) +SYMBOL(gRecvCmds, 64) +SYMBOL(gLinkStatus, 4) +SYMBOL(gLinkDummyBool, 4) +SYMBOL(byte_3002A68, 4) +SYMBOL(gBlockSendBuffer, 256) +SYMBOL(u8_array_3002B70, 4) +SYMBOL(gLinkType, 4) +SYMBOL(u8_array_3002B78, 4) +SYMBOL(gBlockRecvBuffer, 1024) +SYMBOL(gSuppressLinkErrorMessage, 4) +SYMBOL(gSavedLinkPlayerCount, 4) +SYMBOL(gSendCmd, 16) +SYMBOL(gSavedMultiplayerId, 4) +SYMBOL(gReceivedRemoteLinkPlayers, 4) +SYMBOL(gLinkTestBGInfo, 16) +SYMBOL(gLinkCallback, 4) +SYMBOL(gSavedLinkPlayers, 112) +SYMBOL(gShouldAdvanceLinkState, 4) +SYMBOL(gLinkTestBlockChecksums, 8) +. += 0x4; +SYMBOL(gBlockRequestType, 4) . += 0x8; -. = ALIGN(4); -. = ALIGN(16); -gBattleBuffersTransferData = .; -. += 0x170; -. = ALIGN(4); -gBattle_BG3_X = .; -. += 0x4; -gBattle_BG1_Y = .; -. += 0x4; -gBattle_BG3_Y = .; +SYMBOL(gLastSendQueueCount, 4) +SYMBOL(gLink, 4032) +SYMBOL(gLastRecvQueueCount, 4) +SYMBOL(gLinkSavedIme, 4) +SYMBOL(gLocalTime, 8) +SYMBOL(gBattleBuffersTransferData, 368) +SYMBOL(gBattle_BG3_X, 4) +SYMBOL(gBattle_BG1_Y, 4) +SYMBOL(gBattle_BG3_Y, 4) +SYMBOL(gBattleTextBuff1, 16) +SYMBOL(gUnknown_030041D0, 48) +SYMBOL(gBattle_WIN1H, 4) +SYMBOL(gUnknown_03004210, 48) +SYMBOL(gBattle_WIN0V, 4) +SYMBOL(gBattle_WIN1V, 4) +SYMBOL(gUnknown_03004250, 48) +SYMBOL(gBattle_BG2_Y, 4) +SYMBOL(gUnknown_03004284, 4) +SYMBOL(gBattle_BG2_X, 4) +SYMBOL(gBattleTerrain, 4) +SYMBOL(gBattleTextBuff2, 16) +SYMBOL(gBattle_BG0_Y, 4) +SYMBOL(gBattle_BG0_X, 4) +SYMBOL(gBattleTextBuff3, 16) +SYMBOL(gBattle_BG1_X, 4) +SYMBOL(gBattle_WIN0H, 4) . += 0x8; -gBattleTextBuff1 = .; -. += 0x10; -gUnknown_030041D0 = .; -. += 0x30; -gBattle_WIN1H = .; -. += 0x10; -gUnknown_03004210 = .; -. += 0x30; -gBattle_WIN0V = .; -. += 0x4; -gBattle_WIN1V = .; -. += 0xC; -gUnknown_03004250 = .; -. += 0x30; -gBattle_BG2_Y = .; -. += 0x4; -gUnknown_03004284 = .; -. += 0x4; -gBattle_BG2_X = .; -. += 0x4; -gBattleTerrain = .; -. += 0x4; -gBattleTextBuff2 = .; -. += 0x10; -gBattle_BG0_Y = .; -. += 0x4; -gBattle_BG0_X = .; -. += 0xC; -gBattleTextBuff3 = .; -. += 0x10; -gBattle_BG1_X = .; -. += 0x4; -gBattle_WIN0H = .; -. += 0xC; -gPreBattleCallback1 = .; -. += 0x4; +SYMBOL(gPreBattleCallback1, 4) gBattleMainFunc = .; . += 0xC; gBattleResults = .; . += 0x1C; +// Why is this not aligned? gUnknown_030042FC = .; -. += 0xE; -gUnknown_0300430A = .; -. += 0xC; +. += 0x1A; gUnknown_03004316 = .; . += 0xE; gLeveledUpInBattle = .; . += 0xC; -gBattleBankFunc = .; -. += 0x10; -gHealthboxIDs = .; -. += 0x4; -gUnknown_03004344 = .; -. += 0x4; -gUnknown_03004348 = .; -. += 0x4; -gUnknown_0300434C = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gPlayerPartyCount = .; -. += 0x4; -. = ALIGN(16); -gPlayerParty = .; -. += 0x258; -. = ALIGN(4); -gEnemyPartyCount = .; -. += 0x4; -. = ALIGN(16); -gEnemyParty = .; -. += 0x258; -. = ALIGN(4); -. = ALIGN(4); -gRngValue = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gEggHatchData = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gFlashMemoryPresent = .; -. += 0x4; -gUnknown_03004824 = .; -. += 0x4; -gUnknown_03004828 = .; -. += 0x8; -. = ALIGN(4); -. = ALIGN(4); -gUnknown_03004830 = .; -. += 0x4; -. = ALIGN(4); -gInGameOpponentsNo = .; -. += 0x4; -. = ALIGN(16); -gUnknown_03004840 = .; -. += 0x14; -. = ALIGN(4); -gBerryBlenderData = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -word_3004858 = .; -. += 0x4; -. = ALIGN(4); -gFieldCallback = .; -. += 0x4; -. = ALIGN(4); -gUnknown_03004860 = .; -. += 0x4; -. = ALIGN(4); -gFieldLinkPlayerCount = .; -. += 0x4; -. = ALIGN(4); +SYMBOL(gBattleBankFunc, 16) +SYMBOL(gHealthboxIDs, 4) +SYMBOL(gUnknown_03004344, 4) +SYMBOL(gUnknown_03004348, 4) +SYMBOL(gUnknown_0300434C, 4) +SYMBOL(gPlayerPartyCount, 4) +SYMBOL(gPlayerParty, 600) +SYMBOL(gEnemyPartyCount, 4) +SYMBOL(gEnemyParty, 600) +SYMBOL(gRngValue, 4) +SYMBOL(gEggHatchData, 4) +SYMBOL(gFlashMemoryPresent, 4) +SYMBOL(gUnknown_03004824, 4) +SYMBOL(gUnknown_03004828, 4) +. += 0x4; +SYMBOL(gUnknown_03004830, 4) +SYMBOL(gInGameOpponentsNo, 4) +SYMBOL(gUnknown_03004840, 20) +SYMBOL(gBerryBlenderData, 4) +SYMBOL(word_3004858, 4) +SYMBOL(gFieldCallback, 4) +SYMBOL(gUnknown_03004860, 4) +SYMBOL(gFieldLinkPlayerCount, 4) . = ALIGN(16); gUnknown_03004870 = .; . += 0xC; -. = ALIGN(4); -. = ALIGN(16); -gUnknown_03004880 = .; -. += 0x18; -. = ALIGN(4); -gUnknown_03004898 = .; -. += 0x4; -. = ALIGN(4); -gUnknown_0300489C = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(16); -gMapObjects = .; -. += 0x240; -. = ALIGN(4); -. = ALIGN(4); -gSelectedMapObject = .; -. += 0x4; -. = ALIGN(4); -gPokemonItemUseCallback = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gMenuCallback = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gDisableMusic = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gSoundAnimFramesToWait = .; -. += 0x4; -. = ALIGN(16); -gBattleAnimArgs = .; -. += 0x10; -. = ALIGN(16); -gAnimSpriteIndexArray = .; -. += 0x10; -. = ALIGN(4); -. = ALIGN(16); -gTasks = .; -. += 0x280; -. = ALIGN(4); -. = ALIGN(16); -gUnknown_03004DA0 = .; -. += 0x20; -. = ALIGN(4); -. = ALIGN(16); -gScanlineEffect = .; -. += 0x20; -. = ALIGN(16); -gScanlineEffectRegBuffers = .; -. += 0xF00; -. = ALIGN(4); -. = ALIGN(4); -gLastFieldPokeMenuOpened = .; -. += 0x4; -. = ALIGN(4); -gUnknown_03005CE4 = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gUnknown_03005CE8 = .; -. += 0x4; -. = ALIGN(4); -gUnknown_03005CEC = .; -. += 0x4; -. = ALIGN(16); -gUnknown_03005CF0 = .; -. += 0x10; +SYMBOL(gUnknown_03004880, 24) +SYMBOL(gUnknown_03004898, 4) +SYMBOL(gUnknown_0300489C, 4) +SYMBOL(gMapObjects, 576) +SYMBOL(gSelectedMapObject, 4) +SYMBOL(gPokemonItemUseCallback, 4) +SYMBOL(gMenuCallback, 4) +SYMBOL(gDisableMusic, 4) +SYMBOL(gSoundAnimFramesToWait, 4) +SYMBOL(gBattleAnimArgs, 16) +SYMBOL(gAnimSpriteIndexArray, 16) +SYMBOL(gTasks, 640) +SYMBOL(gUnknown_03004DA0, 32) +SYMBOL(gScanlineEffect, 32) +SYMBOL(gScanlineEffectRegBuffers, 3840) +SYMBOL(gLastFieldPokeMenuOpened, 4) +SYMBOL(gUnknown_03005CE4, 4) +SYMBOL(gUnknown_03005CE8, 4) +SYMBOL(gUnknown_03005CEC, 4) +SYMBOL(gUnknown_03005CF0, 4) +// huh? . = ALIGN(16); gFieldItemUseCallback = .; . += 0x10; gBagPocketScrollStates = .; . += 0x14; -gCurrentBagPocketItemSlots = .; -. += 0x4; -. = ALIGN(4); -gUnknown_03005D28 = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gUnknown_03005D2C = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gUnknown_03005D30 = .; -. += 0x4; -. = ALIGN(4); -gSoundTestCryNum = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gUnknown_03005D38 = .; -. += 0x4; -. += 0x64; -. = ALIGN(16); -gUnknown_03005DA0 = .; -. += 0x48; -gUnknown_03005DE8 = .; -. += 0x4; -gUnknown_03005DEC = .; -. += 0x4; -gUnknown_03005DF0 = .; -. += 0x4; -gUnknown_03005DF4 = .; -. += 0x4; -gUnknown_03005DF8 = .; -. += 0x4; -gUnknown_03005DFC = .; -. += 0x4; -gUnknown_03005E00 = .; -. += 0x4; -gUnknown_03005E04 = .; -. += 0x4; -gUnknown_03005E08 = .; -. += 0x4; -gUnknown_03005E0C = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gUnknown_03005E10 = .; -. += 0x4; -. = ALIGN(16); -gUnknown_03005E20 = .; -. += 0x20; -. = ALIGN(16); -gUnknown_03005E40 = .; -. += 0x4C; -. = ALIGN(4); -gUnknown_03005E8C = .; -. += 0x4; -. = ALIGN(4); -gUnknown_03005E90 = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gCB2_AfterEvolution = .; -. += 0x4; -gUnknown_03005E98 = .; -. += 0x4; -. = ALIGN(4); -. = ALIGN(4); -gFirstSaveSector = .; -. += 0x4; -. = ALIGN(4); -gPrevSaveCounter = .; -. += 0x4; -. = ALIGN(4); -gLastKnownGoodSector = .; -. += 0x4; -. = ALIGN(4); -gDamagedSaveSectors = .; -. += 0x4; -. = ALIGN(4); -gSaveCounter = .; -. += 0x4; -. = ALIGN(4); -gFastSaveSection = .; -. += 0x4; -. = ALIGN(4); -gUnknown_03005EB4 = .; -. += 0x4; -. = ALIGN(4); -gSaveFileStatus = .; -. += 0x4; -. = ALIGN(4); -gGameContinueCallback = .; -. += 0x4; +SYMBOL(gCurrentBagPocketItemSlots, 4) +SYMBOL(gUnknown_03005D28, 4) +SYMBOL(gUnknown_03005D2C, 4) +SYMBOL(gUnknown_03005D30, 4) +SYMBOL(gSoundTestCryNum, 4) +SYMBOL(gUnknown_03005D38, 4) +. += 0x64; // huge gap? +SYMBOL(gUnknown_03005DA0, 0x48) +SYMBOL(gUnknown_03005DE8, 4) +SYMBOL(gUnknown_03005DEC, 4) +SYMBOL(gUnknown_03005DF0, 4) +SYMBOL(gUnknown_03005DF4, 4) +SYMBOL(gUnknown_03005DF8, 4) +SYMBOL(gUnknown_03005DFC, 4) +SYMBOL(gUnknown_03005E00, 4) +SYMBOL(gUnknown_03005E04, 4) +SYMBOL(gUnknown_03005E08, 4) +SYMBOL(gUnknown_03005E0C, 4) +SYMBOL(gUnknown_03005E10, 4) +SYMBOL(gUnknown_03005E20, 32) +SYMBOL(gUnknown_03005E40, 76) +SYMBOL(gUnknown_03005E8C, 4) +SYMBOL(gUnknown_03005E90, 4) +SYMBOL(gCB2_AfterEvolution, 4) +SYMBOL(gUnknown_03005E98, 4) +SYMBOL(gFirstSaveSector, 4) +SYMBOL(gPrevSaveCounter, 4) +SYMBOL(gLastKnownGoodSector, 4) +SYMBOL(gDamagedSaveSectors, 4) +SYMBOL(gSaveCounter, 4) +SYMBOL(gFastSaveSection, 4) +SYMBOL(gUnknown_03005EB4, 4) +SYMBOL(gSaveFileStatus, 4) +SYMBOL(gGameContinueCallback, 4) . += 0x10; -. = ALIGN(4); -. = ALIGN(4); -gIntroFrameCounter = .; -. += 0x4; -. = ALIGN(16); -gMultibootProgramStruct = .; -. += 0x2C; -. = ALIGN(4); -gUnknown_03005F0C = .; -. += 0x4; -gUnknown_03005F10 = .; -. += 0x4; +SYMBOL(gIntroFrameCounter, 4) +SYMBOL(gMultibootProgramStruct, 44) +SYMBOL(gUnknown_03005F0C, 4) +SYMBOL(gUnknown_03005F10, 4) gUnknown_03005F14 = .; . += 0xC; -. = ALIGN(4); -. = ALIGN(4); -gPokeblockFeedPokeSprite = .; -. += 0x4; -. = ALIGN(4); -gPokeblockFeedMonSpecies = .; -. += 0x4; -. = ALIGN(4); -gPokeblockMonNotFlipped = .; -. += 0x4; -. = ALIGN(4); -gPokeblockFeedMonSpriteID = .; -. += 0x4; -. = ALIGN(4); -gPokeblockFeedMonNature = .; -. += 0x4; -. = ALIGN(4); -gUnknown_03005F34 = .; -. += 0x4; -. = ALIGN(4); -gPokeblockFeedUnused0 = .; -. += 0x4; -. = ALIGN(4); -gUnknown_03005F3C = .; -. += 0x4; -. = ALIGN(4); -gUnknown_03005F40 = .; -. += 0x4; -. = ALIGN(16); -gPokeblockFeedPokeSpriteCopy = .; -. += 0x44; -. = ALIGN(4); -gUnknown_03005F94 = .; -. += 0x4; -. = ALIGN(16); -gUnknown_03005FA0 = .; -. += 0x30; -. = ALIGN(4); -. = ALIGN(16); -gSoundInfo = .; -. += 0xFB0; -. = ALIGN(16); -gPokemonCrySongs = .; -. += 0x68; -. = ALIGN(16); -gPokemonCryMusicPlayers = .; -. += 0x80; -. = ALIGN(16); -gMPlayJumpTable = .; -. += 0x90; -. = ALIGN(16); -gCgbChans = .; -. += 0x100; -. = ALIGN(16); -gPokemonCryTracks = .; -. += 0x140; -. = ALIGN(16); -gPokemonCrySong = .; -. += 0x34; -. = ALIGN(16); -gMPlay_BGM = .; -. += 0x40; -. = ALIGN(16); -gMPlay_SE1 = .; -. += 0x40; -. = ALIGN(16); -gMPlay_SE2 = .; -. += 0x40; -. = ALIGN(16); -gMPlayMemAccArea = .; -. += 0x10; -. = ALIGN(16); -gMPlay_SE3 = .; -. += 0x40; -. = ALIGN(4); -. = ALIGN(4); -gFlashTimeoutFlag = .; -. += 0x4; -. = ALIGN(4); -PollFlashStatus = .; -. += 0x4; -. = ALIGN(4); -WaitForFlashWrite = .; -. += 0x4; -. = ALIGN(4); -ProgramFlashSector = .; -. += 0x4; -. = ALIGN(4); -gFlash = .; -. += 0x4; -. = ALIGN(4); -ProgramFlashByte = .; -. += 0x4; -. = ALIGN(4); -gFlashNumRemainingBytes = .; -. += 0x4; -. = ALIGN(4); -EraseFlashChip = .; -. += 0x4; -. = ALIGN(4); -EraseFlashSector = .; -. += 0x4; -. = ALIGN(4); -gFlashMaxTime = .; -. += 0x4; +SYMBOL(gPokeblockFeedPokeSprite, 4) +SYMBOL(gPokeblockFeedMonSpecies, 4) +SYMBOL(gPokeblockMonNotFlipped, 4) +SYMBOL(gPokeblockFeedMonSpriteID, 4) +SYMBOL(gPokeblockFeedMonNature, 4) +SYMBOL(gUnknown_03005F34, 4) +SYMBOL(gPokeblockFeedUnused0, 4) +SYMBOL(gUnknown_03005F3C, 4) +SYMBOL(gUnknown_03005F40, 4) +SYMBOL(gPokeblockFeedPokeSpriteCopy, 68) +SYMBOL(gUnknown_03005F94, 4) +SYMBOL(gUnknown_03005FA0, 48) +SYMBOL(gSoundInfo, 4016) +SYMBOL(gPokemonCrySongs, 104) +SYMBOL(gPokemonCryMusicPlayers, 128) +SYMBOL(gMPlayJumpTable, 144) +SYMBOL(gCgbChans, 256) +SYMBOL(gPokemonCryTracks, 320) +SYMBOL(gPokemonCrySong, 52) +SYMBOL(gMPlay_BGM, 64) +SYMBOL(gMPlay_SE1, 64) +SYMBOL(gMPlay_SE2, 64) +SYMBOL(gMPlayMemAccArea, 16) +SYMBOL(gMPlay_SE3, 64) +SYMBOL(gFlashTimeoutFlag, 4) +SYMBOL(PollFlashStatus, 4) +SYMBOL(WaitForFlashWrite, 4) +SYMBOL(ProgramFlashSector, 4) +SYMBOL(gFlash, 4) +SYMBOL(ProgramFlashByte, 4) +SYMBOL(gFlashNumRemainingBytes, 4) +SYMBOL(EraseFlashChip, 4) +SYMBOL(EraseFlashSector, 4) +SYMBOL(gFlashMaxTime, 4) -- cgit v1.2.3 From 144e48af989692cd4012d9100b748b9cc1627d68 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 20 Jan 2018 23:30:42 -0600 Subject: fix typo --- sym_common.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sym_common.txt b/sym_common.txt index d8dc14812..2c390e214 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -34,8 +34,8 @@ SYMBOL(gLinkErrorOccurred, 4) SYMBOL(gLinkDebugValue2, 4) . += 0x4; #ifdef GERMAN -SYMB0L(deUnkValue1, 4) -SYMB0L(deUnkValue2, 4) +SYMBOL(deUnkValue1, 4) +SYMBOL(deUnkValue2, 4) #endif SYMBOL(gLinkPlayerPending, 4) SYMBOL(gLinkPlayers, 112) -- cgit v1.2.3 From 16f378cb66cbf5c0e4ef144357fe6601db4ac731 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 21 Jan 2018 01:29:33 -0600 Subject: don't generate ld scripts --- Makefile | 10 +- ld_script.sed | 4 - ld_script.txt | 4 +- sym_bss.txt | 84 +++---- sym_ewram.txt | 726 +++++++++++++++++++++++++++++----------------------------- 5 files changed, 410 insertions(+), 418 deletions(-) delete mode 100644 ld_script.sed diff --git a/Makefile b/Makefile index 7718ee523..83f37d8b7 100644 --- a/Makefile +++ b/Makefile @@ -109,16 +109,12 @@ tidy: $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@ %.elf: $(LD_SCRIPT) $(ALL_OBJECTS) - cd $(BUILD_DIR) && $(LD) -T ld_script.ld -Map ../../$(MAP) -o ../../$@ ../../$(LIBGCC) ../../$(LIBC) + cd $(BUILD_DIR) && $(LD) -T ld_script.ld -Map ../../$(MAP) ../../$(LIBGCC) ../../$(LIBC) -o ../../$@ -$(LD_SCRIPT): $(BUILD_DIR)/sym_bss.ld $(BUILD_DIR)/sym_common.ld $(BUILD_DIR)/sym_ewram.ld ld_script.txt - cd $(BUILD_DIR) && sed -f ../../ld_script.sed ../../ld_script.txt | sed "s#tools/#../../tools/#g" >ld_script.ld -$(BUILD_DIR)/sym_bss.ld: sym_bss.txt - cd $(BUILD_DIR) && ../../$(RAMSCRGEN) .bss ../../sym_bss.txt $(GAME_LANGUAGE) >sym_bss.ld +$(LD_SCRIPT): $(BUILD_DIR)/sym_common.ld ld_script.txt + cd $(BUILD_DIR) && sed -e "s#tools/#../../tools/#g" ../../ld_script.txt >ld_script.ld $(BUILD_DIR)/sym_common.ld: sym_common.txt $(CPP) -P $(CPPFLAGS) $< > $@ -$(BUILD_DIR)/sym_ewram.ld: sym_ewram.txt - cd $(BUILD_DIR) && ../../$(RAMSCRGEN) ewram_data ../../sym_ewram.txt $(GAME_LANGUAGE) >sym_ewram.ld $(C_OBJECTS): $(BUILD_DIR)/%.o: %.c $$(C_DEP) $(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i diff --git a/ld_script.sed b/ld_script.sed deleted file mode 100644 index 76b18c301..000000000 --- a/ld_script.sed +++ /dev/null @@ -1,4 +0,0 @@ -// { - r sym_bss.ld - d -} diff --git a/ld_script.txt b/ld_script.txt index 18de179bc..6931eb661 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -9,7 +9,7 @@ SECTIONS { ewram (NOLOAD) : ALIGN(4) { - INCLUDE "sym_ewram.ld" + INCLUDE "../../sym_ewram.txt" . = 0x40000; } @@ -20,7 +20,7 @@ SECTIONS { ALIGN(4) { /* .bss starts at 0x3000000 */ - + INCLUDE "../../sym_bss.txt" /* .bss.code starts at 0x3000F60 */ src/libs/m4a_2.o(.bss.code); diff --git a/sym_bss.txt b/sym_bss.txt index 6e95a609f..f36785ce8 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -1,42 +1,42 @@ - .include "src/engine/main.o" - .include "src/engine/sprite.o" - .include "src/engine/text.o" - .include "src/engine/string_util.o" - .include "src/engine/link.o" - .include "src/engine/rtc.o" - .include "src/field/daycare.o" - .include "src/engine/trade.o" - .include "src/scene/berry_blender.o" - .include "src/engine/play_time.o" - .include "src/field/overworld.o" - .include "src/field/field_camera.o" - .include "src/field/field_map_obj.o" - .include "src/field/field_message_box.o" - .include "src/engine/text_window.o" - .include "src/engine/script.o" - .include "src/field/start_menu.o" - .include "src/engine/menu.o" - .include "src/engine/tileset_anim.o" - .include "src/engine/sound.o" - .include "src/field/field_weather.o" - .include "src/field/field_effect.o" - .include "src/field/item_menu.o" - .include "src/field/shop.o" - .include "src/engine/record_mixing.o" - .include "src/field/tv.o" - .include "src/battle/battle_anim_80CA710.o" - .include "src/easy_chat_2.o" - .include "src/pokenav_before.o" - .include "src/field/mauville_man.o" - .include "src/field/menu_helpers.o" - .include "src/scene/contest_painting.o" - .include "src/field/pokeblock.o" - .include "src/field/field_specials.o" - .include "src/pokemon/learn_move.o" - .include "src/field/player_pc.o" - .include "src/libs/m4a_1.o" - .include "src/libs/agb_flash.o" - .include "src/libs/siirtc.o" - .include "tools/agbcc/lib/libgcc.a:dp-bit.o" - .include "tools/agbcc/lib/libgcc.a:fp-bit.o" - .include "tools/agbcc/lib/libc.a:syscalls.o" +. = ALIGN(4); src/engine/main.o(.bss); +. = ALIGN(4); src/engine/sprite.o(.bss); +. = ALIGN(4); src/engine/text.o(.bss); +. = ALIGN(4); src/engine/string_util.o(.bss); +. = ALIGN(4); src/engine/link.o(.bss); +. = ALIGN(4); src/engine/rtc.o(.bss); +. = ALIGN(4); src/field/daycare.o(.bss); +. = ALIGN(4); src/engine/trade.o(.bss); +. = ALIGN(4); src/scene/berry_blender.o(.bss); +. = ALIGN(4); src/engine/play_time.o(.bss); +. = ALIGN(4); src/field/overworld.o(.bss); +. = ALIGN(4); src/field/field_camera.o(.bss); +. = ALIGN(4); src/field/field_map_obj.o(.bss); +. = ALIGN(4); src/field/field_message_box.o(.bss); +. = ALIGN(4); src/engine/text_window.o(.bss); +. = ALIGN(4); src/engine/script.o(.bss); +. = ALIGN(4); src/field/start_menu.o(.bss); +. = ALIGN(4); src/engine/menu.o(.bss); +. = ALIGN(4); src/engine/tileset_anim.o(.bss); +. = ALIGN(4); src/engine/sound.o(.bss); +. = ALIGN(4); src/field/field_weather.o(.bss); +. = ALIGN(4); src/field/field_effect.o(.bss); +. = ALIGN(4); src/field/item_menu.o(.bss); +. = ALIGN(4); src/field/shop.o(.bss); +. = ALIGN(4); src/engine/record_mixing.o(.bss); +. = ALIGN(4); src/field/tv.o(.bss); +. = ALIGN(4); src/battle/battle_anim_80CA710.o(.bss); +. = ALIGN(4); src/easy_chat_2.o(.bss); +. = ALIGN(4); src/pokenav_before.o(.bss); +. = ALIGN(4); src/field/mauville_man.o(.bss); +. = ALIGN(4); src/field/menu_helpers.o(.bss); +. = ALIGN(4); src/scene/contest_painting.o(.bss); +. = ALIGN(4); src/field/pokeblock.o(.bss); +. = ALIGN(4); src/field/field_specials.o(.bss); +. = ALIGN(4); src/pokemon/learn_move.o(.bss); +. = ALIGN(4); src/field/player_pc.o(.bss); +. = ALIGN(4); src/libs/m4a_1.o(.bss); +. = ALIGN(4); src/libs/agb_flash.o(.bss); +. = ALIGN(4); src/libs/siirtc.o(.bss); +. = ALIGN(4); ../../tools/agbcc/lib/libgcc.a:dp-bit.o(.bss); +. = ALIGN(4); ../../tools/agbcc/lib/libgcc.a:fp-bit.o(.bss); +. = ALIGN(4); ../../tools/agbcc/lib/libc.a:syscalls.o(.bss); diff --git a/sym_ewram.txt b/sym_ewram.txt index d2fd0aabe..f6b4852a8 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,471 +1,471 @@ - .include "src/engine/main.o" - .include "src/engine/sprite.o" - .include "src/engine/text.o" - .include "src/engine/string_util.o" +. = ALIGN(4); src/engine/main.o(ewram_data); +. = ALIGN(4); src/engine/sprite.o(ewram_data); +. = ALIGN(4); src/engine/text.o(ewram_data); +. = ALIGN(4); src/engine/string_util.o(ewram_data); - .space 0x2E8 +. += 0x2E8; - .include "src/engine/link.o" - .include "src/rom3.o" +. = ALIGN(4); src/engine/link.o(ewram_data); +. = ALIGN(4); src/rom3.o(ewram_data); -@ battle +/* battle */ - .align 2 -gUnknown_020238C8: @ 20238C8 - .space 0x4 + . = ALIGN(4); +gUnknown_020238C8 = .; /* 20238C8 */ + . += 0x4; -gDisplayedStringBattle: @ 20238CC - .space 0x12C +gDisplayedStringBattle = .; /* 20238CC */ + . += 0x12C; -gBattleTypeFlags: @ 20239F8 - .space 0x4 +gBattleTypeFlags = .; /* 20239F8 */ + . += 0x4; -gUnknown_020239FC: @ 20239FC - .space 0x4 +gUnknown_020239FC = .; /* 20239FC */ + . += 0x4; -gUnknown_02023A00: @ 2023A00 - .space 0x4 +gUnknown_02023A00 = .; /* 2023A00 */ + . += 0x4; -gUnknown_02023A04: @ 2023A04 - .space 0x10 +gUnknown_02023A04 = .; /* 2023A04 */ + . += 0x10; -gUnknown_02023A14: @ 2023A14 - .space 0x4C +gUnknown_02023A14 = .; /* 2023A14 */ + . += 0x4C; -gBattleBufferA: @ 2023A60 - .space 0x2 +gBattleBufferA = .; /* 2023A60 */ + . += 0x2; -gUnknown_02023A62: @ 2023A62 - .space 0x1 +gUnknown_02023A62 = .; /* 2023A62 */ + . += 0x1; -gUnknown_02023A63: @ 2023A63 - .space 0x1 +gUnknown_02023A63 = .; /* 2023A63 */ + . += 0x1; -gUnknown_02023A64: @ 2023A64 - .space 0x7FC +gUnknown_02023A64 = .; /* 2023A64 */ + . += 0x7FC; -gBattleBufferB: @ 2024260 - .space 0x4 +gBattleBufferB = .; /* 2024260 */ + . += 0x4; -gUnknown_02024264: @ 2024264 - .space 0x7FC +gUnknown_02024264 = .; /* 2024264 */ + . += 0x7FC; -gActiveBank: @ 2024A60 - .space 0x4 +gActiveBank = .; /* 2024A60 */ + . += 0x4; -gBattleExecBuffer: @ 2024A64 - .space 0x4 +gBattleExecBuffer = .; /* 2024A64 */ + . += 0x4; -gNoOfAllBanks: @ 2024A68 - .space 0x2 +gNoOfAllBanks = .; /* 2024A68 */ + . += 0x2; -gBattlePartyID: @ 2024A6A - .space 0x8 +gBattlePartyID = .; /* 2024A6A */ + . += 0x8; -gBanksBySide: @ 2024A72 - .space 0x4 +gBanksBySide = .; /* 2024A72 */ + . += 0x4; -gActionsByTurnOrder: @ 2024A76 - .space 0x4 +gActionsByTurnOrder = .; /* 2024A76 */ + . += 0x4; -gBanksByTurnOrder: @ 2024A7A - .space 0x4 +gBanksByTurnOrder = .; /* 2024A7A */ + . += 0x4; -gCurrentTurnActionNumber: @ 2024A7E - .space 0x1 +gCurrentTurnActionNumber = .; /* 2024A7E */ + . += 0x1; -gCurrentActionFuncId: @ 2024A7F - .space 0x1 +gCurrentActionFuncId = .; /* 2024A7F */ + . += 0x1; -gBattleMons: @ 2024A80 - .space 0xC +gBattleMons = .; /* 2024A80 */ + . += 0xC; -gUnknown_02024A8C: @ 2024A8C - .space 0xC +gUnknown_02024A8C = .; /* 2024A8C */ + . += 0xC; -gUnknown_02024A98: @ 2024A98 - .space 0xC +gUnknown_02024A98 = .; /* 2024A98 */ + . += 0xC; -gUnknown_02024AA4: @ 2024AA4 - .space 0x4 +gUnknown_02024AA4 = .; /* 2024AA4 */ + . += 0x4; -gUnknown_02024AA8: @ 2024AA8 - .space 0x24 +gUnknown_02024AA8 = .; /* 2024AA8 */ + . += 0x24; -gUnknown_02024ACC: @ 2024ACC - .space 0x4 +gUnknown_02024ACC = .; /* 2024ACC */ + . += 0x4; -gUnknown_02024AD0: @ 2024AD0 - .space 0x110 +gUnknown_02024AD0 = .; /* 2024AD0 */ + . += 0x110; -gObjectBankIDs: @ 2024BE0 - .space 0x4 +gObjectBankIDs = .; /* 2024BE0 */ + . += 0x4; -gCurrMovePos: @ 2024BE4 - .space 0x1 +gCurrMovePos = .; /* 2024BE4 */ + . += 0x1; -gUnknown_02024BE5: @ 2024BE5 - .space 0x1 +gUnknown_02024BE5 = .; /* 2024BE5 */ + . += 0x1; -gCurrentMove: @ 2024BE6 - .space 0x2 +gCurrentMove = .; /* 2024BE6 */ + . += 0x2; -gChosenMove: @ 2024BE8 - .space 0x2 +gChosenMove = .; /* 2024BE8 */ + . += 0x2; -gRandomMove: @ 2024BEA - .space 0x2 +gRandomMove = .; /* 2024BEA */ + . += 0x2; -gBattleMoveDamage: @ 2024BEC - .space 0x4 +gBattleMoveDamage = .; /* 2024BEC */ + . += 0x4; -gHpDealt: @ 2024BF0 - .space 0x4 +gHpDealt = .; /* 2024BF0 */ + . += 0x4; -gTakenDmg: @ 2024BF4 - .space 0x10 +gTakenDmg = .; /* 2024BF4 */ + . += 0x10; -gLastUsedItem: @ 2024C04 - .space 0x2 +gLastUsedItem = .; /* 2024C04 */ + . += 0x2; -gLastUsedAbility: @ 2024C06 - .space 0x1 +gLastUsedAbility = .; /* 2024C06 */ + . += 0x1; -gBankAttacker: @ 2024C07 - .space 0x1 +gBankAttacker = .; /* 2024C07 */ + . += 0x1; -gBankTarget: @ 2024C08 - .space 0x1 +gBankTarget = .; /* 2024C08 */ + . += 0x1; -gBank1: @ 2024C09 - .space 0x1 +gBank1 = .; /* 2024C09 */ + . += 0x1; -gEffectBank: @ 2024C0A - .space 0x1 +gEffectBank = .; /* 2024C0A */ + . += 0x1; -gStringBank: @ 2024C0B - .space 0x1 +gStringBank = .; /* 2024C0B */ + . += 0x1; -gAbsentBankFlags: @ 2024C0C - .space 0x1 +gAbsentBankFlags = .; /* 2024C0C */ + . += 0x1; -gCritMultiplier: @ 2024C0D - .space 0x1 +gCritMultiplier = .; /* 2024C0D */ + . += 0x1; -gMultiHitCounter: @ 2024C0E - .space 0x2 +gMultiHitCounter = .; /* 2024C0E */ + . += 0x2; -gBattlescriptCurrInstr: @ 2024C10 - .space 0x8 +gBattlescriptCurrInstr = .; /* 2024C10 */ + . += 0x8; -gActionForBanks: @ 2024C18 - .space 0x4 +gActionForBanks = .; /* 2024C18 */ + . += 0x4; -gUnknown_02024C1C: @ 2024C1C - .space 0x10 +gUnknown_02024C1C = .; /* 2024C1C */ + . += 0x10; -gUnknown_02024C2C: @ 2024C2C - .space 0x8 +gUnknown_02024C2C = .; /* 2024C2C */ + . += 0x8; -gLastUsedMove: @ 2024C34 - .space 0x8 +gLastUsedMove = .; /* 2024C34 */ + . += 0x8; -gLastLandedMoves: @ 2024C3C - .space 0x8 +gLastLandedMoves = .; /* 2024C3C */ + . += 0x8; -gLastHitByType: @ 2024C44 - .space 0x8 +gLastHitByType = .; /* 2024C44 */ + . += 0x8; -gUnknown_02024C4C: @ 2024C4C - .space 0x8 +gUnknown_02024C4C = .; /* 2024C4C */ + . += 0x8; -gLockedMoves: @ 2024C54 - .space 0x8 +gLockedMoves = .; /* 2024C54 */ + . += 0x8; -gUnknown_02024C5C: @ 2024C5C - .space 0x4 +gUnknown_02024C5C = .; /* 2024C5C */ + . += 0x4; -gChosenMovesByBanks: @ 2024C60 - .space 0x8 +gChosenMovesByBanks = .; /* 2024C60 */ + . += 0x8; -gBattleMoveFlags: @ 2024C68 - .space 0x4 +gBattleMoveFlags = .; /* 2024C68 */ + . += 0x4; -gHitMarker: @ 2024C6C - .space 0x4 +gHitMarker = .; /* 2024C6C */ + . += 0x4; -gUnknown_02024C70: @ 2024C70 - .space 0x4 +gUnknown_02024C70 = .; /* 2024C70 */ + . += 0x4; -gTakenDmgBanks: @ 2024C74 - .space 0x4 +gTakenDmgBanks = .; /* 2024C74 */ + . += 0x4; -gUnknown_02024C78: @ 2024C78 - .space 0x2 +gUnknown_02024C78 = .; /* 2024C78 */ + . += 0x2; -gSideAffecting: @ 2024C7A - .space 0x6 +gSideAffecting = .; /* 2024C7A */ + . += 0x6; -gSideTimers: @ 2024C80 - .space 0x18 +gSideTimers = .; /* 2024C80 */ + . += 0x18; -gStatuses3: @ 2024C98 - .space 0x10 +gStatuses3 = .; /* 2024C98 */ + . += 0x10; -gDisableStructs: @ 2024CA8 - .space 0x70 +gDisableStructs = .; /* 2024CA8 */ + . += 0x70; -gPauseCounterBattle: @ 2024D18 - .space 0x2 +gPauseCounterBattle = .; /* 2024D18 */ + . += 0x2; -gPaydayMoney: @ 2024D1A - .space 0x2 +gPaydayMoney = .; /* 2024D1A */ + . += 0x2; -gRandomTurnNumber: @ 2024D1C - .space 0x2 +gRandomTurnNumber = .; /* 2024D1C */ + . += 0x2; -gBattleCommunication: @ 2024D1E - .space 0x1 +gBattleCommunication = .; /* 2024D1E */ + . += 0x1; -gUnknown_02024D1F: @ 2024D1F - .space 0x7 +gUnknown_02024D1F = .; /* 2024D1F */ + . += 0x7; -gBattleOutcome: @ 2024D26 - .space 0x2 +gBattleOutcome = .; /* 2024D26 */ + . += 0x2; -gProtectStructs: @ 2024D28 - .space 0x40 +gProtectStructs = .; /* 2024D28 */ + . += 0x40; -gSpecialStatuses: @ 2024D68 - .space 0x50 +gSpecialStatuses = .; /* 2024D68 */ + . += 0x50; -gBattleWeather: @ 2024DB8 - .space 0x4 +gBattleWeather = .; /* 2024DB8 */ + . += 0x4; -gWishFutureKnock: @ 2024DBC - .space 0x20 +gWishFutureKnock = .; /* 2024DBC */ + . += 0x20; -gUnknown_02024DDC: @ 2024DDC - .space 0xC +gUnknown_02024DDC = .; /* 2024DDC */ + . += 0xC; -gUnknown_02024DE8: @ 2024DE8 - .space 0x2 +gUnknown_02024DE8 = .; /* 2024DE8 */ + . += 0x2; -gSentPokesToOpponent: @ 2024DEA - .space 0x2 +gSentPokesToOpponent = .; /* 2024DEA */ + . += 0x2; -gDynamicBasePower: @ 2024DEC - .space 0x2 +gDynamicBasePower = .; /* 2024DEC */ + . += 0x2; -gExpShareExp: @ 2024DEE - .space 0x2 +gExpShareExp = .; /* 2024DEE */ + . += 0x2; -gEnigmaBerries: @ 2024DF0 - .space 0x8 +gEnigmaBerries = .; /* 2024DF0 */ + . += 0x8; -gUnknown_02024DF8: @ 2024DF8 - .space 0x68 +gUnknown_02024DF8 = .; /* 2024DF8 */ + . += 0x68; -gActionSelectionCursor: @ 2024E60 - .space 0x4 +gActionSelectionCursor = .; /* 2024E60 */ + . += 0x4; -gMoveSelectionCursor: @ 2024E64 - .space 0x4 +gMoveSelectionCursor = .; /* 2024E64 */ + . += 0x4; -gUnknown_02024E68: @ 2024E68 - .space 0x4 +gUnknown_02024E68 = .; /* 2024E68 */ + . += 0x4; -gBankInMenu: @ 2024E6C - .space 0x1 +gBankInMenu = .; /* 2024E6C */ + . += 0x1; -gDoingBattleAnim: @ 2024E6D - .space 0x3 +gDoingBattleAnim = .; /* 2024E6D */ + . += 0x3; -gTransformedPersonalities: @ 2024E70 - .space 0x10 +gTransformedPersonalities = .; /* 2024E70 */ + . += 0x10; -gBattleMovePower: @ 2024E80 - .space 0x2 +gBattleMovePower = .; /* 2024E80 */ + . += 0x2; -gMoveToLearn: @ 2024E82 - .space 0x2 +gMoveToLearn = .; /* 2024E82 */ + . += 0x2; -gBattleMonForms: @ 2024E84 - .space 0x4 +gBattleMonForms = .; /* 2024E84 */ + . += 0x4; - .include "src/pokemon/pokemon_1.o" - .include "src/pokemon/pokemon_2.o" - .include "src/engine/load_save.o" - .include "src/engine/trade.o" - .include "src/scene/berry_blender.o" - .include "src/scene/new_game.o" - .include "src/field/overworld.o" - .include "src/field/fieldmap.o" - .include "src/field/field_camera.o" - .include "src/field/field_player_avatar.o" - .include "src/field/field_message_box.o" - .include "src/engine/script.o" - .include "src/field/scrcmd.o" - .include "src/field/field_control_avatar.o" - .include "src/field/event_data.o" - .include "src/field/party_menu.o" - .include "src/field/start_menu.o" - .include "src/engine/menu.o" - .include "src/engine/tileset_anim.o" - .include "src/engine/palette.o" - .include "src/engine/sound.o" - .include "src/battle/battle_anim.o" - .include "src/rom_8077ABC.o" - .include "src/scene/title_screen.o" - .include "src/field/field_weather.o" - .include "src/battle/battle_setup.o" - .include "src/field/wild_encounter.o" - .include "src/field/field_effect.o" - .include "src/scanline_effect.o" - .include "src/pokemon/pokemon_menu.o" - .include "src/pokemon/pokedex.o" - .include "src/engine/trainer_card.o" - .include "src/pokemon/pokemon_storage_system.o" +. = ALIGN(4); src/pokemon/pokemon_1.o(ewram_data); +. = ALIGN(4); src/pokemon/pokemon_2.o(ewram_data); +. = ALIGN(4); src/engine/load_save.o(ewram_data); +. = ALIGN(4); src/engine/trade.o(ewram_data); +. = ALIGN(4); src/scene/berry_blender.o(ewram_data); +. = ALIGN(4); src/scene/new_game.o(ewram_data); +. = ALIGN(4); src/field/overworld.o(ewram_data); +. = ALIGN(4); src/field/fieldmap.o(ewram_data); +. = ALIGN(4); src/field/field_camera.o(ewram_data); +. = ALIGN(4); src/field/field_player_avatar.o(ewram_data); +. = ALIGN(4); src/field/field_message_box.o(ewram_data); +. = ALIGN(4); src/engine/script.o(ewram_data); +. = ALIGN(4); src/field/scrcmd.o(ewram_data); +. = ALIGN(4); src/field/field_control_avatar.o(ewram_data); +. = ALIGN(4); src/field/event_data.o(ewram_data); +. = ALIGN(4); src/field/party_menu.o(ewram_data); +. = ALIGN(4); src/field/start_menu.o(ewram_data); +. = ALIGN(4); src/engine/menu.o(ewram_data); +. = ALIGN(4); src/engine/tileset_anim.o(ewram_data); +. = ALIGN(4); src/engine/palette.o(ewram_data); +. = ALIGN(4); src/engine/sound.o(ewram_data); +. = ALIGN(4); src/battle/battle_anim.o(ewram_data); +. = ALIGN(4); src/rom_8077ABC.o(ewram_data); +. = ALIGN(4); src/scene/title_screen.o(ewram_data); +. = ALIGN(4); src/field/field_weather.o(ewram_data); +. = ALIGN(4); src/battle/battle_setup.o(ewram_data); +. = ALIGN(4); src/field/wild_encounter.o(ewram_data); +. = ALIGN(4); src/field/field_effect.o(ewram_data); +. = ALIGN(4); src/scanline_effect.o(ewram_data); +. = ALIGN(4); src/pokemon/pokemon_menu.o(ewram_data); +. = ALIGN(4); src/pokemon/pokedex.o(ewram_data); +. = ALIGN(4); src/engine/trainer_card.o(ewram_data); +. = ALIGN(4); src/pokemon/pokemon_storage_system.o(ewram_data); -@ still pokemon_storage_system +/* still pokemon_storage_system */ - .align 2 -gUnknown_02038470: @ 2038470 - .space 0x3 + . = ALIGN(4); +gUnknown_02038470 = .; /* 2038470 */ + . += 0x3; -gUnknown_02038473: @ 2038473 - .space 0x1 +gUnknown_02038473 = .; /* 2038473 */ + . += 0x1; -gUnknown_02038474: @ 2038474 - .space 0x4 +gUnknown_02038474 = .; /* 2038474 */ + . += 0x4; -gUnknown_02038478: @ 2038478 - .space 0x4 - -gUnknown_0203847C: @ 203847C - .space 0x1 - -gUnknown_0203847D: @ 203847D - .space 0x1 - -gUnknown_0203847E: @ 203847E - .space 0x1 - -gUnknown_0203847F: @ 203847F - .space 0x1 - -gUnknown_02038480: @ 2038480 - .space 0x64 - -gUnknown_020384E4: @ 20384E4 - .space 0x1 - -gUnknown_020384E5: @ 20384E5 - .space 0x1 - -gUnknown_020384E6: @ 20384E6 - .space 0x1 - -gUnknown_020384E7: @ 20384E7 - .space 0x1 - -gUnknown_020384E8: @ 20384E8 - .space 0x1 - -gUnknown_020384E9: @ 20384E9 - .space 0x1 - -gUnknown_020384EA: @ 20384EA - .space 0x2 - -gUnknown_020384EC: @ 20384EC - .space 0x4 - - .include "src/pokemon/pokemon_summary_screen.o" - .include "src/field/script_movement.o" - .include "src/field/map_name_popup.o" - .include "src/field/item_menu.o" - .include "src/contest.o" - .include "src/field/shop.o" - .include "src/field/fldeff_escalator.o" - .include "src/field/money.o" - .include "src/engine/record_mixing.o" - .include "src/debug/sound_check_menu.o" - .include "src/field/secret_base.o" - .include "src/field/tv.o" - .include "src/field/pc_screen_effect.o" - .include "src/field/rotating_gate.o" - .include "src/field/safari_zone.o" - .include "src/easy_chat_2.o" - -@ pokenav - - .align 2 -gUnknown_020388B0: @ 20388B0 - .space 0x4 - -gUnknown_020388B4: @ 20388B4 - .space 0x4 - - .include "src/pokemon/mon_markings.o" - .include "src/field/mauville_man.o" - .include "src/field/menu_helpers.o" - .include "src/field/region_map.o" - .include "src/field/decoration.o" - .include "src/battle/battle_ai.o" - .include "src/rom6.o" - .include "src/field/pokeblock.o" - .include "src/field/field_specials.o" - -@ pokedex_area_screen - - .align 2 -gUnknown_02039260: @ 2039260 - .space 0x2 +gUnknown_02038478 = .; /* 2038478 */ + . += 0x4; + +gUnknown_0203847C = .; /* 203847C */ + . += 0x1; + +gUnknown_0203847D = .; /* 203847D */ + . += 0x1; + +gUnknown_0203847E = .; /* 203847E */ + . += 0x1; + +gUnknown_0203847F = .; /* 203847F */ + . += 0x1; + +gUnknown_02038480 = .; /* 2038480 */ + . += 0x64; + +gUnknown_020384E4 = .; /* 20384E4 */ + . += 0x1; + +gUnknown_020384E5 = .; /* 20384E5 */ + . += 0x1; + +gUnknown_020384E6 = .; /* 20384E6 */ + . += 0x1; + +gUnknown_020384E7 = .; /* 20384E7 */ + . += 0x1; + +gUnknown_020384E8 = .; /* 20384E8 */ + . += 0x1; + +gUnknown_020384E9 = .; /* 20384E9 */ + . += 0x1; + +gUnknown_020384EA = .; /* 20384EA */ + . += 0x2; + +gUnknown_020384EC = .; /* 20384EC */ + . += 0x4; + +. = ALIGN(4); src/pokemon/pokemon_summary_screen.o(ewram_data); +. = ALIGN(4); src/field/script_movement.o(ewram_data); +. = ALIGN(4); src/field/map_name_popup.o(ewram_data); +. = ALIGN(4); src/field/item_menu.o(ewram_data); +. = ALIGN(4); src/contest.o(ewram_data); +. = ALIGN(4); src/field/shop.o(ewram_data); +. = ALIGN(4); src/field/fldeff_escalator.o(ewram_data); +. = ALIGN(4); src/field/money.o(ewram_data); +. = ALIGN(4); src/engine/record_mixing.o(ewram_data); +. = ALIGN(4); src/debug/sound_check_menu.o(ewram_data); +. = ALIGN(4); src/field/secret_base.o(ewram_data); +. = ALIGN(4); src/field/tv.o(ewram_data); +. = ALIGN(4); src/field/pc_screen_effect.o(ewram_data); +. = ALIGN(4); src/field/rotating_gate.o(ewram_data); +. = ALIGN(4); src/field/safari_zone.o(ewram_data); +. = ALIGN(4); src/easy_chat_2.o(ewram_data); + +/* pokenav */ + + . = ALIGN(4); +gUnknown_020388B0 = .; /* 20388B0 */ + . += 0x4; + +gUnknown_020388B4 = .; /* 20388B4 */ + . += 0x4; + +. = ALIGN(4); src/pokemon/mon_markings.o(ewram_data); +. = ALIGN(4); src/field/mauville_man.o(ewram_data); +. = ALIGN(4); src/field/menu_helpers.o(ewram_data); +. = ALIGN(4); src/field/region_map.o(ewram_data); +. = ALIGN(4); src/field/decoration.o(ewram_data); +. = ALIGN(4); src/battle/battle_ai.o(ewram_data); +. = ALIGN(4); src/rom6.o(ewram_data); +. = ALIGN(4); src/field/pokeblock.o(ewram_data); +. = ALIGN(4); src/field/field_specials.o(ewram_data); + +/* pokedex_area_screen */ + + . = ALIGN(4); +gUnknown_02039260 = .; /* 2039260 */ + . += 0x2; -gUnknown_02039262: @ 2039262 - .space 0x2 +gUnknown_02039262 = .; /* 2039262 */ + . += 0x2; -gUnknown_02039264: @ 2039264 - .space 0x2 +gUnknown_02039264 = .; /* 2039264 */ + . += 0x2; -gUnknown_02039266: @ 2039266 - .space 0x2 +gUnknown_02039266 = .; /* 2039266 */ + . += 0x2; -gUnknown_02039268: @ 2039268 - .space 0x2 +gUnknown_02039268 = .; /* 2039268 */ + . += 0x2; -gUnknown_0203926A: @ 203926A - .space 0x2 - - .include "src/battle/battle_message.o" - .include "src/field/choose_party.o" - .include "src/scene/cable_car.o" - .include "src/engine/save.o" - .include "src/engine/mystery_event_script.o" - .include "src/field/roamer.o" - .include "src/field/use_pokeblock.o" - .include "src/field/player_pc.o" - .include "src/scene/intro.o" - .include "src/scene/hall_of_fame.o" - .include "src/scene/credits.o" - .include "src/field/lottery_corner.o" - .include "src/field/berry_tag_screen.o" - .include "src/engine/mystery_event_menu.o" - .include "src/engine/save_failed_screen.o" - .include "src/pokemon/pokeblock_feed.o" - .include "src/scene/intro_credits_graphics.o" - -@ ??? - - .align 4 -gTileBuffer: @ 2039360 - .space 0x100 - -gUnknown_02039460: @ 2039460 - .space 0x300 - -gUnknown_02039760: @ 2039760 - .space 0xC00 - - .include "src/engine/menu_cursor.o" +gUnknown_0203926A = .; /* 203926A */ + . += 0x2; + +. = ALIGN(4); src/battle/battle_message.o(ewram_data); +. = ALIGN(4); src/field/choose_party.o(ewram_data); +. = ALIGN(4); src/scene/cable_car.o(ewram_data); +. = ALIGN(4); src/engine/save.o(ewram_data); +. = ALIGN(4); src/engine/mystery_event_script.o(ewram_data); +. = ALIGN(4); src/field/roamer.o(ewram_data); +. = ALIGN(4); src/field/use_pokeblock.o(ewram_data); +. = ALIGN(4); src/field/player_pc.o(ewram_data); +. = ALIGN(4); src/scene/intro.o(ewram_data); +. = ALIGN(4); src/scene/hall_of_fame.o(ewram_data); +. = ALIGN(4); src/scene/credits.o(ewram_data); +. = ALIGN(4); src/field/lottery_corner.o(ewram_data); +. = ALIGN(4); src/field/berry_tag_screen.o(ewram_data); +. = ALIGN(4); src/engine/mystery_event_menu.o(ewram_data); +. = ALIGN(4); src/engine/save_failed_screen.o(ewram_data); +. = ALIGN(4); src/pokemon/pokeblock_feed.o(ewram_data); +. = ALIGN(4); src/scene/intro_credits_graphics.o(ewram_data); + +/* ??? */ + + . = ALIGN(16); +gTileBuffer = .; /* 2039360 */ + . += 0x100; + +gUnknown_02039460 = .; /* 2039460 */ + . += 0x300; + +gUnknown_02039760 = .; /* 2039760 */ + . += 0xC00; + +. = ALIGN(4); src/engine/menu_cursor.o(ewram_data); -- cgit v1.2.3 From f52a7bea85cac244b63b50fcf038830450946fb0 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 21 Jan 2018 10:31:03 -0600 Subject: annotate filenames of common symbols --- sym_common.txt | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/sym_common.txt b/sym_common.txt index 2c390e214..64e87c046 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -4,6 +4,8 @@ name = .; \ . += size; + +// main.c SYMBOL(gKeyRepeatStartDelay, 4) SYMBOL(gLinkTransferringData, 4) SYMBOL(gMain, 1088) @@ -13,6 +15,8 @@ SYMBOL(gIntrTable, 56) SYMBOL(gLinkVSyncDisabled, 4) SYMBOL(IntrMain_Buffer, 2048) SYMBOL(gPcmDmaCounter, 4) + +// sprite.c SYMBOL(gSpriteOrder, 64) SYMBOL(gSpriteTileAllocBitmap, 128) SYMBOL(gSpriteCoordOffsetX, 4) @@ -25,7 +29,11 @@ SYMBOL(gOamMatrices, 256) SYMBOL(gShouldProcessSpriteCopyRequests, 4) SYMBOL(gOamMatrixAllocBitmap, 4) SYMBOL(gReservedSpritePaletteCount, 4) + +// string_util.c SYMBOL(gUnknownStringVar, 16) + +// link.c SYMBOL(word_3002910, 8) SYMBOL(gLinkDebugValue1, 4) SYMBOL(localLinkPlayerBlock, 60) @@ -71,7 +79,11 @@ SYMBOL(gLastSendQueueCount, 4) SYMBOL(gLink, 4032) SYMBOL(gLastRecvQueueCount, 4) SYMBOL(gLinkSavedIme, 4) + +// rtc.c SYMBOL(gLocalTime, 8) + +// battle SYMBOL(gBattleBuffersTransferData, 368) SYMBOL(gBattle_BG3_X, 4) SYMBOL(gBattle_BG1_Y, 4) @@ -111,46 +123,88 @@ SYMBOL(gHealthboxIDs, 4) SYMBOL(gUnknown_03004344, 4) SYMBOL(gUnknown_03004348, 4) SYMBOL(gUnknown_0300434C, 4) + +// pokemon_1.c SYMBOL(gPlayerPartyCount, 4) SYMBOL(gPlayerParty, 600) SYMBOL(gEnemyPartyCount, 4) SYMBOL(gEnemyParty, 600) + +// random.c SYMBOL(gRngValue, 4) + +// egg_hatch.c SYMBOL(gEggHatchData, 4) + +// load_save.c SYMBOL(gFlashMemoryPresent, 4) + +// ??? SYMBOL(gUnknown_03004824, 4) SYMBOL(gUnknown_03004828, 4) . += 0x4; + +// berry_blender.c SYMBOL(gUnknown_03004830, 4) SYMBOL(gInGameOpponentsNo, 4) SYMBOL(gUnknown_03004840, 20) SYMBOL(gBerryBlenderData, 4) + +// overworld.c SYMBOL(word_3004858, 4) SYMBOL(gFieldCallback, 4) SYMBOL(gUnknown_03004860, 4) SYMBOL(gFieldLinkPlayerCount, 4) + +// fieldmap.c . = ALIGN(16); gUnknown_03004870 = .; . += 0xC; + +// field_camera.c SYMBOL(gUnknown_03004880, 24) SYMBOL(gUnknown_03004898, 4) SYMBOL(gUnknown_0300489C, 4) + +// field_map_obj.c SYMBOL(gMapObjects, 576) + +// field_control_avatar.c SYMBOL(gSelectedMapObject, 4) + +// ??? SYMBOL(gPokemonItemUseCallback, 4) + +// start_menu.c SYMBOL(gMenuCallback, 4) + +// sound.c SYMBOL(gDisableMusic, 4) + +// battle_anim.c SYMBOL(gSoundAnimFramesToWait, 4) SYMBOL(gBattleAnimArgs, 16) SYMBOL(gAnimSpriteIndexArray, 16) + +// task.c SYMBOL(gTasks, 640) + +// mori_debug_menu.c SYMBOL(gUnknown_03004DA0, 32) + +// scanline_effect.c SYMBOL(gScanlineEffect, 32) SYMBOL(gScanlineEffectRegBuffers, 3840) + +// pokemon_menu.c SYMBOL(gLastFieldPokeMenuOpened, 4) SYMBOL(gUnknown_03005CE4, 4) + +// pokedex.c SYMBOL(gUnknown_03005CE8, 4) SYMBOL(gUnknown_03005CEC, 4) + +// ??? SYMBOL(gUnknown_03005CF0, 4) // huh? . = ALIGN(16); @@ -160,11 +214,19 @@ gBagPocketScrollStates = .; . += 0x14; SYMBOL(gCurrentBagPocketItemSlots, 4) SYMBOL(gUnknown_03005D28, 4) + +// record_mixing.c SYMBOL(gUnknown_03005D2C, 4) + +// sound_check_menu.c SYMBOL(gUnknown_03005D30, 4) SYMBOL(gSoundTestCryNum, 4) + +// tv.c SYMBOL(gUnknown_03005D38, 4) . += 0x64; // huge gap? + +// ??? SYMBOL(gUnknown_03005DA0, 0x48) SYMBOL(gUnknown_03005DE8, 4) SYMBOL(gUnknown_03005DEC, 4) @@ -176,13 +238,21 @@ SYMBOL(gUnknown_03005E00, 4) SYMBOL(gUnknown_03005E04, 4) SYMBOL(gUnknown_03005E08, 4) SYMBOL(gUnknown_03005E0C, 4) + +// contest_painting.c SYMBOL(gUnknown_03005E10, 4) SYMBOL(gUnknown_03005E20, 32) SYMBOL(gUnknown_03005E40, 76) SYMBOL(gUnknown_03005E8C, 4) SYMBOL(gUnknown_03005E90, 4) + +// evolution_scene.c SYMBOL(gCB2_AfterEvolution, 4) + +// ??? SYMBOL(gUnknown_03005E98, 4) + +// save.c SYMBOL(gFirstSaveSector, 4) SYMBOL(gPrevSaveCounter, 4) SYMBOL(gLastKnownGoodSector, 4) @@ -193,12 +263,18 @@ SYMBOL(gUnknown_03005EB4, 4) SYMBOL(gSaveFileStatus, 4) SYMBOL(gGameContinueCallback, 4) . += 0x10; + +// intro.c SYMBOL(gIntroFrameCounter, 4) SYMBOL(gMultibootProgramStruct, 44) + +// ??? SYMBOL(gUnknown_03005F0C, 4) SYMBOL(gUnknown_03005F10, 4) gUnknown_03005F14 = .; . += 0xC; + +// pokeblock_feed.c SYMBOL(gPokeblockFeedPokeSprite, 4) SYMBOL(gPokeblockFeedMonSpecies, 4) SYMBOL(gPokeblockMonNotFlipped, 4) @@ -211,6 +287,8 @@ SYMBOL(gUnknown_03005F40, 4) SYMBOL(gPokeblockFeedPokeSpriteCopy, 68) SYMBOL(gUnknown_03005F94, 4) SYMBOL(gUnknown_03005FA0, 48) + +// m4a_2.c SYMBOL(gSoundInfo, 4016) SYMBOL(gPokemonCrySongs, 104) SYMBOL(gPokemonCryMusicPlayers, 128) @@ -223,6 +301,8 @@ SYMBOL(gMPlay_SE1, 64) SYMBOL(gMPlay_SE2, 64) SYMBOL(gMPlayMemAccArea, 16) SYMBOL(gMPlay_SE3, 64) + +// agb_flash.c SYMBOL(gFlashTimeoutFlag, 4) SYMBOL(PollFlashStatus, 4) SYMBOL(WaitForFlashWrite, 4) -- cgit v1.2.3 From 38c0be840e653454f7a9745ca63ae5f001a70e28 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 21 Jan 2018 11:13:52 -0600 Subject: preprocess and copy ld script files to build directory --- Makefile | 4 ++-- ld_script.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 83f37d8b7..556293b7a 100644 --- a/Makefile +++ b/Makefile @@ -111,9 +111,9 @@ tidy: %.elf: $(LD_SCRIPT) $(ALL_OBJECTS) cd $(BUILD_DIR) && $(LD) -T ld_script.ld -Map ../../$(MAP) ../../$(LIBGCC) ../../$(LIBC) -o ../../$@ -$(LD_SCRIPT): $(BUILD_DIR)/sym_common.ld ld_script.txt +$(LD_SCRIPT): ld_script.txt $(BUILD_DIR)/sym_common.ld $(BUILD_DIR)/sym_ewram.ld $(BUILD_DIR)/sym_bss.ld cd $(BUILD_DIR) && sed -e "s#tools/#../../tools/#g" ../../ld_script.txt >ld_script.ld -$(BUILD_DIR)/sym_common.ld: sym_common.txt +$(BUILD_DIR)/sym_%.ld: sym_%.txt $(CPP) -P $(CPPFLAGS) $< > $@ $(C_OBJECTS): $(BUILD_DIR)/%.o: %.c $$(C_DEP) diff --git a/ld_script.txt b/ld_script.txt index 6931eb661..5dcdf948d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -9,7 +9,7 @@ SECTIONS { ewram (NOLOAD) : ALIGN(4) { - INCLUDE "../../sym_ewram.txt" + INCLUDE "sym_ewram.ld" . = 0x40000; } @@ -20,7 +20,7 @@ SECTIONS { ALIGN(4) { /* .bss starts at 0x3000000 */ - INCLUDE "../../sym_bss.txt" + INCLUDE "sym_bss.ld" /* .bss.code starts at 0x3000F60 */ src/libs/m4a_2.o(.bss.code); -- cgit v1.2.3 From 7fbce3b89ff5ad8fae138ccf1842cb83cbc86799 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 21 Jan 2018 12:35:46 -0600 Subject: use sed to convert library paths relative to build dir --- Makefile | 2 +- sym_bss.txt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 556293b7a..eda7fb2c2 100644 --- a/Makefile +++ b/Makefile @@ -114,7 +114,7 @@ tidy: $(LD_SCRIPT): ld_script.txt $(BUILD_DIR)/sym_common.ld $(BUILD_DIR)/sym_ewram.ld $(BUILD_DIR)/sym_bss.ld cd $(BUILD_DIR) && sed -e "s#tools/#../../tools/#g" ../../ld_script.txt >ld_script.ld $(BUILD_DIR)/sym_%.ld: sym_%.txt - $(CPP) -P $(CPPFLAGS) $< > $@ + $(CPP) -P $(CPPFLAGS) $< | sed -e "s#tools/#../../tools/#g" > $@ $(C_OBJECTS): $(BUILD_DIR)/%.o: %.c $$(C_DEP) $(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i diff --git a/sym_bss.txt b/sym_bss.txt index f36785ce8..5e22693fd 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -37,6 +37,6 @@ . = ALIGN(4); src/libs/m4a_1.o(.bss); . = ALIGN(4); src/libs/agb_flash.o(.bss); . = ALIGN(4); src/libs/siirtc.o(.bss); -. = ALIGN(4); ../../tools/agbcc/lib/libgcc.a:dp-bit.o(.bss); -. = ALIGN(4); ../../tools/agbcc/lib/libgcc.a:fp-bit.o(.bss); -. = ALIGN(4); ../../tools/agbcc/lib/libc.a:syscalls.o(.bss); +. = ALIGN(4); tools/agbcc/lib/libgcc.a:dp-bit.o(.bss); +. = ALIGN(4); tools/agbcc/lib/libgcc.a:fp-bit.o(.bss); +. = ALIGN(4); tools/agbcc/lib/libc.a:syscalls.o(.bss); -- cgit v1.2.3