BUG en Scale_mode y proceso fuera de region

Started by warrior_rockk, July 28, 2014, 11:50:08 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

warrior_rockk

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 ¿?¿?¿?¿?¿?¿?¿?

FreeYourMind

Deberias usar un bennu mas reciente, lo de out of region creo que se arreglo en la r166, ya ha llovido bastante

warrior_rockk

Ups!! pensé que la versión descargable de Downloads era la mas reciente. Sorry, buscaré la ultima revision.


Saludos y gracias!

warrior_rockk

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


SplinterGU

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
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

warrior_rockk

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.....

SplinterGU

0 no es una region valida para el scroll.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

warrior_rockk

La región 0 sería la pantalla completa ¿no?

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

warrior_rockk

Ok, entiendo. Entonces no tiene nada que ver con mi problema.

warrior_rockk

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,

FreeYourMind

prueba la version r270 o alguna inferior y dime si tienes el bug

warrior_rockk

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...

FreeYourMind

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.

warrior_rockk

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!