diff options
author | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-06-29 03:30:48 +0800 |
---|---|---|
committer | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-06-29 03:30:48 +0800 |
commit | d09d78dca303386dd5d7fae0ec8e3f6c59d227bc (patch) | |
tree | 519a2b460d800501f9e0296c4fcda9d3476e71b1 | |
parent | c994998aad22fcdb2fd5b4c20c730fa910cb30a9 (diff) |
finished fldeff_strength + lots of clean up
-rw-r--r-- | asm/fldeff_cut.s | 2 | ||||
-rw-r--r-- | asm/fldeff_strength.s | 111 | ||||
-rw-r--r-- | asm/rom6.s | 8 | ||||
-rw-r--r-- | data/map_event_scripts.inc | 2 | ||||
-rw-r--r-- | include/event_scripts.h | 2 | ||||
-rw-r--r-- | include/fldeff.h | 21 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/fldeff_softboiled.c | 19 | ||||
-rw-r--r-- | src/fldeff_strength.c | 46 | ||||
-rw-r--r-- | src/unk_8159F40.c | 2 |
10 files changed, 86 insertions, 129 deletions
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s index c98cda3b7..8c76f9261 100644 --- a/asm/fldeff_cut.s +++ b/asm/fldeff_cut.s @@ -39,7 +39,7 @@ sub_8097898: @ 8097898 cmp r0, 0x1 beq _080978E0 movs r0, 0x5F - bl npc_before_player_of_type + bl CheckObjectGraphicsInFrontOfPlayer lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s deleted file mode 100644 index ace765f55..000000000 --- a/asm/fldeff_strength.s +++ /dev/null @@ -1,111 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D07EC -sub_80D07EC: @ 80D07EC - push {r4,lr} - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - bne _080D0808 - movs r0, 0x61 - bl npc_before_player_of_type - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080D080C -_080D0808: - movs r0, 0 - b _080D0826 -_080D080C: - ldr r4, _080D082C @ =gSpecialVar_Result - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - ldr r1, _080D0830 @ =gFieldCallback2 - ldr r0, _080D0834 @ =FieldCallback_PrepareFadeInFromMenu - str r0, [r1] - ldr r1, _080D0838 @ =gPostMenuFieldCallback - ldr r0, _080D083C @ =sub_80D0840 - str r0, [r1] - movs r0, 0x1 -_080D0826: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080D082C: .4byte gSpecialVar_Result -_080D0830: .4byte gFieldCallback2 -_080D0834: .4byte FieldCallback_PrepareFadeInFromMenu -_080D0838: .4byte gPostMenuFieldCallback -_080D083C: .4byte sub_80D0840 - thumb_func_end sub_80D07EC - - thumb_func_start sub_80D0840 -sub_80D0840: @ 80D0840 - push {lr} - bl GetCursorSelectionMonId - ldr r1, _080D0858 @ =gFieldEffectArguments - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - ldr r0, _080D085C @ =gUnknown_81BE16E - bl ScriptContext1_SetupScript - pop {r0} - bx r0 - .align 2, 0 -_080D0858: .4byte gFieldEffectArguments -_080D085C: .4byte gUnknown_81BE16E - thumb_func_end sub_80D0840 - - thumb_func_start sub_80D0860 -sub_80D0860: @ 80D0860 - push {lr} - bl oei_task_add - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D0894 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, _080D0898 @ =sub_80D08A8 - lsrs r0, r2, 16 - strh r0, [r1, 0x18] - strh r2, [r1, 0x1A] - ldr r0, _080D089C @ =gFieldEffectArguments - ldr r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080D08A0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080D08A4 @ =gStringVar1 - bl GetMonNickname - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_080D0894: .4byte gTasks -_080D0898: .4byte sub_80D08A8 -_080D089C: .4byte gFieldEffectArguments -_080D08A0: .4byte gPlayerParty -_080D08A4: .4byte gStringVar1 - thumb_func_end sub_80D0860 - - thumb_func_start sub_80D08A8 -sub_80D08A8: @ 80D08A8 - push {lr} - movs r0, 0x28 - bl FieldEffectActiveListRemove - bl EnableBothScriptContexts - pop {r0} - bx r0 - thumb_func_end sub_80D08A8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom6.s b/asm/rom6.s index 2ac2cc0a4..146d1d020 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -5,8 +5,8 @@ .text - thumb_func_start npc_before_player_of_type -npc_before_player_of_type: @ 80C97A8 + thumb_func_start CheckObjectGraphicsInFrontOfPlayer +CheckObjectGraphicsInFrontOfPlayer: @ 80C97A8 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 @@ -46,7 +46,7 @@ _080C97F6: pop {r4,r5} pop {r1} bx r1 - thumb_func_end npc_before_player_of_type + thumb_func_end CheckObjectGraphicsInFrontOfPlayer thumb_func_start oei_task_add oei_task_add: @ 80C97FC @@ -283,7 +283,7 @@ _080C99D4: .4byte gPlayerAvatar SetUpFieldMove_RockSmash: @ 80C99D8 push {lr} movs r0, 0x60 - bl npc_before_player_of_type + bl CheckObjectGraphicsInFrontOfPlayer lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc index 460477812..801476ea1 100644 --- a/data/map_event_scripts.inc +++ b/data/map_event_scripts.inc @@ -3566,7 +3566,7 @@ SeafoamIslands_B1F_EventScript_1BE11D:: @ 81BE11D VictoryRoad_2F_EventScript_1BE11D:: @ 81BE11D .incbin "baserom.gba", 0x1BE11D, 0x51 -gUnknown_81BE16E:: @ 81BE16E +EventScript_FldEffStrength:: @ 81BE16E .incbin "baserom.gba", 0x1BE16E, 0x149 gUnknown_81BE2B7:: @ 81BE2B7 diff --git a/include/event_scripts.h b/include/event_scripts.h index d5ee57d56..b1b65da11 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1144,4 +1144,6 @@ extern const u8 gUnknown_81BB084[]; extern const u8 gUnknown_81BB0DF[]; extern const u8 gUnknown_81BB156[]; +extern const u8 EventScript_FldEffStrength[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/fldeff.h b/include/fldeff.h index 3120833e2..749b09da7 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -1,11 +1,30 @@ #ifndef GUARD_FLDEFF_H #define GUARD_FLDEFF_H -// rock smash +bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); u8 oei_task_add(void); +// rock smash + +// berrytree +void nullsub_56(void); + // poison void FldEffPoison_Start(void); bool32 FldEffPoison_IsActive(void); +// strength +bool8 SetUpFieldMove_Strength(void); +bool8 sub_80D0860(void); + +// teleport +bool8 SetUpFieldMove_Teleport(void); +bool8 FldEff_UseTeleport(void); + +// softboiled +bool8 hm_prepare_dive_probably(void); +void sub_80E56DC(u8 taskId); +void sub_80E5724(u8 taskId); + + #endif // GUARD_FLDEFF_H diff --git a/ld_script.txt b/ld_script.txt index d6382c5cb..0a6fd5827 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -190,7 +190,7 @@ SECTIONS { asm/battle_records.o(.text); asm/evolution_scene.o(.text); src/coins.o(.text); - asm/fldeff_strength.o(.text); + src/fldeff_strength.o(.text); asm/battle_transition.o(.text); asm/battle_controller_link_partner.o(.text); asm/battle_message.o(.text); diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c index a31678669..2a3d68e70 100644 --- a/src/fldeff_softboiled.c +++ b/src/fldeff_softboiled.c @@ -4,11 +4,12 @@ #include "string_util.h" #include "menu.h" #include "constants/songs.h" +#include "fldeff.h" -void sub_80E57E8(u8 taskId); -void sub_80E583C(u8 taskId); -void sub_80E58A0(u8 taskId); -void sub_80E5934(u8 taskId); +static void sub_80E57E8(u8 taskId); +static void sub_80E583C(u8 taskId); +static void sub_80E58A0(u8 taskId); +static void sub_80E5934(u8 taskId); extern const u8 gUnknown_84169F8[]; extern const u8 gUnknown_8416F27[]; @@ -61,13 +62,13 @@ void sub_80E5724(u8 taskId) } } -void sub_80E57E8(u8 taskId) +static void sub_80E57E8(u8 taskId) { PlaySE(SE_KAIFUKU); sub_8120760(taskId, gUnknown_203B0A0.unkA, 1, GetMonData(&gPlayerParty[gUnknown_203B0A0.unk9], MON_DATA_MAX_HP) / 5, sub_80E583C); } -void sub_80E583C(u8 taskId) +static void sub_80E583C(u8 taskId) { GetMonNickname(&gPlayerParty[gUnknown_203B0A0.unkA], gStringVar1); StringExpandPlaceholders(gStringVar4, gUnknown_8416F27); @@ -76,7 +77,7 @@ void sub_80E583C(u8 taskId) gTasks[taskId].func = sub_80E58A0; } -void sub_80E58A0(u8 taskId) +static void sub_80E58A0(u8 taskId) { if (sub_8120370() != TRUE) { @@ -91,7 +92,7 @@ void sub_80E58A0(u8 taskId) } } -void sub_80E5900(u8 taskId) +static void sub_80E5900(u8 taskId) { if (sub_8120370() != TRUE) { @@ -100,7 +101,7 @@ void sub_80E5900(u8 taskId) } } -void sub_80E5934(u8 taskId) +static void sub_80E5934(u8 taskId) { PlaySE(SE_SELECT); sub_81202F8(gUnknown_84169F8, 0); diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c new file mode 100644 index 000000000..95ba95061 --- /dev/null +++ b/src/fldeff_strength.c @@ -0,0 +1,46 @@ +#include "global.h" +#include "field_player_avatar.h" +#include "field_effect.h" +#include "party_menu.h" +#include "event_data.h" +#include "script.h" +#include "fldeff.h" +#include "event_scripts.h" + +static void FldEff_UseStrength(void); +static void sub_80D08A8(void); + +bool8 SetUpFieldMove_Strength(void) +{ + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || CheckObjectGraphicsInFrontOfPlayer(0x61) != TRUE) + { + return FALSE; + } + else + { + gSpecialVar_Result = GetCursorSelectionMonId(); + gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu; + gPostMenuFieldCallback = FldEff_UseStrength; + return TRUE; + } +} +static void FldEff_UseStrength(void) +{ + gFieldEffectArguments[0] = GetCursorSelectionMonId(); + ScriptContext1_SetupScript(EventScript_FldEffStrength); +} + +bool8 sub_80D0860(void) +{ + u8 taskId = oei_task_add(); + gTasks[taskId].data[8] = (u32)sub_80D08A8 >> 16; + gTasks[taskId].data[9] = (u32)sub_80D08A8; + GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1); + return FALSE; +} + +static void sub_80D08A8(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH); + EnableBothScriptContexts(); +} diff --git a/src/unk_8159F40.c b/src/unk_8159F40.c index a6f6e67fc..b0147d06a 100644 --- a/src/unk_8159F40.c +++ b/src/unk_8159F40.c @@ -612,7 +612,7 @@ void sub_815A540(void) s16 x, y; PlayerGetDestCoords(&x, &y); - if (!MetatileBehavior_IsSurfable(MapGridGetMetatileBehaviorAt(x, y)) && TestPlayerAvatarFlags(0x08)) + if (!MetatileBehavior_IsSurfable(MapGridGetMetatileBehaviorAt(x, y)) && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) { struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; SetPlayerAvatarTransitionFlags(0x01); |