Después de varios días peleándome con mi código y reduciéndolo al mínimo, creo que he dado con un bug (ultima versión de bennu Nov 21 2012).
Al crear un scroll en una región definida y definir cualquier tipo de scale_mode (menos SCALE_NONE) y posicionar un proceso fuera de la región, la ejecución termina con Exit code -1073741819.
import "mod_video";
import "mod_screen";
import "mod_scroll";
import "mod_map";
import "mod_text";
import "mod_debug";
begin
scale_mode=SCALE_SCALE2X;
set_mode(320,240,8);
set_fps(60,0);
region_define(1,0,0,320,240);
start_scroll(0,0,map_new(1,1,8),0,1,3);
actor();
loop
frame;
end;
end;
process actor();
begin
ctype = c_scroll;
region = 1;
graph = write_in_map(0,"*",0);
x = 341;
loop
frame;
end;
end;
Lo curioso es que sólo afecta a la coordenada X, puedo poner cualquier Y. Y curioso también que puedo poner cualquier X negativa y me la acepta, e incluso algunas cifras superiores de X no casca, como x=1000 por ejemplo, o x=800 ¿?¿?¿?¿?¿?¿?¿?
Deberias usar un bennu mas reciente, lo de out of region creo que se arreglo en la r166, ya ha llovido bastante
Ups!! pensé que la versión descargable de Downloads era la mas reciente. Sorry, buscaré la ultima revision.
Saludos y gracias!
El bug me sucede con la r307, que es la release oficial para descargar. Revisando los cambios posteriores a éste, no parece que en sucesivas revisiones se haya podido corrigir.
No obstante, para probarlo con la ultima versión, ¿tendría que bajarme el source y compilarlo? Menuda pereza preparar todo el entorno.... jeje
creo que hace unas semanas o meses vi que habia un error ahi... pero no estoy seguro....
edit: ah, no, yo creo que lo vi en scale_resolution
Si, había un post de Marzo de un bug en scale_resolution y scrolls, pero se podía resolver creando una región distinta a la 0.
Este parece otro caso distinto.....
0 no es una region valida para el scroll.
La región 0 sería la pantalla completa ¿no?
si...
el tema es que si se puede usar, en realidad se usa cuando no se define... el tema es que he visto codigos (creo que era el reporte) donde intentaban cambiar el tamaño de la region 0.
Ok, entiendo. Entonces no tiene nada que ver con mi problema.
Casi un año después, este "presunto" bug de Bennu vuelve a aparecer en mi código y creo haber descubierto la solución (aunque no la causa, por eso sospecho que es un bug).
Como comento en el primer post, si usas scale_mode y posicionas la coordenada X de un proceso fuera de la región, Bennu casca y termina la ejecución con error.
¿La manera de que no casque? Fijando el restore_type a COMPLETE_RESTORE
Con lo que, el código que puse que fallaba, añadiéndole esa línea , funciona perfectamente:
import "mod_video";
import "mod_scroll";
import "mod_map";
import "mod_text";
import "mod_debug";
begin
scale_mode=SCALE_SCALE2X;
restore_type = COMPLETE_RESTORE;
set_mode(320,240,8);
set_fps(60,0);
region_define(1,0,0,320,240);
start_scroll(0,0,map_new(1,1,8),0,1,3);
actor();
loop
frame;
end;
end;
process actor();
begin
ctype = c_scroll;
region = 1;
graph = write_in_map(0,"*",0);
x = 341;
loop
frame;
end;
end;
La pregunta es ¿por qué? Tiene pinta de ser un bug, ya que, no tiene sentido que me obligue a setear COMPLETE_RESTORE, ni tampoco que el fallo sólo se dé cuando modifico la coordenada X.
Habría que indagar un poco porque , la solución, la he encontrado casi un año después y de casualidad, con lo que puede ser un quebradero de cabeza para más de uno.
Saludos,
prueba la version r270 o alguna inferior y dime si tienes el bug
Quote from: FreeYourMind on May 16, 2015, 09:04:05 PM
prueba la version r270 o alguna inferior y dime si tienes el bug
He probado la r270 y no falla.
Lo que me mosquea es que con la ultima versión ¡no falla en todos los equipos! Aun con sistemas operativos iguales. Entiendo que sera un tema de acceso a memoria y cada equipo según tenga el mapa de memoria organizado, le afectara de una manera u otra...
Yo te recomiendo la r270 para compilar en PC para todos los sistemas, lo de la region splinter lo resolvio en versiones anteriores (lo pedi yo cuando estaba portando el juego Skull a bennu).
No recomiendo las ultimas versiones por el tema del blitter, del cual splinter nunca quiso decir a partir de que version fallaba, habra que ver el historico de versiones una a una para saldar este tema de una vez.
Wow! pero eso es ir muy para atrás ¿no? Revisando los commit de la 270 a la última revisión, hay cosas que se han arreglado y/o añadido y eso supondría no utilizarlas.
Probaré ir subiendo de revisiones a ver con cual falla y así poder determinar que modificación lo provoca.
Gracias Free!
vale mantenos informado, por cierto donde esta el link con todas las revisiones para windows ?
En la sección de descargas:
http://www.bennugd.org/downloads/old/
He probado hasta la revisión 300 y no aparece el bug. No he podido comprobar el resto hasta la 315 ya que en la sección de descargas solo llega hasta la 300.