Foros - Stratos

Stratos => Proyectos => Mensaje iniciado por: synchrnzr en 19 de Marzo de 2003, 07:06:29 PM

Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 19 de Marzo de 2003, 07:06:29 PM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: ethernet en 20 de Marzo de 2003, 06:11:04 PM
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
Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 21 de Marzo de 2003, 04:27:37 PM
                                ¿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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: ethernet en 22 de Marzo de 2003, 12:52:14 AM
render: me referia a generar el sonido, o sea:

while(appActive){
GFX::render();
SOUND::render();
}
Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 22 de Marzo de 2003, 02:11:29 AM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: fiero en 22 de Marzo de 2003, 05:53:44 PM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 22 de Marzo de 2003, 07:17:19 PM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: seryu en 22 de Marzo de 2003, 11:36:32 PM
                                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:                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: Mars Attacks en 22 de Marzo de 2003, 11:50:19 PM
                                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).                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: fiero en 23 de Marzo de 2003, 02:42:25 AM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: MaSteR en 23 de Marzo de 2003, 06:46:32 AM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: ethernet en 23 de Marzo de 2003, 07:03:50 AM
bueno, cuando podremos ver esa release q has anunciado, lo logico es poner algun material cuando lo anuncias. ZXDD

salkudos
Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 25 de Marzo de 2003, 11:47:55 AM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: ethernet en 25 de Marzo de 2003, 06:09:02 PM
extern sucks y defines sucksr more, mejor factoris y const const

saludos
Título: syncAGB compatible con GCC (prerelease)
Publicado por: Mars Attacks en 25 de Marzo de 2003, 06:17:26 PM
                                XDDDDDDDDDDDDDDDDDDDDDD

¿Tú has leído tu frase? Léela en voz alta tres veces y luego díla sólo con la e XDDDDDDDDD                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: ethernet en 25 de Marzo de 2003, 06:24:16 PM
aparecera el diablo ? XD
Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 25 de Marzo de 2003, 06:49:21 PM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: ethernet en 25 de Marzo de 2003, 07:19:43 PM


class AGBInterface

{

public:

  virtual void Sync(TParam *) = 0;

...

};



struct AGBInterface

{

  void (*Sync)(param_t *);

 .....

.....

};







rocks
Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 25 de Marzo de 2003, 07:26:11 PM
                                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 :) )                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: ethernet en 25 de Marzo de 2003, 07:33:33 PM
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 ;*
Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 25 de Marzo de 2003, 07:37:40 PM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: seryu en 25 de Marzo de 2003, 09:56:14 PM
                                C rocks                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: MaSteR en 26 de Marzo de 2003, 12:19:10 PM
                                q dices mars? xDDDDDDDDDDDDDDD                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 26 de Marzo de 2003, 06:43:23 PM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: MaSteR en 27 de Marzo de 2003, 12:16:41 PM
                                ahi ahi a ver si vemos algo prontito !!                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 27 de Marzo de 2003, 12:46:07 PM
                                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                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: MaSteR en 27 de Marzo de 2003, 12:54:51 PM
                                si? a mi no... lo cambiare de host q a lo mejor os tarda mas dfe 5 seg :P                                
Título: syncAGB compatible con GCC (prerelease)
Publicado por: synchrnzr en 08 de Abril de 2003, 11:34:08 AM
                                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 ^_^')