Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dcnick3/shin
A reimplementation of VN engine primarily used by 07-th expansion releases on consoles (and some other entergram games)
https://github.com/dcnick3/shin
game nintendo-switch reverse-engineering rust umineko visual-novel-engine
Last synced: 3 months ago
JSON representation
A reimplementation of VN engine primarily used by 07-th expansion releases on consoles (and some other entergram games)
- Host: GitHub
- URL: https://github.com/dcnick3/shin
- Owner: DCNick3
- License: mpl-2.0
- Created: 2022-10-18T22:20:41.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-07-14T19:48:08.000Z (6 months ago)
- Last Synced: 2024-07-15T20:34:00.876Z (6 months ago)
- Topics: game, nintendo-switch, reverse-engineering, rust, umineko, visual-novel-engine
- Language: Rust
- Homepage: https://dcnick3.github.io/shin/shin/
- Size: 3.89 MB
- Stars: 26
- Watchers: 5
- Forks: 2
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
This is an attempt at re-implementation of game engine used by some [visual novels](https://en.wikipedia.org/wiki/Visual_novel) released by [Entergram](http://www.entergram.co.jp/) on Nintendo Switch, PS4 and PS Vita.
Currently known games using the engine on Switch and PS Vita are listed in [this spreadsheet](https://docs.google.com/spreadsheets/d/1wGX9FOQq_iXcWMnY9qITCAV7hq1R7_gpWwjkT4_tKDI/edit?usp=sharing). PS4 was not researched yet.
If you know more - let me know! (`dcnick3` on Discord)
## Status
The initial implementation is focused on running switch version of Umineko no Naku Koro ni Saku \~Nekobako to Musou no Koukyoukyoku\~ (title id `01006A300BA2C000`), with the intention to support other games in the future.
As of writing, most of the basic game functionality works:
- Character sprites
- Backgrounds
- BGM & SFX
- TextHowever, there are still a lot of missing advanced features. It's not fully playable yet.
The intent is to follow the engine as closely as possible, so that it can be used to run the original games.
![screenshot.png](screenshot.png)
## Try it
You can try out the engine by downloading a pre-built binary from the [releases](https://github.com/dcnick3/shin/releases) page.
Select the latest release, and download the `shin` archive for your platform and extract it somewhere.
Then you would need to have romfs of Umineko no Naku Koro ni Saku \~Nekobako to Musou no Koukyoukyoku\~ game (title id `01006A300BA2C000`).
It can be dumped from the switch using [nxdumptool](https://github.com/DarkMatterCore/nxdumptool).
You can use [hactoonet](https://github.com/Thealexbarney/LibHac) to dump the romfs from the game:
```bash
hactoolnet -t pfs0 "Umineko no Naku Koro ni Saku ~Nekobako to Musou no Koukyoukyoku~ [01006A300BA2C000].nsp" --romfs=assets
```In the `assets` directory you should find a `data.rom` file. It's sha256sum should be `6d90eb0bacacf769a7e4634407622b047acd711c47debb28136d7bab3fd0e591`.
You can put then put the `assets` directory next to the executable or another location documented [here](https://dcnick3.github.io/shin/shin/asset/locate/fn.locate_assets.html)
Then you try running the game.
Controls are:
- Mouse click, space, enter - advance text
- Ctrl - fast-forward text
- Escape, Q - quit
- F3 - show overlay menu
- F10 - resize to 1080p
- F11 - toggle fullscreenIf you encounter any problems, please open an [issue on GitHub](https://github.com/DCNick3/shin/issues).
## Docs
While there is no comprehensive documentation of the engine, as I reverse engineer it, I try to document the findings mainly in [this spreadsheet](https://docs.google.com/spreadsheets/d/1BGGZ1Wjnx5FXgjDjhKgwhRxSAY_HYX_6U0q679IVUi8/edit?usp=share_link)
The autogenerated docs can be found [here](https://dcnick3.github.io/shin/shin/).
## What else is in the box
Aside from the game engine, this repo also includes `shin-core` - a library for working with the game data.
There is also `sdu` - a CLI interface for the `shin-core` library. It can be used to extract game data, and to convert it to other more conventional formats.
You can download it from the [releases](https://github.com/dcnick3/shin/releases) page.
For now, we have support for extracting the following data:
- `.rom` - Game data archive
- `.bup` - Character sprites
- `.pic` - Backgrounds & CGs
- `.nxa` - Game audio
- `.snr` - Limited support for game scenario (no decompilation, only tracing the execution)
- `.fnt` - Font data
- `.txa` - Texture archives (used mostly for UI)Support for other formats used is planned.
If you encounter any errors/problems when using the CLI - please open an [issue on GitHub](https://github.com/DCNick3/shin/issues).
## Building from source
To build from source you would need to have [Rust](https://www.rust-lang.org/) installed.
Then you can build the engine with:
```bash
cargo build --release -p shin
```And run it with:
```bash
cargo run --release -p shin
```