Have been working on a port of ‘Super Crate Buino’ from the Gamebuino to play on my MiSTer-based FPGA implementation of the Arduboy - and it’s a really great little game!
Sound is the only thing I don’t have working yet, still need to make time to sit down and decipher the undocumented format of the Gamebuino sound ‘pattern’ values… (and decide what to do about the noise channel…)
But it should be fairly easy to modify this port of the game to work on a real Arduboy too, if someone is looking for a project?
Would need to swap out the normal EEPROM functions in place of my modified readEEPROM / writeEEPROM functions for a start, and implement INVERT support for drawPixel (Arduboy2’s drawPixel function is so optimised that it doesn’t support INVERT?!), also BLACK and WHITE are sometimes opposite in the code because the Gamebuino screen is an LCD not an OLED… and I also did some fairly hacky things to easily work with the way the Gamebuino libraries expect things to be - Gamebuino functions expect a global ‘color’ variable instead of passing color into each function (for this I just recklessly hijacked textColor), and Gamebuino code also expects to directly access x and y coordinates for text, instead of using setCursor (so I just made them public).
Apart from that, there are a few exclusively Gamebuino functions and defines required by the game, so I just added them onto the end of my already modified versions of Arduboy2.cpp / Arduboy2.h - but they could be put in an ‘Arduboy2Ext’ instead? (Also didn’t bother changing those functions to make BLACK into WHITE, and WHITE into BLACK - which is why the game appears inverted, which I honestly prefer anyway!)
void drawBitmap(int8_t x, int8_t y, const uint8_t *bitmap); void drawBitmap(int8_t x, int8_t y, const uint8_t *bitmap, uint8_t rotation, uint8_t flip); boolean getBitmapPixel(const uint8_t* bitmap, uint8_t x, uint8_t y); boolean collideRectRect(uint16_t x1, uint16_t y1, uint16_t w1, uint16_t h1 ,uint16_t x2 ,uint16_t y2, uint16_t w2, uint16_t h2);
And there is a fair bit of empty space (where I have stuck the score counter) because of the extra width of the Arduboy’s display resolution… so, room for some pixel-art magic?! (or potentially room for puzzling out how to expand the world view to take advantage of the extra space?)
So… yeah, obviously a lot that could stand to be tidied up, but much of the major hump and head-scratching is already done if someone(s) else feel motivated to make this playable on an actual Arduboy!