玩家宝典:原创+精彩!
本机型论坛入口
 宝典文章搜索

 各机型宝典
 作者其他宝典文章
 本机型宝典文章
  关于来电防火墙和农历..
  玩转手机电子书——Ba..
  OT735i摄像功能BUG2
  Ak——易被遗忘却不该..
  用你的阿卡手机浏览ht..
 所有机型宝典文章
  小谈J300C的几个缺点
  打造自己的移动影院小m
  越级测评:SE K700C VS..
  再谈小3 DIY MP3功能
  修改多普达585的改开..
实用技巧 玩家奖数 33 | 评论次数  | 查看/发表评论   
735i的最强游戏方法
cj20038413 2005-10-04 15:11:04

   关于我自己改的游戏,大家在bbs.52ak.com和http://yygames.qq.topzj.com/index.php以及http://club.joyes.com/Board/Board.asp?BoardID=150都可以找到
     关于字体修改的补充(0,0,8)---------对应03031008b8
                       (0,1,16)--------对应03041010b8

   看出区别了吗?恩,03---0,  04---1,其他的自己可以推了,实在不行的用xp自带的计算器可以弄出来.

  初级篇
  恩,最近开始修改游戏,有了一点自己的体会和心得,当然要感谢kim,yy,sofy,小召等人的帮助和指点,这篇文章也来之不易,共写了两次,同样的字打了两片……汗……

  看过众多高手的文章,觉得都有点偏向于复杂化和深奥化,这里我尽量写的简单一点,大家也好明白的快一点,好了废话不多说,直奔主题(这么多废话,拖出去砍了)
狂汗…………
 
    对于修改来说,首先要备齐工具,这里推荐winhex(16位进制编辑器)ultraedit,Java源代码反编译专家,当然还有你的手机所对应的模拟器,至于java环境一类的你也可以选装,我现在没有装。

    首先,我们先来看看一般情况下的全屏解决的问题,对于阿尔卡特ot735i的手机来说,受着黑条的痛苦很久了(什么是黑条??就是游戏时屏幕下方的黑黑的一条,moto c650等一些机子也有这种情况,对此,可以直接用fulljava来处理,735i注意调成128*128的哦^-^

   然后,我们再来看看关于中文字体的显示问题,这点在于735i和三星x108/x608中尤 为明显,这点winfy和其他高手也都说过了,在这里我简单的说一下就行了(对了,关于字体,主要是游戏调用了小号字体的缘故,而735i和三星用的是中号字体,而且无法和moto一样自动调用中号字体,所以一般的中文游戏都没有任何显示……)

   在修改时,一般就针对于getfont(0,0,8)就可以了,那些使用getfont(0,0,16),getfont(32,0,8)一类的游戏大致也差不多主要的差异也就是在16位进制的转换上有所不同……

   在开始时,打开游戏jar文件,从第一个class文件开始,挨个打开,在里面查找getfont或者getfong(0,0,8),在找到后,看一下getfont的位置,大概记一下,改完后在来看看有些什么变化,注意,多看看程序的习惯要养成!^_^

    之后把有getfont的class拉到jar文件之外,用winhex打开,在搜索中点击查找16位进制数……,一般情况下(getfont(o,o,8)时)输入1008(其他的也只是改了最后的数字8,自己也可以推一下),将其改为1000即可,成功后,看一下程序,然后就传回jar文件,之后用模拟器试一下就行了。

    这里有史库比2的修改对比图,注意,有些模拟器上可以显示小号字体,但是并不代表手机可以!比如我的就是……汗

    之后我们再来看看按键的修改,一般情况下,按键的修改方法都是大同小异的,在我改过的游戏中一般遇到的有if 和 case情况,这两种情况呢,又以if 较为简单,他不用太多的东西就可以轻松实现,所以也是我们最喜欢碰到的情况,呵呵,关于if语句,主要方法和改字体一样,搜索查找,用winhex修改,不过对应的就是faa0和f9a0了,将其修改为所对应的按键就行了,为什么是fa,f9呢?

   大家往下看:
阿尔卡特557/556moto c系列    诺基亚:                阿尔卡特ot735i  moto v300以后的机型
按键     键值  16进制值   按键      键值  16进制值  按键       键值      16进制值    键名
左软键   -21   EB       左软键    -6      FA        左软键     21        15         soft1
右软键   -22   EA       右软键    -7      F9        右软键     22        16         soft2
上方向键 -1    FF       上方向键  -1      FF        上方向键   1         01          up
左方向键 -2    FE       左方向键  -3      FD        左方向键   2         02          left
下方向键 -6    FA       下方向键  -2      FE        下方向键   6         06          down
右方向键 -5    FB       右方向键  -4      FC        右方向键   5         05          right
                                             action(735i)/ok: 20        14          select
其他的数字键手机上都一样,具体如下:
按键       键值      16进制值    键名
0键       48         30          num0
1键       49         31          num1
2键       50         32          num2
3键       51         33          num3
4键       52         34          num4
5键       53         35          num5
6键       54         36          num6
7键       55         37          num7
8键       56         38          num8
9键       57         39          num9
*键       42         2A          star
#键       35         23          pound


    大家只需将查到的键改为想要的就行了,而我们一般只要改左右的软键就行了,所以一般都先搜索fa a0 ,这个语句反过来就是表示if  i==-6 的意思,大家看程序就是看这个!!当然要s40的游戏才是这样的,如果改其他按键,只要替换相应的代码就行了,比如我要把557游戏的左软键改为735i的,在class中搜-21 或者 keypressed(调用按键的命令),,找到后,用winhex查eba0,然后替换成15ao就行了,关于if的修改kim作了非常详尽的文章在557的帖子里,大家可以参考一下!参考请点击这里

    这里,我在说说case的方法,其实我也是刚接触case,开始的时候弄了半天不明白,一头雾水……在那里狂汗不已……还好群里的高手yy他们对我是非常的耐心的解释,才勉强搞定。这里大家要多想想,多思考一下,硬来是没有什么好下场的……我第一次改的case游戏弄了好几个小时还是错误……汗ing……

    首先,大家顺被一些第三方的软件比如记事本,word之类的,呆会儿有用,先打开。

    当然你的先判断一下是诺机鸭的还是其他的游戏,比如鸭机的就是左软为-6,右软为-7,moto和卡记等的就是-21,-22,这个比较重要,要自己在class中判断方法就是查找……汗(最烦琐却最实用)……
之后要注意你所找到的-6 -7或-21 -22 的位置,记清楚了,改完回来在看看这里的变化!!

    来不及找个好例子,就这样说好了,因为之前的另一个游戏road to riches还有其他的问题,不便作为范例,我手里有没有多余的游戏……

    好,继续,现在我们用winhex打开你所确认的那个class,查找ff ff ff f9或者ff ff ff fa,一般光标会停在你所找到的

    第一个fff语句,注意他前面的7个0和数字x,即00 00 00 0x,这里x是多少,表示后面有多少个组,所谓组,是我取的名字,便于理解而已,大家想叫什么都行,而组共有16个代码,一般形式为xx xx xx xx xx xx xx xx,而每8个代码为一个小组,每个小组内的顺序不可以打乱!!注意!!

   这里大家看看这就是要找的数据!

00 00 00 02 /ff ff ff fa 00 00 xx xx / xx xx xx xx xx xx xx xx/
分组就是这样分的,前面的0000最好保留一起用!

    好,在winhex里找到后(就是先搜索出来的)用鼠标把你刚才找的16位代码圈出来,现在就点击工具栏的编辑--全部复制--16位进制数值,点了后把winhex最小化,在事先准备好的记事本(word)里粘贴两次,(其中一个作为对照用,另外,此后还要用!小心不要搞混了,放在哪里不管)

   好了,现在对照前面的各机型的按键16位数值进行修改了!是在记事本中哦^_^

    具体的操作是,比如说这种代码,
00 00 00 02 /ff ff ff fa 00 00 xx xx / xx xx xx xx xx xx xx xx/,直接用00 00 00 xx代替,这里的xx代表你所要改的键值,一般就是你的左右软键的值(16位的哦),记住不要改反了,否则游戏中你的左右键就是反的,记住这里只替换ff ff ff fa或者ff ff ff f9因为只替换左右软键,将这两个替换为00 00 00 xx就行了,之后在为刚替换的数据排序!!!
   重要!!比如:
改后:00 00 00 03 / 00 00 00 16/xx xx xx xx /00 00 00 15/yy yy yy yy/zz zz zz zz/zz zz zz zz
这个需要将00 00 00 16/xx xx xx xx与00 00 00 15/ yy yy yy yy
整体对换00 00 00 03 / 00 00 00 15/yy yy yy yy/00 00 00 16/xx xx xx xx /zz zz zz zz/zz zz zz zz即这个样子……后面的xx yy zz一类的东东大家可以看看,不要动啊,还有这里的‘/’符号是为了让大家看的清楚而画的,真正改的时候不能有的啊

好了,第一步完了,

接下来,打开ue即ultraedit,点击 搜索--替换,这是会有一对话框弹出(有点说的多了……不过,这里很容易出错……而且一错就完了),在查找栏把你之前的对照用的数据复制贴上去,记住在数据的最后面不能有空格,仔细检查,替换栏就贴上你改好的数据,注意鼠标此时最好在点一下ue中class文件的左上方,因为ue是从上往下搜的,之后直接点替换,成功后保存,在到winhex里去,之前是最小化,先在会有一对话框提升你更新数据,点‘是’。然后重复操作……这个class里面改完了,就改下一个,知道把你所有确定的有case -6 /-7或者case -21 /-22的class改完……
汗……
繁重的体力和脑力还有眼力活……

一般熟练后在10分钟类全部搞定,大家多多努力……

改完后打开改过的class文件看看,顺便还可以查查你该好的数据,一般情况下(好象没有特殊吧),原来的的诸如case-6 -7 都成了你改的 case  xx了

呵呵,传回你的jar文件,试着运行一下,应该是ok吧!

最后,在给大家说说游戏的名字修改,这个好象三星的同志说过的,其实我的方法很简单的,注意,不是在游戏中,是在手机上的名字显示,一般都是为英文的吧,呵呵,其实你打开jar里面会有一个meta-inf文件夹,打开,然后把里面的唯一的文件manifest.mf拖到外面,随便你放在哪儿,只要你找的到,我一般就放在桌面,好了,在桌面上打开manifest.mf,有很多的东东,很多都是没有用的,而且里面的有些东西反而阻止了一部分游戏的运行!!我就经常遇到这种情况,具体必要的东西如下
Manifest-Version:
MicroEdition-Configuration:
MicroEdition-Profile:
MIDlet-1:
这些是必须要的,删了好象游戏就不能用了!!(应该是吧,反正我没有试过),还有三个一般也保留

MIDlet-Name:(这个就是手机上的名字显示,你写什么就显示什么)
MIDlet-Version:(版本)
MIDlet-Vendor:(附加信息,你可以写个本人修改之类的东西)
除了name,和vender,其他的最好不改,而剩余的东西一个字:删!

改好后点击:文件--另存为,什么都不变,只是把格式改为utf-8,保存,在传回jar的meta-inf,覆盖原来的manifest.mf
试试,你们的一些以前不能运行的游戏是不是可以了?
呵呵,那些由于机能原因而不能运行的游戏大家就不要在想了,一般这样改了还是不能用的游戏,还有三种途径解决:
一,彻底修改游戏的程序,使之对应自己的手机,一般人……狂汗……,
二,买部新的手机……
三,放弃这个游戏……

                                                                 (完)
补遗:关于jar的大小,复杂的调法这里不作过多说明,因为涉及到修改整个游戏的程
      序,简单点的就是删掉一些可以不用的东西,比如mid音乐!修改成功的例子有alest2在按键改后,打上全屏的补丁,有135k左右,偶将mid全删后只有108k。希望这个对手机内存紧张的朋友有点帮助。
     十六进制数的表达方法如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。Java规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字0,而不是字母O)
        以下是一些用法示例:
         int a = 0x100F;
         int b = 0x70 + a;10进制数转换成16进制的方法,和转换为2进制的方法类似, 惟一变化:除数由2变成16。
         同样是120,转换成16进制则为:
         被除数 计算过程 商 余数
           120 120/16 7 8
           7 7/16 0 7
           120转换为16进制,结果为:78。
         原码、反码、补码。
        我们已经知道计算机中,所有数据最终都是使用二进制数表达。
        我们也已经学会如何将一个10进制数如何转换为二进制数。
        不过,我们仍然没有学习一个负数如何用二进制表达。
        比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
        00000000 00000000 00000000 00000101
        5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
        现在想知道,-5在计算机中如何表示?
        在计算机中,负数以其正值的补码形式表达。
        什么叫补码呢?这得从原码,反码说起。
        原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
        比如 00000000 00000000 00000000 00000101 是 5的 原码。
        反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
        取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
        比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
        称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。
        反码是相互的,所以也可称:
        11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。
        补码:反码加1称为补码。
        也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
        比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11 111111 11111010。
        那么,补码为:
        11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 111 11011
        所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十
        六进制:0xFFFFFFFB。
        再举一例,我们来看整数-1在计算机中如何表示。
       假设这也是一个int类型,那么:
           1、先取1的原码:00000000 00000000 00000000 00000001
           2、得反码:     11111111 11111111 11111111 11111110
           3、得补码:     11111111 11111111 11111111 11111111
          可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF。
      注:这段文字来自sofy,其实16位的东西在c语言上面就详细的很了
          这方面的东西大家还嫌不够的话可以找书来仔细研究研究
          (偶可省了不少工夫去写了,感谢sofy)

                                    文章来自手机修改群:cj20038413

  首页 | 上页 | 下页 | 末页 (1/2 页)  
查看/发表评论 >>>
  发表评论
  发贴请遵守《互联网电子公告服务管理规定》《友人网服务条款》
用户名:
用户名: 密码:  
内容:
 

关于我们 | 网站声明 | 服务条款 | 广告服务 | 意见与建议 | 业务联系
友人网 1998-年版权所有