===============================================================================
DISGAEA: HOUR OF DARKNESS
SAVE GAME HACKING FAQ
version 1.0 (February 01 2005)
Author: Kamek (
[email protected])
Copyright 2005 by Rick Foltz ("Kamek"). All rights reserved.
===============================================================================
This may be not be reproduced under any circumstances except for personal,
private use. It may not be placed on any web site or otherwise distributed
publicly without advance written permission. Use of this guide on any other web
site or as a part of any public display is strictly prohibited, and a violation
of copyright. All trademarks and copyrights contained in this document are
owned by their respective trademark and copyright holders.
gamefaqs.com is the only web site authorized to host this FAQ.
===============================================================================
TABLE OF CONTENTS
=================
1. Version History
2. Introduction
3. What You Need
4. Extracting the Save
5. Character Hacking
6. Item Hacking
7. Unlocked Character Class Hacking
8. Restoring the Save
9. Credits
APPENDIX
========
A. Disgaea Data Structures for Hex Workshop
B. Hex Values for Text Characters
C. Hex Values for Spells/Skills
D. Hex Values for Specialist Jobs
E. Hex Values for Character Classes
===============================================================================
1. VERSION HISTORY
==================
Version 1.0: first public release. Appendices included but incomplete.
===============================================================================
2. INTRODUCTION
===============
This FAQ is a guide for those who wish to hack their saved game files for
Disgaea: Hour of Darkness. This is not a simple task. This guide is for
advanced players who wish to delve into the internals of the Disgaea game.
Those with limited or no knowledge of hacking or computer programming should
stop reading this FAQ now and instead obtain a cheat device such as
Codebreaker.
If you wish to continue, I strongly suggest that you have a general working
knowledge of the following.
* General hex editing and basic computer programming, especially the
hexadecimal numbering system
* A basic understanding of the C++ computer language, used for structure
definitions in Hex Workshop and possibly other hex editors
* A thorough understanding of the Disgaea battle system, including character
stats/abilities and the Item World. The best sources for this information are
bend's Item Guide and JungleJim's Training FAQ, both available on this site
(gamefaqs.com).
This guide is a work in progress. It will outline the basics of the character
and item structures, as well as methods to unlock secret character classes that
can't normally be used during play.
To my knowledge, myself and Pyriel are the only ones who have any working
knowledge of the save file structure. As such there are lots of unknowns about
the save file structure as well as the internal character and item structures.
Feel free to tinker with the unknown values. If you discover something, please
let me know and I'll update this FAQ and the structures accordingly.
===============================================================================
3. WHAT YOU NEED
================
In order to hack save files, you'll need some special equipment and software.
At a minimum you will need the following:
* The obvious: a PS2, a copy of Disgaea (US version) and a PS2 memory card
* A good hex editor. I strongly suggest Hex Workshop, because the structures I
will define in this document can be imported into Hex Workshop to make the
editing process a lot easier.
* A save file transfer kit, such as SharkPort, XPort, ARMax, etc. I use the
SharkPort, which is rather old and outperformed by some of the newer devices
such as ARMax, which accept a simple USB Flash Drive for save transfers.
* A cheat device. I currently use CodeBreaker. The cheat device is necessary to
bypass the checksum validation performed by Disgaea when you load a save file.
* A program called PS2 Save Builder. This program allows you to dissect the
game save and pull out the actual save data. This can be downloaded from
www.ps2savetools.com or do a Google search on it.
* A lot of patience. Hacking in general can be a hit-or-miss process. If it
doesn't turn out the way you like it at first, don't lose your cool.
===============================================================================
4. EXTRACTING THE SAVE
======================
After you've obtained the above equipment and software, you're ready to start
hacking. First, you'll need a Disgaea save file on your PS2 memory card. Just
save the file like you normally would. I highly recommend saving to a different
slot than you normally save to. If the **** hits the fan and you break your
save, you won't lose your hundreds of hours of play time you've probably racked
up by now.
In fact, you might find it easier just to use a brand new blank memory card
exclusively for save hacking. This way, you won't get save files confused with
one another and end up hacking the wrong save.
Now that you have a save file, you need to get the save from your memory card
to your computer's hard drive. This is where your SharkPort, ARMax, etc. comes
in. With the SharkPort, you have a USB cord that connects from your PS2 to
your computer and special software to be run on the PS2 and your computer
simultaneously. With the ARMax, it's a bit easier, because you can simply load
the ARMax and transfer your save to a USB flash drive. For instructions,
consult the manual for your save transfer kit.
Now you have a Disgaea save on your hard drive. Next, you need to use the PS2
Save Builder. PS2 Save Builder supports virtually every type of save transfer
kit there is. First, locate the Disgaea save. It might have an extension like
sps or .npo or something. Open the file using PS2 Save Builder.
Now you'll see three files in the left window pane, and the save game icon in
the right window pane. The file you want is the one called "BASLUS-20666xx".
The xx will vary depending on the ID number of the save. If it's the first or
only save on your memory card, it will be 00. If it's the fifth save it will
be 04. Right-click on that file and hit EXTRACT. You can save it wherever you
want, but I recommend creating a folder just for Disgaea save hacks. Pick the
location and hit SAVE.
Now, you have the actual "meat" of the save. This is the file you're going to
be using your hex editor on.
*** MAKE A BACKUP OF THIS FILE BEFORE YOU DO ANYTHING ELSE!!! *** I can't
stress the importance of backing up your files. One wrong move and your
legendary Level 100 Yoshitsuna with 12 maxed out Gladiators will turn into an
ABC Gum with no specialists, I kid you not. You'll have a reference so that
you can undo your changes or start over if you screw something up.
Now that you have your save file, you can begin your hacking. Open up your hex
editor, find the BASLUS-20666xx file, and open it up for editing.
===============================================================================
5. CHARACTER HACKING
====================
To my knowledge, there is nothing "dynamic" to a Disgaea save. In other words,
any offsets I give you should be constant throughout any Disgaea saves you
might be hacking. In the event that there is a discrepancy, please notify me
and send any details you think might be causing the offset to be different.
Anyway, the first offset you're going to hack is at 0x00000BA8. This offset
marks the beginning of the very first character in your lineup. Chances are,
that character is Laharl, unless you've been training a Divine Majin or some
other character and that character is at the beginning of the lineup.
For reference, I recommend that while you hack, have your Disgaea game running
with the exact same save file open. This allows you to verify that any data you
come across in the save file is indeed correct.
Warning: it's going to get pretty dry from here on out. Try to keep up. I'm a
hacker, not a teacher, although I will try my best to keep things clear.
At 0x00000BA8 is the EXP value of the first character in your lineup. This is
a 64-bit number. Example: C0F9 C105 0000 0000. Remember that the data here is
Intel byte order, meaning the first byte is low and the second byte is high.
Therefore, FF00 0000 0000 0000 would be 255, not 18374686479671623680. (You
may want to have a hexadecimal calculator available. The built-in Windows
Calculator actually does a decent job here.)
Depending on your hex editor, you may have a window pane that shows what the
value of the cursor number is. In that case, simply highlight the eight bytes
and your hex editor will tell you the value of your EXP. Compare this with
your Disgaea game. If you want to max out your character's EXP, simply set it
to FFFF FFFF FFFF FFFF. The game will compensate the next time you take that
character into battle and you should wind up at Level 9999, with the
appropriate stats and all.
The next few pages of data refer to your character's equipped weaponry and
accessories. For now let's skip this and instead jump to 0x00000ED0. You might
see something like:
826B 8281 8288 8281 8292 828C 0000
What does this mean? This is the name of your character. The numbers I just
gave you translate to "Laharl". Yes, you can now rename Laharl into anything
you want! Since I can't think of anything witty, for now we're going to change
his name to "Harlie", which happens to be Jennifer's pet name for him. Plus,
it also happens to be exactly the same length as Laharl's regular name, so
you won't run into any conflicts there. Here is the hex data for "Harlie":
8267 8281 8292 828C 8289 8285 0000
H a r l i e *end*
If you want to use a different name, see Appendix B for an incomplete list of
what hex bytes convert to what text characters.
Next is the character's job class, at offset 0x00000EF2. For Laharl's case,
this is Demon Prince:
8263 8285 828D 828F 828E 8140 826F 8292 8289 828E 8283 8285 0000
D e m o n *sp* P r i n c e *end*
However, if you've defeated Baal the Lord of Terror, it will be Tyrant:
8273 8299 8292 8281 828E 8294 0000 8292 8289 828E 8283 8285 0000
T y r a n t *end*r i n c e *end*
Let's give him a title change, too. Here are the hex values for "Overlord":
826E 8296 8285 8292 828C 828F 8292 8284 0000
O v e r l o r d *end*
Again, refer to Appendix B if you want to put something more witty there.
After the names are some unknown bytes that I haven't deciphered yet. Next is
status resistance! Status resistance values are unsigned shorts (16-bit) and
are located at the following offsets:
0x00000F36: Poison
0x00000F38: Sleep
0x00000F3A: Deprave
0x00000F3C: Forget
0x00000F3E: Paralyze
Note that these values take into account class resistance as well as any
Specialists you have equipped. The maximum effective value is 99 (6300).
After the status resistance values are more unknown bytes, followed by
information about your character's learned skills. To date, I have had no
success in getting the game to accept any changes I make to a character's
learned skills. Apparently, the game dynamically recalculates these values and
rearranges them based on your weapon mastery, character class, and so on.
However, you CAN alter the experience and level of your learned skills. Skill
levels max out at 99. I'm not sure what experience this corresponds to, but I
do know that 50 experience puts you at level 1. If your character is learning
magic through pupils, the EXP value will be less than 50 and the Level will
actually be 255, not 0. I think Level 0 is like an "off" bit for that
particular skill.
Anyway, here are the appropriate offsets for learned skills.
Skill EXP: 4 bytes (32 bits)
0x00000FB0: EXP for Skill #1
0x00000FB4: EXP for Skill #2
0x00000FB8: EXP for Skill #3