The Secret Chronicles of Dr. M.

A 2D side-scrolling platformer, forked from Secret Maryo Chronicles, with hand-drawn graphics, its own soundtrack, an overworld map and a full level editor with in-game scripting.
Port Details
Genres
platformer
Requirements
Porter
Downloads
119
Last Updated
2026-10-20
Rating
None
Miscellaneous
Ready to Run
Instructions
Ready to run out of the box, no additional files needed. The first launch extracts the game data, which takes a few minutes.
Additional Information
Notes
Thanks to the Secret Chronicles team for The Secret Chronicles of Dr. M., a colourful Secret Maryo Chronicles fork that grew its own art, music, overworld and a scriptable level editor.
Controls
| Button | Action |
|---|---|
| D-Pad | Move, navigate menus |
| Left Stick | Move mouse cursor |
| A | Shoot, confirm in menus |
| B | Jump |
| Y | Action (run, carry, use) |
| X | Use reserve item |
| R1 | Left click |
| L1 | Right click |
| Start | Confirm in menus |
| Select | Back, pause menu |
| Start + Select | Quit |
Compile
1. Dependencies
apt-get install -y build-essential cmake pkg-config bison ruby rake gettext \
libxml++2.6-dev libglew-dev libpng-dev libfreetype-dev libboost-filesystem-dev \
libboost-chrono-dev libboost-thread-dev libgl-dev libx11-dev libxrandr-dev \
libxcursor-dev libxi-dev libudev-dev libopenal-dev libvorbis-dev libflac-dev
2. SFML 3.0.2 (X11 backend)
patches/sfml-joystick-no-retry.patch stops SFML from retrying a joystick it could not open on every event poll. Westonpack refuses SFML access to the real controllers, and each refused open and close costs a kernel wait, which made the game choppy on ROCKNIX. patches/sfml-miniaudio-pulse-format.patch lets PulseAudio convert miniaudio's float output when the sink's own format (s24-32le on PipeWire) is one miniaudio cannot use, instead of failing with no sound. patches/sfml-glx-default-visual.patch uses the screen's default visual when the GLX layer reports no double-buffered visual (released Westonpack's Crusty 0.4), instead of creating the window with a null visual that X rejects.
wget -O sfml-3.0.2.tar.gz https://github.com/SFML/SFML/archive/refs/tags/3.0.2.tar.gz
tar xzf sfml-3.0.2.tar.gz
patch -d SFML-3.0.2 -p1 < patches/sfml-joystick-no-retry.patch
patch -d SFML-3.0.2 -p1 < patches/sfml-miniaudio-pulse-format.patch
patch -d SFML-3.0.2 -p1 < patches/sfml-glx-default-visual.patch
cmake -S SFML-3.0.2 -B SFML-3.0.2/build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$PWD/sfml3 -DBUILD_SHARED_LIBS=ON \
-DSFML_BUILD_EXAMPLES=OFF -DSFML_BUILD_DOC=OFF -DSFML_BUILD_NETWORK=OFF \
-DSFML_USE_DRM=OFF -DSFML_USE_SYSTEM_DEPS=ON
cmake --build SFML-3.0.2/build -j$(nproc)
cmake --install SFML-3.0.2/build
3. TSC
SFML_INCLUDE_DIRS is set by hand because TSC's FindSFML.cmake finds the include/SFML folder, which only works when SFML is on a default include path. patches/hypot_compat.c binds hypot to its older symbol version, so the binary needs glibc 2.34 instead of 2.35. patches/tsc-gui-and-memory.patch loads the editors' background previews and item palettes when they are first shown instead of at startup (several hundred MB of textures a 1 GB device cannot hold), and turns off depth testing for CEGUI so menus and text boxes are visible when the context has a depth buffer.
git clone --recurse-submodules https://github.com/Secretchronicles/TSC.git
git -C TSC apply ../patches/tsc-gui-and-memory.patch
mkdir tsc-build && cd tsc-build
gcc -O2 -c ../patches/hypot_compat.c -o hypot_compat.o
PKG_CONFIG_PATH=$PWD/../sfml3/lib/pkgconfig cmake ../TSC/tsc \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=$PWD/../sfml3 \
-DSFML_INCLUDE_DIRS=$PWD/../sfml3/include \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--wrap=hypot $PWD/hypot_compat.o" \
-DCMAKE_INSTALL_PREFIX=$PWD/stage
make -j$(nproc)
make install