Skip to content

Repository files navigation

DVPL Mod Helper(DVPL Mod 助手)

License Platform API Size

专为坦克世界闪击战(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 编解码

  • 支持 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 选项为无损

👁 纹理预览(GPU 直显)

  • ASTC 压缩数据经 glCompressedTexImage2D 直接交给 GPU 硬件解码,零临时文件
  • 双指缩放 / 拖动 / mipmap 级切换
  • GPU 不支持时自动回退软件解码
  • 支持导出 PNG

🔊 Wwise 音频(语音/音效)

  • 解包:从 .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 优化
  • 批量转换并行处理;整个文件读入内存处理(超大文件受可用内存限制)

使用说明

基本流程

  1. 选择转换模式(如 "PVR → PNG")
  2. 从系统文件选择器选文件(可多选)
  3. 转换完成,结果保存在导出目录(默认 Download/DVPLModHelper,可在"导出目录"卡片修改)

Android 11+ 访问游戏目录提示

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)的逆向文档

About

坦克世界闪击战(WoT Blitz)手机端 Mod 工具:DVPL 解包/打包、ASTC/BC 纹理互转、Wwise 音频解包/打包/试听/替换

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages