work-in-progress port of Cave Story to the PlayStation, based on CSE2

Overview

DoukutsuPSX

Screenshot

This is a port of Cave Story for the Sony PlayStation. It is based on CSE2, which is a decompilation of the original freeware Cave Story executables. The port is still very much a work-in-progress, but it should be possible to at least complete the game.

How to run

First, either build the game yourself (see instructions below) or download the latest release from the Releases page. This will yield an ISO image.

To play the game on a modded PlayStation, burn the ISO image to a CD-R with something like ImgBurn (tested on my modchipped SCPH-9002). It should also work fine on most emulators (tested on PCSX-Redux, no$psx and DuckStation). Please do not use outdated emulators like ePSXe or PCSX Reloaded, I won't fix issues that only appear in those.

You will need a memory card with at least 1 free block to properly save the game. You can continue the game from Save Points when you die even if you don't have a memory card, though. Multitap is currently not supported.

Default controls

  • DPAD: movement;
  • CROSS: jump/accept;
  • SQUARE: fire;
  • TRIANGLE: previous weapon;
  • CIRCLE: next weapon/cancel;
  • START: pause menu;
  • L2: item menu;
  • R2: map screen.

Controls can be rebound in the Options menu.

How to build

  1. Obtain GNU Make and GCC for targets mipsel-none-elf or mipsel-linux-gnu:
  2. Obtain mkpsxiso and ensure it is in PATH.
  3. Clone this repository: git clone --recursive https://github.com/fgsfdsfgs/doukutsupsx && cd doukutsupsx
  4. Obtain converted PsyQ 4.7 libraries and extract them into nugget/psyq/.
  5. (Optional) If you have the PsyQ license files (LICENSEA.DAT, LICENSEE.DAT, LICENSEJ.DAT), put them into this folder and uncomment one of the lines in iso.xml to inject it into the resulting ISO. This will give it a proper boot logo and might be required by some BIOS versions (?).
  6. Run make iso. This should produce an ISO file called doukutsu.iso.

Credits

  • Daisuke "Pixel" Amaya for the original Cave Story and Aeon Genesis for the English translation;
  • CuckyDev, Clownacy, Gabriel Ravier and probably others for CSE2;
  • PCSX-Redux authors for Nugget and PCSX-Redux itself;
  • Schnappy for nolibgs_hello_worlds and the toolchain setup instructions;
  • Lameguy64 for PSn00bSDK, which was used for the earlier versions of this port, and for mkpsxiso;
  • Adrian "asie" Siekierka and Ben "GreaseMonkey" Russell for libpsxav;
  • Sean Barrett for stb_image;
  • David Reid for dr_wav;
  • axetion, CuckyDev, impiaaa, Infu, Nicolas Noble, peach, Schnappy, sickle, Stenzek and other nice people from the PSXDEV Discord server for help and testing;
  • probably more people I'm forgetting.
You might also like...
TeeWare is a Teeworlds mod based on DDNet, inspired by the other mods TF2Ware and SRB2Ware
TeeWare is a Teeworlds mod based on DDNet, inspired by the other mods TF2Ware and SRB2Ware

TeeWare is a Teeworlds mod based on DDNet, inspired by the other mods TF2Ware and SRB2Ware, which are also inspired by the WarioWare game series by Nintendo.

Custom Deflemask .vgm based playback engine for the Nintendo Game Boy

-DeflemaskGBVGM- Custom Deflemask .vgm based playback engine for the Nintendo Game Boy. Now the official Deflemask ROM exporter as of v1.0.3. this eng

Orbiter is a spaceflight simulator based on Newtonian mechanics.
Orbiter is a spaceflight simulator based on Newtonian mechanics.

Orbiter Space Flight Simulator Orbiter is a spaceflight simulator based on Newtonian mechanics. Its playground is our solar system with many of its ma

A simple localization framework that can re-localize in built maps based on FAST-LIO.
A simple localization framework that can re-localize in built maps based on FAST-LIO.

Realtime 3D global localization in a pre-built point cloud map. By fusing low-frequency global localization (about 0.5~0.2Hz), and high-frequency odometry from FAST-LIO, the entire system is computationally efficient.

A Tiny 2D OpenGL based C++ Game Engine that is fast, lightweight and comes with a level editor.
A Tiny 2D OpenGL based C++ Game Engine that is fast, lightweight and comes with a level editor.

A Tiny 2D OpenGL based C++ Game Engine that is fast, lightweight and comes with a level editor.

 A blank for a SDL2-based platformer game
A blank for a SDL2-based platformer game

A blank for a SDL2-based platformer game Attention, this repository does not contain (and never will) a playable game. The goal is to show basic princ

A chess engine based on cfish.

Fat Titz This is a FREE UCI-compatibile chess engine. It is a fork of cfish. Thanks to Norman Schidt and Albert Sliver for inspiration on creating my

TrenchBroom is a modern cross-platform level editor for Quake-engine based games.
TrenchBroom is a modern cross-platform level editor for Quake-engine based games.

TrenchBroom is a modern cross-platform level editor for Quake-engine based games.

SameBoy DX is a Qt-based interface of SameBoy, a free, highly accurate Game Boy and Game Boy Color emulator.

SameBoy DX SameBoy DX is a Qt-based interface of SameBoy, a free, highly accurate Game Boy and Game Boy Color emulator. Build requirements: CMake Pyth

Comments
  • When dying in the first area without saving, it should send you to the start area instead of first cutscene

    When dying in the first area without saving, it should send you to the start area instead of first cutscene

    Normally, when you due in the first area without saving first, the game redirects you to the start area. However, in here, you have to re-watch the first cutscene, then get to the start area.

    opened by ualaa1 1
  • Music replayer - out of tune

    Music replayer - out of tune

    First of all thank you for the port of this game to the PSX - we've been having fun with it at PSX FPGA core testing :)

    The bass tones and higher tones seem to be looping out of sync with each other which created a dissonant sound.

    The sound issue seems to occur on 50 and 60hz - the image seems to try to set itself to the Japanese region (gameid indicates Japanese Region) so 60hz - that's where most of the testing happened.

    https://youtu.be/DNo1sYgFTo4 << example

    opened by Vampier 3
  • ntsc speed issue

    ntsc speed issue

    Hello I've tried Your port today on a fat pal ps2. One issue I'm having there is slight choppiness with screen scrolling , it's also apparent to most homebrew cave story ports . BUT! By accident i booted the game with force pal mode and boom, smooth as silk , is there anything that can be made to achieve similar result with ntsc 60hz ?

    Also, quite Magnificent work Sir, as always - Mario64 on ps2 is dope too (one can dream of 240p resolution ...)

    opened by mastercheff 4
Releases(v0.7)
  • v0.7(Oct 13, 2022)

    Changelog

    • org wave samples do not alias anymore, but some instruments might still be out of tune (#4 at least partially fixed);
    • health bar should not extend into infinity when you're at 1/50 HP (#7 fixed);
    • rebuilt with new nugget and GCC 12.2.

    Tested and should work correctly on DuckStation, NO$PSX, pcsx-redux and real hardware (previous versions tested on a SCPH-9002).

    This release is backwards compatible with Test 5/6 saves.

    Use the ISO of your preferred region to play. ELF and EXE files attached for debugging purposes. They are identical between the two ISOs.

    Source code(tar.gz)
    Source code(zip)
    doukutsu.elf(2.19 MB)
    doukutsu.ps-exe(676.00 KB)
    doukutsu_r7_eu.iso(31.05 MB)
    doukutsu_r7_us.iso(31.05 MB)
  • v0.6(May 23, 2022)

    Changelog

    • skip flags now don't reset if you retry without a save file (fixes #6);
    • you can now use the map from the inventory screen without screwing up the scripting (#5).

    Tested and should work correctly on DuckStation, NO$PSX, pcsx-redux and real hardware (tested on a SCPH-9002).

    This release is backwards compatible with Test 5 saves.

    Use the ISO to play. ELF and EXE files attached for debugging purposes.

    Source code(tar.gz)
    Source code(zip)
    doukutsu.elf(2.20 MB)
    doukutsu.exe(674.00 KB)
    doukutsu_test6.iso(31.05 MB)
  • v0.5(Sep 1, 2021)

    Changelog

    • restored inventory system from the original game (order of items and weapons should be the same as on PC now);
    • added pause menu;
    • added CPU exception handler;
    • fixed camera not focusing on bosses correctly;
    • fixed experience always using the small sprite;
    • fixed big falling spikes in Egg Corridor? not damaging enemies;
    • fixed the Mimiga Mask not drawing;
    • hopefully fixed the remaining cases of wide sprites drawing incorrectly;
    • fixed a couple other visual issues.

    Tested and should work correctly on DuckStation, NO$PSX, pcsx-redux and real hardware (tested on a SCPH-9002).

    This release is not backwards compatible with Test 4.2/4.1/4/3.2/3.1/3 saves. They will show up as CORRUPTED FILE on the Load Game screen.

    Use the ISO to play. ELF and EXE files attached for debugging purposes.

    ISO and binary updated 16 Nov 2021 to include audio volume fix.

    Source code(tar.gz)
    Source code(zip)
    doukutsu.elf(2.18 MB)
    doukutsu.exe(674.00 KB)
    doukutsu_test5_2.iso(31.05 MB)
  • v0.4.2(Aug 28, 2021)

    Another hotfix release.

    Changelog

    • fixed Ma Pignon's invulnerability;
    • fixed infinite super missiles;
    • fixed weapon order for now;
    • fixed water currents not showing up;
    • fixed black background not being black enough;
    • fixed a couple other visual issues.

    Tested and should work correctly on DuckStation, NO$PSX, pcsx-redux and real hardware (SCPH-9002). This release should be backwards compatible with Test 4.1/4/3.2/3.1/3 saves. Next major update will probably revert inventory system back to the original and thus break the saves.

    Use the ISO to play. ELF and EXE files attached for debugging purposes.

    Source code(tar.gz)
    Source code(zip)
    doukutsu.elf(2.16 MB)
    doukutsu.exe(658.00 KB)
    doukutsu_test4.2.iso(31.04 MB)
  • v0.4.1(Aug 27, 2021)

  • v0.4(Aug 27, 2021)

    Changelog

    • it should now be theoretically possible to complete the game;
    • implemented credits/ending sequence;
    • implemented Whimsical Star;
    • implemented Nikumaru Counter;
    • implemented missing backgrounds (water, clouds);
    • fixed error handler: should now be possible to see error messages again;
    • fixed some miscellaneous bugs.

    Tested and should work correctly on DuckStation, NO$PSX, pcsx-redux and real hardware (SCPH-9002). This release should be backwards compatible with Test 3.2/3.1/3 saves.

    Use the ISO to play. ELF and EXE files attached for debugging purposes.

    Source code(tar.gz)
    Source code(zip)
    doukutsu.elf(2.15 MB)
    doukutsu.exe(658.00 KB)
    doukutsu_test4.iso(31.04 MB)
  • v0.3.2(Aug 22, 2021)

    Another bugfix release.

    Changelog

    • switched to system clock based timing instead of hblank-based, should hopefully improve music timing;
    • hopefully fixed the 8-pixel misalignment of everything;
    • hopefully fixed or reduced slowdown in Sand Zone and elsewhere;
    • fixed NPC double death, which was causing extra dropped items and sound glitches;
    • fixed look up/down sprite getting stuck, player not facing the correct direction in some cutscenes, death explosion garbage and other visual issues.

    Tested and should work correctly on DuckStation, NO$PSX, pcsx-redux and real hardware (SCPH-9002). This release should be backwards compatible with Test 3.1/Test 3 saves.

    Use the ISO to play. ELF and EXE files attached for debugging purposes.

    Source code(tar.gz)
    Source code(zip)
    doukutsu.elf(2.12 MB)
    doukutsu.exe(658.00 KB)
    doukutsu_test3.2.iso(31.11 MB)
  • v0.3.1(Aug 22, 2021)

    Hotfix release.

    Changelog

    • implemented player physics in Ironhead fight;
    • fixed block graphics in said fight;
    • fixed autoscroll background type;
    • fixed bubble rendering.

    Tested and should work correctly on DuckStation, NO$PSX, pcsx-redux and real hardware (SCPH-9002). This release is backwards compatible with Test 3 saves.

    Use the ISO to play. ELF and EXE files attached for debugging purposes.

    Source code(tar.gz)
    Source code(zip)
    doukutsu.elf(1.21 MB)
    doukutsu.exe(426.00 KB)
    doukutsu_test3.1.iso(30.85 MB)
  • v0.3(Aug 22, 2021)

    Changelog

    • Balfrog (and hopefully other bosses) is now functional, so it should be possible to progress past the end of Grasstown;
    • implemented memory card saving/loading (takes 1 block);
    • implemented title sequence and main/options menus;
    • had to move from PSn00bSDK to Nugget/PsyQ, because I couldn't figure out how to fix memcard processing in the former;
    • fixed some issues probably.

    Tested and should work correctly on DuckStation, NO$PSX, pcsx-redux and real hardware (SCPH-9002).

    Use the ISO to play. ELF and EXE files attached for debugging purposes.

    Source code(tar.gz)
    Source code(zip)
    doukutsu.elf(1.21 MB)
    doukutsu.exe(426.00 KB)
    doukutsu_test3.iso(30.85 MB)
  • v0.2(Aug 12, 2021)

    Changelog

    • can now progress up to the end of Grasstown (Balfrog boss fight is not functioning);
    • implemented pause, inventory and stage select menus and automap, boss lifebars;
    • implemented all missing NPCs/objects;
    • implemented saving/loading, but to RAM only for now (dying now works);
    • fixed some broken TSC commands (NUM, MYD, etc);
    • fixed stagepack not packing some surfaces when they have the same name as other surfaces;
    • fixed rendering of sprites that cross texpage boundaries (e.g. the teleporter);
    • fixed multiple other small issues.

    Tested on DuckStation, NO$PSX, pcsx-redux and real hardware (SCPH-9002).

    Use the ISO to play. ELF and EXE files attached for debugging purposes.

    Source code(tar.gz)
    Source code(zip)
    doukutsu.elf(1.32 MB)
    doukutsu.exe(436.00 KB)
    doukutsu_test2.iso(30.39 MB)
  • v0.1(Aug 6, 2021)

    Can sort of progress up to Arthur's House. A lot of things don't work, such as pausing, inventory screen, minimap, dying and some miscellaneous entities. Some sound and graphics glitches throughout.

    Tested on DuckStation, NO$PSX and real hardware (SCPH-9002). Does not boot on pcsx-redux.

    Source code(tar.gz)
    Source code(zip)
    doukutsupsx_test1.iso(15.80 MB)
Owner
fgsfds
fgsfds
A modification of the playstation UI to help with launching and developing homebrew.

Orbis-Toolbox A modification of the playstation UI to help with launching and developing homebrew

Greg 88 Nov 26, 2022
🦖This is a C port of Chrome's offline T-Rex Runner

?? Chrome T-Rex Runner (ported to C)

Shlomi Nissan 120 Nov 20, 2022
An emscripten port of onscripter-jh

EM-ONScripter An emscripten port of ONScripter-jh Screenshots Tests To run tests, run the following command

null 26 Nov 22, 2022
Gameboy Port of LazyDevs' Porklike

porklike.gb A port of the wonderful Porklike, created by Krystian Majewski, to the original Game Boy! Please see the original pico-8 game at https://k

Ben Smith 20 Dec 28, 2022
My Port of Psych Engine For Android

# Friday Night Funkin' - Psych Engine Engine originally used on [Mind Games Mod](https://gamebanana.com/mods/301107), intended to be a fix for the van

M.A. Jigsaw 75 Mar 29, 2022
A port of Substance Unreal Engine plugin for UE5.

SubstanceForUE5 A port of Substance Unreal Engine plugin for UE5. All rights to this code belong to Allegorithmic / Adobe. I merely wanted to help dev

null 14 Apr 29, 2022
Dark Sky DOS Game (curses port)

Dark Sky This is a port of the original Dark Sky by Ben "Bent"

Jamie 2 Apr 6, 2022
KlayGE is a cross-platform open source game engine with plugin-based architecture.

KlayGE KlayGE is a cross-platform open source game engine with plugin-based architecture. It's started since 2003. The explicit goal of KlayGE is: to

Minmin Gong 1.8k Dec 23, 2022
3D games console based on RP2040 and iCE40 UP5k

PicoStation 3D This is an unfinished, untested project to develop a 3D games console based on an RP2040 microcontroller and an iCE40 UP5k FPGA. Quick

Luke Wren 37 Sep 12, 2022
A simple text-based adventure game

The Lighthouse of Doom This repository contain a simple text-based adventure game, implemented twice, once in portable C, and once in Z80 assembly lan

Steve Kemp 55 Nov 1, 2022