Random Notes - MoonlitDeath/Disgaea-5-Notes GitHub Wiki
This is just a bunch of random ass notes I had or collected, some may need testing to verify if they still work after the full version was released or after updates.
1- Save File-
- Every byte is nybble-swapped, then XORed with 0xF0
To decode:
- XOR with 0xF0. 0xE0 = 0×10, 0×80 = 0×70, etc.
- Swap the two parts of the byte. 0×7F = 0xF7, 0×3C = 0xC3
Repeat this in reverse order to re-encode.
If you do this properly, the save file will be (mostly) plain text. You can search through it and see a bunch of text:
2- FlagListDatabase.dat- (haven’t tested these/not my notes)
27 05 00 00
00 00 00 00 0E 00 00 00 0D 67 00 00 11 00 00 00 1D 67 00 00
02 00 00 00 13 00 00 00 52 67 00 00 13 00 00 00 67 67 00 00
03 00 00 00 13 00 00 00 A2 67 00 00 15 00 00 00 B7 67 00 00
The first four bytes are the number of flags in the game (27 05 → 0×527 → 1319 flags)
first 4 bytes are Flag value/ID/location?
next 4 are some sort of type indicator (16 = scenario clear flags)
next 4 are where in the file the flag name begins (-4 bytes due to header)
next 4 are some sort of type indicator (06 and 07 = scenario clear flags)
last 4 are where in the file the flag name ends (-4 bytes again)
from the demo- The bits at the bottom are the flag data for the first 6 chapter clear flags, 1~6 in order. Interestingly, the “flag value” (first three values) are all 199, 299, 399.. and so on, up to 1699 (A3 06, or rather, 06A3 in hex) for the 16th episode clear. Flags in between these have differing numbers but seem to follow the same pattern: a flag between chapters 12 and 13, in chapter 13, has 1310 (05 1E) as a value. Some events that occur in chapter 3 (32 01 to 34 01) take 306 (Item World Tutorial 1), 307 (Item World Tutorial 1 Clear), 308 (Item World Tutorial 2 Clear). Some chapter 2 events take 222 (Tutorial Battle 3 End) and 223 (Tutorial Scenario 2 Start). And so on.
Of note is that although there are events “in between” those flag sections of Chapters 1, 2 and 3.. there aren’t any more after that. It goes straight to 16 (except for a minor flag in chapter 12), then postgame, then DLC. There are, of course, many many many other flags (for example FLAG_TOWN_TALK_FUNCTION_FIRST_TIME_SKILL, _QUEST, _TORTURE, etc).
Flag list Spreadsheet and Pastebin
3- TownFuncCharCenter.dat- (needs testing)
each initial town NPC is defined like this:
Dimensional Guide – 00 00 00 00 B9 0B 00 00 1E 00 00 00 4C FF FF FF 1A 01 00 00 E4 01 00 00 50 8C 1E 00 05 00 00 00
QQ = NPC ID in file
AA = Sprite & Voice
BB = Unknown
CC = ? (Default facing? NPC faces southeast with 4C after talking….)
DD = X Coordinate
FF = FUNCTION – all 3 must be set
HH = Overhead icon
Setting the three “FF” to the other NPCs’ functions lets you use the NPC as if it were the other one. For example, if I change “50 8C 1E” to “00 BD 1F” (Fashion Manager), little Zombie maid pops up when I talk to the Dimensional Guide and asks if I want to change Seraphina into a bunny outfit.
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Dimension Guide
00 00 00 00 B9 0B 00 00 1E 00 00 00 4C FF FF FF 1A 01 00 00 E4 01 00 00 50 8C 1E 00 05 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Item Worlder
01 00 00 00 BA 0B 00 00 D2 00 00 00 4C FF FF FF F6 00 00 00 F8 01 00 00 38 90 1E 00 06 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Item worlder 2
02 00 00 00 BA 0B 00 00 D2 00 00 00 4C FF FF FF F6 00 00 00 CE 01 00 00 38 90 1E 00 06 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Equipment Shop
03 00 00 00 BB 0B 00 00 55 00 00 00 97 FF FF FF 90 01 00 00 4E 01 00 00 20 94 1E 00 01 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Item Shop
04 00 00 00 BC 0B 00 00 55 00 00 00 A6 FF FF FF 90 01 00 00 12 01 00 00 84 94 1E 00 02 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Hospital
05 00 00 00 BD 0B 00 00 B8 00 00 00 5B FF FF FF 53 01 00 00 9B 01 00 00 08 98 1E 00 03 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Assembly
06 00 00 00 BE 0B 00 00 2C 01 00 00 5B FF FF FF 1A 01 00 00 B7 00 00 00 F0 9B 1E 00 04 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Recruiter
07 00 00 00 CD 0B 00 00 78 00 00 00 B5 FF FF FF 36 01 00 00 96 00 00 00 70 DA 1E 00 11 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Data Shop
08 00 00 00 C0 0B 00 00 69 00 00 00 0F 00 00 00 43 01 00 00 4B 00 00 00 C0 A3 1E 00 08 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Memory Shop
09 00 00 00 C1 0B 00 00 82 00 00 00 E2 FF FF FF EF 00 00 00 4D 00 00 00 A8 A7 1E 00 0A 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Nether Research Squad
0A 00 00 00 C5 0B 00 00 61 00 00 00 4C FF FF FF A2 00 00 00 B6 01 00 00 48 B7 1E 00 0D 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Squad Shop
0B 00 00 00 C6 0B 00 00 1A 00 00 00 4C FF FF FF DE 00 00 00 AA 01 00 00 30 BB 1E 00 0B 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Chara World
0C 00 00 00 C7 0B 00 00 BE 00 00 00 4C FF FF FF F6 00 00 00 FE 01 00 00 18 BF 1E 00 12 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Innocent Shop
0D 00 00 00 C8 0B 00 00 46 00 00 00 4C FF FF FF C6 00 00 00 AA 01 00 00 00 C3 1E 00 0E 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Skill Shop
0E 00 00 00 C9 0B 00 00 54 00 00 00 A6 FF FF FF 9E 01 00 00 DE 00 00 00 E8 C6 1E 00 07 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Quest Shop
0F 00 00 00 CA 0B 00 00 21 00 00 00 79 FF FF FF AA 01 00 00 86 01 00 00 D0 CA 1E 00 0C 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Netherworld Edit Shop
10 00 00 00 CE 0B 00 00 F0 00 00 00 00 00 00 00 1A 01 00 00 0A 02 00 00 58 DE 1E 00 15 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Round Shop(?)
11 00 00 00 C4 0B 00 00 2B 02 00 00 00 00 00 00 72 00 00 00 44 00 00 00 60 B3 1E 00 00 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Cheat Shop
12 00 00 00 C2 0B 00 00 C8 00 00 00 79 FF FF FF A2 00 00 00 36 01 00 00 90 AB 1E 00 09 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Alchemist
13 00 00 00 CB 0B 00 00 3B 01 00 00 0F 00 00 00 58 00 00 00 C6 00 00 00 B8 CE 1E 00 13 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Map Edit
14 00 00 00 D1 0B 00 00 2D 00 00 00 4C FF FF FF 3D 01 00 00 CE 01 00 00 A0 D2 1E 00 14 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Interrogation Room
15 00 00 00 CC 0B 00 00 00 01 00 00 79 FF FF FF 69 01 00 00 61 00 00 00 88 D6 1E 00 10 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Curry Shop
16 00 00 00 D4 0B 00 00 0F 00 00 00 79 FF FF FF 66 00 00 00 84 01 00 00 40 E2 1E 00 16 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Carnage Guide
17 00 00 00 78 00 00 00 FF FF FF FF 4C FF FF FF 3E 01 00 00 FE 01 00 00 F0 95 1F 00 17 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Fashion Manager
2D 00 00 00 D2 0B 00 00 0B 00 00 00 A6 FF FF FF D8 02 00 00 29 01 00 00 00 BD 1F 00 00 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
DLC SHOP
2E 00 00 00 D3 0B 00 00 96 00 00 00 87 00 00 00 32 01 00 00 9E 01 00 00 28 E6 1E 00 19 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Assembly 2
31 00 00 00 30 02 00 00 2C 01 00 00 5B FF FF FF 1A 01 00 00 B7 00 00 00 F0 9B 1E 00 04 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
Trophy Shop
32 00 00 00 D9 0B 00 00 F4 01 00 00 00 00 00 00 19 01 00 00 40 00 00 00 E0 F1 1E 00 1A 00 00 00
ID |SPRITE/VOICE|UNKNOWN |DIRECTION |X CORD |UNKNOWN |FUNCTION |ICON
4. Skills-
The actual animation itself is bound to a particular skill ID. To be exact, the script that is run for some skill with ID X is script ID 12000000 + X. So Triple Strike, a skill with ID 101, will run script 12000101. I have confirmed this by unpacking the Script.dat table, swapping scripts 12000101 and 12000106 (Big Bang), and repacking. As expected, using Triple Strike will then play Big Bang’s animation. The targets will be the same targets that would normally be hit by Triple Strike, though: the animation and targeting systems appear completely independent. My assumption is that the targeting process passes a list of targets to the script for use in the animation. Additionally, the script is what handles the final character positions (among other things), so Triple Strike with Big Bang’s script will NOT knock back the selected target.
5. Overload Scripts-
Unlike skills, the event each overload calls is specified by the last 4 bytes of its entry in overlordskill.dat.
So Sinful Snatcher (which is in the game but unused) apparently calls script 16100900, which appears to exist but doesn’t actually seem to do anything.
6- Tyrant Valvatorez-
The first thing I’m going to do is point out that even if you recruit Tyrant Valvatorez, EVERYTHING special about him is contigent on actually having his unique 3-turn Overload activated: he doesn’t get the “resurrect doods” passive ability.
He does not have access to Valvatorez’s skills (though they are learned), and although he does have the Tyrant skills,
he cannot use them unless he has activated his overload (during which, the resurrect thing works fine). Furthermore,
if Tyrant Valvatorez goes into overload, at the end of it or clearing the stage, he will be reverted back to normal Valvatorez.
So, there’s that. Which sucks, a lot. However, you can give him someone else’s Overload (through the Assembly + postgame, such as Izuna’s) and it’ll work fine. I’m pretty sure they just straight-up copy-pasted Valvatorez into a new unit and changed his portrait/sprite, everything special is in the Overload.
However, yeah, all that is garbage. But what you can do is teach Valvatorez his Overload as a normal skill, which’ll just let you use it on demand (and not take up a turn).
find a scroll you don’t want or need, and edit the ID of the skill using Cheat Engine to the ID of Val’s Overload. This skill is unique to Valvatorez and will cast his current overload on himself (..so if you do it with Comet Disaster, he’ll self-cast CD but it’ll Miss) – all Overloads have a skill version but it’s buggy if that character doesn’t actually have that Overload equipped. From there, just teach it to Valvatorez, then in battle just cast it. It’ll still only last 3 turns (even though you won’t be in Revenge or have the Transformation particles), but you can reuse it when it wears off, it’ll let him resurrect dead people, it’ll let him use his special skills, etc.