Jump to content

suloku

Innovator
  • Posts

    741
  • Joined

  • Last visited

  • Days Won

    26

Everything posted by suloku

  1. I've looked into the Stadium 2 savefile to locate registered teams and also coded a dumper that exports the registered pokémon as pk2 files ready to use with pkhex. This may help some people get their original pokémon back, if they ever registered them on Stadium 2. As a bonus, this can be used to dump the rental pokémon if you register them. Note about the dumps: registered pokémon lose the extra 0x50 terminators in the nickname (when a pokémon is never nicknamed, all extra bytes are set as 0x50, when nicknamed they are set to 0x00). This has no real impact, but it's a pitty they aren't 1:1 copies. (The status condition is also lost, but that isn't important either so...). UPDATE 11/04/2021: Pkhex supports all pokémon stadium savegames as of now, but since it seems I missed many registered teams in the initial release, I've updated the dumper so it dumps all teams in pk2 and sk2 format, optionally it will put RENT as OT name for rental pokémon in case someone wants to use them in a gen 2 game withouth manually inserting an OT. I've also included ED64-Saveswap in the file for convenience. UPDATE 14/03/2020: It seems Stadium 2 never actually stores the "full" name of the pokémon. The name is stored only until a 0x50 terminator is found. This makes depositing the pokémon in stadium 2 become "nicknamed". This doesn't make any actual different, but on the GBC games this wouldn't happen as the game seems to keep copying the bytes 0x50 bytes. Because pokémon data in boxes in the GB games isn't actually erased but rather the box slot is marked as "empty" when you withdraw/release/move pokémon, there is a chance that when you return the pokémon to GB the pokémon will become unnicknamed again, depending on the pokémon that was stored in that slot before. If one would like to return the pokémon to the "unnicknamed status", the easiest would be to have an unnicknamed evolved or wild muk stored in the box (because it's the shortest pokémon name and all chars besides the first 3 will be 0x50). Then put a pokémon from stadium 2 into that box in the same slot muk was. This is easiest done in a box with 19 pokemon, deposit muk in GB, withdraw, then deposit pokémon from stadium 2 into that box. This doesn't happen with OT name, it is fully copied. I suspect this is done so only full OT name + ID can nicnkame a pokémon (the pokémon being marked as nicknamed or not is irrelevant). Thus, this finding makes any registered pokémon recovered with the dumper be actually the same one you had back in your day. Registered teams start at 0x4000 in the savefile, here's the structure: Registered parties are 0x180 each: 0x10 header + six 0x3C pokemon structures + 2 bytes padding, 4 byte footer and 2 byte checksum 0x00 Header: 0x0 1 True if team is present (0x00 if no team) 0x1 1 Padding 0x00 0x2 2 trainer ID (default 0x0000) 0x4 12 Trainer name (GB encoding, 0x50 terminated + 1 byte padding 0x00) (default 0x5000) 0x10 Start of party pkmn, 0x3C each; uses a similar GB storage format: 0x00 1 species 0x01 1 held item 0x02 1 move 1 0x03 1 move 2 0x04 1 move 3 0x05 1 move 4 0x06 2 OT ID *0x08 4 EXP (1 byte extra padding) 0x0C 2 HP exp 0x0E 2 Atk exp 0x10 2 Def exp 0x12 2 Spd exp 0x14 2 Spc exp 0x16 2 DVs 0x18 1 PP 1 0x19 1 PP 2 0x1A 1 PP 3 0x1B 1 PP 4 0x1C 1 friendship 0x1D 1 level 0x1E 1 status condition? (status is set to 0 when the pokémon is registered) (might be padding) 0x20 2 Caught data 0x22 1 Padding? (might be status condition) *0x24 12 nickname (GB encoding, 0x50 terminated) (1 extra padding byte) *0x30 12 OT name? (GB encoding, 0x50 terminated; 0 if rental) (1 extra padding byte) 0x178 2 Padding? always 0x0000 0x17A 4 Footer 'P3v0' (0x50337630) 0x17E 2 Checksum (UByte 8 bit) Computes Header + party data + footer Download (source code included): stadium2dumper.zip Stadium2Dumper_0.2.zip
  2. I see. I did test it a little and the patch seems to do frame advancing a 12% faster. I'm not really sure how the frame-seed relationship works, for what I've read it shouldn't impact method 1 pokémon generation, but for the sake of legality (as long as running on an emulator is concerned) i'll keep using the unmodifyied rom, since it seems it the vblank patch would only yield a ~10h for what I've tested. ps: I was including the terminator when counting OT name characters, and nicknames are allowed more characters than OT, at least in international versions.
  3. Been searching at smogon and seems someone already researched how pokéwalker generation works... http://www.smogon.com/forums/members/romsstar.33244/ With the propper tools, coding a generator would be possible. What I'm seeing right now is a program that loads your save (to read things like OT name, TID/SID, game of origin, language... then you can select course and pokémon, which gets generated randomly (or not, depending on user's will) from a set of the possible frames. I guess I should start a new thread for this. EDIT: this is more complete, seems the japanese did research it thoroughly, a generator should be possible. http://www.smogon.com/forums/threads/past-gen-rng-research.61090/page-10#post-2634864
  4. Are you asking about the file? It only has the ENG pokémon. I've found the thread, apparently the uploader also got one of each for the unrelesaed courses. Thinking more about it, maybe the best solution would be a romhack that triggers the game into generating pokéwalker pokémon when selecting a course, without actually needing a pokéwalker... If I just knew how to RE (not that it means I could do it, but it would help), and I don't think there's lots of interest in gen 4 to RE how the pokewalker works.
  5. There's a file in the forums with one of each ENG pokéwalker pkm file. I wanted to produce the spanish set at some point. It would be great if the generation method could be REd, then implement it in some android app that tracks steps (or just a pc app that produces them at random).
  6. My computer got to 14million in about 8 hours, how do I enable that vblank patch? It's not like I'm in a hurry or anything, but it seems at my current state it will take 100 h to get to the frame (edit: it may just be my computer being slow, it's the last quad core model intel made so...) I'll upload the savestate when I reach a reasonable close frame for RNG with the offset for trainer name editing (I'm using my own savefile on which I put a japanese valid name for it, wiht only 6 chars etc). I'll test your script assap.
  7. That would need to know beforehand the generation method that pokémon used right? Also, it doesn't make it technically illegal, it would just mean it was generated with help of some tools to know when to press A, it would still be theoretically posible to get on real hardware (at least if we stick to reasonable amounts of time, and leaving a gba running for a month seems like the edge of reasonable) Well, that's actually a lot better. Gonna start running the emulator and using savestates, I'll get to the frame at some point. 35 days is on the borderline of what I would call legit, but could be done on real hardware with lots of patience so.... (but imagine if you fail, lol). BTW, the ditto frame (should work for any slot 2 pokémon in emerald, of course I haven't tested it, ~157 days): Frame: 816994389 Occidentary: 816994416 Time: 226942:53.15 Encounter Slot: 2 PID: E85091A9 Nature: Docile Ability: 1 IV: 6x31 50% F: M 12.5%F: M 25% F: M 75% F: F TID: 12336 SID: 07657
  8. Wait, isn't the RNG reporter time expressed in "hours:minutes,seconds"? That would be almost 6 years, not 5 weeks. If I'm wrong I'll try to get the emu running this week, most likely won't be done in just a day, but with savestates+a couple days I'll hit the seed. ps: I wonder how you reached that combo? Probably backtracking the pid generation formula to get the frame right? I'd like to do the same to get a flawless (shiny) IV ditto in gen 3, so I can use it on all generations (I did find a valid frame and tid/sid combo, but would take 25 years so...)
  9. Yes, I asked for an exampe of an AR code. I guess the most convenient code type would be the one that changes the slot 1 pokémon? For what I see they are just command-value-adress, but I don't quite get what those "end code" are used for in the OT/nickname, unless they are just to make sure the code inputs a terminator character and they typed it that way so people don't forget it. If that's all there is to it, the program is really trivial, I've wrapped this up real quick: just drag and drop a pk2 file (make it with pkhex) onto the exe and an ar.txt file will be generated. Please tell me if the code worked, currently it generates an AR code for pokémon crystal to change the pokémon in the first party slot with the pk2 file. If it works fine I'll make some executables for the other games. poke2ar.zip
  10. You may be referring to pikasav: I know there were some more save editors back in the day, but this seems to be the only that survived, probably because it was the one with more features? Maybe it is the one with AR code generation. In any case, it should be easy to write a program that converts pk1/pk2 files to an AR code, as it's just a bunch of addresses + the pk file bytes. Do you have any example for gen 1 and gen 2? The only problem I see is that the boxes have a byte to know how many pokémon are stored, but maybe what the codes did was simply to replace the first pokémon in the current box with the one in the AR code (which frankly, seems the easiest).
  11. I've been looking at how Stadium 1 (japanese) stores registered pokémon, and they are copies of the GB format. They are at the beggining of the savefile there, so most likely stadium 2 does the same? I'll look into that when I finish messing with the jap game, maybe get a pk1 conversion tool for them.
  12. suloku

    Mew Glitch

    I read somewhere (interview?) that they considered fixing bugs, but then decided that people would like to have the same experience as the original, bugs and glitches included (this already happened with the OOT remake, were they deliverately kept non game breaking glitches for people to still be able to "enjoy" them). But I feel like for these games it's just an excuse....not that I'm complaining.
  13. But magnemite was obtainable via Dream World, so you can have the line with hidden ability and tutors, unless you are against injecting the pokémon into entralink forest, in that case the only option left would be to get a savegame of someone who legitimately obtained one and still hasn't retrieved it from the forest. Imho, injecting pokémon (that were originally available in dream world) to entralink forest falls into the legit (or was it legal...?) realm, since the generated pokémon won't be different from the real deal, so what would be lost is hidden grotto location. I feel like the easiest and shortest would be an AR code to change the pokémon that appears in the stunky/glameow mission, maybe we can even take advantage of the fact that the same mission in different versions has a different pokémon.
  14. It's a pitty those seem to be lost, maybe they really are in the rom or something could be done injecting a modified stunky mission directly to ram... Maybe it would be easier to modify a rom to have the special missions recreated. EDIT: or just patch a rom to change hidden grotto encounter tables to be able to catch the funfest exclusive HA pokémon anytime (coupled with my grotto editor to force the encounters) In any case I've just checked and there's nothing lost regarding hidden abilities (if we count my entralink editor as a valid way to get the dream world pokémon), only location loss (since we can't get them on a hidden grotto), something that magneton suffers the most, since it's genderless and can't pass hidden ability, unlicke the others, which could be caught as female for breeding.
  15. Oh true, I forgot about those eggs (again, tied to shininess). And I just remembered it's a pitty the website holding the scripts is not up anymore to have the original japanese ones (for eggs and celebi event)
  16. Do they get random DV? I guess it's the case, for what I know they only bothered to fix DV for shiny gyarados encounter on gen 2 (wich is a different encounter type, and you can't scape).
  17. Sorry if that was confusing, I'll edit the first post to clarify. In any case, it's rather easy to get the savegame via soundhax. @andrewmyles I totally forgot this is the recommended (as of now) more up to date guide both for homebrew booting and cfw installing: https://3ds.guide/
  18. @Purin is there any chance it was actually stored in the DLC region of the savegame but became "locked" after one use but still stored in the savegame? Maybe you still have some save dump with the last mission you downloaded? If it was stored in the save, maybe there would be a way to re-activate it via save/ram editing. In any other case, let's hope the distro device was a NDS cartridge that eventually pops up... EDIT: I'm actually a little confused about how the eeveelutions hidden grotto funfest missions actually worked in the first place. You donloaded the mission and each one would change the pokémon found in the grotto? From what I read it seems there were several kinds of special funfest missions, one of the being the "Find Pokémon" mission, which had one of the eeveelutions, which was changed at different dates. They are probably the same structure as the missions found in the game (i.e. the one that triggers stunky/glameow to be in the grotto). I guess these will probably be gone for good... I'm also seeing there was a mission with chansey and some others. Was there any special funfest mission that allowed to catch a pokemon that would otherwise have it's hidden ability unavailable? That's probably the most relevant question in the end. EDIT2: also, maybe it's like gen 3 WC scripts and special funfest mission prototypes are to be found in the roms?
  19. I see a problem here: this glitch is only possible due to using a savefile initialized as japanese in a different region cartridge, so I'm not sure if it can be considered a glitch as this behaviour would be impossible without save file manipulation, but quite interesting nonetheless.
  20. Not tested on gen 3, but recent gen 1 events are made so you can't nickname them even with soft reset TID/OT combination. They should have checked for this in pokétransporter imho, I was actually very surprised they didn't since they bothered doing it for the gen 1 games. Also, the fly/teleport glitch is easy, but still requires some proper setup (needs the correct trainer). I'm gonna bring another point up: gamefreak isn't too strict with their legality checking: should we just state their standars as what is legal and accept generated pokémon that we know are impossible to get but GF allows in the PGL (i.e. a gen 3 old sea map mew not obtained in a japanese game, which can also be accessed with elaborate glitches and will get all the way to gen 7 with no problem, or so I've been told). EDIT: also, there's the "problem" that pokétransporter messed up shininess for gen 1, if they fix it in gen 2 (if they ever release them) there would be two shiny dv spreads for gen1->7 and only one for gen2->7. I don't have the skills to produce all gen 1 possible dv spreads, also, in yellow they should be a little different due to different timing in the code (or so I read). I think it would be great to have full possible dv spreads for each species for gen 1, but I also understand it would be a tremendous work that would not really make much a difference.
  21. 3DS stores data on the SD card, but this data is encrypted and the only way to decrypt it is using the 3DS itself. You need to run homebrew on your 3DS to get a copy of the decrypted savedata on your SD card. I suggerst finding a tutorial about how to run homebrew and then using jksavemanager to get your savefile. As of 3DS system software 11.3 the best method for this is Soundhax+homebrew launcher. If you are on 11.2 or below you can use that method too, but you may want to consider installing a custom firmware (which is not possible on 11.3). Project pokémon is not really focused on 3DS "hacking", so I suggest looking information about the process elsewhere, there are plenty tutorials in youtube and other sites (but be sure to use an up to date tutorial, 3ds scene has change a lot in the last years and old tutorials won't work or may even risk your 3DS).
  22. Stadium 1 and 2 (international) has a LCRNG, I don't think it has the recently discovered limitations like the gameboy games, but keep in mind that STADIUM pokémon are gifted with a different catch rate so they have the Normal Box or Gorgeous Box items, so they were thinking in gen 2 when they coded the game, so it may be possible that some restriction is in place to prevent shiny DVs. It seems Pocket Monsters Stadium (gonna call that the original jap stadium 1) doesn't have gift pokémon (I didn't find anything regarding those). Some months ago I posted n64 savegames with each of the gift pokémon, so they can be easily received to a GB savegame with the proper emulator setup. They work with any language version, but propper RE would be the best to see if they can be shiny. By the way, I've been working on a jpk1 exporter for the Pocket Monsters Stadium rom, I might turn it into a full editor at a later point. I just need to get the character encoding map, which might be a little difficult as I'm mostly try and error with the UCS encoding as reference and I don't have a clue about how to try finding the actual full encoding in the rom (probably dumping the full font textures would help, but I already tried and each character has its own texture and I'm not really into rom hacking to try finding them all to see which characters the game supports).
  23. The VC local wireless does even use standard comuniaction protocols? I recall older pokémon games using custom ones for local trading, but I agree global trading with chat rooms would be possible, or even just a box to input IP... but so difficult to implement. They could have added an alternative box managing system to the emulator, but they didn't (that's something I wished to happen). What I still have my hopes on is that they release celebi as an event. There's an easy way to do this, but I don't think they'll be doing it: 1.- Have special download codes for the people "wining" the event 2.- The code downloads an app from the store 3.- When the app is run, you can select a crystal game in the console and enable the celebi event. That would work, but I highly doubt we'll be seeing this, they'll just go for trade distro again if they ever do this. The celebi event is just a flag, when it's enabled you'll start the gs ball events after exiting the pokémon center in My opinion is that the original distro was probably just a script uploaded to the server that the game would download and execute, a script I guess was only enabling that flag, in the same way the egg events were reproduced a while ago at glitchcity forums by hacky, but unfortunately the download links are long gone (even though we could have downloaded the files when they were online with a computer, if we knew the address).
  24. UPDATE: Added registered teams structure I've been researching a little Japanese pokémon stadium 1 (the japanese only game, do not confuse with stadium 2 which is international stadium 1). Also, I've been looking at the rom searching for the trainers and their pokémon. They are easy to find, but they seem to use a different character encoding. I'm hoping registered pokémon use that different encoding, so I'm able to map it...unless there's an easier way to do it, I'm not feeling like registering 6x42 nicknamed pokémon to get the n64 japanese map. Update: registered and stored pokémon use the GB character encoding, only pokémon in the ROM seem to use the n64 encoding, which I think it's a variant of UCS, characters are two bytes, the first one seems to be "always" 0xA5, if anyone recognizes the encoding it would help a lot. Stadium 1 (JAP) Registered Teams ---------------- 0x00000 Registered team 1 0x00128 Registered team 1 backup Each registered team is 294 bytes, 294*2 (588) bytes with the backup. There's a total of 16 slots for team registers, so registered teams go from 0x00 to 0x24FF. Team structure: 0x000: Unknown, seems to always be 0x0001 for all teams 0x002: OT name from the save that registered the team (6 bytes) 0x008: OT ID# from the save that registered the team (2 bytes) (+ 0x50 terminator?) 0x00B-0x012 Unknown (padding?) 0x013: Number of pokémon in the team (1-6) 0x014 Pokémon slot #1* 0x041 Pokémon slot #2* 0x06E Pokémon slot #3* 0x09B Pokémon slot #4* 0x0C8 Pokémon slot #5* 0x0F5 Pokémon slot #6* 0x122 Register team 1 "POKE" footer 0x126 Register team 1 checksum * Pokémon struct is 45 bytes, same structure as n64 boxes, see below for reference N64 Boxes --------- 0x2500 First Box block 0x2513 Number of pokémon in n64 box 1 0x2514 First pokémon in n64 box 1 0x2A5A Footer "POKE" (0x504F4B45) 0x2A5E Checksum (additive UByte 8 bit checksum for the whole block, 0x2500-0x25A5D) All boxes share the same structure, they are 0x560 bytes long (1376). I still need to locate the offsets for the other boxes. Also, there seems to be backup blocks for each box in case it gets corrupted. Each pokémon is 45 bytes long (00 to 0x20 is the same structure as GameBoy, then comes Nickname and OT as this game doesn't use pokémon lists apparently): 0x00 Index number of the Species 1 byte 0x01 Current HP 2 bytes 0x03 Level 1 byte 0x04 Status condition 1 byte 0x05 Type 1 1 byte 0x06 Type 2 1 byte 0x07 Catch rate/Held item 1 byte 0x08 Index number of move 1 1 byte 0x09 Index number of move 2 1 byte 0x0A Index number of move 3 1 byte 0x0B Index number of move 4 1 byte 0x0C Original Trainer ID number 2 bytes 0x0E Experience points 3 bytes 0x11 HP EV data 2 bytes 0x13 Attack EV data 2 bytes 0x15 Defense EV data 2 bytes 0x17 Speed EV data 2 bytes 0x19 Special EV data 2 bytes 0x1B IV data 2 bytes 0x1D Move 1's PP values 1 byte 0x1E Move 2's PP values 1 byte 0x1F Move 3's PP values 1 byte 0x20 Move 4's PP values 1 byte 0x21 Nickname 6 bytes 0x27 OT 6 bytes Note: Nickname and OT seem to be stored in the same character encoding as the gameboy games, but the game seems to change some invalid characters to 7F when transfering. Pokémon in the rom, such as trainer pokémon use a different character encoding.
  25. I did compile 0.3 as cia at some later point, not sure why I didn't add it to the release package (probably because not many people had access to custom firmware back then). I'll update the download file to include the cia: https://github.com/suloku/pdrpse/releases/tag/0.3 EDIT: I remembered why I didn't release the cia: I built it as test, removing the standard 3dsx code and I wanted to merge sources to be able to build both the cia and 3dsx, but never got to do that. I may just upload the modified source for the cia, I don't think this will be getting any updates.
×
×
  • Create New...