Donkey Kong JR (Game & Watch) Demake

Here is my vision of Donkey Kong Jr for Arduboy.


99% done.
Note: You can jump to the key by using LEFT+A like in the original game, but the button B = LEFT+A (so it’s up to you so see if you’re a real one or not) :slight_smile:

What is missing : Game B
Reset Misses at 300 points

v.0.99a (23/08/2020=
arduboy_dkjr.ino.leonardo.hex (76.5 KB)


Nice. If you need a pair of optimizing eyes. I’d be happy to have a look.

1 Like

This is one of the best G&W port I saw on the Arduboy. Nicely done!


Pixel Perfect? It looks fantastic but of course the original used LCD screens so they had the advantage of nice, curved edges on their graphics.

I wanted to build this one but i guess now I don’t have to!

Excellent work.

I too may be able to help optimising. I have been there with many of the PPOT games.

1 Like

<nicks out the USB code> :grin:


Start by removing text functions by using Arduboy2Base class instead of Arduboy2, if this hasn’t been done already.

Then try to optimise the code.

Then remove the boot logo.

If that’s not enough, only then eliminate the USB code.


That’s not my only trick … but its a great one!

Yep … that’s the rest of my tricks gone.

don’t get me wrong. Removing USB would be my last resort.

And mine! But when you are trying to make something big on the Arduboy (especially graphic intensive) the question of the USB code will always come up!

Hi thanks for your suggestions.

@filmote yes ‘pixel perfect’ because except of shrinking the graphics, I have used the 160x144 gameboy ones (that I have modified a bit for example to see the key when you are on the second level) with a camera effect. Sorry for the confusion.

I have removed to logo and added the fruit :

Now I have only 144 bytes left.
I have some ideas to win some bytes by compressing some images, or adding 16pix sprites for the cage on top of Kong to finish the game.
Optimizing is the best challenge as it is where you can learn new stuff.

I’m beginner with the arduboy & c++ also, I’m not sure how to:
-Use Arduboy2base instead of Arduboy2 (then it means I won’t be able to compress some images with drawCompressed if I have to ?)
-Eliminate the USB code. How to do this ? and what is the negative effect of doing this ?



Using Arduboy2Base instead of Arduboy2 will remove the print function amongst other things.

Simple change your declaration from Arduboy2 arduboy; to Arduboy2Base arduboy;.

To drop the USB, you need to add the macro …


You might as well put it straight above the Arduboy2Base declaration.

More information can be found here >

I’ll repeat the wqarning:

Warning: Although this will free up a fair amount of code and some RAM space, without an active USB interface uploader programs will be unable to automatically force a reset to invoke the bootloader. This means the user will have to manually initiate a reset in order to upload a new sketch. This can be an inconvenience or even frustrating for a user, due to the fact that timing the sequence can sometimes be tricky. Therefore, using this technique should be considered as a last resort. If it is used, the sketch documentation should state clearly what will be involved to upload a new sketch.

You should include a return to bootloader function from you title screen (assuming you have one). The convention is to have the user hold the down button for two or more seconds, then call:

1 Like

@filmote thanks.

I don’t think I will drop the USB.
Using Arduboy2Base, I won 2.126Kb
And by improving the code I have now 2.420Kb free… Let’s say a huge amount of space :slight_smile:


Here is a little update :


That’s beautiful … and just as I remember it on my G+W.

Very good job :wink:

I have uploaded a playable version in the first post.

This is soooo good!

This great, but the timing to get the key seems way harder then on the actual dk junior G&W…

yes, this is different.

2 reasons :

  • I had to lower the tree to be able to see the key.
  • I have added a frame when the monkey jump.
    (and also one when the monkey slip [when you press Left without jumping]).


So of course, you have to jump earlier :slight_smile: