a ver...
- cuenta que has hecho para solucionar el sonido... que has tenido que tocar y demas... puede que sirva para corregir otras plataformas... como sea, cuenta...
- aun no he puedo soporte de BGR porque el blitter actual de bennugd esta hecho un desastre... ya llevo tiempo intentando solucionarlo, y si bien estoy cerca, aun no termina de funcionar bien... y si no lo logro hacerlo tendre que tirarlo y reemplazarlo por algun otro... (podria usar el blitter de div2? habria problemas de licencia?) (acepto sugerencias o ayuda)
Respecto al sonido, a diferencia de lo que algunos desarrolladores habían planteado, SDL mixer no parece estar incompleto en lo que a sus funciones de mezclador de audio se refieren.
Lo que sucede es que PlayStation 2 es una arquitectura diferente de un ordenador PC, en realidad es una arquitectura orientada a control en Tiempo Real, y como tal, los distintos periféricos como el vídeo, el audio, ethernet, el mando... son manejados mediante unos hilos de ejecución gobernados por el Sistema Operativo en Tiempo Real que lleva la PS2 dentro, en su memoria ROM. El tiempo de muestreo mínimo que parecen aceptar estos hilos es de 1 milisegundo.
La gestión del tiempo que tiene disponible cada hilo es responsabilidad del programador y no del sistema operativo; de momento lo que he hecho ha sido localizar la función principal de BennuGD, que está en interpreter.c y justo antes de que la ejecución retorne al principio del bucle con la instrucción continue, pues he regalado a los demás hilos 1 milisegundo de tiempo con SDL_Delay(1), si no se hace esto el hilo de audio (el servidor de audio .irx) no puede ejecutarse, pues nadie le ofrece el testigo de ejecución; como ahora el hilo de audio se ejecuta muchas veces por segundo pero tiene muy poco tiempo disponible, pues he reducido el tamaño del buffer de audio para que en cada iteración le de tiempo a mezclar todas las voces de audio en ese buffer y su ejecución quepa en ese milisegundo que tiene disponible.
De todas formas voy a probar con otras configuraciones temporales, para afinar el tiempo necesario para mezclar 8 voces a 22 Khz, de forma que tampoco se robe demasiada potencia al hilo principal.
Sé que esta no es la forma más fina de hacerlo, pero tampoco domino la PlayStation 2 de forma que pueda hacerlo "super-perfecto" y si de esta forma he obtenido un muy buen rendimiento, pues creo que puede hacerse así perfectamente.
Respecto al blitter gráfico, Splinter, si quieres puedo echarte una mano, pues estoy desarrollando un blitter de vídeo para un adaptador vga que estoy desarrollando para una CPU Cortex M4F a 168Mhz, y de momento va bastante bien, así que los conceptos más o menos los manejo bien. Lo que me tendrías que explicar es cómo está estructurado Bennu, cómo va el intérprete y demás y cómo compilarlo bajo Windows (sí, sólo utilizo Windows y me gusta, no voy a cambiar a otra cosa pues no tengo necesidad de ello) para otras plataformas que no sean PlayStation 2, por cierto en un futuro tendré que probar a compilar Bennu para GP2X F100/F200 con las SDL aceleradas, ahora que conozco la estructura de directorios gracias a PS2 y el instalador que me pasaron ColDev.