Autor Tema: BennuGD PSP  (Leído 80620 veces)

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12944
  • Karma: 378
Re: BennuGD PSP
« Respuesta #195 en: Marzo 04, 2011, 09:13:05 pm »
proba en 1
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #196 en: Marzo 04, 2011, 09:27:47 pm »
ok, acias de todos modos, probaré con ese tb,
Monstruos Diabólicos

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

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #197 en: Marzo 04, 2011, 09:34:04 pm »
cagoen, mismo resultado que 2.
Monstruos Diabólicos

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

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12944
  • Karma: 378
Re: BennuGD PSP
« Respuesta #198 en: Marzo 04, 2011, 10:06:47 pm »
para mi no van por ahi los tiros.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #199 en: Marzo 04, 2011, 10:16:56 pm »
ya te digo, por otro lado, estoy intentando aislar el problema del sonido y tengo este test
Código: [Seleccionar]
....
...
Begin
id_text_key=write_var(0,10,10,0,text_key);
write_var(0,40,40,0,id_song);
while (!keyjoy(_esc))
if(keyjoy(_a))
text_key="a";
while (keyjoy(_a)) frame;end
id_song=load_song( "Sound/BossCourage.xm" );
end
if(keyjoy(_s))
text_key="s";
while (keyjoy(_s)) frame;end
play_song(id_song,-1);
end
if(keyjoy(_z))
text_key="z";
while (keyjoy(_z)) frame;end
stop_song();
end
if(keyjoy(_x))
text_key="x";
while (keyjoy(_x)) frame;end
unload_song(id_song);
end
if(keyjoy(_q))
text_key="q";
while (keyjoy(_q)) frame;end
set_song_volume(50);
end
if(keyjoy(_w))
text_key="w";
while (keyjoy(_w)) frame;end
set_song_volume(100);
end
frame;
end
end
...
...
funciona tanto en pc como en psp, pero una cosa, no se puede hacer esta combinacion ni en pc ni en psp
a, s, x, s.
es decir: load_song,play_song, stop_song, play_song.

Perdonad mi desconocimiento, pero como es que no puedo volver a hacer play? casca que da gusto dice que no sabe qué tipo de archivo es (Can't play unknown music type), y resulta que lo estuvo tocando antes :D, (¿fallo de bennu?)

Tengo que hacer un unload otra vez el load y tocar el play para que vuelva a escucharse.


Monstruos Diabólicos

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

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12944
  • Karma: 378
Re: BennuGD PSP
« Respuesta #200 en: Marzo 04, 2011, 11:09:39 pm »
codigo bennugd..

/* --------------------------------------------------------------------------- */
/*
 *  FUNCTION : play_song
 *
 *  Play a MOD/OGG
 *
 *  PARAMS:
 *      mod pointer
 *      number of loops (-1 infinite loops)
 *
 *  RETURN VALUE:
 *
 * -1 if there is any error
 *
 */

static int play_song( int id, int loops )
{
    if ( audio_initialized && id )
    {
        int result = Mix_PlayMusic(( Mix_Music * )id, loops );
        if ( result == -1 ) fprintf( stderr, "%s", Mix_GetError() );
        return result;
    }

    fprintf( stderr, "Play song called with invalid handle" );
    return( -1 );
}


/* --------------------------------------------------------------------------- */
/*
 *  FUNCTION : stop_song
 *
 *  Stop the play of a mod
 *
 *  PARAMS:
 *
 *  no params
 *
 *  RETURN VALUE:
 *
 * -1 if there is any error
 *
 */

static int stop_song( void )
{
    if ( audio_initialized ) Mix_HaltMusic();
    return ( 0 ) ;
}

/* ------------------ */
/* Sonido MOD y OGG   */
/* ------------------ */

/* --------------------------------------------------------------------------- */
/*
 *  FUNCTION : load_song
 *
 *  Load a MOD/OGG from a file
 *
 *  PARAMS:
 *      file name
 *
 *  RETURN VALUE:
 *
 *  mod pointer
 *
 */

static int load_song( const char * filename )
{
    Mix_Music *music = NULL;
    file      *fp;

    if ( !audio_initialized && sound_init() ) return ( 0 );

    if ( !( fp = file_open( filename, "rb0" ) ) ) return ( 0 );

    if ( !( music = Mix_LoadMUS_RW( SDL_RWFromBGDFP( fp ) ) ) )
    {
        file_close( fp );
        fprintf( stderr, "Couldn't load %s: %s\n", filename, SDL_GetError() );
        return( 0 );
    }

    return (( int )music );
}

* --------------------------------------------------------------------------- */
/*
 *  FUNCTION : unload_song
 *
 *  Play a MOD
 *
 *  PARAMS:
 *
 *  mod id
 *
 *  RETURN VALUE:
 *
 * -1 if there is any error
 *
 */

static int unload_song( int id )
{
    if ( audio_initialized && id )
    {
        if ( Mix_PlayingMusic() ) Mix_HaltMusic();
        Mix_FreeMusic(( Mix_Music * )id );
    }
    return ( 0 ) ;
}

/* --------------------------------------------------------------------------- */
/*
 *  FUNCTION : modsound_unload_song
 *
 *  Frees the resources from a MOD and unloads it
 *
 *  PARAMS:
 *      mod id;
 *
 *  RETURN VALUE:
 *
 *  -1 if there is any error
 *  0 if all goes ok
 *
 */

static int modsound_unload_song( INSTANCE * my, int * params )
{
    if ( params[0] == -1 ) return ( -1 );
    return( unload_song( params[0] ) );
}
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12944
  • Karma: 378
Re: BennuGD PSP
« Respuesta #201 en: Marzo 04, 2011, 11:24:12 pm »
si ves o piensas que ahi hay aun bug, por favor, no dudes en comunicarmelo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #202 en: Marzo 04, 2011, 11:59:55 pm »
umn, lo veo perfecto :D, es más fue fallo mío, hacía el play después del unload en vez de después del stop. sooorrryy ;'(
Monstruos Diabólicos

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

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12944
  • Karma: 378
Re: BennuGD PSP
« Respuesta #203 en: Marzo 05, 2011, 12:01:48 am »
bueno, mejor que sea un problema humano de testing... sino estamos en un grave problema.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6452
  • Karma: 168
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: BennuGD PSP
« Respuesta #204 en: Marzo 05, 2011, 01:34:43 am »
XCelso, lo del color del fondo está en el fichero game.inc, lineas 270, 297, 308, 333 y 483, según el nivel que estés probando. Es la parte donde se ejecutan los niveles y todo eso.
Eso está pendiente de ser reescrito porque me parece poco claro y muy poco modular ^^U Espero que para la versión 1.2 esté lista.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #205 en: Marzo 05, 2011, 10:48:55 am »
SplinterGU, estoy adoptando el mismo test de sonido a c/SDL, ya me funciona en PC voy a compilarlo para psp a ver si falla también para descartar que sea cosa de como gestiona bennu la sdl mixer, ya que el test de sonido hecho en bennu va perfecto en PC y en cambio en PSP al darle al play suena la canción y aleatoriamente se bloquea al poco tiempo la psp y nunca es en el mismo segundo.
Monstruos Diabólicos

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

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12944
  • Karma: 378
Re: BennuGD PSP
« Respuesta #206 en: Marzo 05, 2011, 01:47:41 pm »
el problema es que no se entiende que bennugd no gestiona el sonido... perdon, pero es algo que explique cientos de veces a mucha gente... el modulo de sonido de bennugd solo es un wrapper a la mixer... solo se hacen algunos chequeos de punteros nulos y esas csoas, pero nada mas.
« última modificación: Marzo 05, 2011, 01:49:14 pm por SplinterGU »
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #207 en: Marzo 05, 2011, 03:37:29 pm »
Sip, puede que alguna comprobación esté mal y no la veamos, como ha pasado alguna que otra vez. Iba a ser el siguiente paso que iba a realizar, si va en la psp el codigo c/SDL tal cual lo tengo, intentar hacer que el código bennu, concretamente tu wrapper haga exactamente lo mismo (con mismas comprobaciones) que mi código a ver si sigue cascando.

O bien puede que sea de la gestión de hilos, semáforos o mutex, por eso es por lo que quiero hacer ejemplos que siempre se bloqueen en el mismo sitio porque siendo aleatorios es casi imposible detectar el problema :D.
Monstruos Diabólicos

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

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12944
  • Karma: 378
Re: BennuGD PSP
« Respuesta #208 en: Marzo 05, 2011, 06:04:41 pm »
bennugd no tiene hilos, semaforos o mutex...

un simple ejemplo no sirve si no esta en un loop, como decis vos, pasa despues de un tiempo.

como sea, yo no veo ningun error, si vos lo ves, maravilloso.

suerte con eso, avisame.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #209 en: Marzo 05, 2011, 07:30:28 pm »
Pues entonces de la gestión de prioridades de los procesos y la parada de frames, porque es la única parte pseudoaleatoria que se me ocurre que dé problemas aleatoriamente. Quizas mientras está sonando la música (que por narizes sdl tiene que pasarla a un hilo o similar para dejar ejecutar código del programa mientras suena) se haga una comprobación usando un puntero o algo que acceda a un dato desalineado y haga cascar a la psp.

Parece que la psp tiene la limitación de que solo puede acceder a posiciones múltiplo de 16 bits por lo tanto, no dejándote acceder a los segundos 8 bits de una palabra de manera independiente.

Estoy indagando de si se puede crear un parche o algo al firmware para que lo permita aunque haga el acceso más lento, para así probar definitivamente que es eso, pero no encuentro información al respecto, habría que hablar con algún experto de homebrew para psp pero no localizo a ningún friki español que me pueda ayudar :D.
Monstruos Diabólicos

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