首先用HALO打开游戏 以索爱S700版本(240X320)修改到联想S700(240X400)为例
然后全文搜索 sipush(sipush表示从本地变量中加载常数或数值到操作数栈中,这里的意思是从屏幕变量到操作数栈)
之后会发现下面有很多东西
这个时候怎么确认哪里才是我们要去修改的地方呢?
我们只需要直接查看方法名为init的地方
(init往往用来执行你的程序需要做的所有初始化工作,当在标记中属性读入后开始调用。以init参数的名称为参数,调用了哪里的方法,返回值也就是init参数的值。
init() 方法一般是执行的第一个方法,也叫初始化方法。
举个例子吧!
import java.awt.*;
import java.applet.*;
public class nihao extends OO
{
public void init()
{
setBackground(Color.blue)
}
}
init()方法用于在启动OO程序之前做一些必要的初始化工作!运行OO程序时首先调用该方法,而且只被调用一次.
此例就是用init()方法设置OO背景区域setBackground的颜色.)
可以看到其中 sipush 240 sipush 320 就是游戏的分辨率
接下来切换到 代码编辑表 将sipush 240不变 sipush 320 修改为
400让它适用于S700/60等240X400分辨率的手机
你还可以根据自己手机的屏幕来修改成其他数值,例如320X240就是横屏(这个改完需要改键,以后再说)
修改好之后记得保存方法,编译,打包
测试下,把模拟器设置到240X400的画面
全屏显示,成功.
原版 妖精国度之神秘圣泉_240X320.jar(大小301k)
修改后妖精国度之神秘圣泉_240X400.jar(大小301k)
这个方法到底能适用于多少游戏和软件上,我也不好说,游戏修改是件很累人的事情,要一个一个去试,有的时候几十个版本也都是失败,没有100%成功的.
接上
至少目前我知道有些游戏就不能直接按上面的方法修改,或者修改无效,那怎么办呢?
我们可以尝试让游戏变成自适屏(即任何分辨率手机都通用)
但是把游戏改为自适屏也是有前提的,必须是游戏的分辨率显示是由全局变量(全局变量也称为外部变量,它是在函数外部定义的变量,它不属于哪一个函数,就像自适的游戏由这个全局变量全程控制分辨率,不属于哪个函数)控制的
比如轩辕剑3,我们用DJ反编译后打开看到如下代码
{
public a()
{
// 0 0:aload_0 // 1 1:invokespecial #50
Canvas()>
l = false;
// 2 4:aload_0 // 3 5:iconst_0 // 4 6:putfield #34
l>
m = 0;
// 5 9:aload_0 // 6 10:iconst_0 // 7 11:putfield #35
m>
c = 0;
// 8 14:aload_0 // 9 15:iconst_0 // 10 16:putfield #25
c>
o = null;
// 11 19:aload_0 // 12 20:aconst_null // 13 21:putfield #37
o>
k = null;
// 14 24:aload_0