Cambios desde la r335 a la r342 (estaba debiendo detalles de algunas releases, ahora las incluyo aca)
r335
[bugfix] fix en dirty rects
[bugfix] crash con mod_debug
r338
[bugfix] put_screen bug
r339
[bugfix] mapas transparentes en 32bits (bitmap_analize bug)
r342
[bugfix] variables globales en libmode
[bugfix] si un argumento de una funcion/proceso tenia el mismo nombre de una variable global, esa variable global se usaba dentro de la funcion/proceso. Ahora los parametros nombrados igual que una variable global son considerados locales a esa funcion/proceso. (no modifican la global)
[feature] Se agrega soporte de archivos de configuracion (.ini)
Soporte de archivos de configuracion:
Deben ser nombrados igual que el dcb pero con la extension .ini, por ejemplo, si nuestro dcb se llama "mijuego.dcb", el archivo de configuracion debe ser nombrado "mijuego.ini"
un ejemplo de archivo de configuracion:
# comentario 1
; comentario 2
; Seccion [bennugd] es usada por bennugd
; todas las keys son opcionales
[bennugd]
video.mode=320x240x32 ; <ancho>x<alto>[x<profundida>]
video.fullscreen=0 ; 1=pantalla completa - 0=modo ventana
# video.scale_resolution=800x600 ; <ancho>x<alto>
# video.scale_resolution_aspectratio=0 ; 0 = normal
; 1 = izquierda
; 2 = abajo
; 3 = derecha
# video.scale_resolution_orientation=0 ; 0 = ajusta la imagen a la ventana
; 1 = preserva el aspecto
(http://forum.bennugd.org/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABs0lEQVQ4jY2SP4viQBiHX0UQWz/AXb+VX8Iu/YqFhdhcd5BKEOTKC9jJFYrFgo3FIjYiCRauhTCQDMp4bJFklzCuLJLOWNj8rpDMJt7u7Q08xQzze953/hAR0el4QJLw8KR4fXkE/Wtch01zjP6gmxLsd9uPJafjAf1BF82WjmZLR61eRa1eVfNmS4cMxP8JksGk6FPB6XjAii1Qq1fBBYMMBL79+InvDIrbB0CzIpSmQHF0RnF0vkiTFxZX7A+6MOzwU0FxdEZKYJpj1fp1eO5KzF0JzYreF/iekzr77QMUhh2q1zDsUIULPQl6fXkEFww53cWKLWCaY3DBVMuaFWHuSsT7fM/5W5DTXYUMBGQgUJoCpelFst9tcc84DDuE7znQrAiFnrwIkuGY/W6rBIYdQgYC7RmHZkXwPQf3jL8JiCglISLKVCaqzfhZfc9RcMFwc/eMfGd9EWQbS+R0F9nGEtnGEpnKBJnKJFWxPNygPNygPePggqE942nBdTjG9xyUhxvVcqEnsWILrNjiTfCRJN9ZI99Zp8LxWsy73ztTmYCI6ObuGV/7Tym+/PqtICL6A7F/dNYyWabFAAAAAElFTkSuQmCC)
Copado lo de los .ini.
Setea un valor inicial que después en el codigo podemos cambiar? Podemos definir variables o algunas otras cosas?
Interesante, que valores soporta el ini?
hay que hacer algo desde el lado del codigo para leer/escribir valores?
Saludos!
Quote from: gecko on August 09, 2017, 03:32:42 PM
Copado lo de los .ini.
Setea un valor inicial que después en el codigo podemos cambiar? Podemos definir variables o algunas otras cosas?
gracias
estos son iniciales, despues se pueden cambiar en el codigo con set_mode, etc.
video.mode
video.fullscreen
estos son fijos, una vez seteados no se cambian desde codigo, se supone que se setean para ajustar un juego a la pantalla de un dispositivo:
video.scale_resolution
video.scale_resolution_aspectratio
video.scale_resolution_orientation
Quote from: JaViS on August 09, 2017, 05:54:45 PM
Interesante, que valores soporta el ini?
hay que hacer algo desde el lado del codigo para leer/escribir valores?
Saludos!
los valores son los del ejemplo, el ejemplo, seria la documentacion.
al momento, solo a nivel engine (modulos/core)
facilmente se puede crear un modulo mod_config, que recoja todos los sections, keys y values que el callback de configuracion da, y luego ofrecerlos para poder ser leidos desde el codigo.
pero actualmente no se pueden manipular desde codigo bennugd... el escribir tambien podria ser posible en un mod_config.
(interesante idea...)
;D Buenas noticias maestro..
tengo sugerencias.. ::)
1. que desde codigo se pueda llamar a otro dcb.. digamos desde la mod_system
una funcion execute_dcb("app2.dcb"); yo creo que con esta bastaria... volviera a llamar
al void main() de c++ por asi decirlo... pero con el parametro del nuevo dcb..
seria util para las consolas/mobiles.. y otros
2. desde el archivo de configuracion se pueda especificar el dcb con el cual comienza el juego
si aparecen varios , deberia aparecer una lista para escoger
["data.mb4", "juego tetris"] ,
["main.dcb", "juego naves"] ,
["main2.dcb", "juego rts"], ... .....
Gracias
Quote from: l1nk3rn3l on August 09, 2017, 07:03:51 PM
;D Buenas noticias maestro..
tengo sugerencias.. ::)
1. que desde codigo se pueda llamar a otro dcb.. digamos desde la mod_system
una funcion execute_dcb("app2.dcb"); yo creo que con esta bastaria... volviera a llamar
al void main() de c++ por asi decirlo... pero con el parametro del nuevo dcb..
seria util para las consolas/mobiles.. y otros
Gracias
esto lo podrias hacer con un system, aunque imagino que si en la consola no puedes llamar a un ejecutable ya no serviria, el problema con la sugerencia es la limpieza de la memoria, seria bastante complejo limpiar todos los recursos reservados, contando incluso que algunos no son controlados por el motor, como ser allocs del usuario... seria bastante complejo hacerlo prolijo.
seria algo asi como un exit();
pero que cuando termine de liberar bennu tenga una variable global que indique que no termine..
sino que ejecute otra vez el main o el run_dcb..
seria muy util en consolas y en moviles.. ya que ejecutar algo desde consola es dificil / requiere permisos / o no esta disponible...
podria ser, llamar a un dcb como si fuera una funcion y cuando este termine, continue en dcb principal.
aunque hay que hacer un gran refactor del motor, eso si, seria mas factible.
lo de ejecutar otro dcb que reemplace el actual, no seria imposible, pero si bastante complejo, y quedaria sin poder liberar todos los mallocs que el usuario hizo.
Aun estoy muy verde en el tema, asi que pregunto desde la ignorancia:
Y seria posible lanzar un programa externo y que el bennu quedase en suspension o algo asi?
Lo que quiero decir es que si podria hacerse como un front-end o un launcher de movil para ejecutar otras aplicaciones temporalmente.
Como ejemplo se me ocurre el Day of the tentacle que desde el juego puedes ejecutar el Maniac Manion que es un juego externo, no?
Quote from: Jate on August 10, 2017, 02:30:57 PM
Aun estoy muy verde en el tema, asi que pregunto desde la ignorancia:
Y seria posible lanzar un programa externo y que el bennu quedase en suspension o algo asi?
Lo que quiero decir es que si podria hacerse como un front-end o un launcher de movil para ejecutar otras aplicaciones temporalmente.
Como ejemplo se me ocurre el Day of the tentacle que desde el juego puedes ejecutar el Maniac Manion que es un juego externo, no?
en movil desconozco, eso lo puede responder josebita, desde PC, si se puede.
Hay forma de soportar resoluciones grandes como widescreen
1024×576, 1152×648, 1280×720, 1366×768, 1600×900, 1920×1080, 2560×1440 and 3840×2160
no se si es problema de SDL , pero intento usar inclusive constantes de bennu como M1280X1024
y explota...
este maximo funciona normal...
set_mode (1024,768,32);
en adelante crashea... :-[
Internamente esta limitado o el SDL 1.3 no soporta ?
en bennugd no hay limite, hasta 9999x9999 deberias poder, el tema es que lo soporte el operativo/driver de video/SDL, etc, resoluciones extrañas no las va a tomar.
con respecto a las constantes, no todas las constantes que quieras existen.
Quote from: SplinterGU on August 10, 2017, 04:45:41 PM
en movil desconozco, eso lo puede responder josebita, desde PC, si se puede.
Gracias, me mirare las funciones con tranquilidad. Es dificil encontrar tiempo para todo ;)
Quote from: SplinterGU on August 11, 2017, 02:02:39 AM
en bennugd no hay limite, hasta 9999x9999 deberias poder, el tema es que lo soporte el operativo/driver de video/SDL, etc, resoluciones extrañas no las va a tomar.
con respecto a las constantes, no todas las constantes que quieras existen.
Gracias ;D
Gracias por el update. Gran trabajo.
Quote from: l1nk3rn3l on August 09, 2017, 07:03:51 PM
1. que desde codigo se pueda llamar a otro dcb.. digamos desde la mod_system
una funcion execute_dcb("app2.dcb"); yo creo que con esta bastaria... volviera a llamar
al void main() de c++ por asi decirlo... pero con el parametro del nuevo dcb..
seria util para las consolas/mobiles.. y otros
2. desde el archivo de configuracion se pueda especificar el dcb con el cual comienza el juego
si aparecen varios , deberia aparecer una lista para escoger
["data.mb4", "juego tetris"] ,
["main.dcb", "juego naves"] ,
["main2.dcb", "juego rts"], ... .....
Creo que sería genial, la verdad.
Genial, ¡¡nueva release!! Esta noche cenamos bennu frito :D
Veo cambios que se andaban pidiendo a gritos desde hace tiempo (ese modo 32bits se sigue resistiendo ^^U) e interesante adiciones. Lo del ini es muy interesante, porque así veo que podemos ahorrarnos código... Lo que no significa que los juegos sean compatibles a todas las resoluciones (es que ya veo a Futu pidiendo ports a punta pala :D).
Luego le echo un vistazo, aunque no creo que note los cambios ^^U
Gracias por tu trabajo, Splinter!!
Actualizado a la última release, gracias Juan. Por cierto, no he visto que nadie lo mencionara pero BennuGD ya tiene 10 años, y parece que fue ayer cuando empezó esto. Felicidades a todos y en especial al SplinterGU!!
gracias blostec!
Quote from: Drumpi on August 18, 2017, 05:34:55 PM
Genial, ¡¡nueva release!! Esta noche cenamos bennu frito :D
Veo cambios que se andaban pidiendo a gritos desde hace tiempo (ese modo 32bits se sigue resistiendo ^^U) e interesante adiciones. Lo del ini es muy interesante, porque así veo que podemos ahorrarnos código... Lo que no significa que los juegos sean compatibles a todas las resoluciones (es que ya veo a Futu pidiendo ports a punta pala :D).
Luego le echo un vistazo, aunque no creo que note los cambios ^^U
Gracias por tu trabajo, Splinter!!
no te creas, llevo una racha de desanimo, y eso que bennu es el unico lenguaje que me interesa
Excelente trabajo maestro Splinter, tener updates de Bennu me imagino requiere bastante esfuerzo de tu parte, te felicito.
Saludos ;D ;D ;D
gracias folken!
Hola SplinterGU.
Ya no vas a actualizar mas bennugd,no tienes pensado añadirle nuevas funciones para facilitar el desarrollo de los juegos.
Si quieres sugerencias,tienes una buena cantidad en el apartado de divgo,crees que alguna de las sugerencias que he hecho se podrian introducir en bennugd.
BennuGD 1 está actualmente abandonado, ahora está dándole caña a BennuGD 2.0 en sus ratos libres.
Quizás para la nueva versión se puedan implementar, pero no sería mala idea llevarlos a cabo en el código de usuario para poder portar dicho código a diferentes div-likes si es necesario.
no esta abandonado totalmente...
estos dias estoy intentando buscar espacio de tiempo para retomar los cambios que tenia en la version bennugd1, y de ahi adaptar esos cambios y fixes a bennugd2 (los que apliquen)
bennugd2 ya tiene varias/muchas (o muchas/varias) cosas nuevas...
hype hype
Ok.Seguire de cerca bennugd2
Excelente noticia SplinterGU, gracias por seguir dedicando tiempo a este gran proyecto. Seguiré atento para actualizar si subes una nueva release.
Saludos!