ZX-Uno - kit de programación modo Radastaniano

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4497
Registrado: 11 Jun 2007, 19:29
Ubicación: Córdoba-Jaén
Gracias dadas: 1 vez
Gracias recibidas: 14 veces
Contactar:

ZX-Uno - kit de programación modo Radastaniano

Mensajepor radastan » 18 May 2015, 18:05

Versión 0.1 beta

-> Descargar el Z88DK de aquí: http://www.bytemaniacos.com/ficheros/zxspectrum/z88dk10.zip
-> Descomprimir el Z88DK en la carpeta raíz de Windows. Debe quedar en c:\z88dk10
-> Descargar el fichero adjunto de este post y descomprimirlo donde os venga en gana (una carpeta en el escritorio, con las fotos ocultas de la vecina en tanga, etc).

codigo.zip
zxuno kit 0.1 beta
(3.75 MiB) Descargado 277 veces


El Kit está basado en el del curso C que estoy preparando:

http://www.bytemaniacos.com/ficheros/zxspectrum/

Básicamente consiste de dos ficheros a editar:

- juego.c, que es el que tendrá el código del juego
- sprites.c, que es el que tendrá los tiles y sprites del juego

En juego.c tenéis un ejemplo de código para meter la paleta, dentro de la carpeta utilszxuno está el BASINC con el que podéis generar una paleta (os crea el código BASIC a base de datas... que es la paleta).

Rutinas:

cls (color), donde color es el color que queremos poner de 0 a 16 (paleta ULA plus)

delay (pausa), hace una pausa en la ejecución (para que no se os vaya de velocidad)

escribe_paleta (índice, color), escribe en el valor de paleta índice el color de paleta que queráis definir

port_in (puerto), lee un puerto de e/s (ej, teclado)

port_out (puerto), escribe un puerto de e/s

wait_int, espera al retrazo vertical (muy útil para sincronizar el juego)

put_sprite_x8 (sprite, x, y), ¿hace falta explicar más? La posición X va de dos en dos pixels realmente. Los límites son x=60 e y=88.


Lo suyo es que ejecutéis el make.bat y probéis el ejemplo, es bastante ilustrativo.

01beta.png
ejemplo
01beta.png (1.4 KiB) Visto 1989 veces
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5265
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: 4 veces
Gracias recibidas: 25 veces
Contactar:

Re: ZX-Uno - kit de programación modo Radastaniano

Mensajepor mcleod_ideafix » 19 May 2015, 18:21

¡Estupendo! Aún no he probado el ejemplo, pero vamos, que es todo un currazo, sobre todo teniendo en cuenta que no hace mucho que tienes un ZX-Uno y que hasta ahora no has podido probar mucho código que digamos.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4497
Registrado: 11 Jun 2007, 19:29
Ubicación: Córdoba-Jaén
Gracias dadas: 1 vez
Gracias recibidas: 14 veces
Contactar:

Re: ZX-Uno - kit de programación modo Radastaniano

Mensajepor radastan » 19 May 2015, 20:04

mcleod_ideafix escribió:¡Estupendo! Aún no he probado el ejemplo, pero vamos, que es todo un currazo, sobre todo teniendo en cuenta que no hace mucho que tienes un ZX-Uno y que hasta ahora no has podido probar mucho código que digamos.


Mejor no te cuento como paso sprites de PC a código de ZX Uno... :-({|=
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1244
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: 12 veces
Gracias recibidas: 7 veces

Re: ZX-Uno - kit de programación modo Radastaniano

Mensajepor na_th_an » 19 May 2015, 23:36

¿No te vale el conversor que te hice? ¿Necesita alguna adaptación?

http://www.mojontwins.com/mojoniaplus/v ... 979#p63979

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4497
Registrado: 11 Jun 2007, 19:29
Ubicación: Córdoba-Jaén
Gracias dadas: 1 vez
Gracias recibidas: 14 veces
Contactar:

Re: ZX-Uno - kit de programación modo Radastaniano

Mensajepor radastan » 19 May 2015, 23:41

na_th_an escribió:¿No te vale el conversor que te hice? ¿Necesita alguna adaptación?

http://www.mojontwins.com/mojoniaplus/v ... 979#p63979


Adaptar mi paleta a tus herramientas, sólo eso, es pura pereza. De esas cosas que uno es peeeeeeeerroooooo.

:mrgreen:
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1244
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: 12 veces
Gracias recibidas: 7 veces

Re: ZX-Uno - kit de programación modo Radastaniano

Mensajepor na_th_an » 19 May 2015, 23:42

Si mal no recuerdo, sólo tienes que sacar los valores RGB de cada color en hex :D ¡Si se tarda un minuto!

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

Re: ZX-Uno - kit de programación modo Radastaniano

Mensajepor antoniovillena » 20 May 2015, 00:09

Puedes agilizar el paso de parámetros a ASM mediante la diretiva CALLEE:

Código: Seleccionar todo

void __CALLEE__ put_sprite_x8 (unsigned char *posicion, unsigned int x, unsigned int y){
/*---------------------------------------------
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
        pop     bc
        pop     hl
        pop     de
        ld      d, l
        pop     hl
        push    bc
        ld      a, d    ; recuperamos el valor vertical
        rrca
        rrca            ; rotamos para dejar su valor en múltiplos de 64 (linea, de dos en dos pixels)
        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    ; cargamos el valor vertical
        rrca
        rrca            ; rotamos para quedarnos con los bits altos
        and     63      ; borramos el resto de bits
        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, 8    ; Indicamos que vamos a pintar 8 líneas
.draw                   ; dibujamos 8 pixels (4 bytes)
        ld      c, 4    ; Indicamos que vamos a pintar 4 pares de pixels
        ldi
        ldi
        ldi
        ldi
        ld      a, e
        add     a, 60   ; incrementamos una línea y retornamos los pixels dibujados
        ld      e, a
        jr      nc, sigue
        inc     d       ; incrementamos D si sale acarrero al incrementar E en 64 bytes
.sigue
        djnz    draw
        ret

    #endasm
}

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4497
Registrado: 11 Jun 2007, 19:29
Ubicación: Córdoba-Jaén
Gracias dadas: 1 vez
Gracias recibidas: 14 veces
Contactar:

Re: ZX-Uno - kit de programación modo Radastaniano

Mensajepor radastan » 20 May 2015, 08:57

Tomo nota, cambiaré todas las rutinas de esta forma tanto en este kit como en los otros con los que estoy trabajando.

Cuando pueda modificaré la rutina de sprites con soporte de máscara, que no doy a basto.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.

Avatar de Usuario
Haplo
MSX Turbo R
MSX Turbo R
Mensajes: 272
Registrado: 14 Abr 2014, 22:24
Sistema Favorito: PC
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Nintendo NES/Clónica
Ubicación: Ciudad Real
Gracias dadas: 6 veces
Gracias recibidas: 4 veces

Re: ZX-Uno - kit de programación modo Radastaniano

Mensajepor Haplo » 26 May 2015, 13:10

Radastán, aprovechando que estoy trasteando con el boriel ZX Basic (me resulta más sencillo que el z88dk), me he liado a portar tu kit a este entorno y así de paso practico :mrgreen:
De momento he conseguido que me compile sin errores y que no se resetee el zxuno :mrgreen: , pero la imagen que muestra no es correcta, me sale un truño multicolor ...

Esto es comprensible dado mis justitos conocimientos del zxbasic y los escasos del C ](*,)

Esta tarde seguiré peleándome, porque seguro que es una chorrada.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5265
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: 4 veces
Gracias recibidas: 25 veces
Contactar:

Re: ZX-Uno - kit de programación modo Radastaniano

Mensajepor mcleod_ideafix » 26 May 2015, 13:18

Haplo escribió:De momento he conseguido que me compile sin errores y que no se resetee el zxuno :mrgreen: , pero la imagen que muestra no es correcta, me sale un truño multicolor ...

¿Has iniciado el modo Radastaniano? Es decir, ¿has incorporado en ZX Boriel el equivalente a este código?

Código: Seleccionar todo

   int i;

   // Inicializamos el modo Radastaniano
   port_out (48955,64);
   port_out (65339,3);
   
   // Definimos la paleta
   for (i=0;i<16;++i)
   {
      escribe_paleta (i,paleta[i]);
   }

   cls (3);


Si lo has hecho y te sale un "truño", pon una foto de lo que se ve en pantalla, a ver si identifico en qué modo de pantalla estás.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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