diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-02-25 16:52:16 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-02-25 16:52:16 -0500 |
commit | 41644b283ad2d4fb5e30b61271c5820c1ccbc499 (patch) | |
tree | 61295f91521e9f60e21f9ebbc7cec5b1ef04810a | |
parent | 565114625f3e8505b157c0c444c5d40caba150ee (diff) |
through sub_8097A20
-rw-r--r-- | asm/fldeff_cut.s | 104 | ||||
-rw-r--r-- | include/event_scripts.h | 3 | ||||
-rw-r--r-- | include/field_specials.h | 1 | ||||
-rw-r--r-- | src/field_fadetransition.c | 7 | ||||
-rw-r--r-- | src/fldeff_cut.c | 44 | ||||
-rw-r--r-- | src/fldeff_rocksmash.c | 3 | ||||
-rw-r--r-- | src/quest_log.c | 30 |
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)); |