just to let the programmers among you know: you can now use SDL to do homebrew on nintendo DS, as a result of googles summer of code: fulll mail quote:
I wouldn't mind doing come non-tetris-clone experiments with this. Do you know of an easy beginner's guide? I've used SDL before on PC, I just wouldn't know how to get started on DS.
no, sorry... i never did nds dev. but i know that i like sdl, so i got very excited that it now supports nds and even iphone!! tepples, can you jump in ?
I've never used SDL. For PC game programming, I've always used SDL's biggest competitor; that might be because I started programming games on MS-DOS, which had Allegro but not SDL. And on the GBA and DS, I've always used my own libraries (e.g. GBFS, AGBTTY, RAC VWF, Tri Engine) or devkitPro's (e.g. libnds, libfat). A few things stand in the way of direct ports: No other SDL platform has a resolution of 256x192 pixels. Other popular SDL platforms have e.g. 320x240 (GP2X), 640x480 (PC), 800x480 (Pandora, coming this northern fall). Graphics will likely need redrawing. DS has less CPU (67 MHz, with huge cache miss penalties for instructions and data) and less RAM (4 M than any other popular SDL platform. No keyboard. (Or does SDL provide an on-screen keyboard?) Unlike DS games, DS homebrew equipment is not sold in stores that take cash. I haven't even seen Datel's Games n' Music in Walmart* lately; might the recall due to porn on the demo disc have something to do with it? SDL isn't copylefted (on purpose). This means a lot of SDL games don't have public source code. Nor is there a guarantee that an SDL game has a maintainer or that the maintainer cares about the DS.
heh, i've used allegro before. always been kind of interested in SDL but never got motivated enough to give it a whirl...
Let's bump this one. Anyone ever tried this out? I've played around with SDL before, and I might get back into programming soon enough and I figured SDL might be a good choice for multiplatform. (Win/Lin/Mac/Gp2x/Wiz/Pandora/Dreamcast/DS.. List goes on, SDL is everywhere) So I decided to try this out and got myself a Linux Mint and grabbed SDL 1.3 from svn. Also grabbed toolkit from http://libsdl.org/extras/nds/ Put it in /usr/local/share/devkitPro/ Code: export DEVKITPRO=/usr/local/share/devkitPro export DEVKITARM=$DEVKITPRO/devkitARM export PATH=$DEVKITARM/bin:$PATH Then I did Code: cp include/SDL_config_nds.h include/SDL_config.h make -f Makefile.ds make No errors. Code: cp libSDL.a $DEVKITPRO/libnds/lib/ mkdir $DEVKITPRO/libnds/include/SDL cp include/* $DEVKITPRO/libnds/include/SDL/ Then I go to the test/nds-test-progs/general folder as that was the only examples I could find. I try to compile with the included Makefile so I just type 'make'. This is where SDL starts to hate me. Code: mint general # make linking general.elf main.o: In function `splash': /home/mint/Documents/SDL-1.3.0-5441/test/nds-test-progs/general/source/main.c:18: undefined reference to `SDL_RWFromFile' /home/mint/Documents/SDL-1.3.0-5441/test/nds-test-progs/general/source/main.c:18: undefined reference to `SDL_LoadBMP_RW' /home/mint/Documents/SDL-1.3.0-5441/test/nds-test-progs/general/source/main.c:24: undefined reference to `SDL_UpperBlit' main.o: In function `main': /home/mint/Documents/SDL-1.3.0-5441/test/nds-test-progs/general/source/main.c:61: undefined reference to `SDL_JoystickOpen' /home/mint/Documents/SDL-1.3.0-5441/test/nds-test-progs/general/source/main.c:71: undefined reference to `SDL_FillRect' /home/mint/Documents/SDL-1.3.0-5441/test/nds-test-progs/general/source/main.c:78: undefined reference to `SDL_FillRect' /home/mint/Documents/SDL-1.3.0-5441/test/nds-test-progs/general/source/main.c:86: undefined reference to `SDL_GetTicks' /home/mint/Documents/SDL-1.3.0-5441/test/nds-test-progs/general/source/main.c:75: undefined reference to `SDL_PollEvent' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL.o): In function `SDL_QuitSubSystem': SDL.c:(.text+0x72): undefined reference to `SDL_VideoQuit' SDL.c:(.text+0x8a): undefined reference to `SDL_TimerQuit' SDL.c:(.text+0x96): undefined reference to `SDL_HapticQuit' SDL.c:(.text+0xa4): undefined reference to `SDL_JoystickQuit' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL.o): In function `SDL_InitSubSystem': SDL.c:(.text+0x13c): undefined reference to `SDL_TimerInit' SDL.c:(.text+0x154): undefined reference to `SDL_JoystickInit' SDL.c:(.text+0x164): undefined reference to `SDL_StartTicks' SDL.c:(.text+0x16e): undefined reference to `SDL_HapticInit' SDL.c:(.text+0x18a): undefined reference to `SDL_VideoInit' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_EnableUNICODE': SDL_compat.c:(.text+0xb8): undefined reference to `SDL_StopTextInput' SDL_compat.c:(.text+0xc0): undefined reference to `SDL_StartTextInput' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_GL_SwapBuffers': SDL_compat.c:(.text+0xd4): undefined reference to `SDL_GL_SwapWindow' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_FreeYUVOverlay': SDL_compat.c:(.text+0x102): undefined reference to `SDL_DestroyTexture' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_DisplayYUVOverlay': SDL_compat.c:(.text+0x12e): undefined reference to `SDL_RenderCopy' SDL_compat.c:(.text+0x136): undefined reference to `SDL_RenderPresent' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_UnlockYUVOverlay': SDL_compat.c:(.text+0x166): undefined reference to `SDL_LockTexture' SDL_compat.c:(.text+0x190): undefined reference to `SDL_SW_CopyYUVToRGB' SDL_compat.c:(.text+0x198): undefined reference to `SDL_UnlockTexture' SDL_compat.c:(.text+0x1a0): undefined reference to `SDL_UnlockTexture' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_LockYUVOverlay': SDL_compat.c:(.text+0x1be): undefined reference to `SDL_SW_QueryYUVTexturePixels' SDL_compat.c:(.text+0x21a): undefined reference to `SDL_LockTexture' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_CreateYUVOverlay': SDL_compat.c:(.text+0x31e): undefined reference to `SDL_CreateTexture' SDL_compat.c:(.text+0x364): undefined reference to `SDL_SW_CreateYUVTexture' SDL_compat.c:(.text+0x374): undefined reference to `SDL_GetCurrentDisplayMode' SDL_compat.c:(.text+0x386): undefined reference to `SDL_CreateTexture' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_GetWMInfo': SDL_compat.c:(.text+0x416): undefined reference to `SDL_GetWindowWMInfo' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_SetColors': SDL_compat.c:(.text+0x42c): undefined reference to `SDL_SetPaletteColors' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_GetAppState': SDL_compat.c:(.text+0x45c): undefined reference to `SDL_GetWindowFlags' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_WarpMouse': SDL_compat.c:(.text+0x49c): undefined reference to `SDL_WarpMouseInWindow' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_WM_GrabInput': SDL_compat.c:(.text+0x4b4): undefined reference to `SDL_SetWindowGrab' SDL_compat.c:(.text+0x4ba): undefined reference to `SDL_GetWindowGrab' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_WM_ToggleFullScreen': SDL_compat.c:(.text+0x4d2): undefined reference to `SDL_GetWindowFlags' SDL_compat.c:(.text+0x4de): undefined reference to `SDL_SetWindowFullscreen' SDL_compat.c:(.text+0x4fa): undefined reference to `SDL_SetWindowFullscreen' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_WM_IconifyWindow': SDL_compat.c:(.text+0x52c): undefined reference to `SDL_MinimizeWindow' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_WM_SetCaption': SDL_compat.c:(.text+0x560): undefined reference to `SDL_SetWindowTitle' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_UpdateRects': SDL_compat.c:(.text+0x5e4): undefined reference to `SDL_UpdateTexture' SDL_compat.c:(.text+0x60c): undefined reference to `SDL_RenderCopy' SDL_compat.c:(.text+0x616): undefined reference to `SDL_RenderPresent' SDL_compat.c:(.text+0x634): undefined reference to `SDL_LowerBlit' SDL_compat.c:(.text+0x656): undefined reference to `SDL_RenderCopy' SDL_compat.c:(.text+0x65a): undefined reference to `SDL_RenderPresent' SDL_compat.c:(.text+0x668): undefined reference to `SDL_DirtyTexture' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_DisplayFormat': SDL_compat.c:(.text+0x6e0): undefined reference to `SDL_ConvertSurface' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_DisplayFormatAlpha': SDL_compat.c:(.text+0x728): undefined reference to `SDL_AllocFormat' SDL_compat.c:(.text+0x734): undefined reference to `SDL_ConvertSurface' SDL_compat.c:(.text+0x73c): undefined reference to `SDL_FreeFormat' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_SetAlpha': SDL_compat.c:(.text+0x7a8): undefined reference to `SDL_SetSurfaceAlphaMod' SDL_compat.c:(.text+0x7b0): undefined reference to `SDL_SetSurfaceBlendMode' SDL_compat.c:(.text+0x7bc): undefined reference to `SDL_SetSurfaceRLE' SDL_compat.c:(.text+0x7cc): undefined reference to `SDL_SetSurfaceAlphaMod' SDL_compat.c:(.text+0x7d4): undefined reference to `SDL_SetSurfaceBlendMode' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SelectVideoDisplay': SDL_compat.c:(.text+0x7ee): undefined reference to `SDL_SelectVideoDisplay' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_GetVideoInfo': SDL_compat.c:(.text+0x824): undefined reference to `SDL_GetDesktopDisplayMode' SDL_compat.c:(.text+0x83c): undefined reference to `SDL_PixelFormatEnumToMasks' SDL_compat.c:(.text+0x84c): undefined reference to `SDL_AllocFormat' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `ClearVideoSurface': SDL_compat.c:(.text+0x870): undefined reference to `SDL_MapRGB' SDL_compat.c:(.text+0x87a): undefined reference to `SDL_FillRect' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_CompatEventFilter': SDL_compat.c:(.text+0x8ba): undefined reference to `SDL_SelectMouse' SDL_compat.c:(.text+0x8c4): undefined reference to `SDL_GetMouseState' SDL_compat.c:(.text+0x8ca): undefined reference to `SDL_SelectMouse' SDL_compat.c:(.text+0x8f4): undefined reference to `SDL_PushEvent' SDL_compat.c:(.text+0x902): undefined reference to `SDL_PushEvent' SDL_compat.c:(.text+0x95a): undefined reference to `SDL_HasEvent' SDL_compat.c:(.text+0x972): undefined reference to `SDL_PeepEvents' SDL_compat.c:(.text+0x984): undefined reference to `SDL_PushEvent' SDL_compat.c:(.text+0x99a): undefined reference to `SDL_PushEvent' SDL_compat.c:(.text+0x9b8): undefined reference to `SDL_PushEvent' SDL_compat.c:(.text+0x9ce): undefined reference to `SDL_PushEvent' SDL_compat.c:(.text+0x9e4): undefined reference to `SDL_PushEvent' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o):SDL_compat.c:(.text+0x9fc): more undefined references to `SDL_PushEvent' follow /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_VideoPaletteChanged': SDL_compat.c:(.text+0xa5c): undefined reference to `SDL_SetDisplayPalette' SDL_compat.c:(.text+0xa6e): undefined reference to `SDL_SetTexturePalette' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_ResizeVideoMode': SDL_compat.c:(.text+0xac6): undefined reference to `SDL_GetWindowSize' SDL_compat.c:(.text+0xadc): undefined reference to `SDL_SetWindowSize' SDL_compat.c:(.text+0xafe): undefined reference to `SDL_QueryTexture' SDL_compat.c:(.text+0xb04): undefined reference to `SDL_DestroyTexture' SDL_compat.c:(.text+0xb10): undefined reference to `SDL_CreateTexture' SDL_compat.c:(.text+0xb26): undefined reference to `SDL_QueryTexturePixels' SDL_compat.c:(.text+0xb3c): undefined reference to `SDL_SetClipRect' SDL_compat.c:(.text+0xb44): undefined reference to `SDL_InvalidateMap' SDL_compat.c:(.text+0xb56): undefined reference to `SDL_CalculatePitch' SDL_compat.c:(.text+0xb72): undefined reference to `SDL_SetClipRect' SDL_compat.c:(.text+0xb7a): undefined reference to `SDL_InvalidateMap' SDL_compat.c:(.text+0xb88): undefined reference to `SDL_CalculatePitch' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_SetVideoMode': SDL_compat.c:(.text+0xbd0): undefined reference to `SDL_GetVideoDevice' SDL_compat.c:(.text+0xbe0): undefined reference to `SDL_GetDesktopDisplayMode' SDL_compat.c:(.text+0xc2c): undefined reference to `SDL_FreeSurface' SDL_compat.c:(.text+0xc46): undefined reference to `SDL_DelPaletteWatch' SDL_compat.c:(.text+0xc4e): undefined reference to `SDL_FreeSurface' SDL_compat.c:(.text+0xc60): undefined reference to `SDL_GL_DeleteContext' SDL_compat.c:(.text+0xc78): undefined reference to `SDL_GetEventFilter' SDL_compat.c:(.text+0xcf8): undefined reference to `SDL_GetDesktopDisplayMode' SDL_compat.c:(.text+0xd24): undefined reference to `SDL_CreateWindow' SDL_compat.c:(.text+0xd3e): undefined reference to `SDL_SetWindowIcon' SDL_compat.c:(.text+0xd46): undefined reference to `SDL_GetWindowFlags' SDL_compat.c:(.text+0xdca): undefined reference to `SDL_GL_CreateContext' SDL_compat.c:(.text+0xddc): undefined reference to `SDL_GL_MakeCurrent' SDL_compat.c:(.text+0xdf8): undefined reference to `SDL_CreateRGBSurfaceFrom' SDL_compat.c:(.text+0xe36): undefined reference to `SDL_SetEventFilter' SDL_compat.c:(.text+0xe40): undefined reference to `SDL_GetWindowPosition' SDL_compat.c:(.text+0xe48): undefined reference to `SDL_DestroyWindow' SDL_compat.c:(.text+0xe72): undefined reference to `SDL_CreateRenderer' SDL_compat.c:(.text+0xe7e): undefined reference to `SDL_GetRendererInfo' SDL_compat.c:(.text+0xe8a): undefined reference to `SDL_CreateTexture' SDL_compat.c:(.text+0xea8): undefined reference to `SDL_QueryTexture' SDL_compat.c:(.text+0xec0): undefined reference to `SDL_PixelFormatEnumToMasks' SDL_compat.c:(.text+0xf50): undefined reference to `SDL_SetWindowDisplayMode' SDL_compat.c:(.text+0xf6e): undefined reference to `SDL_QueryTexturePixels' SDL_compat.c:(.text+0xf92): undefined reference to `SDL_CreateRGBSurfaceFrom' SDL_compat.c:(.text+0xfbc): undefined reference to `SDL_DitherColors' SDL_compat.c:(.text+0xfca): undefined reference to `SDL_AddPaletteWatch' SDL_compat.c:(.text+0xfdc): undefined reference to `SDL_SetPaletteColors' SDL_compat.c:(.text+0x101a): undefined reference to `SDL_EnableScreenSaver' SDL_compat.c:(.text+0x103c): undefined reference to `SDL_CreateRGBSurface' SDL_compat.c:(.text+0x104a): undefined reference to `SDL_CreateTexture' SDL_compat.c:(.text+0x1062): undefined reference to `SDL_DisableScreenSaver' SDL_compat.c:(.text+0x107e): undefined reference to `SDL_CreateRGBSurface' SDL_compat.c:(.text+0x10b0): undefined reference to `SDL_SetSurfacePalette' SDL_compat.c:(.text+0x10be): undefined reference to `SDL_AddPaletteWatch' SDL_compat.c:(.text+0x10c8): undefined reference to `SDL_DitherColors' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_ListModes': SDL_compat.c:(.text+0x10e8): undefined reference to `SDL_GetVideoDevice' SDL_compat.c:(.text+0x1102): undefined reference to `SDL_GetNumDisplayModes' SDL_compat.c:(.text+0x110e): undefined reference to `SDL_GetDisplayMode' SDL_compat.c:(.text+0x112c): undefined reference to `SDL_GetNumDisplayModes' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_VideoModeOK': SDL_compat.c:(.text+0x11c4): undefined reference to `SDL_GetVideoDevice' SDL_compat.c:(.text+0x11d8): undefined reference to `SDL_GetNumDisplayModes' SDL_compat.c:(.text+0x11e4): undefined reference to `SDL_GetDisplayMode' SDL_compat.c:(.text+0x11fa): undefined reference to `SDL_GetNumDisplayModes' SDL_compat.c:(.text+0x1228): undefined reference to `SDL_GetDesktopDisplayMode' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_VideoDriverName': SDL_compat.c:(.text+0x1240): undefined reference to `SDL_GetCurrentVideoDriver' SDL_compat.c:(.text+0x124e): undefined reference to `SDL_strlcpy' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_compat.o): In function `SDL_AudioDriverName': SDL_compat.c:(.text+0x1272): undefined reference to `SDL_strlcpy' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_error.o): In function `SDL_SetError': SDL_error.c:(.text+0x152): undefined reference to `SDL_strlcpy' SDL_error.c:(.text+0x220): undefined reference to `SDL_strlcpy' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_audio.o): In function `close_audio_device': SDL_audio.c:(.text+0x2a8): undefined reference to `SDL_WaitThread' SDL_audio.c:(.text+0x2b4): undefined reference to `SDL_DestroyMutex' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_audio.o): In function `open_audio_device': SDL_audio.c:(.text+0x5a6): undefined reference to `SDL_CreateMutex' SDL_audio.c:(.text+0x858): undefined reference to `SDL_CreateThread' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_audio.o): In function `SDL_AudioUnlockDevice_Default': SDL_audio.c:(.text+0xcd4): undefined reference to `SDL_ThreadID' SDL_audio.c:(.text+0xce4): undefined reference to `SDL_mutexV' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_audio.o): In function `SDL_AudioLockDevice_Default': SDL_audio.c:(.text+0xcf8): undefined reference to `SDL_ThreadID' SDL_audio.c:(.text+0xd08): undefined reference to `SDL_mutexP' /usr/local/share/devkitPro/libnds/lib/libSDL.a(SDL_audio.o): In function `SDL_RunAudio': SDL_audio.c:(.text+0xd20): undefined reference to `SDL_ThreadID' SDL_audio.c:(.text+0xd78): undefined reference to `SDL_mutexP' SDL_audio.c:(.text+0xd88): undefined reference to `SDL_mutexV' SDL_audio.c:(.text+0xdca): undefined reference to `SDL_Delay' collect2: ld returned 1 exit status I was able to get some old SDL for DS port working. 1.2.9. But as far as I know there is no touchscreen support and you can only use the top screen. I think. Anyone tried 1.3 and got it to work?
It's not good in the business plan to allow free software SDK available on any platform where the proprietary one require a MAC environment. Steve Job is not philanthropist