Chameleon Twist: Recompiled is a project that uses N64: Recompiled to statically recompile Chameleon Twist into a native port with many new features and enhancements. This project uses RT64 as the rendering engine to provide some of these enhancements.
This repository and its releases do not contain game assets. The original game is required to build or run this project.
Thank you Blaze for supporting this project by providing Linux ARM64 and Apple Silicon macOS Github Action Runners!
- System Requirements
- Features
- Planned Features
- FAQ
- Known Issues
- Building
- Libraries Used and Projects Referenced
A GPU supporting Direct3D 12.0 (Shader Model 6) or Vulkan 1.2 is required to run this project. The oldest GPUs that should be supported for each vendor are:
- GeForce GT 630
- Radeon HD 7750 (the one from 2012, not to be confused with the RX 7000 series) and newer
- Intel HD 510 (Skylake)
A CPU supporting the AVX instruction set is also required (Intel Core 2000 series or AMD Bulldozer and newer).
If you have issues with crashes on startup, make sure your graphics drivers are fully up to date.
A lot of care was put into RT64 to make sure all graphical effects were rendered exactly as they did originally on the N64. No workarounds or "hacks" were made to replicate these effects, with the only modifications to them being made for enhancement purposes such as widescreen support.
Gameplay settings, graphics settings, input mappings, and audio settings can all be configured with the in-game config menu. The menus can all be used with mouse, controller, or keyboard for maximum convenience.
Play at any framerate you want thanks to functionality provided by RT64! Game objects and terrain, texture scrolling, screen effects, and most HUD elements are all rendered at high framerates. By default, this project is configured to run at your monitor's refresh rate. You can also play at the original framerate of the game if you prefer. Changing framerate has no effect on gameplay.
Note: External framerate limiters (such as the NVIDIA Control Panel) are known to potentially cause problems, so if you notice any stuttering then turn them off and use the manual framerate slider in the in-game graphics menu instead.
Any aspect ratio is supported, with most effects modded to work correctly in widescreen. The HUD can also be positioned at 16:9 when using ultrawide aspect ratios if preferred.
Note: Some animation quirks can be seen at the edges of the screen in certain cutscenes when using very wide aspect ratios.
Customize your experience by setting your stick deadzone to your liking, as well as adjusting the X and Y axis inversion for both aiming and the optional dual analog camera.
This project has been optimized to have as little input lag as possible, making the game feel more responsive than ever!
Saving and loading files, going from place to place, and pausing all happen in the blink of an eye thanks to the game running natively on modern hardware.
A Linux binary is available for playing on most up-to-date distros, including on the Steam Deck.
To play on Steam Deck, extract the Linux build onto your deck. Then, in desktop mode, right click the Zelda64Recompiled executable file and select "Add to Steam". From there, you can return to Gaming mode and configure the controls as needed. See the Steam Deck gyro aim FAQ section for more detailed instructions.
Static recompilation is the process of automatically translating an application from one platform to another. For more details, check out the full description of how this project's recompilation works here: N64: Recompiled.
Unlike N64 ports in the past, this project is not based on the source code provided by a decompilation of the game. This is because static recompilation bypasses the need for decompiled source code when making a port, allowing ports to be made without source code. However, the reverse engineering work done by the decompilation team was invaluable for providing some of the enhancements featured in this project. For this reason, the project uses headers and some functions from the decompilation project in order to make modifications to the game. Many thanks to the decompilation team for all of the hard work they've done.
- Windows:
%LOCALAPPDATA%\ChameleonTwistRecompiled\saves
- Linux:
~/.config/ChameleonTwistRecompiled/saves
You don't. This project is only a port of Chameleon Twist and it will only accept one specific ROM: the JP version of the N64 release of Chameleon Twist. ROMs in formats other than .z64 will be automatically converted, as long as it is the correct ROM. It is not an emulator and it cannot run any arbitrary ROM.
If you want to play a modded ROM or in another language, note that support for modding and other languages will be added to the project itself in the future and will not rely on you supplying a different ROM.
- Intel GPUs on Linux may not currently work. If you have experience with Vulkan development on Linux, help here would be greatly appreciated!
- The prebuilt Linux binary may not work correctly on some distributions of Linux. If you encounter such an issue, building the project locally yourself is recommended. A Flatpak or AppImage may be provided in the future to solve this issue. Adding the Linux version to Steam and setting "Steam Linux Runtime" as the compatibility tool or launching it via Gamescope may work around the issue. Alternatively, running the Windows version with Proton is known to work well and may also work around this issue.
- Overlays such as MSI Afterburner and other software such as Wallpaper Engine can cause performance issues with this project that prevent the game from rendering correctly. Disabling such software is recommended.
Building is not required to play this project, as prebuilt binaries (which do not contain game assets) can be found in the Releases section. Instructions on how to build this project can be found in the BUILDING.md file.
- RT64 for the project's rendering engine
- RmlUi for building the menus and launcher
- lunasvg for SVG rendering, used by RmlUi
- FreeType for font rendering, used by RmlUi
- moodycamel::ConcurrentQueue for semaphores and fast, lock-free MPMC queues
- Gamepad Motion Helpers for sensor fusion and calibration algorithms to implement gyro aiming
- Chameleon Twist Decompilation for headers and some function definitions, used for making patches or some enhancements
- Ares emulator for RSP vector instruction reference implementations, used in RSP recompilation
Special thanks to thecozies for designing and helping implement the launcher and config menus!