UIQ3.1 SDK on Parallels

Back in November I was having difficulty getting the S60 3.1 SDK to run on Parallels. At that time I had access to some Symbian OS source code (through a contract) so was able to debug it. (Albeit not the S60 version, so hacking binaries was needed in the end.)

Now I’ve run into the same problem with the UIQ3.1 SDK, and my previous fix doesn’t quite work! And of course now I have no access to any source code to debug it. However I think I’ve found a fix that works.

Fortunately, my previous instructions contained enough pointless irrelevant information to enable me to figure out a fix this time round.

In short, here’s the change you need to make to your epoc32\release\winscw\udeb\ecust.dll binary.

0002e40: 0000 5959 5dc2 0400 b8bc 1041 00e9 ee5b  ..YY]......A...[
0002e50: 0000 5589 e56a ff68 9d2f 4000 64ff 3500  ..U..j.h./@.d.5.
0002e60: 0000 0064 8925 0000 0000 5053 5657 83ec  ...d.%....PSVW..
0002e70: 2851 b8cc cccc cc8d 7c24 04b9 0a00 0000  (Q......|$......
0002e80: f3ab 5989 4dbc c745 c000 c93d 006a 0fc7  ..Y.M..E...=.j..
0002e90: 45fc ffff ffff ff15 4042 4100 50c7 45fc  E.......@BA.P.E.
0002ea0: ffff ffff ff15 4442 4100 8d45 c450 c745  ......DBA..E.P.E
0002eb0: fcff ffff ffff 1548 4241 0083 f800 0f84  .......HBA......
0002ec0: a800 0000 8b45 c048 4848 4848 4848 4848  .....E.HHHHHHHHH
0002ed0: 4848 4848 4848 4848 4848 4848 4848 4848  HHHHHHHHHHHHHHHH

The reason the previous fix didn’t work is that the 84a8 instruction I suggested modifying previously no longer exists. Judging by the other stuff around (in particular the series of 4848484848…) this appears to be the same area of code, but no 84a8. Who knows why – maybe a new compiler version, or slightly changed code, or something.

Fortunately, though, in my previous post I’d noted that it was a loop over 4000000 iterations. 4000000 in hex is 0×3d0900. A bit further up (both in the old code and the new) we see 0009 3d00. Changing the digit before the 9 from a 0 into a c worked. It means the loop runs (many) more times, and therefore Parallels’ high-resolution timer is sufficient to distinguish the start and end of the loop.

(In fact, fiddling around with this number, I find that changing it from 4000000 to 8000000 is sufficient. You may experience differences…)

Yuck.

One Response to “UIQ3.1 SDK on Parallels”

  1. jari Says:

    awesome. this literally saved my day. works fine also with S60 3rd Ed FP2 Beta SDK & Parallels.

    thanks,
    jari