- 5,256
- Posts
- 16
- Years
- Age 26
- Leicester, UK
- Seen Oct 7, 2024
Quick Research & Development Thread
This thread is for small-scale research and development that can be solved in a matter of, say, five or six posts (or less). If you think of something you want to investigate but think it is too minor or shot for an entire Research & Development thread, or discover a small titbit of information that, on its own, would not warrant a whole thread for itself, just post it here! Posting format
When posting your researched articles, please post them in a format that can be easily understood. Along with posting all your research on the matter in hand, please include any website links, offsets, subsidiary information and the likes when posting your article. Posts that are unclear in their message or that miss out vital information will not be added to the directory, for the sake of convenience and ease of access.For ease, the links are broken into sections and subsections. A "[Part #]" links to other posts that expand upon or correct the first part.
Thread rules
All posts must follow the posting format above. In addition, posts must follow the rules detailed below. (Of course, please ensure that you follow the PokéCommunity global rules, as well as this subforum's local rules.)This is not a Simple Question thread.
This is purely for quick research, don't ask your ROM Hacking questions unless they are undocumented enough to warrant research. Simple Questions should be posted as unique threads in the ROM Hacking Help forum.You should have a minimum amount of knowledge on the matter in hand.
We expect that you'll have knowledge of ROM Hacking and at least a small idea on what to do with what you've found out.Reviving old topics in the thread is forbidden.
Unless you've found significant research and the case was unresolved in the first time of posting. Mechanics Research
Red/Blue/Yellow
Gold/Silver
Ruby/Sapphire
- Editing the Hoenn Pokédex order
- Enabling the National Pokédex
- Editing Battle Tower opponents
- Battle Tower information
- Secret Base information
- Mossdeep Trainer information
- Berry Glitch information
- Generation Six Exp. Share system
- Preventing Safari Zone Pokémon from fleeing
- Swarm structures
- Player's Pokémon gain experience on capture
FireRed
- Making HMs deleteable
- Enabling automatic running without the use of the B Button
- Location of the badge-check for Surf and Waterfall
- Making the "Seen" amount of your Pokédex displayed in the continue screen and the save screen instead of the caught numbers [Part 1] [Part 2]
- Removing the introduction part of the New Game function
- Skipping parts of the introduction
- Changing the Level at which Eggs hatch
- Extend the limit to the seen/caught text and extending the number of Pokemon that will be correctly featured in the habitat pages
- Information on the Secret Key
- Removing the flag-check for the Running Shoes [Part 1] [Part 2]
- Removing the flag-checks for all HMs from the POKéMON menu
- Preventing Safari Zone Pokémon from fleeing
- Changing the level of the Ghost Marowak
- The Pickup ability's item table structure
- Egg group information [Part 1] [Part 2]
- Preventing Pokémon from fainting in the field from poison
- Disabling poison in the over world
- Implementing the X/Y-styled experience gain after capturing wild Pokémon [Part 1] [Part 2]
- Enabling the player to run off of ledges
- VS. Seeker table information [Part 1] [Part 2]
- Enabling the capture of opponent Trainers' Pokémon
- Information on the structure of in-game trades [Part 1] [Part 2]
- Maximum number of flying sprites on the Town Map
- Changing the EV cap to 252
- Preventing the Safari Zone step count from decreasing
- Preventing Poké Balls from being consumed upon failed capture
- Information about roaming Pokémon
- Battle scripts RAM locations and information
- The step counter for the Safari Zone's RAM location
- Unknown roaming Pokémon table location
- Enabling the Pokémon Pokédex number on the summary screen regardless of if the National Pokédex is unlocked
- How to fix Shedinja's evolution for expanded evolution table [Part 1] [Part 2]
- Expanding the maximum amount of items allowed in main bag pockets
- Pokédex search functions information [Part 1] [Part 2]
- Hidden Power editing [Part 1] [Part 2]
- Enable non-Kanto Pokemon evolution without the National Dex
- Making the game display Deoxys' normal forme [Part 1] [Part 2] [Part 3] [Part 4]
- Game Freak presents and intro cutscene skip
- Increasing disobedience without proper badges
- Fixing Protect/ Detect/ Endure probability
- Changing the Lucky Egg experience modifier
- Generation Six Exp. Share system
- Automatic double battles with trainers
- Full Exp. Share experience for all involved Pokemon
- Changing which Pokemon gets the DeepseaScale and DeepseaTooth boosts
- Battle environments based on a map's Flight Type
- Breeding baby Pokemon without incense items
- Removing stats boosts from badges [Part 1] [Part 2]
- Fixing bike permissions on maps
- Fixing Unown encounters
- Toggling "set" battle mode
- Mew obedience fix
- Removing field move options from the Pokemon menu
- Skip player and rival naming
- Information about catch areas in the Pokedex
- Changing the Daycare breeding rate
- Editing the catching tutorial's Pokemon and gender
- Automatically unlock the National Dex
- Porting Emerald's Pickup mechanics
- Preventing HM08 from being deleted
- Add Thick Club boost to Alolan Marowak
- Seventh Generation status updated
- Allowing bike use on all maps
- Changing the spawn point after beating the Elite Four
- Altering status conditions through the RAM
Emerald
- Making HM's deleteable
- Making the "Seen" amount of your Pokédex displayed in the continue screen and the save screen instead of the caught numbers
- Editing the Hoenn Pokédex order
- Swarm structures
- Changing the Level at which Eggs hatch [Part 1] [Part 2]
- Secret base decorations structure
- Enabling the Mach Bike's speed for default walking
- Changing the flag required for Surfing on the over world [Part 1] [Part 2] [Part 3] [Part 4]
- Hidden Power editing
- Preventing Pokémon from fainting in the field from poison
- Generation Six Exp. Share system
- Frontier Brain info and Battle Pyramid wild spawns
- The Pickup ability's item table structure
- Pokédex search functions information
- Battle Tower Pokémon exclusion list location [Part 1] [Part 2]
- Battle Pike wilds structure
- Script executed when the player enters a Trainer event's view radius
- Steven's Double Battle team structure
- Wally's Ralts battle details
- Reusable TMs
- Skipping the Prof. Birch intro [Part 1] [Part 2] [Part 3]
- Setting the Player's name
- Full Exp. Share experience for all involved Pokemon
- Egg group information
- Editing the start menu options
- Extending the Hoenn regional Pokédex [Part 1] [Part 2]
- Choice Specs
- Choice Scarf
- Updated Light Ball effect
- Retaining Pokémon animations when expanding the Pokédex
- Changing the EV cap to 252
- Making moves with zero accuracy always miss
- Battle command table [Part 1] [Part 2]
- Enable National Pokédex in Trainer's contest teams before beating the Elite Four
- Implementing the X/Y-styled experience gain after capturing wild Pokémon
- Fixing bike permissions on maps
- How to make the game use the default base stats for Deoxys
- How to change moves called in the Nature Power table [Part 1] [Part 2]
- How to fix Shedinja's evolution for expanded evolution table [Part 1] [Part 2]
- How to change the first Zigzagoon battle's Pokémon species and level
- Altering status conditions through the RAM
- Removing stats boosts from badges
- Enabling the Pokedex to show catchable Pokemon in new maps
- Changing which Pokemon can learn Volt Tackle via breeding
- Removing poison damage in the overworld
- Changing the Daycare breeding rate
- Flash lightens the entire screen
- Changing the experience gain formula
- Changing the spawn point after beating the Elite Four
- Editing the introduction
- Expand object effect tables and limiters
- Receive the National Dex Directly Without Modifying the Script
- Fire Red Style Fishing (Remove having to reel in while Fishing)
- Berry Trees No Longer Disappear Until the Player Picks Them
Diamond/Pearl
Scripting Research
Ruby/Sapphire
FireRed
- The difference between trainerbattle 0x1 and trainerbattle 0x2
- The first script executed
- Loading the White Out cutscene [Part 1] [Part 2]
- Explanation of cmd9C (doanimation) command
- Exploring the Coin Case
- Displaying a secondary message box with header text and body text
- An overview of the use of flags and variables in a vanilla ROM
- "Interesting quirks about some FireRed scripting commands"
- Exploration of cmda6 [Part 1] [Part 2]
- Naming the player from the over world
- applymovement values
- callasm battle script function and battle string function
- FireRed scripting engine wiki
- Identifying the setmapfooter footer byte
- Locating the player's current amount of money
- Location of the script that executes after whiting out [Part 1] [Part 2]
- Enabling greyscale or sepia overlays [Part 1] [Part 2]
- Mystery Gift information
- RAM locations of the opponent Pokémon's primary and secondary type
- Scripts executed after exiting the second floor of Pokémon Centers for the Colosseum room or Trade room
- A script that alerts the player when eggs have been spawned by Pokémon in the Day-care Center
- A script that will allow you to choose how many Pokemon you need to have registered in order to receive a diploma
- Information on changing the start menu [Part 1] [Part 2]
- Removing Prof. Oak's text from trainerbattle 0x9
- Information on the textcolor command
- Information on the 0x9F byte for applymovement
- Info on Hidden Items
- Warp command accept variables
- Editing or expanding the locations of the Seagallop Ferry (special 0x17B)
- Research on special 0x167 (Trainer Card photographs)
- Alternative method to check the player's facing direction
- Information on special 0x96 (set a flag using a variable)
- cmd49 Research
- Making a trainer battle continue after defeat
- Special 0x158 information
- Blackout script offsets
- Wildbattle with randomised levels
- Flashback error checking
Emerald
- Location of the Surf behavior byte's script
applymovement values - A way to checkpokemon in your party for events [Part 1] [Part 2]
- A tag battle script
- List of Variables
- List of Specials [Part 1] [Part 2] [Part 3] [Part 4] [Part 5] [Part 6] [Part 7]
- Egg-hatching script
- Badge checks for HMs
- doanimation command values
- Enable a different fanfare for obtaining Key Items
- The flag set when the player has mounted their bicycle
- The script that executes when there is no item registered
- List of various scripts
- cmdd3, cmdd4, cmdd5 and cmdd6 research [Part 1] [Part 2]
- Trading information
- cmd8a research
- HM script information
- Script to check a Pokemon's level for an NPC dialog (using Dizzy's Hacked Engine)
- Location of the Surf behavior byte's script
Graphics Research
FireRed
- Animation location for arrows in the Bag
- Changing the duration of the title screen
- Making the title screen last forever
- Location of a table that dictates the "type" / gender of a Person event
- Snow weather animation location
- Editing PC Boxes
- Location of Transform's animation
- Naming the Rival from the over world
- Editing the Pokédex's display [Part 1] [Part 2] [Part 3]
- Location of the palette for the player's reflection
- Town Map route / city dimensions offsets
- Information of the table that controls the position of various elements during the item-use animation
- Trainer Card tileset, tilemap and palette locations
- Information on changing the start menu
- Changing the color filter used by flashbacks
- Information on the generateOAM function [Part 1] [Part 2] [Part 3]
- Changing text boxes
- Information on adding more eye catches
- Changing the default text color / gender for Person events
- Info on the Spinda dots
- Lavender Tower Ghost palette info
- Adjusting the x/y/layout of the textbox
- Battle HUD location [Part 1] [Part 2]
- Changing the order Badges appear on the Trainer card
- Enabling a 32x32px player over world for the naming screen
- Location of palette for sandy footprints
- Location of the Prof. Oak introduction lecture's graphics
- Location of Game Corner slot machines graphics
- Battle animation offsets and information
- Disabling area images / location previews / eye catches from being loaded
- Making it so the default box wallpapers use more than the first four [EM]
- Pokemon Center animation doesn't count eggs
- Pokemon Center animation editing
- Showing Poke Mart prices over 9,999 [Part 1] [Part 2]
- Miscellaneous Pokemon summary screen values
- Replacing the Rival nicknaming sprite
- Box wallpaper information
Emerald
- Document of all LZ77-compressed data
- Location of the type icon chart
- Location of the battle animation background table
- Overworld and Battle Textboxes locations
- Pokemon Center animation doesn't count eggs
- Location of the amorphous surfing blob's sprites
- Making the game display the normal form for Deoxys
- HP boxes information
- Secret Base decoration sprites
- End-of-turn move animations
- Turning off title screen flashes
Audio Research
FireRed
- Track number of the Low HP sound
- Changing the Level-Up fanfare
- Changing the Wild Battle defeat fanfare
- Enabling the Surfing music in Route 23, Victory Road and Indigo Plateau maps
- Allowing individual cries for Pokemon between Celebi and Treecko [EM]
- Enabling proper cries for the limbo slots between Celebi and Treecko
- List of sounds
Emerald
- Track number of the Low HP sound [Part 1] [Part 2]
- Identifying Voice Groups
- Fixing sound corruption
- Encounter Music list
- Enabling proper cries for the limbo slots between Celebi and Treecko [Part 1] [Part 2]
Black/White/Black 2/White 2
Pokémon Mystery Dungeon
Other
FireRed
- The purpose of 0x0203C000
- Location of "S" when obtaining multiple items [Part 1][Part 2]
- Controlling other Person events in a map
- Player control RAM structure(s)
- Pokédex Habitat data structure(s)
- RAM addresses that store the map bank, map number, and the player's current X and Y co-ordinates [Part 1] [Part 2]
- The limit of script recursion [Part 1] [Part 2]
- RAM locations that control screen refreshing
- Person data structure
- "Offsets for some scripts that people may find interesting"
- Information on the RAM location starting at 0x0203F3C0
- Location of obedience checks
- The starting position of the player in a new game
- Step counter location in the RAM
- "Wait-for-interrupt" loop patch
- Location of the battle menu's text (FIGHT / BAG / PKMN / RUN)
- DMA Negation
- Making Decrypting Pokémon substructures easier
- RAM location of the player's money
- RAM locations of the player's X and Y co-ordinates
- How to edit the default options in the Options menu
- Location of the table of default Player names
- Teachy TV text locations and information
- Disable trade restrictions and item removal while trading
- Critical-Hit item and Exp. Share checks
- Powder Jar information
- Removing the ending credits
- Hidden items information
- Expanding vars beyond 0x8014
- Class-based Pokeballs
- PokeMart inventory based on badge progress
Emerald
- Cheat codes
- Location of obedience checks
- RAM addresses that store the map bank, map number, and the player's current X and Y co-ordinates
- "Wait-for-interrupt" loop patch
- Locations of the default names for the player
- IDB routine identifiers (based on identical routines from FireRed)
- Making Decrypting Pokémon substructures easier
- Location of the table of default Player names
- Easy Chat hex codes
- DMA Negation
- Disable trade restrictions and item removal while trading
- Increasing the max money amount
- Allowing the Soul Dew for Latias and Latios in the Battle Frontier
- Berry data
- Pokeblock research
- Berries replant forever
- Changing global wild encounter levels
Diamond/Pearl
X / Y
Pokémon Mystery Dungeon
Generation Interlinked
Research here is interlinked with the games of the same Generation, meaning that it can be applied on any of the mentioned ([FR], [EM], etc) ROM's. It is further broken into Generation specific sub-sections.Generation III
- [RS] [FR] [EM] Party HP and status ailments RAM locations
- [RS] [FR] [EM] Stat Buff Changes research
- [RS] [FR] [EM] Dynamic offsets for the TM / HM Compatibility Table
- [RS] [FR] [EM] Enabling bicycle-riding in maps
- [RS] [FR] [EM] Information on the wild Pokémon structures
- [RS] [FR] [EM] Enabling support for extended Pokémon in the wild for AdvanceMap 1.9.2 [Part 1] [Part 2]
- [RS] [FR] [EM] Research into the altitude of Person events in maps
- [RS] [FR] [EM] Tile Background / Behavior bytes research
- [RS] [FR] [EM] List of Encrypted Counters or Hidden Variables
- [RS] [FR] [EM] Field move table information [Part 1] [Part 2]
- [RS] [FR] [EM] Information on the playsong2 command
- [RS] [FR] [EM] Information on cry command [Part 1] [Part 2] [Part 3]
- [RS] [FR] [EM] Information on the movement byte 0x69
- [RS] [FR] [EM] Translating Trainer flags to regular flags
- [RS] [FR] [EM] Adding black bars to the top and bottom of the screen [Part 1] [Part 2]
- [RS] [FR] [EM] Special table
- [RS] [FR] [EM] Giving custom moves to Pokemon through scripting
- [RS] [FR] [EM] Block editing via hex editors
- [RS] [FR] [EM] Extending the Number of DirectSound Tracks [Part 1] [Part 2]
- [RS] [FR] [EM] Info on songs and fanfares
- [RS] [FR] [EM] Changing the cry of the Pokémon the Professor releases during the introduction speech
- [RS] [FR] [EM] Clearing 0x1000 bytes in the RAM
- [RS] [FR] [EM] Order of events
- [RS] [FR] [EM] Editing the map header to enable Flying
- [RS] [FR] [EM] Door animation format
- [RS] [FR] [EM] Format of the song table
- [RS] [FR] [EM] Removing modulation from .s files [Part 1] [Part 2] [Part 3]
- [RS] [FR] Limiters for the over world amount
- [RS] [EM] Unused in-game Eon Ticket script
- [FR] [EM] Adding more field moves [Part 1] [Part 2] [FR]
- [FR] [EM] Updating Rough Skin
- [FR] [EM] Critical Hit table information
- [FR] [EM] Critical Hit nerf hack [RS]
- [FR] [EM] End of turn effects table (Leech Seed, burn, poison, Nightmare, etc.)
- [FR] [EM] Andrea's Generation Six Exp. Share system
- [FR] [EM] Environmental moves
- [FR] [EM] RAM offsets for party Pokemon and opposing Pokemon
- [FR] [EM] List of used flags
- [FR] [EM] Check / Count a Specific Pokémon Species in the Party
- [FR] [EM] Updated Wrap effect [Part 1] [Part 2]
- [FR] [EM] Research on the spriteface2 command
- [FR] [EM] Egg hatching graphics
- [FR] [EM] Changing the pre- and post-battle strings [Part 1] [Part 2]
- [FR] [EM] Removing the black bar animation that appears when you use a HM move in the overworld
- [FR] [EM] Event-dependant map music
- [FR] [EM] JPAN's Save Variable Patch
- [FR] [EM] RAM addresses that store the current location of roaming legendaries
- [FR] [EM] Changing the Pokemon that appears in Altering Cave
Extra
knizz's HTML-only BL Finder tool portHTML-only ROM research tool.
Porting C files to ASM
A way to port C files to ASM.
knizz's online database
An online version of knizz's database.
A Python script for debugging a map
Quick Python script that's useful for debugging a map.
Recreating a bug with PKSV [Part 1] [Part 2] [Part 3]
Simple way too avoid bugs in routines.
Using expanded Pokemon in Advance Map
Recognizing and using expanded Pokémon in Advanced Map 1.92/1.95.
Last edited by a moderator: