Skip to content

Commit fcad19c

Browse files
committed
vkQuake embedded pack : removed dependency on compressor tooling
- Removed zopfli external dependency, also because discontinued - replaced by bintoc -c option, built around our existing miniz - Upgraded to miniz 3.10 to bring back compression routines, was stripped previously - Embed miniz.c stb-style (supported by miniz) dicrectly into common.c and bintoc.c compilations units - Makefiles and Meson now rebuild both vkquake.pak and embedded_pak.c. - TODO: Do the same for MSVC: add a mkpak.vcxproj, make embedded.vcxproj run both mkpak + bintoc to regenerate all
1 parent 51a2083 commit fcad19c

19 files changed

Lines changed: 20702 additions & 12879 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Quake/*.o
55
Quake/*.d
66
Quake/id1/
77
Quake/vkquake
8+
Quake/vkquake.pak
89
Quake/*.exe
910
Quake/*.res
1011
Windows/VisualStudio/Id1

Misc/vq_pak/Makefile

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,22 @@
1-
INPUT := gfx/conback.lmp \
2-
gfx/mainmenu2.lmp \
3-
gfx/p_mods.lmp \
4-
maps/e1m1@c49d.ent \
5-
maps/e1m2@0caa.ent \
6-
maps/e1m4@958e.ent \
7-
maps/e2m2@fbfe.ent \
8-
maps/e2m3@237a.ent \
9-
maps/e2m7@10a8.ent \
10-
maps/r2m3@63f4.ent \
11-
maps/r2m3@76ec.ent \
12-
default.cfg
13-
1+
HOST_CC = gcc
2+
INPUT := $(shell cat vq_pak_contents.txt)
143
OUTPUT_NAME := vkquake.pak
154
OUTPUT := ../../Quake/$(OUTPUT_NAME)
165
OUTPUT_EMBEDDED := ../../Quake/embedded_pak.c
176

18-
$(OUTPUT_EMBEDDED): bintoc $(OUTPUT) $(OUTPUT).deflate
19-
./bintoc $(OUTPUT) $(OUTPUT_NAME) $(OUTPUT_EMBEDDED)
20-
21-
$(OUTPUT).deflate: $(OUTPUT)
22-
zopfli --deflate $(OUTPUT)
7+
$(OUTPUT_EMBEDDED): bintoc $(OUTPUT)
8+
./../../Shaders/bintoc -c $(OUTPUT) $(OUTPUT_NAME) $(OUTPUT_EMBEDDED)
239

2410
$(OUTPUT): mkpak $(INPUT)
25-
./mkpak $(OUTPUT) $(INPUT)
11+
./mkpak $(OUTPUT) . $(INPUT)
2612

2713
mkpak: mkpak.c
28-
cc mkpak.c -o mkpak --std=gnu11 -g
14+
$(HOST_CC) mkpak.c -o mkpak --std=gnu11 -g
2915

30-
bintoc: ../../Shaders/bintoc.c
31-
cc ../../Shaders/bintoc.c -o bintoc --std=gnu11 -g
16+
bintoc: ../../Shaders/bintoc.c
17+
$(HOST_CC) -I../../Quake/ ../../Shaders/bintoc.c -o ../../Shaders/bintoc --std=gnu11 -g
3218

3319
.PHONY: clean
3420
clean:
3521
rm -f mkpak
36-
rm -f bintoc
22+
rm -f ../../Shaders/bintoc

Misc/vq_pak/mkpak.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,10 @@ void write_header (int32_t directory_offset, int32_t directory_size)
5757

5858
int main (int argc, char *argv[])
5959
{
60-
if (argc < 3)
60+
61+
if (argc < 4)
6162
{
62-
fprintf (stderr, "Usage: mkpak [output.pak] [files...]\n");
63+
fprintf (stderr, "Usage: mkpak [output.pak] [root dir for files] [files...]\n");
6364
return 1;
6465
}
6566

@@ -71,20 +72,24 @@ int main (int argc, char *argv[])
7172
}
7273

7374
int32_t directory_offset = 12;
74-
int32_t num_in_files = argc - 2;
75+
int32_t num_in_files = argc - 3;
7576
int32_t directory_size = num_in_files * sizeof (dpackfile_t);
7677
int32_t file_offset = directory_offset + directory_size;
7778

7879
write_header (directory_offset, directory_size);
7980

81+
char input_file_path[1024];
82+
8083
uint8_t *in_buffer = NULL;
81-
for (int i = 2; i < argc; ++i)
84+
for (int i = 3; i < argc; ++i)
8285
{
83-
int file_index = i - 2;
84-
FILE *in = fopen (argv[i], "rb");
86+
int file_index = i - 3;
87+
//prepend the root dir
88+
snprintf(input_file_path, sizeof(input_file_path), "%s/%s", argv[2], argv[i]);
89+
FILE *in = fopen (input_file_path, "rb");
8590
if (in == NULL)
8691
{
87-
fprintf (stderr, "Could not open input file '%s'", argv[i]);
92+
fprintf (stderr, "Could not open input file '%s'", input_file_path);
8893
return 1;
8994
}
9095

Misc/vq_pak/vq_pak_contents.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
gfx/conback.lmp
2+
gfx/mainmenu2.lmp
3+
gfx/p_mods.lmp
4+
maps/e1m1@c49d.ent
5+
maps/e1m2@0caa.ent
6+
maps/e1m4@958e.ent
7+
maps/e2m2@fbfe.ent
8+
maps/e2m3@237a.ent
9+
maps/e2m7@10a8.ent
10+
maps/r2m3@63f4.ent
11+
maps/r2m3@76ec.ent
12+
default.cfg

Quake/Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ LIBS := $(COMMON_LIBS) $(CODECLIBS)
8989
# ---------------------------
9090
# targets / rules
9191
# ---------------------------
92-
all: $(DEFAULT_TARGET)
92+
all: $(BINTOC_EXE) .WAIT $(DEFAULT_TARGET)
9393

9494
vkquake: $(SHADER_OBJS) $(OBJS)
9595
$(LINKER) $(SHADER_OBJS) $(OBJS) $(LDFLAGS) $(LIBS) $(SDL_LIBS) -o $@
@@ -100,7 +100,8 @@ debug:
100100
$(error Use "make DEBUG=1")
101101

102102
clean:
103-
$(RM) *.o *.d $(DEFAULT_TARGET) $(BINTOC_EXE) \
103+
make -C ../Misc/vq_pak clean
104+
$(RM) *.o *.d $(DEFAULT_TARGET) vkquake.pak $(BINTOC_EXE) \
104105
../Shaders/Compiled/$(GLSLANG_OUT_FOLDER)/*.c \
105106
../Shaders/Compiled/$(GLSLANG_OUT_FOLDER)/*.spv \
106107
../Shaders/Compiled/$(GLSLANG_OUT_FOLDER)/*.d

Quake/Makefile.w64

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ LIBWINPTHREAD = $(MSYSTEM_PREFIX)/bin/libwinpthread-1.dll
7777
# ---------------------------
7878
# targets / rules
7979
# ---------------------------
80-
all: $(DEFAULT_TARGET) dll
80+
all: $(BINTOC_EXE) .WAIT $(DEFAULT_TARGET) dll
8181

8282
%.res: ../Windows/%.rc
8383
$(WINDRES) -I../Windows -I../Quake --output-format=coff --target=pe-x86-64 -o $@ $<
@@ -98,7 +98,8 @@ debug:
9898
$(error Use "make DEBUG=1")
9999

100100
clean:
101-
$(RM) *.o *.d *.res *.dll $(DEFAULT_TARGET) \
101+
make -C ../Misc/vq_pak clean
102+
$(RM) *.o *.d *.res *.dll vkquake.pak $(DEFAULT_TARGET) \
102103
$(BINTOC_EXE) \
103104
../Shaders/Compiled/$(GLSLANG_OUT_FOLDER)/*.c \
104105
../Shaders/Compiled/$(GLSLANG_OUT_FOLDER)/*.spv \

Quake/common.c

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
2828
#include "q_ctype.h"
2929
#include <errno.h>
3030

31-
#include "miniz.h"
31+
// Plug our allocators into miniz:
32+
#define MZ_MALLOC(x) Mem_Alloc (x)
33+
#define MZ_FREE(x) Mem_Free (x)
34+
#define MZ_REALLOC(p, x) Mem_Realloc (p, x)
35+
36+
// include miniz stb-syle, directly in this compilation unit.
37+
#define MINIZ_HEADER_FILE_ONLY
38+
#include "miniz.c"
3239

3340
static char *largv[MAX_NUM_ARGVS + 1];
3441
static char argvdummy[] = " ";
@@ -2255,9 +2262,12 @@ static void COM_AddGameDirectory (const char *dir)
22552262
tinfl_decompressor inflator;
22562263
tinfl_init (&inflator);
22572264
vkquake_pak_extracted = Mem_Alloc (vkquake_pak_size_extracted);
2258-
if (TINFL_STATUS_DONE != tinfl_decompress (
2259-
&inflator, vkquake_pak, &vkquake_pak_size_compressed, vkquake_pak_extracted, vkquake_pak_extracted,
2260-
&vkquake_pak_size_extracted, TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF))
2265+
2266+
tinfl_status decomp_status = tinfl_decompress (
2267+
&inflator, vkquake_pak, &vkquake_pak_size_compressed, vkquake_pak_extracted, vkquake_pak_extracted, &vkquake_pak_size_extracted,
2268+
TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF);
2269+
2270+
if (TINFL_STATUS_DONE != decomp_status)
22612271
Sys_Error ("Error extracting embedded pack");
22622272
}
22632273
qboolean pak0_modified = com_modified;

Quake/common.make

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,6 @@ OBJS := strlcat.o \
216216
wad.o \
217217
cmd.o \
218218
common.o \
219-
miniz.o \
220219
crc.o \
221220
cvar.o \
222221
cfgfile.o \
@@ -240,7 +239,8 @@ OBJS := strlcat.o \
240239
$(SYSOBJ_SYS) $(SYSOBJ_MAIN)
241240

242241
$(BINTOC_EXE): ../Shaders/bintoc.c
243-
$(HOST_CC) -o $@ $<
242+
make -C ../Misc/vq_pak clean
243+
make -B -C ../Misc/vq_pak
244244

245245
.SECONDARY:
246246
../Shaders/Compiled/$(GLSLANG_OUT_FOLDER)/%_frag.spv: ../Shaders/%.frag
@@ -270,7 +270,7 @@ $(BINTOC_EXE): ../Shaders/bintoc.c
270270
$(BINTOC_EXE) $< $*_comp_spv ../Shaders/Compiled/$(GLSLANG_OUT_FOLDER)/$*_comp.c
271271
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ ../Shaders/Compiled/$(GLSLANG_OUT_FOLDER)/$*_comp.c
272272

273-
%.o: %.c
273+
%.o: %.c
274274
$(CC) $(DFLAGS) -c $(CFLAGS) $(SDL_CFLAGS) -o $@ $<
275275

276276
sinclude $(OBJS:.o=.d)

0 commit comments

Comments
 (0)