Notice: The current implementation breaks the reflection palette system, though for ease of adding new overworlds that should be adapted so it is dynamic as well, rather than requiring explicit reflection palettes. Notice: Depending on your version of Pokeemerald, the function sub_808E894() has been decompiled, so it could be called LoadEventObjectPalette() Notice: Where it states + or -, add or delete the entire line
Where <PALETTE NAME> is the name of your palette (which you can define yourself, but try to keep it centered around your sprite's name), and <HEX NUMBER> being the hex number above + 1 (Keep in mind that this is Hex, and it utilizes A B C D E and F)
Then goto Line 460ish and go to the second to last entry and add:
Find the sprite you are editing, and modify the second entry in the list to match your newly created palette
Part III: Troubleshooting
A lot of times, following these steps may not work correctly. Your sprite may appear glitched and/or invisible. Here are some recommendations and methods that I've done to fix possible issues.
Method 1. Re-indexing the Image
It sometimes helps to re-index and re-create the palette files, but make sure you delete the .gbapal and .4bpp files before running the make command.
Method 2. Double Checking your modified entries
This seems self explanatory, but sometimes it might be worth to check to see if you've accidentally made a typo of some sort. These mostly apply to src/data/field_event_obj/event_object_graphics.h and spritesheet_rules.mk files, since they actually build the sprite.
Also the src/data/field_event_obj/event_object_graphics_info.h file also has some building properties. Arguments 4, 5 and 6 are associated with the sprites dimensions and byte sizes. Argument 4(.size)refers to the size in bytes of 1 frame of your overworld. It can be calculated by multiplying the width by height by bit depth (in this case 32x32x4) to get the size in bits, then divide by 8 to convert it into bytes. Argument 5(.width)is the width in pixels of one frame of your sprite sheet. Argument 6(.height)is the height in pixels of one frame of your sprite sheet.