Donkey Kong JR (Game & Watch) Demake

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:

So nobody has played the game even on the emulator ? :smiley:

The cage has a piece blinking at the start of the 1st game and

it’s not reset at the begining of the next game :sweat_smile: :zipper_mouth_face:

Just been playing the game now. Looks great.
But I’m not very good… :frowning:

Yep. I can never get the key. Perhaps this could be tweaked?
Also I struggle to distinguish the crocodiles /birds from the background. Would love to see if the background layers would work with a dither pattern? (e.g. Shadow Runner - First conversion of a TEAM a.r.g. game).

Thanks for your feedback :slight_smile:
Timing to get to key is like you have to jump 15ms earlier because I have added a frame. I could have done like in the original but I always found some frames where missing here but there is no magic: The key is balancing, If when you jump the hand is close to the key then JR catch it :slight_smile:
(look at my YT video at 0:29)

Here is an example with the dithering




1 Like

Thanks for trialling the dithering. The second option seems a good compromise but I slightly prefer the first… or maybe the original?! Really down to personal preference! :checkered_flag:

sorry, which one is the original ? :smiley: