Skip to content

A feature-rich Game Boy emulator for your linuxbox ;)

License

Notifications You must be signed in to change notification settings

Edorizz/linuxboy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linuxboy (WIP)

Linuxboy is a (hopefully) feature-rich Game Boy emulator mostly intended to be used as a full-blown debugger. I'll most likely write a series of blog posts explaining the inner working in the near future to help emulator beginners understand how the Game Boy worked and how to implement it in code, but for now just I'll focus on actually developing the damn thing.

Status

Currently the emulator supports most of the features of the original Game Boy except for audio and other types of memory banking which are not MBC1.

TODO's

Near future TODO's

  • Finish memory banking
  • Implement Saving
  • Enable/Disable Bootrom
  • Remove Bootrom dependency
  • Fix sprites rendering priority

I'll do it someday, stop bothering TODO's

  • Audio support
  • Button remapping
  • Joypad support
  • Graphical debugger

Tested Games List

Keep in mind that full compatibility doesn't mean perfect emulation, it just means that no errors have been found yet.

Game Compatibility Notes
Tetris 🔵🔵🔵🔵🔵
Dr. Mario 🔵🔵🔵🔵🔵
Bubble Ghost 🔵🔵🔵🔵🔵
Kirby's Dream Land 🔵🔵🔵🔵⚪️ Kirby's inhale behaves weirdly sometimes.
Kirby's Dream Land 2 ⚪️⚪️⚪️⚪️⚪️ Won't boot.
Legend of Zelda, The: Link's Awakening 🔵🔵🔵⚪️⚪️ Tiles sometimes don't load properly when switching areas.
Mega Man II 🔵🔵🔵🔵⚪️ Sprites are sometimes rendered below tiles. (Air Man)
Metroid II: Return of Samus 🔵🔵🔵🔵️🔵 Samus is invisible for the first part of the game.
Tennis 🔵🔵🔵🔵🔵
Super Mario Land 🔵🔵🔵🔵🔵
Super Mario Land 2: 6 Golden Coins 🔵🔵🔵🔵🔵
Wario Land: Super Mario Land 3 🔵🔵🔵🔵⚪️ Sprites sometimes flicker when in little Wario mode
Pac-Man 🔵🔵🔵🔵🔵
Donkey Kong 🔵🔵️⚪️️⚪️⚪️ Weird flashing on menu and levels.
Castlevania II: Belmont's Revenge 🔵🔵🔵⚪️⚪️ HUD is displayed weirdly, tiles pop in and out mid game.
F-1 Race 🔵🔵️️⚪️⚪️⚪️ Race track is not rendered properly.

Screenshots

nintendo link mario_land2 mario_land2_gm tetris tetris_gm mario_land mario_land_gm wario wario_gm tennis tennis_gm kirby kirby_gm dr_mario dr_mario_gm mega_man mega_man_gm metroid metroid_gm castlevania castlevania_gm

Building

Linuxboy depends on SDL2 and GLEW for rendering which can be easily installed by using your preferred package manager.

To compile just run:

make

And to run:

./lboy rom [-options]

Command line options

usage: ./lboy rom [-h] [-b addr] [-s scale [-x width -y height]] [-w addr] [-l state]
  • -b, --break: set breakpoint at 'addr' (hex).
  • -h, --help: print help message and quit.
  • -s, --scale: set screen width to 160 * 'scale' and screen height to 144 * 'scale'.
  • -x, --width: set screen width to 'width'.
  • -y, --height: set screen height to 'height'.
  • -w, --watch: add 'addr' to the watch list.
  • -l, --state: load CPU state from 'state'.
  • -n, --bootstrap: load bootstrap.

Controls

Key Action
w UP
s DOWN
a LEFT
d RIGHT
j A
k B
u START
i SELECT
q/F1 QUIT
F2 DEBUG
F3 DUMP TILE MAP
F4 SAVE CURRENT STATE
F5 DISABLE V-SYNC

About

A feature-rich Game Boy emulator for your linuxbox ;)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published