PDA

Ver la versión completa : Problema con FPG de 16bits



jean la montard
28/11/2008, 11:34
Buenas

Tras la perdida del codigo y de todos los sprites graficos en un formateo de mi anterior proyecto el remake del joust y gracias a las motivaciones de unos colegas me tiro a la piscina para este proyecto, tengo argumento , diseños de escenarios y desarrollo muy avanzado , falta pasarlo a graficos en pixels. El problema llega con pasar el engine que tengo en la cabeza a la compilacion XD

Caracteristicas que quiero que tenga
-El movimiento sera por cruceta
-Al contacte con objetos manipulables saltaria una ventana estilo al full throtle por lo que seria facil de jugar aunque no se tuviera pantalla tactil
-Inventario
-Al tener las acciones predefinida por los objetos con los que contactes no sera necesario la retahila de ordenes de los sistemas clasicos
-Suficientemente agil para manejar FPGs de 16 bits en una GP2X

Estado actual
-Estoy con lo basico basico me he atorado con las durezas , no consegui aplicarlas a un plataformas aqui menos XD
-Scroll aplicado
-flags aplicados
-Animaciones pendientes pero con la experiencia del joust
-Investigando para el inventario
-Pseudocodigo para el menu por objetos mas o menos hecho


_______________________________________________
PROBLEMA ORIGINAL ARREGLADO

Buenas
Tengo creado un FPG a 16 bits con el fpgedit y usando paint para crear los graficos como PNGs.
El problema llega que a pesar de definir el modo grafico como de 16 bits al compilar siempre me da el error y la unica manera de arrancar es ponerlos en modo 8 bits, sino fuera que con el paint soy incapaz de definir los colores con numeros para luego usarlos para el map_get_pixel ni os consultaria pero ...

Aqui teneis el codigo


//Pruebas engine aventura grafica 0.01

Program AG;
BEGIN
//cabecera
Load_fpg("ag1.fpg");
//Load_fnt(fuentes.fnt);
//Load_wav(musica);
Set_mode(320,240,16);
Set_fps(30,0);
//comienza la puesta en escena
Intro();

END
Process Intro();
BEGIN
Write(0,10,10,0, "Prueba engine Aventura grafica");
Write(0,10,20,0, "Pulsa espacio para empezar");
Write(0,10,30,0, "Pulsa control para salir en cualquier momento");
Loop
If (key(_space)); pantalla();End
If (key(_control)); EXIT();End
FRAME;
END
End

Process pantalla();
BEGIN
DELETE_TEXT(0);
Put(0,001,320,120);
Loop
If (key(_control)); exit(); end
frame;
END
END


Y aqui el error

http://img291.imageshack.us/img291/7051/errorfenixwp1.jpg

PROBLEMA SOLUCIONADO

juanvvc
28/11/2008, 11:47
No mucha idea, pero... ¿no puede ser que el modo por defecto de Fenix sea de 8 bits? Cambia el orden de tus comandos, primero set_mode(320,240,16); y luego el load_fpg

ArChEr
28/11/2008, 11:51
No mucha idea, pero... ¿no puede ser que el modo por defecto de Fenix sea de 8 bits? Cambia el orden de tus comandos, primero set_mode(320,240,16); y luego el load_fpg

Tiene toda la pinta de ser eso :)

jean la montard
28/11/2008, 11:53
ya funciona muchas gracias juanvvc, desde luego cada dia son mas estupidas las preguntas que hago xD

Hokutoy
28/11/2008, 12:55
ya funciona muchas gracias juanvvc, desde luego cada dia son mas estupidas las preguntas que hago xD

El que pregunta cosas estúpidas es un estúpido durante un instante.
El que no pregunta nada será un estúpido toda la vida.

:brindis:

jean la montard
03/12/2008, 13:28
//Pruebas engine aventura grafica 0.01

Program AG;
BEGIN
//cabecera
Set_mode(320,240,16);
Set_fps(30,0);
Load_fpg("Graficos.fpg");
//Load_fnt(fuentes.fnt);
//Load_wav(musica);
//comienza la puesta en escena
Intro();

END
Process Intro();
BEGIN
Write(0,10,10,0, "Prueba engine Aventura grafica");
Write(0,10,20,0, "Pulsa espacio para empezar");
Write(0,10,30,0, "Pulsa escape para salir en cualquier momento");
Loop
If (key(_space)); pantalla();End
If (key(_esc)); EXIT();End
FRAME;

END
End

Process pantalla();
BEGIN
DELETE_TEXT(0);
Start_scroll(0,0,1,0,0,0);
Put(0,001,320,120);
prota();
frame;
END

Process prota();
Private
Movimiento=5;
BEGIN
X=100;
y=150;
graph=003;
ctype=c_scroll;
Scroll.camera=id;

//if (map_get_pixel(0,3,25,50)==rgb(255,0,0));movimient o=0;ENd

Loop
If (key(_up));repeat y=y-movimiento;until(map_get_pixel(0,3,x,y)==rgb(255,0 ,0));movimiento=0;End
If (key(_down));repeat y=y+movimiento;until(map_get_pixel(0,3,x,y)==rgb(2 55,0,0));movimiento=0;End
If (key(_left));repeat x=x-movimiento;flags=0;until(map_get_pixel(0,3,x,y)==r gb(255,0,0));movimiento=0;End
If (key(_right));repeat x=x+movimiento;flags=1;until(map_get_pixel(0,3,x,y )==rgb(255,0,0));movimiento=0;End
Frame;
END
END




¿porque se cuelga este codigo? imagino que el problema estara en las durezas ...

Drumpi
04/12/2008, 20:02
¿Puede ser porque cuando pulsas espacio se crean cientos de procesos pantalla(), que llaman a cientos de scrolls y a cientos de procesos prota?
Cuando se cuelgue y no de tiempo a ver nada, usa say(string), esto escribirá la cadena de texto que hay dentro en el fichero stdout.txt que se genera automáticamente. Así sabrás por donde ha pasado la ejecución y te ayudará a acotar el problema.

jean la montard
05/12/2008, 01:42
Muchas gracias Drumpi , mañana probare lo que me dices y otras formas alternativas que he visto en tutos ademas agregare mas cosillas al "motor" ...

Lo dicho mañana mas y mejor no porque es imposible xDDD

masteries
05/12/2008, 17:10
Lo dicho mañana mas y mejor no porque es imposible xDDD

No te preocupes si a día de hoy no te aclaras mucho, al principio es normal, pero ya verás como dentro de algún tiempo te sorprendes a tí mismo con las cosas que vas a hacer. Y en Fénix el progreso del aprendizaje es rápido.

Segata Sanshiro
05/12/2008, 19:05
Con el primer problema que planteas nos damos cuenta de la importancia de leer los mensajes de error :D