Skip to content

juliusikkala/RayBoy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rayboy

image of Rayboy running

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.

Youtube demonstration video

Download

See the GitHub Releases page for the latest version!

Features

Graphics

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.

Audio

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.

Input

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.

Usage

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.

Dependencies

Rayboy would not have been possible to make without great open source libraries.

Rayboy uses the following libraries:

These are included as submodules or files in the repository, so you don't have to install them separately.

Building

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.

Linux

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

Windows

TODO -- you're on your own, but it should technically be possible with some elbow grease.

Licenses

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.

Asset credits

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.