ZX-Uno - kit de programación modo Radastaniano

Sinclair QL, ZX81, +2, +3, 128K ...
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: ZX-Uno - kit de programación modo Radastaniano

Mensajepor na_th_an » 15 Jun 2015, 19:41

Escribí hace eones algunas utilidades para hacer manejes en este modo. Están en el foro de mojonia. Luego las busco y las pongo por aquí.

Avatar de Usuario
chernandezba
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 254
Registrado: 11 Mar 2015, 10:42
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: ZX81
consola_favorita: NeoGeo
Primera consola: Atari 2600
Gracias dadas: 12 veces
Gracias recibidas: 139 veces

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

Mensajepor chernandezba » 15 Jun 2015, 22:39

Bueno siguiendo este hilo y todo lo que habéis comentado, ya propuse una vez el tema de agregar un chip de gestión de sprites a un Spectrum... Es algo que tengo en mente hace tiempo para implementar en ZEsarUX, y si no entra en la versión 2.2 lo haré en la siguiente, o la siguiente... ;)
Servirá tanto para modo standard de video spectrum, para ulaplus, para ulaplus modo radastan, o para los modos adicionales ulaplus que de momento solo soporta mi emulador, como el 256x192 a 16 colores por pixeles.

Por que no? Se han creado tantos periféricos para spectrum, tanto reales como virtuales, que uno mas ya...;)

Saludos
Cesar
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

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: 53 veces
Contactar:

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

Mensajepor mcleod_ideafix » 15 Jun 2015, 23:16

Haplo escribió:Lo que no acabo de comprender es porqué el color #15 de la paleta es ignorado, es decir, ponga el valor que ponga, me sale siempre un color violeta...

Pues es raro. ¿Cómo es el código que escribe los valores a la paleta?
Por si te sirve de algo, en el repositorio, en "software/modo_radastan" mira el código fuente de "visor 128x96" que lee la paleta de un BMP y la adecúa al modo radastaniano. De hecho, fíjate que lo que se incluye con incbin es ni más ni menos que el BMP sin modificar.

Haplo escribió:Quiero recordar el "border" coge su color de ahí precisamente, pero me resulta extraño que no se pueda cambiar ¿hago algo mal o es una limitación de este modo?

No, no lo coge de ahí. En el modo radastaniano, el color del borde se establece de la forma habitual, con el puerto $FE, y el valor puesto (0 a 7) se corresponde con el color que esté guardado en la entrada 0 a 7 de la paleta. Al menos, eso es lo que en teoría debería hacer...
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Haplo
MSX Turbo R
MSX Turbo R
Mensajes: 278
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: 33 veces
Gracias recibidas: 5 veces

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

Mensajepor Haplo » 16 Jun 2015, 01:07

Eso es lo raro, que no he tocado la forma de crear la paleta, sigue igual que en el primer código que puse.

Como me hacía cosas raras hice un test para ver qué pasaba y fue cuando me dí cuenta. Aquí os pongo el programa cutre y rápido que hice para ver la paleta.

Código: Seleccionar todo

DIM paleta(15) As UByte => {0,64,8,3,99,110,128,84,28,18,31,180,188,252,182,255}

inicio()

SUB FASTCALL inicio ()

   ' Activamos el modo radastaniano
   OUT 48955,64
   OUT 65339,3

   ' Definimos la paleta
   DIM i As UByte
   FOR i=0 TO 15
      OUT 48955,i
      OUT 65339,paleta(i)
   NEXT i
   'muestra la paleta
   FOR i=0 TO 15
      poke (16384+i), peek (@verpaleta+i)
      poke (16385+i), peek (@verpaleta+i)
      poke (16384+64+i), peek (@verpaleta+i)
      poke (16385+64+i), peek (@verpaleta+i)
      
   NEXT i
   pause 0
END SUB

verpaleta:
' valores iguales del 0 al 15 para pixel izq y dcho
ASM
   defb %00000000
   defb %00010001
   defb %00100010
   defb %00110011
   defb %01000100
   defb %01010101
   defb %01100110
   defb %01110111
   defb %10001000
   defb %10011001
   defb %10101010
   defb %10111011
   defb %11001100
   defb %11011101
   defb %11101110
   defb %11111111
END ASM


Que en el jBacteria me muestra esto:

test.JPG
test.JPG (32.24 KiB) Visto 6706 veces


Se supone que el último valor es 255 (Blanco) y sin embargo muestra ese violeta que es igual que el borde.
No sé si yo estoy metiendo la gamba o es algo del jBacteria, tampoco he podido probarlo en el zxuno para descartarlo.
paleta.zip
(537 Bytes) Descargado 264 veces

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: ZX-Uno - kit de programación modo Radastaniano

Mensajepor na_th_an » 16 Jun 2015, 08:43

Dejo por aquí esto que hice y que sería fácil modificar para otros tamaños. En principio coge un PNG de cualquier tamaño con sprites de 8x8 y una cadena con la paleta(*) y genera código.

(*) Una cadena con la paleta es una ristra de 32 caracteres con los 16 colores de la paleta en formato hexadecimal, por ejemplo "93F103141C8401A0E08244B4FC8EFF00" (cada 2 digitos hex representan 1 color).

Hay dos aplicaciones de linea de comandos:

Código: Seleccionar todo

radsprad.exe in.png out.h palette


Donde in.png es un archivo gráfico con los sprites de 8x8 (por tanto, su altura y anchura deberían ser múltiplos de 8), out.h es el archivo de salida donde se escribirán los datos, y palette es la cadena de 32 caracteres con la paleta. Este programa convertirá los colores que encuentre en png a los colores más parecidos dentro de la paleta.

Para que sea más fácil trabajar con un editor gráfico, tenemos la segunda aplicación:

Código: Seleccionar todo

genpalad.exe palout.png palette


Donde palout.png es un archivo de salida y palette es una cadena de 32 caracteres con la paleta. Esto generará un sencillo archivo png con los colores que se indiquen en palette, para que nos sirva para dibujar en cualquier editor gráfico usando esos colores, con la certeza de que usando esos colores la conversión posterior con radsprad será perfecta.

Espero que os sirva para algo.
Adjuntos
radasmode8x8.rar
(169.96 KiB) Descargado 284 veces

Avatar de Usuario
Haplo
MSX Turbo R
MSX Turbo R
Mensajes: 278
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: 33 veces
Gracias recibidas: 5 veces

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

Mensajepor Haplo » 16 Jun 2015, 11:13

Gracias na_th_an, ya los miré en su día en el foro de mojontwins pero no les había hecho mucho caso entonces :mrgreen: Seguramente ahora que estoy más metido con esto le encuentre utilidad.

Por cierto, buena idea el agruparlos aquí, al final entre tanto hilo y foro, estas perlas se pierden.

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: ZX-Uno - kit de programación modo Radastaniano

Mensajepor na_th_an » 16 Jun 2015, 11:35

Los hice rápido y mal porque no los "necesitaba" para nada en concreto y tampoco los he usado, por lo que lo más seguro es que haya que retocarlos o adaptarlos a las necesidades. Si alguien necesita alguna modificación específica, no tiene más que pedirla.

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: 53 veces
Contactar:

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

Mensajepor mcleod_ideafix » 16 Jun 2015, 13:03

Haplo escribió:[code]DIM paleta(15) As UByte => {0,64,8,3,99,110,128,84,28,18,31,180,188,252,182,255}

Este vector no tiene 15 elementos, sino 16. Debería ser DIM paleta(16) As UByte.... etc. El compilador debería haber chillado al compilar esta línea. ¿Has mirado si tienes warnings? Porque si no, es un fallo del analizador sintáctico del compilador.

Por otra parte, ¿ZXB trata a los vectores como que comienzan en 1 o que comienzan en 0?
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: ZX-Uno - kit de programación modo Radastaniano

Mensajepor na_th_an » 16 Jun 2015, 13:54

Por defecto, en 0. En el estándar BASIC de Microsoft, que es el que más o menos sigue ZX Basic, no se define el tamaño del Array, sino el índice del último elemento. Así que, como dice mcleod, ese array es de 16 elementos.

La inicialización inline es más laxa: se permite especificar cualquier número de elementos siempre que no se sobrepase el tamaño del array. Otros compiladores que siguen el mismo estándar, como freeBASIC, funcionan exactamente igual. Esto también es cierto en Visual Basic y en VB.NET, aunque la sintaxis es ligeramente diferente. Ni en freeBASIC ni en VB.* se lanza ningún warning, por tanto. Los valores especificados se usan en orden para ir rellenando el array (incluso cuando hay varias dimensiones - a muy bajo nivel simplemente se van copiando los valores a la memoria reservada según van apareciendo, por lo que el programador debe tener en cuenta el orden si hay varias dimensiones), siempre que no nos pasemos y especifiquemos más valores de los que caben.

De todos modos el problema es ese: no se está inicializando el decimosexto item, el de índice 15.

Avatar de Usuario
Haplo
MSX Turbo R
MSX Turbo R
Mensajes: 278
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: 33 veces
Gracias recibidas: 5 veces

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

Mensajepor Haplo » 16 Jun 2015, 15:40

Sigo por el otro hilo al tratarse de códido ZXBasic duda con la paleta


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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