through sub_8097A20

This commit is contained in:
PikalaxALT
2020-02-25 16:52:16 -05:00
parent 565114625f
commit 41644b283a
7 changed files with 68 additions and 124 deletions
-104
View File
@@ -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}
+3
View File
@@ -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
+1
View File
@@ -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
+4 -3
View File
@@ -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;
+43 -1
View File
@@ -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);
}
+2 -1
View File
@@ -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;
}
}
+15 -15
View File
@@ -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));