找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 370|回复: 14

Proxy_Bink32w — Bink视频API代理DLL [v2.0.0]

[复制链接]
发表于 2026-7-4 20:16:39 | 显示全部楼层 |阅读模式
Proxy_Bink32w — Bink视频API代理DLL [v2.0.0]

作者:YoWassup | GitHub:https://github.com/YoVVassup/Proxy_Bink32w
最新版本:v.2.0.0 | 许可证:CC BY-NC-SA 4.0




这是什么?

Proxy_Bink32w 是一个 binkw32.dll 代理DLL,可以拦截游戏与真实Bink视频DLL之间的所有API调用。它作为一个"中间人",在不修改游戏本身的情况下,为 红色警戒2尤里的复仇 提供以下增强功能:

  • 视频音轨替换:用自定义WAV/OGG文件替换过场动画的音频
  • Full HD视频支持:支持1920×1080分辨率视频,自动保持宽高比缩放到游戏分辨率
  • 兼容67个Bink版本:覆盖19个版本组,适用于大量经典游戏



  1. gamemd.exe → binkw32.dll (代理) → binkw32_1.0q.dll (真实Bink SDK)
复制代码





下载

预配置版本(RA2 + RA2YR 开箱即用):
https://pan.huang1111.cn/s/4R7O4hg

下载包包含:
  • RA2YR:11条音频轨道(配音)+ Full HD视频(可自动缩放到更低分辨率)
  • RA2:13条音频轨道(配音)+ Full HD视频(可自动缩放到更低分辨率)
  • 代理DLL + RA2/RA2YR所需的真实Bink DLL + 预配置 binkw32.cfg


GitHub源码编译:
https://github.com/YoVVassup/Proxy_Bink32w/releases/tag/v.2.0.0




安装步骤

方法一:使用预配置包(推荐)

  • 下载预配置包,解压到游戏目录
  • 确认 binkw32.dll 和 binkw32_1.0q.dll 都在游戏目录中
  • 如果需要替换音轨,将 BinkWAV 文件夹放到游戏目录中
  • 编辑 binkw32.cfg 配置音频替换映射(见下方配置说明)
  • 启动游戏


方法二:自行编译

环境要求:
  • Visual Studio 2022 或更新版本
  • CMake 3.28+


编译命令:


  1. # RA2/RA2YR默认组(Group 5)+ 最佳视频质量(Group 7)
  2. cmake -B build -G "Visual Studio 17 2022" -A Win32
  3. cmake --build build --config Release
复制代码


编译完成后,在 build/GROUP_5/Release/ 目录中找到:
  • binkw32.dll — 代理DLL
  • binkw32_1.0q.dll — 真实Bink DLL
  • binkw32.cfg — 配置文件


将 GROUP_5 文件夹中的所有文件复制到游戏目录即可。




音频替换配置

支持的音频格式

格式说明
WAVPCM,8/16位,任意采样率,单声道/立体声(最多8声道)
OGGVorbis,任意采样率,单声道/立体声(通过stb_vorbis)


注意:不支持24位WAV文件。

配置文件 binkw32.cfg


  1. [exception]
  2. ; 指定哪些.mix文件需要特殊处理
  3. 0=movies01.mix
  4. 1=movies02.mix
  5. 2=movmd03.mix

  6. [movies01]
  7. ; .bik文件名 = 替换音频路径(相对于DLL目录)
  8. westlogo.bik = BinkWAV\RA2\westlogo.wav
  9. a00_f00e.bik = BinkWAV\RA2\a00_f00e.wav
  10. a01_f00e.bik = BinkWAV\RA2\a01_f00e.wav
  11. a01_p01e.bik = BinkWAV\RA2\a01_p01e.wav
  12. ; ... 更多映射

  13. [movies02]
  14. s01_f00e.bik = BinkWAV\RA2\s01_f00e.wav
  15. s01_p01e.bik = BinkWAV\RA2\s01_p01e.wav
  16. ; ... 更多映射

  17. [movmd03]
  18. ; 尤里的复仇过场动画
  19. a00_f00e.bik = BinkWAV\RA2YR\a00_f00e.wav
  20. a01_f00e.bik = BinkWAV\RA2YR\a01_f00e.wav
  21. ; ... 更多映射

  22. [audio]
  23. ; 全局回退(当exception中未找到时使用)
  24. ; s01_f00e.bik = BinkWAV\s01_f00e.wav

  25. [log]
  26. ; enabled = false   ; 禁用日志(默认:true)
  27. ; wait = true       ; 记录BinkWait调用(默认:false)
复制代码


配置优先级

[exception] 段的优先级 高于 [audio]。

当视频打开时,代理首先检查 .mix 归档名是否匹配exception条目,然后在该exception段中查找 .bik 文件名。如果未找到,才回退到全局 [audio] 段。

RA2和RA2YR的.mix文件

游戏.mix文件
红色警戒2movies01.mix(盟军过场)、movies02.mix(苏军过场)
尤里的复仇movmd03.mix(尤里过场)





WAV转OGG工具

使用 tools/convert_wav_to_ogg.ps1 批量将WAV转换为OGG Vorbis:


  1. # 转换当前目录下所有WAV(递归)
  2. .\tools\convert_wav_to_ogg.ps1

  3. # 转换指定文件夹
  4. .\tools\convert_wav_to_ogg.ps1 "C:\path\to\wav\files"

  5. # 更高质量(0=最差, 10=最佳, 默认=3)
  6. .\tools\convert_wav_to_ogg.ps1 "C:\path\to\wav" -Quality 5

  7. # 预览将要转换的文件(干运行)
  8. .\tools\convert_wav_to_ogg.ps1 "C:\path\to\wav" -DryRun

  9. # 转换并删除原始WAV
  10. .\tools\convert_wav_to_ogg.ps1 "C:\path\to\wav" -DeleteOriginal
复制代码


输出示例:

  1. Found 1022 WAV files, quality=10
  2.   7wolf\a00_f00e.ogg  41098.5KB -> 10584.9KB (26%)
  3.   ...
  4. Done: 980 converted, 42 failed
复制代码





Bink版本兼容性

对RA2/RA2YR最重要的两个组

Bink版本说明
Group 51.0n-1.0t(5个版本)RA2/RA2YR默认 — 83个序数,ExpandBink,RADSetMemory
Group 71.9q-1.9u(3个版本)最佳视频质量 — 73个序数,BinkSetMemory


  • 使用 Group 5 DLL 获得原版播放效果 + 新功能
  • 使用 Group 7 DLL 获得改进的色彩校正 + 新功能


完整兼容列表(19组,67个版本)

版本示例游戏
11.8c-1.8x (12)Dragon Age Origins, Mass Effect, BioShock, COD MW2/MW3
21.5e-1.5v (10)Beyond Good and Evil, XIII, FarCry
31.5x-1.7b (9)Psychonauts, Evil Genius, RACE On
41.9a-1.9h (5)PAYDAY The Heist, Mass Effect 2, The Witcher
51.0n-1.0t (5)RA2 / RA2YR 默认
61.9i-1.9p (5)Batman Arkham Asylum, Sleeping Dogs, Borderlands
71.9q-1.9u (3)最佳视频质量
81.0v-1.0x (3)Fallout Tactics, Red Faction
91.8a-1.8b (2)Just Cause
101.2i-1.5a (2)Morrowind, Syberia
11-19各1-2个版本各种经典游戏





技术原理

工作流程

  • 游戏加载 binkw32.dll(我们的代理)到进程
  • 首次调用 BinkOpen 时,代理延迟初始化,加载真实Bink DLL
  • 所有Bink API函数通过 序数(ordinal) 从真实DLL解析
  • 代理导出108个函数存根,通过 __stdcall 函数指针直接转发到真实DLL


.mix归档解析

代理能解析RA2/YR的 .mix 归档格式:
  • 头部:4字节保留 + offset 4处的uint16文件计数
  • 哈希表:offset 0xA处(每条目12字节:CRC32 + offset + size)
  • LMD文件:CRC32 0x366E051F,包含CRC32 → 文件名映射
  • CRC32按RA2约定计算:大写 + 填充到4字节对齐


视频缩放

当 BinkCopyToBuffer 的目标缓冲区小于视频分辨率时,代理使用 保持宽高比的适配缩放(类似CSS object-fit: contain)自动缩放帧。使用预计算查找表的最近邻算法,DDraw负责最终屏幕拉伸。




日志

日志文件 binkw32_proxy.log 创建在DLL目录。

在 binkw32.cfg 中配置:

  1. [log]
  2. enabled = false   ; 禁用所有日志(默认:true)
  3. wait = true       ; 记录BinkWait调用(默认:false)
复制代码





测试

项目包含255个单元测试(Google Test),覆盖31个测试套件:

模块测试数覆盖率
config.cpp(CRC32、.mix解析器、.bik头、.wav解码器、配置解析器)78100%
binkw32_proxy.cpp(TrackVideo、UntrackVideo、FindVideo、缩放等)47100%
wav_player.cpp(分配、释放、启动、停止、暂停、恢复、跳转)35100%
logging.cpp(Log、LogF、TrimRight、文件轮转)1100%
audio_decoder.cpp(WAV、OGG、负面测试)21100%
损坏数据测试(畸形.mix、.bik、.wav、配置)26
集成测试(DLL导出、序数、真实文件)13
第三方(OGG、WAV、跨格式、.mix)15





常见问题

Q: 安装后游戏无法启动?
A: 确保 binkw32_1.0q.dll(真实Bink DLL)与 binkw32.dll(代理)在同一目录。如果缺少真实DLL,会出现错误对话框。

Q: Group 5 和 Group 7 有什么区别?
A: Group 5是RA2/RA2YR原版使用的Bink版本,Group 7是更新的版本,提供更好的视频质量。两个都可以正常使用。

Q: 如何只替换某个过场动画的音轨?
A: 在 binkw32.cfg 的对应 .mix 段中添加映射,格式为 文件名.bik = 音频路径。

Q: 支持中文配音吗?
A: 支持。只需将中文配音的WAV或OGG文件放到 BinkWAV 目录中,并在配置文件中映射即可。

Q: 日志在哪里?
A: 在游戏目录中的 binkw32_proxy.log 文件。




相关项目

  • BikMod — C&C Bink视频模组
  • RA2YR-reMIXer — MIX文件解保护工具
  • Phobos — TS引擎扩展项目





项目结构


  1. Proxy_Bink32w/
  2. ├── binkw32.cfg              # 音频替换配置
  3. ├── Real/                    # 原始Bink DLL(67个兼容版本)
  4. ├── src/
  5. │   ├── binkw32_proxy.cpp    # DLL加载器、视频跟踪、代理导出
  6. │   ├── config.cpp           # 配置解析、.mix解析器
  7. │   ├── audio_decoder.cpp    # WAV + OGG解码器
  8. │   ├── wav_player.cpp       # WaveOut音频播放
  9. │   ├── ordinals.inc         # 自动生成的序数表(19组)
  10. │   ├── exports.def          # DLL导出表(108个导出)
  11. │   └── stb_vorbis.c         # OGG Vorbis解码器
  12. ├── tests/                   # 255个单元测试
  13. └── tools/
  14.     ├── setup.ps1            # 自动下载工具
  15.     ├── generate_ordinals.ps1 # 自动生成序数表
  16.     └── convert_wav_to_ogg.ps1 # WAV转OGG
复制代码





项目地址: https://github.com/YoVVassup/Proxy_Bink32w
最新发布: https://github.com/YoVVassup/Proxy_Bink32w/releases/tag/v.2.0.0
预配置下载: https://pan.huang1111.cn/s/4R7O4hg

评分

参与人数 2DIY币 +35 收起 理由
笨030504 + 20 我超太伟大了
Noble_Fish + 15

查看全部评分

发表于 2026-7-13 22:37:12 | 显示全部楼层
!?强强?!
回复

使用道具 举报

发表于 2026-7-16 06:15:33 | 显示全部楼层
可以让BinkOpen不从HANDLE里面读bik吗,比如说改成CCFileClass
回复

使用道具 举报

 楼主| 发表于 2026-7-16 21:30:02 | 显示全部楼层
笨030504 发表于 2026-7-16 06:15
可以让BinkOpen不从HANDLE里面读bik吗,比如说改成CCFileClass

[B]关键发现(来自 YRpp 头文件)[/SIZE][/B]
[B]文件类层次结构[/SIZE][/B]

  1. FileClass (抽象基类)
  2.   └── RawFileClass          ← Handle (HANDLE), FileName, FileSize
  3.         └── BufferIOFileClass  ← 缓冲I/O
  4.               └── CDFileClass     ← CD支持
  5.                     └── CCFileClass   ← 从 .mix 读取 (MemoryBuffer)
复制代码

[B]RawFileClass — HANDLE 就在这里[/SIZE][/B]
  1. class NOVTABLE RawFileClass : public FileClass {
  2.     FileAccessMode FileAccess;
  3.     int FilePointer;
  4.     int FileSize;
  5.     HANDLE Handle;          // ← 这就是代理看到的 HANDLE
  6.     const char* FileName;
  7.     // ...
  8. };
复制代码

[B]CCFileClass — 从 .mix 读取数据[/SIZE][/B]
  1. class NOVTABLE CCFileClass : public CDFileClass {
  2.     MemoryBuffer Buffer;    // ← .mix 中的数据存储在这里
  3.     DWORD Position;
  4.     DWORD Availablility;
  5.     bool Open(FileAccessMode access) JMP_THIS(0x473D10);
  6.     int ReadBytes(void* pBuffer, int nNumBytes) JMP_THIS(0x473B10);
  7. };
复制代码

[B]FileSystem:oadFile — 关键函数[/SIZE][/B]
  1. static void* __fastcall LoadFile(const char* pFileName, bool bLoadAsSHP)
  2.     { JMP_STD(0x5B40B0); }
复制代码

gamemd.exe 中地址为 [B]0x5B40B0[/B]。该函数:
1. 在 .mix 池中搜索文件(MixFileClass::GetMixPool())
2. 将数据提取到缓冲区
3. 返回数据指针
------------------------------------------------------------------------
[B]这对我们代理意味着什么[/SIZE][/B]
[B]当前流程(代理看到的)[/SIZE][/B]

  1. 游戏: CCFileClass::Open("s04_f00e.bik")
  2.   → 在 .mix 中搜索 → 未找到(或找到并读入 Buffer)
  3.   → RawFileClass::Open → CreateFile → Handle
  4. 游戏: BinkOpen(Handle, 0x800000)
  5.   → 代理看到 HANDLE → 透传
复制代码

[B]为什么是 HANDLE 而不是文件名?[/SIZE][/B]
从 YRpp 可以看出:当从 .mix 读取时,CCFileClass::Open [B]不会创建 HANDLE[/B] — 数据进入 MemoryBuffer Buffer。HANDLE 只在从磁盘读取时才创建。
但代理看到的是 BinkOpen(HANDLE, 0x800000)。这意味着[B]在此特定情况下,.bik 文件不在 .mix 中[/B] — 它在磁盘上作为独立文件存在,游戏通过 CreateFile 打开它。
[B]结论对比表[/SIZE][/B]
[B]场景[/B][B]游戏如何打开[/B][B]代理看到什么[/B]
.bik 在磁盘上CreateFile → HANDLEBinkOpen(HANDLE, 0x800000)
.bik 在 .mix 中CCFileClass::BufferBinkOpen(文件名, 0) 或临时文件

------------------------------------------------------------------------
[B]最终结论[/SIZE][/B]
[B]当前代理已经是最优方案。[/B]
代理看到 HANDLE 是因为在此特定情况下 .bik 文件在磁盘上(不在 .mix 中)。BINK_FROM_MEMORY [B]不会带来任何收益[/B] — 游戏已经提供了 HANDLE,Bink 直接从中读取。
[B]BINK_FROM_MEMORY 唯一的应用场景[/B]是如果你想[B]替换数据[/B](例如,加载另一个 .bik 文件替代原始文件)。此时代理可以:
1. 拦截 BinkOpen(HANDLE, 0x800000)
2. 从替代源读取自己的 .bik
3. 调用 BinkOpen(自己的_buffer, 0x04000000)
[B]代理的优势分析[/SIZE][/B]
[B]方面[/B][B]当前方案(HANDLE)[/B][B]BINK_FROM_MEMORY[/B]
谁读取 .mix游戏(CCFileClass)代理(ParseMixFile)
谁解密游戏代理(需要 PKey)
对数据的控制完全控制
实时替换数据不可能可以
对 HANDLE 的依赖
实现复杂度已实现需要新增约100行代码
内存占用无额外整个 .bik 文件(5-250MB)

[B]实际收益[/SIZE][/B]
1. [B]数据替换[/B] — 如果你想实时替换视频(例如,从其他来源加载不同的 .bik)
2. [B]完全控制[/B] — 如果 HANDLE 突然变得不可用(游戏在 BinkOpen 完成前关闭它)
3. [B]调试[/B] — 查看 Bink 实际读取哪些数据
[B]但是...[/SIZE][/B]
[B]当前方案已经可以工作。[/B] 游戏自己从 .mix 中提取数据并提供 HANDLE。代理只是透传它。BINK_FROM_MEMORY 对于当前任务(音频替换)[B]没有实际优势[/B]。
唯一的实际用例是如果你想[B]替换视频数据[/B](不仅是音频)。那样 BINK_FROM_MEMORY 提供完全控制。
回复

使用道具 举报

发表于 2026-7-17 05:13:37 | 显示全部楼层
本帖最后由 笨030504 于 2026-7-17 05:29 编辑
YoWassup 发表于 2026-7-16 21:30
关键发现(来自 YRpp 头文件)
文件类层次结构

好的,感谢您的指导。
目前我在IHCore.dll里面已经完全实现了从自定义来源读取的功能,不过可能与你的dll兼容性有待调整。
具体情况我在你的github仓库里面发了一个issue:Issue/1
这个功能是基于BinkOpen的BINKIOPROCESSOR模式进行的。
似乎在传入这些奇奇怪怪的flag的时候可能会把第一个参数试图当作字符串给解析了?
我应该如何解决?是否可以通过在BinkOpen那里改传文件名然后在回调里面重新打开文件,而不再传CCFileClass*来解决?
回复

使用道具 举报

 楼主| 发表于 2026-7-17 14:24:20 | 显示全部楼层
笨030504 发表于 2026-7-17 05:13
好的,感谢您的指导。
目前我在IHCore.dll里面已经完全实现了从自定义来源读取的功能,不过可能与你的dll ...

我已针对您的用例添加了自定义标志处理,但我没有任何实际测试数据来验证其全部功能。请查看 https://github.com/YoVVassup/Proxy_Bink32w/releases/tag/v.2.0.1 上的版本,并在日志文件中查找类似“BinkOpen: BINKIOPROCESSOR mode, first param=%p (custom IO context)”的日志。
回复

使用道具 举报

发表于 2026-7-17 15:12:32 | 显示全部楼层
YoWassup 发表于 2026-7-17 14:24
我已针对您的用例添加了自定义标志处理,但我没有任何实际测试数据来验证其全部功能。请查看 https://git ...

好的感谢我自己测一下
回复

使用道具 举报

发表于 2026-7-17 15:20:14 | 显示全部楼层
YoWassup 发表于 2026-7-17 14:24
我已针对您的用例添加了自定义标志处理,但我没有任何实际测试数据来验证其全部功能。请查看 https://git ...

不知道为什么打开EA_WWLOGO.bik有问题,Ra2ts_l.bik没问题。

=== Proxy_Bink32w v2.0.1 ===
Target: binkw32_1.0q.dll

BinkSetSoundSystem(6F4D2C40,01140848)
BinkSetIO(6EEBE6B0)
  Exception: movies01.mix
  Exception: movies02.mix
  Exception: movmd03.mix
  Exception map [movies01.mix]: westlogo.bik -> BinkWAV\RA2\westlogo.wav
  Exception map [movies01.mix]: a00_f00e.bik -> BinkWAV\RA2\a00_f00e.wav
  Exception map [movies01.mix]: a01_f00e.bik -> BinkWAV\RA2\a01_f00e.wav
  Exception map [movies01.mix]: a01_p01e.bik -> BinkWAV\RA2\a01_p01e.wav
  Exception map [movies01.mix]: a01_p02e.bik -> BinkWAV\RA2\a01_p02e.wav
  Exception map [movies01.mix]: a01_p03e.bik -> BinkWAV\RA2\a01_p03e.wav
  Exception map [movies01.mix]: a02_f00e.bik -> BinkWAV\RA2\a02_f00e.wav
  Exception map [movies01.mix]: a02_p01e.bik -> BinkWAV\RA2\a02_p01e.wav
  Exception map [movies01.mix]: a02_p02e.bik -> BinkWAV\RA2\a02_p02e.wav
  Exception map [movies01.mix]: a03_f00e.bik -> BinkWAV\RA2\a03_f00e.wav
  Exception map [movies01.mix]: a03_p01e.bik -> BinkWAV\RA2\a03_p01e.wav
  Exception map [movies01.mix]: a04_f00e.bik -> BinkWAV\RA2\a04_f00e.wav
  Exception map [movies01.mix]: a04_f03e.bik -> BinkWAV\RA2\a04_f03e.wav
  Exception map [movies01.mix]: a04_p01e.bik -> BinkWAV\RA2\a04_p01e.wav
  Exception map [movies01.mix]: a04_p02e.bik -> BinkWAV\RA2\a04_p02e.wav
  Exception map [movies01.mix]: a05_f00e.bik -> BinkWAV\RA2\a05_f00e.wav
  Exception map [movies01.mix]: a05_p01e.bik -> BinkWAV\RA2\a05_p01e.wav
  Exception map [movies01.mix]: a05_p02e.bik -> BinkWAV\RA2\a05_p02e.wav
  Exception map [movies01.mix]: a05_p03e.bik -> BinkWAV\RA2\a05_p03e.wav
  Exception map [movies01.mix]: a06_f00e.bik -> BinkWAV\RA2\a06_f00e.wav
  Exception map [movies01.mix]: a06_p01e.bik -> BinkWAV\RA2\a06_p01e.wav
  Exception map [movies01.mix]: a06_p02e.bik -> BinkWAV\RA2\a06_p02e.wav
  Exception map [movies01.mix]: a07_f00e.bik -> BinkWAV\RA2\a07_f00e.wav
  Exception map [movies01.mix]: a07_p01e.bik -> BinkWAV\RA2\a07_p01e.wav
  Exception map [movies01.mix]: a08_f00e.bik -> BinkWAV\RA2\a08_f00e.wav
  Exception map [movies01.mix]: a08_p01e.bik -> BinkWAV\RA2\a08_p01e.wav
  Exception map [movies01.mix]: a08_p02e.bik -> BinkWAV\RA2\a08_p02e.wav
  Exception map [movies01.mix]: a09_f00e.bik -> BinkWAV\RA2\a09_f00e.wav
  Exception map [movies01.mix]: a09_p01e.bik -> BinkWAV\RA2\a09_p01e.wav
  Exception map [movies01.mix]: a10_f00e.bik -> BinkWAV\RA2\a10_f00e.wav
  Exception map [movies01.mix]: a10_p01e.bik -> BinkWAV\RA2\a10_p01e.wav
  Exception map [movies01.mix]: a10_p02e.bik -> BinkWAV\RA2\a10_p02e.wav
  Exception map [movies01.mix]: a11_f00e.bik -> BinkWAV\RA2\a11_f00e.wav
  Exception map [movies01.mix]: a11_p01e.bik -> BinkWAV\RA2\a11_p01e.wav
  Exception map [movies01.mix]: a11_p02e.bik -> BinkWAV\RA2\a11_p02e.wav
  Exception map [movies01.mix]: a11_p03e.bik -> BinkWAV\RA2\a11_p03e.wav
  Exception map [movies01.mix]: a12_f00e.bik -> BinkWAV\RA2\a12_f00e.wav
  Exception map [movies01.mix]: a12_p01e.bik -> BinkWAV\RA2\a12_p01e.wav
  Exception map [movies01.mix]: a12_p02e.bik -> BinkWAV\RA2\a12_p02e.wav
  Exception map [movies01.mix]: a13_f00e.bik -> BinkWAV\RA2\a13_f00e.wav
  Exception map [movies01.mix]: a13_f01e.bik -> BinkWAV\RA2\a13_f01e.wav
  Exception map [movies01.mix]: a13_f02e.bik -> BinkWAV\RA2\a13_f02e.wav
  Exception map [movies02.mix]: s01_f00e.bik -> BinkWAV\RA2\s01_f00e.wav
  Exception map [movies02.mix]: s01_p01e.bik -> BinkWAV\RA2\s01_p01e.wav
  Exception map [movies02.mix]: s02_f00e.bik -> BinkWAV\RA2\s02_f00e.wav
  Exception map [movies02.mix]: s02_p01e.bik -> BinkWAV\RA2\s02_p01e.wav
  Exception map [movies02.mix]: s02_p02e.bik -> BinkWAV\RA2\s02_p02e.wav
  Exception map [movies02.mix]: s02_p03e.bik -> BinkWAV\RA2\s02_p03e.wav
  Exception map [movies02.mix]: s03_f00e.bik -> BinkWAV\RA2\s03_f00e.wav
  Exception map [movies02.mix]: s03_p01e.bik -> BinkWAV\RA2\s03_p01e.wav
  Exception map [movies02.mix]: s04_f00e.bik -> BinkWAV\RA2\s04_f00e.wav
  Exception map [movies02.mix]: s04_p01e.bik -> BinkWAV\RA2\s04_p01e.wav
  Exception map [movies02.mix]: s04_p02e.bik -> BinkWAV\RA2\s04_p02e.wav
  Exception map [movies02.mix]: s05_f00e.bik -> BinkWAV\RA2\s05_f00e.wav
  Exception map [movies02.mix]: s05_p01e.bik -> BinkWAV\RA2\s05_p01e.wav
  Exception map [movies02.mix]: s05_p02e.bik -> BinkWAV\RA2\s05_p02e.wav
  Exception map [movies02.mix]: s06_f00e.bik -> BinkWAV\RA2\s06_f00e.wav
  Exception map [movies02.mix]: s06_p01e.bik -> BinkWAV\RA2\s06_p01e.wav
  Exception map [movies02.mix]: s06_p02e.bik -> BinkWAV\RA2\s06_p02e.wav
  Exception map [movies02.mix]: s06_p03e.bik -> BinkWAV\RA2\s06_p03e.wav
  Exception map [movies02.mix]: s07_f00e.bik -> BinkWAV\RA2\s07_f00e.wav
  Exception map [movies02.mix]: s07_p01e.bik -> BinkWAV\RA2\s07_p01e.wav
  Exception map [movies02.mix]: s07_p02e.bik -> BinkWAV\RA2\s07_p02e.wav
  Exception map [movies02.mix]: s08_f00e.bik -> BinkWAV\RA2\s08_f00e.wav
  Exception map [movies02.mix]: s08_p01e.bik -> BinkWAV\RA2\s08_p01e.wav
  Exception map [movies02.mix]: s09_f00e.bik -> BinkWAV\RA2\s09_f00e.wav
  Exception map [movies02.mix]: s09_p01e.bik -> BinkWAV\RA2\s09_p01e.wav
  Exception map [movies02.mix]: s10_f00e.bik -> BinkWAV\RA2\s10_f00e.wav
  Exception map [movies02.mix]: s10_p01e.bik -> BinkWAV\RA2\s10_p01e.wav
  Exception map [movies02.mix]: s10_p02e.bik -> BinkWAV\RA2\s10_p02e.wav
  Exception map [movies02.mix]: s10_p03e.bik -> BinkWAV\RA2\s10_p03e.wav
  Exception map [movies02.mix]: s11_f00e.bik -> BinkWAV\RA2\s11_f00e.wav
  Exception map [movies02.mix]: s11_p01e.bik -> BinkWAV\RA2\s11_p01e.wav
  Exception map [movies02.mix]: s11_p03e.bik -> BinkWAV\RA2\s11_p03e.wav
  Exception map [movies02.mix]: s11_p04e.bik -> BinkWAV\RA2\s11_p04e.wav
  Exception map [movies02.mix]: s12_f00e.bik -> BinkWAV\RA2\s12_f00e.wav
  Exception map [movies02.mix]: s12_p01e.bik -> BinkWAV\RA2\s12_p01e.wav
  Exception map [movies02.mix]: s13_f00e.bik -> BinkWAV\RA2\s13_f00e.wav
  Exception map [movies02.mix]: s13_f01e.bik -> BinkWAV\RA2\s13_f01e.wav
  Exception map [movmd03.mix]: a00_f00e.bik -> BinkWAV\RA2YR\a00_f00e.wav
  Exception map [movmd03.mix]: a01_f00e.bik -> BinkWAV\RA2YR\a01_f00e.wav
  Exception map [movmd03.mix]: a01_f04e.bik -> BinkWAV\RA2YR\a01_f04e.wav
  Exception map [movmd03.mix]: a01_p01e.bik -> BinkWAV\RA2YR\a01_p01e.wav
  Exception map [movmd03.mix]: a01_p02e.bik -> BinkWAV\RA2YR\a01_p02e.wav
  Exception map [movmd03.mix]: a01_p03e.bik -> BinkWAV\RA2YR\a01_p03e.wav
  Exception map [movmd03.mix]: a02_f00e.bik -> BinkWAV\RA2YR\a02_f00e.wav
  Exception map [movmd03.mix]: a02_p01e.bik -> BinkWAV\RA2YR\a02_p01e.wav
  Exception map [movmd03.mix]: a02_p02e.bik -> BinkWAV\RA2YR\a02_p02e.wav
  Exception map [movmd03.mix]: a02_p03e.bik -> BinkWAV\RA2YR\a02_p03e.wav
  Exception map [movmd03.mix]: a03_f00e.bik -> BinkWAV\RA2YR\a03_f00e.wav
  Exception map [movmd03.mix]: a03_p01e.bik -> BinkWAV\RA2YR\a03_p01e.wav
  Exception map [movmd03.mix]: a03_p02e.bik -> BinkWAV\RA2YR\a03_p02e.wav
  Exception map [movmd03.mix]: a03_p03e.bik -> BinkWAV\RA2YR\a03_p03e.wav
  Exception map [movmd03.mix]: a03_p04e.bik -> BinkWAV\RA2YR\a03_p04e.wav
  Exception map [movmd03.mix]: a04_f00e.bik -> BinkWAV\RA2YR\a04_f00e.wav
  Exception map [movmd03.mix]: a04_f02e.bik -> BinkWAV\RA2YR\a04_f02e.wav
  Exception map [movmd03.mix]: a04_p01e.bik -> BinkWAV\RA2YR\a04_p01e.wav
  Exception map [movmd03.mix]: a04_p03e.bik -> BinkWAV\RA2YR\a04_p03e.wav
  Exception map [movmd03.mix]: a05_f00e.bik -> BinkWAV\RA2YR\a05_f00e.wav
  Exception map [movmd03.mix]: a05_p01e.bik -> BinkWAV\RA2YR\a05_p01e.wav
  Exception map [movmd03.mix]: a05_p02e.bik -> BinkWAV\RA2YR\a05_p02e.wav
  Exception map [movmd03.mix]: a05_p03e.bik -> BinkWAV\RA2YR\a05_p03e.wav
  Exception map [movmd03.mix]: a06_f00e.bik -> BinkWAV\RA2YR\a06_f00e.wav
  Exception map [movmd03.mix]: a06_p01e.bik -> BinkWAV\RA2YR\a06_p01e.wav
  Exception map [movmd03.mix]: a06_p03e.bik -> BinkWAV\RA2YR\a06_p03e.wav
  Exception map [movmd03.mix]: a06_p04e.bik -> BinkWAV\RA2YR\a06_p04e.wav
  Exception map [movmd03.mix]: a07_f00e.bik -> BinkWAV\RA2YR\a07_f00e.wav
  Exception map [movmd03.mix]: a07_p01e.bik -> BinkWAV\RA2YR\a07_p01e.wav
  Exception map [movmd03.mix]: a07_p02e.bik -> BinkWAV\RA2YR\a07_p02e.wav
  Exception map [movmd03.mix]: a08_f00e.bik -> BinkWAV\RA2YR\a08_f00e.wav
  Exception map [movmd03.mix]: s01_f00e.bik -> BinkWAV\RA2YR\s01_f00e.wav
  Exception map [movmd03.mix]: s01_p01e.bik -> BinkWAV\RA2YR\s01_p01e.wav
  Exception map [movmd03.mix]: s01_p02e.bik -> BinkWAV\RA2YR\s01_p02e.wav
  Exception map [movmd03.mix]: s01_p03e.bik -> BinkWAV\RA2YR\s01_p03e.wav
  Exception map [movmd03.mix]: s02_f00e.bik -> BinkWAV\RA2YR\s02_f00e.wav
  Exception map [movmd03.mix]: s02_p01e.bik -> BinkWAV\RA2YR\s02_p01e.wav
  Exception map [movmd03.mix]: s03_f00e.bik -> BinkWAV\RA2YR\s03_f00e.wav
  Exception map [movmd03.mix]: s03_p01e.bik -> BinkWAV\RA2YR\s03_p01e.wav
  Exception map [movmd03.mix]: s03_p02e.bik -> BinkWAV\RA2YR\s03_p02e.wav
  Exception map [movmd03.mix]: s03_p03e.bik -> BinkWAV\RA2YR\s03_p03e.wav
  Exception map [movmd03.mix]: s04_f00e.bik -> BinkWAV\RA2YR\s04_f00e.wav
  Exception map [movmd03.mix]: s04_p01e.bik -> BinkWAV\RA2YR\s04_p01e.wav
  Exception map [movmd03.mix]: s04_p02e.bik -> BinkWAV\RA2YR\s04_p02e.wav
  Exception map [movmd03.mix]: s04_p03e.bik -> BinkWAV\RA2YR\s04_p03e.wav
  Exception map [movmd03.mix]: s05_f00e.bik -> BinkWAV\RA2YR\s05_f00e.wav
  Exception map [movmd03.mix]: s05_p01e.bik -> BinkWAV\RA2YR\s05_p01e.wav
  Exception map [movmd03.mix]: s05_p02e.bik -> BinkWAV\RA2YR\s05_p02e.wav
  Exception map [movmd03.mix]: s06_f00e.bik -> BinkWAV\RA2YR\s06_f00e.wav
  Exception map [movmd03.mix]: s06_p01e.bik -> BinkWAV\RA2YR\s06_p01e.wav
  Exception map [movmd03.mix]: s06_p02e.bik -> BinkWAV\RA2YR\s06_p02e.wav
  Exception map [movmd03.mix]: s07_f00e.bik -> BinkWAV\RA2YR\s07_f00e.wav
  Exception map [movmd03.mix]: s07_p01e.bik -> BinkWAV\RA2YR\s07_p01e.wav
  Exception map [movmd03.mix]: s07_p02e.bik -> BinkWAV\RA2YR\s07_p02e.wav
  Exception map [movmd03.mix]: s08_f00e.bik -> BinkWAV\RA2YR\s08_f00e.wav
Config loaded: 0 audio maps, 3 exceptions, log_wait=0 from C:\WORK\IHTEST\binkw32.cfg
Real DLL loaded: C:\WORK\IHTEST\binkw32_1.0q.dll
Proxied functions resolved: pBinkOpen=0ED87F00 pBinkDoFrame=0ED89BC0 pBinkClose=0ED8A2E0 pBinkWait=0ED8A3C0
BinkOpen(03710310,02000000) flags=0x02000000 ptr=0ED87F00
BinkOpen: BINKIOPROCESSOR mode, first param=03710310 (custom IO context)
BinkOpen->00000000
BinkGetError()=0EDC1A80
BinkGetError()=0EDC1A80
BinkSetSoundSystem(6F4D2C40,01140848)
BinkOpenDirectSound(01140848)
BinkSetIO(6EEBE6B0)
BinkOpen(11531A90,02000000) flags=0x02000000 ptr=0ED87F00
BinkOpen: BINKIOPROCESSOR mode, first param=11531A90 (custom IO context)
BinkOpen->0EEA2460
No audio mapping for: ? [632x570]
Tracked video: 0EEA2460 632x570
BinkSetVolume2(0EEA2460,00005999)
BinkDDSurfaceType(0416E850)
BinkDDSurfaceType->0000000A


回复

使用道具 举报

发表于 2026-7-17 15:21:05 | 显示全部楼层
直接复制的v.2.0.1的Group5的zip所有文件到根目录并运行。
回复

使用道具 举报

 楼主| 发表于 2026-7-17 16:50:02 | 显示全部楼层
请尝试用这个版本替换我之前的代理版本,并提供日志。我已经找到问题所在,并进行了修复;名称搜索功能可以正常工作,但不会指向 zip 文件名,因为您的模块处理了该逻辑。这是针对纯净版 binkw32_1.0q.dll 的第 5 组构建版本。无论如何,我正在等待日志进行分析。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛 |网站地图

GMT+8, 2026-8-19 11:20 , Processed in 0.059003 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表