From 8b0457197a41593f8c081ffce0cb942e2541afd9 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Fri, 5 May 2023 00:33:07 -0400 Subject: [PATCH] Updated follower color fill palette logic. --- src/event_object_movement.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index ac54e8ee7e..de70311b25 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -484,6 +484,8 @@ const u8 gInitialMovementTypeFacingDirections[] = { #define OBJ_EVENT_PAL_TAG_CASTFORM_RAINY 0x1126 #define OBJ_EVENT_PAL_TAG_CASTFORM_SNOWY 0x1127 #define OBJ_EVENT_PAL_TAG_EMOTES 0x8002 +// Not a real OW palette tag; used for the white flash applied to followers +#define OBJ_EVENT_PAL_TAG_WHITE (OBJ_EVENT_PAL_TAG_NONE - 1) #define OBJ_EVENT_PAL_TAG_NONE 0x11FF #include "data/object_events/object_event_graphics_info_pointers.h" @@ -6646,11 +6648,11 @@ bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent, return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); } -// Copy and load objectEvent's palette, but set all opaque colors to white -static u8 LoadWhiteFlashPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) { +// Update sprite with a palette filled with a solid color +static u8 LoadFillColorPalette(u16 color, u16 paletteTag, struct Sprite *sprite) { u16 paletteData[16]; - struct SpritePalette dynamicPalette = {.tag = OBJ_EVENT_PAL_TAG_NONE-1, .data = paletteData}; // TODO: Use a proper palette tag here - CpuFill16(RGB_WHITE, paletteData, 32); + struct SpritePalette dynamicPalette = {.tag = paletteTag, .data = paletteData}; + CpuFill16(color, paletteData, PLTT_SIZE_4BPP); return UpdateSpritePalette(&dynamicPalette, sprite); } @@ -6729,7 +6731,7 @@ bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct // Set graphics, palette, and affine animation } else if ((duration == 0 && sprite->data[3] == 3) || (duration == 1 && sprite->data[3] == 7)) { FollowerSetGraphics(objectEvent, objectEvent->extra.mon.species, objectEvent->extra.mon.form, objectEvent->extra.mon.shiny); - LoadWhiteFlashPalette(objectEvent, sprite); + LoadFillColorPalette(RGB_WHITE, OBJ_EVENT_PAL_TAG_WHITE, sprite); // Initialize affine animation sprite->affineAnims = sAffineAnims_PokeballFollower; sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; @@ -6761,7 +6763,7 @@ bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct sprite->data[2] = 2; return FALSE; } else if (sprite->data[3] == 11) { // Set palette to white & start affine - LoadWhiteFlashPalette(objectEvent, sprite); + LoadFillColorPalette(RGB_WHITE, OBJ_EVENT_PAL_TAG_WHITE, sprite); sprite->affineAnims = sAffineAnims_PokeballFollower; sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; InitSpriteAffineAnim(sprite);