Actualmente estoy escribiendo en C# lo que básicamente podría llamarse mi propia interpretación del hardware NES para un juego que estoy desarrollando en la vieja escuela. He activado FCE y he estado observando cómo se muestra y representa gráficos NES.'Conmutación de banco' Sprites en aplicaciones NES antiguas
En pocas palabras, el NES podría contener información gráfica de dos bitmaps, cada una con las dimensiones de 128x128. Estas se llaman tablas PPU. Una era para fichas BG y la otra era para sprites. Los datos deben estar en esta memoria para que se dibujen en la pantalla. Ahora, si un juego tuviera más datos gráficos que estos dos bancos, podría escribir partes de esta nueva información en estos bancos -escribiendo lo que estaba allí- al final de cada cuadro, y usarlo desde el siguiente cuadro en adelante.
Entonces, en juegos antiguos, ¿cómo cambiaba el banco de los programadores? Quiero decir, dentro del diseño de niveles, ¿cómo sabían qué conjunto de gráficos cargar? Me he dado cuenta de que MegaMan 2 conmuta cuando la pantalla se desplaza programáticamente de una parte del escenario a la siguiente. Pero, ¿cómo almacenaron esta información en el nivel? ¿Qué sprites copiar en las tablas de PPU, y dónde escribirlas?
Otro ejemplo sería presionar pausa en MM2. Los mosaicos BG se sobreescriben durante la pausa, y luego se restauran cuando el jugador se reanuda. ¿Cómo recordaron qué fichas reemplazaron y cómo restaurarlas?
Si fuera flojo, podría hacer un gran mapa de bits estático y simplemente tomar los valores de esa manera. Pero me obligo a limitar estos valores para crear una experiencia más auténtica. He leído la increíble guía sobre cómo M.C. Los niños se hicieron, y estoy tratando de ser barebones sobre cómo programo este juego. Todavía me sorprende cómo estos programadores lograron lo que hicieron con lo que tenían.
EDITAR: La única solución que se me ocurre sería mantener tablas separadas que indiquen qué teselas deberían estar en el PPU y en qué momento, pero creo que sería un gran recurso de memoria que el NES no podría manejar.
Gracias, esto fue muy útil. –
Gracias por el cumplido :) –