Pokémon ORAS Save File Structure
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 |
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 Bank 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, 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 |