From 565114625f3e8505b157c0c444c5d40caba150ee Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 25 Feb 2020 16:35:38 -0500 Subject: fldeff_cut through SetUpFieldMove_Cut --- src/fldeff_cut.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/fldeff_cut.c (limited to 'src/fldeff_cut.c') 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; + } +} -- cgit v1.2.3 From 41644b283ad2d4fb5e30b61271c5820c1ccbc499 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 25 Feb 2020 16:52:16 -0500 Subject: through sub_8097A20 --- src/fldeff_cut.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'src/fldeff_cut.c') diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index c30eb2d80..d79eec7a4 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -1,19 +1,24 @@ #include "global.h" #include "gflib.h" +#include "event_scripts.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 "overworld.h" #include "party_menu.h" +#include "script.h" #include "constants/event_objects.h" EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL; EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE; -void FieldCallback_CutTree(void); void FieldCallback_CutGrass(void); +void FieldCallback_CutTree(void); +void sub_8097A20(void); +void sub_8097C6C(void); u8 MetatileAtCoordsIsGrassTile(s16 x, s16 y) { @@ -66,3 +71,40 @@ bool8 SetUpFieldMove_Cut(void) return FALSE; } } + +void FieldCallback_CutGrass(void) +{ + FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS); + gFieldEffectArguments[0] = GetCursorSelectionMonId(); +} + +bool8 sub_80979A0(void) +{ + u8 taskId = oei_task_add(); + FLDEFF_SET_FUNC_TO_DATA(sub_8097A20); + IncrementGameStat(GAME_STAT_USED_CUT); + return FALSE; +} + +void FieldCallback_CutTree(void) +{ + gFieldEffectArguments[0] = GetCursorSelectionMonId(); + ScriptContext1_SetupScript(EventScript_FldEffCut); +} + +bool8 sub_80979F0(void) +{ + u8 taskId = oei_task_add(); + FLDEFF_SET_FUNC_TO_DATA(sub_8097C6C); + IncrementGameStat(GAME_STAT_USED_CUT); + return FALSE; +} + +void sub_8097A20(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS); + if (sScheduleOpenDottedHole == TRUE) + CutMoveOpenDottedHoleDoor(); + else + FieldEffectStart(FLDEFF_CUT_GRASS); +} -- cgit v1.2.3 From 51e2b99b9d748755b77fa3bdbc86d261d58fc74c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 26 Feb 2020 09:11:24 -0500 Subject: Finish fldeff_cut --- src/fldeff_cut.c | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 173 insertions(+), 10 deletions(-) (limited to 'src/fldeff_cut.c') diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index d79eec7a4..d7ed12fc1 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -1,7 +1,10 @@ #include "global.h" #include "gflib.h" +#include "event_object_lock.h" +#include "event_object_movement.h" #include "event_scripts.h" #include "fieldmap.h" +#include "field_camera.h" #include "field_specials.h" #include "fldeff.h" #include "field_effect.h" @@ -10,17 +13,79 @@ #include "overworld.h" #include "party_menu.h" #include "script.h" +#include "trig.h" #include "constants/event_objects.h" +#include "constants/songs.h" -EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL; -EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE; +static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL; +static EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE; -void FieldCallback_CutGrass(void); -void FieldCallback_CutTree(void); -void sub_8097A20(void); -void sub_8097C6C(void); +static void FieldCallback_CutGrass(void); +static void FieldCallback_CutTree(void); +static void sub_8097A20(void); +static void sub_8097B50(s16 x, s16 y); +static void objc_8097BA8(struct Sprite * sprite); +static void objc_8097BBC(struct Sprite * sprite); +static void sub_8097C18(struct Sprite * sprite); +static void sub_8097C6C(void); -u8 MetatileAtCoordsIsGrassTile(s16 x, s16 y) +static const u16 sCutGrassMetatileMapping[][2] = { + {0x000d, 0x0001}, + {0x000a, 0x0013}, + {0x000b, 0x000e}, + {0x000c, 0x000f}, + {0x0352, 0x033e}, + {0x0300, 0x0310}, + {0x0301, 0x0311}, + {0x0302, 0x0312}, + {0x0284, 0x0281}, + {0xffff, 0xffff} +}; + +static const struct OamData gOamData_83D4128 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0x001, + .priority = 1, + .paletteNum = 0x1, + .affineParam = 0 +}; + +static const union AnimCmd gAnimCmd_83D4130[] = { + ANIMCMD_FRAME(0, 30), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const gSpriteAnimTable_83D4138[] = { + gAnimCmd_83D4130 +}; + +static const struct SpriteFrameImage gUnknown_83D413C[] = { + {gUnknown_8398648, 0x20} +}; + +const struct SpritePalette gUnknown_83D4144[] = { + gUnknown_8398688, 4096 +}; + +static const struct SpriteTemplate sSpriteTemplate_CutGrass = { + .tileTag = 0xFFFF, + .paletteTag = 4096, + .oam = &gOamData_83D4128, + .anims = gSpriteAnimTable_83D4138, + .images = gUnknown_83D413C, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = objc_8097BA8 +}; + +static u8 MetatileAtCoordsIsGrassTile(s16 x, s16 y) { return TestMetatileAttributeBit(MapGridGetMetatileAttributeAt(x, y, 1), 1); } @@ -72,7 +137,7 @@ bool8 SetUpFieldMove_Cut(void) } } -void FieldCallback_CutGrass(void) +static void FieldCallback_CutGrass(void) { FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS); gFieldEffectArguments[0] = GetCursorSelectionMonId(); @@ -86,7 +151,7 @@ bool8 sub_80979A0(void) return FALSE; } -void FieldCallback_CutTree(void) +static void FieldCallback_CutTree(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); ScriptContext1_SetupScript(EventScript_FldEffCut); @@ -100,7 +165,7 @@ bool8 sub_80979F0(void) return FALSE; } -void sub_8097A20(void) +static void sub_8097A20(void) { FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS); if (sScheduleOpenDottedHole == TRUE) @@ -108,3 +173,101 @@ void sub_8097A20(void) else FieldEffectStart(FLDEFF_CUT_GRASS); } + +bool8 sub_8097A48(void) +{ + u8 i, j; + s16 x, y; + register s32 neg1 asm("r9"); + struct MapPosition *pos; + + i = 0; + PlaySE(SE_W015); + 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) + { + sub_8097B50(x, y); + sub_805F378(x, y); + } + } + } + } + DrawWholeMapView(); + sCutGrassSpriteArrayPtr = Alloc(8); + for (i = 0; i < 8; i++) + { + sCutGrassSpriteArrayPtr[i] = CreateSprite(&sSpriteTemplate_CutGrass, gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0); + gSprites[sCutGrassSpriteArrayPtr[i]].data[2] = i * 32; + } + return FALSE; +} + +static void sub_8097B50(s16 x, s16 y) +{ + u16 i = 0; + u16 metatileId = MapGridGetMetatileIdAt(x, y); + while (1) + { + if (sCutGrassMetatileMapping[i][0] == 0xFFFF) + return; + if (sCutGrassMetatileMapping[i][0] == metatileId) + { + MapGridSetMetatileIdAt(x, y, sCutGrassMetatileMapping[i][1]); + break; + } + i++; + } +} + +static void objc_8097BA8(struct Sprite * sprite) +{ + sprite->data[0] = 8; + sprite->data[1] = 0; + sprite->data[3] = 0; + sprite->callback = objc_8097BBC; +} + +static void objc_8097BBC(struct Sprite * sprite) +{ + sprite->pos2.x = Sin(sprite->data[2], sprite->data[0]); + sprite->pos2.y = Cos(sprite->data[2], sprite->data[0]); + sprite->data[2] += 8; + sprite->data[2] &= 0xFF; + sprite->data[0]++; + sprite->data[0] += sprite->data[3] >> 2; + sprite->data[3]++; + if (sprite->data[1] != 28) + sprite->data[1]++; + else + sprite->callback = sub_8097C18; +} + +static void sub_8097C18(struct Sprite * sprite) +{ + u8 i; + for (i = 1; i < 8; i++) + { + DestroySprite(&gSprites[sCutGrassSpriteArrayPtr[i]]); + } + FieldEffectStop(&gSprites[sCutGrassSpriteArrayPtr[0]], FLDEFF_CUT_GRASS); + Free(sCutGrassSpriteArrayPtr); + sub_80696C0(); + ScriptContext2_Disable(); +} + +static void sub_8097C6C(void) +{ + PlaySE(SE_W015); + FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE); + EnableBothScriptContexts(); +} -- cgit v1.2.3 From 4747fcb6296709bf3f9eb287ca6adb977dae0bce Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 26 Feb 2020 09:21:49 -0500 Subject: Name methods in fldeff_cut --- src/fldeff_cut.c | 70 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 34 deletions(-) (limited to 'src/fldeff_cut.c') diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index d7ed12fc1..bf87bbc06 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -22,12 +22,12 @@ static EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE; static void FieldCallback_CutGrass(void); static void FieldCallback_CutTree(void); -static void sub_8097A20(void); -static void sub_8097B50(s16 x, s16 y); -static void objc_8097BA8(struct Sprite * sprite); -static void objc_8097BBC(struct Sprite * sprite); -static void sub_8097C18(struct Sprite * sprite); -static void sub_8097C6C(void); +static void FieldMoveCallback_CutGrass(void); +static void SetCutGrassMetatileAt(s16 x, s16 y); +static void SpriteCallback_CutGrass_Init(struct Sprite * sprite); +static void SpriteCallback_CutGrass_Run(struct Sprite * sprite); +static void SpriteCallback_CutGrass_Cleanup(struct Sprite * sprite); +static void FieldMoveCallback_CutTree(void); static const u16 sCutGrassMetatileMapping[][2] = { {0x000d, 0x0001}, @@ -42,7 +42,7 @@ static const u16 sCutGrassMetatileMapping[][2] = { {0xffff, 0xffff} }; -static const struct OamData gOamData_83D4128 = { +static const struct OamData sOamData_FldEff_CutGrass = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -58,31 +58,31 @@ static const struct OamData gOamData_83D4128 = { .affineParam = 0 }; -static const union AnimCmd gAnimCmd_83D4130[] = { +static const union AnimCmd sSpriteAnim_Fldeff_CutGrass_0[] = { ANIMCMD_FRAME(0, 30), ANIMCMD_JUMP(0) }; -static const union AnimCmd *const gSpriteAnimTable_83D4138[] = { - gAnimCmd_83D4130 +static const union AnimCmd *const sSpriteAnimTable_FldEff_CutGrass[] = { + sSpriteAnim_Fldeff_CutGrass_0 }; -static const struct SpriteFrameImage gUnknown_83D413C[] = { +static const struct SpriteFrameImage sSpriteFrameImages_FldEff_CutGrass[] = { {gUnknown_8398648, 0x20} }; -const struct SpritePalette gUnknown_83D4144[] = { +const struct SpritePalette gFldEffPalette_CutGrass[] = { gUnknown_8398688, 4096 }; -static const struct SpriteTemplate sSpriteTemplate_CutGrass = { +static const struct SpriteTemplate sSpriteTemplate_FldEff_CutGrass = { .tileTag = 0xFFFF, .paletteTag = 4096, - .oam = &gOamData_83D4128, - .anims = gSpriteAnimTable_83D4138, - .images = gUnknown_83D413C, + .oam = &sOamData_FldEff_CutGrass, + .anims = sSpriteAnimTable_FldEff_CutGrass, + .images = sSpriteFrameImages_FldEff_CutGrass, .affineAnims = gDummySpriteAffineAnimTable, - .callback = objc_8097BA8 + .callback = SpriteCallback_CutGrass_Init }; static u8 MetatileAtCoordsIsGrassTile(s16 x, s16 y) @@ -111,6 +111,7 @@ bool8 SetUpFieldMove_Cut(void) } else { + // FIXME: this fakematch register s32 neg1 asm("r8"); struct MapPosition *pos; PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y); @@ -143,10 +144,10 @@ static void FieldCallback_CutGrass(void) gFieldEffectArguments[0] = GetCursorSelectionMonId(); } -bool8 sub_80979A0(void) +bool8 FldEff_UseCutOnGrass(void) { - u8 taskId = oei_task_add(); - FLDEFF_SET_FUNC_TO_DATA(sub_8097A20); + u8 taskId = CreateFieldEffectShowMon(); + FLDEFF_SET_FUNC_TO_DATA(FieldMoveCallback_CutGrass); IncrementGameStat(GAME_STAT_USED_CUT); return FALSE; } @@ -157,15 +158,15 @@ static void FieldCallback_CutTree(void) ScriptContext1_SetupScript(EventScript_FldEffCut); } -bool8 sub_80979F0(void) +bool8 FldEff_UseCutOnTree(void) { - u8 taskId = oei_task_add(); - FLDEFF_SET_FUNC_TO_DATA(sub_8097C6C); + u8 taskId = CreateFieldEffectShowMon(); + FLDEFF_SET_FUNC_TO_DATA(FieldMoveCallback_CutTree); IncrementGameStat(GAME_STAT_USED_CUT); return FALSE; } -static void sub_8097A20(void) +static void FieldMoveCallback_CutGrass(void) { FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS); if (sScheduleOpenDottedHole == TRUE) @@ -174,10 +175,11 @@ static void sub_8097A20(void) FieldEffectStart(FLDEFF_CUT_GRASS); } -bool8 sub_8097A48(void) +bool8 FldEff_CutGrass(void) { u8 i, j; s16 x, y; + // FIXME: this fakematch register s32 neg1 asm("r9"); struct MapPosition *pos; @@ -196,7 +198,7 @@ bool8 sub_8097A48(void) { if (MetatileAtCoordsIsGrassTile(x, y) == TRUE) { - sub_8097B50(x, y); + SetCutGrassMetatileAt(x, y); sub_805F378(x, y); } } @@ -206,13 +208,13 @@ bool8 sub_8097A48(void) sCutGrassSpriteArrayPtr = Alloc(8); for (i = 0; i < 8; i++) { - sCutGrassSpriteArrayPtr[i] = CreateSprite(&sSpriteTemplate_CutGrass, gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0); + sCutGrassSpriteArrayPtr[i] = CreateSprite(&sSpriteTemplate_FldEff_CutGrass, gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0); gSprites[sCutGrassSpriteArrayPtr[i]].data[2] = i * 32; } return FALSE; } -static void sub_8097B50(s16 x, s16 y) +static void SetCutGrassMetatileAt(s16 x, s16 y) { u16 i = 0; u16 metatileId = MapGridGetMetatileIdAt(x, y); @@ -229,15 +231,15 @@ static void sub_8097B50(s16 x, s16 y) } } -static void objc_8097BA8(struct Sprite * sprite) +static void SpriteCallback_CutGrass_Init(struct Sprite * sprite) { sprite->data[0] = 8; sprite->data[1] = 0; sprite->data[3] = 0; - sprite->callback = objc_8097BBC; + sprite->callback = SpriteCallback_CutGrass_Run; } -static void objc_8097BBC(struct Sprite * sprite) +static void SpriteCallback_CutGrass_Run(struct Sprite * sprite) { sprite->pos2.x = Sin(sprite->data[2], sprite->data[0]); sprite->pos2.y = Cos(sprite->data[2], sprite->data[0]); @@ -249,10 +251,10 @@ static void objc_8097BBC(struct Sprite * sprite) if (sprite->data[1] != 28) sprite->data[1]++; else - sprite->callback = sub_8097C18; + sprite->callback = SpriteCallback_CutGrass_Cleanup; } -static void sub_8097C18(struct Sprite * sprite) +static void SpriteCallback_CutGrass_Cleanup(struct Sprite * sprite) { u8 i; for (i = 1; i < 8; i++) @@ -265,7 +267,7 @@ static void sub_8097C18(struct Sprite * sprite) ScriptContext2_Disable(); } -static void sub_8097C6C(void) +static void FieldMoveCallback_CutTree(void) { PlaySE(SE_W015); FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE); -- cgit v1.2.3 From 933bc3c01ab3e77c5f18770a8893e3424259ce77 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 26 Feb 2020 11:17:10 -0500 Subject: fieldmap.c static symbols; CUT_GRASS_SPRITE_COUNT --- src/fldeff_cut.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/fldeff_cut.c') diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index bf87bbc06..64165ae8f 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -17,6 +17,8 @@ #include "constants/event_objects.h" #include "constants/songs.h" +#define CUT_GRASS_SPRITE_COUNT 8 + static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL; static EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE; @@ -205,11 +207,11 @@ bool8 FldEff_CutGrass(void) } } DrawWholeMapView(); - sCutGrassSpriteArrayPtr = Alloc(8); + sCutGrassSpriteArrayPtr = Alloc(CUT_GRASS_SPRITE_COUNT); for (i = 0; i < 8; i++) { sCutGrassSpriteArrayPtr[i] = CreateSprite(&sSpriteTemplate_FldEff_CutGrass, gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0); - gSprites[sCutGrassSpriteArrayPtr[i]].data[2] = i * 32; + gSprites[sCutGrassSpriteArrayPtr[i]].data[2] = i * (0x100 / CUT_GRASS_SPRITE_COUNT); } return FALSE; } @@ -257,7 +259,7 @@ static void SpriteCallback_CutGrass_Run(struct Sprite * sprite) static void SpriteCallback_CutGrass_Cleanup(struct Sprite * sprite) { u8 i; - for (i = 1; i < 8; i++) + for (i = 1; i < CUT_GRASS_SPRITE_COUNT; i++) { DestroySprite(&gSprites[sCutGrassSpriteArrayPtr[i]]); } -- cgit v1.2.3 From cac0681b2c11b7184545cc42d4bd209d6000b42c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 26 Feb 2020 13:14:53 -0500 Subject: Name cut grass metatiles --- src/fldeff_cut.c | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) (limited to 'src/fldeff_cut.c') diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index 64165ae8f..8617a1aaa 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -16,6 +16,7 @@ #include "trig.h" #include "constants/event_objects.h" #include "constants/songs.h" +#include "constants/metatile_labels.h" #define CUT_GRASS_SPRITE_COUNT 8 @@ -32,16 +33,37 @@ static void SpriteCallback_CutGrass_Cleanup(struct Sprite * sprite); static void FieldMoveCallback_CutTree(void); static const u16 sCutGrassMetatileMapping[][2] = { - {0x000d, 0x0001}, - {0x000a, 0x0013}, - {0x000b, 0x000e}, - {0x000c, 0x000f}, - {0x0352, 0x033e}, - {0x0300, 0x0310}, - {0x0301, 0x0311}, - {0x0302, 0x0312}, - {0x0284, 0x0281}, - {0xffff, 0xffff} + { + METATILE_ID(General, Plain_Grass), + METATILE_ID(General, Plain_Mowed) + }, { + METATILE_ID(General, ThinTreeTop_Grass), + METATILE_ID(General, ThinTreeTop_Mowed) + }, { + METATILE_ID(General, WideTreeTopLeft_Grass), + METATILE_ID(General, WideTreeTopLeft_Mowed) + }, { + METATILE_ID(General, WideTreeTopRight_Grass), + METATILE_ID(General, WideTreeTopRight_Mowed) + }, { + METATILE_ID(CeladonCity, CyclingRoad_Grass), + METATILE_ID(CeladonCity, CyclingRoad_Mowed) + }, { + METATILE_ID(FuchsiaCity, SafariZoneTreeTopLeft_Grass), + METATILE_ID(FuchsiaCity, SafariZoneTreeTopLeft_Mowed) + }, { + METATILE_ID(FuchsiaCity, SafariZoneTreeTopMiddle_Grass), + METATILE_ID(FuchsiaCity, SafariZoneTreeTopMiddle_Mowed) + }, { + METATILE_ID(FuchsiaCity, SafariZoneTreeTopRight_Grass), + METATILE_ID(FuchsiaCity, SafariZoneTreeTopRight_Mowed) + }, { + METATILE_ID(ViridianForest, HugeTreeTopMiddle_Grass), + METATILE_ID(ViridianForest, HugeTreeTopMiddle_Mowed) + }, { + 0xffff, + 0xffff + } }; static const struct OamData sOamData_FldEff_CutGrass = { -- cgit v1.2.3