pixtudio, no reconoce la variable global: scale_resolution_orientation

Started by alicesimu, November 27, 2016, 12:58:31 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

alicesimu

Pues eso, me gustaria usar
esta caracteristica de:
http://wiki.bennugd.org/index.php?title=Scale_resolution_orientation

de rotacion de pantalla....
pero no reconoce la varible global.
PixTudio Blender 1.0.0 (Nov 11 2016 22:31:22)
Pixtudio comes with ABSOLUTELY NO WARRANTY
See COPYING for copyright details

D:\pixtudio\tests\test_scale_resolution_aspectratio.prg:38: error: Unknown identifier ( error in token: "SCALE_RESOLUTION_ORIENTATION" ).
D:\pixtudio\tests\test_scale_resolution_aspectratio: doesn't exist or isn't version 8 DCB compatible


en cambio estas dos, si la reconoce:
scale_resolution  -> Si funciona bien
scale_resolution_aspectratio -> No parece hacer caso al cambio, siempre se ve con Relacion aspecto, y no estira la pantalla.


Resumiendo, lo que si funciona o lo que no funciona.... (lo comento dentro del código en mayusculas)

//Activates/deactivates scale_resolution.
    if(key(_r))
      while(key(_r)) frame; end   //Wait until the key is released
      if (scale_resolution==-1);    //If scale_resolution is not active...
        scale_resolution=08000480; //...then resize the screen  FUNCIONA
      else                         //If scale_resolution is already working...
        scale_resolution=-1;     //...then stop it.  //FUNCIONA
      end
  set_mode(800,600,32);
    end

    //This rotates the screen. Only works when SCALE_RESOLUTION is being used.  //NO LO RECONOCE EL COMPILADOR!!
    if(key(_0)) scale_resolution_orientation=SRO_NORMAL;end
    if(key(_1)) scale_resolution_orientation=SRO_LEFT;end
    if(key(_2)) scale_resolution_orientation=SRO_DOWN;end
    if(key(_3)) scale_resolution_orientation=SRO_RIGHT;end

    //This activates/deactivates the ASPECT RATIO. Only works when SCALE_RESOLUTION is being used.
    if(key(_a))
      while(key(_a)) frame; end
      if (scale_resolution_aspectratio==0);
        scale_resolution_aspectratio=SRA_PRESERVE;
      else
        scale_resolution_aspectratio=SRA_STRETCH;  //NO FUNCIONA! NO HACE CASO
      end
  set_mode(800,600,32);
    end


Si me lo pueden arreglar, que funcionase.
Me gustaria usarlo.

l1nk3rn3l

    { "MODE_WINDOW"         , TYPE_DWORD    , MODE_WINDOW           },
    { "MODE_FULLSCREEN"     , TYPE_DWORD    , MODE_FULLSCREEN       },

    { "MODE_WAITVSYNC"      , TYPE_DWORD    , MODE_WAITVSYNC        },
    { "WAITVSYNC"           , TYPE_DWORD    , MODE_WAITVSYNC        },

    { "MODE_8BITS"          , TYPE_DWORD    , 8                     },
    { "MODE_16BITS"         , TYPE_DWORD    , 16                    },
    { "MODE_32BITS"         , TYPE_DWORD    , 32                    },

    { "MODE_8BPP"           , TYPE_DWORD    , 8                     },
    { "MODE_16BPP"          , TYPE_DWORD    , 16                    },
    { "MODE_32BPP"          , TYPE_DWORD    , 32                    },

    { "MODE_MODAL"          , TYPE_DWORD    , MODE_MODAL            },  /* GRAB INPUT */
    { "MODE_FRAMELESS"      , TYPE_DWORD    , MODE_FRAMELESS        },  /* FRAMELESS window */

    { "SCALE_NONE"          , TYPE_DWORD    , SCALE_NONE            },

    { "SRO_NORMAL"          , TYPE_DWORD    , SRO_NORMAL            },
    { "SRO_LEFT"            , TYPE_DWORD    , SRO_LEFT              },
    { "SRO_DOWN"            , TYPE_DWORD    , SRO_DOWN              },
    { "SRO_RIGHT"           , TYPE_DWORD    , SRO_RIGHT             },

    { "SRA_STRETCH"         , TYPE_DWORD    , SRA_STRETCH           },
    { "SRA_PRESERVE"        , TYPE_DWORD    , SRA_PRESERVE          },

    { "SCALE_NEAREST"       , TYPE_BYTE     , 0                     },
    { "SCALE_LINEAR"       , TYPE_BYTE     , 1                     },





Y LAS VARIABLES







    "graph_mode = 0;\n"
    "full_screen = 0;\n"
    "scale_resolution = -1;\n"
    "scale_resolution_aspectratio = 0;\n"
    "BYTE scale_quality = 1;\n";



alicesimu

te reporto las cosas que NO funcionan:

{ "MODE_WINDOW"         , TYPE_DWORD    , MODE_WINDOW           }, Siempre se ejecuta en modo ventana...

    { "MODE_FULLSCREEN"     , TYPE_DWORD    , MODE_FULLSCREEN       }, ---> No se puede aplicar en SET_MODE, tampoco no funciona en la variable full_screen.
error: Incorrect number of parameters. Function: SET_MODE MinParams: 3. ( error in token: "(" ).
se supone que el 4 parametro de set_mode deberia permitir añadir atributos: MODE_FULLSCREEN,MODE_WAITVSYNC,MODE_WINDOW ...


    { "MODE_WAITVSYNC"      , TYPE_DWORD    , MODE_WAITVSYNC        },
    { "WAITVSYNC"           , TYPE_DWORD    , MODE_WAITVSYNC        },
Esta MODE_WAITVSYNC no puedo aplicarlo... error en 4 parametro en set_mode


    { "MODE_8BITS"          , TYPE_DWORD    , 8                     },
    { "MODE_16BITS"         , TYPE_DWORD    , 16                    },
    { "MODE_32BITS"         , TYPE_DWORD    , 32                    },

    { "MODE_8BPP"           , TYPE_DWORD    , 8                     },
    { "MODE_16BPP"          , TYPE_DWORD    , 16                    },
    { "MODE_32BPP"          , TYPE_DWORD    , 32                    },
Estas de profundidad de color, no hay problema, solo es un numero, 8,16,32.


    { "MODE_MODAL"          , TYPE_DWORD    , MODE_MODAL            },  /* GRAB INPUT */
    { "MODE_FRAMELESS"      , TYPE_DWORD    , MODE_FRAMELESS        },  /* FRAMELESS window */
Estas no puedo aplicarlo... error en 4 parametro en set_mode


    { "SCALE_NONE"          , TYPE_DWORD    , SCALE_NONE            },
desconozco el uso de esta constante, pero seguro que vale 0

    { "SRO_NORMAL"          , TYPE_DWORD    , SRO_NORMAL            },
    { "SRO_LEFT"            , TYPE_DWORD    , SRO_LEFT              },
    { "SRO_DOWN"            , TYPE_DWORD    , SRO_DOWN              },
    { "SRO_RIGHT"           , TYPE_DWORD    , SRO_RIGHT             },
Carece sentido tener las Constantes, si no existe la variable global: scale_resolution_orientation
no existe...

    { "SRA_STRETCH"         , TYPE_DWORD    , SRA_STRETCH           },
    { "SRA_PRESERVE"        , TYPE_DWORD    , SRA_PRESERVE          },
Estas no funcionan en la variable: scale_resolution_aspectratio

    { "SCALE_NEAREST"       , TYPE_BYTE     , 0                     },
    { "SCALE_LINEAR"       , TYPE_BYTE     , 1                     },
Si funciona con scale_quality.


Y LAS VARIABLES




    "graph_mode = 0;\n"//funciona bien,
    "full_screen = 0;\n"//no funciona, no hace caso a las constante
    "scale_resolution = -1;\n"//Si funciona, perfectamente
    "scale_resolution_aspectratio = 0;\n"//No funciona usando las constantes
    "BYTE scale_quality = 1;\n";//si funcionan


josebita

Hola:

Lo de la orientación es intencionado: considero que la rotación debe gestionarla la plataforma y no PixTudio, así que eliminé el código para hacer rotaciones. Tanto en Android como en iOS es muy sencillo decir que la aplicación debe lanzarse en modo apaisado.

Por otra parte: el tema del aspect_ratio ya está anotado aquí.

Respecto a MODE_FULLSCREEN y demás: Sí deberían funcionar pero eliminé el parámetro de "densidad de bits" en set_mode() dado que PixTudio sólo funciona a 32bpp.
De forma que lo que en BennuGD es:
set_mode(800, 600, 32, MODE_FULLSCREEN);
en PixTudio es:
set_mode(800, 600, MODE_FULLSCREEN);

[Edito] Gracias por daros cuenta: he quitado las constantes relacionadas con las rotaciones, porque no tienen efecto.

DCelso

Si no cuesta mucho dejarlo dejalo.
Son mas incompatiblidades añadidas a pixtudio.
Si quiero ejecutar un juego a posta volcado en pc, en android no iría bien el mismo juego.
Pienso yo.  Y si no cuesta mucho, mejor dos opciones para girar, una por código y otra por la plataforma en la que rule.

Es que siguiendo esa regla de tres, casi todo sobra, casi todo se puede hacer en android directamente  :D ;)


Monstruos Diabólicos

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

josebita

Quote from: DCelso on November 27, 2016, 08:18:25 PM
Si no cuesta mucho dejarlo dejalo.
Son mas incompatiblidades añadidas a pixtudio.
Si quiero ejecutar un juego a posta volcado en pc, en android no iría bien el mismo juego.
Pienso yo.  Y si no cuesta mucho, mejor dos opciones para girar, una por código y otra por la plataforma en la que rule.

Es que siguiendo esa regla de tres, casi todo sobra, casi todo se puede hacer en android directamente  :D ;)
No puedo dejar la rotación por la forma en que he cambiado el sistema de renderizado en PixTudio para que use la tarjeta gráfica (a través de SDL) en lugar de pintar por software.
Y como lo he quitado, no tiene sentido que deje órdenes en los módulos que luego son ignoradas. Ponte en la perspectiva de una persona que llegara nueva a PixTudio y viera ciertas opciones que no hacen nada. ¿Qué sentido tendría eso?

Lo que sí puedo hacer es una cabecera de "compatibilidad" con BennuGD que salve estas cosas y permita compilar (pero el comportamiento cambiará en algunas cosas).

En todo caso, creo que sería incorrecto hacer ésto del lado de PixTudio. Cuando BennuGD lo hizo fue porque había plataformas donde no había soporte nativo para rotar la pantalla, pero era para salvar una carencia de la plataforma que no existe en las plataformas a las que está destinado PixTudio.

DCelso

Pues no se, quítalo entonces, para que esté de adorno ... :D , para que compile el código se puede hacer un .h con lo que falte.

Creo que lo que más interesa ahora es que, aunque use solo modo 32 bits para el renderizado, pueda cargar recursos de las distinas profundidades (básicamente pngs y fpgs) ya que ocupan menos espacio en disco y el jaleo que conlleva pasarlas a 32 bits los hace incompatibles hacia atrás en plataformas que no soportan 32 bits y no compensa o dificulta la migración de éstos.
:) .






Monstruos Diabólicos

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

alicesimu

Ah! Menos mal!!

Lo vi raro que no funcionara, o constante es que carecen de uso.

Gracias por la aclaración del set_mode pues des que llege a pixtudio, usaba el 3r parametro para la profundidad de bits sin darme cuenta!

Sobre uso de orientación/rotación de pantalla si la idea es usarlo en dispositivos móviles claro.
Te confirmó que cualquier apk que se hace con pixtudio no tiene el auto rotado, por ejemplo si cogemos el móvil en horizontal, el juego se programo en landscape, si dentro del juego nos apetece girar 180°, la idea es que rote, gracias al sensor de inclinación...

Pero no lo hace...
Con la variable global esa de orientación estaría solucionado.

Realmente lo vas a borrar  100%???
No abra manera de que se pueda rotar...
Técnicamente no se si es una característica propia de android integrada en el apk.... No se.

Podría tener alguna solución mas adelante sobre este tema de orientación??

Sobre funciones , constantes y variables globales... Propias para operaciones sobre 8/16 bits se pueden eliminar.

Estaría enfocado solamente a 32bits únicamente.

alicesimu

Quote from: DCelso on November 27, 2016, 08:18:25 PM
Si quiero ejecutar un juego a posta volcado en pc, en android no iría bien el mismo juego.
Es posible que el mismo juego se pueda programar en dos sistemas de destinos diferentes, la magia esta en la variable OS_id
Con ella puedes separar códigos, métodos de entrada, botones en pantalla, modo de pantalla.

Y el juego es el mismo.

josebita

Quote from: DCelso on November 27, 2016, 09:45:06 PM
Pues no se, quítalo entonces, para que esté de adorno ... :D , para que compile el código se puede hacer un .h con lo que falte.
A ver si hago la cabecera y la subo a la documentación. En todo caso, el PixTudioPM ya hace esa tarea.
Quote from: DCelso on November 27, 2016, 09:45:06 PM
Creo que lo que más interesa ahora es que, aunque use solo modo 32 bits para el renderizado, pueda cargar recursos de las distinas profundidades (básicamente pngs y fpgs) ya que ocupan menos espacio en disco y el jaleo que conlleva pasarlas a 32 bits los hace incompatibles hacia atrás en plataformas que no soportan 32 bits y no compensa o dificulta la migración de éstos.
:) .
Sí, eso es un poco rollo. De todas formas, aunque con limitaciones, es posible cargar recursos de 16bpp.

Quote from: alicesimu on November 27, 2016, 10:11:33 PM
Ah! Menos mal!!

Lo vi raro que no funcionara, o constante es que carecen de uso.

Gracias por la aclaración del set_mode pues des que llege a pixtudio, usaba el 3r parametro para la profundidad de bits sin darme cuenta!

Sobre uso de orientación/rotación de pantalla si la idea es usarlo en dispositivos móviles claro.
Te confirmó que cualquier apk que se hace con pixtudio no tiene el auto rotado, por ejemplo si cogemos el móvil en horizontal, el juego se programo en landscape, si dentro del juego nos apetece girar 180°, la idea es que rote, gracias al sensor de inclinación...

Pero no lo hace...
Con la variable global esa de orientación estaría solucionado.

Realmente lo vas a borrar  100%???
No abra manera de que se pueda rotar...
Técnicamente no se si es una característica propia de android integrada en el apk.... No se.

Podría tener alguna solución mas adelante sobre este tema de orientación??

Sobre funciones , constantes y variables globales... Propias para operaciones sobre 8/16 bits se pueden eliminar.

Estaría enfocado solamente a 32bits únicamente.
En principio hacer que la resolución cambie al girar el móvil sí es técnicamente viable aunque ahora mismo probablemente no funcione y tengo que ver cómo.

Por favor ponme un bug en bitbucket para que no se me olvide y lo miro cuando tenga un rato.

SplinterGU

Quote from: josebita on November 27, 2016, 09:19:07 PM
Quote from: DCelso on November 27, 2016, 08:18:25 PM
Si no cuesta mucho dejarlo dejalo.
Son mas incompatiblidades añadidas a pixtudio.
Si quiero ejecutar un juego a posta volcado en pc, en android no iría bien el mismo juego.
Pienso yo.  Y si no cuesta mucho, mejor dos opciones para girar, una por código y otra por la plataforma en la que rule.

Es que siguiendo esa regla de tres, casi todo sobra, casi todo se puede hacer en android directamente  :D ;)
No puedo dejar la rotación por la forma en que he cambiado el sistema de renderizado en PixTudio para que use la tarjeta gráfica (a través de SDL) en lugar de pintar por software.
Y como lo he quitado, no tiene sentido que deje órdenes en los módulos que luego son ignoradas. Ponte en la perspectiva de una persona que llegara nueva a PixTudio y viera ciertas opciones que no hacen nada. ¿Qué sentido tendría eso?

Lo que sí puedo hacer es una cabecera de "compatibilidad" con BennuGD que salve estas cosas y permita compilar (pero el comportamiento cambiará en algunas cosas).

En todo caso, creo que sería incorrecto hacer ésto del lado de PixTudio. Cuando BennuGD lo hizo fue porque había plataformas donde no había soporte nativo para rotar la pantalla, pero era para salvar una carencia de la plataforma que no existe en las plataformas a las que está destinado PixTudio.

no se puede forzar la orientacion? yo he visto juegos que se ponen en una orientacion y por mas que rotes el celular se queda fijo en donde quiere el programa, incluso no es la orientacion estandard...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Futu-block

Estaría bien que se propusiera que orientación usar, date cuen que android normalmente estan en telefonos y tablets, que se usan en vertical y horizontal. Si quisiera hacer un juego en vertical tipo tetris, por ejemplo, deberia haber una ''formula'' para que no rote la pantalla accidentalmente y lo eche todo a perder

FreeYourMind


josebita

Ahora mismo la idea es que el usuario fuerce la orientación mediante las propiedades del fichero de metadatos del APK al que enlacé. Ahí se puede especificar qué orientación se quiere para el juego: apaisada o retrato. Cómo es muy sencillo y es el sistema quien rota la pantalla por hardware no tiene sentido que yo vuelva a implementar eso (que lo voy a hacer peor que el sistema).

Eso funciona estupendamente y el juego PixTudio no tiene que hacer nada: siempre que no llame a set_mode para forzar la resolución el juego se ejecutará a la resolución nativa del móvil (en apaisado o en retrato).

Lo que digo es que es posible que alguien pueda querer que el juego pueda funcionar de ambas formas, al igual que casi todas las aplicaciones que no son juegos (imaginad que cuando el móvil está en apaisado muestra el juego propiamente dicho y cuando está en retrato muestra un mapa, por ejemplo). Eso no se soporta ahora mismo y quizás podría ser interesante

alicesimu

Para mi proyecto se programa en apaisado y tiene la resolución fija set_mode 480p de definición, se auto ajusta el ancho dependiendo de la regla de tres:( ancho original/alto original)*480=ancho escaladao para set_mode, con esto prevengo de las barras negras...

Funciona muy bien,lo tengo bastante controlado.

Solo me queda que pueda rotar la pantalla  180° mediante sensor. O es 0° / 180°

Es muy simple, hay juegos que usan esa  técnica

Aun así puedo simularlo gracias a esta app de rotación forzosa.
Modo landscape(auto)
https://play.google.com/store/apps/details?id=com.googlecode.eyesfree.setorientation

Realmente funciona el invento.