[SDL] [PATCH] iPod framebuffer video driver

Joshua Oreman oremanj at gmail.com
Sat Aug 20 12:49:22 PDT 2005


On 8/20/05, Sam Lantinga <slouken at twomix.devolution.com> wrote:
> > I've been working on a port of SDL to iPodLinux
> > (http://www.ipodlinux.org).  I've created a patch for both the
> > standard 2-bit iPod screen (using an unchangeable palette) and the
> > 16-bit iPod photo.  The patch is attached, against version 1.2.8.
> 
> Very cool!  Could you create a README.iPodLinux to go along with it?

Sure.
--snip--
=======================================
iPod Patch for Simple DirectMedia Layer
=======================================
  Author: Joshua Oreman <oremanj at gmail.com>

This is a patch against SDL 1.2.8 for the iPod framebuffer, both
black-and-white and color.  It has been tested with a black-and-white
iPod, since that's all I have.  Anyone with an iPod photo or color,
feel free to test it and report any bugs to me.

Building
========
In order to build this library for the iPod, you'll need the arm-elf toolchain.

If you checked out the SDL source from CVS, run
 % autogen.sh
to update all build files.

To build SDL for iPod:
 % ./configure CFLAGS="-D__unix__" --host=arm-elf LDFLAGS=-Wl,-elf2flt
--enable-ipod \
   --disable-joystick --disable-cdrom --disable-video-opengl
 % make
Copy the library at src/.libs/libSDL.a somewhere easily accessible. 
Link against it by specifying its path as an argument to the linker,
or copy it to /usr/local/arm-elf/lib and use -lSDL.

Quirks
======
BPP.  On monochrome iPods, call SDL_SetVideoMode() with bpp as 8. 
(Not 2!)  You can use SDL_ListModes() as normal to determine what kind
of iPod you're running on.

2-Bit Palette.  For various reasons, 2-bit color is represented as an
unchangeable 8-bit palette with [0]=white, [1]=light grey, [2]=dark
grey, [3]=black, [4]=white, ... .  If you want to apply this palette
to surfaces you create, you should know that light grey is RGB
160/160/160 and dark grey is RGB 80/80/80.

The mouse will be shown, though there's not much you can do with it,
so you probably want to SDL_HideMouse().

Events.  You'll only ever receive SDL_KEYUP and SDL_KEYDOWN events.  They are:
  SDLK_r = scroll right
  SDLK_l = scroll left
  SDLK_m = Menu
  SDLK_w = Rewind/Previous
  SDLK_f = FFwd/Next
  SDLK_d = Play/Pause
Scroll events are 96 to a rotation.

---

Much more information is available at
http://www.ipodlinux.org/Building_SDL and
http://www.ipodlinux.org/SDL_Programming, including some sample code. 
Enjoy.
--snip--

Is there a possibility of this patch getting into 1.2.9?

-- Josh




More information about the SDL mailing list