https://akurasu.net/downloads/Mazin_head.png
Come hang out with us in the Discord server.
Account creation is disabled due to spam.
If you want to help out on the Wiki, poke us in on our Discord server in #wiki.
Please consider supporting the site with the PlayAsia referral links here or via the donate buttons in the sidebar, it really does help.
https://akurasu.net/downloads/Flonne_cheer.png

Makai Senki Disgaea 2/Save Hacking

From Akurasu
Jump to navigationJump to search
Notes:
  • I'm going to do this as simple as possible right now. I'm just going to start with my Data Structures for Hex Workshop and explain where things are located.
  • There is a checksum in the save, however, you are able to edit some values without the game detecting the save as corrupt.
  • If anyone wants to contact me to talk about D2 Save Hacking my Email is Daichiakurasu.net

-Daichi 20:06, 3 September 2006 (EDT)

Header

#include "standard-types.hsl"

struct timestamp
{
  ushort Hours;
  ubyte Minutes;
  ubyte Seconds;
};

struct header
{
  ubyte unknown[8]; //checksum?
  struct timestamp Timestamp;
  ubyte unknown;
  char Name[31]; // US save file
  //char Name[19]; // JPN Save file
  ushort Level;
  ushort unknown; //Nothing?
  ushort Chapter;
};

Header location: 0x00000000

Items

struct innocent
{
  ushort Level;
  ushort Unknown;
  ushort JobID;
  ushort NameID;
};

struct s //Stat Attributes
{
  long HP;
  long SP;
  long Atk;
  long Def;
  long Int;
  long Spd;
  long Hit;
  long Res;
};

struct item
{
  struct innocent Innocents[10];
  struct s Stats;
  struct s Base_Stats;
  short TypeID;
  short Level;
  short Unknown[11];
  ubyte Rarity;
  short Unknown;
  BYTE Population;
  BYTE Unknown[27];
  char Name[40]; // US Save file
  //char Name[16]; // Japanese Save file
  char Unknown[31];
};

struct Storage //Item Bag & Warehouse
{
  struct item Item_Bag[24];
  struct item Warehouse1[128];
  struct item Warehouse2[128];
  struct item Warehouse3[128];
  struct item Warehouse4[128];
};

Item Bag (24 Item): 0x00051B98 // US Save
Warehouse (512 Item): 0x00053518 // US Save
Storage: 0x00051B98 // US Save

//Item Bag (24 Item): 0x0004BBA8 // Japanese Save
//Warehouse (512 Item): 0x0004D2E8 // Japanese Save
//Storage: 0x0004BBA8 // Japanese Save

Character Inventory (4 Item): + 0x00000008 from Character Offset

Characters

struct resistances
{
  ushort Poison_Res;
  ushort Sleep_Res;
  ushort Deprave_Res;
  ushort Forget_Res;
  ushort Paralyze_Res;
};

struct Character
{
  uquad EXP;
  struct item Weapon;
  struct item Item1;
  struct item Item2;
  struct item Item3;
  char Name[41]; // US Save file
  char Class[61]; // US Save file
  //char Name[21]; // Japanese Save file
  //char Class[25]; // Japanese Save file
  ubyte Unknown[34];
  struct resistances Resistances;
  ubyte Unknown[114];
  ulong SkillEXP[96];
  ushort Skills[96];
  ubyte SkillLevel[96];
  ulong HP_current;
  ulong SP_current;
  struct s stats;
  long unknown_stats[8]; //Base stats?
  ubyte Unknown[32];
  ulong Mana;
  short Unknown[8];
  ubyte Unknown[9];
  ubyte Unknown[7];
  ubyte Unknown[128];
  ubyte Unknown[32];
};

Characters (? character): 0x00000BD8 // US Save File
//Characters (? character): 0x00000BC8 // Japanese Save File
Note: Character structure might start earlier, too much unknown data at the end of the struct right now.

Senators

struct senator
{
  ushort Level;
  ushort ID;
  ushort Attendence;
  ushort Killed;
  ubyte Unknown[3];
  ubyte Magic_Num;
  ubyte Unknown;
  ubyte Unknown; // Maybe Status related
  char Name[31]; // US Save
  //char Name[17]; // Japanese Save
  byte Attitude;
};

struct Senators
{
  struct senator Ghost_Sentaor[10];
  struct senator PetitOrc_Sentaor[10];
  struct senator WhiteDragon_Sentaor[10];
  struct senator Mothman_Sentaor[10];
  struct senator WoodGolem_Sentaor[10];
  struct senator Baciel_Sentaor[10];
  struct senator Legendary_Sentor[4];
};

Senators: 0x000497D8 // US Save
//Senators: 0x00044BC8 // Japanese Save