专为坦克世界闪击战(WoT Blitz)Mod 开发者设计的安卓端图形化资源转换工具
在手机上完成 DVPL 解包/打包、ASTC 纹理与 PNG 互转、PC ↔ 安卓贴图跨端移植、Wwise 音频解包/试听/替换——无需电脑。
做 Blitz 的 mod 一直有个痛点:贴图和资源文件被 DVPL 压缩包裹,想在手机上直接改皮肤、 改图标,就得找电脑跑 Python 脚本。这个 app 把整个流程搬到了手机上:
- 📱 纯手机工作流——解包、转 PNG、改图、转回、打包,全程不用电脑
- 🔧 格式覆盖全——WoT 安卓端的 ASTC PVR(含游戏私有的非标准枚举)+ PC 端 DX11 RGBA4444 + DDS 全 BC 家族
- 🔊 音频全套——Wwise pck/bnk 解包、WEM 试听、WEM ↔ OGG 互转、替换重打,改枪声换语音不用电脑
- ⚡ GPU 直显预览——ASTC 压缩数据不经软解直接进 GPU,秒开任意贴图
- 🚀 轻量——约 3 MB,无需任何权限,装完即用
前往 Releases 下载最新 APK(Android 8.0+ / arm64 设备,无需任何权限)。
- 支持 DVPL 压缩格式:无压缩(0)、LZ4(1)、LZ4_HC(2)、DEFLATE(3)
- 高性能 C++ Native 实现(LZ4/zlib 原生库 + 纯 Kotlin 回退)
- 批量处理,多文件并行(4 并发);逐文件成功/失败明细对话框
- CRC32 严格校验:文件损坏直接报错,不会让坏数据流入游戏
- 注意:DEFLATE(type 3) 为本工具自有扩展,游戏客户端已知仅使用 type 0/1/2
- PVR → PNG:ASTC 4x4~12x12 全档(LDR/HDR 自动识别、HDR 自动色调映射)、未压缩 RGBA8888/R8、PC 端 RGBA4444
- WoT Blitz 非标准 ASTC 枚举全兼容:游戏使用自有 pfLo 枚举表(非 PVR v3 标准),本工具按 mip 链数据长度反推真实块尺寸,pfLo 27-45 全部支持
- PNG → PVR:ASTC 4x4/5x5/6x6(推荐)/8x6/10x5、RGBA8888 无损(自动生成完整 mipmap 链)、RGBA4444(PC 端 DX11 格式)
- DDS → PNG:BC1(DXT1)/BC2(DXT3)/BC3(DXT5)/BC4/BC5/BC6H(HDR)/BC7 全格式解码(基于 bcdec),DVPL 包裹的 .dds.dvpl 自动解包
- PNG → DDS:BC3(标准)/ BC5(法线图)/ BC4(单通道)
- DDS ↔ PVR 跨端移植:PC mod 转安卓、安卓转 PC
- 注意:ASTC/BC 系列均为有损压缩;仅 RGBA8888 选项为无损
- ASTC 压缩数据经 glCompressedTexImage2D 直接交给 GPU 硬件解码,零临时文件
- 双指缩放 / 拖动 / mipmap 级切换
- GPU 不支持时自动回退软件解码
- 支持导出 PNG
- 解包:从 .pck/.bnk 提取 .wem 音频;同选 SoundbanksInfo.json 可还原原始文件名并按原始目录分类,同名 pck+bnk 只保留完整版
- 试听:app 内点按播放,列表显示触发事件;游戏音频多为 0dBFS 满幅,默认 30% 音量防炸麦,可实时调节并记住
- WEM → OGG:批量转通用 ogg(PCM/PtADPCM 编码的 wem 直出 wav),也可直接选 .pck/.bnk 整库转出(输出按库名分文件夹)
- OGG → WEM:把标准 Vorbis OGG(ffmpeg / Audacity 等导出)编码为游戏可用的 .wem,全程手机本地完成。限制:单包 < 32KB(超限提示降低质量重编码)、1/2/4 声道、不支持链式 Ogg
- 打包替换:选目标库 + 若干 .wem 重打(同库按 wem ID 匹配,跨语言语音替换可同选 json 按文件名匹配);流式库支持同名 .pck + .bnk 成对重打,一次输出两个文件
- 流式截断感知:bnk 中约 7 成条目是「预取前几 KB」的截断副本(完整音频在同名 .pck 流式加载),解包/转 OGG/试听/打包全流程明确提示并正确处理;重打保留原库 16 字节对齐布局,未替换时输出与原库逐字节一致(可用 sha256 校验)
- 基于 ww2ogg(BSD)移植,原生层逐帧计算精确 Ogg granule 位置,MediaPlayer 试听无爆音
- 系统文件选择器(SAF)选择文件,无需任何存储权限
- 可自定义导出目录(持久化授权);默认导出到 Download/DVPLModHelper
- 同名文件自动加编号,不会覆盖
- 安装包约 3 MB,仅 arm64-v8a(覆盖绝大多数现代手机)
- astcenc(ARM 官方 ASTC 编解码器)NEON 优化
- 批量转换并行处理;整个文件读入内存处理(超大文件受可用内存限制)
- 选择转换模式(如 "PVR → PNG")
- 从系统文件选择器选文件(可多选)
- 转换完成,结果保存在导出目录(默认 Download/DVPLModHelper,可在"导出目录"卡片修改)
Android 11+ 的 SAF 文件选择器无法进入其他应用的 Android/data 目录。 建议先用系统文件管理器(如 Material Files)或 adb 把游戏资源复制到普通目录(如 Download)再转换。
- Kotlin + Jetpack Compose(Material 3)
- C++ JNI:astcenc(Apache-2.0)、bcdec(MIT)、LZ4(BSD-2)、zlib、ww2ogg(BSD 式,Wwise Vorbis 解码)
- GLSurfaceView + OpenGL ES 3.0 纹理预览
见 BUILD.md。需要 Android SDK / NDK 25+ / JDK 17。
本项目以 Apache License 2.0 开源。
内置第三方组件(详见 THIRD_PARTY_NOTICES.md):
- astcenc — Apache-2.0(ASTC 编解码)
- bcdec — MIT(BC/DXT 解码)
- LZ4 — BSD-2-Clause(DVPL 压缩)
- ww2ogg — BSD 式(Wwise Vorbis → Ogg 解码,含 aoTuV 码书)
- DVPL / PVR 格式知识来自 koreanrandom.com 社区(StranikS_Scan)的逆向文档