Wii...

Started by SplinterGU, December 20, 2008, 11:58:07 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

esta incluido en uno de los include que incluye... de otra forma no compilaria.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

olee, ya he conseguido compilarlo todo, o eso creo.
a ver, cosillas que he tenido que modificar para que compile en un entorno devkitpro+libogc+sdlwiiport+portlibs limpio, recien instalado.
Orden a compilar las cosas:
El bgdc compila a la primera
El bgdrtm compila eliminando del Makefile la referencia al archivo b_crypt.c
El vendor/libglob compila a la primera.
El bgdi compila haciendo el siguiente cambio al Makefile

#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS := ../../bgdrtm/bgdrtm.a -lSDL_mixer -lsmpeg  -lpng -lSDL -ljpeg \
        -lvorbisidec -lz -lglob -lfat -lwiiuse -lbte -logc -lm -lwiikeyboard -lc -lstdc++
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(CURDIR) $(CURDIR)/../../vendor/libglob-bsd_7 $(PORTLIBS)

en libs he tenido que meter detrás de lsdl a ljpeg ya que el port ljpeg de libogc viene con un main dentro y si lo ponemos antes que lsdl da un error.
En libdirs he tenido que añadir el directorio de libglob para que encuentre libglob y portlibs para usar lvorbissidec
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

josebita

En el directorio del libglob, haz un (sudo) make install, no metas la ruta al directorio dentro del Makefile.

El resto de cambios los he metido en el SVN ya, muchas gracias :)

josebita

#423
Como lo del tema del sonido no sé si tiene fácil arreglo, he creado un par de scripts para convertir las músicas a un formato que suene bien en el BennuGD para la Wii de forma sencilla (32KHz, como bien ha dicho alguien, justo la frecuencia que se oye mal en el ordenador ¿?).
Para poder ejecutarlos, necesitais tener el VLC instalado en el ordenador en una ruta normalita.
Versión para Windows (Sólo probada con wine, aún puede fallar).
Versión para Linux

La idea es que ejecuteis el script desde el directorio donde tengais la música y usará el VLC para convertir:

  • MP3, OGG y WMA a OGG de 32KHz. Creará una carpeta llamada converted_music.
  • WAV a WAV de 32KHz. Creará una carpeta llamada converted_wav.
Podeis tocar un par de parámetros en el propio script; como si quereis que la salida sea en estéreo o en mono, el bitrate, o la propia frecuencia de la salida.

Espero que os resulte útil.

DCelso

Si es ese el problema ¿No bastaría con modificar el core de bennu para que use internamente 32KHz y al cargar convierta los sonidos a este? Vamos tipo lo que hacemos con la profundidad de color en imágenes y que en en sdl es sdl_displayformat.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

josebita

Quote from: DCelso on April 08, 2010, 07:12:12 AM
Si es ese el problema ¿No bastaría con modificar el core de bennu para que use internamente 32KHz y al cargar convierta los sonidos a este? Vamos tipo lo que hacemos con la profundidad de color en imágenes y que en en sdl es sdl_displayformat.
En teoría eso es de lo que se debería encargar SDL_mixer. Por lo que sea no está funcionando.
Por eso he puesto el script, para que podais ir haciendo juegos mientras le encuentro una solución al asunto,

DCelso

ok, una cosilla, yo lo he compilado con la devkitpro de windows ejecutando el make desde una ventana ms-dos (o ventana de comandos).
Si ejecuto el make desde el directorio principal bennubennugd-wii-read-only no funciona, si enctro en core y en cada uno de los distintos directorios voy haciendo make va bien, así que no es necesario usar msys para simular la consola linux.

En cuanto a lo de vendor/libglob, no me convence mucho el tener que hacer un make install para poder compilar bennu, debería ser más transparente ya que se está ofreciendo dentro del paquete de fuentes de bennu, si fuera una dependencia externa tipo como son sdl o png o zlib, sí que lo entendería :D.

Por otro lado, opino que estaría muy bien hacer un makefile inicial que se entrara en esos directorios en el orden adecuado y ejecutar su make correspondiente, y ya desde este make controlar los directorios finales de instalación de bgdi.dol y bgdc.dol.

Yo estaba intentando hacer un forwarder boot.dol (usando como base el universal forwarder) para controlar el uso automático de bgdi.dol y bgdc.dol, por ejemplo hacer un bgdc main.prg y justo después un bgdi main.dcb, pero veo que no se puede debido a que justo hacer un "run_dol()" se pierde el control total del programa principal y no vuelve a éste al finalizarse el bgdc, tengo que ver el motivo a ver si tiene solución. Pero por ahora la opción más fácil que veo es hacer un bgdc modificado que justo antes de finalizarse, si se generó correctamente el dcb llame a bgdi con éste dcb resultado. Con esta opción podríamos tener una estructura homebrew channel siguiente:

en apps/bennwii
un main.prg
un bgdc personalizado para wii con el nombre boot.dol y que compila el main.prg
un bgdi.dol, que sería lanzado por bgdc antes de finalizarse con un parámetro adicional llamado main.dcb

O bien esta otra (factible actualmente)
en apps/bennwii
un boot.dcb
un bgdi para wii con el nombre boot.dol y que ejecutaría a boot.dcb

¿Como ves esto por ahora?

Está claro que con mi solución quedaría un poco mejor estructurado, algo como

en apps/bennwii
un main.prg
un bgdc.dol
un bgdi.dol
un boot.dol personalizado para wii que ejecutaría bgdc.dol main.prg y posteriormente, si todo fue bién, bgdi.dol main.dcb

A ver si indago un poquito más sobre esto luego.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

BoMbErLiNk

Quote from: josebita on April 07, 2010, 10:58:02 PM
Te agradecería que reportaras un bug en la sección Issues de la web del proyecto con tantos detalles como te sea posible. Incluido algo de código que no funcione y debería, a poder ser.

PD: Lo de los alpha_steps ya está arreglado. La cagué con los offsets (como siempre). El código parcheado ya está en el SVN. ¡Muchas gracias! :)

Me alegro que te funcionara  :), si no te importa prefiero hacerlo desde aquí, allí tengo que registrarme :D

El código del sudoQ son 600 lineas y esta bien comentado, si lo quieres te lo envio, luego probare otros juegos más complejos a ver que pasa..

DCelso ya que te veo compilando cosas no me podrias hacer un favor.. y compilar la fgfx y la fsock (no importa que el online no funcione) ? me vendrian muy bien para poder testear con algunos juegos en los que ahora mismo estoy trabajando :-*

josebita

He subido una alpha 3 que incluye el arreglo de los alpha_steps.
Mándame el código, si no puedes reportar los errores ahí.

DCelso

ok, intentaré hacer algo.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

BoMbErLiNk

#430
Copon SORR funciona, creia que se quedaría pillado en el boot viendo los resultados del sudoq  :D

Y hace una burrada de cosas al inicio, todas correctamente al llegar al logo..

Como en el juego tengo metido absolutamente de todo he podido probar muchas cosas de una sola pasada, muchas otras no puedo hasta que no tenga los fread/fwrite corregidos o las dlls fgfx/fsock, especialmente los editores de paletas/nombres/generadores de niveles/personajes para probar punteros y otras cosas, pero aqui va la lista :
+ Alpha_steps anda perfecto ahora  :)
+ Los Blendops funcionan bien, me hace bien las sombras negras
+ Map_get_pixel funciona bien, me detecta bien los mapas de dureza
+ Map_block_copy funciona bien, me hace bien todas las deformaciones y efectos especiales que uso
+ La fecha funciona bien, detecta el año en que estamos
+ Flags 16, flags 32, size, size_x, size_y, alpha, angle funcionan bien
+ Los float funcionan bien (nose si estas usando el ultimo ultimo fix de Splinter que corrige una imprecisión en resolution, lo digo porque uso layers con resolution y he visto algun problemilla que no estaba en esa última)
+ Todos los filtros graficos funcionan perfectamente : Normal, 2xscale, HQ2X, Scanlines, Normal2X
+ 60 fps ingame, la suavidad es acongojante, tenerlo en 480 en progresivo, el contador de fps es estable como una roca, no se mueve, no me ha parecido ver tearing, parpadeo pero si un pequeño problema de desincro cada 2/3 segundos, el vsync no parece funcionar, quizas haya alguna forma de llamarlo distinta ?
+ El juego me da un rendimiento de entre 200 fps en niveles cargados y 5000 fps en imagenes casí estaticas, por lo que el uso de dump y restore parecen buenos.
+ La estabilidad es buena, llevo un rato entrando y saliendo del menu y metiendome en todas partes (no uso más de 32MB en el juego)
+ Los graficos de 8bits con diferentes paletas y 16bits se ven bien

LECTURA/ESCRITURA
* Nose porque pero el acceso a la SD es exageradamente lento, es decir, entrar a la galeria de imagenes le cuesta 8 segundos (cronometrado) cuando la Wiz que carga por SD lo hace en menos de 1 segundo.
* CUIDADO con Fwrite, ya lo comente en el otro post, se me cuelga el juego en modo historia porque en cada fase hago un savestate en el inicio , petada a lo grande, code dump y corrupción de datos en la SD, es peligroso.
* Hay algo mal en fread, lo uso para cargar el savegame y los int me los carga bien, pero los nombres del ranking, de los enemigos, del perfil que son STRINGS o CHAR salen corruptos.

SONIDO
* Efectivamente los 44khz no suenan bien, suenan lentos como con los 32khz en pc.
* He tratado de reproducir canciones desde el menú y uso un sistema de intro + loop, solo me suena la intro y no pasa al loop (uso remapeo de rutas para buscar BSO alternativas, o bien fallan los CHAR de 2 o 3 dimensiones guardando la ruta y por tanto no me carga la canción o falla is_playing_song, porque en efecto la intro de la canción suena y usa el mismo metodo de guardado que el loop  ???)

IMAGEN
* La pantalla parece algo descentrada, he probado configuraciones en mi tele pero no es, se come un trozo por encima y por debajo de la pantalla, de aproximadamente 8 pixeles por bando, también deja huecos negros en los extremos laterales pero vamos esos si los he visto hasta en juegos comerciales  :)

josebita

Gracias, Bomber, por el análisis detallado. La verdad es que a mí tb. me pasa en mis pruebas eso de que juegos simples rompen de manera espectacular y juegos mucho más complejos parecen funcionar sin problemas. Revisaré las rutinas de ficheros porque sí que es verdad que tiene pinta que el problema puede venir por ahí.

Por partes:
Quote from: BoMbErLiNk on April 08, 2010, 10:55:58 PM
LECTURA/ESCRITURA
* Nose porque pero el acceso a la SD es exageradamente lento, es decir, entrar a la galeria de imagenes le cuesta 8 segundos (cronometrado) cuando la Wiz que carga por SD lo hace en menos de 1 segundo.
* CUIDADO con Fwrite, ya lo comente en el otro post, se me cuelga el juego en modo historia porque en cada fase hago un savestate en el inicio , petada a lo grande, code dump y corrupción de datos en la SD, es peligroso.
* Hay algo mal en fread, lo uso para cargar el savegame y los int me los carga bien, pero los nombres del ranking, de los enemigos, del perfil que son STRINGS o CHAR salen corruptos.
El tema de la SD puede ser por el uso de una versión del SDK antigua; he visto que en las últimas versiones han estado trabajando en esto, así que veré si tengo todo actualizado en mi ordenador.
En cuanto a fread/fwrite ya digo que lo miraré.

Quote from: BoMbErLiNk on April 08, 2010, 10:55:58 PM
SONIDO
* Efectivamente los 44khz no suenan bien, suenan lentos como con los 32khz en pc.
* He tratado de reproducir canciones desde el menú y uso un sistema de intro + loop, solo me suena la intro y no pasa al loop (uso remapeo de rutas para buscar BSO alternativas, o bien fallan los CHAR de 2 o 3 dimensiones guardando la ruta y por tanto no me carga la canción o falla is_playing_song, porque en efecto la intro de la canción suena y usa el mismo metodo de guardado que el loop  ???)
Para el problema del resampling, he preguntado y me han contestado que es una limitación de la versión de SDL para Wii actual. Aconsejo, por tanto, usar los scripts que enlacé anteriormente para reconvertir el audio para que suene bien.
En cuanto a la otra música que no suena... Me vendría muy bien si pudieras aislar (y poner aquí) el código que falla.

Como digo, muchas gracias por las pruebas :)

BoMbErLiNk

Guay  :), en el sonido este es el código concreto que falla :

// se encarga de hacer un LOOP de cancion
IF (musica_LOOP==1 AND cancion_cargada>0)
IF (NOT is_playing_song())
IF (trozo_cancion>0) unload_song(trozo_cancion); trozo_cancion=0; END
cancion=play_song(cancion_cargada,0);
END
END

SplinterGU

josebita, insisto por enesima vez... corrije el tema de la files.c y el arrange.h y quita todos los parches que pusiste para los colores... no tiene sentido que tengas parches de colores, cuando sabemos que el problema era la no incluision del arrange.h en el files.c... y si no lo haces vas a tener problemas en las funciones de ficheros como te lo anuncie...

bomber, por otro lado, no uses fwrite para guardar estructuras o valores numericos... ya que no sera portable los states que guardes... usa las funciones save/load para guardar variables de tipo numerico (int) o estructuras que contengan datos numericos... a menos que guardes todo como string y luego lo conviertas al cargar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on April 09, 2010, 12:31:42 AM
josebita, insisto por enesima vez... corrije el tema de la files.c y el arrange.h y quita todos los parches que pusiste para los colores... no tiene sentido que tengas parches de colores, cuando sabemos que el problema era la no incluision del arrange.h en el files.c... y si no lo haces vas a tener problemas en las funciones de ficheros como te lo anuncie...
Jué, no sé cómo explicarte que NO he tocado el files.c y NO hay parches para colores. Es algo que barajé en un momento pero no llegué a hacer. El files.c es el mismo que la versión normal de Bennu. Idéntico. La única diferencia está en la función file_move que ahora mismo no está implementada para la WII y devuelve un código de error.

De verdad: El arreglo que hice fue incluir el arrange.h en el files.c, pero en cuanto tú lo arreglaste en el SVN, adopté tu solución. De hecho, adopté todos los cambios que aplicaban del core desde el SVN oficial a mi código.