Table files (D1DS)

From Netherworld Research
Revision as of 11:59, 20 January 2018 by FireFly (Talk | contribs) (Start by documenting char.dat)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Table files are files describing properties and statistics of various entities inside the game, e.g. items, classes or characters. Each file essentially corresponds to a database table, with rows and columns, or (probably more true to the actual implementation) a row count followed by an array of some struct, with that many elements.

This page documents the structs for the various table files inside D1DS.

Each table starts with the number of rows, as a u32, sometimes repeated twice for seemingly no good reason. (One ugly way to deal with this is to start by reading two u32's, and then seek back 4 bytes if they're equal.)

char.dat

Holds character/class data.

struct {
  char name[19];
  char title[19];
  u8 type;         // 0 = Static? (cutscene/geo); 3 = Usable in-battle; 4 = Prinny; 6 = Prism Red (Doll)
  u8 unk1;
  u8 pad1;
  u8 gender;       // 1 = Male; 2 = Female; 11 = Male (generic); 12 = Female (generic); 13 = Other (generic)
  u8 unk2;
  u8 tier;         // "Tier" into class/colour palette index
  u8 magic_rate;   // Rate of specials acquisition, judging by http://ningyokan.nisfan.net/game/disgaea/usa/usa-units3.html
  u8 jump;

  struct {
    u8 fist, sword, spear, bow, gun, axe, staff;
  } wpn_mastery;
  u8 pad2;

  struct {
    u8 hp, sp, atk, def, int, spd, hit, res;
  } aptitude;

  u16 immunity;     // Bitfield of immunities (0 for most, 255 for Divine Majin)
  u16 id;
  u16 family;       // Seemingly corresponds to row in "create character" screen, e.g. Male/Female Brawler kept separate, but mages are grouped, as are skulls.
  u16 unk3;         // (always 100)
  u16 unk4;         // (always 20)
  u16 throw;
  u16 help;         // (Key into charhelp.dat) Help entry text for this character, or 0.

  struct {
    u16 hp, sp, atk, def, int, spd, hit, res;
  } base_stats;

  u16 unk5;         // (always 5)
  u16 move_range;
  u16 move_class;   // 0 = normal; 1 = flying; 2 = warping
  u16 unk6;         // (always 1)
  u16 unk7;
  u16 unk8;
  u16 unk9;         // (always 10)
  u8 pad3[4];
  u16 unk10;
  u16 counter;

  u16 magic[32];    // (Key into magic.dat) Special index, for specials learned by this char/class, or 0 for unused.
  u16 magic_lvl[32]; // Level at which character learns the corresponding special
};

charhelp.dat

Class help descriptions.

dungeon.dat

Gatekeeper warp data.

ge.dat

Geo effects.

geocube.dat

Geocube effects (multiplayer).

habit.dat

Item inhabitants.

hospital.dat

Hospital rewards.

magic.dat

Specials/spells.

mitem.dat

Item table.

musicshop.dat

Song list.

thief.dat

Stat stealing entries.

wish.dat

Dark Assembly bills.

== zukan.dat Bestiary entries.