Avances, Diario de...

Started by SplinterGU, April 17, 2008, 03:00:51 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

joseba, creo que estoy empezando a tener los problemas que tenes vos (o tenias) con los recursos comprimidos, pero me esta pasando en linux (y creo que en windows tambien) con la ultima version (de supongo la zlib)...

podrias probar tocando en el fuente files.c donde esta la funcion file_read el bloque de zlib y cambiarlo por esto?

#ifndef NO_ZLIB
    if ( fp->type == F_GZFILE )
    {
        int result = gzread( fp->gz, buffer, len ) ;
        fp->error = ( result < len );
        int gerr=0;
        char * err = gzerror( fp->gz, &gerr);
printf( "%s:%d (%s) %d %d %d %d %s\n", __FILE__, __LINE__, __FUNCTION__, result, len, fp->error, gerr, err ); fflush( stdout );
        if ( result < 0 ) result = 0;
        return result ;
    }
#endif

y decirme, que te retorna en los casos que falla, a mi me da "XXXX: incorrect data check"

te adjunto uno de los fpg que me da error (algunos otros fpg van bien)

desde ya, gracias.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on September 08, 2012, 10:26:08 PM
joseba, creo que estoy empezando a tener los problemas que tenes vos (o tenias) con los recursos comprimidos, pero me esta pasando en linux (y creo que en windows tambien) con la ultima version (de supongo la zlib)...

podrias probar tocando en el fuente files.c donde esta la funcion file_read el bloque de zlib y cambiarlo por esto?

#ifndef NO_ZLIB
    if ( fp->type == F_GZFILE )
    {
        int result = gzread( fp->gz, buffer, len ) ;
        fp->error = ( result < len );
        int gerr=0;
        char * err = gzerror( fp->gz, &gerr);
printf( "%s:%d (%s) %d %d %d %d %s\n", __FILE__, __LINE__, __FUNCTION__, result, len, fp->error, gerr, err ); fflush( stdout );
        if ( result < 0 ) result = 0;
        return result ;
    }
#endif

y decirme, que te retorna en los casos que falla, a mi me da "XXXX: incorrect data check"

te adjunto uno de los fpg que me da error (algunos otros fpg van bien)

desde ya, gracias.
Imagino que el error te lo da tras un load_fpg, sin más, ¿no?.

He tenido dos problemas distintos:
* En la Wii directamente no funcionaba cargar recursos comprimidos en gzip
* En Android el problema es que los recursos se leen de un fichero comprimidos en zip (el apk) con una capa de abstracción y el código de lectura de ficheros asume que lo que te da la primera capa de abstracción -la que lee del APK- es un FILE * al recurso cuando en realidad en un FILE * al gzip y claro, las rutinas de lectura de recursos no lo entienden.

Imagino que el problema se parece más al primero, ¿no?

SplinterGU

el primero claro, pero como si algo hubiese cambiado en la gzip o un bug anterior o un bug actual, el archivo si lo quiero abrir con gzip del sistema da error, ahora si lo abro con doublecmd (un clon de totalcmd para linux, lo abre y el fpg esta en perfecto estado, obtengo el descomprimido sin problemas)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on September 11, 2012, 10:27:39 AM
el primero claro, pero como si algo hubiese cambiado en la gzip o un bug anterior o un bug actual, el archivo si lo quiero abrir con gzip del sistema da error, ahora si lo abro con doublecmd (un clon de totalcmd para linux, lo abre y el fpg esta en perfecto estado, obtengo el descomprimido sin problemas)
Voy a intentar probarlo, pero necesitaré tiempo: estoy saturado de cosas que hacer. Si ves que se me pasa, dame un toque porque quizás sea que se me haya olvidado.

SplinterGU

no importa, mientras, a comerla, a recomprimir los fpg o descomprimirlos... sino hay que empaquetar con otra libz y hacer un wrapper para usarla...

un tema.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

se agregan nuevas funciones para manejo de rgb y paleta (paleta solo find_color)... en realidad son las mismas de siempre, pero ahora se les puede decir sobre que mapa o paleta trabajar... estas funciones son (se agregan a las ya existentes):

rgb(file,map,r,g,b)
rgba(file,map,r,g,b,a)
get_rgb(file,map,color,&r,&g,&b)
get_rgba(file,map,color,&r,&g,&b,&a)
rgb_get(file,map,color,&r,&g,&b)
rgba_get(file,map,color,&r,&g,&b,&a)
find_color(file,map,r,g,b)
color_find(file,map,r,g,b)
find_color(pal,r,g,b)
color_find(pal,r,g,b)

ahora las funciones *rgb* tambien trabajan con 8 bits, asi que no es necesaria la funcion find_color o color_find (aunque es un poquito mas rapida)

tambien se mantiene por compatibilidad, que si el mapa es de 16bits y el color encontrado es 0, retorna 1

internamente, he tocado, cambiado de nombre varias funciones y tambien he eliminado algunas otras... todo en pro al mantenimiento del codigo.

aquellos que tiran de los fuentes, cualquier sugerencia o comportamiento extraño con feedback sera bien recibido...

saludos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

Splinter .. no entiendo el funcionamiento de algunas de esas funciones. Supongo que las color_find lo q hacen es devolver true/false si encuentran en un mapa un color dado .. pero las de get_rgb?? o las de rgb al que le pasas un mapa? para q? si se supone q rgb (y rgba) te devolvian un codigo de color. No se como se usarian, explicanos un pequeño ejemplo (sin codigo ni nada), solo para entender el funcionamiento / utilidad. Gracias.

SplinterGU

no, color_find es como el rgb, pero para 8bits y busca el color mas aproximado dentro de la paleta.

rgb dados los componentes rgb devuelve el color asociado

get_rgb, dado el color, devuelve los componentes.

por que un mapa? porque dependendiendo del mapa es el rgb dado, no es lo mismo, un rgb de un mapa de 32 que de uno de 16, o que uno de 8 (que es el color mas proximo al color que se pide)

siempre fue un problema trabajar con los rgb si se mezclan mapas o si los mapas no tienen la misma profundidad que el escritorio y ni que decir si trabajamos con paletas diferentes a la del sistema.

seguramente no se entendio nada, pero ahi fue la explicacion.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

nueva release con todos estos ultimos cambios... y tambien se corrigieron todos los paquetes de todas las plataformas que se venian generando mal...

desinstalar todas las versiones anteriores... (manualmente si es necesario) y reinstalar de cero esta nueva.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

#1944
DEBUG

- new debug log format
- new debug levels
- debug console now allow several SHOW
- new debug console commands
- add new instructions for define/activate debug level:
  TRACE(debug_level)
     0 - disable
     1 - only show source lines
     2 - source lines + opcodes
     3 - source lines + opcodes + stack dump
- disable stdout buffering

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Transdiv

Splint, la ultima version para Windows es esta http://www.bennugd.org/downloads/bgd-1.0.0-r298-win32.exe o toca compilarla desde el repositorio?

Salu2
TD

SplinterGU

es la ultima sin los cambios de hoy...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Oh, me olvide...

- reduccion del stack de procesos de 16k a 4kb...

incluso creo que es muy grande...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

Quote from: SplinterGU on October 08, 2012, 05:14:22 AM
Oh, me olvide...

- reduccion del stack de procesos de 16k a 4kb...

incluso creo que es muy grande...

Y eso q es ? xDDD

FreeYourMind

menor numero de procesos posibles me imagino