Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified evrtools
Binary file not shown.
12 changes: 6 additions & 6 deletions pkg/manifest/benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ func BenchmarkManifest(b *testing.B) {
// Fill with test data
for i := range manifest.FrameContents {
manifest.FrameContents[i] = FrameContent{
TypeSymbol: int64(i % 100),
FileSymbol: int64(i),
TypeSymbol: uint64(i % 100),
FileSymbol: uint64(i),
FrameIndex: uint32(i % 500),
DataOffset: uint32(i * 1024),
Size: 1024,
Expand All @@ -41,8 +41,8 @@ func BenchmarkManifest(b *testing.B) {

for i := range manifest.Metadata {
manifest.Metadata[i] = FileMetadata{
TypeSymbol: int64(i % 100),
FileSymbol: int64(i),
TypeSymbol: uint64(i % 100),
FileSymbol: uint64(i),
}
}

Expand Down Expand Up @@ -136,8 +136,8 @@ func BenchmarkFrameIndex(b *testing.B) {
frameContents := make([]FrameContent, 10000)
for i := range frameContents {
frameContents[i] = FrameContent{
TypeSymbol: int64(i % 100),
FileSymbol: int64(i),
TypeSymbol: uint64(i % 100),
FileSymbol: uint64(i),
FrameIndex: uint32(i % 500),
}
}
Expand Down
30 changes: 15 additions & 15 deletions pkg/manifest/manifest.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ type Section struct {

// FrameContent describes a file within a frame.
type FrameContent struct {
TypeSymbol int64 // File type identifier
FileSymbol int64 // File identifier
TypeSymbol uint64 // File type identifier
FileSymbol uint64 // File identifier
FrameIndex uint32 // Index into Frames array
DataOffset uint32 // Byte offset within decompressed frame
Size uint32 // File size in bytes
Expand All @@ -64,11 +64,11 @@ type FrameContent struct {

// FileMetadata contains additional file metadata.
type FileMetadata struct {
TypeSymbol int64 // File type identifier
FileSymbol int64 // File identifier
Unk1 int64 // Unknown - game launches with 0
Unk2 int64 // Unknown - game launches with 0
AssetType int64 // Asset type identifier
TypeSymbol uint64 // File type identifier
FileSymbol uint64 // File identifier
Unk1 int64 // Unknown - game launches with 0
Unk2 int64 // Unknown - game launches with 0
AssetType int64 // Asset type identifier
}

// Frame describes a compressed data frame within a package.
Expand Down Expand Up @@ -121,8 +121,8 @@ func (m *Manifest) UnmarshalBinary(data []byte) error {
count := int(m.Header.FrameContents.ElementCount)
m.FrameContents = make([]FrameContent, count)
for i := 0; i < count; i++ {
m.FrameContents[i].TypeSymbol = int64(binary.LittleEndian.Uint64(data[offset:]))
m.FrameContents[i].FileSymbol = int64(binary.LittleEndian.Uint64(data[offset+8:]))
m.FrameContents[i].TypeSymbol = binary.LittleEndian.Uint64(data[offset:])
m.FrameContents[i].FileSymbol = binary.LittleEndian.Uint64(data[offset+8:])
m.FrameContents[i].FrameIndex = binary.LittleEndian.Uint32(data[offset+16:])
m.FrameContents[i].DataOffset = binary.LittleEndian.Uint32(data[offset+20:])
m.FrameContents[i].Size = binary.LittleEndian.Uint32(data[offset+24:])
Expand All @@ -134,8 +134,8 @@ func (m *Manifest) UnmarshalBinary(data []byte) error {
count = int(m.Header.Metadata.ElementCount)
m.Metadata = make([]FileMetadata, count)
for i := 0; i < count; i++ {
m.Metadata[i].TypeSymbol = int64(binary.LittleEndian.Uint64(data[offset:]))
m.Metadata[i].FileSymbol = int64(binary.LittleEndian.Uint64(data[offset+8:]))
m.Metadata[i].TypeSymbol = binary.LittleEndian.Uint64(data[offset:])
m.Metadata[i].FileSymbol = binary.LittleEndian.Uint64(data[offset+8:])
m.Metadata[i].Unk1 = int64(binary.LittleEndian.Uint64(data[offset+16:]))
m.Metadata[i].Unk2 = int64(binary.LittleEndian.Uint64(data[offset+24:]))
m.Metadata[i].AssetType = int64(binary.LittleEndian.Uint64(data[offset+32:]))
Expand Down Expand Up @@ -208,8 +208,8 @@ func (m *Manifest) EncodeTo(buf []byte) {

// Encode FrameContents
for i := range m.FrameContents {
binary.LittleEndian.PutUint64(buf[offset:], uint64(m.FrameContents[i].TypeSymbol))
binary.LittleEndian.PutUint64(buf[offset+8:], uint64(m.FrameContents[i].FileSymbol))
binary.LittleEndian.PutUint64(buf[offset:], m.FrameContents[i].TypeSymbol)
binary.LittleEndian.PutUint64(buf[offset+8:], m.FrameContents[i].FileSymbol)
binary.LittleEndian.PutUint32(buf[offset+16:], m.FrameContents[i].FrameIndex)
binary.LittleEndian.PutUint32(buf[offset+20:], m.FrameContents[i].DataOffset)
binary.LittleEndian.PutUint32(buf[offset+24:], m.FrameContents[i].Size)
Expand All @@ -219,8 +219,8 @@ func (m *Manifest) EncodeTo(buf []byte) {

// Encode Metadata
for i := range m.Metadata {
binary.LittleEndian.PutUint64(buf[offset:], uint64(m.Metadata[i].TypeSymbol))
binary.LittleEndian.PutUint64(buf[offset+8:], uint64(m.Metadata[i].FileSymbol))
binary.LittleEndian.PutUint64(buf[offset:], m.Metadata[i].TypeSymbol)
binary.LittleEndian.PutUint64(buf[offset+8:], m.Metadata[i].FileSymbol)
binary.LittleEndian.PutUint64(buf[offset+16:], uint64(m.Metadata[i].Unk1))
binary.LittleEndian.PutUint64(buf[offset+24:], uint64(m.Metadata[i].Unk2))
binary.LittleEndian.PutUint64(buf[offset+32:], uint64(m.Metadata[i].AssetType))
Expand Down
6 changes: 3 additions & 3 deletions pkg/manifest/package.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,11 +119,11 @@ func (p *Package) Extract(outputDir string, opts ...ExtractOption) error {
for _, fc := range contents {
var fileName string
if cfg.decimalNames {
fileName = strconv.FormatInt(fc.FileSymbol, 10)
fileName = strconv.FormatUint(fc.FileSymbol, 10)
} else {
fileName = strconv.FormatUint(uint64(fc.FileSymbol), 16)
fileName = strconv.FormatUint(fc.FileSymbol, 16)
}
fileType := strconv.FormatUint(uint64(fc.TypeSymbol), 16)
fileType := strconv.FormatUint(fc.TypeSymbol, 16)

var basePath string
if cfg.preserveGroups {
Expand Down
12 changes: 6 additions & 6 deletions pkg/manifest/scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import (

// ScannedFile represents a file scanned from an input directory for building packages.
type ScannedFile struct {
TypeSymbol int64
FileSymbol int64
TypeSymbol uint64
FileSymbol uint64
Path string
Size uint32
}
Expand All @@ -36,17 +36,17 @@ func ScanFiles(inputDir string) ([][]ScannedFile, error) {
return fmt.Errorf("invalid path structure: %s", path)
}

chunkNum, err := strconv.ParseInt(parts[len(parts)-3], 10, 64)
chunkNum, err := strconv.ParseUint(parts[len(parts)-3], 10, 64)
if err != nil {
return fmt.Errorf("parse chunk number: %w", err)
}

typeSymbol, err := strconv.ParseInt(parts[len(parts)-2], 10, 64)
typeSymbol, err := strconv.ParseUint(parts[len(parts)-2], 10, 64)
if err != nil {
return fmt.Errorf("parse type symbol: %w", err)
}

fileSymbol, err := strconv.ParseInt(filepath.Base(path), 10, 64)
fileSymbol, err := strconv.ParseUint(filepath.Base(path), 10, 64)
if err != nil {
return fmt.Errorf("parse file symbol: %w", err)
}
Expand All @@ -65,7 +65,7 @@ func ScanFiles(inputDir string) ([][]ScannedFile, error) {
}

// Grow slice if needed
for int(chunkNum) >= len(files) {
for uint64(len(files)) <= chunkNum {
files = append(files, nil)
}

Expand Down