大家修改歌名的时候是否遇到这样的问题:内置英文歌名的字符不是过多就是过少。譬如说 s208 G3 版本第4首铃声的歌名【Jesu Joy of Man's Desiring】和 第14首铃声的歌名【铃声1】。修改歌名时要么字符数目受限制不够用,要么原来的字符数目过多而在修改后的歌名后面多出类似【...】这个讨厌的符号。现在就让我们自己动手来解决这种限制,修改出满足使用需要的歌名,Let's DIY。
若图片看不清楚,请点击以放大图片。
一、分配字符数目
我们采用修改歌名指针的方式重新安排每首歌名的字符数目。
首先需要知道内置所有铃声的歌名字符加起来是多少字节。使用 SAMSUNG DIY 打开完全备份的bin文件,转到【手机字符替换区】,把【从头查找】打勾。我还是以我的 s208 为例阐述实现方法,【要查找的字符串】填入第一首铃声的歌名,s208 是【Arabesque】,接着点击【查找】按钮,记下【起始地址】0016F190 。
同样方法,记?***詈笠皇琢迳?綜hopsticks March】的【结束地址】0016F4E3 。
运行“计算器”,查看菜单里选择【科学型】。下面点选【十六进制】,将【起始地址】0016F190 复制到“计算器”(使用 Ctrl+C、Ctrl+V)。
点选【十进制】,得到【1503632】,Ctrl+C 将之复制到剪贴板备用。
点【C】按钮清空数据,再点选【十六进制】,将【结束地址】0016F4E3 复制到“计算器”,重复上面的步骤得到【结束地址】0016F4E3 的“十进制”数值 1504483 。接下来计算,别忘了剪贴板中有【1503632】。
1504483-1503632=851+1=852
【852】字节便是歌名字符所占用的总大小。
然后就得思考怎样分配每首歌名的字符数目,注意这样一个规则:1个汉字同1个英文字母一样都占用2字节,歌名可用的字符数目总比分配的要少1个。也就是说,若分配了10个字符,歌名只能使用9个字符。为什么呢?!因为最后一个字符位置用来作为隔断位,这样手机才能知道一个歌名到哪个位置才算结束。
我是这样分配的:#1-#26 11个字符,#27-40 10个字符。
(26x11+14x10)x2=852
因为最后一首铃声的歌名后面已经有一个 0000 的隔断位,所以它可以多一个字符用来显示歌名。
这样,最终的歌名字符容量:#1-#26 可以显示最多10个字符,#27-#39 可以显示最多9个字符,#40 可以显示最多10个字符。
二、修改歌名指针
使用 Hex Workshop 或 Ultra-Edit 打开完全备份的bin文件,按F3查找第一首歌名的十六进制起始偏移地址 90F11600 。可能大家要问,为何不是 0016F190 呢?因为这是 Intel 的数据格式,需要高低位对调。
如果【查找所有实例】打勾,则会在主程序的右下角出现符合查找条件的结果列表,这里我只找到一个地址,就是它了!点一下那个地址,程序自动跳转到符合条件的地方并高亮显示。看看那一片数据,是不是很有规律?如果你还不是很确信这个地址是否正确,那么再查找一下第二首歌名的偏移地址,看看是不是窗口中跟在后面的数值 A4F11600 。窗口中一行显示8个偏移地址,那么总共就是5行地址了。下面的是英文状态和简体中文状态的歌名指针,我们不必理会,只需修改我们需要的简体中文状态的歌名指针。
接着又该 Excel 登场了,我们用它计算重新安排字符数目后的每首歌名的起始偏移地址。注意需要先在【工具】→【加载宏】将“分析工具库”打勾。
如图所示分两段分别输入两个公式 =DEC2HEX(HEX2DEC(A1)+22,8) 和 =DEC2HEX(HEX2DEC(B1)+20,8) 。其中A1单元格是已知的歌名数据的起始地址,需要自行输入,然后在A2单元格输入上面的第一个公式,之后拖动该单元格的填充句柄到A27。再将A27单元格中计算出来的数据输入到B1单元格,注意千万不能用复制的方法,这样会将公式也一起复制过去的,而我们只需要单纯的数据。将第二个公式填入B2单元格,因为A27与B1是重复的数据,所以需要拖动B2单元格的填充句柄到B14才满40个偏移地址。公式中的数值22和20是包括了一个隔断位的数值,22字节是11个字符,去掉1个字符位置的隔断位,真正能显示的歌名是10个字符!
继续转到 Hex Workshop 中使用 Ctrl+N 新建一个空白文件,将图中所示5行地址复制过去,注意记下偏移 00474C60 ,这个偏移在生成刷机文件的时候有用。现在你需要做的就是把在 Excel 中的歌名指针数据按照高低位对调的规则逐个替换这40个地址,不要嫌麻烦,这步操作没办法偷懒了。第一个指针就是原先的不用改,剩下39个慢慢来吧。例如将第二个指针 A4F11600 修改为 A6F11600 。
全部修改完成后将之保存为 bin 文件。
使用 SAMSUNG DIY 的 bin->s3 功能将刚刚修改哪歉?bin 文件转换成修改歌名指针的S3刷机文件,起始地址填入 00474C60 。
若图片看不清楚,请点击以放大图片。
一、分配字符数目
我们采用修改歌名指针的方式重新安排每首歌名的字符数目。
首先需要知道内置所有铃声的歌名字符加起来是多少字节。使用 SAMSUNG DIY 打开完全备份的bin文件,转到【手机字符替换区】,把【从头查找】打勾。我还是以我的 s208 为例阐述实现方法,【要查找的字符串】填入第一首铃声的歌名,s208 是【Arabesque】,接着点击【查找】按钮,记下【起始地址】0016F190 。
同样方法,记?***詈笠皇琢迳?綜hopsticks March】的【结束地址】0016F4E3 。
运行“计算器”,查看菜单里选择【科学型】。下面点选【十六进制】,将【起始地址】0016F190 复制到“计算器”(使用 Ctrl+C、Ctrl+V)。
点选【十进制】,得到【1503632】,Ctrl+C 将之复制到剪贴板备用。
点【C】按钮清空数据,再点选【十六进制】,将【结束地址】0016F4E3 复制到“计算器”,重复上面的步骤得到【结束地址】0016F4E3 的“十进制”数值 1504483 。接下来计算,别忘了剪贴板中有【1503632】。
1504483-1503632=851+1=852
【852】字节便是歌名字符所占用的总大小。
然后就得思考怎样分配每首歌名的字符数目,注意这样一个规则:1个汉字同1个英文字母一样都占用2字节,歌名可用的字符数目总比分配的要少1个。也就是说,若分配了10个字符,歌名只能使用9个字符。为什么呢?!因为最后一个字符位置用来作为隔断位,这样手机才能知道一个歌名到哪个位置才算结束。
我是这样分配的:#1-#26 11个字符,#27-40 10个字符。
(26x11+14x10)x2=852
因为最后一首铃声的歌名后面已经有一个 0000 的隔断位,所以它可以多一个字符用来显示歌名。
这样,最终的歌名字符容量:#1-#26 可以显示最多10个字符,#27-#39 可以显示最多9个字符,#40 可以显示最多10个字符。
二、修改歌名指针
使用 Hex Workshop 或 Ultra-Edit 打开完全备份的bin文件,按F3查找第一首歌名的十六进制起始偏移地址 90F11600 。可能大家要问,为何不是 0016F190 呢?因为这是 Intel 的数据格式,需要高低位对调。
如果【查找所有实例】打勾,则会在主程序的右下角出现符合查找条件的结果列表,这里我只找到一个地址,就是它了!点一下那个地址,程序自动跳转到符合条件的地方并高亮显示。看看那一片数据,是不是很有规律?如果你还不是很确信这个地址是否正确,那么再查找一下第二首歌名的偏移地址,看看是不是窗口中跟在后面的数值 A4F11600 。窗口中一行显示8个偏移地址,那么总共就是5行地址了。下面的是英文状态和简体中文状态的歌名指针,我们不必理会,只需修改我们需要的简体中文状态的歌名指针。
接着又该 Excel 登场了,我们用它计算重新安排字符数目后的每首歌名的起始偏移地址。注意需要先在【工具】→【加载宏】将“分析工具库”打勾。
如图所示分两段分别输入两个公式 =DEC2HEX(HEX2DEC(A1)+22,8) 和 =DEC2HEX(HEX2DEC(B1)+20,8) 。其中A1单元格是已知的歌名数据的起始地址,需要自行输入,然后在A2单元格输入上面的第一个公式,之后拖动该单元格的填充句柄到A27。再将A27单元格中计算出来的数据输入到B1单元格,注意千万不能用复制的方法,这样会将公式也一起复制过去的,而我们只需要单纯的数据。将第二个公式填入B2单元格,因为A27与B1是重复的数据,所以需要拖动B2单元格的填充句柄到B14才满40个偏移地址。公式中的数值22和20是包括了一个隔断位的数值,22字节是11个字符,去掉1个字符位置的隔断位,真正能显示的歌名是10个字符!
继续转到 Hex Workshop 中使用 Ctrl+N 新建一个空白文件,将图中所示5行地址复制过去,注意记下偏移 00474C60 ,这个偏移在生成刷机文件的时候有用。现在你需要做的就是把在 Excel 中的歌名指针数据按照高低位对调的规则逐个替换这40个地址,不要嫌麻烦,这步操作没办法偷懒了。第一个指针就是原先的不用改,剩下39个慢慢来吧。例如将第二个指针 A4F11600 修改为 A6F11600 。
全部修改完成后将之保存为 bin 文件。
使用 SAMSUNG DIY 的 bin->s3 功能将刚刚修改哪歉?bin 文件转换成修改歌名指针的S3刷机文件,起始地址填入 00474C60 。