Port del AGD de Z-80 a 6809

jltursan
Mensajes: 2266
Registrado: 20 Sep 2011 13:59
Agradecido : 113 veces
Agradecimiento recibido: 310 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor jltursan » 17 Jul 2018 18:10

Último mensaje de la página anterior:

Y el caso es que con la AGDX todavía no tengo claro que se pueda descompilar correctamente un AGD a partir de su snapshot (pensaba que sí). Con el Foggy no tuve éxito :-(

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 17 Jul 2018 21:52

jltursan escribió:Y el caso es que con la AGDX todavía no tengo claro que se pueda descompilar correctamente un AGD a partir de su snapshot (pensaba que sí). Con el Foggy no tuve éxito :-(

Hola José Luis,
me parece que para obtener un fichero .agd partiedo de un .sna hay que usar una de las utilidades
que indicó Kees, el programa se llama convert.exe
No sé si este programa genera un fichero 'válido' para el AGDX, pero lo que si es cierto es que dicho fichero
se puede utilizar para crear un fichero .tap con sus otras utilidades. Primero lo convierte en .asm con AGD.exe que
le añade el motor, luego le añade cabecera y final y por fin lo compila con el 'sjasmplus'

saludos
pere

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 25 Jul 2018 18:47

Hola,
ahí va una actualización del estado del proyecto
El programa ya dibuja las localizaciones(pantallas) añadiendo los objetos y sprites que corresponden.
Me he avanzado y ya tengo hecha la parte correspondiente al Event10, lo siguiente ya son los eventos
en el bucle principal ... Progresando!

Ya había olvidado el tema "little endian"/"big endian" que diferencia al Z80 del 6809
Como tengo tendencia a utilizar registros de 16 bits, debo verificar que cuando lo guardo en variables
lo hago en el orden correcto, a pesar de la disposición de datos invertida en la estructura para Spectrum

Al añadir la parte del Event10, el código ya excede los 32k (sumando sistema, pantalla, código y datos)
Así que llegó el momento de pasar a modo todo RAM (MAP1) copiando solo el Intérprete de Basic, dejando libre
el resto hasta el final de RAM. He redireccionado los gráficos a la parte alta: $e600-$fdff, de esta forma he
recuperado (con el código ya añadido) unos 7.197 bytes en la parte baja. Si hiciera falta podría echar mano del
área del DOS (C000-E5FF) unos 9.728 bytes extra. Entiendo que con esto se garantiza espacio para el port de cualquiera
de los 150 juegos ya creados en Spectrum.

Me encontré un truco (sucio) que emplean en el motor std. Para marcar que algo está fuera de pantalla, hacen que el puntero
a memoria apunte a la ROM, donde por mas que escribas no cambias nada, que pasada!!
Obviamente este sistema fracasa en modo todo RAM ya que la ROM está en RAM y por tanto es vilmente masacrada :-(
De momento no duele porque de la ROM solo uso la lectura de teclado. Pondré un control en la rutina que dibuja en pantalla
para que detecte que está fuera de pantalla y no haga locuras ;-)

Aquí os subo la última versión, encontraréis dos ficheros binarios:
- FOGPM3 este muestra gráficos en PMODE3 (4 colores)
- FOGPM4 ese utiliza PMODE4, o sea solo blanco y negro (a menos que tengáis habilitados los artifacts, no están mal!)
Para quienes prefieran usar VDK o bien DSK, adjunto un zip con ellos también

1 - Cargar el fichero y hacer EXEC&HE00, así se muestra el menú
2 - Pulsando una tecla se muestra la primera pantalla (localización)
3 - Cualquier tecla mostrará los Objetos si hay alguno presente en esta localización
4 - Cualquier tecla mostrará los Sprites de esta localización, a pesar de que las coordenadas del jugador
serán incorrectas ya que corresponden a las de la primera pantalla
5 - Ahora puedes elegir entre estas opciones
- 'N' para ver la siguiente localización
- 'P' para volver a la anterior
- 'Q' para finalizar el programa. El ordenador se re-inicializará en modo std
Si cambias de localización, el programa vuelve al punto 3

saludos
pere
FOG6809.ZIP
(23.14 KiB) Descargado 11 veces

FOG6809-Virtual disk files.ZIP
(25.87 KiB) Descargado 9 veces

jltursan
Mensajes: 2266
Registrado: 20 Sep 2011 13:59
Agradecido : 113 veces
Agradecimiento recibido: 310 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor jltursan » 25 Jul 2018 20:49

¡Buen trabajo!, yo reconozco que me he enganchado más con el conversor de gráficos que a raiz de este proyecto me he liado a hacer; pero la parte Dragon ya la tengo casi acabada así que volveré a centrarme en los gráficos puros y duros :-)

A continuación que te vendrían bien, ¿los objetos?, ¿sprites?, tengo avances en todos los frentes, sólo quedaría pendiente concretar si al final se va a emplear el mecanismo del XOR para que pueda continuar con el trabajo.

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 25 Jul 2018 21:59

jltursan escribió:¡Buen trabajo!, yo reconozco que me he enganchado más con el conversor de gráficos que a raiz de este proyecto me he liado a hacer; pero la parte Dragon ya la tengo casi acabada así que volveré a centrarme en los gráficos puros y duros :-)
A continuación que te vendrían bien, ¿los objetos?, ¿sprites?, tengo avances en todos los frentes, sólo quedaría pendiente concretar si al final se va a emplear el mecanismo del XOR para que pueda continuar con el trabajo.

Como habrás podido observar ejecutando el binario para PMode3, los tiles/bloques se ven bien, pero tanto los objetos como los sprites
se ven horrorosos sin ninguna modificación.

Kees van Oss me ha enviado una hoja Excel que permite diseñar bloques a 4x8 pixels y Objetos/sprites a 8x16
Lo he probado y funciona muy bien.
Conforme creas uno, el va preparando los cuatro frames para producir movimiento.
Es bastante fácil de usar, pero *NO* importa datos de programa, solo sirve para crear de cero ... tu verás!
Lo adjunto enzipado ...
suerte
pere
Spritedesigner-v2.zip
(52.29 KiB) Descargado 9 veces

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 25 Jul 2018 22:05

José Luis,
te adjunto cuatro programitas, 2 para PMode3 y dos para PMode4 que permiten visualizar los datos del programa FOGGY
los VIEWBLK muestran los 79 Bloques mientras que los VIEWOBJ muestran los 20 Objetos disponibles
Ahora prepararé algo para ver los sprites y sus frames para movimiento

saludos
pere
VisoresBloquesObjetos.zip
(2.75 KiB) Descargado 14 veces

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 25 Jul 2018 23:18

Lo dicho, ahí van dos programas para ver los Sprites (sus frames para hacer movimiento)
Cada uno está desplazado 2-4-6 bits respecto del orignal (mas a la izquierda de los cuatro)
Veréis dos sprites por linea.
Una vez llena la pantalla, pulsando cualquier tecla se vuelve a rellenar con mas sprites
Como hay 156 frames = 39 sprites x 4, pues tendréis dos pantallas llenas y una parcial ...
En color se ve mal :-(
Trataré de hacer lo mismo con el alfabeto ya que no queda bien en PMode3

saludos
pere
VIEWSP.ZIP
(5.58 KiB) Descargado 9 veces

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 25 Jul 2018 23:42

y para finalizar el tema de los fuentes ...
Os adjunto dos programas VIEWFNT para ver los fuentes *actuales* en color o blanco y negro

Asimismo adjunto uno VIEWKEES que permite ver los fuentes especiales de Kees van Oss que al ser
procesados con un AND ($00,$55,$aa,$ff) cambian el color de las letras ...
El programa los muestra en un color y al pulsar tecla cambia de color. Una vez vistos los tres colores (distintos del fondo)
finaliza el programa.

@jltursan
por si puede ser de utilidad, adjunto el fuente del programa que muestra los caracteres de Kees ...

saludos
pere
VIEWKEES.ZIP
(4.05 KiB) Descargado 15 veces

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 27 Jul 2018 18:29

Otra actualización ...
He elegido el sprite de movimiento vertical por ser el que tiene menos código asociado
Así que una vez convertido ... ya se mueve!
Os adjunto los ejecutables para PMode3 y para PMode4 que van tanto en CoCo como en Dragón
Los colores de Objetos y Sprites dejan mucho que desear ya que son simple interpretación de los bits B/N en colores
En cuanto José Luis los pula ya será otra cosa ...

saludos y buen fin de semana
pere

Pd Cada muchos movimientos, el programa lee el teclado, así que si pulsáis 'Q' un rato, el programa acaba y se reinicia el ordenador
FOGGYv0N7.ZIP
(24.23 KiB) Descargado 12 veces

jltursan
Mensajes: 2266
Registrado: 20 Sep 2011 13:59
Agradecido : 113 veces
Agradecimiento recibido: 310 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor jltursan » 27 Jul 2018 21:35

pser1 escribió:y para finalizar el tema de los fuentes ...
Os adjunto dos programas VIEWFNT para ver los fuentes *actuales* en color o blanco y negro

Asimismo adjunto uno VIEWKEES que permite ver los fuentes especiales de Kees van Oss que al ser
procesados con un AND ($00,$55,$aa,$ff) cambian el color de las letras ...
El programa los muestra en un color y al pulsar tecla cambia de color. Una vez vistos los tres colores (distintos del fondo)
finaliza el programa.

@jltursan
por si puede ser de utilidad, adjunto el fuente del programa que muestra los caracteres de Kees ...

saludos
pere
VIEWKEES.ZIP


Yo para visualizar empleo el AGD-Viewer. Me permitido capturar de un plumazo todos los elementos gráficos de un AGD y además, verlos animados si lo soportan :-)

Lo que no acabo de entender es lo del AND. Doy por hecho que se trata de fuentes con fondo verde (0) y tinta roja (3). Si le aplicas las mascaras, el fondo seguirá siendo verde pero obtendrás diferentes tintas según la mascara.

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 27 Jul 2018 23:04

jltursan escribió:Yo para visualizar empleo el AGD-Viewer. Me permitido capturar de un plumazo todos los elementos gráficos de un AGD y además, verlos animados si lo soportan :-)

Muy buenas noticias! Me alegra saberlo ...
Las hojas Excel de Kees sirven para crear Objetos o Sprites de cero, es decir sin partir de un .agd, finalidad muy diferente
Lo que no acabo de entender es lo del AND. Doy por hecho que se trata de fuentes con fondo verde (0) y tinta roja (3). Si le aplicas las mascaras, el fondo seguirá siendo verde pero obtendrás diferentes tintas según la mascara.

Bueno, si diseñas la letras o cualquier objeto con $00 como fondo y con $11 como primer término, entonces haciendo
AND $01 convierte el primer término en color Amarillo
AND $11 convierte el primer término en color Azul
AND $11 o no hacerle nada, lo mantiene en color Rojo
Usando el color verde como fondo, puedes tener letras/texto en tres colores
saludos
pere

jltursan
Mensajes: 2266
Registrado: 20 Sep 2011 13:59
Agradecido : 113 veces
Agradecimiento recibido: 310 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor jltursan » 28 Jul 2018 11:00

Correcto, ¿las diseño así entonces, rojas sobre fondo verde y aplicas la máscara para darles tres posibles colores?

Hay un pequeño problema con determinados caracteres en la fuente que son claramente bloques gráficos y susceptibles de emplear más de un color, en esos no se muy bien por donde tirar. Igual se podría aplicar la máscara a un intervalo limitado de códigos ASCII...

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 28 Jul 2018 12:23

jltursan escribió:Correcto, ¿las diseño así entonces, rojas sobre fondo verde y aplicas la máscara para darles tres posibles colores?
Hay un pequeño problema con determinados caracteres en la fuente que son claramente bloques gráficos y susceptibles de emplear más de un color, en esos no se muy bien por donde tirar. Igual se podría aplicar la máscara a un intervalo limitado de códigos ASCII...

Hola José Luis,
en principio este juego de caracteres que está bajo la tabla font, es manipulado como texto, y a cada llamada le asignan previamente un
color en el área de atributos. De esta forma los caracteres no alfabéticos que se ven en el menú inicial, a pesar de usar el mismo, se muestran
en distintos colores ... de hecho hay uno que aparece en cuatro colores diferentes (cambian fondo y primer término)
En el menú para elegir teclado/joystick las letras aparecen en cuatro colores sobre fondo negro
En las pantallas del juego, los textos aparecen en la parte baja de pantalla contra fondo azul.
Podemos probar, como dices, tenerlos con fondo verde ($00) y ver como les puedo aplicar la máscara en el programa
sin complicar la rutina, que por defecto aplicaría $ff sin afectar el contenido

Supongo que podemos encontrar alguna alternativa que permita convertirlo en fondo azul para ser coherente con los
bloques que forman las pantallas y además permitir letras en los otros tres colores como utiliza el juego en Spectrum
Ya revisaré tus mensajes previos, creo que comentabas algo así en uno de ellos, ya vamos hablando ...

saludos
pere

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 28 Jul 2018 15:55

Hola,
por alguna parte he dicho que me iba a poner con un evento de mas de 600 lineas ...
Esto quiere decir que ya he acabado con el sprite que se mueve en horizontal ...
No es imprescindible, pero os adjunto los binarios PM3 y PM4
como siempre EXEC&HE00 y mantener 'Q' para salir
saludos
pere
FOGv0N8.ZIP
(24.42 KiB) Descargado 7 veces

FOGGY-DosSprites.jpg
FOGGY-DosSprites.jpg (87.24 KiB) Visto 613 veces

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 30 Jul 2018 12:50

Otra actualización.
He convertido el "evento02" que gestiona un montón de sprites en distintas pantallas.
Ocupa unas 600 líneas de código Z80 e introduce varias subrutinas.
La conversión directa generó 1378 bytes de código 6809, cosa que me asustó un poco ... el espacio es finito en el Dragón ...
Estudiando dicho evento encontré muchas repeticiones y algunas redundancias innecesarias, así que me decidí a optimizar
el código creando unas pocas subrutinas y procurando aprovechar al máximo el uso de los registros de 16 bits.
El resultado ha sido bueno. Ahora solo ocupa 705 bytes!
Esto indica claramente que el generador de código Z80 a partir de los scripts que entra el usuario (creador del juego)
es bastante espartano y va a piñón fijo ... A ver si se puede mejorar el que ha de generar código 6809, que no deja de
ser una parte del proyecto AGDX.
En fin, no hay grandes cambios en pantalla, simplemente se mueve (casi imperceptible) un sprite mas, ya solo falta
el sprite del jugador ...
FOG0O3-BN.jpg
FOG0O3-BN.jpg (82.51 KiB) Visto 582 veces
FOG0O3-COL.jpg
FOG0O3-COL.jpg (87.25 KiB) Visto 582 veces

saludos
pere
FOG0O3.zip
(25.15 KiB) Descargado 14 veces

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 02 Ago 2018 16:34

Otro pasito hacia adelante.
Ya he convertido el Evento00 que gestiona al personaje que maneja el usuario/jugador y las rutinas que llama.
Ahora ya se puede jugar tanto con teclado como con joystick, para ello hay que pulsar la tecla '2' en el menú inicial
y recordar, si usáis emuladores, que hay que mapear el joystick derecho al teclado ... estáis avisados!
Los dos binarios (uno PMode3 y otro PMode4) funcionan tanto en CoCo2 como en Dragón ambos con 64k

FOG0Q5.jpg
FOG0Q5.jpg (82.82 KiB) Visto 560 veces

saludos
pere
FOG0Q5.ZIP
(27.15 KiB) Descargado 15 veces

Avatar de Usuario
pser1
Mensajes: 2248
Registrado: 08 Dic 2012 18:34
Agradecido : 317 veces
Agradecimiento recibido: 354 veces

Re: Port del AGD de Z-80 a 6809

Mensajepor pser1 » 06 Ago 2018 20:03

Hola,
creo que ya he convertido *todos* los eventos, faltan algunos flecos que corregir, pero el juego ya es 'jugable'
valga la redundancia ...
El programa cambia de pantalla cuando llegamos a los límites y hay camino hacia otra pantalla
Si chocamos con un sprite perdemos una vida y si tocamos un objeto, este es recogido y desaparece de pantalla
Como siempre, el zip contiene los dos binarios para PM3 y PM4 válidos para CoCo2 y Dragon ambos con 64K (obligatorio)
EXEC&HE00 para arrancar el juego y pulsando la tecla 'Z' sale inmediatamente del juego
Para facilitar la vida a los jugones impacientes, podéis hacer esto:
POKE&H2416,nn. Me parece que con 99 vidas ya da para practicar un poco, ¿Verdad?
Pues nada, que os entretengáis y podéis reportar las cosas 'raras' que veáis.
Muchas gracias por anticipado!

saludos
pere
FOG0Q7E.ZIP
(27.67 KiB) Descargado 19 veces


Volver a “Software Dragon”

¿Quién está conectado?

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