# How Does A Game Boy's Brain Work?

Despite a huge library of successful games, the Gameboy was deeply underpowered, even for its time. At its heart was a modified version of the same CPU that's still used in some graphing calculators.

Thrifty architecture created some benefits, like a lower price point and better battery life than its competitors. But that also made programming the games that much harder. As JackTech explains in an info-packed 12-minute video, everything had to be written in assembly language using basic commands that also had to account for the Gameboy's minimal storage.

Maybe that's why Gameboy games always seemed to have the best bugs.

One of the best games of all time, Elite, was programmed down to a ridiculous size because of how things were done at the time. I remember an interview where the question was put to Braben and Bell about the 65535 potential galaxies.

The interviewer was amazed there were so many, but Braben and Bell misunderstood, and revealed that there should have been billions of galaxies for true non repeating gameplay, but because of the 8-bit limit, and 12k code limit, they had to take a crucial few bits of code out to keep the size down. The extra bit of code meant the code size became 14k, and too big, so they were forced to remove it.

Those numbers are guesses (except the 65535), they are just there to demonstrate the issue. But they were close to that.

Size and coding issues have long been a problem, its just these days with the luxuries of volume we now have, its been solved for the most part.

All lies, they lost me when they incorrectly stated a 16 bit address can hold numbers from 0 to 2 to the power 16. It can't.

2^16 = 65536

1111 1111 1111 1111 = 65535

Yes they are the same. Binaries least significant value is 0. In general maths it is 1. (0 is no value but in binaey it is still a value, generally in math you start counting at 1 as 0 is nothing, you don't start at nothing.) Therefore 16 bits has 65536 individual combinations which is 2^16.

Edit: yes I have way over simplified things.

Last edited 25/02/16 5:34 pm

A 16 bit address holds values from 0 to ((2 to the 16) - 1). Not 0 to (2 to the 16) as stated in the video. You are talking about the number of numbers that can be represented, which is an entirely different matter. It is not 'the same'. No wonder software is full of bugs when seemingly intelligent people can't understand simple concepts and logical truths anymore.

In boolean algebra 16 bit is 2^16
You are trying to express a boolean algebraic operation in elemental algebra. They are 2 different systems and will give different outcomes. When talking about binary systems you use boolean algebra. A bit is a boolean operator, so don't try express it's value in elemental with out correctly representing the values.

16 bits is 65536 values in boolean from 0 to 65535.
2^16 is 65536 in elemental. From 1 to 65536.
If you want 16 bit in elemental you have to do it correctly not just throw numbers straight across.

Say you have a 2 position switch. The first position, position 1 is off, the second position 2 is on. In boolean position 0 is off and 1 is on. 0 = low 1 = high. See the difference in meaning of values between the systems? 0 has a value. 0 = electrically low. It's not the absence of a value.

So boolean algebra starts counting at 0 not 1.