PDA

Ver la versión completa : nuevas SDL aceleradas



efegea
23/01/2006, 21:46
http://www.gp32x.com/board/index.php?showtopic=23819&view=findpost&p=340929

Pues eso, paeryn ha actualizado sus SDL con aceleración por hardware:

-Re-written without hacking the fbcon driver, it's now self-contained.
-Hardware screen scaling! When you ask for a screen that's larger (or smaller) than the LCD it will automagically scale it to fit the screen. I've added an extra function to allow dynamic scaling too (see the README.GP2X)
-Colour expansion of 1bpp blits. When you blit a 1bpp surface it will expand 0s to background and 1s to forground. An added function lets you set what these colours are (see README.GP2X)


Yo de momento he intentado compilar SMSplus2X con la nueva versión, pero se cuelga en una pantalla negra, cuando la versión anterior si funcionaba pero con un parpadeo muy molesto. Seguire investigando a ver que pasa

efegea
23/01/2006, 21:50
El sistema de particulas de miq01 funciona, pero la pantalla parpadea como loca :confused:

WinterN
23/01/2006, 22:50
Quizá con esto podamos jugar a las aventuras 640x480 del Scummvm :D

BuD
23/01/2006, 22:57
Quizá con esto podamos jugar a las aventuras 640x480 del Scummvm :DO quiza con esto podamos portar juegos como SuperTux :D

miq01
23/01/2006, 22:58
http://www.gp32x.com/board/index.php?showtopic=23819&view=findpost&p=340929

Pues eso, paeryn ha actualizado sus SDL con aceleración por hardware:

-Hardware screen scaling! When you ask for a screen that's larger (or smaller) than the LCD it will automagically scale it to fit the screen. I've added an extra function to allow dynamic scaling too (see the README.GP2X)
Ostras, esto facilitará un montón portar juegos a resoluciones distintas de 320x240...


El sistema de particulas de miq01 funciona, pero la pantalla parpadea como loca :confused:
Vaya. Gracias por probarlo. Cuando lo tenga todo instalado (ordenador nuevo... :)) lo probaré, a ver si descubro qué pasa...

efegea
23/01/2006, 23:00
Ya he conseguido que funcione el smsplus2x. El problema era que el configure tenia desactivadas las opciones de audio. He recompilado con --enable-oss y --enable-alsa y ahora funciona, pero sigue el parpadeo :confused:

Luisodin
23/01/2006, 23:01
Habra regalillo efegea? :P

miq01
23/01/2006, 23:05
Ya he conseguido que funcione el smsplus2x. El problema era que el configure tenia desactivadas las opciones de audio. He recompilado con --enable-oss y --enable-alsa y ahora funciona, pero sigue el parpadeo :confused:
¿Cuántos bpp usa el emulador? Es que paeryn dice esto:

Just a quick fix,
Setting the colours on 8-bit mode was broken,
I forgot to put the dummy blit in before a screen flip,
If screen isn't double-buffered then setting the scaler now takes immediate effect.
Just realized that using the scaler with w&h set to 320x240 can be used to pan around a screen that's larger
El sistema de partículas va a 8 bits (cambiar el 8 por un 16 no funcionará porque la manera de pintar los píxeles varía según la profundidad de color). No tengo muy claro lo que quiere decir en ese mensaje, especialmente en las dos primeras frases. Sí, que el modo de 8 bits no iba y que se olvidó algo antes de hacer el "flip" pero no sé qué significa.

efegea
23/01/2006, 23:11
Habra regalillo efegea? :P

Estoy en ello pero a ver como soluciono el problema del parpadeo, que es muy molesto

madelman
23/01/2006, 23:11
Yo lo he estado probando con un nuevo proyectillo que llevo entre manos y lo de usar distintas resoluciones funciona correctamente, y eso que estoy usando una profundidad de color de 32 bits :) Eso si, va bastante lento, a ver si lo puedo probar a 16 bits y la cosa chuta mejor.

Pero eso, confirmo que funciona bien.

efegea
23/01/2006, 23:21
Efectivamente, el escalado por hardware va de vicio, aunque como no tiene filtrado se ve muy mal

Pero el parpadeo me esta volviendo loco :(

KaosOverride
24/01/2006, 00:14
Wow, a mi sin retocar el fuente del CapriceGP2x me gana 4 frames :musico: (Con la sucia treta y sin audio) llegand bastantes juegos al 100% de velocidad a 200Mhz...

El audio como siempre me palma, si no lo compilo con el SDL 100% soft.. ya mirare bien mirado :2pistola:

Una pasada este SDL... va por muy buen camino....

Makoe
24/01/2006, 00:26
Alguno me puede traducir las novedades? Es que yo para mi lo entiendo , pero al no entender de tecnicismos en segun que cosas me cuesta poner la noticia.

Sorry :rolleyes:

KaosOverride
24/01/2006, 01:25
Jandertraduccion de novedades SDL for humans (Usando diccionario chikitistani)
=============================

-Re-written without hacking the fbcon driver, it's now self-contained.

-reescrito el codigo sin "trampear" el fbcon (El driver de la consola en frame buffer), ahora es autocontenido. La fbcon es un "driver" para mostrar una consola de TEXTO en un modo GRAFICO. Las VGA's tienen modos nativos de "texto" y graficos. Estos modos de texto, escribes el caracter ASCII en una posicion de memoria de pantalla y aparece la letra en el monitor, sin dibujarla pixel a pixel (de eso se encarga la VGA). En consola frame buffer, el driver es quien recibe el caracter ASCII y dibuja el caracter pixel a pixel sobe la superficie grafica... Vamos, que simplificando, que ha reescrito el codigo para que conviva mejor con otros modos graficos aparte del SDL...

-Hardware screen scaling! When you ask for a screen that's larger (or smaller) than the LCD it will automagically scale it to fit the screen. I've added an extra function to allow dynamic scaling too (see the README.GP2X)

-reescalado de pantalla por hardware. Se ajusta automaticamente al modo grafico que le indiquemos, esto es podemos decirle que nos cree una pantalla de 640x480 y las SDL lo estrecharan a 320x240 sin que tengamos que decirselo...si le pedimos una supericie de 160x120 lo estirara a 320x240 :) Y todo sin que la CPU se resienta apenas!!. Tambien soporta escalado dinamico. Vamos, que podemos ir variando los modos que ni nos enteramos.. imaginemos un juego que tiene la presentacion a 640x480 y el menu a 320x240, y despues jugando, a 800x600... Pues en principio las SDL mantendran todos esos modos a 320x240... Cada vez que le pidamos cambiar de modo "como si fuese el PC", lo que hace es reajsutar el escalado dinamicamente (Esto es lo que yo creo que he entendido)

-Colour expansion of 1bpp blits. When you blit a 1bpp surface it will expand 0s to background and 1s to forground. An added function lets you set what these colours are (see README.GP2X)

Esto es algo mas complicado... "Expansion de colores de blits"... Aqui igual me cuelo... Unas fuentes de letras, definidas en pixeles, las definimos a lo facil en una matriz de unos y ceros, esto es, a blanco y negro, 1bpp... Si la queremos escribir en pantalla a 16bpp, tendremos que convertir el pixel del bliter "un bit" en un pixel de la superficie "16 bits"... Entonces cuando definimos uan superficie en blanco y negro (el bliter), metemos nuestro grafico ahi (que puede ser desde unas fuentes de texto, logos del nokia 3310, iconos del windows 1.0...) y le decimos "mueveme este trozo de 1bpp a la pantalla" para dibujar un caracter, un icono de una GUI, o lo que sea, nos ahorra tener que calcular los restantes 15 bits y escribirlos en memoria de pantalla 16bpp...

Just a quick fix,
Setting the colours on 8-bit mode was broken,
I forgot to put the dummy blit in before a screen flip,
If screen isn't double-buffered then setting the scaler now takes immediate effect.
Just realized that using the scaler with w&h set to 320x240 can be used to pan around a screen that's larger

Hombre, a este tambien le gustan los "apaños sucios" :quepalmo:

Los ajustes de color a 8 bits estaban mal, se habia olvidado poner el blit "tonto" (pasar de colores/pixeles de 8 bits a 16 bits, similar al blit de 1bpp...)

Si la pantalla no esta con doble buffer, entonces al uar el scalado, se lo asigna (el doble buffer) automaticamente. esto es asi porque el doble bufer es mandatario para el reescalado, trabajamos sobre la superficie virtual de, por ejemplo, 640x480 y despues volcamos al otro buffer, el visible (y el reescalado actua entremedio...)

Tambien se ha dado cuenta que ajustando el escaler a altura/anchura 320x240, se puede usar para desplazar la vision sobre una pantalla (640x480) que es mayor. Atencion, esto que comenta es interesante... en lugar de trabajar con una pantalla a 640x480 (por ejemplo) y escalarla a 320x240, podemos decirle que no escale pero que copie a la pantalla fisica un subsegmento de 320x480 de la de 640x480.. esto es, ZOOM!!! O se me ocurren mas cosas, por ejemplo, en una imagen de 640x480 entan 4 de 320x240... Podemos cargar un fondo de 640x480, una skin para una GUI, dividida en 4 zonas, y poder cambiar de "fondo" de un menu de 320x240 solo desplazando el area de recorte... O menus de 320x480 (el doble de alto) que "scrolla" para mostrar las opciones inferiores...

A ver si cone sa interpretacion personal del tema te ayuda pa la noticia :) :brindis:

Uncanny
24/01/2006, 01:30
Alguno me puede traducir las novedades? Es que yo para mi lo entiendo , pero al no entender de tecnicismos en segun que cosas me cuesta poner la noticia.

Sorry :rolleyes:Si te vale esta es una traducción más o menos rápida de las novedades, la de KaosOverride es más explicativa y completa pero me he dado cuenta que lo él lo había enviado cuando ya lo había traducido :p:

Nuevas características:

- Re-escrito el soporte de video por framebuffer sin modicar el código del controlador fbcon, ahora está autocontenido.
- ¡Escalado de la pantalla por hardware! Cuando el tamaño de la pantalla sea mayor (o menor) que la pantalla de LCD, automágicamente se reescalará para que se ajuste la pantalla. Se ha añadido una función extra que tambien permite un escalado dinámico (ver README.GP2X).
- Expansión de color en bloques de 1 bpp (bit por pixel). Cuando se transfiera un bloque de bits (blitting) a una superficie de 1 bpp el fondo o capa inferior (background) se llenará de 0 (ceros) y de 1 (unos) la capa superior (foreground). Una nueva función añadida permite ver cuales son estos colores (ver README.GP2X).

Nota: Esto es aclaratorio, no es para la traducción, la primera novedad se refiere a que antes paeryn modificó (hizo pequeños hacks para conseguir esta optimización por hardware) directamente el soporte de video referido al framebuffer de la consola de Linux (fbcon) de SDL que se encuentra en el directorio /src/video/fbcon/ de las fuentes de SDL, y ahora parecer ser que ha optado porque el código que da este nuevo soporte al fbcon esté en otros archivos nuevos archivos fuentes y cabeceras que ha creado para usar especificamente en la GP2X y no como código añadido a los fuentes y cabeceras originales de SDL como había hecho en la versión anterior de sus SDL aceleradas por hardware.

KaosOverride
24/01/2006, 01:40
Cuando se transfiera un bloque de bits (blitting) a una superficie de 1 bpp el fondo o capa inferior (background) se llenará de 0 (ceros) y de 1 (unos) la capa superior (foreground). Una nueva función añadida permite ver cuales son estos colores (ver README.GP2X).

Jo, pues esto entonces yo lo habia entendido mal :muerto:

Puck2099
24/01/2006, 03:12
efegea, ¿cómo arreglaste lo de los parpadeos? Porque a mi me pasa lo mismo... :(

No he probado a usar el flag del framebuffer, pero he visto algún ejemplo con ellas en la que sí lo usan, ¿podría ser por eso?

Gracias :)

Makoe
24/01/2006, 03:44
Si no le importa a KaosOverride que agradezco muchisimo su trabajo , me quedo con esta ultima para las noticias por ser mas cortita. Pero con su explicacion a la hora de entenderlo.

Muchas gracias a los 2.

EDITO : Hablaba de las traducciones.

KaosOverride
24/01/2006, 20:43
Tranki makoe, no pasa na :D Mi intencion era explicar sin tecnicismos lo k era (o creia entender) para asi pudieras redactar mas comodamente la noticia

Amm, y porfin he conseguido habilitar el sonido en las SDL hard :muerto: las he tenido que recompilar con los --enable del sonido y va genial...

por cierto, he trinkado el Xrick (port a Xwindows/SDL del Rick Dangerous) y em ha compilado a la primera con las SDL hardware [wei5] Ahora falta asiganr botoncitos, que solo vale para mostrar la intro y creditos del juego.. por ahora

por cierto, como hoy me tocaba reinstalaciones en el nuevo mac del jefe y el nuevo amd64 de la gerente, mientras instalaba las cosas me habia puesto a hacer los recompilados de las SDL hard y despues del xrick con mi portatil (como mola, el devkit de levar al campo...) y cuando meto el ejecutable a la primera, hace "plat" de inicializar el audio, y pantalla negro :llorosa: ojeo el readme y pone "-fullscreen" para no abrir en "ventana" :confused: (es de Xwindows) en eso que me curro uns cript k lo llama con esa opcion y... empieza la musica del Rick dangerous a toda pastilla en la GP2x, los compis del curro mirandome flipando por la musikilla... reinciio de consolita, y sigo mirando el readme.. "-nosound" [wei] [wei] [wei] y si.. al intro es preciosa, pero ahora recogo el portatil y me voy a casa a comer ;)

Ya os contare

(informers, please not show this info in the web frontend til keymappings is finished!!!!))

vamos, k hasta k no os abra un hilo de "rick dangerous portado 100% jugable" no lo pongais en las news, k este lo kiero soltar cuando sea jugable ;)

Makoe
24/01/2006, 22:39
ok , esperaremos pues.

Lo de la traduccion lo agradezco un monto ya que yo lo he entendido gracias a tu explicacion para palurdos.

Uncanny
02/02/2006, 22:40
Parece que paeryn ha actualizado con algunas novedades (http://www.gp32x.com/board/index.php?showtopic=23819&st=122) más sus librerías.

New update.

README.GP2X has updated info again (it got overwritten at some point)
Fixed problem in surface memory manager - how that ever worked I don't know...
Fixed a rounding error if you specified a width that wasn't a multiple of 8.
Fixed an error in determining scale ratio.
Added a new function to get the screen size as it differs between TV and LCD.

Traducción más o menos fiel:

- El archivo README.GP2X vuelve a tener información actualizada (se debió sobreescribir en algun momento).
- Se ha corregido un problema en la gestión de memoria para las superficies (de pantalla) - como esto siempre ha funcionado es lo que desconozco...
- Se ha corregido un error de redondeo que ocurría si especificabas un valor para el ancho que no fuera multiplo de 8.
- Se ha corregido un error referido a la determinación de la tasa o ratio de escalado (para la pantalla).
- Se ha añadido una nueva función para obtener el tamaño de la pantalla como esta difiera entre la de TV y la del LCD.

Nota: a esta última novedad habría que añadir que paeryn añadió en una versión anterior a esta soporte preliminar para la salida a TV y además corregió un problema se compilara sin soporte de sonido.

Codigo fuente: http://paeryn.myby.co.uk/SDL-1.2.9-GP2X-paeryn.tar.bz2
Binarios precompilados: http://paeryn.myby.co.uk/libSDL.tar.bz2

Y ya que tiene algo que ver el tema, ooPo ha creado un script en escrito en Perl que nos crea de forma automatizada un toolchain bastante completo para usar en entornos Linux (y posiblemente *BSD) para desarrollo de aplicaciones y juegos de GP2X, incluyendo, además de las herramientas propias del toolchain como el compilador GCC, el enlazador y las librerías GLIBC, otras librerías para el desarrollo en la GP2X, tales como librerías básica (zlib, jpeg, libpng, etc) como también las SDL aceleradas por hardware de paeryn y otras librerías auxiliares de SDL. Más info en el hilo (http://www.gp32x.com/board/index.php?showtopic=25218) original de GP32x.

Wild[Kyo]
02/02/2006, 22:44
Bueno ahora lo subo, gracias por el aviso y la traducción...

Luego las probaré a ver si con estas me compila bien el emu de nes :(

Uncanny
02/02/2006, 22:54
']Bueno ahora lo subo, gracias por el aviso y la traducción...

Luego las probaré a ver si con estas me compila bien el emu de nes :(A mandar :D

Por cierto, no sabia que estabas trabajando/portando un emu de NES ¿que problema de compilación te da?

Wild[Kyo]
02/02/2006, 23:08
A mandar :D

Por cierto, no sabia que estabas trabajando/portando un emu de NES ¿que problema de compilación te da?

Esta compilado ya...y funcionar funciona! Quiero decir que si no le paso ningun parametro (es lo tipico que le pasas la rom como un parametro) pues te sale el texto como que no le has pasado nada y las diferentes opciones que le puedes pasar (esto se puede ver gracias al usb/serial, asi que por lo menos sé que algo hace).

El problema viene cuando le pase la rom, reconocerla la reconoce y mediante chivatos en el código más o menos sé donde se ha quedado. Segun las librerias que uso el Parachute me lo saca siempre pero en la pantalla pasa una cosa u otro. Con algunas me muestra un pixel (como si empezara a dibujar el frame y solo dibujara un pixel y en el segundo petara :confused: y con otras ni eso.

Parece que el programa peta a la hora de cargar la rom...hace tiempo que ya no me lo miraba porque pedi ayuda a algun coder y bueno... me mandaron a cagar. XD Es lo que tiene no ser profesional y querer aprender. :(

A ver si un dia me pongo otra vez... [wei2]

EDIT: Portando...el que estoy portando es el emilnes. No es uno de los mejores emuladores de Nes pero los comentarios estan en castellano y para aprender va genial. Además los juegos que van, van realmente bien.

Uncanny
03/02/2006, 00:04
Sin mirar el código del emilnes puede que en SDL_Init() necesites añadir el flag SDL_INIT_NOPARACHUTE para que no de problemas con el manejador de señales, vigilar que cuando en el código se acceda a las superficies, controlando que las bloquee antes con SDL_LockSurface(), haga lo que tenga que hacer con las supericies, y las desbloqueel con SDL_UnlockSurface() para poder actualizar luego la pantalla. Con las SDL aceleradas de versiones anteriores paeryn advirtio de un fallo a la hora de hacer el blitting en pantalla, pero está arreglado que yo sepa, en este aspecto asegurate que el flag para las superficies en SDL_SetVideoMode() y otras funciones sea SDL_HWSURFACE.

Para el tema del depurado y control de de errores supongo que estás usando una función como printf() y SDL_GetError() de SDL para obtener la cadena con la info que tre proporciona SDL sobre cualquier error. En fin, es lo que se me ocurre sugerirte así de primeras, porque son tipicos fallos que cometemos todos por despiste (y yo soy experto en cometer errores xDD) :p

Wild[Kyo]
03/02/2006, 08:28
Sin mirar el código del emilnes puede que en SDL_Init() necesites añadir el flag SDL_INIT_NOPARACHUTE para que no de problemas con el manejador de señales, vigilar que cuando en el código se acceda a las superficies, controlando que las bloquee antes con SDL_LockSurface(), haga lo que tenga que hacer con las supericies, y las desbloqueel con SDL_UnlockSurface() para poder actualizar luego la pantalla. Con las SDL aceleradas de versiones anteriores paeryn advirtio de un fallo a la hora de hacer el blitting en pantalla, pero está arreglado que yo sepa, en este aspecto asegurate que el flag para las superficies en SDL_SetVideoMode() y otras funciones sea SDL_HWSURFACE.

Para el tema del depurado y control de de errores supongo que estás usando una función como printf() y SDL_GetError() de SDL para obtener la cadena con la info que tre proporciona SDL sobre cualquier error. En fin, es lo que se me ocurre sugerirte así de primeras, porque son tipicos fallos que cometemos todos por despiste (y yo soy experto en cometer errores xDD) :p

Pues muchas gracias por tus consejos. Mañana mismo le echaré un vistazo a ver que consigo! :D Si, el "control de errores" lo hago con printf()... voy poniendo "linea 45 - funcion blabla() - estoy funcionando" xDDDDDDDD Mañana intentare tus consejos y si no intentare aislar el problema que lo tengo más o menos cercado ya...

Gracias de nuevo!!! :brindis:

miq01
03/02/2006, 08:33
']Pues muchas gracias por tus consejos. Mañana mismo le echaré un vistazo a ver que consigo! :D Si, el "control de errores" lo hago con printf()... voy poniendo "linea 45 - funcion blabla() - estoy funcionando" xDDDDDDDD Mañana intentare tus consejos y si no intentare aislar el problema que lo tengo más o menos cercado ya...
Los printf (o cout) son mis mejores amigos cuando he de depurar... Suerte con el emulador.

logame
06/02/2006, 01:59
Como se instalan??

Puck2099
06/02/2006, 02:19
Como se instalan??

No se instalan, son solo para los desarrolladores que las incluirán estáticamente en sus programas :)

Saludos