Size: 449680 bytes (end at 0x6dc90)
The decryption algorithm is stored in encryption.py.
Credits to zmbkilla's SMTVV Save Editor for the algorithm and key.
KEY = bytes([0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66])
- 0x0 - 0x14 - SHA1 Hash of the rest of the file
(20 bytes) - 0x28 - 0x2c - Difficulty-related? (an unsigned int / u32 (4 bytes))
- 0x40 - 0x4cf - UE4 Data
- 0x4d8 - 0x4e8 - Save name
- 0x4f0 - 0x4f4 - ???
(4 bytes) - 0x4f4 - 0x4fc - Time of Saving
(an unsigned long long / u64 (8 bytes)) - 0x4fc - 0x4fd - Difficulty
- 0x4fd - 0x4fe - ????
- 0x4fe - 0x500 - ????
- 0x500 - 0x502 - ????
- 0x502 - 0x503 - Cycles
(an unsigned char / u8 (1 byte)) - 0x503 - 0x504 - Endings
(an unsigned char / u8 (1 byte)) - 0x504 - 0x524 - Demon Icons Block
(32 bytes) - 0x524 - 0x528 - Save location
(an unsigned int / u32 (4 bytes)) - 0x528 - 0x529 - Clear flag
(a padded bool (1 byte)) - 0x529 - 0x52a - DLC Flags
(an unsigned char / u8 (1 byte)) - 0x5d0 - 0x5d4 - Play Time (in seconds)
(I'm guessing it's an unsigned int / u32 (4 bytes)) - 0x5d4 - 0x5d5 - Moon phase
- 0x618 - 0x61a - Player level?
(maybe... not really... maybe it's a gui thing)
(an unsigned short / u16 (2 bytes)) - 0x988 - 0x9b8 - Player stats block
(48 bytes) - 0x9bc - 0x9c0 - Player healable stats
(4 bytes) - 0x9c0 - 0x9c8 - Player Experience
(an unsigned long long / u64 (8 bytes)) - 0x9c8 - 0x9ca - Player level
(an unsigned short / u16 (2 bytes)) - 0x9ca - 0x9cc - Player stat points
(an unsigned short / u16 (2 bytes)) - 0x9d0 - 0x9e0 - First name
- 0x9e8 - 0x9f8 - Last name
- 0x9fc - 0xa0c - First name again
- 0xa10 - 0xa38 - Combined name
- 0xa38 - 0xa78 - Player skills
(64 bytes) - 0xa98 - 0xae0 - Player affinities
(112 bytes) - 0xb38 - 0xb50 - Player potentials
(24 bytes) - 0xb50 - 0xb52 - Player innate skill
(an unsigned short / u16 (2 bytes)) - 0xb60 - 0x3d10 - Demon table
- 0x3d10 - 0x3d2e - Party menu demon order
(with indices of the demon table; from first to last)
(30 unsigned chars / u8s (30 bytes)) - 0x3d2e - 0x3d31 - Summoned Demons (TODO)
(with indices of the demon table; from first to last)
(3 unsigned chars / u8s (3 bytes)) - 0x3d31 - 0x3d32 - Max Demon Stock
(an unsigned char / u8 (1 byte)) - 0x3d32 - 0x3d36 - Macca
(an unsigned int / u32 (4 bytes)) - 0x3d45 - 0x3d46 - Player placement
(which slot the player is in, from 0 to 2; other values break it)
(an unsigned char / u8 (1 byte)) - 0x3d4a - 0x3d4e - Glory
(an unsigned int / u32 (4 bytes)) - 0x3d4e - 0x3de0 - Miracle Block
- 0x3ece - 0x3ed0 - Magatsuhi Gauge
(from 0% - 100% value)
(an unsigned short / u16 (2 bytes)) - 0x49d8 - 0x4c20 - Demon data???
- 0x4c5a - 0x4c5c - Yoko + Tao registered???
- 0x4c72 - 0x4f11 - Item Table
- 0x5129 - 0x523c - Essence Metadata Table
- 0x567e - 0x5682 - Map ID 1
(an unsigned int / u32 (4 bytes)) - 0x5682 - 0x5686 - Map ID 2
(an unsigned int / u32 (4 bytes)) - 0x568e - 0x569a - Coordinates
(3 floats / f32 (12 bytes)) - 0x56a6 - 0x56ae - Rotation
(2 floats / f32 (8 bytes)) - 0x67a3 - 0x67f6 - Miracle unlock data
- 0x68c5 - 0x68c6 - Last used layline fount ID
(an unsigned char / u8 (1 byte)) - 0x72ca - 0x72cb - ????
- 0x7dc0 - 0x7de0 - Demon haunt data
- 0x80a2 - 0x80d2 (?) - Layline unlock data
- 0x1375e - ??????? - Tracking
- 0x18272 - 0x2db42 - Demon Compendium
- 0x59d52 - 0x5b412 - Quest table
- 0x69a82 - 0x69a?? - NEW
- 0x69a90 - ??????? - Settings????
- 0x69a91 - ??????? - Mitama Settings????
(an unsigned char / u8 (1 byte)) - 0x69ca4 - 0x69ca4 - Story progress data?
- 0x69cf7 - 0x69cf8 - Alignment (Vengeance)
- 0x6a07f - ??????? - DLC Flags (0 when no dlc, 0x18 when all dlcs) (an unsigned char / u8 (1 byte))
- 0x6a08a - 0x6a08b - Cycles
(an unsigned char / u8 (1 byte)) - 0x6a08b - 0x6a08c - Endings
(an unsigned char / u8 (1 byte)) - 0x6a08d - 0x6a08e - NewGame+ Flag???
(a padded bool (1 byte))
Save screen data is loaded once when starting the game, which (reasonably) assumes the files won't be modified while it's running.
When loading a modified save file and saving over it, the save screen data is synced with what's in the file.
This includes (but is not limited to):
- Save screen name
- Time of saving
- DLC info
- Play time
- Summoned demons and protagonist placement
This is also why the workaround from issue #1 worked.
Sources:
https://github.com/trumank/uesave-rs
https://github.com/oberien/gvas-rs
https://github.com/localcc/gvas
https://github.com/AstroTechies/unrealmodding
UE sources (requires login + Epic Games account):
https://github.com/EpicGames/UnrealEngine/blob/40eea367040d50aadd9f030ed5909fc890c159c2/Engine/Source/Runtime/Engine/Private/GameplayStatics.cpp#L84
It's an unsigned char / u8 (1 byte) with an in-game cap of 99.
- 0x01 - Creation - Neutral
- 0x02 - Creation - Law
- 0x04 - Creation - Chaos
- 0x08 - Creation - True Neutral
- 0x10 - Vengeance - Law
- 0x20 - Vengeance - Chaos
For some reason, there are two values that dictate difficulty.
Data for 0x20:
- Clear save from Bai Gaming: 1371 c242
- Hard: ac4b 2f81
- Normal: 0000 0000
- Casual: 1600 0000
- Safety: 1600 0000
Data for 0x4fc (the real difficulty???):
- Clear save from Bai Gaming: 82????
- Hard: 03
- Normal: 02
- Casual: 01
- Safety: 00
Godborn IS NOT a difficulty setting, so it's (most likely) stored somewhere else.
The max name length is 8 UTF-16 chars (16 bytes).
The game does let you get away with a longer name if you don't overwrite other important data.
- 0x4d8 - First name (Save screen)
(std 8 UTF-16 chars (16 bytes))
(max 12 UTF-16 chars (24 bytes)) - 0x9d0 - First name (Menus, Dialogue)
(std 8 UTF-16 chars (16 bytes))
(max 12 UTF-16 chars (24 bytes)) - 0x9e8 - Last name (Dialogue)
(std 8 UTF-16 chars (16 bytes))
(max 10 UTF-16 chars (24 bytes)) - 0x9fc - First name (Also dialogue)
(std 8 UTF-16 chars (16 bytes))
(max 10 UTF-16 chars (24 bytes)) - 0xa10 - First and last name (Stat screen)
(std 17 UTF-16 chars (34 bytes))
(max 20 UTF-16 chars (40 bytes))
NOTE: Name at 0x4d8 gets overwritten by 0x9d0 every time you save.
It's an unsigned char / u8 (1 byte).
0x00000000
01234567
- 0x01 - bit 0 - Not assigned to any DLC
(leftovers of the Japanese Voice Pack DLC?)
(it does nothing when changed, but the game doesn't get rid of it) - 0x02 - bit 1 - DLC 1 - Safety Difficulty
- 0x04 - bit 2 - DLC 2 - Mitama Dance of Wealth
- 0x08 - bit 3 - DLC 3 - Mitama Dance of EXP
- 0x10 - bit 4 - DLC 4 - Mitama Dance of Glory
- 0x20 - bit 5 - DLC 5 - Holy Will and Profane Dissent
- 0x40 - bit 6 - DLC 6 - Sakura Cinders of the East
- 0x80 - bit 7 - DLC 7 - 2 Sacred Treasures Set
NOTE: This value also appears in SysSave
, but when starting the game, it will
be updated this value based on the DLCs installed, so changing it is pointless.
The datetime is at 0x4f4 (an unsigned long long / u64 (8 bytes)).
An excerpt from Unreal Engine 4's source code, since it's not available to everyone.
/**
* Implements a date and time.
*
* Values of this type represent dates and times between Midnight 00:00:00, January 1, 0001 and
* Midnight 23:59:59.9999999, December 31, 9999 in the Gregorian calendar. Internally, the time
* values are stored in ticks of 0.1 microseconds (= 100 nanoseconds) since January 1, 0001.
*
* To retrieve the current local date and time, use the FDateTime.Now() method. To retrieve the
* current UTC time, use the FDateTime.UtcNow() method instead.
*
* This class also provides methods to convert dates and times from and to string representations,
* calculate the number of days in a given month and year, check for leap years and determine the
* time of day, day of week and month of year of a given date and time.
*
* The companion struct FTimespan is provided for enabling date and time based arithmetic, such as
* calculating the difference between two dates or adding a certain amount of time to a given date.
*
* Ranges of dates and times can be represented by the FDateRange class.
*
* @see FDateRange
* @see FTimespan
*/
struct FDateTime
{
// Truncated
private:
/** Holds the ticks in 100 nanoseconds resolution since January 1, 0001 A.D. */
int64 Ticks;
};
File path: /Engine/Source/Runtime/Core/Public/Misc/DateTime.h
0x4fc is some 4 byte value that affects the time.
- Demon ID (an unsigned int / u32)
u32::MAX_INT if none
0x0172 if OG Nahobino - Demon Level (an unsigned int / u32)
0 if none
4 demon icon items.
(an unsigned int / u32 (4 bytes))
A singular stat is represented by an unsigned short / u16 (2 bytes).
A stat value set contains data in the following order:
- HP - Health (Health Points)
- MP - Mana (Magic Points)
- ST - Strength
- VI - Vitality
- MA - Magic
- AG - Agility
- LU - Luck
- (seemingly always) A NULL value
It's 16 bytes in total.
Stat blocks contain:
- Initial stats
- (for demons) stats that the demon should have at the current level
- (for protag) same as above + stat points
- Stat changes
- changes from using Balms/Incenses
- (for demons) talking at the demon haunt
- Current stats
- used for calculations/displaying
NOTE: For demons, if the current stats are different from the sum of initial stats and changes, then at some point the game will reset them. This does not apply for the player (for some reason).
It's 48 bytes in total.
There are also healable stat blocks which (afaik) contain only:
- Current HP
- Current MP
Both of these can exceed the maximum from the current stat block.
It's an unsigned short / u16 (2 bytes).
This stores the amount of points assignable by the player.
When leveling up this gets increased by 1 and after talking with Aogami/Tsukuyomi it increases by 3.
(NTT = New Testament Tablet)
When using NTT the game recalculates base stat block based on the game files (i.e. they're not random) and then lets you assign these points.
Points from using a balm/editing the changes block are not removed.
WARNING: After changning this value, make sure that you use a New Testament Tablet.
WARNING: It is not known what happens if you level up after this value is changed and before using NTT.
The level is stored as an unsigned short / u16 (2 bytes).
In-game it's initially capped at 99, except for... well... spoilers...
The value can exceed the maximum.
NOTE: Changing this value does not change the data in the initial stat block. This means you'll loose the stat points you'd gain at this level.
I recommend not changing this. EVER. Just use Gospels/Grimores.
A skill value consists of:
- A mysterious value (an unsigned int / u32 (4 bytes)) (might be weather the skill can be learned)
- A skill ID (an unsigned int / u32 (4 bytes))
It's 8 bytes in total.
A skill block is an array of 8 singular skill values.
It's 64 bytes in total.
NOTE: This might not matter, since editing this does not affect the actual affinities of the Demon.
A singular affinity is represented by an unsigned short / i16 (2 bytes).
Here are the possible values:
- 0 - Null
- 50 - Resist
- 100 - Neutral
- 125 - Weak
- 999 - Repel
- 1000 - Drain
An affinity block is an array containing many values in the following order:
- Copies of elemental values
- Ailments
- Physical
- Fire
- Ice
- Electric
- Force
- Light
- Dark
NOTE 2: When using an essence to inherit affinities as Nahobino, your potentials also get updated based on your miracles.
A singular affinity is represented by a signed short / i16 (2 bytes).
In regular gameplay it ranges from -9 to 9.
An affinity block is an array containing 11 values in the following order:
- Physical
- Fire
- Ice
- Electric
- Force
- Light
- Dark
- Almighty
- Ailment
- Support
- Healing
- (maybe padding) an unknown value (usually a copy of previous ones)
It's 22 or 24 bytes in total.
The demon ID is represented by an unsigned short / i16 (2 bytes).
0xffff is used to signal that the slot is free.
A singular affinity is represented by an unsigned short / i16 (2 bytes).
The ID of the innate skill.
Surprisingly, it's mutable and unlike changing affinities, it works.
NOTE: The player (most likely) also has a stored innate skill id, but I don't know where it's stored.
Each demon entry is 0x1a8 (424 decimal) in size.
Here's the structure:
- 0x0 - 0x30 - Stats block
(48 bytes) - 0x44 - 0x48 - Friendship
(changes every time the demon is given the lower-grade gift)
(an unsigned int / u32 (4 bytes)) - 0x48 - 0x4a - maybe_is_summoned
(an unsigned short / u16 (2 bytes)) - 0x4a - 0x4c - dh_talks
(something related to the demon haunt)
(an unsigned short / u16 (2 bytes)) - 0x58 - 0x5c - old_is_summoned
(an unsigned int / u32 (4 bytes)) - 0x60 - 0x61 - is_summoned (0x00 for not summoned, 0x06 for summoned)
- 0x64 - 0x68 - Healable stats
(an unsigned int / u32 (4 bytes)) - 0x68 - 0x70 - Experience
(an unsigned long long / u64 (8 bytes)) - 0x70 - 0x72 - Level
(an unsigned short / u16 (2 bytes)) - 0x72 - 0x74 - Demon ID
(an unsigned short / u16 (2 bytes)) - 0x78 - 0xb8 - Skills
(64 bytes) - 0xd8 - 0xe8 - Affinities
(16 bytes) - 0x108 - 0x148 - Affinities
(64 bytes) - 0x148 - 0x14a - something (0xfeff)
- 0x150 - 0x151 - something (0x01)
- 0x154 - 0x156 - something (0xffff)
- 0x158 - 0x160 - something (0x0100 times 4)
- 0x160 - 0x162 - something (fight counter)
- 0x180 - 0x198 - Potentials
(24 bytes) - 0x198 - 0x19c - Innate skill
(an unsigned int / u32 (4 bytes)) - 0x19c - 0x19d - something (0x01)
0x1a8 sized array with nulls except for:
- 0x72 - 0x74 - Demon ID - 0xffff
- 0x74 - 0x76 - ???????? - 0x0001
- 0x110 - 0x148 - Affinities - repeated 0x6400
The demon table start at 0xb60.
It contains AN amount of demon entries.
How much?
It's at least 24 (due to the in-game limit of 24 demons).
It might be +4/5 due to the fact that it has to store guests.
(Yoko, Tao, Yuzuru, Ichiro and Demi-fiend)
(although Demi-fiend is not available until the end of the game)
A random diff between a DLC save file and that same save file after installing DLCs and saving gave me a result of 30. (some random value changed for every demon in the demon table)
(A way to test this would be TPing to the Hall of Chaos and battling the Demi-fiend at a point where you have all 4 other party members. TODO, since I haven't fully figured out the coordinate and map system)
Table end offsets per table size:
- 24 - 0x3320
- 30 - 0x3d10
It's an unsigned char / u8 (1 byte).
0x00000000
01234567
- 0x01 - bit 0 - Bought
- 0x02 - bit 1 - Seen
- 0x04 - bit 2 - Enabled
Based on:
- 00 - NONE
- 02 - Seen
- 07 - Learned
- 03 - Shows up sometimes
- 01, 04, 05, 06 - NEVER APPEARS
NOTE: This might be a bitflag.
An array of miracle values of unknown size.
- 0x67a3 - bit 1 - First one
It's packed bools.
Da'at: Minato???: 0x67a3 - 0x67a9
Da'at: Shinagawa???: 0x67b7 - 0x67bc
Da'at: Shinjuku???: 0x67df - 0x67e5
Da'at: Taito???: 0x67e8 - 0x67ef
Special: 0x67f3 - 0x67f6
Supremacy, Doctrine, Awakening, Cosmos
- 0x67a3
- Art of Essences I
- Demon Proficiency I
- Divine Proficiency I
- Divine Garrison I
- Recover
- Support
- 0x67a4
- Divine Amalgamation
- Divine Garrison II
- Light
- Dark
- Ailment
- 0x67f3
- Inheritance Violation
- 0x67f4
- Rank Violation
- 0x67f5
- Moral Transcendence (NOTE: requires bit 4 of byte 0x69ce6 to be set to 1)
The amount of an item is stored an unsigned char / u8 (1 byte).
This can exceed the in-game item limit.
It's a massive array of item amounts.
The table starts at 0x4c72 with consumable items and ends at 0x4d4f.
Then there's relics from 0x4ed0 to 0x4f01.
Then there's essences from 0x4da9 to 0x4ebc.
Then there's key items from 0x4f02 to 0x4fca.
Then there's relics (again) from 0x4fca to 0x4f11.
NOTE: Essences can only ever have a value of 1.
It's an array of fields, each one correlates to an item field asociated with an essence.
In a way essences are both items, and not.
The formula for it is: absoulute_item_offset + 0x380
where the item is an essence.
Here are possible values for each field:
- 0 - Not owned, ever
(default) - 2 - New
(after getting an essence from a box) - 4 - ???? (possible)
(amount = 1; load + save) - 5 (from 1) (amount = 1; meta = 1; load + save)
- 6 - Owned
(after highligting it in the menu) - 7 (from 3) - Owned (amount = 1; meta = 3; load + highlight + save)
- 16 - Absent
(after fusion) - 20 (from 16) (meta = 16; load + save)
- 22 - Absent (amount = 1; meta = 2; load + fuse (req highlight) + save)
This is (most likely) a bitflag.
- bit 0 - does nothing, not removed if set
- bit 1 - set after getting new essence, never removed
- bit 2 - set after highlighting an essence OR if amount == 1 and bits 0 and 1 are not set
- bit 4 - absent
- bits 3, 5, 6, 7 - if any of those are set, bit 2 is not set after adding essence
It's an unsigned char / u8 (1 byte).
0b00000000
01234567
- 0x02 - bit 1 - New (is new if bit 2 and bit 4 are not set)
- 0x04 - bit 2 - Owned (is owned if bit 4 is not set)
- 0x10 - bit 4 - Absent
- any other bit - Nothing (not removed)
0x567e and 0x5680 store the current map info.
Positional coordinates are stored as a float / f32 (4 bytes).
ID of the last used layline.
Recommended for tests: 0x31 - Tokyo Diet Building
(loads the fastest)
WARNING: IF THE LAST LAYLINE FOUNT IS INVAILD, YOU GET THROWN TO THE TITLE SCREEN.
Tracking is done within an unsigned char / u8 (1 byte). (or maybe an unsigned short / u16 (2 bytes))
The game track the following actions:
- 0x1375e - Giving boxes to demons
- 0x180f? - Using essences
The following things are not tracked:
- Using Balms and Incenses
Array indexed by the demon ID.
Each entry has a size of 0xe0 consists of:
- 0x00 - 0x10 - Stat block (original stats)
- 0x10 - 0x20 - Stat block
(registers stat changes)
(16 bytes) - 0x20 - 0x22 - ???
- 0x30 - 0x50 - Skill block
(registers only skill IDs)
(32 bytes?) - 0x50 - 0x54 - Exp???
- 0x54 - 0x55 - Level
- 0x58 - ???? - Affinities
- 0x90 - ???? - Potentials
- 0xc1 - 0xc2 - ???
- 0xc2 - ???? - Innate skill
Assuming Eisheth (ID 394) is the last registerable demon, the table ends at 0xdb42.
(also internally known as missions)
The end is assumed to be at 0x5b412 due to the last id in the quest data table.
Game/Blueprints/Gamedata/BinTable/Mission/MissionTable.uexp
0x59d52 + 26 * (223 + 1)
-
0x69a82 - Skills NEW flag
(bool) -
0x69a83 - Items NEW flag
(bool) -
0x69a85 - Party NEW flag
(bool) -
0x69a8e - bit 1 - Dashing popup?
-
0x69a8e - bit 3 - Magatsuhi crystal popup?
-
0x69a8e - bit 5 - Jumping popup?
-
0x69a8e - bit 7 - Climbing points popup?
-
0x69a90 - bit 3 - Treasure boxes popup?
-
0x69a90 - bit 1 - Quest info popup?
-
0x69a8f - bit 1 - Battle info popup?
-
0x69ca2 - Student talk data
Data about alignment values is in a different doc (for now).
0xab82 (maybe) - Da'at: Shinjuku revealed map terrain block 0xa???
The above is a massive 2D array. I don't even know where it starts, but filling it with 0xff just works and reveals the terrain.
Width: 16 bytes (128 bits) Height: (probably 1:1/square)
0x11??? - 0x13??? - Map icon block???
Map menu unlock:
- 0x69f0f - 0x10 - Da'at: Shinjuku
- 0x69f0f - 0x20 - Dorm Room
There must be a bit which changes the name from Netherworld to Da'at.
0x69c87 - 0x69c88 seems to be a turn counter?
0x69c88 seems to contain beaten bosses.
Changing 0x69cdc affects the layline menu, removing options.
Changing 0x69cdd from 0x60 back to 0x6b removed button prompts from the bottom-left hand corner of the screen.
Changing 0x69ced affects the X menu.
Changing 0x69cef from 0x10 back to 0x00 makes the game grant the player the dlc items again.
Maria alignment test data:
Save location: 0x01
{
"id": "0x2",
"name": "Empyrean - Maria",
"map_upper": "0x00000010",
"map_lower": "0x00000000",
"coordinates": "52ec6d450f2e06c700302345",
"rotation": "1b29343fc2df353f"
},
Analyze data regex: \+0005[def][0-9a-f]{3}
Da'at: Minato:
- 0x62f2 - bit 4
- 0x62f2 - bit 2
- 0x62f2 - bit 7
one of these:
@@ -6332,7 +6332,7 @@
000062ec: 0000 0000 ....
000062f0: 0000 0000 ....
000062f4: 0000 0000 ....
-000062f8: 0000 0000 ....
+000062f8: 0200 0000 ....
000062fc: 0000 0000 ....
00006300: 0000 0000 ....
00006304: 0000 0000 ....
@@ -7006,7 +7006,7 @@
00006d74: 0000 0000 ....
00006d78: 0000 0000 ....
00006d7c: 0000 0000 ....
-00006d80: 0000 0000 ....
+00006d80: 1000 0000 ....
00006d84: 0000 0000 ....
00006d88: 0000 0002 ....
00006d8c: 0000 0000 ....
Da'at: Taito:
- 0x6304 - bit 7
Repeated ranges:
- 0x62f2 - 0x62fe (bits 0, 1, 2, 3)
Ranges from complete save file:
- 0x630b - 0x6311 (bits 0, 1)
- 0x6312 (bits 0, 1)
R2:
- 0x6304 (bits 4, 5) - 0x6311 (bits 0, 1)
- 0x6312 (bits 0, 1, 2, 3, 4, 5, 6)
- 0x6313 (bits 0, 1, 3, 4, 5, 6, 7)
- 0x6314 (bits 2, 4)
- 0x7e28 - 0x7e2a
- 0x8162 - 0x8166
- 0x8d70 - 0x8dd0
- 0x11df0
- 0x11e08
- 0x11e20
- 0x11e4c - 0x11e4e
- 0x11e70 - 0x11e71