Go to file
2024-01-30 01:16:04 +01:00
cmake cmake: Do not mkdir cdroot for non-PS1 builds 2024-01-27 17:38:10 +01:00
doc wip2 2022-12-08 17:00:23 +01:00
libfixmath@33a383b98e Import libfixmath 2024-01-26 21:56:02 +01:00
res Big rushed update 2024-01-28 15:17:49 +01:00
src player: Add missing header 2024-01-30 01:16:04 +01:00
tools CMakeLists.txt: build host tools as ExternalProject 2022-06-08 00:21:18 +02:00
.gitignore .gitignore: Remove .vscode/ 2024-01-27 17:38:11 +01:00
.gitmodules Import libfixmath 2024-01-26 21:56:02 +01:00
CMakeLists.txt cmake: Do not mkdir cdroot for non-PS1 builds 2024-01-27 17:38:10 +01:00
jancity.png Big rushed update 2024-01-28 15:17:49 +01:00
LICENSE Set source code license 2022-03-30 08:20:20 +02:00
README.md Big rushed update 2024-01-28 15:17:49 +01:00



jancity is a cross-platform, tile-based sandbox video game.


Mostly written during the Global Game Jam 2024 event, reusing its engine from rts.


The following platforms are either supported or support is expected in the future:

  • Sony® PlayStation® 1, using a forked version of PSXSDK.
  • Microsoft® Win9x, using a i386-mingw32 cross-toolchain and SDL-1.2. A i386-mingw32 cross-toolchain must be already available on the system.
  • POSIX-compliant operating systems such as GNU/Linux® or *BSD, using SDL-1.2 (if available).
  • Possibly, modern Microsoft® Windows® versions, too (currently untested).

Design goals

  • Keep source code as simple and clean as possible.
  • Keep platform-specific code separated so common code can be shared between platforms without modifications.
  • Use C99 features for better portability.
  • Use modern CMake features for a simplified build process and availability of the compile_commands.json database.
  • Implement any multiplayer capabilities provided by the platform.
  • Support a wide range of screen resolutions, even portrait resolutions typically used by mobile platforms.
  • And, above all, provide a fun game that can run even on low-end hardware.

Building from source

Native build

A native version of jancity can be built using the typical CMake build process:

cmake -B build
cmake --build build


apt install libsdl-gfx1.2-dev libsdl-mixer1.2-dev libsdl1.2-dev libenet-dev


CMAKE_TOOLCHAIN_FILE can be used to set up the cross-toolchain. Files labeled as cmake/*-toolchain.cmake can be used as values.

Sony® PlayStation® 1

For example, the Sony® PlayStation® 1 version can be built using:

cmake -B build \
    -DCMAKE_TOOLCHAIN_FILE=cmake/ps1-toolchain.cmake \
    -DVIDEO_MODE=VMODE_PAL # VMODE_NTSC can be otherwise used
cmake --build build

This will generate a .bin/.cue file pair in build that can be played on an emulator or burnt into a CD-r in order to play the game on real hardware.

A custom version of PSXSDK is required. Once built, the installation prefix must be stored into an environment variable called PSXSDK_PATH.

Microsoft® Win9x

SDLDIR=<sdl-prefix> \
    SDLMIXERDIR=<sdl_mixer-prefix> \
    SDLGFXDIR=<sdl_gfx-prefix> \
    ENETDIR=<enet-prefix> \
    cmake -B build -DCMAKE_TOOLCHAIN_FILE=cmake/win9x-toolchain.cmake
cmake --build build


  • SDLDIR is the path to the cross-compiled version for SDL-1.2, which would correspond to ./configure --prefix=$SDLDIR used when building SDL-1.2.
  • SDLMIXERDIR is the path to the cross-compiled version for SDL_mixer, which would correspond to ./configure --prefix=$SDLMIXERDIR used in building SDL_mixer.
  • SDLGFXDIR is the path to the cross-compiled version for SDL_gfx, which would correspond to ./configure --prefix=$SDLGFXDIR used in building SDL_gfx.
  • ENETDIR is the path to the cross-compiled version for enet, which would correspond to ./configure --prefix=$ENETDIR used in building enet.

A stripped version of the executable, as well as game assets, will be located in build/cdimg.


A cross-compiled i386-mingw32 version of all required dependencies is needed before building jancity.

Note upstream CMake does not provide FindSDL_gfx.cmake as of the time of this writing, so it is provisionally provided on this repository.

Ongoing upstream PR

Read the documentation for further reference on how to build the dependencies from source.


Unless stated otherwise, jancity follows the license described by the LICENSE file, which currently is the GNU General Public License v3 or later. Original versions of other works under various licenses are also distributed in this project, that are located inside the res/orig directory. This directory also contains a LICENSE describing the source and license of each individual file.

Derivative works have been also created from these files for this project, that are located inside the res directory. A LICENSE file is also provided to describe the relationship between the original and derived works.

Microsoft®, Linux®, Sony® and PlayStation® are registered trademarks of their respective owners.