Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Final merge of Google Summer of Code 2008 work...

Port SDL 1.3 to the Nintendo DS
by Darren Alton, mentored by Sam Lantinga
  • Loading branch information
slouken committed Aug 27, 2008
1 parent ba7155a commit d01266126f752e0d0216665d26b4ed9490238a20
Showing with 6,082 additions and 388 deletions.
  1. +129 −0 Makefile.ds
  2. +3 −1 include/SDL_config.h.default
  3. +5 −0 include/SDL_config.h.in
  4. +119 −0 include/SDL_config_nintendods.h
  5. +6 −0 include/SDL_pixels.h
  6. +5 −0 include/SDL_platform.h
  7. +9 −0 include/SDL_stdinc.h
  8. +1 −0 src/SDL_compat.c
  9. +2 −2 src/SDL_error.c
  10. +11 −0 src/audio/SDL_audio.c
  11. +2 −4 src/audio/SDL_wave.c
  12. +3 −0 src/audio/alsa/SDL_alsa_audio.c
  13. +1 −2 src/audio/bsd/SDL_bsdaudio.c
  14. +9 −8 src/audio/dart/SDL_dart.c
  15. +1 −2 src/audio/dma/SDL_dmaaudio.c
  16. +2 −3 src/audio/esd/SDL_esdaudio.c
  17. +130 −0 src/audio/nds/SDL_ndsaudio.c
  18. +44 −0 src/audio/nds/SDL_ndsaudio.h
  19. +2 −4 src/audio/nto/SDL_nto_audio.c
  20. +2 −3 src/audio/paudio/SDL_paudio.c
  21. +2 −4 src/audio/ums/SDL_umsaudio.c
  22. +3 −4 src/audio/windib/SDL_dibaudio.c
  23. +3 −2 src/audio/windx5/SDL_dx5audio.c
  24. +1 −0 src/cdrom/SDL_cdrom.c
  25. +5 −10 src/cdrom/aix/SDL_syscdrom.c
  26. +1 −2 src/cdrom/beos/SDL_syscdrom.cc
  27. +1 −2 src/cdrom/bsdi/SDL_syscdrom.c
  28. +1 −2 src/cdrom/freebsd/SDL_syscdrom.c
  29. +1 −2 src/cdrom/linux/SDL_syscdrom.c
  30. +1 −2 src/cdrom/macosx/AudioFilePlayer.c
  31. +3 −5 src/cdrom/macosx/AudioFileReaderThread.c
  32. +1 −2 src/cdrom/macosx/CDPlayer.c
  33. +1 −2 src/cdrom/openbsd/SDL_syscdrom.c
  34. +1 −2 src/cdrom/osf/SDL_syscdrom.c
  35. +2 −4 src/cdrom/qnx/SDL_syscdrom.c
  36. +1 −0 src/events/SDL_events.c
  37. +2 −0 src/events/default_cursor.h
  38. +22 −0 src/file/SDL_rwops.c
  39. +2 −2 src/joystick/darwin/SDL_sysjoystick.c
  40. +17 −10 src/joystick/linux/SDL_sysjoystick.c
  41. +172 −0 src/joystick/nds/SDL_sysjoystick.c
  42. +3 −2 src/loadso/macosx/SDL_dlcompat.c
  43. +1 −2 src/main/beos/SDL_BeApp.cc
  44. +8 −0 src/stdlib/SDL_stdlib.c
  45. +2 −0 src/thread/SDL_thread_c.h
  46. +3 −2 src/thread/irix/SDL_syssem.c
  47. +229 −0 src/thread/nds/SDL_syscond.c
  48. +26 −0 src/thread/nds/SDL_syscond_c.h
  49. +142 −0 src/thread/nds/SDL_sysmutex.c
  50. +26 −0 src/thread/nds/SDL_sysmutex_c.h
  51. +228 −0 src/thread/nds/SDL_syssem.c
  52. +26 −0 src/thread/nds/SDL_syssem_c.h
  53. +63 −0 src/thread/nds/SDL_systhread.c
  54. +28 −0 src/thread/nds/SDL_systhread_c.h
  55. +1 −2 src/thread/pthread/SDL_syssem.c
  56. +1 −2 src/thread/riscos/SDL_syssem.c
  57. +120 −0 src/timer/nds/SDL_systimer.c
  58. +1 −2 src/timer/riscos/SDL_systimer.c
  59. +1 −2 src/timer/unix/SDL_systimer.c
  60. +10 −20 src/video/SDL_RLEaccel.c
  61. +3 −0 src/video/SDL_blit_0.c
  62. +2 −0 src/video/SDL_blit_1.c
  63. +4 −4 src/video/SDL_blit_A.c
  64. +11 −2 src/video/SDL_blit_N.c
  65. +1 −0 src/video/SDL_gamma.c
  66. +5 −0 src/video/SDL_pixels.c
  67. +17 −15 src/video/SDL_renderer_sw.c
  68. +3 −3 src/video/SDL_surface.c
  69. +3 −0 src/video/SDL_sysvideo.h
  70. +3 −0 src/video/SDL_video.c
  71. +7 −7 src/video/ataricommon/SDL_atarigl.c
  72. +2 −2 src/video/bwindow/SDL_sysvideo.cc
  73. +2 −4 src/video/dc/SDL_dcevents.c
  74. +2 −0 src/video/dc/SDL_dcvideo.c
  75. +10 −18 src/video/directfb/SDL_DirectFB_events.c
  76. +18 −17 src/video/directfb/SDL_DirectFB_mouse.c
  77. +39 −33 src/video/directfb/SDL_DirectFB_video.c
  78. +1 −0 src/video/fbcon/SDL_fb3dfx.c
  79. +1 −2 src/video/fbcon/SDL_fbelo.c
  80. +5 −5 src/video/fbcon/SDL_fbevents.c
  81. +1 −0 src/video/fbcon/SDL_fbmatrox.c
  82. +2 −0 src/video/fbcon/SDL_fbriva.c
  83. +9 −8 src/video/fbcon/SDL_fbvideo.c
  84. +2 −2 src/video/gapi/SDL_gapivideo.c
  85. +10 −10 src/video/ipod/SDL_ipodvideo.c
  86. +54 −0 src/video/nds/SDL_ndsevents.c
  87. +28 −0 src/video/nds/SDL_ndsevents_c.h
  88. +660 −0 src/video/nds/SDL_ndsrender.c
  89. +28 −0 src/video/nds/SDL_ndsrender_c.h
  90. +168 −0 src/video/nds/SDL_ndsvideo.c
  91. +31 −0 src/video/nds/SDL_ndsvideo.h
  92. +92 −91 src/video/os2fslib/SDL_os2fslib.c
  93. +8 −5 src/video/photon/SDL_ph_gl.c
  94. +2 −3 src/video/photon/SDL_ph_image.c
  95. +3 −4 src/video/photon/SDL_phyuv.c
  96. +3 −5 src/video/ps2gs/SDL_gsevents.c
  97. +4 −0 src/video/ps2gs/SDL_gsvideo.c
  98. +1 −0 src/video/riscos/SDL_riscosvideo.c
  99. +1 −2 src/video/svga/SDL_svgaevents.c
  100. +2 −0 src/video/svga/SDL_svgavideo.c
  101. +1 −2 src/video/vgl/SDL_vglevents.c
  102. +2 −0 src/video/vgl/SDL_vglvideo.c
  103. +4 −5 src/video/win32/SDL_d3drender.c
  104. +2 −3 src/video/win32/SDL_gdirender.c
  105. +1 −0 src/video/win32/SDL_win32keyboard.c
  106. +1 −2 src/video/win32/SDL_win32opengl.c
  107. +1 −2 src/video/wscons/SDL_wsconsevents.c
  108. +1 −0 src/video/wscons/SDL_wsconsvideo.c
  109. +2 −2 src/video/x11/SDL_x11opengl.c
  110. +4 −4 src/video/xbios/SDL_xbiosmodes.c
  111. +132 −0 test/nds-test-progs/general/Makefile
  112. +96 −0 test/nds-test-progs/general/source/main.c
  113. +132 −0 test/nds-test-progs/sprite/Makefile
  114. +965 −0 test/nds-test-progs/sprite/source/common.c
  115. +48 −0 test/nds-test-progs/sprite/source/common.h
  116. +316 −0 test/nds-test-progs/sprite/source/testsprite.c
  117. +132 −0 test/nds-test-progs/sprite2/Makefile
  118. +965 −0 test/nds-test-progs/sprite2/source/common.c
  119. +48 −0 test/nds-test-progs/sprite2/source/common.h
  120. +330 −0 test/nds-test-progs/sprite2/source/testsprite2.c
  121. +1 −2 test/testblitspeed.c
  122. +1 −2 test/testdyngl.c
  123. +1 −2 test/testpalette.c
@@ -0,0 +1,129 @@

#LibSDL 1.3 porting and enhancements by Darren Alton (lifning)
#LibSDL 1.2.9 DS porting by Troy Davis(GPF)

ifeq ($(strip $(DEVKITPRO)),)
$(error "Please set DEVKITPRO in your environment (available from http://www.devkitpro.org). export DEVKITPRO=<path to>devkitPro")
endif
ifeq ($(strip $(DEVKITARM)),)
DEVKITARM = $(DEVKITPRO)/devkitARM
endif
PATH := $(PATH):$(DEVKITARM)/bin

CC = arm-eabi-gcc
AR = arm-eabi-ar
RANLIB = arm-eabi-ranlib

#ifdef GL
#DEFS += -DSDL_VIDEO_OPENGL=1
#TARGET = libSDL_gl.a
#else
TARGET = libSDL.a
#endif

#CFLAGS=$(DEFS) -Iinclude
CFLAGS = -mthumb -mthumb-interwork \
-march=armv5te -mtune=arm946e-s \
-O2 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
-DARM9 -D__NDS__ -I$(DEVKITPRO)/libnds/include -DENABLE_NDS -DNO_SIGNAL_H -DDISABLE_THREADS -DPACKAGE=\"SDL\" -DVERSION=\"1.3\" -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 \
-Iinclude -Isrc -Isrc/audio -Isrc/cdrom -Isrc/endian -Isrc/events -Isrc/joystick -Isrc/thread/nds -Isrc/thread -Isrc/timer -Isrc/video

#src/audio/disk/SDL_diskaudio.c \
#src/audio/dummy/SDL_dummyaudio.c \

SRCS = \
src/SDL.c \
src/SDL_compat.c \
src/SDL_error.c \
src/SDL_fatal.c \
src/audio/nds/SDL_ndsaudio.c \
src/audio/SDL_audio.c \
src/audio/SDL_audiocvt.c \
src/audio/SDL_audiodev.c \
src/audio/SDL_audiotypecvt.c \
src/audio/SDL_mixer.c \
src/audio/SDL_mixer_m68k.c \
src/audio/SDL_mixer_MMX.c \
src/audio/SDL_mixer_MMX_VC.c \
src/audio/SDL_wave.c \
src/cdrom/dummy/SDL_syscdrom.c \
src/cdrom/SDL_cdrom.c \
src/cpuinfo/SDL_cpuinfo.c \
src/events/SDL_events.c \
src/events/SDL_keyboard.c \
src/events/SDL_mouse.c \
src/events/SDL_quit.c \
src/events/SDL_windowevents.c \
src/file/SDL_rwops.c \
src/joystick/nds/SDL_sysjoystick.c \
src/joystick/SDL_joystick.c \
src/stdlib/SDL_getenv.c \
src/stdlib/SDL_iconv.c \
src/stdlib/SDL_malloc.c \
src/stdlib/SDL_qsort.c \
src/stdlib/SDL_stdlib.c \
src/stdlib/SDL_string.c \
src/thread/SDL_thread.c \
src/thread/nds/SDL_syscond.c \
src/thread/nds/SDL_sysmutex.c \
src/thread/nds/SDL_syssem.c \
src/thread/nds/SDL_systhread.c \
src/timer/nds/SDL_systimer.c \
src/timer/SDL_timer.c \
src/video/nds/SDL_ndsevents.c \
src/video/nds/SDL_ndsrender.c \
src/video/nds/SDL_ndsvideo.c \
src/video/dummy/SDL_nullevents.c \
src/video/dummy/SDL_nullrender.c \
src/video/dummy/SDL_nullvideo.c \
src/video/SDL_blit_0.c \
src/video/SDL_blit_1.c \
src/video/SDL_blit_A.c \
src/video/SDL_blit_auto.c \
src/video/SDL_blit.c \
src/video/SDL_blit_copy.c \
src/video/SDL_blit_N.c \
src/video/SDL_blit_slow.c \
src/video/SDL_bmp.c \
src/video/SDL_fill.c \
src/video/SDL_gamma.c \
src/video/SDL_pixels.c \
src/video/SDL_rect.c \
src/video/SDL_renderer_gl.c \
src/video/SDL_renderer_sw.c \
src/video/SDL_RLEaccel.c \
src/video/SDL_stretch.c \
src/video/SDL_surface.c \
src/video/SDL_video.c \
src/video/SDL_yuv_mmx.c \
src/video/SDL_yuv_sw.c \

OBJS = $(SRCS:.c=.o)

TEST = \
test/nds-test-progs/general/general.nds \
test/nds-test-progs/sprite/sprite.nds \
test/nds-test-progs/sprite2/sprite2.nds \


all: $(TARGET)

$(TARGET): copy_config \
$(OBJS)
$(AR) rc $(TARGET) $(OBJS)
-@ ($(RANLIB) $@ || true) >/dev/null 2>&1

install: $(TARGET)
@cp libSDL.a $(DEVKITPRO)/libnds/lib/
@mkdir -p $(DEVKITPRO)/libnds/include/SDL/
@cp include/*.h $(DEVKITPRO)/libnds/include/SDL/

nds_test:
$(MAKE) -C test/nds-test-progs

copy_config:
@cp include/SDL_config.h.default include/SDL_config.h

clean:
rm -f include/SDL_config.h $(OBJS)

@@ -26,7 +26,9 @@
#include "SDL_platform.h"

/* Add any platform that doesn't build using the configure system */
#if defined(__DREAMCAST__)
#if defined(__NINTENDODS__)
#include "SDL_config_nintendods.h"
#elif defined(__DREAMCAST__)
#include "SDL_config_dreamcast.h"
#elif defined(__MACOSX__)
#include "SDL_config_macosx.h"
@@ -177,6 +177,7 @@
#undef SDL_AUDIO_DRIVER_MMEAUDIO
#undef SDL_AUDIO_DRIVER_NAS
#undef SDL_AUDIO_DRIVER_NAS_DYNAMIC
#undef SDL_AUDIO_DRIVER_NDS
#undef SDL_AUDIO_DRIVER_OSS
#undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H
#undef SDL_AUDIO_DRIVER_PAUDIO
@@ -211,6 +212,7 @@
#undef SDL_JOYSTICK_IOKIT
#undef SDL_JOYSTICK_LINUX
#undef SDL_JOYSTICK_MINT
#undef SDL_JOYSTICK_NDS
#undef SDL_JOYSTICK_OS2
#undef SDL_JOYSTICK_RISCOS
#undef SDL_JOYSTICK_WINMM
@@ -233,6 +235,7 @@
/* Enable various threading systems */
#undef SDL_THREAD_BEOS
#undef SDL_THREAD_DC
#undef SDL_THREAD_NDS
#undef SDL_THREAD_OS2
#undef SDL_THREAD_PTH
#undef SDL_THREAD_PTHREAD
@@ -246,6 +249,7 @@
#undef SDL_TIMER_DC
#undef SDL_TIMER_DUMMY
#undef SDL_TIMER_MINT
#undef SDL_TIMER_NDS
#undef SDL_TIMER_OS2
#undef SDL_TIMER_RISCOS
#undef SDL_TIMER_UNIX
@@ -263,6 +267,7 @@
#undef SDL_VIDEO_DRIVER_GEM
#undef SDL_VIDEO_DRIVER_IPOD
#undef SDL_VIDEO_DRIVER_NANOX
#undef SDL_VIDEO_DRIVER_NDS
#undef SDL_VIDEO_DRIVER_OS2FS
#undef SDL_VIDEO_DRIVER_PHOTON
#undef SDL_VIDEO_DRIVER_PS2GS
@@ -0,0 +1,119 @@
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2006 Sam Lantinga
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Sam Lantinga
slouken@libsdl.org
*/

#ifndef _SDL_config_nintendods_h
#define _SDL_config_nintendods_h

#include "SDL_platform.h"

/* This is a set of defines to configure the SDL features */

typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef signed short int16_t;
typedef unsigned short uint16_t;
typedef signed int int32_t;
typedef unsigned int uint32_t;
typedef signed long long int64_t;
typedef unsigned long long uint64_t;

/* LiF: __PTRDIFF_TYPE__ was causing errors of conflicting typedefs with the
<stdint.h> shipping with devkitARM. copied a similar ifdef from it. */
#ifndef __PTRDIFF_TYPE__
typedef unsigned long uintptr_t;
#else
typedef unsigned __PTRDIFF_TYPE__ uintptr_t;
#endif


#define SDL_HAS_64BIT_TYPE 1

/* Useful headers */
#define HAVE_SYS_TYPES_H 1
#define HAVE_STDIO_H 1
#define STDC_HEADERS 1
#define HAVE_STRING_H 1
#define HAVE_CTYPE_H 1

/* C library functions */
#define HAVE_MALLOC 1
#define HAVE_CALLOC 1
#define HAVE_REALLOC 1
#define HAVE_FREE 1
#define HAVE_ALLOCA 1
#define HAVE_GETENV 1
#define HAVE_PUTENV 1
#define HAVE_QSORT 1
#define HAVE_ABS 1
#define HAVE_BCOPY 1
#define HAVE_MEMSET 1
#define HAVE_MEMCPY 1
#define HAVE_MEMMOVE 1
#define HAVE_MEMCMP 1
#define HAVE_STRLEN 1
#define HAVE_STRDUP 1
#define HAVE_INDEX 1
#define HAVE_RINDEX 1
#define HAVE_STRCHR 1
#define HAVE_STRRCHR 1
#define HAVE_STRSTR 1
#define HAVE_STRTOL 1
#define HAVE_STRTOD 1
#define HAVE_ATOI 1
#define HAVE_ATOF 1
#define HAVE_STRCMP 1
#define HAVE_STRNCMP 1
#define HAVE_STRICMP 1
#define HAVE_STRCASECMP 1
#define HAVE_SSCANF 1
#define HAVE_SNPRINTF 1
#define HAVE_VSNPRINTF 1

/* DS isn't that sophisticated */
#define LACKS_SYS_MMAN_H 1

/* Enable various audio drivers */
#define SDL_AUDIO_DRIVER_NDS 1
/*#define SDL_AUDIO_DRIVER_DUMMY 1 TODO: uncomment this later*/

/* DS doesn't have optical media */
#define SDL_CDROM_DISABLED 1

/* Enable various input drivers */
#define SDL_JOYSTICK_NDS 1
/*#define SDL_JOYSTICK_DUMMY 1 TODO: uncomment this later*/

/* DS has no dynamic linking afaik */
#define SDL_LOADSO_DISABLED 1

/* Enable various threading systems */
/*#define SDL_THREAD_NDS 1*/
#define SDL_THREADS_DISABLED 1

/* Enable various timer systems */
#define SDL_TIMER_NDS 1

/* Enable various video drivers */
#define SDL_VIDEO_DRIVER_NDS 1
/*#define SDL_VIDEO_DRIVER_DUMMY 1 TODO: uncomment this later*/

#endif /* _SDL_config_nintendods_h */
@@ -146,12 +146,18 @@ enum
SDL_PIXELFORMAT_RGB555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
SDL_PACKEDLAYOUT_1555, 15, 2),
SDL_PIXELFORMAT_BGR555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
SDL_PACKEDLAYOUT_1555, 15, 2),
SDL_PIXELFORMAT_ARGB4444 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
SDL_PACKEDLAYOUT_4444, 16, 2),
SDL_PIXELFORMAT_ARGB1555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
SDL_PACKEDLAYOUT_1555, 16, 2),
SDL_PIXELFORMAT_ABGR1555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
SDL_PACKEDLAYOUT_1555, 16, 2),
SDL_PIXELFORMAT_RGB565 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
SDL_PACKEDLAYOUT_565, 16, 2),
@@ -97,4 +97,9 @@
#define __WIN32__ 1
#endif

#if defined(__NDS__)
#undef __NINTENDODS__
#define __NINTENDODS__ 1
#endif

#endif /* _SDL_platform_h */
@@ -147,8 +147,12 @@ SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);
SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);
SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);
SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);
#ifndef __NINTENDODS__ /* TODO: figure out why the following happens:
include/SDL_stdinc.h:150: error: size of array 'SDL_dummy_uint64' is negative
include/SDL_stdinc.h:151: error: size of array 'SDL_dummy_sint64' is negative */
SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);
SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
#endif
#endif /* DOXYGEN_SHOULD_IGNORE_THIS */

/* Check to make sure enums are the size of ints, for structure packing.
@@ -162,12 +166,14 @@ SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
#endif

#ifndef DOXYGEN_SHOULD_IGNORE_THIS
#ifndef __NINTENDODS__ /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
typedef enum
{
DUMMY_ENUM_VALUE
} SDL_DUMMY_ENUM;

SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));
#endif
#endif /* DOXYGEN_SHOULD_IGNORE_THIS */

#include "begin_code.h"
@@ -425,6 +431,9 @@ extern DECLSPEC size_t SDLCALL SDL_strlen(const char *string);
#ifdef HAVE_WCSLEN
#define SDL_wcslen wcslen
#else
#if !defined(wchar_t) && defined(__NINTENDODS__)
#define wchar_t short /* TODO: figure out why libnds doesn't have this */
#endif
extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t * string);
#endif

@@ -693,6 +693,7 @@ SDL_UpdateRect(SDL_Surface * screen, Sint32 x, Sint32 y, Uint32 w, Uint32 h)
SDL_UpdateRects(screen, 1, &rect);
}
}

void
SDL_UpdateRects(SDL_Surface * screen, int numrects, SDL_Rect * rects)
{
@@ -180,8 +180,8 @@ SDL_GetErrorMsg(char *errstr, unsigned int maxlen)
case 's':
len =
SDL_snprintf(msg, maxlen, tmp,
SDL_LookupString(error->
args[argi++].buf));
SDL_LookupString(error->args[argi++].
buf));
msg += len;
maxlen -= len;
break;

0 comments on commit d012661

Please sign in to comment.