PDA

Ver la versión completa : Enkonsierto, un regalito para que trabajes



mortimor
16/03/2004, 11:24
Tu sabes lo que es. V0.1b (le faltan cosillas).

Lo pongo ahora porque no se cuando podre volver a entrar en internet hoy.

enkonsierto
16/03/2004, 14:23
Ole, ole. Grasias morti. Desde luego, que curiosa es la gente bajandose los ficheros adjuntos jejejeje. :D :D :D

(_=*ZaXeR*=_)
16/03/2004, 14:38
Yo directamente pregunto, que es?

enkonsierto
16/03/2004, 14:45
Una betilla de un editor de niveles para el vorton, pero aun está en las primeras versiones. :D

(_=*ZaXeR*=_)
16/03/2004, 14:47
La verdad es que ya me lo imaginaba por eso no me lo hje bajado, llevais un tiempecillo trabajando en ello por los comentarios que os leo en el foro, enga a currar que estamos esperando :p

chui
16/03/2004, 15:33
M E C O R R O !!!!

c=======3



¡¡¡¡¡ DABUTEN !!!!!


:amor:

mortimor
16/03/2004, 15:56
*****, no es para erotizarse asi Chui. :D:D:D

Que todavia es muy preliminar y cutre. Bueno, lo de cutre no creo que lo pierda por ahora, me he centrado en poner la funcionalidad minima y los tipo son fijos. Cuando aumente la funcionalidad sera mas util, por ahora... con hacer mapas vale.

haunter
16/03/2004, 18:38
para el proximo número de spainscene quiero un reportaje sobre el vorton con entrevistas a los programadores. ALE!

Os apuntais?

chui
17/03/2004, 00:48
Originalmente anunciado por haunter
para el proximo número de spainscene quiero un reportaje sobre el vorton con entrevistas a los programadores. ALE!

Os apuntais?


Ok.

mortimor
17/03/2004, 10:22
Chui se va a hacer mas famoso!!!!!

Yo quiero ver esa entrevista, como no le deis caña me quejo eeehhh!!! Pues la verdad es que con la de cosas que han pasado en lo que lleva de vida el Vorton.... sip un reportaje interesantisimo para la prensa amarilla :P


PD: sigo preguntandome para que **** se habra bajado la gente el fichero :confused:

enkonsierto
17/03/2004, 14:31
Eoeo, que entrevisten tambien al morti que tambien se lo ha currao mucho.
Yo creo que la gente se baja el ficherito por puro cotilleo. :D :D

mortimor
22/03/2004, 10:34
Se acerca la v0.2, me pondre esta noche con las nuevas vistas. :)

A ver si te pasas por el irc enkonsierto!!! que espero no tardar mas de un par de horas. :P

PD: me las piro, que tengo que adquirir mi nuevo PC :D:D:D ya era hora.

chui
22/03/2004, 10:59
Acabo de terminar la primera definicion de los circuitos de Efecero en XML... ¿Algun avance del problema de parseo en la GP32? :D

mortimor
22/03/2004, 16:04
LAs ultimas mejoras (optimizaciones) hacen que sea mas rapido, pero sigue siendo excesivamente lento.

Estoy barajando la posibilidad de achacar la lentitud a una saturacion de la cache de la GP32, ya que de memoria ram estamos sobrados. Y puede que realice algunas modificaciones mas trabajando sobre ello.

En cuanto a las nuevas funcionalidades... esta aprado a la espera de solucionar esto. Se ha convertido en mi prioridad .:(

chui
23/03/2004, 15:06
He estado pijoteando en plan profiler porque tarda tanto... mi conclusion es que al menos en la version que tengo yo suele consumir bastante en los Release y los Append.

Te dejo el codigo y los resultados del test.
Los ficheros contenidos son:

1- src/debug.c : Con esto se puede trazar el codigo poniendote los milisegundos de ejecucion. Te lo deja todo en un fichero.
2 - src/debug.h : Sin comentarios
3 - src/ML_Lib/ML_Document.c : Modificado para crear, salvar y liberar el debug/profiler.
4 - src/ML_Lib/ML_leng_process.c : Modificado con las trazas debug_print(...)
5 - vorton.deb : Mis resultados en la GP, la primera fila son los milisegundos de ejecucion y luego va la traza en cada linea.
6 - data/1/level.map : Es el XML tratado, como veras se trata siempre del mismo tag para que el resultado de la traza sea siempre repetitivo.


Bueno, aqui lo dejo... espero que tu puedas darle mas uso y podamos arreglar esto.

mortimor
23/03/2004, 15:25
Eso que mencionas se debe a la funcion clone() que duplica el arbol completo y se utiliza en append(). Bien esa funcion no se utiliza ya al cargar ficheros, ahora utiliza una funcion llamada add que evita todo eso y tambien evita los releases que requieren despues.

De todos modos le echare un vistazo. :)

chui
23/03/2004, 16:24
Ya me imaginaba que algunas cosas ya estaria mejorao, pero creo que el debug/profiler este puede venir muy bien para el PROBLEMA que me tiene loco :D


¡¡¡ SUERTE !!!!

chui
28/03/2004, 16:11
Morti, este codigo parece tener el mismo sintoma que ML_Lib.



void gr_fill_nearest_table()
{
int n ;
SDL_Color c ;
register fillpoint * ptr ;
fillpoint * next ;

dime("gfnt 0");
for (n = 1 ; n < 256 ; n++)
{
c = palette[n] ;
c.r /= 8 ;
c.g /= 8 ;
c.b /= 8 ;
add_filling (c.r, c.g, c.b, n, DRIGHT) ;
if (c.r < 31) add_filling (c.r+1, c.g, c.b, n, DRIGHT) ;
if (c.r > 0) add_filling (c.r-1, c.g, c.b, n, DLEFT) ;
if (c.g < 31) add_filling (c.r, c.g+1, c.b, n, DDOWN) ;
if (c.g > 0) add_filling (c.r, c.g-1, c.b, n, DUP) ;
if (c.b < 31) add_filling (c.r, c.g, c.b+1, n, DIN) ;
if (c.b > 0) add_filling (c.r, c.g, c.b-1, n, DOUT) ;
}

dime("gfnt 1");
n=0;
while (filling)
{
dimeNum("N",n++);
int i=0;
ptr = filling ;
while (ptr)
{
i++;
if (ptr->r < 31) add_filling(ptr->r+1, ptr->g, ptr->b, ptr->color, DRIGHT) ;
if (ptr->r > 0) add_filling(ptr->r-1, ptr->g, ptr->b, ptr->color, DLEFT) ;
if (ptr->g < 31) add_filling(ptr->r, ptr->g+1, ptr->b, ptr->color, DUP) ;
if (ptr->g > 0) add_filling(ptr->r, ptr->g-1, ptr->b, ptr->color, DDOWN) ;
if (ptr->b < 31) add_filling(ptr->r, ptr->g, ptr->b+1, ptr->color, DIN) ;
if (ptr->b > 0) add_filling(ptr->r, ptr->g, ptr->b-1, ptr->color, DOUT) ;
next = ptr->next ;
del_filling (ptr) ;
ptr = next ;
}
dimeNum("I",i);
}
dime("gfnt 2");
}





static inline fillpoint * add_filling(int r, int g, int b, int color, int dir)
{
fillpoint * n ;

if (nearest_table[r*2][g*2][b*2] != 0)
return 0 ;

//printf ("%02d %02d %02d -> %d\n", r, g, b, color) ;

nearest_table[r*2+0][g*2+0][b*2+0] = color ;
nearest_table[r*2+0][g*2+0][b*2+1] = color ;
nearest_table[r*2+0][g*2+1][b*2+0] = color ;
nearest_table[r*2+0][g*2+1][b*2+1] = color ;
nearest_table[r*2+1][g*2+0][b*2+0] = color ;
nearest_table[r*2+1][g*2+0][b*2+1] = color ;
nearest_table[r*2+1][g*2+1][b*2+0] = color ;
nearest_table[r*2+1][g*2+1][b*2+1] = color ;

n = malloc(sizeof(fillpoint)) ;
n->r = r ;
n->g = g ;
n->b = b ;
n->color = color ;
n->dir = dir ;
n->next = filling ;
if (filling)
filling->prev = n ;
n->prev = 0 ;
return filling = n ;
}




static inline void del_filling(fillpoint * n)
{
if (n->prev)
n->prev->next = n->next ;
else
filling = n->next ;
if (n->next)
n->next->prev = n->prev ;
free (n) ;
}



El problema esta en el while doble de gr_fill_nearest_table: son 32703 iteracciones del while interior en total, tarda 4.1055 milisegundos la GP32 por iteraccion.... total casi 2 minutos. :(

Te adjunto todo el codigo, estas funciones se encuentran en src/g_pal.c

mortimor
28/03/2004, 16:16
Estoy en ello. A ver si comparando algoritmos puedo ver que problema tiene la GP32.