Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Posts posted by suloku

  1. Ok, I did not understand the purpose of your questions. OT gender shouldn't matter for the in-game trash bytes. We could technically locate (via memory dumps) where the in-game trash bytes come from, then see what the memory address they come from is used for previous to the name generation and if it falls under a DMA address, but given that I recall in-game catches having apparently random trash the bytes probly depend on what you have done in-game prior to the catch, which shouldn't be much of a concern.
    In any case, the gender shouldn't affect them (or more like I personally can't think of a reason why it should).

  2. 16 hours ago, St. GIGA said:

    Can someone answer

    Could someone answer this?

    They are just what was in that memory region before it was used to store (then copy to the pokemon) the nickname. It will most likely never be the same, and more given emerald has DMA. In any case there's almost no chance that any in-game generated pokémon will have trash bytes of any event distribution, and if one has, it's mere (extreme) coincidence.

    Trash bytes for ingame pokemon should be random, and if you are worried about them, you are better off clearing them via colosseum/xd. Besides being obtaines in emulator and rng manipulation, the mew should be totally legitimate either way.

    I don't get why you want it to look like an event pokemon though, the generation algorythm might have been different from the one used in-game, so any pid/dv combos for in-game mew wouldn't (most likely) apply.

    • Like 1
  3. Quote

    From Generation VI onward, a female Pokémon has an 80% chance to pass down its Ability slot, regardless of whether it is bred with a male Pokémon or Ditto. Since Generation VI, it is possible for male and genderless Pokémon to pass down their Ability. From Generation VI onward, if a male or genderless Pokémon has its Hidden Ability and is bred with Ditto, it has a 20% chance to pass down its Hidden Ability. Ditto's Ability is always irrelevant to inheritance.

    Source: bulbapedia

    I seem to understand males will only pass HA with ditto. I'm not sure about the same species "Male HA + female no HA", or if "male HA+female HA" has a 100% HA offspring... but if the "male/genderless can only pass ability via ditto" applies, then "Male HA + female no HA" can't output HA and "male HA+female HA" is the same as ""male no HA+female HA".

  4. I forgot to mention that if you are using savestates you'll need a way  advance the RNG, otherwise you'll allways get the same PID. Or you could just change OT and SID before generation if you don't care about those so the pokemon is shiny (you can read the rng seed with lua and probably know the pid beforehand, or get the pid, store it and load the savestate).

    Not sure how much you can acomplish with lua though.

  5. 3 hours ago, AJBinky said:

    Shininess is determined by a calculation involving the Original Trainer's ID number and secret ID number, as well as the Pokémon's personality value.

    The exact calculation is (TrainerID xor SecretID)xor (PersonalityValue31..16 xorPersonalityValue15..0), where the latter two values represent the highest and lowest 16 bits of the 32-bit personality value respectively; more detailed information can be found at the personality value article.

    The above formula can result in a number from 0 to 65535. If the result is less than 8, then the Pokémon is Shiny. This gives an overall probability of 8/65536 or 1/8192, exactly the same as in Generation II.

    Source: bulbapedia

    There's no shiny flag.

  6. On 26/3/2017 at 0:16 AM, St. GIGA said:

    Have you by any chance extracted the Pokemon Stadium pokemon? I would suggest doing the Japanese V1.0 Non-151 version of Pocket Monsters Stadium, as the Pokemon and Trainers in it are clones of actual 1997 Tournament Pokemon as JPk1 files. More info was found by suloku.

    I will probably try adapting it to stadium 1 jap, since they seem to also have tournament pokemon. I hope they used the same encoding table...

    • Like 1
  7. The trash bytes are unique to the device/rom that generates the pokémon, since they are just what lied in memory when the pokémon was generated (from my point of view I don't see a reason why they didn't clear those bytes, but at the same time, I also don't see a reason why they should have cared).

    What I said about Colo/XD removing them is from this point: OK, we know we can't never do 1:1 replication (since that needs the actual distro device, or a copy of it), but if we throw trash aside and just concentrate on what makes the pokémon unique to that event (PID, TID, OT, OTgender, IV, level, met place...etc) and we can replicate that 1:1 that would still be awesome. If you are using a homebrew app to get them I'd personally still prefer single pk3 files from people who actually got the event.

    But for personal use? Fun? Gen 4 onwards (since that clears the trash too)? I'd really like to have something like that, albeit I understand the concerns collectors may have, but faking some gen 3 event on gen 4 onwards is really difficult to discern (and many are available anyways).

    That's just my personal opinion, actually I think the fact that we can't replicate trash is good, because A) Doesn't matter for gameplay/gen 4 onwards B) It's a good way to quickly know if the pk3 file was just generated C) There's a legit way to get rid of the trash bytes so even generated pokémon can be claimed to be fully legal without having trash bytes.

    ps: I think I finally found a way to tell legal from legit appart (I always confuse the correct word), hope I didn't mix them up.
    ps2: yes, GF switching to an in-game generation for most events is really nice, gen 1-3 are a nightmare for events....and gen 3 is actually better than those.

    • Like 1
  8. This is a simple program to view the teams in Pocket Monsters Stadium (JAP) and all data relative to the pokémon.

    It can also export individual pokémon as jpk1 files to use with pkhex. It is worth noting that the teams and trainers from Level 50-55 Tournament are (in theory) copies of the participants and winners of a real tournament that was held in japan.

    jpk1 code is heavily based on pkhex.

    Download: https://github.com/suloku/PMStadium_Viewer/releases/tag/0.1
    Source code: https://github.com/suloku/PMStadium_Viewer/

    ps: this needs a z64/v64 rom, you can find a converter here: https://www.zophar.net/utilities/n64aud/tool-n64.html
    ps2: this is for the japanese only game, not the international Pokémon Stadium 1, you can find an editor for it here: https://github.com/Guernouille/Stadium_Editor

    • Like 2
  9. So, does the gallery currently hold original data? I think it would be somewhat important to make sure all original data is in preserved, but I did not play any of the games at the time so it's not like I can contribute. I did download all what was uploaded to the old gallery, but for what I've read some of those might be "wrong" too.

  10. Does someone have the PokeSkinED v2.1 english version? I just realized the package I uploaded doesn't have it in english and it's the only application that allows to create custom skins for BW/BW2.

    EDIT: the correct link was just some posts above by BlackShark: 


  11. 24 minutes ago, ajxpk said:

    no one would ever be able to recreate the whole generation process in a 100% accurate way.

    Are we talking about trash bytes here? Just mentioning due to colosseum/xd getting rid of those, thus making them virtually the same.

    A generator for all the events for me would just be something nice and insteresting to have both for users and documentation purposes on the algorythms, even though I'd rather have compilations of the real deal (which has been in the works for a while) or distro rom dumps.

    The only real use would be for those pokémon that came with exclusive moves on the events, as you can get anything else trough legit means and RNG manipulation (probably?).

    • Like 1
  12. The program has been updated with 3DS Link support (Dream Radar). This can be used to obtain all Dream Radar exclusive pokémon without actually using Dream Radar, which is good news for emulator users. Also, this covers another feature that was Pockestock only until now and surpases it, as the flags for each legendary pokémon can be wiped out so they can be trasnfered multiple times (even on real hardware).

    3DS Link editor: this allows to edit the 3DS link data, which was only ever used by Pokémon Dream radar. This has a "legal mode" (default), on which you can only insert pokémon and items available in Dream Radar and a "All mode" on which you can insert any pokémon or item. The main purpose is to allow the retreival of Dream Radar exclusive pokémon (like weather trio terrian formes) without the actual need to use Dream Radar. You can also clear the catched flags so you may transfer the legendary pokémon again to your savefile.

    You may read the research thread here if interested:


    • Like 3
  13. On 23/3/2017 at 7:49 AM, BlackShark said:

    You can't clear the whole 0x7F000 block. The CRGF identifier has to be there. Otherwise the DR thinks you don't have a save file.

    Yes, I thought that might have been the culprit, I should have explored more why my save got deleted after clearing the blocks.

    I did plan a dream radar editor since the begining, but never got to research it. I already have functions for block managing, checksum fixing and decrypting so It's not like I have to make all from scratch.

    In fact, I'd like to replicate all pokestock functions that can't be done with pkhex (I think entralink records and other stats may be the only thing missing since other functions can be done with pokegen or other english tools, but I'd also like to see those in an open source fashion), but since there's no demand or personal need motivation to do it just lacks. As ultimate goal, integrating all into pkhex would be great, but my coding style and knowledge isn't adecuate for it, but at least an open source program can serve as some sort of documentation for someone else to integrate it into pkhex.

    EDIT: I have the editor nearly finished and stumbled upon a problem, but after comparing two examples with pockestock I've noticed how the actual encryption key is generated:

    Enc key at 0x7F014 is XORed with the legendaries flags present at 0x25E04, and then that's the actual encryption key that will be used and stored at 0x7F090.
    The value at 0x25E00/0x7f004 might be just a seed to generate the next encryption key...it doesn't serve any apparent purpose.

    In any case, with that last piece of information I can complete the editor, hopefully bug-free.

    EDIT 2: You may find the updated program with the 3DS link editor here: https://github.com/suloku/BW_tool/releases
    Hopefully it's bug free, it seemed to work fine for what I tested, even just reseting the flags worked.

    EDIT 3: I've just re-read BlackShark's post and turns out I failed to understand that he already explained how the flags where XORed with the encryption key... (blame it to language or me being tired, luckily I didn't spend more than 15 minutes to figure out, it would be a shame if I spend hours trying to find something already found and posted...)

    • Like 1
  14. On 16/2/2017 at 1:00 AM, suloku said:

    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.

    As I said, if it works I'll make versions for the other games (not sure how to test myself)

  15. Nice find! I've just tried it myself, at first 3DS Link option claimed the data was corrupted (I used Pockestock to insert the data instead of the actual app), so I basically wiped out 0x25e00 to be all zeroes and put the dream radar data at 0x7F000 with an encryption key of 0x00000000.

    Now I'm thinking that clearing both 0x7F000 and 0x25e00 block should reset the flags, but I think I already tried and my save got erased due to corruption...probably I messed up somewhere.

    By the way, the value at 0x25e00 (and enc key) gets updated also when transfering non lengedaries/items... I wonder how that works.

    I'll code my own version of PokeTrainerS tomorrow, with an option to "reset" the encryption key to receive the legendaries again. Or maybe I should just make it always wipe the data and write it unencrypted for simplicity?

    ps: in the end you were the one who did all relevant research and findings

  16. Basically, it seems that clearing the flags needs an extra step since they seem to be encrypted in some unique per savegame way.

    I've just thought a tedious way of locating where the secret value migth be, albeit time consuming:
    1) Create two blank savefiles (A and B) (blank so less data is in them, the 3DS link feature is accessible anyways).
    2) Put the value at 0x25E00 from B in A, then check if any of the lengendaries can't be transfered anymore (we want at least one to be flagged as already transfered)
    3) Start inserting blocks from savegame B into savegame A. After each insertion, check if the game allows to transfer the legendary again.
    4) Repeat 3 until we can transfer the lengedary.

    Those steps would allow us to locate the block where the value used with 0x25E00 is stored, from there locating the actual value should be easier...at least in theory.

    Another option would be to reverse engineer how the value at 0x25E00 is generated on a new game, but that's something I can't do. This reminds me of the mirage island in ORAS, I hope this uses a simple operation with a value somewhere in the save, and not a complicated algorythm like that one (which someone actually went and kindly reversed).

    EDIT: I've been using desmune and I've noticed that each time you receive 3DS link data, the value at 0x25E00 is different, so as I feared this seems to have some RNG involved...

    • Like 1
  17. On 9/3/2017 at 9:35 PM, virgyxx said:

    1) How can I create an event where the player receive NOT an egg but directly a specified Pokémon ?
    You'll need to create a script yourself for that and put it on a wondercard. I wanted to modify the givegg scripts to directly have a a "give pokemon script" button, but as you can see it has not yet been done (having 7 languages in the game, meaning 7 scripts doesn't help my motivation).

    2) How to create a custom event of Regi dolls ? i can't see any option in the tool to enable the player to receive the dolls
    You could create a script that gives you the Regi Dolls.
    Also, we wanted to make e-reader saves that would work with games other than japanese (an user already had them in fact), but I've never actually looked into that.

    But you can use the Decoration Editor to add the Regi Dolls to your savegame.

    3) How can I change the current pokémon in the Altering Cave?
    The script for this is actually in the rom, we wanted to make a wondercard for each one, but never got to write the WC text for all languages. I think ajxp had some text, I'll ask him. In any case I'll try to include a english and spanish version in the package for people to use. (The way this script works is that it will change the pokemon in altering cave each time you talk to the man in green/blue)

    As you can see, the tool allows to do many things with custom scripts, but being able to do it was the main objective and little has been done. Well, I made a wondercard that enables the eon ticket event in emerald and another one that resets the legendary flags so you can rebattle/recapture them, but never uploaded them becasue I did them for some tests and are somewhere in my computer.

    I should really retake this project and close those loose ends.:$

    • Like 1
  18. I received a spanish Celebi from colosseum long time ago using the AR codes, maybe a german/french one too (on PAL, you just need to change the game language setting before receiving). I don't have a clue about how to receive pikachu, I've never seen any video/post with details and I may be dumb for never finding it in the disk (not that I tried that much, but I did try all the options in the bonus disk menu).

    Fun fact about the spanish colosseum celebi: OT name is "Ágate", and because they seem to have changed character encoding in gen 4 onwards, the first character "Á" appears as garbage in all following generations.

    Also, it went up to gen 6, haven't tried to put it on gen 7, but I assume it would pass.

  19. 10 hours ago, DryBones157 said:

    Is there a way to change my Super Mystery Dungeon in Spanish? Sorry for bothering, but I want an easy way, because most of the majoriy of tutorials are usually confusing :/

    Depends on your 3DS configuration. If you have custom firmware and are using LUMA cfw (if you are using something else, you should change to Luma), it supports per game language/region faking. If you don't have custom firmware and are on official firmware <=11.2, you should follow this guide: https://3ds.guide/

    If you are on 11.3, you can still run homebrew, in this case you'll want to use HANS to run the game in another language setting. Here seems to be a good guide to run homebrew on 11.3: https://www.youtube.com/watch?v=XNXfDiFnI7k

    I do recommend installing a custom firmware if you have the chance, but you can still use HANS in any firmware 9.x to 11.x via SoundHax (the youtube video guide). There's a step in between, which is stayin in 9.2 or 11.2 and use homebrew to run a custom firmware from your SD card, but I find this unnecesessary and more tedious than the safe and quicker installation of A9LH and custom firmware. The only benefit is that you can't brick your 3DS, but the current A9LH installation process is foolproof and has many security checks to ensure no one screws up, the only real danger is that you close the lid/suspend your 3DS while on firmware 2.1 (a step needed for installation).

  20. 13 hours ago, Purin said:

    1) the PK3 generation algorithm

    That would be the most troublesome to get, not sure how the RE efforts on that have gone.

    13 hours ago, Purin said:

    2) code for fixing checksums of all Pokémon GBA saves, in C language

    BlackShark's Mirage Island appearance program was what I used as basis, which I think in turn is based on kaphotics checksum verification tool. Thinking back, if it weren't for his program I probably wouldn't have dared to play with gen 3 savegame editing.

    Also, I think the client from glitchcity I posted previously has been updated to handle checksums and even party/pc pokémon with simple functions.

    I have another alternative, for now we have:
    1) A client for each distro
    2) Client-host communication

    As an (easiest?) alternative, I suggest that the final client binary has a dummy pk3 file embeded. The host generates the pk3 once selected using the needed algorythm, then it changes the dummy pk3 file to the actual pk3 on the client and sends it. The client would only need to be a really simple app to check if there's party/pc space and add the pk3.

  • Create New...