Giter VIP home page Giter VIP logo

doukutsu-rs's Introduction

doukutsu-rs

A fully playable re-implementation of the Cave Story (Doukutsu Monogatari) engine written in Rust.

Join the Discord server

CI

Note

macOS note: If you get a "doukutsu-rs" can't be opened message, right-click doukutsu-rs.app and click open.

Note

If you get issues with Epic Games Store version, scroll down for instructions.

Data files

In order to work doukutsu-rs needs to be paired with supported data files. This repository does not contain any data files.

doukutsu-rs works fine with freeware data files or NXEngine(-evo) or from a supported copy of Cave Story+.

How to set up data files on Android

If your phone has an app called "Files":

  1. Launch this app.
  2. Press on the top left corner.
  3. Tap on "doukutsu-rs game data".
  4. Copy your game data files to the opened folder.

If your phone does not have this app:

  1. Install the "Material Files" app from Hai Zhang and launch it(Google Play | F-Droid | Github Releases).
  2. Press on the top left corner.
  3. Press "+ Add storage".
  4. In the window that pops up, press "External storage".
  5. Press on the top left corner.
  6. Tap on "doukutsu-rs game data".
  7. Press the large blue button at the bottom labelled "USE THIS FOLDER".
  8. Then click on in the top left corner again and open.
  9. Tap on "files" above "+ Add storage".
  10. Copy your game data files to the opened folder.

Supported game editions and data file acquisition guides

Freeware

doukutsu-rs works out of the box when it's placed in the same directory as the original Doukutsu.exe executable. On the initial startup, doukutsu-rs will automatically extract the additional resources that are embedded in the vanilla game into the data directory. Until that is done, both doukutsu-rs and the vanilla executable have to exist in the directory.

Example root directory

example root directory with doukutsu-rs and vanilla Cave Story

Cave Story+

doukutsu-rs can be used as drop-in replacement for CaveStory+.exe. No modifications to game files are needed.

Original version (first released in 2011 on Steam) - expand for instructions

Steam release (Win/Mac/Linux)

The data folder is in the same place across all platforms.

If you want to use doukutsu-rs as a substitute for Mac version of Cave Story+ (which at moment of writing doesn't work on 10.15+ anymore), do the following:

  1. Find the doukutsu-rs executable:
    • In AppVeyor builds, it's in doukutsu-rs.app/Contents/MacOS/doukutsu-rs
    • In your own builds, it's in target/(release|debug)/doukutsu-rs
  2. Open Steam Library, select Cave Story+, press the Manage button (gear icon) and select Properties...
  3. Select Local Files and press Browse....
  4. Open the Cave Story+.app bundle and navigate to Contents/MacOS directory.
  5. Rename the Cave Story+ executable to something else or delete it.
  6. Copy the doukutsu-rs executable and rename it to Cave Story+.
  7. Launch the game from Steam and enjoy!

image

Warning

EPIC GAMES STORE VERSION WARNING

Nicalis for some reason ships a stray opengl32.dll DLL from Windows 7 with the Epic Games Store copies of Cave Story+.

However as the game is 32-bit and the dll is 64-bit it has no effect on the original version, but as it's a core Windows DLL and doukutsu-rs ships 64-bit builds and uses OpenGL, it's makes the game crash on startup.

The fix is to simply delete opengl32.dll, as it's not used anyway.

Epic Games Store

Check your default installation directory.

image

GOG

Check your default installation directory.

image

Humble Bundle

The archive from Humble Bundle contains the necessary data folder, in the same folder as CaveStory+.exe.

image

WiiWare
  1. Dump Your WiiWare .wad
  2. Extract and decompress the data folder Example of a valid uncompressed data folder

Remastered version (first released in 2017 on Switch)

Note

This version is incompatible with saves from the original version.

Interchanging the save files may result in spawning in wrong locations, softlocks, graphical glitches, or other issues.

Nintendo Switch

Extract the data folder (contained in romfs) from your console using tool such as nxdumptool.

Important notes:

  • doukutsu-rs doesn't rely on the original ROM or executable, you just need the data files, go to RomFS options menu to just extract the files to SD card so you don't need to do any extra steps.
  • Ensure you're dumping the files with update included (Use update/DLC option), as 1.0 isn't supported.

Nintendo Switch homebrew port specific info

If you're running the homebrew port (drshorizon.nro) on your Switch, you can avoid the dumping step, doukutsu-rs will automatically detect and mount the data files if you run it over Cave Story+ in Title Override mode (hold R while starting CS+ and launch d-rs from hbmenu).

You can put your own data files in /switch/doukutsu-rs/data directory on SD Card, which will be overlayed over RomFS if you run it in setup described above.

Controls

Same controls as the default for freeware and Cave Story+ keyboard.

To change, use the control customization menu or edit doukutsu-rs\data\settings.json within your user directory.

P1 P2
Movement ← ↑ ↓ → , L . /
Jump Z B
Shoot X N
Cycle Weapon A and S G and H
Inventory / Skip cutscene Q T
Map W Y
Strafe LShift RShift
  • Alt + Enter - Toggle Fullscreen
  • F2 (While paused) - Quick Restart

Screenshots

Freeware

JP Freeware 2

Toroko Fight Freeware

No Lighting Freeware

Original CS+

CS+ Sand Zone

CS+ Showoff Outer Wall

CS+ Challenge

Remastered CS+

Balcony Switch

Dogs Switch

Almond Switch

Hell Switch

Credits

  • Studio Pixel/Nicalis for Cave Story
  • @Daedily - brand artwork (Icon / Banner / Server), screenshots for this guide.
  • ggez - parts of it are used in crate::framework, notably the VFS code.
  • Clownacy - widescreen camera code.
  • LunarLambda for organism - used as basis for our Organya playback engine.
  • Zoroyoshi - k12x10 font we use as built-in font.

doukutsu-rs's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

doukutsu-rs's Issues

TSC jump opcodes do not clear the text box

I've been hunting the cause of that issue for months.
Turns out doukutsu-rs implementation of events that perform a jump to another event (<EVE, <**J, etc.) do not clear the text box which ruins certain in-game dialogs completely.

Various issues

Unless otherwise specified, these issues were all replicated with the default data. All of these issues were experienced on build
0.99.0.386-master.

  • Armored Gaudi projectiles do not bounce off walls as in vanilla. Instead, they disappear after hitting a wall. Vanilla behavior screenshot. Doukutsu-rs behavior screenshot.
  • Armored Gaudi projectiles are aimed differently. One example would be in Lab W. The first armored Gaudi will throw it's projectiles higher when you boost up in vanilla. But in doukutsu-rs, it always throws it's projectiles so that they end up hitting the slope. Vanilla. Doukutsu-rs.
  • Red Ogre does not drop exp as he does in vanilla. Screenshot

Pixel Birthday Easteregg

Since most ports give you a little reminder of his birthday on April 29th, would be nice to have something of it's own built in.

Assorted Bugs 2

  • Specific Challenges will only draw entities once fade transition is done
  • Wait Fade Left and Right (Scene #90 & 0092) transitions end too early
  • Balcony Ravils wont stop hunting Quote even if he is out of range
  • If Possessed Misery is knocked out, she will play her death animation again if the Undead Core is defeated
  • Curly's Nemesis shots originate from in front of Quote
  • Curly's Nemesis does not emit sound
  • Heavy Press Does not emit hurtsound
  • Kazuma doesn't catch Sue in the Normal Ending cutscene
  • A newline is skipped when Balrog says "All right, hang on tight!!"
  • Random characters will speak empty newlines even if there is no remaining text (Labyrinth Exit Cutscene Balrog)
  • Muscle Doctor death animation is VERY broken
  • (Kaitlyn) Booster particles should be behind Quote
  • (Kaiylyn) Balrog 2 (Malco) some bullets do not animate
  • CS+ shouldn't reset I-Frames when you enter the inventory/run a tsc event without a <KEY/PRI
doukutsu-rs_szh7A5CjFm.mp4

hole game bugs in linux d-rs

#it doesnt support joystick

rappidly press x,q pass the cutsinse witch mustnt happen but its good bug

#the screen some times spilt i half like old movies but colorful
#juily fish shouldnt show the number of dumge it takes
#i can skip that rabid mimiga in bushlands hut mean exit the room without killing him
#lights doesnt work in small room(it works in android)
#when balrog came in the dog bark stuck at his mouth keep opend
#toroko turn boss verry fast
#when balrog try to pull the heavy rock ,qouts gun pushed back to right , i am not sure is this a bug or fixed cuz its adult joke
#cant pass laybrinth funs
#qout dispares when he drown after core fight and reaprears when he got air tank
#water way dorw water (not real water cuz it doesnt move) in some places not supose to have water usely in top right or left
#dont even try water way shortcut its x2 harder than libernth funs
#red ogre drop no xp
#congratilation music never stop
#blood drops at same time after red ogre
#there is some auto frame skip in hell
#challenges are already opened
their wr used as hell timer (means if you get under 3 mintes in any challenge ,the game will replace qoute with sue in the main menu)
#machine gun challenge:
-due screen wide ,cairly move from race c to d without reaching the end of the screen
-before ending that challenge ,the disparing boulders it has a bug not sure how to say it , it diapers verry fast but cairly can walk in thier corner
#sand pit
-when qoute got the dog and even restart the do still on his head not in his poket
.didnt finsh it.
#sanctuary time attack
-due screen wide delets appears too soon
#wind fortress

  • cairly clone are inveseble ,dont move ,it hp 1000
    -gclone cant close his screen
    and insted of he somon cloned cairly a blue critcher apears and disapears on top left

Android sound issues (low volume, wrong speaker)

I installed the game and the files, when it starts I thought that it was muted, but when I put my ear close to the speaker I realized that it wasn't muted but the sound was ridiculously low (I tested in another apps, and no the problem isn't the phone) when I go to the options menu the audio slider was in the minimum possible, but for much that I press and slide it didn't move, it didn't happens in older versions.

Android users can't use map

There is no button for the map, if you click map system in inventory it gives you inventory screen without description pad (my english bad, sorry for errors)
Screenshot_2021-06-07-13-06-28

Level 3 missiles sometimes go through walls

Sometimes level 3 missiles go through walls, I believe it's due to the random off-axis movement they have. They skip the check for the perpendicular wall collision because they move through the parallel one instead. Adding an (inaccurate) test for the parallel wall collision fixes the issue. Direction::Left if self.flags.hit_top_wall()

image

Related: fireballs make lots of noise when hitting slopes

doukutsu-rs_PeIbJ4zmlF.mp4

some bugs in windows d-rs

doukutsu-rs.x86_64 with gog data folder
challenges are missed up
#they are named easyMod/mod/...etc
#curly story but qoute is showed insted
#time trial some aria art is missing in the first map only
#boss mod same map issue and qoute start near monster x
#kaze/mod also map art missing

Nemesis here when qoute take booster 2.0 it works along side with 0.8 the tow work at same time (must open menu and acuire it manly to fix it) here is the link https://youtu.be/hktqHKEJcOM

-fazz core doent wait for qoute invencebilty (it hit him towice in row)

  • nemesis doesnt directly levelup when taking one xp
  • the second ghost cat is insaid the top up blocks

and with switch data qoute start challenges a little bit to the left

Latin text from decrypted TSC does not always work

I tried using the Spanish translation I used with a different Cave Story engine to see if I would run into one of the same issues I had noticed there, and it seems that this also has it. Basically, accented characters and upside-down exclamation/question marks that are used in Spanish aren't appearing.

I actually spent time fixing this issue there, so I have a pretty good idea of why this is happening. When I was working on this originally, the problem was caused by interpreting the byte values in the plain text decryption of the TSC files as UTF-8 encoding, when in reality they were encoded as Windows CP-1252 (or ISO-8859-1, which is essentially the same in terms of what values correspond to which glyphs).

This hasn't been causing an issue so far because CP-1252, UTF-8, and UTF-32 all use ASCII for their first 128 characters, so the values given by incorrectly interpreting CP-1252 as UTF-8 have always been the right ones.

Missile Launcher is broken

  • Super Missile Launcher has too small damage and the missiles go through walls sometimes
  • Missile Launcher wasn't implemented because the former is broken but the code is mostly identical so it's a matter of copy and paste once SML is fixed.

wrong order of colission checks

from Kayo on discord:

hey just thought i'd tell you, as I forgot to say it
in d-rs, there might be an accuracy issue involving horiz/vert triggers
in CS Freeware, if you have a trigger over spikes, the trigger takes priority
in d-rs, the spikes kill you
so basically, if you run into spike tiles with a trigger over them in freeware, you run the event and live
if you do it in d-rs, you die

On screen Controller Mapping

It's more a request, in my phone the controls are at the middle of the screen, it's not bad but it makes difficult on boss battles since they are in a strange position. It would be great if I could change the positions and stuff. Thanks

Overflow subtraction crash due to Windows nano timer quirks

When running the latest doukutsu-rs build, opening a context menu in ShareX (possibly other software) causes the game to crash.

Interestingly, it doesn't happen every time, but it happens most times.

The error thrown is thread 'main' panicked at 'attempt to subtract with overflow', src\lib.rs:134:22

GIF Demonstration:
Crash Bug

Project relicensing proposal

I've been considering relicensing the project under modified MIT license with one additional clause that explicitly prevents it from being used... in one specific way that could bring Nicalis' attention in a bad way.

MIT/doukutsu-rs License

Copyright 2020-2022 doukutsu-rs contributors.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
The Software cannot be redistributed bundled with data files taken from any commercial port released by Nicalis Inc. without their explicit permission.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Since this requires approval of every past contributor, please let me know what you think and whether you approve this proposal.

cc

Assorted Bugs & Inconsistencies 3

  • (CS+ Switch) Water ripples are disabled when "Lighting effects" is Off
  • (D-RS) Some menus and occasionally the cursor snap into place on startup or when loading a new menu
  • (D-RS) When text is being selected in the debug console, D-RS will stop responding until selection is cleared
  • (CS+ Switch) Sand caret doesn't emit when walking on sand tiles
  • (CS+) Retrying any challenge starts in a incorrect spot and overrides weapons with the challenge Machinegun (again?)
  • (D-RS) Challenge times overwriting 290.rec
  • (CS+ Switch) Water is missing it's refraction
  • (CS+ Switch) Water ripples are too noisy
  • (CS+ Switch) Npcs don't splash when jumping in water
  • (D-RS) Stray flickering pixels on the very rightmost side of the Cutscene Skip box
  • (D-RS) Fade Transition breaks if window size is changed at all on any Data
  • (CS+) Incorrect difficulty costume with the player's cutscene NPC and Pause Menu cursor #69
  • (D-RS) Skip Cutscene box can briefly show up if you try to skip the Fade Transition
  • (CS+ Switch) Jukebox entries bleed a pixel on the bottom if the window is resized any larger
  • (D-RS) Challenges aren't ordered by mod.txt
  • (D-RS) Challenge locking / unlocking
  • (D-RS) Find and display Nicalis logo / Custom logo splash on start
  • (Freeware) Fix Balrog float after Mimiga Village shack cutscene
  • (CS+) Broken TSC on Assembly Hall door #74
  • (D-RS) Last phase Ballos bleeds upwards
  • (D-RS) Sisters boss fight has multiple inconsistencies
  • (D-RS) The Mini Cores that orbit around Undead Core dont animate properly
  • (D-RS) Toggling Original Textures causes specific NPCs to turn into white squares until the player leaves the level and WILL cause TSC to give up and softlock on some cutscenes
Footage
doukutsu-rs_QK0VzFWVz8.mp4

image

Tile rendering issues

When running the latest build of doukutsu-rs, Tiles seem to jitter at random intervals.

See a demonstration video here: https://imgur.com/a/nWdmg44

Timeline of the video is as follows:

  • 20 seconds: You can see the door flickering as I navigate the Start Point map.
  • 26 seconds: You can see the tile borders glitching at seemingly random intervals.

Roadmap to completeness

Gameplay support roadmap

  • Checkmarked things = fully implemented

  • Unmarked things = partially or not implemented yet.

  • Misc stuff tbd

    • Whimsical star
    • Map System
  • Text scripts (TSC)

    • Initial implementation
    • Full implementation of gameplay opcodes
    • Shift-JIS encoding support
    • Credits opcodes
    • Nikumaru/290 counter
  • Audio

    • Organya BGM playback
    • Text script bindings
    • CS+ style .ogg BGM playback
    • PixTone SFX
  • NPCs/entities

    • Initial implementation
    • Miscellaneous entities
    • Major Bosses
      • Omega
      • Balfrog
      • Monster X
      • Core
      • Ironhead
      • Twins
      • Undead Core
      • Press
      • Ballos
    • First Cave
    • Mimiga Village
    • Egg Corridor
    • Grasstown
    • Sand Zone
    • Labirynth I
    • Labirynth H
    • Labirynth W
    • Labirynth B
    • Labirynth M
    • Core Room
    • Waterway
    • Egg Corridor?
    • Outer Wall
    • Plantation
    • Last Cave
    • Balcony
    • Ma Pignon Quest
    • Hell
  • Weapons

    • Leveling / XP system
    • Initial implementation
    • Snake
    • Polar Star
    • Fireball
    • Machine Gun
    • Missile Launcher
    • Bubbler
    • Blade
    • Super Missile Launcher
    • Nemesis
    • Spur
  • Saving and loading game state

  • Support for different game editions

    • Freeware
    • Modified freeware
    • Cave Story+ (PC/Switch)
      • Base mod
      • Mod loading
      • Seasonal graphics
      • Co-op gameplay

Android Version won't play music through headphones

When I run the game (I'm using the newest version from GitHub releases), it ignores whatever external audio I have connected, and decides to turn my normal volume down, so when I don't hear anything, I accidentally blast everyone around me with the cave story main theme.

Is there a way I could fix this?

Boss bugs

  • Red ogre projectiles spawn at wrong position
  • Balfrog spawns at wrong position on switch
  • Misery orange bats immediately die during undead core fight
  • Bosses don't show damage

Assorted bugs

  • Teleporter SFX does not play during cutscenes
  • Kazuma's bike does not emit smoke after crashing it
  • Labyrinth Balrog boss fight missles emit trails on the wrong end
  • King will face the wrong way during the Rabid Toroko cutscene
  • Curly still shoots Machine Gun bullets despite holding the Polar Star in the Labyrinth
  • Curly's air bubble does not show up when she turns her back after Core boss fight
  • Curly isn't launched to the left after getting blown up in the Core room cutscene
  • The Sisters don't close their mouths to getting damaged or defeated
  • Orangebell bat sprite is stuck to flying left
  • Gunfish aren't bobbing
  • Player 1 vanishes if player 2 drowns
  • Ma'Pignon only faces left instead of towards the player when beaten

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.