On Tue, 28 May 2002, Idries Hamadi wrote:
> Ok, going back to my original problem. I now have access to the screen and
> all my bresenham stuff works fine (in both 2 and 4-bit grey, whooho!). The
> next problem that I have is draw speed. Using only my bresenham routines
> with double buffering on (and performing a full screen update every tick) I
> get around 40 fps on my Palm. As soon as I start to draw a bunch of bitmaps
> I get taken down to between 4 and 8 depending on how many I draw (between 4
> and 67 bitmaps drawn per frame).
>
> This seems alittle stiff to me. Is there any milage in writing my own
> Blitter for this? Mine could forgo any work for converting from bitmap
> format to screen format (all bitmaps could be stored in screen format). The
> real problem that I can see here is while the screen size will produce byte
> aligned rows in both 2-bit and 4-bit screen modes (and in 1-bit and 8-bit,
> good choice of screen size by palm) my bitmaps will not align so well (being
> of arbitary size).
>
> Has anyone tried anything like this?
>
> Did you have to restrict the size of your bitmaps to get a reasonable
> framerate?
>
> Are there any fast (free) blitting libs around?
>
> Are has anyone traded double buffering for framerate to solve this problem?

  dont use the API's!

  use the API's for copying from your backbuffer -> screen only. this is
  where compatibility is going to be an issue. in lemmings, we can have
  over 100 sprites on screen and still maintain an acceptable screen
  update rate (either by updating whole screen when scrolling, or portions)

  a lot of game developers have done this stuff before.. you'll quickly
  learn that the blitter code provided by PalmSource sucks :) however,
  they did do some tweaking in 4.0 to speed things up :P

  take advantage of particular circumstances - and, you will get speed.
  in Lemmings, we did some tests on an ARM board. we found the following:
  [running on a 75Mhz board]

    API code       (native ARM)    = 16 fps
    custom blitter (m68k emulated) = 25 fps [100% c]
    custom blitter (m68k emulated) = 33 fps [optimized asm]

  beware of the assumption that using API's will speed up your code on
  ARM units cause they are written in ARM. the device must switch from
  68k emulation mode into native ARM mode - and, that takes time :P
  the API's also do all these checks, clipping, alignment blah blah
  blah.. all of this takes time :) we were not so shocked to see such
  bad performance with the APIs in native ARM. we were well aware of
  the corners we cut and when you have a lot of sprites.. it could mean
  a large difference in performance.

  keep in mind we had a special case here :) not all developers will
  get the same type of performance.. it always comes down to what you
  are doing.. most of the code in lemmings wont apply to other games
  for example :P

  ps: PACE is pretty darn fast - for an emulator :)

// az
[EMAIL PROTECTED]
http://www.ardiri.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