Remove All Ads from XDA

# [TUT] optimization games HD for QVGA/HVGA

71 posts
Thanks Meter: 68

By Creonek, Member on 20th May 2011, 09:27 PM
24th May 2011, 04:00 PM |#11
Inactive Recognized Developer
Astana
Thanks Meter: 8,144

Donate to Me
More
Continuing the theme of optimizing HD games under HVGA / QVGA

2. Adjustment grid touchscreen

Quote:

Even when we have optimized the graphic screen HVGA / QVGA and all the buttons on the screen displayed in the right places on the grid touch screen they are on the old field, off screen.
It looks like this.

1 - This is the current place of drawing a button.
2 - An old place of rendering the button and the current location of the buttons on the touch-screen grid.
Fix is quite simple, you need to make sure that when touching the screen at the point 1, the game thought that the touch at point 2. For this to count as a changed, as a result of the previous stage, the coordinates drawn on-screen buttons. To find out, we need to calculate the ratio of how many times the screen resolution HVGA / QVGA less WVGA.
HTML Code:
```[B]For HVGA[/B]
X: 800/480=1,666666666666667
Y: 480/320=1,5
[B]For QVGA[/B]
X: 800/320=2.5
Y: 480/240=2```
Therefore if the coordinates of the buttons on the WVGA screen, for example, were 700h360, then HVGA screen, it already coordinates will 420h240 (700 / 1.666666666666667 = 420, 360 / 1,5 = 240). This pattern holds for the other buttons on the screen.
That is our task to make sure that when a player touches the coordinates 420h240 game thought he was touched in the coordinates 700h360.
From this it is understandable that only the coordinates of the touch screen to multiply X by 1,666666666666667, Y 1,5 to HVGA screen and X by 2.5, Y 2 to QVGA.
We'll do it in the event handler touchscreen "onTouchEvent". With the search we find that it is in the files "GameInstaller.smali" and "Sandstorm.smali". We want someone who is in the file "Sandstorm.smali".
HTML Code:
```.method public onTouchEvent(Landroid/view/MotionEvent;)Z
.locals 10
.parameter "event"

.prologue
const/4 v9, 0x1

const/4 v8, 0x0

.line 379
invoke-virtual {p1}, Landroid/view/MotionEvent;->getAction()I

move-result v0

.line 380
.local v0, action:I
and-int/lit16 v4, v0, 0xff

.line 382
.local v4, mask:I
invoke-virtual {p1}, Landroid/view/MotionEvent;->getPointerCount()I

move-result v1

.line 383
.local v1, count:I
const v6, 0xff00

and-int/2addr v6, v0

shr-int/lit8 v5, v6, 0x8

.line 388
.local v5, pointerId:I
if-nez v0, :cond_0

.line 390
invoke-virtual {p1, v8}, Landroid/view/MotionEvent;->getX(I)F

move-result v6

float-to-int v6, v6

invoke-virtual {p1, v8}, Landroid/view/MotionEvent;->getY(I)F

move-result v7

float-to-int v7, v7

invoke-direct {p0, v6, v7, v8}, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeTouchPressed(III)V

.line 394
:cond_0
const/4 v6, 0x5

if-ne v4, v6, :cond_1

.line 397
invoke-virtual {p1, v5}, Landroid/view/MotionEvent;->getX(I)F

move-result v6

float-to-int v6, v6

invoke-virtual {p1, v5}, Landroid/view/MotionEvent;->getY(I)F

move-result v7

float-to-int v7, v7

invoke-direct {p0, v6, v7, v5}, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeTouchPressed(III)V

.line 400
:cond_1
const/4 v6, 0x2

if-ne v0, v6, :cond_2

.line 402
const/4 v2, 0x0

.local v2, i:I
:goto_0
if-ge v2, v1, :cond_2

.line 403
invoke-virtual {p1, v2}, Landroid/view/MotionEvent;->getPointerId(I)I

move-result v3

.line 405
.local v3, id:I
invoke-virtual {p1, v3}, Landroid/view/MotionEvent;->getX(I)F

move-result v6

float-to-int v6, v6

invoke-virtual {p1, v3}, Landroid/view/MotionEvent;->getY(I)F

move-result v7

float-to-int v7, v7

invoke-direct {p0, v6, v7, v3}, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeTouchMoved(III)V

.line 402
add-int/lit8 v2, v2, 0x1

goto :goto_0

.line 409
.end local v2           #i:I
.end local v3           #id:I
:cond_2
const/4 v6, 0x6

if-ne v4, v6, :cond_3

.line 412
invoke-virtual {p1, v5}, Landroid/view/MotionEvent;->getX(I)F

move-result v6

float-to-int v6, v6

invoke-virtual {p1, v5}, Landroid/view/MotionEvent;->getY(I)F

move-result v7

float-to-int v7, v7

invoke-direct {p0, v6, v7, v5}, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeTouchReleased(III)V

.line 415
:cond_3
if-ne v0, v9, :cond_4

.line 416
const/4 v2, 0x0

.restart local v2       #i:I
:goto_1
if-ge v2, v1, :cond_4

.line 418
invoke-virtual {p1, v2}, Landroid/view/MotionEvent;->getPointerId(I)I

move-result v3

.line 421
.restart local v3       #id:I
invoke-virtual {p1, v3}, Landroid/view/MotionEvent;->getX(I)F

move-result v6

float-to-int v6, v6

invoke-virtual {p1, v3}, Landroid/view/MotionEvent;->getY(I)F

move-result v7

float-to-int v7, v7

invoke-direct {p0, v6, v7, v3}, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeTouchReleased(III)V

.line 416
add-int/lit8 v2, v2, 0x1

goto :goto_1

.line 427
.end local v2           #i:I
.end local v3           #id:I
:cond_4
return v9
.end method```
We draw attention to the function
HTML Code:
```invoke-virtual {p1, v5}, Landroid/view/MotionEvent;->getX(I)F

invoke-virtual {p1, v5}, Landroid/view/MotionEvent;->getY(I)F```
These functions and define the coordinates of touching the touch screen, immediately after them, we multiply the coordinates on an already calculated coefficients.
For HVGA should get it.
HTML Code:
```.method public onTouchEvent(Landroid/view/MotionEvent;)Z
.locals 10
.parameter "event"

.prologue
const/4 v9, 0x1

const/4 v8, 0x0

.line 379
invoke-virtual {p1}, Landroid/view/MotionEvent;->getAction()I

move-result v0

.line 380
.local v0, action:I
and-int/lit16 v4, v0, 0xff

.line 382
.local v4, mask:I
invoke-virtual {p1}, Landroid/view/MotionEvent;->getPointerCount()I

move-result v1

.line 383
.local v1, count:I
const v6, 0xff00

and-int/2addr v6, v0

shr-int/lit8 v5, v6, 0x8

.line 388
.local v5, pointerId:I
if-nez v0, :cond_0

.line 390
invoke-virtual {p1, v8}, Landroid/view/MotionEvent;->getX(I)F

move-result v6

float-to-int v6, v6

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

invoke-virtual {p1, v8}, Landroid/view/MotionEvent;->getY(I)F

move-result v7

float-to-int v7, v7

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

invoke-direct {p0, v6, v7, v8}, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeTouchPressed(III)V

.line 394
:cond_0
const/4 v6, 0x5

if-ne v4, v6, :cond_1

.line 397
invoke-virtual {p1, v5}, Landroid/view/MotionEvent;->getX(I)F

move-result v6

float-to-int v6, v6

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

invoke-virtual {p1, v5}, Landroid/view/MotionEvent;->getY(I)F

move-result v7

float-to-int v7, v7

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

invoke-direct {p0, v6, v7, v5}, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeTouchPressed(III)V

.line 400
:cond_1
const/4 v6, 0x2

if-ne v0, v6, :cond_2

.line 402
const/4 v2, 0x0

.local v2, i:I
:goto_0
if-ge v2, v1, :cond_2

.line 403
invoke-virtual {p1, v2}, Landroid/view/MotionEvent;->getPointerId(I)I

move-result v3

.line 405
.local v3, id:I
invoke-virtual {p1, v3}, Landroid/view/MotionEvent;->getX(I)F

move-result v6

float-to-int v6, v6

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

invoke-virtual {p1, v3}, Landroid/view/MotionEvent;->getY(I)F

move-result v7

float-to-int v7, v7

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

invoke-direct {p0, v6, v7, v3}, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeTouchMoved(III)V

.line 402
add-int/lit8 v2, v2, 0x1

goto :goto_0

.line 409
.end local v2           #i:I
.end local v3           #id:I
:cond_2
const/4 v6, 0x6

if-ne v4, v6, :cond_3

.line 412
invoke-virtual {p1, v5}, Landroid/view/MotionEvent;->getX(I)F

move-result v6

float-to-int v6, v6

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

invoke-virtual {p1, v5}, Landroid/view/MotionEvent;->getY(I)F

move-result v7

float-to-int v7, v7

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

invoke-direct {p0, v6, v7, v5}, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeTouchReleased(III)V

.line 415
:cond_3
if-ne v0, v9, :cond_4

.line 416
const/4 v2, 0x0

.restart local v2       #i:I
:goto_1
if-ge v2, v1, :cond_4

.line 418
invoke-virtual {p1, v2}, Landroid/view/MotionEvent;->getPointerId(I)I

move-result v3

.line 421
.restart local v3       #id:I
invoke-virtual {p1, v3}, Landroid/view/MotionEvent;->getX(I)F

move-result v6

float-to-int v6, v6

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

invoke-virtual {p1, v3}, Landroid/view/MotionEvent;->getY(I)F

move-result v7

float-to-int v7, v7

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

invoke-direct {p0, v6, v7, v3}, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeTouchReleased(III)V

.line 416
add-int/lit8 v2, v2, 0x1

goto :goto_1

.line 427
.end local v2           #i:I
.end local v3           #id:I
:cond_4
return v9
.end method```
Here is the code that we added to the function
HTML Code:
```mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

...

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2```
I hope everyone understood that multiplying by 10 (A in hexâ€‹â€‹) and is divided into 6, it is the same as multiply by 1.666666666666667 and multiplying by 3 and dividing by 2 - the same as multiply by 1.5.
Note
Quote:

In principle, we can proceed a little differently and multiplying the coordinates of the code in the function "onTouchEvent" not to add, instead, to create alternative roles "nativeTouchPressedMod", "nativeTouchMovedMod", "nativeTouchReleasedMod". Replace them, called in "onTouchEvent" original features "nativeTouchPressed", "nativeTouchMoved", "nativeTouchReleased". And in alternate functions to multiply the coordinates and call them with the original function. This is especially useful in those games where instead of a 3-function "nativeTouchPressed", "nativeTouchMoved", "nativeTouchReleased" uses a "nativeOnTouch" (an example of such a game "Hero of Sparta"), there remains a need to create only 1-st alternate function "nativeOnTouchMod", and only in it one must add the code multiplication of coordinates, which is more convenient. Although this method is more convenient, it seems to me that he would be more difficult for beginners, in this I will not describe it in detail. If someone wants to become more familiar with this method, you can see how it is implemented in the "Hero of Sparta", just compare the files "HeroOfSparta.smali" with the original version and the version optimized for HVGA / QVGA

24th May 2011, 04:07 PM |#12
Inactive Recognized Developer
Astana
Thanks Meter: 8,144

Donate to Me
More
3. How to disable cache
Quote:

This step is even simpler, the file "GameInstaller.smali" find function "isRequiredFile"

HTML Code:
```.method private isRequiredFile(Ljava/lang/String;J)Z
.locals 5
.parameter "fileName"
.parameter "size"

.prologue
const/4 v4, 0x1

.line 410
new-instance v2, Ljava/lang/StringBuilder;

invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

sget-object v3, Lcom/gameloft/android/GAND/GloftMCHP/GameInstaller;->DATA_PATH:Ljava/lang/String;

invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v2

invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v2

invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v1

.line 411
.local v1, path:Ljava/lang/String;
new-instance v0, Ljava/io/File;

invoke-direct {v0, v1}, Ljava/io/File;-><init>(Ljava/lang/String;)V

.line 412
.local v0, file:Ljava/io/File;
invoke-direct {p0, p1}, Lcom/gameloft/android/GAND/GloftMCHP/GameInstaller;->replaceOconf(Ljava/lang/String;)Z

move-result v2

if-eqz v2, :cond_0

const/4 v2, 0x0

.line 415
:goto_0
return v2

:cond_0
invoke-virtual {v0}, Ljava/io/File;->exists()Z

move-result v2

if-eqz v2, :cond_1

invoke-virtual {v0}, Ljava/io/File;->length()J

move-result-wide v2

cmp-long v2, v2, p2

if-eqz v2, :cond_2

:cond_1
const/4 v2, 0x0

goto :goto_0

:cond_2
const/4 v2, 0x0

goto :goto_0
.end method```
In it we are interested in a fragment
HTML Code:
```invoke-virtual {v0}, Ljava/io/File;->exists()Z

move-result v2

if-eqz v2, :cond_1

invoke-virtual {v0}, Ljava/io/File;->length()J

move-result-wide v2

cmp-long v2, v2, p2

if-eqz v2, :cond_2

:cond_1
const/4 v2, 0x0```
In this passage there is a check whether a file exists in the cache and if so, the same as its size (or checksum) with the reference? We just cut a check for file existence, but comparing the size of a reference to itself
The result should so
HTML Code:
```.method private isRequiredFile(Ljava/lang/String;J)Z
.locals 5
.parameter "fileName"
.parameter "size"

.prologue
const/4 v4, 0x1

.line 410
new-instance v2, Ljava/lang/StringBuilder;

invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

sget-object v3, Lcom/gameloft/android/GAND/GloftMCHP/GameInstaller;->DATA_PATH:Ljava/lang/String;

invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v2

invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v2

invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v1

.line 411
.local v1, path:Ljava/lang/String;
new-instance v0, Ljava/io/File;

invoke-direct {v0, v1}, Ljava/io/File;-><init>(Ljava/lang/String;)V

.line 412
.local v0, file:Ljava/io/File;
invoke-direct {p0, p1}, Lcom/gameloft/android/GAND/GloftMCHP/GameInstaller;->replaceOconf(Ljava/lang/String;)Z

move-result v2

if-eqz v2, :cond_0

const/4 v2, 0x0

.line 415
:goto_0
return v2

:cond_0

cmp-long v2, p2, p2

if-eqz v2, :cond_2

const/4 v2, 0x0

goto :goto_0

:cond_2
const/4 v2, 0x0

goto :goto_0
.end method```
HTML Code:
`In some games, mostly to the new function "isRequiredFile" does not, then focus on the snippets "invoke-virtual {v0}, Ljava/io/File;->exists()Z", " invoke-virtual {v0}, Ljava/io/File;->length()J", if they go together and after we check if"cmp-...", then 99% of it is checking the cache, we proceed with it is similar to that described above.`

4. Assigning a hardware button on any action
24th May 2011, 04:20 PM |#13
Inactive Recognized Developer
Astana
Thanks Meter: 8,144

Donate to Me
More
Useful
Quote:

What if the game uses the wrong cache or does not start?
Sometimes such a situation, when the phone is not officially supported game, but the reasons for this game it will not start - no. And it starts, but textures are displayed incorrectly or not displayed. The problem is that the game does not know your phone and any unknown phone thinks PowerVR. Check if this is, quite simply, only need-only file "Build.prop", change the manufacturer and model of your phone, such as "HTC Desire" and if the game is run properly, then you have a similar situation. To solve this problem, we need to make an unknown phone was considered "Snapdragon".
Below is written, to a greater extent, belongs to the Games Gameloft.
Uncompressed AIC file we need to find 2 files "gi_settings.xml" and "data.txt", they usually are in the "res\raw".
Click the "gi_settings.xml" in a text editor, you should see something such content.

HTML Code:
```<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>

<carriers>
<carrier name="default">
<wifi_only>1</wifi_only>
</carrier>
<carrier name="sprint">
<wifi_only>0</wifi_only>
</carrier>
</carriers>

<devices>
<device>
<manufacturer name="default">
<pvrt_textures>1</pvrt_textures>
</manufacturer>
</device>

<device>
<manufacturer name="Samsung">
<pvrt_textures>1</pvrt_textures>
</manufacturer>
</device>

<device>
<manufacturer name="SAMSUNG">
<pvrt_textures>1</pvrt_textures>
</manufacturer>
</device>

<device>
<manufacturer name="samsung">
<pvrt_textures>1</pvrt_textures>
</manufacturer>
</device>

<device>
<manufacturer name="motorola">
<pvrt_textures>1</pvrt_textures>
</manufacturer>
</device>
<device>
<manufacturer name="samsung">
<model name="modelxxx">
<atc_textures>1</atc_textures> <!-- sample to override manufacturer value for an specific device -->
</model>
</manufacturer>
</device>

<device>
<manufacturer name="htc">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="HTC">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="Htc">
<atc_textures>1</atc_textures>
</manufacturer>
</device>
<device>
<manufacturer name="Sharp">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="SHARP">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="sharp">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="Sony Ericsson">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="acer">
<dxt_textures>1</dxt_textures>
</manufacturer>
</device>

<device>
<manufacturer name="sony">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="LGE">
<dxt_textures>1</dxt_textures>
</manufacturer>
</device>

<device>
<manufacturer name="lge">
<model name="LG-SU660">
<dxt_textures>1</dxt_textures>
</model>
</manufacturer>
</device>
</devices>

</settings>```
This file is given for each phone model, a cache (texture compression format) to use. Tag "<pvrt_textures> 1 </pvrt_textures> " indicates a texture format for "PoverVR", tag "<atc_textures> 1 </atc_textures> " at the texture format for "Snapdragon", and "<dxt_textures> 1 </dxt_textures> " on the texture format for "Tegra".
As we expected, the unknown device is "PoverVR".
HTML Code:
```<manufacturer name="default">
<pvrt_textures>1</pvrt_textures>
</manufacturer>```
And LG is a device "Tegra"
HTML Code:
```<manufacturer name="LGE">
<dxt_textures>1</dxt_textures>
</manufacturer>```
It is now clear for the game to start to consider your device "Snapdragon", to replace all the tags "<pvrt_textures> 1 </pvrt_textures> " and "<dxt_textures> 1 </dxt_textures> " on "<atc_textures> 1 </atc_textures > "make it through the" Edit / Change your text editor.
As a result, you should have
HTML Code:
```<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>

<carriers>
<carrier name="default">
<wifi_only>1</wifi_only>
</carrier>
<carrier name="sprint">
<wifi_only>0</wifi_only>
</carrier>
</carriers>

<devices>
<device>
<manufacturer name="default">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="Samsung">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="SAMSUNG">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="samsung">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="motorola">
<atc_textures>1</atc_textures>
</manufacturer>
</device>
<device>
<manufacturer name="samsung">
<model name="modelxxx">
<atc_textures>1</atc_textures> <!-- sample to override manufacturer value for an specific device -->
</model>
</manufacturer>
</device>

<device>
<manufacturer name="htc">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="HTC">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="Htc">
<atc_textures>1</atc_textures>
</manufacturer>
</device>
<device>
<manufacturer name="Sharp">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="SHARP">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="sharp">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="Sony Ericsson">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="acer">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="sony">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="LGE">
<atc_textures>1</atc_textures>
</manufacturer>
</device>

<device>
<manufacturer name="lge">
<model name="LG-SU660">
<atc_textures>1</atc_textures>
</model>
</manufacturer>
</device>
</devices>

</settings>```

To be continued
24th May 2011, 04:21 PM |#14
Inactive Recognized Developer
Astana
Thanks Meter: 8,144

Donate to Me
More
Continued

Quote:

In principle this is sufficient, but you can still, just in case, correct and "data.txt".

HTML Code:
```PVRT:http://dl.gameloft.com/hdplus/android/DH2/i9000/ML/1.0.4/DH2_FINAL_PVRTC_104.zip
ATC:http://dl.gameloft.com/hdplus/android/DH2/HTC_EVO/ML/1.0.4/DH2_FINAL_ATC_104.zip
DXT:http://dl.gameloft.com/hdplus/android/DH2/LG_STAR/ML/1.0.4/DH2_FINAL_DXT_104.zip```
It specifies which cache to use and where it is, for each type of accelerator. Address of 2 nd line, we copy in the 1 st and 3rd.
HTML Code:
```PVRT:http://dl.gameloft.com/hdplus/android/DH2/HTC_EVO/ML/1.0.4/DH2_FINAL_ATC_104.zip
ATC:http://dl.gameloft.com/hdplus/android/DH2/HTC_EVO/ML/1.0.4/DH2_FINAL_ATC_104.zip
DXT:http://dl.gameloft.com/hdplus/android/DH2/HTC_EVO/ML/1.0.4/DH2_FINAL_ATC_104.zip```
Thus, we point out the game, so it is not dependent on the type of accelerator used cash for "Snapdragon".
After that, the game should work correctly. By the way I always puzzling why the spread 10 times the cache under the "Snapdragon", with the headings "Cash for Desire ","Cash for Desire z ","Cash for Desire HD " if they are the same? Moreover, in games there are usually only 3 types of caches, for different video accelerators. This will make sure you can look a file "data.txt".

If the game does not start
Sometimes more so that the game does not start, but the objective reasons for this. Moreover, if the correct model of the device in "build.prop" game starts. This means that somewhere in the game code is a check Model/phone manufacturer, which resulted in the game just closes. It is clear that to solve this problem you need to make the game think she gets the right devices. For example, in "HTC Desire", if it is of course supported by the game. With the help of search through all the "*. smali" file and find those which meet the code "Landroid/os/Build;>MANUFACTURER:Ljava/lang/String" or "Landroid/os/Build;>MODEL:Ljava/lang/String". Thus we find the definition of the model code/ phone manufacturer.
HTML Code:
```sget-object v0, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;

sget-object v1, Landroid/os/Build;->MODEL:Ljava/lang/String;```
We need to be replaced by
HTML Code:
```const-string v0, "HTC"

const-string v1, "HTC Desire"```
(variables v0, v1-listed for an example, in your case, they may be different)
And so with all the files found.
In addition to the model/phone manufacturer in the same way in the game can also check the firmware version, or an android, and if it interferes with the launch of the game, these inspections can proceed similarly.

Analysis software package
Quote:

Analyze JAVA-byte code files "*. smali", occupation rather complicated and a little sweet. But there is a way we can decompile apk-file and get the source code of JAVA. While these sources and are not suitable for the compilation, but a study of the program make it easy at times. For this we need 2 programs dex2jar and jd-gui, they should be extracted to arbitrary folders. Next, using the archiver with guinea apk-file to extract and copy the folder with the "dex2jar" file "classes.dex". From the command prompt run the command "dex2jar.bat classes.dex", as a result of the last in the folder "dex2jar" get file "classes.dex.dex2jar.jar". Now run the program "jd-gui" in her opening, obtained earlier, the file "classes.dex.dex2jar.jar".
The result is a readable code JAVA.

24th May 2011, 04:28 PM |#15
Inactive Recognized Developer
Astana
Thanks Meter: 8,144

Donate to Me
More
Translated with Google translator and me!
24th May 2011, 06:05 PM |#16
Member
Thanks Meter: 0

More
try to download asphalt5 here www.forum.se-x10.pl the menu is too big?
25th May 2011, 07:45 PM |#17
Senior Member
Miskolc
Thanks Meter: 14

Donate to Me
More
Quote:
Originally Posted by paul-xxx

this site a bad check. I can not register there.

neither i...i fill in everything, but it says i need to fill in the market things...
26th May 2011, 02:52 PM |#18
OP Member
Thanks Meter: 68

Donate to Me
More
hah

"Gadu-Gadu" is Polish communicator, messenger. You must write eg. "1234"
28th May 2011, 06:40 PM |#19
Member
San Pedro
Thanks Meter: 6

More
hey guys heres a site in spanish (much more readable) just register and have fun!!!

http://www.se-planet.com/foro/index.php?board=111.0
29th May 2011, 07:09 PM |#20
Senior Member
Santiago
Thanks Meter: 93

More
I tried this tutorial with Galaxy on Fire 2, and I can't find OnDraw on any of the .smali files.
8th September 2011, 08:06 PM |#21
Senior Member
Thanks Meter: 12

More
Hvga
Do I have to replace only the getWidth with const/4 v1, 0x320 and getHight
with const/2 v2, 0x1E0?
Or do I need to do more?

Btw, when I try to compile my apk using apk manager, I get an java error.

 Guest Quick Reply (no urls or BBcode) Message:
 Thread Tools Search this Thread Search this Thread: Advanced Search Display Modes Linear Mode