This document is WIP.
This document gives you a techinial overview about Ninja Gaiden Sigma 2 (Ninja gaiden Master Collection PC)'s savedata.
You should be familiar with some programming language (C, C++, Java).
This document is written by Nozomi Miyamori and is in the Public Domain.
All savedata is stored under Documents\KoeiTecmo\NINJAGAIDENSIGMA2\<SteamID64>
.
There are four sub-folders there:
- STORYSAV -- for Story mode
- CHAPSSAV -- for Chapter challenge
- SYSTEMSAVE -- for System settings and other info
- UESR_SETTING -- for Screen settings
You can use any string for filename of savedata as long as it starts with STORYSAV
, e.g. STORYSAV_NG+
, STORYSAVE New Game Plus (Master Ninja)
, etc. (it does not require filename suffix like STORYSAV.DAT
).
STORYSAV0.DAT
is used for autosave in story mode. STORYSAV_xxx.DAT
(xxx is digits) is used for manual save after completing a chapter.
CHAPSSAVEx.DAT
(x is one or two digits) is used for Chapter Challenge.
Savedata for Story Mode and Chapter Challenge share completely the same format. You can use both savedata interchangeably.
Savedata is like a lightweight snapshot of a world. It is mapped to the program's memory, which will be described in the later section.
Savedata uses little-endian for storing values. We write values as big-endian hexadecimal here for readablity.
Here is the overview of the content of the savedata.
start size description
0 A00 About save data
A00 30 Some info for save data
D40 1A0 Flags
EE0 200 Number of found items
10E0 200 Number of found and used items
12E0 60 Upgrade item flags
13F0 2C0 Ryu's profile
16B0 2C0 Rachel's profile
1970 2C0 Ayane's profile
1C30 2C0 Momiji's profile
1EF0 70 Some info for the game
TODO: write about these content
0 u16[] About save data 1 (UTF-16LE Encoded String)
100 u16[] About save data 2 (UTF-16LE Encoded String)
200 u16[] About save data 3 (UTF-16LE Encoded String)
A00 i32 Savedata size w/o header (always 8280)
A0C i32 CRC32 value
A14 i32 CRC32 value
A20 i32 this value / 60 = total playtime with this savedata
A24 i16 2 when a main game begins
A26 i8 Number of Life of Gods used
A27 i8 Equipping Talisman of Rebirth = 1 or not = 0
A34 i8 Character profile to be loaded (Ryu = 0, Rachel = 1, Ayane = 2, Momiji = 3)
A38 i8 Skill level (ACOLYTE = 1, WARRIOR = 2, MENTOR = 3, MASTER NINJA = 4)
A3A i16 Loaded stage id
DD9 i8 Chapter Chalenge = 1 or not = 0
12FF i8 Acquired Lives of the Thousand Gods (Chapter 1-1)
1340 i8 Hero mode = 1 or not = 0
1344 u32 Hero mode time limit
13BD i8 Used Dragon Sword
13BE i8 Used Vigoorian Flail
13BF i8 Used Tonfa
13C0 i8 Used Eclipse Scythe
13C1 i8 Used Dragon's Claw and Tiger's Fang
13C2 i8 Used Kuasari-Gama
13C3 i8 Used Falcon's Talons
13C4 i8 Used Lunar Staff
13F0 i8 Enable this profile = 1 or not = 0
1454 i16 Current health
1456 i16 Max health
1458 i16 Health to be referred when a player gets hit
145A i16 Max health that can be healed
1478 i16 Current ninpo slot (200 <-> 1 ninpo)
147A i16 Max ninpo slot
147C i16 Red health
147E i8 Loaded costume id
147F i8 Costume id to be loaded
1480 i16 Equipped melee weapon
1482 i8 Equipped melee weapon level
1484 i16 Equipped ranged weapon
1488 i16 Equipped ninpo
1489 i8 Equipped ninpo level
1490 i16 Equipped item (internal use)
1494 i16 Equipped item (internal use)
1498 i16 Equipped item (internal use)
149C i16 Equipped item (internal use)
14A0 i32 Essense (have to be less than 0x7fffffff; otherwise crashed when opening menu)
14A4 i16 Item id
14A6 i8 Numbr of the item
14A7 i8 Level of the item
1EF0 u32 Random number 1
1EF8 u32 Random number 2
1EFC u32 Total karma of the save data
1F00 u32 Aqcuired karma in the stage
1F04 u32 Total karma at the begining of the stage
1F0C u32 This value / 60 = playtime of the chapter
1F10 u32 number of kills
1F14 u32 number of kills
1F18 u32 Number of last hits
1F24 u32 Aqcuired essence in the stage
1F4C i8 Loaded the main game and the very begining ryu's equipment = 1 or not = 0
1F4E i8 Chapter loading screen to be loaded (c1 = 00, c2 = 01, ..., c17 = 10)
1F4F i8 Loaded chapter loading screen
1F50 i16 Stage id to be loaded
1F55 i8 Load the initial state of the chapter = 1 or not = 0
1F56 i8