summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-02-25 16:35:38 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-02-25 16:35:38 -0500
commit565114625f3e8505b157c0c444c5d40caba150ee (patch)
tree6686534b2d08775224d5ff7b9fdca8c340b25457
parent3b558edc7906b2a75b7d65aa396c611ce1802e62 (diff)
fldeff_cut through SetUpFieldMove_Cut
-rw-r--r--asm/field_control_avatar.s2
-rw-r--r--asm/field_player_avatar.s12
-rw-r--r--asm/fldeff_cut.s161
-rw-r--r--include/field_specials.h1
-rw-r--r--include/fieldmap.h5
-rw-r--r--include/metatile_behavior.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/fieldmap.c30
-rw-r--r--src/fldeff_cut.c68
-rw-r--r--src/metatile_behavior.c41
-rw-r--r--src/wild_encounter.c22
-rw-r--r--sym_ewram.txt4
12 files changed, 129 insertions, 220 deletions
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index b74e60d1f..f1bef0721 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -332,7 +332,7 @@ sub_806CAC8: @ 806CAC8
movs r2, 0x2
ldrsh r1, [r4, r2]
movs r2, 0xFF
- bl sub_8058F48
+ bl MapGridGetMetatileAttributeAt
mov r8, r0
mov r0, sp
movs r1, 0
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index 5510caceb..6e425d2c7 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -2921,7 +2921,7 @@ IsPlayerFacingSurfableFishableWater: @ 805C8B0
ldrsh r0, [r0, r1]
movs r2, 0
ldrsh r1, [r5, r2]
- bl sub_805C938
+ bl MetatileAtCoordsIsWaterTile
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2940,24 +2940,24 @@ _0805C92E:
bx r1
thumb_func_end IsPlayerFacingSurfableFishableWater
- thumb_func_start sub_805C938
-sub_805C938: @ 805C938
+ thumb_func_start MetatileAtCoordsIsWaterTile
+MetatileAtCoordsIsWaterTile: @ 805C938
push {lr}
lsls r0, 16
asrs r0, 16
lsls r1, 16
asrs r1, 16
movs r2, 0x1
- bl sub_8058F48
+ bl MapGridGetMetatileAttributeAt
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_805A2BC
+ bl TestMetatileAttributeBit
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
- thumb_func_end sub_805C938
+ thumb_func_end MetatileAtCoordsIsWaterTile
thumb_func_start ClearPlayerAvatarInfo
ClearPlayerAvatarInfo: @ 805C95C
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s
index c0266194e..fa7a114ab 100644
--- a/asm/fldeff_cut.s
+++ b/asm/fldeff_cut.s
@@ -5,143 +5,8 @@
.text
- thumb_func_start sub_8097874
-sub_8097874: @ 8097874
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x1
- bl sub_8058F48
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_805A2BC
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8097874
-
- thumb_func_start SetUpFieldMove_Cut
-SetUpFieldMove_Cut: @ 8097898
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r4, _080978CC @ =gUnknown_2039874
- movs r0, 0
- strb r0, [r4]
- bl CutMoveRuinValleyCheck
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080978E0
- movs r0, 0x5F
- bl CheckObjectGraphicsInFrontOfPlayer
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08097904
- ldr r1, _080978D0 @ =gFieldCallback2
- ldr r0, _080978D4 @ =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, _080978D8 @ =gPostMenuFieldCallback
- ldr r0, _080978DC @ =sub_80979D0
- b _080978EC
- .align 2, 0
-_080978CC: .4byte gUnknown_2039874
-_080978D0: .4byte gFieldCallback2
-_080978D4: .4byte FieldCallback_PrepareFadeInFromMenu
-_080978D8: .4byte gPostMenuFieldCallback
-_080978DC: .4byte sub_80979D0
-_080978E0:
- strb r0, [r4]
-_080978E2:
- ldr r1, _080978F4 @ =gFieldCallback2
- ldr r0, _080978F8 @ =FieldCallback_PrepareFadeInFromMenu
- str r0, [r1]
- ldr r1, _080978FC @ =gPostMenuFieldCallback
- ldr r0, _08097900 @ =sub_8097984
-_080978EC:
- str r0, [r1]
- movs r0, 0x1
- b _08097970
- .align 2, 0
-_080978F4: .4byte gFieldCallback2
-_080978F8: .4byte FieldCallback_PrepareFadeInFromMenu
-_080978FC: .4byte gPostMenuFieldCallback
-_08097900: .4byte sub_8097984
-_08097904:
- ldr r4, _0809797C @ =gPlayerFacingPosition
- adds r1, r4, 0x2
- adds r0, r4, 0
- bl PlayerGetDestCoords
- movs r7, 0
- adds r2, r4, 0
- ldr r0, _08097980 @ =0x0000ffff
- mov r8, r0
-_08097916:
- mov r1, r8
- adds r0, r1, r7
- ldrh r1, [r2, 0x2]
- adds r0, r1
- movs r6, 0
- lsls r0, 16
- asrs r5, r0, 16
-_08097924:
- mov r1, r8
- adds r0, r1, r6
- ldrh r1, [r2]
- adds r0, r1
- lsls r0, 16
- asrs r4, r0, 16
- adds r0, r4, 0
- adds r1, r5, 0
- str r2, [sp]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [sp]
- movs r1, 0x4
- ldrsb r1, [r2, r1]
- cmp r0, r1
- bne _0809795A
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8097874
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [sp]
- cmp r0, 0x1
- beq _080978E2
-_0809795A:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x2
- bls _08097924
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x2
- bls _08097916
- movs r0, 0
-_08097970:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0809797C: .4byte gPlayerFacingPosition
-_08097980: .4byte 0x0000ffff
- thumb_func_end SetUpFieldMove_Cut
-
- thumb_func_start sub_8097984
-sub_8097984: @ 8097984
+ thumb_func_start FieldCallback_CutGrass
+FieldCallback_CutGrass: @ 8097984
push {lr}
movs r0, 0x1
bl FieldEffectStart
@@ -154,7 +19,7 @@ sub_8097984: @ 8097984
bx r0
.align 2, 0
_0809799C: .4byte gFieldEffectArguments
- thumb_func_end sub_8097984
+ thumb_func_end FieldCallback_CutGrass
thumb_func_start sub_80979A0
sub_80979A0: @ 80979A0
@@ -181,8 +46,8 @@ _080979C8: .4byte gTasks
_080979CC: .4byte sub_8097A20
thumb_func_end sub_80979A0
- thumb_func_start sub_80979D0
-sub_80979D0: @ 80979D0
+ thumb_func_start FieldCallback_CutTree
+FieldCallback_CutTree: @ 80979D0
push {lr}
bl GetCursorSelectionMonId
ldr r1, _080979E8 @ =gFieldEffectArguments
@@ -196,7 +61,7 @@ sub_80979D0: @ 80979D0
.align 2, 0
_080979E8: .4byte gFieldEffectArguments
_080979EC: .4byte EventScript_FldEffCut
- thumb_func_end sub_80979D0
+ thumb_func_end FieldCallback_CutTree
thumb_func_start sub_80979F0
sub_80979F0: @ 80979F0
@@ -228,14 +93,14 @@ sub_8097A20: @ 8097A20
push {lr}
movs r0, 0x1
bl FieldEffectActiveListRemove
- ldr r0, _08097A38 @ =gUnknown_2039874
+ ldr r0, _08097A38 @ =sScheduleOpenDottedHole
ldrb r0, [r0]
cmp r0, 0x1
bne _08097A3C
bl CutMoveOpenDottedHoleDoor
b _08097A42
.align 2, 0
-_08097A38: .4byte gUnknown_2039874
+_08097A38: .4byte sScheduleOpenDottedHole
_08097A3C:
movs r0, 0x3A
bl FieldEffectStart
@@ -289,7 +154,7 @@ _08097A78:
bne _08097ABC
adds r0, r4, 0
adds r1, r5, 0
- bl sub_8097874
+ bl MetatileAtCoordsIsGrassTile
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -312,7 +177,7 @@ _08097ABC:
cmp r7, 0x2
bls _08097A68
bl DrawWholeMapView
- ldr r4, _08097B40 @ =gUnknown_2039870
+ ldr r4, _08097B40 @ =sCutGrassSpriteArrayPtr
movs r0, 0x8
bl Alloc
str r0, [r4]
@@ -364,7 +229,7 @@ _08097AE2:
.align 2, 0
_08097B38: .4byte gPlayerFacingPosition
_08097B3C: .4byte 0x0000ffff
-_08097B40: .4byte gUnknown_2039870
+_08097B40: .4byte sCutGrassSpriteArrayPtr
_08097B44: .4byte gSprites
_08097B48: .4byte gPlayerAvatar
_08097B4C: .4byte gUnknown_83D414C
@@ -485,7 +350,7 @@ sub_8097C18: @ 8097C18
push {r4-r6,lr}
movs r4, 0x1
_08097C1C:
- ldr r6, _08097C64 @ =gUnknown_2039870
+ ldr r6, _08097C64 @ =sCutGrassSpriteArrayPtr
ldr r0, [r6]
adds r0, r4
ldrb r1, [r0]
@@ -516,7 +381,7 @@ _08097C1C:
pop {r0}
bx r0
.align 2, 0
-_08097C64: .4byte gUnknown_2039870
+_08097C64: .4byte sCutGrassSpriteArrayPtr
_08097C68: .4byte gSprites
thumb_func_end sub_8097C18
diff --git a/include/field_specials.h b/include/field_specials.h
index 02069ff84..b7d7f4f1d 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -25,5 +25,6 @@ bool8 ShouldShowBoxWasFullMessage(void);
u16 GetHiddenItemAttr(u32 hiddenItem, u8 attr);
u8 GetUnlockedSeviiAreas(void);
u32 GetPlayerTrainerId(void);
+bool8 CutMoveRuinValleyCheck(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 406ec2959..a8e31685f 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -19,6 +19,7 @@ u32 MapGridGetMetatileBehaviorAt(int, int);
u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y);
void MapGridSetMetatileIdAt(int, int, u16);
void MapGridSetMetatileEntryAt(int, int, u16);
+u8 MapGridGetZCoordAt(s32 x, s32 y);
void GetCameraCoords(u16*, u16*);
bool8 MapGridIsImpassableAt(s32, s32);
s32 GetMapBorderIdAt(s32, s32);
@@ -29,8 +30,8 @@ struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y);
void sub_8059948(u8 a0, u8 a1);
void save_serialize_map(void);
-u32 sub_8058F1C(u32 original, u8 bit);
-u32 sub_8058F48(s16 x, s16 y, u8 z);
+u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit);
+u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr);
void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2);
#endif //GUARD_FIELDMAP_H
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index d567ab77c..f3195e6c9 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -114,7 +114,7 @@ bool8 MetatileBehavior_UnusedReturnFalse_10(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_11(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_12(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_13(u8 metatileBehavior);
-bool8 sub_805A2BC(u8 metatileBehavior, u8 playerDirection);
+bool8 TestMetatileAttributeBit(u8 attr, u8 bitmask);
bool8 MetatileBehavior_UnusedIsSpinRight(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedIsSpinLeft(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedIsSpinUp(u8 metatileBehavior);
diff --git a/ld_script.txt b/ld_script.txt
index 74607f92e..5d4bbf6f9 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -131,6 +131,7 @@ SECTIONS {
asm/pokemon_storage_system.o(.text);
src/pokemon_icon.o(.text);
src/script_movement.o(.text);
+ src/fldeff_cut.o(.text);
asm/fldeff_cut.o(.text);
src/mail_data.o(.text);
src/map_name_popup.o(.text);
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 1f7d8b0b8..635f11af8 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -35,18 +35,18 @@ EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
const struct ConnectionFlags sDummyConnectionFlags = {};
-const u32 gUnknown_8352EF0[] = {
- 0x1ff,
- 0x3e00,
- 0x3c000,
- 0xfc0000,
- 0x7000000,
+const u32 sMetatileAttrMasks[] = {
+ 0x000001ff,
+ 0x00003e00,
+ 0x0003c000,
+ 0x00fc0000,
+ 0x07000000,
0x18000000,
0x60000000,
0x80000000
};
-const u8 gUnknown_8352F10[] = {
+const u8 sMetatileAttrShifts[] = {
0,
9,
14,
@@ -443,28 +443,28 @@ u32 MapGridGetMetatileIdAt(s32 x, s32 y)
return block & 0x3FF;
}
-u32 sub_8058F1C(u32 original, u8 bit)
+u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit)
{
if (bit >= 8)
return original;
- return (original & gUnknown_8352EF0[bit]) >> gUnknown_8352F10[bit];
+ return (original & sMetatileAttrMasks[bit]) >> sMetatileAttrShifts[bit];
}
-u32 sub_8058F48(s16 x, s16 y, u8 z)
+u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr)
{
u16 metatileId = MapGridGetMetatileIdAt(x, y);
- return GetBehaviorByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, z);
+ return GetBehaviorByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, attr);
}
u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y)
{
- return sub_8058F48(x, y, 0);
+ return MapGridGetMetatileAttributeAt(x, y, 0);
}
u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y)
{
- return sub_8058F48(x, y, 6);
+ return MapGridGetMetatileAttributeAt(x, y, 6);
}
void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile)
@@ -512,12 +512,12 @@ u32 GetBehaviorByMetatileIdAndMapLayout(struct MapLayout *mapLayout, u16 metatil
if (metatile < NUM_METATILES_IN_PRIMARY)
{
attributes = mapLayout->primaryTileset->metatileAttributes;
- return sub_8058F1C(attributes[metatile], attr);
+ return GetMetatileAttributeFromRawMetatileBehavior(attributes[metatile], attr);
}
else if (metatile < 0x400)
{
attributes = mapLayout->secondaryTileset->metatileAttributes;
- return sub_8058F1C(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr);
+ return GetMetatileAttributeFromRawMetatileBehavior(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr);
}
else
{
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
new file mode 100644
index 000000000..c30eb2d80
--- /dev/null
+++ b/src/fldeff_cut.c
@@ -0,0 +1,68 @@
+#include "global.h"
+#include "gflib.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 "party_menu.h"
+#include "constants/event_objects.h"
+
+EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;
+EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE;
+
+void FieldCallback_CutTree(void);
+void FieldCallback_CutGrass(void);
+
+u8 MetatileAtCoordsIsGrassTile(s16 x, s16 y)
+{
+ return TestMetatileAttributeBit(MapGridGetMetatileAttributeAt(x, y, 1), 1);
+}
+
+bool8 SetUpFieldMove_Cut(void)
+{
+ s16 x, y;
+ u8 i, j;
+ sScheduleOpenDottedHole = FALSE;
+ if (CutMoveRuinValleyCheck() == TRUE)
+ {
+ sScheduleOpenDottedHole = TRUE;
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_CutGrass;
+ return TRUE;
+ }
+
+ if (CheckObjectGraphicsInFrontOfPlayer(OBJ_EVENT_GFX_CUT_TREE) == TRUE)
+ {
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_CutTree;
+ return TRUE;
+ }
+ else
+ {
+ register s32 neg1 asm("r8");
+ struct MapPosition *pos;
+ PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
+
+ for (i = 0, pos = &gPlayerFacingPosition, neg1 = 0xFFFF; i < 3; i++)
+ {
+
+ y = i + neg1 + pos->y;
+ for (j = 0; j < 3; j++)
+ {
+ x = j + neg1 + pos->x;
+ if (MapGridGetZCoordAt(x, y) == pos->height)
+ {
+ if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
+ {
+ gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
+ gPostMenuFieldCallback = FieldCallback_CutGrass;
+ return TRUE;
+ }
+ }
+ }
+ }
+ return FALSE;
+ }
+}
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index 8e07c1c97..7c05d1dde 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -16,39 +16,12 @@ static const bool8 sTileSurfable[METATILE_COUNT] = {
[MB_SOUTHWARD_CURRENT] = TRUE
};
-static const u8 sTileBitAttributes[] = {
- 0x00,
- 0x01,
- 0x02,
- 0x04,
- 0x08,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00
+static const u8 sTileBitAttributes[32] = {
+ [0] = 0x00,
+ [1] = 0x01,
+ [2] = 0x02,
+ [3] = 0x04,
+ [4] = 0x08,
};
bool8 MetatileBehavior_UnusedReturnTrue(u8 metatileBehavior)
@@ -769,7 +742,7 @@ bool8 MetatileBehavior_UnusedReturnFalse_11(u8 metatileBehavior) { return FALSE;
bool8 MetatileBehavior_UnusedReturnFalse_12(u8 metatileBehavior) { return FALSE; }
bool8 MetatileBehavior_UnusedReturnFalse_13(u8 metatileBehavior) { return FALSE; }
-bool8 sub_805A2BC(u8 arg1, u8 arg2)
+bool8 TestMetatileAttributeBit(u8 arg1, u8 arg2)
{
if(sTileBitAttributes[arg1] & arg2)
return TRUE;
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index b32eb583a..b3605db47 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -367,11 +367,11 @@ bool8 StandardWildEncounter(u32 currMetatileBehavior, u16 previousMetatileBehavi
headerId = GetCurrentMapWildMonHeaderId();
if (headerId != 0xFFFF)
{
- if (sub_8058F1C(currMetatileBehavior, 4) == TRUE)
+ if (GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 4) == TRUE)
{
if (gWildMonHeaders[headerId].landMonsInfo == NULL)
return FALSE;
- else if (previousMetatileBehavior != sub_8058F1C(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll())
+ else if (previousMetatileBehavior != GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll())
return FALSE;
if (DoWildEncounterRateTest(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE)
{
@@ -405,12 +405,12 @@ bool8 StandardWildEncounter(u32 currMetatileBehavior, u16 previousMetatileBehavi
}
}
}
- else if (sub_8058F1C(currMetatileBehavior, 4) == 2
- || (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(sub_8058F1C(currMetatileBehavior, 0)) == TRUE))
+ else if (GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 4) == 2
+ || (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0)) == TRUE))
{
if (gWildMonHeaders[headerId].waterMonsInfo == NULL)
return FALSE;
- else if (previousMetatileBehavior != sub_8058F1C(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll())
+ else if (previousMetatileBehavior != GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll())
return FALSE;
else if (DoWildEncounterRateTest(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE)
{
@@ -474,7 +474,7 @@ bool8 SweetScentWildEncounter(void)
headerId = GetCurrentMapWildMonHeaderId();
if (headerId != 0xFFFF)
{
- if (sub_8058F48(x, y, 4) == 1)
+ if (MapGridGetMetatileAttributeAt(x, y, 4) == 1)
{
if (TryStartRoamerEncounter() == TRUE)
{
@@ -490,7 +490,7 @@ bool8 SweetScentWildEncounter(void)
BattleSetup_StartWildBattle();
return TRUE;
}
- else if (sub_8058F48(x, y, 4) == 2)
+ else if (MapGridGetMetatileAttributeAt(x, y, 4) == 2)
{
if (TryStartRoamerEncounter() == TRUE)
{
@@ -711,7 +711,7 @@ void ResetEncounterRateModifiers(void)
static bool8 HandleWildEncounterCooldown(u32 currMetatileBehavior)
{
- u8 unk = sub_8058F1C(currMetatileBehavior, 4);
+ u8 unk = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 4);
u32 minSteps;
u32 encRate;
if (unk == 0)
@@ -763,19 +763,19 @@ bool8 TryStandardWildEncounter(u32 currMetatileBehavior)
{
if (!HandleWildEncounterCooldown(currMetatileBehavior))
{
- sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0);
+ sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0);
return FALSE;
}
else if (StandardWildEncounter(currMetatileBehavior, sWildEncounterData.prevMetatileBehavior) == TRUE)
{
sWildEncounterData.encounterRateBuff = 0;
sWildEncounterData.stepsSinceLastEncounter = 0;
- sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0);
+ sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0);
return TRUE;
}
else
{
- sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0);
+ sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0);
return FALSE;
}
}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index d358929eb..372b15b6a 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -220,10 +220,10 @@ gUnknown_203982C: @ 203982C
.include "src/script_movement.o"
.align 2
-gUnknown_2039870: @ 2039870
+sCutGrassSpriteArrayPtr: @ 2039870
.space 0x4
-gUnknown_2039874: @ 2039874
+sScheduleOpenDottedHole: @ 2039874
.space 0x4
.align 2