-
Notifications
You must be signed in to change notification settings - Fork 24
/
COMPILE.txt
115 lines (103 loc) · 7.8 KB
/
COMPILE.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
《仙剑奇侠传三》《仙剑奇侠传三外传·问情篇》分辨率补丁 | 编译说明
编译说明:
补丁编译方式有两种:
(1)使用 VC++ 2013(或更高版本)编译
(2)使用 MinGW GCC & VC++ 6.0 编译
两种方式各有利弊,但编译出来的结果理论上是一样的;
本补丁的发布版是用方式(2)编译的,但如果是刚刚接触本补丁,建议用方式(1)进行编译。
编译过程中若遇到问题,可以参考 notes/known_issues.txt 中 NOT OUR BUG 部分。
注意:
由于源代码文件大多使用国标码,请在简体中文系统下进行编译。
本说明以《仙剑三》补丁的编译调试步骤为例,若要编译《问情篇》的补丁,请适当调整相关配置。
补丁所用到的 SDK 与库的安装路径是硬编码在工程文件中的,如果安装路径与本说明不同,请适当修改相应的工程文件。
编译过程中需要的 DirectX SDK:
不论使用何种编译方式,都必须得到 DirectX 9.0 SDK Update - (Summer 2003) 这个 SDK。
这是因为仙剑三开发时使用的 SDK 就是这个版本的 SDK。
SHA-1 校验和 文件名
=========================================================================
86eee764eac5d5a0f0864d6ba10d4061184f86ef dx90update_extras.exe (可选)
51a0edf2859177445279993efb5238b9b157fe52 dx90update_managed.exe (可选)
38a7581d727503f0401cfd2a3bf084418e7eda44 dx90updatesdk.exe (必须)
编译方式一:使用 VC++ 2013(或更高版本)编译
优点:
(1)环境配置简单
(2)可以使用 VC++ 的强大的调试和分析工具
缺点:
(1)编译出的程序只能在 Windows XP SP3 或更高版本的操作系统上运行
(2)编译出的文件大小较大
环境配置:
(1)安装 VC++ 2013 或更高版本(VC++ 2013, 2015, 2017, 2019, 2022 均已测试,可以正常编译)
注意需要安装“对 C++ 的 Windows XP 支持”、“MFC 和 ATL 支持”(如果有必要的话)
(2)解压缩 SDK 安装包 dx90updatesdk.exe 到 C:\DX90SDK 目录下(注意只需解压缩,无需安装)
(3)解压缩并编译 FreeType 库(具体步骤见后)
编译方法:
(1)打开 src\PAL3patch.sln 直接编译即可
(2)编译出的文件在 src\Debug_PAL3 或是 src\Release_PAL3 目录下
调试方法:
(1)建议先安装 June 2010 DirectX SDK(DXSDK_Jun10.exe)
(2)假设游戏安装目录为 C:\PAL3
(3)先安装一遍发布的分辨率补丁,保证 PAL3.exe、gbengine.dll、PAL3unpack.dll 等文件的版本正确
(4)打开 src\PAL3patch.sln
(5)在“解决方案资源管理器”中,对“PAL3”、“PAL3patch”、“PatchConfig”这三个工程分别操作:
右键菜单中选择“属性”,在“属性页”窗口中,先在左上角“配置”处选择“所有配置”,
在左侧栏中选择“配置属性——常规”,将右侧“输出目录”改为“C:\PAL3\”,
在左侧栏中选择“配置属性——调试”,将右侧“工作目录”改为“$(TargetDir)”,
然后点“确定”关闭属性页(如果提示错误,可能需要将“配置属性——常规——目标平台版本”设置为“7.0”)
(6)在“解决方案资源管理器”中,对“PAL3”、“PAL3patch”这两个工程分别进行操作:
右键菜单中选择“属性”,在“属性页”窗口中,先在左上角“配置”处选择“所有配置”,
在左侧栏中选择“配置属性——调试”,将右侧“命令”改为“C:\PAL3\PAL3.exe”,
然后点“确定”关闭属性页
(7)在“解决方案资源管理器”中选择“PAL3”,右键菜单中点击“设为启动项目”
(8)在工具栏中选择“Debug_PAL3”或“Release_PAL3”作为活动解决方案配置
(9)然后按 F5 直接运行即可
调试可能遇到的问题:
(1)运行时提示找不到 d3dx9d.dll
这是因为 Debug 版本会链接 d3dx9d.lib 这个 Debug 版的库导致的(Release 版则不会),
将 C:\DX90SDK\Developer Runtime\Win2k\d3dx9d.dll 复制到游戏目录下即可解决
(2)提示找不到 PAL3.exe 的调试信息,问是否继续调试
仙剑三主程序当然没有提供调试信息,所以应该选择“继续调试”
(3)运行后提示找不到 PAL3patch.conf
这是因为没有配置文件而造成的错误,可以运行 PatchConfig.exe 来生成一个
(4)运行时不会编译全部工程
在 VS 主界面菜单中点击“工具——选项”打开“选项”对话框,
在“选项”对话框中左侧选择“项目和解决方案——生成并运行”,
在右侧取消选择“在运行时仅生成启动项目和依赖项”,
然后点击“确定”关闭对话框即可
附:使用 VC++ 2013 编译 FreeType 库的方法
(1)下载 FreeType 2.10.4 源代码(源码包文件名为 freetype-2.10.4.tar.gz)
(2)解压缩并打开 C:\freetype-2.10.4\builds\windows\vc2010\freetype.sln
(3)在“解决方案资源管理器”中,选中“freetype”这个工程:
右键菜单中选择“属性”,在“属性页”窗口中,先在左上角“配置”处选择“所有配置”,右上角“平台”处选择“所有平台”,
在左侧栏中选择“配置属性——常规”,将右侧“平台工具集”改为带 XP 支持的版本,
然后点“确定”关闭属性页
(4)选择“生成”菜单中的“批生成”,在弹出的对话框中点击“全选”再点击“重新生成”
编译方式二:使用 MinGW GCC & VC++ 6.0 编译
优点:
(1)编译出的程序即使在 Windows 98 操作系统上也能运行
(2)编译出的文件较小
缺点:
(1)环境配置复杂
(2)调试较为困难
环境配置:
(1)强烈建议使用 Windows XP 操作系统
(2)安装 VC++ 6.0(并安装 SP6 补丁)
(3)安装 Dev-C++ 4.9.9.2
(4)安装 MSYS 1.0.11(安装时需配置好路径,让其使用 Dev-C++ 带有的 GCC 3.4.2,即在 msys 命令行中能够执行 gcc)
(5)安装 Platform SDK(需要使用 February 2003 版本)
(6)安装 DirectX 9.0b SDK(具体步骤见后)
(7)解压缩并编译 FreeType 库(具体步骤见后)
编译方法:
(1)按实际情况修改 Makefile (如 freetype 库的路径、DirectX SDK 的路径等)
(2)运行 MSYS,在命令行中切换目录到 src 目录下,执行 make 命令即可编译
(3)编译好的程序位于:
src\PAL3patch\PAL3patch.dll
src\PatchConfig\Release_PAL3\PatchConfig.exe
注意:
(1)如果使用 Dev-C++ 4.9.9.2 随附的 GCC 3.4.2 编译,请不要打开编译优化,否则可能生成错误的代码
附:为 VC++ 6.0 安装 DirectX 9.0b SDK 的方法
(1)解压缩 SDK 安装包 dx90updatesdk.exe(注意只需解压缩,无需安装)
(2)在 VC++ 6.0 中配置好 VC++ 目录(添加 Include 目录的完整路径到引用目录最前面,添加 Lib 目录的完整路径到库目录最前面)
附:使用 VC++ 6.0 编译 FreeType 库的方法
(1)下载 FreeType 2.10.4 源代码(源码包文件名为 freetype-2.10.4.tar.gz)
(2)解压缩并打开 C:\freetype-2.10.4\builds\windows\visualc\freetype.dsw 这个工程文件
(3)修改“Release Static”的工程配置,使之使用静态 C 运行库(LIBCMT.LIB),然后编译即可