设计开发

最近加入了Xperia X1的刷rom一族…

机器买来的时候已经被JS刷过Hard SPL了,省我自己费事了。JS刷的是CoinJun的6.1 v2.5,就像各大论坛上的机友说的那样,这个版本的rom的确是比较稳定的。但现在6.5已经快正式发布了,外加原rom系统里整合了一些我认为没用的东西,且不能单独删掉,于是便开始自己找rom刷刷玩了。
本来想找个中文rom的,但逛了许多论坛也没看到太合适的,总觉得整合的软件啊什么的太多了,用不少,于是上了国外比较知名的xda找英文rom刷,第一个试的是jack的4.3 lite,基本没整合什么东西,国内有不少人也推荐这个rom。挂上雅黑字体包和里面的nls替了区域设置后,基本的中文显示也没有问题了(闹钟里面的周六看不到,这个是目前发现的比较恶心的中文字体问题!)。由于lite净化的比较彻底,一些常用的东西,像任务管理器啊,mms彩信啊都要一个一个装,rom倒是带了个叫UC的解决方案,就是解决这些需要后装软件的问题,不过还得自己定义安装脚本,懒得折腾,慢慢装。
PS:由于最近刚换上联通的wcdma,正好试验了一把,信号一般,远没有达到7m的理论上限,不过刚起步的东西也可以理解,希望以后会好。6.1上有个问题就是hsdpa的连接问题,以前coinjun的6.1上刚开始建立数据连接的时候是H标志,但1分钟左右就会变回普通的3G标志,刷机后的6.5就会一直维持H标志,猜想是6.1会根据当前连接的实际贷款调整显示的标志,而这次刷的6.5却不会,但实际测试的数据传输速度依然是远没达到hsdpa的理论上限!

WM模拟器上DirectDraw的BackBuffer问题解决方法

上次在参考研究mobile sdk 6.0中自带的DDraw例子时发现在模拟器上跑到创建后备缓冲时由于不支持DDSCAPS_BACKBUFFER而导致程序不能运行,google了一通发现m$网站和其他一些论坛上也有人问过类似问题,得到的答案貌似是说emlator上不能跑DDraw和D3D的程序,要测只能用device,其实只要自己实现一个创建后备缓冲以及用blit模拟flip的方式就可以在模拟器上跑了,并不是模拟器根本就没有实现DDraw,只是没有实现硬件后备缓冲、翻转等操作(其实在现在的PC模拟器上的这2种方式应该也没有什么效率上的差异吧)。
具体代码:
Continue reading…

Nokia官网Sound Mixer Example v2.1中用的wav文件格式

Nokia官网提供的混音示例程序中http://www.forum.nokia.com/info/sw.nokia.com/id/650db12f-06aa-4608-b17a-387b70412304/S60_Platform_Sound_Mixer_Example_v2_1_en.zip.html使用的wav格式为16-bit mono的标准pcm采样文件的纯采样数据部分(这样好处是去掉了wav头信息,减少了一定的容量,坏处就是不能用一般的播放器直接播放),以下为生成该种wav的方法:
Continue reading…

windows mobile中的directdraw

今天说研究一下mobile的游戏开发吧,先从2d这块入手。查到资料说早期是用一种叫做gapi的接口作的,但后来被directdraw取代了,那就用dd吧,好在以前研究过pc的,找了个例子看了看基本差不多,可发现模拟器上无法运行,因为后备缓冲不支持,真是麻烦了啊,调试只能用真机了?

symbian alpha blending的问题

symbian系统api中对alpha混合的实现不是很好,至少不是很灵活,比如必须配合256级灰度mask图等,如果只是想填充半透明的矩形区域的话这样显然比较浪费内存。比较好的方法是自己实现类似矩形半透明填充等的算法,也就是那个src*alpha+(1-alpha)*dst的alpha混合算法,通过一些多项式合并以及用整数运算代替浮点运算的方法,可以对其执行效率有一定的优化,在内存允许的情况下,使用查表的方式可以对速度有更进一步的提高。另一个问题是,对于N95类ARMv6架构的CPU来说,如何在生成exe的时候使编译器支持armv6指令从而使用simd对alpha混合等大量像素级的数据运算进行并行优化?目前研究了一段时间也没发现carbide上能启用armv6的方式,我想是由于需要对N73类同为3rd的机型的兼容吧。

一篇Mac OS下的GL中glFlush和glFinish的区别解释

Q: What’s the difference between glFlush() and glFinish()?
A: OpenGL commands are not executed immediately. Instead, they are submitted to a command buffer that is then fed into to the hardware. The glFlush() and glFinish() commands are both used to force submission of the command buffer to the hardware for execution. glFlush() causes all OpenGL commands currently queued to be submitted to the hardware for execution. This function returns immediately after having transferred the pending OpenGL command queue to the hardware (or software) renderer. These commands are queued for execution in some finite amount of time, but glFlush() does not block waiting for command completion.

Continue reading…

[ZT]CMWAP 和CMNET 的主要区别与适用范围

  如果你是一个菜鸟或者初学者,不妨直接跳到第(4)节,看看我提供的”应用程序能否工作于CMWAP的辨别方法”;如果你希望对CMWAP和CMNET有一个详细的了解,那么就读完全篇吧;如果你对这个问题有所研究的话,还请不吝赐教,解开仍旧困惑我的几个疑问。

Continue reading…

强制内嵌SIS文件的版本检查

TSS001331
开发伙伴平台:
S60 3rd Edition FP1, S60 3rd Edition FP2
详细描述
当安装程序检查到手机已经装有该SIS文件的相应版本时,会弹出提示警告窗口。但是安装程序并不会检查内嵌SIS文件版本,即时手机上已经装有该应用程序。
在PKG文件中我们可以确保安装程序只在已安装的内嵌SIS文件版本低于当前版本或之前根本没有安装时覆盖内嵌SIS文件。
解决方案
在PKG文件中需要进行相关设置。可以通过AppProp()函数测试PKG的属性。获得内嵌SIS的主副版本号和编译号。

Continue reading…