上一篇:仙剑奇侠传1系列:1.本地运行环境及兼容性设置

介绍

仙剑奇侠传1是dos时代的经典游戏,相信以下图片能勾起大家的很多回忆。

 

sdlpal是仙剑奇侠传1的主程序。github项目sdlpal,项目地址:https://github.com/sdlpal/sdlpal,最早由国内仙剑奇侠传爱好

者 Wei Mingzhi发起维护,现由 SDLPAL开发团队维护,项目核心成员如下:

  Wei Mingzhi

  palxex <palxex.ys168.com>

  louyihua <louyihua绕过@爬虫21cn.com>

  以上第二位和第三位在上一篇文章仙剑奇侠传1系列:1.本地运行环境及兼容性设置中提到过。

louyihua就是那个北航的博士,他的github地址:https://github.com/louyihua

编译

  sdlpal官网说扩展了以下框架,注:该版本不能在dos下运行,各位看官不要浪费时间在dosbox里面测试。

按常规思维,笔者联想到,可能会依赖这些库。按图索骥到sdl官网http://www.libsdl.org下载sdl回来。

经过笔者最终测试,sdlpal不再像windows95/98那个版本把sdl静态编译到主程序里。而是以动态库方式和主程序sdlpal.exe共存的。

1、编译sdl

sdlpal主程序依赖于sdl,于是优先编译sdl,笔者本地使用Visual Studio 2019企业版,安装时勾选以下几项

sdl的编译还需要Directx的sdk,各位看官需要去微软下载Microsoft DirectX SDK (June 2010),地址

https://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe

安装后获得Directx SDK文件C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)

截至编写此文章时官网SDL最新版本SDL2-2.0.10,下载地址http://www.libsdl.org/release/SDL2-2.0.10.zip

将SDL2-2.0.10下载回来放到sdlpal的3rd目录

打开SDL2-2.0.10项目后将SDL2和SDL2main更改SDK为Visual Studio 2017 - Windows XP (v141_xp)

一定要更改成这个,否则编译报错

c2118:负下标

笔者曾尝试下载 1.2.15编译,这个版本的是从Visual C++6.0升级过来的,这个版本不是本程序编译的最低依赖版本。

这里遇到的错误页分享以下,将库文件目录

C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64

C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86

分别在添加到编译的库文件类路径,此处不再详述。

打开目录3rd\SDL\SDL2-2.0.10\VisualC中的SDL.sln编译项目,获得

以下三个文件

SDL2.lib

SDL2main.lib

SDL2.dll

将3rd\SDL\SDL2-2.0.10\include目录拷贝到

3rd\include

目录如下

2、编译sdlpal

打开项目sdlpal-master\win32目录下的sdlpal工程文件,修改配置如下

更改SDK为Visual Studio 2017 - Windows XP (v141_xp)

库目录添加..\3rd\SDL

编译通过。获得以下文件sdlpal.exe

将编译SDL2-2.0.10获得的SDL2.dll和sdlpal.exe复制到仙剑奇侠传1的运行目录,如下(上面的第5张图片)

打开sdlpal.exe程序界面如下

启动游戏

资料:

藏宝阁 http://palxex.ys168.com/

中国仙剑联盟怀旧版资料库  http://palunion.ys168.com/

仙剑奇侠传1系列:2.编译主程序SDLPAL及SDL的更多相关文章

  1. 系列篇|编译可在Android上运行的依赖库(一):glib库

    前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库 ...

  2. C++ 系列:编译 boost

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...

  3. Echoprint系列--Android编译与调用

    在Echoprint系列--编译中编译了源代码,这次将Echoprint移植到Android平台并測试识别歌曲功能. 一.编译库 1.环境准备 Android NDK,我的是android-ndk-r ...

  4. linux内核系列(一)编译安装Linux内核 2.6.18

    1.配置环境 操作系统:CentOS 5.2 下载linux-2.6.18版本的内核,网址:http://www.kernel.org 说明:该编译文档适合2.6.18以上的Linux内核版本,只需所 ...

  5. cocos2d-x游戏开发系列教程-编译运行我们的第一个cocos2d-x游戏程序

    环境准备和介绍: 操作系统:64位Windows 7 sp1(Microsoft Windows [版本 6.1.7601]) 必要的软件和源码: visual_studio_ultimate_201 ...

  6. React Native系列(6) - 编译安卓私有React-Native代码

    为何要自己编译React Native安卓私有代码 我们在开发中遇到一个HTTP2的问题,React Native安卓客户端在和HTTP2支持的服务器通讯的过程中会有crash,见 React-Nat ...

  7. glib系列1 编译

    1 安装 meson glib 使用 meson进行构建,需要python3,首先下载meson, meson/meson.py 就是程序本身了,可以直接运行 git clone https://gi ...

  8. 跟vczh看实例学编译原理——零:序言

    在<如何设计一门语言>里面,我讲了一些语言方面的东西,还有痛快的喷了一些XX粉什么的.不过单纯讲这个也是很无聊的,所以我开了这个<跟vczh看实例学编译原理>系列,意在科普一些 ...

  9. linux shared lib 使用与编译

    一.              动态链接库的原理及使用 Linux提供4个库函数.一个头文件dlfcn.h以及两个共享库(静态库libdl.a和动态库libdl.so)支持动态链接. Ø        ...

随机推荐

  1. Beyond Compare 4提示已经过了30天试用期

    打开Beyond Compare 4,提示已经超出30天试用期限制,解决方法:1.修改C:\Program Files\Beyond Compare 4\BCUnrar.dll ,这个文件重命名或者直 ...

  2. 1113 form表单与css选择器

    目录 1.form表单 form元素 特点 参数 form元素内的控件 1.input的使用 2.select标签 3.textarea元素 4.autofocus属性 2.CSS 1.基础语法 cs ...

  3. Java集合--Iterator和Enumeration比较

    转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311275 第1部分 Iterator和Enumer ...

  4. Spring注解详解(转)

    概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO ...

  5. vs 2017 无法安装任何 nuget package,提示“库没有注册。。。”

    vs 2017 无法安装任何 nuget package,提示“库没有注册(异常来自 HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))” 各种百度谷歌都没有 ...

  6. Python3发送webservice请求

    Python3使用suds-jurko库来发送webservice接口请求 导入请求webservice接口需要用到的包 pip install suds-jurko 第一步:导入所需要的包 from ...

  7. SP703 SERVICE - Mobile Service

    思路:DP 提交:1次 题解: 我们把处理到的要求作为阶段. \(f[i][x][y][z]\)表示第 \(i\) 个要求,三个人分别的位置. 发现这样有很多无用状态,因为显然在第 \(i\) 个要求 ...

  8. java获取web项目下文件夹的路径方法

    方法一: String realPath=request.getSession().getServletContext() .getRealPath("upload"); 方法二: ...

  9. http 内容协商返回最适合的内容

    内容协商返回最命适的内容AcceptAccept-CharsetAccept-EncodingAccept-LanguageContent-Language内容协商技术有以下 3 种类型.服务器驱动协 ...

  10. iTerm2 半透明颜色主题与字体配置

    下载iTerm2https://www.iterm2.com/ 安装. 下载这个主题https://raw.githubusercontent.com/mbadolato/iTerm2-Color-S ...