This is an attempt at re-implementation of game engine used by some visual novels released by Entergram on Nintendo Switch, PS4 and PS Vita.
Currently known games using the engine on Switch and PS Vita are listed in this spreadsheet. PS4 was not researched yet.
If you know more - let me know! (dcnick3
on Discord)
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
- Text
However, 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.
You can try out the engine by downloading a pre-built binary from the 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.
You can use hactoonet to dump the romfs from the game:
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
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 fullscreen
If you encounter any problems, please open an issue on GitHub.
While there is no comprehensive documentation of the engine, as I reverse engineer it, I try to document the findings mainly in this spreadsheet
The autogenerated docs can be found here.
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 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.
To build from source you would need to have Rust installed.
Then you can build the engine with:
cargo build --release -p shin
And run it with:
cargo run --release -p shin