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: Difference between revisions

From Akurasu
Jump to navigationJump to search
Data that I hacked from the save file a week ago.
 
Changed the note about the Save Checksum.
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
<div class="divbox" style="background-color:white">'''<span style="font-size:120%">Notes:</span>'''
<div class="divbox" style="background-color:white">'''<span style="font-size:120%">Notes:</span>'''
*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.
*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.
*Right now I only know this information is valid for the Japanese game.
*There is a checksum in the save, however, you are able to edit some values without the game detecting the save as corrupt.
*Currently I have no way to actually edit the saves, due to the checksum check.
*If anyone wants to contact me to talk about D2 Save Hacking my Email is {{DaichiEmail}}
*If anyone wants to contact me to talk about D2 Save Hacking my Email is {{DaichiEmail}}


-[[User:Daichi|Daichi]] 03:22, 3 August 2006 (EDT)
-[[User:Daichi|Daichi]] 20:06, 3 September 2006 (EDT)
</div>
</div>


Line 24: Line 23:
   struct timestamp Timestamp;
   struct timestamp Timestamp;
   ubyte unknown;
   ubyte unknown;
   char Name[19];
   char Name[31]; // US save file
  //char Name[19]; // JPN Save file
   ushort Level;
   ushort Level;
   ushort unknown; //Nothing?
   ushort unknown; //Nothing?
Line 62: Line 62:
   short Level;
   short Level;
   short Unknown[11];
   short Unknown[11];
   BYTE Rarity;
   ubyte Rarity;
   short Unknown;
   short Unknown;
   BYTE Population;
   BYTE Population;
   BYTE Unknown[27];
   BYTE Unknown[27];
   char Name[16];
   char Name[40]; // US Save file
  //char Name[16]; // Japanese Save file
   char Unknown[31];
   char Unknown[31];
};
};
Line 79: Line 80:
};
};
</pre>
</pre>
Item Bag (24 Item): <tt>0x0004BBA8</tt><br>
Item Bag (24 Item): <tt>0x00051B98</tt> // US Save<br>
Warehouse (512 Item): <tt>0x0004D2E8</tt><br>
Warehouse (512 Item): <tt>0x00053518</tt> // US Save<br>
Storage: <tt>0x0004BBA8</tt><br>
Storage: <tt>0x00051B98</tt> // US Save<br>
 
//Item Bag (24 Item): <tt>0x0004BBA8</tt> // Japanese Save<br>
//Warehouse (512 Item): <tt>0x0004D2E8</tt> // Japanese Save<br>
//Storage: <tt>0x0004BBA8</tt> // Japanese Save<br>
 
Character Inventory (4 Item): <tt>+ 0x00000008 from Character Offset</tt>
Character Inventory (4 Item): <tt>+ 0x00000008 from Character Offset</tt>


Line 102: Line 108:
   struct item Item2;
   struct item Item2;
   struct item Item3;
   struct item Item3;
   char Name[21];
   char Name[41]; // US Save file
   char Class[25];
  char Class[61]; // US Save file
  //char Name[21]; // Japanese Save file
   //char Class[25]; // Japanese Save file
   ubyte Unknown[34];
   ubyte Unknown[34];
   struct resistances Resistances;
   struct resistances Resistances;
Line 123: Line 131:
};
};
</pre>
</pre>
Characters (? character): <tt>0x00000BC8</tt><br>
Characters (? character): <tt>0x00000BD8</tt> // US Save File <br>
//Characters (? character): <tt>0x00000BC8</tt> // Japanese Save File<br>
Note: Character structure might start earlier, too much unknown data at the end of the struct right now.
Note: Character structure might start earlier, too much unknown data at the end of the struct right now.


Line 137: Line 146:
   ubyte Magic_Num;
   ubyte Magic_Num;
   ubyte Unknown;
   ubyte Unknown;
   ubyte Unknown; //Maybe Status related
   ubyte Unknown; // Maybe Status related
   char Name[17];
   char Name[31]; // US Save
  //char Name[17]; // Japanese Save
   byte Attitude;
   byte Attitude;
};
};
Line 153: Line 163:
};
};
</pre>
</pre>
Senators: <tt>0x00044BC8</tt>
Senators: <tt>0x000497D8</tt> // US Save<br>
//Senators: <tt>0x00044BC8</tt> // Japanese Save

Latest revision as of 02:04, 13 September 2006

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