Una pregunta sobre el uso de Tiles en ensamblador.

Estoy intentado aprender a programar para super nintendo y por ahora como soy novato total y lo unico que he programado es el video y hace muchos años.... lo que estoy haciendo es leer lo que encuentro, y me estoy leyendo cosas de este web: http://www.consolasparasiempre.net/

Soy novato total y la primera en la frente....

BREVE INTRODUCCIÓN
La SNES usa principalmente tiles de 16 colores. Los sprites de la SNES también usan 16 colores. Eso no quiere decir que no se puedan usar más colores. Depende del modo gráfico en el que se trabaje. Hay al menos 8 modos disponibles, del modo 0 al famoso modo 7. En función del modo en que trabajemos, habrá un número de planos de scroll disponibles, y cada uno de ellos soportando un cierto número de colores.
Por ejemplo, yo he trabajado en modo 1, y en él hay disponibles 3 planos, 2 de ellos de 16 colores, y otro de 4 colores solamente. Eso sí, cada plano puede trabajar con un conjunto de colores distintos al del resto, no tienen porque ser los mismos 16 colores.
Pueden usarse hasta 256 en ciertos modos gráficos.

Este documento explica el formato de los tiles en SNES y como se almacenan en las ROMs, para poder crear tiles de SNES, y usarlos en programas caseros, o sacarlos de una ROM.
Analizaré los formatos más habituales.

F = fila
BP = bitplane

F1 significa fila 1, y BP1 bitplane 1.

TILES DE 4 COLORES

Usan 2 bitplanes.
Cada tile de 8x8 ocupa 16 bytes
(8x8 píxel * 2 bits por píxel = 128 bits, o 16 bytes)

Los bitplanes se almacenan entrelazados por filas. Primero va el bitplane 1 de la primera fila, y luego el bitplane 2.
Después se pasa a la siguiente fila.
Es decir:

;-----------------
(F1, BP1)(F1, BP2)(F2, BP1)(F2, BP2) (F3, BP1) (F3, BP2)...
;-----------------

Así hasta la fila 8, y luego comenzaría el siguiente tile.


No entiendo esta explicacion, solo habla de filas y bit planes, ¿y que pasa con las colunas?? ¿como entiende la maquina el color que le queremos dar a un pixel cualquiera de los 64 posible? porque no puedo creer que los 8 pixel que forman la fila de un tile 8x8 tengan el mismo color.

Documento completo:
http://www.consolasparasiempre.net/doc/ ... 20SNES.doc
Sin saber programar es muy duro entrar al ensamblador directamente, debes aprender a programar primero en algún lenguaje de alto nivel. Es como querer correr en la fórmula 1 sin saber conducir.

Sobre la pregunta, lo que entiendo es lo siguiente:
Como hay cuatro colores, con dos bits es suficiente para indicarlos en el propio tile. Cada bit va en un plano de color. Por tanto tenemos los colores: 00 - primero, 01 - segundo, 10 - tercero, 11 - cuarto. El valor de cada uno depederá de la paleta usada.

Y sobre las columnas, como cada tile tiene 8x8, se entiende que cada fila tiene 8 pixels.
Un saludo
Por lo que yo entiendo, a cada plano le asignas una paleta de colores, de 16 o de 4.

Cada color de la paleta va indicado con un número. el pixel dibujado, en lugar de poner el color deseado, pones el índice de la paleta donde está el color que quieres.

Si creamos una paleta de 4 colores:
00-negro
11-azul
10-rojo
11-rosa

Tenemos un tile de 8x8 que son 16 Bytes(128 bits)
Pues van en lineas. Los 16 primeros bytes corresponden a la fila 0. Los siguientes 16 a la fila 1, y así hasta cubrir los 128.

Cada 2 bits es un pixel. Tu indicas con los bits que color tiene ese pixel.
00-00-11-11-11-11-00-00
Esa fila será una barra de 4 pixeles azules rodeada de 2 pixeles negros a cada lado.

Después tendremos la siguiente fila.

Evidentemente, tu no puedes trabajar directamente con bits, si no que trabajas con bytes 8No estoy seguro de esto, no he trabajado con ensamblador). Así que debes utilizar operaciones lógicas para trabajar con los bits que componen los bytes.

Los planos son eso. Imagina que el nivel está compuesto por 3 capas superpuestas, como si fuesen papel transparente uno encima de otro.

A cada capa le puedes asignar una paleta de colores diferente. De esta manera un tile saldrá con colores diferentes en una capa y en otra si estas tienen diferentes paletas de colores.

Usando un poco de maña puedes apañartelas para que un tile tenga más colores de las que acepta la capa. Como? Dibujandolo dos veces en dos capas distintas. Por ejemplo un tile de hierba verde con una flor amarilla. Dibuja dos tiles, uno con la hierba y otro con la flor. Dibuja primero el tile verde y luego la flor en otra capa. De esta manera has construido un tile que puede tener más colores.
Hola!
Quizás ya la conozcas, pero en esta página hay buenos tutoriales para programar para la super nes, la pega es que está en inglés.

Saludos!

http://vintagedev.org/
Hola!
Quizás ya la conozcas, pero en esta página hay buenos tutoriales para programar para la super nes, la pega es que está en inglés.

Saludos!

http://vintagedev.org/


Pues yo no, me la apunto para cuando me aburra de la megadrive (nunca XD )
theelf escribió:
Hola!
Quizás ya la conozcas, pero en esta página hay buenos tutoriales para programar para la super nes, la pega es que está en inglés.

Saludos!

http://vintagedev.org/


Pues yo no, me la apunto para cuando me aburra de la megadrive (nunca XD )


Eso espero! si no nos quedaremos sin los geniales tutos de programacion para mega drive, aunque quien sabe.... :-| quizás se pueda hacer algun tuto simple para programar en snes y asi llevar los proyectos a ambas consolas [babas]
Eso espero! si no nos quedaremos sin los geniales tutos de programacion para mega drive, aunque quien sabe.... :-| quizás se pueda hacer algun tuto simple para programar en snes y asi llevar los proyectos a ambas consolas [babas]


Yo encantado, la SNES me parece una consola exelente, el problema que tiene por lo que veo, es que realmente no existe scene como en megadrive, faltan herramientas especialmente.

Si me equivoco, por favor diganmelo, y por favor tambien apuntenmen algun buen IDE para SNES, tools etc que me interesaria
Esta pagina tambien trata sobre la programacion en snes.

http://en.wikibooks.org/wiki/Super_NES_Programming

Saludos!
7 respuestas