fldeff_cut through SetUpFieldMove_Cut

This commit is contained in:
PikalaxALT
2020-02-25 16:35:38 -05:00
parent 3b558edc79
commit 565114625f
12 changed files with 129 additions and 220 deletions
+1 -1
View File
@@ -332,7 +332,7 @@ sub_806CAC8: @ 806CAC8
movs r2, 0x2 movs r2, 0x2
ldrsh r1, [r4, r2] ldrsh r1, [r4, r2]
movs r2, 0xFF movs r2, 0xFF
bl sub_8058F48 bl MapGridGetMetatileAttributeAt
mov r8, r0 mov r8, r0
mov r0, sp mov r0, sp
movs r1, 0 movs r1, 0
+6 -6
View File
@@ -2921,7 +2921,7 @@ IsPlayerFacingSurfableFishableWater: @ 805C8B0
ldrsh r0, [r0, r1] ldrsh r0, [r0, r1]
movs r2, 0 movs r2, 0
ldrsh r1, [r5, r2] ldrsh r1, [r5, r2]
bl sub_805C938 bl MetatileAtCoordsIsWaterTile
lsls r0, 24 lsls r0, 24
lsrs r0, 24 lsrs r0, 24
cmp r0, 0x1 cmp r0, 0x1
@@ -2940,24 +2940,24 @@ _0805C92E:
bx r1 bx r1
thumb_func_end IsPlayerFacingSurfableFishableWater thumb_func_end IsPlayerFacingSurfableFishableWater
thumb_func_start sub_805C938 thumb_func_start MetatileAtCoordsIsWaterTile
sub_805C938: @ 805C938 MetatileAtCoordsIsWaterTile: @ 805C938
push {lr} push {lr}
lsls r0, 16 lsls r0, 16
asrs r0, 16 asrs r0, 16
lsls r1, 16 lsls r1, 16
asrs r1, 16 asrs r1, 16
movs r2, 0x1 movs r2, 0x1
bl sub_8058F48 bl MapGridGetMetatileAttributeAt
lsls r0, 24 lsls r0, 24
lsrs r0, 24 lsrs r0, 24
movs r1, 0x2 movs r1, 0x2
bl sub_805A2BC bl TestMetatileAttributeBit
lsls r0, 24 lsls r0, 24
lsrs r0, 24 lsrs r0, 24
pop {r1} pop {r1}
bx r1 bx r1
thumb_func_end sub_805C938 thumb_func_end MetatileAtCoordsIsWaterTile
thumb_func_start ClearPlayerAvatarInfo thumb_func_start ClearPlayerAvatarInfo
ClearPlayerAvatarInfo: @ 805C95C ClearPlayerAvatarInfo: @ 805C95C
+13 -148
View File
@@ -5,143 +5,8 @@
.text .text
thumb_func_start sub_8097874 thumb_func_start FieldCallback_CutGrass
sub_8097874: @ 8097874 FieldCallback_CutGrass: @ 8097984
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
push {lr} push {lr}
movs r0, 0x1 movs r0, 0x1
bl FieldEffectStart bl FieldEffectStart
@@ -154,7 +19,7 @@ sub_8097984: @ 8097984
bx r0 bx r0
.align 2, 0 .align 2, 0
_0809799C: .4byte gFieldEffectArguments _0809799C: .4byte gFieldEffectArguments
thumb_func_end sub_8097984 thumb_func_end FieldCallback_CutGrass
thumb_func_start sub_80979A0 thumb_func_start sub_80979A0
sub_80979A0: @ 80979A0 sub_80979A0: @ 80979A0
@@ -181,8 +46,8 @@ _080979C8: .4byte gTasks
_080979CC: .4byte sub_8097A20 _080979CC: .4byte sub_8097A20
thumb_func_end sub_80979A0 thumb_func_end sub_80979A0
thumb_func_start sub_80979D0 thumb_func_start FieldCallback_CutTree
sub_80979D0: @ 80979D0 FieldCallback_CutTree: @ 80979D0
push {lr} push {lr}
bl GetCursorSelectionMonId bl GetCursorSelectionMonId
ldr r1, _080979E8 @ =gFieldEffectArguments ldr r1, _080979E8 @ =gFieldEffectArguments
@@ -196,7 +61,7 @@ sub_80979D0: @ 80979D0
.align 2, 0 .align 2, 0
_080979E8: .4byte gFieldEffectArguments _080979E8: .4byte gFieldEffectArguments
_080979EC: .4byte EventScript_FldEffCut _080979EC: .4byte EventScript_FldEffCut
thumb_func_end sub_80979D0 thumb_func_end FieldCallback_CutTree
thumb_func_start sub_80979F0 thumb_func_start sub_80979F0
sub_80979F0: @ 80979F0 sub_80979F0: @ 80979F0
@@ -228,14 +93,14 @@ sub_8097A20: @ 8097A20
push {lr} push {lr}
movs r0, 0x1 movs r0, 0x1
bl FieldEffectActiveListRemove bl FieldEffectActiveListRemove
ldr r0, _08097A38 @ =gUnknown_2039874 ldr r0, _08097A38 @ =sScheduleOpenDottedHole
ldrb r0, [r0] ldrb r0, [r0]
cmp r0, 0x1 cmp r0, 0x1
bne _08097A3C bne _08097A3C
bl CutMoveOpenDottedHoleDoor bl CutMoveOpenDottedHoleDoor
b _08097A42 b _08097A42
.align 2, 0 .align 2, 0
_08097A38: .4byte gUnknown_2039874 _08097A38: .4byte sScheduleOpenDottedHole
_08097A3C: _08097A3C:
movs r0, 0x3A movs r0, 0x3A
bl FieldEffectStart bl FieldEffectStart
@@ -289,7 +154,7 @@ _08097A78:
bne _08097ABC bne _08097ABC
adds r0, r4, 0 adds r0, r4, 0
adds r1, r5, 0 adds r1, r5, 0
bl sub_8097874 bl MetatileAtCoordsIsGrassTile
lsls r0, 24 lsls r0, 24
lsrs r0, 24 lsrs r0, 24
cmp r0, 0x1 cmp r0, 0x1
@@ -312,7 +177,7 @@ _08097ABC:
cmp r7, 0x2 cmp r7, 0x2
bls _08097A68 bls _08097A68
bl DrawWholeMapView bl DrawWholeMapView
ldr r4, _08097B40 @ =gUnknown_2039870 ldr r4, _08097B40 @ =sCutGrassSpriteArrayPtr
movs r0, 0x8 movs r0, 0x8
bl Alloc bl Alloc
str r0, [r4] str r0, [r4]
@@ -364,7 +229,7 @@ _08097AE2:
.align 2, 0 .align 2, 0
_08097B38: .4byte gPlayerFacingPosition _08097B38: .4byte gPlayerFacingPosition
_08097B3C: .4byte 0x0000ffff _08097B3C: .4byte 0x0000ffff
_08097B40: .4byte gUnknown_2039870 _08097B40: .4byte sCutGrassSpriteArrayPtr
_08097B44: .4byte gSprites _08097B44: .4byte gSprites
_08097B48: .4byte gPlayerAvatar _08097B48: .4byte gPlayerAvatar
_08097B4C: .4byte gUnknown_83D414C _08097B4C: .4byte gUnknown_83D414C
@@ -485,7 +350,7 @@ sub_8097C18: @ 8097C18
push {r4-r6,lr} push {r4-r6,lr}
movs r4, 0x1 movs r4, 0x1
_08097C1C: _08097C1C:
ldr r6, _08097C64 @ =gUnknown_2039870 ldr r6, _08097C64 @ =sCutGrassSpriteArrayPtr
ldr r0, [r6] ldr r0, [r6]
adds r0, r4 adds r0, r4
ldrb r1, [r0] ldrb r1, [r0]
@@ -516,7 +381,7 @@ _08097C1C:
pop {r0} pop {r0}
bx r0 bx r0
.align 2, 0 .align 2, 0
_08097C64: .4byte gUnknown_2039870 _08097C64: .4byte sCutGrassSpriteArrayPtr
_08097C68: .4byte gSprites _08097C68: .4byte gSprites
thumb_func_end sub_8097C18 thumb_func_end sub_8097C18
+1
View File
@@ -25,5 +25,6 @@ bool8 ShouldShowBoxWasFullMessage(void);
u16 GetHiddenItemAttr(u32 hiddenItem, u8 attr); u16 GetHiddenItemAttr(u32 hiddenItem, u8 attr);
u8 GetUnlockedSeviiAreas(void); u8 GetUnlockedSeviiAreas(void);
u32 GetPlayerTrainerId(void); u32 GetPlayerTrainerId(void);
bool8 CutMoveRuinValleyCheck(void);
#endif // GUARD_FIELD_SPECIALS_H #endif // GUARD_FIELD_SPECIALS_H
+3 -2
View File
@@ -19,6 +19,7 @@ u32 MapGridGetMetatileBehaviorAt(int, int);
u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y); u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y);
void MapGridSetMetatileIdAt(int, int, u16); void MapGridSetMetatileIdAt(int, int, u16);
void MapGridSetMetatileEntryAt(int, int, u16); void MapGridSetMetatileEntryAt(int, int, u16);
u8 MapGridGetZCoordAt(s32 x, s32 y);
void GetCameraCoords(u16*, u16*); void GetCameraCoords(u16*, u16*);
bool8 MapGridIsImpassableAt(s32, s32); bool8 MapGridIsImpassableAt(s32, s32);
s32 GetMapBorderIdAt(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 sub_8059948(u8 a0, u8 a1);
void save_serialize_map(void); void save_serialize_map(void);
u32 sub_8058F1C(u32 original, u8 bit); u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit);
u32 sub_8058F48(s16 x, s16 y, u8 z); u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr);
void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2); void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2);
#endif //GUARD_FIELDMAP_H #endif //GUARD_FIELDMAP_H
+1 -1
View File
@@ -114,7 +114,7 @@ bool8 MetatileBehavior_UnusedReturnFalse_10(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_11(u8 metatileBehavior); bool8 MetatileBehavior_UnusedReturnFalse_11(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_12(u8 metatileBehavior); bool8 MetatileBehavior_UnusedReturnFalse_12(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_13(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_UnusedIsSpinRight(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedIsSpinLeft(u8 metatileBehavior); bool8 MetatileBehavior_UnusedIsSpinLeft(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedIsSpinUp(u8 metatileBehavior); bool8 MetatileBehavior_UnusedIsSpinUp(u8 metatileBehavior);
+1
View File
@@ -131,6 +131,7 @@ SECTIONS {
asm/pokemon_storage_system.o(.text); asm/pokemon_storage_system.o(.text);
src/pokemon_icon.o(.text); src/pokemon_icon.o(.text);
src/script_movement.o(.text); src/script_movement.o(.text);
src/fldeff_cut.o(.text);
asm/fldeff_cut.o(.text); asm/fldeff_cut.o(.text);
src/mail_data.o(.text); src/mail_data.o(.text);
src/map_name_popup.o(.text); src/map_name_popup.o(.text);
+15 -15
View File
@@ -35,18 +35,18 @@ EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
const struct ConnectionFlags sDummyConnectionFlags = {}; const struct ConnectionFlags sDummyConnectionFlags = {};
const u32 gUnknown_8352EF0[] = { const u32 sMetatileAttrMasks[] = {
0x1ff, 0x000001ff,
0x3e00, 0x00003e00,
0x3c000, 0x0003c000,
0xfc0000, 0x00fc0000,
0x7000000, 0x07000000,
0x18000000, 0x18000000,
0x60000000, 0x60000000,
0x80000000 0x80000000
}; };
const u8 gUnknown_8352F10[] = { const u8 sMetatileAttrShifts[] = {
0, 0,
9, 9,
14, 14,
@@ -443,28 +443,28 @@ u32 MapGridGetMetatileIdAt(s32 x, s32 y)
return block & 0x3FF; return block & 0x3FF;
} }
u32 sub_8058F1C(u32 original, u8 bit) u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit)
{ {
if (bit >= 8) if (bit >= 8)
return original; 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); u16 metatileId = MapGridGetMetatileIdAt(x, y);
return GetBehaviorByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, z); return GetBehaviorByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, attr);
} }
u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y) u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y)
{ {
return sub_8058F48(x, y, 0); return MapGridGetMetatileAttributeAt(x, y, 0);
} }
u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y) 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) 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) if (metatile < NUM_METATILES_IN_PRIMARY)
{ {
attributes = mapLayout->primaryTileset->metatileAttributes; attributes = mapLayout->primaryTileset->metatileAttributes;
return sub_8058F1C(attributes[metatile], attr); return GetMetatileAttributeFromRawMetatileBehavior(attributes[metatile], attr);
} }
else if (metatile < 0x400) else if (metatile < 0x400)
{ {
attributes = mapLayout->secondaryTileset->metatileAttributes; attributes = mapLayout->secondaryTileset->metatileAttributes;
return sub_8058F1C(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr); return GetMetatileAttributeFromRawMetatileBehavior(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr);
} }
else else
{ {
+68
View File
@@ -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;
}
}
+7 -34
View File
@@ -16,39 +16,12 @@ static const bool8 sTileSurfable[METATILE_COUNT] = {
[MB_SOUTHWARD_CURRENT] = TRUE [MB_SOUTHWARD_CURRENT] = TRUE
}; };
static const u8 sTileBitAttributes[] = { static const u8 sTileBitAttributes[32] = {
0x00, [0] = 0x00,
0x01, [1] = 0x01,
0x02, [2] = 0x02,
0x04, [3] = 0x04,
0x08, [4] = 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
}; };
bool8 MetatileBehavior_UnusedReturnTrue(u8 metatileBehavior) 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_12(u8 metatileBehavior) { return FALSE; }
bool8 MetatileBehavior_UnusedReturnFalse_13(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) if(sTileBitAttributes[arg1] & arg2)
return TRUE; return TRUE;
+11 -11
View File
@@ -367,11 +367,11 @@ bool8 StandardWildEncounter(u32 currMetatileBehavior, u16 previousMetatileBehavi
headerId = GetCurrentMapWildMonHeaderId(); headerId = GetCurrentMapWildMonHeaderId();
if (headerId != 0xFFFF) if (headerId != 0xFFFF)
{ {
if (sub_8058F1C(currMetatileBehavior, 4) == TRUE) if (GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 4) == TRUE)
{ {
if (gWildMonHeaders[headerId].landMonsInfo == NULL) if (gWildMonHeaders[headerId].landMonsInfo == NULL)
return FALSE; return FALSE;
else if (previousMetatileBehavior != sub_8058F1C(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll()) else if (previousMetatileBehavior != GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll())
return FALSE; return FALSE;
if (DoWildEncounterRateTest(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) 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 else if (GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 4) == 2
|| (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(sub_8058F1C(currMetatileBehavior, 0)) == TRUE)) || (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) && MetatileBehavior_IsBridge(GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0)) == TRUE))
{ {
if (gWildMonHeaders[headerId].waterMonsInfo == NULL) if (gWildMonHeaders[headerId].waterMonsInfo == NULL)
return FALSE; return FALSE;
else if (previousMetatileBehavior != sub_8058F1C(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll()) else if (previousMetatileBehavior != GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0) && !DoGlobalWildEncounterDiceRoll())
return FALSE; return FALSE;
else if (DoWildEncounterRateTest(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE) else if (DoWildEncounterRateTest(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE)
{ {
@@ -474,7 +474,7 @@ bool8 SweetScentWildEncounter(void)
headerId = GetCurrentMapWildMonHeaderId(); headerId = GetCurrentMapWildMonHeaderId();
if (headerId != 0xFFFF) if (headerId != 0xFFFF)
{ {
if (sub_8058F48(x, y, 4) == 1) if (MapGridGetMetatileAttributeAt(x, y, 4) == 1)
{ {
if (TryStartRoamerEncounter() == TRUE) if (TryStartRoamerEncounter() == TRUE)
{ {
@@ -490,7 +490,7 @@ bool8 SweetScentWildEncounter(void)
BattleSetup_StartWildBattle(); BattleSetup_StartWildBattle();
return TRUE; return TRUE;
} }
else if (sub_8058F48(x, y, 4) == 2) else if (MapGridGetMetatileAttributeAt(x, y, 4) == 2)
{ {
if (TryStartRoamerEncounter() == TRUE) if (TryStartRoamerEncounter() == TRUE)
{ {
@@ -711,7 +711,7 @@ void ResetEncounterRateModifiers(void)
static bool8 HandleWildEncounterCooldown(u32 currMetatileBehavior) static bool8 HandleWildEncounterCooldown(u32 currMetatileBehavior)
{ {
u8 unk = sub_8058F1C(currMetatileBehavior, 4); u8 unk = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 4);
u32 minSteps; u32 minSteps;
u32 encRate; u32 encRate;
if (unk == 0) if (unk == 0)
@@ -763,19 +763,19 @@ bool8 TryStandardWildEncounter(u32 currMetatileBehavior)
{ {
if (!HandleWildEncounterCooldown(currMetatileBehavior)) if (!HandleWildEncounterCooldown(currMetatileBehavior))
{ {
sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0); sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0);
return FALSE; return FALSE;
} }
else if (StandardWildEncounter(currMetatileBehavior, sWildEncounterData.prevMetatileBehavior) == TRUE) else if (StandardWildEncounter(currMetatileBehavior, sWildEncounterData.prevMetatileBehavior) == TRUE)
{ {
sWildEncounterData.encounterRateBuff = 0; sWildEncounterData.encounterRateBuff = 0;
sWildEncounterData.stepsSinceLastEncounter = 0; sWildEncounterData.stepsSinceLastEncounter = 0;
sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0); sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0);
return TRUE; return TRUE;
} }
else else
{ {
sWildEncounterData.prevMetatileBehavior = sub_8058F1C(currMetatileBehavior, 0); sWildEncounterData.prevMetatileBehavior = GetMetatileAttributeFromRawMetatileBehavior(currMetatileBehavior, 0);
return FALSE; return FALSE;
} }
} }
+2 -2
View File
@@ -220,10 +220,10 @@ gUnknown_203982C: @ 203982C
.include "src/script_movement.o" .include "src/script_movement.o"
.align 2 .align 2
gUnknown_2039870: @ 2039870 sCutGrassSpriteArrayPtr: @ 2039870
.space 0x4 .space 0x4
gUnknown_2039874: @ 2039874 sScheduleOpenDottedHole: @ 2039874
.space 0x4 .space 0x4
.align 2 .align 2