fldeff_cut through SetUpFieldMove_Cut
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user