Wrapper para GFX9000 en C

Page 3/6
1 | 2 | | 4 | 5 | 6

By assembler

Champion (375)

assembler's picture

05-10-2018, 14:41

Es una de las muchas cosas cuquis que tiene el v9990: la definicion de tiles y sprites se hace igual: un bitmap de 256 px de ancho con 4bpp

By paspallas

Resident (40)

paspallas's picture

05-10-2018, 15:11

Creo que no me he explicado bien. Según el manual la linea 0 de 16px de ancho de un sprite va entrelazada con las líneas de otros 32 sprites, luego vendría la linea 1 del sprite 0 más la linea 1 de los otros 31, etc. Esto en el área de definición de tiles para sprites. Si quisieras cambiar un tile de un sprite dado, no es tan simple como copiar un trozo de bitmap a la zona de definición

By Manel46

Champion (419)

Manel46's picture

05-10-2018, 15:20

Entrelazado solo he husado en la rom B3 "Dreams Puzzle", donde no hay sprites. No tengo experiencia en P1 entrelazado. quizas "assembler", te pueda contestar. Por cierto esta rom es de lo mas simple de programar. El mérito es de la artista de los gráficos y del músico. http://www.msxdev.org/2018/07/26/msxdev18-5th-entry-dreams-p...
En patrones, la question es que los tiles son de 8x8, y la carga de ellos tine su "intringulis", pues partimos de un tileset con azulejos de 16x16. Esto es complejo, y lo que tengo es gracias a la ayuda inestimable, del amigo de Bitvisión, autor del "INTRUDER"
Contestaba a un comentario anterior de "paspallas". Luego he visto 2 o 3 mas.
Si quereis hablamos via email...

By Manel46

Champion (419)

Manel46's picture

05-10-2018, 15:28

Pablo creo que mezclas peras con manzanas, perdón.
Una cosa son los patrones de 8x8 que forman una pantalla y otra los azulejos del tileset (16x16), a si como los de los sprites, que son de 16x16 también
Al hacer una pantalla tenemos el problema que dices. Esto se resuelve con una rutina que tiene su complegidad.

By assembler

Champion (375)

assembler's picture

05-10-2018, 15:38

No te compliques: tanto los tiles como los sprites se ven como un bitmap de 256 pixeles de ancho, luego el chip coge los trozos como le interese: un cuadrado de 8x8 (que estara formado por los bytes 0,1,2,3,128,129,130,131, etc) o un cuadrado de 16x16 (bytes 0,1,2,3,4,5,6,7,128,129,130,131,132,133,134,135, etc)

De hecho, los tiles 0,1,33 y 34 (4 tiles de 8x8) y el sprite 0 (un sprite de 16x16) tienen el mismo grafico (cuando el base sprite address es cero)

By assembler

Champion (375)

assembler's picture

05-10-2018, 16:12

paspallas wrote:

Si quisieras cambiar un tile de un sprite dado, no es tan simple como copiar un trozo de bitmap a la zona de definición

Sí es tan simple: si miras el gráfico que pase antes, para hacer que arturo ande, solo hay que copiar el cuadrado que contiene los 4 sprites de la pose que se necesite, a la coordenada (0,1024), que es donde están los sprites 0,1,16 y 17

por ejemplo, para que ande hacia la derecha, se hacen "copys" (comando LMMM) con las siguientes coordenadas:
(224,1088)-(0,1024) magasprite 23
(32,1024)-(0,1024) magasprite 1
(64,1024)-(0,1024) magasprite 2
(32,1024)-(0,1024) magasprite 1
(224,1088)-(0,1024) magasprite 23
(96,1024)-(0,1024) magasprite 3

Igual que si coges un programa de edición de gráficos y vas copiando esos cuadrados de una zona a otra. Ya se encarga el v9990 en saltarse los bytes necesarios para dibujar cada tile/sprite

By erpirao

Paladin (925)

erpirao's picture

05-10-2018, 16:14

y alguno se atreve con el modo p2 (512x212)?, aunque según me comentó Assembler, este modo es un poco puñetero con los sprites

By Manel46

Champion (419)

Manel46's picture

05-10-2018, 16:49

Creo que esto que dices me da la clave para simplificar la rutina que tengo (made Bitvision). Hay que pensarlo. Gracias.
Para B3 el bitmap es de 512x424, entrelazado. Además a 16 bits/pixel, 32kcolores. Se obtiene con el bmp2g9b sin comprimir, o sea "-B", partiendo del bmp correspondiente.
La facilidad de los Bx, es que escribimos los gráficos tal cual a partit de la dirección 0 de la VRAM. Luego se pueden poner sprites bitmap, utilizando la técnica de doble buffer. El doble buffer se hace con saltos de scroll, no con el "set page" de msx2.

By Manel46

Champion (419)

Manel46's picture

05-10-2018, 17:01

erpirao wrote:

y alguno se atreve con el modo p2 (512x212)?, aunque según me comentó Assembler, este modo es un poco puñetero con los sprites

El modo P2, es como screen7, O sea que los tiles de 16x16 se ven retangualres, mitad anchos que altos.
Para el tema sprites tenemos en el último byte de los atributos, dos bits adicionales para la coordenada "X". La pantalla es de 512 píxeles de anchura.
Claro está que se tiene que configurar el tema gráfico adecuadamente (Team Bomba) Smile . He probado alguna vez sin éxito.

By assembler

Champion (375)

assembler's picture

05-10-2018, 17:16

Más que con los sprites, con los tiles, a los que se les puede indicar una paleta diferente (o no) a los pixeles 0,1,4,5 y 2,3,6,7. Sin complicarse, se usa la misma paleta para todo el tile. Complicándose, se pueden utilizar 32 colores en un mismo tile, aunque depende de la habilidad del grafista el aprovechar esa cualidad.

Page 3/6
1 | 2 | | 4 | 5 | 6