• 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

miksy91

Dark Energy is back in action! ;)
1,480
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:

Did you ever track down the data you edited? If not, you can easily find where it is by making an ips-file and use a hex editor to open the ips-file (that of course now holds the content between the original file and the hacked file with edited wild pokemon data). Ips file data structure is the following:

[First 5 bytes = "PATCH" in ASCII code][3-byte data address][How many bytes to write to this address (2 bytes)][Data to write to...][3-byte data address][How many bytes to write to this address (2 bytes)][Data to write to...]....["EOF" in ASCII]

What comes to other things, I like what I'm seeing here :)
And especially, since I've been doing similar things with Java myself just now.
 

Iacobus

sǝɯɐɾ
64
Posts
20
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:
I'm not to sure if you should be writing a program if you can't figure it out yourself, but hey..

As defined in the AM ini, the pointer to the wild Pokémon data is located after the following byte sequence:
03 48 04 80 09 E0 00 00 FF FF 00 00

For FR (English) we find the following: B8 9C 3C 08

When we go to 0x3C9CB8 in our hex editor, we see the following:
02 1B 00 00 D0 73 3C 08 00 00 00 00 00 00 00 00 00 00 00 00 02 1C 00 00 08 74 3C 08 00 00 00 00 00 00 00 00 00 00 00 00 02 1D 00 00 40 74 3C 08 00 00 00 00 00 00 00 00 00 00 00 00

I hope you see a pattern here.. Anyway, here is what you need to know:
02 1B 00 00 D0 73 3C 08 00 00 00 00 00 00 00 00 00 00 00 00

Bank Number
Map Number
Filler
Grass Pointer
Water Pointer
Trees Pointer
Fishing Pointer

I checked the Bank and Map in AM and this seems to be the data for the MONEAN CHAMBER.
If I go and check the Wild Pokémon, this map appears to have only grass encounters. Looking at the zero-pointers for water, trees and fishing, this could be right. So, let's investigate a bit further.

We go to 0x3C73D0 in hour hex editor and again see a bunch of data. For everyone's sake, I only copied what belongs to the map (to the grass encounter data of the map).
07 00 00 00 A0 73 3C 08 19 19 C9 00 19 19 C9 00 1919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C900

The first byte is the encounter ratio. Then we have 3 filler bytes (?) followed by a pointer.
After the pointer, we have our 12 Pokémon with their minimum and maximum levels. Bytes are in this order: minimum level, maximum level, Pokémon number.

Hope this is enough for now.
 
Last edited:
534
Posts
11
Years
  • Age 26
  • Seen Jul 24, 2023
Hey guys! This post by knizz:
For FireRed:
If you want to skip the intro: [0x080EC5D0]=0x08078915.
If you want to skip the intro+titlescreen: [0x080EC5D0]=0x0800C301.
If you want to skip the tutorial+oak:
  • [0x0800C4C4]=0x08056645
  • [0x08054A68]=0x4C3C
  • [0x08054A6A]=0x6820
  • [0x08054A6C]=0x4900
  • [0x08054A6E]=0xE001
  • [0x08054A70]=name of the player
    Spoiler:
  • [0x08054A7E]=0x4E34
  • [0x08054B3A]=0x0000
  • [0x08054B3C]=0x0000
plz credit lol
If you do this:
knizz said:
If you want to skip the intro+titlescreen: [0x080EC5D0]=0x0800C301.
the intro animation and the title screen will be removed BUT the Help System is removed too.

I'm guessing that the Help System is loaded as soon as the Titlescreen is displayed or maybe when the screen is refreshed and since it wasn't displayed or refreshed, it didn't load the Help System too.

Maybe we can mess up with it and make it load the Titlescreen but not load the Help System.
 

NarutoActor

The rocks cry out to me
1,974
Posts
15
Years
@Icobus
I knew most of what you posted but the information about the advance map's ini I did not know about, and proved quite useful(Thank you)
I have done some more research and testing, and some of your results are off.
07 00 00 00 A0 73 3C 08 19 19 C9 00 19 19 C9 00 1919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C9001919C900

The first byte is the encounter ratio. Then we have 3 filler bytes (?) followed by a pointer.
After the pointer, we have our 12 Pokémon with their minimum and maximum levels. Bytes are in this order: minimum level, maximum level, Pokémon number.
There are only 12 pokemon for grass encounters
5 for water
and 10 for fishing
also the pointer that you describe is actually the pointer to the wild-data, the data after the pointer belongs to a different map/bank
 
33
Posts
10
Years
So, second real post here, and I apologize effusively if I'm posting this in the wrong place, but as far as I'm aware this is a good place to post this question:

So, my friends and I are embarking upon starting our own Pokemon Hack, and we want to do it for the GBA/3rd Gen. I was originally thinking just hacking Emerald, but I noticed that in a lot of tutorials people are using FireRed.

Is there a reason for this? Are there pros and cons for using FireRed or LeafGreen over Ruby/Sapphire? Is Emerald any harder for some reason, like the Battle Frontier?

So, if anyone could give some quick information over the differences between hacking the different GBA games, or if there's none at all, I would greatly appreciate it. Thanks!
 

karatekid552

What happens if I push it?....
1,771
Posts
11
Years
So, second real post here, and I apologize effusively if I'm posting this in the wrong place, but as far as I'm aware this is a good place to post this question:

So, my friends and I are embarking upon starting our own Pokemon Hack, and we want to do it for the GBA/3rd Gen. I was originally thinking just hacking Emerald, but I noticed that in a lot of tutorials people are using FireRed.

Is there a reason for this? Are there pros and cons for using FireRed or LeafGreen over Ruby/Sapphire? Is Emerald any harder for some reason, like the Battle Frontier?

So, if anyone could give some quick information over the differences between hacking the different GBA games, or if there's none at all, I would greatly appreciate it. Thanks!

This is the place to post questions: http://174.133.255.180/showthread.php?t=79614

Anyways, the topic you are bringing up is one that comes up often. We actually had a whole thread around here dedicated to it not too often ago, but I can't find it right now....

Either way, in the beginning, no on hacked FR. Almost all of the early hacks were on Ruby. However, it was eventually found that people liked FR more for a couple of reasons:

-The base graphics were better in many opinions.
-Some things are coded to be way simpler.
-ASM hackers found that the introduction of DMA made finding things easier.


Now, Emerald shares a lot of the coding traits of FR, but most people don't hack it simply because of the lack of resources. There are very few tutorials that include Emerald offsets, so it is difficult for people to find what they want. However, that does not mean that it hasn't been hacked. Flora Sky is an Emerald hack that came out pretty good. It really all sits on the amount of extra work you want to do.
 

karatekid552

What happens if I push it?....
1,771
Posts
11
Years
I thought I'd post this here:
View attachment 68434
It's what I'm working on at the moment.
It's an online version of my database
with server-synced comments.

EDIT:
I uploaded it at http://capsule.whypanic.org:1024/
(Tested with Chromium; FF is slow)
And you'll need a firered rom to use it.

I have made several changes to your database on my own comouter as I have encountered new routines that aren't named. Would you like these offsets?
 

knizz

192
Posts
16
Years
  • Seen Oct 28, 2020
I have made several changes to your database on my own comouter as I have encountered new routines that aren't named. Would you like these offsets?
Sure, if you could give me the names as a list (or idb file), that'd be great.
 
Last edited:

GoGoJJTech

(☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
2,475
Posts
11
Years
setflag 0x839 will set up the mystery gift option on the main menu. You will not receive gifts though, but you already knew that. FR and LG by the way.

Edit1: offset 0x0800cbe8 calls the message: "The Wireless Adapter is not connected.", which is at offset 0x08415AA4
Edit2: The routine calls either the message above or 0x0800cc04, which points to offset 0x08415ACB which is: "MYSTERY GIFT can't be used while the Wireless Adapter is attached." branching could lead to a new routine where we could put a sprite on screen or something like that.
 
Last edited:

karatekid552

What happens if I push it?....
1,771
Posts
11
Years
I thought I'd post this here:
View attachment 68434View attachment 68444View attachment 68464
It's what I'm working on at the moment.
It's an online version of my database
with server-synced comments.

Update:
I uploaded it at http://capsule.whypanic.org:1024/
(Tested with Chromium; FF is slow)
And you'll need a firered rom to use it.

I was playing with the database in study hall today, and I must say, this is pretty cool, especially the built in emulator. There wouldn't happen to be a breakpoint feature that I can't find, would there?
 

MrDollSteak

Formerly known as 11bayerf1
858
Posts
15
Years
I've just got some very quick offsets for Pokedex hacking.

I'm not sure whether it's already been posted, I don't think so, as I had to discover these on my own.

I've found 2 limiters for the Kantodex that are quite useful, which when combined with Jambo51's already posted offsets, can allow for the Kantodex to act as a national dex.

Even though Jambo already found the limiter for the Kantodex itself, it would still not display the correct seen/caught numbers as they were still limited to 150 as were the habitats.

By changing the number 96 at the offset: 104BF2
You can extend the limit to the seen/caught text. Eg. changing 96 to FA will allow for a max of 250 seen/caught Pokemon.

By changing the number 97 at the offset: 106828
You can extend the number of Pokemon that will be correctly featured in the habitat pages. Eg. changing 97 to FA will allow for the first 250 Pokemon in your pokedex to be displayed in the habitat pages before receiving the national dex.

This can be helpful as it stops people from having to give the national dex at the start of the game.

I'll just repost Jambo's limiters from his thread here

0x10352C - mov r1, #0x97
0x1035F6 - cmp r0, #0x96

Just change those 2 bytes at that offset to the number of Pokemon you want in.
 

dunning2012

Sparky
8
Posts
11
Years
  • Seen Dec 27, 2017
Just 2 quick questions.

1) Does anyone know or know of a tutorial that can change the message that pops up when you are not able to use an item?

Oak: You can't use that item here

2) Anyone know of a way how we could increase the number of boxes in the PC for storing Pokemon?

Cheers - I'm using Pokemon Fire Red
 

Jambo51

Glory To Arstotzka
736
Posts
14
Years
  • Seen Jan 28, 2018
Just 2 quick questions.

This is very much in the wrong place. Questions like these should be posted in the simple questions thread. Just for the future. :)

1) Does anyone know or know of a tutorial that can change the message that pops up when you are not able to use an item?

Oak: You can't use that item here

Using A-Text, search for that string, and you'll find it. Note down the offset that A-Text returns after converting to hex. Look for a pointer to that location by reversing the bytes and putting a 08 at the end (so, if the offset before was 0x123456, the pointer to it would come from:

Code:
12 34 56 -> 56 34 12 -> 56 34 12 08

Then, boot up XSE, compile your new string using it, and change the pointer of the original text to your new location.

For a more in depth explanation, read some of the tutorials kicking about. :)

2) Anyone know of a way how we could increase the number of boxes in the PC for storing Pokemon?

Cheers - I'm using Pokemon Fire Red

Simple answer, you can't.
 

GoGoJJTech

(☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
2,475
Posts
11
Years
3FE72D contains FIGHT BAG POKEMON RUN

Also Yay, 200 POSTS
 
Last edited:

MrDollSteak

Formerly known as 11bayerf1
858
Posts
15
Years
I've still got another limiters in the regional pokedex that is really irritating me, and prevents full out hacking of the kanto dex. The one that appears on the pokemon page and loads ??? for any pokemon above 151 prior to the national dex.

What I have found is the location that points to ??? within the pokedex menu: 136118

However I cannot find any bytes that limit within a 500 byte window. This would imply that something may point to this location after it's own routine to check whether the national dex is held. That being said absolutely nothing points to the 136000 area that has any 97's near it either, in fact the only ones are in a table within 135000 region. This makes me very confused as to how the game loads this. I was wondering if anyone else had found this out, or may know how to fix it.

Another note, there are no other notable pointers within the general area of the pointer towards ??? which may load a routine (that I can see).

EDIT: Diegoisawesome is a) 100% correct b) awesome
The limiter for the Pokemon's pokedex number in the Pokemon screen is 0x43FA6
 
Last edited:

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
I've still got another limiters in the regional pokedex that is really irritating me, and prevents full out hacking of the kanto dex. The one that appears on the pokemon page and loads ??? for any pokemon above 151 prior to the national dex.

What I have found is the location that points to ??? within the pokedex menu: 136118

However I cannot find any bytes that limit within a 500 byte window. This would imply that something may point to this location after it's own routine to check whether the national dex is held. That being said absolutely nothing points to the 136000 area that has any 97's near it either, in fact the only ones are in a table within 135000 region. This makes me very confused as to how the game loads this. I was wondering if anyone else had found this out, or may know how to fix it.

Another note, there are no other notable pointers within the general area of the pointer towards ??? which may load a routine (that I can see).
Have you already edited the byte at 0x43FA6?
 
Back
Top