Ufff,
tengo un lio en la cabeza, que no se ni como titular el hilo :p
El problema, es multiple, asi que empezaré por el principio y aviso que será largo:
Desde hace unos dias, tengo un punto de acceso Wifi, creado a partir adaptador oficial de Nintendo, mediante el truco del almendruco que no viene a cuento explicar ahora.
Vale, con esa 'excusa', me propongo portar la librería Wifi a lo que ya tengo hecho, pero el problema que se intuye, es que en ARM7 habrá problemas, ya que el soporte multithread ocupa bastante y, la libreria Wifi no se queda manca...
El caso es que despues de pequeños arreglos, la cosa acaba rulando.
Desde el PC, usando protocolo TCP/IP, consigo mandar a la DS un archivo de texto, mediante un servidor que creo en el PC, Ahoratoca hacer algo mas exigente y me acuerdo del plugin del Winamp que ha hecho un pavo, pero de momento, no hay fuentes por ningun lado (y creo que no lo tendremos...)
Así que me voy a la pagina del Winamp y ahí tienen una serie de ejemplos para poder construir una DLL que sirva de salida al Winamp.
Vale, dentro de mi DLL, creo un servidor (basado en el anterior) que se encarga de mandarme los samples de audio.
Pues bueno, la cosa es que en la DS, la cosa chuta, pero se ve que se desborda por algun lado y acaba entrecortandose el sonido (eso cuando no empieza asi) y lo curiosos, es que se que del PC no es, y no parece probable que el PC sature a a DS, cuando para enviar algo, necesita que yo se lo pida, pero es que ademas, al rato de suceder eso , la consola deja de responder.
Para abreviar al maximo, decir que he probado todo, a cambiar el tamaño de la pila, incluso he portado el codigo de ARM7 a la seccion de ARM9... usando una serie de truquillos (porque se sigue ejecutando desde ARM7) pero aqui se acaba pagando un precio: que la prioridad en los accesos del ARM9, ralentiza lo suyo y claro, si ya se atragantaba...
Una cosa que tengo descartada, es que el problemasea fruto de alguna interferencia rara con mis librerias multithread, porque le he puesto todas las condiciones favorables y nada, nenes
Por supuesto... he probado ha compilar partiendo de los codigos de ejemplo de la libreria Wifi (sin multithread,etc) , y nada
CONCLUSION: O hay un bug muy gordo en la libreria Wifi (0.3-0.3A)
o es eso unido a que la DS es mas lenta que un caracol, que ya no tengo nada claro.
Por cierto, tengo una anecdota curiosa con mi libreria multithread:
Resulta que estoy tratando de reducir su tamaño y quitando varias cosas, descubro que hay algo muy raro que hace que la libreria pese muchisimo.
Total que haciendo una limpieza, el tamaño del binario de ARM7, me queda en 37KB (sic)
Despues de mirarlo mucho, elimino una funcion y el código se queda en tan solo 18KB
¿por que? Pues, mirando el codigo:
int Get_Thread_Percent_Use()
{
int ret=0;
multithread_disabled();
if(int_mthread_time)
ret=(int) ((((long long )thread_data.thread[thread_data.actual_thread].time)*100LL)+((long long) (int_mthread_time>>1)))/((long long) int_mthread_time);
multithread_enabled();
return ret;
}
la conclusion a la que llego, es que el codigo añadido para trabajar con long long (64 bits), es una BURRRADA, sobre todo si tenemos en cuenta que... esa funcion es mas bien decorativa, para saber mas o menos como se reparten los tiempos.... asi que en ARM7 la he suprimido
Ahora me toca deshacer algunas cosas y añadir otras nuevas.... si alguien ha leido este tocho y ha trabajado con la libreria Wifi, que me cuente que tal le ha ido a el y a ver si podemos solucionar el problema con dicha libreria...