Coder Social home page Coder Social logo

rustual-boy's Introduction

Rustual Boy Build Status Build status Compabitility Chat on discord License

Rustual Boy

Description

Rustual Boy is a Virtual Boy emulator. It can be used to play existing Virtual Boy games, as well as be a helpful development/debugging tool for homebrew for this platform.

The name "Rustual Boy" is a portmanteau of the words "Rust" and "Virtual Boy". Ok, the "Virtual Boy" part was obvious, but why "Rust"? In fact, Rustual Boy is written in the Rust programming language - a "systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety." Rust is a wonderful language with a thriving community, and as such provides a fantastic platform for an emulation project!

Status

Rustual Boy is currently able to emulate the majority of commercial Virtual Boy titles, as well as many homebrew ones as well. It supports basic video/audio output and keyboard input, as well as a simple CLI debugger. It runs on Windows, MacOS, Linux, and likely other platforms Rust supports as well.

While Rustual Boy's core emulation is nearly complete compatibility-wise, the project is still quite young, and needs some time to mature. Particularly, its user interface is lacking (read: virtually non-existent), and there are some known (and probably unknown) stability/compatibility issues. Also, performance isn't fantastic yet, but the emulator should be playable at least.

That said, these things are bound to improve with time, and everyone is encouraged to grab a build or build the emulator, give it a shot, and report any bugs/feature requests!

Screenshots

screenie screenie screenie screenie

Known game compatibility

Key:

  • Empty cells: Incompatible. The reason is described in the notes field.
  • F: Fully compatible. The game is fully playable with no known bugs (to our knowledge).
  • P: Playable. The game can be played, but has some minor known glitches (described in the notes field).
  • N/A: Game does not exist for this region.

Games marked F and P are all included in the compatibility metric.

Game USA JP Notes
3-D Tetris N/A Uses bit string ops
Bound High! F N/A ROM is both USA+JP
Galactic Pinball P P Vocal samples throughout the game play at the wrong rate, likely related to CPU clock cycle inaccuracy
Golf Uses bit string ops
Insmouse No Yakata N/A F
Jack Bros. F F
Mario Clash F F
Mario's Tennis F F
Nester's Funky Bowling N/A Uses bit string ops
Panic Bomber F F
Red Alarm Uses bit string ops
SD Gundam Dimension War N/A F
Space Invaders Virtual Collection N/A Lazers aren't visible on most of the screen in "Virtual 3D" mode
Space Squash N/A Game doesn't start; seems to be waiting on an interrupt (see commits 7423524 and 0ff9c61 for some investigation)
Teleroboxer F F
V-Tetris N/A F
Vertical Force Enemies/powerups appear/disappear, first boss disappears and the game softlocks
Virtual Bowling N/A P Small graphical glitch in the intro sequence, samples play at the wrong rate
Virtual Boy Wario Land F F
Virtual Fishing N/A F
Virtual Lab N/A F
Virtual League Baseball F F
Waterworld F N/A

Building and running

Currently, the only dependency for building is Rust itself, which can be downloaded here. Once that's installed, you can clone the repo, and simply cargo build/cargo run your way to victory! It's recommended to use the --release flag as well, as emulation can require a lot of CPU power, so we'll want all the compiler help we can get.

Rustual Boy currently takes a single argument, which is the ROM image:

rustual-boy bound-high.vb

If you're new to using Cargo (Rust's build system), it's recommended to give the Cargo Guide a quick skim.

Input keymap

The Virtual Boy game pad consists of two d-pads, 4 buttons, and two shoulder buttons. These are mapped to the following keyboard keys:

Button Key
Left D-Pad Up W
Left D-Pad Down S
Left D-Pad Left A
Left D-Pad Right D
Right D-Pad Up I
Right D-Pad Down K
Right D-Pad Left J
Right D-Pad Right L
Select space
Start enter/return
A F
B H
Left bumper E
Right bumper U

For game pad layout reference, refer to this image. This key map is currently non-configurable.

Contributing

Rustual Boy aims to be an open project where anyone can contribute. If you're interested, check CONTRIBUTING.md!

License

Licensed under either of

at your option.

rustual-boy's People

Contributors

yupferris avatar sapphire-arches avatar jwestfall69 avatar sebbert avatar mrmaxmeier avatar torokati44 avatar dr-emann avatar

Watchers

Ryan avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.