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.

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.

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.)

Another M3G-capable KVM is the TAO Intent MIDlet manager, of which Iíve already published a lengthy tutorial HERE. Youíll want to download the latest, 11.1.7.1036 version (direct CAB link), unless you have a non-Phone Edition Pocket PC, in which case youíll want to get version 1023 (direct CAB link). Finally, if you have a Smartphone, youíll want to forget it altogether as itís only the non-M3G-compliant 10.1.x series that is compatible with the ďdumberĒ platform.

As with Jblend (and, for that matter, Jbed, to be introduced below), itís simple to install: just get the CAB file and install it. As with Jblend (and unlike Jbed), if you install it on a storage card, itíll also deploy the MIDlets on the card to save built-in storage memory. That is, make sure you install it on a storage card if you have little built-in storage left.

Unfortunately, the TAO Intent MIDlet manager is, gaming-wise, pretty bad and youíll only want to use it in few cases (most importantly, when you only have a non-phone-enabled Pocket PC). For one, it has pretty bad music emulation. While itís certainly better than that of Jblend (the latter has no music emulation at all), itís WAY worse than that of Jbed. What is even worse, it doesnít support softkeys in most games (and many applications as is the case with, say, Teashark reviewed HERE), which means you just wonít be able to run these games if they do depend on softkeys (and most do Ė very few games can be played / menus can be navigated without them).

2.3 Esmertec Jbed

This MIDlet Manager doesnít directly support the M3G library. However, as itís without doubt the best KVM out there right now, particularly music emulation and WM5 softkey-compliance-wise, itís still worth mentioning it in here. The reason for this is pretty simple: some of the popular 3D titles arenít strictly M3G-based (that is, based on JSR 184). These titles may run under Jbed as well, which means, in general, superior music and/or sound and, sometimes, speed compared to Jblend and, on top of all this, softkey support, compared to TAO Intent.

While thereíre some purchasable Jbed distributions at Handango, I donít know whether theyíre updated at all (their last-updated field are all 2005) and, despite my several mails sent to my Esmertec contact, in the last month I havenít received a definite answer to this question. Therefore, for the time being, youíll want to use an OEM version of Jbed version 20070802.2.1 available HERE. Unfortunately, this version is pretty buggy. Should you want to use it for other purposes (most importantly, for Opera Mini 4 beta 2, by far the best MIDlet-based Web Browser and one of the best Web browsers even on Windows Mobile), be aware of that it doesnít support for example cookie handling, unlike previous, but not any more working versions. This, however, wonít have any affect on running games, where itís really excellent at.

Jbed is, just like Jblend, compatible with both WM5+ Pocket PC Phone Edition and Smartphones. It is NOT compatible with regular Pocket PCís without a built-in phone. Sorry. Hope as soon as the Esmertec folks contact me back, Iíll be able to provide more info on which Handango Jbed distributions support non-phone Pocket PCís.

2.4 Co-existing on the same Windows Mobile devices

All these KVMís (and, for that matter, additional ones like IBM J9, Esmertec Jeodek etc.) can co-exist on the same Windows Mobile device Ė they wonít have any influence on the other MIDlet managers. The only restriction will be that, should you click a JAD or a JAD file on either the Web or the local file system, the last-installed KVM will be invoked and it will deploy the given MIDlet.

However, you can easily remake a given KVM the default KVM to be invoked when clicking JAD / JAR files. No, you donít even need to reinstall the given KVM Ė you will only need to import a given Registry import file, which changes the JAD / JAR file associations. Iíll provide these files in the final version of the Bible.

In the meantime, keep the following in mind: if you download the JAR file of all MIDlets youíd like to use (you do NOT need the JAD files!), you can easily deploy them under any KVMís.

Fortunately, this is pretty easy in two of the three KVMís (in addition to the, in this respect, inferior Jblend, itís only with the, here, not discussed IBM J9 that itís a pain in the back to deploy a MIDlet to if you donít have set up the file associations or theyíre pointing to another KVM: in there, you must enter the full path and name of the JAR file by hand and canít even use any file system browser tool). The Jbed and TAO KVMís have a ďdeploy local filesĒ option; you go there; in there, you are listed the JAR files in the file system. Your only task is selecting the one to deploy and all is done Ė after this, you will only need to let the KVM deploy the stuff (answer Yes to the security questions and, with Jbed, to the question of the target folder). These menus are as follows:

The fact that Jblend doesn't have file browing capabilities also means that, should you want to keep all the three KVMís on your phone, youíll want to install Jblend last so that its file associations remain the default.

3. Compatibility info & chart

I've made some VERY thorough tests with ALL the 3D games available HERE. Feel free to give these titles a try. You only need to download the JAR files off the Web site; donít bother with JAD files. Note that you wonít be able to access the page with the standard desktop Internet Explorer (as is also pointed out in my Windows Mobile Web Browser Bible) because it isnít WAP-compliant. Therefore, if you do access it on the desktop (in order to download the JAR files to your desktop and, then, transfer these JAR files onto your Windows Mobile handheld in order to deploy them), make sure you use either Opera or Mozilla to access these pages.

You will find the compatibility results in the chart available HERE. Sorry for not including it in here Ė itís way too big and, after all, itís only an additional click away. Iíve tested the latest, above-linked versions of Jblend, TAO Intent and Jbed. With Jblend and Jbed, Iíve run the tests with the HTC Vox (s710) Smartphone (Iíve chosen a Smartphone because of the directly and easily accessible dialpad on the front). For the (few) TAO Intent tests, I had to use a WM6 VGA HTC Universal because 1, it also has numeric hardware keys so I could still test controllability via dialpad (numeric) keys 2, itís a Pocket PC, and the 11.1.x, that is, M3G-compliant series of TAO Intent only supports Pocket PCís.

3.1 Dynamic screen stretching

Note that Iíve tested ALL the games compatible with Jblend that dynamically use (stretch) the full available screen estate on the WM6 VGA HTC Universal Pocket PC as well. Iíve done this STRICTLY in Portrait mode (in Landscape, there were graphics problems with Jblend). The aim of this was to find out whether the given games are able to adapt to HUGE screens like those of VGA devices. As can clearly be seen, while all dynamic stretching-capable games were able to dynamically adapt to QVGA screens (from inherently smaller screen sizes), the situation was quite different with four times bigger (VGA) screens. Note that this isnít a problem with the Universal itself but with the given titlesí inability to dynamically stretch themselves onto ďhugeĒ VGA screens. That is, they wonít run on other VGA Pocket PCís either, let alone Pocket PCís with even bigger screens (for example, the WVGA (800*480) Toshiba G900 or the, hopefully, forthcoming HTC Omni).

With titles that donít run (right) on the Universal, Iíve also repeated the tests on the WM5 QVGA HTC Wizard Pocket PC to find out whether it was a VGA-related problem or a generic Pocket PC incompatibility. As can clearly be seen, these were all VGA-related problems and not because of the different (Smartphone vs PPC) platform: all the (dynamically adopting) titles that had (severe) problems on VGA devices ran flawlessly on the QVGA Wizard.

Also note that Iíve only tested the Jblend compatibility of dynamically stretching titles. Games that turned out to be of ďdumbĒ static ones will run on any large-screen Pocket PCís Ė confined to the boundaries of their original, hard-wired screen estate. This means all the other ďstaticĒ, for example, 176*208 or 176*220 titles are supported and playable on VGA devices too.

Thanks to XDA-Dev forum member niala6433 (see THIS thread), my attention was brought to a M3G-capable Jeodek version (20060421-95649). It seems to be a bit faster than Jblend and is compatible with both Pocket PCís and (at least Portrait) types of (touchscreen-less) MS Smartphones (Iíve thoroughly tested it on the QVGA HTC Vox (s710) and the 176*220 HTC Oxygen (s310)) with some disadvantages on the latter (namely, the constant visibility of the bottom bar). As itís a comparatively old and quite restricted build of Jeodek, you will ONLY want to use it to run 3D games otherwise not (sufficiently well) running under Jbed, which, currently, doesnít support 3D but support real full screen mode on both platforms, has, generally, superior speed and the best sound / music emulation. For everything else, youíll want to use the other, much more optimal solutions.

(Deep 3D on a QVGA HTC Wizard Pocket PC PE)

(Absolute Lightup Deluxe on a VGA HTC Universal Pocket PC PE)

(Absolute Lightup Deluxe on a 176*220 Smartphone; the ďStart / Call historyĒ softkeys are both from the Today screen)

Getting, installing

Itís available HERE for download. Installing it is pretty simple: just unRAR jeodek.exe and jeodek.exe.0409.mui to anywhere on your handheld (storage cards preferred because, then, itíll also store the deployed MIDlets there, not taking up any built-in storage memory). Copy the \lnk\Esm3D.lnk to \Windows\Start Menu\Programs on Pocket PCís (or \Windows\Start Menu\ on a Smartphone; you can, of course, use subfolders) and, finally, import \fileassoc\ Jeodek3DStoragecard.reg into the Registry so that the file associations are right, should you want to deploy MIDlets from the outside of the MIDlet manager. (This isnít essential as Jeodek has built-in support for searching for MIDlets in the file system.) Note that youíll want to change all occurrences of ďesm3dĒ in the Registry import file, should your files be somewhere else than \Storage Card\esm3d. Also note that, should you want to deploy MIDlets using this file association, Jeodek must already be running.

Finally, note that you do NOT need to install an ďofficialĒ Jeodek / Jbed on your handheld before intsalling the hack. You can, but don't need to. Simply doing what Iíve explained suffices.

Problems

On the Smartphone, the bottom bar of the previous screen will always be visible. This means games specially designed for the given screen resolution (320*240 or 176*220) will be severely cut off, as can be seen in the following two screenshot pairs:

See the difference? Not only the softkey titles have been cut off with the Smartphone version, but even the bottom part of the text bubble. A solution to this, should you still want to play these kinds of strictly 320*240 titles on your QVGA Smartphone but can't because of the lacking screen content, is looking for a, say, 176*220 version of the same MIDlet. (And, the same stands for the case of playing on a 176*220 Smartphone. Then, your best bet is looking for a 176*208 (Nokia S60) version instead.)

Worthy for Opera Mini and the Gmail MIDlet?

While the network access works and thereíre no security problems or other bugs either (unlike with Jblend), you wonít really want to use it because of the lack of full screen support as can be seen in HERE. In this respect, later Jeodek versions (no command bar at the bottom on Smartphones) were better, let alone Jbed (real fullscreen).

Speed

niala6433 has reported in his post (see thread above) that, in benchmarks, this Jeodek version produced slightly better 3D results than Jblend. This is definitely good news.

Verdict

You should keep this KVM on your handheld too, should you run into a strictly M3G-dependent, working title not usable (or, not fast enough) under Jblend or TAO, the two other, M3G-compliant MIDlet managers.

what is more, now that I also have a Nokia N95, Iíve tested ALL the games on it too, mainly to see whether itís compatible with (far) more titles than the Windows Mobile KVMís (the answer is, unfortunately, no Ė while it does run a bit more titles, itís in no way compatible with all older titles) and whether the 3D hardware acceleration support really increases speed.

Unfortunately, as it seems, the hardware 3D acceleration doesnít help the speed of emulation much. Based on the JBenchmark synthetic tests, one would expect a speed increase of about an order of magnitude. The reality, however, is different: in general, games where 3D hardware acceleration works at all run on the 330 MHz TI OMAP-based Nokia N95 only run two to three times faster than on a TI OMAP-based HTC Vox clocked at the default 200 MHz. Iíll continue doing some extensive tests to find out why the results are, indeed, below expectations and why the JBenchmark synthetic tests show much better results than the real-world games really show.

I really plan to publish the Bible this weekend or early next week. I think I will be able to do so.

In the meantime, donít forget to check out the main chart of the Bible, which has been constantly evolving in the meantime and contains a lot of tricks (for example, ďhow can I increase the heap memory available in Jblend? How can I make Esmertecís MIDlet managers, TAO Intent and Jblend run on non-phone Pocket PCís? Why I should refrain from using the latest Gmail MIDlet (I really recommend THIS MoDaCo thread, particularly my posts there, for more info on it) "on TAO / Esmertec Jeodek, and where can I download the older, 1.1.1 version?Ē etc.) It also has all the download links and, again, as with all my other charts, answers to ALL the question you will EVER want to ask about these applications.

XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality.Are you a developer?