Added reading of Doom WAD files in Zig

Author Mitja Felicijan <mitja.felicijan@gmail.com> 2024-09-18 08:50:34 +0200
Committer Mitja Felicijan <mitja.felicijan@gmail.com> 2024-09-18 08:50:34 +0200
Commit 26f347455410db42a958102f50d6d52ef7e74cab (patch)
-rw-r--r-- README.md 1
-rw-r--r-- zig-wad/Makefile 2
-rw-r--r-- zig-wad/doom.wad bin 0 B -> 4.0 MB
-rw-r--r-- zig-wad/main.zig 16
4 files changed, 19 insertions, 0 deletions
diff --git a/README.md b/README.md
...
24
| [zig-http](./zig-http)           | Basic example of a HTTP 1.1 server without any routing etc.    |
24
| [zig-http](./zig-http)           | Basic example of a HTTP 1.1 server without any routing etc.    |
25
| [zig-x11-box](./zig-x11-box)     | Move a box around with arrow keys with Xlib and Zig.           |
25
| [zig-x11-box](./zig-x11-box)     | Move a box around with arrow keys with Xlib and Zig.           |
26
| [zig-kv-store](./zig-kv-store)   | Simple Key-value store that mimics memcached written in Zig.   |
26
| [zig-kv-store](./zig-kv-store)   | Simple Key-value store that mimics memcached written in Zig.   |
  
27
| [zig-wad](./zig-wad)             | Reads doom.wad and extracts the identification header.         |
diff --git a/zig-wad/Makefile b/zig-wad/Makefile
  
1
default:
  
2
	zig run main.zig
diff --git a/zig-wad/doom.wad b/zig-wad/doom.wad
diff --git a/zig-wad/main.zig b/zig-wad/main.zig
  
1
const std = @import("std");
  
2
  
  
3
const WADHeader = struct { identification: [4]u8 };
  
4
  
  
5
pub fn main() !void {
  
6
    var file = try std.fs.cwd().openFile("doom.wad", .{});
  
7
    defer file.close();
  
8
  
  
9
    var buffer = try std.heap.page_allocator.alignedAlloc(u8, @alignOf(WADHeader), @sizeOf(WADHeader));
  
10
    defer std.heap.page_allocator.free(buffer);
  
11
  
  
12
    _ = try file.read(buffer);
  
13
  
  
14
    var header: *const WADHeader = @as(*const WADHeader, @ptrCast(buffer.ptr));
  
15
    std.debug.print("WAD Type: {s}\n", .{header.identification});
  
16
}