Lou Yihua 22556f8ca6 [WIP] Merge turn-based and revised battle system | 7 years ago | |
---|---|---|
3ds | 7 years ago | |
3rd | 7 years ago | |
SDL2 | 7 years ago | |
adplug | 9 years ago | |
android | 7 years ago | |
dingux | 7 years ago | |
emscripten | 7 years ago | |
gph | 7 years ago | |
incomplete_ports | 7 years ago | |
ios | 7 years ago | |
libmad | 7 years ago | |
liboggvorbis | 7 years ago | |
macos | 7 years ago | |
native_midi | 11 years ago | |
psp | 7 years ago | |
tests | 7 years ago | |
unix | 7 years ago | |
wii | 7 years ago | |
win32 | 7 years ago | |
winrt | 7 years ago | |
.gitignore | 7 years ago | |
.gitmodules | 7 years ago | |
.travis.yml | 7 years ago | |
AUTHORS.txt | 9 years ago | |
README.md | 7 years ago | |
README.txt | 7 years ago | |
ascii.h | 9 years ago | |
audio.c | 7 years ago | |
audio.h | 7 years ago | |
battle.c | 7 years ago | |
battle.h | 7 years ago | |
codepage.h | 9 years ago | |
common.h | 7 years ago | |
ending.c | 8 years ago | |
ending.h | 9 years ago | |
fight.c | 7 years ago | |
fight.h | 7 years ago | |
font.c | 7 years ago | |
font.h | 8 years ago | |
fontglyph.h | 9 years ago | |
game.c | 8 years ago | |
game.h | 11 years ago | |
global.c | 7 years ago | |
global.h | 7 years ago | |
gpl.txt | 12 years ago | |
input.c | 7 years ago | |
input.h | 7 years ago | |
itemmenu.c | 8 years ago | |
itemmenu.h | 11 years ago | |
magicmenu.c | 7 years ago | |
magicmenu.h | 10 years ago | |
main.c | 7 years ago | |
main.h | 8 years ago | |
makemessage.py | 8 years ago | |
map.c | 9 years ago | |
map.h | 11 years ago | |
midi.c | 8 years ago | |
midi.h | 8 years ago | |
mp3play.c | 8 years ago | |
oggplay.c | 8 years ago | |
overlay.c | 7 years ago | |
palcfg.c | 7 years ago | |
palcfg.h | 7 years ago | |
palcommon.c | 7 years ago | |
palcommon.h | 7 years ago | |
palette.c | 9 years ago | |
palette.h | 11 years ago | |
play.c | 8 years ago | |
play.h | 11 years ago | |
players.h | 8 years ago | |
private.c | 10 years ago | |
res.c | 10 years ago | |
res.h | 10 years ago | |
resampler.c | 7 years ago | |
resampler.h | 9 years ago | |
rixplay.cpp | 8 years ago | |
rngplay.c | 9 years ago | |
rngplay.h | 11 years ago | |
scene.c | 10 years ago | |
scene.h | 10 years ago | |
script.c | 7 years ago | |
script.h | 9 years ago | |
sdlpal.cfg.example | 8 years ago | |
sdlpal.ico | 9 years ago | |
sdlpal.xpm | 12 years ago | |
sound.c | 7 years ago | |
text.c | 7 years ago | |
text.h | 7 years ago | |
ui.c | 7 years ago | |
ui.h | 7 years ago | |
uibattle.c | 7 years ago | |
uibattle.h | 9 years ago | |
uigame.c | 7 years ago | |
uigame.h | 8 years ago | |
util.c | 7 years ago | |
util.h | 7 years ago | |
video.c | 7 years ago | |
video.h | 9 years ago | |
yj1.c | 9 years ago |
SDLPAL is an SDL-based open-source cross-platform reimplementation of the classic Chinese RPG game Xiān jiàn Qí Xiá Zhuàn (Chinese: 仙剑奇侠传/仙劍奇俠傳) (also known as Chinese Paladin or Legend of Sword and Fairy, or PAL for short).
SDLPAL is originally created by Wei Mingzhi from 2009.
Copyright (c) 2009-2011 Wei Mingzhi <whistler_wmz@users.sf.net>.
Copyright (c) 2011-2017 SDLPAL development team.
All rights reserved.
SDLPAL is distributed under the terms of GNU General Public License, version 3 (or any later version) as published by the Free Software Foundation. See gpl.txt for details.
Many of the ideas of this program are based on documents from PAL Research Project. Portions of the code are based on the work done by Baldur and louyihua, and the resampler code is based on the code in Kode54's foo_input_adplug project.
This program made extensive use of the following libraries:
Please see authors.txt for additional authors.
This program does NOT include any code or data files of the original game, which are proprietary and copyrighted by SoftStar Inc.
The steps for building SDLPAL varies in different platforms. Currently, SDLPAL supports most desktop platforms including Windows (including Windows Store), Linux and macOS, as well as most popular mobile platforms including Android, iOS and Windows Phone. It is also ported to several home console platforms.
To build SDLPAL as a Windows desktop app, you can use Microsoft Visual Studio (2013 or higher). Please open the project file sdlpal.sln
under the win32
directory.
To build SDLPAL as a Windows store app (or Windows Phone app), open the appropriate project files SDLPal.UWP.sln
(for Windows 10), SDLPal.Windows.sln
(for Windows 8.1), SDLPal.WindowsPhone.sln
(for Windows Phone 8.1) under the winrt
directory. Please note that Visual Studio 2015 or higher version is required to compile the UWP version.
For all situations, you need to have SDL 2.0 development or source files installed at the SDL2
directory under the source tree. You may need to modify the project files if you use the SDL development package.
To build SDLPAL as a Windows desktop app, you can also use MinGW. Steps for building under MinGW is similar as those for Linux, by replacing the directory name from unix
to win32
.
To build the game, please go to the root of the source code tree and type:
$ cd unix
$ make
You also need to have SDL 2.0 development files installed in the system. The compiled executable should be generated with the filename sdlpal
at the current directory. By default, SDLPAL uses the FLTK library to provide setting GUI at launch. If you do not want to use the library, please define he macro PAL_NO_LAUNCH_UI
in the Makefile
. SDLPAL should also be able to compile and run under other Unix-like systems, however it's not tested.
To compile, open Pal.xcodeproj
with Xcode
, and click Build. You need to have SDL framework installed at /Library/Frameworks
.
To compile, open the project ios/SDLPal/SDLPal.xcodeproj
with Xcode
, and click Build. You need to have SDL2 source files (not development files) extracted in the SDL2
folder.
To build the game, please go to the root of the source code tree and type:
cd android/jni
ndk-build
cd ..
ant debug
You need to have SDL2 source files (not development files) extracted in the SDL2
folder.
To build the game, please go to the root of the source code tree and type:
cd 3ds
make
make cia
You need to have DevkitPro ARM and SDL 1.2 for 3DS portlib installed. The compiled executable should be generated with the filename sdlpal
at the current directory.
To be written.
By default, SDLPAL builds a "classic" turn-based battle system which is designed to be 100% the same as the original game.
However, SDLPAL also provides a revised battle system which is more exciting yet somewhat harder than the original game. If you prefer this new battle system, please define the macro ENABLE_REVISIED_BATTLE
in Makefile
or in common.h
and recompile the project.
The data files required for running the game are not included with the source package due to copyright issues, so you need to obtain them from a licensed game copy before you can run the game.
To run the game, copy all the files in the original game CD to a directory, then copy the built SDLPAL executable to the same directory, and run the executable.
Note that the filenames of data files should be all in lower-case under systems that use case-sensitive filesystems such as Linux or other Unix-like operating systems.
PAL has several variants using different and incompatible resource files, and SDLPAL supports several configuration options for supporting such variants.
To set these configuration options, create a file named as sdlpal.cfg
(make sure to use lower-case file name in case-sensitive filesystems) in the game directory created by the above step. If no configuration file exists, SDLPAL uses default values that supports the resources from original DOS version.
Please refer to the file sdlpal.cfg.example for configuration file format.
If you find any issues of SDLPAL, please feel free to report them to the development team through Github's issue tracking system using either English or Chinese.
Any original code & documentation contributions are welcomed as long as the contributed code & documentation is licensed under GPL. You can use Github's pull request system to submit your changes to the main repository here. But remember, as a step to keep the quality of code, you should write corresponding unit tests before your changes can be merged. The guidance of writting unit tests can be found here.