PDA

Ver la versión completa : ¿Problemas con alguna función? Postea aquí :)



Puck2099
14/01/2006, 04:08
Hola,

Abro este hilo para recopilar información sobre las funciones "conflictivas" en el Fenix de la GP2X.

Por favor, si veis alguna función que funcione bien en la GP32 y no en la GP2X, please, postead aquí para centrarme en examinarla en busca de fallos.

Muchas gracias :brindis:

Jhonnystorm
14/01/2006, 05:04
puck, se me cuelga exactamente cuando llega estas instruccion de write:

write(fichero2, 155, 50, 4, "A.- COMENZAR");
write(fichero2, 158, 100, 4, "B.- MINIJUEGOS");
write(fichero2, 150, 150, 4, "L.- CREDITOS");
write(fichero2, 150, 200, 4, "R.- SALIR");
write(fichero2, 280, 230, 4, "v.-0.4");
frame;

fichero2 es una variable que contiene la fuente que utilizo, he ido instruccion por instruccion hasta llegar a estas asi que no hay duda que al menos a mi se me cuelga ahi.

Puck2099
14/01/2006, 05:13
puck, se me cuelga exactamente cuando llega estas instruccion de write:

write(fichero2, 155, 50, 4, "A.- COMENZAR");
write(fichero2, 158, 100, 4, "B.- MINIJUEGOS");
write(fichero2, 150, 150, 4, "L.- CREDITOS");
write(fichero2, 150, 200, 4, "R.- SALIR");
write(fichero2, 280, 230, 4, "v.-0.4");
frame;

fichero2 es una variable que contiene la fuente que utilizo, he ido instruccion por instruccion hasta llegar a estas asi que no hay duda que al menos a mi se me cuelga ahi.

¿Se cuelga o se sale al menú de la consola?

Por otro lado, ¿ese write escribe en disco o en la pantalla?

Jhonnystorm
14/01/2006, 05:17
se sale al menu de la consola y ese write escribe en la pantalla con la fuente indicada.

Jhonnystorm
03/02/2006, 23:30
veo que este post tiene poco moviemiento :confused: , bueno voy a aportar mi granito. :D

Puck como dije he hecho pruebas con la funcion write en fenix y he conseguido averiguar por que se sale al menu de la consola: Te recuerdo:

write(fichero2, 155, 50, 4, "A.- COMENZAR");
write(fichero2, 158, 100, 4, "B.- MINIJUEGOS");
write(fichero2, 150, 150, 4, "L.- CREDITOS");
write(fichero2, 150, 200, 4, "R.- SALIR");
write(fichero2, 280, 230, 4, "v.-0.4");
frame;

en este caso cuando ejecuto un programa y llega a la funcion write se cuelga (vuelve al menu de la consola) he probado el centrado (en el ejemplo anterior el numero 4) y los centrados de texto funcionan bien el problema es el fichero de la fuente, he probado a escribir la funcion sin llamar a la fuente y funciona ok:

ejemplo; write(0, 155, 50, 4, "A.- COMENZAR");

pues nada, puck espero que me contestes, ya que esta fuente iba perfectamente en gp32, gracias ;)

Puck2099
04/02/2006, 03:56
veo que este post tiene poco moviemiento :confused: , bueno voy a aportar mi granito. :D

Puck como dije he hecho pruebas con la funcion write en fenix y he conseguido averiguar por que se sale al menu de la consola: Te recuerdo:

write(fichero2, 155, 50, 4, "A.- COMENZAR");
write(fichero2, 158, 100, 4, "B.- MINIJUEGOS");
write(fichero2, 150, 150, 4, "L.- CREDITOS");
write(fichero2, 150, 200, 4, "R.- SALIR");
write(fichero2, 280, 230, 4, "v.-0.4");
frame;

en este caso cuando ejecuto un programa y llega a la funcion write se cuelga (vuelve al menu de la consola) he probado el centrado (en el ejemplo anterior el numero 4) y los centrados de texto funcionan bien el problema es el fichero de la fuente, he probado a escribir la funcion sin llamar a la fuente y funciona ok:

ejemplo; write(0, 155, 50, 4, "A.- COMENZAR");

pues nada, puck espero que me contestes, ya que esta fuente iba perfectamente en gp32, gracias ;)

¿Podrías pasarme el fichero .cdb y el código fuente junto a los archivos necesarios para compilarlo y ejecutarlo, please?

No necesito todo el fuente de tu juego, solo lo necesario para que llegue hasta el punto en que peta, así puedo aprovechar el cable serie-usb y hacer un poco de debugging con el gdb para ver qué es lo que casca :)

Saludos

Jhonnystorm
04/02/2006, 04:26
¿Podrías pasarme el fichero .cdb y el código fuente junto a los archivos necesarios para compilarlo y ejecutarlo, please?

No necesito todo el fuente de tu juego, solo lo necesario para que llegue hasta el punto en que peta, así puedo aprovechar el cable serie-usb y hacer un poco de debugging con el gdb para ver qué es lo que casca :)

Saludos

claro que si puck, pero los archivos los tienes colgado en tu pagina :confused: , en cuanto al codigo fuente te lo paso por aqui va:

Program PULPLIFE;
Global

FICHERO1;
FICHERO2;
FICHEROMAP;
MUSICA;
MUSICA2;
magiasong;
magiasong2;
utilsong;
utilsong1;
utilsong2;
utilsong3;
utilsong4;
utilsong5;
utilsong6;
disps;
song; // canal song //
song2; // canal song2 //
angulo; //ya se sabe//
fuerza; //para minired//
hp=100;// toques pulpo//
hpini=100; //toques del pulpo inicial //
mp=10; //magia//
mpini=10; //magia inicial//
exp=0; // experiencia//
expn=1; // primer nivel//
a=150; // control anterior x para color dureza pantalla//
b=150; // control anterior y para color dureza pantalla//
xx; // segundo control de posicion//
yy; // segundo control de posicion//
numacuario; // puntuacion acuario//
numclones; // puntuacion clones//
numred; // puntuacion red//
nitem; // numero item //
perlas;
savedata1[25];
savedata2[2];
Byte dp=0; // desplazamiento disparo//
Byte bomb;
Byte sardinas;
Byte wisky;
Byte toque=3; // daño en modo acuario //
Byte pantalla=1; // numero de fase//
Byte hech; // tipo de hechizo //
Byte restap; //controlador volver a fase anterior//
Byte monsters=5; //numero de mounstrios por fase//
Byte llaves=0; //numero de llaves en posesion//
Byte def=1; //defensa//
Byte atk=1; //ataque//
Byte niv=1; //nivel//
Byte matk;
Byte code; //codigo de superenemigo//
Byte n; // numero control superenemigo//
Byte ide; // variable multiusos de comprobacion //
Byte fire;
Byte atm; // daño ataque magia//
Byte magias; //numero de magias disponibles//
Byte veces; // para proceso repite//


Begin

fade_on();
set_mode(M320X240);
set_fps(30, 0);
define_region (1, 0, 0, 1000, 1000);
define_region (2, 0, 0, 320, 240);
FICHERO1=load_fpg("nuevo.fpg");
FICHERO2=0; //load_fnt("LETRA.FNT");//
ficheromap=load_fpg("fase1.fpg");
MUSICA=load_wav("niv.wav");
MUSICA2=load_song("song1.s3m"); play_song(musica2, -1);
magiasong=load_wav("whip.wav");
magiasong2=load_wav("rayo.wav");
DISPS=load_wav("disp.wav");
//UTILSONG=load_wav("llave.wav");//
UTILSONG1=load_wav("llave2.wav");
UTILSONG2=load_wav("esfuerzo.wav");
UTILSONG4=load_wav("v002.wav"); //miau//
UTILSONG3=load_wav("v003.wav"); //daño//
UTILSONG5=load_wav("v004.wav"); //bomba//
UTILSONG6=load_wav("splash.wav"); //splash//
intro();
End

Process intro();
Private
Byte cont;
Begin
start_scroll(0, ficheromap, 3, 0, 2, 0);
Loop
If (cont=>200) Break; End
cont++; Frame;
End
stop_scroll(0); fade_off(); Frame;
inicio();
End

Process inicio()
Begin
dp=2; hp=100; hpini=100; exp=0; expn=1; a=0; perlas=0; sardinas=0;
wisky=0; b=150; pantalla=56; restap=0; monsters=5; llaves=0;
def=1; atk=1; mp=10; niv=1; code=0; n=0; fire=0; hech=1;
mp=10; mpini=10; toque=3; matk=1; magias=5; angulo=0; nitem=0;

let_me_alone(); fade_on(); Frame;
write(fichero2, 155, 50, 4, "A.- COMENZAR");
write(fichero2, 158, 100, 4, "B.- MINIJUEGOS");
write(fichero2, 150, 150, 4, "L.- CREDITOS");
write(fichero2, 150, 200, 4, "R.- SALIR");
write(fichero2, 280, 230, 4, "v.-0.4");
Frame;
timer[0]=0;
While (timer[0]<100) Frame; End

si necesitas algo mas ya sabes donde estoy :brindis:

Puck2099
04/02/2006, 21:01
He copiado el código que pegas en un archivo de texto, pero no me deja compilarlo, me da error al pasarle el fxc:


Error in file pulplife.prg at line 1: END expected (EOF)

¿No falta algo?

Saludos

Jhonnystorm
04/02/2006, 21:09
espera puck, que te lo preparo, es que se queda un proceso abierto y por eso te da error, en seguida te envio la fuente para que te compile bien :brindis:

Puck2099
04/02/2006, 21:23
espera puck, que te lo preparo, es que se queda un proceso abierto y por eso te da error, en seguida te envio la fuente para que te compile bien :brindis:

Vale, gracias :)

Jhonnystorm
04/02/2006, 21:31
ahi va, ten en cuenta que es un fragmento de programa, lo he compilado y va bien, pero no pasa del menu del juego, y ya sabes, para cualquier cosa mas aqui toi ;)


Program PULPLIFE;
Global

FICHERO1;
FICHERO2;
FICHEROMAP;
MUSICA;
MUSICA2;
magiasong;
magiasong2;
utilsong;
utilsong1;
utilsong2;
utilsong3;
utilsong4;
utilsong5;
utilsong6;
disps;
song; // canal song //
song2; // canal song2 //
angulo; //ya se sabe//
fuerza; //para minired//
hp=100;// toques pulpo//
hpini=100; //toques del pulpo inicial //
mp=10; //magia//
mpini=10; //magia inicial//
exp=0; // experiencia//
expn=1; // primer nivel//
a=150; // control anterior x para color dureza pantalla//
b=150; // control anterior y para color dureza pantalla//
xx; // segundo control de posicion//
yy; // segundo control de posicion//
numacuario; // puntuacion acuario//
numclones; // puntuacion clones//
numred; // puntuacion red//
nitem; // numero item //
perlas;
savedata1[25];
savedata2[2];
Byte dp=0; // desplazamiento disparo//
Byte bomb;
Byte sardinas;
Byte wisky;
Byte toque=3; // daño en modo acuario //
Byte pantalla=1; // numero de fase//
Byte hech; // tipo de hechizo //
Byte restap; //controlador volver a fase anterior//
Byte monsters=5; //numero de mounstrios por fase//
Byte llaves=0; //numero de llaves en posesion//
Byte def=1; //defensa//
Byte atk=1; //ataque//
Byte niv=1; //nivel//
Byte matk;
Byte code; //codigo de superenemigo//
Byte n; // numero control superenemigo//
Byte ide; // variable multiusos de comprobacion //
Byte fire;
Byte atm; // daño ataque magia//
Byte magias; //numero de magias disponibles//
Byte veces; // para proceso repite//


Begin

fade_on();
set_mode(M320X240);
set_fps(30, 0);
define_region (1, 0, 0, 1000, 1000);
define_region (2, 0, 0, 320, 240);
FICHERO1=load_fpg("nuevo.fpg");
FICHERO2=load_fnt("LETRA.FNT");
ficheromap=load_fpg("fase1.fpg");
MUSICA=load_wav("niv.wav");
MUSICA2=load_song("song1.s3m"); play_song(musica2, -1);
magiasong=load_wav("whip.wav");
magiasong2=load_wav("rayo.wav");
DISPS=load_wav("disp.wav");
//UTILSONG=load_wav("llave.wav");//
UTILSONG1=load_wav("llave2.wav");
UTILSONG2=load_wav("esfuerzo.wav");
UTILSONG4=load_wav("v002.wav"); //miau//
UTILSONG3=load_wav("v003.wav"); //daño//
UTILSONG5=load_wav("v004.wav"); //bomba//
UTILSONG6=load_wav("splash.wav"); //splash//
intro();
End

Process intro();
Private
Byte cont;
Begin
start_scroll(0, ficheromap, 3, 0, 2, 0);
Loop
If (cont=>200) Break; End
cont++; Frame;
End
stop_scroll(0); fade_off(); Frame;
inicio();
End

Process inicio()
Begin
dp=2; hp=100; hpini=100; exp=0; expn=1; a=0; perlas=0; sardinas=0;
wisky=0; b=150; pantalla=56; restap=0; monsters=5; llaves=0;
def=1; atk=1; mp=10; niv=1; code=0; n=0; fire=0; hech=1;
mp=10; mpini=10; toque=3; matk=1; magias=5; angulo=0; nitem=0;

let_me_alone(); fade_on(); Frame;
write(fichero2, 155, 50, 4, "A.- COMENZAR");
write(fichero2, 158, 100, 4, "B.- MINIJUEGOS");
write(fichero2, 150, 150, 4, "L.- CREDITOS");
write(fichero2, 150, 200, 4, "R.- SALIR");
write(fichero2, 280, 230, 4, "v.-0.6");
Frame;
Loop
Frame;
If (key(_control)) Break; End
If (key(_alt)) Return; End
If (key(_backspace)) Return; End
If (key(_tab)) exit(); End //pantalla=20; fases();//
End
play_wav(disps,0);
delete_text(all_text);
write(fichero2, 155, 50, 4, "L.- NUEVA PARTIDA");
write(fichero2, 158, 100, 4, "R.- CARGAR");
Loop
Frame;
If (key(_backspace)) Break; End
If (key(_tab)) Return; End
End
fade (0, 0, 0, 1);
While (fading);Frame; End
delete_text(all_text);
End

Puck2099
04/02/2006, 21:35
¿Pero llega a cargar el menú o casca antes?

Por otro lado, cambiando lo de la fuente que comentaste antes, ¿qué haría?, ¿llegaría a mostrar el menú que antes no mostraba?

Saludos

Jhonnystorm
04/02/2006, 21:53
te comento, el programa casca antes de visionar el menu del juego, si cambias lo de la fuente que te comento se veria el menu pero con las letras por defecto del fenix, vamos que no se colgaria, para verlo solo tienes que cambiar esta linea:

FICHERO2=load_fnt("LETRA.FNT");

por esta otra:

FICHERO=0;

si lo cambias veras las letras por defecto sin fuente.

espero que te sea de ayuda :brindis:

Puck2099
04/02/2006, 23:21
Efectivamente, con la fuente puesta me devuelve el error:

Tipo de letra incorrecto (-1)

Voy a ver si puedo solucionarlo, porque es un error nuevo...

Gracias por la ayuda :)

Jhonnystorm
04/02/2006, 23:39
Efectivamente, con la fuente puesta me devuelve el error:

Tipo de letra incorrecto (-1)

Voy a ver si puedo solucionarlo, porque es un error nuevo...

Gracias por la ayuda :)

de nada hombre a mandar, y animo que estoy deseando ver tus mejoras [wei5]

Puck2099
05/02/2006, 01:28
de nada hombre a mandar, y animo que estoy deseando ver tus mejoras [wei5]

Acabo de probar lo que te falla del Pulplife en el PC y me da el mismo error, así que descarto que sea cosa del port...

¿Has probado desde Windows o Linux a ver si te funciona bien?

Jhonnystorm
05/02/2006, 05:15
pues puck, en el pc me funciona perfectamente y en la gp32 tambien, de hecho he puesto el pulplife en gp2x sin la fuente y ahora va tambien (lento y tal pero va), no se me dejas a colores, es que es imprimir con la fuente y es cuando se resetea, has puesto el programa con todos los archivos de mi version 0.4?
siento marearte pero es que estoy seguro de que no va por esa funcion..... :(

Puck2099
05/02/2006, 05:24
pues puck, en el pc me funciona perfectamente y en la gp32 tambien, de hecho he puesto el pulplife en gp2x sin la fuente y ahora va tambien (lento y tal pero va), no se me dejas a colores, es que es imprimir con la fuente y es cuando se resetea, has puesto el programa con todos los archivos de mi version 0.4?
siento marearte pero es que estoy seguro de que no va por esa funcion..... :(

Sí, si sé que no va por esa función, pero es que esa función no "casca", sino que se sale diciendo que la fuente no es correcta, pero me pasa tanto en la gp2x como en el pc...

Jhonnystorm
05/02/2006, 05:35
esta noche te preparo los archivos de la version y el ejecutable con el condigo y asi lo pruebas, la fuente la carga perfectamente en pc y en gp32, a lo mejor se me escapa algun archivo y por eso no te va, para mañana te lo paso revisado y le echas un vistazo si quieres y puedes :brindis:

Jhonnystorm
05/02/2006, 08:53
ya tienes los archivos que te prometi por mail

Puck2099
10/02/2006, 07:25
esta noche te preparo los archivos de la version y el ejecutable con el condigo y asi lo pruebas, la fuente la carga perfectamente en pc y en gp32, a lo mejor se me escapa algun archivo y por eso no te va, para mañana te lo paso revisado y le echas un vistazo si quieres y puedes :brindis:

Vale, ya la tengo funcionando.

Antes de nada, la GP2X corre bajo Linux y éste es un sistema que distingue entre mayúsculas y minúsculas. En el código de ejemplo que me pasaste (y supongo que en el final que usas para el Pulplife también) tienes lo siguiente:


FICHERO2=load_fnt("LETRA.FNT");

Pues bien, el sistema busca por dicho archivo en mayúsculas y, al no encontrarlo, peta. El problema es que al copiar los archivos en la SD, estos pasan a estar todos en minúsculas (supongo que por el sistema de archivos VFAT) y por eso si no haces la llamada con el nombre en minúsculas te petará.

Yo he probado a copiar dicho archivo en minúsculas y cambiar la llamada y funciona perfectamente la demo, pero al no tener el código del completo no puedo probarlo en la GP2X (en PC, bajo Linux, sí he visto que funciona bien) con el cambio, así que, please, cámbialo tú y me cuentas :)

Saludos

Jhonnystorm
10/02/2006, 23:28
puck, tenias razon, era simplemente por estar en mayusculas, ahora va perfectamente, gracias por todo. :brindis:

bleim
24/02/2006, 05:57
Hola a todos.
Portando un juego de lucha, que espero sacar en nada, me he dado cuen que la funcion ABS no va bien. ABS saca el valor absoluto de un numero. En mi programa uso enteros positivos y negativos, no reales.
¿Podeis probarla a ver si a vosotros os va bien?
Compila perfectamente, pero funcionar parece que no va bien.

Un saludo!

bleim
24/02/2006, 06:10
He tenido que cambiar esto:

danyo=abs(100-id_player1.vida);

Por esto otro:

IF(100>=id_player1.vida) danyo=100-id_player1.vida;
ELSE danyo=id_player1.vida-100;
END

Y ahora si funciona, ya que obviamente el abs lo hago yo dependiendo que cual sea mayor para quedarme siempre con la cantidad positiva.

<---- ---- ---- ---- ---- ---- Nuevo mensaje ---- ---- ---- ---- ---- ---->
Puckkkkkkkkkk

Mi codigo tiene muchos abssssssss. (cunde el pánico).

El problema son cosas como esta:

IF(abs(id_player1.x-id_player2.x)<90 AND rand(0,100)>85)
.........
END

A ver que hago para emular el abs ... :(

Puck2099
24/02/2006, 16:28
Vale, lo tendré en cuenta, a ver si este finde puedo mirar qué es lo que pasa.

Saludos

bleim
24/02/2006, 16:32
Vale, no te preocupes, voy a sustituir los abs como pueda (tampoco son tantos, 12 o asi) pero el codigo queda mas feo.

¿No se iba a publicar una nueva version del port de fenix?
Si quieres te mando un privi con mi correo y pruebo lo del abs en el nuevo port, que quizá funcione bien.

Puck2099
24/02/2006, 16:34
Vale, no te preocupes, voy a sustituir los abs como pueda (tampoco son tantos, 12 o asi) pero el codigo queda mas feo.

¿No se iba a publicar una nueva version del port de fenix?
Si quieres te mando un privi con mi correo y pruebo lo del abs en el nuevo port, que quizá funcione bien.

Sí, se va publicar una nueva versión del port de Fenix, pero eso ya depende de Craig y Guyfawkes :D

Pásame el mail y te lo mando, pero no puedes hacerlo público antes que yo, ¿vale? :brindis:

Drumpi
24/02/2006, 22:58
Oye, bleim ¿y por qué no creas una funcion nueva para hacer la conversion? la llamas abs2 y como parámetro el numero, no es tan dificil:

function abs2(dato)
begin
if (dato<0) dato=-dato; end
return (dato);
end

ya esta, ahora sustituyes abs por abs2 XD

bleim
25/02/2006, 04:34
Cierto cierto!!
Pero ya es tarde, ya los he cambiado todos or sendos IF's
jejejeje.

Bueno, quizá después lo vuelva a cambiar!

Puck2099
25/02/2006, 04:38
Oye, aunque sea sencillo cambiarlo por una función y ya está, no dudéis en decirme todo lo que falla, que eso me puede ayudar mazo a solucionar problemas en juegos de los que no tengo el código fuente ni forma de obtenerlo...

Drumpi
25/02/2006, 06:21
Eso es obvio. No te preocupes, que en cuanto sepa como hacer un archivo de registro te dire todos los problemas que me da mi conversor de Venturer para la negrita :D

Rivroner
13/03/2006, 16:15
Alguien sabe si algo de lo que uso en este mini ejemplo no funciona aún, es que he probado de todo para hacerlo fncionar en la GP2X y no hay manera, en el PC va perfecto :(
/////////////////////////
program miprimerfondo;

private
int id1;
int holden;
end

begin
set_mode(320,240,16);
id1=load_png("refinery.png");
put_screen(0,id1);
holden=50;
write(0,holden,210,1,"soy holden");
frame (5000);
end
//////////////////////////////////////

Gracias de antemano por contestar :)

bleim
13/03/2006, 20:08
A ver, no te va pero... ¿que es lo que ocurre exactamente? ¿se vuelve al menu? ¿tienes todos los archivos donde tocan? ¿como tienes el gpe?

Yo lo que veo raro en ese programa es el uso de PRIVATE. PRIVATE se usa para definir variables que solo se van a usar en una funcion/proceso determinado y no en el resto del programa. Tu lo usas precisamente como variables privadas del programa principal, cosa que yo nunca hago, pero tampoco sabria decirte si es incorrecto. yo esas variables las hago globales. Otra cosa es que has puesto un END como cerrando el PRIVATE y no es necesario.

A parte si vas a usar graficos de 16 bits debes indicarselo al programa antes de definir la resolución.

Es decir, yo haria esto:

/////////////////////////
program miprimerfondo;

global
int id1;
int holden;

begin
graph_mode=mode_16bits;//graficos a 16 bits (debe ir antes de set_mode)
set_mode(m320x240);//resolucion

id1=load_png("refinery.png");
put_screen(0,id1);
holden=50;
write(0,holden,210,1,"soy holden");
frame (5000);
end
//////////////////////////////////////

Rivroner
13/03/2006, 21:22
Pues a lo mejor no me funciona por no decirle lo de la definición,pero es que al menos en el de PC, me sale por defecto esa definición.
E sunm ejemplo d eun tutorial modigicado a mi antojo, pero no he cambaido nada clave.Lo del private el tio del emu lo usa así, yo es que no tengo ni idea de Fenix, pero el del tuto se supone que si :)No sé.
Y estoy seguro de que en la SD lo tengo todo bien, pues los ejemplos que vienen con el port de Puck me funcionan, y lo único que hago es editar un gpe como dice Puck y punto.
Pero todo lo que compilo yo no me furula :(
Ahora pruebo lo que me has dicho, gracias :)
Si no me funcionase os pediría por favor que me pasáseis exactamente vuestra carpeta del Fenix 0.84 de PC, por si fuese eso.


EDITO===>Nada :( Sigue sin tirarme en la GP2X lo que compilo yo.Yo creo que es cosa de mi FENIX del PC.Que me pase alguien su FENIX exactamente como lo tiene instalado por favor, a ver si así lo arreglo. :confused:

Jhonnystorm
14/03/2006, 00:10
esta version de fenix va perfectamente:brindis: , ahi va.....

Rivroner
14/03/2006, 00:26
esta version de fenix va perfectamente:brindis: , ahi va.....
Gracias Jhonny, pero esto que me pasas ya lo probé, lo encontré más atrás del hilo, que se lo pasaste a un compañero al que se le solucionó el tema, pero a mi no me funciona.A ver, a mi el FENIX d ePC y ame va perfecto, y claro al probar con esto que me pasas em sigue yendo prefecto, pero ni compilando con el mio ni con este me va en la GP2X :(
Ya no sé que hacer.Puedo hacer mi proyecto en PC, pero yo quiero jugarlo cuando lo acabe en la GP2X, y no me va :confused:
Gracias de todas formas :)

Puck2099
14/03/2006, 00:26
Y esta otra por si usas Linux.

bleim
14/03/2006, 00:29
Pero vamos a ver. Si no nos das mas datos no podemos ayudarte.
Dinos exactamente que haces, todos los pasos, porque alguno falla y no podemos adivinar cual de todos es. Dinos también que ocurre al intentar ejecutar el programa.

Rivroner
14/03/2006, 00:44
Pues se queda la pantalla de la GP2X en negro.Y no puedo hacer nada, me toca apagar la consola.
Es que he probado de todo, y estoy casi seguro de que lo hago bien.He probado a ponerlo todo en minúsculas, tanto en el código como las carpetas del FENIX, como los archivos que le paso, todo.
Los ejemplos que vienen funcionan perfectos, todo lo que hago en el PC tb.
Dime que quieres que te diga y te lo digo, pero es que no sé que pasos quieres que te cuente.
Lo único más delicado que es lo de editar el archivo de uno de los ejemplos no es que sea dificil, esto es lo que hago:
*Cojo este :
************************************
#!/bin/sh
cd runtime
./fxi ../games/shoot/shoot.dcb
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu
************************************

Y lo transformo en este:

********************
#!/bin/sh
cd runtime
./fxi ../games/nuevo/nuevo.dcb
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu
************************************

Y creo la correspondiente carpeta nuevo con el dcb nuevo dentro y la foto que quiero que se ejecute.Sólo es un sencillo programa que quería probar antes de empezar con lo que tengo pensado, pero no lo consigo, llevo todo el fin de semana y toy medio loco perdio ya. [Ahhh]

Puck2099
14/03/2006, 00:57
Mándamelo todo, con su estructura de directorios tal cual la tengas en la SD a fenix@gp32wip.com y miro a ver qué le puede estar pasando.

Saludos

Rivroner
14/03/2006, 01:02
Ahora te lo envío, gracias Puck.Así descartamos que sea o no de mi compilador de PC.O a lo mejor es que lo hago mal, ya me dices algo ;)
Gracias a todos por intentar ayudarme ^_^

bleim
14/03/2006, 01:11
Quiza sea la gp. A veces copia mal los archivos. A mi me ocurre lo que tu dices cuando copia algun fpg mal, pero obviamente tu no usas. ¿Has probado a quitar las lineas de carga del fondo y solamente escribir el texto?

Tambien puede que te hallas rallado y estes usando el fxi de linux/windows en vez del fxi de la gp2x. Obviamente si los ejemplos funcionan es porque el fxi de esos ejemplos es el de la gp2x, pero asegurate de que usas el mismo y que esta donde toca.

Ahora que estas empezando es mas sencillo crear una carpeta y copiar ahi todo lo que necesitas.

Rivroner
14/03/2006, 01:19
El Runtime es el que viene en la beta 3 de Puck, yo sólo paso a la GP2X el dcb y el png.
Trabajo en Windows XP.
No sé que será.

Jhonnystorm
14/03/2006, 01:38
Gracias Jhonny, pero esto que me pasas ya lo probé, lo encontré más atrás del hilo, que se lo pasaste a un compañero al que se le solucionó el tema, pero a mi no me funciona.A ver, a mi el FENIX d ePC y ame va perfecto, y claro al probar con esto que me pasas em sigue yendo prefecto, pero ni compilando con el mio ni con este me va en la GP2X :(
Ya no sé que hacer.Puedo hacer mi proyecto en PC, pero yo quiero jugarlo cuando lo acabe en la GP2X, y no me va :confused:
Gracias de todas formas :)

si sigues sin aclarante pon aqui el codigo y le doy un vistazo a ver en que falla, por ayudar que no quede:rolleyes:

bleim
24/03/2006, 05:55
Hola a todos!

Tengo un problemilla con los writes.

El codigo es algo asin: al mover el raton se nos informara de la posicion en pantalla y del nombre de la zona del mapa sobre la que se encuentra (para lo cual usamos un mapa de durezas cargado previamente en el proceso principal)

-----------------------------------
PROCESS raton()
BEGIN

t1=write_int(0,30, 220, 4, OFFSET colorp);
t2=write_int(0,30, 210, 4, OFFSET mouse.x);
t3=write_int(0,70, 210, 4, OFFSET mouse.y);
t4=write(0,10, 210, 4, "x:");
t5=write(0,50, 210, 4, "y:");

LOOP
//movimiento del raton en la pantalla ppal -> map
if(key(_left)) mouse.x-=2; END
if(key(_right)) mouse.x+=2; END
if(key(_up)) mouse.y-=2; END
if(key(_down)) mouse.y+=2; END

if(mouse.x<=2) mouse.x=3; END
if(mouse.x>=316) mouse.x=315; END
if(mouse.y<=2) mouse.y=3; END
if(mouse.y>=200) mouse.y=199; END

//la variable colorp guarda en todo momento el color detectado
//bajo el punto 0 del raton respecto al mapa de durezas
//del mapa
colorp=map_get_pixel(fpg_durezas,1,mouse.x,mouse.y );

SWITCH(colorp)
CASE 1: delete_text(texto_prueba3); texto_prueba3=write(0,60, 220, 4,"Mar"); END
END

//ahora veamos si detectamos alguna unidad terrestre amiga
IF(collision(TYPE ejercito_amigo_terrestre))
delete_text(texto_prueba1);
texto_prueba1=write(0,100,230,0,"ejerc amigo terrest");
END

//ahora veamos si detectamos alguna unidad terrestre amiga
IF(collision(TYPE ejercito_enemigo_terrestre))
delete_text(texto_prueba2);
texto_prueba2=write(0,100,230,0,"ejerc enemigo terrest");
END


FRAME;
END

END
---------------------------

Bien, al ejecutar esto, que es un proceso llamado desde el programa principal, todo va bien, al mover el raton se refleja la posicion y ha escrito en la pantalla 'x' e 'y' (ademas ANTES escribe en otro sitio unos textos por la pantalla).

En cuanto movemos el raton en la zona del mapa de durezas de color 1 (es decir, entra en el switch) TODOS los textos se borran y a continuacion se escribe el nombre del pais de la zona del mapa de durezas de color 1.

El problema es que no se porque me borra todos los otros textos.

saludos

bleim

Jhonnystorm
24/03/2006, 06:12
no tendras en alguna otra parte del programa delete_text (all_text)?:confused:

Drumpi
25/03/2006, 05:42
Es muy sencillo, el problema esta en esta linea:
CASE 1: delete_text(texto_prueba3); texto_prueba3=write(0,60, 220, 4,"Mar"); END

En la primera ejecucion del loop, al llegar a la declaracion esta y ser el color 1, haces un delete_text(texto_prueba3), y texto_prueba3 en ese momento vale 0, pues aun no le has asignado ningun valor. Si tenemos en cuenta que all_text es una constante que vale 0, pues ahi lo tienes.

bleim
25/03/2006, 20:09
Eres un tio grande Drumpi. Despues de la siesta lo reviso jeje.

---------

Vale, ya esta arreglado. Efectivamente era eso, all_text es igual a 0 y por eso se borraban. La de cosas que aprende uno!!

Lo he arreglado asi:

...
IF(texto_prueba3!=0) delete_text(texto_prueba3); END
SWITCH(colorp)
CASE 1: delete_text(texto_prueba3); texto_prueba3=write(0,60, 220, 4,"Mar"); END
END
...

Drumpi
27/03/2006, 06:51
Estoooo.... ¿el if no deberia ir dentro del case, antes del texto_prueba3=write...?

bleim
27/03/2006, 16:29
No, veras, eso que he puesto es un ejemplo, y el SWITCH real de mi programa tiene unas 30 entradas distintas, pero como para todas el IF es comun, pues lo saco fuera y listo.

Drumpi
01/04/2006, 06:46
No, si yo lo digo porque si texto_prueba3 valiera cero, aparte de saltarse el if, volveria a dar el problema de antes en el switch (a menos que hayas quitado lo del delete_text) :P

GPCisco
17/12/2007, 00:05
He detectado, despu&#233;s de realizar algunas pruebecillas con algunos S3M e IT's m&#237;os, que con la funcion PLAY_SONG se reproducen con ciertas diferencias en la versi&#243;n de PC de Fenix 0.92 y en el port de GP2X. Tiene alg&#250;n sentido que las comente, o puck se limit&#243; a portar algunas funciones de reproducci&#243;n ya existentes sin entrar en como funcionan dichos formatos?

Curiosamente algunas cosas van mejor en el port y otras en la versi&#243;n de PC.

Quer&#237;a preguntar tambi&#233;n si se dar&#237;a soporte a los midis en alg&#250;n momento, pues me parece que le&#237; en alg&#250;n lugar que no, pero no recuerdo donde :)

Drumpi
17/12/2007, 05:06
Hasta donde se, el sonido depende de las SDL, y estas han ido cambiando a lo largo del tiempo, incluso hubo problemas en una de las &#250;ltimas versiones y se cogieron SDL_mixer m&#225;s antiguas. Tambien puede ser que tengas puesta la frecuencia de muestreo por defecto a 22050Hz, se puede poner a 44100Hz con una variable global, pero no recuerdo su nombre (si compilas en modo debug, es decir, con la opcion -g en el FXC y abres la consola, al poner globals obtendr&#225;s una lista, usa av.pag. y re.pag. para verla, la reconocer&#225;s enseguida).

Los midis, segun dec&#237;an, era bastante improbable, porque no hay tarjeta de sonido. Me explico, los sonidos se guardan en memoria f&#237;sica, generalmente con los drivers, y es un archivo de unos 30MB o por ahi, demasiado grande para a&#241;adirlo a los programas de GP2X. Obviamente en PC no hay problema.
Ya que estas &#191;has probado el formato MOD? a mi no me va.

GPCisco
17/12/2007, 10:09
Lo de los midis no sé como va, aunque las músicas del port del SCUMMVM se escuchan en formato midi y no creo que hayan incluido ningún tipo de sample en el port, pues suenan como midis de toda la vida.

En cuanto al problema que me refería, lo de diferencias no me refería a calidad de muestreo, sino a cosas tipo que unos instrumentos que deben sonar por derecha o izquierda no lo hacen donde toca (en el port, en el de PC eso está correcto) o que ignoran un comando que salta a una partitura concreta (eso lo ignora el de PC, el port de gp2x lo hace bien xD).

A mí los mods me van correctamente con load_song, por lo menos un par que he probado.

Drumpi
10/10/2008, 21:07
Ya la hemos liado, Puck:
He estado portando mi nuevo motor de scroll tileado y me ha dado un segmentation fault. He hecho pruebas y he aislado la linea conflictiva a:
[tscroll].i_mapa=alloc(14200);

El valor del alloc da igual, y es un valor correcto. Antes funcionaba, así que o hay un fallo con asgnar memorias grandes, o no es capaz de hacerlo sobre un tipo personalizado pasado por puntero, es decir: sea

type t_scroll
int x;
(...)
int pointer i_mapa;
end

y la cabecera del proceso sería algo como:

process load_tmap (t_scroll pointer tscroll)

Si lo vas a revisar y lo quieres tener más clarito, me lo dices y te lo mando con una miniguia sobre el motor y el fallo. En PC funciona.
Hasta entonces, el 90% de mis proyectos para gp2x quedan congelados :S

Puck2099
10/10/2008, 21:43
¿Ese 14200 son 14 megas de ram?

< - >
Ah, supongo que usas la versión 0.92a, ¿no?

Drumpi
11/10/2008, 00:52
Si, la Ultimate Fenix, y su compatible en PC 092a. Y no, son bytes, esa funcion exige un número de bytes a reservar. En realidad es un cálculo de ancho*alto*sizeof(int), pero he comprobado que el valor que se le pasa es correcto, y es ese.
Ya he comprobado dolorosamente que usar más de 8MB de gráficos hace que todo se venga abajo, así que ahorro el máximo de recursos con la negrita. Sigue en pie lo de pasarte los archivos si necesitas algo más específico, y te vuelvo a recordar que hay una version cvs de la 093preview4 por si quieres arreglar bugs sin alterar la compatibilidad del dcb.

Drumpi
12/01/2009, 17:48
Nuevo bug detectado: set_wav_volume no funciona, y es más, cuando intentas aplicarlo a un segundo canal de forma simultanea, el programa casca y se vuelve al menu.
Sin embargo, con set_distance esto no ocurre, que hace algo similar pero funciona distinto.

chemaris
12/01/2009, 18:05
esa funcion no la he probado, pero set_channel_volume y set_song_volume funcionan sin problemas