summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-29 03:30:48 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2019-06-29 03:30:48 +0800
commitd09d78dca303386dd5d7fae0ec8e3f6c59d227bc (patch)
tree519a2b460d800501f9e0296c4fcda9d3476e71b1
parentc994998aad22fcdb2fd5b4c20c730fa910cb30a9 (diff)
finished fldeff_strength + lots of clean up
-rw-r--r--asm/fldeff_cut.s2
-rw-r--r--asm/fldeff_strength.s111
-rw-r--r--asm/rom6.s8
-rw-r--r--data/map_event_scripts.inc2
-rw-r--r--include/event_scripts.h2
-rw-r--r--include/fldeff.h21
-rw-r--r--ld_script.txt2
-rw-r--r--src/fldeff_softboiled.c19
-rw-r--r--src/fldeff_strength.c46
-rw-r--r--src/unk_8159F40.c2
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);