• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best places on the 'net to talk Pokémon and more! Community members will not see the bottom screen advertisements.
  • Want to share your adventures playing Pokémon?
    Check out our new Travel Journals forum for sharing playthroughs of ROM Hacks, Fan Games, and other Pokémon content!
  • IMPORTANT: Following a takedown request, the following hacks have been delisted from PokéCommunity:

    • Pokémon Glazed
    • Pokémon: Giratina Strikes Back
    • Pokémon Flora Sky
    • Pokémon Stranded
    The downloads and discussion threads for these hacks will no longer be accessible, and staff will be unable to return questions regarding accessing this content.

Quick Research & Development Thread

karatekid552

What happens if I push it?....
1,771
Posts
11
Years
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:

MrDollSteak

Formerly known as 11bayerf1
858
Posts
15
Years

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!
 
534
Posts
11
Years
  • Age 26
  • Seen Jul 24, 2023
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?
 

Blah

Free supporter
1,924
Posts
11
Years
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.
 

TweenyTodd

Quitting cuz i got a job
95
Posts
11
Years
Is there an offset for the current location of the player?
The (X,Y) coordinates I mean.
 

karatekid552

What happens if I push it?....
1,771
Posts
11
Years
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:
534
Posts
11
Years
  • Age 26
  • Seen Jul 24, 2023
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?
 
534
Posts
11
Years
  • Age 26
  • Seen Jul 24, 2023
Last edited:

ShyRayq

Unprofessional Unprofessional
1,856
Posts
16
Years
  • Seen Mar 12, 2024
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
 

karatekid552

What happens if I push it?....
1,771
Posts
11
Years
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.
 

Jambo51

Glory To Arstotzka
736
Posts
14
Years
  • Seen Jan 28, 2018
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.
 

Wobbu

bunger bunger bunger bunger
2,794
Posts
12
Years
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.

WynautEgg_zpsa5254b85.png
 
Last edited:
534
Posts
11
Years
  • Age 26
  • Seen Jul 24, 2023
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?
 
534
Posts
11
Years
  • Age 26
  • Seen Jul 24, 2023
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:
1rpuac.png
I know this post of Chaos Rush was decades ago but I found another offset.
452010 = # of list entries on main Pokedex page (Regional)
 
146
Posts
11
Years
  • CO
  • Seen Mar 16, 2023
Hello I'm currently trying to figure out how to add more Gym badges. But I'm having trouble finding where to start.
 

NarutoActor

The rocks cry out to me
1,974
Posts
15
Years
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