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

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

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

Mensajepor jltursan » 11 Jul 2018 21:45

Pues venga, un primer adelanto de los bloques que nos permiten visualizar ya como quedaría el mapa:

Imagen

Todavía me quedan para un rato...:-P

Y por supuesto, se me olvidaba comentar que los estupendos originales son obra de John Blythe y que esto sólo es una adaptación :-)

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: Gráficos PMODE 3 del Foggy

Mensajepor minter » 11 Jul 2018 22:11

Anda! Que wapo!
Adaptaste el tileset de spectrum a dragon? Has tenido que comer esos pixeles para pasar de 8 a 6?
De cuantos tiles estamos hablando para el mapeado? 25? 30?
A cuatro colores?
hay herramienta para crear esto en modo dragon?
las pantallas van comprimidas en el AGD? Cuanta memoria ocupa esto?

BlackHole
Mensajes: 1669
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 29 veces
Agradecimiento recibido: 523 veces

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

Mensajepor BlackHole » 11 Jul 2018 23:45

¿8 a 6? ¿Eso no era en Oric?

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: Gráficos PMODE 3 del Foggy

Mensajepor jltursan » 12 Jul 2018 12:07

Como dice Blackhole, eso es en el Oric, ¡ójala hubiesen sido 6 y no 4!. La verdad es que es lo mismito que en el Amstrad (o el C64) pero tener una paleta más amplia es la bomba.

Adaptaste el tileset de spectrum a dragon? Has tenido que comer esos pixeles para pasar de 8 a 6?


Se adaptó el tileset original de Spectrum a Dragon, sí.

De cuantos tiles estamos hablando para el mapeado? 25? 30?


Se definen 80 tiles si no recuerdo mal.

A cuatro colores?


Ya sabes, verde, azul, rojo y amarillo.

hay herramienta para crear esto en modo dragon?


Que yo sepa no, pero seguro que con el grafx2 se puede sacar algo. La mayoría de los programas permiten cargar una paleta y trabajar en modo indexado; pero que te permitan emplear un pincel rectangular 2x1 ya no es tan habitual. Yo empleo el PSP7 y la verdad, no he mirado si puedo definir ese pincel, trabajo con el 1x1 y mucho cuidado.

las pantallas van comprimidas en el AGD? Cuanta memoria ocupa esto?


Las pantallas, al menos en la fuente y casi seguro que en el "compilado", no van comprimidas y son ultrasencillas. Se define un ancho y un alto y multiplica por cada una y luego por el número definido. En el Foggy hay 28 diferentes de tamaño 28x20.
El tile es siempre de un caracter, no se emplean metatiles.

BlackHole
Mensajes: 1669
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 29 veces
Agradecimiento recibido: 523 veces

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

Mensajepor BlackHole » 12 Jul 2018 15:56

jltursan: Quizás alguno de los programas de dibujo de PC especializados en Commodore 64, te pudiese ser útil para ese modo de pincel 2x1.
GangEd 2: http://www.thegang.nu/get_data.php?type=attachment&id=218
Aunque luego entran en juego las restricciones de colores en cada grupo 8x8, no sé si luego eso te descolocaría los resultados. Prueba y nos cuentas.

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: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 12 Jul 2018 16:38

minter escribió:las pantallas van comprimidas en el AGD?

Me temo que SI hay cosas comprimidas.
Adjunto código Z-80 para 'pintar' una pantalla y aparece una llamada a una subrutina para descomprimir al vuelo bytes ...
Vamos a disfrutar ;-)
saludos
pere

Código: Seleccionar todo

; Draw present room.
-----------------------------------------------------------
; droom  ld a,(wintop)       ; window top.
;        ld (dispx),a        ; set x coordinate.
; droom2 ld hl,(blkptr)      ; blocks.
;        ld (grbase),hl      ; set graphics base.
;        call groom          ; get address of current room.
;        xor a               ; zero in accumulator.
;        ld (comcnt),a       ; reset compression counter
;        ld a,(winhgt)       ; height of window.
; droom0 push af             ; store row counter.
;        ld a,(winlft)       ; window left edge.
;        ld (dispy),a        ; set cursor position.
;        ld a,(winwid)       ; width of window.
; droom1 push af             ; store column counter.
;        call flbyt          ; decompress next byte on the fly.
;        push hl             ; store address of cell.
;        call pattr          ; show attributes and block.
;        pop hl              ; restore cell address.
;        pop af              ; restore loop counter.
;        dec a               ; one less column.
;        jr nz,droom1        ; repeat for entire line.
;        ld a,(dispx)        ; x coord.
;        inc a               ; move down one line.
;        ld (dispx),a        ; set new position.
;        pop af              ; restore row counter.
;        dec a               ; one less row.
;        jr nz,droom0        ; repeat for all rows.
;        ret

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: Gráficos PMODE 3 del Foggy

Mensajepor jltursan » 12 Jul 2018 17:18

Pues menos mal, se me ponían los pelos como escarpias pensando en el espacio brutal que supondría almacenar pantallas con celdas de 1 carácter :-)

Lo bueno que tiene el asunto es que formando parte del engine, como casi seguro que así es, se puede sustituir por cualquier otra rutina que igual comprima más y que permita la descompresión y volcado a pantalla de forma más optimizada. ¿Un exomizer quizás...?
La rutina que pones es curiosa, parece que emplea un mecanismo de compresión con "streaming" de datos, va descomprimiendo y pintando sobre la marcha. A costa de memoria y empleando un buffer se podría haber empleado un mecanismo más óptimo seguro. Habrá que valorarlo, claro..

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.

Edito: He estado curioseando el GangEd2 y no está mal; pero como es lógico, está demasiado orientada al C64. El grafx2 por lo que he visto permite trabajar con pinceles 2x1 por lo que probablemente siga siendo la herramienta objetivo si abandono el PSP7 (que por cierto, ya tiene narices que los pinceles horizontales funcionen los de todos los tamaños excepto el de 2x1, que en vez de hacerte un rectángulo de ese tamaño, te hace un cuadrado de 2x2 -banghead)

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: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 12 Jul 2018 18:42

jltursan escribió:Lo bueno que tiene el asunto es que formando parte del engine, como casi seguro que así es, se puede sustituir por cualquier otra rutina que igual comprima más y que permita la descompresión y volcado a pantalla de forma más optimizada. ¿Un exomizer quizás...?
La rutina que pones es curiosa, parece que emplea un mecanismo de compresión con "streaming" de datos, va descomprimiendo y pintando sobre la marcha. A costa de memoria y empleando un buffer se podría haber empleado un mecanismo más óptimo seguro. Habrá que valorarlo, claro..

Veamos, voy avanzando sin prisas ... pero sin pausas ;-)
Estaba viendo la rutina de descompresión y es de lo mas rudimentario: Char,Repeticiones, y asi hasta el final
En lo relativo a sustituirlo por otro compresor ... no sé si les va a gustar ya que la suite de desarrollo es la responsable
de generar las tablas de datos y requeriría tener el compresor para los juegos para 6809. Me temo que inviable, pero
no me preocupa demasiado, el método que usan es simple y como las pantallas son pequeñas (22x20 creo) y hay muchas repeticiones
en la misma hilera, pues igual es suficiente. Ya veremos
Estoy atacando la parte que empieza a mostrar la primera pantalla de juego ... paciencia!
saludos
pere

Código: Seleccionar todo

; Decompress bytes on-the-fly.
-----------------------------------------------------------
; flbyt  ld a,(comcnt)       ; compression counter.
;        and a               ; any more to decompress?
;        jr nz,flbyt1        ; yes.
;        ld a,(hl)           ; fetch next byte.
;        inc hl              ; point to next cell.
;        cp 255              ; is this byte a control code?
;        ret nz              ; no, this byte is uncompressed.
;        ld a,(hl)           ; fetch byte type.
;        ld (combyt),a       ; set up the type.
;        inc hl              ; point to quantity.
;        ld a,(hl)           ; get quantity.
;        inc hl              ; point to next byte.
; flbyt1 dec a               ; one less.
;        ld (comcnt),a       ; store new quantity.
;        ld a,(combyt)       ; byte to expand.
;        ret

BlackHole
Mensajes: 1669
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 29 veces
Agradecimiento recibido: 523 veces

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

Mensajepor BlackHole » 12 Jul 2018 19:38

Bueno, la rutina de Z80 que acabas de pegar básicamente es un RLE (Run-Lenght Encoding) y es lo suficientemente ligera para usarse al vuelo.

Usar un algoritmo de la familia LZ77 como aPLib (rápido) o Exomizer (lento) yo lo dejaría únicamente para el compilado final.

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: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 13 Jul 2018 19:32

Hola José Luis,
esto avanza, lento pero sin pausa!
En el otro hilo he subido una imagen de la primera pantalla en blanco y negro
Mas tarde he forzado PM3 y queda así de feo.
Habrá que trabajar los bloques con cariño ya que *no* deberian contener el color de fondo
o parecen recortados ...
saludos
pere
Pantalla4Colores.jpg
Pantalla4Colores.jpg (92 KiB) Visto 4571 veces

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: Gráficos PMODE 3 del Foggy

Mensajepor jltursan » 13 Jul 2018 21:42

Pues cuando digas te paso los bloques para que vayas empleando diseños PM3 auténticos :-)

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: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 13 Jul 2018 22:10

jltursan escribió:Pues cuando digas te paso los bloques para que vayas empleando diseños PM3 auténticos :-)

Perfecto -thumbup
Por mi, en cuanto te vaya bien, sin prisas.
Va a ser tan simple como cambiar la tabla y lanzar en PMODE3, a ver que tal resultan!
saludos
pere

Pd Entiendo que hablamos de la tabla "chgFx" (en el fuente), compuesta por 79 elementos de 8 bytes cada uno ...

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: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 14 Jul 2018 22:44

@jltursan
Como ya aparecen los objetos, he añadido un poco de código para hacer que pulsando tecla se muestre la siguiente pantalla
De esta forma puedo ver si 'todas' salen correctamente
He retocado también el FOGGY de spectrum para que haga lo mismo en lugar de dejar jugar. No se me ocurría otra manera
para comparar con el original ...
Un objeto en las pantallas 10,16,21 y 22 no aparece o sale parcialmente. Tendré que revisarlo con el debug :-(

Lo que si he visto es que en las pantallas donde hay color rojo de fondo, el byte de pixels está a cero, por lo que en PMODE4
no pinta nada de nada. Me iría *muy* bien disponer de los bloques y objetos, si también están hechos, para poder comparar mejor
la versión 6809 con la original ... muchas gracias -drinks
Las tablas son:
- objdta para objetos. Hay 20 objetos. La imagen la forman los 32 primeros bytes en formato 2 bytes por 16 filas (16 pixels x 16 pixels)
- chgfx para los bloques, 79 bloques de 8 bytes cada uno

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: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 14 Jul 2018 22:48

Hola,
con las prisas he olvidado adjuntar el binario que puede usarse en XRoar tanto para Dragon como para CoCo
y el tap de Spectrum que me funciona en el Speccy para comparar.

@jltursan
Puede que esto te ayude en las conversiones de colores. Verlo siempre es bueno!

saludos
pere
FOGGY.ZIP
(24.45 KiB) Descargado 44 veces

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: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 14 Jul 2018 22:59

las prisas son muuu malas consejeras ...
El binario para 6809 es 'especial' para ir haciendo pruebas.
La primera parte para comprobar el sonido ...
Al arrancar muestra el menú. Las primeras 4 veces que pulsamos una tecla, emite un pitido cada vez mas grave
A la quinta vez emite ruido blanco y ya muestra la primera pantalla del juego.
A partir de este momento, cada tecla pulsada avanza hacia la pantalla siguiente ... hay 28

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: Gráficos PMODE 3 del Foggy

Mensajepor pser1 » 15 Jul 2018 01:43

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 40 veces


Volver a “Software Dragon”

¿Quién está conectado?

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