A NES emulator written in Ruby
Alternatives To Optcarrot
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
2 days ago253otherC
iOS & tvOS multi-emulator frontend, supporting various Atari, Bandai, NEC, Nintendo, Sega, SNK and Sony console systems… Get Started: https://wiki.provenance-emu.com |
Nes5,15542 months ago1January 27, 202110mitGo
NES emulator written in Go.
6 months ago6gpl-3.0C++
An NES emulator in C++
22 days ago347gpl-3.0C#
Tool that allows you to add more games to your NES/SNES Classic Mini
Cloud Game1,967
2 days ago21September 02, 20215apache-2.0Go
Web-based Cloud Gaming service for Retro Game
a day ago304gpl-3.0Kotlin
All in one emulator on Android!
a year ago1mitRuby
A NES emulator written in Ruby
4 months agoOctober 04, 20124otherGo
NES emulator, written in Go
3 years ago3Rust
👾 An NES emulator by Rust and WebAssembly
6 days ago12mitTypeScript
Online multiplayer NES(FC) games
Alternatives To Optcarrot
Select To Compare

Alternative Project Comparisons

Optcarrot: A NES Emulator for Ruby Benchmark

Project Goals

This project aims to provide an "enjoyable" benchmark for Ruby implementation to drive "Ruby3x3: Ruby 3 will be 3 times faster".

The specific target is a NES (Nintendo Entertainment System) emulator that works at 20 fps in Ruby 2.0. An original NES works at 60 fps. If Ruby3x3 is succeeded, we can enjoy a NES game with Ruby!

NOTE: We do not aim to create a practical NES emulator. There have been already many great emulators available. We recommend you use another emulator if you just want to play a game.

Basic usage

SDL2 is required.

$ git clone http://github.com/mame/optcarrot.git
$ cd optcarrot
$ bin/optcarrot examples/Lan_Master.nes
key button
arrow D-pad
Z A button
X B button
space Start button
return Select button

See doc/bonus.md for advanced usage.

Benchmark example

Here is FPS after 3 seconds in the game's clock.

benchmark chart

Here is FPS after 50 seconds in the game's clock. (Only fast implementations are listed.)

benchmark chart for 3000 frames

See doc/benchmark.md for the measurement condition and some other charts.

See also Ruby Releases Benchmarks and Ruby Commits Benchmarks for the continuous benchmark results.

You may also want to read @eregon's great post for TruffleRuby potential performance after warm-up.

Optimized mode

It may run faster with the option --opt.

$ bin/optcarrot --opt examples/Lan_Master.nes

This option will generate an optimized (and super-dirty) Ruby code internally, and replace some bottleneck methods with them. See doc/internal.md in detail.

See also


We appreciate all the people who devoted efforts to NES analysis. If it had not been not for the NESdev Wiki, we could not create this program. We also read the source code of Nestopia, NESICIDE, and others. We used the test ROMs due to NESICIDE.

Popular Nes Emulator Projects
Popular Video Game Projects
Popular Games Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Nes Emulator