Re: [GAME]: COLUMS (Juego de MegaDrive)
Posted: Sat Jun 19, 2010 3:19 am
Lo quise jugar, elegí las cuatro gemas, le dí al Enter y al toque me tiro un error de LOAD_PCX. Toda la mala suerte yo con este juego 
Code: Select all
CHDIR("JOYAS");
GET_DIRINFO("*.PCX",_NORMAL);//con solo poner esto, se arregla, Actualiza la lista U_U Si es cierto,
BO=-1;
REPEAT
BO++;
dir2=DIRINFO.NAME[JOYAS[BO]];//esto no hay que cambiarlo,ya esta bien
FILE_JOYAS[BO]=LOAD_PCX(dir2);
UNTIL(BO==DIAMANTES_JUGARAN-1);
CHDIR("..");
Code: Select all
GET_DIRINFO("*.PCX",_NORMAL);
REPEAT
BO++;
X+=31;
IF(X=>31*20);
X=BO[1];
Y+=31;
END
dir2=DIRINFO.NAME[BO];
graph=LOAD_PCX(dir2);
IDJ[BO]=GRAPH_N(graph,X,Y,Z-75);
DIR="JOYAS ENCONTRADAS:"+ITOA(BO)+" SELECIONE LAS JOYAS QUE VA A UTILIZAR: JOYAS:0/"+ITOA(DIAMANTES_JUGARAN);
FRAME;
UNTIL(BO==DIRINFO.FILES-1 OR BO==279);
CHDIR("..");
Esta en GEmix modules.txt???CicTec wrote: En 16/32bits no hay paleta, de todas formas es sencillo, tienes que convertir el color inicial de la paleta a 16 o 32bits y luego usar la funcion MAP_SET_COLOR/MAP_SET_PIXEL
Aqui tienes, veras que no se queda la cadena vacia(visualmente)....deberia desaparecer de la pantalla si no quedan mas cadenas.CicTec wrote: Puedes por favor hacer un pequeño PRG que simule el problema para probar ?
Code: Select all
program cadena;
global
string DIR2;
BYTE BO=1;
begin
DIR2="NOMBRE";
write(0,160,120,4,DIR2);
BO=1;
REPEAT
IF(ASCII>64 AND ASCII<91 AND BO==0 AND strlen(DIR2)<16);BO=1;
DIR2+=ASCII;
END
IF(KEY(14)AND BO==0 AND strlen(DIR2)>0);BO=1;
DIR2--;
END
IF(BO==1 AND NOT KEY(_ENTER)AND NOT KEY(14) AND ASCII==0);
BO=0;
END
FRAME;
UNTIL(KEY(_ENTER)AND BO==0);
IF(strlen(DIR2)==0);
EXIT("CADENA VACIA:"+DIR2,0);
ELSE
EXIT("CADENA LLENA:"+DIR2,0);
END
END
Sisimulatorone wrote:Esta en GEmix modules.txt???CicTec wrote: En 16/32bits no hay paleta, de todas formas es sencillo, tienes que convertir el color inicial de la paleta a 16 o 32bits y luego usar la funcion MAP_SET_COLOR/MAP_SET_PIXEL
Ya veo, pues no es un bug de las cadenas sino de WRITE con la 5.6 funciona bien, en la 5.7 para hacer optimizaciones se genero este bug, ya lo he corregido, gracias por el reportsimulatorone wrote: Aqui tienes, veras que no se queda la cadena vacia(visualmente)....deberia desaparecer de la pantalla si no quedan mas cadenas.Code: Select all
program cadena; global string DIR2; BYTE BO=1; begin DIR2="NOMBRE"; write(0,160,120,4,DIR2); BO=1; REPEAT IF(ASCII>64 AND ASCII<91 AND BO==0 AND strlen(DIR2)<16);BO=1; DIR2+=ASCII; END IF(KEY(14)AND BO==0 AND strlen(DIR2)>0);BO=1; DIR2--; END IF(BO==1 AND NOT KEY(_ENTER)AND NOT KEY(14) AND ASCII==0); BO=0; END FRAME; UNTIL(KEY(_ENTER)AND BO==0); IF(strlen(DIR2)==0); EXIT("CADENA VACIA:"+DIR2,0); ELSE EXIT("CADENA LLENA:"+DIR2,0); END END
Monta un ejemplo como el anterior para las cadenas por favor, asi puedo testarlo rapido si pasa algo mal, en todo caso, los datos de DIRINFO son globales y se mantienen (o almenos deberia).simulatorone wrote:Se ve que la ultima vez, no lo probe de jugar...y peta a la primera...
Pues considero un bug interno de Gemix,
YA que todos los datos de
DIRINFO.NAME
Se pierden o hace cora rara...
por eso
Linea:796Debo volver a llamar el comando de busqueda de archivos, por que? no deberia estar en memoria, o son solo datos locales,Code: Select all
CHDIR("JOYAS"); GET_DIRINFO("*.PCX",_NORMAL);//con solo poner esto, se arregla, Actualiza la lista U_U Si es cierto, BO=-1; REPEAT BO++; dir2=DIRINFO.NAME[JOYAS[BO]];//esto no hay que cambiarlo,ya esta bien FILE_JOYAS[BO]=LOAD_PCX(dir2); UNTIL(BO==DIAMANTES_JUGARAN-1); CHDIR("..");
Yo creia que eran globales DIRINFO.
Ademas que ya lo llamo yo ese comando para buscar los diamantes que queremos jugar...
Linea:445Por que, despues a la hora de jugar.... se estropea la estrucura de DIRINFO. y me devuelve una cadena erronea :SCode: Select all
GET_DIRINFO("*.PCX",_NORMAL); REPEAT BO++; X+=31; IF(X=>31*20); X=BO[1]; Y+=31; END dir2=DIRINFO.NAME[BO]; graph=LOAD_PCX(dir2); IDJ[BO]=GRAPH_N(graph,X,Y,Z-75); DIR="JOYAS ENCONTRADAS:"+ITOA(BO)+" SELECIONE LAS JOYAS QUE VA A UTILIZAR: JOYAS:0/"+ITOA(DIAMANTES_JUGARAN); FRAME; UNTIL(BO==DIRINFO.FILES-1 OR BO==279); CHDIR("..");
y no puede cargar ese fichero, por que esa cadena erronea no existe.
no lo entiendo.
El codigo de Colums es muyyy antiguo, y tiene muchos bugs, y el codigo no esta simplificado y compacto.
Se programo en los años 2002-2003
Y es un lio seguirlo y arreglar algo...
Aun no me fio al 100% del DIRINFO.
Cuando se pierde o se actualiza esos datos?
Siempre que llamamos al comando de busqueda de archivos, debe actualizarse.
Y mantener esos datos hasta otra consula o al salir del juego.
Si, tu codigo funciona bien, el fallo es de Gemix (bueno era, ya esta corregido).simulatorone wrote: Sobre el fallo de Write:
Entonces no es fallo de programacion de mi codigo? de alguna manera me alegro que no lo sea, pero al jugador puede causar confusiones.creeiendo que no se puede borrar la ultima letra...Hasta que se arregle ese bug de Write.
Aun que encontremos fallos de Gemix...
Todo esto es por mejorar y perfecionar Gemix!![]()
Es global, deberia funcionar bien, pero quizas escapo algo, en cuanto tengas el test, lo mirare a ver que pasa.simulatorone wrote: Del dirinfo. creare un mini .prg simulando esa supuesta perdida de la tabla de Dirinfo.
Nunca pense que era Local la tabla de datos de dirinfo.