1-Bit Rogue for Arduboy

While I do not use Arduino IDE for porting. I just run my program for ATmega32U4.
But there will be no problems with SSD1306 since I already worked with such a display.

Later, I’ll probably try to port the game using Arduboy librari.

There was an idea how to reduce the size of sprites - this is currently more important.


Report on the work performed )

The OLED screen ssd1306 works well.
Сan try to upload the hex-file to the Arduboy.
This is not the final release. Still lacks memory for sprites - I will change the format of sprites and redo the rendering procedure.
In the firmware there is no USB runtime part - the next flash will have to use a reset.

Now about the promised bonus :gift: :gift: :gift:
In addition to porting for ssd1306, I also ported the game to the color display of ssd1331 (it lasted a little longer).
Now you can see how it looks. As an example of colored arduboy…


Outstanding! This is setting the bar high :wink: Great job so far and thank you for doing this.

1 Like

Just for people that wants to try the .hex, be warned that you will need to use the reset button method to flash another game after flashing this one. And there’s no flashlight mode enabled on this. But it’s really nicely done. :wink:


That is just fantastic - nice work!

I don’t really care about that bit.
All I care was that I can get this up and running on the Arduboy.
He almost already done that.
Keep up the good effort! And…thanks.

1 Like

Looking good! And works unmodified on my SSD1309:


No offense but i wanted to point it out so that we don’t get a ton of users saying they can’t reflash their arduboy after trying it out. Now they know what will happen and how to reflash if something happens.

Just trying to be pro-active here.


Works on VGA1306 now too:

…had to implement a new variation of the FPGA configuration though, to work with both page-addressing mode and chip-select :sweat_smile:


I also can’t wait! Going to be showing this off at work to my co-worker who absolutely loves rouge-likes. He’ll probably buy an Arduboy for it and Midnight Wild, which he is also obsessed with. Haha.

1 Like

Learning the reset trick is like riding a bike. Once you know how to do it you never forget it.

Would need to do some more work to support that fancy screen-wipe effect you do - what sequence of SSD1306 commands are you using to achieve that??

1 Like

@uXe, @GetChiper won’t be notified if you don’t quote him or @-mention him.

If you mean the effect of the collapse of the picture on the screen, it does not the driver ssd1306. The program does this.

1 Like

Yes, the collapse effect is what I meant - does the game use a screen buffer, or just directly address the screen ‘pages’, and then addresses them in a different sequence for the ‘collapse’? Thanks for any explanation you can offer :slight_smile:

1 Like

I wanted to do without buffer at all (for use in color displays, where the buffer is large and can not fit in memory), but the absence of a buffer results in a flicker of sprites. Therefore, I came to a compromise option - Use the buffer only for the screen ‘page’ (128 bytes). The effect of collapse in this case is very simple - the prohibition of drawing individual ‘pages’ of the screen.

1 Like

Good thinking - are the ‘prohibited’ pages just being filled with zeroes then? or are you using some other method to clear them? :face_with_raised_eyebrow:

I fill with zeros.
In any case, even if the buffer is used for the whole screen, you can send ‘pages’ for screen selectively, filling in certain ‘pages’ with zeros.


I signed in for the first time in like a month just to like this post!


Some news on the project.

Changed the method of drawing sprites and the size of sprites. Now there is enough space for the game to fit completely into ATMega32U4. In addition, there is even space for adding new features to the game - which I will soon do.

Realized the output of the display “gray” pixels by changing their state to the opposite through the frame. Accordingly, I received two gradations of the brightness of the pixels in sprites.
It did not look very good. The flickering of “gray” pixels is annoying. Unfortunately I had to abandon this way of displaying sprites. (

Now I add new visual content (new walls and floor). Work continues.