ProjectABE (ArduBoy Emulator) released!

(Simon) #385

Awesome … love to see it improving all the time.

With regards to the serial monitor, I do not have an Arduboy plugged. I have noticed that sometimes I am getting messages from what looks like ‘multiple’ instances of my HEX file running. Its like the old instance is still running in its own thread but not visible anymore as the latest instances is being rendered.

Killing the Arduboy instance and reloading seems to fix the problem above - so the ‘threads’ (if they are truly threads) seem to be killed with ProjectABE (or are they just orphaned and running along merrily in the background?).

(Simon) #386

Another thing I would like to see - if you have the log open then dropping a new HEX file will not close it.

(Felipe Manga) #387

It all runs on the main thread. I was going to implement multithreading support, but then the Spectre exploit was released and browsers crippled a feature I was counting on.

This problem was already solved in what’s going to be version 1.0.0, but I’ll probably only have time to work on it again in a few months. :persevere:

(Simon) #388

No problems and please don’t take my comments as criticism - I love ProjectABE.

I use a Mac so I turn on QuickTime’s screen recording and show the logger and run my code. I can then debug what is going on and move a frame forward or backward and see what is being logged when.


So you have made a off-line version…
And the thing is in 32 bit?
Which means…

Hey GUY, you can finally do work! :slight_smile:
But I need to reinstall the system and BIOS. it’s going nuts.

(Miloslav Číž) #390

Might I suggest a feature? Pixel-art scaling.


(Felipe Manga) #391

I tested some other algorithms previously but the resolution is so low the artifacts looked worse than simply using nearest-neighbor.
In your screenshot, scale2x looks pretty good. I’ll do some testing during the weekend.

(Miloslav Číž) #392

Well, I kinda like these :slight_smile: It’s a lot about the specific game and personal preference. Some algorithms make look some patterns, such as dithering, look awful, but it’s nice to have the option. Some algorithms (e.g. eagle) are super simple to implement and often make the graphics looks much better. Anyway, just my suggestions, thanks for hearing me out.

To make these screenshots I used my own code, which if you want for reference you can find here (the PR hasn’t been merged, but is already working, so you can test different methods yourself).

(Holmes) #393

That’s good to hear! Those scale2x previews look good!

(Felipe Manga) #394

Just pushed an update to the online version:

  • stack area is now underlined in the RAM tab
  • CPU tab shows maximum stack size in bytes (Stack: #__)
  • Fixed @crait’s name
  • scale2x implemented. Toggle with F2.

With scale2x:

Regular scaling:

(Miloslav Číž) #395

Great job, I am loving it <3 It really makes a difference. (I just noticed there’s sound too! Thought it was still missing.)

(Holmes) #396

Just checked out the filter with a few games and it’s looking good!

(Miloslav Číž) #397

Sorry for throwing these requests at you @FManga, but are there CLI parameters other than the input .hex file? I’m running the emulator from a script after compilation and always have to manually move and resize the window. Options to set the position and size of the window would save me a lot of time.

Anyway, I don’t want to bother you too much. If you’re busy, I’ll take a look at it myself, I just don’t know these fancy new JS technologies… only know the good old vanilla browser JS :slight_smile: Might as well learn something new.

(Felipe Manga) #398

You can specify which skin to load via the CLI. If you want an exact size, you’ll have to make/edit a skin. The position is the OS default.

You have a better option: don’t close the emulator. When the compiler overwrites the hex, ProjectABE should detect that and reload automatically.


Feat request:
Is it possible to equip the emulator with a config button and within a set of skins and options?

  • a few arduboy skin colors (red, green, blue, white, black; pure aesthetic, not for me, but I’m sure a lot will like changing the skin color now and then…),
  • A touch screen skin format for the phone (to run arduboy on a touch screen, like mentioned, by using the crosshair on the left, and buttons on the right, and display in the middle).
  • A basic skin version for coding. Just plain black, no glossy screen, no visible chips or mounting points.
    The majority of the screen being the arduboy display, and the main function and directional buttons on one side, the coding window on the other.
    I think the skin is a bit too distracting, and would prefer a larger size screen and just buttons. No visible chip sets. Doesn’t even need to resemble the Arduboy, except for crosshair and function buttons need to be in the right order.
  • An option to change the LED color of the screen
  • An option to negativize the screen (pixel on becomes pixel off, pixel off becomes pixel on)
  • Enable 2 to 3 bit grey scales like on the Arduboy OLED screen.

(Miloslav Číž) #400

There are skins already, press F3 :slight_smile: (Also a cool feature: open some game and press F2.)


F2 and F3 does nothing?

(Miloslav Číž) #402


Wait, are you using an offline version? For me F3 doesn’t work in offline for some reason. Also specifying via CLI doesn’t work (says: file not found). Weird.


yes, offline version, I downloaded a windows executable.


Would also be nice to have some sort of indicator indicating when a code is being built and written to the emulator (like turn on a led).