Makai Senki Disgaea 2/Save Hacking
From Akurasu Wiki
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 Daichi
akurasu.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
