Search the Community
Showing results for tags 'heartgold'.
-
I've played a few Soul Link's so far and every time I start my play session for the day it's always kind of an annoying process. Loading up 2 separate emulators, 2 roms, having to rekeybind the controllers every time. I was wondering if someone would be able to make a program that could make it easier. If your unfimiliar with a Soul Link Nuzlocke, heres the rules. 1- Any Pokémon that faints is considered "dead," and must be released or stored in a specified PC box for "dead" Pokémon. 2- You can only catch the first Pokémon encountered in each area, and none else. If the first Pokémon encountered faints or flees, there are no second chances. 3- You must also nickname all of your Pokémon, for the sake of forming "stronger emotional bonds." 4- In a new area, the first encounters for both players will be, "linked," together until death. 5- If one Pokémon in a linked pair is placed in the PC, it's Soul Link partner must be placed in the PC as well. 6- If one Pokémon in a linked pair dies, it's Soul Link partner is considered dead as well. 7- If one player fails to capture their first encounter in an area, the second player must forfeit their encounter in their corresponding area. 8- Across both players parties, primary typings may not be repeated. Basically what I'm looking for is a program that emulates 2 roms side by side and be able to control them individually. I've thought of a few features to make it better. Features -Emulators from all consoles built in - Ex. VBA, Desmume, and Citra -Saves both roms under 1 "project" and loads them on the same side every time -Type Chart ready -Online Remote Play - Be able to join your friends session online to see and control one of the games. -Games connected locally so you can trade and battle -Database where you can input your linked pokemon pairs and where you caught them -Built in Pokedex Database (Not necessary but would be helpful) -Program reads both your teams and displays them between the game (I'm aware that's not an easy ask but if it's possible, why not) I feel like except for a couple of them this is a completely possible thing to create. I know it probably wont happen but I just thought I'd get the idea out there. I love doing Soul Links and I'm so happy people found a way to make Pokemon Co-op. Thanks for your time.
-
- 6
-
-
-
-
- rom
- multiplayer
-
(and 43 more)
Tagged with:
- rom
- multiplayer
- nuzlocke
- co-op
- program
- Randomized
- remote
- play
- vba
- desmume
- citra
- no$gba
- nds
- 3ds
- gba
- gbc
- red
- blue
- silver
- gold
- crystal
- ruby
- sapphire
- emerald
- diamond
- pearl
- platinum
- soulsilver
- heartgold
- black
- white
- black 2
- white 2
- x
- y
- omega ruby
- alpha sapphire
- sun
- moon
- ultra sun
- ultra moon
- yuzu
- firered
- leafgreen
- playthrough
-
Heya! Without going into too much detail, I lost my heart gold copy in 2013 and lost what was on my team, however my friend still has my teams data in the trainer house of his heart gold from back when we used to use the Pokewalker with each other. He let me back his save onto my computer, and I am now curious if anyone would have any idea as to how to extract my Pokemon data off the save. Thanks!
- 12 replies
-
Greetings everyone. So, as i stated in title, my save file got corrupted. Long story short, i played HG little by little for a few years, everything was fine. But yesterday, when i tried to launch the game, i got a red top screen with a bunch of dots. Turn off/on, and again red screen. Found similar problem on a reddit, their solution was to change a rom. Did it. Nothing changed. Changed a save fille to a different one, and game runs fine. The problem definetly in save file/ But beside adding Mystery gifts at the begining, i didn't do anything to a save file. The only thing that was changed recently (~1 year), i moved from twillight to a NDS forwarder, but after that, game still played fine. 4780 - Pokemon HeartGold (U)(Xenophobia).sav
-
Greetings again. So, couse it's seems that no one could understand what problem happend with my HeartGold save. Maybe there are some way to transfer progress to another save? Not talking about pokemons (PkHex will help with that), but with gyms and etc?
-
Hi all, I am a IT student and I am currently trying to reverse engineer the inner working of the Gen IV Distribution ROM. I already figured out the basics but... Right now, I am facing an issue with the way data is encrypted. I already know of tools such as WC4PCD or PokeGen, PokeHex... but I am trying to understand and create my own program to decrypt and reencrypt all by myself. So I am asking if any one here as any leads or straight up know what encryption algorithm is used. I obviously did some research but no luck yet. (Chat GPT told me to XOR the file but idk what key to use). Thanks in advance, and my apologies if I made any english mistake
-
Hello, I have a Pokemon Heartgold save file that pk hex says invalid file size i think it is corrupted is there any chance i could get my Pokemon back even an individual one the file is attached here so if anyone could help that would be amazing! Pokemon HeartGold .sav
-
Version 1.0.0
2303 downloads
This is Red's team since Gen 4 with perfect IVs and the same movements, abilities, and objects that trainer Red has. This is based on HeartGold/SoulSilver and you can use it in any main pokemon game since Gen 4. Tips: If in a 3DS or in a Nintendo Switch use Hombrew with caution. Warning: Do not use in any game before Gen 3. PKHeX credits to: PKHeX.exe- 1 comment
-
- 1
-
-
- sword and shield
- team
-
(and 3 more)
Tagged with:
-
1. I downloaded the TWLSaveTool .zip file and extracted it to the root of my microSD card. 2. I also downloaded the .cia file and left it in microSD/cias/TWLSaveTool.cia 3. I switched to my 2DS XL with pokemon dream radar installed. Then I launched homebrew but TWL save tool had an undecipherable caption and lauching it only loaded one line of text (see pictures provided.) After that. the only thing i can do is power off my 2DS which leads to the picture provided that starts with "An exception occurred." 4. Since homebrew didnt work, i tried installing the .cia file now using fbi first and then dev menu. I got the TWLSaveTool to appear on the home menu but launching it results in the scenario i mentioned; black screen with one line of text. WHAT AM I DOING WRONG? CHECK VIDEO PROVIDED AS WELL OF MY 3DS MICRO SD CARD. 20190513_203832.mp4
- 18 replies
-
- 1
-
-
- TWLSaveTool
- pokemon
-
(and 6 more)
Tagged with:
-
Infinite TMs in Gen IV --- Let me first preface this by saying that this was figured out by Mikelan98 (with some help from Nextworld and BagBoy to find some of the offsets in different languages). Mikelan98 has requested that you give credit to him if you implement this in your hack. This is simply a documentation so the information doesn't get lost - I didn't figure out any of this myself! This is for the American (U) versions of Platinum and Heart Gold / Soul Silver. Step 1: Extract the relevant files --- First we need to get the right files out of the ROM. For Platinum, you'll need the arm9.bin and the overlay_0084.bin files. For HG / SS, you'll need the decompressed arm9.bin and a decompressed overlay_0015.bin files. (Use the Extract(U) option in crystaltile2 to decompress.) Step 2: Edit the code to make the TM quantity not drop after use --- For Platinum, we want to make the following changes: * Search for "FE 00 28 07 D1 08 48" in the arm9.bin file. * Replace the "D1" with "E0" so that it now reads "FE 00 28 07 E0 08 48". For HG/SS, we want to make the following changes: * Search for "FD 00 28 07 D1 0A 48" in the decompressed arm9.bin file. * Replace the "D1" with "E0" so that it now reads "FD 00 28 07 E0 0A 48". Step 3: Edit the code to make the item quantity not appear for TMs in the bag --- For Platinum, we want to make the following changes: * Search for "FF F7 83 FF 04 B0" in the overlay_0084.bin file. * Replace the first four bytes with "00 00 00 00", so it should now read "00 00 00 00 04 B0". For HG/SS, we want to make the following changes: * Search for "81 42 53 D3" in the decompressed overlay_0015.bin file. * Replace the "D3" with E0 so that it now reads "81 42 53 E0". Step 4: Rebuild the ROM --- You'll need to reinsert the relevant files as needed. For HG/SS, you'll need to recompress them when adding them to the ROM by using the "Compression" option to import them back when using crystaltile2. After that, save and/or build your ROM, and you should find that TMs don't show a quantity anymore, and they also won't disappear after being used.
- 10 replies
-
- 3
-
-
- heartgold
- soulsilver
- (and 6 more)
-
Hello everyone. :) So, I'm fairly new still to the idea of ROM editing and tried asking around on reddit for an answer to my current predicament. So, I wanna do a HeartGold Nuzlocke series after a failed FireRed Nuzlocke that ended in, well... the death of my team (and story-wise for a laugh my trainer). I wanted to change the teams of both Blue and Red to be similar (with adjustments) to both Blue's team from FireRed with some changes to suit my brother's personality (named it after his name on Twitch) and Red's team to be the "dream team that could have been", which I was able to accomplish using PPRE. I also wanted to change the name of Blue and Red to my original trainer's name and his rival's name from FR, but with PPRE that doesn't seem possible - or at least with the version I have. Is there a way to find an older version or another program that lets me change trainer names available? Or is there another way to safely edit the names of trainers? Also, if, by some chance, there's a way to give a trainer's Pokemon nicknames without changing all instances of a Pokemon's name to said nickname, how could I do that - or would that require creating a separate, unobtainable version of the respective Pokemon? Thank you for your time.
-
Ive been replaying heartgold and ended up giving myself all tms and hms too early. Now im in Kanto and it broke a lot of story events and stuff. Does anyone have a save right after either the 8th gym in Johto or the elite 4 (before kanto) that isnt broken in the same way? Edit: one that also works with PkHex so i can get my team back
-
This is a very simple hack idea, where the trainer (you) is a Mewtwo, rather than a human trainer. All sprites dealing with the player (trainer card, in-battle back sprite, overworld sprites including bicycle and surfing sprites) are going to be changed over to those of the in-game Mewtwo sprites. The scripts will be changed over to reflect you being both a Pokemon and a trainer. Examples include "Aren't you a cute Pokemon--AND a trainer, besides! Let's battle!" and "I've never faced a trainer who is also a Pokemon. This should be fun!" Trainers will also have kinder words when defeated. Examples include "Wow! Despite being a Pokemon, you are certainly a skilled trainer!" and "Being a trainer who is also a Pokemon does have distinct advantages, doesn't it? Good job!" As a young Mewtwo, you are naturally very intelligent and also quite curious about EVERYTHING. You quickly learn all there is to learn at your home laboratory (your "mom" is actually the scientist who created you, but she's very nice toward you and nurtures your burgeoning adventurous spirit), and therefore are asked to seek further "education" by adventuring all over Johto and Kanto, in hopes of achieving your full potential. Of course, along the way, you'll meet Professor Elm, who will tell you "two Pokemon are better than one", and offer you a choice of three starter Pokemon (the same Chikorita, Cyndaquil and Totodile normally available), and he'll ask you to walk with them, rather than hold them in a Pokeball all the time. Naturally, you think this is the coolest thing ever--being able to help train a fellow Pokemon, and be able to TALK to them (yes, as a Mewtwo, you'll be able to understand what the other Pokemon are saying). UPDATE: I've already ported over two of Mewtwo's HG/SS walking sprites onto the player trainer's walking/standing sprites. I've even created additional sprites for the player's standing sprites (normally, your walking Pokemon is always moving, as if walking in place; therefore there are no actual standing sprites for it). Additional tweaks to the rom will include having the Fly command available from the start (and is one of your default moves), and also being able to access the PC system at any time (by pressing START). Yes, I know that Mewtwo isn't normally capable of learning Fly (or Teleport, for that matter? What gives? The guy's PSYCHIC!), but I will have him be able to do so to make navigating throughout the in-game world easier (and faster). Of course, you'll still have to actually walk to places you wish to fly to later (in a sense "adding" them to your Town Map).
-
Current version: 0.1.4 Lastest update: 19th December, 2015 Summary Pokémon Light Platinum is a GBA hack launched in 2011 by the ROM hacker WesleyFG. Due to its success -partly because it was one of the few that managed to be completely finished- and that, in recent years, the NDS hacking has gained much more capabilities, I am now remaking this hack in this platform for people who have not played the GBA version yet, and partly to encourage people to start in this new platform; begin to investigate further and explore it. Changes Although the plot, locations, characters and other features are almost the same, there are many changes (some small, some more noticeable) with respect to the original version: There are almost 450 Pokémon more than in the original version. All those that appeared in the GBA version will appear in this version, these new Pokémon come from the seven different generations. This leads to the Pokédex will be a little more difficult to complete, having a total of 807 Pokémon to capture from all generations. Due to these new Pokémon, now trainers have different Pokémon parties from the original game, and in the majority of cases, they will be much stronger. Similarly, the wild Pokémon will differ (although to a lesser extent) the original, with more variety in the different towns and routes and other ways to find wild Pokémon (such as honey trees, Headbutt, fishing...). Slight changes in the game's plot, although they are minor and the only reason they were made is to adapt the scripts to the capabilities of the base ROM. Fairy type inserted (with all its weaknesses and strengths). All Pokémon that in the sixth generation possess this kind, they will in the hack (Gardevoir, Sylveon...). In addition, the weaknesses and strengths of other types have also been updated to the sames they have in the sixth generation. Successfully introduced a new system of berries, that was lost in both original Light Platinum and HeartGold & SoulSilver. Now berry trees will be stationary on the different routes, and they will give one berry each day (at 00:00 everyday there are new berries on the trees which didn't have). The trees of all 64 different berries are hidden throughout the Zhery and Lauren regions, so you have to look very well to get them all. Other small changes, such as increasing the chance of finding a shiny Pokémon (from 1/8192 to 1/257), or changing the stats of some Pokémon that increase them in the sixth generation. Scans They will be updated every so often. Credits and thanks :: Nex, Peyi, Kyledove, Zelda, GSC platinum, Alistair, Saurav, Shiny Lugia, Dewity, WesleyFG for all the tiles and graphics (both original game and this remake) :: WesleyFG for letting me remake his hack :: Spiky because I would never have achieved any of this without his help :: Rafa/Klein for always being there supporting me and being a good friend :: Trifindo because he was one of the few brave who dared with NDS hacking :: WaH, Hoko, NHD and PFG because due to these sites I am today the ROM hacker I am :: The music I listen to while I'm ROM hacking, because whatever happens, LODVG, Mecano, Amaral or ABBA will be with me forever Bugs, errors and possible changes The textures of the maps, and the game generally, works quite poorly in No$GBA. This emulator is not suitable to load homebrew or hack-ROMs, so if you're using an emulator to play the hack, please, use DeSmuME. Some flashcards give problems with the game, although they are only a minority. I'm still researching why it may be happening. As in the original HeartGold and SoulSilver, the game may freeze every so often or give graphical errors when entering a map. In the latter case, just open the Pokémon menu or the Pokédex and close it to fix the error. Neither the minisprite of the female character is changed, or the texts are adapted to differentiate between male or female. Please, select the male hero for the moment. If you pay attention, in some random points on the map you will be able to hear sea waves. This is something that, for now, is beyond my knowledge and I have no idea how to solve it, but I hope to be able to fix it in the future. Changelog Version 0.2.0 - TBA - Added all of 807 existing Pokémon in the ROM (first expansion of Pokedex). - Every map, script and event finished beyond the fourth Badge. - Revised wild Pokémon in previous routes. - Modified most of previous trainers. - Two-thirds of the Safari Zone are now accesible. - Fixed lot of bugs that were in the previous version. - Incompatibility with savegames from older versions. Version 0.1.5 - Private developer version, not officially published. Version 0.1.4 - 19th December 2015 - Xmax special version. - Snowy maps along the region. - New wild Pokémon adapted for the new cold weather. - First Mystery Gift developed so far. Version 0.1.3 - 22nd November 2015 - New title screen for the game. - Added the version number in the title screen. - Finished Route 406 with all of its scripts and events. - Fixed lot of bugs that were in the previous version. - Corrected some grammar mistakes in the English version. Version 0.1.2 - 5th November 2015 - English version of the game, added some little things and the Esmerald City easter egg. Version 0.1.1 - 26th August 2015 - Inserted Pantem Town and Route 406 maps. - Fixed lots of bugs that were in the previous version. - Scripts and trainers of Route 405 are finished (now you can wake Snorlax up). Version 0.1.0 - 17th July 2015 - Version for testing and recording gameplay, filtered and with some bugs and errors. Download You can download the game and check out all new updates in the official page: http://goo.gl/RLR5H9
-
So, I was wondering why in HGSS, Chuck's Medicham (at 141 HP) would ALWAYS OHKOes himself after missing Hi Jump Kick against a Lv.100 Giratina (who at the absolute worse, still has 410 HP), it didn't match with the currently known Gen 4 mechanics of (Hi) Jump Kick. After scratching my head good, I decided to test thoroughly what was that, and here are my results: What is currently known: If a Pokémon misses Jump Kick or Hi Jump Kick, no matter the reason, it will take crash damage equal to half the damage that would have been dealt, rounded down. If the Pokémon is supposed to take crash damage but the result is 0, then make the result 1. What is not known: If a Pokémon misses Jump Kick or Hi Jump Kick against a Ghost-typed target, it will take crash damage equal to half the target's Max HP instead, regardless of: the difference of level between the user and the target, the target having Wonder Guard, the target using Protect/Detect, the target being in the semi-invulnerable turn of a 2-turns move BUT If the Pokémon who missed Jump Kick or Hi Jump Kick against a Ghost-typed target happens to have the ability Scrappy and/or has used Foresight/Odor Sleuth beforehand, the game will instead perform, according to the assembly, a comparison between half the damage that would have been dealt (Variable 1) and half the max HP of the Ghost-typed target (Variable 2). If Variable 2 is greater than or equal to Variable 1, the game will choose Variable 1, else it will choose Variable 2. If the Pokémon is supposed to take crash damage but the result is 0, then make the result 1.
-
Maybe this was already known but I couldn't find anything about it on the Internet, so here I go. I think I may have found something weird about how the Counter / Mirror Coat / Metal Burst trio behaves against damage-reducing berries (including the Chilan Berry). Note that this behavior is for Gen IV only (Gen V onwards it behaves like one would expect it to.) What is already known: Counter sends back to the attacker 200% of the damage taken by a physical attack, and fails against special attacks and Ghost-type Pokémon. Mirror Coat sends back to the attacker 200% of the damage taken by a special attack, and fails against physical attacks and Dark-type Pokémon. Metal Burst sends back to the attacker 150% of the damage taken by an offensive move, provided the attacker was faster this turn. What I accidentally stumbled upon: Damage-reducing berries, when activated, doesn't touch the actual damage value (like it does with Focus Sash for example), rather it seems that the calculation for halving the damage is done separately from the actual damage value read by the game. Hence for example if a move was supposed to deal 200 HP damage, the berry will activate and will deal instead 100 HP damage (rounded down), but the game doesn't update the damage value (it still reads it as -200). Thus if a damage-reducing berry was activated this turn and the user happens to use one of the "Sends back to attacker" move, it will deal 200% damage (150% damage if Metal Burst) of the value stored in-game instead of the actual damage dealt. That is in this example, Counter/Mirror Coat (Metal Burst) would deal 400 HP (300 HP) damage and not 200 HP (150 HP) like one would expect! If this was already known, I'm sorry and you can slap me a thousand times.
-
SCREENSHOTS: The project want to: 1) Fix correctly the 3 important items that are RAGE CANDY BAR, SLOWPOKé TAIL and BERSERK GENE, and put them in the right places. 2) Add the function to delete the pokégear numbers 3) Fix the places that have wrong musics respect the original Gold and Silver games (MT MOON for example in the remake have the music of JOHTO dungeon and not is right) 4) Fix the Game corner, with the right buildings, pepole and the function for buy coins. Restore also the COIN CASE in the Goldenrod Undergrounds. Move the fake Game corner into a new building. 5) Fix other censored texts. 6) Fix the Move tutors that will ask you shards instead of battle points. 7) Fix the obligation to battle with the legendary before the pokémon league. 8) Fix the obligation to have the first pokémon out from it's ball when you walk I have already done: Point 3, 4 (partially) 5 and I've found the script that come back a pokémon into it's ball. But maybe I need of a way to create a key item that switch a pokémon out from it's battle or inside. The point (4) it's partially because I've restored the COIN CASE, I've restored the original buildings of KANTO and JOHTO game corners, and moved the fake corner into a new building for maintain the Voltorb flip, but I don't know how copy the original slots from the uncensored japaneese rom of Soul Silver. I need of a way to: Restore the missing ITEMS (i've started an help thread for this: http://projectpokemon.org/forums/showthread.php?46137-Item-hacking-SS-HG) and put them into the 2 Mahogany markets Add the slot machines from the japaneese version without delete the Voltorb Flip, in the original Gold and Silver for the Game boy the games in the Game Corner we're 2, half game corner's machines play slots and the second half the cards game, with a little script I can ask 3 coins for play the Voltorb flip, only in the new building of the fake corner Voltorb flip will remain free, then will be a game corner better of the japaneese version of HG/SS. Add the function for delete the pokégear number. I know only the script string that add a number: Recordpokegearnumber 0x25 actually add Morty's number. If I knew the string that delete the number I could add a multichoice dialog for every trainer, that will ask you if you want to delete their numbers.
-
research Weird Script I Found in HeartGold
MichiS97 posted a topic in ROM - NDS Research and Development
Hey I was going through some scripts in my HeartGold ROM with PPRE yesterday when I found something quite interesting. When you open the map editor and open the map "Burned Tower R1-02" there's three scripts. The first one just checks a flag and the second one triggers Raikou and Entei to roam, the third one, however, is quite interesting. This is its code: Fanfare 1500 Lockall Faceplayer Cryfr 245 0 Waitcry Setflag 164 [b]WildBattle2 245 40 0 [/b] Clearflag 164 CheckTrainerLost 0x800c If 0x800c 0 CheckLR 1 func_4 StoreEmbStatus? 0x4002 If 0x4002 3 CheckLR 1 func_5 If 0x4002 4 CheckLR1 1 func_6 Releaseall End As you can see in the bold part, it uses the command WildBattle2 245 40 0. Now 245 is the number for Suicune in the Pokedex. Does that mean it was originally planned for Suicune to be catchable right in the Burned Tower like in Crystal? Interestingly enough, the flag 164 that it sets before and clears after the battle is the one that is also checked in the first script. As I said, I have only started to look into this yesterday so I don't have much knowledge about scripting in general (it's very hard to even find information about scripting for the fourth generation) but I guess my assumption is right? Well the command clearly triggers a battle with Suicune, that's for sure. Is there a way that we can find out the means to trigger this script in the game? Lastly I want to say that I'm sorry if this is an already well-known fact but a quick google search before posting this didn't bring up any results. I'd like to have your opinion on this. For reference, the ROM I looked into was the US version of HeartGold and I can guarantee that it was not modified in any way. I do not know if that script is also present in SoulSilver, might have to look into that. -
Welcome to the World of Pokemon Solaris! EDIT: Has been Changed to Heart Gold. The Basics Pokemon Solaris is a HeartGold hack that takes place ~15 years after Pokemon FireRed. Since the time of Red's adventure, many changes have come to the Kanto region. They've opened trade and travelling with Hoenn and recently reopened trade with Johto, allowing trainers to go from Kanto, to Johto, to Hoenn. With the new regions, Kanto has been brought to new heights. New Pokemon, New Abilities, and even two new Typings have been brought to the Kanto region! Story You are the adopted child of Pokemon Champions, Red and Brendan. You originally hail from Johto, being adopted by the Celebrity Husbands after two years of grueling paperwork on their part, and many teary eyes and temper tantrums from you. Eleven Years Later, you just celebrated your 15th birthday, and with that, you're finally receiving your starter Pokemon after five years of intense arguments in sign language. Yet as you prepare for your adventures, others are preparing for domination... Enter Team Lunae. This Team is a mixture of Team Rocket and ISIS, using terrorism and brutal methods to get their points across. They're not above stealing Pokemon or killing, as long as they make it clear that they own the Kanto region, and soon the entire world. Upon the time you started your journey, this Team has began getting their methods out there. Your Fathers are begging for you to come home, so you can have all the protection you could need in Uncle Gary, Red, and Brendan. Until Red goes missing, and all of Kanto are on the ready to find their Champion. Planned Features All Pokemon up until Gen III Visiting to Kanto, Johto, and Hoenn New Abilities New Typings New Fakemon Current Production Map Editing Text Editing Type Matchup Editing/Move Editing Pokemon Editing How YOU Can Help! Simply put, just volunteer, please! I would love to have a team of people to work with this on, since I'm new to the scene and there's many things I have trouble with, such as HeX editing and other things. I mostly rely on tools, but I would really, really like it if you guys would want to pitch in and help me. Shoot me a message either here, or on my Skype. Thanks in advance!
-
research HG/SS Mapping File Specifications
Hiro TDK posted a topic in ROM - NDS Research and Development
Map Files - located at /a/0/6/5 - contains 5 sections #1 Section - Header - section is 20 bytes Offset Length Name Description 0x0 0x4 Movement Permission Size The size of the Movement Permissions in Section #3. Always 0x800. 0x4 0x4 3D Object Size The size of the 3D Objects defined in Section #4. 0x8 0x4 NSBMD Model Size The size of the embedded Model (NSBMD) file in Section #5. 0xC 0x4 BDHC Size The size of the embedded Terrain (BDHC) file in Section #6. 0x10 0x4 Unknown Section Size The size of the section of unknown data in Section #2. #2 Section - Unknown Data - data in this section serves a currently unknown function - data is unique to HG/SS and theorized to be Pokemon size permissions Offset Length Name Description 0x0 . #3 Section - Movement Permissions - data is always 2048 bytes, two bytes for each tile, and all maps are 32x32 tiles - tile data is ordered from left to right, bottom to top Offset Length Name Description 0x0 0x1 Special Permission Allows for special permissions. A rather incomplete list can be found in the Appendix. 0x1 0x1 Movement Permission Three valid values: 0x0 No Restriction, 0x4 No Special Permissions (Ignore First Byte), 0x8 Solid/No Movement #4 Section - 3D Objects - section is 48 bytes per object defined - 3D Objects Size in Section #1 will be the total size of this section in bytes Offset Length Name Description 0x0 0x4 Object ID Number A complete list of Object ID numbers can be found in the Appendix. 0x4 0x2 Y Fractional Variable allowing fractional Y-axis positioning. (Defaults to 00 00.) 0x6 0x2 Y Coordinate Position of the object on the Y-axis. 0x8 0x2 Z Fractional Variable allowing fractional Z-axis positioning. (Defaults to 00 00.) 0xA 0x2 Z Coordinate Position of the object on the Z-axis. 0xC 0x2 X Fractional Variable allowing fractional X-axis positioning. (Defaults to 00 00.) 0xE 0x2 X Coordinate Position of the object on the X-axis. 0x10 0xC ???? This section serves a currently unknown function. 0x1D 0x4 Width The size of the object on the Y-axis. 0x21 0x4 Height The size of the object on the Z-axis. 0x25 0x4 Length The size of the object on X-axis. 0x29 0x7 ???? This section serves a currently unknown function. #5 Section - NSBMD Model - NSBMD Model Size in Section #1 will be the total size of this section in bytes - this is the 3D model of the map itself - NSBMD model specifications aren't listed here. #6 Section - Terrain (BDHC) - BDHC Size in Section #1 will be the total size of this section in bytes - BDHC file specifications are detailed here. Terrain Files (BDHC) Credit and thanks goes to Mikelan98 for finally cracking these files. This section will have a ton of notes, as the format is very complex. Refer to Mikelan98's guide for help. - located at the end of map files, found at /a/0/6/ - contains 7 sections #1 Section - Header Data Offset Length Name Description 0x0 0x4 Magic ID #BDHC (0x42444843) 0x4 0x2 Points Size The number of points defined in Section #2. 0x6 0x2 Inclines Size The number of inclines defined in Section #3. 0x8 0x2 Heights Size The number of heigths defined in Section #4. 0xA 0x2 Plates Size The number of plates defined in Section #5. 0xC 0x2 Strips Size The number of strips defined in Section #6. 0xE 0x2 Access Lists Size The number of access lists defined in Section #7. #2 Section - Points - section length will be 8 bytes multiplied by Points Size from Section #1 - each 8 bytes follows the format below Offset Length Name Description 0x0 0x4 Padding Color 0x4 0x4 X Coordinate X Coordinate for first point. (Little Endian) 0x8 0x4 Padding 0xC 0x4 Y Coordinate Y Coordinate for first point. (Little Endian) Notes: - These coordinates define points on the map. - Maps are always 32x32 tiles. - Coordinates are defined from the center of the map. - The coordinates for the center four tiles are: - Northwest: 00 00 FF FF, 00 00 FF FF - Northeast: 00 00 00 00, 00 00 FF FF - Southwest: 00 00 FF FF, 00 00 00 00 - Southeast: 00 00 00 00, 00 00 00 00 - Coordinates south and east will increase. Coordinates north and west will decrease. - The coordinates of the outside corners are: - Northwest: 00 00 F0 FF, 00 00 F0 FF - Northeast: 00 00 10 00, 00 00 F0 FF - Southwest: 00 00 F0 FF, 00 00 10 00 - Southeast: 00 00 10 00, 00 00 10 00 #3 Section - Inclines - section length will be 12 bytes multiplied by Inclines Size from Section #1 - each 12 bytes specifies a type of incline Offset Length Name Description 0x0 0x12 Incline Type Specifies a type of incline. Notes: - It is assumed that the 12 bytes define coordinates in some way. - Because it is not fully understood, here is a list of known inclines: - Flat Plate: 00 00 00 00 00 10 00 00 00 00 00 00 - North Stairs: 00 00 00 00 50 0B 00 00 50 0B 00 00 - East Stairs: B0 F4 FF FF 50 0B 00 00 00 00 00 00 - West Stairs: 50 0B 00 00 50 0B 00 00 00 00 00 00 #4 Section - Heights - section length will be 4 bytes multiplied by Inclines Size from Section #1 - each 4 bytes specifies a height Offset Length Name Description 0x0 0x2 Fractional Z Coordinate Variable allowing fractional Z-axis positioning. Defaults to 00 00 (Little Endian) 0x2 0x2 Z Coordinate Vertical positioning coordinate. Defaults to 00 00. (Little Endian) Notes: - Up on the Z-axis subtracts, while down on the Z-axis adds. - Fractional coordinates are divided by -65536, e.g., 00 80 = 32768/-65536, or -0.5. - Add both variables for final height, e.g., 00 80 FF FF = -0.5 + 1 = +0.5 Formulas: In the Spanish version of the tutorial Mikelan98 wrote, he posted some formulas for determining the heights you need to define in this section when dealing with specific types of slopes. They also allow one to figure out how to make formulas for other types of slopes. Here, I'll translate them. - Northward Stairs: Height = 0xB505 * (-(y)-(h)) - Westward Stairs: Height = 0xB505 * (x-h) - Eastward Stairs: Height = 0xB505 * (x-h+1) - Where: - x = the position of the stairs on the X-axis, unless the tile is more than one tile long, in which case you would use the tile that is lower on the Z-axis - y = the position of the stairs on the Y-axis - h = the height of the bottom of the stairs + 1 #5 Section - Plates - section length will be 8 bytes multiplied by Plates Size from Section #1 - each 8 bytes section builds a plate using definitions from the previous three sections Offset Length Name Description 0x0 0x1 First Point Index The index of the Point used for the northwesternmost corner of the plate. 0x1 0x1 Padding Color 0x2 0x1 Second Point Index The index of the Point used for the southeasternmost corner of the plate. 0x3 0x1 Padding 0x4 0x1 Incline Index The index of the Incline used for this plate.. 0x5 0x1 Padding 0x6 0x1 Height Index The index of the Height used for this plate. 0x7 0x1 Padding Notes: - The indexes for these are simply the order in which each previous section was defined. - For Points, if you're using the first two Points to construct a plate, you would use 00 & 01. - This creates a rectangular plate between the coordinates defined, with the defined inclination and height. #6 Section - Strips - section length will be 8 bytes multiplied by Strips Size from Section #1 - each 8 bytes section builds a plate using definitions from the previous three sections Offset Length Name Description 0x0 0x2 Padding Color 0x2 0x2 Lower Bound The southernmost tile of the strip. (Little Endian) 0x4 0x2 List Elements The number of list elements from Section #7 to use. (Little Endian) 0x6 0x2 List Start The index of the first list element from Section #7 to use. (Little Endian) Notes: - The first Strip begins at the northenrmost horizontal "strip" and ends at the first defined Lower bound. - The second Strip begins at the next tile south of the first Lower Bound and ends at the second defined Lower Bound. - The List Start index works the same as the indexes in Section #5. - List Elements counts elements including List Start. - More information is noted after Section #7 - Access List. #7 Section - Access List - section length will be 2 bytes multiplied by Strips Size from Section #1 - each 2 bytes is a list entry Offset Length Name Description 0x0 0x2 Plate Index The index number of a plate from Section #4. Notes: - The Plate index number references Plates in the order they're defined, the same as in previous sections. - The Plates in this list are referenced in the section above, and they're accessed, once again, by index number. - The Plates are ordered in groups, and individual plates generally appear multiple times. - The Plates in this section that are referenced in the previous section, are plates that can be accessed from that strip. - More information and visuals can be found in Mikelan98's guide. -
research HG/SS Pokemon File Specifications
Hiro TDK posted a topic in ROM - NDS Research and Development
Personal Files - files located at /a/0/0/2 - file contains 4 sections #1 Section - General Data - section is 10 bytes Offset Length Name Description 0x0 0x1 Base HP 0x1 0x1 Base Attack 0x2 0x1 Base Defense 0x3 0x1 Base Speed 0x4 0x1 Base Special Attack 0x5 0x1 Base Special Defense 0x6 0x1 Type 1 0x7 0x1 Type 2 If monotype, this will be the same as Type 1. 0x8 0x1 Catch Rate 0x9 0x1 Base Experience The base amount of experience gained by defeating this Pokemon. #2 Section - Effort Values - section is 2 bytes Offset Length Name Description 0 2 Bits HP 2 2 Bits Speed 4 2 Bits Attack 6 2 Bits Defense 8 2 Bits Special Attack 10 2 bits Special Defense 12 4 Bits Padding #3 Section - General Data (Continued) - section is 14 bytes Offset Length Name Description 0x0 0x2 Held Item (50%) Uncommon held item for wild encounters. 0x2 0x2 Held Item (5%) Rare held item for wild encounters. 0x4 0x1 Gender Ratio Out of 255, this is the approximate number of females you'd encounter 0x5 0x1 Hatch Multiplier This number multiplied by 256 gives you the base number of steps required to hatch an egg. 0x6 0x1 Base Happiness 0x7 0x1 Experience Rate One of six values with preset growth rates. 0x8 0x1 Egg Group 1 0x9 0x1 Egg Group 2 If no second egg group, this will be the same as Egg Group 1. 0xA 0x1 Ability 1 0xB 0x1 Ability 2 Left blank if there's no second ability. 0xC 0x1 Run Chance Used strictly for Safari Zone encounters. 0xD 0x1 Color This is for Pokedex colors. #4 Section - TM's List - This section is 128 bits. - The first 92 bits refer to TMs, the next 8 to HMs, and the last 28 are padding. - If the bit is 1, that TM can be learned by this Pokemon. If it is 0, it cannot. Learnset Files - files located at /a/0/3/3 - file contains 2 sections #1 Section - Learnset - section is 2 bytes for every Move in the Pokemon's learnset - possible limit of 40 bytes, or 20 moves Offset Length Name Description 0 9 Bits Move ID 9 7 Bits Level Learned #2 Section - File End - section is 4 bytes Offset Length Name Description 0x0 0x2 Delimiter Tells the game where to stop reading. Always 0xFFFF. 0x2 0x2 Padding Evolution Files Back To Pokemon ▲ - files located at /a/0/3/4 - file contains 2 sections #1 Section - Evolutions - section is 6 bytes for every evolution method - possible limit of 7 evolutions, or 42 bytes - possible that all 42 bytes are required, and 0x0 if unused Offset Length Name Description 0x0 0x1 Evolution Method One of 26 evolutions methods. 0x1 0x1 Padding 0x2 0x2 Requirement Number This is the level required or the index of the Pokemon, item, etc. required for the evolution method. 0x0 if not needed. 0x1 0x1 Evolved ID This is the index mumber of the Pokemon to evolve into. #2 Section - File End Offset Length Name Description 0x0 0x2 Padding Growth Table Files Back To Pokemon ▲ - files located at /a/0/0/3 - file contains 1 section #1 Section - Growth Table - section is 4 bytes for each level, starting with Level 0 - total size is 404 bytes Offset Length Name Description 0x0 0x4 Experience Requirement Experience required to reach this level. Baby Form Table File - files located at /a/poketool/personal/pms.narc - file contains 1 section - special babies are defined in code in the overlays #1 Section - Baby Form Table - section is 2 bytes for each Pokemon, including alternate forms - total size is 1016 - starts with index 0, making Bulbasaur the second short Offset Length Name Description 0x0 0x2 Baby Index Number This is the index number of the default baby produced from breeding. Move Tutor Table File - files located at /fielddata/wazaoshie/waza_oshie.bin - file contains 1 section - does not include Dragon or starter tutors #1 Section - Move Tutor Table - section is 8 bytes for each Pokemon, including alternate forms - total size is 4040 - starts with index 1, making Bulbasaur the first entry Offset Length Name Description 0x0 0x1 Moves 1-8 (Bitfield) This bitfield is for moves 1-8, moving from least to most significant. 0x1 0x1 Moves 9-16 (Bitfield) This bitfield is for moves 9-16. 0x2 0x1 Moves 17-24 (Bitfield) This bitfield is for moves 17-24. 0x3 0x1 Moves 25-32 (Bitfield) This bitfield is for moves 25-32. 0x4 0x1 Moves 33-40 (Bitfield) This bitfield is for moves 33-40. 0x5 0x1 Moves 41-48 (Bitfield) This bitfield is for moves 41-48. 0x6 0x1 Moves 49-52 (Bitfield) This bitfield is for moves 49-52, with 4 bits of padding. Move Tutor Table - table is in Overlay 001 at 0x23AE0 - does not include Dragon or starter tutors - full table reference in the Appendix #1 Section - Move Tutor Table - section is 4 bytes for each entry, with 52 entries - total size is 208 - changing the values is possible, expanding the table is currently not known Offset Length Name Description 0x0 0x2 Move ID This is the ID number for the entry. 0x2 0x1 BP Cost This is the BP Cost for the entry, 0 if unapplicable. 0x3 0x1 Tutor ID This is the ID of the tutor for the entry. -
research HG/SS Encounter File Specification
Hiro TDK posted a topic in ROM - NDS Research and Development
Field Encounters - located at /a/0/3/7 for HeartGold and /a/1/3/6 for SoulSilver - contains 12 sections #1 Section - Encounter Rates Offset Length Name Description 0x0 0x1 Field Rate Encounter rate in tall grass or walking. 0x1 0x1 Surfing Rate Encounter rate while surfing. 0x2 0x1 Rock Smash Rate Encounter rate when using Rock Smash. 0x3 0x1 Old Rod Rate Encounter rate when using the Rod. 0x4 0x1 Good Rod Rate Encounter rate when using the Good Rod. 0x5 0x1 Super Rod Rate Encounter rate when using the Super Rod. 0x6 0x2 Padding Color #2 Section - Field Encounter Levels 0x0 0x1 Slot 1 Level Level of the Pokemon encountered in Slot 1. 0x1 0x1 Slot 2 Level 0x2 0x1 Slot 3 Level 0x3 0x1 Slot 4 Level 0x4 0x1 Slot 5 Level 0x5 0x1 Slot 6 Level 0x6 0x1 Slot 7 Level 0x7 0x1 Slot 8 Level 0x8 0x1 Slot 9 Level 0x9 0x1 Slot 10 Level 0xA 0x1 Slot 11 Level 0xB 0x1 Slot 12 Level #3 Section - Field Encounter Pokemon (Morning) 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x2 Slot 2 Pokemon 0x4 0x2 Slot 3 Pokemon 0x6 0x2 Slot 4 Pokemon 0x8 0x2 Slot 5 Pokemon 0xA 0x2 Slot 6 Pokemon 0xC 0x2 Slot 7 Pokemon 0xE 0x2 Slot 8 Pokemon 0x10 0x2 Slot 9 Pokemon 0x12 0x2 Slot 10 Pokemon 0x14 0x2 Slot 11 Pokemon 0x16 0x2 Slot 12 Pokemon #4 Section - Field Encounter Pokemon (Daytime) 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x2 Slot 2 Pokemon 0x4 0x2 Slot 3 Pokemon 0x6 0x2 Slot 4 Pokemon 0x8 0x2 Slot 5 Pokemon 0xA 0x2 Slot 6 Pokemon 0xC 0x2 Slot 7 Pokemon 0xE 0x2 Slot 8 Pokemon 0x10 0x2 Slot 9 Pokemon 0x12 0x2 Slot 10 Pokemon 0x14 0x2 Slot 11 Pokemon 0x16 0x2 Slot 12 Pokemon #5 Section - Field Encounter Pokemon (Evening) 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x2 Slot 2 Pokemon 0x4 0x2 Slot 3 Pokemon 0x6 0x2 Slot 4 Pokemon 0x8 0x2 Slot 5 Pokemon 0xA 0x2 Slot 6 Pokemon 0xC 0x2 Slot 7 Pokemon 0xE 0x2 Slot 8 Pokemon 0x10 0x2 Slot 9 Pokemon 0x12 0x2 Slot 10 Pokemon 0x14 0x2 Slot 11 Pokemon 0x16 0x2 Slot 12 Pokemon #6 Section - Hoenn/Sinnoh Noise Encounters Offset Length Name Description 0x0 0x2 Hoenn Slot 1 Hoenn Slot 1 Pokemon index number. (Little Endian) 0x2 0x2 Hoenn Slot 2 0x4 0x2 Sinnoh Slot 1 Sinnoh Slot 1 Pokemon index number. (Little Endian) 0x6 0x2 Sinnoh Slot 2 #7 Section - Surfing Encounters Offset Length Name Description 0x0 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x1 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x2 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x4 0x1 Minimum Level Slot 2 0x5 0x1 Maximum Level Slot 2 0x6 0x2 Pokemon Slot 2 0x8 0x1 Minimum Level Slot 3 0x9 0x1 Maximum Level Slot 3 0xA 0x2 Pokemon Slot 3 0xC 0x1 Minimum Level Slot 4 0xD 0x1 Maximum Level Slot 4 0xE 0x2 Pokemon Slot 4 0x10 0x1 Minimum Level Slot 5 0x11 0x1 Maximum Level Slot 5 0x12 0x2 Pokemon Slot 5 #8 Section - Rock Smash Encounters Offset Length Name Description 0x0 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x3 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x4 0x2 Pokemon Slot 2 0x6 0x1 Minimum Level Slot 2 0x7 0x1 Maximum Level Slot 2 #9 Section - Old Rod Encounters Offset Length Name Description 0x0 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x1 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x2 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x4 0x1 Minimum Level Slot 2 0x5 0x1 Maximum Level Slot 2 0x6 0x2 Pokemon Slot 2 0x8 0x1 Minimum Level Slot 3 0x9 0x1 Maximum Level Slot 3 0xA 0x2 Pokemon Slot 3 0xC 0x1 Minimum Level Slot 4 0xD 0x1 Maximum Level Slot 4 0xE 0x2 Pokemon Slot 4 0x10 0x1 Minimum Level Slot 5 0x11 0x1 Maximum Level Slot 5 0x12 0x2 Pokemon Slot 5 #10 Section - Good Rod Encounters Offset Length Name Description 0x0 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x1 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x2 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x4 0x1 Minimum Level Slot 2 0x5 0x1 Maximum Level Slot 2 0x6 0x2 Pokemon Slot 2 0x8 0x1 Minimum Level Slot 3 0x9 0x1 Maximum Level Slot 3 0xA 0x2 Pokemon Slot 3 0xC 0x1 Minimum Level Slot 4 0xD 0x1 Maximum Level Slot 4 0xE 0x2 Pokemon Slot 4 0x10 0x1 Minimum Level Slot 5 0x11 0x1 Maximum Level Slot 5 0x12 0x2 Pokemon Slot 5 #11 Section - Super Rod Encounters Offset Length Name Description 0x0 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x1 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x2 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x4 0x1 Minimum Level Slot 2 0x5 0x1 Maximum Level Slot 2 0x6 0x2 Pokemon Slot 2 0x8 0x1 Minimum Level Slot 3 0x9 0x1 Maximum Level Slot 3 0xA 0x2 Pokemon Slot 3 0xC 0x1 Minimum Level Slot 4 0xD 0x1 Maximum Level Slot 4 0xE 0x2 Pokemon Slot 4 0x10 0x1 Minimum Level Slot 5 0x11 0x1 Maximum Level Slot 5 0x12 0x2 Pokemon Slot 5 #12 Section - Swarm Encounters Offset Length Name Description 0x0 0x2 Field Swarm Field Swarm Pokemon index number. (Little Endian) 0x2 0x2 Surfing Swarm Surfing Swarm Pokemon index number. (Little Endian) 0x4 0x2 Good Rod Swarm Good Rod Swarm Pokemon index number. (Little Endian) 0x6 0x2 Super Rod Swarm Super Rod Swarm Pokemon index number. (Little Endian) Headbutt Encounters - located at /a/2/5/3 for HeartGold and /a/2/5/2 for SoulSilver - contains 5 sections #1 Section - Tree Allocation Offset Length Name Description 0x0 0x1 Headbutt Trees Number of trees defined in section #4. 0x1 0x1 Padding 0x2 0x1 Special Trees Number of trees defined in section #5. 0x3 0x1 Padding #2 Section - Normal Headbutt Encounters Offset Length Name Description 0x0 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x3 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x4 0x2 Pokemon Slot 2 0x6 0x1 Minimum Level Slot 2 0x7 0x1 Maximum Level Slot 2 0x8 0x2 Pokemon Slot 3 0xA 0x1 Minimum Level Slot 3 0xB 0x1 Maximum Level Slot 3 0xC 0x2 Pokemon Slot 4 0xE 0x1 Minimum Level Slot 4 0xF 0x1 Maximum Level Slot 4 0x10 0x2 Pokemon Slot 5 0x12 0x1 Minimum Level Slot 5 0x13 0x1 Maximum Level Slot 5 0x14 0x2 Pokemon Slot 6 0x16 0x1 Minimum Level Slot 6 0x17 0x1 Maximum Level Slot 6 0x18 0x2 Pokemon Slot 7 0x1A 0x1 Minimum Level Slot 7 0x1B 0x1 Maximum Level Slot 7 0x1C 0x2 Pokemon Slot 8 0x1E 0x1 Minimum Level Slot 8 0x1F 0x1 Maximum Level Slot 8 0x20 0x2 Pokemon Slot 9 0x22 0x1 Minimum Level Slot 9 0x23 0x1 Maximum Level Slot 9 0x24 0x2 Pokemon Slot 10 0x26 0x1 Minimum Level Slot 10 0x27 0x1 Maximum Level Slot 10 0x28 0x2 Pokemon Slot 11 0x2A 0x1 Minimum Level Slot 11 0x2B 0x1 Maximum Level Slot 11 0x2C 0x2 Pokemon Slot 12 0x2E 0x1 Minimum Level Slot 12 0x2F 0x1 Maximum Level Slot 12 #3 Section - Special Headbutt Encounters Offset Length Name Description 0x0 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x3 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x4 0x2 Pokemon Slot 2 0x6 0x1 Minimum Level Slot 2 0x7 0x1 Maximum Level Slot 2 0x8 0x2 Pokemon Slot 3 0xA 0x1 Minimum Level Slot 3 0xB 0x1 Maximum Level Slot 3 0xC 0x2 Pokemon Slot 4 0xE 0x1 Minimum Level Slot 4 0xF 0x1 Maximum Level Slot 4 0x10 0x2 Pokemon Slot 5 0x12 0x1 Minimum Level Slot 5 0x13 0x1 Maximum Level Slot 5 0x14 0x2 Pokemon Slot 6 0x16 0x1 Minimum Level Slot 6 0x17 0x1 Maximum Level Slot 6 #4 Section - Normal Tree Definitions - section is repeated (x-1) times - x is equal to Headbutt Trees in Section #1 - each repetition represents a singular "tree" - each section is six sets of coordinates - unused coordinates are always 0xFFFFFFFF Offset Length Name Description 0x0 0x2 X1 Coordinate X map coordinate of first tile in the "tree". (Little Endian) 0x2 0x2 Y1 Coordinate Y map coordinate of first tile in the "tree". (Little Endian) 0x4 0x2 X2 Coordinate 0x6 0x2 Y2 Coordinate 0x8 0x2 X3 Coordinate 0xA 0x2 Y3 Coordinate 0xC 0x2 X4 Coordinate 0xE 0x2 Y4 Coordinate 0x10 0x2 X5 Coordinate 0x12 0x2 Y5 Coordinate 0x14 0x2 X6 Coordinate 0x16 0x2 Y6 Coordinate #5 Section - Special Tree Definitions - section is repeated (x-1) times - x is equal to Special Trees in Section #1 - follows same rules as Section #4 Offset Length Name Description 0x0 0x2 X1 Coordinate X map coordinate of first tile in the "tree". (Little Endian) 0x2 0x2 Y1 Coordinate Y map coordinate of first tile in the "tree". (Little Endian) 0x4 0x2 X2 Coordinate 0x6 0x2 Y2 Coordinate 0x8 0x2 X3 Coordinate 0xA 0x2 Y3 Coordinate 0xC 0x2 X4 Coordinate 0xE 0x2 Y4 Coordinate 0x10 0x2 X5 Coordinate 0x12 0x2 Y5 Coordinate 0x14 0x2 X6 Coordinate 0x16 0x2 Y6 Coordinate Safari Zone Encounters - located at /a/2/3/0 - contains 16 sections #1 Section - Object Arrangement Allocation Offset Length Name Description 0x0 0x1 Tall Grass Encounters The number of tall grass encounter slots for Object Arrangement. 0x1 0x1 Surfing Encounters The number of surfing encounter slots for Object Arrangement. 0x2 0x1 Old Rod Encounters The number of Old Rod encounter slots for Object Arrangement. 0x3 0x1 Good Rod Encounters The number of Good Rod encounter slots for Object Arrangement. 0x4 0x1 Super Rod Encounters The number of Super Rod encounter slots for Object Arrangement. 0x5 0x3 Padding Always 0x0 #2 Section - Tall Grass Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #3 Section - Tall Grass Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Tall Grass Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Tall Grass Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #4 Section - Object Arrangement Requirements (Tall Grass) - section is equal to 1/3 the length of Section #3 - or 4 bytes multiplied by Tall Grass Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #3 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity #2 Section - Tall Grass Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #3 Section - Tall Grass Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Tall Grass Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Tall Grass Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #4 Section - Object Arrangement Requirements (Tall Grass) - section is equal to 1/3 the length of Section #3 - or 4 bytes multiplied by Tall Grass Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #3 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity #5 Section - Surfing Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #6 Section - Surfing Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Surfing Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Surfing Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #7 Section - Object Arrangement Requirements (Surfing) - section is equal to 1/3 the length of Section #6 - or 4 bytes multiplied by Surfing Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #6 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity #8 Section - Old Rod Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #9 Section - Old Rod Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Old Rod Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Old Rod Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #10 Section - Object Arrangement Requirements (Old Rod) - section is equal to 1/3 the length of Section #9 - or 4 bytes multiplied by Old Rod Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #9 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity #11 Section - Good Rod Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #12 Section - Good Rod Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Good Rod Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Good Rod Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #13 Section - Object Arrangement Requirements (Good Rod) - section is equal to 1/3 the length of Section #12 - or 4 bytes multiplied by Good Rod Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #12 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity #14 Section - Super Rod Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #15 Section - Super Rod Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Super Rod Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Super Rod Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #16 Section - Object Arrangement Requirements (Super Rod) - section is equal to 1/3 the length of Section #15 - or 4 bytes multiplied by Super Rod Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #15 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity -
A while ago, I lost half of all of my Pokemon from every Pokemon game that I had played until Pokemon X. After that sad event, I tried to retrieve my lost Pokemon via countless methods, that usually failed. However, after retrieving some of my lost Pokemon from Pokemon White, I realized that the 4th gen games held impartial copies of every Pokemon that successfully beats the elite 4. So, I extracted my Heart Gold save file from my cartridge from my cartridge and searched numerous times. Nonetheless, I had came to the realization that I had no idea where the hallof fame data was stored... So, where's the Hall of Fame data for Pokemon Heart Gold located? It was the first Pokemon game that I played, So I beat the elite 4 seven times (Just for kicks), so it should be easy to identify...
- 36 replies
-
- pkm extraction
- heartgold
-
(and 2 more)
Tagged with:
-
If a Pokémon uses Endure, is supposed to take damage equal or superior to its current HP, and happens to consume a held damage-reducing Berry the same turn Endure is used, then: _the Enduring Pokémon won't be left with Math.floor(Expected damage / 2) HP , nor 1 HP if Expected damage >= 2 * current HP; _but instead will be left with Math.floor(Current HP / 2) + 1 HP, or 1 HP if Current HP <= 2. In other words this tells us that Endure, if successful, is checked before damage-reducing Berries, which is obviously a bad design. A similar problem happens with Counter, Mirror Coat and Metal Burst (possibly Bide as well) where the damage sent back is doubled from the damage that was to be taken BEFORE damage-reducing Berries are checked (showcased here).
-
It's been a loooong time, but finally, I've discovered how the BDHC files work. Please, if you are gonna copy this post in other site, give credits! First of all, I have to thank JayT, who discovered how is the file structured in different parts. Now, I'm gonna explain what does each part. Part P Sets the coordinates of certain points, used later to build rectangles or "plates" of different heights in the Part S. The structure of each element is the following one: 00 00 XX XX 00 00 YY YY XX XX are the coordinates in the X-axis, and YY YY the Y-axis ones. Keep in mind that the origin of coordinates is located at the midpoint of the map, not in a corner. This means that the lower right corner always use positive numbers, but the upper left corner instead must use negative numbers. Remember that FF FF = -1, FE FF = -2, FD FF = -3... The four tiles in the midpoint of the map are (FFFF, FFFF), (0000, FFFF), (FFFF, 0000) and (0000, 0000) respectively. Thus, the point of the upper left corner is: 00 00 F0 FF 00 00 F0 FF And the lower right corner: 00 00 10 00 00 00 10 00 Part Q It may be related to the stairs, but I need to investigate further. I've already solved this part, but I've still got to translate it to English Part R It sets the different heights where the hero can be in different rectangles or "plates". The structure of the elements of this part is: MM MM ZZ ZZ ZZ ZZ refers to the complete-tiles height, ie; for example if the character is at a neutral level, then ZZ ZZ = 00 00. If we climb some stairs and now we are in a height +1, then ZZ ZZ = FF FF (at higher height, instead of growing, it decreases) . If we were at a height +5, it would be FB FF. And if for example we were at -2; 02 00. MM MM measures, instead of full tiles, 65536-ths of tile. For not to talk complicated things; MM MM = 00 80 if the character is in a lake (it would be half a tile down, ie -0.5 tall) and MM MM = 00 00 if the character is anywhere else. For example, if we have: 00 80 FF FF it would mean: FF FF = Height +1 00 80 = Height -0.5 Total height = +0.5 Part S Link points of Part P to create the "plates" or rectangles, and assigns a height of an element of Part R. AA 00 BB 00 QQ 00 RR 00 AA is the number (in hex) of the Part P element where the point of the rectangle in the upper left corner is. Remember that the first element is 00, the second is 01, the third is 02... BB is the number (in hex) of the Part P element where the point of the rectangle in the lower right corner is. RR is the number (in hex) of the Part R element which establishes the height of the plate. If in Part P, for example, we have this: 00 00 F0 FF 00 00 F0 FF 00 00 10 00 00 00 10 00 And in the Part R we have: 00 00 FE 00 00 00 01 00 In the S part we have to write: 00 00 01 00 00 00 00 00 so we create a plate covering from (-16, -16) to (16, 16) (ie, the whole map) and setting a height in the Z axis +2. If instead out: 00 00 01 00 00 00 01 00 It would be the same as the previous one, but with a height of -1. Part T It divides the map in horizontal strips. Everything must be divided so if we move vertically (up or down) and thus we get in/out of a lake, stairs or similar, we must also be entering a new strip. It's hard to explain; the game can not detect when you enter an area with different height when you move vertically in the same strip (horizontally no problem) so you have to create a new separate strip. As I know it's hard to understand, here's a little picture: There is an element for each strip there. The structure of each element of Part T is: 00 00 YY YY NN NN UU UU Where YY YY is the Y-axis line where the lower limit of the strip is. NN is the number of elements of the Part U that are taken, and starting counting from element number UU UU. Do not worry, I'll explain later. For example, a map where there were two strips, one in the upper half and one in the lower half, would be: 00 00 00 00 NN NN UU UU 00 00 10 00 NN NN UU UU Part U It is a list or enumeration of adjacent plates/rectangles to the strip with which it is linked in Part T. That is, if I'm in the strip 00, Part T load a number of elements of the Part U where there are numbered all the plates where the player is or can access, from this strip. The structure of the elements of Part U is: SS 00 where SS is the number (in hex) of the Part S plate. Part U have many elements of these, and they are usually "segmented" in "zones". In Part T is loaded the number of items to be taken (NN NN) and the number it starts counting (UU UU). For example, in Part U we have: 00 00 01 00 02 00 04 00 00 00 03 00 04 00 And in the T part we are: 00 00 YY YY 04 00 00 00 00 00 YY YY 03 00 04 00 Then, from the first strip, we are or we can access the plates 00, 01, 02 and 04, while from the second strip we are or we can access the plates 00, 03 and 04. Remember they are all adjacent plates, ie, plates belonging to the strip and the ones which are in the limits but do not belong to it (ie, those plates whose height the game has to load while the player is in the strip).