Hola,
al final me he decidido a sacar una versión del syncDX para el GCC del devkitadv, a ver si tengo más éxito. Por ahora pierde un poquillo de velocidad respecto a la versión para el ARM SDT, imagino que será por algun ajuste del compilador que no acabo de pillar (lo raro es que el código es 100% ensamblador... no veo cómo coño me influye el compilador ^_^')
Como dato significativo, ahora mismo consume un 35.2% de CPU mezclando 7 canales simultáneos (todos totalmente panorámicos y con posibilidad de Dolby Surround) más el filtro de reverberación estéreo (que ya se chupa un 5% el cabrón... pero se puede desactivar, por lo menos XD) generando una señal de salida estéreo a 16257Hz, 8bits.
Antes de que nadie lo diga: sí, un MODplayer gratuito puede consumir hasta un 5% (aunque los hay que les chupa hasta un 20% pero... seguro que les ha costado conseguir que consuma tanta CPU, no sé cómo se lo montan XDDD)
Probablemente los motivos son que:
1. Un MOD sólo mezcla 4 canales a la vez con lo que toda la info de mezcla cabe en los registros de la CPU y no es necesario acceder a memoria casi para nada durante el proceso de mezcla (teniendo en cuenta que el acceso a ROM es de 4 ciclos, eso representa MUCHO tiempo de CPU)
2. Un MOD tiene 2 canales por lado sin control de panorámica (mucho menos Surround) por lo que basta con sumar las muestras de cada lado para mezclarlas
3. Un MOD utiliza una sincronización por rows (con lo que no puede hacer figuras como tresillos) Por tanto no necesita manejar mensajes de sincronización
4. Un MOD... es un MOD XDDD
Bueno, eso no quiere decir que un 35.2% de CPU no sea mucho (es mazo, es una aberración) Pero por lo menos hay que compararlo con motores de características parecidas (el GAX, el MusyX...) Id con cuidado con la información que ponen en la web, que es algo engañosa, la primera vez que me comparé el motor, pillé una depre de aquí te espero. Hasta que lo entendí todo bien ;)
Si alguien está interesado y quiere una demo, que me envie un mail (ahora lo único que tengo a mano es una BSO para un juego comercial y no la voy a colgar por ahí ^_^') Idem para comentar las condiciones de uso y/o licensing (en principio no es gratis... cosas que pasan... pero si os interesa escribidme igualmente, soy un tio enrollado XD)
Ale, un saludo!
sync
El render de farbraush se mete media cpu el solito xDD
Podrias explicar un poco mas todo esto q dices para los q no tenemos ni zorra del tema de sonido?
saludos
¿El render? Si hablamos de gráficos se comprende, pero con el sonido no nos dejan mucho margen las compañías :-P
CitarPodrias explicar un poco mas todo esto q dices para los q no tenemos ni zorra del tema de sonido?
¿He dicho algo raro? ¿Qué quieres que te explique? ^_^'
sync
render: me referia a generar el sonido, o sea:
while(appActive){
GFX::render();
SOUND::render();
}
Okz
Pues con un 50% de CPU se pueden hacer grandes cosas... así a lo pronto... a mi me daría para 10 u 11 canales estéreo/surround a 16KHz (o hasta 18 canales mono :o )
El hardware de la AGB ayuda mazo a lo que es generar gráficos, siempre he pensado que lo justo sería eso, 50%/50% pero las compañías tiran a usar el mínimo de CPU posible pal sonido. En fin... creo que básicamente se trata de suplir lo inútiles que son los programadores que hacen el resto del juego (no os enfadeis los que programais AGB hombre, que es cachondeo... bueno... más o menos :loco: )
sync
Yo creo que la GBA está infrautilizada. Deberían haberle puesto dos altavocillos, uno a cada lado, y apuntando un poco hacia fuera para que cada oído captase el sonido del altavoz correspondiente.
La mayoria de la gente juega sin cascos, por lo que sólo utilizan salida mono ¿no? , si el programa genera sonido estereo, sólo un mínimo número de usuarios lo están percibiendo así, por eso digo que es un desperdicio de recursos, deberian haber puesto 2..., solo es un comentario.
Muy bueno tu trabajo sync
un saludo
Tienes toda la razón, además lo de utilizar un altavoz es una mala cosa porque al mezclarse los canales izquierdo y derecho desaparece el canal de surround, por motivos obvios :-?
Eso me ha obligado a incluir una opción para activar/desactivar la salida surround según si el usuario usa o no altavoces...
CitarMuy bueno tu trabajo sync
Ooopz ¿Qué has visto? ¿No te habrá filtrado seryu la demo que le pasé, no? (seryuuuuu :X9: )
Por cierto, a quien le pase la demo, que no la ejecute en la AGB real, funciona mal (a propósito... no es que no me fie, pero... emmm... XDDD) Utilícese mejor un emulador como el VBA ;)
sync
oye, esto es increible, llevo desde el jueves de marcha xqe es el fin de las clases (y fin de los putos examenes). ando sin parar en casa, y ahora, despues de unas merecidas horas de sueño me da por visitar el foraco durante un rato antes de que vuelva a salir, y qe veo? al synchrnzr acusandome de pasar una demo qe solo he tenido tiempo de probar 5 minutos en un emulata!! xDD
en fin qe deprimio me qeo :llorando:
También podría haberlo dicho simplemente por tu explicación del motor, sync. Por lo que has hablado de él ya se puede suponer que es un buen trabajo. Mira que eres malpensado, ¿eh? (ahora igual piensas que he sido yo, pero te recuerdo que lo autodestruí instantes después de la evaluación :P).
XD
sí, lo decia por las explicaciones que daba de las características del motor. Tambien por un post que publicó hace mucho tiempo, donde explicaba con más extensión todas las features... También le doy mucho valor a programar en ensamblador
un saludo
jajajaja q desfase de post cm mola. (le veis la gracia yo si...) la peña hablando de su OpenGL y to el tema y ahi un post dobre GBA sobre el tema de los altavoces :D mola tela el kitkat :PPPPPPPPPPPPPPPPPP
bueno, cuando podremos ver esa release q has anunciado, lo logico es poner algun material cuando lo anuncias. ZXDD
salkudos
Pues tienes razón, pero aun estoy consiguiendo que me den permiso "oficial" porque la música de la BSO no es mía o en todo caso tendré que convertir algun otro tema mio. Una imagen del player tampoco es que diga mucho pero... en fin... supongo que es mejor que nada ^_^'
(http://www.stratos-ad.com/utopia/sync/syncAGB.png)
sync
extern sucks y defines sucksr more, mejor factoris y const const
saludos
XDDDDDDDDDDDDDDDDDDDDDD
¿Tú has leído tu frase? Léela en voz alta tres veces y luego díla sólo con la e XDDDDDDDDD
aparecera el diablo ? XD
El archivo ese que ha caido de fondo es el syncAGB.h que declara las funciones del interface. Como están encapsuladas en un par de ficheros objeto las declaro como extern para poder enlazarlas durante el linkaje. Si se te ocurre algo mejor, dilo, venga, no te aguantes XDDD
sync
class AGBInterface
{
public:
virtual void Sync(TParam *) = 0;
...
};
struct AGBInterface
{
void (*Sync)(param_t *);
.....
.....
};
rocks
C++ sux para aplicaciones de GameBoy Advance. Además de tener que linkarte la librería base de C++ que te ocupa un espacio preciosísimo en la ROM del cartucho (unos 200Kb o algo así era, parece que no pero los 4Mb de la AGB se pueden consumir muy rápidamente y 200Kb es muuuucho espacio) también ralentiza la ejecución debido al aumento del uso de punteros ;)
sync
PD: Eso sí, si nos movemos a plataforma PC, por ejemplo, la cosa cambia. El interface del syncDX sí es orientado a objetos (además que va de coña que sea orientado a objetos en este caso, ya explicaré los motivos en la demo que intentaré hacer en el S2e :) )
ah, pse, q mas da un call [eax] q un call 0x12345678 la GBA no se va a morir xDD, de todas formas me has convencido.
podrias poner alguna musiquilla por lo menos, para hacernos una idea ;*
Ese es el problema, si pudiera poner alguna de las musiquillas entonces pondría una ROM directamente, pero es que las que tengo ahora mismo no son mías ^_^'
En el peor de los casos, convertiré algunos temas mios y haré una pequeña ROM pa que los podais oir :D
Lo elección de C en vez de C++ viene sobretodo de que si la compañía cliente utiliza C++ también puede utilizar C sin problemas. En caso contrario les estaría forzando a añadir la librería esa roñosa del C++. Añádele que la mayoría de compañías (todas las que conozco, pero quien sabe, igual hay alguna que se despunta) programan en C y ya tienes un motivo de mucho peso.
sync
C rocks
q dices mars? xDDDDDDDDDDDDDDD
Bueno, me habeis convencido, voy a convertir unos cuantos temas que tengo por ahí y voy a subir una ROM para que pueda bajársela quien quiera, directamente (pero dádme un par de semanas, que estoy muy liado ahora mismo ^_^')
sync
ahi ahi a ver si vemos algo prontito !!
Mmm... probablemente lo podremos ver antes que tu avatar (a mi siempre me sale el link roto, no sé si a alguien más... ^_^')
sync
si? a mi no... lo cambiare de host q a lo mejor os tarda mas dfe 5 seg :P
Como a partir de ahora me voy a centrar en pulir detalles de la demo del syncDX para el S2e porque no quiero dejarlo para el último momento y para mi es más importante, dejo ya de toquetear la demo que quería postear del syncAGB y la cuelgo ya. Os la podeis bajar
aquí.
He incluido el proyecto de VC para que lo podais recompilar y guarrearlo como querais, sólo hay que cambiar los paths en el makefile. No quería subirlo porque el tema tiene un bug (un efecto de glissando que suena roto) pero da lo mismo, pa lo que hay que hacer con él... XDDD
También está la ROM en el Zip, para los que no tengan el devkitadv.
El tema original que he adaptado pertenece al juego Four Block Star, es original mio y os podeis bajar el MP3
aquí para que compareis la versión adaptada para AGB con la original :)
Igual que la otra ROM, no probeis de ejecutarla en hardware (si funciona en la AGB avisádme que me he equivocado de ROM ;) )
sync
PD: Del código de la demo coger lo que querais (si es que quereis algo ^_^')