Port del AGD de Z-80 a 6809

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 30 Ago 2018 22:40

Último mensaje de la página anterior:

jltursan escribió:Buen trabajo, efectivamente ya no aparece el problema de los "bricks" en la pirámide. Ahora mismo sólo soy consciente del problema del sincronismo -drinks
Por otra parte habrá más gráficos, me he colado con uno de los gráficos de tuberia y no encaja -banghead. Por otro lado Foggy ya se mueve como toca cuando va a la izquierda y los cristales y llaves se han intentado encajar un poco al color sugerido por la descripción. Se me ocurre que igual podemos cambiar el literal "Key pink" por "Key purple", se ajustaría más a la realidad :-)

Se puede probar, ¿Porqué no?
De momento nos hemos pegado un castañazo de narices con el fuente que genera el sistema automático.
No funciona casi nada … y sin entrar en el tema de coordenadas …
El texto inicial va bien, pero luego al presentar localizaciones se arma un lio de mil demonios.
En fin, paciencia, ya podrían utilizar el 'convenio' que yo he adoptado para 6809 en lugar de quererlo unificar todo
A fin de cuentas el código se genera para cada máquina en 'case' aparte por lo que no dolería tanto que fuesen líneas
específicas para 6809, en fin ya veremos como acaba esto.
saludos
pere

jltursan
Mensajes: 5619
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 990 veces
Agradecimiento recibido: 2040 veces
Contactar:

Re: Port del AGD de Z-80 a 6809

Mensajepor jltursan » 31 Ago 2018 20:40

En el primer intento nunca funciona nada :-).

Quizás se puede ir, mientras tanto, buscando un candidato que permita implementar el resto de rutinas de eventos que faltan...

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 31 Ago 2018 22:43

jltursan escribió:En el primer intento nunca funciona nada :-).
Quizás se puede ir, mientras tanto, buscando un candidato que permita implementar el resto de rutinas de eventos que faltan...

Ya hemos solventado los problemas graves. Ahora queda el trabajo de adaptar el motor a los requerimientos de trabajo del grupo.
De paso también le he pedido que me diga el nombre de un juego que trabaje con disparos, láseres, lo que sea, con tal de que se vaya
completando el motor AGD y de paso tendremos otro jueguecito ;-)
saludos
pere

Avatar de Usuario
minter
Mensajes: 4826
Registrado: 22 Jul 2014 18:51
Agradecido : 6762 veces
Agradecimiento recibido: 2602 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor minter » 01 Sep 2018 00:18

ya he avanzado bastante en el juego, pero cuando solo hay un enemigo, la velocidad es rabiosamente endiablada.
El motor no mantiene una velocidad constante para todos los enemigos o es un problema de mi equipo emulando?

jltursan
Mensajes: 5619
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 990 veces
Agradecimiento recibido: 2040 veces
Contactar:

Re: Port del AGD de Z-80 a 6809

Mensajepor jltursan » 01 Sep 2018 09:56

Ese es precisamente el problema del que hemos venido hablando y que ahora mismo es el ultimo problema "grave" que permanece sin resolver. Como no es prioritario de cara a testear el juego y ademas probablemente tampoco sea moco de pavo resolverlo, se dejara para un poco despues.
Yo siempre lo intento con las 3 vidas estandar y en mas de una ocasion me han matado por culpa de la velocidad, en las escaleras a la hora de no asomar la cabeza es critico :-D

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 01 Sep 2018 12:30

Ya veremos como solucionamos este problema.
En el 6502, utilizan un timer que preparan para obtener una frecuencia de 25 ciclos por segundo.
Por esto dicen que el programa muestra 25 frames por segundo.
Como en el 6809 esto no existe, lo mas a que podemos aspirar es a utilizar la frecuencia de cuadro (50Hz en PAL
pero 60Hz en NTSC) lo cual es la *mitad* del tiempo que en el 6502, cosa que conlleva sus problemas.
Creo recordar que las primeras versiones no adolecían tanto de este defecto de velocidad variable en función del número
de sprites que hay en pantalla. Puede que sea porqué faltaban eventos por convertir, me temo :-(
De momento tengo que modificar el 'motor' para cumplir con el protocolo establecido en AGD aunque implique usar más código del necesario (para 6809), es lo típico cuando se intenta estandarizar algo ...
Pero a cambio podemos tener la suite de desarrollo en un futuro cercano, que disponiendo del motor y del generador de código 6809 (ya probado) nos permitirá crear juegos nuevos!
saludos
pere

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 03 Sep 2018 22:57

Hola,
solo quería comentaros que NO he tenido que modificar el motor AGD para nada de nada.
El problema que había era para mostrar bloques, pero al comentar con Kees las variantes que se
emplean en el programa y como tengo programado el motor ... el problema era de simple inversión
de coordenadas X-Y, un follón para cambiarlo en el motor.
Kees ha modificado el compilador (generador) de código 6809 para los eventos de sprites de forma
que ya llegan invertidas al motor y el resultado es que utilizando el fichero de definición del juego
FOGGY.AGD y compilándolo con la suite AGD para Dragón, produce un ejecutable con el que he conseguido
llegar hasta el final del juego, eso sí perdiendo unas 7 vidas para ello :-(
Tiene buena pinta, a ver como conseguimos encajar el tema cambios de colores en el texto que, de momento,
no está soportado por el compilador AGD
Trabajillos pendientes siguen quedando, a ver cuando se puede cerrar Foggy para hincarle el diente a un juego de "disparos"

saludos
pere

Avatar de Usuario
minter
Mensajes: 4826
Registrado: 22 Jul 2014 18:51
Agradecido : 6762 veces
Agradecimiento recibido: 2602 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor minter » 03 Sep 2018 23:15

Que me aclare, que funciono por debajo del megaherzio. -507
El AGD es bajo windows y genera codigo para Dragon?
Y con tus cambios de codigo y los graficos generados por jltursan, se genera casi correctamente el froogy?

Eso es una autentica pasada, no?

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 03 Sep 2018 23:24

minter escribió:Que me aclare, que funciono por debajo del megaherzio. -507
El AGD es bajo windows y genera codigo para Dragon?
Y con tus cambios de codigo y los graficos generados por jltursan, se genera casi correctamente el froogy?
Eso es una autentica pasada, no?

Veamos, el AGD que yo estoy utilizando es un ejecutable de windows (AGD.EXE) que recibe como parámetro un fichero .AGD
y lo que hace es crear un fichero .inc que en realidad es una ristra de lineas de código ASM, contiene el motor FOG0U1 y luego
los datos de usuario/juego o sea eventos, tablas, bloques, sprites, letras ...
Con el fichero de salida, si lo pasas por el ASM6809 pues ya lo tienes compilado
Y como a Kees le gusta automatizarlo al máximo, en un bat llama todos los pasos de la cadena ... incluso al XRoar para probar el resultado!

El AGD.EXE es el resultado de compilar un programazo en C que es donde se definen que debe ponerse en el fichero ASM de salida
en función de las sentencias que le llegan del .AGD que puede considerarse un lenguaje de macros.

Pero para resumir, si chico, tomas un AGD, lo metes en la suite de AGD-Dragón y ya tienes un ejecutable que ... hasta puede funcionar
Por supuesto ahora tenemos el motor incompleto así que los juegos de disparos no irían bien ... tiempo al tiempo!
saludos
pere

Avatar de Usuario
ron
Mensajes: 21855
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor ron » 04 Sep 2018 12:18

Ni en la mejor novela de Asimov, esto es de quitarse el sombrero , Chapeau !!!

jltursan
Mensajes: 5619
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 990 veces
Agradecimiento recibido: 2040 veces
Contactar:

Re: Port del AGD de Z-80 a 6809

Mensajepor jltursan » 04 Sep 2018 19:12

¡Grande Pere, muy buenas noticias!

En su momento estuve zanganeando con el compilador AGD; muy majo, me lo compilé en el Armbian de la Pi y funcionaba como un tiro. Estuve especialmente probando con el compilador de Timex y realmente te compilaba el ejemplo sin problemas. Pasabas de ZX a Timex casi sin esforzarte, el de CPC ya era harina de otro costal, requería un rediseño completo de los recursos gráficos.

Si finalmente podemos llegar a algo con el Dragon podría estar tremendo, el scripting del AGD no es complicado y ya hay motores hechos por la gente para un montón de tipos de juegos.Riete tú de la churrera del Spectrum :-)

Incorporar el color al compilador en su versión Dragon/CoCo debería ser sencillote, el generador de código estaba perfectamente compartimentado y encima, el Spectrum emplea igualmente un byte (si no recuerdo mal) destinado a definir el papel y la tinta, algo similar a lo que se necesita aquí.

jltursan
Mensajes: 5619
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 990 veces
Agradecimiento recibido: 2040 veces
Contactar:

Re: Port del AGD de Z-80 a 6809

Mensajepor jltursan » 04 Sep 2018 19:35

No hay listas exhaustivas con los juegos realizados con AGD (o al menos yo nos las encuentro); pero en base a lo que se ve, estos juegos son de tiritos:

https://www.youtube.com/watch?v=7Axsu96GvrU https://www.youtube.com/watch?v=zoYFh6RvS5Y

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 04 Sep 2018 23:38

jltursan escribió:¡Grande Pere, muy buenas noticias!
Si finalmente podemos llegar a algo con el Dragon podría estar tremendo, el scripting del AGD no es complicado y ya hay motores hechos por la gente para un montón de tipos de juegos. Riete tú de la churrera del Spectrum :-)

Será una oportunidad para 'convertir' o 'heredar' los 151 juegos ya desarrollados con AGD para Spectrum
Otro tema será cuando tendremos un compilador en C capaz de generar código 6809 lo más optimizado posible.
Actualmente estamos en ello con Kees, ya se ha avanzado bastante, pero las posibilidades que ofrece el 6809 de trabajar
casi permanentemente con registros de 16 bits va a costar 'automatizarlas', pero se intentará -thumbup
Incorporar el color al compilador en su versión Dragon/CoCo debería ser sencillote, el generador de código estaba perfectamente compartimentado y encima, el Spectrum emplea igualmente un byte (si no recuerdo mal) destinado a definir el papel y la tinta, algo similar a lo que se necesita aquí.

Ya veremos como se hará esto. De entrada me comentaban que lo ideal sería tener dos juegos, ya que cada diseño parte de un fichero .AGD
que contiene la definición de los elementos gráficos y NO se permite doble juego de elementos
Así que habrá que tener un .AGD con la definición para PMode4 y luego hacer otra para PMode3
No creo que sea mas complicado de lo que tenemos ahora ya que el motor se hereda gratis y la parte de scripts de eventos será la
misma en los dos casos, solo cambiarán las definiciones de bloques, objetos y sprites. Vamos que no lo veo malo del todo -507
En lo que respecta al color, nosotros necesitamos DOS bytes para hacer el AND-EOR que trataré de asociarlos a ForeGround/BackGround
de forma que crear dos variables (una de 16 bits) no va a doler mucho y menos ahora que las he enviado a casi todas a la primera página
de RAM, ya iremos viendo como se implementa en C para ofrecer la función en las macros .AGD
El motor ya está preparado para trabajar con ellas
saludos
pere

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 04 Sep 2018 23:41

jltursan escribió:No hay listas exhaustivas con los juegos realizados con AGD (o al menos yo nos las encuentro); pero en base a lo que se ve, estos juegos son de tiritos:

Muchas gracias,
verás Kees me dió esta dirección para acceder directamente a muchos snapshots de Spectrum, que se pueden convertir en .AGD
utilizando su utilidad convert.exe de Windows. Esta es la dirección:
https://drive.google.com/open?id=1mwTnE ... U6ahha7Evf
Supongo que habrá muchos de 'guerra', pero yo quería evitar andar probando hasta encontrar uno.
Lo ideal sería encontrar alguno que dispare tiros, láseres y haya explosiones, así podré convertir mas rutinas pendientes de golpe!

saludos
pere

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 04 Sep 2018 23:49

jltursan escribió:No hay listas exhaustivas con los juegos realizados con AGD (o al menos yo nos las encuentro); pero en base a lo que se ve, estos juegos son de tiritos:
https://www.youtube.com/watch?v=7Axsu96GvrU https://www.youtube.com/watch?v=zoYFh6RvS5Y

Los dos parecen interesantes ya que producen efectos distintos. Buena selección!
De todas formas, nos conviene mas analizar el motivo real por el que los sprites se mueven a velocidad *tan* dependiente del número
de ellos que pululan por pantalla.
Me parece que abriré un hilo dedicado solamente a este tema de velocidades de sprites ... cualquier idea al respecto puede ser interesante.
Ya subiré el fuente en ensamblador final, que nos servirá de base para buscar la raiz del problema.
Saludos
pere

Avatar de Usuario
Chema
Mensajes: 2664
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 3190 veces
Agradecimiento recibido: 926 veces
Contactar:

Re: Port del AGD de Z-80 a 6809

Mensajepor Chema » 05 Sep 2018 15:30

pser1 escribió:De todas formas, nos conviene mas analizar el motivo real por el que los sprites se mueven a velocidad *tan* dependiente del número
de ellos que pululan por pantalla.
pere


Mmmm ¿qué método usas para dibujarlos? sé que es un xor, me refiero a cómo es la lógica para irlos actualizando, cuándo esperas por el refresco de pantalla...

No he visto la versión de Dragon (ya podíais poner un video -nb ) pero pintando sprites tan pequeños con xor debería de haber muchos, pero muchos muchos, para que se notase ralentización, porque imagino que esperas al sincronismo vertical y pintas todo (o lo intentas) en el período de blank, ¿no?

Ahí debería haber ciclos de reloj de sobra para pintar, no sé, como media docena al menos. En el Oric eran como 5.6us (el reloj es de 1MHz, así que 5600 ciclos). Si no te da tiempo, entonces actualizará cada 2 frames, a 25Hz y ahí sí que debería haber ciclos de sobra.

Igual estás muy cerca del límite (no sé qué otras cosas se hacen por frame ni el tiempo que llevan) y con uno o dos sprites puedes ir a 50Hz y con más saltas a 25Hz, que es la mitad de velocidad y eso es lo que notas.

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 05 Sep 2018 16:37

Chema escribió:
pser1 escribió:De todas formas, nos conviene mas analizar el motivo real por el que los sprites se mueven a velocidad *tan* dependiente del número
de ellos que pululan por pantalla.
pere

Mmmm ¿qué método usas para dibujarlos? sé que es un xor, me refiero a cómo es la lógica para irlos actualizando, cuándo esperas por el refresco de pantalla...
No he visto la versión de Dragon (ya podíais poner un video -nb ) pero pintando sprites tan pequeños con xor debería de haber muchos, pero muchos muchos, para que se notase ralentización, porque imagino que esperas al sincronismo vertical y pintas todo (o lo intentas) en el período de blank, ¿no?
Ahí debería haber ciclos de reloj de sobra para pintar, no sé, como media docena al menos. En el Oric eran como 5.6us (el reloj es de 1MHz, así que 5600 ciclos). Si no te da tiempo, entonces actualizará cada 2 frames, a 25Hz y ahí sí que debería haber ciclos de sobra.
Igual estás muy cerca del límite (no sé qué otras cosas se hacen por frame ni el tiempo que llevan) y con uno o dos sprites puedes ir a 50Hz y con más saltas a 25Hz, que es la mitad de velocidad y eso es lo que notas.

Hola Chema,
si emplean el sistema de hacer EOR para pintar y de nuevo para borrar ...
El sistema que utiliza el motor AGD es realmente rebuscado, las rutinas Spritexx parece que trabajan linea a linea las 16 lineas del sprite
borrando primero la 'antigua' y añadiendo a continuación la 'nueva', esto es peor que dibujar dos sprites a la vez ya que los punteros a
pantalla y a los datos son diferentes para cada ocurrencia del sprite (antiguo, nuevo). En z80 usan el opcode "exx" 32 veces, 16 para
cada uno de ellos, realmente terrorífico para el sistema 6809!
Creo que hablan de 25 frames por lo que deben dedicar dos interrupciones FS antes de actualizar y posiblemente la versión 6809 no está
esperando dos cuadros ... ya abriré un hilo nuevo, publicaré el fuente de Foggy completo y podremos comentar directamente sobre el código
saludos
pere


Volver a “Software Dragon”

¿Quién está conectado?

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