| 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. | ||
* | *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 {{DaichiEmail}} | *If anyone wants to contact me to talk about D2 Save Hacking my Email is {{DaichiEmail}} | ||
-[[User:Daichi|Daichi]] | -[[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]; | ||
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 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