Proposición de gráfica externa para ZX Spectrum

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor mcleod_ideafix » 24 Abr 2014, 23:07

radastan escribió:De todas formas llévate mejor el televisor de 7" LCD, ocupa y pesa poco, lo puedes llevar en la mochila.

Intentaré llevarme ambos. El problema con el de 7'' es que estos tipos de teles no interpolan, sino que se comen líneas, y tienen tan pocas que incluso a la resolución del Spectrum se nota. Además, tú el domingo no estás, así que algo tendré que usar para exponer el ZX-Uno, o al menos hacer un poco de desarrollo con él.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor antoniovillena » 25 Abr 2014, 01:58

radastan escribió:La pregunta es: ¿mejor un tap o una ROM?


Como dice McLeod, lo mejor es tap+CargandoLeches. Te creas un make.bat que te genere un archivo wav y luego en la última línea llamas al archivo wav a secas. Así cuando ejecutes el make.bat se reproduce automáticamente el archivo de audio. En el ZX-Uno al tener configurada la opcion Reset&Play no hace falta ni teclear load"". La secuencia sería reset en el ZX-Uno (combinación de tres teclas) y make.bat en línea de comandos del PC (estos son dos teclas, arriba seguido de enter). Lo que tarda en cargar son 10 segundos, no más. Vamos que haces un cambio y en 10 segundos lo estas ejecutando en el ZX-Uno.

Trabajar en ROM es un poco más lento porque tienes que meterte en la opción ROMs, darle a la N y luego escribir un número de slot, pueden ser en total unos 20 segundos. De todas formas a estas cosas le coges el vicio de tanto hacerlas y siempre se reduce el tiempo.

Lo más lento es la SD. A ver es muy rápido a la hora de cargar, pero si quieres transferir datos de PC a ZX-Uno es un coñazo. Entre que la reconoce, copias los archivos, le das a expulsar seguro, sacas la SD, la metes en el ZX-Uno, reinicias, provocas un NMI y seleccionas el juego puedes tardar fácilmente entre medio minuto y un minuto.

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4542
Registrado: 11 Jun 2007, 19:29
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: TV Games/Pong Clone
Ubicación: Córdoba
Gracias dadas: 9 veces
Gracias recibidas: 40 veces
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor radastan » 25 Abr 2014, 08:21

mcleod_ideafix escribió:
radastan escribió:De todas formas llévate mejor el televisor de 7" LCD, ocupa y pesa poco, lo puedes llevar en la mochila.

Intentaré llevarme ambos. El problema con el de 7'' es que estos tipos de teles no interpolan, sino que se comen líneas, y tienen tan pocas que incluso a la resolución del Spectrum se nota. Además, tú el domingo no estás, así que algo tendré que usar para exponer el ZX-Uno, o al menos hacer un poco de desarrollo con él.


Mi pantalla LCD de 7" se ve de vicio, soporta NTSC, y aspecto 4:3. Si quieres hasta te lo dejo para el Domingo.

-- Actualizado 25 Abr 2014, 12:16 --

Pues estas son las dos principales rutinas para el experimento de mañana (hay más, pero son derivadas de la de pintado de 8x8 pixels).

Código: Seleccionar todo

// ___________________________________________
// Borra la pantalla a un color
// ___________________________________________

void cls (int color)
{
   #asm
      ld hl,2         ;pasamos la variable de entrada al acumulador
      add hl,sp
      ld a, (hl)
      
      ld hl, 16384
      ld de, 16385
      ld bc, 6143
      ld (hl), a
      ldir
   #endasm
}


Código: Seleccionar todo

   // -------------------------------------------
   // RUTINA DE IMPRESION DE UN SPRITE 8x8 PIXELS
   // EN CUALQUIER POSICION DE BYTES (cada byte dos pixels horizontales)
   // ENTRADAS:
   // D será la posición del cursor vertical en pixels
   // E será la posición del cursor horizontal en parejas de pixels
   // HL es la posición de memoria donde tenemos el sprite
   // SALIDAS: se escribe en el mapa de pantalla
   // ADVERTENCIAS: no comprueba límites de pantalla
   // -------------------------------------------
   #asm
      ld hl,2      ; Pasamos la variable de entrada al acumulador
      add hl,sp
      ld d, (hl)   ; D es el valor Y
      inc hl
      inc hl
      ld e, (hl)   ; E es el valor X
      inc hl
      inc hl
      ld a, (hl)
       inc hl
       ld h, (hl)
       ld l, a      ; HL es el puntero al sprite
   
      ld a, d      ; recuperamos el valor vertical
      rrca
       rrca      ; rotamos para dejar su valor en múltiplos de 64 (cada línea tiene 128 pixels, dos por byte)
      and 192      ; borramos el resto de bits por si las moscas
      or e      ; sumamos el valor horizontal
      ld e, a      ; E preparado
      ld a, d
      and 28      ; Nos quedamos con los bits que nos interesan
      or 64      ; nos posicionamos a partir de 16384 (16384=64+0 en dos bytes)
      ld d, a      ; D preparado, ya tenemos la posición en pantalla
      
      ld b,0
      ld c,8      ; Indicamos que vamos a pintar 8 líneas
      push de      ; guardamos DE (la posición de pantalla)
      .draw      ; dibujamos 8 pixels
      push bc      ; Guardamos las iteraciones (8 líneas)
      ld b, 4      ; vamos a copiar 4 bytes (8 pixels horizontales) del sprite
      ld c,255   ; cargamos C con 255 para no afectar B con LDI
      ldi
      pop bc      ; recuperamos el número de iteraciones
      pop de      ; recuperamos DE
      ld a,e      ; incrementamos una línea (+64 bytes)
      add a,64
      ld e,a      ; aquí finaliza la suma de 64 a E
      jr nc, salto
      ld a,d
      inc a
      ld d,a
      .salto      ; aquí finaliza la suma de 64 a D
      dec c      ; decrementamos
      jr nc, draw
   
      ret
   
   #endasm


Esperemos que no haya metido la pata, o que la haya metido poco.

A ver como le meto mano a la conversión de gráficos a datos...

McLeod, ¿me puedes dar los datos de la paleta para facilitarme la vida un poco? es la misma que la de la pantalla del moco de Misco Jones. Eso o lo hacemos mañana sobre la marcha.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor antoniovillena » 01 May 2014, 11:50

Buenas radastan. Mientras zx81 te implementa el modo en su JSpeccy y no tengas el ZX-Uno, te he creado un modo radastaniano en mi emulador jbacteria. Aquí tienes 4 archivos tap que he subido:

http://jbacteria.retrolandia.net/48?radastian/bob.tap
http://jbacteria.retrolandia.net/48?rad ... ravity.tap
http://jbacteria.retrolandia.net/48?radastian/moco.tap
http://jbacteria.retrolandia.net/48?rad ... famguy.tap

Son los mismos archivos que tiene McLeod en el repositorio. Puedes probar todos los TAPs que quieras arrastrando y soltando, pero cuando necesites subir algo para que lo vea todo el mundo me lo dices y yo lo subo a tu carpeta o te creo una cuenta FTP para que lo subas tú mismo.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor mcleod_ideafix » 01 May 2014, 14:01

antoniovillena escribió:Buenas radastan. Mientras zx81 te implementa el modo en su JSpeccy y no tengas el ZX-Uno, te he creado un modo radastaniano en mi emulador jbacteria.

Otras! Cómo mola! Funciona de verdad :)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor na_th_an » 01 May 2014, 19:56

¡Coño!

Vaya, creo que necesito una tarde libre. YA. :O

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4542
Registrado: 11 Jun 2007, 19:29
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: TV Games/Pong Clone
Ubicación: Córdoba
Gracias dadas: 9 veces
Gracias recibidas: 40 veces
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor radastan » 01 May 2014, 20:31

antoniovillena escribió:Buenas radastan. Mientras zx81 te implementa el modo en su JSpeccy y no tengas el ZX-Uno, te he creado un modo radastaniano en mi emulador jbacteria. Aquí tienes 4 archivos tap que he subido:

http://jbacteria.retrolandia.net/48?radastian/bob.tap
http://jbacteria.retrolandia.net/48?rad ... ravity.tap
http://jbacteria.retrolandia.net/48?radastian/moco.tap
http://jbacteria.retrolandia.net/48?rad ... famguy.tap

Son los mismos archivos que tiene McLeod en el repositorio. Puedes probar todos los TAPs que quieras arrastrando y soltando, pero cuando necesites subir algo para que lo vea todo el mundo me lo dices y yo lo subo a tu carpeta o te creo una cuenta FTP para que lo subas tú mismo.


:jumper:

¿Sólo tengo que arrastar el tap a pantalla? jo jo jo jo... este fin de semana va a ser épico.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor antoniovillena » 01 May 2014, 20:33

radastan escribió:¿Sólo tengo que arrastar el tap a pantalla? jo jo jo jo... este fin de semana va a ser épico.


Y teclear LOAD"". Si te cansas de esto último te puedo facilitar una ROM Reset & Play

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4542
Registrado: 11 Jun 2007, 19:29
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: TV Games/Pong Clone
Ubicación: Córdoba
Gracias dadas: 9 veces
Gracias recibidas: 40 veces
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor radastan » 01 May 2014, 20:34

antoniovillena escribió:
radastan escribió:¿Sólo tengo que arrastar el tap a pantalla? jo jo jo jo... este fin de semana va a ser épico.


Y teclear LOAD"". Si te cansas de esto último te puedo facilitar una ROM Reset & Play


Vamos a ver, tu emulador corre en un navegador. Si arrastro el TAP no pasa nada.

EDITADO: Vaaaaale, he cogido el ejemplo de Bob esponja, le he dado al enter, he cargado y ya me lo coje.

Ahora a calentarme la cabeza con un programa que me convierta un PNG con tiles o sprites a código (dos pixels por byte) incluyendo la plaeta.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

ZX-81
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 130
Registrado: 04 Ene 2013, 16:43
Sistema Favorito: Spectrum +2
primer_sistema: ZX81
consola_favorita: Nintendo DS/3DS
Primera consola: Sega Genesis/Megadrive
Ubicación: La orilla del mar Mediterráneo
Gracias dadas: 16 veces
Gracias recibidas: 39 veces
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor ZX-81 » 01 May 2014, 21:01

antoniovillena escribió:Buenas radastan. Mientras zx81 te implementa el modo en su JSpeccy y no tengas el ZX-Uno, te he creado un modo radastaniano en mi emulador jbacteria.


Teniendo en cuenta que apenas estoy empezando a mirar todo lo que tengo que tocar y que jbacteria es tan bueno como cualquier otro, no veo ya la necesidad de modificar nada en JSpeccy. Total, de momento solo se trata de que radastan pueda hacer pruebas sobre algo emulado. Si finalmente el ZX-Uno sale adelante, puede que incluso otros emuladores lo implementen (por ejemplo, el autor de Spectaculator solo está dispuesto a implementar cosas que existan físicamente, por eso no soporta ULAplus).

Ha estado rápido Antonio esta vez.. :D
Todo espacio de dimensión finita distinta de cero con producto interno tiene una base ortonormal. Tiene sentido, cuando no piensas sobre ello.
Profesor de Matemáticas U.C. Berkeley

Empieza a jugar sin tener que compilar: JSpeccy
Emulador bare-metal para la Raspberry PI 2/3: ZXBaremulator


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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