Skip to content

Commit 2e58d1f

Browse files
committed
Change archive file name encoding to Shift-JIS
1 parent a343903 commit 2e58d1f

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/yukatool/Data/Factory/ArchiveFactory.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Yuka.Data.Factory {
77
class ArchiveFactory : FileFactory<YukaArchive> {
88
public static readonly ArchiveFactory Instance = new ArchiveFactory();
9+
private static readonly Encoding ShiftJis = Encoding.GetEncoding("Shift-JIS");
910

1011
public ArchiveFactory() : base(DataType.Archive) { }
1112

@@ -28,7 +29,7 @@ public override YukaArchive FromBinary(Stream s) {
2829
uint datalength = br.ReadUInt32();
2930

3031
s.Seek(nameoffset, SeekOrigin.Begin);
31-
string name = Encoding.ASCII.GetString(br.ReadBytes((int)namelength - 1)).ToLower();
32+
string name = ShiftJis.GetString(br.ReadBytes((int)namelength - 1)).ToLower();
3233
s.Seek(dataoffset, SeekOrigin.Begin);
3334
byte[] data = br.ReadBytes((int)datalength);
3435

@@ -59,13 +60,14 @@ public override long ToBinary(YukaArchive data, Stream s) {
5960
MemoryStream ms = data.GetInputStream(file.Key);
6061
ms.CopyTo(s);
6162
//s.Write(data, 0, data.Length);
62-
offsets[file.Key] = (new uint[] { dataoffset, (uint)file.Value.Length, 0, (uint)file.Key.Length + 1 });
63+
offsets[file.Key] = (new uint[] { dataoffset, (uint)file.Value.Length, 0, (uint)ShiftJis.GetByteCount(file.Key) + 1 });
6364
}
6465

6566
// Write name table
6667
foreach(var entry in offsets) {
6768
uint nameoffset = (uint)s.Position;
68-
s.Write(Encoding.ASCII.GetBytes(entry.Key), 0, Encoding.ASCII.GetByteCount(entry.Key));
69+
var bytes = ShiftJis.GetBytes(entry.Key);
70+
s.Write(bytes, 0, bytes.Length);
6971
s.WriteByte(0);
7072
entry.Value[2] = nameoffset;
7173
}

0 commit comments

Comments
 (0)