Información sobre la NES
Publicado: 16/11/06 18:24
¿Sabías que el nintendo (la primera consola que salió al mercado) usaba un procesador NMOS 6502?, le llamaron el "2A03". Este procesador "2A03 customizado" traía soporte para el set de instrucciones del procesador 6502. Sus registros eran de 8 bits y corría a 1.7 mhz app, aunque sus velocidades dependian de la version pal o la ntsc, siiiiii MHZ, era barato y industrias "Ricoh" lo produjo. Nintendo lo compró en masa y llegaron a ser el principal cliente de ricoh. El procesador No soportaba el "modo decimal" y internamente traía una PaPu (pseudo audio processing unit) para procesar sonido. El sonido era generado en tiempo real a través del código. Muchos creen que eran midis, pero no. Las capacidades de la papu eran muy buenas para producir muchos efectos, incorporaba 5 canales de audio (square wave 1, square wave 2, triangle, noise y dpcm (voces raw como racket attack)). El nintendo se programaba en assembler para el procesador 6502, alguna gente dice que los programadores oficiales usaban un pseudo kit C de casi 30 mil dolares... El 6502 fue un procesador usado en commodore 64, apple ii, atari. Las principales partes del nintendo como dije, la cpu nmos 6502, con papu integrada. Cerca de la cpu estaba la PPU (unidad procesadora gráfica, que se encargaba de renderear los gráficos, algunos estaban comprimidos otros no. El catridge de nintendo tenía principalmente 3 chips. 1.- El chip chr (donde se almacenan las pattern tables o tablas de patrones, gráficas de los catridge de nintendo).. y El chip prg donde teníamos la lógica de nuestro programa, usaban las nametables para crear los fondos ya que los gráficos que se forman por tiles y estos estaban todos desordenados en el chip chr. La paleta de colores en el chip prg (la nes tenía 4 bits para color, o sea 16 colores, pero podías lograr efectos con estos como hacerlos flashear, tonalidades y llegar con esto a 256 colores.. la resolucion de pantalla app 256x240 dependiendo de si es version PAL O NTSC. Y muchas cosas más. Actualmente hay una comunidad internacional de programadores amantes de esta consola (por lo tanto el foro está en inglés).. hay mucha documentación, es un assembler diferente y para escribir hola mundo a pantalla debes pasar siempre primero por la procesadora gráfica PPU. Existen compiladores creados por estos chicos del mundo amante nintendo, algunos se les ocurrió hacerlos tipo "C", pero nunca logran la performance que programando en assembler (rapidez, facil depuracion, etc). Hay compiladores para assembler nes, NesASM para novatos, ya que es limitado pero sirve para aprender a hacer tus demos.. Luego vino la SNES usando un procesador 65816 y la N64 usando un procesador R4300i si más no lo recuerdo..
El tercer chip dentro del cartucho de nes era el mapper.
La nintendo no podía mantener mas de cierta cantidad de informacion de rom en memoria, entonces cuando el juego era mas grande que 32 kbyte de chip prg y 8 kbyte de chip chr, se ocupaban los chips mappers para utilizar una tecnica de bankswitching, cargo el banco que uso en memoria y los que no uso los descargo (administro los bancos que se deben cargar a memoria y los que no)...
Como expliqué habia un limite que bordeaba los 32kb de prg y los 8 kb de chr. El conocido super mario bros, estaba justo en el limite!. Por esta razon, este catridge no usa mapper, entonces técnicamente le asignamos mapper 0 y a la board de super mario (tarjeta que contiene los chips) le llamamos board con NROM MAPPER (o sea board sin mapper).
Tip de la semana:
Cuando los tiles se usan para los personajes animados, se llaman sprites. Si se usan para el fondo, solo los llamamos tiles de background. La nintendo tenia una limitacion especial que era "no poder mantener mas de 8 sprites en una misma linea horizontal".
Se han dado cuenta que cuando hay muchos monitos en una misma linea, la nintendo tiende a hacer parpadear los monitos (aparecen y desaparecen muy rapidamente)??, incluso cuando los monos estan acostados (como street fighter) algunos juegos simplemente no muestran la parte de los pies del mono?...
Como superamos esa limitacion, por qué a algunos juegos no se les nota????. Esta tecnica especial fue usada en "The lemmings" y es la conocida "OAM, el cicleador de Sprite". Resulta que como la nes no podia mostrar mas de 8 sprites (cada sprite son 8x8 pixels) debiamos lograr este algoritmo:
En el caso de tener 14 sprites en una misma linea horizontal:
repita
1.- Mostrar los primeros 8 sprites (8 lemmings en este caso particular)..
2.- Los sprites 9-14 no se mostraran (estan invisibles).
3.- Los sprites 1-8 no se mostraran
(estan invisibles)
4.- Mostrar el segundo grupo de sprites
(9-14)
hasta cierta condicion
Y como no se nota que algunos se hacen invisibles?????, porque la tecnica la programas para que cada grupo de 8 sprites no se muestre por cada 1/2 de frame, cosa que se nota un parpadeo, pero tu cerebro ordena las imagenes de modo que se note que estan todos los monitos completos!! jejej .
Dicen que en la tv el sprite cycling (esta tecnica) se nota menos, y el parpadeo no es muy notorio.
PD: No hablo de cuando al mario lo lesionan y parpadea, ya que esa es otra tecnica.. Si jugaron lemmings y notaron el parpadeo con mas de 8 monos en linea horizontal, esa es la vieja tecnica algoritmica del sprite cycling.
By lord_chile (luisp510@hotmail.com)
El tercer chip dentro del cartucho de nes era el mapper.
La nintendo no podía mantener mas de cierta cantidad de informacion de rom en memoria, entonces cuando el juego era mas grande que 32 kbyte de chip prg y 8 kbyte de chip chr, se ocupaban los chips mappers para utilizar una tecnica de bankswitching, cargo el banco que uso en memoria y los que no uso los descargo (administro los bancos que se deben cargar a memoria y los que no)...
Como expliqué habia un limite que bordeaba los 32kb de prg y los 8 kb de chr. El conocido super mario bros, estaba justo en el limite!. Por esta razon, este catridge no usa mapper, entonces técnicamente le asignamos mapper 0 y a la board de super mario (tarjeta que contiene los chips) le llamamos board con NROM MAPPER (o sea board sin mapper).
Tip de la semana:
Cuando los tiles se usan para los personajes animados, se llaman sprites. Si se usan para el fondo, solo los llamamos tiles de background. La nintendo tenia una limitacion especial que era "no poder mantener mas de 8 sprites en una misma linea horizontal".
Se han dado cuenta que cuando hay muchos monitos en una misma linea, la nintendo tiende a hacer parpadear los monitos (aparecen y desaparecen muy rapidamente)??, incluso cuando los monos estan acostados (como street fighter) algunos juegos simplemente no muestran la parte de los pies del mono?...
Como superamos esa limitacion, por qué a algunos juegos no se les nota????. Esta tecnica especial fue usada en "The lemmings" y es la conocida "OAM, el cicleador de Sprite". Resulta que como la nes no podia mostrar mas de 8 sprites (cada sprite son 8x8 pixels) debiamos lograr este algoritmo:
En el caso de tener 14 sprites en una misma linea horizontal:
repita
1.- Mostrar los primeros 8 sprites (8 lemmings en este caso particular)..
2.- Los sprites 9-14 no se mostraran (estan invisibles).
3.- Los sprites 1-8 no se mostraran
(estan invisibles)
4.- Mostrar el segundo grupo de sprites
(9-14)
hasta cierta condicion
Y como no se nota que algunos se hacen invisibles?????, porque la tecnica la programas para que cada grupo de 8 sprites no se muestre por cada 1/2 de frame, cosa que se nota un parpadeo, pero tu cerebro ordena las imagenes de modo que se note que estan todos los monitos completos!! jejej .
Dicen que en la tv el sprite cycling (esta tecnica) se nota menos, y el parpadeo no es muy notorio.
PD: No hablo de cuando al mario lo lesionan y parpadea, ya que esa es otra tecnica.. Si jugaron lemmings y notaron el parpadeo con mas de 8 monos en linea horizontal, esa es la vieja tecnica algoritmica del sprite cycling.
By lord_chile (luisp510@hotmail.com)