Old school coding and game programing was magic. The clever tricks that nes game programmers came up with to work around hardware limitations was phenomenal. It went way beyond the bushes and clouds in mario being the same thing but in a different color.
Here’s a great talk by a guy who worked on a 1982 game for the Atari 2600, a game console first released in 1977. It’s a fascinating insight into the early evolution of computing. They didn’t work around limitations. They used a machine to do whatever it could.
If anyone has ever wondered by what standard C is a high-level language, this is for you. Or if you want to know how we ever could have developed something to connect the abstract logic of some algorithm with some glowing pixels on a screen.
IIRC, someone got with the author of that bit of code to ask how they came up with it, but they had simply learned it from someone else. So they tracked them down and found that they had also learned it from someone else. They eventually landed on Greg Walsh as the original author, but for a bit the code had no known origin.
but I’ve accepted defeat in trying to understand it
I may have shared the link but even I don’t know how it how it works.
It’s like admiring the Eiffel Tower; you can understand that it’s a marvel of engineering without understanding the underlying engineering concepts. Such experiences are rare but they truly humble you.
Regarding the square root, understand the following concepts
Bit shifting simply shift the bits to a certain side (Left or right) => 0010<<1→0100
Mathematically, it multiplies or divides the input number with a factor of 2, depending upon the type of shift
If you shift the number n with a nice shift amount x (I have greatly greatly over-simplified this), then you can calculate the inverse sq. root since inverse square root is 2^(-1/2)
Calculating the inverse square root manually will take lots of clock cycles, which was not feasible for a FPS game with the limited h/w
Bit shifting is a lot faster since we are not computing, but instead shifting
The resultant shifting gives us an answer which is close enough to the answer, and that is good enough for FPS games for calculation of reflections.
Old school coding and game programing was magic. The clever tricks that nes game programmers came up with to work around hardware limitations was phenomenal. It went way beyond the bushes and clouds in mario being the same thing but in a different color.
The old scrollers in non-consoles (consoles had hardware scrollers) used funky tech too to reduce overdraw. Fun times.
Restrictions and boundaries spur innovation.
any constraints, really. pretty cool!
Check out demoscene. The mind-blowing things they create with only with kilobytes…
Thanks for this. Got a burst of nostalgia
Yeah. The average NES game was only 200kb.
I had a zx81, 1k ram, still could play pong.
Here’s one of my recent-ish faves on GB, music is so damn catchy
https://www.youtube.com/watch?v=GleZBHhOsmE
In oblivion on Xbox they even reboot the console on a loading screen to clear up ram.
*Morrowind
Thank that is indeed correct.
Were these guys even Real Programmers?
Here’s a great talk by a guy who worked on a 1982 game for the Atari 2600, a game console first released in 1977. It’s a fascinating insight into the early evolution of computing. They didn’t work around limitations. They used a machine to do whatever it could.
If anyone has ever wondered by what standard C is a high-level language, this is for you. Or if you want to know how we ever could have developed something to connect the abstract logic of some algorithm with some glowing pixels on a screen.
Pitfall Classic Postmortem With David Crane Panel at GDC 2011 (Atari 2600)
There’s an ancient myth that a god created the first pair of tongs. Tongs need to be forged in a smithy. Obviously, you need tongs for that.
I am still in awe of the fast inverse square root method used in QuakeIII. Good times.
IIRC, someone got with the author of that bit of code to ask how they came up with it, but they had simply learned it from someone else. So they tracked them down and found that they had also learned it from someone else. They eventually landed on Greg Walsh as the original author, but for a bit the code had no known origin.
I read this article and I know it’s written in English, but I’ve accepted defeat in trying to understand it.
I write code for a living and I’m doing my best to ignore the feelings of inadequacy I’m currently experiencing.
I may have shared the link but even I don’t know how it how it works.
It’s like admiring the Eiffel Tower; you can understand that it’s a marvel of engineering without understanding the underlying engineering concepts. Such experiences are rare but they truly humble you.
Regarding the square root, understand the following concepts
0010 << 1 → 0100
n
with a nice shift amountx
(I have greatly greatly over-simplified this), then you can calculate the inverse sq. root since inverse square root is2^(-1/2)
The resultant shifting gives us an answer which is close enough to the answer, and that is good enough for FPS games for calculation of reflections.
Source for bitshifting
PS: Someone who is more experienced in this domain can correct me if I’m wrong.