DIM Card images all seem to be 4MB in size with a bitwise NOT applied to the entire image. Data all appears to be little endian byte format with the vast majority being 16-bit unsigned integers. The only exception is a small amount of text at the beginning of the header section and sprite section.
- 0x10 - DIM Metadata
- 0x10000 - Locked VB Id (0s on fresh DIM) (doesn't seem to have a compliment, probably excluded from checksum)
- 0x11000 - 2nd Locked Digivice-V Id (0s on fresh DIM)
- 0x12000 - 1st Locked Digivice-V Id (0s on fresh DIM)
- 0x13000 - Compliment to cancel out id at 0x11000
- 0x14000 - Compliment to cancel out id at 0x12000
- 0x30000 - Stats
- 0x40000 - Evolution Requirements
- 0x50000 - Adventure Missions
- 0x60000 - Sprite Dimensions
- 0x70000 - Jogress
- 0x80000 - Specific Jogress
- 0x100000 - Sprite Data
- 0x3FFFFE - 16-bit Checksum
- Add all 16-bit words in the file excluding the 8 bytes after 0x10000 and 0x3FFFFE
- Flip the 2 byte result, and that should match what is stored here.
- 0x10-0x2F - ASCII Text
- 0x30 = 0
- 0x32 - DIM Id?
- 0x34 - DIM Id?
- 0x36 - 2 digit release/production year?
- 0x38 - 2 digit release/production month?
- 0x3A - 2 digit release/production day?
- 0x3C - 2-digit revision number?
- 0x40-0x5F - UNKNOWN. Guess is that this is an unused 256-bit hash? Seems to be different between DIMs. Seems to be the same after using a sprite altering program. Suggesting that this either isn't a hash, sprites aren't factored into it, or that it's unchecked.
- 0x8F - UNKNOWN. Sometimes this is populated by a 253 byte, other times it seems blank. More testing needed.
- 0x1010-0x102F - UNKNOWN. This only seems to appear on newer DIMs. Working theory is a new 256-bit hash.
This is a table, with each entry having 2 bytes
Column | Details |
---|---|
Stage | 0 = Baby I, 1 = Baby II, 2 = Child, 3 = Adult, 4 = Perfect, 5 = Ultimate |
Unlock Required | 65535 = No, 1 = Yes |
Attribute | 0 = Null, 1 = Virus, 2 = Data, 3 = Vaccine, 4 = Free |
Type | 0 = Stoic, 1 = Active, 2 = Normal, 3 = Indoor, 4 = Lazy |
Small Attack Id | 0-39 |
Big Attack Id | 0-21 |
DP (Stars) | 0-10 |
DP Number | Used for actual battle calculations |
HP | |
AP | |
Child/Adult Battle Chance | Number translates to a chance of appearing in battles for the child/adult stage |
Perfect/Ultimate Battle Chance | Number translates to a chance of appearing in battles for the perfect/ultimate state |
Similar to Stats, this is essentially just a table with each entry consisting of 2-bytes
Column | Details |
---|---|
Slot Id | 0-16 |
Hours For Evolution | This is 65535 if the Digimon has no further evolutions |
Vital Value Requirement | |
UNKNOWN | Appears to just be a max int buffer (65535) |
Trophies Requirement | |
UNKNOWN | Appears to just be a max int buffer (65535) |
Battles Requirement | |
UNKNOWN | Appears to just be a max int buffer (65535) |
Win Ratio | Whole number percentage |
UNKNOWN | Appears to just be a max int buffer (65535) |
Slot Id For New Digimon | 0-16 or 65535 if there are no other regular evolutions |
UNKNOWN | Appears to just be a max int buffer (65535) |
Similar to the previous two sections, this is essentially just a table with each entry consisting of 2-bytes
Column | Details |
---|---|
Steps | |
Boss Slot Id | |
Boss DP | |
Boss HP | |
Boss AP |
Similar to the previous three sections, this is essentially just a table with each entry consisting of 2-bytes
Column | Details |
---|---|
Width | |
Height |
Similar to the previous four sections, this is essentially just a table with each entry consisting of 2-bytes
Column | Details |
---|---|
Slot ID | Digimon in use |
New Digimon Slot Id for Vaccine in backup | 65535 if invalid Jogress |
New Digimon Slot Id for Data in backup | 65535 if invalid Jogress |
New Digimon Slot Id for Virus in backup | 65535 if invalid Jogress |
New Digimon Slot Id for Free in backup | 65535 if invalid Jogress |
Similar to the previous five sections, this seems to essentially just a table with each entry consisting of 2-bytes. No DIM has been released with more than 1 specific jogress route, so it's unknown if this table can have more than a single entry without more testing
Column | Details |
---|---|
Slot ID | Digimon in use |
New Digimon Slot Id | |
Digimon in Backup DIM ID | |
Digimon in Backup Slot ID |
- 0x100000-0x10000C - ASCII Text
- 0x100018-0x10001B - Last bytes of the pointer table
- 0x10001C-0x10003F - 0s
- 0x100040 - Start of pointer table before actual sprite data
Each element in the pointer table is 4 bytes long. The first two elements of the array seem to always be 1, 72. Hex value for 72 is 0x48, which is the offset from 0x100000 for the following (third) element. This third element is the number of sprites. Every element after the third except the last is an offset address from 0x100000 for a sprite. The last element of the table is a pointer to the termination bytes.
Immidiately following this array is the actual sprite data.
This data is 16-bit R5G6B5 color. Again little endian. For the reader unfamiliar with little endian pixel data, this translates to bits in each two byte segment as GGGBBBBB RRRRRGGG
.
The first two sprites are always the DIM logo and background. The following 8 sprites are the egg sprites After that the sprites are in order of monster slot. Level 0 Monsters have 6 Sprites
- Name
- Idle
- Idle 2
- Walk
- Happy
- Sleep
Level 1 Monsters have 7 sprites
- Name
- Idle
- Idle 2
- Walk
- Happy
- Sleep
- Full Image
Level 2 and higher Monsters have 14 sprites
- Name
- Idle
- Idle 2
- Walk
- Walk 2
- Run
- Run 2
- Workout
- Workout 2
- Happy
- Sleep
- Attack
- Another Run?
- Full Image
The termination bytes are 0xff02 0xffff