• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Quick Research & Development Thread

So, I've gotten sick of being asked for this, so I figured it might be a good idea to share it. It's so short and easy that it definitely doesn't warrant having its own thread, so putting it here seems like a good compromise.

Extending the Number of Direct Sound Tracks on 3rd Gen Pokémon Games

It's as easy as this:
  1. Search for the hex string "00 C5 94 00" in your ROM
  2. Replace said string with "00 CX 94 00" where X stands for the number of maximum DS tracks

Now, there are limits here. Fire Red and Emerald (presumably Leaf Green too) can support a maximum of 12 (0xC) tracks, so you can put 00 CC 94 00 for these ROMs, however, Ruby (presumably Sapphire too) are different. RS can only support a maximum of 7!

BPR - 12
BPG - 12
BPE - 12
AXV - 7
AXP - 7


I just wanted to add that in RS there are actually two locations that have contain that string of hex values. One in the one 1D0000s and one in the E70000's. I believe after some talks with ShinyDragonHunter a while back I discovered this. I believe that it ended up being the first one.

----------------------

I also recently spent a lot of time pouring over the maximum number of overworld limiting bytes and found that in all games except Emerald, (which I have yet to figure out as it is very different, but I am close) that there were actually three different compare commands that prevent the increasing of OWs. The first was a normal check that set the limit at 151 for FR and 217 for Ruby. (Please note that there are 152 ows in FR and 218 in Ruby. This means that the SS Anne is not special like once assumed, this check is solely based off of the OW numbers used in A-map and NSE).

The second and third checks actually worked together in order to allow the use of higher number OWs over OW #240 by pulling different OWs from the origional table. If you only change one of these checks, it screws up your OW's pallette and position on the map. They must be used in sync.

The offsets for the ASM routines which control these limits are:

Ruby: 0x0805BC10

FireRed: 0x0805F2C8

Please note that this is the beginning of the entire routine, not the checks themselves. I plan on extending Darthatron's Advanced OW Editing Tutorial (with permission if he lets me:D) in order to account for these checks. So unless you have a good understanding of basic ASM, don't play with this quite yet.
 
Last edited:

As for this, now i'm outta time, but i'll try to do something to you. Thing is, there's a routine in the rom, a powerful one, that has ENTIRE access to a pokemon's data, and can change anything about it!
List of things discovered that the routine can change (don't mind the hex numbers):
Spoiler:




Well, i explained this in the last post. Its the naming type, which is gonna through r0. But that can be easily changed, i think, so this is the least of our worries.

My main worry is how you're gonna convert the letters bytes into usable codes.

I was just wondering what exactly this routine is, and I was wondering if it would apply to eggs? For example, I want to create a script that would give you a specific egg with preset eggmoves. That or Pokemon with 'hidden abilities'. What special or callasm would I need to put into the script?

If I've been mildly silly and the number is already posted I apologize in advance.

Thanks!
 
Does anyone know how to ASM hack the intro in Fire Red so that it skips the "Gengar - Nidorino" Intro without the press of a button? Like after the "GAMEFREAK Presents" Logo, It will go on to the Title Screen and not play that sick and old intro?
 
Does anyone know how to ASM hack the intro in Fire Red so that it skips the "Gengar - Nidorino" Intro without the press of a button? Like after the "GAMEFREAK Presents" Logo, It will go on to the Title Screen and not play that sick and old intro?

Scroll up, there is a post about it by Knizz.
 
Is there an offset for the current location of the player?
The (X,Y) coordinates I mean.
 
Is there an offset for the current location of the player?
The (X,Y) coordinates I mean.

I believe that there is a script command that gets this info, it is like "getplayerlocation" or something. Hit F1 in XSE and scroll through the commands. I will also go see where the exact location in the ram is in case you need this for an ASM routine.

Edit:
thethethethe's Rom Hacking Resource said:
-----------------------------------------------------------------------------------------------------
getplayerpos, getplayerxy:
Stores the players current x and y positions on the current map.
Hex Structure: [42] [xxyy] [aabb]
xxyy: Variable for x position
aabb: Variable for y position

Edit2: In case you need it:

X-value is at 020255A0
Y-value is at 020255A2

(Found using VBA's "Search for Cheats" function. Quite the amazing thing.)
 
Last edited:
Just to clear things a bit, is this the direct solution to my problem?

Also do I just compile the "After"?

No, no, the post you want is the post before that.
 
No, no, the post you want is the post before that.

Okay, now it's more unclear to me... Which one?

BEFORE:
080008aa 8b91 ldrh r1, [r2, #0x1c]
080008ac 1c18 add r0, r3, #0x0
080008ae 4008 and r0, r1
080008b0 2800 cmp r0, #0x0
080008b2 d0fa beq $080008aa
080008b4 bc01 pop {r0}
080008b6 4700 bx r0

AFTER:
080008aa df02 swi $02
080008ac 8b91 ldrh r1, [r2, #0x1c]
080008ae 1c18 add r0, r3, #0x0
080008b0 4008 and r0, r1
080008b2 2800 cmp r0, #0x0
080008b4 d0f9 beq $080008aa
080008b6 bd00 pop {pc}

And I just compile using ASM and I'm good?
 

Oooooh..... Sorry... My bad.

BTW how do I do that? Hackmew's Knowledge Tutorial doesn't say anything about the "offset=offset" thing.

EDIT: Do I just repoint those offset to the one on the right?

EDIT2: Nevermind! I got it to work. Knizz, YOU-HAVE-MY-ETERNAL-GRATITUDE.

EDIT3: BTW How come the Help System is not in Pokemon Liquid Crystal? Does Anyone know how to remove that?
 
Last edited:
Okay just asking, does anyone know the locations of the limiters on the Item amount.
I know about the bytes at 0x98998, 0x10864C and 0x10DA14, but I'm not sure where the others are.
If anyone can help, that'd be appreciated
 
Oooooh..... Sorry... My bad.

BTW how do I do that? Hackmew's Knowledge Tutorial doesn't say anything about the "offset=offset" thing.

EDIT: Do I just repoint those offset to the one on the right?

EDIT2: Nevermind! I got it to work. Knizz, YOU-HAVE-MY-ETERNAL-GRATITUDE.

EDIT3: BTW How come the Help System is not in Pokemon Liquid Crystal? Does Anyone know how to remove that?

I'm going to give you a little tip, whenever you see something in brackets: [___] like these, it always means what is contained at the given offset. This comes up a lot, and it will help you understand chemistry:p, there is a connection here... Let me know when you notice it:p.
 
Changing the Level At Which Eggs Hatch

So, a very simple hack here. Simply allows you to define what level the hatched Pokémon will be at when it hatches. These offsets are BPRE only. I haven't the time to search for RSE's right now. If you backtrack from the Pokémon Encrypter with index 0x19 (Exp Points), you should find the same movs in RSE.

Code:
081375B0: [B]XX[/B] 21
08046CBE: [B]XX[/B] 22
0804623E: [B]XX[/B] 22

See? Easy. Simply change the XX's to the level you want eggs to be. The XX's must all have the same value, or weird things will happen. The maximum allowed value is 0x64 (100). The game bugs out if you set it any higher.
 
I found the offsets from Pokémon Emerald (BPEE) for changing the level of Pokémon when they hatch from eggs.

Code:
08070A38: [B]XX[/B] 22
08071414: [B]XX[/B] 22
081C3200: [B]XX[/B] 21

Thanks to Jambo51 for finding the FireRed offsets and making it easy to find the Emerald offsets.

[PokeCommunity.com] Quick Research & Development Thread
 
Last edited:
And another one, would it be possible to port the R/S/E Pokedex to FR? Just the appearance and functions not the main Pokedex content. I'm curious since I discovered that the Ruins of Alph was ported to FR so I thought it would be possible to do the same with a Pokedex.

Also a port of how the Pokemon Info Screen like the one jsziede posted^^ to FR?
 
Here are some offsets for the Pokedex HUD:
0x451F55 = X position of text list
0x451F56 = Y position of text list
0x451F5D = X position of Habitat picture
0x451F5E = Y position of Habitat picture
0x451F65 = X position of "Seen:__ Owned:__" box
0x451F66 = Y position of "Seen:__ Owned:__" box
0x451F61 = BG Palette number that habitat picture uses
0x4520C8 = # of list entries on main pokedex page (National Pokedex enabled only)

Mess around with the bytes at those offsets, allowing you to do stuff like this:
[PokeCommunity.com] Quick Research & Development Thread
I know this post of Chaos Rush was decades ago but I found another offset.
452010 = # of list entries on main Pokedex page (Regional)
 
Hello I'm currently trying to figure out how to add more Gym badges. But I'm having trouble finding where to start.
 
Hello' everyone, I am working on a Java-Based Cross Platform Program to allow hackers to edit the wild data for GBA games and not be limited to the first 3 generations like advance map does. This is manly intended for the use of the 649 patch, but I can also be used for fakemon hacks since the list of pokemon is user-defined.

Here is the problem, I can not find out how wild data is structured in FireRed. I tried using offsets that are given' in advance map, and using backwards searches with a hex editor but I am running dry. I am hoping someone has the information, or that someone can at least help find it, without it I can not continue with the program. I already made the GUI, I just need to implement the structure. Here is a screen shot to show the program so far.
Spoiler:


Hello' everyone, I am working on a Java-Based Cross Platform Program to allow hackers to edit the wild data for GBA games and not be limited to the first 3 generations like advance map does. This is manly intended for the use of the 649 patch, but I can also be used for fakemon hacks since the list of pokemon is user-defined.

Here is the problem, I can not find out how wild data is structured in FireRed. I tried using offsets that are given' in advance map, and using backwards searches with a hex editor but I am running dry. I am hoping someone has the information, or that someone can at least help find it, without it I can not continue with the program. I already made the GUI, I just need to implement the structure. Here is a screen shot to show the program so far.
Spoiler:
 
Last edited:
Back
Top