I got into 6502 (more specifically 6510 for commodore 64) assembly on my 8-bit computers, mainly because it was nearly impossible to do any type of graphics game without it. It was a love hate thing for me. From what I remember of the assemblers I used back then... they were single pass and they required you to calculate the number of bytes per instruction to know what address to start the next instruction. They didn't have many features, and my computers didn't have enough memory to even leave comments in. It was a fight for every bit. Using memory maps to find places to store programs was also a concern. Especially given the face that 0 page memory, though extremely limited, was faster than other areas.
I had to work with 80x86 assembly as part of my core curriculum in college. While I enjoyed it, I must admit I wasn't great at it... relatively speaking. For example.
I have purchased copies of Michael Abrash's "Graphics Programming Black Book" (which he has made available free in digital form), "
Zen of
Assembly Language: Knowledge" (Which is where my forum name comes from), & "Zen of Graphics Programming : ...". I have read them cover to cover multiple times. Not that I absorbed everything. If you want to read something, that as a programmer, would absolutely blow your mind... then I suggest reading the 'Black Book'. Even if a lot of it is obsolete today, it's a life-changing experience to get inside the mind of one of the best game graphics programmers ever.
I can truly admire the brilliance of people like Michael Abrash and John Carmack. It makes you appreciate assembly language. But it also made me realize that I didn't have it in me to be "THAT" awesome at it. Especially now with API's like directX and the quality of say C compilers these days. I highly doubt that I could write better code than the compilers, and given that there isn't much need to talk with the hardware directly (given DirectX, or Opengl), I don't have much drive these days to get better at it.
TANSTATFC - "There Ain't No Such Thing As The Fastest Code" =)
Graphics Programming Black Book (FREE)
http://drdobbs.com/high-performance-computing/184404919
For those who don't know who Michael Abrash is... Here are some of his credits. I'll have to add some more recent credits (IIRC he is now with Valve). I know he did some work with Graphics Card manufacuters as well.
Michael Abrash is considered one of the greatest programmers of today. With a career that spans from 1982 to today, it's no wonder why he's so famous. His claims to fame include writing the Graphics Programming Black Book and assisting John Carmack in Quake and Doom. He was a former mentor of John Carmack, another game programming legend. In fact, Carmack considers Abrash to rival his own programming talent. Michael Abrash also helped to develop the Microsoft XBox.
Here is a list of books for which Michael Abrash has partial credit:
1984 - IBM PCJR Graphics
1985 - IBM PCJR User's Guide
Here is a list of books written by Michael Abrash:
1989 - Power Graphics Programming
1990 - Zen of Assembly Language
1994 - Zen of Graphics Programming
1994 - Zen of Code Optimization
1996 - Zen of Graphics Programming, Second Edition
1997 - Graphics Programming Black Book
Finally, a list of games for which Michael Abrash has partial (and full) credit:
1982 - Space Strike
1982 - Snack Attack II
1982 - Cosmic Crusader
1983 - Big Top
1993 - Doom
1995 - The Ultimate Doom
1996 - Quake
1998 - Half-Life
1999 - Half-Life (Game of the Year Edition)
2000 - Motocross Madness 2
2000 - Microsoft Flight Simulator 2000
2000 - Half-Life: Platinum Collection
2001 - Serious Sam: The First Encounter
February 1, 2009 10:00 PM PST
Michael Abrash is a programmer at RAD Game Tools, working with Intel on the Larrabee project. He is co-author of the Pixomatic software renderer. He worked on Quake at id Software and on Windows NT and Xbox at Microsoft.
2011 Abrash signs on with Valve Software
http://www.develop-online.net/news/37665/Valve-hires-world-class-development-trio
Your signature has been erased by a mod please reduce it to 600 x 120.
