This is a fork of the matching decompilation at PRET.
It attempts to maintain vanilla compatibility whenever possible. It doesn't increase the size of any save data structure or the object event structure.
There are several branches, each with one main feature (and sometimes some extra stuff):
followers-expanded-id branch:
- HGSS-style pokémon followers for all 386 pokémon (including forms & shinies)
- Includes follower emotes and a majority of the HGSS messages
- Custom pokeball sprites for Gen 1-7 pokéballs
- Followers can use field moves in the overworld
- Overworld form changes for Ditto, Mew, Castform, etc.
- Asymmetrical & 64x64 OW support
- Dynamic Overworld Palette System (DOWP) & reflections compatible with berry trees, etc.
- Expands OW graphicsIds to 16 bits in a backwards compatible way
- Includes support for compressed OW graphics
icons branch:
- Now standalone, without following pokémon.
- Dynamic Overworld Palette System (DOWP) & reflections compatible with berry trees, etc.
- Expands OW graphicsIds to 16 bits in a backwards compatible way
- All pokemon icons updated to Gen 6, based on this repo
- This includes compatibility with the PC, trade, contests, mail, Battle Dome. Examples:
- Icons share palettes with front sprites, meaning that shiny pokemon will also have shiny icons!
icons-followers branch:
- Has both icons and followers-expanded-id
lighting-expanded-id branch:
- Everything from the followers-expanded-id branch.
- Day/night shading compatible with weather.
- GSC-style window lights.
- WIP interframe-blended lamp lights at night, i.e in Rustboro.
- HGSS-style alpha-blended shadows for object events.
just-lighting branch:
lighting-expanded-idbut with following pokémon code & assets completely removed. (This allows for more than 255 OW graphics)- Saves with following pokémon can still safely be loaded.
followers-legacy branch:
- Like
followers-expanded-id, but without expanding OW graphicsIds to 16 bits
Note: Unless you have a specific need for it, you should probably use
followers-expanded-idover this.
guillotine branch:
DecapitatesDecapitalizes text at compile-time, with some exceptions (see the FAQ)- Future-proof, doesn't require mass-replacing strings
To set up the repository, see INSTALL.md.
When merging this README, to keep whatever you have there:
# git merge ...
# Conflict !!
git checkout --ours README.mdA: Configuration for the follower system is mostly in event_objects.h:
// If true, follower pokemon will bob up and down
// during their idle & walking animations
#define OW_MON_BOBBING TRUE
// If true, adds a small amount of overhead
// to OW code so that large (48x48, 64x64) OWs
// will display correctly under bridges, etc.
#define LARGE_OW_SUPPORT TRUE
// Followers will emerge from the pokeball they are stored in,
// instead of a normal pokeball
#define OW_MON_POKEBALLS TRUE
// New/old handling for followers during scripts;
// TRUE: Script collisions hide follower, FLAG_SAFE_FOLLOWER_MOVEMENT on by default
// (scripted player movement moves follower too!)
// FALSE: Script collisions unhandled, FLAG_SAFE_FOLLOWER_MOVEMENT off by default
#define OW_MON_SCRIPT_MOVEMENT TRUE
// If set, the only pokemon allowed to follow you
// will be those matching species, met location,
// and/or met level;
// These accept vars, too: VAR_TEMP_1, etc
#define OW_MON_ALLOWED_SPECIES (0)
#define OW_MON_ALLOWED_MET_LVL (0)
#define OW_MON_ALLOWED_MET_LOC (0)A: Create a .pla file in the same folder as the .pal with the same name.
In this file you can enter color indices [0,15] on separate lines to mark those colors as being light-blended, i.e:
06.pla:
# A comment
0 # if color 0 is listed, uses it to blend with instead of the default!
1
9
10
You might have to make mostlyclean or change the .pal file to pick up the changes.
A: There are a number of ways to make a string "fixed case" so that it will not be decapitalized when displayed:
C strings: Replace the _ with _C:
// _C = fixed (C)ase string!
const u8 gText_IDNumber[] = _C("IDNo.");ASM strings: Replace .string with .fixstr:
gText_SavingDontTurnOff::
@ Lasts until the end of the line
.fixstr "SAVING…\n"
.fixstr "DON'T TURN OFF THE POWER.$"
You can fix-case/unfix parts of a string like so:
.string "{FIXED_CASE}WARNING!{UNFIX_CASE}\p"
See also the configuration in decap_config.h.
There's also special handling for "separated bigrams"; basically, two letter words.
This includes: "TM01", "PC", "ID", any two uppercase characters surrounded by (generally) non-alphabetic characters. These will have their case preserved.
Character attributes are defined in tables in charmap.cpp and charmap.h.
No AI was used in the making of my branches; all of my work is entirely organic. Please do not open Issues or PRs unless you can say the same of all text and code within them.
Please ask for permission before using any of these branches for a project outside the pokeemerald ecosystem.
If your project is not a fork of pokeemerald or does not run on the GBA, ask first.
Please ask for permission before using any of these branches in a project reliant on AI assistance.
For contacts and other pret projects, see pret.github.io.
Feel free to open an Issue on this repo.
To contact me on Discord: merrp.






