Ever wanted to choke your RTX 3090 while playing 8-bit videogames? How about feeling the nostalgia of reflective LCDs with fat pixels? Or do you just want free eye candy to justify your GPU?
Rayboy is that program for you!
Rayboy is a GBC emulator with ray tracing and copious detail. It uses the SameBoy project as the emulator backend to provide accurate GBC emulation. Therefore, Rayboy itself is mostly just a frontend.
See the GitHub Releases page for the latest version!
Rayboy comes with two graphics modes: Plain and Fancy. Plain is just your old, boring emulator rendering that just shows the framebuffer of the device. You are offered the option to use more realistic colors or subpixels, though.
Fancy mode is the real deal with 3D graphics and ray tracing. It features a 3D console model with animated buttons; a realistic reflective LCD that has subpixels, realistic colors and pixel transition delays; and switchable plastic shell materials.
Ray tracing is used for real-time soft shadows, reflections and refractions (when a transparent shell is used). Temporal accumulation with reprojection is used to reduce noise in the rendered image.
Fancy mode also works without ray tracing. In that case, you will not have shadows, and reflections come from an environment map only. Transparent console shells are also not selectable without ray tracing.
Rayboy has 3D stereo audio. HRTF would be nice to have someday, but the audio library we use does not support that at least yet. It also uses the realistic audio filtering provided by SameBoy.
Rayboy can be played with a keyboard and mouse or console controllers. You can move and rotate the console, which you have to do in order to get a good visibility on the reflective LCD. Just like in real life.
Rayboy is a GUI program. You can find up-to-date information about controls under [About > Controls] from the menu bar of the program.
If you want to give an initial ROM file, you can do so by passing it as the command line parameter. This is not necessary however, since you can simply use the GUI to load the ROM file you want to emulate.
Rayboy does not ship with game ROMs. If you're looking for games to play with it, I recommend you give a try to Tobu Tobu Girl Deluxe by Tangram Games, it's great.
Rayboy would not have been possible to make without great open source libraries.
Rayboy uses the following libraries:
- GLM for linear algebra
- Dear ImGui for GUI
- KTX-Software for loading KTX textures
- nativefiledialog for file select dialogs
- SameBoy for GB emulation backend
- SDL2 for window, input and audio handling
- SoLoud for 3D audio
- Volk for loading Vulkan extensions
- Vulkan-Headers and Vulkan-Loader for Vulkan API
- VulkanMemoryAllocator for allocating GPU memory
- nlohmann/json for the options file
- MonkeroECS for handling entities in the "game"
- stb_image for loading regular textures
- tinygltf for loading 3D models
- And of course, the standard C++ library on your platform of choice.
These are included as submodules or files in the repository, so you don't have to install them separately.
This repo uses submodules, so you need to clone recursively. A submodule also uses Git LFS for the asset files, so make sure that it is installed before cloning.
git clone --recursive https://gitlab.com/juliusikkala/rayboy
cd RayBoy
cmake -S . -B release -DCMAKE_BUILD_TYPE=Release -DFORCE_VENDOR_ALL=ON
cmake --build release
release/rayboy
TODO -- you're on your own, but it should technically be possible with some elbow grease.
Rayboy source code is licensed under GPLv3, see the accompanying COPYING file for details. Rayboy also uses multiple libraries. Their license details can be found in their folders/submodules/files in the external directory.
Information about asset licenses is available below.
Copyright 2021 Julius Ikkala, under CC BY-NC-SA 4.0:
data/brdf_integration.ktx
data/gbc_lut.png
data/subpixel.png
data/white_room.glb
data/white_room.hdr
data/white_room_irradiance.ktx
data/white_room_radiance.ktx
data/rayboy.glb
Copyright 2021 Jan Solanti, under CC BY-NC-SA 4.0:
data/undercover.glb
data/undercover.hdr
data/undercover_radiance.ktx
data/undercover_irradiance.ktx
data/undercover_lightmap.hdr
Copyright 2015-2021 Lior Halphon, under MIT License:
data/cgb_boot.bin
The rest of the data files are under CC0 1.0.