summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-02-25 16:52:16 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-02-25 16:52:16 -0500
commit41644b283ad2d4fb5e30b61271c5820c1ccbc499 (patch)
tree61295f91521e9f60e21f9ebbc7cec5b1ef04810a
parent565114625f3e8505b157c0c444c5d40caba150ee (diff)
through sub_8097A20
-rw-r--r--asm/fldeff_cut.s104
-rw-r--r--include/event_scripts.h3
-rw-r--r--include/field_specials.h1
-rw-r--r--src/field_fadetransition.c7
-rw-r--r--src/fldeff_cut.c44
-rw-r--r--src/fldeff_rocksmash.c3
-rw-r--r--src/quest_log.c30
7 files changed, 68 insertions, 124 deletions
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s
index fa7a114ab..b3f94c1fd 100644
--- a/asm/fldeff_cut.s
+++ b/asm/fldeff_cut.s
@@ -5,110 +5,6 @@
.text
- thumb_func_start FieldCallback_CutGrass
-FieldCallback_CutGrass: @ 8097984
- push {lr}
- movs r0, 0x1
- bl FieldEffectStart
- bl GetCursorSelectionMonId
- ldr r1, _0809799C @ =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0809799C: .4byte gFieldEffectArguments
- thumb_func_end FieldCallback_CutGrass
-
- thumb_func_start sub_80979A0
-sub_80979A0: @ 80979A0
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080979C8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _080979CC @ =sub_8097A20
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0x12
- bl IncrementGameStat
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080979C8: .4byte gTasks
-_080979CC: .4byte sub_8097A20
- thumb_func_end sub_80979A0
-
- thumb_func_start FieldCallback_CutTree
-FieldCallback_CutTree: @ 80979D0
- push {lr}
- bl GetCursorSelectionMonId
- ldr r1, _080979E8 @ =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- ldr r0, _080979EC @ =EventScript_FldEffCut
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .align 2, 0
-_080979E8: .4byte gFieldEffectArguments
-_080979EC: .4byte EventScript_FldEffCut
- thumb_func_end FieldCallback_CutTree
-
- thumb_func_start sub_80979F0
-sub_80979F0: @ 80979F0
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08097A18 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _08097A1C @ =sub_8097C6C
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- movs r0, 0x12
- bl IncrementGameStat
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08097A18: .4byte gTasks
-_08097A1C: .4byte sub_8097C6C
- thumb_func_end sub_80979F0
-
- thumb_func_start sub_8097A20
-sub_8097A20: @ 8097A20
- push {lr}
- movs r0, 0x1
- bl FieldEffectActiveListRemove
- ldr r0, _08097A38 @ =sScheduleOpenDottedHole
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08097A3C
- bl CutMoveOpenDottedHoleDoor
- b _08097A42
- .align 2, 0
-_08097A38: .4byte sScheduleOpenDottedHole
-_08097A3C:
- movs r0, 0x3A
- bl FieldEffectStart
-_08097A42:
- pop {r0}
- bx r0
- thumb_func_end sub_8097A20
-
thumb_func_start sub_8097A48
sub_8097A48: @ 8097A48
push {r4-r7,lr}
diff --git a/include/event_scripts.h b/include/event_scripts.h
index f026cb57a..bf16ed2ec 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1201,4 +1201,7 @@ extern const u8 Text_MonSentToBoxBillsBoxFull[];
extern const u8 EventScript_BagItemCanBeRegistered[];
+// fldeff_cut
+extern const u8 EventScript_FldEffCut[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_specials.h b/include/field_specials.h
index b7d7f4f1d..9653a9169 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -26,5 +26,6 @@ u16 GetHiddenItemAttr(u32 hiddenItem, u8 attr);
u8 GetUnlockedSeviiAreas(void);
u32 GetPlayerTrainerId(void);
bool8 CutMoveRuinValleyCheck(void);
+void CutMoveOpenDottedHoleDoor(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index 6e937e026..16f691a2d 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -22,6 +22,7 @@
#include "event_object_lock.h"
#include "start_menu.h"
#include "constants/songs.h"
+#include "constants/event_object_movement.h"
static void sub_807DF4C(u8 a0);
static void sub_807DFBC(u8 taskId);
@@ -348,7 +349,7 @@ static void sub_807DFBC(u8 taskId)
{
PlayerGetDestCoords(&task->data[12], &task->data[13]);
sub_807DCB0(TRUE);
- ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 16);
+ ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
task->data[0] = 8;
}
break;
@@ -372,7 +373,7 @@ static void sub_807DFBC(u8 taskId)
if (sub_807E418())
{
sub_807DCB0(TRUE);
- ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 16);
+ ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
task->data[0] = 2;
}
break;
@@ -752,7 +753,7 @@ static void sub_807E80C(u8 taskId)
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
{
ObjectEventClearAnimIfSpecialAnimActive(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)]);
- ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 17);
+ ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_UP);
task->data[0] = 2;
}
break;
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index c30eb2d80..d79eec7a4 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -1,19 +1,24 @@
#include "global.h"
#include "gflib.h"
+#include "event_scripts.h"
#include "fieldmap.h"
#include "field_specials.h"
#include "fldeff.h"
#include "field_effect.h"
#include "field_player_avatar.h"
#include "metatile_behavior.h"
+#include "overworld.h"
#include "party_menu.h"
+#include "script.h"
#include "constants/event_objects.h"
EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;
EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE;
-void FieldCallback_CutTree(void);
void FieldCallback_CutGrass(void);
+void FieldCallback_CutTree(void);
+void sub_8097A20(void);
+void sub_8097C6C(void);
u8 MetatileAtCoordsIsGrassTile(s16 x, s16 y)
{
@@ -66,3 +71,40 @@ bool8 SetUpFieldMove_Cut(void)
return FALSE;
}
}
+
+void FieldCallback_CutGrass(void)
+{
+ FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS);
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+}
+
+bool8 sub_80979A0(void)
+{
+ u8 taskId = oei_task_add();
+ FLDEFF_SET_FUNC_TO_DATA(sub_8097A20);
+ IncrementGameStat(GAME_STAT_USED_CUT);
+ return FALSE;
+}
+
+void FieldCallback_CutTree(void)
+{
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ ScriptContext1_SetupScript(EventScript_FldEffCut);
+}
+
+bool8 sub_80979F0(void)
+{
+ u8 taskId = oei_task_add();
+ FLDEFF_SET_FUNC_TO_DATA(sub_8097C6C);
+ IncrementGameStat(GAME_STAT_USED_CUT);
+ return FALSE;
+}
+
+void sub_8097A20(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS);
+ if (sScheduleOpenDottedHole == TRUE)
+ CutMoveOpenDottedHoleDoor();
+ else
+ FieldEffectStart(FLDEFF_CUT_GRASS);
+}
diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c
index 058922f06..779e4b8f4 100644
--- a/src/fldeff_rocksmash.c
+++ b/src/fldeff_rocksmash.c
@@ -12,6 +12,7 @@
#include "event_object_movement.h"
#include "constants/songs.h"
#include "constants/event_objects.h"
+#include "constants/event_object_movement.h"
#include "constants/maps.h"
static void task08_080C9820(u8 taskId);
@@ -60,7 +61,7 @@ static void task08_080C9820(u8 taskId)
else
{
sub_805CB70();
- ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], 0x45);
+ ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], MOVEMENT_ACTION_UNKNOWN_STEP_45);
gTasks[taskId].func = sub_80C98B0;
}
}
diff --git a/src/quest_log.c b/src/quest_log.c
index b747dd8b6..6e70ceea8 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -113,7 +113,7 @@ static EWRAM_DATA u16 *gUnknown_203AE90 = NULL;
static EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0};
static EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0};
static EWRAM_DATA u16 sQuestLogIdx = 0;
-static EWRAM_DATA u8 gUnknown_203AF9A[64][2] = {{0}};
+static EWRAM_DATA u8 sMovementScripts[64][2] = {{0}};
static EWRAM_DATA u16 gUnknown_203B01A = 0;
static EWRAM_DATA u16 gUnknown_203B01C = 0;
static EWRAM_DATA u16 sFlagOrVarPlayhead = 0;
@@ -1551,24 +1551,24 @@ void sub_811246C(struct Sprite *sprite)
struct ObjectEvent *objectEvent = &gObjectEvents[sprite->data[0]];
if (objectEvent->localId == OBJ_EVENT_ID_PLAYER)
{
- if (gUnknown_203AF9A[0][0] != OBJ_EVENT_ID_PLAYER)
+ if (sMovementScripts[0][0] != 0xFF)
{
- ObjectEventSetHeldMovement(objectEvent, gUnknown_203AF9A[0][0]);
- gUnknown_203AF9A[0][0] = OBJ_EVENT_ID_PLAYER;
+ ObjectEventSetHeldMovement(objectEvent, sMovementScripts[0][0]);
+ sMovementScripts[0][0] = 0xFF;
}
- if (gUnknown_203AF9A[0][1] != OBJ_EVENT_ID_PLAYER)
+ if (sMovementScripts[0][1] != OBJ_EVENT_ID_PLAYER)
{
sub_8150454();
- gUnknown_203AF9A[0][1] = OBJ_EVENT_ID_PLAYER;
+ sMovementScripts[0][1] = OBJ_EVENT_ID_PLAYER;
}
sub_8063E28(objectEvent, sprite);
}
else
{
- if (gUnknown_203AF9A[objectEvent->localId][0] != OBJ_EVENT_ID_PLAYER)
+ if (sMovementScripts[objectEvent->localId][0] != 0xFF)
{
- ObjectEventSetHeldMovement(objectEvent, gUnknown_203AF9A[objectEvent->localId][0]);
- gUnknown_203AF9A[objectEvent->localId][0] = OBJ_EVENT_ID_PLAYER;
+ ObjectEventSetHeldMovement(objectEvent, sMovementScripts[objectEvent->localId][0]);
+ sMovementScripts[objectEvent->localId][0] = 0xFF;
}
sub_8063E28(objectEvent, sprite);
}
@@ -1736,15 +1736,15 @@ static void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2)
sNumQuestLogs = a2 / 8;
for (i = 0; i < 0x40; i++)
{
- gUnknown_203AF9A[i][0] |= 0xFF;
- gUnknown_203AF9A[i][1] |= 0xFF;
+ sMovementScripts[i][0] |= 0xFF;
+ sMovementScripts[i][1] |= 0xFF;
}
sQuestLogIdx = 0;
gUnknown_203B01C = 0;
gUnknown_3005E90 = (struct UnkStruct_3005E90){};
gUnknown_203B01A = gUnknown_3005E94[sQuestLogIdx].unk_4;
- gUnknown_203AF9A[0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
- gUnknown_203AF9A[0][1] = 0xFF;
+ sMovementScripts[0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
+ sMovementScripts[0][1] = 0xFF;
gUnknown_3005E88 = 1;
break;
case 2:
@@ -1807,10 +1807,10 @@ void sub_8112B3C(void)
switch (gUnknown_3005E94[sQuestLogIdx].unk_6)
{
case 0:
- gUnknown_203AF9A[gUnknown_3005E94[sQuestLogIdx].unk_0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
+ sMovementScripts[gUnknown_3005E94[sQuestLogIdx].unk_0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
break;
case 1:
- gUnknown_203AF9A[gUnknown_3005E94[sQuestLogIdx].unk_0][1] = gUnknown_3005E94[sQuestLogIdx].unk_3;
+ sMovementScripts[gUnknown_3005E94[sQuestLogIdx].unk_0][1] = gUnknown_3005E94[sQuestLogIdx].unk_3;
break;
case 2:
*(u32 *)&gUnknown_3005E90 = ((gUnknown_3005E94[sQuestLogIdx].unk_3 << 24) | (gUnknown_3005E94[sQuestLogIdx].unk_2 << 16) | (gUnknown_3005E94[sQuestLogIdx].unk_1 << 8) | (gUnknown_3005E94[sQuestLogIdx].unk_0 << 0));