luzbel / VigasocoSDL

Temporal workspace for newest version of VigasocoSDL while the full history is recovered
16 stars 9 forks source link

Versión para SDL2? #14

Open vanfanel opened 4 years ago

vanfanel commented 4 years ago

Hola @luzbel

Tienes pensado migrar el VigasocoSDL a las SDL2? En las SDL2 tenemos escalado por hardware "y toda la pesca", y soporta KMS/DRM por lo que se podría jugar el sistemas GNU/Linux sin servidor gráfico PERO con escalado por hardware.

luzbel commented 4 years ago

Hay una versión preliminar en la rama SDL2 https://github.com/luzbel/VigasocoSDL/tree/SDL2

Compila y aparentemente funciona. Da un error al salir del juego, que aún no he depurado. Además el código fue una prueba rápida y no es muy limpio.

Las pruebas son de hace 4 años, así que también faltan los últimos parches incorporados a la rama principal y sería interesante acabar y combinar con las pruebas de filtros XBR (https://github.com/luzbel/VigasocoSDL/tree/xbr) que intentar reorganizar algo los plugins gráficos.

Últimamente el poco tiempo que dedico a la abadía lo dedico al proyecto abadIA, así que, en principio, no es algo que tenga mucha prioridad. Pero si alguien quiere dedicarle cariño le ayudo y guío en todo lo que pueda.

vanfanel commented 4 years ago

No había visto la rama SDL2. A estas alturas debería ser la principal, no? Las SDL 1.x están abandonadísimas... Y hacen muchas cosas a la vieja usanza y todo por software, etc. Son bastante desastre.

La cosa es que he empezado por intentar compilar la rama SDL2 y la primera en la frente:

manuel@teclast:~/src/VigasocoSDL$ make -j4
cd SDLInputKeyboardPlugin && make
make[1]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
make[1]: Entering directory '/home/manuel/src/VigasocoSDL/SDLInputKeyboardPlugin'
g++ -g -fPIC -I../core -I../VigasocoSDL/ `sdl2-config --cflags`   -c -o SDLInputKeyboardPlugin.o SDLInputKeyboardPlugin.cpp
SDLInputKeyboardPlugin.cpp:363:1: error: narrowing conversion of ‘2147495936’ from ‘unsigned int’ to ‘int’ inside { } [-Wnarrowing]
 };
 ^
<builtin>: recipe for target 'SDLInputKeyboardPlugin.o' failed
make[1]: *** [SDLInputKeyboardPlugin.o] Error 1
make[1]: Leaving directory '/home/manuel/src/VigasocoSDL/SDLInputKeyboardPlugin'
Makefile:2: recipe for target 'all' failed
make: *** [all] Error 2

Sabes qué pasa aquí?

luzbel commented 4 years ago

1) No estoy muy seguro de poner SDL2 como rama principal. VigasocoSDL compila en muchos sistemas antiguos y abandonados que posiblemente no tengan SDL2. Por ejemplo, PlayStation2 y DreamCast.

Igual creo un proyecto VigasocoSDL2 o , como dices, dejo SDL2 como rama principal y mantengo las versiones de PS2 y Sega en ramas "semiabandonadas"

2) El Makefile principal simplemente invoca a los Makefiles de cada componente. Si quieres compilar rápido , casi mejor editar el Makefile del raíz y poner el -j4 O sea, tocar la línea 10 y cambiarla por "cd VigasocoSDL && make -j 4" En los plugins casi no se nota porque son pocos fuentes

3) Es un error que pasa con versiones modernas de compiladores, que son mas estrictas. Está corregido en abadIA, que es un proyecto más moderno y éste es uno de los ejemplos de parches que falta por subir a la rama SDL2.

Puedes ver como se corrige en https://github.com/luzbel/VigasocoSDL/commit/6f937292de8aee16228c186d2c3610b2cc4f4193

A ver si tengo un hueco, pruebo a compilar en un compilador moderno la rama SDL2 y hago un commit.

luzbel commented 4 years ago

Debería estar corregido en https://github.com/luzbel/VigasocoSDL/commit/c6e8afd891bb23bf1df4cb401f8c9675519c3709

¿puedes probar? Lo he comprobado en una debian con g++ (Debian 8.3.0-6) 8.3.0

vanfanel commented 4 years ago

@luzbel Siento mucho la tardanza en contestar, he estado liado con otros proyectos (arreglando el backend KMS/DRM para las SDL2, nada menos!).

Sí, ahora ya compila sin problemas. Aunque me pide el DSK y no parece detectarlo (abadia.dsk) cuando está en el mismo directorio que el ejecutable.

A parte de eso, la idea de mantener la versión SDL2 como principal me parece fabulosa y la más adecuada. SDL1.x tiene muchos problemas en plataformas actuales. Demasiados, y muchos irresolubles por el disenio básico de su sistema gráfico/

luzbel commented 4 years ago

El .dsk y el resto de archivos necesarios (GraficosCPC , GraficosVGA y los *.wav de los sonidos) tienen que estar en un directorio roms/abadia colgando del mismo directorio desde donde se genera el ejecutable y desde donde debe ejecutarse el juego.

Con estos pasos debería generarse y ejecutarse sin problema git clone https://github.com/luzbel/VigasocoSDL.git cd VigasocoSDL make -j 4 cd VigasocoSDL ./VigasocoSDL

Ojo, que el git crea un directorio VigasocoSDL, pero el ejecutable se genera en otro directorio VigasocoSDL más interno (por eso hay 2 cd)

Por cierto , ya he recordado porque el core al salir del juego. En SDL2 no existe SDL_KillThread y el bucle principal del juego sigue ejecutándose e invocando a métodos de objetos que ya han sido destruidos al salir del juego. Tengo que enviar una señal al bucle del juego y que pare antes de empezar a destruir objetos. A ver si saco tiempo y lo arreglo. Con eso se podría empezar a plantear una versión SDL decente y pulir otros aspectos que se migraron de forma chapucera a SDL2 simplemente para probar.

vanfanel commented 3 years ago

Hola Luzbel!

He estado una vez más intentando compilar el VigasocoSDL, rama SDL2, de los últimos sources en GITHUB, y sigue fallando al salir con un segfault. ¿Crees que podrías meterle mano para solucionar este pequeño último detalle? Me he pasado el verano escribiendo un nuevo backend KMSDRM para SDL2 que usa la interface ATOMIC DRM del kernel Linux, y me encantaría tener VigasocoSDL rulando sin las X, y sin pete final al salir claro :D Pero sólo si te apetece.. la última vez que hablamos parecía que ya casi lo tenías!

Un saludo

Manuel

El dom., 10 may. 2020 a las 0:12, luzbel (notifications@github.com) escribió:

El .dsk y el resto de archivos necesarios (GraficosCPC , GraficosVGA y los *.wav de los sonidos) tienen que estar en un directorio roms/abadia colgando del mismo directorio desde donde se genera el ejecutable y desde donde debe ejecutarse el juego.

Con estos pasos debería generarse y ejecutarse sin problema git clone https://github.com/luzbel/VigasocoSDL.git cd VigasocoSDL make -j 4 cd VigasocoSDL ./VigasocoSDL

Ojo, que el git crea un directorio VigasocoSDL, pero el ejecutable se genera en otro directorio VigasocoSDL más interno (por eso hay 2 cd)

Por cierto , ya he recordado porque el core al salir del juego. En SDL2 no existe SDL_KillThread y el bucle principal del juego sigue ejecutándose e invocando a métodos de objetos que ya han sido destruidos al salir del juego. Tengo que enviar una señal al bucle del juego y que pare antes de empezar a destruir objetos. A ver si saco tiempo y lo arreglo. Con eso se podría empezar a plantear una versión SDL decente y pulir otros aspectos que se migraron de forma chapucera a SDL2 simplemente para probar.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/luzbel/VigasocoSDL/issues/14#issuecomment-626242133, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGMPUMQ2OSIHG5UDGHWZMTRQXINRANCNFSM4MTAYQOA .

luzbel commented 3 years ago

Disculpa, no he podido dedicarle nada de tiempo al proyecto. Si tu objetivo es solo Linux, supongo que una solución rápida y sucia es cambiar https://github.com/luzbel/VigasocoSDL/blob/c6e8afd891bb23bf1df4cb401f8c9675519c3709/VigasocoSDL/SDLThread.cpp#L60 por pthread_kill(SDL_GetThreadID(_handle), 0);

luzbel commented 3 years ago

Una alternativa es usar la versión SDL2 de @samuel85 https://github.com/Samuel85/Abbey , que elimina el framework genérico de Vigasoco y se centra solo en emular la abadía

vanfanel commented 3 years ago

Muchas gracias por la sugerencia! Probaré a compilarlo este finde, a ver qué hace en la Raspberry Pi :)

El dom, 14 feb 2021 a las 0:46, luzbel (notifications@github.com) escribió:

Una alternativa es usar la versión SDL2 de @Samuel85 https://github.com/Samuel85 https://github.com/Samuel85/Abbey , que elimina el framework genérico de Vigasoco y se centra solo en emular la abadía

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/luzbel/VigasocoSDL/issues/14#issuecomment-778694618, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGMPUL3FVIGC2UFDIR65ODS64FODANCNFSM4MTAYQOA .