ProjectABE (ArduBoy Emulator) released!


(Felipe Manga) #1

Hello all,

this is something I’ve been working on for a few days:
https://felipemanga.github.io/ProjectABE/
sprite

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

v0.7.9:

  • New Repo list interface
  • Initial sound support

v0.6.8:

  • 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.
  • README.md 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

v0.6.7:

  • 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.

v0.6.6:

  • 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

v0.5.6:

  • 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

v0.4.5:

  • “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.

v0.3.4:

  • 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.

v0.2.3:

  • Direct-to-emulator: skip the repo by adding a file to the url.
  • Direct-to-emulator with Arduboy turned off: https://felipemanga.github.io/ProjectABE/?url=null
  • 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)

v0.1.3:

  • 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

v0.0.3:

  • 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)

v0.0.2:

  • 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

v0.0.1:
initial release


How difficult is creating a game, for an absolute beginner?
I destroyed my Arduboy [RIP]
Help with Sprites?
Game Jam 2.0 - COMPLETE!
Hello, Commander
KeyKat - I.T. Turn the computers off and back on again!
Tamagotcha v0.1 (Game Jame 3)
Better Development Environment?
Hi everyone! I'm new
MicroCity - City simulation in your pocket
(Erwin) #2

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


#3

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.


(Felipe Manga) #4

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!


#5

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!


(Erwin) #6

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



(Felipe Manga) #7

@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:


(Pharap) #8

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


(Felipe Manga) #9

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.


(Erwin) #10

Yeah, I switched the repo to mine http://arduboy.ried.cl/ thanks to your clean code :slight_smile:

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


(Scott R) #11

This is neat I would use this all the time even more so if it had full screen and controller / keyboard support

http://arduboy.ried.cl/ 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.


(Felipe Manga) #12

@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.


#13

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


(Felipe Manga) #14

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?


#15

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


(Erwin) #16

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

(Scott R) #17

Try 1943 I just did a full level on iPhone


(Erwin) #18

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

Firefox 57 Android 7.1.1


(Felipe Manga) #19

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.


(Pharap) #20

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.