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