BennuGD PSP

Started by DCelso, January 12, 2011, 12:01:56 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Goku jr

No se ve muy bien,pero a la espera de que alguien me ayude con la duda anterior,he hecho esta prueba :

http://www.youtube.com/watch?v=Ilna4cEVO6s

josebita

DCelso, pon el patch de los fuentes, porfi.

DCelso

Como dijo jack el destripador, vayamos por partes.

Quote from: Goku jr on January 13, 2011, 10:03:09 PM
Buenas!
tengo un problemilla con joy_button,la cosa esque nunca he utilizado esas funciones,tengo incluida la mod joy y los defines que dejo dcelso

y me dice joy_button undefined procedure
[code language="bennu"]LOOP
IF(joy_button(0,PSP_X_BUTTON));EXIT("",1);END
FRAME;
END
END
[/code]

Alguien me ilumina? gracias!!
Sorry goku, es joy_getbutton la función correcta.
De todas formas tengo montado otro script, para poder ejecutar los juegos tanto en psp como en pc, mapeando las keys, pero por algún motivo no me va en mi psp(creo que porque como la psp no tiene teclado casca por ahí, tal vez con un os_id se arregle, estoy en ello, pero mientra dejo aqui la info)

#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 key_joy(int id)
begin
if (joy_numjoysticks() >0 )
if (joy_getbutton(0,id))
          return 1;
    end
end
switch (id)
    case PSP_TRIANGLE_BUTTON:
    return key (_a);
    end
    case PSP_CIRCLE_BUTTON:
    return key (_s);
    end
    case PSP_X_BUTTON:
    return key (_d);
    end
    case PSP_SQUARE_BUTTON:
    return key (_f);
    end
    case PSP_L_BUTTON:
    return key (_z);
    end
    case PSP_R_BUTTON:
    return key (_x);
    end
    case PSP_SELECT_BUTTON:
    return key (_c);
    end
    case PSP_START_BUTTON:
    return key (_v);
    end
    case PSP_UP_BUTTON:
    return key (_up);
    end
    case PSP_DOWN_BUTTON:
    return key (_down);
    end
    case PSP_LEFT_BUTTON:
    return key (_left);
    end
    case PSP_RIGHT_BUTTON:
    return key (_right);
    end
end
return 0;
end

Así ahora solo tienes que llamar a key_joy en vez de a joy_getbutton y remapear las teclas si no te molan mucho.

Monstruos Diabólicos

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

DCelso

Por otro lado,
Quote from: josebita on January 14, 2011, 10:05:53 AM
DCelso, pon el patch de los fuentes, porfi.
Estoy en ello, estoy dejándolos perita y he cambiado algunas cosillas, en cuanto lo tenga os lo paso a splinter y a ti.

Splinter, acerca del .patch, puedes abrirlo con cualquier editor de texto, y ver la info, básicamente viene la siguiente info:
nombre de fichero
unas cuantas líneas que son iguales en ambos ficheros comparados
+ nuevas lineas a insertar
- líneas a eliminar
otras cuantas líneas que son iguales en ambos ficheros comparados

Siguiente fichero
.,,
Es decir, hay un + delante de las nuevas lineas a insertar y un - delante de las líneas a eliminar.
Así que es facil de interpretar, de todas formas intentaré resumirte los cambios.
Monstruos Diabólicos

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

DCelso

si prefieres, otra opción es pasarte los archivos modificados y tu compararlos con algún programa comparador de archivos que te guste.
Monstruos Diabólicos

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

laghengar

Gracias Dcelso por el comentario del traductor. No tengo ni idea de Portugués y me pareció convincente  ;D
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

SplinterGU

Quote from: DCelso on January 14, 2011, 02:15:43 PM
Como dijo jack el destripador, vayamos por partes.

Quote from: Goku jr on January 13, 2011, 10:03:09 PM
Buenas!
tengo un problemilla con joy_button,la cosa esque nunca he utilizado esas funciones,tengo incluida la mod joy y los defines que dejo dcelso

y me dice joy_button undefined procedure
[code language="bennu"]LOOP
IF(joy_button(0,PSP_X_BUTTON));EXIT("",1);END
FRAME;
END
END
[/code]

Alguien me ilumina? gracias!!
Sorry goku, es joy_getbutton la función correcta.
De todas formas tengo montado otro script, para poder ejecutar los juegos tanto en psp como en pc, mapeando las keys, pero por algún motivo no me va en mi psp(creo que porque como la psp no tiene teclado casca por ahí, tal vez con un os_id se arregle, estoy en ello, pero mientra dejo aqui la info)

#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 key_joy(int id)
begin
if (joy_numjoysticks() >0 )
if (joy_getbutton(0,id))
          return 1;
    end
end
switch (id)
    case PSP_TRIANGLE_BUTTON:
    return key (_a);
    end
    case PSP_CIRCLE_BUTTON:
    return key (_s);
    end
    case PSP_X_BUTTON:
    return key (_d);
    end
    case PSP_SQUARE_BUTTON:
    return key (_f);
    end
    case PSP_L_BUTTON:
    return key (_z);
    end
    case PSP_R_BUTTON:
    return key (_x);
    end
    case PSP_SELECT_BUTTON:
    return key (_c);
    end
    case PSP_START_BUTTON:
    return key (_v);
    end
    case PSP_UP_BUTTON:
    return key (_up);
    end
    case PSP_DOWN_BUTTON:
    return key (_down);
    end
    case PSP_LEFT_BUTTON:
    return key (_left);
    end
    case PSP_RIGHT_BUTTON:
    return key (_right);
    end
end
return 0;
end

Así ahora solo tienes que llamar a key_joy en vez de a joy_getbutton y remapear las teclas si no te molan mucho.



eso no te funciona, porque no estas mapeando el joys al teclado, sino que estas diciendo, si tal boton del joy esta pulsado entonces retorname si tal tecla esta pulsada.

lo que vos deberias hacer es algo diferente, directamente retorna la constante, o mejor te diria que actualices la jkeys.lib, que para eso la hice.

Quote from: DCelso on January 14, 2011, 02:19:19 PM
Por otro lado,
Quote from: josebita on January 14, 2011, 10:05:53 AM
DCelso, pon el patch de los fuentes, porfi.
Estoy en ello, estoy dejándolos perita y he cambiado algunas cosillas, en cuanto lo tenga os lo paso a splinter y a ti.

Splinter, acerca del .patch, puedes abrirlo con cualquier editor de texto, y ver la info, básicamente viene la siguiente info:
nombre de fichero
unas cuantas líneas que son iguales en ambos ficheros comparados
+ nuevas lineas a insertar
- líneas a eliminar
otras cuantas líneas que son iguales en ambos ficheros comparados

Siguiente fichero
.,,
Es decir, hay un + delante de las nuevas lineas a insertar y un - delante de las líneas a eliminar.
Así que es facil de interpretar, de todas formas intentaré resumirte los cambios.


conozco el formato el patch, pero preferia una explicacion de los cambios, no importa, dejalo, ya lo vere...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

Tarde, splinter :'(, ya te mandé la explicación en formato pdf. Espero que te guste y me des críticas constructivas :D.

Por otro lado no se como lees eso tu en mi código porque lo que yo veo es lo siguiente:

Si hay almenos un joystic, mira si está pulsado el boton con el identificador pasdo, retorna 1 y no sigas con el código de a continuación.

Sino, a traves del identificador de boton pasado devuelve el estado de la tecla asociada a dicho id.

devuelve  0. <<  cosa que nunca pasará a nos er que pases un id malo a la función.

Monstruos Diabólicos

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

SplinterGU

#68

   case PSP_CIRCLE_BUTTON:
    return key (_s);
   end


aca dice, si esta pulsado PSP_CIRCLE_BUTTON, entonces retorna el retorno de la funcion key con parametro _s, segun has dicho, no hay keys en PSP, por ende, esta funcion retorna 0, ya que key(_s) nunca dara un valor de pulsado.

edit: ya veo, primero detectas el joy, si no esta el joy usas key...

eso es demasiado hardcode, a mi me parece que deberias usar la jkeys.lib, pero bueno... esta bien...

con respecto al codigo monolitico, ya te respondi por mail algunas sugerencias, por ahora no lo incluire como oficial, creo que se podria hacer aun con menos cambios...

tengo que ver la version de josebita, que dice que esta menos prolija que la tuya... yo tenia entendido que josebita no habia cambiado mucho del codigo... quizas entendi mal o me hice una idea equivocada.

demas esta decir que te has mandado un muy buen trabajo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

pues no debería
Lo que tu dices solo pasaría si no pulsases ningun botón, pues para eso está el return 1 que hay antes que termina la ejecución de la función si se produjo la pulsación de cualquier boton.
¿No crees?

if (joy_numjoysticks() >0 )
if (joy_getbutton(0,id))
          return 1;
    end
end
Monstruos Diabólicos

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

SplinterGU

si, si... lo edite y lo puse como tachado, pero se ve que no salio el tachado...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on January 14, 2011, 04:38:55 PM
[...]
tengo que ver la version de josebita, que dice que esta menos prolija que la tuya... yo tenia entendido que josebita no habia cambiado mucho del codigo... quizas entendi mal o me hice una idea equivocada.

demas esta decir que te has mandado un muy buen trabajo.
La verdad es que la mía tiene un problema respecto a la de DCelso: Hay que andar cambiando los módulos uno a uno, que es un lío. Voy a ver cómo lo ha hecho él sin modificarlos, porque la verdad es que me facilitaría mucho la vida.

Quitando la modificación de los módulos, mi código lo que hace es definir los símbolos de los módulos en un array grande en el fichero core/includes/monolithic_includes.h (por cierto, he cambiado la extensión de los módulos ficticios en mi versión por ".fakelib" para que sea evidente que no se está intentando una carga real en la versión monolítica). Si os fijais, ese fichero tiene dos partes: una en la que se definen los símbolos necesarios unicamente para bgdrtm y otra con las cosas que usan bgdrtm y bgdi (nombres de funciones exportados, variables, constantes...). Lo hago así para no tener que compilar todos los símbolos dentro del bgdc. Ambos arrays tienen los símbolos de los módulos en el mismo orden.
Además he separado el core/include/loadlib.h en dos partes: una la que carga librerías de verdad y la otra que devuelve los símbolos monolíticos. Para poder trabajar con los mismos tipos que la versión "normal" lo que hago es redefinir dlibhandle de lo que es a:
[code language="c"]typedef struct
{
    int index;
} dlibhandle ;
[/code]Donde, obviamente, index es el índice del módulo dentro del array de monolithic_includes.h
De mi forma de hacerlo no me gusta nada el tema de andar teniendo que modificar los módulos, pero por lo demás -de memoria- creo que no tengo mayor queja.

SplinterGU

josebita, el trabajo de anda modificando a mano, podes resolverlo con un script-precompilador y un define, el define para deshabilitar las variables de los modulos y el script que tome las variables y genere la struct que vos decis que llenas a mano.

eso seria lo que yo haria, no me gusta eso de tener que meter muchos cambios en los fuentes, menos hardcodear cosas como nombres de librerias y demas, en el interprete y compilador.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

#73
splinter, ya la hice mas liviana, ahora simulo completamente a loadlib. como debería ser, asi que solo hay que hacer un ifdef para seleccionar loadlib.h o sim_loadlib.h, en cuanto se requiere para ser monolítico o no.
Los demás cambios que te puse en el código como podrás observar son para soportar psp y gp2x así que no hay mas remedio que introducirlos.
Adjunto el nuevo patch para que me digais tu y josebita que os parece. (ya que soys los doctos en compilar bennu eh) :D
Monstruos Diabólicos

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

danielt3

Quote from: DCelso on January 14, 2011, 06:55:42 PM
splinter, ya la hice mas liviana, ahora simulo completamente a loadlib. como debería ser, asi que solo hay que hacer un ifdef para seleccionar loadlib.h o sim_loadlib.h, en cuanto se requiere para ser monolítico o no.
Los demás cambios que te puse en el código como podrás observar son para soportar psp y gp2x así que no hay mas remedio que introducirlos.
Adjunto el nuevo patch para que me digais tu y josebita que os parece. (ya que soys los doctos en compilar bennu eh) :D


O arquivo tem senha (password)?
---

Daniel