PDA

Ver la versión completa : Archivo .GPE para Bennu en Wiz



MoKoLoKo
17/10/2010, 19:58
Estoy intentando aprender a programar en Bennu y bueno, alguna cosita muy simplona va funcionando en el ordenador, pero no soy capaz de hacer que funcione en la Wiz.

El .prg compila y funciona en PC, tengo por ahi el jkeys.lib, y metidos en la carpeta del juego en la Wiz el dcb, el jkeys, un fpg y el prg (que no se si hace falta pero ahi esta).

El problema? El mismo que en el topic que tengo por ahi abierto del Frikimusic, según el .gpe que ponga se queda colgado cargando o me echa. Creo que ya tengo el bgd-runtime de las pelotas en todas las carpetas que se me ha ocurrido (en la raiz de la NAND, carpeta game de la NAND, raiz de la SD, carpeta game de la SD, dentro de la carpeta del propio juego...) pero creo que aun asi no lo está encontrando...

Me estoy desesperando bastante con el Bennu/Fenix, porque si voy a tener que romperme la cabeza de esta forma cada vez que quiera meter algo en esos lenguajes para la Wiz a lo mejor me merecía la pena mandar a tomar por culo la portabilidad del Bennu y escribir en ensamblador [wei]

Uno de los .gpe que he estado probando, proveniente del eek



#!/bin/sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../bgd-runtime
PATH=$PATH:../bgd-runtime

echo 2 > /proc/cpu/alignment

for prg in *.prg; do
name=`basename $prg .prg`
bgdc $prg
bgdi $name
done

cd /usr/gp2x
exec /usr/gp2x/gp2xmenu


El código del programa que estoy intentando probar en la Wiz, por si el problema no fuera del gpe (aunque ya os digo que en el ordenador va)

import "mod_video";
import "mod_map";
import "mod_key";

#include "jkeys.lib"

GLOBAL
int id1;
END

PROCESS main()
PRIVATE
int id1;
END
BEGIN

jkeys_set_default_keys();
jkeys_controller();

set_mode(320,240,32);
id1=load_fpg("nuevo.fpg");
personaje();
personajeb();
END

PROCESS personaje()
PRIVATE
int vx, vy, ax, ay;
END

BEGIN
x=160;y=120;file=id1;graph=1;
LOOP
IF (jkeys_state[_JKEY_UP ])
IF (y>=15)
y=y-5;
end

END
IF (jkeys_state[_JKEY_DOWN ])
if (y<=225)
y=y+5;
end
END
IF (jkeys_state[_JKEY_LEFT ])
if (x>=15)
x=x-5;
end
END
IF (jkeys_state[_JKEY_RIGHT ])
if (x<=305)
x=x+5;
end
END
IF (jkeys_state[_JKEY_L ]&&jkeys_state[_JKEY_R ])
break;
END
IF (jkeys_state[_JKEY_SELECT ])
vy=0; ay=1.5; ax=0;


while(!jkeys_state[_JKEY_MENU ])

if (jkeys_state[_JKEY_LEFT ]) ax=-1.5; end
if (jkeys_state[_JKEY_RIGHT ]) ax=1.5; end
if (jkeys_state[_JKEY_DOWN ]) ay=2.25; end
if (jkeys_state[_JKEY_UP ]) ay=1.15; end

vx+=ax;
vy+=ay;

x+=vx;
y+=vy;

if (x>=305) vx=-vx; x=304.999; end
if (x<=15) vx=-vx; x=15.001; end
if (y>=225) vy=-vy; y=224.999; end
if (y<=15) vy=-vy; y=15.001; end
ax=0; ay=1.5;
if (jkeys_state[_JKEY_MENU ])
vy=0; ay=1.5; ax=0;
end

FRAME;

end

END
FRAME;
END
END

PROCESS personajeb()
PRIVATE
int vx, vy, ax, ay;
END

BEGIN
x=160;y=120;file=id1;graph=1;
LOOP
IF (jkeys_state[_JKEY_Y ])
IF (y>=15)
y=y-5;
end

END
IF (jkeys_state[_JKEY_X ])
if (y<=225)
y=y+5;
end
END
IF (jkeys_state[_JKEY_A ])
if (x>=15)
x=x-5;
end
END
IF (jkeys_state[_JKEY_B ])
if (x<=305)
x=x+5;
end
END
IF (jkeys_state[_JKEY_L ]&&jkeys_state[_JKEY_R ])
break;
END
IF (jkeys_state[_JKEY_SELECT ])
vy=0; ay=1.5; ax=0;


while(!jkeys_state[_JKEY_MENU ])

if (jkeys_state[_JKEY_A ]) ax=-1.5; end
if (jkeys_state[_JKEY_B ]) ax=1.5; end
if (jkeys_state[_JKEY_X ]) ay=2.25; end
if (jkeys_state[_JKEY_Y ]) ay=1.15; end

vx+=ax;
vy+=ay;

x+=vx;
y+=vy;

if (x>=305) vx=-vx; x=304.999; end
if (x<=15) vx=-vx; x=15.001; end
if (y>=225) vy=-vy; y=224.999; end
if (y<=15) vy=-vy; y=15.001; end
ax=0; ay=1.5;
if (jkeys_state[_JKEY_MENU ])
vy=0; ay=1.5; ax=0;
end

FRAME;

end

END
FRAME;
END
END


Supongo que todo será una bobada y realmente será muy simple configurar los .gpe para juegos Bennu pero, ostia me está empezando a calentar :mad:

Hokutoy
17/10/2010, 20:03
Tienes creada la carpeta llamada bgd-runtime en la raiz con el "Bennu" dentro verdad?
Si editas el GPE con el bloc de notas de windows es facil que no te funcione.

Saludos

MoKoLoKo
17/10/2010, 20:05
Tengo la carpeta bgd-runtime por doquier :lol:

Y el GPE le estoy editando con Notepad++

hardyx
17/10/2010, 23:03
Qué cachondo eres Mokoloko, estás inicializando la pantalla con 640x480. La Wiz no soporta eso.

Isidor
17/10/2010, 23:05
Qué cachondo eres Mokoloko, estás inicializando la pantalla con 640x480. La Wiz no soporta eso.

+1.

Saludos.

MoKoLoKo
17/10/2010, 23:15
Ummm, me parece que ese código no es el final que metí, me he colado al copiar y pegar :D

P.D. Pues eso, lo de la resolución era un fallo ya corregido, junto con otros tantos más, pero al copiar y pegar debi coger una versión anterior del archivo :s

Isidor
17/10/2010, 23:36
Ummm, me parece que ese código no es el final que metí, me he colado al copiar y pegar :D

P.D. Pues eso, lo de la resolución era un fallo ya corregido, junto con otros tantos más, pero al copiar y pegar debi coger una versión anterior del archivo :s

Yo tengo el runtime en /game/bgd-runtime , y el .gpe :

#!/bin/sh
LD_LIBRARY_PATH=../bgd-runtime:$LD_LIBRARY_PATH
PATH=$PATH:../bgd-runtime

bgdc coral_sea.prg > compile.txt
bgdi coral_sea.dcb

cd /usr/gp2x
exec /usr/gp2x/gp2xmenu

< - >
Buff, eso es para Caanoo, y ahora no encuentro la Wiz ...

< - >
Ya he encontrado la Wiz, pero no tengo la versión en Bennu ...

A ver si te inspira lo de Caanoo.

Saludos.

MoKoLoKo
17/10/2010, 23:58
He probado el .gpe de Caanoo que has puesto y no furrula tampoco pero la prueba ha sido un punto positivo, el log de la compilación dice que el archivo se compiló sin problemas, luego por huevos ha tenido que encontrar el runtime y el bgdc ha funcionado bien...

Supongo que si, pero hay alguna manera de crear un log con el porqué me está echando del programa al intentar entrar?

He probado con bgdi sgwsrg.dcb > error.txt, pero el archivo queda vacío, soy un zote con Linux :D

Drumpi
18/10/2010, 02:24
A ver, por partes, como le dije a futublog:

-Primero, debes tener el runtime adecuado (tienes de WIZ, de PC, de CAANOO...).
-Segundo, asegúrate de tener bien el árbol de carpetas

/game (o la carpeta que elijas, para WIZ es la más inidicada si luego quieres usar el menu GAME)
|
|
|-- bgd-runtime (con BGDC, BGDI, mod*.so y lib*.so)
|
|-- tu_juego (con tu_juego.dcb, tu_juego.gpe *.fpg, *.fnt... y es recomendable que los *.prg, *.inc, etc...)
|
|-- tu_juego.ini (opcional)

-tercero: recomiendo que uses los .gpe que vienen en los ejemplos del runtime (los ejemplos son el Space Invaders y el PacMan), con unas ligeras modificaciones:


#!/bin/sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../bgd-runtime
PATH=$PATH:../bgd-runtime

echo 2 > /proc/cpu/alignment

for prg in *.prg; do
name=`basename $prg .prg`
bgdc $prg >log1.txt 2>err1.txt
bgdi $name >log2.txt 2>err2.txt
done

cd /usr/gp2x
exec /usr/gp2x/gp2xmenu

Eso te dará más pistas sobre si hay problemas en la compilación o en la ejecución.
Luego cuentas los resultados de los 4 ficheros.

MoKoLoKo
18/10/2010, 10:05
Asunto solucionado!

El log de error daba un error de segmentación, y puesto que el programa apenas tenía variables que pudieran estar fallando y yo no estaba tocando las narices con punteros, solo quedaba un acceso a la memoria: el archivo fpg, debía estar a 32 bits y la Wiz no lo cogía, o algo asi.

Gracias gente :brindis:

oriun
18/10/2010, 14:39
Quizás llegue tarde, pero...
set_mode (320,240,16);

hardyx
18/10/2010, 21:47
También podría ser que lo tuvieras en mayúsculas el .fpg y el código lo estaba buscando en minúsculas. En Linux son diferentes, en Windows no.

futublog
18/10/2010, 23:37
pues no hay nada que hacer con el echo... ¬¬