diff --git a/graphics/object_events/pics/people/player/red/red.pal b/graphics/object_events/pics/people/player/red/red.pal new file mode 100644 index 000000000000..3097a6556d93 --- /dev/null +++ b/graphics/object_events/pics/people/player/red/red.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +131 123 164 +172 123 65 +255 197 148 +222 148 115 +123 65 65 +65 65 213 +57 57 123 +115 164 197 +106 41 41 +238 238 255 +180 180 213 +255 106 74 +197 57 57 +255 222 90 +189 156 57 +0 0 0 diff --git a/graphics/object_events/pics/people/player/red/red_bike.png b/graphics/object_events/pics/people/player/red/red_bike.png new file mode 100644 index 000000000000..fca60266aded Binary files /dev/null and b/graphics/object_events/pics/people/player/red/red_bike.png differ diff --git a/graphics/object_events/pics/people/player/red/red_fish.png b/graphics/object_events/pics/people/player/red/red_fish.png new file mode 100644 index 000000000000..57a64d0e526d Binary files /dev/null and b/graphics/object_events/pics/people/player/red/red_fish.png differ diff --git a/graphics/object_events/pics/people/player/red/red_item.png b/graphics/object_events/pics/people/player/red/red_item.png new file mode 100644 index 000000000000..a462ec469180 Binary files /dev/null and b/graphics/object_events/pics/people/player/red/red_item.png differ diff --git a/graphics/object_events/pics/people/player/red/red_normal.png b/graphics/object_events/pics/people/player/red/red_normal.png new file mode 100644 index 000000000000..377224e2f5c6 Binary files /dev/null and b/graphics/object_events/pics/people/player/red/red_normal.png differ diff --git a/graphics/object_events/pics/people/player/red/red_surf.png b/graphics/object_events/pics/people/player/red/red_surf.png new file mode 100644 index 000000000000..7686de04be3e Binary files /dev/null and b/graphics/object_events/pics/people/player/red/red_surf.png differ diff --git a/graphics/object_events/pics/people/player/red/red_surf_run.png b/graphics/object_events/pics/people/player/red/red_surf_run.png new file mode 100644 index 000000000000..f4473bbae05b Binary files /dev/null and b/graphics/object_events/pics/people/player/red/red_surf_run.png differ diff --git a/include/config/general.h b/include/config/general.h index cff1432bb737..61d5db5c043c 100644 --- a/include/config/general.h +++ b/include/config/general.h @@ -6,7 +6,7 @@ // still has them in the ROM. This is because the developers forgot // to define NDEBUG before release, however this has been changed as // Ruby's actual debug build does not use the AGBPrint features. -#define NDEBUG +//#define NDEBUG // To enable printf debugging, comment out "#define NDEBUG". This allows // the various AGBPrint functions to be used. (See include/gba/isagbprint.h). diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index 650a6a2357c4..0121eb82f3c4 100755 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -277,10 +277,15 @@ #define ANIM_STD_GO_FASTEST_EAST 19 #define ANIM_STD_COUNT 20 -#define ANIM_RUN_SOUTH (ANIM_STD_COUNT + 0) -#define ANIM_RUN_NORTH (ANIM_STD_COUNT + 1) -#define ANIM_RUN_WEST (ANIM_STD_COUNT + 2) -#define ANIM_RUN_EAST (ANIM_STD_COUNT + 3) +#define ANIM_RUN_SOUTH (ANIM_STD_COUNT + 0) +#define ANIM_RUN_NORTH (ANIM_STD_COUNT + 1) +#define ANIM_RUN_WEST (ANIM_STD_COUNT + 2) +#define ANIM_RUN_EAST (ANIM_STD_COUNT + 3) +#define ANIM_SPIN_SOUTH (ANIM_STD_COUNT + 4) +#define ANIM_SPIN_NORTH (ANIM_STD_COUNT + 5) +#define ANIM_SPIN_WEST (ANIM_STD_COUNT + 6) +#define ANIM_SPIN_EAST (ANIM_STD_COUNT + 7) +#define ANIM_SHAKE_HEAD_OR_WALK_IN_PLACE (ANIM_STD_COUNT + 8) #define ANIM_EXIT_POKEBALL_FAST_SOUTH (ANIM_STD_COUNT + 0) #define ANIM_EXIT_POKEBALL_FAST_NORTH (ANIM_STD_COUNT + 1) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 8891ab27fbe4..d6b841212e2d 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -242,11 +242,16 @@ #define OBJ_EVENT_GFX_HOOH 238 #define OBJ_EVENT_GFX_POKE_BALL 239 #define OBJ_EVENT_GFX_OW_MON 240 +#define OBJ_EVENT_GFX_RED_NORMAL 241 +#define OBJ_EVENT_GFX_RED_BIKE 242 +#define OBJ_EVENT_GFX_RED_SURF 243 +#define OBJ_EVENT_GFX_RED_FIELD_MOVE 244 +#define OBJ_EVENT_GFX_RED_FISH 245 // NOTE: The maximum amount of object events has been expanded from 255 to 65535. // Since dynamic graphics ids still require at least 16 free values, the actual limit // is 65519, but even considering follower Pokémon, this should be more than enough :) -#define NUM_OBJ_EVENT_GFX 241 +#define NUM_OBJ_EVENT_GFX 246 // These are dynamic object gfx ids. @@ -379,6 +384,7 @@ #define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 #define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 #define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1124 +#define OBJ_EVENT_PAL_TAG_PLAYER_RED 0x1125 #if OW_FOLLOWERS_POKEBALLS // Vanilla diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index 88725dda66d7..f87007d4a6f0 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -4772,3 +4772,21 @@ $(OBJEVENTGFXDIR)/misc/ball_%.4bpp: $(OBJEVENTGFXDIR)/misc/ball_%.png ; $(GFX) $ graphics/door_anims/battle_tower_multi_corridor.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 + +$(OBJEVENTGFXDIR)/people/player/red/red_bike.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/people/player/red/red_fish.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(OBJEVENTGFXDIR)/people/player/red/red_item.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 + +$(OBJEVENTGFXDIR)/people/player/red/red_normal.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 + +$(OBJEVENTGFXDIR)/people/player/red/red_surf_run.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 + +$(OBJEVENTGFXDIR)/people/player/red/red_surf.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 \ No newline at end of file diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h index d6229e57c97e..9b5b21f02e63 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -642,39 +642,39 @@ static const union AnimCmd sAnim_GoFastestEast[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd sAnim_RunSouth[] = +static const union AnimCmd sAnim_RunSouth[] = { - ANIMCMD_FRAME(12, 5), - ANIMCMD_FRAME(9, 3), - ANIMCMD_FRAME(13, 5), - ANIMCMD_FRAME(9, 3), + ANIMCMD_FRAME(9, 5), + ANIMCMD_FRAME(10, 3), + ANIMCMD_FRAME(9, 5), + ANIMCMD_FRAME(11, 3), ANIMCMD_JUMP(0), }; -static const union AnimCmd sAnim_RunNorth[] = +static const union AnimCmd sAnim_RunNorth[] = { - ANIMCMD_FRAME(14, 5), - ANIMCMD_FRAME(10, 3), - ANIMCMD_FRAME(15, 5), - ANIMCMD_FRAME(10, 3), + ANIMCMD_FRAME(12, 5), + ANIMCMD_FRAME(13, 3), + ANIMCMD_FRAME(12, 5), + ANIMCMD_FRAME(14, 3), ANIMCMD_JUMP(0), }; -static const union AnimCmd sAnim_RunWest[] = +static const union AnimCmd sAnim_RunWest[] = { - ANIMCMD_FRAME(16, 5), - ANIMCMD_FRAME(11, 3), - ANIMCMD_FRAME(17, 5), - ANIMCMD_FRAME(11, 3), + ANIMCMD_FRAME(15, 5), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(15, 5), + ANIMCMD_FRAME(17, 3), ANIMCMD_JUMP(0), }; -static const union AnimCmd sAnim_RunEast[] = +static const union AnimCmd sAnim_RunEast[] = { - ANIMCMD_FRAME(16, 5, .hFlip = TRUE), - ANIMCMD_FRAME(11, 3, .hFlip = TRUE), - ANIMCMD_FRAME(17, 5, .hFlip = TRUE), - ANIMCMD_FRAME(11, 3, .hFlip = TRUE), + ANIMCMD_FRAME(15, 5, .hFlip = TRUE), + ANIMCMD_FRAME(16, 3, .hFlip = TRUE), + ANIMCMD_FRAME(15, 5, .hFlip = TRUE), + ANIMCMD_FRAME(17, 3, .hFlip = TRUE), ANIMCMD_JUMP(0), }; @@ -1536,3 +1536,149 @@ static const struct StepAnimTable sStepAnimTables[] = { }, {}, }; + +// new + +static const union AnimCmd sAnim_SpinSouth[] = { + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(2, 2, .hFlip = TRUE), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(2, 2), + ANIMCMD_LOOP(1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SpinNorth[] = { + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(2, 2, .hFlip = TRUE), + ANIMCMD_LOOP(1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SpinWest[] = { + ANIMCMD_FRAME(2, 2, .hFlip = TRUE), // Starts by facing East? + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_LOOP(1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SpinEast[] = { + ANIMCMD_FRAME(2, 2), // Starts by facing West? + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(2, 2, .hFlip = TRUE), + ANIMCMD_FRAME(1, 2), + ANIMCMD_LOOP(1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ShakeHeadOrWalkInPlace[] = { + ANIMCMD_FRAME(18, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(19, 16), + ANIMCMD_FRAME(0, 32), + ANIMCMD_LOOP(1), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnimTable_RedGreenNormal[] = { + [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth, + [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth, + [ANIM_STD_FACE_WEST] = sAnim_FaceWest, + [ANIM_STD_FACE_EAST] = sAnim_FaceEast, + [ANIM_STD_GO_SOUTH] = sAnim_GoSouth, + [ANIM_STD_GO_NORTH] = sAnim_GoNorth, + [ANIM_STD_GO_WEST] = sAnim_GoWest, + [ANIM_STD_GO_EAST] = sAnim_GoEast, + [ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth, + [ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth, + [ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest, + [ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast, + [ANIM_STD_GO_FASTER_SOUTH] = sAnim_GoFasterSouth, + [ANIM_STD_GO_FASTER_NORTH] = sAnim_GoFasterNorth, + [ANIM_STD_GO_FASTER_WEST] = sAnim_GoFasterWest, + [ANIM_STD_GO_FASTER_EAST] = sAnim_GoFasterEast, + [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_GoFastestSouth, + [ANIM_STD_GO_FASTEST_NORTH] = sAnim_GoFastestNorth, + [ANIM_STD_GO_FASTEST_WEST] = sAnim_GoFastestWest, + [ANIM_STD_GO_FASTEST_EAST] = sAnim_GoFastestEast, + [ANIM_RUN_SOUTH] = sAnim_RunSouth, + [ANIM_RUN_NORTH] = sAnim_RunNorth, + [ANIM_RUN_WEST] = sAnim_RunWest, + [ANIM_RUN_EAST] = sAnim_RunEast, + [ANIM_SPIN_SOUTH] = sAnim_SpinSouth, + [ANIM_SPIN_NORTH] = sAnim_SpinNorth, + [ANIM_SPIN_WEST] = sAnim_SpinWest, + [ANIM_SPIN_EAST] = sAnim_SpinEast, + [ANIM_SHAKE_HEAD_OR_WALK_IN_PLACE] = sAnim_ShakeHeadOrWalkInPlace, +}; + +static const union AnimCmd sAnim_SurfFaceSouth[] = { + ANIMCMD_FRAME(0, 60), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_SurfFaceNorth[] = { + ANIMCMD_FRAME(1, 60), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_SurfFaceWest[] = { + ANIMCMD_FRAME(2, 60), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_SurfFaceEast[] = { + ANIMCMD_FRAME(2, 60, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_GetOnOffSurfSouth[] = { + ANIMCMD_FRAME(9, 32), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_GetOnOffSurfNorth[] = { + ANIMCMD_FRAME(10, 32), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_GetOnOffSurfWest[] = { + ANIMCMD_FRAME(11, 32), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_GetOnOffSurfEast[] = { + ANIMCMD_FRAME(11, 32, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sAnimTable_RedGreenSurf[] = { + [ANIM_STD_FACE_SOUTH] = sAnim_SurfFaceSouth, + [ANIM_STD_FACE_NORTH] = sAnim_SurfFaceNorth, + [ANIM_STD_FACE_WEST] = sAnim_SurfFaceWest, + [ANIM_STD_FACE_EAST] = sAnim_SurfFaceEast, + [ANIM_STD_GO_SOUTH] = sAnim_SurfFaceSouth, + [ANIM_STD_GO_NORTH] = sAnim_SurfFaceNorth, + [ANIM_STD_GO_WEST] = sAnim_SurfFaceWest, + [ANIM_STD_GO_EAST] = sAnim_SurfFaceEast, + [ANIM_STD_GO_FAST_SOUTH] = sAnim_SurfFaceSouth, + [ANIM_STD_GO_FAST_NORTH] = sAnim_SurfFaceNorth, + [ANIM_STD_GO_FAST_WEST] = sAnim_SurfFaceWest, + [ANIM_STD_GO_FAST_EAST] = sAnim_SurfFaceEast, + [ANIM_STD_GO_FASTER_SOUTH] = sAnim_SurfFaceSouth, + [ANIM_STD_GO_FASTER_NORTH] = sAnim_SurfFaceNorth, + [ANIM_STD_GO_FASTER_WEST] = sAnim_SurfFaceWest, + [ANIM_STD_GO_FASTER_EAST] = sAnim_SurfFaceEast, + [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_SurfFaceSouth, + [ANIM_STD_GO_FASTEST_NORTH] = sAnim_SurfFaceNorth, + [ANIM_STD_GO_FASTEST_WEST] = sAnim_SurfFaceWest, + [ANIM_STD_GO_FASTEST_EAST] = sAnim_SurfFaceEast, + [ANIM_GET_ON_OFF_POKEMON_SOUTH] = sAnim_GetOnOffSurfSouth, + [ANIM_GET_ON_OFF_POKEMON_NORTH] = sAnim_GetOnOffSurfNorth, + [ANIM_GET_ON_OFF_POKEMON_WEST] = sAnim_GetOnOffSurfWest, + [ANIM_GET_ON_OFF_POKEMON_EAST] = sAnim_GetOnOffSurfEast, +}; diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 1f08b77599f9..9b374e2023ca 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -454,3 +454,13 @@ const u16 gObjectEventPal_BeastBall[] = INCBIN_U16("graphics/object_events/pics/ const u16 gObjectEventPal_StrangeBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_strange.gbapal"); #endif //ITEM_STRANGE_BALL #endif //OW_FOLLOWERS_POKEBALLS + +// new + +const u16 gObjectEventPal_Red[] = INCBIN_U16("graphics/object_events/pics/people/player/red/red.gbapal"); +const u16 gObjectEventPic_RedNormal[] = INCBIN_U16("graphics/object_events/pics/people/player/red/red_normal.4bpp"); +const u16 gObjectEventPic_RedSurfRun[] = INCBIN_U16("graphics/object_events/pics/people/player/red/red_surf_run.4bpp"); +const u16 gObjectEventPic_RedItem[] = INCBIN_U16("graphics/object_events/pics/people/player/red/red_item.4bpp"); +const u16 gObjectEventPic_RedSurf[] = INCBIN_U16("graphics/object_events/pics/people/player/red/red_surf.4bpp"); +const u16 gObjectEventPic_RedBike[] = INCBIN_U16("graphics/object_events/pics/people/player/red/red_bike.4bpp"); +const u16 gObjectEventPic_RedFish[] = INCBIN_U16("graphics/object_events/pics/people/player/red/red_fish.4bpp"); diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 5b8f971a4925..9dc1db6edd6d 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -4671,3 +4671,100 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = { .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, }; + +// new + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedNormal = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_RED, + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, + .size = 512, + .width = 16, + .height = 32, + .paletteSlot = PALSLOT_PLAYER, + .shadowSize = SHADOW_SIZE_M, + .inanimate = FALSE, + .compressed = FALSE, + .tracks = TRACKS_FOOT, + .oam = &gObjectEventBaseOam_16x32, + .subspriteTables = sOamTables_16x32, + .anims = sAnimTable_BrendanMayNormal, + .images = sPicTable_RedNormal, + .affineAnims = gDummySpriteAffineAnimTable, +}; + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedBike = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_RED, + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, + .size = 512, + .width = 32, + .height = 32, + .paletteSlot = PALSLOT_PLAYER, + .shadowSize = SHADOW_SIZE_M, + .inanimate = FALSE, + .compressed = FALSE, + .tracks = TRACKS_BIKE_TIRE, + .oam = &gObjectEventBaseOam_32x32, + .subspriteTables = sOamTables_32x32, + .anims = sAnimTable_Standard, + .images = sPicTable_RedBike, + .affineAnims = gDummySpriteAffineAnimTable, +}; + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedSurf = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_RED, + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, + .size = 256, + .width = 16, + .height = 32, + .paletteSlot = PALSLOT_PLAYER, + .shadowSize = SHADOW_SIZE_M, + .inanimate = FALSE, + .compressed = FALSE, + .tracks = TRACKS_FOOT, + .oam = &gObjectEventBaseOam_16x32, + .subspriteTables = sOamTables_16x32, + .anims = sAnimTable_Surfing, + .images = sPicTable_RedSurf, + .affineAnims = gDummySpriteAffineAnimTable, +}; + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedFieldMove = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_RED, + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, + .size = 256, + .width = 16, + .height = 32, + .paletteSlot = PALSLOT_PLAYER, + .shadowSize = SHADOW_SIZE_M, + .inanimate = FALSE, + .compressed = FALSE, + .tracks = TRACKS_FOOT, + .oam = &gObjectEventBaseOam_16x32, + .subspriteTables = sOamTables_16x32, + .anims = sAnimTable_FieldMove, + .images = sPicTable_RedItem, + .affineAnims = gDummySpriteAffineAnimTable, +}; + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedFish = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_RED, + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, + .size = 512, + .width = 32, + .height = 32, + .paletteSlot = PALSLOT_PLAYER, + .shadowSize = SHADOW_SIZE_M, + .inanimate = FALSE, + .compressed = FALSE, + .tracks = TRACKS_FOOT, + .oam = &gObjectEventBaseOam_32x32, + .subspriteTables = sOamTables_32x32, + .anims = sAnimTable_Fishing, + .images = sPicTable_RedFish, + .affineAnims = gDummySpriteAffineAnimTable, +}; \ No newline at end of file diff --git a/src/data/object_events/object_event_graphics_info_pointers.h b/src/data/object_events/object_event_graphics_info_pointers.h index 60dc6997db68..6a52caf05e31 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -248,6 +248,13 @@ extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2; +// new +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedNormal; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedBike; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedSurf; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedFieldMove; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RedFish; + const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM_OBJ_EVENT_GFX] = { [OBJ_EVENT_GFX_BRENDAN_NORMAL] = &gObjectEventGraphicsInfo_BrendanNormal, [OBJ_EVENT_GFX_BRENDAN_MACH_BIKE] = &gObjectEventGraphicsInfo_BrendanMachBike, @@ -490,6 +497,11 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_HOOH] = &gObjectEventGraphicsInfo_HoOh, [OBJ_EVENT_GFX_POKE_BALL] = &gObjectEventGraphicsInfo_PokeBall, [OBJ_EVENT_GFX_OW_MON] = &gObjectEventGraphicsInfo_Follower, + [OBJ_EVENT_GFX_RED_NORMAL] = &gObjectEventGraphicsInfo_RedNormal, + [OBJ_EVENT_GFX_RED_BIKE] = &gObjectEventGraphicsInfo_RedBike, + [OBJ_EVENT_GFX_RED_SURF] = &gObjectEventGraphicsInfo_RedSurf, + [OBJ_EVENT_GFX_RED_FIELD_MOVE] = &gObjectEventGraphicsInfo_RedFieldMove, + [OBJ_EVENT_GFX_RED_FISH] = &gObjectEventGraphicsInfo_RedFish, }; const struct ObjectEventGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[] = { diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index 1fdfc6d49207..3e60d124efe1 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -1355,3 +1355,81 @@ static const struct SpriteFrameImage sPicTable_KirliaOld[] = { static const struct SpriteFrameImage sPicTable_RubySapphireMay[] = { overworld_ascending_frames(gObjectEventPic_RubySapphireMayNormal, 2, 4), }; + +// new +static const struct SpriteFrameImage sPicTable_RedNormal[] = { + overworld_frame(gObjectEventPic_RedNormal, 2, 4, 0), + overworld_frame(gObjectEventPic_RedNormal, 2, 4, 1), + overworld_frame(gObjectEventPic_RedNormal, 2, 4, 2), + overworld_frame(gObjectEventPic_RedNormal, 2, 4, 3), + overworld_frame(gObjectEventPic_RedNormal, 2, 4, 4), + overworld_frame(gObjectEventPic_RedNormal, 2, 4, 5), + overworld_frame(gObjectEventPic_RedNormal, 2, 4, 6), + overworld_frame(gObjectEventPic_RedNormal, 2, 4, 7), + overworld_frame(gObjectEventPic_RedNormal, 2, 4, 8), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 3), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 4), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 5), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 6), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 7), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 8), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 9), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 10), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 11), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 12), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 13), +}; + +static const struct SpriteFrameImage sPicTable_RedBike[] = { + overworld_frame(gObjectEventPic_RedBike, 4, 4, 0), + overworld_frame(gObjectEventPic_RedBike, 4, 4, 1), + overworld_frame(gObjectEventPic_RedBike, 4, 4, 2), + overworld_frame(gObjectEventPic_RedBike, 4, 4, 3), + overworld_frame(gObjectEventPic_RedBike, 4, 4, 4), + overworld_frame(gObjectEventPic_RedBike, 4, 4, 5), + overworld_frame(gObjectEventPic_RedBike, 4, 4, 6), + overworld_frame(gObjectEventPic_RedBike, 4, 4, 7), + overworld_frame(gObjectEventPic_RedBike, 4, 4, 8), +}; + +static const struct SpriteFrameImage sPicTable_RedSurf[] = { + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 0), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 1), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 2), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 0), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 0), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 1), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 1), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 2), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 2), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 0), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 1), + overworld_frame(gObjectEventPic_RedSurfRun, 2, 4, 2), +}; + +static const struct SpriteFrameImage sPicTable_RedItem[] = { + overworld_frame(gObjectEventPic_RedItem, 2, 4, 0), + overworld_frame(gObjectEventPic_RedItem, 2, 4, 1), + overworld_frame(gObjectEventPic_RedItem, 2, 4, 2), + overworld_frame(gObjectEventPic_RedItem, 2, 4, 3), + overworld_frame(gObjectEventPic_RedItem, 2, 4, 4), + overworld_frame(gObjectEventPic_RedItem, 2, 4, 5), + overworld_frame(gObjectEventPic_RedItem, 2, 4, 6), + overworld_frame(gObjectEventPic_RedItem, 2, 4, 7), + overworld_frame(gObjectEventPic_RedItem, 2, 4, 8), +}; + +static const struct SpriteFrameImage sPicTable_RedFish[] = { + overworld_frame(gObjectEventPic_RedFish, 4, 4, 0), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 1), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 2), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 3), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 4), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 5), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 6), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 7), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 8), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 9), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 10), + overworld_frame(gObjectEventPic_RedFish, 4, 4, 11), +}; \ No newline at end of file diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 0645d7073a02..1512d4c644ba 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -541,6 +541,7 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { #endif //OW_FOLLOWERS_POKEBALLS {gObjectEventPal_Substitute, OBJ_EVENT_PAL_TAG_SUBSTITUTE}, {gObjectEventPaletteEmotes, OBJ_EVENT_PAL_TAG_EMOTES}, + {gObjectEventPal_Red, OBJ_EVENT_PAL_TAG_PLAYER_RED}, #ifdef BUGFIX {NULL, OBJ_EVENT_PAL_TAG_NONE}, #else @@ -550,10 +551,10 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { }; static const u16 sReflectionPaletteTags_Brendan[] = { - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, - OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, + OBJ_EVENT_PAL_TAG_PLAYER_RED, + OBJ_EVENT_PAL_TAG_PLAYER_RED, + OBJ_EVENT_PAL_TAG_PLAYER_RED, + OBJ_EVENT_PAL_TAG_PLAYER_RED, }; static const u16 sReflectionPaletteTags_May[] = { @@ -571,7 +572,7 @@ static const u16 sReflectionPaletteTags_PlayerUnderwater[] = { }; static const struct PairedPalettes sPlayerReflectionPaletteSets[] = { - {OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan}, + {OBJ_EVENT_PAL_TAG_PLAYER_RED, sReflectionPaletteTags_Brendan}, {OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May}, {OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, sReflectionPaletteTags_PlayerUnderwater}, {OBJ_EVENT_PAL_TAG_NONE, NULL}, @@ -655,7 +656,7 @@ static const u16 sReflectionPaletteTags_RedLeaf[] = { }; static const struct PairedPalettes sSpecialObjectReflectionPaletteSets[] = { - {OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan}, + {OBJ_EVENT_PAL_TAG_PLAYER_RED, sReflectionPaletteTags_Brendan}, {OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May}, {OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, sReflectionPaletteTags_QuintyPlump}, {OBJ_EVENT_PAL_TAG_TRUCK, sReflectionPaletteTags_Truck}, @@ -672,7 +673,7 @@ static const struct PairedPalettes sSpecialObjectReflectionPaletteSets[] = { }; static const u16 sObjectPaletteTags0[] = { - [PALSLOT_PLAYER] = OBJ_EVENT_PAL_TAG_BRENDAN, + [PALSLOT_PLAYER] = OBJ_EVENT_PAL_TAG_PLAYER_RED, [PALSLOT_PLAYER_REFLECTION] = OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, [PALSLOT_NPC_1] = OBJ_EVENT_PAL_TAG_NPC_1, [PALSLOT_NPC_2] = OBJ_EVENT_PAL_TAG_NPC_2, @@ -685,7 +686,7 @@ static const u16 sObjectPaletteTags0[] = { }; static const u16 sObjectPaletteTags1[] = { - [PALSLOT_PLAYER] = OBJ_EVENT_PAL_TAG_BRENDAN, + [PALSLOT_PLAYER] = OBJ_EVENT_PAL_TAG_PLAYER_RED, [PALSLOT_PLAYER_REFLECTION] = OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, [PALSLOT_NPC_1] = OBJ_EVENT_PAL_TAG_NPC_1, [PALSLOT_NPC_2] = OBJ_EVENT_PAL_TAG_NPC_2, @@ -698,7 +699,7 @@ static const u16 sObjectPaletteTags1[] = { }; static const u16 sObjectPaletteTags2[] = { - [PALSLOT_PLAYER] = OBJ_EVENT_PAL_TAG_BRENDAN, + [PALSLOT_PLAYER] = OBJ_EVENT_PAL_TAG_PLAYER_RED, [PALSLOT_PLAYER_REFLECTION] = OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, [PALSLOT_NPC_1] = OBJ_EVENT_PAL_TAG_NPC_1, [PALSLOT_NPC_2] = OBJ_EVENT_PAL_TAG_NPC_2, @@ -711,7 +712,7 @@ static const u16 sObjectPaletteTags2[] = { }; static const u16 sObjectPaletteTags3[] = { - [PALSLOT_PLAYER] = OBJ_EVENT_PAL_TAG_BRENDAN, + [PALSLOT_PLAYER] = OBJ_EVENT_PAL_TAG_PLAYER_RED, [PALSLOT_PLAYER_REFLECTION] = OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION, [PALSLOT_NPC_1] = OBJ_EVENT_PAL_TAG_NPC_1, [PALSLOT_NPC_2] = OBJ_EVENT_PAL_TAG_NPC_2, @@ -3012,7 +3013,7 @@ u8 LoadPlayerObjectEventPalette(u8 gender) { default: case MALE: - paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN; + paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_RED; break; case FEMALE: paletteTag = OBJ_EVENT_PAL_TAG_MAY; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index ebf61bdaa3c5..a7ac5000ce2d 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -265,15 +265,15 @@ static const u8 sRivalAvatarGfxIds[][2] = static const u8 sPlayerAvatarGfxIds[][2] = { - [PLAYER_AVATAR_STATE_NORMAL] = {OBJ_EVENT_GFX_BRENDAN_NORMAL, OBJ_EVENT_GFX_MAY_NORMAL}, - [PLAYER_AVATAR_STATE_MACH_BIKE] = {OBJ_EVENT_GFX_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_MAY_MACH_BIKE}, - [PLAYER_AVATAR_STATE_ACRO_BIKE] = {OBJ_EVENT_GFX_BRENDAN_ACRO_BIKE, OBJ_EVENT_GFX_MAY_ACRO_BIKE}, - [PLAYER_AVATAR_STATE_SURFING] = {OBJ_EVENT_GFX_BRENDAN_SURFING, OBJ_EVENT_GFX_MAY_SURFING}, + [PLAYER_AVATAR_STATE_NORMAL] = {OBJ_EVENT_GFX_RED_NORMAL, OBJ_EVENT_GFX_MAY_NORMAL}, + [PLAYER_AVATAR_STATE_MACH_BIKE] = {OBJ_EVENT_GFX_RED_BIKE, OBJ_EVENT_GFX_MAY_MACH_BIKE}, + [PLAYER_AVATAR_STATE_ACRO_BIKE] = {OBJ_EVENT_GFX_RED_BIKE, OBJ_EVENT_GFX_MAY_ACRO_BIKE}, + [PLAYER_AVATAR_STATE_SURFING] = {OBJ_EVENT_GFX_RED_SURF, OBJ_EVENT_GFX_MAY_SURFING}, [PLAYER_AVATAR_STATE_UNDERWATER] = {OBJ_EVENT_GFX_BRENDAN_UNDERWATER, OBJ_EVENT_GFX_MAY_UNDERWATER}, - [PLAYER_AVATAR_STATE_FIELD_MOVE] = {OBJ_EVENT_GFX_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_MAY_FIELD_MOVE}, - [PLAYER_AVATAR_STATE_FISHING] = {OBJ_EVENT_GFX_BRENDAN_FISHING, OBJ_EVENT_GFX_MAY_FISHING}, + [PLAYER_AVATAR_STATE_FIELD_MOVE] = {OBJ_EVENT_GFX_RED_FIELD_MOVE, OBJ_EVENT_GFX_MAY_FIELD_MOVE}, + [PLAYER_AVATAR_STATE_FISHING] = {OBJ_EVENT_GFX_RED_FISH, OBJ_EVENT_GFX_MAY_FISHING}, [PLAYER_AVATAR_STATE_WATERING] = {OBJ_EVENT_GFX_BRENDAN_WATERING, OBJ_EVENT_GFX_MAY_WATERING}, - [PLAYER_AVATAR_STATE_VSSEEKER] = {OBJ_EVENT_GFX_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_MAY_FIELD_MOVE}, + [PLAYER_AVATAR_STATE_VSSEEKER] = {OBJ_EVENT_GFX_RED_FIELD_MOVE, OBJ_EVENT_GFX_MAY_FIELD_MOVE}, }; static const u8 sFRLGAvatarGfxIds[GENDER_COUNT] = @@ -292,10 +292,10 @@ static const u8 sPlayerAvatarGfxToStateFlag[GENDER_COUNT][5][2] = { [MALE] = { - {OBJ_EVENT_GFX_BRENDAN_NORMAL, PLAYER_AVATAR_FLAG_ON_FOOT}, - {OBJ_EVENT_GFX_BRENDAN_MACH_BIKE, PLAYER_AVATAR_FLAG_MACH_BIKE}, - {OBJ_EVENT_GFX_BRENDAN_ACRO_BIKE, PLAYER_AVATAR_FLAG_ACRO_BIKE}, - {OBJ_EVENT_GFX_BRENDAN_SURFING, PLAYER_AVATAR_FLAG_SURFING}, + {OBJ_EVENT_GFX_RED_NORMAL, PLAYER_AVATAR_FLAG_ON_FOOT}, + {OBJ_EVENT_GFX_RED_BIKE, PLAYER_AVATAR_FLAG_MACH_BIKE}, + {OBJ_EVENT_GFX_RED_BIKE, PLAYER_AVATAR_FLAG_ACRO_BIKE}, + {OBJ_EVENT_GFX_RED_SURF, PLAYER_AVATAR_FLAG_SURFING}, {OBJ_EVENT_GFX_BRENDAN_UNDERWATER, PLAYER_AVATAR_FLAG_UNDERWATER}, }, [FEMALE] =