Skip to content
Bivurnum edited this page May 10, 2024 · 230 revisions

This is a collection of handy modifications for pokeemerald. Modifications tend to range in both size and scope and cover all different facets of the games. The goal of this collection is to share resources among all fan-game developers while also showcasing to newer developers the ease and benefits of switching to decompilation-based projects. For feature branches you can pull from directly, please see the Feature Branches wiki!

This is intended to be a more sustainable version of the indexes that Avara and Anon822 maintained. Thank you both for all of your hard work!

If you would like to add a tutorial to this page, simply click the edit button in the top-right corner of the page. Further instructions will be visible there.

Reading this list

  • Difficulty
    • ⭐: Simply removing and adding particular lines OR pulling in a feature branch.
    • ⭐⭐: Require a little more understanding of ROM hacking and pokeemerald to use successfully.
    • ⭐⭐⭐: Can be complex and difficult to implement, should be reserved for more experienced developers.
  • Gen: (Number): Originally came from Generation _ of the main series Pokémon games.
  • Bug: 🐛: Fixes a bug in Pokémon Emerald.
  • UI: 📋: User interface of the game, such as menus, dropdowns, options, selections, etc.
  • Item: 🎒: Anything involving items.
  • Script: 📝: Anything involving scripting.
  • OW: 🌎: Anything involving the overworld.
  • Gfx: 🎨: Look, feel, or display of the game. Has no bearing aside from visual.
  • Battle: ⚔: Anything involving battles, such as stats, attacks, encounters, etc.
  • Code: 💻: GBA hardware or background functionality, such as RNG seeds or palette loading.
  • RHH: 🧬: This feature is included in RHH's pokeemerald-expansion.

A feature may have more than one way to implement it, in which case there will be an alternate tutorial called out under it.

Links with 📄 in front are to wiki pages, while links with 📙 in front are to pokecommunity pages. (Wiki articles can be maintained by anyone, while pokecommunity pages must be updated by the person posting; We hope to get everything on the wiki in the end.)

Tutorial syntax

Tutorials may use diff syntax to show edits:

 this is some code
-delete red - lines
+add green + lines

List

Table of Contents

  • Bugs - Fixes a bug in Pokémon Emerald.
  • UI - User interface of the game, such as menus, dropdowns, options, selections, etc.
  • Item - Anything involving items.
  • Scripting - Anything involving scripting.
  • Overworld - Anything involving the overworld.
  • Graphics - Look, feel, or display of the game. Has no bearing aside from visuals.
  • Battling - Anything involving battles, such as stats, attacks, encounters, etc.
  • Code - GBA hardware or background functionality, such as RNG seeds or palette loading.

Bugs

Fixes a bug in Pokémon Emerald.

Title Difficulty Tags
📄 Make space for EWRAM Data for Summary screen 🐛 📋 💻
📄 Not showing dex entries until getting the Pokédex 🐛 📋
📙 Wrong Save Type Error Screen 🐛 📋
📄 Implement Missing Text Function RESET_FONT 🐛 📝 🌎
📄 Surf Dismount Ground Effects 🐛 🌎 🎨
📄 Fix Snow Weather 🐛 🌎 🎨
📄 Keep the Camera from Making Waves 🐛 🌎 🎨
📄 Better Reflection System 🐛 🌎 🎨
📙 Force load offscreen object events with a flag 🐛 🌎 🎨
📙 Restoring the Shred Split Battle Transition 🐛 🎨
📄 Improve the Loading of Battle Terrain ⭐⭐ 🐛 🎨
📄 Improving the WaitForVBlank function 🐛 🎨 💻 🧬
📄 Remove Expensive and Redundant BuildColorMaps Function 🐛 🌎 💻
📙 Don't reset pushable boulders when moving around the map 🐛 🌎 🎨
⬆️ Back to the top

UI

User interface of the game, such as menus, dropdowns, options, selections, etc.

Title Difficulty Tags
📙 Debug Menu 📋🎒📝🌎🧬
📄 Add Ability to Avoid Battle Damage in Debug Menu 📋
📙 Register items in a list menu! 📋🎒🌎🎨
📄 Register A Second Item Mapped to Holding Select 📋🎒🌎🎨
📄 Make Key Items That Cannot Be Used In The Field Not Show A Use or Register Option 🎒🌎
📄 Shop Items by Badge Count 📋🎒🌎
📄 Prompt for reusing Repels 📋🎒🌎🧬
📙       (Alternate Method) 📋🎒🌎🧬
📙 Make Poké Balls usable outside of battles 📋🎒🎨
📙 Change bag sound with the ones from FR 📋🎒🎨
📙 TM Case ported from FR and custom one! 📋🎒🎨
📄 Repeated Medicine Use ⭐⭐ 📋🎒
📙 Nature Mints 📋🎒
📄 Remove the extra save confirmation 📋🎒
📙 Shops with Single Items to Buy ⭐⭐ 📋🎒
📄 Per Shop\Mart Item Prices ⭐⭐ 📋🎒
📄 Add an EV\IV Stat Editor UI ⭐⭐ 📋
📄 New Main Menu with Mugshot and Party ⭐⭐ 📋
📄 Full Screen Start Menu UI ⭐⭐ 📋
📄 New Birch's Briefcase With Fully Custom Starters ⭐⭐ 📋
📙 Move Item 📋🎒
📙       (Alternate Method) 📋🎒
📙 Bag Sorting 📋🎒
📙 Special that lets the Player choose an item from the bag 📋🎒
📙 Coin Pokémarts ⭐⭐ 📋🎒
📙 Increase Text Speed Beyond Fast 📋📝🎨
📙 Use Fly/Flash from party menu if Pokémon is compatible 📋📝
📙 SBird's Dynamic Multichoice ⭐⭐ 📋📝
📙 Allow specifying multi-choice options in scripts ⭐⭐ 📋📝
📙 Multichoice2 - Improved Multichoice Command ⭐⭐ 📋📝
📙 Simplistic Battle Intro 📋🌎🎨
📄 Quickly Run from Wild Battle by Holding Right 📋
📙 Gender-based Field Textboxes 📋🌎🎨
📙 Remove Map Popups On Maps With The Same Map Section 📋🌎🎨
📄 Chain Fishing 📋🌎
📄 Adding Multi-region Support 📋🌎💻
📙 Pokémon Storage System in the Start Menu ⭐⭐ 📋🌎
📙 Editing Default Options Settings 📋🌎
📙 Scrolling Multichoice Boxes for Scripts CHECK UPDATE ⭐⭐⭐ 📋🌎
📙       (Alternate Method) ⭐⭐⭐ 📋🌎
📙 Disable Pokémon Animations 📋🎨
📄      (And on Prof. Birch's intro Pokémon) 📋🎨
📄 Spinda Second Frame Spot Addition ⭐⭐ 📋🎨🧬
📙 Improving the Pace of Battles 📋🎨
📄 Faster HP Drain 📋 🎨 🧬
📙 Hidden Power type in summary screen 📋🎨
📄 Multi-Page Options Menu 📋🎨
📄 Options Plus ‐ Multipage Options Menu with Faster Text, HP‐EXP Bar Speeds and Metric 📋🎨
📄 Colored stats by nature in summary screen 📋🎨
📙 DS-Style Party Screens 📋🎨
📙 Make text speed-up like holding the A/B buttons automatically 📋🎨
📙 Make text autoscroll ⭐⭐ 📋🎨
📄 Adding New Menu/Text Border Themes ⭐⭐ 📋🎨
📙 Add a New Wallpaper to the Pokemon Storage Box ⭐⭐⭐ 📋🎨
📄 Add Physical Special Split ⭐⭐ 📋 🧬
📄 Physical Special Split Icons In Battle ⭐⭐⭐ 📋
📙 Physical Special Split Icons In Battle (RHH Expansion only) ⭐⭐⭐ 📋
📄 Adding a Pokémon Type & Disabling the Mystery Type 📋
📙 Adding the Fairy Type 📋 🧬
📄 Learn moves upon evolution ⭐⭐ 📋🧬
📄 Instead of Asking to Stop learning a New Move, You'll be Asked to Continue Learning 📋
📄 Pushing B When Asked To Stop Learning Move Will Cancel Teaching The Move 📋
📙 Remove Low Health Beeps 📋
📙 Tweaking the count of health beeps 📋
📙 Show IVs/EVs in Summary Screen 📋
📙       (Alternate Method) 📋
📙 Modifying Starter Pokémon 📋
📙 Make the game read the dynamic type of Hidden Power in battles 📋
📙 Have the game display Hidden Power's true base power (for pre - Gen VI power calculations) 📋
📙 Shortcut to run quickly from wild battles 📋
📄 Push B in wild battle moves to Run 📋
📙 Mid-battle Evolutions 📋
📙 Move Relearner as an option in the Pokémon Party Screen 📋
📄 Allow Move Relearner to Teach Moves that Pre Evolutions Know 📋
📙 Show Type Effectiveness In Battle ⭐⭐ 📋
📄 Show Type Effectiveness In Battle Using Pre Existing Function and Toggle in Option Menu ⭐⭐ 📋
📄 Add Description Submenu in Battles 📋
📙 Change the limbo slots' hardcoded Unown cry ⭐⭐ 📋
📙 Change the Clock Time 📋💻
📙 Recover the R-button's Letter changing function of the naming screen. 📋
📙 Scroll Start Menu 📋
📄 Make the keyboard auto-switch to lowercase after the first character 📋
📙 Auto-switch to Lower Case in Naming Screen 📋
📙 Move Pokémon as first PSS option 📋
📄 Allow the player to nickname their Pokémon from the party menu 📋
📙 Swap party screen slots using Select 📋
📙 XY-style Wrapping Summary Screen 📋
📙 Remove Contest Moves Tab from Summary Screen 📋
📙 Start menu Page turning 📋
📄 Remove the functionally redundant move grammar tables 📋
📙 Editing the Save Screen ⭐⭐ 📋
📙 Swapping Order of Genders in the Intro ⭐⭐ 📋
📙 Preset Playable Character Name ⭐⭐ 📋
📙 UI Helper ⭐⭐ 📋
📙 Return/Frustration power in summary screen 📋🎨
📄 List Menu Item Coloring 📋
📄 Make L Button Be Turbo A When L=A Option Is Set 📋
📄 Allow All Pokemon to Evolve Without Trading 🌎📋
📄 Show Species That You're Switching For in the Party Menu 📋
📄 Show a throbber animation while the game is saving 📋
📙 Evolving a Pokémon from within the party screen 📋
📄 Craft Menu / Crafting System 📋🎒📝

⬆️ Back to the top

Item

Anything involving items.

Title Difficulty Tags
📄 Set Up Item Balls on a Map Without Needing New Scripts 🎒📝🌎
📙 Plural giveitem 🎒📝🌎
📙 DPPt 2-in-1 Bike and Alternative Implementation 🎒🌎
📄 Proper Plural "giveitem" Command 🎒🌎
📙 Faster Berry Interactions 🎒🌎
📙 Surfboard 🎒🌎
📙       (Alternate Method) 🎒🌎
📙 Modifying the Pickup Ability's Item Table 🎒🌎
📙 Display Item Desciptions on First Obtain 🎒🌎
📙 Register Items with L/R 🎒🌎
📙 Checking Ash Collected in Soot Sack 🎒🌎
📙 Remove the Need to Water Berries on Rainy Routes 🎒🌎
📙 HM Items 🎒🌎
📙 Headbutt in the overworld 🎒🌎
📄 FRLG/DP+ White Out Money Calculation 🎒💻🧬
📄 Update Sitrus Berry's effect to Gen 4 standard 🎒🧬
📙 Gracidea Item 🎒🧬
📄 Infinite TM usage and unsellable 🎒
📙 Only Buy TMs & HMs Once 🎒
📙 Modifying TM & HM Moves 🎒
📙 Item field effect functions to increase/decrease Individual Values (IVs) 🎒
📄 Disable Bag use In Battle 🎒 🧬
📄 Disable Catching Pokemon 🎒 🧬
📙 More Trainer Items ⭐⭐ 🎒
📄 Shuckle makes Berry Juice 🎒
📙 Increase bag item capacity 🎒
📄 Make the Bag Able to Hold 120 Items Instead of 30 🎒
📄 Item Automatically Goes to PC if Bag is Full ⭐⭐ 📝🌎
📄 Changing the Money Limit 🎒
📄 LGPE-Style Bonus Premier Balls 🎒
📙 New PokéBalls with Unique Images 🎒
📙 Editing Player PC Items 🎒
📙 Changing the Beginning Amount of Money 🎒
📙 Feed any number of pokéblocks 🎒
📄 Change initial PC items 🎒
📄 Add Thief Ball ⭐⭐⭐ 🎒⚔📝🎨
⬆️ Back to the top

Scripting

Anything involving scripting.

Title Difficulty Tags
📄 The Basics of Scripting 📝🌎
📙 Prevent Map Fade With A Flag 📝🌎🎨
📙 Global Field Tints 📝🌎🎨
📙 Display Mugshots in the Overworld ⭐⭐ 📝🌎🎨
📙       (Complementary Msgbox Macro) 📝🌎
📙 Headbutt tree for Pokeemerald 📝🌎
📙 Gen. 4 Styled Deoxys Form Change in the Overworld 📝🌎
📙 Rotom Form Change in Overworld 📝🌎
📄 Resume Game After Whiting Out (Scripted Loss) 📝🌎
📙 Ability Tutor ⭐⭐ 📝🌎
📙 New Movement Actions 📝🌎
📙       (Alternate Method) 📝🌎
📙 Skipping the Poochyena Battle After Starter Choice 📝🌎
📙 Move camera to a coordinates and return camera to the player specials 📝🌎
📄 Trigger Map Scripts By Flag 📝🌎
📙 Change Object Event Movement Type in Real Time ⭐⭐⭐ 📝🌎
📙 Custom Battle Music Via Scripting (Emerald / Firered) 📝🎨
📙 Earn battle points from trainer battles (with a variable) 📝🎨
📙 Have Berry Trees No Longer Disappear 📝🎨
📄 Implementing the “textcolor” script command from FRLG and give object events their own text colour ⭐⭐ 📝🎨
📙 IV Checker NPC 📝
📙 Setting EVs with Scripting Specials 📝
📙 In-game Trading with Self 📝
📙 Give Custom Mon 📝
📙 Create Party Mon 📝
📙 Preserve Trainer Party Order ⭐⭐ 📝
📙 Wonder Trade 📝
📙 Get or Set a Pokémon's Seen/Caught flag from within a script 📝
📙 Check for a Specific Pokémon Species 📝
📙 Full National Dex 📝🧬
📙 Use variables with setmonmove 📝
📙 Text shortcut to print a Pokémon's nickname 📝
📄 Useful scripting commands 📝
📄       Supplementary Scripting Macros 📝
📄 Dynamic Trade Names 📝
📄 Copy Metatile IDs Other Map 📝
⬆️ Back to the top

Overworld

Anything involving the overworld.

Title Difficulty Tags
📙 Day/Night encounters ⭐⭐ 🌎🎨
📙 Overworld Expansion 🌎🎨💻
📄 Dynamic overworld palette system ⭐⭐ 🌎🎨💻
📄 Stair Warps ⭐⭐ 🌎🎨💻
📄 Custom Border Dimensions ⭐⭐ 🌎🎨
📙 Fog Blending 🌎🎨
📙 Sideways Stairs 🌎🎨
📙 Adding Footprints 🌎🎨 🧬
📄 Remove Warp Fadescreen with a Flag 🌎🎨
📄 Spawn an invisible Player 🌎🎨
📄 Adding new event object or overworld sprites ⭐⭐ 🌎🎨
📙 Surviving Poison Outside of Battle with 1HP 🌎🧬
📙 Implement a metatile behavior for Feebas encounters 🌎
📄 Fish Will Now Always Get on Hook 🌎
📄 Allow Feebas Fishing Anywhere in Route 119 🌎
📙 Let a Pokémon Forget Any Move 🌎
📙 Scripted Evolution 🌎🧬
📙 Pokémon with Poison Heal Unaffected by Poison in the Overworld 🌎
📙 Changing encounter groups with map scripts 🌎
📙 Curve low-leveled wild Pokemon 🌎
📙 Randomizing the Player's party's moves 🌎
📄 Speedy Pokecenter Healing 🌎
📄 Make Pokemon Not Heal When Going into PC 🌎
📄 Toggling Trainers "Seeing" You 🌎 🧬
📄 Allow Running From Trainer Battles 🌎
📄 Cleanse Tag Avoid All Wild Encounters; PokeDoll Avoid Trainers Seeing You 🌎
📙 Deactivate Wild Encounters With A Flag ⭐⭐ 🌎 🧬
📄 How to add a new ability ⭐⭐ 🌎 🧬
📄 Disabling Union Room check when entering Pokémon Centers 🌎💻
📄 Add a debug menu 🌎💻  🧬
📄 Enable the Reset RTC Feature 🌎💻
📄 Triple-layer metatiles ⭐⭐ 🌎💻
📙 Rival Nicknaming 🌎
📄 Allow running indoors 🌎 🧬
📄 Pokecenters disregard eggs 🌎
📙 Auto-Run 🌎
📄 Push B to Toggle Running Shoes 🌎
📙 Removing Badge Checks for HMs 🌎
📙 Flying Taxis 🌎
📙 Fast Surfing 🌎
📙 Running speed by default 🌎
📙 Modifying the Start Location 🌎
📙 Force Set Player Gender 🌎
📙 Locktarget Scripting Command 🌎
📙 Rock Climb 🌎
📙 Grindrunning For Easier Diagonal Movement 🌎
📙 Auto-read signposts 🌎
📙 Allow player to change direction while moving 🌎
📄 Run Custom Scripts on Trainer Sight 🌎
📄 Omnidirectional Jump Behavior ⭐⭐ 🌎
📄 Make Daycare Faster at Leveling Pokémon 🌎
📄 Add PC Access in PokeNav ⭐⭐ 🌎🎨
📄 Use HMs Without Any Pokemon in your Party Knowing Them 🌎
📄 Allow Both Latios and Latias Appear 🌎
📄 Get Match Calls Only If Caller Wants a Rematch 🌎
📄 Allow Jumping Over Ledges with Acro Bike 🌎
📄 Trainers No Longer Spin to Face You Right As You Pass Them 🌎
📄 All Trees Permanently Get Cut 🌎
📄 Name Rater Allows Traded Pokemon to be Renamed 🌎
📄 Nuzlocke Challenge ⭐⭐⭐ 🌎 📋 📝
📄 Add Difficulty Mode 🌎 📋 📝
📄 Change Trainer Parties Depending on Difficulty (Easy/Challenge mode) ⭐⭐ 📋  
📄 How to delete a map ⭐⭐ 🌎
📄 Ability to Create Multiple Secret Bases 🌎
📙 New Mapsec / Map PopUp 🌎🎨💻
📄 Converting/Porting FR Tilesets ⭐⭐⭐ 🌎
📙 FakeRTC - An Unreal Time Clock ⭐⭐ 💻
📄 Remove the Select sound when interacting with a specific Event Script 🌎📝
📄 Add Walking Animations to All NPCs 🌎
⬆️ Back to the top

Graphics

Look, feel, or display of the game. Has no bearing aside from visuals.

Title Difficulty Tags
📄 Forcing Battle Anims for Major fights 🎨
📄 Trainer Class-Based Poké Balls 🎨 🧬
📙 Enable the Opponent Trainers to throw Pokeball instead of dropping it directly to the battlefield. 🎨
📄 Adding a New Trainer Class 🎨
📄 Battle music changes depending on the map the player is in 🎨
📄 Trainer Backsprite Editing ⭐⭐ 🎨
📙 Editing Battle Backgrounds ⭐⭐ 🎨
📄 Adding a New Trainer Image ⭐⭐ 🎨
📄 Custom Battle Transition Mugshots ⭐⭐ 🎨
📙 New Battle Transitions ⭐⭐ 🎨
📙 De-linking Palette Sharing Between Player Back & Front Sprites 🎨💻
📄 Implementing ipatix's High Quality Audio Mixer ⭐⭐ 🎨💻
📙 Make the Edit of the "Copyright Text" and "THE END" screen in ending credits directly done by tilemap tools 🎨
📙 Changing Birch's Intro Pokémon 🎨
📙 Change the title screen music 🎨
📙 Remove the "Green Flash" screen of the opening's background when the pokemon logo appears 🎨
📙 Skipping the Rayquaza Intro 🎨
📄 Option to Skip Copyright and Intro 🎨📝 
📄 Button Press to Skip Copyright Screen 🎨 
📙 Using Affine Animations ⭐⭐⭐ 🎨
📙 Print the Icons of the Player's Party Pokemon on the Back Side of the Trainer Card 🎨
📄 Lanette's PC from the Start of the Game 🎨
📄 Make the Person in the Intro Match the Save File 🎨
📄 Get Rid of Battery Run Dry Error Message 🎨
📄 Fixing the aspect ratio of the Pokémon logo on the title screen 🎨
📙 Adding, Editing, and Replacing Songs, Voices, and Voicegroups ⭐⭐ 🎨
📄 Changing the Battle Music Depending on the Opponent 🎨
📄Revert Brendan/May Sprites to Ruby/Sapphire 🎨
⬆️ Back to the top

Battling

Anything involving battles, such as stats, attacks, encounters, etc.

Title Difficulty Tags
📄 Change Time-Based Evolution Times ⭐⭐⭐ 💻
📄 Remove badge boosts  🧬
📙 Set a Trainer's Pokémon's abilities 🧬
📙 Make eggs hatch at level 1 instead of 5 🧬
📙 Always inherit nature when holding an Everstone 🧬
📙 Destiny Knot IV Inheritance Implementation 🧬
📙 Power item and Destiny Knot breeding 🧬
📙 Inherit Nature when Holding an Everstone 🧬
📙 Gen 6-style Exp. Share
📄 Gen 6-style Exp. Share - Alternative Option 🎒⚔
📄 Obtain EXP. Points per catch ⭐⭐  🧬
📙 Gen. 8 Synchronize 🧬
📙 Forced Battle Style
📙 Managing Trainer Rematches
📙 Switch If Specific Pokémon Has Specific Super Effective Revealed Move
📙 Prevent Roamers From Fleeing (Emerald / Firered)
📙 Set Trainer's Levels Dynamically
📙 Set Wild Pokémon's Levels Dynamically
📙       (Alternate Method)
📙 Improving Switching AI
📙 Register pokémon you battle at the Battle Frontier in the Pokédex
📙 Create Pokémon with Three Perfect IVs  🧬
📙 Inherit moves from both parents 🧬
📙 Competitive IVs for eggs
📙 REMOVING LEVEL FROM COMBAT STATISTICS EMERALD
📄 Create Shiny Pokemon with a Flag  🧬
📄 Change Starter Pokémon
📙 Adding EVs to Trainers ⭐⭐ 🧬
📙 Improved Editing Trainer Parties ⭐⭐ 🧬
📙 Improving Switching AI #2 ⭐⭐
📄 Fix AI's Switch In Battle 🐛
📄 How to Create a New Regular Trainer Battle ⭐⭐
📄 How to add a new Pokémon species ⭐⭐  🧬
📙 Smogon Stats
📄 Raise Catch Odds by Pressing B As Ball Shakes ⭐⭐ 📝
📄 Shifting to Pokémon Already in Battle Exits the Shift Menu
📄 Get Rid of Pokemon Disobeying You
📄 Make Pokemon that Require a Fateful Encounter to be Legal to Always Be Set to Legal
📙 Adding Hyper Training Stats 💻
📙 Catch a Trainer's Pokémon
📄 Adding Time Based Encounters 📝
📄 Amulet Coin Effects If Anyone In Party is Holding It
📙 Enable the usage of the SPECIES_UNOWN_(LETTER) constants for party creation
📙 Adding a New Move 🧬
📙 Soft EXP Level Caps ⭐⭐
📄 Adding Custom Status Conditions

⬆️ Back to the top

Code

GBA hardware or background functionality, such as RNG seeds or palette loading.

Title Difficulty Tags
📙 Delete save file 💻
📙 Remove Pokemon Data Encryption 💻
📙 Saveblock Cleansing 💻
📙 Faster Soft Resets 💻
📄 How to Support Savefile Backwards Compatibility ⭐⭐ 💻
📄 Version Identification 💻
📄 Enable trade with FRLG without beating the game 💻
📄 Extra save space with two lines of code 💻
📄 Uniquely Shuffle Arrays ⭐⭐ 💻
📄 Add Sleep Mode 💻 📋
📄 Debugging using printf 💻 🧬
📄 Debugging using gdb (Windows, WSL2, Visual Studio Code, mGBA) ⭐⭐⭐ 💻
📄 Remove the backup save file 💻
⬆️ Back to the top
Clone this wiki locally