Skip to content

Tutorials

LOuroboros edited this page Oct 31, 2022 · 87 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.

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
📄 Faster HP Drain 🐛 📋 🎨 🧬
📄 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_SIZE 🐛 📝 🌎
📄 Surf Dismount Ground Effects 🐛 🌎 🎨
📄 Fix Snow Weather 🐛 🌎 🎨
📄 Keep the Camera from Making Waves 🐛 🌎 🎨
📄 Better Reflection System 🐛 🌎 🎨
📙 Force load offscreen object events with a flag 🐛 🌎 🎨
📙 Fix critical bug with wild land Pokemon encounter ratio 🐛 🌎
📙 Restoring the Shred Split Battle Transition 🐛 🎨
📄 Improve the Loading of Battle Terrain ⭐⭐ 🐛 🎨
📄 Improving the WaitForVBlank function 🐛 🎨 💻 🧬
📙 Fixing Battle Factory opponent IV Glitch 🐛
📙 Seeding the RNG properly on startup 🐛 💻
⬆️ Back to the top

UI

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

Title Difficulty Tags
📙 Debug Menu 📋🎒📝🌎🧬
📙 Register items in a list menu! 📋🎒🌎🎨 
📄 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! 📋🎒🎨 
📙 Make reusable TMs unsellable 📋🎒 
📄 Repeated Medicine Use ⭐⭐ 📋🎒 
📙 Nature Mints 📋🎒 
📄 Remove the extra save confirmation 📋🎒 
📙 Shops with Single Items to Buy ⭐⭐ 📋🎒 
📙 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 📋📝 
📙 Allow specifying multi-choice options in scripts ⭐⭐ 📋📝 
📙 Multichoice2 - Improved Multichoice Command ⭐⭐ 📋📝 
📙 Simplistic Battle Intro 📋🌎🎨 
📙 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 📋🎨 
📄 Spinda Second Frame Spot Addition ⭐⭐ 📋🎨 
📙 Improving the Pace of Battles 📋🎨 
📙 Hidden Power type in summary screen 📋🎨 
📙 Improved scrolling options menu with instant text, HP and EXP bar speeds and a metric unit option! 📋🎨 
📄 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 ⭐⭐⭐ 📋 
📄 Adding a Pokémon Type & Disabling the Mystery Type 📋 
📙 Adding the Fairy Type 📋 
📄 Learn moves upon evolution ⭐⭐ 📋🧬
📙 Remove Low Health Beeps 📋 
📙 Show IVs/EVs in Summary Screen 📋 
📙       (Alternate Method) 📋 
📙 Modifying Starter Pokémon 📋 
📙 Nicknaming Pokémon from the Party Menu 📋 
📙 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 📋 
📙 Mid-battle Evolutions 📋 
📙 Move Relearner as an option in the Pokémon Party Screen 📋 
📙 Show Type Effectiveness In Battle ⭐⭐ 📋 
📙 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 ⭐⭐ 📋 
⬆️ 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 & alternative 🎒🌎 
📙       (Alternate Method) 🎒🌎 
📄 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 🎒🧬
📙 Gen IV+ White Out Money Calculation 🎒🧬
📙 Gracidea Item 🎒🧬
📄 Infinite TM usage 🎒 
📙 Only Buy TMs & HMs Once 🎒 
📙 Modifying TM & HM Moves 🎒 
📙 Item field effect functions to increase/decrease Individual Values 🎒 
📄 Disable Bag use In Battle 🎒 
📄 Disable Catching Pokemon 🎒 
📙 More Trainer Items ⭐⭐ 🎒 
📄 Shuckle makes Berry Juice 🎒 
📙 Increase bag item capacity 🎒 
📄 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 🎒 
⬆️ Back to the top

Scripting

Anything involving scripting.

Title Difficulty Tags
📙 Prevent Map Fade With A Flag 📝🌎🎨 
📙 Global Field Tints 📝🌎🎨 
📙 Display Mugshots in the Overworld ⭐⭐ 📝🌎🎨 
📙 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 📝🌎 
📙 Get an event object's facing direction in an overworld script 📝🌎 
📄 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 📝 
📙 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 📝 
📙 Only change nicknames of self caught mons! 📝 
📙 Text shortcut to print a Pokémon's nickname 📝 
📄 Useful scripting commands 📝 
📄 Dynamic Trade Names 📝 
⬆️ 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 overworlds ⭐⭐ 🌎🎨 
📙 Surviving Poison Outside of Battle with 1HP 🌎 
📙 Implement a metatile behavior for Feebas encounters 🌎 
📙 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 🌎 
📙 No Whiteout After Player Loss 🌎 
📙       (Alternate Method) 🌎 
📙 Randomizing the Player's party's moves 🌎 
📄 Speedy Pokecenter Healing 🌎 
📄 Toggling 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 🌎 
📙 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 ⭐⭐ 🌎 
⬆️ 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 🎨 
📙 Using Affine Animations ⭐⭐⭐ 🎨  
📙 Print the Icons of the Player's Party Pokemon on the Back Side of the Trainer Card 🎨 
⬆️ 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  
📙 Obtain exp. points per catch [EM/FR]  
📙 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  
📙 pokeemerald: Perfect IVs while breeding  
📙 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 ⭐⭐  
📄 How to Create a New Regular Trainer Battle ⭐⭐  
📄 How to add a new Pokémon species ⭐⭐  
📙 Smogon Stats ⭐⭐⭐  
⬆️ 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 💻 
📄 Version Identification 💻 
📄 Enable trade with FRLG without beating the game 💻 
📄 Extra save space with two lines of code 💻 
📄 Uniquely Shuffle Arrays ⭐⭐ 💻 
📄 Debugging using printf 💻 
⬆️ Back to the top
Clone this wiki locally