características al programar para wiz

Started by Prg, December 29, 2009, 07:55:46 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Futu-block

Entonces, creo que lo voy entendiendo...

hay que crear un archivo jkeys.lib al que hay que copiarle el tocho ese de las teclas y que se importe desde el .prg ¿no?

otra cosa es hacer un archivo .gpe para wiz con unas instrucciones tipo
[code language="bennu"]#!/bin/sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../../bgd-runtime
PATH=$PATH:../../bgd-runtime
echo 2 > /proc/cpu/alignment
bgdc defendorx.prg
bgdi defendorx.dcb
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu
[/code]

que no se por qué pero tiene que ser para que corra en wiz...

a ver si me entero gracias a la insistencia...
por cierto gracias splinterGU

Drumpi

Por que WIZ no reconoce los archivos binarios/ejecutables por si solos.
En Linux, cualquier fichero puede ser ejecutable, da igual la extensión ¿pero cómo trasladas eso a una consola sin teclado? pues creando un fichero que se pueda reconocer por la extensión, y que ejecute comandos del sistema: lo que se conoce como un script, vamos.

Resumiendo: para ponerlo fácil.
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)

Futu-block

eso ya me lo temia, pero me interesa la traduccion, al hacer otro juego tengo ca cambiar algo, o no????


[code language="bennu"]#!/bin/sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../../bgd-runtime
PATH=$PATH:../../bgd-runtime
echo 2 > /proc/cpu/alignment
bgdc defendorx.prg
bgdi defendorx.dcb
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu
[/code]

DCelso

clarop, al menos el nombre del prg y del dcb :D.
Monstruos Diabólicos

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

DCelso

#49
Yo me creé mi propia estructura de archivos para facilitarme la vida un poco al pasarlos a wiz.
Puedes verlo en los ejemplos que tengo en la sección de proyectos, can shooter y cohete.
Es la siguiente. Imagínate tu SD pues colgando del directorio raiz se vela siguiente jerarquia de ficheros

bgd-runtime
          + bgdc
          + ...

<b>Cohete</b>
          +recursos
                      + imagen1.png
                      + ...
          +game.dcb
          +game.prg
          +icon.png
          +runme.gpe
<b>Cohete</b>.ini

Explcacion de cada cosa:
En el directorio bgd-runtime se encuentra todo el programa bennu, sus dlls, sus binarios, etc.
Luego el directorio cohete es un directorio con el nombre de tu juego (si es muy grande el nombre es mejor poner un nombre corto descriptivo), en mi caso se llama cohete, pero si se llamase el cohete que despega y aterriza podrías ponerle cohete a secas :D.
Hay un archivo .ini con el mismo nombre que tu juego que sirve para que wiz muestre en pantalla tu juego, contiene lo siguiente:

[info]
name="<b>Cohete</b>"
path="/<b>Cohete</b>/runme.gpe"
icon="/<b>Cohete</b>/icon.png"

se ve claro que es cada cosa, la primera es el nombre a mostrar en pantalla del juego (aquí podría haberle puesto el cohete que despega y aterriza :D), la segunda la ruta del ejecutable (o script) de iniciación del juego y la tercera un icono a mostrar en pantalla.

Luego dentro del directorio cohete están todos los archivos necesarios de tu proyecto, con la salvedad que para hacerlo homogéneo para cualquier otro nuevo juego le he puesto al prg principal el nombre de game.prg obteniendo al compilarse el game.dcb que es el binario final de nuestro juego (el vendría en un juego comercial), pues quedaría comentar el fichero script de ejecución del juego que contiene lo siguiente:
runme.gpe

#!/bin/sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../bgd-runtime
PATH=$PATH:../bgd-runtime
echo 2 > /proc/cpu/alignment
bgdi game.dcb
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu

Es parecido al tuyo pero sin compilar el .prg (imagínate que es un juego comercial, sería feo poner el código fuente :D)
Lo que hace es por lineas:
la primera es un comentario que indica al sistema operativo el shell a usar para ejecutar este script, en este caso han puesto "sh", pero hay otros como ksh, o bien bash.
La segunda es para que el sistema operativo cuando necesite encontrar una función de forma dinámica busque en las librerías dinámicas de bennugd.
La tercera es para que cuando alguien le diga al sistema operativo que ejecute bgdc o bgdc sepa donde buscarlo para ejecutarlo.
La cuarta es insertar un 2 en el archivo aligment, no se para que vale, si alguien quiere decirlo, lo edito y lo pongo :D.
La quinta ejecuta nuestro juego dcb compilado con bennugd, gracias a la configuración del sistema que hemos hecho en estas lineas anteriores.
La sexta y cuarta sirve para que wiz vuelva al menú típico de selección de juegos inicial después de ejecutar nuestro juego.
Monstruos Diabólicos

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

DCelso

#50
Con esta estructura, para cada juego solo tienes que cambiar una cosa de forma sistemática (el nombre de tu juego) en varios sitios.
En el caso que he presentado del cohete sería cambiar todas las referencias a la palabra "Cohete" por el nombre del nuevo proyecto :D. Si te das cuenta, en el post anterior he resaltado en negrita la palabra cohete en todos los sitios, que sería donde hay que cambiarla.
1.- El nombre de la carpeta de tu juego.
2.- El nombre del .ini asociado a la carpeta.
3.- Editar el *.ini para poner el nombre del juego y la ruta del juego.
4.- Crear o editar el archivo icon.png de tu juego.

Y ya está, si te das cuenta, el script .gpe no hace falta cambiarlo ya que si siempre llamas al dcb de tu juego game, este lo ejecutará.
Bajate alguno de mis proyectos para wiz para entender mejor la estructura.
http://forum.bennugd.org/index.php?action=dlattach;topic=796.0;attach=526
Monstruos Diabólicos

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

Drumpi

En el mismo ejemplo que viene en la descarga de la versión WIZ ya se puede ver eñ uso del sistema, y viene con un GPE universal, que compila y ejecuta todos los PRG de la capeta destino.

Lo de alignment es para decirle al sistema operativo que trabaje tomando como base datos de tipo BYTE, porque de lo contrario lo haría con INT y el funcionamiento con tipos de menos bytes se resentiría más aun.
Es que la wiz es un poco especialita con el manejo de datos, parece ser (por eso no funciona el modo 32 bits).
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)

SplinterGU

- el gpe debe estar en formato UNIX, si esta en DOS, no funciona, deja la pantalla en negro.
- el "echo 2 > /proc/cpu/alignment" ya lo habia explicado, es para alinear los miembros de las estructuras a 1, sino el procesador levanta cualquier cosa si no esta alineado a palabras... esto hace el proceso mas lento, pero hace que las cosas funcionen correctamente.

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Futu-block

Resusito este tema despues de mucho tiempo por no abrir uno nuevo

Tras denscargarme el ejemplo de DCelso veo que no puedo echar a andarlo en la wiz, sale directamente...
http://forum.bennugd.org/index.php?action=dlattach;topic=796.0;attach=526

sin embargo una pamplina como esta si funca: http://dl.openhandhelds.org/cgi-bin/wiz.cgi?0,0,0,0,19,206

el caso es que no se si me falta el runtime o si es un caso aislado que me gustaria que se tratase

Drumpi

Pues en este momento tampoco te puedo mirar lo que pasa directamente en la consola ^^U
¿Qué es lo que te dice el log de salida? ¿Algún error?
Si no sabes ver el log de salida, te copio/pego el script que uso con wiz en mis juegos para debug:

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

export LD_LIBRARY_PATH
export PATH

echo 2 > /proc/cpu/alignment

bgdc juego.prg >log1.txt 2>err1.txt
bgdi juego.dcb >log2.txt 2>err2.txt

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


Esto te debería generar un fichero de log y otro de error, tanto para la compilación como para la ejecución. Ahí te dirá los errores que te suelen salir en la consola de comandos, igual que si usaras Linux o Windows (como Wiz no es un sistema multiventana, es la única forma de ver el output de compilador e intérprete sin conectar la consola al PC mediante una red USB (que es la forma más rápida de probar cosas en la negrita, la verdad, pero un peñazo montar todos los cables, hacer la conexión...)).

Lo importante son las llamdas a BGDC y BGDI. Usalas de ejemplo para modificar tus ficheros GPE.
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)

Futu-block

me está a mi dando que compilar en linux tiene algo que ver...

yo suelo usar en la terminal de mi pc el tipico:
bgdc juego.prg (que me genera un .dcb)
bgdi juego.dcb  (que me sirve para jugar en pc)
y luego copio-pego en mi tarjeta sd ese dcb para ejecutarlo en el explorador que tiene la wiz (dentro de una carpeta con el runtime) que teoricamente debe de funcionar porque lo hace cualquier otro dcb de esa forma descargado desde openhandhels

no se que estoy haciendo mal, peeero dime como con que nombre debo de guardar el codigo que me has puesto
(creo que con el nombre del juego .gpe)

Drumpi

Puedes ponerle el nombre que te de la gana, da igual.
El nombre sólo es relevante si vas a crear un fichero .ini para ejecutarlo directamente desde el icono de la SD, en ese caso, tanto el ini, como el gpe y la carpeta deben tener el mismo nombre.

OJO: si has leido el código, las dos primeras lineas dicen claramente que el runtime está en una carpeta llamada "bgd-runtime", una carpeta por encima de donde se encuentra el gpe, el prg y el futuro dcb. Si el runtime lo tienes suelto en la misma carpeta que el gpe, deberías sustituir en ambas líneas "../bgd-runtime" por "." ... creo, lo suyo es que lo metas en una carpeta, fuera, como hago yo (y así usas el mismo runtime para todos los juegos de Bennu que tengas) o en una carpeta dentro, y así las líneas serían "bgd-runtime" simplemente.
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)