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

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #120 en: Febrero 03, 2011, 04:54:28 pm »
Se me olvidaba decir que también van adjuntos los scrips de generación del EBOOT.pbp de los ejemplos para mostrar como crear tu propio EBOOT.pbp con imágen, texto y sonido en la selección de juegos (las herramientas necesarias adjuntas son solo para linux).
Monstruos Diabólicos

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

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5708
  • Karma: 129
    • GECA soft
Re: BennuGD PSP
« Respuesta #121 en: Febrero 03, 2011, 06:32:15 pm »
De momento te llevas otro karma por el esfuerzo.

Sobre mis pruebas y png's, mañana me pongo con ello que esta semana entre cambio de curro no he tenido tiempo.

Sobre los botones de la psp, lo mejor era que mapearas de una vez los botones de PSP de modo que sepamos que botones usar, y así dejar de una vez los problemas con los controles (a lo mejor Splinter te hecha una mano con la libjoy).

Que pongas ejemplos me parece bien, pero al final sólo sirven para crear falsas expectativas, ya que cosas con pocas funcionalidades ya pueden funcionar pero lo que nos interesa es que todo funcione.

De todos modos lo que mas me preocupa es la velocidad, ya daria prioridad a esto, todo va muy muy lento, en las cargas y demás.

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #122 en: Febrero 03, 2011, 09:30:07 pm »
De momento te llevas otro karma por el esfuerzo.
Asias :D.
Sobre mis pruebas y png's, mañana me pongo con ello que esta semana entre cambio de curro no he tenido tiempo.
Ok, perfes

Sobre los botones de la psp, lo mejor era que mapearas de una vez los botones de PSP de modo que sepamos que botones usar, y así dejar de una vez los problemas con los controles (a lo mejor Splinter te hecha una mano con la libjoy).
Pues esto ya lo hice yo desde la primera demo que colgué. Es un fichero .inc en el que puse unos cuantos defines para ponerle nombre a todos los botones y de camino una función para usar get_joy_button y key a la vez mapeando a un teclado para poder probarlo tanto en pc como en psp.
Código: [Seleccionar]
#define PSP_TRIANGLE_BUTTON 0
#define PSP_CIRCLE_BUTTON 1
#define PSP_X_BUTTON 2
#define PSP_SQUARE_BUTTON 3
#define PSP_L_BUTTON 4
#define PSP_R_BUTTON 5
#define PSP_DOWN_BUTTON 6
#define PSP_LEFT_BUTTON 7
#define PSP_UP_BUTTON 8
#define PSP_RIGHT_BUTTON 9
#define PSP_SELECT_BUTTON 10
#define PSP_START_BUTTON 11
#define PSP_LEFT_RIGHT_AXIS 0
#define PSP_UP_DOWN_AXIS 1
function keyjoy(int keyid)
begin
if (key(keyid))
return 1;
end
if (NUMBER_JOY()>0)
if (keyid==_UP && get_joy_button(0,PSP_UP_BUTTON))
return 1;
end
if (keyid==_DOWN && get_joy_button(0,PSP_DOWN_BUTTON))
return 1;
end
if (keyid==_LEFT && get_joy_button(0,PSP_LEFT_BUTTON))
return 1;
end
if (keyid==_RIGHT && get_joy_button(0,PSP_RIGHT_BUTTON))
return 1;
end

if (keyid==_esc && get_joy_button(0,PSP_SELECT_BUTTON))
return 1;
end

if (keyid==_enter && get_joy_button(0,PSP_START_BUTTON))
return 1;
end
end

return 0;
end


Que pongas ejemplos me parece bien, pero al final sólo sirven para crear falsas expectativas, ya que cosas con pocas funcionalidades ya pueden funcionar pero lo que nos interesa es que todo funcione.
Pues no pongo ejemplos que no hagan nada, son juegos completos y estoy en ello el problema de que no funcionen algunas funciones no es culpa del port sino de quien haya programado las toolchain para psp, tampoco es plan de reprogramarlas, tendremos que adaptarnos a ellas, (a no ser que sea más dificil la adaptacion que reprogramar algo ):D.

De todos modos lo que mas me preocupa es la velocidad, ya daria prioridad a esto, todo va muy muy lento, en las cargas y demás.
Esto de la velocidad de carga es también culpa de la lectura de archivos de la psp desde la toolchain, he probado algunos juegos portados de SDL PC a SDL psp y les pasa lo mismo, tardan taco en cargar pero luego van bien, como no lo arreglen los que hicieron el porl de SDL psp la llevamos clara también.

En cuanto a lo de que el "set_fps(loquesea,0)" vaya tan lento en psp en vez de ir como en pc, para esto no tengo explicación, creo que sí tiene que ser culpa de bennu, tengo que analizar el código de esta función para intentar detectar el problema, pero bueno, se arregla con poner set_fps(loquesea,3). Un simple if en tu código prg lo arreglaría.
Código: [Seleccionar]
frameskip=0;
if (OS_ID==OS_PSP)
   frameskip=3;
end
set_fps(25,frameskip);
Para lo del ensanchado de resoluciones distintas a la nativa de la psp,( también problema de SDL PSP) se puede arreglar también por código prg.
Código: [Seleccionar]
if (OS_ID==OS_PSP)
  scale_resolution = 04800240;
end

Tenemos que pensar que ningún .prg que no esté pensado para correr en psp va a ser portado directamente a psp, tenemos que tocar algo de código .prg debido a las características técnicas de la psp, pero bueno esto es como siempre ha pasado para otros ports de nuevas plataformas de bennu.

Monstruos Diabólicos

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

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5708
  • Karma: 129
    • GECA soft
Re: BennuGD PSP
« Respuesta #123 en: Febrero 03, 2011, 11:16:11 pm »
Vale, este finde intentaré adaptar alguna demo a psp con tu port para ver si ya tira perfecto con lo que tengas ahora mismo  ;)

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #124 en: Febrero 03, 2011, 11:39:36 pm »
Vale, este finde intentaré adaptar alguna demo a psp con tu port para ver si ya tira perfecto con lo que tengas ahora mismo  ;)
ah, guais, estoy intentando depurar echo, pero está to complejo, este Drumpi, no veas como complica las cosas, con signals y variables globales :D.
Monstruos Diabólicos

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

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6442
  • Karma: 168
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: BennuGD PSP
« Respuesta #125 en: Febrero 04, 2011, 12:53:00 am »
Jajaja ¿Echo complicado? :D
Bueno, sí, un poco sí que lo es, pero dentro del desastre está bastante bien organizado ^^U
Puedes empezar probando el motor de tiles v3 que andaba en un hilo por ahí, que es el que uso en Echo. Si eso funciona, puedes descartar los ficheros add_tile, tscroll y tmap (con extensión .h y .inc). Por lo general, las variables globales están en los .h y sólo las usan sus respectivos.inc, salvo que sean genéricos del juego.
SBTime es algo más sencillo, pero necesitas un ratón para hacerlo funcionar :D

Respecto a ficheros de test, en Bennu tengo muy pocos, la mayoría los hice en Fenix para ver cómo iban algunas funciones y hacer algunas conversiones, pero son un caos, no sé si te iban a servir (son programas cortos, para probar una función o dos, generalmente usando un fichero externo).

De paso, un nuevo karma al esfuerzo.
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 #126 en: Febrero 06, 2011, 10:47:12 pm »
Callejón sin salida.
A ver si alguno tiene idea del por qué
Código: [Seleccionar]
type t_mapa
     //datos del mapa
     int version;
     int filas;
     int columnas;
     int capas;
     int tipo_dato;
     int ancho_tile;
     int alto_tile;
     int desplaz_tile;           //para scroll normal, desplazamiento vertical de cada capa
                                 //para scroll isom�trico, altura hacia arriba
     string fpg;
     word tipo_mapa;
     //contenido del mapa
     byte pointer b_mapa;
     word pointer w_mapa;
<b>     int pointer i_mapa; </b>
     int fpg_mapa;
     //gestion de mapas (por si se almacenan los datos en lista enlazada)
     int id;
     t_mapa pointer sig;
     byte null2;
end
process load_tmf (string tmf_carga, t_mapa pointer tmf_mapa)
private
       id_tmf;
       cont;
       cont2;
       byte dato;
       word dato2;
       int  dato3;
       string magic;

       filas;
       columnas;
       capas;
       tam_dato;
       guardado_correcto;
<b>   int *puntero_datos;</b>
     int tamanio =3800;
     
      
begin
     [tmf_mapa].tipo_mapa=1;
     guardado_correcto=false;
     if (file_exists(tmf_carga))
        id_tmf=fopen(tmf_carga,o_read);
   if (id_tmf==0) return 0; end;
        //LECTURA CAMPO MAGIC
        cont=0;
        for (cont=0;cont<16;cont++)
            fread(id_tmf,dato);
            magic=magic+chr(dato);
        end
        if (magic=="TileMapFile "+chr(26)+chr(13)+"\n")
                
           //LECTURA DE LA VERSION
           fread(id_tmf,dato3);
           [tmf_mapa].version=dato3;
           //LECTURA DE FILAS, COLUMNAS Y CAPAS
           fread(id_tmf,dato3);
           columnas=dato3;
           [tmf_mapa].columnas=dato3;
           fread(id_tmf,dato3);
           filas=dato3;
           [tmf_mapa].filas=dato3;
           fread(id_tmf,dato3);
           capas=dato3;
           [tmf_mapa].capas=dato3;

           cont2=columnas*filas*capas;

           //LECTURA DE TIPO DE DATO
           fread(id_tmf,dato3);
           tam_dato=dato3;
           [tmf_mapa].tipo_dato=dato3;
           //LECTURA DE ANIMACIONES (temporalmente disabled)
           fread(id_tmf,dato3);

           //ZONA DE DATOS
           switch (tam_dato)
                  case 0:
          print_debug("CASE O");
                       [tmf_mapa].b_mapa=alloc(cont2);
                       print_debug("ALLOC 0");
                  end
                  case 1:
          print_debug("CASE 1");
                       [tmf_mapa].w_mapa=alloc(cont2*sizeof(word));
                       print_debug("ALLOC 1");
                  end
                  case 2:
          print_debug("CASE 2");                  
<b>                        //[tmf_mapa].i_mapa=alloc(cont2*sizeof(int)); </b>  <-- esto cuelga la PSP, pero en PC va
<b>                         puntero_datos=alloc(tamanio*sizeof(int));</b>  <-- esto no cuelga la PSP
          print_debug("Despues de ALLOC");                  
<b>                        (*tmf_mapa).i_mapa=puntero_datos; </b>  <-- esto cuelga la PSP, pero en PC va
<b>                       //tmf_mapa.i_mapa=puntero_datos; </b>  <-- esto cuelga la PSP, pero en PC va
<b>                       //[tmf_mapa].i_mapa=puntero_datos; </b>  <-- esto cuelga la PSP, pero en PC va

                  end
           end
           print_debug("despues de ALLOC");

           cont=1;
           for (cont;cont<=cont2;cont++)
               switch (tam_dato)
                      case 0:
                           fread(id_tmf,dato);
                           [tmf_mapa].b_mapa[cont-1]=dato;
                      end
                      case 1:
                           fread(id_tmf,dato2);
                           [tmf_mapa].w_mapa[cont-1]=dato2;
                      end
                      case 2:
                           fread(id_tmf,dato3);
                           [tmf_mapa].i_mapa[cont-1]=dato3;
                      end
               end
           end
           print_debug("despues for CONT");
          
           guardado_correcto=true;
        end
        print_debug("ANTES FCLOSE");
        fclose(id_tmf);
     end
     print_debug("ANTES RETURN");
     return (guardado_correcto);
     frame;
end


Creía que fallaba la función alloc en psp, pero no es así, parece que falla la asignacion de un puntero con otro.
Me tiene todo escamao, ¿será problema de ámbito?
« última modificación: Febrero 06, 2011, 11:07:33 pm por DCelso »
Monstruos Diabólicos

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

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5708
  • Karma: 129
    • GECA soft
Re: BennuGD PSP
« Respuesta #127 en: Febrero 06, 2011, 10:54:47 pm »
No he tenido tiempo de probarte nada.

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12943
  • Karma: 378
Re: BennuGD PSP
« Respuesta #128 en: Febrero 06, 2011, 11:03:37 pm »
y como la llamas?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #129 en: Febrero 06, 2011, 11:09:58 pm »
pues la llamo así
Código: [Seleccionar]
.....
      //VARIABLES DINAMICAS PARA CARGA DE NIVEL Y DUREZAS
      //word pointer nivel;
      //byte pointer durezas;
      t_mapa nivel;
      t_mapa durezas;
...
...
...
     load_tmf("IFenixD.tmf",&nivel);
     print_debug("**despues de tmf IFenixD");
     
     load_tmf("IFenix2.tmf",&durezas);
     print_debug("**despues de tmf IFenix2");
....
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 #130 en: Febrero 06, 2011, 11:11:17 pm »
lo mosqueante es que funciona en el PC perfectamente y en la psp el mismo dcb la cuelga.
Monstruos Diabólicos

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

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12943
  • Karma: 378
Re: BennuGD PSP
« Respuesta #131 en: Febrero 06, 2011, 11:17:28 pm »
en pc va bien, y da los resultados esperados? o solo no se cuelga?

puede ser alguna de las cosas que le has puesto valores por default en el compilador, no se que tan diferente es la version psp de la oficial.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: BennuGD PSP
« Respuesta #132 en: Febrero 06, 2011, 11:26:04 pm »
ya pensé eso, y probé la version monolítica de linux para ver si fallaba y nada, no falla,
también pensé en los parámetros y probé unos cuantos bgdis compilados con parámetros distintos, como -00, -02 -fno-strict-aliasing, -0S -fno-strict-aliasing, -03 -fno-strict-aliasing, y nada.

Una cosa que me escama es que tengo que compilar con -G1, o -G2, o -G3, si no pongo ninguno o pongo un g superior a 3 falla el linkado con el siguiente problema:
Código: [Seleccionar]
build_psp/src/strings.o: En la función `string_format':
strings.c:(.text+0x554): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `__ctype_ptr'
build_psp/src/sysprocs.o: En la función `get_var_info':
sysprocs.c:(.text+0x1444): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `__ctype_ptr'
sysprocs.c:(.text+0x15ec): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `__ctype_ptr'
sysprocs.c:(.text+0x1b44): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `__ctype_ptr'
sysprocs.c:(.text+0x1cf4): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `__ctype_ptr'
sysprocs.c:(.text+0x2194): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `__ctype_ptr'
sysprocs.c:(.text+0x23ec): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `__ctype_ptr'
sysprocs.c:(.text+0x2504): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `__ctype_ptr'
build_psp/src/dirs.o: En la función `dir_open':
dirs.c:(.text+0x354): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `__ctype_ptr'
build_psp/src/mod_debug.o: En la función `get_token':
mod_debug.c:(.text+0x4b8): reubicación truncada para ajustar: R_MIPS_GPREL16 contra `__ctype_ptr'
build_psp/src/regex.o: En la función `regex_compile':
regex.c:(.text+0xa48): se omitieron desbordamientos de reubicación adicionales de la salida
collect2: ld devolvió el estado de salida 1
make: *** [bgdi.elf] Error 1

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 #133 en: Febrero 06, 2011, 11:29:05 pm »
los parámetros con los que compilo son:

-Wall -Os -fno-strict-aliasing  -DTARGET_PSP -D__STATIC__ -DDISABLE_X11 -D__BGDRTM__ -DVERSION=\"1.0.0\" -D__LITE__=$(LITTLE_VERSION) \
         -I$(BUILD_DIR)/src -DJOY_YES $(shell $(PSPBIN)/sdl-config --cflags) -DSTDC_HEADERS

y linko con:

-lz -lpng -lSDL_mixer -logg -lvorbis -lvorbisidec  -lsmpeg -lstdc++ -L$(OSSL_INSTALL_DIR) -lcrypto  -L/SDKs/pspdev/psp/lib -lSDLmain -lSDL -lm -lGL -lpspvfpu -L/SDKs/pspdev/psp/sdk/lib -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkernel -lpspnet_inet -lpspirkeyb -lpsppower
Monstruos Diabólicos

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

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12943
  • Karma: 378
Re: BennuGD PSP
« Respuesta #134 en: Febrero 07, 2011, 12:31:06 am »
ni idea... que loco eso.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2