Jump to content

Gen I/II to Gen III/IV/V Conversion.


er1c1996

Recommended Posts

Attached is the latest version of Pokemon Time Machine. The PKM editor is extended to handle Generation I and generation II PKM files, both party and PC size.

Note the Convert option on the menu is grayed out when a Johto pokemon like Miltank is loaded. Try making a pokemon an egg and note which fields are disabled.

The program has been tested only minimally, so any error reports would be very welcome, please try and break it :grog:. Included in the zip is a sample gen1 PKM, gen2 PKM and gen2 odd egg PKM.

Pokerus is supported for Gen2, but still unsure how to handle it for Gen3. Apparently Pokerus data is lost when the pokemon is deposited, so theres two bytes to handle separately and it doesn't make much sense. I'll figure it out after some tests, there's not many combinations.

The Gen1 and Gen2 editors are fully completed, unless anyone has any suggestions they'd like to see included?

Edited by Metropolis
Link to comment
Share on other sites

  • Replies 100
  • Created
  • Last Reply

Top Posters In This Topic

  • 2 weeks later...
BTW, can you do Stadium 2 Registered Pokemon before you do anything else with the Stadium games? It's fine if you don't wanna do that first, though, I'd just prefer it.

It's bottom of my priorities to be honest until substantial progress is made mapping N64 save locations. Sorry.

Link to comment
Share on other sites

UPDATE 0.4

Attached is the latest version of the Pokemon Converter program. All PKM and 3GPKM editors have been finished, with full support for hidden power, Unown formes, Shedinja's HP etc. Full validation is in place to prevent errors like uber Pokemon with battle tower ribbons, non-Colosseum pokemon with purification ribbons, eggs with step count higher than the base step count etc.

Technical Details

0xF has been chosen as the origin game value for Generation 1 and 2 pokemon converted using the "Convert to Gen 3" function. This is the same flag as used for Colosseum and xD pokemon intended to be treated as exception pokemon outside the Hoenn dex, hence reducing the chance of corruption. Other possibilities would be to use some other value like 6 to 14, but this might prevent Pal Parking or cause other errors.

Hidden power type is preserved during conversion by selecting the last bits of the IVs appropriately. For example, an 0xF = 15 IV can become 30 or 31. Since all 15s give Dark which corresponds to all 1s in the last bits, this has the effect that an all 15 pokemon becomes an all 31 pokemon which is desirable. Hidden power Power depends on more than just the last bits and can change wildly - there's no way of preserving it without messing up the pokemon's IVs.

Attack IV has been chosen in place of gender value when converting Gen3 to Gen2 because this also has the effect of preserving hidden power.

Unown Formes and Shininess is preserved by hacking the PID and Secret ID. Since these don't exist in Gen2 we set them to whatever gives the right match.

The obedience flag is validated and uneditabled, that is it is set if and only if the species is Mew or Deoxys. Similarly Eggs have all the appropriate fields locked, such as Effort Values. There is a known bug that although Eggs may have marks set in-game (circle, heart, etc), the editor will not allow these to be changed. The other known bug is that Pokerus is erased for generation 3 pokemon until I've worked out the validation settings and a good way to convert the strain back and forth from gen 2. It might be the exact same code, I need to check.

Held TMs will be updated in a future version so that TMs which are the same across generations like Thunderbolt will remain attached whilst TMs that teach a different move will be removed.

Another known bug is the caught location of Gen2 pokemon without caught data (or that of a location without a match). Since 0x0 is Litteroot Town, there's no obvious choice. fateful encounter seems a bit over the top for a Pidgey, so I've gone for In-game-trade so "Obtained in a trade" appears. The problem arises if the trainer ID is the same as the game, in which case the caught level is displayed. basically, there's no way of 'hiding' the caught level, as 0x0 means Hatched and it will say "Obtained in a fateful encounter at Level 5". The best I can do is to set the caught level to the current level similar to the behaviour of pal park. If the caught location DOES exist, then the caught level will have been set too, so this pair can be used for something meaningful.

Reversible conversion is impossible because, e.g. the caught time Morning/day/night has no match in Gen3! Let alone contest/ribbon data not existing in gen2.

But as I've defended before, don't lose the woods for the trees - 95% of the pokemon IS preserved, which unless you care what the Pokeseer in Cianwood says about your Artisan Cave Smeargle is a functionally identical conversion. Have a mess around and see what does/doesn't work.

As ever, bug reports and suggestions are welcome. Lack of supported for pokemon nicknamed using non-English games is a known bug (the symbols are replaced with ? marks). Similarly, some symbols like PK and MN that do not exist in another generation are converted to ? marks. The next update will feature .SAV editing for generation 1 including batch edit jobs like validating all pokemon and maximising the EVs/IVs of everything on one save. I've already tested some fun batch jobs like shinyfying everything on Gen2 or Gen3 save - and it works!

Compatibility

The PKM and 3GPKM files exported are designed to be compatible with Pikasav and Encyclopedia Pokemanica respectively. The program should be able to read in party or PC PKM/3GPKM files produced by those programs too. This has not yet been tested, so any feedback is appreciated. I don't know what formats A-Save or other editors use, but I would like to produce files compatible with those since the purpose of this program is a bridge between organiser programs not a replacement for them.

Edited by Metropolis
Link to comment
Share on other sites

  • 5 weeks later...

Wow, this is exactly what I was looking for! It was a wonder why no one has ever ventured to create such a program. I sort of ditched this thread thinking it would never get any replies, so it was a happy surprise to return to a working program. Thank you!

Link to comment
Share on other sites

I need some help, the program will unly work with PKMN files? or it will be able to read sav files, cause when I load my Crystal sav it doesn't read it, well it does, BUT it marks everything empty.It's in spanish btw

Could you attach the save file? I've only tested it on English Crystal saves (for which it works fine).

Link to comment
Share on other sites

Could you attach the save file? I've only tested it on English Crystal saves (for which it works fine).

here it is https://www.dropbox.com/s/ril2n9k9cnfksah/Pokémon%20Cristal.SAV

also I tested the program with my sav file of Pokémon Yellow in spanish too, and it doesn't even recognize it as a sav file of the 1st gen

here is my pkmn yellow sav https://www.dropbox.com/s/06hujkgveh1r7ud/Pokémon%20Amarillo.SAV

Link to comment
Share on other sites

Odd eggs have been entirely 'solved': check this page out.

I've read in some odd eggs before hatching and the Trainer is actually "ODD" and the ID number is the number in the last column of that table. Both of these get replaced when the egg hatches. Incidentally, this means the event eggs distributed by Nintendo may have had special invisible OT and ID, but we'll never know what those were (probably PCNYa like the visible IDs).

Link to comment
Share on other sites

Do you have the most recent version 0.7?

Your Crystal loaded fine for me when I chose Crystal from the combo box.

When loading your Yellow I get errors about the species of some pokemon not being identified as generation 1. I've had this before and not sure why the program fails. I can look into it and see what part of the save file it doesn't like. Might be something like slots in the PC which haven't been used are assigned all FF.

In the meantime, the program has been updated so that only the first 2 errors are reported in any one session. There's also a fix for the currentHP not being validated immediately when experience or species is changed.

Attached is version 0.71

thank you, I downloaded the version that it was on this very first page, I'm gonna try it and I will tell you :D

EDIT: It worked

Link to comment
Share on other sites

  • 2 weeks later...
Demo Version 0.2 - Gen 1 PKM only

Attached is a working demo with full GUI interface. If your computer has Java installed, double-clicking the .JAR file should open the program. This is mainly to test compatibility - it would be really helpful to know whether you are able to run this and if an update of Java is required :wink:

Don't get too excited - currently only Generation I PKM files are supported, but the demo will give you an idea of what to expect from the full program. I've coded lots more behind the scenes, including full read/write support for Gen 2, Gen 3 and conversion scripts. The full version will support batch migration as opposed to opening up an editor for individual PKM files, again this is all coded but I need some time to design the user interface.

Included is a sample PKM file, but others from existing Generation I editors should load in too. Please try and break it and let me know what you did!! Try setting the move PP and experience to 999999 and see what happens - the validation is designed to be foolproof and prevent any glitches whatsoever from being introduced. Note that Struggle is unavailable on the dropdown and Pokemon with duplicate moves will have them fixed. Try deleting all of your Pokemon's moves etc.

In the next version, Gen 2 will be supported, though again PKM only at this stage and the "Convert to Gen 2" button will work. The program will detect which sort of PKM file was selected and open up the appropriate editor window.

Thanks for the help and feedback everyone.

Metropolis

Attached where?

Link to comment
Share on other sites

Does this produce Pokemon that are legal (assuming you didn't get the Gen I/II Pokemon by an event, hack, or glitch)? Are there Pokemon that can be legitimately obtained in Gen 1/2 that can't be legal in newer versions (for instance because the Pokemon can no longer be caught in the same place in FR/LG/HG/SS)? Also, if you convert a Gen 2 Pokemon to Gen 3 and then send it to Gen 4 through Pal Park, is the Pokemon indistinguishable (as far as legality goes) from one caught in HG/SS?

Link to comment
Share on other sites

Does this produce Pokemon that are legal (assuming you didn't get the Gen I/II Pokemon by an event, hack, or glitch)?

Yes in the sense that stats are computed correctly, EVs and ribbons validated so the Pokemon does not appear as a bad egg in Colosseum. No in the sense that the PID and IVs are not generated by the seeded algorithm like other Gen3 games, not to mention the possibility of moves that could be taught by TM in RBYGSC but not found in later games, like Fissure Machamp.

Are there Pokemon that can be legitimately obtained in Gen 1/2 that can't be legal in newer versions (for instance because the Pokemon can no longer be caught in the same place in FR/LG/HG/SS)?

Yes, lots, and invalid moves like the Fissure Machamp.

Also, if you convert a Gen 2 Pokemon to Gen 3 and then send it to Gen 4 through Pal Park, is the Pokemon indistinguishable (as far as legality goes) from one caught in HG/SS?

No, for a start it will be labelled as having been Pal Parked as opposed to caught.

Responses in bold. The point of the program is in-game conversion for casual players not tournament-legal conversion which is a contradiction in terms. Gen3 Johto locations don't exist, so what should the caught location be set to - it doesn't make sense. The point is that the Pokemon are functionallly identical - same moveset, nickname even stats etc, 99% perfect but due to the 1% of made-up data, they're not legal.

Does that make sense?

Link to comment
Share on other sites

Some problems:

-- Trying to export asks me to pick a directory and give a filename. The filename is then ignored and the .pkm files are named 1.sav, 2.sav, etc.

-- Loading the attached file (crystal)

pokemontruncated.sav

gives me errors about unrecognized item (which may be because I hacked in the item to get Celebi, but still)

-- Loading the attached file also tells me that I have 4195096 money. Actually running it in an emulator shows me 202955 money.

-- Box 6 is oddly corrupted. Again, running this in an emulator shows the box is fine.

Suggestion: Have a way to load .pkm files directly into a 3rd generation file (and optionally update the Pokedex to mark those Pokemon as having been captured).

Suggestion: When displaying boxes, display whatever in-game name the player assigned to the box.

pokemontruncated.sav

Link to comment
Share on other sites

Some problems:

-- Trying to export asks me to pick a directory and give a filename. The filename is then ignored and the .pkm files are named 1.sav, 2.sav, etc.

-- Loading the attached file (crystal) [ATTACH]11334[/ATTACH] gives me errors about unrecognized item (which may be because I hacked in the item to get Celebi, but still)

-- Loading the attached file also tells me that I have 4195096 money. Actually running it in an emulator shows me 202955 money.

-- Box 6 is oddly corrupted. Again, running this in an emulator shows the box is fine.

Suggestion: Have a way to load .pkm files directly into a 3rd generation file (and optionally update the Pokedex to mark those Pokemon as having been captured).

Suggestion: When displaying boxes, display whatever in-game name the player assigned to the box.

4195096 in hex is 40 03 18.

The value it should be 202955 is 03 18 CB in hex.

Looking at offset 0x23DB, the values go 40 03 18 CB 01...

In other words, the correct offset is in fact 0x23DC. Bulbapedia was wrong on that one, a simple typo, thanks! Metropolis Editor has been updated with the new offset and now reads your money in correctly :grog:

These are the (decimal) values that Metropolis couldn't match a Gen 2 item to:

137

145

142

45

45

141

136

142

A quick lookup on bulbapedia: http://bulbapedia.bulbagarden.net/wiki/List_of_items_by_index_number_(Generation_II)

These are indeed illegal arguments, but why your save would have so many I don't know. Could be a problem with the editor, could be whatever you did to your save left junk bytes around in the item slots. The most obvious solution is that these lie in the corrupted data for box 6. I'll look into what's causing that. Held items count as items for that error not just items in bag, so it's probably the held items that got corrupted.

Link to comment
Share on other sites

Some problems:

-- Trying to export asks me to pick a directory and give a filename. The filename is then ignored and the .pkm files are named 1.sav, 2.sav, etc.

This is intended. Export is to archive the whole box when selected from the box screen or the whole storage when selected from the game edit screen. If you want to save individual pokemon, do it from the pokemon editor.

-- Loading the attached file (crystal) [ATTACH]11334[/ATTACH] gives me errors about unrecognized item (which may be because I hacked in the item to get Celebi, but still)

See above, I'm looking into this, it's linked to the box corruption not your hacked item.

-- Loading the attached file also tells me that I have 4195096 money. Actually running it in an emulator shows me 202955 money.

Solved in next update.

-- Box 6 is oddly corrupted. Again, running this in an emulator shows the box is fine.

Solution: The 0x2D11 offset in bulbapedia is incorrect and should be 0x2D10. Fixed.

Suggestion: Have a way to load .pkm files directly into a 3rd generation file (and optionally update the Pokedex to mark those Pokemon as having been captured).

This can be achieved by clicking New, Edit, Open on the box edit screen then selecting the pkm file. Or do you mean only 3gpkm files can be selected? You should be able to choose any pkm or 3gpkm file.

Suggestion: When displaying boxes, display whatever in-game name the player assigned to the box.

Looking into this, would be a nice feature yes.

Replies in bold, thanks for your feedback.

Edited by Metropolis
Link to comment
Share on other sites

The problem with the first item is not that it creates multiple files, but that it asks for a filename and never uses the filename. It should either ask you to just pick a directory without a filename, or it should ask for a filename and then use the filename as a prefix (so if you type "save" it would create save1.pkm, save2.pkm, etc.)

Edit: More problems:

-- Trying to save a gen 2 Pokemon produces a file named .sav, not .pkm.

-- Loading a Pokemon into a gen 3 file doesn't set its Pokedex entry as captured

Edited by arromdee2
Link to comment
Share on other sites

The problem with the first item is not that it creates multiple files, but that it asks for a filename and never uses the filename. It should either ask you to just pick a directory without a filename, or it should ask for a filename and then use the filename as a prefix (so if you type "save" it would create save1.pkm, save2.pkm, etc.)

Fixed in version 0.73 and above.

Edit: More problems:

-- Trying to save a gen 2 Pokemon produces a file named .sav, not .pkm.

Fixed in version 0.72 and above.

-- Loading a Pokemon into a gen 3 file doesn't set its Pokedex entry as captured

Known issue - gen3 pokedex is weird and I can't find much info online about it. The relevant Spinda design and Unown are stored along with the caught/seen data, not sure if it caches the whole pokemon or just the PID for this. Gen3 Pokedex is not supported yet.

There's a few known issues. Coming soon will be a list of known issues and help files. Remember this is all still in beta and the first real release will be version 1 not 0.73.

Edited by Metropolis
Link to comment
Share on other sites

Attached is latest version. Features fixes for .sav instead of .pkm; opening directories for Export; now makes a first guess at the version using the filename. Experience is now recalculated when the species is changed using the drop down box. Basically once you've decided the level you can change the species freely without the level sometimes dropping.

Edited by Metropolis
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...