ProjectABE (ArduBoy Emulator)

Hello all,

this is something I’ve been working on for a few days:

It lets you play and make Arduboy games (hosted on @crait’s & @eried’s repo) in your browser. It’s opensource, of course, under the MIT license. Suggestions and contributions are always welcome.

To exit a game and get back to the list, click on the power switch on top of the screen.
To edit a game, click on the USB port!

What do you think? Is this of any use to you?
What other features would you like?

To-do list:
See issues.

Version number meaning:
The version number is made up of 3 parts:
v [reserved] . [debugger] . [compatibility]
So if a release makes changes to the debugger, the second number increases. If the actual core has been modified and game compatibility may have become better (or gotten worse :stuck_out_tongue:), then the third number increases. That way you can easily tell what to expect and if a new release is relevant to your interests.

Change log


  • New Repo list interface
  • Initial sound support


  • performance increase due to inlined memory access, where possible.
  • less verbose console in games that write timer registers often (affects performance).
  • repo games’ names appear in the title bar / browser tab
  • fixed int16/8 variable watch in the debugger
  • fixed reset button
  • fixed drag-and-drop in Firefox.
  • actually contains an attempt at documenting something.
  • gif/hex/zip files now have extensions when saving in Electron
  • image converter supports compressed bitmaps
  • better timing precision (needed by Sensitive and Ard-Drivin)
  • removed the 3-second delay in application startup
  • implemented LCD invert command
  • fixed auto-reload bug


  • performance should be much better on mobiles.
  • make the arduboy and buttons unselectable. Was annoying on phone.
  • links to valid sourceUrls can be used instead of hex files in the “url” parameter. Example
  • faster file switching with the fuzzy finder in IDE (Ctrl+P)
  • QRCode generator pointing to last build made in IDE
  • RAM tab is commented with global variables automatically
  • Mouse-over global variables while a sketch is running to see their values.
  • After a successful build, a bar displays flash space usage above the code editor
  • GamePad support
  • fixed bug in NEG op.


  • drag-and-drop image into source editor to convert into C code. Support for PNG transparency.
  • Basic file management (new file, rename, delete)
  • download source code button
  • drag-and-drop zipped source code into editor


  • support bitbucket and framagit source hosting
  • support direct link to zip and ino files in sourceUrl
  • gif recording (Press ‘R’ to start and stop recording)
  • all the games work, AFAIK


  • “New Game” button in repo screen.
  • misc bugfixes in the IDE (sourcecode getting nuked on compile)
  • bugfix: SSD1306 command AF had a bug. It acted like a 2-byte command, breaking whatever came afterwards
  • major bugfix: 16-bit register opcodes were not setting the Z flag correctly (screen shifted down bug)
  • major bugfix: copy+paste mistake… ST Y+ and ST +Y were incrementing the X register. Fixes a whole bunch of games, especially TeamARG’s.


  • Debug and step through C++ code, or whatever is left of it after GCC compiles with -Os.
  • RAM inspector / editor / debugger. Break after reads/writes to certain addresses.
  • Fixed games freezing due to ADIW not setting the carry bit correctly.
  • Fixed games bootlooping due to ICALL not storing return address correctly.
  • Fixed games crashing due to ASR doing an unsigned shift, instead of signed.


  • Direct-to-emulator: skip the repo by adding a file to the url.
  • Direct-to-emulator with Arduboy turned off:
  • keyboard input fixed in MS Edge
  • new source pane in Debugger with C/C++ syntax highlighting thanks to Ace.js
  • automatically pull source code from master branch if .hex/.arduino is hosted on github
  • new Heroku-based compiler service
  • added arduboy-related libs to service so games should have all they need
  • added Ctrl+Enter shortcut to start build
  • autoreset Arduboy when a build is completed and transferred
  • made logging a bit less verbose (might have been affecting performance)


  • Beginnings of a debugger (Click on the USB port!). Chrome only, for now. CSS is broken in Firefox.
  • Added links to games’ source. Click the author’s name. You might need to wait for a repo refresh.
  • Tetris Microcard mode. Click on the chip next to the screen. Good for 1945 and Breakout-V.
  • Arduboy background changes color whenever the repo cache is updated (every 3 hours).
  • No perf/compat changes


  • Implemented SSD1306 opcodes 22 and 21. Fixes Gamebuino games (Crabator, Paqman, Invaders…).
  • implemented SSD1306 opcodes 00 to 1F. Fixes ZooEscape.
  • Implemented At32u4 opcode BRBC. Was crashing Bang! Bang!, maybe others.
  • .arduboy file support
  • added a makeshift repo for TeamARG games (None are actually playable, yet)
  • drag-and-drop your own hex files in the game list screen to play (Chrome only)


  • Keyboard support. Arrow keys, A/Z/Ctrl and B/S/X/Alt. Esc goes back to game list.
  • Fullscreen support. Press F to toggle. No onscreen controls, you will need a keyboard to play.
  • Added @eried’s repo
  • Use banners when screenshots are not available
  • Repos are refreshed every 3 hours
  • Fixed error in screen controller code
  • Fixed memory leak

initial release


This is awesome, I tried in my phone and it works :smile:


Awwww not working for me… Got a nice Arduboy in my screen but display is blank, the on off switch works though…

Android Nougat / Chrome here.

That’s odd. I guess I should have implemented some sort of error logging! >_<
I’ll see to it when I get back home, thanks for the heads up!

1 Like

This is all I’m getting. If you need me to test anything let me know. This is great for Arduboy owners to quickly try out some games, find something and then upload. And great for yet to be Arduboy owners to discover the ton of fun available!


1 Like

I use Firefox in my Axon 7 phone, and besides minor issues (some glitched text) and slow speed everything is pretty fully functional:

1 Like

@senkun: Could you specify the exact phone model and chrome version it is you’re running?
It’s going to be much easier to know what’s going on when I get an error log implemented. :frowning:
So far I’ve tested it on an Amazon Fire tablet and an LG G4 (Android 6.0).

@eried: Thanks for those screenshots, I only noticed firefox didn’t support pixel resize because of them! I’ll have that fixed on the next deploy. And how did you get RooRun to run?! It just freezes after the bootlogo for me. :stuck_out_tongue:

1 Like

Where’s RooRun? All I see is Back To The Jungle.

1 Like

Mixup… I’ve never played any of these games (I don’t have an actual arduboy yet), so I thought Roo Run and Back to The Jungle were the same game for some reason.

Yeah, I switched the repo to mine thanks to your clean code :slight_smile:

How did you coded all this? which IDE? tools, etc?


This is neat I would use this all the time even more so if it had full screen and controller / keyboard support is by far the most comprehensive Arduboy repo

I’m having mixed results on iPhone 6s using both safari & chrome but games are actually booting and some are even playable, that is great for a preview considering most emulators barely give you a boot screen in their early stages.


@eried: Heh, I knew something was odd… :stuck_out_tongue:
I added your repo to the master version, I’ll push it live when I get the error logger done.
As for tools: I’m using Emacs (IDE) and gulp+browserify.js+babel.js (build). I think that’s basically it.

@Keyboard_Camper: Thanks for the report! Coding for iOS devices is always a headache, so it’s good to hear things aren’t that bad. I’ll add fullscreen + controller support to the to-do list.


All info in attached screen shot, F5122 is the 64M dual sim Xperia X, hope that helps and looking forward to your fixes. Cheers!


1 Like

Made an update (0.0.2), change log in first post.

@senkun: Thanks for help. Are you getting the same result on every game you try? I haven’t added the log yet, it’s going to be a bit of work. :frowning:

@Keyboard_Camper: You got half your wish, no controller support yet. :wink:

Is there any reason why these repos don’t have TeamARG games?

1 Like

Unfortunately, yes. Every game I get just a blank screen :frowning:

If I eventually add external file linking I will add TeamARG games, they need to have control of the files to want their games in other repos.

Too bad I only have the description, not the authors. Maybe you can put the link of the sources instead of <>?

I tested in Windows 10 version 1709, Surface Pro 4, 16 GB ram core i7:

Firefox 57: Emulation OK, Controls OK
Chrome 62: Emulation SLOW, Control OK
Edge 41: Emulation OK, Controls NO
1 Like

Try 1943 I just did a full level on iPhone


Good challenge. It feels easier in the phone because the speed


Firefox 57 Android 7.1.1


Thanks for the further testing, @eried. It’s interesting that Firefox is faster than Chrome, it’s usually the other way around.
The fact that it runs at all on Edge is also pleasant a surprise!

I made a bunch of changes (log in first post). Still trying to figure out why it halts/bootloops so often.

Firefox recently did a big update where their main focus was improving browsing speed so it’s possible they did some under-the-hood stuff that’s made this sort of thing faster.