Migración de juegos Fenix a Bennu - Apuntes de diferencias y resoluciones.

Started by FreeYourMind, September 30, 2009, 05:20:12 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


SplinterGU

esa funcion no tiene parametros de entrada, son de salida... por eso son punteros...

&alto, &ancho

y te va a devolver esos valores.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Me saltan dudas y mas dudas:

El ejemplo de la Wikipedia no me sirve o no lo entiendo, en el se define ya la resolución del desktop en variables globales, yo quiero saberlas a traves de la funcion, no soy yo que las tengo que poner!

O sea yo quiero hacer algo por el estilo:

scale_resolution = m1024x768;
set_mode(m320x200);

Esto rescalaria el juego de su resolución original de 320x200 a la resolución 1024x768,
siendo esta ultima obtenida con get_desktop_size.

Otra cosa, mi desktop esta a 1280x800, resolución que Bennu no reconoce, pero he probado con 1024x768 que es inferior
y el juego se queda verticalmente ajustado y en horizontal ultrapasa la pantalla, con esto deduzco que el fullscreen a pantalla entera es una resolucion con 1024xAAA siendo AAA menor que 768.

Los que son valores más pequeños que la resolución de mi desktop!!! Lo ideal era una funcion que me diera la resolución exacta para hacer un 'Sketch' o sea poner el juego a pantalla completa tenga la resolucion que tenga, esta caracteristica es muy comun en emuladores, que te ponen el juego a pantalla entera, como el Mame.

SplinterGU

la tenes... busca donde se describe la funcion get_desktop_size dentro del foro... y ahi tenes el juego completo...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

No tengo experiencia con resolution, sólo aconsejo:

Recuerda que tu PC no puede soportar en Bennu una resolución que tu tarjeta gráfica no soporte, en cristiano: "Si haces clic derecho y Propiedades en el Escritorio de Windows puedes ver en Configuración las resoluciones soportadas, las hay panorámicas y 4:3, quizás mode_is_ok ( ) pueda ayudarte".

Siento no tener demasiada experiencia con resolution, pero cuando empecé a usarlo me dí cuenta de que mode_is_ok era importante para conocer la resolución a la que se está ejecutando finalmente.

Quote from: SplinterGU on November 12, 2009, 01:35:02 AM
la tenes... busca donde se describe la funcion get_desktop_size dentro del foro... y ahi tenes el juego completo...

Haz caso a Splinter, y Bennu sí que reconoce 1280x800. Con mi portátil (Pantalla panorámica) en Bennu 3D siempre uso esa resolución, pero si is_mode_ok no la da como válida paso a 1024x768 (Pantallas CRT).
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

FreeYourMind

Yo dijé que Bennu no la soporta porque no me compila, poniendo tanto:

scale_resolution = m1280x800; (desconocido)
como
scale_resolution = 1280x800; (error ; esperando x800)


Sobre que el ordenador no soporte una resolución que no soporte la tarjeta, pues eso lo se claro ;)
Por eso quiero obtener la resolución del Desktop y no ponerla a pelo...

Y sobre que si fallaba al obtener la resolucion perguntaba por una forma de contornar el problema, para poner otra por defecto,  y me has dado la respuesta con el mode_is_ok.
Luego por la noche lo  vuelvo a mirar.

Grácias.

DCelso

El ejemplo lo hice yo ayer ante tu pregunta. Miralo de nuevo con lo que te digo a continuación.
Lo que hace el ejemplo es crear una ventana Bennu con la resolución mayor posible que quepa en tu escritorio, si por cualquier motivo hay un fallo al obtener los datos, entonces pone por defecto 640x480.
Para ello lo que hace es :
obtener los datos de ancho y alto de tu escritorio (descktop_height y desktop_width)
Obtener los datos de ancho y alto del marco de ventana bennu (window_height y window_width).
Obtener los datos de ancho y alto de la ventana embebida bennu (client_heigth y client_width)
Ahora usa una fórmula para calcular el mayor ancho y el mayor alto disponible en tu escritorio con todos estos datos.
Para ello restas el ancho del marco de la ventana con el ancho de la ventana embebida, esto te da justo un valor que corresponde a los perfiles izquierdo y derecho del marco.
Hacemos lo mismo con el alto, obteniendo el valor de los perfiles de arriba y abajo del marco.

Ahora al ancho del escritorio restamos el valor de los perfiles izquierdo y derecho obteniendo el ancho mayor posible en tu desktop para que también se vean los perfiles de la ventana.
Y al alto restamos los perfles de arriba y abajo obteniendo el alto mayor posible para que también se vea la barra de título (y la barra de estado si hubiera)
Adjunto imagen para que se vea más claro, pero vamos, lo suyo es que ejecutes el código ejemplo también para ver efectos.

http://wiki.bennugd.org/index.php?title=Get_window_size
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Windgate

¿Qué es eso de la ventana cliente embebida en Bennu? Yo me quedé en region ???
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

FreeYourMind

Yo lo probe ayer y me salia la resolucion normal del juego, igual daba error como dices (cambie la resolución por defecto a la de mi juego que es de 320*200).
Otra cosa es que esto lo hago con fullscreen, que es como ya dije para completar toda la pantalla del pc con el juego.

SplinterGU

no lo se, pero desktop_size creo que no va para fullscreen, ahi no hay desktop... creo, no estoy seguro...

por otro lado, para que si estas en fullscreen haces desktop_size?, ya tenes el modo cuando hiciste set_mode, en pc se ajusta solo a fullscreen...

la verdad que no entiendo que estas queriendo hacer...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: FreeYourMind on November 12, 2009, 07:12:11 AM
Yo dijé que Bennu no la soporta porque no me compila, poniendo tanto:

scale_resolution = m1280x800; (desconocido)
como
scale_resolution = 1280x800; (error ; esperando x800)


Sobre que el ordenador no soporte una resolución que no soporte la tarjeta, pues eso lo se claro ;)
Por eso quiero obtener la resolución del Desktop y no ponerla a pelo...

Y sobre que si fallaba al obtener la resolucion perguntaba por una forma de contornar el problema, para poner otra por defecto,  y me has dado la respuesta con el mode_is_ok.
Luego por la noche lo  vuelvo a mirar.

Grácias.

puf!!! caramba, es imposible y ridiculo tener definidas todas las constantes que referencien al modo 1x1 hasta NxN... si ves el valor de la constante podrias entender como se compone dicha constante... es mas lo explique con scale_resolution...

ES HHHHWWWW 4 digitos para cada dimension... si queres 1280x800 tenes que poner 12800800...

dios, yo pense que te referias a un problema real... por eso es importante cuando alguien dice que algo no funciona, poner el codigo de lo que no funciona...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: DCelso on November 12, 2009, 10:34:33 AM
El ejemplo lo hice yo ayer ante tu pregunta. Miralo de nuevo con lo que te digo a continuación.
Lo que hace el ejemplo es crear una ventana Bennu con la resolución mayor posible que quepa en tu escritorio, si por cualquier motivo hay un fallo al obtener los datos, entonces pone por defecto 640x480.
Para ello lo que hace es :
obtener los datos de ancho y alto de tu escritorio (descktop_height y desktop_width)
Obtener los datos de ancho y alto del marco de ventana bennu (window_height y window_width).
Obtener los datos de ancho y alto de la ventana embebida bennu (client_heigth y client_width)
Ahora usa una fórmula para calcular el mayor ancho y el mayor alto disponible en tu escritorio con todos estos datos.
Para ello restas el ancho del marco de la ventana con el ancho de la ventana embebida, esto te da justo un valor que corresponde a los perfiles izquierdo y derecho del marco.
Hacemos lo mismo con el alto, obteniendo el valor de los perfiles de arriba y abajo del marco.

Ahora al ancho del escritorio restamos el valor de los perfiles izquierdo y derecho obteniendo el ancho mayor posible en tu desktop para que también se vean los perfiles de la ventana.
Y al alto restamos los perfles de arriba y abajo obteniendo el alto mayor posible para que también se vea la barra de título (y la barra de estado si hubiera)
Adjunto imagen para que se vea más claro, pero vamos, lo suyo es que ejecutes el código ejemplo también para ver efectos.

http://wiki.bennugd.org/index.php?title=Get_window_size


eso mismo ya lo he explicado... hay que usar el boton de buscar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: Windgate on November 12, 2009, 12:59:48 PM
¿Qué es eso de la ventana cliente embebida en Bennu? Yo me quedé en region ???

es el area de trabajo de la ventana... lo demas son bordes/marcos de la ventana... :P
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

Si es que me explico como un libro cerrado :D, pero para eso puse la imagen, ¿la viste?, gracias Splinter.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

si, la imagen excelente... vale mas una imagen que mil palabras...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2