|
| 1 | +# Doukutsu Rust |
| 2 | + |
| 3 | +*This article primarily outlines the retroarch-specific features of this core. For a general feature-list and how-to for d-rs, please see the readme in the [Upstream Repository](https://github.com/doukutsu-rs/doukutsu-rs/).* |
| 4 | + |
| 5 | +<center>  </center> |
| 6 | + |
| 7 | +## Background |
| 8 | + |
| 9 | +Doukutsu Rust *(often abbreviated d-rs)* is a modern and accurate re-implementation of the Cave Story Engine designed to be a drop-in replacement for all official and most fan ports, including: |
| 10 | + |
| 11 | +- CS Freeware |
| 12 | +- Cave Story+ |
| 13 | +- Cave Story Switch |
| 14 | +- Cave Story Wiiware |
| 15 | +- CSE2 |
| 16 | +- NXEngine-Evo |
| 17 | + |
| 18 | +The engine adds other Quality-of-life features like 2-player local multiplayer, lighting effects, and smooth motion interpolation. |
| 19 | + |
| 20 | +## Requirements |
| 21 | + |
| 22 | +Currently, this core requires at least OpenGL 2 or OpenGLES 2 to run. On MacOS systems, it requires at least OpenGL 3 support. |
| 23 | + |
| 24 | +Supported platforms: |
| 25 | + |
| 26 | +- Windows |
| 27 | +- Linux |
| 28 | +- Mac OS *(at least openGL 3 required)* |
| 29 | +- Android |
| 30 | +- iOS |
| 31 | + |
| 32 | + |
| 33 | +## How to start d-rs: |
| 34 | + |
| 35 | +D-rs does not ship with Cave Story data. To run it, you can either supply your own datafiles or use the "Content Downloader" (for Freeware only). |
| 36 | + |
| 37 | +For more information on how to get the files from your specific Cave Story install, see the [Upstream Repository readme](https://github.com/doukutsu-rs/doukutsu-rs/). |
| 38 | + |
| 39 | +### Freeware |
| 40 | +Freeware files can be obtained from the [tribute site](https://www.cavestory.org/download/cave-story.php) or via the retroarch Content Downloader, in a similar manner to the NXEngine core: |
| 41 | + |
| 42 | +1. Go to RetroArch's main menu screen and select "Online Updater". From there, select "Content Downloader". |
| 43 | +2. In the list, there should be a folder labeled `Cave Story`. Select it, then select the `Cave Story (En).zip` file. The file should be downloaded and extracted to Retroarch's `Downloads` directory. |
| 44 | +3. Go back to RetroArch's main menu screen. Select "Load Content", then navigate to `Downloads/Cave Story (En)/` and select `Doukutsu.exe`. |
| 45 | +4. If given the choice on what core to run, choose `Cave Story (drs)`. |
| 46 | + |
| 47 | +The game should begin playing. |
| 48 | + |
| 49 | +### Cave Story + |
| 50 | + |
| 51 | +The process for Cave Story plus is largely the same, but you have to supply your own datafiles. |
| 52 | + |
| 53 | +1. Grab your CS+ install and place it where you can navigate to it from retroarch. |
| 54 | +2. Navigate to the CS+ folder and select the `CaveStory+.exe` file. |
| 55 | +3. If given the choice on what core to run, choose `Cave Story (drs)`. |
| 56 | + |
| 57 | +The game should begin playing. |
| 58 | + |
| 59 | +### Cave Story + (Switch edition / Wiiware edition) |
| 60 | + |
| 61 | +These versions of Cave Story don't have an executable bundled with the `data` folder. D-rs can load this just fine, but it needs to know *where* to find it, which requires the creation of a "dummy" executable next to the data folder. |
| 62 | + |
| 63 | +<center>  </center> |
| 64 | + |
| 65 | +1. Grab your CS-Switch or CS-Wiiware install and place it where you can navigate to it from retroarch. |
| 66 | +2. In the folder that contains the `data` folder *(not INSIDE the data folder, but next to it)*, create an empty file with the `.exe` extension. Name doesn't matter, (example: `Target.exe`) |
| 67 | +3. Navigate to the containing folder and select the target file you just made. |
| 68 | +4. If given the choice on what core to run, choose `Cave Story (drs)`. |
| 69 | + |
| 70 | +The game should begin playing. |
| 71 | + |
| 72 | +## Extensions |
| 73 | + |
| 74 | +**With the exception of Freeware cave story**, d-rs mainly uses the target file as a reference to figure out where the data folder is. *(since at the time of writing, retroarch can't load a folder directly through the GUI)* |
| 75 | + |
| 76 | +If the core is loading from Freeware for the first time, it will open the file in order to dump its internal assets into the `data` directory. After this, the executable isn't needed beyond use as a starting "target" for the core. |
| 77 | + |
| 78 | +For CS+, Wiiware, or NXEngine, placing an empty "target" file in the same directory as the `data` folder with one of these extensions will load the game. |
| 79 | + |
| 80 | +- .so |
| 81 | +- .dll |
| 82 | +- .exe |
| 83 | + |
| 84 | + |
| 85 | +The info file source can be found here: |
| 86 | +https://github.com/libretro/libretro-super/blob/master/dist/info/doukutsu_rs_libretro.info |
| 87 | + |
| 88 | + |
| 89 | +## Frontend Features |
| 90 | + |
| 91 | +| Feature | Supported | |
| 92 | +|-------------------|:---------:| |
| 93 | +| Restart | ✔ | |
| 94 | +| Saves | X | |
| 95 | +| States | X | |
| 96 | +| Rewind | X | |
| 97 | +| Netplay | X | |
| 98 | +| Core Options | ✔ | |
| 99 | +| RetroAchievements | X | |
| 100 | +| RetroArch Cheats | X | |
| 101 | +| Native Cheats | ✔ | |
| 102 | +| Controls | ✔ | |
| 103 | +| Remapping | ✔ | |
| 104 | +| Multi-Mouse | X | |
| 105 | +| Rumble | ✔ | |
| 106 | +| Sensors | X | |
| 107 | +| Camera | X | |
| 108 | +| Location | X | |
| 109 | +| Subsystem | X | |
| 110 | +| [Softpatching](../guides/softpatching.md) | X | |
| 111 | +| Disk Control | X | |
| 112 | +| Username | X | |
| 113 | +| Language | X | |
| 114 | +| Crop Overscan | X | |
| 115 | +| LEDs | X | |
| 116 | +| Fast Forward | X | |
| 117 | +| Slow-mo | ✔ | |
| 118 | + |
| 119 | +## Directories |
| 120 | + |
| 121 | + |
| 122 | +D-rs will modify the following files/folders: |
| 123 | + |
| 124 | +- `~/data` - *(only with freeware)*, will be populated with Cave Story's internal assets the first time the game is launched (things like music and credit images). |
| 125 | +- `~/user` - If this folder already exists (I.E. continuing a game that was started on another port of d-rs), d-rs will use this directory instead of `RetroArch/saves/d-rs`. |
| 126 | +- `RetroArch/saves/d-rs` - game saves, internal settings, and operation logs will be stored in this folder. |
| 127 | + |
| 128 | + |
| 129 | + |
| 130 | +## Geometry and timing |
| 131 | + |
| 132 | +D-rs separates in-game time from screen refresh rate. The game can be either set to run at 50 TPS (mimicking Freeware CS) or 60 FPS (mimicking CS+). |
| 133 | + |
| 134 | +Screen drawing varies depending on hardware capability, but is typically around 60 FPS. |
| 135 | + |
| 136 | +Depending on the `Core Options` (see below), the game's screen ratio can be changed. |
| 137 | + |
| 138 | + |
| 139 | +## Core options |
| 140 | + |
| 141 | +- **Internal upscaling factor** - The size of the "screen" that the core thinks it's drawing to. Larger resolutions provide smoother visuals. For CS+, a minimum scale of x2 is needed to retain all image detail. `2x (CS+, default)|1x (freeware, fastest)|3x (smoother motion)|4x (smoothest motion)`, |
| 142 | +- **Screen Ratio** - Shape of the "screen" that the core thinks it's drawing to. Original CS is 4:3, but d-rs supports widescreen. `4:3 (original)|16:9 (switch)|16:10|21:9` |
| 143 | +- **Debug Outlines** - Draw onscreen markers to show where entities are and what they are colliding with. `Disabled|Enabled` |
| 144 | +- **Show FPS** - Show in-game TPS and FPS. `Disabled|Enabled` |
| 145 | +- **Show Debug GUI** - Show the IMGUI debug menu *(no real use at the moment; mouse input is disabled)*. `Disabled|Enabled` |
| 146 | +- **GOD Mode (Invincibility)** - Player cannot take damage. `Disabled|Enabled` |
| 147 | +- **Infinite Booster** - Gives the player the jetpack without a fuel limit. `Disabled|Enabled` |
| 148 | +- **Noclip** - Allows the player to float through the map without tile or NPC collision. `Disabled|Enabled` |
| 149 | +- **More Rust** - Turns Sue into the d-rs mascot ({ width="16" height="16" }). `Disabled|Enabled` |
| 150 | + |
| 151 | + |
| 152 | +## User 1-2 device types |
| 153 | + |
| 154 | +The d-rs core supports the following device type(s) in the controls menu, bolded device types are the default for the specified user(s): |
| 155 | + |
| 156 | +- **Retropad (Port 1)** - Player 1 controls. |
| 157 | +- **Retropad (Port 2)** - Player 2 controls. |
| 158 | + |
| 159 | +These controls can be re-assigned in both the retroarch frontend and in the core itself. |
| 160 | + |
| 161 | +## Rumble |
| 162 | + |
| 163 | +If the frontend supports rumble and is paired with a controller that has the capability, d-rs will provide vibration feedback during screen shakes and other various in-game events. |
| 164 | +Rumble can also be disabled within the core's settings menu. |
| 165 | + |
| 166 | +## Joypad |
| 167 | + |
| 168 | +*Note: These buttons can be re-bound in the frontend as well as within the core.* |
| 169 | + |
| 170 | +| RetroPad Inputs | Input descriptors | |
| 171 | +|------------------------------------------------|--------------------------------| |
| 172 | +|  | Shoot | |
| 173 | +|  | Jump | |
| 174 | +|  | Inventory/Cutscene Fast Forward| |
| 175 | +|  | Pause | |
| 176 | +|  | Show/Hide Map | |
| 177 | +|  | Aim up | |
| 178 | +|  | Interact/Aim down | |
| 179 | +|  | Move Left | |
| 180 | +|  | Move Right | |
| 181 | +|  | Previous Weapon | |
| 182 | +|  | Next Weapon | |
| 183 | +|  | Strafe | |
| 184 | +|  | Move (d-pad equivalent) | |
| 185 | + |
| 186 | +## External Links |
| 187 | + |
| 188 | +- [Official doukutsu-rs source (GitHub)](https://github.com/doukutsu-rs/doukutsu-rs) |
| 189 | +- [Official doukutsu-rs website](https://doukutsu-rs.github.io/) |
| 190 | +--- |
| 191 | +- [Libretro port of d-rs (backend)](https://github.com/DrGlaucous/doukutsu-rs-nm/tree/retroarch-dev) |
| 192 | +- [Libretro port of d-rs (interface layer)](https://github.com/DrGlaucous/doukutsu-rs-libretro/) |
| 193 | +--- |
| 194 | +- [d-rs discord server](https://discord.gg/fbRsNNB) |
| 195 | + |
| 196 | + |
| 197 | + |
| 198 | +## (Related cores) |
| 199 | + |
| 200 | +- [NXEngine](nxengine.md) |
0 commit comments