1-Bit Rogue for Arduboy

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.


Thank you for the update!!!

I’m looking forward to playing this game.

There’s something new

  • added more environment sprites
  • added animated sprites of walls and floor
  • added satellite (it will further show how much the character is close to the final boss, probably …)
  • added visual effects of strokes, appearances of steps, death, transitions to the next floor
  • monsters after death will leave a puddle of blood

In the plans

  • add wiki to killed monsters, weapons (symbol table and text output procedure already added)
  • update the level (taking into account the newly added sprites of walls and floors)
  • add a couple monsters
  • add two more characters that you can play after the previous game (perhaps it will be an archer and a witch)
  • the new characters are planned a completely different style of play (remote attacks and magic attacks)
  • I leave the sound for later
  • of course, all these changes will be possible until the memory space is over

I limited the game to the first boss (I need to update the levels)

hex file updated

The boot method remains the same (I need to think about what to do with this …)
but for now -


Finally putting this onto my Arduboy, now! Can’t wait until this thing is considered ‘done’ or ‘done, enough!’ Already looks beautiful!


If you’re talking about the original Android game, then I was not going to copy it. I liked the general idea, but the implementation on the microcontroller imposes many limitations that in the gameplay can not be ignored. As a result, I developed game mechanics taking into account the limitations of the microcontroller and it does not strongly echo the original. And I took the sprites from the original game for faster development, but if I succeed, then I will change the sprites to my own.


Is it normal that the difficulty is thru the roof?


I played the Android (or iPhone, maybe Blackberry) game before, and it wasn’t common for you to get to the first boss without upgrading anything, although I pretty much ventured into the 3rd boss level with a … level 5 knight maybe?
Takes a while to get to.

I want to implement the transition to the bootloader by holding down the button B.
In the library, this is done by forcing the watchdog timer (exitToBootloader() ).
With the Caterina bootloader it does not work - the game is immediately launched.
Will it work with the Arduboy bootloader? Or are additional actions necessary?

Just to let you know:
you can edit your post with the pencil icon, you don’t have to delete the whole post if you make a mistake.

From the factory, the Arduboy has the unmodified Leonardo version of the Caterina bootloader installed (which is why it appears as a Leonardo in the IDE port selection).

To invoke the bootloader, you have to set the bootloader magic key value at the proper location, to be detected when the WDT times out and interrupts.


Thanks a lot!
Updated the HEX-file. Now it’s easier to write another game in the Arduboy.
Just hold down the B-key.


Almost finished bestiary - information and statistics on mobs.
The statistics are stored in EEPROM (64 bytes - maybe a little more)

Are there any recommendations for the address of the placement?



Anything above EEPROM_STORAGE_SPACE_START (which is 16).
We don’t actually have a list of which games use which EEPROM addresses.

Maybe 384? (3 * 128)

ok, let it be 384 (64 bytes)

Updated the repository.

Now in the game you can see all the information on the mob (press the B key):

  • attack power
  • hp
  • detection distance / attack distance
  • the number of deaths of the mob
  • number of strokes per pers

Also now there is a score (and the best score) in the game.

Need corrections in the texts?
My English is not very good )


@GetChiper Thank you for working on this game. I have 1 question for you. Is is normal that even the first few creatures we are facing can kill us in 1 or 2 hits? I am to a point that even if the game looks real promising, the gameplay itself is almost not payable to me.

Maybe i am just doing something wrong. Maybe you just didn’t adjust the gameplay yet (and that’s ok)

Also in the bestiary, some of the stats are weird for exemple:

Power 2
HP 2
Range 4/1
Dies 508
Hits >60000

The last 2 are impossible since i played the game twice only. My guess is that the Bestiary is reading EEPROM information from another game probably…

1 Like

In occasion of a heavy game -
No mob before the first boss should kill for 2 hits (if so, then this is a bug). But the game should be difficult. This is a feature of roguelike games. In them, to die many times to achieve the goal - this is normal.

For successful passage of the boss, you need to plan your actions correctly, plus you need to be lucky enough to get a weapon from the chest.

Each successful passage of the boss adds one additional life at the beginning of the game. Usually after the first passage of the boss next time it is no longer a problem. Especially the third and more passage.

p.s. In any case, the balance of the game beyond the first boss has not been tested yet and everything will depend on the calls for the game.

As for the incorrect stats of bestiary -
This is the remainder of the data in EEPROM from other games.

The initial data of EEPROM (255) is reset to zero automatically.
But the remnants of data from other games are reset with a crystal in the cemetery (the swordsman need to act crystal).

Updated the repository. Use the latest version.

1 Like

Thank you, and i will try to post a video of what is happening in case it’s a bug. I am quite used to Rogue-like game, so i knew that it had to be hard, but like i said, the second mob i encountered was able to kill me In 1 or 2 shots.

Thank you for your answer! You are doing a great job :wink:

1 Like