¿Código del blitter de 32bpp? (Sobre todo para Splinter)

Started by josebita, September 13, 2010, 06:29:36 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

Tengo un problemilla y es que MacOS X usa BGR para representar los colores en lugar de la RGB normal, así que en 32bpp los colores aparecen mal. Me gustaría echarle un ojo a ver si lo puedo hacer andar, pero no tengo claro dónde se pintan los colores a la pantalla. ¿En qué módulo/fichero se hace?.

SplinterGU

mmmm... pintar en el blitter, pero me temo que habria que tocar todo, por ejemplo, las funciones RGB, y otras tantas.

no hay forma de setear el modo de video a RGB normal?

igual es un tema que tengo pendiente de resolver, pero como no tengo plataforma que use ese modo de video, como todo se complica.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

La verdad, no lo sé. Pensaba mirar cómo lo hace SDL...

SplinterGU

mmm... aunque quizas se podria hacer un parche temporal, como si fuese un filtro, y en el momento de hacer el dump a SDL, hacer ahi la conversion... es una cagada, pero bueno...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

He intentado algunas pequeñas cosas por mi cuenta, pero no parecen funcionar. Si tocas algo en el código a este respecto, avisa y lo pruebo.

SplinterGU

ahora estoy un poco complicado, pero lo tendre en mente, si cuando pueda verlo vos no hiciste anda aun, bien.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Refloto este tema porque he hecho un pequeño experimento: He compilado mi versión monolítica de Bennu contra SDL 1.3 en MacOS X i386.
He tenido que modificar un poquito el código de la libwm para los cambios en el API de SDL y no he metido dentro ni la libkey (el tema del teclado ha cambiado desde la SDL1.2) ni la mod_sound (no he compilado la SDL_mixer contra SDL 1.3). Pues bien, he hecho una pequeña prueba en modo de 32 bits y podeis ver la diferencia:



A la izqda. mi versión monolítica compilada contra SDL1.3 y a la derecha la versión de Bennu compilada contra SDL1.2 que podeis descargar desde la página de descargas de la web. Como comentario, diré que he tenido que forzar la resolución desde las variables de entorno porque set_mode no funciona correctamente en la versión compilada contra SDL1.3.

Otra cosa interesante, Splinter, es que ya no hace falta modificar el fichero main.c del bgdi para incluir las cabeceras de SDL.

SplinterGU

te referis a la 1.3, ya no es necesario? eso es macosx... cierto?

otra pregunta, la que veo se ve mal, es la 1.2, cierto? esa es la actual del svn?

con respecto a la 1.3, estaria bien saber en cuales plataformas esta.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Sí, en 1.3 ya no es necesario incluir la SDL.h en el main.c del intérprete (no incluirla en la SDL1.2 resultaba en una especie de segmentation fault en cuanto se intentaba hacer uso de las funciones gráficas). Estoy en MacOS X de 64 bits, pero el bennu lo he compilado como binario de 32.
Y claro, la que se ve mal es 1.2 (que es el problema que tantas veces he comentado de BGR<->RGB). En SDL 1.3 parece funcionar bien.
Otro detallito es que he usado mi versión monolítica para compilar contra SDL 1.3 porque es más "manual" y tengo más control sobre el sistema de compilado, no porque en la oficial no vaya a compilar :)

Y las plataformas de la SDL 1.3, en la web citan Win, OSX, Linux, *BSD, iOS y Nintendo DS, pero si miras el código de mercurial, parece estar preparado para muchos más sistemas: android, pandora, wiz... En mi versión monolítica, significaría que podría hacer port a iOS.
La verdad es que el otro día le estuve dando un repaso a las nuevas características de SDL 1.3 y está muy bien: desde soporte nativo para portapapeles, force-feedback, multi-touch, multi-ventana, teclado on-screen, introducción de texto automática (no habría que hacerse las rutinas a mano en Bennu)... La verdad es que los cambios que hay que hacer para darle soporte no parecen grandes y luego ya verías a dónde ir. ¿Qué te parece?.

[Edito] El código del programilla de ejemplo que he puesto es el siguiente, por si a alguien le interesa:
[code language="bennu"]import "mod_video"
import "mod_mouse"
import "mod_map"

Process main()
Begin
       //set_mode(640, 480, 16, MODE_FULLSCREEN);
       file = fpg_load("menu.fpg");
       mouse.graph = 2;
       while(! mouse.left)
               FRAME;
       End;
       fpg_unload(file);
End;[/code]

[Edito2] Por si a alguien le interesan los binarios.

SplinterGU

joseba, preguntas.

1) la vm que me armaste es 64 o 32? yo no tengo operativo de 64, uso de 32.

2) si, vi un monton de funcionalidades que me interesan en la 1.3 hace tiempo, como el force-feedback, la cagada es que no esta para todas las plataformas que corre bennugd, por ejemplo, creo que no esta en caanoo ni en wiz, por lo menos no lo estaba hace unos meses cuando revise la 1.3
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Lo que te puse es de 32 bits, aunque si lo pones en una vm con capacidad para ejecutar 64 bits el núcleo automáticamente arrancará con soporte para 64 bits (para eso OSX es muy bueno).

El Makefile para la wiz lo puedes ver aquí y me imagino que los cambios para caanoo no deberían ser demasiados. En el Makefile para la Wiz pone que es para Pandora, pero me imagino que es cosa del copy-paste.

SplinterGU

el problema no es el operativo, sino la vm, si estas en un sistema host de 32bits, las vm se quedan limitadas a 32bits.

si, lo se, vi los makefiles, pero no recuerdo que problemas tuve.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on November 29, 2010, 12:03:47 AM
el problema no es el operativo, sino la vm, si estas en un sistema host de 32bits, las vm se quedan limitadas a 32bits.
A eso me refería, si tu SO es de 32 bits, configura la imagen para 32 bits y arrancará.
Vamos, acabo de cambiar la configuración de la máquina que te envié de 32 a 64 bits y todos los procesos del sistema se han arrancado en modo 64 bits.

SplinterGU

gracias... aun no puedo arrancarla, tengo que hacer limpieza del disco urgente.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2