Learning Legendary Hardware
If you love software, you also try to understand the hardware to the deep down. It is not an easy task : There are many great programming books but few that explains hardware very well (as Michael Abrash once wrote: the Intel Documentation is "slightly more fun to read than the phone book"). In my quest for knowledge, I found two hardware books to be outstanding:That Wouldn't Die, the Amiga with its elegant co-processor architecture is a vivid example:
Some parts were so good that Future Crew devteam wrote an Amiga Copper emulator for PC in order to produce the legendary Second Reality. But ultimately, its greatest asset (a small CPU with dedicated co-processors) became its greatest liability when it proved "uniquely unsuited to run DOOM".
Older hardware are much simpler (the Atari 2600 did not even have a framebuffer). That simplicity lowers the learning curve and is less likely to discourage beginners. I consider them a good starting point before learning superScalared-cachelined-SMPed-MESIed-systems.
A few dedicated engineers have documented those legendary machines by de-constructing the greatest applications they used to run. MIT Press book editor has opened a Platform Studies section for them and they are incredibly pleasant to read:
The Future Was Here: The Commodore Amiga
The Future Was Here: The Commodore Amiga takes the most iconic applications of the Amiga in order to progressively explain the overall architecture :
Chapter one is all about the legendary Boing demo. It explains :
- The Bitplanes based Display system.
- Denise ViewPort.
- Denise capability to set bitplane offset individually.
- Paula Sound chip.
The book then switch to Deluxe Paint internals and demonstrates :
- The different graphic modes available (including EHB).
- Agnus DMA Blittering.
- Agnus Copper chip.
- Difference between Fast RAM / Chip RAM.
- The Amiga HAM graphic mode allowing 4096 colors on screen: A late hack that proved paramount for raytracers and digital photography.
I won't spoil the rest but the list goes on an on, including the genlock so instrumental to the rotoscoping used in Another World, AmigaOS, The DemoScene (with a strong emphasis on the beloved Copper) and an in-depth analysis of a Shmup :
Menace that featured hardware collision detection.
The final chapter "The way the future Was" takes an interesting point of view on the end of the Amiga. Instead of the usual Commodore blaming, the author points towards the innovative design of the machine itself and its inability to run...DOOM.
Racing the Beam
If you think programming those days is hard, think of the Atari VCS architecture: 128 bytes of RAM,
one color per sprite scanline and NO framebuffer (you had to pace your renderer to the TV electron beam).
Racing the Beam: The Atari Video Computer System is a great book which explains the Atari 2600 hardware via six games deconstructions:
As a Bonus, read Landon Dyer (Dadhacker)'s blog about the post 2600 story of Atari: The Atari ST (part 1), The Atari ST (part 2) and Donkey Kong and Me.
Codename Revolution: The Nintendo Wii Platform
Not very technical (although it details the Wii Remote greatly), it translate well the deliberated "Power isn't everything" of the Wii.
Commodore: A Company on the Edge
Note focused on the technical side either but featuring the key events of the history of Commodore, from MOS Technology to The Fall in 1992-1994. A great follow up if you enjoyed "The Future was Here".
Commodore: The Amiga years
A book dedicated to the Amiga that unfortunately keep on being delayed :( ! Let's keep on hoping.
Bonus : The PDF explaining cachelined-SMPed-MESIed-systems Memory Barriers: a Hardware View for Software Hackers like if you were five.
Add a comment
Look over here: http://aminet.net/search?query=ADoom
Fun facts: Shiraz Shivji the developer of the C64 has also developed the Atari ST.
Jay Miner the developer of the ATARI 2600 has also developed the Amiga.
Racing the beam is frankly a mess. While some technical details are very interesting, it too frequently jumps from outlandish comparisons of Atari games to the modern games, such as GTA, written in pretentious academic language to deep technical reports, with barely explained terms and abbreviations.
On the Egde is written very well, but it is a story about people and events, it doesn't go into technical topics deep enough. But still a great book!
Not many Amigas were able to break the 30FPS barrier, but neither could many PCs around that time.
Also, note the explanation why Amigas were terrible at 640x480: http://web.archive.org/web/19980709145644/http://www.balldesi.demon.co.uk/p_mcgavin.txt
That's not what the quote said, it said the Amiga was unsuited to running Doom not that it couldn't. The book makes the argument that Amiga's system of bitplanes makes vector/3D graphics much more difficult to manage than the typical PC approach of assigning a number of consecutive bits to each pixel.
In the book there's also a discussion of how the Amiga's tightly integrated CPU and custom chips (eg. the CPU clock speed was chosen to be an exact multiple of the video refresh rate) which allowed it to be so far ahead of the competition in the 80s also meant that it was much harder to take advantage of the sheer speed improvements in individual components used in typical PCs.
I strongly recommend you read the whole book before leaping on an incorrect interpretation of a single out of context quote.
When using a gfx board you have the chunky display mode.
I had an Amiga 1200 with PCI-board, Voodoo3 gfx board, sound card and PowerPC board.
Im curious you guys recommend reading WAY TOO MANY books... How much time it does take you to read a single book?(lets say a 600 pages one) In my case it seems to take me forever(months).
how you do it?
The problem is that Doom is ancient so there are ugly hacks in the code that is not necessary today. I would like a simple small engine that is modern, which is clean and pure. Do you know of any books or tutorials on this matter? Or, can you write a blog post of the basic principles of such an engine? I bet you would get many many hits, because there are many many aspiring game programmers! :)
Have you checked out the source code of Doom 3 BFG ? The engine was revised to run as a state of the art game on PS3, XBox 360 and modern PCs.