From 1d7be3e22ecdd1cd9909497fb25fc524f1981126 Mon Sep 17 00:00:00 2001 From: morkt Date: Tue, 10 Apr 2018 22:19:05 +0400 Subject: [PATCH] (YKC): recognize archives version 2. --- ArcFormats/Yuka/ArcYKC.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ArcFormats/Yuka/ArcYKC.cs b/ArcFormats/Yuka/ArcYKC.cs index a5a0cb52..3d2a1e4c 100644 --- a/ArcFormats/Yuka/ArcYKC.cs +++ b/ArcFormats/Yuka/ArcYKC.cs @@ -28,6 +28,7 @@ using System.Collections.Generic; using System.ComponentModel.Composition; using System.IO; using System.Linq; +using System.Text; using GameRes.Formats.Strings; using GameRes.Utility; @@ -55,7 +56,8 @@ namespace GameRes.Formats.Yuka public override ArcFile TryOpen (ArcView file) { - if (0x3130 != file.View.ReadUInt32 (4)) + var version = file.View.ReadUInt32 (4); + if (version != 0x3130 && version != 0x3230) return null; uint index_offset = file.View.ReadUInt32 (0x10); uint index_length = file.View.ReadUInt32 (0x14); @@ -78,10 +80,11 @@ namespace GameRes.Formats.Yuka dir.Add (entry); index_offset += 0x14; } + Encoding encoding = 0x3130 == version ? Encodings.cp932 : Encoding.UTF8; // read in two cycles to avoid memory mapped file page switching when accessing names foreach (YukaEntry entry in dir) { - entry.Name = file.View.ReadString (entry.NameOffset, entry.NameLength); + entry.Name = file.View.ReadString (entry.NameOffset, entry.NameLength, encoding); entry.Type = FormatCatalog.Instance.GetTypeFromName (entry.Name); } return new ArcFile (file, this, dir);