Retro GameBoy Web Console (CheerpJ Powered)

A fully interactive, browser-based GameBoy-style console that runs Java .jar games using CheerpJ - no Java installation required.


Inspiration

This project began with the simplest spark: boys being boys who love games. The moment we heard the project involved Java, we instantly wanted to create something related to gaming. That excitement led us to design a fully functional, retro-inspired GameBoy experience that runs entirely inside the browser.


What it does

The Retro GameBoy Web Console recreates a classic handheld gaming experience on the web. It includes:

  • A power button with LED indicator
  • Authentic GameBoy-style boot animation
  • Scanline LCD effect
  • D-Pad, A/B, Start, and Select buttons
  • A cartridge slot interface
  • Ability to load and play Java .jar games via CheerpJ

Users can power on the console, watch the startup animation, insert a cartridge, and instantly play Java-based games — all inside their browser.


How we built it

We used:

  • HTML/CSS for the console body, retro-styled UI, and screen effects
  • JavaScript for controls, state management, animations, and input mapping
  • CheerpJ 3.0 to run Java .jar games through a WebAssembly-based Java runtime in the browser

We built:

  • A cartridge loading system
  • A scaled Java game display using cheerpjCreateDisplay()
  • A virtual controller mapped to keyboard events
  • Power cycles, boot sequences, and UI transitions

Every detail - from the power LED to the screen bezel - was manually crafted to mimic the classic device.


Challenges we ran into

  • Integrating CheerpJ into a custom-designed canvas container
  • Ensuring all .jar games worked reliably
  • Handling input mapping for both keyboard and on-screen buttons
  • Building realistic power on/off behavior
  • Managing render issues when the display resized
  • Timing the CheerpJ initialization so cartridges load correctly

Accomplishments that we're proud of

  • Creating a polished, fully interactive retro console UI from scratch
  • Successfully running real Java .jar games in-browser
  • Achieving smooth animations and transitions
  • Building responsive controls for desktop and mobile
  • Combining nostalgia with modern web technologies in a seamless way

What we learned

We learned:

  • How to effectively integrate CheerpJ with a custom frontend
  • How Java apps behave in browser-based JVM emulation
  • Advanced event handling for simultaneous button presses
  • UI/UX design considerations for retro interfaces
  • Managing animation timing, state transitions, and performance

Most importantly, we learned how creativity and technical challenges can merge into something fun and memorable.


What's next for Retro GameBoy Web Console (CheerpJ Powered)

Planned improvements include:

  • A full game library UI
  • More .jar cartridges
  • Support for save states
  • Retro audio support
  • Alternate skins (Pocket, Color, Advance)
  • User-uploaded cartridges
  • Extra visual effects (battery warnings, screen flicker, animations)

Contributors

  • Krithik Sharan Suresh Alagianayagi
  • Asjad Moiz Khan
  • Uday Kiran Reddy Mule
  • Haritej Karimisetti

If you'd like, I can package this as a downloadable .md file too.

Built With

Share this project:

Updates