[General Topics] Menneisyys:
I’ve started working on my MIDlet Bible, the premiere and definitive resource of everything related to running the, particularly on “dumb” mobile platforms, hugely popular Java programs called “MIDlets”. Currently, the project is on hold because I’m still waiting for some MIDlet Manager developers to answer my mails so that I can, for example, can directly recommend where to download / purchase MIDlet Managers from. (If you’re one of them and we used to be in correspondence but you haven’t heard anything from me, please check your spamfilter – it might have caught my mail(s).)

Several people have been looking for running 3D-based games on Windows Mobile. As this part of my forthcoming MIDlet Bible is pretty much self-contained, doesn’t really depend on the rest of the Bible and can, therefore, be separately published, I’ve decided to take the plunge and publish it right now, before coming out with the “full” MIDlet Bible.

1.1 Is it worth bothering at all? Isn’t Java, particularly 3D games, slow?

You may have heard a lot of people despising Java because of its “sluggishness”. This is not really a case, particularly with the highly optimized Java environments, that is, MIDlet Managers (also abbreviated as KVM’s; some people also refer to them as JVM’s, using the well-known desktop/server mnemonic) of today. You will be REALLY astonished: current KVM’s can produce at least as quick 3D speed as highly optimized, native Windows Mobile games written in C(++).

You don’t believe me, do you? Neither would I have before embarking on some serious 3D MIDlet testing (and, of course, I also know most, if not all, native racing games for Windows Mobile like the palm of my hand).

Well, just give some of the tested racing games (for example, 3D High Speed, 3D Andreotti Racing, 3D Fast or Furious Fugitive) a try and you’ll see this for yourself. Compare them to the current native 3D titles. These Java programs are blazingly fast even on VGA devices and even on, otherwise, graphically, pretty sluggish models like the HTC Universal – while still rendering high-resolution (not plain pixel doubled) graphics. Yes, I told you, many Java titles just rock on Windows Mobile – if you’re into games and, particularly, racing games, you WILL want to give these programs a try.

Speed issues aside, price is another factor. Java MIDlets games, in general, way cheaper than native Windows Mobile games – several high-quality Java games cost no more than $5, while native WM games, generally, start at $10. In cases, you are allowed to even buy a MIDlet for all your phones and, then, you can put it on any number of your dumb & smartphones and Windows Mobile handhelds. Think of it: you buy a high-quality MIDlet game for, say, $5, and, then, deploy it on the phones of your wife / husband / children in addition to your WM phone so that they can also kill some time playing it. You won’t ever have problems explaining to your wife why you’ve spent a single penny on a game ;-) Yeah, being multiplatform (meaning a single Java MIDlet can run on a vast number of mobile phone platforms, even cheap dumb phones) has definite advantages.

This, of course, doesn’t mean you shouldn’t purchase Windows Mobile games, not in the least. The Windows Mobile market being tiny (orders of magnitude smaller than that of desktop Windows or, even, yes, Java MIDlets) developer community (and, consequently, the future of the entire platform) does need your software purchases too. It’s just good to know you can play a lot of cheap and, in cases, really high-quality games you may not have been aware of.

2. Available, 3D-capable KVM’s

In this roundup, I mostly concentrate on playing games with three-dimensional (3D) graphics. There is a separate standard (JSR 184, also known as M3G) that most 3D (but not all!) games rely on. This means that, in order to be able to play these games, the KVM must support JSR 184. There are, currently, two KVM’s that, currently, do this: Jblend by Aplix (coming with the Samsung BlackJack MS Smartphone and some, outside Japan, not widely used Pocket PC phones like the Sharp W-ZERO3), the 11.x series of TAO Intent MIDlet Manager coming with several Pocket PC’s (note that the current TAO Intent version shipping with current (!)Smartphone ROM’s, for example, the German ROM with the HTC Vox, still contain a 10.x-series, non-3D-capable TAO Intent version).

However, as there are some 3D titles that don’t use the specific features of JSR 184, there may be cases you can use non- JSR 184-compliant KVM’s to run these games. Without doubt the best of these non-M3G-compatible KVM’s is Esmertec’s Jbed, the successor of Jeodek of the same company, which ships with many current, WM6 Pocket PC’s and Smartphones (for example, the HTC Vox / s710). It’s Jbed that you will always want to prefer when playing, especially because of its unique full screen and music emulation capabilities and speed.

Now, let’s take a look at all these three KVM’s.

2.1 Aplix Jblend

This KVM is compatible with everything Windows Mobile 5+ with a phone inside: that is, all WM5+ Pocket PC Phone Edition (Windows Mobile Professional) and Smartphone (Windows Mobile Standard) devices. This, unfortunately, also means it’s NOT compatible with non-Phone Edition (that is, Windows Mobile Classic) Pocket PC’s.

It has excellent M3G support and has no problems (as opposed to the TAO Intent MIDlet manager, introduced below) with WM5 softkeys either. It also has some other goodies; for example, by default, it stores all the deployed (installed) MIDlets under its home directory, unlike Jbed, the other excellent KVM. This has particular advantages on storage-constrained devices, particularly, low(er)-end Smartphones like the HTC s310 / Oxygene, which, by default, only has some 12M of built-in storage free. As a modern, decent (3D) game can easily take up 300-1000 kbytes, you will fill in your built-in storage very quickly if you use a KVM storing its deployed MIDlets there.

Its only downside is, in addition to not being compatible with non-phone-enabled devices, is the very bad sound and non-existing music emulation. In this respect, the two other alternatives (particularly Jbed) is WAY better.

It’s available for download HERE (direct download link to CAB file). Just download the CAB file and install it and, after that, you can just click on any JAR files copied to your Windows Mobile device, it’ll deploy them (just press the left softkey two times to let it go on). Again, unless you have plenty of built-in storage memory and/or you only plan to install a handful of games, you’ll want to install it on a storage card so that the deployed games (and other MIDlets) don’t take up any central storage.

2.1.1 JBlendFullScreen

Note that there is another version of Jblend circulating on the Net; a much older and non-M3G-capable one called “JBlendFullScreen”. Its only advantage over the Jblend version I’ve linked in is that it uses the full screen (no taskbar will be visible at the top), which is of BIG help when you run strictly 240*320 (QVGA) MIDlets displaying important information (status row or even softkey titles) in the bottom-most 10-15 pixel rows otherwise hidden.

2.1.2 Consequences of not being full-screen

Several games suffer from the recent Jblend version’s not being full-screen; for example, the QVGA version of the pretty good, Russian-language Wolf3D clone "3D Bunker" and "3D Storm", 3D Burnout, 3D Formula Racing, 3D Covert Ops etc. Hopefully community hackers will soon come up with a decent solution for this problem. If you do suffer from this problem, in the meantime, either give a try to the old JBlendFullScreen (it MIGHT run the game if it isn’t strictly M3G-based) or, even better, Jbed. Alternatively, you might want to use a version of the MIDlet, when available, meant for devices with smaller screen. Most MIDlets have several different versions for different screen sizes; 176*208 (old(er) Symbian S60), 176*220 (non-QVGA MS Smartphone) and QVGA (newer / better Symbian S60 and Windows Mobile) being the most widely used and available.

2.1.3 Java heap size setting

Finally, note that, unlike most other KVM’s, you can set the memory given to Jblend in the registry ( [HKEY_CURRENT_USER\Software\JBlend\JavaHeapSize; which is 0x00400000 by default; that is, 4 Mbytes, which is already pretty high, compared to most other KVM’s (except for Jbed; more on this question in the forthcoming MIDlet Bible). Setting it to a much higher value, 12M, didn’t help with the non-working games I’ve retested.)