Coonvertir paleta RGB a ULAPLUS

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
Avatar de Usuario
Radastan
Mensajes: 386
Registrado: 05 Oct 2015, 14:39

Coonvertir paleta RGB a ULAPLUS

Mensaje por Radastan » 15 Dic 2017, 13:55

Buenas, estoy usando el siguiente código para pasar RGB a ULAPLUS, pero pierdo el "brillo" y me pasa los colores a lo burro.

Código: Seleccionar todo

r1 = (Integer.parseInt(s[0]) * 8) / 256;
g1 = (Integer.parseInt(s[1]) * 8) / 256;
b1 = (Integer.parseInt(s[2]) * 4) / 256;
r2 = (int) r1;
g2 = (int) g1;
b2 = (int) b1;
paleta[numero] = (r2 << 5) | (g2 << 2) | b2;
Imagen1.png
Imagen1.png (5.03 KiB) Visto 3235 veces
¿Alguien me puede echar una manica? Es que Java me tiene hasta los mismísimos.

hikoki
Mensajes: 307
Registrado: 21 Feb 2016, 01:38

Re: Coonvertir paleta RGB a ULAPLUS

Mensaje por hikoki » 15 Dic 2017, 19:17

Ufff recuerdo que me lié con Uto para pasar de rgb a ulaplus.
Puedes echar un vistazo a esta lupa con código (no funciona con win10) que publiqué aquí: viewtopic.php?f=12&t=396&p=4847&hilit=Lalupa#p4845
Última edición por hikoki el 15 Dic 2017, 21:25, editado 1 vez en total.

hikoki
Mensajes: 307
Registrado: 21 Feb 2016, 01:38

Re: Coonvertir paleta RGB a ULAPLUS

Mensaje por hikoki » 15 Dic 2017, 19:41

Al final llegué a la conclusión de que pasar cualquier rgb a ulaplus es una quimera. Ese tipo de herramientas puede servir para copiar colores de fotos que te gusten, siempre que sean parecidos a ulaplus.

Hay otras herramientas más útiles. Le escribí este mensaje a R-Tape a ver si se animaba a hacer una versión de su CGD (de código abierto) para el modo Radastaniano.
Zesarux supports Radastan mode as well as Next so his author may provide useful information.

As far as I understood, Radastanus halve the Spectrum display (128x96) whilst pixels may take any colour from a palette of 16 ulaplus colours of your choice.

I did my own research and found these programs that may be useful for you.

Xpal
http://www.smokingun.co.uk/download/xpal34.zip
is a colorpicker to create .pal palettes that you can import into any graphic editor.
You can take a png from the ulaplus wiki, pick one by one 16 different colours and Xpal will make a .pal file.

Irfanview
One way to convert images is the menu "image->import palette" which asks you for a .pal file.
Última edición por hikoki el 19 Dic 2017, 20:17, editado 2 veces en total.

Avatar de Usuario
Uto
Mensajes: 1389
Registrado: 17 Dic 2015, 16:39

Re: Coonvertir paleta RGB a ULAPLUS

Mensaje por Uto » 15 Dic 2017, 21:01

En ese hilo que pone hikoki hay un detalle que dice Mcleod que si la memoria no me falla es importante. "al redondear" valores de 8 bit a 3 bit, no hay que usar trunc ni round, hay que truncar a dos bit y repetir el primer bit en el tercero.

O sea, si es 10001000 sacas el "10" inicial y luego copias el primer 1 al final para obtener un 101 (diferente al 100 que sacarias truncando y al mismo 100 que sacarias haciendo un round). Por supuesto eso no pasa para todos los truncados, a veces coincide, pero quizá sea la causa de los colores apagados.

Creo que en el programa radascreen que hice entonces hay algo así en el cálculo de la paleta en modo proporcional, pero mi memoria no da para mucho, echa un ojo a ver:

https://github.com/Utodev/radascreen/bl ... ascreen.py

hikoki
Mensajes: 307
Registrado: 21 Feb 2016, 01:38

Re: Coonvertir paleta RGB a ULAPLUS

Mensaje por hikoki » 15 Dic 2017, 21:21

Esto parece funcionar

Código: Seleccionar todo

Dim %color8bit = (Round((Gvalue * 7 / 255)) << 5) + (Round((Rvalue * 7 / 255)) << 2) + Round((Bvalue * 3 / 255))
xx = ((color8bit >> 2) BAnd 7) * Floor(255 / 7)
yy = (color8bit >> 5) * Floor(255 / 7)
zz = (color8bit BAnd 3) * Floor(255 / 3)

Avatar de Usuario
yombo
Mensajes: 487
Registrado: 05 Oct 2015, 14:10

Re: Coonvertir paleta RGB a ULAPLUS

Mensaje por yombo » 15 Dic 2017, 21:41

Yo lo hago así...

Código: Seleccionar todo

int convertColorRGBToRadasRGB332( int r, int g, int b ) {

	int rr = r & 0xE0;
	int gr = ( g & 0xE0 ) >> 3;
	int br = ( b & 0xC0 ) >> 6;

	return rr | gr | br;

}

Avatar de Usuario
Uto
Mensajes: 1389
Registrado: 17 Dic 2015, 16:39

Re: Coonvertir paleta RGB a ULAPLUS

Mensaje por Uto » 15 Dic 2017, 22:09

El que pone hikoki es el que comento yo que dijo mcleod, y es el que en mi programa radascreen se aplica con el parámetro /P (proporcional). El que dice Yombo es el truncado puro, que creo que es el mismo que está usando Radastan, y es el que hace mi radascreen si no pones /P.

La realidad es que todas las conversiones son con pérdidas, pero hay colores más ULAPLus que otros. Si revisais el hilo que ponía hikoki estaba todo explicado, pero básicamente si tienes un color que es

101-101-10 (notese que se repite la trama) y lo redondeas a 101, obtienes un color mucho más parecido al original que si tienes 101-111-11, por eso había una lista de colores "ulaplus" que básicamente se basan en eso, en repetir lo mismo todo el rato:

111-111-11
110-110-11
101-101-10
100-100-10
etc.

Si se usan esos colores en la imagen de origen, la conversión va a ser mejor por el método del truncado, el otro método es mejor para coger colores random de una imagen cualquiera.

Por otro lado, una vez convertida la imagen en una imagen con colores truncados, redondeados o lo que sea, teniamos el problema de que que nos salgan más de 16 colores, porque si eso ocurre y luego pasabas la imagen por Gimp o lo que sea para que te haga un nuevo gráfico ya en 16 colores, el gimp lo que va a hacer es crearte otra vez una paleta nueva de 16 colores que más o menos pueda representar esos más de 16 colores de origen sin estropearlo mucho, pero claro, al hacer eso vuelve a colar colores no ULAplusianos.

hikoki
Mensajes: 307
Registrado: 21 Feb 2016, 01:38

Re: Coonvertir paleta RGB a ULAPLUS

Mensaje por hikoki » 15 Dic 2017, 22:18

@Uto
Creo recordar que lo que comentas de Gimp no pasaba con Irfanview. No tengo a mano Irfanview, puedes probar en una imagen lo que comentaba arriba:
menu "image->import palette" y te pedirá un fichero .pal con tus 16 colores radastanianos.

Avatar de Usuario
Uto
Mensajes: 1389
Registrado: 17 Dic 2015, 16:39

Re: Coonvertir paleta RGB a ULAPLUS

Mensaje por Uto » 15 Dic 2017, 22:21

hikoki escribió:@Uto
Creo recordar que lo que comentas de Gimp no pasaba con Irfanview. No tengo a mano Irfanview, puedes probar en una imagen lo que comentaba arriba:
menu "image->import palette" y te pedirá un fichero .pal con tus 16 colores radastanianos.
Sí, recuerdo un método que se comentó en el hilo de "forzar paleta", pero en el fondo, si fuerzas paleta, entonces lo que ocurre es que tu imagen, de pongamos 26 colores, al pasar a 16 y obligarle a usar colores concretos, se queda hecha un asco :-D

Creo que al final del hilo aquel llegamos a la conclusion de que si se quiere colores ulaplusianos hay que empezar desde el principio con colores ulaplusianos, y que si se convierte una imagen que ya existe, pues puede pasar desde que de el pego, pasando por que sale un poco rara, hasta el punto de que quede irreconocible :-D

hikoki
Mensajes: 307
Registrado: 21 Feb 2016, 01:38

Re: Coonvertir paleta RGB a ULAPLUS

Mensaje por hikoki » 16 Dic 2017, 00:03

Está claro que para convertir cualquier imagen lo mejor sería hacerlo a mano. También podrías forzar paletas de forma sucesiva con Irfanview. Cada paleta la crearías con la ayuda de Imagemagick o similar que te analiza cuáles son los N colores más utilizados, en qué porcentaje aparecen, etc.

Responder