Fixed a few bugs preventing basic functions

Worked on extraction, including creating DataReader
Added proper access to id, fragment, and export tables
This commit is contained in:
Caleb J. Gardner
2026-01-28 06:50:26 -06:00
parent 5d4e7b1435
commit 2c392cf250
9 changed files with 276 additions and 37 deletions
+4 -3
View File
@@ -2,8 +2,9 @@ const std = @import("std");
const Reader = std.Io.Reader;
pub const BlockSize = packed struct {
size: u31,
size: u24,
uncompressed: bool,
_: u7,
};
pub const File = struct {
@@ -15,7 +16,7 @@ pub const File = struct {
pub fn read(alloc: std.mem.Allocator, rdr: *Reader, block_size: u32) !File {
var start: [16]u8 = undefined;
try rdr.readSliceEndian(u8, &start, .little);
try rdr.readSliceAll(u8, &start, .little);
const frag_idx: u32 = std.mem.readInt(u32, start[4..8], .little);
const size: u32 = std.mem.readInt(u32, start[12..16], .little);
var num_blocks: u32 = size / block_size;
@@ -49,7 +50,7 @@ pub const ExtFile = struct {
pub fn read(alloc: std.mem.Allocator, rdr: *Reader, block_size: u32) !ExtFile {
var start: [40]u8 = undefined;
try rdr.readSliceEndian(u8, &start, .little);
try rdr.readSliceAll(u8, &start, .little);
const frag_idx: u32 = std.mem.readInt(u32, start[28..32], .little);
const size: u64 = std.mem.readInt(u64, start[8..16], .little);
var num_blocks: u32 = @truncate(size / block_size);