[LEAK-INFORMED] fix cut nonmatchings
This commit is contained in:
@@ -20,10 +20,6 @@
|
|||||||
|
|
||||||
#define NUM_FIELD_MAP_OBJECT_TEMPLATES 0x51
|
#define NUM_FIELD_MAP_OBJECT_TEMPLATES 0x51
|
||||||
|
|
||||||
#if !defined(NONMATCHING) && MODERN
|
|
||||||
#define static
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16);
|
static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16);
|
||||||
static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *);
|
static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *);
|
||||||
static u8 GetCollisionInDirection(struct ObjectEvent *, u8);
|
static u8 GetCollisionInDirection(struct ObjectEvent *, u8);
|
||||||
|
|||||||
+15
-27
@@ -19,6 +19,7 @@
|
|||||||
#include "constants/metatile_labels.h"
|
#include "constants/metatile_labels.h"
|
||||||
|
|
||||||
#define CUT_GRASS_SPRITE_COUNT 8
|
#define CUT_GRASS_SPRITE_COUNT 8
|
||||||
|
#define CUT_SIDE 3
|
||||||
|
|
||||||
static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;
|
static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;
|
||||||
static EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE;
|
static EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE;
|
||||||
@@ -133,25 +134,18 @@ bool8 SetUpFieldMove_Cut(void)
|
|||||||
gPostMenuFieldCallback = FieldCallback_CutTree;
|
gPostMenuFieldCallback = FieldCallback_CutTree;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// FIXME: this fakematch
|
|
||||||
#ifndef NONMATCHING
|
|
||||||
register s32 neg1 asm("r8");
|
|
||||||
#else
|
|
||||||
s32 neg1;
|
|
||||||
#endif
|
|
||||||
struct MapPosition *pos;
|
|
||||||
PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
||||||
|
|
||||||
for (i = 0, pos = &gPlayerFacingPosition, neg1 = 0xFFFF; i < 3; i++)
|
for (i = 0; i < CUT_SIDE; i++)
|
||||||
{
|
{
|
||||||
|
y = gPlayerFacingPosition.y - 1 + i;
|
||||||
y = i + neg1 + pos->y;
|
for (j = 0; j < CUT_SIDE; j++)
|
||||||
for (j = 0; j < 3; j++)
|
|
||||||
{
|
{
|
||||||
x = j + neg1 + pos->x;
|
x = gPlayerFacingPosition.x - 1 + j;
|
||||||
if (MapGridGetZCoordAt(x, y) == pos->height)
|
if (MapGridGetZCoordAt(x, y) == gPlayerFacingPosition.height)
|
||||||
{
|
{
|
||||||
if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
|
if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
|
||||||
{
|
{
|
||||||
@@ -207,26 +201,20 @@ bool8 FldEff_CutGrass(void)
|
|||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
s16 x, y;
|
s16 x, y;
|
||||||
// FIXME: this fakematch
|
u8 pos;
|
||||||
#ifndef NONMATCHING
|
|
||||||
register s32 neg1 asm("r9");
|
|
||||||
#else
|
|
||||||
s32 neg1;
|
|
||||||
#endif
|
|
||||||
struct MapPosition *pos;
|
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
PlaySE(SE_M_CUT);
|
PlaySE(SE_M_CUT);
|
||||||
|
pos = gFieldEffectArguments[1] - 1;
|
||||||
PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
||||||
|
|
||||||
for (i = 0, pos = &gPlayerFacingPosition, neg1 = 0xFFFF; i < 3; i++)
|
for (i = 0; i < CUT_SIDE; i++)
|
||||||
{
|
{
|
||||||
|
y = gPlayerFacingPosition.y - 1 + i;
|
||||||
y = i + neg1 + pos->y;
|
for (j = 0; j < CUT_SIDE; j++)
|
||||||
for (j = 0; j < 3; j++)
|
|
||||||
{
|
{
|
||||||
x = j + neg1 + pos->x;
|
x = gPlayerFacingPosition.x - 1 + j;
|
||||||
if (MapGridGetZCoordAt(x, y) == pos->height)
|
if (MapGridGetZCoordAt(x, y) == gPlayerFacingPosition.height)
|
||||||
{
|
{
|
||||||
if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
|
if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user