CyberHack V1.0

Cyberhack_V10.hex (78.7 KB)

Graphics   @vampirics
Code         @filmote
Testing      @Tuxinator2009

Source       Source Code
Hex            Hex File


The corrupted Corpo has to be stopped and your hacking skills will be invaluable.

Hack your way through some of their perimeter servers to earn enough money to buy a CyberDeck which, in turn, will allow you to hack more important servers for even more money. With each CyberDeck purchase, you will progress to the servers holding the inner secrets of the corporation. Complete all available hacks to take down the corporation and make as much money as possible – after all, your actions are not entirely altruistic!

Travel from the safety of your home to the business district to buy CyberDecks as you can afford them or when you have completed all available hacks that your current CyberDeck allows you to access. There are three CyberDecks available and upgrading from one to the next increases the size of the hacking grid, the number of available hacks and the buffer size allowing you to earn more money from a single hack.

But be careful when travelling between locations as you may be spotted by the corporation’s guards which will increase your threat level. Use obstacles in the street to hide behind or hack a building door to reveal a hiding place. Lamp posts can also be hacked which will distract the guards allowing you to run past them.

You can visit the slums to pay for your threat level to be lowered. However, as each CyberDeck only exposes a certain number of hacks, you will need to ensure that you raise the maximum amount of money possible per hack and minimise spending that money to lower your threat level. If you do not earn enough money or spend too much, you may not be able to afford to upgrade your CyberDeck and you will have failed your mission.


Expand the various topics below to learn how to play the game.

Basic Navigation

You can travel between the Commercial District, the Slums District and your Safe House using the directions on the gamepad. Press the A button to reveal the menu of options available to you.


How to Hack

You are a skilled netrunner and are adept at injecting malicious code into the unprotected buffers of servers.

When hacking a server, you will be presented with a number of hacks that you can install. The more hacks you install and the longer those hacks are, the more money you will earn.

To install a hack, enter its code into the server’s buffer via your terminal. The buffer length will ultimately determine how many hacks you can enter and the purchase of advanced CyberDecks will increase the buffer size for you. However, you can maximise the number of hacks installed by overlapping common codes from the one to the other.

Let’s play a simple example:


The first thing to note is the buffer size which in this case is 6 characters wide.

Looking at the hacks, you may notice that there are common strings of characters at the end of some hacks which overlap with the start of some of the others. In the example above, these hacks can be logically rearranged as shown below. Arranging them this way allows you enter the codes 3F E7 16 06 06 into the buffer and install all the hacks. In this particular hack, only five of the six buffer positions are required to complete the hack completely.


However, not all hacks can be solved this easily. In the example below, it is not possible to arrange the hacks so that all can be achieved.


Rearranging the top four hacks happens to provide a sequence that fits into the provided buffer however it does not use all of the available hacks. This happens some times!


When presented with a puzzle like that above, you should look at solving as many hacks as possible. Additional money is awarded for longer hacks so always consider those first.

To help you visualise the hacks, you can press the ‘B’ button to enter a mode where you can scroll through the elements of each hack on the right-hand side of the screen and have corresponding cells highlighted on the left.


Once you have determined which hacks you are planning to complete. You can start the actual attack itself.

Hacks are entered by selecting an element from the highlighted row, followed by an element from the selected column, followed by an element from the selected row and so on until all hacks are complete or unable to be completed or your buffer is full. You are also racing against the clock – your window for entering the hacks will be shut when the time runs out.

Let’s start entering the hacks. In our example, we are planning to enter codes 3F E7 16 06 06 to complete all hacks. When the hack begins, you can only scroll horizontally on the first row.


Selecting the 3F from the top row adds it to the buffer shown at the bottom of the screen and changes the selection mode to allow column selection. You will notice that the 3F on the hack in the right-hand side is also highlighted – showing that this hack is in progress. The 3F in the top row of the grid also has a small check mark beside it to show that it has been selected previously and cannot be re-used.


Scrolling down and selecting the E7 again adds it to the buffer. This time the E7 is highlighted in the hack we had previously started and at the start of a new hack – we are currently completing two separate hacks simultaneously as the characters overlap. The selection mode has also switched back to row again.


Selecting the 16 further completes the two active hacks and starts another.


Selecting the two 06 characters in the bottom-right and bottom-left of the grid completes all of the hacks and the hack is completed!


In more complex puzzles, some of the hacks will be marked as failed as you install other ones as there is simply not enough room to left in the buffer to accommodate them.


The time you have to complete a hack is dictated by the complexity of the puzzle and the CyberDeck you are using. If you run out of time, only those hacks you have installed will be rewarded.


Hacking for Money

You need to make money from your hacks in order to proceed. As mentioned earlier, longer hacks earn more money than shorter ones and you will need to balance the completion of hacks against each other.

Hacks of 2 characters earn $3.
Hacks of 3 characters earn $8.
Hacks of 4 characters earn $15.
Hacks of 5 characters earn $30.

Furthermore, each breach attempt has a target amount - shown in the top right corner which you must achieve for the hack to be successful. Failing a breach attempt will cause your threat level to go up.

In the example hack below, the target is $24. The value of each hack is also listed and you can see that various combinations of individual hacks will get you to your target. Attempting the first, third and fourth hack will earn $3 + $8 + 15 = $26 and complete a successful hack. Completing the fifth hack alone will earn $30.


Moving between Areas

When moving between locationsyou may be spotted by the corporation’s guards which will increase your threat level. Use obstacles in the street to hide behind or hack a building door to reveal a hiding place. Lamp posts can also be hacked which will distract the guards allowing you to run past them.


You start at the left hand side of the world and must progress to the right hand side - not a simple feat! You can hide behind obstacles in the street by positioning yourself immediately adjacent to it and pressing the ‘Down’ button. You will crouch down and will be out of view of the guards.


Lamps can be hacked by pressing the ‘A’ button to reveal your reticle. Move the reticle between the building doorways and lamps to select the one to hack. Press ‘A’ a second time to activate the hack.


Any guard on the screen will be stunned for a number of seconds, giving you time to slip past.


Building doors can also be hacked by revealing the reticle - using the ‘A’ button and selecting the door.


Once open, you can hide in the doorway by moving to it and pressing the ‘Up’ button to hide. Guards inthe area will simply walk past you … but be careful as the doors close after a while, dumping you back into the street and in plain view of the guards!


If you get caught in the guard’s torch beam, he will become alerted to your presence and will start following you. Your health will decrease (as indicated in the top left hand corner) and, if caught, your threat level will be increased.


Compiling / Reflashing

This game was compiled using @Mr.Blinky’s optiimised core and has the USB stack removed to save memory. Due to its size it cannot be compiled using the standard library. When reflashing new games over the top of this game, press and hold the ‘Up’ and ‘Down’ buttons simultaneously for a few seconds from any screen to revert to the bootloader.


hahaha! nice :smiley:

Way smoother release than cyberpunk


Hell yeah choom!

I need to also thank @pharap and @MLXXXp for their assistance getting the ByteBeat and ArduboyTones to play together. Thanks guys!


This is pretty great!

In playing it via emulator, I think I’d like to see the first button press during speed just immediately complete the current sentence instead of dismissing it. Maybe map B to “complete” and A to “dismiss”. I’m sure after you’ve seen the text a hundred times, you just want to go on, but I found myself missing stuff at first.

Can do … but the two different steps of complete and dismiss will not be obvious to the player.

BTW, I have only 22 bytes free so this might be stretching the friendship.

Actually, maybe not…

I was going to give the game a quick try earlier, but I couldn’t actually get it to compile on my end because the compiled size was too large*, so I started to look for ways to get it under the 100% barrier. (I didn’t tell you at the time because you’d only just published and I knew it would be night where you are, so I didn’t want to start bothering you with extra hurdles.)

Assuming my savings will still apply to whatever set up you have that’s compiling under the 100% mark, I found an extra 56 bytes in total.

They’re on this branch if you want a look…

Even then, it might not be enough spare to do something useful with, but it’s the thought that counts.

(I found one other potential saving, adding setCursorX and setCursorY to the font then replacing setCuror calls when only one coordinate needed to be changes, but I didn’t investigate it fully. Should be about -2 bytes per change, crazy knock-on effects permitting.)

* Perhaps you’re using a more up-to-date version of Arduino/GCC, I haven’t updated mine since that update that forced verbose mode on Windows.

I have compiled it using Mr.Blinky’s optimised core.

1 Like

Ah, I take it that’s a separate boards package? That would explain quite a bit.

(I might grab the package and check the figures tomorrow, but not now because it’s late here.)

Yes it is. I did point it out in my original post but its hidden.

I might have skimmed that and assumed it was achieved by incorporating something that would normally be (part of) an external library into the game code itself, rather than being a separate boards package.

Wow, you’re not quite at Atari 2600 kernel levels of byte scrounging, but that’s very close. Definitely consider my suggestion a priority 3 issue at best.

Can you create a pull request for your changes - the accidental use of the function was a major oversight. The rest are pretty straight forward!

On the optimised core - I found that it compiled better on Windows than it did on MacOS. This is probably also a difference in GCC. I have compiled on MacOS so you will probably witness a few more bytes saving that I got.

1 Like

And merged!

Saved 60 bytes …

@Pharap did you manage to get the HomeMade board package (with the optimised core)? If so, I would be keen to see if you get the same compilation size as me. On my make it comes up as 28590 / 1539 on my Windows machine its 28456/1544.

Its a pity that I prefer to use the Mac - there is a 134 byte difference just there!

Note quite that low level … I have done as many tricks as I can to minimise memory usage. As you can see, someone with a fresh set of eyes can find new things whereas I think I am exhausted.

1 Like

How come mac is adding more bytes?

I think it has a different level of GCC - but not sure. Maybe it stamps ‘Steve Lives’ into the code at various points?

1 Like

Are you compiling with Arduino or are you using make or vscode or something?

I am using VSCode but it directly calls the Arduino IDE to compile. I have the same version of the IDE on both machines but it could have a different GCC underneath.

One other interesting point - if I use the Homemade Optimised Core on windows it causes the screen to be offset by half a screen on the ProjectABE emulator (running locally). This doesn’t occur when doing the same on the Mac though.

Weird that half screen thing is a bug you get on SSD1309 screens when trying to interpret the charge pump command. Wonder if that could be related.

Unless I gave configured the win machine incorrectly :crazy_face: