上一篇:仙剑奇侠传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. Git学习笔记08-远程仓库

    因为想在家里和公司都能用到一套代码,所以选择上传到github,记录一下使用经验. 需要安装git,和注册github 以下操作是第一次将自己的代码上传到GitHub上 1)创建github项目 1. ...

  2. java之spring

    Spring Spring中的基本概念1.IOC/DI对象的属性由自己创建,为正向流程,而由Spring创建,为控制反转.DI(依赖注入)为实现IOC的一种方式,通过配置文件或注解包含的依赖关系创建与 ...

  3. 大数据之路week05--day02(Maven安装,环境变量的配置及基本使用)

    今天我们就来学习一下maven,怎么说呢,maven更像是一种管理的工具,实现的原理是使用插件. 举个例子,比如说,一个公司需要做一个项目,这个项目又分成了很多的模块,每个模块又分成了许多的业务等等, ...

  4. linux mint安装mysql-8.0.16

    1.使用通用二进制文件在Unix / Linux上安装MySQL 下载的文件:mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz 注意: 如果您以前使用操作系统本机程 ...

  5. hash 跟B+tree的区别

    1.hash只支持in跟=,不支持范围查询,时间复杂度:O(1) 2.B+tree支持范围查询,时间复杂度:O(log n) 3. B+tree 的优点:1.磁盘读取代价更低              ...

  6. Jquery实践--精读开篇

    JQuery实践,我已经看了最少三遍了.这里面的很多方法对我的工作很有帮助.但由于不是真的进行前端开发,所以JQuery中的很多功能也没有用到.所以隔一段时间想起,就会发觉,一些东西又忘记了.所以趁这 ...

  7. PyPI教程

    Wiki PyPI The Python Package Index, abbreviated as PyPI and also known as the Cheese Shop (a referen ...

  8. PHP mysqli_close() 函数

    关闭先前打开的数据库连接: <?php $con=mysqli_connect("localhost","my_user","my_passwo ...

  9. STS创建spring boot项目,pom.xml文件第一行报错

    亲测能用url地址:https://blog.csdn.net/jrx1995/article/details/100008552

  10. Java集合总结(一):列表和队列

    java中的具体容器类都不是从头构建的,他们都继承了一些抽象容器类.这些抽象容器类,提供了容器接口的部分实现,方便具体容器类在抽象类的基础上做具体实现.容器类和接口的关系架构图如下: 虚线框表示接口, ...