No Description

LouYihua bdda630d16 A MIDI implementation that should work in theory under Linux 7 years ago
3ds 2c677d7ee4 License update 7 years ago
3rd 5761efeb8e SDL submodule: android 7 years ago
SDL2 55d87b6290 README update for submodules 7 years ago
adplug 77bf04e2cc Minor change in licensing information & bug fix in makemessage.py 9 years ago
android c263fd2ebb Android MIDI play fix 7 years ago
dingux 12dea8595c Deal with input code & move osx->macos 7 years ago
emscripten 2c677d7ee4 License update 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 c217f24b46 iOS/macOS interface matching 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 c217f24b46 iOS/macOS interface matching 7 years ago
native_midi bcdb2ae6fc New MIDI framework: base & WIN32 & UWP 7 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 bdda630d16 A MIDI implementation that should work in theory under Linux 7 years ago
wii 12dea8595c Deal with input code & move osx->macos 7 years ago
win32 38eb5072dd Fix SDL rw op 7 years ago
winrt 38eb5072dd Fix SDL rw op 7 years ago
.appveyor.yml b5bc68c0b3 Appveyor update 7 years ago
.gitignore f8b1c6f8c1 iOS/macOS seperate native_midi wrapper for future usage 7 years ago
.gitmodules feecc5d909 Add SDL2 source as a submodule 7 years ago
.travis.yml 0e90da18c9 MinGW build optimization 7 years ago
AUTHORS.txt 77bf04e2cc Minor change in licensing information & bug fix in makemessage.py 9 years ago
README.md 55d87b6290 README update for submodules 7 years ago
ascii.h 2c677d7ee4 License update 7 years ago
audio.c c706728e89 Reduce conditional compilation of PAL_HAS_NATIVEMIDI 7 years ago
audio.h 2c677d7ee4 License update 7 years ago
battle.c 2c677d7ee4 License update 7 years ago
battle.h 2c677d7ee4 License update 7 years ago
codepage.h 2c677d7ee4 License update 7 years ago
common.h 2c677d7ee4 License update 7 years ago
ending.c 8062397152 Fix issue #21 7 years ago
ending.h 2c677d7ee4 License update 7 years ago
fight.c 2c677d7ee4 License update 7 years ago
fight.h 2c677d7ee4 License update 7 years ago
font.c 2c677d7ee4 License update 7 years ago
font.h 2c677d7ee4 License update 7 years ago
fontglyph.h 2c677d7ee4 License update 7 years ago
game.c 2c677d7ee4 License update 7 years ago
game.h 2c677d7ee4 License update 7 years ago
global.c 2c677d7ee4 License update 7 years ago
global.h 2c677d7ee4 License update 7 years ago
gpl.txt 8d4be3267d Initial check-in. 12 years ago
input.c bcdb2ae6fc New MIDI framework: base & WIN32 & UWP 7 years ago
input.h 2c677d7ee4 License update 7 years ago
itemmenu.c 2c677d7ee4 License update 7 years ago
itemmenu.h 2c677d7ee4 License update 7 years ago
magicmenu.c 2c677d7ee4 License update 7 years ago
magicmenu.h 2c677d7ee4 License update 7 years ago
main.c 8062397152 Fix issue #21 7 years ago
main.h 2c677d7ee4 License update 7 years ago
makemessage.py 9c43187b03 Added two missing newline marks in makemessage.py 8 years ago
map.c 2c677d7ee4 License update 7 years ago
map.h 2c677d7ee4 License update 7 years ago
midi.c 38eb5072dd Fix SDL rw op 7 years ago
midi.h bcdb2ae6fc New MIDI framework: base & WIN32 & UWP 7 years ago
mp3play.c 2c677d7ee4 License update 7 years ago
oggplay.c 2c677d7ee4 License update 7 years ago
overlay.c 2c677d7ee4 License update 7 years ago
palcfg.c 2c677d7ee4 License update 7 years ago
palcfg.h 2c677d7ee4 License update 7 years ago
palcommon.c 2c677d7ee4 License update 7 years ago
palcommon.h 2c677d7ee4 License update 7 years ago
palette.c 2c677d7ee4 License update 7 years ago
palette.h 2c677d7ee4 License update 7 years ago
play.c 2c677d7ee4 License update 7 years ago
play.h 2c677d7ee4 License update 7 years ago
players.h 2c677d7ee4 License update 7 years ago
private.c d6035000dc SDL 1.2.15 compatibility 10 years ago
res.c 2c677d7ee4 License update 7 years ago
res.h 2c677d7ee4 License update 7 years ago
resampler.c a9871d8d68 Move most platform-specific code into separate files. 7 years ago
resampler.h 2c3f1ef5d4 Fix rix play 9 years ago
rixplay.cpp 2c677d7ee4 License update 7 years ago
rngplay.c 2c677d7ee4 License update 7 years ago
rngplay.h 2c677d7ee4 License update 7 years ago
scene.c 2c677d7ee4 License update 7 years ago
scene.h 2c677d7ee4 License update 7 years ago
script.c 2c677d7ee4 License update 7 years ago
script.h 2c677d7ee4 License update 7 years ago
sdlpal.cfg.example 3d484b530d Resource version auto-detection & bug fixes & fullscreen enabled 8 years ago
sdlpal.ico 305aba1c83 Change ICON & fix dialog 9 years ago
sdlpal.xpm 8d4be3267d Initial check-in. 12 years ago
sound.c 2c677d7ee4 License update 7 years ago
text.c 2c677d7ee4 License update 7 years ago
text.h 2c677d7ee4 License update 7 years ago
ui.c 2c677d7ee4 License update 7 years ago
ui.h 2c677d7ee4 License update 7 years ago
uibattle.c 2c677d7ee4 License update 7 years ago
uibattle.h 2c677d7ee4 License update 7 years ago
uigame.c 2c677d7ee4 License update 7 years ago
uigame.h 2c677d7ee4 License update 7 years ago
util.c bcdb2ae6fc New MIDI framework: base & WIN32 & UWP 7 years ago
util.h 2c677d7ee4 License update 7 years ago
video.c 8062397152 Fix issue #21 7 years ago
video.h 8062397152 Fix issue #21 7 years ago
yj1.c 2c677d7ee4 License update 7 years ago

README.md

SDLPAL

Travis CI Build status

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.

Chat Room

Want to chat with other members of the SDLPal community?

We have a Gitter Room which you can join below.

Building the game

Currently, SDLPAL supports the following platforms:

  • Desktop platforms: Windows (both Windows Desktop and Universal Windows Platform), Linux and macOS
  • Mobile platforms: Android, iOS and Windows
  • Home consoles: 3DS, WII, PSP and others (some of them are not actively maintained now)

To build SDLPAL, there are three major steps you need to do:

  1. Clone the source code from Github into your local folder using git or through corresponding GUI: shell $ cd <parent-path-of-sdlpal> $ git clone https://github.com/sdlpal/sdlpal.git
  2. Update all the submodules used by SDLPAL using git submodule or through corresponding GUI: shell $ cd <parent-path-of-sdlpal>/sdlpal $ git submodule update --init --recursive
  3. Follow the platform-specific steps listed below.

Windows

Visual Studio

To build SDLPAL as a Windows desktop app, you can use Microsoft Visual Studio 2015 or Microsoft Visual Studio 2017 (the support of Visual Studio 2013 is deprecated now and will be removed in future) to open the solution file sdlpal.sln under the win32 directory.

To build SDLPAL as a Universal Windows Platform app, you can use Microsoft Visual Studio 2015 or Microsoft Visual Studio 2017 to open the solution file SDLPal.UWP.sln under the winrt directory.

There are also solution files for building traditional Windows (phone) store app under the winrt directory, but they are deprecated and will be removed in future.

MinGW

To build SDLPAL as a Windows desktop app, you can also use MinGW. Steps for building under MinGW varies depends on the compiling environment you have:

  • If you need to compile SDLPAL under Windows shell environment, please go to the root of the source code tree and type:

    $ cd win32
    $ make -f Makefile.mingw
    
  • If you need to compile SDLPAL under msys shell environment, please go to the root of the source code tree and type:

    $ cd win32
    $ make
    
  • If you need to cross-compile SDLPAL under Linux shell environment, please go to the root of the source code tree and type:

    $ cd win32
    $ make HOST=i686-w64-mingw32-  # This builds a 32-bit executable. To build a 64-bit executable, replace 'i686' by 'x86_64'.
    

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.

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

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.

SDLPAL also provides a revised battle system (deprecated and will be removed in future) which is more exciting yet somewhat harder than the original game. If you prefer this 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.