Save data structure (Generation IV): Difference between revisions

From Bulbapedia, the community-driven Pokémon encyclopedia.
Jump to navigationJump to search
(navtemplate)
m (Grammar fixes; this needs lots of work, it's practically incoherent)
Line 1: Line 1:
{{Incomplete}}
{{Incomplete}}


A {{game2|Diamond|Pearl|Platinum}} .SAV file is broken up into two pairs of blocks... each pair has one small block, and one big block.  The first small block starts at 0x00000 and ends at 0x0C0FF; the first big block starts at 0x0C100 and ends at 0x1E2E0.  The second pair of blocks are at the same address plus 0x40000.
A {{game2|Diamond|Pearl|Platinum}} .SAV file is broken up into two pairs of blocks. Each pair has one small block, and one big block.  The first small block starts at 0x00000 and ends at 0x0C0FF; the first big block starts at 0x0C100 and ends at 0x1E2E0.  The second pair of blocks are at the same address plus 0x40000.


One block pair is always a backup of the other block pair.
One block pair is always a backup of the other block pair.
Line 14: Line 14:
*0x12 - 0x13: Checksum of the block
*0x12 - 0x13: Checksum of the block


So let's say we have the following save block footers:
Given the following save block footers:


-----------------------------------------------------
-----------------------------------------------------
Line 34: Line 34:
-----------------------------------------------------
-----------------------------------------------------


Since the value of 0x0C0F0 - 0x0C0F3 is higher in small block 1 (42 04 00 00 > 41 04 00 00), we would use that as the current small block.  Then, we match the value of 0x0C0EC - 0x0C0EF (which is D1 01 00 00) to our big block... meaning the current big block is actually big block 2 (assuming the big block's checksum is correct).
Since the value of 0x0C0F0 - 0x0C0F3 is higher in small block 1 (42 04 00 00 > 41 04 00 00), that is the current small block.  Then, by matching the value of 0x0C0EC - 0x0C0EF (which is D1 01 00 00) to the big block. This means that the current big block is actually big block 2 (assuming the big block's checksum is correct).
{{data structure}}
{{data structure}}

Revision as of 20:05, 6 August 2009

050Diglett.png This article is incomplete.
Please feel free to edit this article to add missing information and complete it.

A Pokémon Diamond, Pearl, and Platinum .SAV file is broken up into two pairs of blocks. Each pair has one small block, and one big block. The first small block starts at 0x00000 and ends at 0x0C0FF; the first big block starts at 0x0C100 and ends at 0x1E2E0. The second pair of blocks are at the same address plus 0x40000.

One block pair is always a backup of the other block pair.

The last 0x14 Bytes of each block small and big are used as a footer, with the following structure:

  • 0x00 - 0x03: Used to connect a small block with a big block
  • 0x04 - 0x07: Number of the save
  • 0x08 - 0x0B: Size of the block
  • 0x0C - 0x0F: K
  • 0x10 - 0x11: T
  • 0x12 - 0x13: Checksum of the block

Given the following save block footers:


SMALL BLOCK 1

|D1 01 00 00| |42 04 00 00| 00 C1 00 00 23 06 06 20 00 00 7E 7A

BIG BLOCK 1

|D0 01 00 00| F1 02 00 00 E0 21 01 00 23 06 06 20 01 00 0D 39


SMALL BLOCK 2

|D0 01 00 00| |41 04 00 00| 00 C1 00 00 23 06 06 20 00 00 0C 7F

BIG BLOCK 2

|D1 01 00 00| F2 02 00 00 E0 21 01 00 23 06 06 20 01 00 F6 8A


Since the value of 0x0C0F0 - 0x0C0F3 is higher in small block 1 (42 04 00 00 > 41 04 00 00), that is the current small block. Then, by matching the value of 0x0C0EC - 0x0C0EF (which is D1 01 00 00) to the big block. This means that the current big block is actually big block 2 (assuming the big block's checksum is correct).

Data structure in the Pokémon games
Generation I Pokémon speciesPokémonPoké MartCharacter encodingSave
Generation II Pokémon speciesPokémonTrainerCharacter encoding (Korean) • Save
Generation III Pokémon species (Pokémon evolutionPokédexType chart)
Pokémon (substructures) • MoveContestContest moveItem
Trainer TowerBattle FrontierCharacter encodingSave
Generation IV Pokémon species (Pokémon evolutionLearnsets)
PokémonSaveCharacter encoding
Generation V-present Character encoding
TCG GB and GB2 Character encoding