hi

we (mobilewizardry) bit the bullet and dove into a real nasty 
task :) porting our deity3D engine to C [task in itself] from 
68k asm, and, then getting a version that runs on 68k, arm and 
x86 (palmsim).

to give you an idea, this task has been two steps:

- port 68k assembler to C 
- build an engine capable of multi-platform compilation

*nasty stuff* - the process took a total of around a month to 
complete fulltime. original source files were 12202 lines, the 
final output being 25128 lines, with the original assembler 
#ifdef'd inlines the code.

---
asm version (original) low = 13.8 fps high =  8.6 fps *1
c version (68k)        low =  9.0 fps high =  5.3 fps *1
c version (x86)        low = 36.3 fps high = 35.3 fps *2
c version (arm)        low = 44.2 fps high = 39.3 fps

*1 results recorded on SONY n610c (33Mhz)
*2 results recorded using PalmSim on a 450Mhz PII on win98
---

weird results with x86, assembly being generated is not 100%
perfectly optimized, but, heck - doesn't matter *g*. the asm 
version is a "newer" version of the deity demo we have on
www.ardiri.com - more specifically color.

deity3D also runs in native 320x320 hi-resolution in 8bpp.

one important thing is that we have managed to have a single
code base that compiles into all 68k, arm and x86 code resources.
the main application is not "built differently" for each CPU
architecture.

prc-tools 2.0.92, cygwin and arm-elf-gcc (instructions sent before)
no other special tools/utilities required.

we did have to deal with some mess to get global data working, 
compiler switches, some extra custom macro's etc etc. surely not 
a fun process :( there are a heap of issues to deal with :(

bottom line is that there are very few platform specific calls, 
and the code base is shared between all three CPU architecture 
destinations. some code had to be modified specifically to suit
the multi-platform needs.

there are still some minor glitches in the code (mainly from the
68k assembler to c conversion) which we still need to work on, 
but, it runs. quite well.

the size comparisons:

---
68k code resource = 26k
arm code resource = 40k
x86 code resource = 47k
---

it was a two man job, both myself and chip were working on this
task, and, we believe it was a joint effort *phew* :) most of my
work at the beginning setting up the compilers, architecture and
getting the code resources to work correctly - while, chip focused
on porting the 68k assembler to c. the armlet specific problems
we resolved together, custom build procedures, and messing with binary 
files - the fun stuff.

we feel this is a big accomplishment :)

our understanding and experience with armlets is growing by the 
day, working around various issues (which, may eventually be solved)
but, its work-in-progress. 

new day = new problems and new solutions. we know armlets are a 
daunting task; we'd be happy to provide some consulting hours to 
assist other developers in their armlet conversions, subject to
our availability; especially when it is complex code :) 

contact us at:

  [EMAIL PROTECTED] and 
  [EMAIL PROTECTED]

cheers.

---
Aaron Ardiri and
Chip Kerchner

Mobile Wizardry
http://www.mobilewizardry.com/


-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

Reply via email to