ProjectABE (ArduBoy Emulator)

I have just played my Dominoes game which uses this heavily and it works great!

1 Like

I recall not being able to read the dialogue in a previous version. Was that from an even older release? Anyway, I just implemented/uploaded LCD invert. I hadn’t noticed any games using it yet.

Glad to hear it! Here I thought D&U was the only game using delay(). :stuck_out_tongue:

Mmmm … it sort of breaks the ‘frames’ concept but for games that are not using them then the delay() is perfect.

Do the LEDs work? My Dominoes game is supposed to flash the RED led if you try an invalid turn.

1 Like

The timing seems a little out on delay()
The fight delay in D&U is 1500ms and it feels closer to the 800ms I normally cut it down to.

I wonder if one of those changes slipped through into the final D&U? It seems OK on the other games I tested.

Just checked the git it’s still 1500.

LED support would be nice I’ve been playing with all five over the weekend.

Digital LED support works, you can see it when the Arduboy logo is scrolling down. The colours are going to look weird because they’re added to the background.

Analogue control doesn’t work yet, as that requires hardware PWM support.

Your missing two digital LED’s (LED_BUILTIN_TX) & (LED_BUILTIN_RX)

TBH I don’t think anyone is using them other than to check framerate though.

1 Like

Oh, right… I forgot about Tx/Rx. Is that sketch available somewhere?

heres a quick blink sketch

// TX RX Blink Demo - KBC :)
#include <Arduboy2.h>

Arduboy2 arduboy;

void setup() {
   arduboy.begin();

}
void lighty(void){
  digitalWrite( LED_BUILTIN_TX,HIGH);
  arduboy.delayShort(500);
  digitalWrite( LED_BUILTIN_RX,LOW);
  arduboy.delayShort(500);
  digitalWrite( LED_BUILTIN_TX,LOW);
  arduboy.delayShort(500);
  digitalWrite( LED_BUILTIN_RX,HIGH);
  arduboy.delayShort(500);
}

void loop() {
lighty();
}

LED’s in order are RX (green) TX(orange)

1 Like

You should be using the following Arduino macros to control the TX and RX LEDs:

TXLED1 // Turn on the TX LED
TXLED0 // Turn off the TX LED
RXLED1 // Turn on the RX LED
RXLED0 // Turn off the RX LED

Using digitalWrite() will pull in a lot of extra code, and you’d have to reverse the polarities for an Arduino Micro based clone.

Likewise, I hope you’re using the Arduboy2 library functions digitalWriteRGB(red, green, blue) or digitalWriteRGB(color, state) to control the RGB LED digitally, or setRGBled(red, green, blue) for analog control.

1 Like

Thanks! I just implemented the two LEDs and uploaded it.

2 Likes

Thanks for the tip on the macros. I just did a quick comparison and the size difference is immense:
Sketch uses 6912 bytes (24%) using the correct macros Vs 7270 bytes (25%) using digitalWrite()

I’ve been toying around with the LED’s over the weekend digitalWriteRGB() is my normal goto due to the timer conflicts when using ArduboyPlaytune.

I have however toyed with and prefer effects like cross-fading using analog and I’m yet to notice any issue with ArduboyTones so its a bonus. I still need to have a proper look at using setRGBled() because I’ve been a bit naughty using pins & arduino code examples.

1 Like

Just tested Ard-Drivin on a Raspberry Pi 3… surprisingly playable! :smiley:
Video in link:

I’m not sure if it should be classed as a bug or a feature but I am able to load oversized (Cathy3k) games without issue.

There’s no bootloader in the emulator, so that makes sense. You won’t be able to build these games in the IDE, though. Unless there’s any harm in the current behaviour, I guess it’s a feature.

Though, if possible, it would be nice to display a warning somewhere, such as:
This sketch is too big for an actual Arduboy

If you’d try to put the sketch on an actual arduboy, wouldn’t you get an error anyway?

The ide will nag it’s too big but a hex might just upload???