According to the C++ standard, regular operator new must always return a valid pointer, and allocation failure should throw an exception. The original game did not use exceptions, and instead had its operator new return null on alloc failure. Clang and GCC seem to be enforcing the standard here, and this is causing crashes on non-Windows platforms like https://sentry.twilitrealm.dev/organizations/twilitrealm/issues/952/, where a JAISe allocation failure (custom pooled operator new overload) crashes the game when it should be handled gracefully. MSVC seems to not make use of this opportunity, meaning the code works as intended. Tagging the operators with noexcept seems to satisfy GCC, but I admit cppreference is very light on details here.
Overview
Dusklight is a reverse-engineered reimplementation of Twilight Princess.
It aims to be as accurate as possible to the original while also providing new options, enhancements, and tools to customize your experience.
Setup
Important
Dusklight does not provide any copyrighted assets. You must provide your own copy of the original game.
Important
At a minimum, Dusklight requires a GPU with support for either D3D12, Vulkan, or Metal. Your experience with specific hardware, operating systems, and drivers may vary. In particular, older Intel iGPUs have a high likelihood of incompatibility. We are also aware of a number of issues on devices with Adreno GPUs and are working to resolve them.
1. Verify your dump
First, make sure your dump of the game is clean and supported by Dusklight. You can do this by checking the SHA-1 hash of your dump against this list of supported versions:
| Version | SHA-1 hash |
|---|---|
| GameCube USA | 75edd3ddff41f125d1b4ce1a40378f1b565519e7 |
| GameCube EUR | 2601822a488eeb86fb89db16ca8f29c2c953e1ca |
*Support for other versions of the game is planned in the future.
2. Download Dusklight
3. Setup the game
Windows / macOS / Linux
- Extract the .zip file
- Launch Dusklight
- Press Select Disc Image and provide the path to your supported game dump
- Press Play!
iOS
- Follow the iOS setup guide
Android
- Install the Dusklight APK
- Launch Dusklight
- Press Select Disc Image and provide the path to your supported game dump
- Press Play!
Building
If you'd like to build Dusklight from source, please read the build instructions.
Pull requests are welcomed! Note that we do not accept contributions that are primarily AI-generated and will close your PR if we suspect as much. Please also see the code conventions.
Credits
Special thanks to the TP decompilation team, the GC/Wii decompilation community, the Aurora developers, the TP speedrunning community, and all contributors.
