-
Posts
7271 -
Joined
-
Last visited
-
Days Won
362
Content Type
Profiles
Pokédex
Portal
Technical Documentation
Pages
Tutorials
Forums
Events
Downloads
Gallery
Blogs
Everything posted by Kaphotics
-
Beta: the pokécheck legality checker for generation 5
Kaphotics replied to xfr's topic in Pokémon Legality
No red = no problem -
Refer to our forum's rules regarding editing of Pokemon data. You're going to have to settle for an 'imperfect' specimen as this (sub)forum does not exist to help others make 'flawless hacks'; what you currently have is perfectly legal for whatever ingame purpose you desire. Trashbytes are not part of GF's legality -- plus, they're stripped when transferring to X/Y.
-
If they're used, it's just a byte signaling that the card cannot be received in the future. All of the card data remains. Just flip the bit if you've received it.
-
Trash bytes aren't required to be valid for ingame/friend battling.
-
yeah, too bad the XY OT is just datel being lazy and not properly changing the Torchic wondercard's data. Just as easy to flag as an illegal 'mon as if its OT was PowerSaves (which honestly, would have been better & free advertisement). Knowing them, they probably zeroed out all the data that torchic had, resulting in pure levelup moves.
-
Thanks to theSLAYER, I was able to find the Bank Celebi data, which is treated kinda like a wondercard. Stored inside the Pokemon Bank block. There's data afterwards which I can't figure out, so I'm not gonna post an entire dump of his saveblock. 02CB = 715 0269 = 617 022F = 559 0072 = 114 9C54 = 40020 9C71 = 40049 and some japanese unicode (サトシ = Satoshi/Ash)
-
(X/Y) Mass Dumper - Enhanced Box Data Viewer
Kaphotics replied to Kaphotics's topic in Saves - Research
^Fixed -
Mass Dumper This program is an extension of KeySAV which allows the user to dump the info of multiple boxes at once, instead of being restricted to 1 box at a time. SUPPORTS BOTH RETAIL CARTRIDGES AND DIGITAL COPIES You cannot use someone else's data. Can export to CSV for thorough data output (moves,ball) for Trade Threads. This program does not export any files from your save file. Only views it. Thanks to OmegaDonut for dumps, testing, and original concept with KeySAV. This program requires you to have your Blank file from KeySAV. Mass Dumper can use keystreams obtained from KeySAV, or you can generate longer keystreams for multi-box dumping by using the second tab. Basic Tutorial Source code available on my GitHub. Mass Dumper.zip
-
1500 - UK / Tesco Quick Ball Wondercard (12) Attached 1500 - quickball.zip
-
Nono, this program will tell you TSVs of any non-egg Pokemon you check with the TSV export mode. You don't need your SID or a shiny Pokemon. KeySAV does the TSV calculation for you; it won't tell you SIDs because it is unnecessary information.
-
Correct; with the TSV you do not need the SID for anything related to ingame playing. TSV export mode allows the user to find the TSV of individual Pokemon, so that they can check TSVs for users without the capability to do so.
-
Beyond renaming previous generation stuff to have longer nicknames (which would have to originate from a RNG'd ID gamesave), there's no 'legal' reason to allow it (this program is not a cheating aide).
-
There are no ways to extract 3DS save files from a retail cartridge without the PowerSaves device.
-
With no injection method, there is no need to export data. If you really want your SID, just reverse the TSV formula and figure out the rest.
-
Pokémon in the games Pokémon X and Y are stored in a new 232 byte structure (for the box data only). Party Pokémon hold 28 bytes of additional data for overworld and battle values. We recommend using the pk6 extension for decrypted 232-byte box data and 260-byte party data structures. Checksum / Block Shuffling / Encryption There have been some changes compared to the Generation 4 and Generation 5 structures. First, the LCRNG to decrypt the structure's blocks is now seeded with the Encryption Key at the beginning of the pk6 file. Second, the blocks are now 56 bytes instead of the previous 32. However, the way the blocks are shuffled based on the PID did not change. That said, the shuffling algorithm now uses the Encryption Key at the beginning of the pk6 instead of the PID. Unencrypted Bytes (0x0-0x7) Offset Contents 0x00-0x03 Encryption Key 0x04-0x05 Sanity Placeholder 0x06-0x07 Checksum Encrypted Bytes Block A (0x8-0x3F) Offset Contents 0x08-0x09 National Pokédex ID 0x0A-0x0B Held Item 0x0C-0x0D OT ID 0x0E-0x0F OT Secret ID 0x10-0x13 Experience Points 0x14 Ability 0x15 Ability Number 0x16-0x17 [Hits Remaining] on [Training Bag] 0x18-0x1B Personality value (Also known as the PID) 0x1C Nature 0x1D Bit 0 - Fateful Encounter Flag Bit 1 - Female Bit 2 - Genderless Bit 3-7 - Alternate Forms 0x1E HP Effort Value 0x1F Attack Effort Value 0x20 Defense Effort Value 0x21 Speed Effort Value 0x22 SP Attack Effort Value 0x23 SP Defense Effort Value 0x24 Contest Stat: Cool 0x25 Contest Stat: Beauty 0x26 Contest Stat: Cute 0x27 Contest Stat: Smart 0x28 Contest Stat: Tough 0x29 Contest Stat: Sheen 0x2A Markings 0x2B Pokérus 0x2C-0x2F (Secret) Super Training Gold Medal Flags 0x30-0x35 Ribbons 0x36-0x37 Unused 0x38 Contest Memory Ribbon [Count] 0x39 Battle Memory Ribbon [Count] 0x3A Distribution Super Training Flags 0x3B-0x3F Unused Block B (0x40-0x77) Offset Contents 0x40-0x57 Nickname 0x58-0x59 Null Terminator 0x5A-0x5B Move 1 ID 0x5C-0x5D Move 2 ID 0x5E-0x5F Move 3 ID 0x60-0x61 Move 4 ID 0x62 Move 1 Current PP 0x63 Move 2 Current PP 0x64 Move 3 Current PP 0x65 Move 4 Current PP 0x66-0x69 Move PP Ups 0x6A-0x6B Relearn Move 1 ID 0x6C-0x6D Relearn Move 2 ID 0x6E-0x6F Relearn Move 3 ID 0x70-0x71 Relearn Move 4 ID 0x72 "Secret" Super Training Flag 0 - Missions Unavailable 1 - Missions Available 0x73 Unused 0x74-0x77 Bits 0-29 - Individual Values HP ( [0-31] << 0 ) Attack ( [0-31] << 5 ) Defense ( [0-31] << 10 ) Speed ( [0-31] << 15 ) SP Attack ( [0-31] << 20 ) SP Defense ( [0-31] << 25 ) Bit 30 - IsEgg Flag Bit 31 - IsNicknamed Flag Block C (0x78-0xAF) Offset Contents 0x78-0x8F Latest NotOT Handler Updates Every Trade 0x90-0x91 Null Terminator 0x92 NotOT Gender 0 - Male 1 - Female 0x93 Current Handler 0 - OT 1 - NotOT 0x94-0x95 Geolocation 1 - (Region,Country) 0x96-0x97 Geolocation 2 - (Region,Country) 0x98-0x99 Geolocation 3 - (Region,Country) 0x9A-0x9B Geolocation 4 - (Region,Country) 0x9C-0x9D Geolocation 5 - (Region,Country) 0x9E-0x9F Unused 0xA0-0xA1 Unused 0xA2 NotOT Friendship 0xA3 NotOT Affection 0xA4 NotOT Memory Intensity 0xA5 NotOT Memory Line 0xA6 NotOT Memory Feeling 0xA7 Unused 0xA8-0xA9 NotOT Memory TextVar 0xAA-0xAB Unused 0xAC-0xAD Unused 0xAE Fullness 0xAF Enjoyment Block D (0xB0-0xE7) Offset Contents 0xB0-0xC7 OT Name 0xC8-0xC9 Null Terminator 0xCA OT Friendship 0xCB OT Affection 0xCC OT Memory Intensity 0xCD OT Memory Line 0xCE-0xCF OT Memory TextVar 0xD0 OT Memory Feeling 0xD1-0xD3 Date Egg Received 0xD4-0xD6 Date Met 0xD7 Unknown / Unused 0xD8-0xD9 Egg Location 0xDA-0xDB Met At Location 0xDC Pokéball 0xDD Bit 0-6 - Encounter Level Bit 7 - Female OT Gender 0xDE Encounter Type (Gen 4) 0xDF OT Game ID 0xE0 Country ID 0xE1 Region ID 0xE2 3DS Region ID 0xE3 OT Language ID 0xE4-0xE7 Unused Battle Stats The battle stats are encrypted in the exact same manner as the main pk6 data. The seed is still the Encryption Key. Encrypted Bytes Offset Contents 0xE8 Bits 0-2 - Asleep (0-7 rounds) Bit 3 - Poisoned Bit 4 - Burned Bit 5 - Frozen Bit 6 - Paralyzed Bit 7 - Toxic 0xE9 Unknown - Flags 0xEA-0xEB Unknown / Unused 0xEC Level 0xED Unknown / Unused 0xEE-0xEF Unknown / Unused 0xF0-0xF1 Current HP 0xF2-0xF3 Max HP 0xF4-0xF5 Attack 0xF6-0xF7 Defense 0xF8-0xF9 Speed 0xFA-0xFB Special Attack 0xFC-0xFD Special Defense 0xFE-0xFF Unknown / Unused 0x100-0x103 Unknown / Unused Original Language Value Language 0x1 日本語 (Japan) 0x2 English (US/UK/AU) 0x3 Français (France/Québec) 0x4 Italiano (Italy) 0x5 Deutsch (Germany) 0x7 Español (Spain/Latin Americas) 0x8 한국어 (South Korea) Markings Bit Marking 0x01 Circle 0x02 Triangle 0x04 Square 0x08 Heart 0x10 Star 0x20 Diamond Encounter Types Encounter Types are not used in X/Y. Transferred Pokemon keep their Encounter Type hex. Value Country 0x0 Pal Park, Egg, Hatched, Special Event 0x2 Tall Grass 0x4 Dialga/Palkia In-Game Event 0x5 Cave, Hall of Origin 0x7 Surfing, Fishing 0x9 Building 0xA Great Marsh (Safari Zone) 0xC Starter, Fossil, Gift (Eevee) Medals & Ribbons Super Training Medals Flag Value 0x2C 0x2D 0x2E 0x2F 0x01 Unused Sp. Atk Level 2 Atk Level 3 Follow Those Fleeing Goals! 0x02 Unused HP Level 2 Sp. Def Level 3 Watch Out! That's One Tricky Second Half! 0x04 Sp. Atk Level 1 Atk Level 2 Speed Level 3 An Opening of Lighting-Quick Attacks! 0x08 HP Level 1 Sp. Def Level 2 Def Level 3 Those Long Shots Are No Long Shot! 0x10 Atk Level 1 Speed Level 2 The Troubles Keep on Coming?! Scatterbug Lugs Back! 0x20 Sp. Def Level 1 Def Level 2 The Leaf Stone Cup Begins! A Barrage of Bitbots! 0x40 Speed Level 1 Sp. Atk Level 3 The Fire Stone Cup Begins! Drag Down Hydreigon! 0x80 Def Level 1 HP Level 3 The Water Stone Cup Begins! The Battle for the Best: Version X/Y! Ribbon Set 1 Flag Value 0x30 0x31 0x01 Kalos Champ Ribbon Alert Ribbon 0x02 Champion Ribbon Shock Ribbon 0x04 Sinnoh Champ Ribbon Downcast Ribbon 0x08 Best Friends Ribbon Careless Ribbon 0x10 Training Ribbon Relax Ribbon 0x20 Skillful Battler Ribbon Snooze Ribbon 0x40 Expert Battler Ribbon Smile Ribbon 0x80 Effort Ribbon Gorgeous Ribbon Ribbon Set 2 Flag Value 0x32 0x33 0x01 Royal Ribbon Earth Ribbon 0x02 Gorgeous Royal Ribbon World Ribbon 0x04 Artist Ribbon Classic Ribbon 0x08 Footprint Ribbon Premier Ribbon 0x10 Record Ribbon Event Ribbon 0x20 Legend Ribbon Birthday Ribbon 0x40 Country Ribbon Special Ribbon 0x80 National Ribbon Souvenir Ribbon Ribbon Set 3 Flag Value 0x34 0x01 Wishing Ribbon 0x02 Battle Champion Ribbon 0x04 Regional Champion Ribbon 0x08 National Champion Ribbon 0x10 World Champion Ribbon 0x20 None 0x40 None 0x80 Hoenn Champion Ribbon Ribbon Set 4 Flag Value 0x35 0x01 Contest Star Ribbon 0x02 Coolness Master Ribbon 0x04 Beauty Master Ribbon 0x08 Cuteness Master Ribbon 0x10 Cleverness Master Ribbon 0x20 Toughness Master Ribbon Pokémon Data The 6th generation games use a different system to handle pokemon data in-game. Previously, a pokémon's data (the equivalent of a pkm file) was passed directly into functions that would act upon it to pull out information that would be used by the game engine. Gen 6 uses a higher-level class called pml::pokepara::Accessor that stores multiple pieces of information that describe a pokémon. This class's object size is 14 bytes. Accessor class Offset Type Description 0x0 u32 vtable pointer 0x4 u32 Is pokemon in party (set to 1 if so) 0x8 Poke* Pointer to this pokémon's data 0xC bool Is pokemon data encrypted 0xD bool Encrypt pokémon data
-
6th and 7th Generation Wonder Card Map Mystery Gift Data WCxFULL Offset WCx Offset Gen 6 Gen 7 0x00-0x03 - Bit 0 - Y Bit 1 - X Bit 2 - AS Bit 3 - OR Bit 0 - S Bit 1 - M Bit 2 - US Bit 3 - UM 0x04-0x01FD - Redemption Text 0x01FE - 0x01 - Green Background 0x01 - Halo Animation 0x01FF - Allowed Languages 0x00 - Any Language Otherwise Language ID 0x200 - Once Per Week Bit 0 - Multiple WCs 0x201 - Unused? SubID 0x0202-0x0203 - Checksum Checksum is a CCITT-16. (CRC16-CCITT) It is computed using all the 0x310 bytes. The checksum location have to be filled with zeroes. (dates are included in calculation) 0x0204 - Unused? Set Count 0x205 - Always 0x46 Rarity Weight 0x206-0x207 - Always 0x4646 0x208-0x209 0x00-0x01 Card ID 0x20A-0x253 0x02-0x4B Card Title 0x254-0x257 0x4C-0x4F Card Reception Date YYYYMMDD Card Redemption Date YYMMDD 0x258 0x50 Card Location 0x259 0x51 Card Type 0x0 - Pokemon 0x1 - Item Card Type 0x0 - Pokemon 0x1 - Item 0x3 - BP 0x25A 0x52 Statuses Bit 0 - Only Once Bit 1 - Used Statuses Bit 0 - Only Once Bit 1 - Used Bit 2 - Once per Day 0x25B 0x53 Animation Background Color 0x0 - Blue 0x1 - Green (0x53 offset only) Card Background Color 0x0 - Blue 0x1- Purple 0x2 - Gold 0x25C-0x26F 0x54-0x67 Unknown/Unused 0x26E - Always 0xFF Pokémon Cards WCxFULL Offset WCx Offset Gen 6 Gen 7 0x270-0x271 0x68-0x69 Trainer ID 0x272-0x273 0x6A-0x6B Secret ID 0x274 0x6C Game of Origin 0x0 - Receiver's Game 0x274-0x277 0x6D-0x70 Unused 0x278-0x27B 0x71-0x73 Encryption Constant 0x0 - Randomly Generated 0x27C-0x27D 0x74-0x75 Ribbons See Ribbon Data Below 0x27E-0x27F 0x76-0x77 PokéBall Caught In 0x280-0x281 0x78-0x79 Held Item 0x282-0x283 0x7A-0x7B Move #1 0x284-0x285 0x7C-0x7D Move #2 0x286-0x287 0x7E-0x7F Move #3 0x288-0x289 0x80-0x81 Move #4 0x28A-0x28B 0x82-0x83 PokéDex Number 0x28C 0x84 Form Index 0x28D 0x85 Language 0x0 - Receiver's Language Otherwise Language ID 0x28E-0x2A7 0x86-0x9F Pokémon Nickname No terminator if no nickname 0x2A8 0xA0 Nature 0xFF - Random 0x2A9 0xA1 Pokémon Gender 0x0 - Male 0x1 - Female 0x2 - Genderless 0x3 - Random 0x2AA 0xA2 Pokémon Ability 0x0 - Ability 1 0x1 - Ability 2 0x2 - Hidden Ability 0x3 - Ability Random (No HA) 0x4 - Ability Random (All) 0x2AB 0xA3 Personality ID Generation Method 0x0 - Use specified PID 0x1 - Random can be shiny PID 0x2 - Random always shiny PID 0x3 - Random never shiny PID 0x2AC-0x2AD 0xA4-0xA5 Egg Met Location 0x2AE-0x2AF 0xA6-0xA7 Met Location 0x2B0 0xA8 Met Level 0x2B1-0x2B6 0xA9-0xAE Contest Stats Last byte is Sheen 0x2B7-0x2BC 0xAF-0xB4 IVs 0xFFFFFFFF - Random 0xFFFFFFFE - 3 31s 0xFFFFFFFD - 2 31s 0x2BD 0xB5 Trainer Gender 0x0 - Male 0x1 - Female 0x3 - Recipient's Gender 0x2BE-0x2D7 0xB6-0xCF Trainer Name All 00's - Recipient's Name 0x2D8 0xD0 Current Level 0x2D9 0xD1 Egg Flag 0x1 - Is Egg 0x2DA-0x2DB 0xD2-0xD3 Unused Bundled Item ID 0x2DC-0x2DF 0xD4-0xD7 Personality ID Almost Always 0xEE6B2802 Sometimes 0x00000000 0x2E0-0x2E1 0xD8-0xD9 Relearn Move 1 0x2E2-0x2E3 0xDA-0xDB Relearn Move 2 0x2E4-0x2E5 0xDC-0xDD Relearn Move 3 0x2E6-0x2E7 0xDE-0xDF Relearn Move 4 0x2E8-0x2E9 0xE0-0xE1 Trainer Memory Intensity Unused 0x2EA-0x2EB 0xE2-0xE3 Trainer Memory Line Unused 0x2EC-0x2ED 0xE4-0xE5 Trainer Memory TextVar 0xE5-0xEA: EVs 0x2EF-0x2F0 0xE6-0xE7 Trainer Memory Feeling 0x2F1-0x2F3 0xE8-0xEA Unused 0x2F4-0x30F 0xEB-0x107 Unused Unused Item Cards WCxFULL Offset WCx Offset Gen 6 Gen 7 0x270-0x271 0x68-0x69 Item ID Item 1 ID 0x272-0x273 0x6A-0x6B Unused Item 1 Quantity 0x274-0x275 0x6C-0x6D Unused Item 2 ID 0x276-0x277 0x6E-0x6F Unused Item 2 Quantity 0x278-0x279 0x70-0x71 Item Quantity Item 3 ID 0x27A-0x27B 0x72-0x73 Unused Item 3 Quantity 0x27C-0x27D 0x74-0x75 Unused Item 4 ID 0x27E-0x27F 0x76-0x77 Unused Item 4 Quantity 0x280-0x281 0x78-0x79 Unused Item 5 ID 0x282-0x283 0x7A-0x7B Unused Item 5 Quantity 0x284-0x285 0x7C-0x7D Unused Item 6 ID 0x286-0x287 0x7E-0x7F Unused Item 6 Quantity Ribbon Set Flag Value 0x74 0x75 0x01 Battle Champ Ribbon World Champ Ribbon 0x02 Regional Champ Ribbon Birthday Ribbon 0x04 National Champ Ribbon Special Ribbon 0x08 Country Ribbon Souvenir Ribbon 0x10 National Ribbon Wishing Ribbon 0x20 Earth Ribbon Classic Ribbon 0x40 World Ribbon Premier Ribbon 0x80 Event Ribbon Empty
- 1 comment
-
- 2
-
- structures
- technical references
-
(and 1 more)
Tagged with:
-
We still haven't figured out how exactly Datel is doing things. Every single edit is done server side, and they get the key from the cart when they read. With what KeySAV does and how it operates, it will never be possible to inject with the reading trick/program because it does not touch the hash tables.
-
KeySAV doesn't need the key - it instead operates on a simple concept which involves rearranging slot data and knowing how save files are encrypted. The trick which was used to reveal more contents of the save file didn't need a key either; it's essentially KeySAV's exploit pushed a little further in terms of rearranging data.
-
General Research Thread. Save1 Decryption method (can then be viewed with PKHeX). Wiki - Updating periodically with our knowledge. -- Have been doing a bunch of structure research with SciresM and Codemonkey85 on IRC; since we're able to decrypt the majority of save files now we're getting some meaningful data. 6th Gen Wondercard Structure Wiki
-
Trainer Shiny Value Database
Kaphotics replied to KazoWAR's topic in Systems, Flashcards, and Emulation
Excellent work; will make the matching process so much easier! -
You already have instant access to a box with its stream.
-
Correct. Hence why you only have to break your box once.