Página 1 de 9

ZX-Uno - kit de programación modo Radastaniano

Publicado: 18 May 2015, 18:05
por radastan
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 329 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 3397 veces

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

Publicado: 19 May 2015, 18:21
por mcleod_ideafix
¡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.

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

Publicado: 19 May 2015, 20:04
por radastan
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... :-({|=

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

Publicado: 19 May 2015, 23:36
por na_th_an
¿No te vale el conversor que te hice? ¿Necesita alguna adaptación?

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

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

Publicado: 19 May 2015, 23:41
por radastan
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:

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

Publicado: 19 May 2015, 23:42
por na_th_an
Si mal no recuerdo, sólo tienes que sacar los valores RGB de cada color en hex :D ¡Si se tarda un minuto!

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

Publicado: 20 May 2015, 00:09
por antoniovillena
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
}

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

Publicado: 20 May 2015, 08:57
por radastan
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.

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

Publicado: 26 May 2015, 13:10
por Haplo
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.

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

Publicado: 26 May 2015, 13:18
por mcleod_ideafix
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.