上一篇:仙剑奇侠传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. RT-Thread--简介

    RT-Thread 概述 RT-Thread,全称是 Real Time-Thread,它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务,允许多个任务同时运行,但并不是真正的同时运行,而是宏 ...

  2. codeblocks glfw glew glm 配置

    Code in code::blocks Download Mini project in c,c++,c# ,OpenGL,GLUT,GLFW,windows form application so ...

  3. KubeEdge v0.2发布,全球首个K8S原生的边缘计算平台开放云端代码

    KubeEdge开源背景 KubeEdge在18年11月24日的上海KubeCon上宣布开源,技术圈曾掀起一阵讨论边缘计算的风潮,从此翻开了边缘计算和云计算联动的新篇章. KubeEdge即Kube+ ...

  4. 【转】Linux下常用压缩 解压命令和压缩比率对比

    https://www.cnblogs.com/joshua317/p/6170839.html 常用的格式有:tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU ...

  5. element 中表单验证的解析。

    https://blog.csdn.net/qq_24504591/article/details/88048894 https://segmentfault.com/a/11900000125513 ...

  6. [转载]es6 Promise.resolve()方法

    es6 Promise.resolve()方法 2018-01-27 22:29:06 ixygj197875 阅读数 16925更多 分类专栏: ES6标准入门 (阮一峰) ES6标准入门   Pr ...

  7. 牛客算法:DNA序列

    import java.util.*; public class Main{ public static void main(String[] args){ try(Scanner in = new ...

  8. MySQL中的连接、实例、会话、数据库、线程之间的关系

    MySQL中的实例.数据库关系简介 1.MySQL是单进程多线程(而Oracle等是多进程),也就是说MySQL实例在系 统上表现就是一个服务进程,即进程(通过多种方法可以创建多实例,再安装一个端口号 ...

  9. Python 实践--混入类

    Mix-in:混入类是一种Python程序设计中的技术,作用是在运行期间动态改变类的基类或类的方法,从而使得类的表现可以发生变化.可以用在一个通用类接口中. 在实践一个 解析XML文件的实践中,体会动 ...

  10. Rank HDU - 1704 【传递闭包水题】

    there are N ACMers in HDU team.ZJPCPC Sunny Cup 2007 is coming, and lcy want to select some excellen ...