Titan Movil
Bienvenido a titan movil, te invitamos a registrate para acceder a todo el contenido del foro



Unirse al foro, es rápido y fácil

Titan Movil
Bienvenido a titan movil, te invitamos a registrate para acceder a todo el contenido del foro

Titan Movil
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

No estás conectado. Conéctate o registrate

cambia la resolucion de tus games android de HVGA / QVGA

Ir abajo  Mensaje [Página 1 de 1.]

narutozo10

narutozo10
Game Master
Game Master

este pos no es de mi autoria es de una pagina yo solo se las comento pero lo e provado y me funciono muy bien Surprised Surprised Surprised Surprised Smile Smile Very Happy Very Happy Razz Razz Razz

1. Cambiar la resolución de la prestación de HVGA / QVGA.

La mayoría de los juegos en Android, escrito usando OpenGL, un permiso de OpenGL dada por la función "glViewport", y el uso voluntad. El más óptimo, creo que la función "glViewport" lugar en la función "OnDrawFrame". Para ello, buscando en la carpeta "smali", que se encuentra en una carpeta con raspakovanym archivo AIC, busque un archivo que contiene la función "OnDrawFrame". Por lo general, este archivo se denomina "GameRenderer.smali" o "[Nombre del Juego] Renderer.smali", en este caso, "SandstormRenderer.smali". Ábralo en el Bloc de notas u otro editor de texto y encontrar en él la función "OnDrawFrame".
He aquí un fragmento de esta función.

Código :

. Método público onDrawFrame (Ljavax/microedition/khronos/opengles/GL10 V
. Locales 6
. Parámetros "gl"
. Prólogo
. Línea 174
const-wide/16 v0, 0x0
. Línea 177
. Locales v0, el tiempo: J
invocar estática {}, Ljava / lang / Sistema; - currentTimeMillis> () J
movimiento en todo el resultado de v0
. Línea 179
invocar estática {}, FCM / gameloft / android / Gand / GloftMCHP / GLMediaPlayer; -> actualizar () V
. Línea 180
invocar estática {}, FCM / gameloft / android / Gand / GloftMCHP / SandstormRenderer; - nativeRender> () V
. Línea 186
const-wide/16 v2, 0x32
invocar estática {}, Ljava / lang / Sistema; - currentTimeMillis> () J
movimiento en todo el resultado de la v4
sub-long/2addr v4, v0
sub-largo v0, v2, v4
. Línea 188
const-wide/16 v2, 0x0
cmp largo v2, v0, v2
si-lez v2: cond_0
. Línea 190
: Try_start_0
invocar estática {v0, v1}, Ljava / lang / Autor; - el sueño> (J) V
: Try_end_0
. Captura Ljava / lang / Excepción; {: try_start_0 .. : Try_end_0}: catch_0
. Línea 193
: Cond_0
: Goto_0
retorno vacío
. Línea 190
: Catch_0
movimiento excepción v2
Ir a: goto_0
. Método de finalización


En este fragmento de código para agregar la llamada a la función "glViewport", de modo de obtener, como en el siguiente fragmento de código.

Código :

. Método público onDrawFrame (Ljavax/microedition/khronos/opengles/GL10 V
. Locales 9
. Parámetros "gl"
. Prólogo
const/16 v8, 0x1E0
const/16 v7, 0x140
const / 4 v6, 0x0
invocar la interfaz de {p1, v6, V6, V8, v7}, Ljavax/microedition/khronos/opengles/GL10; - glViewport> (IIII) V
. Línea 174
const-wide/16 v0, 0x0

. Línea 177
. Locales v0, el tiempo: J
invocar estática {}, Ljava / lang / Sistema; - currentTimeMillis> () J
movimiento en todo el resultado de v0
. Línea 179
invocar estática {}, FCM / gameloft / android / Gand / GloftMCHP / GLMediaPlayer; -> actualizar () V
. Línea 180
invocar estática {}, FCM / gameloft / android / Gand / GloftMCHP / SandstormRenderer; - nativeRender> () V
. Línea 186
const-wide/16 v2, 0x32
invocar estática {}, Ljava / lang / Sistema; - currentTimeMillis> () J
movimiento en todo el resultado de la v4
sub-long/2addr v4, v0
sub-largo v0, v2, v4
. Línea 188
const-wide/16 v2, 0x0
cmp largo v2, v0, v2
si-lez v2: cond_0
. Línea 190
: Try_start_0
invocar estática {v0, v1}, Ljava / lang / Autor; - el sueño> (J) V
: Try_end_0
. Captura Ljava / lang / Excepción; {: try_start_0 .. : Try_end_0}: catch_0
. Línea 193
: Cond_0
: Goto_0
retorno vacío
. Línea 190
: Catch_0
movimiento excepción v2
Ir a: goto_0
. Método de finalización

Lo que hemos hecho aquí? Hemos añadido tres constantes (v6, v7, v8), asignarles un valor de coordenadas de la parte inferior izquierda; v6 () y superior derecha v6 (v8, v7) esquina de la pantalla y se transfiere a la función "glViewport". Creo que es comprensible que para las coordenadas de la esquina inferior izquierda de la X e Y se usa solo y también una constante v6? Dado que tanto X e Y en este rincón son iguales. Además, cambia la línea 2-ésima en la función ". Locales de 6" sobre ". Locales 9", que determina el número de constantes y variables utilizadas en funciones, por lo que hemos añadido tres constantes, 6 +3 = 9. También tenga en cuenta que los nombres de las constantes (v6, v7, v8), no se toman casualmente, seleccionados por centrarse en ya se utiliza en la función de las constantes. Si de pronto alguien no entendió, 0x1E0 en decimal sería 480 y 0x140 - 320.

También presta atención a la función "onSurfaceCreated".

Código :

. Públicos Método onSurfaceCreated (Ljavax/microedition/khronos/opengles/GL10; Ljavax / MicroEdition / khronos / EGL / EGLConfig V
. Locales 7
. Parámetros "gl"
. Parámetro "config"
. Prólogo
const / 4 v3,-0x1
. Línea 138
const / 4 v0, 0x2
const cadena v1 "SandstormRenderer"

const cadena v2, "onSurfaceCreated"
invocar estática {v0, v1, v2}, FCM gameloft / / android / Gand / GloftMCHP / GLDebug; - debugMessage> (ILjava / lang / String; Ljava / lang / String V
. Línea 141
invocar-directa {p0}, FCM / gameloft / android / Gand / GloftMCHP / SandstormRenderer; - nativeGetJNIEnv> () V
. Línea 142
invocar estática {}, FCM / gameloft / android / Gand / GloftMCHP / GLResLoader; - inicio> () V
. Línea 143
invocar estática {}, FCM / gameloft / android / Gand / GloftMCHP / GLMediaPlayer; - inicio> () V
. Línea 144
invocar estática {}, FCM / gameloft / android / Gand / GloftMCHP / Tormenta de arena; - nativeInit> () V
. Línea 146
: Goto_0
sget v0, FCM / gameloft / android / Gand / GloftMCHP / SandstormGLSurfaceView; - mDevice_W>: I
-eq si v0, v3,: cond_0
sget v0, FCM gameloft / / android / Gand / GloftMCHP / SandstormGLSurfaceView; - mDevice_H>: I
si ne-v0, v3: cond_1
. Línea 149
: Cond_0
const-wide/16 v0, 0x32
: Try_start_0
invocar estática {v0, v1}, Ljava / lang / Autor; - el sueño> (J) V
: Try_end_0
. Captura Ljava / lang / Excepción; {: try_start_0 .. : Try_end_0}: catch_0
Ir a: goto_0
: Catch_0
movimiento excepción v6
. Locales v6, por ejemplo: Ljava / lang / Excepción;
invocar virtual} {v6, Ljava / lang / Excepción; - printStackTrace> () V
Ir a: goto_0
. Línea 154
. Fin locales v6 # ejemplo: Ljava / lang / Excepción;
: Cond_1
sget v1, FCM / gameloft / android / Gand / GloftMCHP / Tormenta de arena; - m_bEnableKeyboard>: I
const / 4 v2, 0x1
sget v3, FCM / gameloft / android / Gand / GloftMCHP / SandstormGLSurfaceView; - mDevice_W>: I
sget v4, FCM gameloft / / android / Gand / GloftMCHP / SandstormGLSurfaceView; - mDevice_H>: I
sget v5, FCM / gameloft / android / Gand / GloftMCHP / Tormenta de arena; - mCurrentLang>: I
movimiento de objetos v0, p0
invoke-direct/range {v0 .. v5}, FCM / gameloft / android / Gand / GloftMCHP / SandstormRenderer; - nativeInit> (II-III) V
. Línea 155
retorno vacío
. Método de finalización

Es decir, el código
Código
sget v3, FCM / gameloft / android / Gand / GloftMCHP / SandstormGLSurfaceView; - mDevice_W>: I
sget v4, FCM gameloft / / android / Gand / GloftMCHP / SandstormGLSurfaceView; - mDevice_H>: I

En este código, la variable v3, v4 asignado a la pantalla de los dispositivos de la resolución real, y pasa a la función "nativeInit". Dado que el juego sigue siendo diseñado para 480x800 de resolución, es mejor tener el pensamiento de juego que tiene un dispositivo con esta resolución en particular. en este código se sustituye por
Código
const/16 v3, 0x320

const/16 v4, 0x1E0

Si no experimenta problemas.
Usted puede preguntar y 480h720, ya que la proporción de las pantallas con 480x800 y 320x480 son diferentes y cuando "exprimir" el panorama es ligeramente aplanado. Pero en este caso, en la fase de "red de contacto de ajuste pantalla, el coeficiente debe suponerse que entre 800 y entre 720 y será 1,666666666666667 y 720/480 = 1.5

En otros juegos en lugar de código, tal vez algo como esto

Código:
invocar virtual} {v0, Landroid / ver / Display - getwidth> () que
movimiento número v3
invocar virtual} {v0, Landroid / ver / Display - getHeight> () que
movimiento número v4
De todos modos se sustituye por:
Código
const/16 v3, 0x320
const/16 v4, 0x1E0
O nombres de variable no puede v3, v4 y V1, V2. O nada que ver con que sea, entonces no tengo nada que hacer.
O si surgen problemas, usted puede en el caso, ir en busca de todos los "*. smali" pozamenyat archivos y todas las funciones llamadas "Landroid / ver / Display - getwidth> () I" y "Landroid / ver / Display - getHeight> () Yo ", la padecen no lo hará.

Para algunos juegos, nuestro trabajo es suficiente y segura cambiar los permisos de todos los gráficos que usted necesita. Para hacer esto de nuevo los paquetes de AIC-archivo y comprobar que el teléfono mientras trabaja. Si todo va bien ir a la opción "red de ajuste de la pantalla táctil." Si no, siga leyendo. En nuestro caso, con el juego Modern Combat: Tormenta de arena, no todo es facil, hasta que el permiso necesario, y el menú - no.
Esto significa que en algún lugar de la función se llama "glViewport" y, a continuación, cambia la resolución a 480x800. Así, como en los archivos "*. smali" función "glViewport" no llame, se puede comprobar mediante la búsqueda, por lo que en el caso de la biblioteca "libsandstorm.so".

La idea principal de el siguiente paso, quite todas las llamadas a funciones de la biblioteca "glViewport".
Para el análisis de la biblioteca, necesitamos el "IDA Pro". Para mayor comodidad, copia "libsandstorm.so" en cualquier carpeta, ejecute "IDA Pro" y haga clic en el botón "Nuevo"



Siguiente "Varios archivos", "archivo desconocido" y haga clic en "Aceptar".



En la ventana, abra el archivo de especificar la ruta de acceso a la biblioteca "libsandstorm.so" y haga clic en "Abrir".
En la siguiente ventana, cambiar el "Tipo de procesador" a "processorARM710a ARM", a continuación, haga clic en "Set" y "Ok".



Si después de esto, habrá otra ventana con cualquier cosa, haga clic en "Aceptar". Ahora tiene que esperar a que el desmontaje. Este proceso es bastante largo, en este se puede ir a fumar o tomar café
El hecho de que la ingeniería inversa se ha completado, se mostrará un mensaje "El autoanálisis inicial se ha terminado." En la ventana inferior "casilla de salida.



Para mayor conveniencia, en este caso, haga clic en el botón derecho del ratón sobre un campo azul, y en el menú contextual, seleccione "Ver Texto". Mover al principio del código ensamblador para la búsqueda de "glViewport".



Resultado de la combinación de teclas "Alt + T" en el cuadro de diálogo para introducir la búsqueda "glViewport" y haga clic en "Aceptar".



Estamos interesados en función de las llamadas "BLX glViewport", "glViewport BL", "B glViewport", "glViewport BX", etc Todas las demás menciones de "glViewport" las ignoramos "Ctrl + T" y continuar la búsqueda.
Un lugar es necesario, cambiar a la hexagonal de Ver-A ".



Asegúrese de que la llamada a la función es de 4 bytes y un "CE F7 E8 D4" (en su caso, estas cifras pueden ser diferentes), es necesario para ver lo que hay que corregir y no accidentalmente sobrescribir nada extra.



Llamar a esta función que necesitamos para beber, ya que debe ser sustituido por "D4 E8 F7 CE" (en su caso, estas cifras pueden ser diferentes) sobre "C0 46 C0 46. Recuerde que la dirección "001F994A" y ejecutar el editor hexadecimal, yo uso "UltraEdit". Abierto a nuestra biblioteca.



Con el fin de llevarnos a la dirección correcta, haga clic en las teclas "Ctrl + G", en el cuadro de entrada aparecerá "0x001F994A" y haga clic en "Aceptar".

En movimiento, vemos que afectó a donde quieras, todo el código hexadecimal converge al hecho de que vimos en "IDA Pro" ficha "Hex Ver-A".



Corregir el marcado "CE F7 D4 E8" en la "C0 46 C0 46.



Cambia a "IDA Pro" y continuar para buscar el siguiente se llama "glViewport", puede haber varias decenas. Ellos han sido tratados de manera similar.
Cuando todas las llamadas a la bebida, se conserva. Copiar para colocar una versión revisada del "libsandstorm.so". Paquetes de ank-archivo y configurar el teléfono para comprobarlo. Si se hace correctamente, el smashtabiruetsya programación completa hasta que el permiso necesario.

Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.