Thread: Research: Emerald's Battle Frontier
View Single Post
  #1    
Old October 13th, 2012 (5:37 AM). Edited April 6th, 2015 by Agastya.
Agastya's Avatar
Agastya Agastya is offline
Grinding failed. Item Grind level dropped by 3.
     
    Join Date: Feb 2010
    Nature: Quiet
    Posts: 72
    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:

    http://pokecommunity.com/showpost.php?p=7092796&postcount=224
    http://pokecommunity.com/showpost.php?p=7115858&postcount=232
    http://bulbapedia.bulbagarden.net/wiki/Battle_Frontier_data_structures_in_Generation_III (Not my work, but a great reference)
    http://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 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.


    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.


    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.


    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.
    Quote:
    Originally Posted by sonic1 View Post
    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: http://datacrystal.romhacking.net/wiki/Nightmare_Table_Editor (apparently dead)
    Nightmare 2 is located here: http://www.romhacking.net/utilities/610/ (no idea how well this will work)
    And the modules are here: http://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.
    __________________
    Reply With Quote