From 7de050c235adef3031c991bbf4520d785f0a31ad Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 1 Jan 2017 19:16:57 -0500 Subject: start decompiling item_use.c (#144) * begin decompiling item_use.c * decompile more of item_use.c * commit what I have currently * formatting --- src/item_use.c | 410 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 410 insertions(+) create mode 100644 src/item_use.c (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c new file mode 100644 index 000000000..fee70d7d2 --- /dev/null +++ b/src/item_use.c @@ -0,0 +1,410 @@ +#include "global.h" +#include "task.h" +#include "item.h" +#include "palette.h" +#include "weather.h" +#include "string_util.h" +#include "menu.h" +#include "mail.h" +#include "asm.h" +#include "rom4.h" +#include "metatile_behavior.h" +#include "field_player_avatar.h" +#include "flag.h" +#include "map_obj_lock.h" +#include "script.h" +#include "field_player_avatar.h" +#include "sound.h" + +extern void (* const gUnknown_083D61E4[])(); +extern void (* gUnknown_03005D00)(u8); +extern void (* gUnknown_0300485C)(void); + +extern void sub_80A5B00(u8); +extern void sub_80A5CC4(void); +extern void sub_80C8FAC(u8); +extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); +extern void sub_80A5C48(u8); +extern void sub_80A5C9C(u8); +extern void ItemUseOutOfBattle_TMHM(u8); +extern void ItemUseOutOfBattle_EvolutionStone(u8); +extern void ItemUseOnFieldCB_Bike(u8); +extern void ItemUseOnFieldCB_Rod(u8); +extern void ItemUseOnFieldCB_Itemfinder(u8); +extern void sub_80A5D04(void); +extern bool8 sub_80E5EF4(void); +extern void GetOnOffBike(u8); +extern void sub_80C9458(u8); +extern void sub_80C9520(u8); +extern u8 sub_80C9908(s16, s16); +extern void sub_80C997C(u8); +extern void sub_80C99EC(u8); +extern void sub_80C9A38(u8); + +extern u8 gOtherText_DadsAdvice[]; +extern u8 gOtherText_CantGetOffBike[]; +extern u8 gOtherText_NoResponse[]; + +extern u8 gUnknown_083D61F0[]; + +extern u16 gScriptItemId; + +bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, int); + +void sub_80C8FAC(u8 taskId) +{ + u8 taskData; + + if(gScriptItemId == 0xAF) + taskData = gTasks[taskId].data[15] - 1; + else + taskData = ItemId_GetType(gScriptItemId) - 1; + + gTasks[taskId].data[8] = (u32)gUnknown_083D61E4[taskData] >> 16; + gTasks[taskId].data[9] = (u32)gUnknown_083D61E4[taskData]; + gTasks[taskId].func = sub_80A5B00; +} + +void unknown_ItemMenu_Confirm(u8 var) +{ + sub_80C8FAC(var); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); +} + +void sub_80C9038(u8 var) +{ + sub_80C8FAC(var); + fade_screen(1, 0); +} + +void SetUpItemUseOnFieldCallback(u8 taskId) +{ + if(gTasks[taskId].data[2] != 1) + { + gUnknown_0300485C = (void *)sub_80A5CC4; + unknown_ItemMenu_Confirm(taskId); + } + else + gUnknown_03005D00(taskId); +} + +void sub_80C9098(u8 var1, u8 var2, const u8 *var3) +{ + StringExpandPlaceholders(gStringVar4, var3); + + if(!var2) + { + MenuZeroFillWindowRect(0, 13, 13, 20); + DisplayItemMessageOnField(var1, gStringVar4, sub_80A5C48, 1); + } + else + DisplayItemMessageOnField(var1, gStringVar4, sub_80A5C9C, 0); +} + +void DisplayDadsAdviceCannotUseItemMessage(u8 var1, u8 var2) +{ + sub_80C9098(var1, var2, gOtherText_DadsAdvice); +} + +void sub_80C9104(u8 var1, u8 var2) +{ + sub_80C9098(var1, var2, gOtherText_CantGetOffBike); +} + +u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) +{ + if(ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_TMHM) + return 1; + else if(ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_EvolutionStone) + return 2; + else + return 0; +} + +void sub_80C9154(u8 taskId) +{ + struct MailStruct mailStruct; + + if(!gPaletteFade.active) + { + mailStruct.var20 = gScriptItemId; + sub_80F890C(&mailStruct, sub_80A5D04, 0); + DestroyTask(taskId); + } +} + +void ItemUseOutOfBattle_Mail(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80C9154; +} + +void ItemUseOutOfBattle_Bike(u8 taskId) +{ + s16 x, y; + u8 tileBehavior; + + PlayerGetDestCoords(&x, &y); + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + + if(FlagGet(0x82B) == TRUE + || MetatileBehavior_IsVerticalRail(tileBehavior) == TRUE + || MetatileBehavior_IsHorizontalRail(tileBehavior) == TRUE + || MetatileBehavior_IsIsolatedVerticalRail(tileBehavior) == TRUE + || MetatileBehavior_IsIsolatedHorizontalRail(tileBehavior) == TRUE) + { + sub_80C9104(taskId, gTasks[taskId].data[2]); + } + else + { + if(sub_8053C44() == TRUE && sub_80E5EF4() == FALSE) + { + gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Bike; + SetUpItemUseOnFieldCallback(taskId); + } + else + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); + } +} + +void ItemUseOnFieldCB_Bike(u8 taskId) +{ + if(ItemId_GetSecondaryId(gScriptItemId) == 0) + GetOnOffBike(2); + if(ItemId_GetSecondaryId(gScriptItemId) == 1) + GetOnOffBike(4); + + sub_8064E2C(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +bool32 CanFish(void) +{ + s16 x, y; + u16 tileBehavior; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + + if (MetatileBehavior_IsWaterfall(tileBehavior)) + return FALSE; + + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_4)) + return FALSE; + + if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) + { + if (IsPlayerFacingSurfableFishableWater()) + return TRUE; + } + else + { + if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior) && !MapGridIsImpassableAt(x, y)) + return TRUE; + if (MetatileBehavior_IsBridge(tileBehavior) == TRUE) + return TRUE; + } + + return FALSE; +} + +void ItemUseOutOfBattle_Rod(u8 taskId) +{ + if(CanFish() == TRUE) + { + gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Rod; + SetUpItemUseOnFieldCallback(taskId); + } + else + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); +} + +void ItemUseOnFieldCB_Rod(u8 taskId) +{ + StartFishing(ItemId_GetSecondaryId(gScriptItemId)); + DestroyTask(taskId); +} + +void ItemUseOutOfBattle_Itemfinder(u8 var) +{ + sav12_xor_increment(0x27); + gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Itemfinder; + SetUpItemUseOnFieldCallback(var); +} + +void ItemUseOnFieldCB_Itemfinder(u8 taskId) +{ + if(ItemfinderCheckForHiddenItems(gMapHeader.events, taskId) == TRUE) + gTasks[taskId].func = sub_80C9458; + else + DisplayItemMessageOnField(taskId, gOtherText_NoResponse, sub_80C9520, 0); +} + +void sub_80C9458(u8 taskId) +{ + u8 var; + u8 playerDir; + u8 i; + s16 *data = gTasks[taskId].data; + + if(!data[3]) + { + if(data[4] == 4) + { + var = sub_80C9908(data[0], data[1]); + if(var) + { + sub_80C997C(gUnknown_083D61F0[var - 1]); + gTasks[taskId].func = sub_80C99EC; + } + else + { + playerDir = player_get_direction_lower_nybble(); + + for (i = 0; i < 4; i++) + if (playerDir == gUnknown_083D61F0[i]) + data[5] = (i + 1) & 3; + + gTasks[taskId].func = sub_80C9A38; + data[3] = 0; + data[2] = 0; + } + return; + } + PlaySE(0x48); + data[4]++; + } + data[3] = (data[3] + 1) & 0x1F; +} + +void sub_80C9520(u8 taskId) +{ + MenuZeroFillWindowRect(0, 14, 29, 19); + sub_8064E2C(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +// too much struct math. +__attribute__((naked)) +bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, int var) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + sub sp, 0x4\n\ + adds r5, r0, 0\n\ + lsls r1, 24\n\ + lsrs r6, r1, 24\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl PlayerGetDestCoords\n\ + ldr r1, _080C9618 @ =gTasks\n\ + lsls r0, r6, 2\n\ + adds r0, r6\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0\n\ + strh r1, [r0, 0xC]\n\ + movs r3, 0\n\ + mov r9, r4\n\ + ldrb r0, [r5, 0x3]\n\ + cmp r3, r0\n\ + bge _080C95FC\n\ + subs r1, 0x5\n\ + mov r8, r1\n\ +_080C9580:\n\ + lsls r3, 16\n\ + asrs r1, r3, 16\n\ + ldr r2, [r5, 0x10]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r4, r0, 2\n\ + adds r1, r4, r2\n\ + ldrb r0, [r1, 0x5]\n\ + adds r7, r3, 0\n\ + cmp r0, 0x7\n\ + bne _080C95EC\n\ + movs r2, 0x96\n\ + lsls r2, 2\n\ + adds r0, r2, 0\n\ + ldrh r1, [r1, 0xA]\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080C95EC\n\ + ldr r1, [r5, 0x10]\n\ + adds r1, r4, r1\n\ + ldrh r2, [r1]\n\ + adds r2, 0x7\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + subs r2, r0\n\ + ldrh r0, [r1, 0x2]\n\ + adds r0, 0x7\n\ + mov r3, r9\n\ + ldrh r1, [r3]\n\ + subs r0, r1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + lsls r2, 16\n\ + asrs r1, r2, 16\n\ + movs r3, 0xE0\n\ + lsls r3, 11\n\ + adds r2, r3\n\ + lsrs r2, 16\n\ + cmp r2, 0xE\n\ + bhi _080C95EC\n\ + lsls r0, 16\n\ + asrs r2, r0, 16\n\ + cmp r2, r8\n\ + blt _080C95EC\n\ + cmp r2, 0x5\n\ + bgt _080C95EC\n\ + adds r0, r6, 0\n\ + bl sub_80C9838\n\ +_080C95EC:\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + adds r0, r7, r1\n\ + lsrs r3, r0, 16\n\ + asrs r0, 16\n\ + ldrb r2, [r5, 0x3]\n\ + cmp r0, r2\n\ + blt _080C9580\n\ +_080C95FC:\n\ + adds r0, r6, 0\n\ + bl sub_80C9720\n\ + ldr r0, _080C9618 @ =gTasks\n\ + lsls r1, r6, 2\n\ + adds r1, r6\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r3, 0xC\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0x1\n\ + beq _080C961C\n\ + movs r0, 0\n\ + b _080C961E\n\ + .align 2, 0\n\ +_080C9618: .4byte gTasks\n\ +_080C961C:\n\ + movs r0, 0x1\n\ +_080C961E:\n\ + add sp, 0x4\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided"); +} -- cgit v1.2.3 From 4099235b1f26e313aeb94847c1b197d1dc4d4776 Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Sun, 1 Jan 2017 20:26:55 -0800 Subject: mail data in save block 1 --- src/item_use.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index fee70d7d2..21ce9acd3 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -127,7 +127,7 @@ void sub_80C9154(u8 taskId) if(!gPaletteFade.active) { - mailStruct.var20 = gScriptItemId; + mailStruct.itemId = gScriptItemId; sub_80F890C(&mailStruct, sub_80A5D04, 0); DestroyTask(taskId); } -- cgit v1.2.3 From 145e90483b2a30698f917f62e585aa7fa4794588 Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Mon, 2 Jan 2017 00:41:28 -0800 Subject: event_data.c --- src/item_use.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 21ce9acd3..fb5f3e8b8 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -10,7 +10,7 @@ #include "rom4.h" #include "metatile_behavior.h" #include "field_player_avatar.h" -#include "flag.h" +#include "event_data.h" #include "map_obj_lock.h" #include "script.h" #include "field_player_avatar.h" -- cgit v1.2.3 From 98062c69d613fb1b9e2345924dd34d0bbdcfcc90 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 2 Jan 2017 04:27:51 -0500 Subject: label and document berry.c, decompress.c, item_use.c and label gBattleTypeFlags (#146) * make ROM match again * clean up item_use.c labels and clarify functions. * label and clarify some functions in decompress.c * label and clarify berry.c * rename 20239F8 to gBattleTypeFlags * formatting --- src/item_use.c | 110 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 57 insertions(+), 53 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index fb5f3e8b8..af22eddae 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -15,43 +15,43 @@ #include "script.h" #include "field_player_avatar.h" #include "sound.h" +#include "songs.h" -extern void (* const gUnknown_083D61E4[])(); +extern void (* const gExitToOverworldFuncList[])(); extern void (* gUnknown_03005D00)(u8); extern void (* gUnknown_0300485C)(void); -extern void sub_80A5B00(u8); -extern void sub_80A5CC4(void); -extern void sub_80C8FAC(u8); +extern void HandleItemMenuPaletteFade(u8); +extern void ExecuteItemUseFromBlackPalette(void); extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); -extern void sub_80A5C48(u8); -extern void sub_80A5C9C(u8); +extern void CleanUpItemMenuMessage(u8); +extern void CleanUpOverworldMessage(u8); extern void ItemUseOutOfBattle_TMHM(u8); extern void ItemUseOutOfBattle_EvolutionStone(u8); extern void ItemUseOnFieldCB_Bike(u8); extern void ItemUseOnFieldCB_Rod(u8); extern void ItemUseOnFieldCB_Itemfinder(u8); extern void sub_80A5D04(void); -extern bool8 sub_80E5EF4(void); +extern bool8 IsBikingDisallowedByPlayer(void); extern void GetOnOffBike(u8); -extern void sub_80C9458(u8); -extern void sub_80C9520(u8); -extern u8 sub_80C9908(s16, s16); -extern void sub_80C997C(u8); -extern void sub_80C99EC(u8); -extern void sub_80C9A38(u8); +extern u8 GetPlayerDirectionTowardsHiddenItem(s16, s16); +extern void SetPlayerDirectionTowardsItem(u8); +extern void DisplayItemRespondingMessageAndExitItemfinder(u8); +extern void RotatePlayerAndExitItemfinder(u8); extern u8 gOtherText_DadsAdvice[]; extern u8 gOtherText_CantGetOffBike[]; extern u8 gOtherText_NoResponse[]; -extern u8 gUnknown_083D61F0[]; +extern u8 gItemFinderDirections[]; extern u16 gScriptItemId; bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, int); +void RunItemfinderResults(u8); +void ExitItemfinder(u8); -void sub_80C8FAC(u8 taskId) +void ExecuteSwitchToOverworldFromItemUse(u8 taskId) { u8 taskData; @@ -60,20 +60,20 @@ void sub_80C8FAC(u8 taskId) else taskData = ItemId_GetType(gScriptItemId) - 1; - gTasks[taskId].data[8] = (u32)gUnknown_083D61E4[taskData] >> 16; - gTasks[taskId].data[9] = (u32)gUnknown_083D61E4[taskData]; - gTasks[taskId].func = sub_80A5B00; + gTasks[taskId].data[8] = (u32)gExitToOverworldFuncList[taskData] >> 16; + gTasks[taskId].data[9] = (u32)gExitToOverworldFuncList[taskData]; + gTasks[taskId].func = HandleItemMenuPaletteFade; } -void unknown_ItemMenu_Confirm(u8 var) +void ItemMenu_ConfirmNormalFade(u8 var) { - sub_80C8FAC(var); + ExecuteSwitchToOverworldFromItemUse(var); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); } -void sub_80C9038(u8 var) +void ItemMenu_ConfirmComplexFade(u8 var) { - sub_80C8FAC(var); + ExecuteSwitchToOverworldFromItemUse(var); fade_screen(1, 0); } @@ -81,34 +81,37 @@ void SetUpItemUseOnFieldCallback(u8 taskId) { if(gTasks[taskId].data[2] != 1) { - gUnknown_0300485C = (void *)sub_80A5CC4; - unknown_ItemMenu_Confirm(taskId); + gUnknown_0300485C = (void *)ExecuteItemUseFromBlackPalette; + ItemMenu_ConfirmNormalFade(taskId); } else gUnknown_03005D00(taskId); } -void sub_80C9098(u8 var1, u8 var2, const u8 *var3) +void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *var3) { StringExpandPlaceholders(gStringVar4, var3); - if(!var2) + switch(playerMenuStatus) { - MenuZeroFillWindowRect(0, 13, 13, 20); - DisplayItemMessageOnField(var1, gStringVar4, sub_80A5C48, 1); + case 0: // Item Menu + MenuZeroFillWindowRect(0, 13, 13, 20); + DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); + break; + default: // Field + DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0); + break; } - else - DisplayItemMessageOnField(var1, gStringVar4, sub_80A5C9C, 0); } -void DisplayDadsAdviceCannotUseItemMessage(u8 var1, u8 var2) +void DisplayDadsAdviceCannotUseItemMessage(u8 var1, u8 playerMenuStatus) { - sub_80C9098(var1, var2, gOtherText_DadsAdvice); + HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_DadsAdvice); } -void sub_80C9104(u8 var1, u8 var2) +void DisplayCantGetOffBikeItemMessage(u8 var1, u8 playerMenuStatus) { - sub_80C9098(var1, var2, gOtherText_CantGetOffBike); + HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_CantGetOffBike); } u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) @@ -121,14 +124,14 @@ u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) return 0; } -void sub_80C9154(u8 taskId) +void ItemMenu_ReadMail(u8 taskId) { struct MailStruct mailStruct; if(!gPaletteFade.active) { mailStruct.itemId = gScriptItemId; - sub_80F890C(&mailStruct, sub_80A5D04, 0); + HandleReadMail(&mailStruct, sub_80A5D04, 0); DestroyTask(taskId); } } @@ -136,7 +139,7 @@ void sub_80C9154(u8 taskId) void ItemUseOutOfBattle_Mail(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_80C9154; + gTasks[taskId].func = ItemMenu_ReadMail; } void ItemUseOutOfBattle_Bike(u8 taskId) @@ -147,17 +150,17 @@ void ItemUseOutOfBattle_Bike(u8 taskId) PlayerGetDestCoords(&x, &y); tileBehavior = MapGridGetMetatileBehaviorAt(x, y); - if(FlagGet(0x82B) == TRUE + if(FlagGet(SYS_CYCLING_ROAD) == TRUE // on cycling road? || MetatileBehavior_IsVerticalRail(tileBehavior) == TRUE || MetatileBehavior_IsHorizontalRail(tileBehavior) == TRUE || MetatileBehavior_IsIsolatedVerticalRail(tileBehavior) == TRUE || MetatileBehavior_IsIsolatedHorizontalRail(tileBehavior) == TRUE) { - sub_80C9104(taskId, gTasks[taskId].data[2]); + DisplayCantGetOffBikeItemMessage(taskId, gTasks[taskId].data[2]); } else { - if(sub_8053C44() == TRUE && sub_80E5EF4() == FALSE) + if(IsBikingAllowedByMap() == TRUE && IsBikingDisallowedByPlayer() == FALSE) { gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Bike; SetUpItemUseOnFieldCallback(taskId); @@ -236,15 +239,15 @@ void ItemUseOutOfBattle_Itemfinder(u8 var) void ItemUseOnFieldCB_Itemfinder(u8 taskId) { if(ItemfinderCheckForHiddenItems(gMapHeader.events, taskId) == TRUE) - gTasks[taskId].func = sub_80C9458; + gTasks[taskId].func = RunItemfinderResults; else - DisplayItemMessageOnField(taskId, gOtherText_NoResponse, sub_80C9520, 0); + DisplayItemMessageOnField(taskId, gOtherText_NoResponse, ExitItemfinder, 0); } -void sub_80C9458(u8 taskId) +void RunItemfinderResults(u8 taskId) { - u8 var; u8 playerDir; + u8 playerDirToItem; u8 i; s16 *data = gTasks[taskId].data; @@ -252,33 +255,34 @@ void sub_80C9458(u8 taskId) { if(data[4] == 4) { - var = sub_80C9908(data[0], data[1]); - if(var) + playerDirToItem = GetPlayerDirectionTowardsHiddenItem(data[0], data[1]); + if(playerDirToItem) { - sub_80C997C(gUnknown_083D61F0[var - 1]); - gTasks[taskId].func = sub_80C99EC; + SetPlayerDirectionTowardsItem(gItemFinderDirections[playerDirToItem - 1]); + gTasks[taskId].func = DisplayItemRespondingMessageAndExitItemfinder; } - else + else // player is above hidden item. { playerDir = player_get_direction_lower_nybble(); + // rotate player clockwise depending on current direction. for (i = 0; i < 4; i++) - if (playerDir == gUnknown_083D61F0[i]) + if (playerDir == gItemFinderDirections[i]) data[5] = (i + 1) & 3; - gTasks[taskId].func = sub_80C9A38; + gTasks[taskId].func = RotatePlayerAndExitItemfinder; data[3] = 0; data[2] = 0; } return; } - PlaySE(0x48); + PlaySE(SE_DAUGI); // play the itemfinder jingle 4 times before executing the itemfinder. data[4]++; } data[3] = (data[3] + 1) & 0x1F; } -void sub_80C9520(u8 taskId) +void ExitItemfinder(u8 taskId) { MenuZeroFillWindowRect(0, 14, 29, 19); sub_8064E2C(); -- cgit v1.2.3 From 94fb9ab2a9ed111c72a80693d8f29ea4bc531898 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 5 Jan 2017 22:50:45 -0500 Subject: more labels (#165) * more labels and match sub_810745C * formatting * move BattleStruct to battle.h and combine both loose structs * oops * more labels for rom4.c --- src/item_use.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index af22eddae..557705460 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -231,7 +231,7 @@ void ItemUseOnFieldCB_Rod(u8 taskId) void ItemUseOutOfBattle_Itemfinder(u8 var) { - sav12_xor_increment(0x27); + IncrementGameStat(0x27); gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Itemfinder; SetUpItemUseOnFieldCallback(var); } -- cgit v1.2.3 From c9722602cb47eb5b6ecbccddf13df5f286a8ef7b Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 17 Jan 2017 14:13:04 +0100 Subject: Sort includes --- src/item_use.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 557705460..63f818dd3 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -1,21 +1,21 @@ #include "global.h" -#include "task.h" -#include "item.h" -#include "palette.h" -#include "weather.h" -#include "string_util.h" -#include "menu.h" -#include "mail.h" #include "asm.h" -#include "rom4.h" -#include "metatile_behavior.h" -#include "field_player_avatar.h" #include "event_data.h" +#include "field_player_avatar.h" +#include "field_player_avatar.h" +#include "item.h" +#include "mail.h" #include "map_obj_lock.h" +#include "menu.h" +#include "metatile_behavior.h" +#include "palette.h" +#include "rom4.h" #include "script.h" -#include "field_player_avatar.h" -#include "sound.h" #include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "task.h" +#include "weather.h" extern void (* const gExitToOverworldFuncList[])(); extern void (* gUnknown_03005D00)(u8); -- cgit v1.2.3 From 801877553db80267a62c0c3c0b2805b6716d1ef9 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 17 Jan 2017 14:38:44 +0100 Subject: Remove trailing whitespace --- src/item_use.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 63f818dd3..bed1736bc 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -91,7 +91,7 @@ void SetUpItemUseOnFieldCallback(u8 taskId) void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *var3) { StringExpandPlaceholders(gStringVar4, var3); - + switch(playerMenuStatus) { case 0: // Item Menu @@ -146,10 +146,10 @@ void ItemUseOutOfBattle_Bike(u8 taskId) { s16 x, y; u8 tileBehavior; - + PlayerGetDestCoords(&x, &y); tileBehavior = MapGridGetMetatileBehaviorAt(x, y); - + if(FlagGet(SYS_CYCLING_ROAD) == TRUE // on cycling road? || MetatileBehavior_IsVerticalRail(tileBehavior) == TRUE || MetatileBehavior_IsHorizontalRail(tileBehavior) == TRUE @@ -176,7 +176,7 @@ void ItemUseOnFieldCB_Bike(u8 taskId) GetOnOffBike(2); if(ItemId_GetSecondaryId(gScriptItemId) == 1) GetOnOffBike(4); - + sub_8064E2C(); ScriptContext2_Disable(); DestroyTask(taskId); -- cgit v1.2.3 From bcaab977727ded65c9eeaef9dbef9e9441d26fb7 Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Sat, 21 Jan 2017 16:48:06 -0800 Subject: formatting --- src/item_use.c | 416 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 208 insertions(+), 208 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index bed1736bc..344a3bc0d 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -55,7 +55,7 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId) { u8 taskData; - if(gScriptItemId == 0xAF) + if (gScriptItemId == 0xAF) taskData = gTasks[taskId].data[15] - 1; else taskData = ItemId_GetType(gScriptItemId) - 1; @@ -67,119 +67,119 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId) void ItemMenu_ConfirmNormalFade(u8 var) { - ExecuteSwitchToOverworldFromItemUse(var); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + ExecuteSwitchToOverworldFromItemUse(var); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); } void ItemMenu_ConfirmComplexFade(u8 var) { - ExecuteSwitchToOverworldFromItemUse(var); - fade_screen(1, 0); + ExecuteSwitchToOverworldFromItemUse(var); + fade_screen(1, 0); } void SetUpItemUseOnFieldCallback(u8 taskId) { - if(gTasks[taskId].data[2] != 1) - { - gUnknown_0300485C = (void *)ExecuteItemUseFromBlackPalette; - ItemMenu_ConfirmNormalFade(taskId); - } - else - gUnknown_03005D00(taskId); + if (gTasks[taskId].data[2] != 1) + { + gUnknown_0300485C = (void *)ExecuteItemUseFromBlackPalette; + ItemMenu_ConfirmNormalFade(taskId); + } + else + gUnknown_03005D00(taskId); } void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *var3) { - StringExpandPlaceholders(gStringVar4, var3); - - switch(playerMenuStatus) - { - case 0: // Item Menu - MenuZeroFillWindowRect(0, 13, 13, 20); - DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); - break; - default: // Field - DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0); - break; - } + StringExpandPlaceholders(gStringVar4, var3); + + switch (playerMenuStatus) + { + case 0: // Item Menu + MenuZeroFillWindowRect(0, 13, 13, 20); + DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); + break; + default: // Field + DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0); + break; + } } void DisplayDadsAdviceCannotUseItemMessage(u8 var1, u8 playerMenuStatus) { - HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_DadsAdvice); + HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_DadsAdvice); } void DisplayCantGetOffBikeItemMessage(u8 var1, u8 playerMenuStatus) { - HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_CantGetOffBike); + HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_CantGetOffBike); } u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) { - if(ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_TMHM) - return 1; - else if(ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_EvolutionStone) - return 2; - else - return 0; + if (ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_TMHM) + return 1; + else if (ItemId_GetFieldFunc(itemId) == ItemUseOutOfBattle_EvolutionStone) + return 2; + else + return 0; } void ItemMenu_ReadMail(u8 taskId) { - struct MailStruct mailStruct; - - if(!gPaletteFade.active) - { - mailStruct.itemId = gScriptItemId; - HandleReadMail(&mailStruct, sub_80A5D04, 0); - DestroyTask(taskId); - } + struct MailStruct mailStruct; + + if (!gPaletteFade.active) + { + mailStruct.itemId = gScriptItemId; + HandleReadMail(&mailStruct, sub_80A5D04, 0); + DestroyTask(taskId); + } } void ItemUseOutOfBattle_Mail(u8 taskId) { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = ItemMenu_ReadMail; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = ItemMenu_ReadMail; } void ItemUseOutOfBattle_Bike(u8 taskId) { - s16 x, y; - u8 tileBehavior; - - PlayerGetDestCoords(&x, &y); - tileBehavior = MapGridGetMetatileBehaviorAt(x, y); - - if(FlagGet(SYS_CYCLING_ROAD) == TRUE // on cycling road? - || MetatileBehavior_IsVerticalRail(tileBehavior) == TRUE - || MetatileBehavior_IsHorizontalRail(tileBehavior) == TRUE - || MetatileBehavior_IsIsolatedVerticalRail(tileBehavior) == TRUE - || MetatileBehavior_IsIsolatedHorizontalRail(tileBehavior) == TRUE) - { - DisplayCantGetOffBikeItemMessage(taskId, gTasks[taskId].data[2]); - } - else - { - if(IsBikingAllowedByMap() == TRUE && IsBikingDisallowedByPlayer() == FALSE) - { - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Bike; - SetUpItemUseOnFieldCallback(taskId); - } - else - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); - } + s16 x, y; + u8 tileBehavior; + + PlayerGetDestCoords(&x, &y); + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + + if (FlagGet(SYS_CYCLING_ROAD) == TRUE // on cycling road? + || MetatileBehavior_IsVerticalRail(tileBehavior) == TRUE + || MetatileBehavior_IsHorizontalRail(tileBehavior) == TRUE + || MetatileBehavior_IsIsolatedVerticalRail(tileBehavior) == TRUE + || MetatileBehavior_IsIsolatedHorizontalRail(tileBehavior) == TRUE) + { + DisplayCantGetOffBikeItemMessage(taskId, gTasks[taskId].data[2]); + } + else + { + if (IsBikingAllowedByMap() == TRUE && IsBikingDisallowedByPlayer() == FALSE) + { + gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Bike; + SetUpItemUseOnFieldCallback(taskId); + } + else + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); + } } void ItemUseOnFieldCB_Bike(u8 taskId) { - if(ItemId_GetSecondaryId(gScriptItemId) == 0) - GetOnOffBike(2); - if(ItemId_GetSecondaryId(gScriptItemId) == 1) - GetOnOffBike(4); - - sub_8064E2C(); - ScriptContext2_Disable(); - DestroyTask(taskId); + if (ItemId_GetSecondaryId(gScriptItemId) == 0) + GetOnOffBike(2); + if (ItemId_GetSecondaryId(gScriptItemId) == 1) + GetOnOffBike(4); + + sub_8064E2C(); + ScriptContext2_Disable(); + DestroyTask(taskId); } bool32 CanFish(void) @@ -214,31 +214,31 @@ bool32 CanFish(void) void ItemUseOutOfBattle_Rod(u8 taskId) { - if(CanFish() == TRUE) - { - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Rod; - SetUpItemUseOnFieldCallback(taskId); - } - else - DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); + if (CanFish() == TRUE) + { + gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Rod; + SetUpItemUseOnFieldCallback(taskId); + } + else + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); } void ItemUseOnFieldCB_Rod(u8 taskId) { - StartFishing(ItemId_GetSecondaryId(gScriptItemId)); - DestroyTask(taskId); + StartFishing(ItemId_GetSecondaryId(gScriptItemId)); + DestroyTask(taskId); } void ItemUseOutOfBattle_Itemfinder(u8 var) { - IncrementGameStat(0x27); - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Itemfinder; - SetUpItemUseOnFieldCallback(var); + IncrementGameStat(0x27); + gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Itemfinder; + SetUpItemUseOnFieldCallback(var); } void ItemUseOnFieldCB_Itemfinder(u8 taskId) { - if(ItemfinderCheckForHiddenItems(gMapHeader.events, taskId) == TRUE) + if (ItemfinderCheckForHiddenItems(gMapHeader.events, taskId) == TRUE) gTasks[taskId].func = RunItemfinderResults; else DisplayItemMessageOnField(taskId, gOtherText_NoResponse, ExitItemfinder, 0); @@ -247,16 +247,16 @@ void ItemUseOnFieldCB_Itemfinder(u8 taskId) void RunItemfinderResults(u8 taskId) { u8 playerDir; - u8 playerDirToItem; + u8 playerDirToItem; u8 i; s16 *data = gTasks[taskId].data; - if(!data[3]) + if (!data[3]) { - if(data[4] == 4) + if (data[4] == 4) { playerDirToItem = GetPlayerDirectionTowardsHiddenItem(data[0], data[1]); - if(playerDirToItem) + if (playerDirToItem) { SetPlayerDirectionTowardsItem(gItemFinderDirections[playerDirToItem - 1]); gTasks[taskId].func = DisplayItemRespondingMessageAndExitItemfinder; @@ -265,7 +265,7 @@ void RunItemfinderResults(u8 taskId) { playerDir = player_get_direction_lower_nybble(); - // rotate player clockwise depending on current direction. + // rotate player clockwise depending on current direction. for (i = 0; i < 4; i++) if (playerDir == gItemFinderDirections[i]) data[5] = (i + 1) & 3; @@ -274,7 +274,7 @@ void RunItemfinderResults(u8 taskId) data[3] = 0; data[2] = 0; } - return; + return; } PlaySE(SE_DAUGI); // play the itemfinder jingle 4 times before executing the itemfinder. data[4]++; @@ -284,131 +284,131 @@ void RunItemfinderResults(u8 taskId) void ExitItemfinder(u8 taskId) { - MenuZeroFillWindowRect(0, 14, 29, 19); - sub_8064E2C(); - ScriptContext2_Disable(); - DestroyTask(taskId); + MenuZeroFillWindowRect(0, 14, 29, 19); + sub_8064E2C(); + ScriptContext2_Disable(); + DestroyTask(taskId); } // too much struct math. __attribute__((naked)) bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, int var) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - sub sp, 0x4\n\ - adds r5, r0, 0\n\ - lsls r1, 24\n\ - lsrs r6, r1, 24\n\ - mov r4, sp\n\ - adds r4, 0x2\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl PlayerGetDestCoords\n\ - ldr r1, _080C9618 @ =gTasks\n\ - lsls r0, r6, 2\n\ - adds r0, r6\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strh r1, [r0, 0xC]\n\ - movs r3, 0\n\ - mov r9, r4\n\ - ldrb r0, [r5, 0x3]\n\ - cmp r3, r0\n\ - bge _080C95FC\n\ - subs r1, 0x5\n\ - mov r8, r1\n\ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + sub sp, 0x4\n\ + adds r5, r0, 0\n\ + lsls r1, 24\n\ + lsrs r6, r1, 24\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl PlayerGetDestCoords\n\ + ldr r1, _080C9618 @ =gTasks\n\ + lsls r0, r6, 2\n\ + adds r0, r6\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0\n\ + strh r1, [r0, 0xC]\n\ + movs r3, 0\n\ + mov r9, r4\n\ + ldrb r0, [r5, 0x3]\n\ + cmp r3, r0\n\ + bge _080C95FC\n\ + subs r1, 0x5\n\ + mov r8, r1\n\ _080C9580:\n\ - lsls r3, 16\n\ - asrs r1, r3, 16\n\ - ldr r2, [r5, 0x10]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r4, r0, 2\n\ - adds r1, r4, r2\n\ - ldrb r0, [r1, 0x5]\n\ - adds r7, r3, 0\n\ - cmp r0, 0x7\n\ - bne _080C95EC\n\ - movs r2, 0x96\n\ - lsls r2, 2\n\ - adds r0, r2, 0\n\ - ldrh r1, [r1, 0xA]\n\ - adds r0, r1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080C95EC\n\ - ldr r1, [r5, 0x10]\n\ - adds r1, r4, r1\n\ - ldrh r2, [r1]\n\ - adds r2, 0x7\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - subs r2, r0\n\ - ldrh r0, [r1, 0x2]\n\ - adds r0, 0x7\n\ - mov r3, r9\n\ - ldrh r1, [r3]\n\ - subs r0, r1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - lsls r2, 16\n\ - asrs r1, r2, 16\n\ - movs r3, 0xE0\n\ - lsls r3, 11\n\ - adds r2, r3\n\ - lsrs r2, 16\n\ - cmp r2, 0xE\n\ - bhi _080C95EC\n\ - lsls r0, 16\n\ - asrs r2, r0, 16\n\ - cmp r2, r8\n\ - blt _080C95EC\n\ - cmp r2, 0x5\n\ - bgt _080C95EC\n\ - adds r0, r6, 0\n\ - bl sub_80C9838\n\ + lsls r3, 16\n\ + asrs r1, r3, 16\n\ + ldr r2, [r5, 0x10]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + lsls r4, r0, 2\n\ + adds r1, r4, r2\n\ + ldrb r0, [r1, 0x5]\n\ + adds r7, r3, 0\n\ + cmp r0, 0x7\n\ + bne _080C95EC\n\ + movs r2, 0x96\n\ + lsls r2, 2\n\ + adds r0, r2, 0\n\ + ldrh r1, [r1, 0xA]\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080C95EC\n\ + ldr r1, [r5, 0x10]\n\ + adds r1, r4, r1\n\ + ldrh r2, [r1]\n\ + adds r2, 0x7\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + subs r2, r0\n\ + ldrh r0, [r1, 0x2]\n\ + adds r0, 0x7\n\ + mov r3, r9\n\ + ldrh r1, [r3]\n\ + subs r0, r1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + lsls r2, 16\n\ + asrs r1, r2, 16\n\ + movs r3, 0xE0\n\ + lsls r3, 11\n\ + adds r2, r3\n\ + lsrs r2, 16\n\ + cmp r2, 0xE\n\ + bhi _080C95EC\n\ + lsls r0, 16\n\ + asrs r2, r0, 16\n\ + cmp r2, r8\n\ + blt _080C95EC\n\ + cmp r2, 0x5\n\ + bgt _080C95EC\n\ + adds r0, r6, 0\n\ + bl sub_80C9838\n\ _080C95EC:\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - adds r0, r7, r1\n\ - lsrs r3, r0, 16\n\ - asrs r0, 16\n\ - ldrb r2, [r5, 0x3]\n\ - cmp r0, r2\n\ - blt _080C9580\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + adds r0, r7, r1\n\ + lsrs r3, r0, 16\n\ + asrs r0, 16\n\ + ldrb r2, [r5, 0x3]\n\ + cmp r0, r2\n\ + blt _080C9580\n\ _080C95FC:\n\ - adds r0, r6, 0\n\ - bl sub_80C9720\n\ - ldr r0, _080C9618 @ =gTasks\n\ - lsls r1, r6, 2\n\ - adds r1, r6\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r3, 0xC\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0x1\n\ - beq _080C961C\n\ - movs r0, 0\n\ - b _080C961E\n\ - .align 2, 0\n\ + adds r0, r6, 0\n\ + bl sub_80C9720\n\ + ldr r0, _080C9618 @ =gTasks\n\ + lsls r1, r6, 2\n\ + adds r1, r6\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r3, 0xC\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0x1\n\ + beq _080C961C\n\ + movs r0, 0\n\ + b _080C961E\n\ + .align 2, 0\n\ _080C9618: .4byte gTasks\n\ _080C961C:\n\ - movs r0, 0x1\n\ + movs r0, 0x1\n\ _080C961E:\n\ - add sp, 0x4\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided"); + add sp, 0x4\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided"); } -- cgit v1.2.3 From 0042dd649d9cc5a4986a83f926b936dc881451b9 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 22 Mar 2017 06:04:01 +0100 Subject: start decompiling item_use.c again --- src/item_use.c | 220 +++++++++++++++++++++++++-------------------------------- 1 file changed, 97 insertions(+), 123 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 344a3bc0d..b68b72b26 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -16,6 +16,7 @@ #include "string_util.h" #include "task.h" #include "weather.h" +#include "fieldmap.h" extern void (* const gExitToOverworldFuncList[])(); extern void (* gUnknown_03005D00)(u8); @@ -38,6 +39,7 @@ extern u8 GetPlayerDirectionTowardsHiddenItem(s16, s16); extern void SetPlayerDirectionTowardsItem(u8); extern void DisplayItemRespondingMessageAndExitItemfinder(u8); extern void RotatePlayerAndExitItemfinder(u8); +extern void sub_80C9838(u8, s16, s16); extern u8 gOtherText_DadsAdvice[]; extern u8 gOtherText_CantGetOffBike[]; @@ -47,9 +49,10 @@ extern u8 gItemFinderDirections[]; extern u16 gScriptItemId; -bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, int); +bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId); void RunItemfinderResults(u8); void ExitItemfinder(u8); +void sub_80C9720(u8); void ExecuteSwitchToOverworldFromItemUse(u8 taskId) { @@ -88,9 +91,9 @@ void SetUpItemUseOnFieldCallback(u8 taskId) gUnknown_03005D00(taskId); } -void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *var3) +void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text) { - StringExpandPlaceholders(gStringVar4, var3); + StringExpandPlaceholders(gStringVar4, text); switch (playerMenuStatus) { @@ -290,125 +293,96 @@ void ExitItemfinder(u8 taskId) DestroyTask(taskId); } -// too much struct math. -__attribute__((naked)) -bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, int var) +bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - sub sp, 0x4\n\ - adds r5, r0, 0\n\ - lsls r1, 24\n\ - lsrs r6, r1, 24\n\ - mov r4, sp\n\ - adds r4, 0x2\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl PlayerGetDestCoords\n\ - ldr r1, _080C9618 @ =gTasks\n\ - lsls r0, r6, 2\n\ - adds r0, r6\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strh r1, [r0, 0xC]\n\ - movs r3, 0\n\ - mov r9, r4\n\ - ldrb r0, [r5, 0x3]\n\ - cmp r3, r0\n\ - bge _080C95FC\n\ - subs r1, 0x5\n\ - mov r8, r1\n\ -_080C9580:\n\ - lsls r3, 16\n\ - asrs r1, r3, 16\n\ - ldr r2, [r5, 0x10]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r4, r0, 2\n\ - adds r1, r4, r2\n\ - ldrb r0, [r1, 0x5]\n\ - adds r7, r3, 0\n\ - cmp r0, 0x7\n\ - bne _080C95EC\n\ - movs r2, 0x96\n\ - lsls r2, 2\n\ - adds r0, r2, 0\n\ - ldrh r1, [r1, 0xA]\n\ - adds r0, r1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080C95EC\n\ - ldr r1, [r5, 0x10]\n\ - adds r1, r4, r1\n\ - ldrh r2, [r1]\n\ - adds r2, 0x7\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - subs r2, r0\n\ - ldrh r0, [r1, 0x2]\n\ - adds r0, 0x7\n\ - mov r3, r9\n\ - ldrh r1, [r3]\n\ - subs r0, r1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - lsls r2, 16\n\ - asrs r1, r2, 16\n\ - movs r3, 0xE0\n\ - lsls r3, 11\n\ - adds r2, r3\n\ - lsrs r2, 16\n\ - cmp r2, 0xE\n\ - bhi _080C95EC\n\ - lsls r0, 16\n\ - asrs r2, r0, 16\n\ - cmp r2, r8\n\ - blt _080C95EC\n\ - cmp r2, 0x5\n\ - bgt _080C95EC\n\ - adds r0, r6, 0\n\ - bl sub_80C9838\n\ -_080C95EC:\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - adds r0, r7, r1\n\ - lsrs r3, r0, 16\n\ - asrs r0, 16\n\ - ldrb r2, [r5, 0x3]\n\ - cmp r0, r2\n\ - blt _080C9580\n\ -_080C95FC:\n\ - adds r0, r6, 0\n\ - bl sub_80C9720\n\ - ldr r0, _080C9618 @ =gTasks\n\ - lsls r1, r6, 2\n\ - adds r1, r6\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r3, 0xC\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0x1\n\ - beq _080C961C\n\ - movs r0, 0\n\ - b _080C961E\n\ - .align 2, 0\n\ -_080C9618: .4byte gTasks\n\ -_080C961C:\n\ - movs r0, 0x1\n\ -_080C961E:\n\ - add sp, 0x4\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided"); + int distanceX, distanceY; + u16 x, y; + s16 newDistanceX, newDistanceY, i; + + PlayerGetDestCoords(&x, &y); + gTasks[taskId].data[2] = FALSE; + + for (i = 0; i < events->bgEventCount; i++) + { + if ((events -> bgEvents[i].kind == 7) && !FlagGet(events -> bgEvents[i].bgUnion.hiddenItem.hiddenItemId + 600)) + { + // do a distance lookup of each item so long as the index remains less than the objects on the current map. + distanceX = (u16)events -> bgEvents[i].x + 7; + newDistanceX = distanceX - x; + distanceY = (u16)events -> bgEvents[i].y + 7; + newDistanceY = distanceY - y; + + // is item in range? + if ((u16)(newDistanceX + 7) < 15 && (newDistanceY >= -5) && (newDistanceY < 6)) + sub_80C9838(taskId, newDistanceX, newDistanceY); // send coordinates of the item relative to the player + } + } + sub_80C9720(taskId); + + // hidden item detected? + if(gTasks[taskId].data[2] == TRUE) + return TRUE; + else + return FALSE; +} + +bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y) +{ + u8 bgEventCount = events->bgEventCount; + struct BgEvent *bgEvent = events->bgEvents; + int i; + + for(i = 0; i < bgEventCount; i++) + { + if(bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed? + { + if(!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600)) + return TRUE; + else + return FALSE; + } + } + return FALSE; +} + +bool8 sub_80C9688(struct MapConnection *connection, int x, int y) +{ + struct MapHeader *mapHeader; + u16 localX, localY; + u32 localOffset; + s32 localLength; + + mapHeader = mapconnection_get_mapheader(connection); + + switch(connection->direction) + { + // same weird temp variable behavior seen in HiddenItemAtPos + case 2: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = mapHeader->mapData->height - 7; + localY = localLength + y; // additions are reversed for some reason + break; + case 1: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = gMapHeader.mapData->height + 7; + localY = y - localLength; + break; + case 3: + localLength = mapHeader->mapData->width - 7; + localX = localLength + x; // additions are reversed for some reason + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + case 4: + localLength = gMapHeader.mapData->width + 7; + localX = x - localLength; + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + default: + return FALSE; + } + return HiddenItemAtPos(mapHeader->events, localX, localY); } -- cgit v1.2.3 From 83d7f52f2cadd4232ee674947a93e93fc18e483a Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 9 Apr 2017 01:05:20 +0000 Subject: finish decompiling item_use.c (#244) * nonmatching sub_80C9720 and decompile sub_80C9838 * finish decompiling Itemfinder functions. * decompile ItemUseOutOfBattle_PokeblockCase and ItemUseOutOfBattle_CoinCase * rename field_doortransition * rename weather file * decompile more of item_use.c * decompile up to repel code * decompile up to stat increase code * finish decompiling item_use.c * remove item_use from ld_script --- src/item_use.c | 948 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 898 insertions(+), 50 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index b68b72b26..309fa5b98 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -2,8 +2,9 @@ #include "asm.h" #include "event_data.h" #include "field_player_avatar.h" -#include "field_player_avatar.h" +#include "field_map_obj_helpers.h" #include "item.h" +#include "items.h" #include "mail.h" #include "map_obj_lock.h" #include "menu.h" @@ -15,44 +16,103 @@ #include "sound.h" #include "string_util.h" #include "task.h" -#include "weather.h" +#include "field_screeneffect.h" #include "fieldmap.h" +#include "coins.h" +#include "berry.h" +#include "vars.h" +#include "battle.h" extern void (* const gExitToOverworldFuncList[])(); extern void (* gUnknown_03005D00)(u8); extern void (* gUnknown_0300485C)(void); +extern void (* gUnknown_03004AE4)(u8); +extern void (* const gUnknown_083D61F4[])(); + +extern u8 *gUnknown_083D61DC[]; + +extern u8 gMoveNames[][13]; + +extern u8 gUnknown_02038561; +extern u8 gLastFieldPokeMenuOpened; +extern u8 gUnknown_02024E6C; + +extern u8 gItemFinderDirections[]; +extern u8 gUnknown_081A1654[]; +extern u8 gUnknown_081A168F[]; + +extern u16 gUnknown_02024A6A[]; extern void HandleItemMenuPaletteFade(u8); extern void ExecuteItemUseFromBlackPalette(void); extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); extern void CleanUpItemMenuMessage(u8); extern void CleanUpOverworldMessage(u8); -extern void ItemUseOutOfBattle_TMHM(u8); -extern void ItemUseOutOfBattle_EvolutionStone(u8); extern void ItemUseOnFieldCB_Bike(u8); extern void ItemUseOnFieldCB_Rod(u8); extern void ItemUseOnFieldCB_Itemfinder(u8); extern void sub_80A5D04(void); extern bool8 IsBikingDisallowedByPlayer(void); extern void GetOnOffBike(u8); -extern u8 GetPlayerDirectionTowardsHiddenItem(s16, s16); -extern void SetPlayerDirectionTowardsItem(u8); -extern void DisplayItemRespondingMessageAndExitItemfinder(u8); -extern void RotatePlayerAndExitItemfinder(u8); -extern void sub_80C9838(u8, s16, s16); +extern struct MapConnection *sub_8056BA0(s16 x, s16 y); // fieldmap.c +extern void sub_810BA7C(u8); +extern void sub_8080E28(void); +extern void UseMedicine(u8); +extern void sub_8070048(u8); +extern void DoPPRecoveryItemEffect(u8); +extern void DoPPUpItemEffect(u8); +extern void DoRareCandyItemEffect(u8); +extern void DoEvolutionStoneItemEffect(u8); +extern u16 ItemIdToBattleMoveId(u16); +extern void sub_80A3FA0(u16 *, u32, u32, u32, u32, u32); +extern void sub_80F914C(u8, void const *); +extern void sub_80A3E0C(void); +extern void TeachMonTMMove(u8); +extern void sub_80878A8(void); +extern void sub_8053014(void); +extern void sub_80A7094(u8); +extern bool8 ExecuteTableBasedItemEffect_(struct Pokemon *mon, u16, u8, u16); +extern void sub_8094E4C(void); +extern u8 ExecuteTableBasedItemEffect__(u8 u8, u16 u16, int i); +extern u8 GetItemEffectType(); extern u8 gOtherText_DadsAdvice[]; extern u8 gOtherText_CantGetOffBike[]; extern u8 gOtherText_NoResponse[]; - -extern u8 gItemFinderDirections[]; +extern u8 gOtherText_ItemfinderResponding[]; +extern u8 gOtherText_ItemfinderItemUnderfoot[]; +extern u8 gOtherText_Coins3[]; +extern u8 gOtherText_BootedHM[]; +extern u8 gOtherText_BootedTM[]; +extern u8 gOtherText_ContainsMove[]; +extern u8 gOtherText_UsedItem[]; +extern u8 gOtherText_RepelLingers[]; +extern u8 gOtherText_UsedFlute[]; +extern u8 gOtherText_UsedRepel[]; +extern u8 gOtherText_BoxIsFull[]; +extern u8 gOtherText_WontHaveAnyEffect[]; +extern u8 gOtherText_SnapConfusion[]; extern u16 gScriptItemId; +extern u16 gBattleTypeFlags; bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId); void RunItemfinderResults(u8); void ExitItemfinder(u8); void sub_80C9720(u8); +void sub_80C9838(u8, s16, s16); +u8 GetPlayerDirectionTowardsHiddenItem(s16, s16); +void SetPlayerDirectionTowardsItem(u8); +void DisplayItemRespondingMessageAndExitItemfinder(u8); +void RotatePlayerAndExitItemfinder(u8); +void sub_80C9D00(u8); +void sub_80C9D74(u8); +void sub_80C9EE4(u8); +void sub_80C9F10(u8); +void sub_80C9F80(u8); +void ItemUseOutOfBattle_TMHM(u8); +void ItemUseOutOfBattle_EvolutionStone(u8); +void ItemUseOutOfBattle_CannotUse(u8); void ExecuteSwitchToOverworldFromItemUse(u8 taskId) { @@ -295,7 +355,7 @@ void ExitItemfinder(u8 taskId) bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId) { - int distanceX, distanceY; + int distanceX, distanceY; u16 x, y; s16 newDistanceX, newDistanceY, i; @@ -347,42 +407,830 @@ bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y) bool8 sub_80C9688(struct MapConnection *connection, int x, int y) { - struct MapHeader *mapHeader; - u16 localX, localY; - u32 localOffset; - s32 localLength; - - mapHeader = mapconnection_get_mapheader(connection); - - switch(connection->direction) - { - // same weird temp variable behavior seen in HiddenItemAtPos - case 2: - localOffset = connection->offset + 7; - localX = x - localOffset; - localLength = mapHeader->mapData->height - 7; - localY = localLength + y; // additions are reversed for some reason - break; - case 1: - localOffset = connection->offset + 7; - localX = x - localOffset; - localLength = gMapHeader.mapData->height + 7; - localY = y - localLength; - break; - case 3: - localLength = mapHeader->mapData->width - 7; - localX = localLength + x; // additions are reversed for some reason - localOffset = connection->offset + 7; - localY = y - localOffset; - break; - case 4: - localLength = gMapHeader.mapData->width + 7; - localX = x - localLength; - localOffset = connection->offset + 7; - localY = y - localOffset; - break; - default: - return FALSE; - } - return HiddenItemAtPos(mapHeader->events, localX, localY); + struct MapHeader *mapHeader; + u16 localX, localY; + u32 localOffset; + s32 localLength; + + mapHeader = mapconnection_get_mapheader(connection); + + switch(connection->direction) + { + // same weird temp variable behavior seen in HiddenItemAtPos + case 2: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = mapHeader->mapData->height - 7; + localY = localLength + y; // additions are reversed for some reason + break; + case 1: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = gMapHeader.mapData->height + 7; + localY = y - localLength; + break; + case 3: + localLength = mapHeader->mapData->width - 7; + localX = localLength + x; // additions are reversed for some reason + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + case 4: + localLength = gMapHeader.mapData->width + 7; + localX = x - localLength; + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + default: + return FALSE; + } + return HiddenItemAtPos(mapHeader->events, localX, localY); +} + +// weird math +#ifdef NONMATCHING +void sub_80C9720(u8 taskId) +{ + s16 x, y; + s16 curX, curY; + s16 width = gMapHeader.mapData->width + 7; + s16 height = gMapHeader.mapData->height + 7; + + PlayerGetDestCoords(&x, &y); + + for (curX = x - 7; curX <= x + 7; curX++) + { + for (curY = y - 5; curY <= y + 5; curY++) + { + if (7 > curX + || curX >= width + || 7 > curY + || curY >= height) + { + struct MapConnection *conn = sub_8056BA0(curX, curY); + if (conn && sub_80C9688(conn, curX, curY) == TRUE) + sub_80C9838(taskId, curX - x, curY - y); + } + } + } +} +#else +__attribute__((naked)) +void sub_80C9720(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x4]\n\ + ldr r0, _080C9834 @ =gMapHeader\n\ + ldr r1, [r0]\n\ + ldr r0, [r1]\n\ + adds r0, 0x7\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x8]\n\ + ldr r0, [r1, 0x4]\n\ + adds r0, 0x7\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0xC]\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl PlayerGetDestCoords\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + subs r0, 0x7\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + asrs r0, 16\n\ + mov r1, sp\n\ + movs r2, 0\n\ + ldrsh r1, [r1, r2]\n\ + adds r1, 0x7\n\ + cmp r0, r1\n\ + bgt _080C9824\n\ +_080C976E:\n\ + mov r5, sp\n\ + ldrh r0, [r5, 0x2]\n\ + subs r0, 0x5\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + lsls r2, r4, 16\n\ + asrs r1, r2, 16\n\ + movs r6, 0x2\n\ + ldrsh r0, [r5, r6]\n\ + adds r0, 0x5\n\ + lsls r3, 16\n\ + mov r8, r3\n\ + cmp r1, r0\n\ + bgt _080C980E\n\ + movs r0, 0x7\n\ + str r0, [sp, 0x10]\n\ + mov r1, r8\n\ + asrs r1, 16\n\ + mov r9, r1\n\ + mov r10, r0\n\ +_080C9796:\n\ + ldr r3, [sp, 0x10]\n\ + cmp r3, r9\n\ + bgt _080C97B8\n\ + ldr r5, [sp, 0x8]\n\ + lsls r0, r5, 16\n\ + asrs r0, 16\n\ + cmp r9, r0\n\ + bge _080C97B8\n\ + asrs r1, r2, 16\n\ + cmp r10, r1\n\ + bgt _080C97B8\n\ + ldr r6, [sp, 0xC]\n\ + lsls r0, r6, 16\n\ + asrs r0, 16\n\ + lsls r7, r4, 16\n\ + cmp r1, r0\n\ + blt _080C97F6\n\ +_080C97B8:\n\ + mov r0, r8\n\ + asrs r5, r0, 16\n\ + lsls r4, 16\n\ + asrs r6, r4, 16\n\ + adds r0, r5, 0\n\ + adds r1, r6, 0\n\ + bl sub_8056BA0\n\ + adds r7, r4, 0\n\ + cmp r0, 0\n\ + beq _080C97F6\n\ + adds r1, r5, 0\n\ + adds r2, r6, 0\n\ + bl sub_80C9688\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080C97F6\n\ + mov r0, sp\n\ + ldrh r1, [r0]\n\ + subs r1, r5, r1\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + ldrh r2, [r0, 0x2]\n\ + subs r2, r6, r2\n\ + lsls r2, 16\n\ + asrs r2, 16\n\ + ldr r0, [sp, 0x4]\n\ + bl sub_80C9838\n\ +_080C97F6:\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + adds r0, r7, r1\n\ + lsrs r4, r0, 16\n\ + lsls r2, r4, 16\n\ + asrs r1, r2, 16\n\ + mov r3, sp\n\ + movs r5, 0x2\n\ + ldrsh r0, [r3, r5]\n\ + adds r0, 0x5\n\ + cmp r1, r0\n\ + ble _080C9796\n\ +_080C980E:\n\ + movs r1, 0x80\n\ + lsls r1, 9\n\ + add r1, r8\n\ + lsrs r3, r1, 16\n\ + asrs r1, 16\n\ + mov r0, sp\n\ + movs r6, 0\n\ + ldrsh r0, [r0, r6]\n\ + adds r0, 0x7\n\ + cmp r1, r0\n\ + ble _080C976E\n\ +_080C9824:\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080C9834: .4byte gMapHeader\n\ + .syntax divided"); +} +#endif + +void sub_80C9838(u8 taskId, s16 x, s16 y) +{ + s16 *data = gTasks[taskId].data; + s16 var1, var2, var3, var4; + + if(data[2] == FALSE) + { + data[0] = x; + data[1] = y; + data[2] = TRUE; + } + else + { + // data[0] and data[1] contain the player's coordinates. + // x and y contain the item's coordinates. + if(data[0] < 0) + var1 = data[0] * -1; // item is to the left + else + var1 = data[0]; // item is to the right + + if(data[1] < 0) + var2 = data[1] * -1; // item is to the north + else + var2 = data[1]; // item is to the south + + if(x < 0) + var3 = x * -1; + else + var3 = x; + + if(y < 0) + var4 = y * -1; + else + var4 = y; + + if(var1 + var2 > var3 + var4) + { + data[0] = x; + data[1] = y; + } + else + { + if(var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y))) + { + data[0] = x; + data[1] = y; + } + } + } +} + +u8 GetPlayerDirectionTowardsHiddenItem(s16 itemX, s16 itemY) +{ + s16 abX, abY; + + if(itemX == 0 && itemY == 0) + return DIR_NONE; // player is standing on the item. + + // get absolute X distance. + if(itemX < 0) + abX = itemX * -1; + else + abX = itemX; + + // get absolute Y distance. + if(itemY < 0) + abY = itemY * -1; + else + abY = itemY; + + if(abX > abY) + { + if(itemX < 0) + return DIR_EAST; + else + return DIR_NORTH; + } + else + { + if(abX < abY) + { + if(itemY < 0) + return DIR_SOUTH; + else + return DIR_WEST; + } + if(abX == abY) + { + if(itemY < 0) + return DIR_SOUTH; + else + return DIR_WEST; + } + return DIR_NONE; // should never get here. return something so it doesnt crash. + } +} + +void SetPlayerDirectionTowardsItem(u8 direction) +{ + FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + FieldObjectClearAnim(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + UnfreezeMapObject(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]); + PlayerTurnInPlace(direction); +} + +void DisplayItemRespondingMessageAndExitItemfinder(u8 taskId) +{ + if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE) + DisplayItemMessageOnField(taskId, gOtherText_ItemfinderResponding, ExitItemfinder, 0); +} + +void RotatePlayerAndExitItemfinder(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE + || data[2] == FALSE) + { + SetPlayerDirectionTowardsItem(gItemFinderDirections[data[5]]); + data[2] = 1; + data[5] = (data[5] + 1) & 3; + data[3]++; + + if(data[3] == 4) + DisplayItemMessageOnField(taskId, gOtherText_ItemfinderItemUnderfoot, ExitItemfinder, 0); + } +} + +void ItemUseOutOfBattle_PokeblockCase(u8 taskId) +{ + if(sub_80F9344() == TRUE) + { + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); + } + else if(gTasks[taskId].data[2] != TRUE) + { + sub_810BA7C(0); + ItemMenu_ConfirmNormalFade(taskId); + } + else + { + gUnknown_0300485C = (void *)sub_8080E28; + sub_810BA7C(1); + ItemMenu_ConfirmComplexFade(taskId); + } +} + +void ItemUseOutOfBattle_CoinCase(u8 taskId) +{ + ConvertIntToDecimalStringN(gStringVar1, GetCoins(), 0, 4); + StringExpandPlaceholders(gStringVar4, gOtherText_Coins3); + + if(!gTasks[taskId].data[2]) + { + MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1); + } + else + { + DisplayItemMessageOnField(taskId, gStringVar4, CleanUpOverworldMessage, 0); + } +} + +void sub_80C9BB8(u8 var) +{ + if(gMain.newKeys & A_BUTTON) + CleanUpItemMenuMessage(var); +} + +void sub_80C9BD8(u8 var) +{ + if(gMain.newKeys & A_BUTTON) + CleanUpOverworldMessage(var); +} + +// unused +void ItemUseOutOfBattle_SSTicket(u8 taskId) +{ + if(gTasks[taskId].data[2] == 0) + { + MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BB8, 1); + } + else + { + DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BD8, 0); + } +} + +void sub_80C9C7C(u8 taskId) +{ + if(IsPlayerFacingPlantedBerryTree() == TRUE) + { + gUnknown_03005D00 = sub_80C9D00; + gUnknown_0300485C = ExecuteItemUseFromBlackPalette; + gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; + gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; + gTasks[taskId].func = HandleItemMenuPaletteFade; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); + } + else + { + ItemId_GetFieldFunc(gScriptItemId)(taskId); + } +} + +void sub_80C9D00(u8 taskId) +{ + RemoveBagItem(gScriptItemId, 1); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(gUnknown_081A1654); + DestroyTask(taskId); +} + +void ItemUseOutOfBattle_WailmerPail(u8 taskId) +{ + if(TryToWaterBerryTree() == TRUE) + { + gUnknown_03005D00 = sub_80C9D74; + SetUpItemUseOnFieldCallback(taskId); + } + else + { + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); + } +} + +void sub_80C9D74(u8 taskId) +{ + ScriptContext2_Enable(); + ScriptContext1_SetupScript(gUnknown_081A168F); + DestroyTask(taskId); +} + +void sub_80C9D98(u8 taskId) +{ + gUnknown_02038561 = 0; + ItemMenu_ConfirmNormalFade(taskId); +} + +void ItemUseOutOfBattle_Medicine(u8 taskId) +{ + gUnknown_03004AE4 = UseMedicine; + sub_80C9D98(taskId); +} + +void ItemUseOutOfBattle_SacredAsh(u8 taskId) +{ + u8 i; + + gLastFieldPokeMenuOpened = 0; + + for(i = 0; i < 6; i++) + { + if(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + { + gLastFieldPokeMenuOpened = i; + break; + } + } + gUnknown_03004AE4 = sub_8070048; + gUnknown_02038561 = 4; + ItemMenu_ConfirmNormalFade(taskId); +} + +void ItemUseOutOfBattle_PPRecovery(u8 taskId) +{ + gUnknown_03004AE4 = DoPPRecoveryItemEffect; + sub_80C9D98(taskId); +} + +void ItemUseOutOfBattle_PPUp(u8 taskId) +{ + gUnknown_03004AE4 = DoPPUpItemEffect; + sub_80C9D98(taskId); +} + +void ItemUseOutOfBattle_RareCandy(u8 taskId) +{ + gUnknown_03004AE4 = DoRareCandyItemEffect; + sub_80C9D98(taskId); +} + +void ItemUseOutOfBattle_TMHM(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + + if(gScriptItemId >= ITEM_HM01) + DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM + else + DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM +} + +void sub_80C9EE4(u8 taskId) +{ + PlaySE(2); + gTasks[taskId].func = sub_80C9F10; +} + +void sub_80C9F10(u8 taskId) +{ + if(gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gScriptItemId)]); + StringExpandPlaceholders(gStringVar4, gOtherText_ContainsMove); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80C9F80, 1); + } +} + +void sub_80C9F80(u8 var) +{ + DisplayYesNoMenu(7, 7, 1); + sub_80A3FA0(gBGTilemapBuffers[1], 8, 8, 5, 4, 1); + sub_80F914C(var, gUnknown_083D61F4); +} + +void sub_80C9FC0(u8 var) +{ + gUnknown_03004AE4 = TeachMonTMMove; + sub_80C9D98(var); +} + +void sub_80C9FDC(void) +{ + RemoveBagItem(gScriptItemId, 1); + sub_80A3E0C(); + CopyItemName(gScriptItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_UsedItem); +} + +void ItemUseOutOfBattle_Repel(u8 var) +{ + if(VarGet(VAR_REPEL_STEP_COUNT) == FALSE) + { + VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gScriptItemId)); + sub_80C9FDC(); + DisplayItemMessageOnField(var, gStringVar4, CleanUpItemMenuMessage, 1); + } + else + { + DisplayItemMessageOnField(var, gOtherText_RepelLingers, CleanUpItemMenuMessage, 1); + } +} + +void sub_80CA07C(void) +{ + sub_80A3E0C(); + CopyItemName(gScriptItemId, gStringVar2); +} + +void sub_80CA098(u8 taskId) +{ + if(++gTasks[taskId].data[15] > 7) + { + PlaySE(0x75); + DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1); + } +} + +void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) +{ + if(gScriptItemId == 43) + { + FlagSet(SYS_ENC_UP_ITEM); + FlagReset(SYS_ENC_DOWN_ITEM); + sub_80CA07C(); + StringExpandPlaceholders(gStringVar4, gOtherText_UsedFlute); + gTasks[taskId].func = sub_80CA098; + gTasks[taskId].data[15] = 0; + } + else if(gScriptItemId == 42) + { + FlagSet(SYS_ENC_DOWN_ITEM); + FlagReset(SYS_ENC_UP_ITEM); + sub_80CA07C(); + StringExpandPlaceholders(gStringVar4, gOtherText_UsedRepel); + gTasks[taskId].func = sub_80CA098; + gTasks[taskId].data[15] = 0; + } +} + +void task08_080A1C44(u8 taskId) +{ + player_avatar_init_params_reset(); + sub_80878A8(); + DestroyTask(taskId); +} + +void sub_80CA18C(u8 taskId) +{ + sub_8053014(); + sub_80C9FDC(); + gTasks[taskId].data[0] = 0; + DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44, 0); +} + +bool8 sub_80CA1C8(void) +{ + if(gMapHeader.mapType == MAP_TYPE_UNDERGROUND) + return TRUE; + else + return FALSE; +} + +void ItemUseOutOfBattle_EscapeRope(u8 taskId) +{ + if(sub_80CA1C8() == TRUE) // is map type an area you can use escape rope? + { + gUnknown_03005D00 = sub_80CA18C; + SetUpItemUseOnFieldCallback(taskId); + } + else + { + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); + } +} + +void ItemUseOutOfBattle_EvolutionStone(u8 var) +{ + gUnknown_03004AE4 = DoEvolutionStoneItemEffect; + sub_80C9D98(var); +} + +void ItemUseInBattle_PokeBall(u8 var) +{ + if(PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? + { + RemoveBagItem(gScriptItemId, 1); + sub_80A7094(var); + } + else + { + MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + DisplayItemMessageOnField(var, gOtherText_BoxIsFull, CleanUpItemMenuMessage, 1); + } +} + +void sub_80CA294(u8 var) +{ + if(gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + sub_80A7094(var); +} + +void sub_80CA2BC(u8 taskId) +{ + if(++gTasks[taskId].data[15] > 7) + { + PlaySE(1); + RemoveBagItem(gScriptItemId, 1); + DisplayItemMessageOnField(taskId, sub_803F378(gScriptItemId), sub_80CA294, 1); + } +} + +void ItemUseInBattle_StatIncrease(u8 taskId) +{ + u16 partyId = gUnknown_02024A6A[gUnknown_02024E6C]; + + MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + + if(ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE) + { + DisplayItemMessageOnField(taskId, gOtherText_WontHaveAnyEffect, CleanUpItemMenuMessage, 1); + } + else + { + gTasks[taskId].func = sub_80CA2BC; + gTasks[taskId].data[15] = 0; + } +} + +void sub_80CA394(u8 taskId) +{ + if(!gPaletteFade.active) + { + sub_8094E4C(); + gpu_pal_allocator_reset__manage_upper_four(); + DestroyTask(taskId); + } +} + +void sub_80CA3C0(u8 taskId) +{ + gTasks[taskId].func = sub_80CA394; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); +} + +void ItemUseInBattle_Medicine(u8 var) +{ + gUnknown_03004AE4 = UseMedicine; + sub_80CA3C0(var); +} + +void unref_sub_80CA410(u8 var) +{ + gUnknown_03004AE4 = sub_8070048; + sub_80CA3C0(var); +} + +void ItemUseInBattle_PPRecovery(u8 var) +{ + gUnknown_03004AE4 = DoPPRecoveryItemEffect; + sub_80CA3C0(var); +} + +void unref_sub_80CA448(u8 var) +{ + MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + + if(ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE) + { + RemoveBagItem(gScriptItemId, 1); + GetMonNickname(&gPlayerParty[0], gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion); + DisplayItemMessageOnField(var, gStringVar4, sub_80A7094, 1); + } + else + { + DisplayItemMessageOnField(var, gOtherText_WontHaveAnyEffect, CleanUpItemMenuMessage, 1); + } +} + +void ItemUseInBattle_Escape(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + + if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) + { + sub_80C9FDC(); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80A7094, 1); + } + else + { + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); + } +} + +void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) +{ + switch(GetItemEffectType(gScriptItemId) - 1) + { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_Medicine(taskId); + break; + case 9: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_SacredAsh(taskId); + break; + case 0: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_RareCandy(taskId); + break; + case 18: + case 19: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_PPUp(taskId); + break; + case 20: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_PPRecovery(taskId); + break; + default: + gTasks[taskId].data[15] = 4; + ItemUseOutOfBattle_CannotUse(taskId); + } +} + +void ItemUseInBattle_EnigmaBerry(u8 taskId) +{ + switch(GetItemEffectType(gScriptItemId)) + { + case 0: + ItemUseInBattle_StatIncrease(taskId); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 11: + ItemUseInBattle_Medicine(taskId); + break; + case 21: + ItemUseInBattle_PPRecovery(taskId); + break; + default: + ItemUseOutOfBattle_CannotUse(taskId); + } +} + +void ItemUseOutOfBattle_CannotUse(u8 taskId) +{ + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]); } -- cgit v1.2.3 From ddc846fa6a0d9a13cfba6f52488a66f6f4562a2d Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Thu, 27 Apr 2017 15:43:31 +0200 Subject: Sort includes --- src/item_use.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 309fa5b98..4fcf8d2c1 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -1,8 +1,13 @@ #include "global.h" #include "asm.h" +#include "battle.h" +#include "berry.h" +#include "coins.h" #include "event_data.h" -#include "field_player_avatar.h" #include "field_map_obj_helpers.h" +#include "field_player_avatar.h" +#include "field_screeneffect.h" +#include "fieldmap.h" #include "item.h" #include "items.h" #include "mail.h" @@ -16,12 +21,7 @@ #include "sound.h" #include "string_util.h" #include "task.h" -#include "field_screeneffect.h" -#include "fieldmap.h" -#include "coins.h" -#include "berry.h" #include "vars.h" -#include "battle.h" extern void (* const gExitToOverworldFuncList[])(); extern void (* gUnknown_03005D00)(u8); -- cgit v1.2.3 From 0b491add8e7e9bdabb3f08f26d28eb0b70b67956 Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Sun, 30 Apr 2017 18:17:07 -0700 Subject: define item_use data in C --- src/item_use.c | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 4fcf8d2c1..5c485bb11 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -23,13 +23,9 @@ #include "task.h" #include "vars.h" -extern void (* const gExitToOverworldFuncList[])(); extern void (* gUnknown_03005D00)(u8); extern void (* gUnknown_0300485C)(void); extern void (* gUnknown_03004AE4)(u8); -extern void (* const gUnknown_083D61F4[])(); - -extern u8 *gUnknown_083D61DC[]; extern u8 gMoveNames[][13]; @@ -37,7 +33,6 @@ extern u8 gUnknown_02038561; extern u8 gLastFieldPokeMenuOpened; extern u8 gUnknown_02024E6C; -extern u8 gItemFinderDirections[]; extern u8 gUnknown_081A1654[]; extern u8 gUnknown_081A168F[]; @@ -45,7 +40,7 @@ extern u16 gUnknown_02024A6A[]; extern void HandleItemMenuPaletteFade(u8); extern void ExecuteItemUseFromBlackPalette(void); -extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); +extern void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); extern void CleanUpItemMenuMessage(u8); extern void CleanUpOverworldMessage(u8); extern void ItemUseOnFieldCB_Bike(u8); @@ -75,6 +70,8 @@ extern bool8 ExecuteTableBasedItemEffect_(struct Pokemon *mon, u16, u8, u16); extern void sub_8094E4C(void); extern u8 ExecuteTableBasedItemEffect__(u8 u8, u16 u16, int i); extern u8 GetItemEffectType(); +extern void sub_808B020(void); +extern void sub_810B96C(void); extern u8 gOtherText_DadsAdvice[]; extern u8 gOtherText_CantGetOffBike[]; @@ -110,10 +107,42 @@ void sub_80C9D74(u8); void sub_80C9EE4(u8); void sub_80C9F10(u8); void sub_80C9F80(u8); +void sub_80C9FC0(u8); void ItemUseOutOfBattle_TMHM(u8); void ItemUseOutOfBattle_EvolutionStone(u8); void ItemUseOutOfBattle_CannotUse(u8); +static const u8 Unknown_83D619C[] = _( + "この チケットで ふねに のりほうだい\n" + "はやく のってみたいな" +); + +static const u8 Unknown_83D61BC[] = _( + "この チケットで ふねに のりほうだい\n" + "はやく のってみたいな" +); + +static const u8 *const gUnknown_083D61DC[] = +{ + Unknown_83D619C, + Unknown_83D61BC, +}; + +static void (* const gExitToOverworldFuncList[])(void) = +{ + sub_808B020, + c2_exit_to_overworld_2_switch, + sub_810B96C, +}; + +static const u8 gItemFinderDirections[] = { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST }; + +static void (* const gUnknown_083D61F4[])(u8) = +{ + sub_80C9FC0, + CleanUpItemMenuMessage, +}; + void ExecuteSwitchToOverworldFromItemUse(u8 taskId) { u8 taskData; -- cgit v1.2.3 From 7f03ba4951c5045274dab3f2a3de8e8d498b8df3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 4 May 2017 00:37:07 +0000 Subject: decompile a little more of player_pc.c and dump half of battle_anim data incbins (#254) * matching sub_813A280 and sub_813A4B4 * move data to item_use.c * slightly less ugly NewGameInitPCItems * more less ugly NewGameInitPCItems - Game Freak doesn't know how to use structs * decompile HandleQuantityRolling and sub_813A6FC * partially label and comment battle_anim.c * decompile sub_813A794 and sub_813A83C * minor comments on battle_anim.c * decompile up to GF shenanigans #14390 * up to GF shenanigans #38571 * dump half of battle_anim_80CA710.s incbins * dump most incbins from battle_anim_812C144.s * obj_rot_scal fixes * subsprite * i cant even identify byte arrays --- src/item_use.c | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 5c485bb11..923957c6b 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -112,36 +112,29 @@ void ItemUseOutOfBattle_TMHM(u8); void ItemUseOutOfBattle_EvolutionStone(u8); void ItemUseOutOfBattle_CannotUse(u8); -static const u8 Unknown_83D619C[] = _( - "この チケットで ふねに のりほうだい\n" - "はやく のってみたいな" -); +const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); +const u8 gSSTidalBetaString2[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); -static const u8 Unknown_83D61BC[] = _( - "この チケットで ふねに のりほうだい\n" - "はやく のってみたいな" -); - -static const u8 *const gUnknown_083D61DC[] = +const struct TextStruct gUnknown_083D61DC[2] = { - Unknown_83D619C, - Unknown_83D61BC, + gSSTidalBetaString, + gSSTidalBetaString2, }; -static void (* const gExitToOverworldFuncList[])(void) = +const struct FuncStruct gExitToOverworldFuncList[3] = { - sub_808B020, - c2_exit_to_overworld_2_switch, - sub_810B96C, + sub_808B020, + c2_exit_to_overworld_2_switch, + sub_810B96C, }; -static const u8 gItemFinderDirections[] = { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST }; +const u8 gItemFinderDirections[] = { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST }; -static void (* const gUnknown_083D61F4[])(u8) = +const struct FuncStruct gUnknown_083D61F4[2] = { - sub_80C9FC0, - CleanUpItemMenuMessage, -}; + sub_80C9FC0, + CleanUpItemMenuMessage, +}; void ExecuteSwitchToOverworldFromItemUse(u8 taskId) { @@ -152,8 +145,8 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId) else taskData = ItemId_GetType(gScriptItemId) - 1; - gTasks[taskId].data[8] = (u32)gExitToOverworldFuncList[taskData] >> 16; - gTasks[taskId].data[9] = (u32)gExitToOverworldFuncList[taskData]; + gTasks[taskId].data[8] = (u32)(gExitToOverworldFuncList[taskData].func) >> 16; + gTasks[taskId].data[9] = (u32)(gExitToOverworldFuncList[taskData].func); gTasks[taskId].func = HandleItemMenuPaletteFade; } @@ -835,11 +828,11 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId) if(gTasks[taskId].data[2] == 0) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BB8, 1); + DisplayItemMessageOnField(taskId, (u8 *)gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)].text, sub_80C9BB8, 1); } else { - DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BD8, 0); + DisplayItemMessageOnField(taskId, (u8 *)gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)].text, sub_80C9BD8, 0); } } -- cgit v1.2.3 From c26ecaec0fbb5f322fd7f08dbf4e96082a33371e Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Wed, 3 May 2017 18:16:31 -0700 Subject: clean up whitespace --- src/item_use.c | 64 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 923957c6b..995901156 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -115,25 +115,25 @@ void ItemUseOutOfBattle_CannotUse(u8); const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); const u8 gSSTidalBetaString2[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); -const struct TextStruct gUnknown_083D61DC[2] = +const struct TextStruct gUnknown_083D61DC[2] = { - gSSTidalBetaString, - gSSTidalBetaString2, + gSSTidalBetaString, + gSSTidalBetaString2, }; -const struct FuncStruct gExitToOverworldFuncList[3] = +const struct FuncStruct gExitToOverworldFuncList[3] = { - sub_808B020, - c2_exit_to_overworld_2_switch, - sub_810B96C, + sub_808B020, + c2_exit_to_overworld_2_switch, + sub_810B96C, }; const u8 gItemFinderDirections[] = { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST }; -const struct FuncStruct gUnknown_083D61F4[2] = +const struct FuncStruct gUnknown_083D61F4[2] = { - sub_80C9FC0, - CleanUpItemMenuMessage, + sub_80C9FC0, + CleanUpItemMenuMessage, }; void ExecuteSwitchToOverworldFromItemUse(u8 taskId) @@ -399,7 +399,7 @@ bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId) sub_80C9838(taskId, newDistanceX, newDistanceY); // send coordinates of the item relative to the player } } - sub_80C9720(taskId); + sub_80C9720(taskId); // hidden item detected? if(gTasks[taskId].data[2] == TRUE) @@ -433,9 +433,9 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y) u16 localX, localY; u32 localOffset; s32 localLength; - + mapHeader = mapconnection_get_mapheader(connection); - + switch(connection->direction) { // same weird temp variable behavior seen in HiddenItemAtPos @@ -651,7 +651,7 @@ void sub_80C9838(u8 taskId, s16 x, s16 y) { s16 *data = gTasks[taskId].data; s16 var1, var2, var3, var4; - + if(data[2] == FALSE) { data[0] = x; @@ -666,22 +666,22 @@ void sub_80C9838(u8 taskId, s16 x, s16 y) var1 = data[0] * -1; // item is to the left else var1 = data[0]; // item is to the right - + if(data[1] < 0) var2 = data[1] * -1; // item is to the north else var2 = data[1]; // item is to the south - + if(x < 0) var3 = x * -1; else var3 = x; - + if(y < 0) var4 = y * -1; else var4 = y; - + if(var1 + var2 > var3 + var4) { data[0] = x; @@ -716,7 +716,7 @@ u8 GetPlayerDirectionTowardsHiddenItem(s16 itemX, s16 itemY) abY = itemY * -1; else abY = itemY; - + if(abX > abY) { if(itemX < 0) @@ -738,7 +738,7 @@ u8 GetPlayerDirectionTowardsHiddenItem(s16 itemX, s16 itemY) if(itemY < 0) return DIR_SOUTH; else - return DIR_WEST; + return DIR_WEST; } return DIR_NONE; // should never get here. return something so it doesnt crash. } @@ -761,7 +761,7 @@ void DisplayItemRespondingMessageAndExitItemfinder(u8 taskId) void RotatePlayerAndExitItemfinder(u8 taskId) { s16 *data = gTasks[taskId].data; - + if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE || data[2] == FALSE) { @@ -769,7 +769,7 @@ void RotatePlayerAndExitItemfinder(u8 taskId) data[2] = 1; data[5] = (data[5] + 1) & 3; data[3]++; - + if(data[3] == 4) DisplayItemMessageOnField(taskId, gOtherText_ItemfinderItemUnderfoot, ExitItemfinder, 0); } @@ -798,7 +798,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId) { ConvertIntToDecimalStringN(gStringVar1, GetCoins(), 0, 4); StringExpandPlaceholders(gStringVar4, gOtherText_Coins3); - + if(!gTasks[taskId].data[2]) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); @@ -896,9 +896,9 @@ void ItemUseOutOfBattle_Medicine(u8 taskId) void ItemUseOutOfBattle_SacredAsh(u8 taskId) { u8 i; - + gLastFieldPokeMenuOpened = 0; - + for(i = 0; i < 6; i++) { if(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) @@ -927,13 +927,13 @@ void ItemUseOutOfBattle_PPUp(u8 taskId) void ItemUseOutOfBattle_RareCandy(u8 taskId) { gUnknown_03004AE4 = DoRareCandyItemEffect; - sub_80C9D98(taskId); + sub_80C9D98(taskId); } void ItemUseOutOfBattle_TMHM(u8 taskId) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - + if(gScriptItemId >= ITEM_HM01) DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM else @@ -1103,9 +1103,9 @@ void sub_80CA2BC(u8 taskId) void ItemUseInBattle_StatIncrease(u8 taskId) { u16 partyId = gUnknown_02024A6A[gUnknown_02024E6C]; - + MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - + if(ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE) { DisplayItemMessageOnField(taskId, gOtherText_WontHaveAnyEffect, CleanUpItemMenuMessage, 1); @@ -1152,9 +1152,9 @@ void ItemUseInBattle_PPRecovery(u8 var) } void unref_sub_80CA448(u8 var) -{ +{ MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - + if(ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE) { RemoveBagItem(gScriptItemId, 1); @@ -1171,7 +1171,7 @@ void unref_sub_80CA448(u8 var) void ItemUseInBattle_Escape(u8 taskId) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - + if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) { sub_80C9FDC(); -- cgit v1.2.3 From f492004cb605a45b0b43e94121a0f504d7fb10cc Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Wed, 3 May 2017 21:50:25 -0700 Subject: introduce YesNoFuncTable struct --- src/item_use.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 995901156..762bb70f2 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -11,8 +11,10 @@ #include "item.h" #include "items.h" #include "mail.h" +#include "main.h" #include "map_obj_lock.h" #include "menu.h" +#include "menu_helpers.h" #include "metatile_behavior.h" #include "palette.h" #include "rom4.h" @@ -60,7 +62,6 @@ extern void DoRareCandyItemEffect(u8); extern void DoEvolutionStoneItemEffect(u8); extern u16 ItemIdToBattleMoveId(u16); extern void sub_80A3FA0(u16 *, u32, u32, u32, u32, u32); -extern void sub_80F914C(u8, void const *); extern void sub_80A3E0C(void); extern void TeachMonTMMove(u8); extern void sub_80878A8(void); @@ -112,28 +113,28 @@ void ItemUseOutOfBattle_TMHM(u8); void ItemUseOutOfBattle_EvolutionStone(u8); void ItemUseOutOfBattle_CannotUse(u8); -const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); -const u8 gSSTidalBetaString2[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); +static const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); +static const u8 gSSTidalBetaString2[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); -const struct TextStruct gUnknown_083D61DC[2] = +static const struct TextStruct gUnknown_083D61DC[2] = { gSSTidalBetaString, gSSTidalBetaString2, }; -const struct FuncStruct gExitToOverworldFuncList[3] = +static const MainCallback gExitToOverworldFuncList[] = { sub_808B020, c2_exit_to_overworld_2_switch, sub_810B96C, }; -const u8 gItemFinderDirections[] = { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST }; +static const u8 gItemFinderDirections[] = { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST }; -const struct FuncStruct gUnknown_083D61F4[2] = +static const struct YesNoFuncTable gUnknown_083D61F4 = { - sub_80C9FC0, - CleanUpItemMenuMessage, + .yesFunc = sub_80C9FC0, + .noFunc = CleanUpItemMenuMessage, }; void ExecuteSwitchToOverworldFromItemUse(u8 taskId) @@ -145,8 +146,8 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId) else taskData = ItemId_GetType(gScriptItemId) - 1; - gTasks[taskId].data[8] = (u32)(gExitToOverworldFuncList[taskData].func) >> 16; - gTasks[taskId].data[9] = (u32)(gExitToOverworldFuncList[taskData].func); + gTasks[taskId].data[8] = (u32)gExitToOverworldFuncList[taskData] >> 16; + gTasks[taskId].data[9] = (u32)gExitToOverworldFuncList[taskData]; gTasks[taskId].func = HandleItemMenuPaletteFade; } @@ -960,7 +961,7 @@ void sub_80C9F80(u8 var) { DisplayYesNoMenu(7, 7, 1); sub_80A3FA0(gBGTilemapBuffers[1], 8, 8, 5, 4, 1); - sub_80F914C(var, gUnknown_083D61F4); + sub_80F914C(var, &gUnknown_083D61F4); } void sub_80C9FC0(u8 var) -- cgit v1.2.3 From ca3da9a99901a20aa1b32a2bd9063fb49bb8612a Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Tue, 9 May 2017 03:46:55 -0700 Subject: file renaming --- src/item_use.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 762bb70f2..4047ade5c 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -6,7 +6,7 @@ #include "event_data.h" #include "field_map_obj_helpers.h" #include "field_player_avatar.h" -#include "field_screeneffect.h" +#include "field_weather.h" #include "fieldmap.h" #include "item.h" #include "items.h" -- cgit v1.2.3 From 010eb456d63b0d644285f263f310d73bfb9646b2 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 20 May 2017 17:49:54 +0200 Subject: Decrease indentation level of switches --- src/item_use.c | 178 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 89 insertions(+), 89 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 4047ade5c..116a57226 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -180,13 +180,13 @@ void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text) switch (playerMenuStatus) { - case 0: // Item Menu - MenuZeroFillWindowRect(0, 13, 13, 20); - DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); - break; - default: // Field - DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0); - break; + case 0: // Item Menu + MenuZeroFillWindowRect(0, 13, 13, 20); + DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); + break; + default: // Field + DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0); + break; } } @@ -439,33 +439,33 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y) switch(connection->direction) { - // same weird temp variable behavior seen in HiddenItemAtPos - case 2: - localOffset = connection->offset + 7; - localX = x - localOffset; - localLength = mapHeader->mapData->height - 7; - localY = localLength + y; // additions are reversed for some reason - break; - case 1: - localOffset = connection->offset + 7; - localX = x - localOffset; - localLength = gMapHeader.mapData->height + 7; - localY = y - localLength; - break; - case 3: - localLength = mapHeader->mapData->width - 7; - localX = localLength + x; // additions are reversed for some reason - localOffset = connection->offset + 7; - localY = y - localOffset; - break; - case 4: - localLength = gMapHeader.mapData->width + 7; - localX = x - localLength; - localOffset = connection->offset + 7; - localY = y - localOffset; - break; - default: - return FALSE; + // same weird temp variable behavior seen in HiddenItemAtPos + case 2: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = mapHeader->mapData->height - 7; + localY = localLength + y; // additions are reversed for some reason + break; + case 1: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = gMapHeader.mapData->height + 7; + localY = y - localLength; + break; + case 3: + localLength = mapHeader->mapData->width - 7; + localX = localLength + x; // additions are reversed for some reason + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + case 4: + localLength = gMapHeader.mapData->width + 7; + localX = x - localLength; + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + default: + return FALSE; } return HiddenItemAtPos(mapHeader->events, localX, localY); } @@ -1188,42 +1188,42 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) { switch(GetItemEffectType(gScriptItemId) - 1) { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_Medicine(taskId); - break; - case 9: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_SacredAsh(taskId); - break; - case 0: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_RareCandy(taskId); - break; - case 18: - case 19: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_PPUp(taskId); - break; - case 20: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_PPRecovery(taskId); - break; - default: - gTasks[taskId].data[15] = 4; - ItemUseOutOfBattle_CannotUse(taskId); + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_Medicine(taskId); + break; + case 9: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_SacredAsh(taskId); + break; + case 0: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_RareCandy(taskId); + break; + case 18: + case 19: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_PPUp(taskId); + break; + case 20: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_PPRecovery(taskId); + break; + default: + gTasks[taskId].data[15] = 4; + ItemUseOutOfBattle_CannotUse(taskId); } } @@ -1231,25 +1231,25 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId) { switch(GetItemEffectType(gScriptItemId)) { - case 0: - ItemUseInBattle_StatIncrease(taskId); - break; - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 11: - ItemUseInBattle_Medicine(taskId); - break; - case 21: - ItemUseInBattle_PPRecovery(taskId); - break; - default: - ItemUseOutOfBattle_CannotUse(taskId); + case 0: + ItemUseInBattle_StatIncrease(taskId); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 11: + ItemUseInBattle_Medicine(taskId); + break; + case 21: + ItemUseInBattle_PPRecovery(taskId); + break; + default: + ItemUseOutOfBattle_CannotUse(taskId); } } -- cgit v1.2.3 From 7c4f99560812cd5a8eedb124a9bc99c3f4243438 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 11:37:35 +0200 Subject: Remove duplicate strings.h declarations --- src/item_use.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 4047ade5c..a310df2ce 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -22,6 +22,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "vars.h" @@ -74,23 +75,6 @@ extern u8 GetItemEffectType(); extern void sub_808B020(void); extern void sub_810B96C(void); -extern u8 gOtherText_DadsAdvice[]; -extern u8 gOtherText_CantGetOffBike[]; -extern u8 gOtherText_NoResponse[]; -extern u8 gOtherText_ItemfinderResponding[]; -extern u8 gOtherText_ItemfinderItemUnderfoot[]; -extern u8 gOtherText_Coins3[]; -extern u8 gOtherText_BootedHM[]; -extern u8 gOtherText_BootedTM[]; -extern u8 gOtherText_ContainsMove[]; -extern u8 gOtherText_UsedItem[]; -extern u8 gOtherText_RepelLingers[]; -extern u8 gOtherText_UsedFlute[]; -extern u8 gOtherText_UsedRepel[]; -extern u8 gOtherText_BoxIsFull[]; -extern u8 gOtherText_WontHaveAnyEffect[]; -extern u8 gOtherText_SnapConfusion[]; - extern u16 gScriptItemId; extern u16 gBattleTypeFlags; -- cgit v1.2.3 From 6f2cd1e2da53cb0c4a4f4465d8ad72532050174d Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 13:25:26 +0200 Subject: Add data2 header --- src/item_use.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index a310df2ce..b65c24c31 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -3,6 +3,7 @@ #include "battle.h" #include "berry.h" #include "coins.h" +#include "data2.h" #include "event_data.h" #include "field_map_obj_helpers.h" #include "field_player_avatar.h" @@ -30,8 +31,6 @@ extern void (* gUnknown_03005D00)(u8); extern void (* gUnknown_0300485C)(void); extern void (* gUnknown_03004AE4)(u8); -extern u8 gMoveNames[][13]; - extern u8 gUnknown_02038561; extern u8 gLastFieldPokeMenuOpened; extern u8 gUnknown_02024E6C; -- cgit v1.2.3 From 4d2b22a899c11dfcacfec6889968ab01655a3fe3 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 14:53:51 +0200 Subject: Add headers --- src/item_use.c | 64 +++++++++------------------------------------------------- 1 file changed, 10 insertions(+), 54 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index d1c1dbf2a..09173cf8e 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -1,5 +1,14 @@ +#include "pokemon_menu.h" +#include "pokeblock.h.h" +#include "item_menu.h" +#include "bike.h" +#include "field_fadetransition.h" +#include "pokemon_item_effect.h" +#include "party_menu.h" +#include "rom_8094928.h" +#include "field_effect.h" #include "global.h" -#include "asm.h" +#include "item_use.h" #include "battle.h" #include "berry.h" #include "coins.h" @@ -40,62 +49,9 @@ extern u8 gUnknown_081A168F[]; extern u16 gUnknown_02024A6A[]; -extern void HandleItemMenuPaletteFade(u8); -extern void ExecuteItemUseFromBlackPalette(void); -extern void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); -extern void CleanUpItemMenuMessage(u8); -extern void CleanUpOverworldMessage(u8); -extern void ItemUseOnFieldCB_Bike(u8); -extern void ItemUseOnFieldCB_Rod(u8); -extern void ItemUseOnFieldCB_Itemfinder(u8); -extern void sub_80A5D04(void); -extern bool8 IsBikingDisallowedByPlayer(void); -extern void GetOnOffBike(u8); -extern struct MapConnection *sub_8056BA0(s16 x, s16 y); // fieldmap.c -extern void sub_810BA7C(u8); -extern void sub_8080E28(void); -extern void UseMedicine(u8); -extern void sub_8070048(u8); -extern void DoPPRecoveryItemEffect(u8); -extern void DoPPUpItemEffect(u8); -extern void DoRareCandyItemEffect(u8); -extern void DoEvolutionStoneItemEffect(u8); -extern u16 ItemIdToBattleMoveId(u16); -extern void sub_80A3FA0(u16 *, u32, u32, u32, u32, u32); -extern void sub_80A3E0C(void); -extern void TeachMonTMMove(u8); -extern void sub_80878A8(void); -extern void sub_8053014(void); -extern void sub_80A7094(u8); -extern bool8 ExecuteTableBasedItemEffect_(struct Pokemon *mon, u16, u8, u16); -extern void sub_8094E4C(void); -extern u8 ExecuteTableBasedItemEffect__(u8 u8, u16 u16, int i); -extern u8 GetItemEffectType(); -extern void sub_808B020(void); -extern void sub_810B96C(void); - extern u16 gScriptItemId; extern u16 gBattleTypeFlags; -bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId); -void RunItemfinderResults(u8); -void ExitItemfinder(u8); -void sub_80C9720(u8); -void sub_80C9838(u8, s16, s16); -u8 GetPlayerDirectionTowardsHiddenItem(s16, s16); -void SetPlayerDirectionTowardsItem(u8); -void DisplayItemRespondingMessageAndExitItemfinder(u8); -void RotatePlayerAndExitItemfinder(u8); -void sub_80C9D00(u8); -void sub_80C9D74(u8); -void sub_80C9EE4(u8); -void sub_80C9F10(u8); -void sub_80C9F80(u8); -void sub_80C9FC0(u8); -void ItemUseOutOfBattle_TMHM(u8); -void ItemUseOutOfBattle_EvolutionStone(u8); -void ItemUseOutOfBattle_CannotUse(u8); - static const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); static const u8 gSSTidalBetaString2[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); -- cgit v1.2.3 From f26daa3d6954d2db3a7c44b79d319a7a084462c2 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 15:01:42 +0200 Subject: Sort includes --- src/item_use.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 09173cf8e..8139114ba 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -1,24 +1,19 @@ -#include "pokemon_menu.h" -#include "pokeblock.h.h" -#include "item_menu.h" -#include "bike.h" -#include "field_fadetransition.h" -#include "pokemon_item_effect.h" -#include "party_menu.h" -#include "rom_8094928.h" -#include "field_effect.h" #include "global.h" #include "item_use.h" #include "battle.h" #include "berry.h" +#include "bike.h" #include "coins.h" #include "data2.h" #include "event_data.h" +#include "field_effect.h" +#include "field_fadetransition.h" #include "field_map_obj_helpers.h" #include "field_player_avatar.h" #include "field_weather.h" #include "fieldmap.h" #include "item.h" +#include "item_menu.h" #include "items.h" #include "mail.h" #include "main.h" @@ -27,7 +22,12 @@ #include "menu_helpers.h" #include "metatile_behavior.h" #include "palette.h" +#include "party_menu.h" +#include "pokeblock.h.h" +#include "pokemon_item_effect.h" +#include "pokemon_menu.h" #include "rom4.h" +#include "rom_8094928.h" #include "script.h" #include "songs.h" #include "sound.h" -- cgit v1.2.3 From 2aae7e99d52fc488e75309909d279b459f5e1d80 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 15:35:40 +0200 Subject: Make rom build again --- src/item_use.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 8139114ba..6e7ccfae0 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -38,7 +38,7 @@ extern void (* gUnknown_03005D00)(u8); extern void (* gUnknown_0300485C)(void); -extern void (* gUnknown_03004AE4)(u8); +extern void (* gUnknown_03004AE4)(u8, u16, TaskFunc); extern u8 gUnknown_02038561; extern u8 gLastFieldPokeMenuOpened; -- cgit v1.2.3 From 93da3ddcd3ee11ffe25b194770cec7225db868cc Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 17:43:18 +0200 Subject: Rename pokeblock.h.h --- src/item_use.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 6e7ccfae0..98a122316 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -23,7 +23,7 @@ #include "metatile_behavior.h" #include "palette.h" #include "party_menu.h" -#include "pokeblock.h.h" +#include "pokeblock.h" #include "pokemon_item_effect.h" #include "pokemon_menu.h" #include "rom4.h" -- cgit v1.2.3 From 8435b8835a9b5c5348b2849e943e36ffdd8c76b3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 15 Jun 2017 03:34:11 -0400 Subject: move player_pc data to C file and do a lot of labeling --- src/item_use.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index d1c1dbf2a..c04cf9d7a 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -28,7 +28,7 @@ #include "vars.h" extern void (* gUnknown_03005D00)(u8); -extern void (* gUnknown_0300485C)(void); +extern void (* gFieldCallback)(void); extern void (* gUnknown_03004AE4)(u8); extern u8 gUnknown_02038561; @@ -150,7 +150,7 @@ void SetUpItemUseOnFieldCallback(u8 taskId) { if (gTasks[taskId].data[2] != 1) { - gUnknown_0300485C = (void *)ExecuteItemUseFromBlackPalette; + gFieldCallback = (void *)ExecuteItemUseFromBlackPalette; ItemMenu_ConfirmNormalFade(taskId); } else @@ -772,7 +772,7 @@ void ItemUseOutOfBattle_PokeblockCase(u8 taskId) } else { - gUnknown_0300485C = (void *)sub_8080E28; + gFieldCallback = (void *)sub_8080E28; sub_810BA7C(1); ItemMenu_ConfirmComplexFade(taskId); } @@ -825,7 +825,7 @@ void sub_80C9C7C(u8 taskId) if(IsPlayerFacingPlantedBerryTree() == TRUE) { gUnknown_03005D00 = sub_80C9D00; - gUnknown_0300485C = ExecuteItemUseFromBlackPalette; + gFieldCallback = ExecuteItemUseFromBlackPalette; gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; gTasks[taskId].func = HandleItemMenuPaletteFade; @@ -944,7 +944,7 @@ void sub_80C9F80(u8 var) { DisplayYesNoMenu(7, 7, 1); sub_80A3FA0(gBGTilemapBuffers[1], 8, 8, 5, 4, 1); - sub_80F914C(var, &gUnknown_083D61F4); + DoYesNoFuncWithChoice(var, &gUnknown_083D61F4); } void sub_80C9FC0(u8 var) -- cgit v1.2.3 From 102f5b1e15e7295e30a3cebfbbad3c8af4cc1d37 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 20 Jun 2017 05:46:48 +0200 Subject: Battle labels named (#333) * Changed battle labels --- src/item_use.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/item_use.c') diff --git a/src/item_use.c b/src/item_use.c index 269c847a5..a92161e9a 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -43,12 +43,12 @@ extern void (* gUnknown_03004AE4)(u8, u16, TaskFunc); extern u8 gUnknown_02038561; extern u8 gLastFieldPokeMenuOpened; -extern u8 gUnknown_02024E6C; +extern u8 gBankInMenu; extern u8 gUnknown_081A1654[]; extern u8 gUnknown_081A168F[]; -extern u16 gUnknown_02024A6A[]; +extern u16 gBattlePartyID[]; extern u16 gScriptItemId; extern u16 gBattleTypeFlags; @@ -1043,7 +1043,7 @@ void sub_80CA2BC(u8 taskId) void ItemUseInBattle_StatIncrease(u8 taskId) { - u16 partyId = gUnknown_02024A6A[gUnknown_02024E6C]; + u16 partyId = gBattlePartyID[gBankInMenu]; MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); -- cgit v1.2.3