Estoy buscando técnicas de codificación generales. Preferiblemente lenguaje agnóstico, pero eso realmente no importa. Si echas un vistazo a los enlaces que publiqué sobre ti, verás lo que quiero decir.
El NES específicamente es muy antiguo, por lo que no encontrarás demasiado sobre eso. El año pasado en la Game Developers Conference tuvimos una serie de postmortems de juegos clásicos, que se parecen más a lo que estás buscando. Puede encontrar muchos de ellos libremente en la Bóveda de GDC.
http://www.gdcvault.com/free/gdc-11
Si quieres algo más, el GameBoy sobrevivió durante mucho tiempo (trabajé y envié un juego comercial en 2001 que todavía vendía> 200,000 copias), específicamente el GameBoy Color tenía hardware gráfico a la par con el NES original (mejor en realidad) . En su mayor parte, muchas consolas de juegos antiguas y computadoras viejas tenían una capacidad similar. Lo único que diferenciaba a una Nintendo de una Commodore 64 era la compatibilidad con un mayor número de sprites en pantalla y registros para controlar el desplazamiento horizontal y vertical del mapa de personajes (fondo). Todo hasta que aparecieron las consolas aceleradas en 3D (N64, PS1) se basó en formas cada vez más avanzadas de sprites de hardware y mapas de caracteres desplazables. El hardware del mapa de caracteres se diseñó originalmente para mostrar caracteres de texto, pero como puede cambiar los glifos de caracteres,
Tengo un enlace sugerido sobre un juego de NES, Grand Theiftendo, un juego casero de un amigo mío:
http://retrocityrampage.com/blog/2011/05/see-rcr-precursor-grand-theftendo-in-action/
Si te gusta lo que ves, deberías echar un vistazo a Retro City Rampage, una versión comercial dramáticamente mejorada del juego en el que ha estado trabajando.
Arriba está la cantidad de desarrolladores de juegos clásicos que tuvieron que trabajar ... literalmente, cableando y creando hardware personalizado para interactuar con dispositivos como el NES. Si fueras un desarrollador oficial de Nintendo, te enviarían una caja oficialmente pre-modificada que podrías probar en su lugar (ya que no todos tienen los conocimientos técnicos para conectar y flashear la memoria flash). Y en cuanto a la programación, casi todo se realizó en ensamblador (6502 o z80, dependiendo del dispositivo). Los compiladores de C tardaron mucho tiempo antes de que se volvieran prácticos para dispositivos integrados.
Sin embargo, en la última década, las cosas se han simplificado más. Los carros flash estuvieron disponibles; Estos eran dispositivos que podía conectar a un programador de carrito (escritor) y cargar un juego binario directamente al carrito. Luego, puede enchufar el carro directamente, encender el dispositivo y probar. Sin embargo, este proceso puede ser bastante lento, por lo que en GameBoy Color al menos, muchos desarrolladores se familiarizaron con el uso de emuladores para probar juegos. Compilar, ejecutar en emulador. Incluso si un emulador no era 100% preciso, a menudo eran lo suficientemente buenos como para probar inicialmente. Puede mostrar un carrito después de estar seguro de que algo funcionaba, luego sentarse y probarlo como debería ser experimentado (en el dispositivo).
Los emuladores solo fueron buenos para simular hardware realmente antiguo, GameBoy y NES era candidatos ideales. Sin embargo, hoy, ahora que todo está acelerado en 3D y empuja polígonos, es mucho más práctico escribir código multiplataforma. La mayoría de los dispositivos son compatibles con OpenGL ES, que es una API que está muy cerca de OpenGL, de hecho, puede tratar GL ES como un subconjunto de OpenGL regular. Es decir, puede escribir juegos que se ejecuten en ambos escribiéndolos contra la especificación OpenGL ES.
Ese es mi resumen sobre las técnicas clásicas y modernas de gamedev. Esperemos que eso te dé una idea de dónde cavar para obtener más. Hay mucha información disponible, solo tienes que saber lo que estás buscando.