Agastya
Grinding failed. Item Grind level dropped by 3.
- 73
- Posts
- 15
- Years
- Seen Mar 19, 2023
I've previously posted things involving Em's Frontier in the Quick Research thread, but it's been ages ago and they're buried under a bunch of posts. For quick reference the posts are here:
https://www.pokecommunity.com/posts/7092796/
https://www.pokecommunity.com/posts/7115858/
https://bulbapedia.bulbagarden.net/wiki/Battle_Frontier_data_structures_in_Generation_III (Not my work, but a great reference)
https://upokecenter.dreamhosters.com/games/emerald/guides/ (another great reference)
Anyway, since I've made these posts, I've cleaned up my notes into a simpler format. Since most everything related to the Pokemon it uses is known now, I figured it'd be best to get all of my notes in one publicly viewable place that actually has traffic in the hopes somebody else will be able to make use of them.
Battle Frontier, Slateport, Verdanturf, Fallarbor modules
Battle Pyramid wilds
Frontier Brains
Battle Pike wilds
Lastly, here's sonic1's post on how to edit the Frontier's ban list, in case you wish to allow your players to rampage with Rayquaza or something.
This is the main meat of the Frontier, anyway. There are other things that are worth looking into if you're planning on hacking the Frontier, and for the most part they're already indexed on the Bulbapedia page for Frontier structures.
After a while though, I got sick of doing everything in a hex editor. I came across the Nightmare Table Editor and realized that since Frontier stuff is all in tables, it could be used to make this easier so I made a few Nightmare modules to assist in doing so.
Nightmare is located here: https://datacrystal.romhacking.net/wiki/Nightmare_Table_Editor (apparently dead)
Nightmare 2 is located here: https://www.romhacking.net/utilities/610/ (no idea how well this will work)
And the modules are here: https://mediafire.com/?fb1hnme4hg7pc7e
Hopefully, somebody with better knowledge will be able to use these to make an actual proper tool for Frontier editing. I think it was planned to be a part of PGE, but for now it's not implemented so these have to do for the time being.
https://www.pokecommunity.com/posts/7092796/
https://www.pokecommunity.com/posts/7115858/
https://bulbapedia.bulbagarden.net/wiki/Battle_Frontier_data_structures_in_Generation_III (Not my work, but a great reference)
https://upokecenter.dreamhosters.com/games/emerald/guides/ (another great reference)
Anyway, since I've made these posts, I've cleaned up my notes into a simpler format. Since most everything related to the Pokemon it uses is known now, I figured it'd be best to get all of my notes in one publicly viewable place that actually has traffic in the hopes somebody else will be able to make use of them.
Battle Frontier, Slateport, Verdanturf, Fallarbor modules
Spoiler:
Offsets:
Battle Frontier: 0x5D97BC
Verdanturf Tent: 0x5DEC28
Slateport Tent: 0x5DE02C
Fallarbor Tent: 0x5DF69C
These follow a twelve byte data structure.
Species: 2 bytes
Movepool: 8 bytes (two per move)
Hold item: 1 byte (Determined by a master list located at 0x05CECB0)
EV spread: 1 byte
Nature: 1 byte
Padding/alignment: 1 byte
EV spreads are assigned by a bitfield to save space. Each stat with
EVs assigned to it will have the 510 EVs divided evenly among them.
HP: 0x1
ATK: 0x2
DEF: 0x4
SPD: 0x8
SATK: 0x10
SDEF: 0x20
Battle Frontier: 0x5D97BC
Verdanturf Tent: 0x5DEC28
Slateport Tent: 0x5DE02C
Fallarbor Tent: 0x5DF69C
These follow a twelve byte data structure.
Species: 2 bytes
Movepool: 8 bytes (two per move)
Hold item: 1 byte (Determined by a master list located at 0x05CECB0)
EV spread: 1 byte
Nature: 1 byte
Padding/alignment: 1 byte
EV spreads are assigned by a bitfield to save space. Each stat with
EVs assigned to it will have the 510 EVs divided evenly among them.
HP: 0x1
ATK: 0x2
DEF: 0x4
SPD: 0x8
SATK: 0x10
SDEF: 0x20
Battle Pyramid wilds
Spoiler:
Offsets:
Lv. 50: 0x6126B0
Open Level: 0x612E80
The Battle Pyramid wilds follow a 12 byte data structure.
Species: 2 bytes
Levels: 1 byte
Unknown: 1 byte
Movepool: 8 bytes
In Level 50, the level byte is the Pokemon's base level when spawning.
In Open Level, the level byte appears to be how many levels below the
player they spawn at base. In both cases, the wilds have a few levels
in variance.
Lv. 50: 0x6126B0
Open Level: 0x612E80
The Battle Pyramid wilds follow a 12 byte data structure.
Species: 2 bytes
Levels: 1 byte
Unknown: 1 byte
Movepool: 8 bytes
In Level 50, the level byte is the Pokemon's base level when spawning.
In Open Level, the level byte appears to be how many levels below the
player they spawn at base. In both cases, the wilds have a few levels
in variance.
Frontier Brains
Spoiler:
Offset: 0x61156C
Frontier Brain Pokemon are stored in a 20 byte data structure.
Species: 2 bytes
Item: 2 bytes
IVs: 1 byte
Nature: 1 byte
HP EVs: 1 byte
Atk EVs: 1 byte
Def EVs: 1 byte
Spd EVs: 1 byte
Sp.Atk EVs: 1 byte
Sp.Def EVs: 1 byte
Moveset: 8 bytes
The item can be anything the hacker desires, following normal item
indexing instead of Frontier indexing.
All IVs are set to whatever the IV value is. Stick with a max of 31, I
haven't personally tried going higher.
EVs can go above 510 total. You can give something 255 EVs in every
stat and they all will be applied, but the game will lag a little bit
calculating the stats.
Each Brain's team is 120 bytes long. The first three entries are used
in their Silver symbol challenge, and the second three are for Gold.
Factory Head Noland's team data is two copis of Steven's team data at
the Mossdeep event since his team is randomly generated from the
master list as rental Pokemon.
Frontier Brain Pokemon are stored in a 20 byte data structure.
Species: 2 bytes
Item: 2 bytes
IVs: 1 byte
Nature: 1 byte
HP EVs: 1 byte
Atk EVs: 1 byte
Def EVs: 1 byte
Spd EVs: 1 byte
Sp.Atk EVs: 1 byte
Sp.Def EVs: 1 byte
Moveset: 8 bytes
The item can be anything the hacker desires, following normal item
indexing instead of Frontier indexing.
All IVs are set to whatever the IV value is. Stick with a max of 31, I
haven't personally tried going higher.
EVs can go above 510 total. You can give something 255 EVs in every
stat and they all will be applied, but the game will lag a little bit
calculating the stats.
Each Brain's team is 120 bytes long. The first three entries are used
in their Silver symbol challenge, and the second three are for Gold.
Factory Head Noland's team data is two copis of Steven's team data at
the Mossdeep event since his team is randomly generated from the
master list as rental Pokemon.
Battle Pike wilds
Spoiler:
Offsets:
Spawn Table: 0x553934
Lv50 wild movesets: 0x6121D4
Open Level wild movesets: 0x612274
The Battle Pike wilds follow a 12 byte data structure.
Species: 2 bytes
"Level variance": 1 byte
Unknown (Padding?): 1 byte
Movepool: 8 bytes
The species byte itself does nothing but help categorize. Wilds have
to be edited in the wild encounter table itself. Each slot in the
moveset data is set to read a certain moveset, and the spawns are
shared between Level 50 and Open Level challenges.
The "level variance" field appears to be how many levels they spawn
below the player at base.
Spawn Table: 0x553934
Lv50 wild movesets: 0x6121D4
Open Level wild movesets: 0x612274
The Battle Pike wilds follow a 12 byte data structure.
Species: 2 bytes
"Level variance": 1 byte
Unknown (Padding?): 1 byte
Movepool: 8 bytes
The species byte itself does nothing but help categorize. Wilds have
to be edited in the wild encounter table itself. Each slot in the
moveset data is set to read a certain moveset, and the spawns are
shared between Level 50 and Open Level challenges.
The "level variance" field appears to be how many levels they spawn
below the player at base.
Lastly, here's sonic1's post on how to edit the Frontier's ban list, in case you wish to allow your players to rampage with Rayquaza or something.
In emerald, at the offset 0x611C9A, there's a table with 10 entries of 2 bytes (shorts), followed by an FFFF at the end of the table, which marks the pokemon restricted for entry in Battle Tower. To add or remove entries, add the pokemon number reversed in hex, and end the table with FFFF. If you want to remove all the limitations, just write FFFF to the beginning of the table (offset 611C9A).
~Sonic1
This is the main meat of the Frontier, anyway. There are other things that are worth looking into if you're planning on hacking the Frontier, and for the most part they're already indexed on the Bulbapedia page for Frontier structures.
After a while though, I got sick of doing everything in a hex editor. I came across the Nightmare Table Editor and realized that since Frontier stuff is all in tables, it could be used to make this easier so I made a few Nightmare modules to assist in doing so.
Nightmare is located here: https://datacrystal.romhacking.net/wiki/Nightmare_Table_Editor (apparently dead)
Nightmare 2 is located here: https://www.romhacking.net/utilities/610/ (no idea how well this will work)
And the modules are here: https://mediafire.com/?fb1hnme4hg7pc7e
Hopefully, somebody with better knowledge will be able to use these to make an actual proper tool for Frontier editing. I think it was planned to be a part of PGE, but for now it's not implemented so these have to do for the time being.
Last edited: