assets by Level-5, running in widebrim HD
widebrim HD is a work-in-progress Godot-based high-level engine recreation for the mobile versions of LAYTON2 (Layton: Diabolical Box in HD / Layton: Pandora's Box in HD) for running the game natively, without emulation on any compatible system.
You will need the following:
- A dump of LAYTON2 HD for Android
- For older versions, you will need the APK and OBB
- For newer versions, you will need unmodified base and InstallAssets APKs
- Global builds are preferable for wider language support
- Godot 4.2 or newer
- Python 3+
- PyCriCodecs, tested with 0.4.8
- FFMPEG with libvorbis, libtheora and libx264 (i.e., any modern FFMPEG 'essentials' build)
- This can either be installed system-wide (i.e., on PATH for Windows) or downloaded locally (-f flag must be specified during install)
For obvious reasons, widebrim HD is not bundled with any game assets. A Python script is provided to unpack game archives and convert relevant assets to native formats. Install by doing the following:
- Install the required prerequisites (and optional ones for a better experience).
- Clone the repository.
- Start a terminal inside
widebrim_hd/assets_py_unpacker
and run the following:- Install requirements with
pip install -r requirements.txt
- (Optional, recommended if installing from an OBB, irrelevant for APK installs) Build Cython extension for faster decryption with
python setup.py build_ext --inplace
.
- (Optional, recommended if installing from an OBB, irrelevant for APK installs) Build Cython extension for faster decryption with
- Unpack and convert assets with
python install_apk_obb.py <path to base apk> <path to additional data>
.- The additional data can either be the OBB or InstallAssets APK. New versions must use the InstallAssets APK for additional data and not be modified to merge the APKs. Use the base APK that corresponds to the additional data.
- The install script has arguments that can be set to change its behavior:
-f <path to ffmpeg executable>
to use a local build of FFMPEG if system build is not available.--jp
,--en_eu
,--en_us
,--es
,--fr
,--it
,--de
,--nl
,--ko
to filter the installed languages to save space. Global builds have all languages except Japanese. Default behavior exports all languages; this will be overridden if any language flag is set. Multiple language flags can be set simultaneously. This doesn't modify the Godot install so make sure to setCONFIG_GAME_LANGUAGE
inwidebrim_hd\godot\scripts\consts.gd
. By default, English (Europe) is used.
- To see all options, do
python install_apk_obb.py --help
- Install requirements with
- Import
widebrim_hd/project.godot
into the Godot Editor. This will take a long time for first boot - even a single-language install has around 12,000 assets!
Open Godot, load the project and press Play in the top-right. By default, the game loads and saves a DS-like save slot as state.sav
in the project root. To delete all progression and restart, delete this save.
Exporting is experimental and will be that way until foundational asset loaders are complete. It is expected that exporting will break between commits in this early stage of the project. For now, play entirely in editor.
widebrim HD continues where widebrim left off and tackles research for the HD ports of LAYTON2... ...but to be honest, it's actually just for fun, I don't know much about Godot 😄
widebrim HD is a rewrite of widebrim combined with additional knowledge from reversing LAYTON2 HD. It tries to be largely accurate and should replicate most engine-related bugs in the future, especially because the new engine itself has none of the quirks of the Nintendo DS version.
Not very, gamemode switching is implemented and a basic event and room parser have been written.
Please open a GitHub issue describing the problem, your save file and steps to reproduce. The save system in-game isn't complete yet so we might need significant information if the bug isn't easily reproducible. Thanks!
Open a GitHub issue - keep in mind that features in the original game are already intended to have implementations in widebrim HD.
Feel free, open a pull request 😎
Thanks goes to...
- The contributors of PyCriCodecs, audio support is planned and this library is responsible for making it possible ❤️
- ssh for figuring out the decryption routine for the HD Layton games (RIP ZenHAX)
- creativelynameduser for their help with decoding the in-game font format
- Everyone who helped with widebrim and by extension, madhatter for understanding HD file formats