Proyecto, un juego para Dragon 32

Avatar de Usuario
Chema
Mensajes: 1513
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 406 veces
Agradecimiento recibido: 180 veces
Contactar:

Re: Proyecto, un juego para Dragon 32

Mensajepor Chema » 30 Dic 2016 16:21

Último mensaje de la página anterior:

Vale, me explique fatal, pero lo has entendido bien :)

Es mejor avanzar dos bytes en la secuencia completa porque son dos pasos, uno con cada pie. Así, el fotogramas de los pies juntos está alineado a la izquierda y los otros dos desplazados cuatro pixels cada uno.

Mira los diseños de jojo en Los 7 de Blake (en el Oric un byte son 6 pixels, no 8) viewtopic.php?f=41&t=33&start=48#p8110

Para avanzar un sprite que está parado en la posición x la secuencia es pintar fotograma de paso con la derecha en x, pintar el de los pies juntos en x+1, pintar el del paso con la izquierda en x+1, el de los pies juntos en x+2 etc.

Avatar de Usuario
minter
Mensajes: 1307
Registrado: 22 Jul 2014 18:51
Agradecido : 527 veces
Agradecimiento recibido: 273 veces

Re: Proyecto, un juego para Dragon 32

Mensajepor minter » 30 Dic 2016 16:54

Imagen
Yo lo entendía así. -507

Avatar de Usuario
Chema
Mensajes: 1513
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 406 veces
Agradecimiento recibido: 180 veces
Contactar:

Re: Proyecto, un juego para Dragon 32

Mensajepor Chema » 30 Dic 2016 17:33

-rofl

jltursan
Mensajes: 1875
Registrado: 20 Sep 2011 13:59
Agradecido : 47 veces
Agradecimiento recibido: 140 veces

Re: Proyecto, un juego para Dragon 32

Mensajepor jltursan » 30 Dic 2016 17:34

-507

Los personajes estan molando mucho :-)

Va a estar basado en el argumento y escenarios reales de la primera peli?, una escenita como la siguiente seria la bomba...

jaws boat1.png
jaws boat1.png (25.61 KiB) Visto 759 veces

Avatar de Usuario
pser1
Mensajes: 2013
Registrado: 08 Dic 2012 18:34
Agradecido : 198 veces
Agradecimiento recibido: 181 veces

Re: Proyecto, un juego para Dragon 32

Mensajepor pser1 » 30 Dic 2016 19:26

Hola,
me he estado peleando con el Dragon para convertir los espléndidos dibujos de jojo073
en bloques de declaraciones de octetos para el ensamblador ... usando el Basic de Dragon -507
Objetivo crear filas de este tipo (leyendo la pantalla con los sprites)
FCB $04,$FF,$E6,$00
Y así hasta 56 filas por sprite
Tengo los 6 dibujos pasados a bloques de este tipo, pero están alineados a bytes
Ahora me toca desplazar los dos de movimiento cuatro bits a la derecha ... con lo que ocuparán *cinco* bytes!
Otra sorpresa (para novatos en sprites) es que mi rutina movía un rectángulo entero NO transparente
y ahora al mover al personaje, todo el rectángulo me *tapa* el fondo, tendré que buscarme la vida para
evitar este defecto o quedaría realmente feo ...
Adjunto pantallazos (uno casi OK y otro tapando claramente fondo)
saludos
pere
CasiBien.jpg
CasiBien.jpg (71.38 KiB) Visto 750 veces
PisandoFondo.jpg
PisandoFondo.jpg (69.43 KiB) Visto 750 veces

Pd Se agradecerán consejos, sugerencias, ideas ... pero mejor con ejemplos

Avatar de Usuario
jojo073
Mensajes: 3126
Registrado: 14 Nov 2010 20:41
Agradecido : 39 veces
Agradecimiento recibido: 84 veces

Re: Proyecto, un juego para Dragon 32

Mensajepor jojo073 » 30 Dic 2016 19:45

jltursan escribió:-507

Los personajes estan molando mucho :-)

Va a estar basado en el argumento y escenarios reales de la primera peli?, una escenita como la siguiente seria la bomba...

jaws boat1.png

Hombre no quiero desvelar el argumento pero cuando preparamos el guión buscamos varias escenas de la peli y bueno todo depende de lo que pueda representar pero, yo creo que quedaría un buen juego, incluida la escena final con el tiburón...
No develaremos nada, hasta que la demo funcione que es lo primero, concentrarnos en que la demo funcione en un dragon 32

Ahí va el archivo del fondo a 256x160
casa02.rar
(1.57 KiB) Descargado 12 veces


Referente a los sprites, no se si todos tienen que medir lo mismo, si es así que todos midan como el máximo, la verdad es que no me fije en si uno ocupan mas que otros... Referente a los movimientos, aunque se podría usar distintos fotogramas para las cuatro direcciones yo para aligerar usaría solo los que te he enviado, para saber lo que digo, toma como ejemplo el juego de Legado... si se puede mover el muñeco así, quedaría muy bien...

Avatar de Usuario
pser1
Mensajes: 2013
Registrado: 08 Dic 2012 18:34
Agradecido : 198 veces
Agradecimiento recibido: 181 veces

Re: Proyecto, un juego para Dragon 32

Mensajepor pser1 » 30 Dic 2016 20:01

Hola,
espero poder hacer lo mismo que ví en Legado en cuanto a movimientos ...
Los sprites pueden tener la dimensión que haga falta, pero es *muy* conveniente
que sean medidas múltiplo de 8 pixels en horizontal. O muy cerca de ...
Por ejemplo entre 28 y 32 pixels usamos cuatro bytes, pero si se pasa por un triste pixel
entonces requiere cinco bytes por 56 filas = 330 octetos tirados por cada fotograma
En vertical no afecta.
Acabo de descargarme la nueva versión de la casa
saludos
pere

Avatar de Usuario
minter
Mensajes: 1307
Registrado: 22 Jul 2014 18:51
Agradecido : 527 veces
Agradecimiento recibido: 273 veces

Re: Proyecto, un juego para Dragon 32

Mensajepor minter » 30 Dic 2016 20:45

Para la transparencia de sprites, necesitaras las mascaras de los sprites, realizar un XOR y pintar el sprite nuevamente con el fondo añadido al personaje.
Coges un cuadrado del fondo del tamaño del sprite. Le recortas la silueta del sprite, le sumas el sprite y luego lo pintas en pantalla.
Todo esto provoca que tengas que tener asignado el doble de memoria para los sprites. Los normales y sus mascaras correspondientes. A parte de otro trozo mas de memoria para realizar la operación, del tamaño del sprite. Una especie de buffer con el trozo de pantalla pisado.
Creo que el procedimiento era así.

Avatar de Usuario
Chema
Mensajes: 1513
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 406 veces
Agradecimiento recibido: 180 veces
Contactar:

Re: Proyecto, un juego para Dragon 32

Mensajepor Chema » 30 Dic 2016 20:52

Si necesitas tener no sólo los gráficos del sprite si no también la máscara. La máscara es un Bitmap que indica que área se tiene que tomar como transparente. Si te fijas en el enlace que puse más arriba se considera transparente todo lo que está en verde y el resto se copia tal cual.

En algún otro hilo puse como hago yo el bucle de pintado, igual en la versión 20 del foro. Para cada scan (byte) se toma el fondo, se le hace un AND con la mascara, lo que borra el area no transparente (que tiene los bits a cero) y luego se le hace un OR con el gráfico del sprite y se pone en pantalla.

Bienvenido al mundo de los sprites por software. Cada ciclo de cpu que ahorres en los bucles de pintado lo vas a agradecer después.

Si encuentro la info donde explico cómo lo hago en 6502 te la pongo.

Está aquí http://retrowiki.es/viewtopic.php? ... =50#p200050463 en la sección que se llama Hasta aquí vale, pero ¿y los marcianos? aunque es muy técnica y engorrosa, porque estoy usando el modo texto del Oric.

Avatar de Usuario
minter
Mensajes: 1307
Registrado: 22 Jul 2014 18:51
Agradecido : 527 veces
Agradecimiento recibido: 273 veces

Re: Proyecto, un juego para Dragon 32

Mensajepor minter » 30 Dic 2016 21:02

Y habrá que tener en cuenta el retrazo vertical del video o nos generará parpadeos por temas de velocidad?
O sprites quebrados o parpadeos, that is the cuestion! :D
No conozco el flag de video que indica el retrazo vertical, pero debe de estar en algún registro.

Avatar de Usuario
Chema
Mensajes: 1513
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 406 veces
Agradecimiento recibido: 180 veces
Contactar:

Re: Proyecto, un juego para Dragon 32

Mensajepor Chema » 30 Dic 2016 21:11

Efectivamente Minter. No conozco el hard del Dragon. Si tiene una manera de sincronizar con el retrazo se puede intentar hacer el bucle de pintado rápido y mientras no se actualiza la imagen, lo que elimina la necesidad de doble bufer.

Pero vamos poco a poco. Aún no sé cómo hace Pere para manejar el fondo, si lo tiene aparte para restaurar las áreas ensuciadas por el sprite o no. Si solo se mueve uno y no hay animaciones por debajo ni nada parecido, es posible mantener una copia del área que vamos a ensuciar e irla actualizando al mover el sprite.

Si eso no es suficiente para la demo, hay que usar otras técnicas. Tener una copia del fondo completo se come mucha memoria...

Avatar de Usuario
Silicebit
Mensajes: 1318
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 30 veces
Agradecimiento recibido: 71 veces
Contactar:

Re: Proyecto, un juego para Dragon 32

Mensajepor Silicebit » 30 Dic 2016 21:21

Aquí hay un artículo muy interesante sobre la técnica que se usa para que los sprites no borren el fondo.

http://www.microhobby.org/varios/MICROH ... prites.pdf

¿Usas algo parecido sobre el Oric, Chema?
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

Avatar de Usuario
Silicebit
Mensajes: 1318
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 30 veces
Agradecimiento recibido: 71 veces
Contactar:

Re: Proyecto, un juego para Dragon 32

Mensajepor Silicebit » 30 Dic 2016 21:28

En la página 25, casi al final de la columna, explica lo que hace.
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

Avatar de Usuario
pser1
Mensajes: 2013
Registrado: 08 Dic 2012 18:34
Agradecido : 198 veces
Agradecimiento recibido: 181 veces

Re: Proyecto, un juego para Dragon 32

Mensajepor pser1 » 30 Dic 2016 22:24

Chema escribió:Si necesitas tener no sólo los gráficos del sprite si no también la máscara. La máscara es un Bitmap que indica que área se tiene que tomar como transparente. Si te fijas en el enlace que puse más arriba se considera transparente todo lo que está en verde y el resto se copia tal cual.
En algún otro hilo puse como hago yo el bucle de pintado, igual en la versión 20 del foro. Para cada scan (byte) se toma el fondo, se le hace un AND con la mascara, lo que borra el area no transparente (que tiene los bits a cero) y luego se le hace un OR con el gráfico del sprite y se pone en pantalla.
Bienvenido al mundo de los sprites por software. Cada ciclo de cpu que ahorres en los bucles de pintado lo vas a agradecer después.
Si encuentro la info donde explico cómo lo hago en 6502 te la pongo.
Está aquí http://retrowiki.es/viewtopic.php? ... =50#p200050463 en la sección que se llama Hasta aquí vale, pero ¿y los marcianos? aunque es muy técnica y engorrosa, porque estoy usando el modo texto del Oric.

Hola,
muchas gracias a todos,
ya veo que no hay remedio mágico!
Había pensado en tener una copia perfil del sprite para así eliminar de pantalla la parte que se va a sobreescribir.
Hasta aquí vamos en paralelo. El problema es que al añadir haciendo OR del sprite sobre lo que ha quedado en pantalla
surge un pequeño detallito ... en PMODE4 el color blanco (que queremos transparente) se representa con *UNOS* en lugar de ceros!
Me temo que la única solución será modificar de antemano los sprites para que los bits transparentes sean ceros ...
Un proceso previo mas a hacer aunque puede ser la única solución.
Echaré una ojeada a otras ideas que puedan surgir, pero probablemente no habrá nada mejor
Va a ser una currada preparar sprites con márgenes invertidos mas las máscaras -banghead
saludos
pere

Avatar de Usuario
pser1
Mensajes: 2013
Registrado: 08 Dic 2012 18:34
Agradecido : 198 veces
Agradecimiento recibido: 181 veces

Re: Proyecto, un juego para Dragon 32

Mensajepor pser1 » 30 Dic 2016 22:30

Chema escribió:Efectivamente Minter. No conozco el hard del Dragon. Si tiene una manera de sincronizar con el retrazo se puede intentar hacer el bucle de pintado rápido y mientras no se actualiza la imagen, lo que elimina la necesidad de doble bufer.
Pero vamos poco a poco. Aún no sé cómo hace Pere para manejar el fondo, si lo tiene aparte para restaurar las áreas ensuciadas por el sprite o no. Si solo se mueve uno y no hay animaciones por debajo ni nada parecido, es posible mantener una copia del área que vamos a ensuciar e irla actualizando al mover el sprite.
Si eso no es suficiente para la demo, hay que usar otras técnicas. Tener una copia del fondo completo se come mucha memoria...

Lo que hace mi demo actual es guardar en un buffer el area de fondo que se va a sobre escribir y se actualiza con cada fotograma.
Para sincronizar, $ff03 se vuelve negativo (bit7 = 1) cuando llega un FS (interrupción de cuadro)
saludos
pere

Avatar de Usuario
Chema
Mensajes: 1513
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 406 veces
Agradecimiento recibido: 180 veces
Contactar:

Re: Proyecto, un juego para Dragon 32

Mensajepor Chema » 30 Dic 2016 22:48

pser1 escribió:El problema es que al añadir haciendo OR del sprite sobre lo que ha quedado en pantalla
surge un pequeño detallito ... en PMODE4 el color blanco (que queremos transparente) se representa con *UNOS* en lugar de ceros!
Me temo que la única solución será modificar de antemano los sprites para que los bits transparentes sean ceros ...
Un proceso previo mas a hacer aunque puede ser la única solución.
Echaré una ojeada a otras ideas que puedan surgir, pero probablemente no habrá nada mejor
Va a ser una currada preparar sprites con márgenes invertidos mas las máscaras -banghead
saludos
pere


Es que no es que queramos que el color blanco sea transparente. Mira cómo tengo los sprites de jojo en el link que te puse (no el último, el anterior). La zona VERDE es la que uso para crear la máscara, poniendo esos bits a 1 y el resto (sean 0s o 1s) los pongo a 0. Si todo lo blanco fuese transparente, la cara del personaje lo sería.

Yo pongo a mano la zona en verde con el MSPaint y luego uso un script de Matlab para crear las máscaras y los datos gráficos por separado. No te vale porque los datos que yo uso están pensados para el Oric y para un método de pintado diferente (por tiles).

Es como esto, pero en blanco y negro: https://en.wikipedia.org/wiki/File:Spri ... e_mask.png

Avatar de Usuario
pser1
Mensajes: 2013
Registrado: 08 Dic 2012 18:34
Agradecido : 198 veces
Agradecimiento recibido: 181 veces

Re: Proyecto, un juego para Dragon 32

Mensajepor pser1 » 30 Dic 2016 23:03

me he explicado mal, Chema, lo siento ...
quería decir que solamente los bits blancos alrededor de la figura deben pasar a negro (valor = 0)
así se puede hacer OR a simplemente ADD sobre el fondo al que previamente le hemos aplicado
la máscara (AND con figura a ceros y márgenes a 1).
Tengo escrito un pseudo código que voy a pasar a asm para probar luego.
El peñazo es separar ahora los seis sprites. Voy a copiarlos a pantalla a la posición 0,0 y crearé
el definitivo en 40,0 y la máscara en 80,0. Posiblemente me guarde un fichero por personaje ...
Creo que he pillado la idea, ahora trabajo para convertir los dibujos en codigo para el programa,
lésase lineas FCB declarando cada sprite / máscara
saludos
pere


Volver a “Software Dragon”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado