Categories: Top ::
About
Codejunkie
Monologues of a mobile retro coder.
skeezix[at]codejedi.com
www.codejedi.com
Subscribe
Subscribe to a syndicated RSS feed. I've
also made a Livejournal version and Ben whipped up an auto-RSS Livejournal
Blogs
DadHacker; epic rants.
ASCII@textfiles
Michael Mace
JoelOnSoftware
Bruce Schneier
Wil Wheaton
I, Cringely
WritingOnYourPalm
Dan Gillmor
GrandTextAuto
Freedom to Tinker
Mark's SysInternals Blog
A List Apart
Tam's Palm
Bytecellar retro goodness
Lost Garden
Bill Ing
Ben Combee
PocketGoddess
PocketFactory
Random Links
PalmInfoCenter
Zodiac Gamer
GP32x
Little Green Desktop
Atari Age
Penny Arcade
Hack-a-Day
Retro Remakes
SHMUPS!
Podcasts
1SRC
RetroGamingRadio
Recent Entries
| January 2009 | ||||||
|---|---|---|---|---|---|---|
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Archives
A busy week means a slow news week so I better get to it! The main topic of the post will be some brief commentary about the state of development tools for PDAs, specifically Pocket PC, in porting Beats of Rage to the platform. But first some quickies (queue in the deedee-deet-deedee-deet news anchor background music): Ditching the 'Geekery' categories and merging those posts into the 'Technology' categories, Coca-cola with lime is delicious, Zot Bandits is still on my mind, and I trimmed the office grass down to half its height and pruned away many of the broken guys in hopes of restoring it to its short lived glory... so far, Prognosis: Negative!)
Aside: Websters has been invaluable in writing these blog entries. I'm tolerably well acquainted with spelling, but we do get lazy in this day and age and so I've tried to be a better writer here than in emails fired off 300-a-day.
Development Tools for PDAs
I'm going to steer away from doing an overview of all tools, since you can go to dozens of websites to get that info. But heres a quick overview..
PDA and mobile (and game console and embedded system) software development has always been a proving grounds for code-hackers (real hackers, not script-kiddie warez crackers that popular media refers to as "hackers".) Modern PCs are a dream to develop for as Windows, Linux/Unix and OSX are all very mature development platforms with numerous well documented API's and SDK's and cross platform toolkits, but PDA's and phones are more like coding for a microwave oven.. technology that feels like more dated platforms, under various severe restrictions for display resolution, input methods, processing, storage, and speed of peripherals (though Pocket PC devices have generally been ahead of Palm OS devices over the years in terms of hardware beefyness). Coding for consoles is often just plain tough since they don't have a lot of good tools or documentation until you kick in huge bankrolls.
PalmSource has always firmly been behind Metrowers CodeWarrior due to its cool name (oh, and due to a lot of early Mac influence in the ranks of Palm developers people think) and prc-tools (gcc + friends), with some other options like NSBasic, PocketC etc etc. For Pocket PC and derivatives its usually been MS Embedded C due to Microsoft generously (smartly) making it a free download (to woo over the developers, or maybe due to old Bills software heart), and various ports of gcc by the open source community. Java hasn't been really popular on these leading PDA platforms due to PalmOne licensing it from IBM for only a few devices (and not including it in ROM so it is not ever-present) and Microsoft essentially keeping it from anyone on its platform. (Java has been popular for some desktop and sync solutions due to PalmOne supporting it there.) On Pocket PC there is also a lot of push towards CE.net's C# implementation on top of MS Compact Framework, which is some cool stuff. Anyway, I'm not going to go into a whole hu-ha over dev tools.. its been done better in many other places I'm sure.
Beats of Rage for Pocket PC
(I ported it to Palm OS years ago)
I thought some of you may get a kick out of some of my experience in these early forays of mine into Pocket PC as a development platform (as opposed to using it as a PDA platform.)
Reviewing the development tools above, one next moves to select toolkits to use -- go to the metal and use the minimum SDKs around, such as the Pocket PC 2003 SDK, or use the open source cool as heck cross platform SDL library as ported to Pocket PC by Arisme, Mamaich and others, use the officially supported GAPI (not available on all Pocket PC devices, but most), or others. Given I'm a cross platform junkie (I currently actively develop daily for Solaris, Windows, Linux, FreeBSD, Mac OSX, Palm OS, Pocket PC and GP32) I prefer those sorts of options so SDL and gcc seamed a great team, and one I've worked with many times in the past for other platforms. I hate to keep saying it, but Java and C# were right out without a thought; both have some speed issues for PDAs (the JIT compilers tend to be pretty good on desktop platforms, but even there they're often slower than native compiled C versions of an app, especially when its display/GUI driven and not computation driven)... but more importantly they're not available to many devices and certainly require the end user to install large runtime systems to support them, and people are much more interested in a 500k game engine than a 25MB game engine (yes, I realize BOR has 5-50MB game files ;)
The inital porting work went very quickly due to my prior experience with the BOR engine (and my l337 sk1llz!!!111) and over just a couple of days I was able to get a running and working prototype. However, the SDL Pocket PC port leaves me wanting -- it doesn't offer a fullscreen option so you're stuck with a "sdl_app" titlebar, its WM2003SE VGA support doesn't seam to kick in for me and thus presumably others, and it doesn't report button presses/releases correctly which is the real showstopper. Its also not using GAPI for me, and GAPI is a big speedup for Pocket PC so I think its time to toss SDL -- a shame.
I should note that I'm porting my Beats of Rage from Palm OS port to Pocket PC, which was itself a port of BoR/gp32 by Squidge, which was a port of BoR/dos by the original Team Senile. Being this far removed has made the code lean and efficient, but also a little bit screwy, but thats okay :)
Anyway, since SDL is proving to be more of a pain than an asset and theres already BOR ports for most platforms so a cross-platform kit isn't absolutely essential (though developing on one platform, targeting another has always been big on my list), I'm going to make it GAPI now instead .. go for speed and platform dependance. This'll slow development down a touch, since GAPI isn't well supported by the Pocket PC emulators, so you have to send each build to a real device to see how it goes (and the file transfer takes a few moments).. but I could always build a GAPI-API for Unix and thus have my own desktop side test rig for rapid development.. but I'll likely just attack it head on direct to device and be done with it.
So I'll start rewriting the Pocket PC specific stuff to work with GAPI soon and let you know how it goes. In theory it should get me a performance boost, and it'll be a more WinCE-like application in the code which makes life a lot easier in other respects, and it also removes a dependancy to SDL which would leach away some of my time fixing it. On the other hand it would be good to fix up problems in the Pocket PC SDL port, so others could use it more later.. but time is very tight so I'm all about getting things done right now (but still in a good way.)
Oh, in case you're curious, heres some quick photos from my phone of the current running version. So I'm not just spewing hot gass out of my rear :)
[ Category: / technology / mobile / popc ] [link] [Comments]>