修改過手機JAVA遊戲

    最近開始修改遊戲,有了一點自己的體會和心得,當然要感謝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音樂!修改成功的例子有alest 2在按鍵改後,打上全屏的補丁,有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 111111 11 11111111 11111010。 稱:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00 000101 的反碼。 反碼是相互的,所以也可稱: 11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 000001 01 互爲反碼。 補碼:反碼加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語言上面就詳細的很了 這方面的東西大家還嫌不夠的話可以找書來仔細研究研究



遊戲的減肥法 一 減少圖片容量 方法1:將多張png圖片集成到一張圖片上。 這是最基本也是最有效的減少png圖片容量的辦法了。比如你有10張png圖片,每張10×15,現在你可以把它集成到一張100×15或者10×150或者X×X的圖片上去。這張大png圖片的容量比10張png圖片的總容量小很多。這是因爲省去了9張圖片的文件頭,文件結束數據塊等等,而且合併了調色板(如果10張圖片的調色板恰好相同,則省去了9張圖片的調色板所佔的容量!這是個不小的數字) 方法2:減少圖片的顏色數 減少顏色也算是一個方法?我想說的是什麼時候減,誰去減。如果遊戲完成後發現容量超出,此時在用優化工具減少顏色,雖然能降低圖片容量,但圖片效果可能就不讓你滿意了。所以,在美工作圖時就要確定使用的顏色數,手機遊戲使用的是象素圖,即一個象素一個象素點出來的圖像,所以預先規定調色板顏色數量是可以辦到的。不過,最終使用優化工具也是有用的,有時候相差一兩種顏色,但效果差別並不大,容量卻可以變小一些。呵呵,減少顏色確實可以算是一種方法。 方法3:儘可能使用旋轉和翻轉 這點不用解釋了 方法4:使用換調色板技術和自定義圖片格式 如果前兩種方法還不能滿足你對容量的要求,而你的遊戲中恰好使用了很多僅顏色不同的怪物,那麼可以試試換調色板技術。J2ME規範中規定手機至少可以支持png格式的圖片,每張png都帶有調色板數據,如果兩張圖片除了顏色不同而其他(包括顏色數)完全相同,則只要保存一張圖片和其他圖片的調色板,這相對於保存多張圖片來說節省了不少容量。不過這個方法挺麻煩,你得了解png文件格式,然後做一個工具提取出調色板數據和調色板數據塊在png文件中的偏移。內存中保存圖像仍使用Image,如果要換調色板,則將png文件讀入到一個字節數組中,根據調色板數據塊在png中的偏移,用新的調色板代替原來的調色板數據,然後用這個字節數組創建出換色後的Image。也許你覺得保存一張png和n份調色板數據的方法有點浪費。至少多保存了1份調色板數據啊!如果直接將圖像數據提取出來,在加上n份調色板數據,豈不是更節省容量。但是使用上面的方法,我們還可以用drawImage渲染。如果這樣自定義了圖片格式,那只有自己寫個渲染函數了,這倒還可以,只不過put pixel的速度在某些機器上非常慢。或者自己構造png格式數據,再使用Image.如果你真得決定這麼做,我還有個小建議,不要對圖像數據進行壓縮,zip壓縮大多數時候比你寫得壓縮算法好(參見J2ME Game開發筆記-壓縮還是不壓縮)。論壇上有位朋友提過使用bmp格式代替png格式,jar中圖片容量更小,也是一個道理。 二 減少圖片所佔內存 1 圖片所佔內存的計算 png圖片所佔用的內存並不對應於圖片容量。圖片佔用的內存的計算爲:width*height*bpp。bpp即爲系統內置的顏色位數。以Nokia 6600爲例,象素格式爲565共16位。所以一張100*100的圖片佔用100*100*(16/8)=20000字節,約爲19.5k的內存。象素格式是固定的無法改變,所以只有減少圖片的寬和高才能降低其消耗的內存。 2 減少Image對象數量可節約大量內存 減少Image對象數量不等於減少圖片數量。我的意思是說,將一張集成圖保存在一個Image對象中,通過setClip的方法從這個Iamge對象中選取你需要的圖像渲染。不過這個方法犧牲了一點速度,每幀都從集成圖Image中減切圖像的速度比無減切的渲染慢。但對於數目不多的渲染,比如精靈,使用這個方法沒問題。這個方法還有一個問題就是不能釋放集成圖中不需要的圖片,這就要看你集成的程度了。從圖片容量和內存管理的角度綜合考慮,我一般使用二次集成的方法。比如有n個精靈,先將各精靈所有的圖片集成到一張集成圖中,得到n張集成圖,然後將這n張集成圖再次集成到一張更大的集成圖中。這樣在jar中只存在一張集成圖。使用時,先將大集成圖分割載入到n個Image對象中即可。這樣各個精靈的圖片可以單獨管理了。 3 使用旋轉和翻轉 只保存一個原始的Image,需要時再旋轉或翻轉



中級篇按鍵修改之getGameAction(keyCode) 通過修改遊戲鍵值,我們知道keyPressed(keyCode)是怎麼回事。現在,我們來講講按鍵的另一種方式:getGameAction(keyCode) 同樣以簡單基礎爲切入點,這裏不會講太複雜的深入研究。 getGameAction(keyCode) 也就是說,這個值是由KEYCODE所得來的,值列表:鍵名 KEYCODE GAMEACTION 導航鍵上: -1 1 導航鍵下: -6 6 導航鍵左: -2 2 導航鍵右: -5 5 中鍵: -20 8 數字鍵1: 49 9 數字鍵2: 50 1 數字鍵3: 51 10 數字鍵4: 52 2 數字鍵5: 53 8 數字鍵6: 54 5 數字鍵7: 55 11 數字鍵8: 56 6 數字鍵9: 57 12 由上表可看出,如果一個遊戲採用了getGameAction(keyCode)這樣的方式,得出的值無論是導航鍵還是數字鍵的2、4、6、8,都可以來進行操作,節省了程序員的麻煩及節約了空間。而且getGameAction是標準API,即上表中的值在任何機型上都是相同的,所以也十分方便移植(多用在動作和射擊遊戲上)。 不過需要值得注意的是,getGameAction對NOKIA的左右軟鍵是有效的(數值暫不明)。但是對於MOTO來說(包括索愛等),getGameAction對左右軟鍵是無效的,具體數值爲0。所以如果這個時候仍然修改到左右軟鍵,就可能會出錯。另外#*鍵也都是無效,數字0暫不明。 學會getGameAction,對修改按鍵來說能夠更進一步。getGameAction的值雖然一般不用去修改,但是對閱讀代碼是有幫助的。而且有的遊戲會利用getGameAction來進行判斷,這個時候就需要利用到這方面的知識了。




之後我們再來看看按鍵的修改,這個是很重要的哦,因爲一般我們用fulljava改後的遊戲雖然可以運行,但是卻無法正常的操作,這個讓很多人非常的痛苦,其實這個只是遊戲遊戲中相應的指令的調用的按鍵不同而已,我們只需要將按鍵值修改一下就好了。一般情況下,按鍵的修改方法都是大同小異的,在我改過的遊戲中一般遇到的有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的遊戲纔是這樣的,如果改其他按鍵,只要替換相應的代碼就行了,比如我要把moto的遊戲的左軟鍵改爲735i的,在class中搜-21 或者 keypressed(調用按鍵的命令),找到後,用winhex查eba0,然後替換成15ao就行了 這裏,我在說說case的一般的修改方法,case是比較複雜的,特別是有些循環的…… 我開始的時候弄了半天不明白,一頭霧水……在那裏狂汗不已……這裏大家要多想想,多思考一下,硬來是沒有什麼好下場的,最好是用ida-pro邊分析邊改。
首先,大家順被一些第三方的軟件比如記事本,word之類的,待會兒有用,先打開。當然你的先判斷一下是nokia的還是其他的遊戲,比如nokia的就是左軟爲-6,右軟爲-7,moto和卡記等的就是-21,-22,這個比較重要,要自己在class中判斷方法就是查找……汗(最煩瑣卻最實用)…… 之後要注意你所找到的-6 -7或-21 -22 的位置,記清楚了,改完回來在看看這裏的變化!! 現在我們用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個代碼爲一個小組(這裏我用xx來表示程序中的16位進制數值),每個小組內的順序不可以打亂!!注意!!這裏大家看看這就是要找的數據! 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,有很多的東東,很多都是沒有用的,而且裏面的有些東西反而阻止了一部分遊戲的運行!!我就經常遇到這種情況,具體必要的東西如下 MicroEdition-Configuration: MicroEdition-Profile: MIDlet-1: MIDlet-Name:(這個就是手機上的名字顯示,你寫什麼就顯示什麼) MIDlet-Version:(版本) MIDlet-Vendor:(附加信息,你可以寫個本人修改之類的東西)除了name,和vender,其他的最好不改改好後點擊:文件--另存爲,什麼都不變,只是把格式改爲utf-8,保存,在傳回jar的meta-inf,覆蓋原來的manifest.mf。 
發佈了26 篇原創文章 · 獲贊 6 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章