MCPcopy Index your code
hub / github.com/Interrupt/systemshock

github.com/Interrupt/systemshock @v0.8.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.8.2 ↗ · + Follow
5,085 symbols 13,771 edges 923 files 1,150 documented · 23%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Shockolate - System Shock, but cross platform!

Based on the source code for PowerPC released by Night Dive Studios, Incorporated.

Build Status TravisCI Build Status AppVeyor

GENERAL NOTES

Shockolate is a cross platform source port of System Shock, using SDL2. This runs well on OSX, Linux, and Windows right now, with some missing features that need reviving due to not being included in the source code that was released.

The end goal for this project is something like what Chocolate Doom is for Doom: an experience that closely mimics the original, but portable and with some quality of life improvements including an OpenGL renderer and mod support!

Join our Discord to follow along with development: https://discord.gg/m45xPan

work so far

Prerequisites

  • Original cd-rom or SS:EE assets in a res/data folder next to the executable
    • Floppy disk assets are an older version that we can't load currently

Running

From a prebuilt package

Find a list of downloadable packages for Linux, Mac and Windows. 32 and 64 bit versions are available for Linux and Windows.

From source code

Prerequisites: - CMake installed

Step 1. Build the dependencies: * Windows: build_win32.sh or build_win64.sh (Git Bash and MinGW recommended) * Linux/Mac: build_deps.sh or the CI build scripts in osx-linux * Other: build_deps.sh

Step 2. Build and run the game itself

cmake .
make systemshock
./systemshock

The following CMake options are supported in the build process: * ENABLE_SDL2 - use system or bundled SDL2 (ON/BUNDLED, default BUNDLED) * ENABLE_SOUND - enable sound support (requires SDL2_mixer, ON/BUNDLED/OFF, default is BUNDLED) * ENABLE_FLUIDSYNTH - enable FluidSynth MIDI support (ON/BUNDLED/OFF, default is BUNDLED) * ENABLE_OPENGL - enable OpenGL support (ON/OFF, default ON)

If you find yourself needing to modify the build script for Shockolate itself, CMakeLists.txt is the place to look into.

Command line parameters

-nosplash Disables the splash screens, causes the game to start straight to the main menu

Modding Support

Shockolate supports loading mods and full on fan missions. Just point the executable at a mod file or folder and the game will load it in. So far mod loading supports additional .res and .dat files for resources and missions respectively.

Run a fan mission from a folder:

./systemshock /Path/To/My/Mission

Run a fan mission from specific files:

./systemshock my-archive.dat my-strings.res

Control modifications

Movement

Shockolate replaces the original game's movement with WASD controls, and uses F as the mouselook toggle hotkey. This differs from the Enhanced Edition's usage of E as the mouselook hotkey, but allows us to keep Q and E available for leaning.

Additional hotkeys

  • Ctrl+G cycles between graphics rendering modes
  • Ctrl+F to enable full screen mode
  • Ctrl+D to disable full screen mode

Missing hotkeys

  • F1..F10 for the side MFD's
  • 0..9 for the Hacker's hardware

Core symbols most depended-on inside this repo

fix_mul
called by 627
src/Libraries/FIX/Source/fix.c
fix_div
called by 529
src/Libraries/FIX/Source/fix.c
abs
called by 260
src/Libraries/adlmidi/fraction.hpp
fix_to
called by 201
src/Libraries/FIXPP/Source/fixpp.h
mfd_notify_func
called by 131
src/GameSrc/newmfd.c
fix64_mul
called by 130
src/Libraries/FIX/Source/fix.c
fix_mul_asm_safe
called by 115
src/Libraries/FIX/Source/fix.c
qdata_get
called by 97
src/GameSrc/trigger.c

Shape

Function 4,383
Class 360
Method 309
Enum 33

Languages

C79%
C++21%

Modules by API surface

src/GameSrc/mfdgames.c95 symbols
src/GameSrc/wrapper.c92 symbols
src/Libraries/adlmidi/adlmidi.cpp85 symbols
src/GameSrc/invent.c83 symbols
src/GameSrc/hkeyfunc.c77 symbols
src/GameSrc/mfdfunc.c74 symbols
src/MusicSrc/MusicDevice.c69 symbols
src/GameSrc/frterr.c64 symbols
src/GameSrc/input.c61 symbols
src/Libraries/adlmidi/adlmidi_midiplay.cpp60 symbols
src/Libraries/adlmidi/adlmidi_private.hpp58 symbols
src/Libraries/adlmidi/chips/dosbox/dbopl.cpp57 symbols

For agents

$ claude mcp add systemshock \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact