Skip to content

Commit 3ec8e2f

Browse files
committed
Small SaveData struct changes
1 parent 58c1317 commit 3ec8e2f

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

Cirilla.Core/Models/SaveData.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@ public class SaveData : FileTypeBase
2323

2424
private BlowFish _blowfish = new BlowFish(ExEncoding.ASCII.GetBytes(ENCRYPTION_KEY));
2525
private SaveData_Header _header;
26-
private long _offset1;
27-
private long _offset2;
28-
private long _offset3;
29-
private long _offset4;
26+
private long[] _sectionOffsets;
3027
private byte[] _unk1;
3128
private byte[] _unk4;
3229

@@ -49,13 +46,14 @@ public SaveData(string path) : base(path)
4946
if (_header.Magic[0] != 0x01 || _header.Magic[1] != 0x00 || _header.Magic[2] != 0x00 || _header.Magic[3] != 0x00)
5047
throw new Exception("Decryption failed!");
5148

52-
_offset1 = br.ReadInt64();
53-
_offset2 = br.ReadInt64();
54-
_offset3 = br.ReadInt64();
55-
_offset4 = br.ReadInt64();
49+
_sectionOffsets = new long[4];
50+
_sectionOffsets[0] = br.ReadInt64();
51+
_sectionOffsets[1] = br.ReadInt64();
52+
_sectionOffsets[2] = br.ReadInt64();
53+
_sectionOffsets[3] = br.ReadInt64();
5654

5755
// There are 3 unk blocks here, to keep things simple we combine it into one block for now
58-
_unk1 = br.ReadBytes((int)(_offset4 - _offset1));
56+
_unk1 = br.ReadBytes((int)(_sectionOffsets[3] - _sectionOffsets[0]));
5957
_unk4 = br.ReadBytes(20);
6058

6159
// Initialize SaveSlots
@@ -91,10 +89,10 @@ public byte[] GetBytes(bool encrypt = true)
9189

9290
bw.Write(_header.ToBytes());
9391

94-
bw.Write(_offset1);
95-
bw.Write(_offset2);
96-
bw.Write(_offset3);
97-
bw.Write(_offset4);
92+
bw.Write(_sectionOffsets[0]);
93+
bw.Write(_sectionOffsets[1]);
94+
bw.Write(_sectionOffsets[2]);
95+
bw.Write(_sectionOffsets[3]);
9896

9997
bw.Write(_unk1);
10098
bw.Write(_unk4);

Cirilla.Core/Structs/Native/SaveData.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,25 @@ public struct SaveData_Header
88
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.U1)]
99
public byte[] Magic; // 0x01'00'00'00
1010

11-
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.U1)]
12-
public byte[] Unk1;
11+
public uint Unk1;
12+
public uint Unk2;
1313

1414
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20, ArraySubType = UnmanagedType.U1)]
1515
public byte[] Hash;
16+
1617
public long DataSize;
1718
public long SteamId;
1819

1920
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.U1)]
20-
public byte[] Unk2;
21+
public byte[] Padding;
2122
}
2223

2324
[StructLayout(LayoutKind.Sequential, Pack = 4)]
2425
public struct SaveData_SaveSlot
2526
{
2627
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.U1)]
2728
public byte[] HunterName;
29+
2830
public int HunterRank;
2931
public int Zeni;
3032
public int ResearchPoints;
@@ -36,6 +38,7 @@ public struct SaveData_SaveSlot
3638

3739
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 44, ArraySubType = UnmanagedType.U1)]
3840
public byte[] Unk2;
41+
3942
public SaveData_GuildCard GuildCard;
4043

4144
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 100, ArraySubType = UnmanagedType.U1)]
@@ -52,6 +55,7 @@ public struct SaveData_Appearance
5255

5356
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.U1)]
5457
public byte[] MakeUp2Color;
58+
5559
public float MakeUp2PosX;
5660
public float MakeUp2PosY;
5761
public float MakeUp2SizeX;
@@ -62,6 +66,7 @@ public struct SaveData_Appearance
6266

6367
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.U1)]
6468
public byte[] MakeUp1Color;
69+
6570
public float MakeUp1PosX;
6671
public float MakeUp1PosY;
6772
public float MakeUp1SizeX;
@@ -81,6 +86,7 @@ public struct SaveData_Appearance
8186

8287
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.U1)]
8388
public byte[] FacialHairColor;
89+
8490
public byte EyeWidth;
8591
public byte EyeHeight;
8692
public byte SkinColorX;
@@ -105,6 +111,7 @@ public struct SaveData_Appearance
105111

106112
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.U1)]
107113
public byte[] ClothingColor;
114+
108115
public short HairType;
109116
public byte ClothingType;
110117
public byte Voice;
@@ -115,7 +122,6 @@ public struct SaveData_Appearance
115122
public struct SaveData_GuildCard
116123
{
117124
public long SteamId;
118-
119125
public long Created; // Timestamp
120126
public byte Unk1;
121127
public uint HunterRank;
@@ -130,13 +136,15 @@ public struct SaveData_GuildCard
130136

131137
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.U1)]
132138
public byte[] Unk3;
139+
133140
public SaveData_Appearance Appearance;
134141

135142
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 208, ArraySubType = UnmanagedType.U1)]
136143
public byte[] Unk4;
137144

138145
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64, ArraySubType = UnmanagedType.U1)]
139146
public byte[] PalicoName;
147+
140148
public uint PalicoRank; // Actual rank minus 1?
141149
public uint PalicoHealth;
142150
public uint PalicoAttackMagic;
@@ -151,6 +159,7 @@ public struct SaveData_GuildCard
151159

152160
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 37, ArraySubType = UnmanagedType.U1)]
153161
public byte[] Unk6;
162+
154163
public byte PalicoG1;
155164
public byte PalicoG2;
156165
public byte PalicoG3;
@@ -161,6 +170,7 @@ public struct SaveData_GuildCard
161170

162171
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16, ArraySubType = UnmanagedType.U1)]
163172
public byte[] Unk7;
173+
164174
public short QuestsCompletedLowRank;
165175
public short QuestsCompletedHighRank;
166176
public short InvestigationsCompleted;

0 commit comments

Comments
 (0)