Jump to content

Metropolis

Member
  • Posts

    201
  • Joined

  • Last visited

Everything posted by Metropolis

  1. Glad you're happy with it! Attached is the latest version 0.7 with read-only item support, Pokedex editing for non-Gen3 games, proper error handling and many bug fixes.
  2. 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 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.
  3. It's bottom of my priorities to be honest until substantial progress is made mapping N64 save locations. Sorry.
  4. Metropolis

    Mewtwo!!!

    IVs were changed in Gen VI so that legendaries always receive three at 31, so they've nothing out of the ordinary, and a -SpAtk nature like Jolly is bad for Mewtwo so unfortunately it's not good sorry.
  5. 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?
  6. 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
  7. I'm happy to share any details about the program and anyone is welcome to use any code from it they'd like in their own project just send me a PM and I'll share the code, but would rather not make the whole source code public and allow someone to pass off the whole program as their own. Thanks codemonkey85, I've finally got the checksum working but the C++ doesn't translate into Java well. There's no unsigned primitives here, it's a major pain! Currently I only have read/write support for party pokemon, just need to figure out the way stored pokemon span the section boundaries, it's fiddly. The migration itself works, but a few issues to iron out before I'll release the fully working version: Ability flag: According to Bulbapedia it's PID mod 2, but neither that nor (PID mod 2) flipped works? In each case I get at least one party member with a glitched ability. Does this depend on the species itself as well as the PID? I'm aware of the subtleties with abilities changing upon evolution but can't see what's going wrong here at all Pokerus: Bulbapedia isn't clear here, so the program currently erases Pokerus. I'll do a bit of digging through the hex codes to see how to support this, but any advice would be helpful. Japanese characters: I haven't supported Japanese characters yet, so the program always leaves spaces where the Pokemon had a japanese symbol. Not an issue for Gen1 or 2, but since it's possible for english Gen3 games to have japanese pokemon on, I should support this.
  8. Yes! I've done much more complicated things including the full save block rotation and checksum, but whatever I try it's bad egg after bad egg! I'll keep trying variations. Probably doing something wrong with the endianness - got code to flip the bytes right elsewhere but it's trickier bit by bit to set the egg flag and things.
  9. The original version will be entirely superseded by the GUI implementation that loads savs, but I won't be deleting the command line version I posted originally. If you'd like a command line PKM to PKM converter like the original but without the bugs (there's been a few glitches ironed out) I can do that.
  10. Nah it's fine, ask away. It's lower on my priorities than getting a release-able working version, but will definitely be implementing Stadium and Stadium 2 as the next step. I'm exactly the same - would love to see a Stadium editor to directly load in registered pokemon and edit the N64 boxes. Also possible would be a Pokemon Box RS editor, but it's such a niche game there isn't much of a point. I mean it only exists to store Pokemon from RS, which a save editor kinda does already lol. Whereas editing Stadium allows bypassing the transfer pak system, which would be cool. I'll keep you up-to-date. In the meantime, any help at all with the Pokemon Data Checksum would be appreciated - I'm at a standstill with it. There's other things I can test/implement without it (such as reading in Pokemon and editing them, converting Pokemon from gen1/2 and back), but writing Pokemon to Gen3 isn't possible at the moment. Worst case scenario I'll release a temporary version which offers Gen 3 to Gen 2 only, in addition to full Gen1/2 functionality. You'd be able to transport Pokemon back to GBC games, just not forwards until I sort out the checksum!
  11. Latest news: Project approaching completion - full support for loading/saving all gen 1 and 2 games, with a range of mass edit functionality e.g "everything shiny". Gen 3's checksum has been giving me issues - got the item encryption and block shuffling to work as well as the Pokemon data shuffling. No longer getting full save corruption but still need to sort out the Pokemon checksums - it's all bad eggs at the moment! It's only eight lines or so of code amongst thousands of lines, so can flesh out the GUI and release a fully functioning .exe version as soon as that's sorted. If anyone has any more details or standard code to perform the checksum as described in Bulbapedia would be much appreciated.
  12. Oh cool, but you need to beat all 8 to use waterfall right? Or is there some exploit? I didn't know that, thanks. Yeh you're right about the level thing too, suppose you could always just edit the ID numbers though.
  13. My comments in bold.
  14. Old Sea Map was never distributed outside Japan, so English Faraway Island Mews aren't legit. For the others there'll be some flag that gets set when they're received. I got a legit Auroraticket back in the day but since lost that save file, otherwise uploading the .SAV might shed some light on it. There's videos out there with gameshark codes and visiting the islands, so it should be possible to find a hack. I'll look into it. Really it comes down to comparing a save just before and just after activating the event with a hack and seeing what memory locations changed. Other things like time played will have changed, so it's more complicated than just seeing it, but I think there's hope. At most, say, 50 variables would change then it would be a case of loading the save each time with just that variable changed to the new value and everything else left alone, but it could be a more complicated combination than just a flag. You get the ticket from a Pokemon mart guy right? That flag may store the item index of the ticket, so querying that in the list of 'changed' values might give it immediately.
  15. ZERO!
  16. Link it with a GBA flashcard with the e-reader on it or find a barcode to print and scan with a real one?
  17. Yes: Hacking key items is generally a bad idea!
  18. Update: New Game+ is finished and tested. If anyone's interested in trying it out, let me know and I'll compile it, otherwise will include the feature in the first main release. There's one issue that I still need to iron out - if any key items are deposited in the PC, they don't get deleted when the key items pocket is empty which would lead to 2 Super Rods etc. I'll add a routine to search the PC for any deposited key items and delete those, otherwise it's working perfectly for Red/Blue/Yellow/Gold/Silver/Crystal. Something I've always wanted to see - the ability to go through the story again to collect the other fossil, eevee, hitmonlee etc without losing your Pokemon, items, money and Pokedex entries! Edit: Bug fixed, now working on 3rd gen support and user interface.
  19. Thanks again. An update regarding the Pokemon Stadium file: Bad news is a simple hex search for matching data reveals nothing, but there is hope. Viewing the .fla and .pj save files in a hex editor, I can see the bytes 4F 50 00 00 7F 01 45 4B appearing more than once. Translated to ASCII this gives OP?? ??EK which means the data is being stored little-endian instead of big endian. This is the case with Ruby/Sapphire too and makes searching for text a little more complicated as each byte has to be flipped around in a special way. In layman's terms "it writes each bit of data backwards". I'll translate a PC Pokemon's data this way and query it, hopefully will reveal the offset of the data and I can adjust my algorithms to write/read the code from Pokemon Stadium and Pokemon Stadium 2! Current stage of the program: Full read/write functionality from any generation 1 game save to another. The Pokemon are loaded in a way that the conversion routines in the test program above will run on them, so it's very close to completion. Tested a load of all Party and PC Pokemon from a Red save and write of them all onto a Blue save, and it works perfectly. I still need to implement pokedex flags and items etc, but quite a cool tool in itself for a player who felt like starting the story afresh without losing their Pokemon! What features would people like to see? I think I'll go with the "new story" feature that would reset all but the "core" pokemon/items/pokedex/name/etc.
  20. Glad you're happy with what I've done so far, thanks for the feedback! I'll have a play around with my Pokemon Stadium and Stadium 2 save files (the .fla ones around the 128KB size). In theory it should just be a case of searching for the hex matching the pokemon in storage, then using that to deduce the memory locations of the stored and registered Pokemon. I suspect the storage mode will use the same formatting as the gameboy games, in which case it will be no harder than writing to game boy save files. Plan is for the next version to read/write party and PC pokemon from one save file to another. Turning this into a full editor wouldn't be too difficult, but there's editors out there already, so I'd rather focus on something new. Working towards a "complete migration" tool that would transfer all Pokemon from one save onto the other without overwriting the data. This creates a problem with regards to synchronising process - suppose the user plays one version a bit more and wants to copy only the Pokemon they've caught since the last migration? My proposed solution is to create a hash code for each pokemon on each game that encodes the IVs, OTID and Species Number. This means that attacks, effort values, experience, etc. can change and the Pokemon will still be recognised as "the same one" that got transferred before. This comes with the disadvantage that if a hacker were to max out all IVs they wouldn't be able to transfer more than one of the same species. Keep in mind that Gold/Silver does something like this itself when checking if the Defense and Special IVs match when breeding. Without this check you could easily end up with lots of duplicate Pokemon and have to release them all, which would be annoying. Eventually this will probably end up as a whole suite of conversion and save editing tools, because the abstract representation of the Pokemon is the same for each tool. It would be cool to be able to transfer items from RBY to GSC and RSE - even the Stadium and Stadium 2 games won't let you do this as the items are separated into color and metal boxes! As soon as I get the free time to code the remaining sections I'll develop this into a save editor not just PKM converter. All the offsets/info needed are on Bulbapedia, I know how I'll code it out.
  21. Fairly sure anything in the range 0 to 7 gives shiny, not just 0. That makes it the 8 in 65536 chance that has remained the same since the first shiny Pokemon in GSC.
  22. Yes there's very much a point: firstly it's something users would like to see, so I'm only trying to help secondly the code lends itself to automation. I hope to introduce a batch converter in the next update that would allow mass conversion from one .sav to another. That's just a case of getting the memory locations right, I've done all the fiddly stuff already. Don't lose the wood for the trees - only a very small part of the Pokemon has to be artificially changed and this is totally unnoticeable in regular gameplay. Pokemons' stats change slightly upon trading anyway - look at the recent change to base stats in X and Y from Black and white for example. The important thing is that is is very much the same Pokemon, and will always migrate in the same way, nothing is randomised. Rather than knocking the concept, could we run with the concept so that those who would like the ability to convert Pokemon between versions can do so as best as possible? Did you try running the code itself?
  23. Aura Mew were distributed after DS games were out, so it's possible.
  24. One question: Why is the shiny Typhlosion nicknamed wrong? Normal gameplay wouldn't have let you change the nickname which means either the pokemon were hacked or Nintendo got the nickname wrong!
  25. Please see the new thread for full Mac OS X download links. Hi - I wrote some Java code to do this recently, see the attachment (it will need unzipping first). I'll work on Stadium 1 and 2 compatibility in the next version, indeed that would be cool! For the moment it converts between any of the first three generations of games. Let me know what you guys think. There seems to be a bug regarding the PID and ability flag, where Encyclopedia Pokemonica reports an error even though the parities match. Should be just a case of comparing the PID and Ability flag parts of the file before and after Encyclo. fixes it to see what the issue is. The checksum should be OK, but haven't tested it since I rewrote the code. Enjoy! Pokemon Time Machine by Metropolis - version 0.1 beta Instructions: Run the TimeMachine.jar file in command prompt by first placing it in your root user folder then entering: java -jar TimeMachine.jar You should be prompted to enter the filename of the PKM or 3GPKM file to be converted. The easiest thing to do here is to drag the file into the same folder, then type e.g. bulbasaur.pkm into the command prompt. The destination game can be a single word such as ruby or the number of the generation. This determines the format the Pokemon will be converted to. Finally, enter party or pc as appropriate and the new file will be saved as newpokemon.pkm or newpokemon.3gpkm in the same folder. Due to the changes in code from GSC to RSE, a perfect backwards conversion is not always possible. For example, the only shiny Unown in GSC are of forms I or V, and all shiny Charizard are male. This creates a problem when converting the Pokemon, so the following priority list is used to determine which attributes should be preserved: Unown Shape > Shiny > Gender > IVs. This means that Shiny Unown A become regular Unown A, Shiny Female Charizard become Shiny Male Charizard and the Attack IV of any Pokemon is lost in favour of its gender value. Since natures did not exist in GSC and the HP stat runs off the four main IVs, minor changes to stats are inevitable whatever priorities are applied. IVs are halved and Effort values are squared to match the changes in range and stat formula. The following information will be lost when a Pokemon travels backwards - HP IV, Attack IV, Special Defense IV and EV, Personality value, the secret ID, language and version of the Original Trainer, Marks, Pokeball type, Contest stats, Ribbons and any move or held item that did not exist in GSC. If the Pokemon was caught at a level exceeding 63 or at a location outside of Kanto and Johto, then this information will be lost also. Unown ? and ! become Unown F, the default Unown used in Sugimori artwork. Status ailments and Pokerus are currently not supported, but will be included in a future update. Held items are converted according to the following table: PSNCureBerry = Pecha Berry PRZCureBerry = Cheri Berry Burnt Berry = Aspear Berry Ice Berry = Rawst Perry Bitter Berry = Persim Berry Mint Berry = Chesto Berry Pink Bow = Silk Scarf Miracleberry = Lum Berry Mysteryberry = Leppa Berry Gold Berry = Sitrus Berry The code hasn't been tested thoroughly, so there may be well be a few bugs. Feedback appreciated! Please see the new thread for full Mac OS X download links.
×
×
  • Create New...