Color de 8 bit / color de 16 bits

Started by Mr Matsusaka, March 28, 2010, 02:08:19 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Quote from: DCelso on April 05, 2010, 01:01:03 PM
Yo, cuando era más mugenero, allá por el año pum, hice una aplicación para cambiar y/o modificar paletas para los archivos pcx, quizás pueda ayudarte a ver las paletas.
http://www.galeon.com/linaresmugen/utils/paletero107.zip

De todas formas el problema puede ser el siguiente, te encuentres con el modo 8 bits seteado en el prg y uses recursos de 8 bits con diferentes paletas. Bennu, y también fenix, cargan como paleta principal la paleta del primer recurso cargado en memoria y la usan para todos los demás recursos que carge a continuación a no ser que la cambies tu manualmente con las funciones que te proporciona el API de bennu.

En Div creo recordar que tambien, se cargaba la div.pal por defecto (tambien la podrias cargar tu logicamente), y se mantenia hasta el final, almenos que cargaras otra despues, no creo que sea el problema, porque el ejemplo Div del que hablo sólo tiene la paleta que he puesto, y apuesto que sale rojo, aparte de que se puede cambiar el color en un boton.

DCelso

Umn, a ver, ¿puedes adjuntarme un ejemplo funcional en el que pase para analizarlo?, es decir, prg y recursos necesarios.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

FreeYourMind

Luego te lo paso, lo tengo en casa  ;D

Drumpi

Pues si siempre sale en azul, tengas la paleta que tengas, tengo una ligera sospecha de donde puede estar el error.
¿Usas el modo 16bits de color, o la dll? porque parece que toma valores entre 0 y 255, y eso, en RGB son todos los colores del azul... o al menos, a la hora de hacer una conversión (la función rgb usa valores entre 0 y 255 en cada uno de sus parámetros, aunque luego devuelva un color rgb565).
Yo empezaría mirando por ahi, alguna incompatibilidad con modos de color.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

FreeYourMind

Hay que dividir 2 cosas:

Caso 1:

La dll que fue compilada para Bennu y que venia de Fenix (mod_fire), o sea, la dll funcionaba en Fenix y no lo hace en Bennu, en este punto ya detectamos inconpatibilidad entre Fenix/Bennu.
No es un problema del port, porque tanto la que yo porte como la del Bennupack sufren exactamente el mismo problema. El primer fuego sale azul, y los otros ni se ven.


Caso 2:

He probado ejemplos de DIV, que han compilado directamente en Bennu, estos ejemplos simulan fuego del mismo modo pero no utilizan ninguna classe de dependencias/dll, es todo por código.

Uno de estos ejemplos crea fuego que tambien sale azul, el otro ejemplo incluso te permite cambiar su color en tiempo de ejecución, pero en Bennu sigue siendo azul, los colores de cambio creo recordar que era amarillo, rosa, entre otros.

DCelso

quiero ejemplos del  caso 1 y del caso 2 para testear, porfa plis
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

FreeYourMind

Te pongo uno mejor, y tiene exactamente el mismo problema que comentaba Drumpi (y yo pensando que la demo era de color azul, heheheh).

PROGRAM twirl;
PRIVATE
DIST;

BEGIN

SET_FPS(60,1);
SET_MODE(m640x480);
LOOP
IF(DIST<256)
FROM ANGLE=0 to 360000 step 100;//change the step value
 put_pixel(320+get_distx(angle,dist),240+get_disty(angle,dist),DIST);
END
END
 DIST++;
FRAME;
END
END


Original:



Bennu:


SplinterGU

#22
1) fenix pone por defecto el video en 8bpp, bennu en 16bpp...

2) si en bennu no decis que el grafico cambio (internamente por codigo en la dll), bennu no pierde tiempo en analizar el grafico, por ende no va a dibujarlo, ya que no hace falta.

resumen, no es problema de bennu, es problema del codigo de la dll y de suponer que estamos en un modo cuando estamos en otro.
como te dijo drumpi, si usas valores de 0 a 255 y en uno ves colores diferentes y en el otro ves que te da todo azul, es claro que en uno estas en 8bpp y en el otro no (o en este ultimo tenes una unica paleta de tonos azules).

pero si mal no recuerdo la firedll trabajaba en 8bpp.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

#23
Tema resuelto! Ya he coloreado el ejemplo en 8 bits y funciona, tantos días para llegar a la solución  ::)

Por cierto, me acabo de enterar que el problema con la mod_fire no es este. Se inicia a 8 bits, el fuego es rojo al principio, estaba azul en la captura porque le cambie la paleta con la demo, pero los otros 3 fuegos no salen. Tendré que ver el motivo.

Edit: Con la mod_fire no importa la profundidad de color que asignes (8,16 o 32), siempre sale con los mismos colores de forma independiente :)

SplinterGU

es que siempre tenemos que pensar primero que el error lo estamos teniendo nosotros... y luego de agotar todas las opciones entonces si decir que es un bug de la herramienta, pero eso es algo menos probable... bennu a diferencia de fenix y todo lo demas, esta diseñado, puede tener errores si, pero deben ser pocos, ya que el motor esta hecho a consciencia...

y dar una descripcion correcta del problema es importante para obtener una respuesta rapida... pero bien, con preguntas y contando cosas, hemos llegado a la solucion... me alegro...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: FreeYourMind on April 05, 2010, 08:01:15 PM
Tema resuelto! Ya he coloreado el ejemplo en 8 bits y funciona, tantos días para llegar a la solución  ::)

Por cierto, me acabo de enterar que el problema con la mod_fire no es este. Se inicia a 8 bits, el fuego es rojo al principio, estaba azul en la captura porque le cambie la paleta con la demo, pero los otros 3 fuegos no salen. Tendré que ver el motivo.

Edit: Con la mod_fire no importa la profundidad de color que asignes (8,16 o 32), siempre sale con los mismos colores de forma independiente :)

no salen porque seguro la dll no setea el flag de cambio...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

el error esta en el ejemplo de la fire.dll... incluso la fire.dll esta un poquito caotica... ya tengo una nueva version...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Actualiza la version entonces. Grácias.

SplinterGU

ya la actualice en el hilo que corresponde.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Mr Matsusaka

La pregunta se desvia ligeramente del tema original pero...
He probado a cambiar el color de un grafico con blendop, y ahora me ignora el canal alpha. Aunque baje la variable alpha el grafico se mantiene 100% opaco. Es una limitacion de los blendop o estoy haciendo algo mal?

El grafico es de 8 bits y el modo de 16.