Jump to content

Eskuero

Member
  • Posts

    25
  • Joined

  • Last visited

Everything posted by Eskuero

  1. After a quick look at your battle videos files I think the ek7 data seems to start at address E41 with the expected size of E8, and a gap of 28 empty bytes between every mon. Proof of this is that I know you used a Kommo-o named JACK SPARROW on first slot c: I'll be taking a deeper look later. EDIT: Nevermind, as always E8 bytes for every Pokemon. First six Pokemon, I assume users team. Slot 1 - E41 Slot 2 - F45 Slot 3 - 1049 Slot 4 - 114D Slot 5 - 1251 Slot 6 - 1355 Second group of Pokemon (I assume opponent teams). EK7 from this ones doesn't show up a proper nickname on pkhex, just blank data, idk if it's because your opponent used weird character or if it's any flaw on the program) Slot 1 - 145E Slot 2 - 1562 Slot 3 - 1666 Slot 4 - 176A Slot 5 - 186E Slot 6 - 1972 I'll try to confirm this with my own backups asap
  2. I made a much better explaination of how to just dump the specific battle video without using an HeX editor here: https://projectpokemon.org/forums/showthread.php?48749-Dump-online-battle-videos-from-codes It also provides info about how to get the proces pid at any running time.
  3. I'll simply put the relevant steps/commands for their usage with Pokemon SM and NTR Debugger here, but you can still read all the research that was done back in sixth gen times by opening the spoiler: 1 - Get NTR CFW loaded and start the debugger 2 - Connect to your 3DS debugger using the PC client 3 - Write the code of the battle video you want to dump on the Vs. Recorder. 4 - Start the video playing 5 - While the video is playing write the following command 6 - Video will be saved on the same folder as your NTR Debugger client. 7 - You can open this file with PkHeX to see the involved player's team. *Replace YOUR 3DS IP with the one that corresponds to yours. You can easily get it using third party homebrew like FTPbrony* *The number in bold is the process id that corresponds to the game and may vary between reboots, you can check which one is it by using the command listprocess() at the moment of dumping by looking at the one that corresponds to niji_loc*
  4. I clearly said this won't be very useful at local events. I just wanted to share the command in case someone finds it useful but of course is up to you to choose whatever method you want
  5. I dumped several times Pokemon RAM using NTR, also mainly the 0x08000000 region and being patient and it always crashed, but ofc I there's always the chance I've doing something wrong beside that. Anyway I still find more convenient the PC client if you already located the portion of the data you want to dump
  6. Dumping pieces of RAM directly using the built-in NTR usually results in you having to reboot the 3DS after that because otherwise it will hang at a black screen. This ofc won't be useful at local events unless you bring you computer with you but for Internet and serial codes I always use the debugger since is more convenient because it lets you dump very specific portions of data and won't trigger any button press by mistake on the 3DS, this command dumps the .wc6 directly to your PC through wifi. data(0x8C695BC, 0x108, filename='event.wc6', pid=0x29) ofc you will have to replace the pid for the process with the one corresponding your game at the moment. In my case using an Alpha Sapphire cardtridge its usually tied with either 0x29 or 0x2b
  7. Which event are you trying to reproduce?
  8. So basically what is left is: {0} learned {2} from {1} - I've doubts about if this memory allows HM/TM only or does take in count level-up moves as well. Encounter - Specific Slot {0} went fishing with {1}, and they caught {2} - Filter by SlotType? Slots that result from fishing need to be flagged when the program loads. I'm totally lost here. I originally though doing this through a simple array like the one used for PKMN Centers should indeed work, but since you mentioned the SlotType thing idk which other method already implemented could be used for this. I also just noticed two memories: {1} had {0} hold items like {2} to help it along. {4} that {3}. {1} used {2} when {0} was in trouble. {4} that {3}. In this two memories the allowed TextVar refers to an item but on both cases it allows to choose Key Items and HM/TMs that of course a Pokemon cannot hold/use under any case. Could be argued that the second one should allow TMs/HMs since they can be used to teach a move but I think the "was in trouble" part clearly states that it refers to in-battle usage.
  9. I friend of mine got me a serial code for the shiny Descartes Yveltal from "Salón del Cómic de Barcelona". I extracted it from ram using NTR. Here's a proof in picture: [ATTACH=CONFIG]13285[/ATTACH]
  10. There's a little bug when the gender of the OT of a Pokemon is different than the current handler, if you click on OT it applies the one from savefile properly, but the color of the gender sign is not updated unless you click twice. Is a small bug I noticed but doesn't have a lot of relevance. Also do you think this: https://github.com/kwsch/PKHeX/commit/309d521201561feab43a347cc76671407332e2b8 could be applied in case we're loading a box as well? The next thing are a few extra things that could be checked from the memories in order to catch some more errors when genning a Pokemon. All of this is going to be a pain to check, and I'm sure I missed some more specific things that could be checked on the memories, and I don't know if you wanted to spend any time on this. I would not mind doing it myself little by little but first I wanted to know your opinion.
  11. Yeah all of this without a save file loaded onto pkhex before, with it loaded there was no issues. As well disabling the editing pk6 option fixed the issue. Thanks! Btw, there's a specific name for the binary that could disable by default that option?
  12. Battle videos stores as current level the one used during battle. So per example a VGC battle locks all the mons to level 50, that may lead to issues like invalid current level being lower than the met one. Also notice the battle video store mons name meeting the language of the player game is using them, but still stores them as the original language, without flag on the nickname. If I playing with a spanish language-set game play against japanese language-set game, the battle video will save all the of my mons with the corresponding spanish name and all the Pokemon from the other trainer with the japanese name regardless of what the real original language is. Per example my Xerneas with japanese name would be save as "Xerneas" inside the battle video (without flag on nickname) instead of "ゼルネアス" which would be the correct name. This actually only affects videos produced from battle where nicknames are not show and leads into PkHeX into marking them as illegal because "Nickname does not match species name." You wouldn't really want to prevent PkHeX from marking this mons as illegal when loaded from battle videos you because people would probably just drag and drop them into their saves without being aware of the problem. The big problem is another: I actually have two versions of the PkHeX binary, and old one where the legality checker was implemented for the first time, and the latest one. Tried to open the same battle video with both. Loaded the same Gengar I know is completely legit from the battle video to Editing Tabs on both. One flags it as illegal (the most recent one) and the other not. "Invalid: GeoLocation -- Previous country of residence but no Handling Trainer." I compared both and what I can see is the most recent version is unable to read latest handler (no-OT) memories when it's loaded from a battle video. I also noticed that PkHeX shows non-OT friendship on the main tab regardless of if the current handler is the OT or not. Of course all of this only happens when the program loads the Pokemon from a battle video, works correctly when loading a separate .pk6 or a complete save file.
  13. I also noticed that switching to a different language makes the Met location as well as all the current and the relearn moves to dissappear and they get set to (None). I also opened a pull request for other minor issues with GeoLocation legality checker: https://github.com/kwsch/PKHeX/pull/92
  14. When this error shows up "Invalid: GeoLocation -- Previous country of residence but no Handling Trainer." it unlocks the part of the memories regarding latest regions the pokemon was on, but only the slot for the latest residence, if the Pokemon has other residences set on Past 1, Past 2, etc... you won't be able to edit them as they're still read only. Workaround for this is to set a latest handler ot to allow editing all of the boxes, but I assume this is not how it should be working. Thanks, you're doing an awesome work on the leglity checker! <3 P.D: Also notice Hidden Abilities are always incompatible with Apricorn Balls
  15. What PKHeX tells you is the error?
  16. Yeah, is illegal to bring an Pokemon named after another different specie to an official tournament, but it's perfectly posible to get one in-game without using external tools.
  17. Caught in-game Plusle on game set to spanish, changed nickname to "Posipi", the french version of it's name. PKHeX reports it as ilegal "Invalid: Nickname matches another species name (+language)." even obviously isn't, nickname flag is marked this way. Also had a Talonflame caught on a japanese language set game, but has name set to "Talonflame", without the nickname flag set. Is also marked as illegal even though is perfectly legal because if you evolve a Fletchinder with japanese name on a game set to spanish (in my case, but english should be the same) the name will be updated to the language of the game it was evolved on, but keeping the japanese flag as PKHeX reports. I've manually experimented to check this. So is perfectly posible to have a Pokemon with a name, but not nickname, that doesn't fit the origin language as long as it has a preevolution. Also just noticed that PKHeX doesn't check memories of Pokemon that evolve through trade. A Gengar without memories other than with OT should be illegal, but it still not marked as that.
  18. This part of ORAS savegame structure wasn't documented here: https://projectpokemon.org/wiki/Pok%C3%A9mon_ORAS_Save_File_Structure So I've spent some time dumping my Alpha Saphire savegame to locate the log of the Battle Institute records. So I succesfully did and wanted to share the results here. I assume all the values are stored the same way on every sixth gen game, but the starting offsets for XY are probably different from the ones on ORAS. Every type of battle have up to 5 slots to save your better records, adding a new record reorders the list of records showing the best on the top and the worse on the bottom. Getting a new record that matches the same amount of points than an older one puts the latest one over the older. When the list is already filled with 5 records and you get a better one, it will automatically delete the record on the bottom of the list to make room for the new. /// Individual battle records /// Starting offset: 1C000 Finish offset: 1C063 Size of every record: 14 First Pokemon is stored on bytes 5-6, second on 8-9 and third on C-D. They are referenced by their Pokedex entry number. /// Double battle records /// Starting offset: 1C064 Finish offset: 1C0C7 Size of every record: 14 First Pokemon is stored on 5-6, second on 8-9, third on C-D and fourth on 10-11 They are referenced by their Pokedex entry number. The two first bytes of every record refers to the amount of points obtained for that record. This means the bigger number you can store is 65535, but the game simple glitches the quantity if is bigger than four digits, so you're restricted up to 9999 (which I don't think is still a legal value to obtain). The next two bytes are always 10 B1 in the case of individual battles and 10 A9 in the case of double battles, but I really can't figure what are they for. However leaving them untouched does no harm when modifying other values of the record. Remember every value stored as hex on two different bytes is read starting from the last one Per example, 85 02 is read as 02 85, which in decimal means 645, the pokedex number for Landorus. Example of individual record: 00 09 10 B1 06 00 00 00 85 02 01 00 82 02 00 00 00 00 00 00 2304 points using Charizard, Landorus and Thundurus. Example of double record: 37 12 10 A9 06 00 00 00 85 02 01 00 82 02 00 00 5E 00 00 01 4663 points using Charizard, Landorus, Thundurus and Gengar.
  19. I managed to succesfully extract it from RAM and after selecting the exact bits I was able to read the file PkHeX. So I will leave what I did Here's the results of my research: I did this with a 10.5 New3DS running Reinand CFW and after aplying NTR CFW patches to dump memory of a EUR physical copy of Alpha Saphire. You ofc need to be connected to the internet, sign-in the Vs. Recorder and write the code of the battle you would like to dump, once it shows the preview of the teams and the trainers teams we're ready to go. Open the NTR Menu > Process Manager > Search on the ProcessList for 0000002d > dump > And choose address 0x08000000. After pressing A button to choose this option the game will likely trigger that press and attempt to load the battle crashing to a black screen but this is "normal" (in the sense that it always happens and cannot figure a fix for it). Just wait until a message in the botton screen appears saying that "dump finished at addr: whatever" Now you will probably have to force the 3ds to shutdown by keeping pressed the Power button until it does. A new file named "dump_pid2d_0.dmp" will be on the SDCard. Copy that to computer and open it with any hex editor. HxD is really recommended. There're multiple offsets in this file where your desired battle is stored. Usually it will cloned at many places. They are usually stored at 1FBA70, 208E40, 2E74AC, 8D6D30 and 8DED48. However if you struggle finding them there and you do not plan making any automated app to import those bits you need to know that the video files always starts with the following hex values "0X 01 81 E2 00 00" where X usually is a 0, I also had a few examples when it was a 5 or a 7. Anyway you need to select every bit after the 0X one I mentioned (included) until you get a length value of 2E60. Now you open a new file with HxD and copy everything you selected there and save with any desired extension-less name. If you did everything right you should be able to open this with PkHeX to see the 12 Pokemon used in the battle. Notice that if you have uploaded battles in the past when you enter the Vs. Recorder while connected to internet it will detect those and copy them to RAM. In my case I had one battle I uploaded in the past, so that was copied to the 1FBA70 offset and the other four I mentioned before were filled with copies of the one I read from the code. You can guess which one is the one you want by looking a bit down after looking for the starting offsets, the name of the trainers involved in the battle should I appear close to it. [ATTACH=CONFIG]12886[/ATTACH]
  20. Recommended to ignore this thread and instead read this one: https://projectpokemon.org/forums/showthread.php?48749-Dump-online-battle-videos-from-codes
  21. So should I reroll de Encryption Constant after o before rerolling the PID in order to get a legal one?
  22. So the only Pokemon I've left to register on my Pokedex was Mew. I used the just introduced feature to convert older events into pk6 and succesfully injected a 10th G/S anniversary Mew into my savefile. The "Modify Pokedex" option was checked, so it correctly updated the Pokedex to register 151 entry, but I noticed something weird, and it's that the Dexnav level for Mew is still 0. First I though it migh be because it cannot be caught over dexnav, but then I also checked my entries for Kyogre/Rayquaza and even other event legends like Celebi/Jirachi and all of them have the dexnav level set to 1. ------------------------------------------------------------- I also wanted to know what the "Encryption constant" is and when should I reroll it. Thanks in advance for the answer and for your wonderful job here
  23. Eskuero

    PKHeX bugs

    Okey, this is what I did. 1. Opened my main file backup. 2. Disabled PK6 editing. 3. Took a legit Kyogre just caught in-game. THIS WAY IT HAS ALL THE BOXES UNDER RESIDENCE IN BLANK. 4. Open it on editing tabs and without modifying anything set it to another slot. 5. Now open the just wrote slot and check Residence. It updated it to meet my region and sub-region. This doesn't make it illegal since it could be generated that way by putting it on PokeBank and then taking it out, but it's definetely not how it should be working I guess. --------------------------------------- I also noticed that changing language to anything else than english (going back to english doesn't fix it), makes that everytime you set a Pokemon to a box slot the sprite is not showing, and it's impossible to read that slot. However saving the file and opening it again shows the sprite and fixes that.
  24. How much of the game texts have been modified from the original localizations? I just wanted to know if it's a lot and relevant just to add Spanish translations myself.
×
×
  • Create New...