OR/AS Save files are comprised of 4 sections, the latter two storing the contents of the two savegames.
The structure of the save is extremely similar to Pokemon X/Y's, with the majority of structural changes being the shifting of the positions of partitions.
The game alternates between the two game saves similar to Generations 3 & 4 and X/Y.
Save files are 0x100000 (1MB). The area between sections is either FF or 00, for Cartridges and Digital saves respectively.
Single Partition Save File
http://3dbrew.org/wiki/Savegames
Image Header (0x00000-0x00460)
Offset | Length | Hash Details | Description |
---|---|---|---|
00000 | 0x10 | 0x0: Uses the AES Engine & KeyY | AES MAC Header |
00100 | 0x100 | 0x16C: (SHA256) 0x000-0x12C of active DIFI | DISA |
00200 | 0x12C | 0x30C: (SHA256) 1st IVFC Hash copied to 0x200 zero array | DIFI Blob 1 |
00330 | 0x12C | 0x43C: (SHA256) 1st IVFC Hash copied to 0x200 zero array | DIFI Blob 2 |
First Partition (0x01000-0x01107)
Offset | Description |
---|---|
01000 | DPFS Partition |
Save File 1 (0x02000 - 0x75FFF)
(420 KB)
Offset | Description |
---|---|
02000 | IVFC Hash Region |
03000 | SAVE Header (0x3F0 medias, 0x200 length) = 0x7E000 total |
03100 | SAVE Data |
ID | Start | Length | CHK | Description |
---|---|---|---|---|
0000 | 5400 | 000002C8 | 75E1A |
05400 - Pokepuff Inventory (Index * 100ct) 05464 - u32 Received Counter |
0001 | 5800 | 00000B90 | 75E22 |
05800 - Items Pocket 05E40 - Key Items Pocket 05FC0 - TM Pocket 06170- Medicine Pocket 06270 - Berry Pocket |
0002 | 6400 | 0000002C | 75E2A | Select Bound Items |
0003 | 6600 | 00000038 | 75E32 | ???? |
0004 | 6800 | 00000150 | 75E3A | Trainer Stat Tracking |
0005 | 6A00 | 00000004 | 75E42 | ???? |
0006 | 6C00 | 00000008 | 75E4A | u32 Time Played + u32 Adventure Started |
0007 | 6E00 | 000001C0 | 75E52 | Wardrobe (Bitflags) & Saved Outfits (Index #s) - Unused in ORAS |
0008 | 7000 | 000000BE | 75E5A | u16/u8 storage |
0009 | 7200 | 00000024 | 75E62 | FFFFFFFF |
000A | 7400 | 00002100 | 75E6A |
Overworld Data 0x108 per Overworld Entity |
000B | 9600 | 00000130 | 75E72 | Trainer Information ($) |
000C | 9800 | 00000440 | 75E7A |
Box Names
|
000D | 9E00 | 00000574 | 75E82 | Battle Box |
000E | A400 | 00004E28 | 75E8A | PSS Data - Friends |
000F | F400 | 00004E28 | 75E92 | PSS Data - Acquaintances |
0010 | 14400 | 00004E28 | 75E9A | PSS Data - Passerby |
0011 | 19400 | 00000170 | 75EA2 | Trainer Card (ID/SID/OT/Greeting) |
0012 | 19600 | 0000061C | 75EAA | Party Members |
0013 | 19E00 | 00000504 | 75EB2 |
Constant & Event Flags
|
0014 | 1A400 | 000011CC | 75EBA |
Pokedex & Encounter Count
|
0015 | 1B600 | 00000644 | 75EC2 | Sorted Variables |
0016 | 1BE00 | 00000104 | 75ECA | Fused Zekrom/Reshiram Storage |
0017 | 1C000 | 00000004 | 75ED2 | ???? |
0018 | 1C200 | 00000420 | 75EDA | ???? |
0019 | 1C800 | 00000064 | 75EE2 | O-Power Flags |
001A | 1CA00 | 000003F0 | 75EEA | ???? |
001B | 1CE00 | 0000070C | 75EF2 | User Metadata |
001C | 1D600 | 00000180 | 75EFA | GTS Upload & Match Criteria |
001D | 1D800 | 00000004 | 75F02 | 87B1A23F const |
001E | 1DA00 | 0000000C | 75F0A | ???? |
001F | 1DC00 | 00000048 | 75F12 | Repel Info, (Swarm?) and other overworld info |
0020 | 1DE00 | 00000054 | 75F1A | ???? |
0021 | 1E000 | 00000644 | 75F22 | WiFi Tournament Data |
0022 | 1E800 | 000005C8 | 75F2A | Live Tournament Data |
0023 | 1EE00 | 000002F8 | 75F32 | MAC Address & Network Connection Logging (0x98 per entry) |
0024 | 1F200 | 00001B40 | 75F3A |
Hall of Fame Data (First Game Clear + 15 Latest)
|
0025 | 20E00 | 000001F4 | 75F42 |
Maison Data
|
0026 | 21000 | 000003E0 | 75F4A |
Daycare Data (Larger than XY)
|
0027 | 21400 | 00000216 | 75F52 | Index Number Related Data |
0028 | 21800 | 00000640 | 75F5A | Berry Field Data (0x10 per tree, 100 trees) |
0029 | 22000 | 00001A90 | 75F62 |
Wondercard Data 0x100 bitflag-card received storage Wondercard slots (0x108 between) |
002A | 23C00 | 00000400 | 75F6A | SUBE data (XY: Old Man) - purpose unknown. |
002B | 24000 | 00000618 | 75F72 | Friend Safari Data |
002C | 24800 | 0000025C | 75F7A |
PSS Data 24970 (0x20) - Pokemon Bank (application?) data |
002D | 24C00 | 00000834 | 75F82 | PSS Friend Data [0x15]*100 entries |
002E | 25600 | 00000318 | 75F8A |
Super Training Data
|
002F | 25A00 | 000007D0 | 75F92 | ???? |
0030 | 26200 | 00000C48 | 75F9A |
Pokemon Link Gifts 0x25E44 - u16 checksum (ccitt16, 0xFFFF initial) of 0x25400-0x25E43 |
0031 | 27000 | 00000078 | 75FA2 | Index Number Related Data |
0032 | 27200 | 00000200 | 75FAA | PGL Promotion Gifts |
0033 | 27400 | 00000C84 | 75FB2 | ???? |
0034 | 28200 | 00000628 | 75FBA |
Data Block (Purpose Unknown) u64 Length byte[Length] data |
0035 | 28A00 | 00000400 | 75FC2 | Contest Data |
0036 | 28E00 | 00007AD0 | 75FCA | Secret Base (Favorites) |
0037 | 30A00 | 000078B0 | 75FD2 | Secret Base (Passerby) & Passerby Event Values |
0038 | 38400 | 00034AD0 | 75FDA | Box Data (31 Boxes, 30 Slots, 232 bytes each) |
0039 | 6D000 | 0000E058 | 75FE2 | Picture Data (JPEG Exif Ver 2.2) |
---- | 75E00 | 00000800 | ----- |
Checksum Storage [0x14] Header: u64 savetime1 & u64 savetime2 (First five bytes Anti-Savegame Restore Secure Value), u16 BEEF magic [0x10] Checksum Entries: u32 len, u16 ID, u16 checksum (ccitt16, 0xFFFF initial) |
Save File 2 (0x81000 - 0xF1FFF)
(420 KB)
Same as Game Save 1's offsets; add 0x7F000.
IVFC Hash Region
SHA256 Hash over a 0x1000 large block (4096 bytes).
Start | End | Hash Location |
---|---|---|
2020 | 203F | 2000 - First Hash: Copied to 0x200 zero array. |
2040 | 2FFF | 2020 - Second Hash: Copied to 0x1000 zero array. |
3000 | 3FFF | 2040 |
4000 | 4FFF | 2060 |
5000 | 5FFF | 2080 |
6000 | 6FFF | 20A0 |
7000 | 7FFF | 20C0 |
8000 | 8FFF | 20E0 |
9000 | 9FFF | 2100 |
A000 | AFFF | 2120 |
B000 | BFFF | 2140 |
C000 | CFFF | 2160 |
D000 | DFFF | 2180 |
E000 | EFFF | 21A0 |
F000 | FFFF | 21C0 |
10000 | 10FFF | 21E0 |
11000 | 11FFF | 2200 |
12000 | 12FFF | 2220 |
13000 | 13FFF | 2240 |
14000 | 14FFF | 2260 |
15000 | 15FFF | 2280 |
16000 | 16FFF | 22A0 |
17000 | 17FFF | 22C0 |
18000 | 18FFF | 22E0 |
19000 | 19FFF | 2300 |
1A000 | 1AFFF | 2320 |
1B000 | 1BFFF | 2340 |
1C000 | 1CFFF | 2360 |
1D000 | 1DFFF | 2380 |
1E000 | 1EFFF | 23A0 |
1F000 | 1FFFF | 23C0 |
20000 | 20FFF | 23E0 |
21000 | 21FFF | 2400 |
22000 | 22FFF | 2420 |
23000 | 23FFF | 2440 |
24000 | 24FFF | 2460 |
25000 | 25FFF | 2480 |
26000 | 26FFF | 24A0 |
27000 | 27FFF | 24C0 |
28000 | 28FFF | 24E0 |
29000 | 29FFF | 2500 |
2A000 | 2AFFF | 2520 |
2B000 | 2BFFF | 2540 |
2C000 | 2CFFF | 2560 |
2D000 | 2DFFF | 2580 |
2E000 | 2EFFF | 25A0 |
2F000 | 2FFFF | 25C0 |
30000 | 30FFF | 25E0 |
31000 | 31FFF | 2600 |
32000 | 32FFF | 2620 |
33000 | 33FFF | 2640 |
34000 | 34FFF | 2660 |
35000 | 35FFF | 2680 |
36000 | 36FFF | 26A0 |
37000 | 37FFF | 26C0 |
38000 | 38FFF | 26E0 |
39000 | 39FFF | 2700 |
3A000 | 3AFFF | 2720 |
3B000 | 3BFFF | 2740 |
3C000 | 3CFFF | 2760 |
3D000 | 3DFFF | 2780 |
3E000 | 3EFFF | 27A0 |
3F000 | 3FFFF | 27C0 |
40000 | 40FFF | 27E0 |
41000 | 41FFF | 2800 |
42000 | 42FFF | 2820 |
43000 | 43FFF | 2840 |
44000 | 44FFF | 2860 |
45000 | 45FFF | 2880 |
46000 | 46FFF | 28A0 |
47000 | 47FFF | 28C0 |
48000 | 48FFF | 28E0 |
49000 | 49FFF | 2900 |
4A000 | 4AFFF | 2920 |
4B000 | 4BFFF | 2940 |
4C000 | 4CFFF | 2960 |
4D000 | 4DFFF | 2980 |
4E000 | 4EFFF | 29A0 |
4F000 | 4FFFF | 29C0 |
50000 | 50FFF | 29E0 |
51000 | 51FFF | 2A00 |
52000 | 52FFF | 2A20 |
53000 | 53FFF | 2A40 |
54000 | 54FFF | 2A60 |
55000 | 55FFF | 2A80 |
56000 | 56FFF | 2AA0 |
57000 | 57FFF | 2AC0 |
58000 | 58FFF | 2AE0 |
59000 | 59FFF | 2B00 |
5A000 | 5AFFF | 2B20 |
5B000 | 5BFFF | 2B40 |
5C000 | 5CFFF | 2B60 |
5D000 | 5DFFF | 2B80 |
5E000 | 5EFFF | 2BA0 |
5F000 | 5FFFF | 2BC0 |
60000 | 60FFF | 2BE0 |
61000 | 61FFF | 2C00 |
62000 | 62FFF | 2C20 |
63000 | 63FFF | 2C40 |
64000 | 64FFF | 2C60 |
65000 | 65FFF | 2C80 |
66000 | 66FFF | 2CA0 |
67000 | 67FFF | 2CC0 |
68000 | 68FFF | 2CE0 |
69000 | 69FFF | 2D00 |
6A000 | 6AFFF | 2D20 |
6B000 | 6BFFF | 2D40 |
6C000 | 6CFFF | 2D60 |
6D000 | 6DFFF | 2D80 |
6E000 | 6EFFF | 2DA0 |
6F000 | 6FFFF | 2DC0 |
70000 | 70FFF | 2DE0 |
71000 | 71FFF | 2E00 |
72000 | 72FFF | 2E20 |
73000 | 73FFF | 2E40 |
74000 | 74FFF | 2E60 |
75000 | 75FFF | 2E80 |
Pokepuff Index Numbers
Index | Name |
---|---|
00 | Empty |
01 | Sweet Basic Pokepuff |
02 | Mint Basic Pokepuff |
03 | Citrus Basic Pokepuff |
04 | Mocha Basic Pokepuff |
05 | Spice Basic Pokepuff |
06 | Sweet Frosted Pokepuff |
07 | Mint Frosted Pokepuff |
08 | Citrus Frosted Pokepuff |
09 | Mocha Frosted Pokepuff |
0A | Spice Frosted Pokepuff |
0B | Sweet Fancy Pokepuff |
0C | Mint Fancy Pokepuff |
0D | Citrus Fancy Pokepuff |
0E | Mocha Fancy Pokepuff |
0F | Spice Fancy Pokepuff |
10 | Sweet Deluxe Pokepuff |
11 | Mint Deluxe Pokepuff |
12 | Citrus Deluxe Pokepuff |
13 | Mocha Deluxe Pokepuff |
14 | Spice Deluxe Pokepuff |
15 | Wish Supreme Pokepuff |
16 | Honor Supreme Pokepuff |
17 | Spring Supreme Pokepuff |
18 | Summer Supreme Pokepuff |
19 | Fall Supreme Pokepuff |
1A | Winter Supreme Pokepuff |
Super Training Bag Index Numbers
Index | Name |
---|---|
00 | Empty |
01 | HP Bag S |
02 | HP Bag M |
03 | HP Bag L |
04 | ATK Bag S |
05 | ATK Bag M |
06 | ATK Bag L |
07 | Def Bag S |
08 | Def Bag M |
09 | Def Bag L |
0A | Sp.A Bag S |
0B | Sp.A Bag M |
0C | Sp.A Bag L |
0D | Sp.D Bag S |
0E | Sp.D Bag M |
0F | Sp.D Bag L |
10 | Speed Bag S |
11 | Speed Bag M |
12 | Speed Bag L |
13 | Strength Bag |
14 | Toughen Up Bag |
15 | Swiftness Bag |
16 | Big-Shot Bag |
17 | Double-Up Bag |
18 | Team Flare Bag |
19 | Reset Bag |
1A | Soothing Bag |
Form Dex Index
Forms follow the same index as used in the pokémon data structure (i.e. first unown form is "A"...)
Mega Pokémon have a flag for non-mega form (regardless of gender) and for mega form.
Parenthesis indicates how many form flags there are.
- Unown (28)
- Deoxys (4)
- Shaymin (2)
- Giratina (2)
- Rotom (6)
- Shellos (2)
- Gastrodon (2)
- Burmy (3)
- Wormadan (3)
- Castform (4)
- Cherrim (2)
- Deerling (4)
- Sawsbuck (4)
- Meloetta (2)
- Darmanitan (2)
- Basculin (2)
- Kyurem (3)
- Keldeo (2)
- Thundurus (2)
- Tornadus (2)
- Landorus (2)
- Vivillion (20)
- Flabebé (5)
- Floette (6)
- Florges (5)
- Pumkaboo (4)
- Gourgeist (4)
- Aegislash (2)
- Xerneas (2)
- Venusaur (2)
- Charizard (3)
- Blastoise (2)
- Alakazam (2)
- Gengar (2)
- Kangaskhan (2)
- Pinsir (2)
- Gyarados (2)
- Aerodactyl (2)
- Mewtwo (3)
- Ampharos (2)
- Scizor (2)
- Heracross (2)
- Houndoom (2)
- Tyranitar (2)
- Blaziken (2)
- Gardevoir (2)
- Mawile (2)
- Aggron (2)
- Medicham (2)
- Manectric (2)
- Banette (2)
- Absol (2)
- Latias (2)
- Latios (2)
- Garchomp (2)
- Lucario (2)
- Abomasnow (2)
- Pikachu (1)
- 5 unused bits --> (unused cosplay pikachu formes probably?)
- Cosplay Pikachu (1)
- Hoopa (2)
- Beedrill (2)
- Pidgeot (2)
- Slowbro (2)
- Steelix (2)
- Sceptile (2)
- Swampert (2)
- Sableye (2)
- Sharpedo (2)
- Camerupt (2)
- Altaria (2)
- Glalie (2)
- Salamence (2)
- Metagross (2)
- Rayquaza (2)
- Lopunny (2)
- Gallade (2)
- Audino (2)
- Diancie (2)
- Kyogre (2)
- Groudon (2)
- Arceus (18)
- Genesect (5)
- Furfrow (10)
Pokémon Bank (application?) data
This region is written every time Pokemon Bank saves. It is a copy of first 0x20 bytes of Pokemon Bank savefile (turtle). Maybe this is used to store information of the last application used with the game, but currently no other application that interacts with ORAS savegame writes this data (Pokémon ORAS Special Demo does not write to this region).
Offset | Description |
---|---|
0x00-0x04 | Pokemon Bank unique ID? (seems linked to nnid) |
0x05-0x08 | Unknown (0x00) |
0x09-0x0F | Unknown, only present in turtle file (0x00 on game's savegame) |
0x10-0x14 | Bank usage counter backup (previous counter) |
0x15-0x18 | Bank usage counter |
0x19-0x1F | Pokemon Bank signature? (always 48CA0A0002000000) |
Edited by evandixon
Update formatting
Recommended Comments
There are no comments to display.