• 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?".
  • 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.

Tool: Pokémon Gen III Rom Hacking Suite

68
Posts
9
Years
    • Seen Nov 2, 2014
    Just wanted to say thank you for making this! It looks like I got into ROM hacking at just the right time! (Also, this is getting shoved in the face of the next person to make fun of me for using python.)
     

    karatekid552

    What happens if I push it?....
    1,771
    Posts
    11
    Years
  • Is there any way to edit which TMs are which using this tool? I'm using the MrDS rom base and most tools don't work with that.

    My tool loads all TM names from the ROM, so if MrDollSteak made his ini load from the new ones he made, they should show up. Follow the instructions in the documentation.

    Just wanted to say thank you for making this! It looks like I got into ROM hacking at just the right time! (Also, this is getting shoved in the face of the next person to make fun of me for using python.)

    Hehe thanks man.:) And hell yeah Python. Nothing wrong with it, seeing as I can use it to write programs that work on ANY platform. I've even learned how to make them for iOS. So yeah, it might be a little slower than C based languages, but nothing beats the speed of testing and flexibility. BTW, Dropbox is almost completely run on Python, just a tidbit for anyone who doesn't like Python.;)
     

    Shiny Quagsire

    I'm Still Alive, Elsewhere
    697
    Posts
    14
    Years
  • Hehe thanks man.:) And hell yeah Python. Nothing wrong with it, seeing as I can use it to write programs that work on ANY platform. I've even learned how to make them for iOS. So yeah, it might be a little slower than C based languages, but nothing beats the speed of testing and flexibility. BTW, Dropbox is almost completely run on Python, just a tidbit for anyone who doesn't like Python.;)
    Yeah, never got the whole "C/C++ or death!" vibe some developers have on any other language than C and C++. It's really annoying when they bash on languages like Java for being bloated and memory inefficient while they adore Ruby or Python for their elegance or .NET languages for Visual Studio (which really makes no sense since .NET is just as bloated and memory inefficient as Java). In any case, as long as a tool has good cross-platform support and isn't horribly buggy, it's fine by me.
     
    13
    Posts
    9
    Years
    • Seen Sep 11, 2014
    Question!

    Is anybody able to answer me why some Pokemon use only
    Struggle after editing a game with this Suite?

    Sorry for bad English.
     
    105
    Posts
    10
    Years
    • Seen Apr 17, 2015
    Question!

    Is anybody able to answer me why some Pokemon use only
    Struggle after editing a game with this Suite?

    Sorry for bad English.

    Are you talking about the pokemon that you added to the game by expanding the pokedex?
    if that is so then you have to add the moves too !
     
    13
    Posts
    9
    Years
    • Seen Sep 11, 2014
    Are you talking about the pokemon that you added to the game by expanding the pokedex?
    if that is so then you have to add the moves too !

    No, I'm talking about old Pokemon ( Ekans and Jigglypuff). For the new Pokes i'm always
    putting their moves according to the movesets posted on Serebii.

    Sorry for bad English again.
     

    Dragonflye

    Author of Pokémon Sovereign of the Skies
    107
    Posts
    14
    Years
    • Age 28
    • Seen Oct 9, 2023
    I can't open my Rom....

    untitledm3i4v.png


    My INI:
    [ALL]
    offsetthatcontainssecondromid = 0x1FFFFFE
    justusestandardini = True
    checkfordevbuilds = True
    checkforupdates = True
    autosavepokeswhenswitching = True
    notes_about_this_ini = -
    note1 = justusestandardini allows you to turn the dynamic ini system on or off.
    note2 = All booleans are either have two CASE-SENSITIVE states -> True or False
    note3 = The lists (like EggGroups) must be in order from lowest to highest.
    note4 = If you want to provide a name for your game in the ini, just do Name = X. See below examples. Eventually, I will load this name to the program and display it.
    note5 = DO NOT change the gamecode property in the ini. That is used for providing the correct fix for Shedinja Evolution for your base rom.

    [BPED]
    name = Pokemon Emerald (D)
    gamecode = BPED
    numberofpokes = 800
    pokebasestats = 0x1C02270
    pokebasestatslength = 0x1C
    pokenames = 0x1C00000
    pokenameslength = 0xB
    typenames = 0x32F7A8
    typenameslength = 0x7
    numberoftypes = 18
    items = 0x5946DC
    numberofitems = 0x179
    itemsdatalength = 0x2C
    abilities = 0x33009E
    numberofabilities = 0x4E
    abiltiesnamelength = 0xD
    egggroups = Monster,Water1,Bug,Flying,Field,Fairy,Grass,Human-Like,Water3,Mineral,Amorphous,Water2,Ditto,Dragon,Undiscovered
    leveluptypes = Medium-Fast,Erratic,Fluctuating,Medium-Slow,Fast,Slow
    learnedmoves = 0x1C07A00
    learnedmoveslength = 0x2
    attacknames = 0x1714120
    numberofattacks = 0x512
    attacknamelength = 0xD
    eggmovepointer1 = 0x703F0
    eggmovepointer2 = 0x70468
    eggmovelimit = 0x70464
    tmhmcompatibility = 0x1C1A660
    tmhmcompatibilitylength = 8
    tmlist = 0x62705C
    tmlistentrylength = 2
    numberoftms = 50
    numberofhms = 8
    evolutiontable = 0x1C1CC00
    evolutionsperpoke = 5
    lengthofoneentry = 8
    evolutionmethods = None,Friendship,Friendship (Day),Friendship (Night),Level-Up,Trade,Trade (Hold Item),Stone,ATK > DEF,ATK = DEF,ATK < DEF,PID (Wurmple->Silicoon),PID (Wurmple->Cascoon),Spawn a Second,Create Spawn,Beauty
    evomethodsproperties = None,None,None,None,Level,None,Item,Item,Level,Level,Level,Level,Level,Level,Level,None
    evolutiontablepointers = 0x6D144,0x6D194,0x6D238,0x6D388,0x70030,0x13E194
    offsetstochangetolslr0r60x1 = 0x6D174,0x6D392,0x6D1E0,0x6D23C,0x6D24C,0x6D276,0x6D2A0,0x6D2CE,0x6D2EE,0x6D312,0x6D322
    offsetstochangetonewminus1 = 0x6D33C,0x6D3AE,0x70036
    theshedinjafix = 0x13E036
    changetonewnumbertimes8 = 0x7001E,0x70054,0x70022,0x70056
    pokedex = 0x1C14930
    lengthofpokedexentry = 0x20
    nationaldexorder = 0x1C14270
    numofnondexpokesbetweencelebiandtreeko = 25
    numofnondexpokesafterchimecho = 28
    dextype = E
    jambo51learnedmovehack = False
    numofpokesbetweencelebiandtreeko = 25
    movetutorcomp = 0x1C1BF70
    movetutorcomplen = 4
    movetutorattacks = 0x6264D4
    mtattackslen = 2
    mtattacksnum = 32
    frontspritetable = 0x1C0BA20
    backspritetable = 0x1C0A080
    frontpalettetable = 0x1C0D410
    shinypalettetable = 0x1C0EE00
    enemyytable = 0x1C114F0
    playerytable = 0x1C121F0
    enemyaltitudetable = 0x1C12EF0
    iconspritetable = 0x1C13220
    iconpalettetable = 0x1C13F20
    iconpalettes = 0xDDE348
    numiconpalettes = 3
    footprints = 0x1C24910
    locationnames = 0x5B24B4
    locationstart = 0x0
    locationend = 0xD4
    locationtblfmt = 2

    I've find the German Pointer for locationnames = 0x5B24B4. But I still can not open it..
     

    karatekid552

    What happens if I push it?....
    1,771
    Posts
    11
    Years
  • I can't open my Rom....

    untitledm3i4v.png


    My INI:
    [ALL]
    offsetthatcontainssecondromid = 0x1FFFFFE
    justusestandardini = True
    checkfordevbuilds = True
    checkforupdates = True
    autosavepokeswhenswitching = True
    notes_about_this_ini = -
    note1 = justusestandardini allows you to turn the dynamic ini system on or off.
    note2 = All booleans are either have two CASE-SENSITIVE states -> True or False
    note3 = The lists (like EggGroups) must be in order from lowest to highest.
    note4 = If you want to provide a name for your game in the ini, just do Name = X. See below examples. Eventually, I will load this name to the program and display it.
    note5 = DO NOT change the gamecode property in the ini. That is used for providing the correct fix for Shedinja Evolution for your base rom.

    [BPED]
    name = Pokemon Emerald (D)
    gamecode = BPED
    numberofpokes = 800
    pokebasestats = 0x1C02270
    pokebasestatslength = 0x1C
    pokenames = 0x1C00000
    pokenameslength = 0xB
    typenames = 0x32F7A8
    typenameslength = 0x7
    numberoftypes = 18
    items = 0x5946DC
    numberofitems = 0x179
    itemsdatalength = 0x2C
    abilities = 0x33009E
    numberofabilities = 0x4E
    abiltiesnamelength = 0xD
    egggroups = Monster,Water1,Bug,Flying,Field,Fairy,Grass,Human-Like,Water3,Mineral,Amorphous,Water2,Ditto,Dragon,Undiscovered
    leveluptypes = Medium-Fast,Erratic,Fluctuating,Medium-Slow,Fast,Slow
    learnedmoves = 0x1C07A00
    learnedmoveslength = 0x2
    attacknames = 0x1714120
    numberofattacks = 0x512
    attacknamelength = 0xD
    eggmovepointer1 = 0x703F0
    eggmovepointer2 = 0x70468
    eggmovelimit = 0x70464
    tmhmcompatibility = 0x1C1A660
    tmhmcompatibilitylength = 8
    tmlist = 0x62705C
    tmlistentrylength = 2
    numberoftms = 50
    numberofhms = 8
    evolutiontable = 0x1C1CC00
    evolutionsperpoke = 5
    lengthofoneentry = 8
    evolutionmethods = None,Friendship,Friendship (Day),Friendship (Night),Level-Up,Trade,Trade (Hold Item),Stone,ATK > DEF,ATK = DEF,ATK < DEF,PID (Wurmple->Silicoon),PID (Wurmple->Cascoon),Spawn a Second,Create Spawn,Beauty
    evomethodsproperties = None,None,None,None,Level,None,Item,Item,Level,Level,Level,Level,Level,Level,Level,None
    evolutiontablepointers = 0x6D144,0x6D194,0x6D238,0x6D388,0x70030,0x13E194
    offsetstochangetolslr0r60x1 = 0x6D174,0x6D392,0x6D1E0,0x6D23C,0x6D24C,0x6D276,0x6D2A0,0x6D2CE,0x6D2EE,0x6D312,0x6D322
    offsetstochangetonewminus1 = 0x6D33C,0x6D3AE,0x70036
    theshedinjafix = 0x13E036
    changetonewnumbertimes8 = 0x7001E,0x70054,0x70022,0x70056
    pokedex = 0x1C14930
    lengthofpokedexentry = 0x20
    nationaldexorder = 0x1C14270
    numofnondexpokesbetweencelebiandtreeko = 25
    numofnondexpokesafterchimecho = 28
    dextype = E
    jambo51learnedmovehack = False
    numofpokesbetweencelebiandtreeko = 25
    movetutorcomp = 0x1C1BF70
    movetutorcomplen = 4
    movetutorattacks = 0x6264D4
    mtattackslen = 2
    mtattacksnum = 32
    frontspritetable = 0x1C0BA20
    backspritetable = 0x1C0A080
    frontpalettetable = 0x1C0D410
    shinypalettetable = 0x1C0EE00
    enemyytable = 0x1C114F0
    playerytable = 0x1C121F0
    enemyaltitudetable = 0x1C12EF0
    iconspritetable = 0x1C13220
    iconpalettetable = 0x1C13F20
    iconpalettes = 0xDDE348
    numiconpalettes = 3
    footprints = 0x1C24910
    locationnames = 0x5B24B4
    locationstart = 0x0
    locationend = 0xD4
    locationtblfmt = 2

    I've find the German Pointer for locationnames = 0x5B24B4. But I still can not open it..

    Is locationnames a table of pointers or a table of text? It has to be the pointer table.
     

    Mr.Wurmple

    Advanced Wurmple Trainer
    17
    Posts
    9
    Years
  • I was wondering if, the Pokédex also adds the Pokémon, that I've added to the game?

    - Or maybe that'll be a feature?
     

    Dragonflye

    Author of Pokémon Sovereign of the Skies
    107
    Posts
    14
    Years
    • Age 28
    • Seen Oct 9, 2023
    Is locationnames a table of pointers or a table of text? It has to be the pointer table.

    I found by Bug. The Pointer must be 4 bytes later.^^ Thanks.

    The Tool ist very good. But I think it's slow by scrolling to the next Pokémon.
     

    karatekid552

    What happens if I push it?....
    1,771
    Posts
    11
    Years
  • I found by Bug. The Pointer must be 4 bytes later.^^ Thanks.

    The Tool ist very good. But I think it's slow by scrolling to the next Pokémon.

    Just remember how much data it loads each time you scroll:P It has to load all of the data for the Pokemon, including images. All of the tabs except the Habitat and Egg Move tabs are reloaded every time. I know I am definitely not the most efficient coder so that could also be an issue.:P

    http://i.gyazo.com/2bbde5d72bbe2603eb5c7da07c93b775.png
    I've been getting this error, and I've been trying to fix it via the function for a long while now, but it doesn't want to work.

    It's something to do with the habitat data, right? Any solution to this?

    It looks like your habitat table is pointing outside the rom, therefore it can't load a pointer making the string literal nothing. Possibly your table is pointing to free space (FFFFFFFF) which would point outside the rom.
     

    DoesntKnowHowToPlay

    Tiny Umbrella with Lots and Lots of Good
    265
    Posts
    12
    Years
    • Seen Feb 24, 2024
    I'm having trouble getting this to work with Jambo's 3-byte movepool hack. The .ini I'm using:

    Spoiler:

    It's definitely loading this particular entry, as if I change jambo51movehack to False it loads fine, and picks up the repointed ability name table. (This is also the only entry I've added to the ini- it's a fresh download) Setting that to True instead causes G3S to crash when I load the ROM:

    VG7aqds.png


    It shoudn't be an issue with malformed movepools, as every movepool now points to the same place (xC70000), which contains the exceedingly simple 01 00 01 FF FF FF. (pound at level 1 and nothing else.) I also tried 01 00 01 00 00 FF, which is what Jambo's tutorial suggests (either works in-game), and that still causes a crash.
     

    DimiInOffice

    Woah dere!
    4
    Posts
    9
    Years
  • Can someone please teach me how to use this program? I've been trying to figure this out for hours. I downloaded it 3 times and I still can't find an exe file that takes me to the actual program. It's all just text documents and .ini files.
    Thanks ahead of time to whoever helps me!
     

    destinedjagold

    You can contact me in PC's discord server...
    8,593
    Posts
    16
    Years
    • Seen Dec 23, 2023
    Can someone please teach me how to use this program? I've been trying to figure this out for hours. I downloaded it 3 times and I still can't find an exe file that takes me to the actual program. It's all just text documents and .ini files.
    Thanks ahead of time to whoever helps me!

    Erm... After you've extracted the file, double-click the [Red OW] icon?
    rr096o.jpg

    (note: this is an old file in my office PC. I dunno if the icon has been changed lately.)
     

    BrandoSheriff

    Has a tendency to figure things out
    776
    Posts
    16
    Years
  • Hey,

    I keep getting this error after editing habitats, and attempting to save the tab:

    2e4evyu.jpg


    I also get this with some other tasks that involve repointing, such as expanding Pokemon and changing PokeDex entries. This only started happening after I downloaded the update, the previous version still does everything fine. I know it's not my rom, as it does this with clean roms as well.

    Any idea on why this is happening? I just want my new Pokes to have proper dex entries. T_T
     
    13
    Posts
    9
    Years
    • Seen Sep 11, 2014
    Can anyone tell me why are the evolutions shown wrong in this Suite?

    Until today everything good and fine, but today I noticed the evolutions are shown
    wrong in the Suite, for example :
    Bulbasaur evolves at L32 into Venusaur.
    Combusken evolves into Kirlia.
    Pikachu evolves at L16 into Niddorino.

    Every single Pokemon 's evos are shown wrong but in game they evolve like they should.
    I'm also iserting Mega Evolutions into my hack and I set the Pokemon to Mega-evolve at
    L50, for example Blaziken. I've put him to evolve at L50 but nothing happens ingame when I get him to this level.

    Can anyone help me?

    Sorry for bad English.
     

    ShyRayq

    Unprofessional Unprofessional
    1,856
    Posts
    16
    Years
    • Seen Apr 2, 2024
    Can anyone tell me why are the evolutions shown wrong in this Suite?

    Until today everything good and fine, but today I noticed the evolutions are shown
    wrong in the Suite, for example :
    Bulbasaur evolves at L32 into Venusaur.
    Combusken evolves into Kirlia.
    Pikachu evolves at L16 into Niddorino.

    Every single Pokemon 's evos are shown wrong but in game they evolve like they should.
    I'm also iserting Mega Evolutions into my hack and I set the Pokemon to Mega-evolve at
    L50, for example Blaziken. I've put him to evolve at L50 but nothing happens ingame when I get him to this level.

    Can anyone help me?

    Sorry for bad English.

    Here's my guess: The offset for your evolution table is off. Probably by like 40 bytes or so? Just open your rom up in a hex editor, go to the offset listed in the ini and find the correct starting position.
    Also, the Blaziken thing. You using FR? Do you have a National Dex? If not, Pokemon outside the Kanto Dex won't evolve.
     
    13
    Posts
    9
    Years
    • Seen Sep 11, 2014
    Here's my guess: The offset for your evolution table is off. Probably by like 40 bytes or so? Just open your rom up in a hex editor, go to the offset listed in the ini and find the correct starting position.
    Also, the Blaziken thing. You using FR? Do you have a National Dex? If not, Pokemon outside the Kanto Dex won't evolve.

    I'm not so good at hex editing and I don't know where to find the listed offset and the correct starting
    position. And about Blaziken, I've patched my game to be able to evolve without National Dex.
     

    ShyRayq

    Unprofessional Unprofessional
    1,856
    Posts
    16
    Years
    • Seen Apr 2, 2024
    I'm not so good at hex editing and I don't know where to find the listed offset and the correct starting
    position. And about Blaziken, I've patched my game to be able to evolve without National Dex.

    Well, first get a hex editor, most recommended is HxD. Now, go to your ini. Go find your rom's offsets and go to 'evolution table' or something like that. Take that offset, open up your hex editor and do a Ctrl+G and paste it in and enter. Assuming you haven't edited Bulbasaur's evo data, the start should be: 40 00s, then 04 10 02 I believe. Something like that. If there's no 40 00s before the 041002, just start at the 041002.

    Now the Blaziken thing, are you sure you have? Just double check with other pokemon outside the Kanto Dex. If they evo, then..I'm not too sure.
     
    Back
    Top