Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 15 Jul 2018 01:43

Último mensaje de la página anterior:

Depurado y corregido!
Esta versión ya no presenta problemas con los objetos.
Próximo asalto los sprites!
Pulsar las cuatro 'teclas' para escuchar los sonidos (de agudo a grave)
A partir de aquí una pulsación muestra la pantalla con sus bloques
La siguiente pulsación muestra los objetos en dicha pantalla (puede NO añadir nada, ya que no todas tienen objetos!)

saludos
pere
FOG68090H.ZIP
(8.58 KiB) Descargado 9 veces

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 15 Jul 2018 13:04

jltursan escribió:Pere, ya iremos hablando de los formatos con los que quieres trabajar con las fuentes, bloques y sprites. Me refiero a su disposición en memoria para que te sea lo más eficiente posible su tratamiento. Yo ahora me estoy limitando a diseñarlos.

Hola José Luis,
verás por mi mensaje anterior que ya puedo ver todas las pantallas con sus bloques y objetos sin problemas.
"Solo" me falta añadir los sprites ...
Los datos que genera el programa AGD son tablas con este formato

Código: Seleccionar todo

1) Para los bloques, tabla "chgfx", formato simple, OCHO bytes por cada bloque tomados de pantalla verticalmente desde
arriba hacia abajo (X, x+32, x+64 ... x+224).
En total existen 79 bloques para el juego FOGGY, la tabla es de 79 x 8 = 632 bytes
2) Para los objetos, tabla "objdta", formato estructura de datos. Para cada objeto hay 39  bytes, valores de los 'offsets'
- 0-31 la imagen del objeto que es de 16x16 pixels = 2 bytes de ancho x 16 filas de altura, puestos de izda a dcha
   y de arriba hacia abajo, equivale a cuatro caracteres
- 32    color(es) del objeto (no aplicable en 6809)
- 33    pantalla actual en la que está
- 34-35 posición X,Y actual
- 36    pantalla inicial donde debe aparecer
- 37-38 posición X,Y en pantalla inicial
Esta tabla contiene 20 objetos x 39 bytes = 780 bytes

En Cuanto te sea posible pásame los datos, por favor, y veremos como encajan en el programa.
Hay que tener en cuenta que algunos (muchos) de los bloques se diseñaron en dos colores, pero luego al aplicarlos
en pantalla les cambian los atributos, de forma que el mismo número (tipo) de objeto/bloque puede verse en distintas
combinaciones de colores en pantalla.
Nosotros *NO* podemos hacer esto a menos que intervengamos *mucho*:
- replicar los objetos con distintos colores (mayor numero de objetos)
- modificar la definición de pantallas (que está comprimida ... )
No parece recomendable, tal vez para un solo juego valdría la pena, pero para el proyecto global AGD puede ser una locura!
saludos
pere

jltursan
Mensajes: 2226
Registrado: 20 Sep 2011 13:59
Agradecido : 105 veces
Agradecimiento recibido: 285 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor jltursan » 15 Jul 2018 21:37

Ya había pensado en el problema que tenemos con la falta de atributos y el no poder presentar más que un aspecto para los elementos gráficos. En el caso de los bloques se solventa solo porque el propio juego duplica los bloques con diferentes atributos; pero como dices, en el caso de los monocromos (fuente, objetos y sprites) se queda reducido a como los diseñe.

Dándole vueltas había pensado en emplear una máscara XOR para que funcione como un atributo de los pobres al aplicarse sobre cada byte. Sería cosa de ver que combinaciones nos podría dar cada máscara ($FF, $55 y $AA) y aprovechar lo que se pueda. Eso por supuesto si no roba demasiado tiempo de proceso, que no creo; pero hay que ver si compensa.

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 15 Jul 2018 23:23

jltursan escribió:Ya había pensado en el problema que tenemos con la falta de atributos y el no poder presentar más que un aspecto para los elementos gráficos. En el caso de los bloques se solventa solo porque el propio juego duplica los bloques con diferentes atributos; pero como dices, en el caso de los monocromos (fuente, objetos y sprites) se queda reducido a como los diseñe.
Dándole vueltas había pensado en emplear una máscara XOR para que funcione como un atributo de los pobres al aplicarse sobre cada byte. Sería cosa de ver que combinaciones nos podría dar cada máscara ($FF, $55 y $AA) y aprovechar lo que se pueda. Eso por supuesto si no roba demasiado tiempo de proceso, que no creo; pero hay que ver si compensa.

Hola José Luis,
en el tema de colores hay dos vertientes distintas:
- La conversión del 'motor' y de los 150 juegos ya creados
- La creación de nuevos juegos con la plataforma AGDX
El segundo ámbito, nos permite perfectamente definir la cantidad de bloques y objetos que sean necesarios, aunque solo
difieran en los colores empleados.
El primer punto esta restringido y habrá que admitir que una vez definido un objeto, éste tendrá los mismos colores en
todas sus 'apariciones' en pantalla, no creo que sea muy grave ... habrá que verlo, por supuesto!

Lo que seria la 'repera', sería que el editor AGDX en entorno Windows permitiera importar un fichero .agd normal de los 150
juegos ya hechos y entonces se podrían 'añadir' objetos / bloques con los colores que sean necesarios. Asumiendo que la suite ya
dispusiera del motor 'totalmente' convertido y se hubiera añadido el 'generador' de código 6809 al creador de ficheros .agd
Pero ésto, de momento, me parece un sueño ... habrá que esperar para ver si se hace realidad
saludos
pere

jltursan
Mensajes: 2226
Registrado: 20 Sep 2011 13:59
Agradecido : 105 veces
Agradecimiento recibido: 285 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor jltursan » 16 Jul 2018 22:13

Bueno, tengo a medio acabar un editor de graficos PM3, gracias a el he podido generar lo siguiente (obvio; pero son los bloques ;-)):

Código: Seleccionar todo

db 170,170,170,170,170,170,170,170
db 12,196,64,3,1,60,20,64
db 4,80,80,0,1,65,64,4
db 0,4,64,1,16,0,65,16
db 150,105,101,105,105,105,105,150
db 87,87,95,87,127,95,255,127
db 86,86,90,86,106,90,170,106
db 1,1,5,1,21,5,85,21
db 86,87,90,87,106,95,170,127
db 239,239,239,239,239,239,170,239
db 254,238,251,255,255,255,191,239
db 191,239,191,239,170,170,191,239
db 191,239,191,239,191,239,186,191
db 191,255,204,51,0,5,69,64
db 207,69,0,254,90,10,234,106
db 207,69,0,179,145,160,175,169
db 138,138,160,34,138,162,162,138
db 162,138,138,46,38,40,136,130
db 239,239,239,239,239,239,170,239
db 170,170,170,170,170,170,170,170
db 221,255,127,247,255,221,119,85
db 154,154,154,85,102,170,154,154
db 166,166,166,85,102,170,166,166
db 255,170,255,170,255,170,255,170
db 153,101,170,170,101,101,153,153
db 86,255,170,170,85,255,153,254
db 215,125,117,125,125,125,125,215
db 150,105,117,105,125,105,125,150
db 34,34,170,34,42,34,162,34
db 119,119,255,119,127,119,247,119
db 119,102,255,102,127,102,247,102
db 170,170,170,174,234,186,235,255
db 101,85,102,153,85,170,150,166
db 89,85,102,153,85,170,150,154
db 191,85,95,85,95,85,87,128
db 254,122,255,94,255,94,255,2
db 90,254,149,254,90,174,166,171
db 165,149,85,150,165,154,154,106
db 170,170,170,170,170,170,170,170
db 170,170,170,170,170,170,170,170
db 170,170,170,170,170,170,170,170
db 170,170,170,170,170,170,170,170
db 85,149,102,154,102,154,106,170
db 85,86,153,166,153,166,169,170
db 170,170,170,170,170,170,170,170
db 170,170,170,170,138,170,170,170
db 170,170,170,166,170,170,170,170
db 255,255,255,255,255,255,255,255
db 255,255,255,255,255,255,255,255
db 234,170,250,234,254,250,255,254
db 247,255,247,85,127,255,127,255
db 171,170,175,171,191,175,255,191
db 170,191,186,170,186,170,186,170
db 190,255,255,215,215,255,255,190
db 170,170,170,170,170,170,170,170
db 130,8,32,32,130,34,168,170
db 190,239,255,255,239,251,239,190
db 90,85,85,149,101,90,85,165
db 170,90,86,101,149,85,101,150
db 169,165,149,149,89,86,101,154
db 190,239,191,251,238,251,190,190
db 138,138,138,162,162,138,138,162
db 85,85,85,85,85,85,85,85
db 102,153,101,153,101,149,101,149
db 169,166,169,166,153,166,153,102
db 191,186,238,250,238,250,234,234
db 254,174,187,175,187,175,171,171
db 255,187,238,171,186,170,170,170
db 85,85,85,85,85,85,85,85
db 238,103,185,154,174,230,123,153
db 85,101,102,102,106,106,170,170
db 170,170,170,170,170,170,102,85
db 130,40,150,85,190,190,233,150
db 130,32,8,8,130,136,42,170
db 162,132,146,130,146,130,42,170
db 130,40,190,255,150,150,235,190
db 168,161,0,22,130,170,170,170
db 119,95,119,95,119,95,119,95
db 251,254,251,254,251,254,251,254


A ver si se ve como espero y no he patinado demasiado...

El resultado deberia ser el de un mapa como el del primer mensaje.

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 16 Jul 2018 22:37

jltursan escribió:Bueno, tengo a medio acabar un editor de graficos PM3, gracias a el he podido generar lo siguiente (obvio; pero son los bloques ;-)):
A ver si se ve como espero y no he patinado demasiado...
El resultado deberia ser el de un mapa como el del primer mensaje.

Me lo copio y haré una versión del programa en PMODE3 con esta tabla de bloques ...
En cuanto esté preparada subiré el binario para que lo podáis probar en cualquier emulador ...
muchas gracias!
pere

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 16 Jul 2018 22:55

Bueno,
ya está hecho ...
Esta versión no tiene el rollazo de los sonidos al inicio, asi que en cuanto se pulsa una tecla
en el menu, aparace la primera pantalla del juego.
Una vez aparece una pantalla, cualquier tecla pulsada añade los objetos (no hay en todas las pantallas)
Para navegar por las pantallas, pulsando 'N' pasa a la siguiente y pulsando 'P' vuelve a la anterior
Pulsando 'Q' finaliza el programa
Si pasáis del final vuelve a la primera o a la última según en que dirección estéis yendo.
@jltursan
Buen trabajo!
Ya me contarás como lo ves ...
saludos
pere
FOG68090J1.ZIP
(8.63 KiB) Descargado 10 veces


Pd El fichero se puede cargar en XRoar mediante Ctrl+L y tras seleccionarlo hacer EXEC&H2600
Alternativamente podéis cargarlo con Ctrl+Shift+L y al seleccionarlo arranca directamente

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 16 Jul 2018 23:22

He estado comparando las pantallas PM3 con las de Spectrum ...
Mi única duda es que al ser el color de fondo el azul (código 2) en lugar de código cero que, lo desconozco,
pero igual es el valor para el negro en Spectrum, puede que mover objetos/sprites no se pueda hacer con
un simple xor como usan ellos (nuestro eor) pero no me hagas caso, son elucubraciones.
Cuando el código de movimiento de los sprites funcione ya veremos como queda ésto!
Y la verdad es que falta mucho código por convertir ... los sprites tienen multitud de subrutinas
saludos
pere

jltursan
Mensajes: 2226
Registrado: 20 Sep 2011 13:59
Agradecido : 105 veces
Agradecimiento recibido: 285 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor jltursan » 17 Jul 2018 11:13

Es como dices. En un equipo como el Spectrum en el que los atributos están separados de los patrones es muy sencillo y económico el dibujar los sprites con una única rutina XOR, el primer uso lo pinta, el siguiente sobre la misma posición lo borra. Empleando esto con un doble buffer o como mínimo de forma sincronizada, es bastante resultón.
En un sistema bitmapped como el Dragon hay que llevar ojo ya que alterar el patrón es alterar los colores obviamente. En nuestro caso empleando como dices el cero nos permitiría ñapearlo; pero eso implicaría tener el fondo verde (en el Foggy y en todos los juegos AGD). En el caso particular del Foggy el fondo verde era mi escenario alternativo ya que permitía usar el azul con más libertad y ser más fiel al colorido original del juego; pero el contraste se empieza a resentir, el azul es el mejor color para el fondo y así tener con diferencia el mejor contraste.

Una forma con la que podemos solventar eso es siguiendo algo parecido a lo que sugerí, el empleo de máscaras XOR para jugar con los colores. Yo puedo asumir que el fondo es 2 y diseñar los sprites teniendo en cuenta que su color va a ser producto de un (XOR 2), resultando la siguiente conversión:

Código: Seleccionar todo

           SPRITE   PANTALLA
(verde)      00   eor   10    = 10   (azul)
(amarillo)   01   eor   10    = 11   (rojo)
(azul)       10   eor   10    = 00   (verde)
(rojo)       11   eor   10    = 01   (amarillo)

De esta manera, con una paleta cambiada para los sprites, el truco del XOR podría seguir funcionando con nuestra pantalla bitmapped. De todas formas me da a mí que nos va a dejar basurilla por pantalla cuando el sprite se aproxime a un bloque en algunas ubicaciones; pero para empezar podría servir...

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 17 Jul 2018 12:52

Me parece una buena opción ... Efectivamente, habrá que ir viéndolo sobre la marcha.
Observando los sprites que se mueven en la primera pantalla, hay uno que se mueve en horizontal
y pasa por debajo de los objetos que forman la pantalla!
De igual forma, cuando se cruzan los dos sprites, parece que el vertical queda en primer término.
Seguiremos comentándolo conforme avance la conversión de código.
saludos
pere

jltursan
Mensajes: 2226
Registrado: 20 Sep 2011 13:59
Agradecido : 105 veces
Agradecimiento recibido: 285 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor jltursan » 17 Jul 2018 18:26

Lo primero que comentas es lógico dado que con el truco del XOR, tu puedes volcarlo y al repetir el volcado dejas todo como estaba. Eso sí, el XOR provoca que cuando pases por algo con píxeles a 1, tus propios píxeles a 1 se apagaran y se produce un efecto curioso de enmascaramiento. Como dices, para muestra un botón:

Foggy01.PNG
Foggy01.PNG (51.03 KiB) Visto 1011 veces

En el caso del bicho, parece que pasa por debajo; pero realmente es un XOR. En nuestro caso lo que nos pasaría es que aparecería el color resultado de la combinación de ambos píxeles (sprite+fondo). La única forma sería currarse una rutina "pro", que guarde el fondo, vuelque el sprite con una máscara y restaure el fondo, delicado tratándose del AGD.

El segundo caso, tres cuartos de lo mismo, un simple XOR:

Foggy02.PNG
Foggy02.PNG (45.58 KiB) Visto 1011 veces

El resultado final viene determinado por el orden de pintado, que asimismo obliga a que el borrado deba de ser en orden inverso al de pintado, para que el XOR actue correctamente.

Supongo que si nos ceñimos a las reglas, no costaría un esfuerzo gigante, tampoco podemos pedirle peras al olmo :-)

Para nuestras pruebas los prerotados los genera el compilador, yo de momento tendré que generártelos a mano. Le daré una pensada pero dado que ¿se va a mantener el movimiento de 2px? creo que sólo haría falta un único prerotado. Si pasamos a 1px (teniendo en cuenta que los píxeles del Dragon son dobles) si que se necesitarían los mismos que ahora.

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 17 Jul 2018 22:06

Efectivamente, tienes razón, los pixels del sprite que se mueva se apagarán.
Ya lo iré viendo, pero entiendo que el movimiento lo hacen a razón de dos pixels cada vez o sea dos bits.
Para nosotros va a ser lo mismo dos bits = 1 pixel ancho en PM3 o dos pixels normales en PM4
Esto implicaría tener cuatro imágenes para hacer la animación ya que cada cuatro movimientos se vuelve a
sincronizar a nivel byte, léase imágen de partida.

Tengo que irlo 'averiguando', el fuente habla de sprites pares y nones (even and odd numbered)
tal vez se refiera a su numero en la secuencia de movimiento, no lo sé con seguridad.
Además no invierten al vuelo, creo que los sprites están duplicados, hacia la derecha y hacia la izquierda
Las rutinas para mostrar sprites son bastante áridas y encima usan algunas instrucciones del Z80
que no son nada fáciles de implementar en 6809 sin usar varias lineas de código ...
En fin, no adelantemos acontecimientos. Espero a tener depuradas dichas rutinas ya que, para variar,
nada funciona nunca a la primera ;-)
Y si lo hiciera, aplicando la ley de Murphy, sería porqué algo se ha hecho mal!
saludos
pere

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 28 Jul 2018 13:34

@jltursan
usando lo que comentaste en un mensaje anterior, creo que podríamos hacer esto:
- Definir las letras/bloques/objetos/sprites en dos colores: fondo verde, primer término rojo
Entonces, antes de mostrar por pantalla hago dos operaciones:
ANDA #$mask
EORA #$AA

El ANDA utilizará estas máscaras, según el color deseado:
#$55 (01010101) producirá salida 01 (futuro color rojo)
#$AA (10101010) producirá salida 10 (futuro color verde)
#$FF (11111111) producirá salda 11 (futuro color amarillo)
Ninguno de ellos afectará al fondo, que permanecerá como 00 (futuro color azul)

Al realizar el EORA, se obtiene:
0101 eora $AA = 1111 color ROJO
1010 eora $AA = 0000 color VERDE
1111 eora $AA = 0101 color AMARILLO
0000 eora $AA = 1010 color AZUL
No creo que sea grave la doble operación añadida ... ya probaré en algún momento con
ANDA #255 y luego EORA #0 que no afectaría en nada al valor recibido

saludos
pere

EDITO: Ver mensaje siguiente, gracias!

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 28 Jul 2018 13:51

NOTA al anterior mensaje:
Toda la parafernalia descrita dará buen resultado SOLO con las letras (FONTs) y los caracteres especiales que se usan en menús ...
Obviamente los Bloques/Objetos y Sprites es mucho mejor que se definan en cuatro colores. Solo hay que ver los bloques ya diseñados
para darse cuenta de que limitarlos a dos colores por carácter sería muy restrictivo dada la escasa definición, mas vale jugar con ellos!
saludos
pere

jltursan
Mensajes: 2226
Registrado: 20 Sep 2011 13:59
Agradecido : 105 veces
Agradecimiento recibido: 285 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor jltursan » 28 Jul 2018 14:30

Me lo has quitado de la boca :-); excepto las fuentes, también considero que es más práctico emplear todos los colores en los diseños.

La fuente con fondo verde y tinta roja posiblemente la tenga pues lista hoy.

Avatar de Usuario
pser1
Mensajes: 2224
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 28 Jul 2018 15:10

jltursan escribió:Me lo has quitado de la boca :-); excepto las fuentes, también considero que es más práctico emplear todos los colores en los diseños.
así pues coincidimos -thumbup
La fuente con fondo verde y tinta roja posiblemente la tenga pues lista hoy.

No hay prisa José Luis, el próximo evento que debo hacer tiene no menos de 600 líneas de código Z80 y algunas de las subrutinas llamadas
será necesario hacerlas también o sea que estoy entretenido para largo ...
saludos
pere

jltursan
Mensajes: 2226
Registrado: 20 Sep 2011 13:59
Agradecido : 105 veces
Agradecimiento recibido: 285 veces

Re: Port del AGD de Z-80 a 6809: Gráficos PMODE 3 del Foggy

Mensajepor jltursan » 09 Ago 2018 18:59

Para organizar un poco los hilos, publico también aquí los gráficos que faltaban:

FoggyGraphics.zip
(4.15 KiB) Descargado 6 veces

Añado además los gráficos reales en los que se basan:

FOGGY_FONT.png
FOGGY_FONT.png (22.12 KiB) Visto 1238 veces

FOGGY_OBJECTS.png
FOGGY_OBJECTS.png (16.95 KiB) Visto 1238 veces

FOGGY_SPRITES.png
FOGGY_SPRITES.png (12.08 KiB) Visto 1238 veces


Volver a “Software Dragon”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados