发布:admin2025-10-20 12:12:51 5416条浏览分类:世界杯怎么画
本帖最后由 Master_Of_Time 于 2025-8-12 17:25 编辑
听好了:8月12日,XCC Utilities 就此修复。
每个用了 GMD 的软件都将迎来一次补丁,为这些工具带来全新的 waitcylo 缓存。
你所熟知的一切都将改变,你所熟悉的 expandmd01.mix 都将加诸 waitcylo 的历练。
至此,一锤定音。
全貌,已然显现。
#红色警戒 2:尤里的复仇# #Red Alert 2: Yuri's Revenge# #即时战略#
前情提要:XCC Utilities 是由荷兰程序员 Olaf van der Spek 于约 2001 年开始开发的工具集
其中存在文件 global mix database.dat(下文简称为 GMD),用于存储一些字符串
它会被 XCC Audio Player、XCC Editor、XCC Mixer、XCC MIX Editor 读取
根据 XCC Utilities 的源码,可以了解到 GMD 的文件结构如下:
Little Endian
{
Integer Count
{
String Name
String Description
} * Count
} * 4 ; TD, RA, TS, RA2
前文https://bbs.ra2diy.com/forum.php?mod=viewthread&tid=23033提到的"08 16"
便是 GMD 用于泰伯利亚黎明系列的数据库的字符串组数(还要再加上"00 00"
该值 +2 的后果便是在 0xD8CC 处继续读取:
Name: "4\t", Description: ""(竟然出奇的合适!?
Name: "gstr0011.int" Description:"grey floor with yellow stripes"
到这里影响顶多是,将 RA 的黄条纹的灰色地板存错到了 TD
而后是……尝试读取 1752395123 对字符串
这不仅会使软件向系统申请至少 1.63 GB 的内存空间(甚至再翻个几倍
还会从 GMD 文件末尾开始内存越界,一直读取到世界尽头(或是被系统拦截
也就能解释为什么 XCC Mixer 会崩溃了 这要在 Windows XP 高低会给你抛一个
0xXXXXXXXX 指令引用的 0xXXXXXXXX 内存,该内存不能为“read”
解决方案是在 0xD8CC 处添加正确的文件名,这里为了严谨性,我选择在 RA2 系列处修改
知晓了这些,现在我们可以将@Noble_Fish 发现的正确的文件名填入 GMD 了
使用 XCC Mixer 打开 expandmd01.mix 效果如下图
已测试 XCC Audio Player、XCC Editor、XCC Mixer、XCC MIX Editor 运行正常
你可以从这里获取修复补丁,解压得到的 GMD 放入 XCC Mixer 的目录,覆盖得以生效
global mix database.zip
(398.77 KB, 下载次数: 51)
2025-8-12 03:47 上传
点击文件名下载附件
具体修改:
0x35157: 32 38 00 00 (DEC: 14386) -> 34 38 00 00 (DEC: 14388)
0x63A43: + "waitcylo.pal", "waitcylo.shp"
评分
参与人数 1DIY币 +1
收起
理由
Noble_Fish
+ 1
查看全部评分