SMWP(Super Mario Worker Project)专用的 GZip 压缩/解压缩动态链接库(DLL),采用纯 C 编写,基于 miniz。
这是原 .NET 版 SMWGzip(C#,依赖 .NET Framework)的原生实现替代版本,不依赖 .NET 运行时,可直接被 GameMaker 8.x(32 位)通过 external_define 加载调用。
所有函数使用 __stdcall 调用约定,返回 double(GameMaker real 类型):
| 函数 | 说明 | 返回值 |
|---|---|---|
gz_check(filename) |
检查文件是否为 Gzip 格式(判断魔数 1F 8B) |
是返回 1,否返回 0 |
gz_decompress(src, dst) |
将 Gzip 文件 src 解压到 dst |
成功返回 0,失败返回负数错误码 |
gz_compress(src, dst) |
将文件 src 压缩为 Gzip 格式写入 dst |
成功返回 0,失败返回负数错误码 |
gz_selftest() |
内置自检(压缩再解压比对) | 成功返回 0,失败返回负数错误码 |
需要 Visual Studio 2022(含 C++ 桌面开发工具集)。目标为 32 位(GameMaker 8.x 是 32 位程序)。
build.bat生成 SMWGzip.dll。
external_define("SMWGzip.dll", "gz_decompress", dll_stdcall, ty_real, 2, ty_string, ty_string);- 封装代码(
SMWGzip.c、build.bat)采用 MIT 许可证,见 LICENSE。 - 内置的 miniz 库为公有领域(Unlicense)。