Wrapper para GFX9000 en C

Página 2/6
1 | | 3 | 4 | 5 | 6

Por Manel46

Champion (431)

Imagen del Manel46

05-10-2018, 10:31

paspallas wrote:

La librería del team bomba apenas tiene una rutina para poner sprites en pantalla.

Una vez los gráficos y los atributos en su sitio, mover los sprites es muy sencillo.
Se trata de incrementar o decrementar X o Y. Lo hago mediante unas macros. Ellas se refieren al nº de sprite directamente. Por ejemplo: "inx 112", incrementa la X del esprite 112. Todo esto, usando los registros indexados IX e IY, por supuesto. Esta claro que en cada "frame", se tienen que actualizar todos los atributos, en el caso de esta demo que os puse. Con otras macros muestro/oculto sprite, cambio nº modelo, etc
La escritura en esta VDP es rapidísima.

Por assembler

Champion (378)

Imagen del assembler

05-10-2018, 10:30

Con 256 me refiero a formas de sprite. Efectivamente, simultaneos en pantalla solo se pueden poner 125

Por Manel46

Champion (431)

Imagen del Manel46

05-10-2018, 10:41

Tu puedes tener los modelos que quieras en rom, claro. Para ir copiandolos en la vram, pero solo 125 de ellos. No se pueden mostrar ni pueden haber mas 125 en la vram. El espacio que hay no lo permite.
Felicidades por tu Ghost and Goblins!

Por assembler

Champion (378)

Imagen del assembler

05-10-2018, 11:52

Manel46 wrote:

Felicidades por tu Ghost and Goblins!

Muchas gracias! Ya va quedando menos para acabarlo.

Manel46 wrote:

Tu puedes tener los modelos que quieras en rom, claro. Para ir copiandolos en la vram, pero solo 125 de ellos. No se pueden mostrar ni pueden haber mas 125 en la vram. El espacio que hay no lo permite.

Efectivamente. 125 sprites simultaneos. 256 formas de sprite para elegir. Aunque es mejor copiarlas desde VRAM directamente:
Ejemplo

(¿Soy el único que no ve la imagen enlazada directamente en el comentario?)

El señor arturo tiene un montón de poses, pero solo necesita 4 formas de sprite porque no puede estar en más de una postura a la vez.

Por Manel46

Champion (431)

Imagen del Manel46

05-10-2018, 12:12

Veo la imagen perfectamente.
¿En modo P1, queda sitio en la VRAM, para tener copia del resto de los sprites? Supongo que si lo afirmas es que si. ¿Donde está este espacio? Es bueno saberlo.
Los "copys" desde la rom (LMMC), son rápidos también.
Ultimamente me dedico al bitmap.

Por paspallas

Resident (40)

Imagen del paspallas

05-10-2018, 12:31

La Megadrive puede direccionar 1024 tiles para sprites, pero de 8x8, por lo que al final viene a ser casi lo mismo, solo que es más flexible. La gran diferencia es que la vram solo tiene espacio para unos 2800 tiles para sprites y fondos, con lo que se suelen cargar desde ROM los tiles para los diferentes frames de animación usando DMA. En el v9990 como bien dice assembler lo lógico sería tenerlos precargados en VRAM y copiarlos en el vblank mediante un comando. Lo que si me parece de juzgado de guardia es la no inclusión de flipping para sprites o un sistema de prioridades entre plano y sprites a nivel de tile.

Por Manel46

Champion (431)

Imagen del Manel46

05-10-2018, 12:34

Intuyo por donde pueden ir los tiros. Tu juego, si no estoy equivocado es en el modo P1, pero solo husas la capa A. Por lo tanto tienes todo el espacio de la capa B, para guardar los modelos de sprite. Smile

Por assembler

Champion (378)

Imagen del assembler

05-10-2018, 12:39

Prácticamente los primeros 256KB son para los tiles del Plano A, y los sprites (quitando los 500bytes de la tabla de atributos de sprite y los 12 de los ultimos 3 sprites que no sé por qué no se utilizan).

Eso da para un bitmap enorme de 256x2044. Yo uso las primeras 512 líneas para tiles, que da para hasta 2048, las siguientes 256 lineas para los 256 sprites visibles y el resto, como sprites de reserva para ir copiando según hagan falta.

No sé si se pueden hacer copias de VRAM del Plano B al Plano A, pero con esa distribución se pueden hacer cosas apañás.

Por Manel46

Champion (431)

Imagen del Manel46

05-10-2018, 13:16

Comprendo. Gracias por la explicación.
Ver "top secret 2", páguina 230, capítulo 7.7.2, la zona que corresponderia a los sprites 126 a 128, se husa para el "cursor", que es un sprite de 32x32 píxeles, que se puede reprensar en los modos bitmap.
No he probado esto, y no comprendo como esto resta capacidad de sprites en los modos de patrones.
Solo hay posibilidad de dos cursores.

Por paspallas

Resident (40)

Imagen del paspallas

05-10-2018, 14:36

Una cuestión, ¿como cargais los tiles en la zona para sprites?, como tienen que ir las líneas entrelazadas para bloques de 32 sprites no es tan sencillo como un bitmap.

Página 2/6
1 | | 3 | 4 | 5 | 6