Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

uHART83 — a Game Boy that boots to a Unix shell

A minimalist Unix-like system running on a Game Boy (SM83 CPU), in colour. It boots straight into jash, its little shell.

uHART83 running on a Game Boy Color

uHART83 demo — booting and running shell commands

boot splash   jash shell with on-screen keyboard

  • jash — uHART83's shell: ~12 commands — pwd, ls, cd, mkdir, rm, cat, whoami, date, uptime, df, motd, fortune, help
  • Micro VFS — in-RAM hierarchical filesystem: /bin, /etc, /home, /root, /tmp, with /etc/motd, /etc/hostname, /etc/os-release
  • Colour — auto-detects Game Boy Color: rainbow palettes, black paper with vivid ink (a Unix terminal look). Falls back to crisp grayscale on a classic DMG — the same ROM runs on both
  • On-screen keyboard — D-pad + A/B/Start/Select drive a soft keyboard, so the shell reads typed lines with only the Game Boy's 8 buttons
  • Boot sequence — APU jingle, splash title, then jash

Building

Requires the GBDK-2020 toolchain (lcc targeting SM83):

cd src
lcc -Wm-yc -Wm-yn"uHART83" -o uhart83.gb \
    main.c vfs.c jash.c tty.c sound.c splash.c colors.c

-Wm-yc marks the ROM as Game Boy Color compatible (also boots on DMG).

Running

In an emulator (PyBoy shown; any GB/GBC emulator works):

./run.sh                 # opens PyBoy in CGB mode (needs: pip install pyboy pillow)

Or load uhart83.gb in BGB / SameBoy / Mesen, or flash it to a flashcart and run it on real Game Boy hardware.

Controls

Game Boy Action
D-pad move the on-screen keyboard cursor
A type the selected character
B backspace
Start run the typed command
Select toggle letters / digits layer

Source

File Role
main.c boot + shell loop
jash.c the shell — command parser & built-ins
vfs.c in-RAM hierarchical filesystem
tty.c terminal output + on-screen keyboard
colors.c Game Boy Color rainbow palettes
splash.c boot splash + jingle
sound.c APU beep (channel 1)
hart83.h shared types and subsystem contracts

spike/ holds standalone experiments kept for reference.

Demo

The animation above is jash-gameboy.mp4 (full quality) composited into a Game Boy Color bezel — boot jingle, splash, then jash running help, ls, fortune, and friends.

License

Unlicense — public domain.


F E R M I ∞ H A R T <contact@fermihart.com>

About

A Game Boy that boots to a Unix shell — uHART83, in colour. Its shell is jash. SM83 / GBDK.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages