diff options
Diffstat (limited to 'src/fldeff_cut.c')
-rw-r--r-- | src/fldeff_cut.c | 205 |
1 files changed, 85 insertions, 120 deletions
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index be655b86a..3115ff231 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -20,6 +20,7 @@ #include "constants/event_objects.h" #include "constants/field_effects.h" #include "constants/songs.h" +#include "constants/metatile_labels.h" extern struct MapPosition gPlayerFacingPosition; @@ -29,42 +30,6 @@ extern const u8 FarawayIsland_Interior_EventScript_267EDB[]; extern const u8 gFieldEffectPic_CutGrass[]; extern const u16 gFieldEffectObjectPalette6[]; -// tileset 0 as first -#define METATILE_ID_GRASS 0x1 -#define METATILE_ID_POKE_GRASS 0xD - -#define METATILE_ID_POKE_GRASS_TREE_UP 0x25 -#define METATILE_ID_GRASS_TREE_UP 0xE - -#define METATILE_ID_POKE_GRASS_TREE_LEFT 0x1C6 -#define METATILE_ID_POKE_GRASS_TREE_RIGHT 0x1C7 - -#define METATILE_ID_GRASS_TREE_LEFT 0x1CE -#define METATILE_ID_GRASS_TREE_RIGHT 0x1CF - -#define METATILE_ID_POKE_LONG_GRASS 0x15 - -// tileset 6 as second -#define METATILE_ID_POKE_STEP_LAVA_GRASS 0x206 -#define METATILE_ID_POKE_LAVA_GRASS 0x207 -#define METATILE_ID_LAVA_FIELD 0x271 - -// tileset 7 as second -#define METATILE_ID_POKE_ASH_GRASS 0x20A -#define METATILE_ID_POKE_STEP_ASH_GRASS 0x212 -#define METATILE_ID_ASH 0x218 - -// tileset 8 as second -#define METATILE_ID_POKE_LONG_GRASS_START 0x208 - -#define METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS 0x279 -#define METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS 0x27A -#define METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS 0x27B - -#define METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS 0x281 -#define METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS 0x282 -#define METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS 0x283 - // cut 'square' defines #define CUT_NORMAL_SIDE 3 #define CUT_NORMAL_AREA CUT_NORMAL_SIDE * CUT_NORMAL_SIDE @@ -94,11 +59,11 @@ static void CutGrassSpriteCallbackEnd(struct Sprite *); static void HandleLongGrassOnHyper(u8, s16, s16); // IWRAM variables -static IWRAM_DATA u8 sCutSquareSide; -static IWRAM_DATA u8 sTileCountFromPlayer_X; -static IWRAM_DATA u8 sTileCountFromPlayer_Y; -static IWRAM_DATA u32 sUnused; -static IWRAM_DATA bool8 sHyperCutTiles[CUT_HYPER_AREA]; +static u8 sCutSquareSide; +static u8 sTileCountFromPlayer_X; +static u8 sTileCountFromPlayer_Y; +static u32 sUnused; +static bool8 sHyperCutTiles[CUT_HYPER_AREA]; // EWRAM variables static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL; @@ -390,36 +355,36 @@ static void SetCutGrassMetatile(s16 x, s16 y) switch (metatileId) { - case METATILE_ID_POKE_LONG_GRASS_START: - case METATILE_ID_POKE_LONG_GRASS: - case METATILE_ID_POKE_GRASS: - MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS); + case METATILE_ID(Fortree, LongGrass_Root): + case METATILE_ID(General, LongGrass): + case METATILE_ID(General, TallGrass): + MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass)); break; - case METATILE_ID_POKE_GRASS_TREE_LEFT: - MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS_TREE_LEFT); + case METATILE_ID(General, TallGrass_TreeLeft): + MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass_TreeLeft)); break; - case METATILE_ID_POKE_GRASS_TREE_RIGHT: - MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS_TREE_RIGHT); + case METATILE_ID(General, TallGrass_TreeRight): + MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass_TreeRight)); break; - case METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS: - MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS); + case METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft): + MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft)); break; - case METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS: - MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS); + case METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid): + MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid)); break; - case METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS: - MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS); + case METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight): + MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight)); break; - case METATILE_ID_POKE_STEP_LAVA_GRASS: - case METATILE_ID_POKE_LAVA_GRASS: - MapGridSetMetatileIdAt(x, y, METATILE_ID_LAVA_FIELD); + case METATILE_ID(Lavaridge, NormalGrass): + case METATILE_ID(Lavaridge, AshGrass): + MapGridSetMetatileIdAt(x, y, METATILE_ID(Lavaridge, LavaField)); break; - case METATILE_ID_POKE_STEP_ASH_GRASS: - case METATILE_ID_POKE_ASH_GRASS: - MapGridSetMetatileIdAt(x, y, METATILE_ID_ASH); + case METATILE_ID(Fallarbor, NormalGrass): + case METATILE_ID(Fallarbor, AshGrass): + MapGridSetMetatileIdAt(x, y, METATILE_ID(Fallarbor, AshField)); break; - case METATILE_ID_POKE_GRASS_TREE_UP: - MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS_TREE_UP); + case METATILE_ID(General, TallGrass_TreeUp): + MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass_TreeUp)); break; } } @@ -437,13 +402,13 @@ static u8 GetLongGrassCaseAt(s16 x, s16 y) { u16 metatileId = MapGridGetMetatileIdAt(x, y); - if (metatileId == METATILE_ID_GRASS) + if (metatileId == METATILE_ID(General, Grass)) return LONG_GRASS_FIELD; - else if (metatileId == METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS) + else if (metatileId == METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft)) return LONG_GRASS_BASE_LEFT; - else if (metatileId == METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS) + else if (metatileId == METATILE_ID(Fortree, SecretBase_LongGrass_TopMid)) return LONG_GRASS_BASE_CENTER; - else if (metatileId == METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS) + else if (metatileId == METATILE_ID(Fortree, SecretBase_LongGrass_TopRight)) return LONG_GRASS_BASE_RIGHT; else return LONG_GRASS_NONE; @@ -457,34 +422,34 @@ static void SetCutGrassMetatiles(s16 x, s16 y) for (i = 0; i < sCutSquareSide; i++) { s16 currentX = x + i; - if (MapGridGetMetatileIdAt(currentX, y) == METATILE_ID_POKE_LONG_GRASS) + if (MapGridGetMetatileIdAt(currentX, y) == METATILE_ID(General, LongGrass)) { switch (GetLongGrassCaseAt(currentX, y + 1)) { case LONG_GRASS_FIELD: - MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_POKE_LONG_GRASS_START); + MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, LongGrass_Root)); break; case LONG_GRASS_BASE_LEFT: - MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft)); break; case LONG_GRASS_BASE_CENTER: - MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid)); break; case LONG_GRASS_BASE_RIGHT: - MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight)); break; } } - if (MapGridGetMetatileIdAt(currentX, lowerY) == METATILE_ID_GRASS) + if (MapGridGetMetatileIdAt(currentX, lowerY) == METATILE_ID(General, Grass)) { - if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_POKE_LONG_GRASS_START) - MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_GRASS); - if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS) - MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS); - if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS) - MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS); - if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS) - MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS); + if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, LongGrass_Root)) + MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(General, Grass)); + if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft)) + MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft)); + if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid)) + MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid)); + if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight)) + MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight)); } } @@ -521,62 +486,62 @@ static void HandleLongGrassOnHyper(u8 caseId, s16 x, s16 y) if (arr[0] == TRUE) { - if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_POKE_LONG_GRASS_START) - MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_GRASS); - if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS) - MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS); - if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS) - MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS); - if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS) - MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS); + if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, LongGrass_Root)) + MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(General, Grass)); + if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft)) + MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft)); + if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid)) + MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid)); + if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight)) + MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight)); } if (arr[1] == TRUE) { - if (MapGridGetMetatileIdAt(newX, y + 2) == METATILE_ID_POKE_LONG_GRASS) + if (MapGridGetMetatileIdAt(newX, y + 2) == METATILE_ID(General, LongGrass)) { switch (GetLongGrassCaseAt(newX, y + 3)) { case LONG_GRASS_FIELD: - MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_POKE_LONG_GRASS_START); + MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, LongGrass_Root)); break; case LONG_GRASS_BASE_LEFT: - MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft)); break; case LONG_GRASS_BASE_CENTER: - MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid)); break; case LONG_GRASS_BASE_RIGHT: - MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight)); break; } } - if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_POKE_LONG_GRASS_START) - MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_GRASS); - if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS) - MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS); - if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS) - MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS); - if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS) - MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS); + if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, LongGrass_Root)) + MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(General, Grass)); + if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft)) + MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft)); + if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid)) + MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid)); + if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight)) + MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight)); } if (arr[2] == TRUE) { - if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_POKE_LONG_GRASS) + if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(General, LongGrass)) { switch (GetLongGrassCaseAt(newX, y + 4)) { case LONG_GRASS_FIELD: - MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_POKE_LONG_GRASS_START); + MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, LongGrass_Root)); break; case LONG_GRASS_BASE_LEFT: - MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft)); break; case LONG_GRASS_BASE_CENTER: - MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid)); break; case LONG_GRASS_BASE_RIGHT: - MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight)); break; } } @@ -630,16 +595,16 @@ void FixLongGrassMetatilesWindowTop(s16 x, s16 y) switch (GetLongGrassCaseAt(x, y + 1)) { case LONG_GRASS_FIELD: - MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_POKE_LONG_GRASS_START); + MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, LongGrass_Root)); break; case LONG_GRASS_BASE_LEFT: - MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft)); break; case LONG_GRASS_BASE_CENTER: - MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid)); break; case LONG_GRASS_BASE_RIGHT: - MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS); + MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight)); break; } } @@ -647,7 +612,7 @@ void FixLongGrassMetatilesWindowTop(s16 x, s16 y) void FixLongGrassMetatilesWindowBottom(s16 x, s16 y) { - if (MapGridGetMetatileIdAt(x, y) == METATILE_ID_GRASS) + if (MapGridGetMetatileIdAt(x, y) == METATILE_ID(General, Grass)) { u8 metatileBehavior = MapGridGetMetatileBehaviorAt(x, y + 1); if (MetatileBehavior_IsLongGrassSouthEdge(metatileBehavior)) @@ -655,17 +620,17 @@ void FixLongGrassMetatilesWindowBottom(s16 x, s16 y) s32 metatileId = MapGridGetMetatileIdAt(x, y + 1); switch (metatileId) { - case METATILE_ID_POKE_LONG_GRASS_START: - MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_GRASS); + case METATILE_ID(Fortree, LongGrass_Root): + MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(General, Grass)); break; - case METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS: - MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS); + case METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft): + MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft)); break; - case METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS: - MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS); + case METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid): + MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid)); break; - case METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS: - MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS); + case METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight): + MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight)); break; } } |