include/SDL_config_nintendods.h
author Sam Lantinga <slouken@libsdl.org>
Sun, 06 Mar 2011 21:12:19 -0800
changeset 5423 b69fa50e80d7
parent 5270 7aba0406c273
child 5512 56ab281d7d3e
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
reason.

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 ?
slouken@2735
     1
/*
slouken@2735
     2
    SDL - Simple DirectMedia Layer
slouken@5262
     3
    Copyright (C) 1997-2011 Sam Lantinga
slouken@2735
     4
slouken@2735
     5
    This library is free software; you can redistribute it and/or
slouken@2735
     6
    modify it under the terms of the GNU Lesser General Public
slouken@2735
     7
    License as published by the Free Software Foundation; either
slouken@2735
     8
    version 2.1 of the License, or (at your option) any later version.
slouken@2735
     9
slouken@2735
    10
    This library is distributed in the hope that it will be useful,
slouken@2735
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
slouken@2735
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
slouken@2735
    13
    Lesser General Public License for more details.
slouken@2735
    14
slouken@2735
    15
    You should have received a copy of the GNU Lesser General Public
slouken@2735
    16
    License along with this library; if not, write to the Free Software
slouken@2735
    17
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
slouken@2735
    18
slouken@2735
    19
    Sam Lantinga
slouken@2735
    20
    slouken@libsdl.org
slouken@2735
    21
*/
slouken@2735
    22
slouken@2735
    23
#ifndef _SDL_config_nintendods_h
slouken@2735
    24
#define _SDL_config_nintendods_h
slouken@2735
    25
slouken@2735
    26
#include "SDL_platform.h"
slouken@2735
    27
slouken@2735
    28
/* This is a set of defines to configure the SDL features */
slouken@2735
    29
slouken@3220
    30
#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
slouken@2735
    31
typedef signed char int8_t;
slouken@2735
    32
typedef unsigned char uint8_t;
slouken@2735
    33
typedef signed short int16_t;
slouken@2735
    34
typedef unsigned short uint16_t;
slouken@2735
    35
typedef signed int int32_t;
slouken@2735
    36
typedef unsigned int uint32_t;
slouken@2735
    37
typedef signed long long int64_t;
slouken@2735
    38
typedef unsigned long long uint64_t;
slouken@2735
    39
slouken@2735
    40
/* LiF: __PTRDIFF_TYPE__ was causing errors of conflicting typedefs with the
slouken@2735
    41
   <stdint.h> shipping with devkitARM.  copied a similar ifdef from it. */
slouken@2735
    42
#ifndef __PTRDIFF_TYPE__
slouken@2735
    43
typedef unsigned long uintptr_t;
slouken@2735
    44
#else
slouken@2735
    45
typedef unsigned __PTRDIFF_TYPE__ uintptr_t;
slouken@2735
    46
#endif
slouken@3220
    47
#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
slouken@2735
    48
slouken@5270
    49
#define SIZEOF_VOIDP 4
slouken@5270
    50
slouken@2735
    51
#define SDL_HAS_64BIT_TYPE	1
slouken@2735
    52
slouken@2735
    53
/* Useful headers */
slouken@2735
    54
#define HAVE_SYS_TYPES_H	1
slouken@2735
    55
#define HAVE_STDIO_H	1
slouken@2735
    56
#define STDC_HEADERS	1
slouken@2735
    57
#define HAVE_STRING_H	1
slouken@2735
    58
#define HAVE_CTYPE_H	1
slouken@2735
    59
slouken@2735
    60
/* C library functions */
slouken@2735
    61
#define HAVE_MALLOC	1
slouken@2735
    62
#define HAVE_CALLOC	1
slouken@2735
    63
#define HAVE_REALLOC	1
slouken@2735
    64
#define HAVE_FREE	1
slouken@2735
    65
#define HAVE_ALLOCA	1
slouken@2735
    66
#define HAVE_GETENV	1
icculus@3581
    67
#define HAVE_SETENV	1
slouken@2735
    68
#define HAVE_PUTENV	1
slouken@2735
    69
#define HAVE_QSORT	1
slouken@2735
    70
#define HAVE_ABS	1
slouken@2735
    71
#define HAVE_BCOPY	1
slouken@2735
    72
#define HAVE_MEMSET	1
slouken@2735
    73
#define HAVE_MEMCPY	1
slouken@2735
    74
#define HAVE_MEMMOVE	1
slouken@2735
    75
#define HAVE_MEMCMP	1
slouken@2735
    76
#define HAVE_STRLEN	1
slouken@2735
    77
#define HAVE_STRDUP	1
slouken@2735
    78
#define HAVE_INDEX	1
slouken@2735
    79
#define HAVE_RINDEX	1
slouken@2735
    80
#define HAVE_STRCHR	1
slouken@2735
    81
#define HAVE_STRRCHR	1
slouken@2735
    82
#define HAVE_STRSTR	1
slouken@2735
    83
#define HAVE_STRTOL	1
slouken@2735
    84
#define HAVE_STRTOD	1
slouken@2735
    85
#define HAVE_ATOI	1
slouken@2735
    86
#define HAVE_ATOF	1
slouken@2735
    87
#define HAVE_STRCMP	1
slouken@2735
    88
#define HAVE_STRNCMP	1
slouken@2735
    89
#define HAVE_STRICMP	1
slouken@2735
    90
#define HAVE_STRCASECMP	1
slouken@2735
    91
#define HAVE_SSCANF	1
slouken@2735
    92
#define HAVE_SNPRINTF	1
slouken@2735
    93
#define HAVE_VSNPRINTF	1
slouken@2735
    94
slouken@2735
    95
/* DS isn't that sophisticated */
slouken@2735
    96
#define LACKS_SYS_MMAN_H 1
slouken@2735
    97
slouken@2735
    98
/* Enable various audio drivers */
slouken@2735
    99
#define SDL_AUDIO_DRIVER_NDS	1
slouken@2735
   100
/*#define SDL_AUDIO_DRIVER_DUMMY	1 TODO: uncomment this later*/
slouken@2735
   101
slouken@2735
   102
/* Enable various input drivers */
slouken@2735
   103
#define SDL_JOYSTICK_NDS	1
slouken@2735
   104
/*#define SDL_JOYSTICK_DUMMY	1 TODO: uncomment this later*/
slouken@2735
   105
slouken@2735
   106
/* DS has no dynamic linking afaik */
slouken@2735
   107
#define SDL_LOADSO_DISABLED	1
slouken@2735
   108
slouken@2735
   109
/* Enable various threading systems */
slouken@2735
   110
/*#define SDL_THREAD_NDS	1*/
slouken@2735
   111
#define SDL_THREADS_DISABLED	1
slouken@2735
   112
slouken@2735
   113
/* Enable various timer systems */
slouken@2735
   114
#define SDL_TIMER_NDS	1
slouken@2735
   115
slouken@2735
   116
/* Enable various video drivers */
slouken@2735
   117
#define SDL_VIDEO_DRIVER_NDS	1
slouken@5423
   118
#ifdef USE_HW_RENDERER
slouken@5270
   119
#define SDL_VIDEO_RENDER_NDS	1
slouken@5423
   120
#else
slouken@5423
   121
#define SDL_VIDEO_RENDER_NDS	0
slouken@5423
   122
#endif
slouken@2735
   123
icculus@3170
   124
/* Enable system power support */
icculus@3170
   125
#define SDL_POWER_NINTENDODS 1
icculus@3170
   126
slouken@5270
   127
/* Enable haptic support */
slouken@5270
   128
#define SDL_HAPTIC_NDS 1
slouken@5270
   129
slouken@5423
   130
#define SDL_BYTEORDER   SDL_LIL_ENDIAN
slouken@5423
   131
slouken@2735
   132
#endif /* _SDL_config_nintendods_h */