I enjoy reading about techniques used in NES-era games. Is there a blog or site that is pretty much dedicated to this topic?
I'm looking for general coding techniques. Preferably language agnostic, but that doesn't really matter. If you take a look at the links I posted about you will see what I mean.
The NES specifically is very old, so you're not going to find too too much on that. This past year at the Game Developers Conference had a number of classic game Postmortems, which sounds more like what you're looking for. You can find many of them freely in the GDC Vault.
If you want something more, the GameBoy survived for a really long time (I worked on and shipped a commercial game in 2001 that still sold > 200,000 copies), specifically the GameBoy Color had graphics hardware on par with the original NES (better actually). For the most part, a lot of old game consoles and old computers were similar in capability. The only thing that set apart a Nintendo from a Commodore 64 was support for a larger number of on screen sprites, and registers for controlling the horizontal and vertical scrolling of the character map (background). Everything until 3D accelerated consoles came along (N64, PS1) was based around more and more advanced forms of hardware sprites and scrollable character maps. Character map hardware was originally designed for displaying text characters, but since you could change the character glyphs, many developers started referring to them tiles and tile hardware.
I do have one suggested link about a NES game, Grand Theiftendo, a homebrew game by a friend of mine:
If you like what you see, you should check out Retro City Rampage, a dramatically improved commercial version of the game he's been working on.
Above is how many classic game developers had to work... literally, by hard-wiring and creating custom hardware to interface with devices like the NES. If you were an official Nintendo Developer, they would send you an officially pre-modified box that you could test on instead (since not everyone has the technical know-how to wire in and flash flash-memory). And programming wise, nearly everything was done in Assembly (6502 or z80, depending on the device). C compilers took a long time before they became practical for embedded devices.
In the last decade though, things have been more streamlined. Flash carts became available; These were devices you could plug in to a cart programmer (writer), and upload a game binary right to the cart. Then you could plug the cart right in, power on the device, and test. This process can be rather slow though, so on GameBoy Color at least, many developers got familiar with using emulators to test games. Compile, run on emulator. Even if an emulator wasn't 100% accurate, they were often good-enough to initially test. You could flash a cart after you were sure something was working, then sit back and try it as it should be experienced (on device).
Emulators were only ever good for simulating really old hardware, GameBoy and NES era being ideal candidates. Today though, now that everything is 3D accelerated and pushes polygons, it's far more practical to write cross-platform code. Most devices support OpenGL ES, which is an API that is sooooo close to OpenGL, in fact, you can treat GL ES as a subset of regular OpenGL. I.e. You can write games that run on both by writing them against the OpenGL ES spec.
That's my brief on classic->modern gamedev techniques. Hopefully that gives you some insight where to dig for more. Alot of information is out there, you just have to know what you're looking for.
Its worth checking Farat's page especially for NES and Gameboy architecture pages.