No Description

Lou Yihua 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
3ds e981e3d77a Further move of platform-specific code 7 years ago
3rd cf81b91075 Simpilify unit test framework for win32/linux 7 years ago
SDL2 6e9a88be0b Add README.md 7 years ago
adplug 77bf04e2cc Minor change in licensing information & bug fix in makemessage.py 8 years ago
android e386b838ac fix libmad att asm syntax error for x86/amd64 7 years ago
dingux 12dea8595c Deal with input code & move osx->macos 7 years ago
emscripten a9871d8d68 Move most platform-specific code into separate files. 7 years ago
gph 12dea8595c Deal with input code & move osx->macos 7 years ago
incomplete_ports e981e3d77a Further move of platform-specific code 7 years ago
ios b1bedc54a7 iOS/OSX project miragation 7 years ago
libmad e386b838ac fix libmad att asm syntax error for x86/amd64 7 years ago
liboggvorbis a0681238ce HTML5 support via emscripten( no audio/sfx now) 7 years ago
macos fe348e6a04 specify osx does not have config page yet 7 years ago
native_midi a7235db0d7 Added VS.net 2008 Project 11 years ago
psp a9871d8d68 Move most platform-specific code into separate files. 7 years ago
tests 467f44b529 Added the README file 7 years ago
unix 2ffebe310b Merge pull request #6 from sdlpal/unittest 7 years ago
wii 12dea8595c Deal with input code & move osx->macos 7 years ago
win32 973ff7a433 codepage hack for XP language detect 7 years ago
winrt 12dea8595c Deal with input code & move osx->macos 7 years ago
.gitignore 2ffebe310b Merge pull request #6 from sdlpal/unittest 7 years ago
.gitmodules e9991b6aa1 unittest: unix make check && osx xctest done 7 years ago
.travis.yml a4a5c7222e Remove win32/Tests, strip Makefile outputs 7 years ago
AUTHORS.txt 77bf04e2cc Minor change in licensing information & bug fix in makemessage.py 8 years ago
README.md 3dd2b6d1d2 Update README.md 7 years ago
README.txt 256cc0f854 Copyright & README update 7 years ago
ascii.h 614e33d3c2 Bug fix: dead lock on exit, overlay on non-touch devices 8 years ago
audio.c a0681238ce HTML5 support via emscripten( no audio/sfx now) 7 years ago
audio.h a9871d8d68 Move most platform-specific code into separate files. 7 years ago
battle.c 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
battle.h 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
codepage.h 77bf04e2cc Minor change in licensing information & bug fix in makemessage.py 8 years ago
common.h e981e3d77a Further move of platform-specific code 7 years ago
ending.c 1d74726652 Audio system refactor 8 years ago
ending.h fd9a91e7c6 Unified version 8 years ago
fight.c 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
fight.h 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
font.c 8e8cdecdd4 OSX compilation fix & travis-ci fix 7 years ago
font.h db959a75bb added bdf font support 7 years ago
fontglyph.h 77bf04e2cc Minor change in licensing information & bug fix in makemessage.py 8 years ago
game.c 1d74726652 Audio system refactor 8 years ago
game.h d70187aec1 Emacs 11 years ago
global.c 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
global.h 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
gpl.txt 8d4be3267d Initial check-in. 11 years ago
input.c 12dea8595c Deal with input code & move osx->macos 7 years ago
input.h 12dea8595c Deal with input code & move osx->macos 7 years ago
itemmenu.c cc1edf8f0d [WIP] Various change for refactor 8 years ago
itemmenu.h d70187aec1 Emacs 11 years ago
magicmenu.c 889f9d766f fix several render problem introduced by UI shadow; make script FFFF behaviour more like original version in dialogs; hidden exp upgrade dialog tweak 7 years ago
magicmenu.h d6035000dc SDL 1.2.15 compatibility 9 years ago
main.c 122f3b5c67 make test version able to run in any dir 7 years ago
main.h f3ae0012c5 New sound play model: Moving major processing steps (resample & convert) from main thread to audio thread 8 years ago
makemessage.py 9c43187b03 Added two missing newline marks in makemessage.py 7 years ago
map.c e5ac3699f1 Change SWAPxx into SDL's built-in SDL_SwapLExx. 8 years ago
map.h d70187aec1 Emacs 11 years ago
midi.c 1d74726652 Audio system refactor 8 years ago
midi.h 124361ef8a Eliminate MIDI calls when PAL_HAS_NATIVEMIDI is not defined 8 years ago
mp3play.c c0f0d0230a Use SDL's LockAudio() & UnlockAudio() instead of customized mutex 8 years ago
oggplay.c c0f0d0230a Use SDL's LockAudio() & UnlockAudio() instead of customized mutex 8 years ago
overlay.c a0681238ce HTML5 support via emscripten( no audio/sfx now) 7 years ago
palcfg.c 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
palcfg.h 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
palcommon.c 9f9b818ec5 add back dialog shadow effect from original version 7 years ago
palcommon.h 9f9b818ec5 add back dialog shadow effect from original version 7 years ago
palette.c 5fa74edd95 SDL_GetTicks() ralted fix, avoiding possible bugs on extreme cases when SDL_GetTicks() wrapped, and remove some redundant codes on SDL 2.0 drawing. 8 years ago
palette.h d70187aec1 Emacs 11 years ago
play.c 3d484b530d Resource version auto-detection & bug fixes & fullscreen enabled 8 years ago
play.h d70187aec1 Emacs 11 years ago
players.h c0f0d0230a Use SDL's LockAudio() & UnlockAudio() instead of customized mutex 8 years ago
private.c d6035000dc SDL 1.2.15 compatibility 9 years ago
res.c d6035000dc SDL 1.2.15 compatibility 9 years ago
res.h d6035000dc SDL 1.2.15 compatibility 9 years ago
resampler.c a9871d8d68 Move most platform-specific code into separate files. 7 years ago
resampler.h 2c3f1ef5d4 Fix rix play 8 years ago
rixplay.cpp c0f0d0230a Use SDL's LockAudio() & UnlockAudio() instead of customized mutex 8 years ago
rngplay.c 5fa74edd95 SDL_GetTicks() ralted fix, avoiding possible bugs on extreme cases when SDL_GetTicks() wrapped, and remove some redundant codes on SDL 2.0 drawing. 8 years ago
rngplay.h d70187aec1 Emacs 11 years ago
scene.c d6035000dc SDL 1.2.15 compatibility 9 years ago
scene.h d6035000dc SDL 1.2.15 compatibility 9 years ago
script.c 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
script.h fd9a91e7c6 Unified version 8 years ago
sdlpal.cfg.example 3d484b530d Resource version auto-detection & bug fixes & fullscreen enabled 8 years ago
sdlpal.ico 305aba1c83 Change ICON & fix dialog 8 years ago
sdlpal.xpm 8d4be3267d Initial check-in. 11 years ago
sound.c a9871d8d68 Move most platform-specific code into separate files. 7 years ago
text.c 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
text.h 2ae14ef18f Added the PAL_swprintf function to avoid incorrect Chinese character output in OSX/iOS/Android. 7 years ago
ui.c 2ae14ef18f Added the PAL_swprintf function to avoid incorrect Chinese character output in OSX/iOS/Android. 7 years ago
ui.h c14510fee0 status UI: applied 8x8/shadow for most labels used here 7 years ago
uibattle.c 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
uibattle.h 112754ca15 Remove PAL_UNICODE definition 8 years ago
uigame.c 22556f8ca6 [WIP] Merge turn-based and revised battle system 7 years ago
uigame.h 3d484b530d Resource version auto-detection & bug fixes & fullscreen enabled 8 years ago
util.c fd53774a0a save path customable in config file like game path( behaviour same as before if unspecified ); now savefile-only sync is possible 7 years ago
util.h 12dea8595c Deal with input code & move osx->macos 7 years ago
video.c e981e3d77a Further move of platform-specific code 7 years ago
video.h 9963fee8d1 New options on window size & aspect ratio control. 8 years ago
yj1.c 77bf04e2cc Minor change in licensing information & bug fix in makemessage.py 8 years ago

README.md

SDLPAL

Travis CI

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).

LICENSE

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.

Building the game

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.

Windows

Visual Studio

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.

MinGW

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.

Linux or Unix

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.

macOS (OS X)

To compile, open Pal.xcodeproj with Xcode, and click Build. You need to have SDL framework installed at /Library/Frameworks.

iOS

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.

Android

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.

Nintendo 3DS

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.

Other platforms

To be written.

Choosing the battle system

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.

Running the game

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.

Configuring the game

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.

Reporting issues

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.

Contributing to the game

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.