Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: blostec on September 17, 2009, 07:09:28 PM

Title: Dudas con Bennu para WIZ
Post by: blostec on September 17, 2009, 07:09:28 PM
Hace un par de dias que difruto de la maravillosa WIZ y los emuladores, pero ahora quiero empezar a jugar mis propios juegos en ella así que me asaltan las dudas. Puedo compilar mis proyectos en Windows y ejecutarlos en la WIZ incluyendo el .dcb y la version openwiz de Bennu? Es posible generar un ejecutable para WIZ? Lo tengo que compilar en una distribución de Linux? Gracias por vuestra atención. Saludos!
Title: Re: Dudas con Bennu para WIZ
Post by: Drumpi on September 17, 2009, 11:56:02 PM
Si, al igual que fenix, los DCB son portables entre versiones.
No, no existen ejecutables en WIZ tal como lo conoces (tampoco recuerdo el poder hacer ejecutables en windows, sólo los DCB). Cuando descargas el zip de Bennu para WIZ, hay una carpeta llamada bgd-runtime, en el está el BGDI de WIZ, que no es ejecutable como tal, pero como si lo fuera. Tienes que ejecutarlo como si lo hicieses en windows por linea de comandos, sólo que en lugar de linea de comandos usas un "script". Como te dije en el otro foro, abre los .GPE con un editor de texto compatible con el formato UNIX (notepad++ por ejemplo) de los dos juegos de ejemplo y verás cómo se hace.
No tienes que compilarlo en una distribución Linux, vale cualquiera, aunque te recomiendo que hagas como los ejemplos de splinter y compiles el prg directamente en la WIZ (si, tambien tienes el BGDC en el runtime) para evitarte problemas de versiones incompatibles y errores raros entre distribuciones.

Y enhorabuena por tu compra.
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on September 18, 2009, 12:23:29 AM
felicitaciones por tu compra...

es posible generar un ejecutable para wiz, tal cual se puede para windows o para linux... claro que los modulos quedan fuera... y lo del script es solo una forma, se puede hacer de muchas formas... configurando el sistema con ldconfig, o si no queres tocar el sistema (cosa que recomiendo) entonces usar los scripts...

en resumen, la version openwiz goza de todas las maravillas de las otras versiones (salvo modo 320x240x16 u 8, nomas)
Title: Re: Dudas con Bennu para WIZ
Post by: Drumpi on September 18, 2009, 04:29:27 PM
¿Eh? ¿no hay modo 8 ni 16 bits? ¿Entonces cómo hago mis juegos en modo7? :'(
Title: Re: Dudas con Bennu para WIZ
Post by: splinter_work on September 18, 2009, 06:38:10 PM
yo dije eso? lee bien... please...

aclaro, solo soporta modos 320x240 16 y 8 bits... 32 y otras resoluciones no.
Title: Re: Dudas con Bennu para WIZ
Post by: Drumpi on September 18, 2009, 11:01:13 PM
Ah, vale, entonces lo entendí al revés, que susto.
(Aunque eso echa por tierrra otro proyecto aparte :P)
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on September 18, 2009, 11:31:35 PM
lamentablemente es limitacion del hardware o de la SDL
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on September 21, 2009, 09:37:38 AM
I'm Back with new's doubts :)

Hay forma de saber en que máquina se esta ejecutando el dcb ?

Uno de mis nuevos ports va ser version dual, o sea, va estar optimizada para correr en PC y en Wiz, ya que tampoco existia versión para PC (sólo DOS).
Pues eso, me gustaria de comprobar al principio de una forma (sin ser chapuza, que de esa forma ya se hacerlo ;)) de saber si se ejecuta en PC o Wiz, creo recordar que Fenix si tenia funciones internas que lo permitian.

Esto porque quiero darle al usuario en la versión PC la opcion de hacer swith entre fullscreen o modo windows, ya que el juego va correr en 320*240.

Gracias.
Title: Re: Dudas con Bennu para WIZ
Post by: DCelso on September 21, 2009, 09:44:45 AM
Hola Free, mira yo no tenía ni idea de si existía o no, pero me fui a la wiki (http://wiki.bennugd.org) y puse search operating system y me encontré lo siguiente:
http://wiki.bennugd.org/index.php?title=OS_codes
Tooma, una variable global id_os lleva esa información, ahora no se si ya habrá una constante para especificar que es WIZ, supongo que splinter habrá pensado en eso y sí la habrá.

Bueno te digo mi forma de encontrar la info, para que te pueda servir para futuras preguntas y vayas más rápido a la solución sin esperar una respuesta.
Saludos.
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on September 21, 2009, 10:46:22 AM
Gracias. Ya lo miro.
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on September 21, 2009, 11:12:05 AM
Bueno, iba a buscar el post para poner las nuevas dudas, pero hay varios con titulos similares, así que las pongo aqui:

Estoy portando un juego de Div directamente a Bennu:

1 - Las funciones load() y save() para ficheros externos son distintas, como segundo parametro para Bennu tengo 2 situaciones que no se reconocen en Bennu:

No me reconoce 'mivariable' (que es un vector):

LOAD(lo_que_sea, &mivariable)
LOAD(lo_que_sea, OFFSET mivariable)
SAVE(lo_que_sea, &mivariable)
SAVE(lo_que_sea, OFFSET mivariable)

Si lo substituyo por

LOAD(lo_que_sea, mivariable)
SAVE(lo_que_sea, mivariable)

Compila, pero parece que Bennu peta despues al llamar la función.

Soluciones ?
(de todos modos despues pongo el código exacto, estoy en el curro y no lo tengo aqui)


2 - Cual seria lo equivalente a la funcion change_sound(...) de Div ??


Gracias.
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on September 21, 2009, 11:23:44 AM
Quote from: FreeYourMind on September 21, 2009, 09:37:38 AM
I'm Back with new's doubts :)

Hay forma de saber en que máquina se esta ejecutando el dcb ?

Uno de mis nuevos ports va ser version dual, o sea, va estar optimizada para correr en PC y en Wiz, ya que tampoco existia versión para PC (sólo DOS).
Pues eso, me gustaria de comprobar al principio de una forma (sin ser chapuza, que de esa forma ya se hacerlo ;)) de saber si se ejecuta en PC o Wiz, creo recordar que Fenix si tenia funciones internas que lo permitian.

Esto porque quiero darle al usuario en la versión PC la opcion de hacer swith entre fullscreen o modo windows, ya que el juego va correr en 320*240.

Gracias.

OS_ID

a la wiki hay que agregarle OS_GP2X_WIZ

---

el save es sin el offset

---

que tipo de variable tenes? por razones logicas dicha variable no puede contener punteros.
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on September 21, 2009, 11:38:56 AM
Son tablas (vectores).
Tampoco he visto muy bien lo que guardan, creo que es la estructura del nivel.
Cuando llegue a casa, si me arreglan internet (tengo el adsl caido no se porque) ya explico mejor el problema, se que en div la funcion tiene 3 parametros,

creo que se llama de esta forma (no me acuerdo bien):

LOAD(lo_que_sea, &mitabla, OFFSET tabla)

tampoco he visto para que utiliza 3, pero habra que ver porque en Bennu tiene menos parametros.
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on September 21, 2009, 12:07:42 PM
porque bennu no necesita 3 parametros...

el tamaño y el offset, ya los conoce internamente... eso si, tu vector no puede ser dinamico...
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on September 21, 2009, 01:09:57 PM
Entonces porque Bennu hace crash de esta forma:

LOAD(lo_que_sea, mivector) ??

que tendria que cambiar ?

Saludos.
Title: Re: Dudas con Bennu para WIZ
Post by: splinter_work on September 21, 2009, 06:07:48 PM

int vector[1000];

...

save( "nombre de archivo", mivector );

...

load( "nombre de archivo", mivector );
Title: Re: Dudas con Bennu para WIZ
Post by: blostec on September 21, 2009, 07:58:48 PM
Hay algo que hago mal cuando quiero ejecutar un .dcb en WIZ sin compilarlo en la consola.

Este es el contenido del .gpe:

#!/bin/sh
cd center
./bgdi center.dcb
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu

Al ejecutarlo se queda bloqueado.
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on September 21, 2009, 11:37:56 PM
puede ser algun bug o diferencia no controlada...

misma version del compilador e interprete?
Title: Re: Dudas con Bennu para WIZ
Post by: Drumpi on September 22, 2009, 02:52:17 AM
Prueba a sacar los datos a ver que te dice:

#!/bin/sh
cd center
./bgdi center.dcb >log.txt 2>error.txt
sync
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu

Tambien puede ser que te falten un par de lineas para definir el PATH y no se que más.
Y recomiendo no olvidar el sync en los scripts, es la instrucción que fuerza al SO a realizar las escrituras retardadas y esas cosas para poder desmontar la tarjeta sin peligro.
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on September 22, 2009, 08:43:58 AM
Quote from: splinter_work on September 21, 2009, 06:07:48 PM

int vector[1000];

...

save( "nombre de archivo", mivector );

...

load( "nombre de archivo", mivector );

Eso fue lo que puse, y Bennu peta. De cualquier forma lo tengo que mirar a lupa y ya te cuento.
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on September 22, 2009, 03:41:11 PM
por favor, pone un codigo de ejemplo... ya sabes como funciona esto y que tan rapido se resuelven los temas con un codigo...
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on September 23, 2009, 07:58:46 AM
Ya he mirado mejor este engorroso código. Lo que hace el crash no era eso (funciona bien por cierto) pero si un for para parar borrar sonidos.

Lo que no entiendo es que si no tienes sonidos (no lo has grabado, porque el fichero de la ruta no existe)y haces operaciones con el sonido, Bennu trata esas excepciones internamente y no te peta nuncsa, pero utilizando un for parece que si.

Mañana te pongo el código exacto.

Me han salido muchas más problemas en la ejecución del código que funcionaba perfectamente en DIV 1,
te pongo algunos que me recuerdo, esto lo tendre que mirar con más tiempo y ver porque salen los errores:

1 - Las animaciones que estan en vectores te pone gráficos con id's distintos a los definidos (al hacer el for pasa por gráficos que no estan definidos en el loop de esa animacion)

2 - Algunos Mapas de durezas que no funcionan, el protagonista al aparecer se cae al vacio, y sólo algunos objectos parece que lo sostienen en el escenario.

Ya te contare mas en detalle.
Saludos.
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on September 23, 2009, 11:17:37 PM
no peta de pedo...

si usas handles de sonido que no cargaron en operaciones de sonido, va a petar...

esperaremos los detalles...
Title: Re: Dudas con Bennu para WIZ
Post by: Drumpi on September 24, 2009, 02:27:06 AM
Splinter ¿tu no estabas tan ocupado que no te ibas a poder pasar por aqui? no estás tan activo pero sigues estando en todos lados ;D ;D ;D
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on September 24, 2009, 02:47:15 AM
si, no puedo ponerme a trabajar en el codigo... pero no puedo evitar pasar y responder...
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on September 24, 2009, 09:23:54 AM
Todo llegara heheh. Una cosa que me moskea, no se si ya os ha sucedido.

No es un problema de Bennu, pero si genérico de estos lenguages.

Estoy pasando uno de los ports a la mitad de resolución manualmente.
El rescalado automatico que trae Bennu es muy chulo, pero la verdad no se consigue el acabado gráfico que uno desea, ya que se pierde definición de gráficos y fuentes. Rescalar todos los gráficos a la mitad y asignar mitad de la resolución soluciona el problema, hay uno que otro gráfico que no queda bien al tranformarlo a la mitad de tamaño, pero se corrige con el editor de gráficos.

El problema es que se tienen que ajustar todas las coordenadas 'x' y 'y' tanto de posición como de deslocación.
Lo que ocurre es que si en el original tenemos posiciones impares o deslocamientos impares, ejemplo, y=233, x += 3, ..., no podemos poner la division exacta por 2, que seria y=116,5 y x += 1,5, esto no se permite porque se hacen arredondamientos y quedaria y=117, x += 2, que no es lo mismo, vamos.

Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on October 25, 2009, 09:03:33 AM
Reactivando la pregunta del change_sound...


Cual seria el equivalente a estas 2 funciones de DIV:

change_sound()
get_sound() ???


Como pondria algo similar a esto en Bennu:


1 - sound(sonido, get_sound(x, y), 256);


2 - change_sound(sonido2, get_sound(x, y), 256);






Title: Re: Dudas con Bennu para WIZ
Post by: DCelso on October 25, 2009, 10:59:43 AM
Supongo que así
http://wiki.bennugd.org/index.php?title=Play_wav

Program
include "mod_sound"
include "mod_key"
Private
    int wave[0];
    int canal;
Begin
    wave[0] = load_wav("my_wav1.wav");
    wave[1] = load_wav("my_wav2.wav");
    canal=256;
    play_wav(wave,0,canal);
    play_wav(wave,0,canal);
    While(!key(_esc))
        frame;
    End
    unload_wav(wave[0]);
    unload_wav(wave[1]);
End

Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on October 25, 2009, 12:06:08 PM
No DCelso, mi problema no es saber como ponerla a tocar, ya se que es distinto.

Lo que quiero es modificar el volumen del sonido tal como hace change_sound, y tambien el get_sound, que sirva como parametro de entrada al cambiar el volumen, tal como el ejemplo DIV que puse.

En un port que hice hace años en Fenix, lo que hice fue cambiar el volumen de algunos sonidos directamente en la musica con un editor audio.

En este caso queria hacerlo dinamicamente, como DIV lo hace.
Title: Re: Dudas con Bennu para WIZ
Post by: BoMbErLiNk on October 25, 2009, 01:32:38 PM
Para el volumen de los OGG, mod, etc :
set_song_volume(volumen);

Para el volumen de los wav :
set_channel_volume(canal,volumen);

Canal : -1 si quieres modificar el volumen de todos los canales a la vez, bennu genera 8 canales por defecto si mal no recuerdo.
Volumen : 0-127
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on October 25, 2009, 01:41:11 PM
Muchas gracias Bomber, fijate que busque por el function-list.txt y no lo encontre  ::)

Me falta ver lo del get_sound, ya ni me recuerdo de sus parametros de entrada, lo mirare en la ayuda de DIV a ver si me refresca la memória.
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on October 25, 2009, 01:46:50 PM
Upppss... si incluso lo tenia montado en mi funcion de volumen genérica para Wiz....

Lo bueno es que desconocia lo del parametro -1, fijate que estaba disminuyendo/aumentando el sonido con esto de forma genérica, como no provoca error si el canal no existe lo hacia de esta forma chapuzerá para modificar el volumen general:

set_channel_volume(0, vol);
set_channel_volume(2, vol);          
set_channel_volume(3, vol);
set_channel_volume(4, vol);
set_channel_volume(5, vol);
set_channel_volume(6, vol);
set_channel_volume(7, vol);
set_channel_volume(8, vol);
set_channel_volume(9, vol);


Ahora lo que tendre que hacer es ver el rango de volumen para div y bennu, si no son iguales tendre que calcular el valor equivalente en Bennu para un volumen similar....
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on October 31, 2009, 10:30:18 AM
Buenas.

Me gustaria saber como cambiar la frequencia de un sonido con Bennu, se encuentra entre estas funciones ??:

INT SET_PANNING(INTEGER, INTEGER, INTEGER)
INT SET_POSITION(INTEGER, INTEGER, INTEGER)
INT SET_DISTANCE(INTEGER, INTEGER)
INT REVERSE_STEREO(INTEGER, INTEGER)


Por ejemplo en DIV es com:

sound(<código del sonido>, <volumen>, <frecuencia>)

frequencia = 256: velocidad normal
frequencia < 256: más grave
frequencia > 256: más agudo

Grácias.

Title: Re: Dudas con Bennu para WIZ
Post by: Drumpi on October 31, 2009, 04:07:12 PM
Pues no, no se puede desde DIV2. Es una de las funciones que nunca se implementaron en Fenix/Bennu.
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on October 31, 2009, 04:38:10 PM
Joer, tendre que modificar los ficheros audio directamente ;)
Y que hace la SET_PANNING(INTEGER, INTEGER, INTEGER) ??
Title: Re: Dudas con Bennu para WIZ
Post by: Drumpi on October 31, 2009, 05:16:12 PM
Creo que modifica el volumen de los canales L y R para que suene más hacia la derecha o a la izquierda.
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on March 23, 2011, 03:05:39 PM
Quote from: FreeYourMind on October 31, 2009, 10:30:18 AM
Buenas.

Me gustaria saber como cambiar la frequencia de un sonido con Bennu, se encuentra entre estas funciones ??:

INT SET_PANNING(INTEGER, INTEGER, INTEGER)
INT SET_POSITION(INTEGER, INTEGER, INTEGER)
INT SET_DISTANCE(INTEGER, INTEGER)
INT REVERSE_STEREO(INTEGER, INTEGER)


Por ejemplo en DIV es com:

sound(<código del sonido>, <volumen>, <frecuencia>)

frequencia = 256: velocidad normal
frequencia < 256: más grave
frequencia > 256: más agudo

Grácias.




Vuelvo a desenterrar el tema.

Splinter necesitaria cambiar la frequencia de un sonido por codigo, algun dia lo tendremos implementado ? (O mas bien lo deseo ya xD)
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on March 23, 2011, 03:23:18 PM
Veo que Bennu la utiliza como Global:

Mix_OpenAudio(int frequency, Uint16 format, int channels, int chunksize); // SDL
               
// Global de 'mod_sound'
sound_freq = 22050;

Lo ideal era que se pudiera definir de forma independiente para cada sonido...
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on March 23, 2011, 08:58:34 PM
Quote from: FreeYourMind on March 23, 2011, 03:23:18 PM
Veo que Bennu la utiliza como Global:

Mix_OpenAudio(int frequency, Uint16 format, int channels, int chunksize); // SDL
               
// Global de 'mod_sound'
sound_freq = 22050;

Lo ideal era que se pudiera definir de forma independiente para cada sonido...

deciselo a Mr. SDL_Mixer...

aunque estoy pensando en cambiar de libreria de audio.
Title: Re: Dudas con Bennu para WIZ
Post by: FreeYourMind on March 23, 2011, 09:42:10 PM
Lo ideal es que pongas alguna mas de forma oficial y que la gente pueda incluso hacer el switch
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on March 23, 2011, 09:55:00 PM
switch de que?

si cambio algo, sera internamente, no puedo meter una lib a nivel bennugd con un api diferente... asi que a la gente no le tiene porque importar que se usa internamente.

se pueden agregar nuevas funciones, pero no romper compatibilidad.
Title: Re: Dudas con Bennu para WIZ
Post by: Drumpi on March 23, 2011, 11:53:04 PM
¿Es muy difícil acceder al buffer de audio en C y ponerlo a reproducir? nunca he trabajado con sonido en C y para estas cosas siempre he visto que se usan librerías.
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on March 24, 2011, 12:13:25 AM
C no tiene funciones de sonido, no hay una solucion generica para lo que preguntas, depende de la lib de sonido que uses o de la tarjeta de sonido, device o lo que sea, si quieres hacer algo mas directo.
Title: Re: Dudas con Bennu para WIZ
Post by: Drumpi on March 24, 2011, 12:29:47 AM
¿Entonces es cierto? ¿mikmod se apoya sobre SDL_mixer?
Es sólo por curiosidad, por saber las posibilidades que existen para generar audio en tiempo real. Ya sabes que tengo en una parte de la lista el tema de efectos de audio, por si alguna década lo puedo sacar :D
Title: Re: Dudas con Bennu para WIZ
Post by: SplinterGU on March 24, 2011, 12:32:11 AM
creo que es al reves, sdl_mixer, puede usar mikmod, pero la verdad que no estoy seguro... puede que este diciendo cualquier barbaridad.

creo que en SDL hay algunas funciones que permiten hacer algo de eso, o sea, manipular el buffer del audio antes de tocarlo.