[补丁发布帖]javaloder  For  C218ZCEJ0_T

wanghe100

普通会员
2007-01-02
28
0
0
补丁名称:javaloder
固件版本:C218ZCEJ0_T
补丁来源:http://agereclub.ru
来源固件:X140XEEG1
补丁功能:java下载补丁。需要与DownLoadLimit 配合使用,否则无法下载大游戏。
补丁移植:wanghe100
补丁使用介绍:
jar,jad修改说明:
一个原本叫Astro3003.jar的文件,我们用WinRAR解压缩其原本对应的Astro3003.jar,用记事本打开META-INF文件夹下的MANIFEST.MF可以看到MIDlet-Vendor: Microjocs,意思是这个jar的作者或公司叫Microjocs,这个无关紧要,你知道找到MIDlet-Vendor的值就可以了,我们还可以看到MIDlet-Name: Astro3003,意思时这个游戏的名字是Astro3003,于是我们就把的Astro3003.jar重命名为Microjocs_Astro3003.mmf,所以我们的Astro3003.jad就要重命名为Microjocs_Astro3003.mmf与之配套,这个重命名规则应该不复杂吧……总结一下,就是 作者名_原名.mmf
如果想游戏上传后显示中文名,就用记事本打开Astro3003.jad,将MIDlet-Name: Astro3003中的Astro3003改为你想要的中文名,然后将文件另存为“Microjocs_Astro3003.mmf”文件就可,注意编码要选“UTF-8”,保存类型选“所有文件”。
注意:jad文件开头的两个字母必须是“MI”例如:MIDlet-Vendor: Microjocs的“MI”否则jad文件就会下载不成。jar和jad改文件名后不能放在同一个目录下。jad和叫jar文件下载后手机的游戏目录不能及时刷新,将手机关机再开机就可以了。因为中俄固件的不同,现在的补丁只能下载一个游戏。

补丁原理:因为jar文件的开头两个字母为“PK”,jad文件的开头两个字母为“MI”。在用Samsung Firmware Editor v2.0下载铃声时手机会先将文件保存在缓存区,然后截取文件的头两个字母,若为“PK”就将文件作为jar文件保存,若为“MI”就将文件作为jad文件保存,两者都不是就仍作为铃声保存。
 

附件

wanghe100

普通会员
2007-01-02
28
0
0
这个补丁的功能不如从C200XEED1移植过来的javaloder_v1_1强大,但这个补丁比较简单,我将我用的制作补丁的源文件也一并发了出来,因为中文版本的固件Java Record length长度时0x188,而俄文版本的固件Java Record length长度时0x88,所以现在的补丁只能下载一个游戏,希望大家一起修改,让补丁早日完美。
.equ mmi_javaloder 0x51720
.equ kid_keybeep 0x5D440
.equ GSMstrcat 0x12F3A0
.equ initializeFiles 0x29EE30
.equ UPDATE_MIDletInfoTable 0x29FB34
.equ getEmptyFileTableSlot 0x29E040
.equ storeBufferToFile 0x29E39C
.equ storeFileNameAndIDAndFileSize 0x29DDE4
.equ storeFileNameTable 0x29EDE8
.equ DownMMF 0x0135A5B8
.equ totalMIDletCnt 0x01020EF8
.equ FileNameTable 0x012D29C4
.equ back 0x2D9738 ;0x2C2628 ; 这个函数我也不知道名字,就自己命名了。
.equ word1 0x517F8;"PK"
.equ word2 0x517FE;"MI"
.equ word3 0x51804;".jad"
.equ word4 0x5180C;".jar"
.equ word5 0x51814;"e:\S100\"
.equ word6 0x51820;"_suite"

.org 0x2D96A0
BL mmi_javaloder

.org 0x51720 ;这里是网标的内存,我用来写新的函数了

PUSH {R0-R6,LR}
LDR R4, =back
LDR R0, [R4]
ADD R0, #0x4
LDRH R0, [R0, #0]
LDR R1, =word1 ;"PK"
LDRH R1, [R1, #0]
CMP R0, R1
BEQ jar
LDR R1, =word2 ;"MI"
LDRH R1, [R1, #0]
CMP R0, R1
LDR R5, =word3 ;".jad"
B suite

jar:
LDR R5, =word4 ;".jar"

suite:
SUB SP, SP, #0x90
MOV R0, #0x0
STR R0, [SP]
MOV R0, SP
LDR R1, =word5 ;"e:\S100\"
BL GSMstrcat
LDR R7, =DownMMF
ADD R1, R7, #4
BL GSMstrcat
LDR R1, =word6 ;"_suite"
BL GSMstrcat
MOV R1, R5
BL GSMstrcat
MOV R0, #0x1
BL kid_keybeep
BL initializeFiles
BL UPDATE_MIDletInfoTable
LDR R2, =totalMIDletCnt
LDRB R2, [R2]
CMP R2, #0xA
BGE save
MOV R0, #0xC
BL getEmptyFileTableSlot
CMP R0, #0x0
BEQ save
MOV R6, R0
MOV R0, #0x1
BL kid_keybeep
LDR R2, [R4]
ADD R2, #0x4
MOV R1, R6
MOV R0, #0x64
LDR R3, [R7]
BL storeBufferToFile
MOV R1, R6
LDR R2, [R7]
MOV R0, SP
BL storeFileNameAndIDAndFileSize
LDR R0, =FileNameTable
MOV R1, #0x8C
MUL R1, R6
ADD R0, R0, R1
ADD R0, #0x88
LDR R2, =totalMIDletCnt
LDRB R1, [R2]
STRB R1, [R0]
BL storeFileNameTable
BL UPDATE_MIDletInfoTable
MOV R0, #0x1
BL kid_keybeep

save:
ADD SP, SP, #0x90
POP {R0-R6}
MOV R4, #0x1
SUB R7, R4, #1
POP {PC}

exit:
POP {R0-R6}
LDRH R7, [R0, #2]
CMP R7, #0x0
POP {PC}

.org 0x517F8 “PK MI .jad .jar e:\S100\ _suite”
.HEX 504B000000004D49000000002E6A6164000000002E6A617200000000653A5C533130305C000000005F737569746500000000