summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules6
-rw-r--r--build.zig3
-rw-r--r--data/textures/black.pngbin149 -> 0 bytes
-rw-r--r--data/textures/black.qoibin0 -> 89 bytes
-rw-r--r--data/textures/blood/00.pngbin436 -> 0 bytes
-rw-r--r--data/textures/blood/00.qoibin0 -> 397 bytes
-rw-r--r--data/textures/blood/01.pngbin500 -> 0 bytes
-rw-r--r--data/textures/blood/01.qoibin0 -> 477 bytes
-rw-r--r--data/textures/blood/02.pngbin567 -> 0 bytes
-rw-r--r--data/textures/blood/02.qoibin0 -> 595 bytes
-rw-r--r--data/textures/blood/03.pngbin653 -> 0 bytes
-rw-r--r--data/textures/blood/03.qoibin0 -> 744 bytes
-rw-r--r--data/textures/blood/04.pngbin712 -> 0 bytes
-rw-r--r--data/textures/blood/04.qoibin0 -> 846 bytes
-rw-r--r--data/textures/blood/05.pngbin773 -> 0 bytes
-rw-r--r--data/textures/blood/05.qoibin0 -> 901 bytes
-rw-r--r--data/textures/blood/06.pngbin888 -> 0 bytes
-rw-r--r--data/textures/blood/06.qoibin0 -> 1024 bytes
-rw-r--r--data/textures/blood/07.pngbin949 -> 0 bytes
-rw-r--r--data/textures/blood/07.qoibin0 -> 1119 bytes
-rw-r--r--data/textures/blood/08.pngbin1023 -> 0 bytes
-rw-r--r--data/textures/blood/08.qoibin0 -> 1263 bytes
-rw-r--r--data/textures/blood/09.pngbin1092 -> 0 bytes
-rw-r--r--data/textures/blood/09.qoibin0 -> 1349 bytes
-rw-r--r--data/textures/blood/10.pngbin1077 -> 0 bytes
-rw-r--r--data/textures/blood/10.qoibin0 -> 1364 bytes
-rw-r--r--data/textures/flare.pngbin22161 -> 0 bytes
-rw-r--r--data/textures/flare.qoibin0 -> 21646 bytes
-rw-r--r--data/textures/font.pngbin26185 -> 0 bytes
-rw-r--r--data/textures/font.qoibin0 -> 39157 bytes
-rw-r--r--data/textures/scope.pngbin15169 -> 0 bytes
-rw-r--r--data/textures/scope.qoibin0 -> 22748 bytes
-rw-r--r--data/textures/sprites/blood.pngbin5573 -> 0 bytes
-rw-r--r--data/textures/sprites/blood.qoibin0 -> 10128 bytes
-rw-r--r--data/textures/sprites/flash-hit.pngbin19154 -> 0 bytes
-rw-r--r--data/textures/sprites/flash-hit.qoibin0 -> 29549 bytes
-rw-r--r--data/textures/sprites/flash-muzzle.pngbin20095 -> 0 bytes
-rw-r--r--data/textures/sprites/flash-muzzle.qoibin0 -> 34925 bytes
-rw-r--r--data/textures/sprites/person-dead.pngbin6447 -> 0 bytes
-rw-r--r--data/textures/sprites/person-dead.qoibin0 -> 1426 bytes
-rw-r--r--data/textures/sprites/person.pngbin6173 -> 0 bytes
-rw-r--r--data/textures/sprites/person.qoibin0 -> 2239 bytes
-rw-r--r--data/textures/sprites/smoke.pngbin2868 -> 0 bytes
-rw-r--r--data/textures/sprites/smoke.qoibin0 -> 3630 bytes
-rw-r--r--data/textures/sprites/white.pngbin193 -> 0 bytes
-rw-r--r--data/textures/sprites/white.qoibin0 -> 91 bytes
m---------lib/lodepng0
m---------lib/qoi0
-rw-r--r--src/GameInitDispose.cpp52
-rw-r--r--src/cimport.zig1
-rw-r--r--src/misc.zig16
51 files changed, 37 insertions, 41 deletions
diff --git a/.gitmodules b/.gitmodules
index d4fb611..c564c4d 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -10,6 +10,6 @@
 [submodule "lib/gfz"]
 	path = lib/gfz
 	url = https://git.sr.ht/~cnx/gfz
-[submodule "lib/lodepng"]
-	path = lib/lodepng
-	url = https://git.sr.ht/~cnx/lodepng
+[submodule "lib/qoi"]
+	path = lib/qoi
+	url = https://github.com/MasterQ32/zig-qoi
diff --git a/build.zig b/build.zig
index 1531162..e16c542 100644
--- a/build.zig
+++ b/build.zig
@@ -51,12 +51,11 @@ pub fn build(b: *Builder) void {
     exe.addCSourceFile("src/Sprites.cpp", &cxxflags);
     exe.addCSourceFile("src/Text.cpp", &cxxflags);
 
-    exe.addCSourceFile("lib/lodepng/lodepng.c", &.{ "-ansi", "-pedantic" });
-    exe.addIncludeDir("lib/lodepng");
     exe.addPackagePath("gfz", "lib/gfz/src/gfz.zig");
     @import("lib/gfz/build.zig").link(exe);
     exe.addPackagePath("ini", "lib/ini/src/ini.zig");
     exe.addPackagePath("loca", "lib/loca/src/main.zig");
+    exe.addPackagePath("qoi", "lib/qoi/src/qoi.zig");
     exe.addPackagePath("zeal", "lib/zeal/src/zeal.zig");
     @import("lib/zeal/build.zig").link(exe);
 
diff --git a/data/textures/black.png b/data/textures/black.png
deleted file mode 100644
index 9fff93b..0000000
--- a/data/textures/black.png
+++ /dev/null
Binary files differdiff --git a/data/textures/black.qoi b/data/textures/black.qoi
new file mode 100644
index 0000000..de68f65
--- /dev/null
+++ b/data/textures/black.qoi
Binary files differdiff --git a/data/textures/blood/00.png b/data/textures/blood/00.png
deleted file mode 100644
index c43e6e8..0000000
--- a/data/textures/blood/00.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/00.qoi b/data/textures/blood/00.qoi
new file mode 100644
index 0000000..5080566
--- /dev/null
+++ b/data/textures/blood/00.qoi
Binary files differdiff --git a/data/textures/blood/01.png b/data/textures/blood/01.png
deleted file mode 100644
index 996f90e..0000000
--- a/data/textures/blood/01.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/01.qoi b/data/textures/blood/01.qoi
new file mode 100644
index 0000000..631b270
--- /dev/null
+++ b/data/textures/blood/01.qoi
Binary files differdiff --git a/data/textures/blood/02.png b/data/textures/blood/02.png
deleted file mode 100644
index f691690..0000000
--- a/data/textures/blood/02.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/02.qoi b/data/textures/blood/02.qoi
new file mode 100644
index 0000000..058af63
--- /dev/null
+++ b/data/textures/blood/02.qoi
Binary files differdiff --git a/data/textures/blood/03.png b/data/textures/blood/03.png
deleted file mode 100644
index 15a2101..0000000
--- a/data/textures/blood/03.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/03.qoi b/data/textures/blood/03.qoi
new file mode 100644
index 0000000..dec13ba
--- /dev/null
+++ b/data/textures/blood/03.qoi
Binary files differdiff --git a/data/textures/blood/04.png b/data/textures/blood/04.png
deleted file mode 100644
index 4c8e5cb..0000000
--- a/data/textures/blood/04.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/04.qoi b/data/textures/blood/04.qoi
new file mode 100644
index 0000000..8a064eb
--- /dev/null
+++ b/data/textures/blood/04.qoi
Binary files differdiff --git a/data/textures/blood/05.png b/data/textures/blood/05.png
deleted file mode 100644
index a54c138..0000000
--- a/data/textures/blood/05.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/05.qoi b/data/textures/blood/05.qoi
new file mode 100644
index 0000000..e8db212
--- /dev/null
+++ b/data/textures/blood/05.qoi
Binary files differdiff --git a/data/textures/blood/06.png b/data/textures/blood/06.png
deleted file mode 100644
index 1ff2dea..0000000
--- a/data/textures/blood/06.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/06.qoi b/data/textures/blood/06.qoi
new file mode 100644
index 0000000..c399621
--- /dev/null
+++ b/data/textures/blood/06.qoi
Binary files differdiff --git a/data/textures/blood/07.png b/data/textures/blood/07.png
deleted file mode 100644
index f746bc9..0000000
--- a/data/textures/blood/07.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/07.qoi b/data/textures/blood/07.qoi
new file mode 100644
index 0000000..5160d25
--- /dev/null
+++ b/data/textures/blood/07.qoi
Binary files differdiff --git a/data/textures/blood/08.png b/data/textures/blood/08.png
deleted file mode 100644
index 0bcd5a5..0000000
--- a/data/textures/blood/08.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/08.qoi b/data/textures/blood/08.qoi
new file mode 100644
index 0000000..2798c7a
--- /dev/null
+++ b/data/textures/blood/08.qoi
Binary files differdiff --git a/data/textures/blood/09.png b/data/textures/blood/09.png
deleted file mode 100644
index 3dade05..0000000
--- a/data/textures/blood/09.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/09.qoi b/data/textures/blood/09.qoi
new file mode 100644
index 0000000..4e3a9ac
--- /dev/null
+++ b/data/textures/blood/09.qoi
Binary files differdiff --git a/data/textures/blood/10.png b/data/textures/blood/10.png
deleted file mode 100644
index fb461da..0000000
--- a/data/textures/blood/10.png
+++ /dev/null
Binary files differdiff --git a/data/textures/blood/10.qoi b/data/textures/blood/10.qoi
new file mode 100644
index 0000000..85c66a6
--- /dev/null
+++ b/data/textures/blood/10.qoi
Binary files differdiff --git a/data/textures/flare.png b/data/textures/flare.png
deleted file mode 100644
index b7f0c30..0000000
--- a/data/textures/flare.png
+++ /dev/null
Binary files differdiff --git a/data/textures/flare.qoi b/data/textures/flare.qoi
new file mode 100644
index 0000000..d43c8a7
--- /dev/null
+++ b/data/textures/flare.qoi
Binary files differdiff --git a/data/textures/font.png b/data/textures/font.png
deleted file mode 100644
index a48ae83..0000000
--- a/data/textures/font.png
+++ /dev/null
Binary files differdiff --git a/data/textures/font.qoi b/data/textures/font.qoi
new file mode 100644
index 0000000..42817b8
--- /dev/null
+++ b/data/textures/font.qoi
Binary files differdiff --git a/data/textures/scope.png b/data/textures/scope.png
deleted file mode 100644
index e3acddf..0000000
--- a/data/textures/scope.png
+++ /dev/null
Binary files differdiff --git a/data/textures/scope.qoi b/data/textures/scope.qoi
new file mode 100644
index 0000000..652e093
--- /dev/null
+++ b/data/textures/scope.qoi
Binary files differdiff --git a/data/textures/sprites/blood.png b/data/textures/sprites/blood.png
deleted file mode 100644
index 6c02b02..0000000
--- a/data/textures/sprites/blood.png
+++ /dev/null
Binary files differdiff --git a/data/textures/sprites/blood.qoi b/data/textures/sprites/blood.qoi
new file mode 100644
index 0000000..d5a22ed
--- /dev/null
+++ b/data/textures/sprites/blood.qoi
Binary files differdiff --git a/data/textures/sprites/flash-hit.png b/data/textures/sprites/flash-hit.png
deleted file mode 100644
index 0b7781b..0000000
--- a/data/textures/sprites/flash-hit.png
+++ /dev/null
Binary files differdiff --git a/data/textures/sprites/flash-hit.qoi b/data/textures/sprites/flash-hit.qoi
new file mode 100644
index 0000000..d6b397f
--- /dev/null
+++ b/data/textures/sprites/flash-hit.qoi
Binary files differdiff --git a/data/textures/sprites/flash-muzzle.png b/data/textures/sprites/flash-muzzle.png
deleted file mode 100644
index ec99efd..0000000
--- a/data/textures/sprites/flash-muzzle.png
+++ /dev/null
Binary files differdiff --git a/data/textures/sprites/flash-muzzle.qoi b/data/textures/sprites/flash-muzzle.qoi
new file mode 100644
index 0000000..1f27810
--- /dev/null
+++ b/data/textures/sprites/flash-muzzle.qoi
Binary files differdiff --git a/data/textures/sprites/person-dead.png b/data/textures/sprites/person-dead.png
deleted file mode 100644
index fc2c78f..0000000
--- a/data/textures/sprites/person-dead.png
+++ /dev/null
Binary files differdiff --git a/data/textures/sprites/person-dead.qoi b/data/textures/sprites/person-dead.qoi
new file mode 100644
index 0000000..90cfb27
--- /dev/null
+++ b/data/textures/sprites/person-dead.qoi
Binary files differdiff --git a/data/textures/sprites/person.png b/data/textures/sprites/person.png
deleted file mode 100644
index d1a7cb0..0000000
--- a/data/textures/sprites/person.png
+++ /dev/null
Binary files differdiff --git a/data/textures/sprites/person.qoi b/data/textures/sprites/person.qoi
new file mode 100644
index 0000000..ca4c56f
--- /dev/null
+++ b/data/textures/sprites/person.qoi
Binary files differdiff --git a/data/textures/sprites/smoke.png b/data/textures/sprites/smoke.png
deleted file mode 100644
index 1cef15c..0000000
--- a/data/textures/sprites/smoke.png
+++ /dev/null
Binary files differdiff --git a/data/textures/sprites/smoke.qoi b/data/textures/sprites/smoke.qoi
new file mode 100644
index 0000000..08b5f98
--- /dev/null
+++ b/data/textures/sprites/smoke.qoi
Binary files differdiff --git a/data/textures/sprites/white.png b/data/textures/sprites/white.png
deleted file mode 100644
index 0768357..0000000
--- a/data/textures/sprites/white.png
+++ /dev/null
Binary files differdiff --git a/data/textures/sprites/white.qoi b/data/textures/sprites/white.qoi
new file mode 100644
index 0000000..1fd90f6
--- /dev/null
+++ b/data/textures/sprites/white.qoi
Binary files differdiff --git a/lib/lodepng b/lib/lodepng
deleted file mode 160000
-Subproject b9be5ef13d426142cb6075977ef8eef999fd578
diff --git a/lib/qoi b/lib/qoi
new file mode 160000
+Subproject 877af8c6440347b3f244c0dccd675be26836a74
diff --git a/src/GameInitDispose.cpp b/src/GameInitDispose.cpp
index 4182c24..4ae9971 100644
--- a/src/GameInitDispose.cpp
+++ b/src/GameInitDispose.cpp
@@ -1018,33 +1018,33 @@ void initGl(Game* game)
 	glPolygonOffset(-8,0);
 	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 
-	game->text.FontTexture = loadTexture("font.png");
+	game->text.FontTexture = loadTexture("font.qoi");
 	game->text.BuildFont();
-	game->personspritetextureptr = loadTexture("sprites/person.png");
-	game->deadpersonspritetextureptr = loadTexture("sprites/person-dead.png");
-	game->scopetextureptr = loadTexture("scope.png");
-	game->flaretextureptr = loadTexture("flare.png");
-
-	sprites.flaretextureptr = loadTexture("sprites/flash-hit.png");
-	sprites.muzzleflaretextureptr = loadTexture("sprites/flash-muzzle.png");
-	sprites.smoketextureptr = loadTexture("sprites/smoke.png");
-	sprites.bloodtextureptr = loadTexture("sprites/blood.png");
-	sprites.raintextureptr = loadTexture("sprites/white.png");
-	sprites.snowtextureptr = loadTexture("sprites/white.png");
-
-	decals.bulletholetextureptr = loadTexture("black.png");
-	decals.cratertextureptr = loadTexture("black.png");
-	decals.bloodtextureptr[0u] = loadTexture("blood/00.png");
-	decals.bloodtextureptr[1u] = loadTexture("blood/01.png");
-	decals.bloodtextureptr[2u] = loadTexture("blood/02.png");
-	decals.bloodtextureptr[3u] = loadTexture("blood/03.png");
-	decals.bloodtextureptr[4u] = loadTexture("blood/04.png");
-	decals.bloodtextureptr[5u] = loadTexture("blood/05.png");
-	decals.bloodtextureptr[6u] = loadTexture("blood/06.png");
-	decals.bloodtextureptr[7u] = loadTexture("blood/07.png");
-	decals.bloodtextureptr[8u] = loadTexture("blood/08.png");
-	decals.bloodtextureptr[9u] = loadTexture("blood/09.png");
-	decals.bloodtextureptr[10] = loadTexture("blood/10.png");
+	game->personspritetextureptr = loadTexture("sprites/person.qoi");
+	game->deadpersonspritetextureptr = loadTexture("sprites/person-dead.qoi");
+	game->scopetextureptr = loadTexture("scope.qoi");
+	game->flaretextureptr = loadTexture("flare.qoi");
+
+	sprites.flaretextureptr = loadTexture("sprites/flash-hit.qoi");
+	sprites.muzzleflaretextureptr = loadTexture("sprites/flash-muzzle.qoi");
+	sprites.smoketextureptr = loadTexture("sprites/smoke.qoi");
+	sprites.bloodtextureptr = loadTexture("sprites/blood.qoi");
+	sprites.raintextureptr = loadTexture("sprites/white.qoi");
+	sprites.snowtextureptr = loadTexture("sprites/white.qoi");
+
+	decals.bulletholetextureptr = loadTexture("black.qoi");
+	decals.cratertextureptr = loadTexture("black.qoi");
+	decals.bloodtextureptr[0u] = loadTexture("blood/00.qoi");
+	decals.bloodtextureptr[1u] = loadTexture("blood/01.qoi");
+	decals.bloodtextureptr[2u] = loadTexture("blood/02.qoi");
+	decals.bloodtextureptr[3u] = loadTexture("blood/03.qoi");
+	decals.bloodtextureptr[4u] = loadTexture("blood/04.qoi");
+	decals.bloodtextureptr[5u] = loadTexture("blood/05.qoi");
+	decals.bloodtextureptr[6u] = loadTexture("blood/06.qoi");
+	decals.bloodtextureptr[7u] = loadTexture("blood/07.qoi");
+	decals.bloodtextureptr[8u] = loadTexture("blood/08.qoi");
+	decals.bloodtextureptr[9u] = loadTexture("blood/09.qoi");
+	decals.bloodtextureptr[10] = loadTexture("blood/10.qoi");
 }
 
 struct Scores getScores(Game* game)
diff --git a/src/cimport.zig b/src/cimport.zig
index 88061db..05f9537 100644
--- a/src/cimport.zig
+++ b/src/cimport.zig
@@ -2,7 +2,6 @@ usingnamespace @cImport({
     @cInclude("AL/al.h");
     @cInclude("GL/gl.h");
     @cInclude("GL/glu.h");
-    @cInclude("lodepng.h");
 
     @cInclude("Game.h");
     @cInclude("Constants.h");
diff --git a/src/misc.zig b/src/misc.zig
index 3e1ece0..3307713 100644
--- a/src/misc.zig
+++ b/src/misc.zig
@@ -39,6 +39,7 @@ const tokenize = std.mem.tokenize;
 const al = @import("zeal");
 const gf = @import("gfz");
 const ini = @import("ini");
+const qoi = @import("qoi");
 
 const data_dir = @import("build_options").data_dir ++ [_]u8{ sep };
 const c = @import("cimport.zig");
@@ -322,12 +323,9 @@ export fn loadTexture(filename: [*:0]const u8) c.GLuint {
     }) catch unreachable;
     defer allocator.free(file);
 
-    var data: [*c]u8 = undefined;
-    var w: c_uint = undefined;
-    var h: c_uint = undefined;
-    check(c.lodepng_error_text,
-          c.lodepng_decode32(&data, &w, &h, file.ptr, file.len));
-    defer free(data);
+    var image = qoi.decodeBuffer(allocator, file) catch unreachable;
+    defer image.deinit(allocator);
+    const data = @ptrCast([*c]const u8, image.pixels.ptr);
 
     var texture: c.GLuint = undefined;
     c.glGenTextures(1, &texture);
@@ -337,11 +335,11 @@ export fn loadTexture(filename: [*:0]const u8) c.GLuint {
     c.glTexParameteri(c.GL_TEXTURE_2D, c.GL_TEXTURE_MAG_FILTER, c.GL_LINEAR);
     c.glTexParameteri(c.GL_TEXTURE_2D, c.GL_TEXTURE_MIN_FILTER, c.GL_LINEAR);
 
-    const width = @intCast(c.GLint, w);
-    const height = @intCast(c.GLint, h);
+    const width = @intCast(c.GLint, image.width);
+    const height = @intCast(c.GLint, image.height);
     c.glPixelStorei(c.GL_UNPACK_ALIGNMENT, 1);
     c.glTexImage2D(c.GL_TEXTURE_2D, 0, 4, width, height,
-                 0, c.GL_RGBA, c.GL_UNSIGNED_BYTE, data);
+                   0, c.GL_RGBA, c.GL_UNSIGNED_BYTE, data);
     check(c.gluErrorString,
           c.gluBuild2DMipmaps(c.GL_TEXTURE_2D, 4, width, height,
                               c.GL_RGBA, c.GL_UNSIGNED_BYTE, data));