Skip to content

Commit 0c399b2

Browse files
committed
add DawnOfKingdom
1 parent be5b989 commit 0c399b2

4 files changed

Lines changed: 32 additions & 3 deletions

File tree

AssetStudio/BundleFile.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@ private void ReadBlocksInfoAndDirectory(FileReader reader)
741741
var uncompressedDataHash = blocksInfoReader.ReadBytes(16);
742742
}
743743
var blocksInfoCount = blocksInfoReader.ReadInt32();
744-
if (Game.Type.isSSTX())
744+
if (Game.Type.isSSTX() || Game.Type.isDawnOfKingdom())
745745
{
746746
blocksInfoCount ^= 0x1024;
747747
}
@@ -757,7 +757,7 @@ private void ReadBlocksInfoAndDirectory(FileReader reader)
757757
flags = (StorageBlockFlags)blocksInfoReader.ReadUInt16()
758758
};
759759

760-
if (Game.Type.isSSTX())
760+
if (Game.Type.isSSTX()|| Game.Type.isDawnOfKingdom())
761761
{
762762
block.uncompressedSize ^= 0x1024;
763763
}

AssetStudio/FileReader.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,9 @@ public static FileReader PreProcessing(this FileReader reader, Game game)
300300
case GameType.SRU:
301301
reader = DecryptSRU(reader);
302302
break;
303+
case GameType.DawnOfKingdom:
304+
reader = DecryptDawnOfKingdom(reader);
305+
break;
303306

304307
}
305308
}

AssetStudio/GameManager.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ static GameManager()
6767
Games.Add(index++, new Game(GameType.SSTX));
6868
Games.Add(index++, new Game(GameType.LATALE));
6969
Games.Add(index++, new Game(GameType.SRU));
70+
Games.Add(index++, new Game(GameType.DawnOfKingdom));
7071

7172
}
7273

@@ -215,7 +216,8 @@ public enum GameType
215216
InfinityKingdom,
216217
SSTX,
217218
LATALE,
218-
SRU
219+
SRU,
220+
DawnOfKingdom
219221
}
220222

221223
public static class GameTypes
@@ -258,6 +260,7 @@ public static class GameTypes
258260
public static bool isEOS(this GameType type) => type == GameType.EOS;
259261
public static bool isSSTX(this GameType type) => type == GameType.SSTX;
260262
public static bool isLATALE(this GameType type) => type == GameType.LATALE;
263+
public static bool isDawnOfKingdom(this GameType type) => type == GameType.DawnOfKingdom;
261264

262265
public static bool IsGIGroup(this GameType type) => type switch
263266
{

AssetStudio/ImportHelper.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1675,6 +1675,29 @@ public static FileReader DecryptSSTX(FileReader reader)
16751675
ms.Position = 0;
16761676
return new FileReader(reader.FullPath, ms);
16771677
}
1678+
public static FileReader DecryptDawnOfKingdom(FileReader reader)
1679+
{
1680+
MemoryStream ms = new();
1681+
var signature = reader.ReadStringToNull();
1682+
var m_Header = new BundleFile.Header
1683+
{
1684+
version = 7,
1685+
signature = "UnityFS",
1686+
unityVersion = "5.x.x",
1687+
unityRevision = "2019.4.0f1",
1688+
size = reader.ReadInt64()+16,
1689+
compressedBlocksInfoSize = reader.ReadUInt32(),
1690+
uncompressedBlocksInfoSize = reader.ReadUInt32(),
1691+
flags = (ArchiveFlags)reader.ReadUInt32(),
1692+
};
1693+
m_Header.WriteToStream(ms, 15);
1694+
var data = reader.ReadBytes((int)reader.Remaining);
1695+
1696+
ms.Write(data);
1697+
//File.WriteAllBytes("dawntest.bin", ms.ToArray());
1698+
ms.Position = 0;
1699+
return new FileReader(reader.FullPath, ms);
1700+
}
16781701
public static FileReader DecryptLATALE(FileReader reader)
16791702
{
16801703
byte[] PackToolKey = { 0x61, 0x7C, 0x36, 0x24, 0x09, 0x0A };

0 commit comments

Comments
 (0)