author Sam Lantinga
Sun, 06 Mar 2011 21:12:19 -0800
changeset 5423 b69fa50e80d7
parent 5289 1916a9e9714d
child 5430 1b318d81c85f
permissions -rw-r--r--
a Nintendo ds update

Frank Zago to SDL

For those interested, here's a snapshot of the current port. I did away with
most of the previous attempt which was based of the sprite engine, because the
support is limited to 128 64x64 sprites. Instead I'm using the gl engine.
The drawback is that either the frame buffer or the gl engine can be used
because there's not that much video memory on a DS.

With minimal changes to their code, it can now run the following tests: ,
testspriteminimal, testscale and testsprite2. The last 2 only run under the
emulator for some reason. The tests are not included in this patch for size

In 16 bits mode, the 16th bit indicated transparency/opacity. If 0, the color
is not displayed. So I had to patch a few core file to set that bit to 1. See
patch for src/video/SDL_RLEaccel.c and src/video/SDL_blit.h. Is that ok, or is
there a better way ?

The nds also doesn't support windowed mode, so I force the fullscreen in
src/video/SDL_video.c. Is that ok, or is there a better way ?

To get a smaller library, I also tried to not compile the software renderer
when the hardware renderer is compiled in, and define SDL_NO_COMPAT; however
the compilation eventually fails in SDL_surface.c because SDL_SRCCOLORKEY is
defined in SDL_compat.h. Is SDL_NO_COMPAT only for application and not SDL
itself ?
     1 ================================================================================
     2 Simple DirectMedia Layer for Nintendo DS
     3 ================================================================================
     5 -Requirements-
     6 * The devkitpro SDK available at
     7   Read the information at
     8   The necessary packages are devkitARM, libnds and default arm7.
     9 * The hardware renderer is using the libgl2d abstraction library that can be found at:
    11   Build it, and install the library and the header where SDL can find them (ie. in
    12   the libnds/lib and libnds/include directories).
    15 -Building SDL-
    17 After setting the devkitpro environment, cd into your SDL directory and type:
    18   make -f Makefile.ds
    20 This will compile and install the library and headers into the proper libnds
    21 directories. Additionnaly it will compile several tests that you can run
    22 either on the DS or with desmume. For instance:
    23   desmume test/nds-test-progs/general/general.nds
    25 -Notes-
    26 * The renderer code is based on the gl like engine. It's not using the sprite engine.
    27 * The port is very basic and incomplete:
    28   - SDL currently has to be compiled for either framebuffer mode or render mode.
    29      See USE_HW_RENDERER in Makefile.ds.
    30   - some optionnal renderer functions are not implemented.
    32 -Limitations-
    33 * in hardware renderer mode, don't load too many textures. The internal format is
    34   2 bytes per pixel. And there is only 256KB reserved for the textures. For instance,
    35   testscale won't display sample.bmp, unless it's resized to a smaller picture.
    36 * the screen size is 256 x 384. Anything else won't work.
    37 * there is no 8 bits/pixel mode because SDL 1.3 doesn't support palettes.