Meet the people behind Hollycast — contributors, sources, and special thanks.
Logo credit: @ruva
The latest development release updates when Android, Windows, Linux, macOS, Switch and Xbox / UWP downloads are all ready for the same dev commit. If a platform is still building or fails, the previous complete build stays available. These builds may be unstable.
Hollycast is a multi-platform Sega Dreamcast, Naomi, Naomi 2, and Atomiswave emulator. It is built on Flycast: it follows the upstream emulation core and adds a modern interface, more front-end features, and controls for power users.
- Download
- What Hollycast adds
- Why a fork?
- Contributing
- Building from source
- Debugging
- Support the project
- License and credits
Prebuilt binaries for every platform are on the latest release page. Each release includes a SHA256SUMS.txt file so you can check your download.
| Platform | Release file |
|---|---|
| Windows (x64) | Hollycast-<version>-windows-x64.zip, or the MSVC builds windows-msvc-x64.zip / windows-msvc-x86.zip |
| macOS (Intel and Apple Silicon) | Hollycast-<version>-macos-universal.zip |
| Linux (x64) | Hollycast-<version>-linux-x64.AppImage |
| Android | Hollycast-<version>-android.apk |
| Xbox / UWP | Hollycast-<version>-uwp-x64.appx (also x86 and arm64). Install steps are in UWP-INSTALL.txt on the release page. |
| Nintendo Switch | Hollycast-<version>-switch.nro |
| RetroArch (libretro core) | windows-libretro-x64.zip, linux-libretro-x64.zip, linux-libretro-arm64.zip, switch-libretro.zip |
Releases tagged -dev are built from the dev branch and contain the newest, less-tested changes. Other releases are built from master.
- Modern interface. A redesigned UI with a game library that shows box art and VMU icons.
- Continue Playing and favourites. Continue Playing lists every game with a save state, newest first, and Resume loads that title's newest manual state or autosave. Start Fresh boots without loading a state. Use the star on a game to keep it in Favourites. These choices do not change your automatic save-state settings.
- Library theme packages. Install themes with custom palettes and library layouts, including Art Book Next, Iconic and Linear ports. See the theme author guide.
- Ready to play. Sensible defaults let new players start a game straight away, and the advanced settings are still there for power users.
- Performance overlay. A configurable on-screen display with frame timing plus RAM and texture VRAM usage.
- Real hardware and VMU support. DreamLink connects Hollycast to DreamConn and DreamPicoPort controllers and to the DreamPotato VMU emulator.
- Editable virtual controller. The on-screen touch controls can be rearranged and resized on mobile.
- Frequent quality-of-life updates. Old components are kept up to date, and new features come from requests by people who play every day.
Everything Flycast offers is still included: the full Dreamcast, Naomi, Naomi 2 and Atomiswave core, RetroAchievements, upscaling and widescreen options, and the libretro core.
Hollycast follows the Flycast core and is a home for features and experiments that are outside Flycast's scope:
- More features. It includes features the community asked for and experimental changes that Flycast chose not to merge.
- Room to experiment. It gives developers a stable place to build features they care about and to modernize the emulator.
Its technical standards are the same as Flycast's:
- Performance parity. The aim is to match or beat the speed of the current Flycast core.
- Verified accuracy. Flycast's own test suite runs alongside a growing set of Hollycast tests to catch regressions.
- Core integrity. New features are built so that they don't make the core less stable.
Hollycast aims to support every platform and release that Flycast supports. Merging Flycast updates gets harder as the two projects drift apart, so changes from upstream are brought in when they fit Hollycast and don't cause regressions.
Hollycast is under active development. If you'd like to contribute, please join our Discord and open a feature request to discuss your plans before you write code.
Bugs can be reported with the bug report template.
Windows
- Install Visual Studio with MSVC and the C++ CMake tools. They are in the
Desktop development with C++workload of the installer. - Add the folder that contains
cmake.exeto yourPATH, for exampleC:\Program Files\Microsoft Visual Studio\18\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\. - Android builds only: turn on
Developer Modeunder System > Advanced in Windows Settings so that symlinks can be created without administrator rights. Warning: this setting is generally considered a vulnerability on Windows.
Linux (Debian / Ubuntu)
sudo apt-get update
sudo apt-get -y install git cmake gcc g++
sudo apt-get -y install ccache libao-dev libasound2-dev libevdev-dev libgl1-mesa-dev liblua5.3-dev libminiupnpc-dev libpulse-dev libsdl2-dev libudev-dev libzip-dev ninja-build libcurl4-openssl-dev libcdio-dev libfuse2 locales
sudo apt-get -y install libwayland-dev libdecor-0-dev libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxkbcommon-dev libdrm-dev libgbm-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev fcitx-libs-devmacOS
- Install Xcode from the App Store, accept its license, and run its first-launch setup:
sudo xcodebuild -runFirstLaunch
- Download the Metal toolchain:
xcodebuild -downloadComponent MetalToolchain
- Install Homebrew, then install CMake and MoltenVK:
brew install cmake molten-vk
git clone https://github.com/nexus382/Hollycast.git
cd Hollycast
# Symlinks must be enabled for this project
git config core.symlinks true
# Fetch the submodules. Run this again whenever submodule versions change.
git submodule update --init --recursive --forcemaster is the stable branch. New work lands on dev first (git checkout dev).
Run these commands from the Hollycast folder:
# List the presets available on this platform
cmake --list-presets
# Configure. You usually only need to rerun this when files such as CMakeLists.txt change.
cmake --preset <PRESET>
# Build, using the same preset name
cmake --build --preset <PRESET>| Preset | Builds |
|---|---|
windows, linux, darwin |
Optimized build |
windows-debug, linux-debug, darwin-debug |
Debug build |
windows-unit-tests-debug, linux-unit-tests-debug |
Debug build with the unit tests. Running the resulting Hollycast executable runs the tests. |
Apple Silicon: the
darwinpreset looks for MoltenVK in/usr/local/lib, but Homebrew on Apple Silicon installs it under/opt/homebrew. Pass the path when you configure:cmake --preset darwin -DMOLTENVK_DYLIB="$(brew --prefix molten-vk)/lib/libMoltenVK.dylib"
Standalone macOS builds include the experimental native Metal backend by default:
cmake --preset darwin -DMOLTENVK_DYLIB="$(brew --prefix molten-vk)/lib/libMoltenVK.dylib"
cmake --build --preset darwinThen select Settings > Video > Graphics API > Metal (Experimental) and choose per-triangle, per-strip or per-pixel sorting. Metal is offered only when its runtime device/pipeline check succeeds; per-pixel support is checked separately. Existing renderer preferences are preserved. -DUSE_METAL=OFF remains available for builds that explicitly exclude it. See the Metal renderer notes for supported features, limitations and verification.
Develop in Android Studio
- Install Android Studio.
- Open the
shell/android-studiofolder in Android Studio. The Hollycast project loads automatically, with the "Android" sidebar on the left and the devices and run configurations at the top right. - The
debugbuild variant is used by default. For a faster release build, open View > Tool Windows > Build Variants and set the active build variant todeveloperRelease.- The
releasevariant does production code signing and is only meant for store publishing.
- The
Build from the command line
# You must build from shell/android-studio
cd shell/android-studio
# Debug build
./gradlew assembleDebug bundleDebug --parallelIf the build hangs or fails, run these commands and then try again:
# Stop all background Gradle daemons
./gradlew --stop
# Remove all output from previous builds
./gradlew cleanWhen you debug Hollycast, the debugger will often stop on memory access violations while a game is running. This is normal and expected. The emulator's dynamic recompiler causes these on purpose, and they don't mean there is a memory safety bug. See Dynarec Architecture for details.
Set your debugger to pass these signals through so they don't interrupt you:
- LLDB: use the startup command
process handle -s false -n false -p true SIGSEGV - Android: if the debugger stops at the
art_sigsegv_faultbreakpoint in the disassembly, delete that breakpoint and resume. - VS Code C/C++ on Windows: use the filter string
!0xC0000005on the "All Exceptions" breakpoint.
If you enjoy Hollycast, you can support its development on Ko-fi or PayPal.
Hollycast is licensed under the GNU General Public License v2.0.
Hollycast exists because of flyinghead and the Flycast contributors, whose work on the core makes this project possible. Thanks as well to the authors of the libraries in core/deps and to everyone who translates Hollycast on Crowdin.
