• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Our friends from the Johto Times are hosting a favorite Pokémon poll - and we'd love for you to participate! Click here for information on how to vote for your favorites!
  • Cyndy, May, Hero (Conquest), or Wes - which Pokémon protagonist is your favorite? Let us know by voting in our poll!
  • 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

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.)
 
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.;)
 
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.
 
Question!

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

Sorry for bad English.
 
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 !
 
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.
 
I can't open my Rom....

[PokeCommunity.com] Pokémon Gen III Rom Hacking Suite


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..
 
I can't open my Rom....

[PokeCommunity.com] Pokémon Gen III Rom Hacking Suite


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

https://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.
 
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:

[PokeCommunity.com] Pokémon Gen III Rom Hacking Suite


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.
 
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!
 
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?
[PokeCommunity.com] Pokémon Gen III Rom Hacking Suite

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

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

[PokeCommunity.com] Pokémon Gen III Rom Hacking Suite


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
 
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.
 
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.
 
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.
 
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