I need your help to test SDL capabilities about joystick detection and supported screen resolution. You just need to run the following code then copy back the debug output back here and if possible add information about Linux distribution you have and information about your graphic cards.
Thanks in advance to all volunteers.
Best Regards.
Guimauve
Code: Select all
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Test Fonctionnement SDL
; Nom du fichier : SDL Joystick Screen Test.pb
; Version du fichier : 1.0.0
; Programmation : OK
; Programmé par : Guimauve
; Date : 20-02-2010
; Mise à jour : 20-02-2010
; Code PureBasic : 4.41
; Plateforme : Linux
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Import "/usr/lib/libSDL.so"
; <<<<<<<<<<<<<<<<<<<
; <<<<< General <<<<<
SDL_Init(Flag.l)
SDL_InitSubSystem(Flag.l)
SDL_QuitSubSystem(Flag.l)
SDL_Quit()
SDL_WasInit(Flag.l)
SDL_VERSION(*VersionA.SDL_version); --> Useless
SDL_GetError()
SDL_ClearError()
SDL_LoadObject(SO_file.s)
SDL_Linked_Version()
; SDL_SetError (const char *fmt, ...) ; --> À VALIDER
; SDL_Error(SDL_errorcode code) ; --> À VALIDER
; SDL_LoadFunction(*handle.i, Name.s) ; --> À VALIDER
; SDL_UnloadObject(*handle.i) ; --> À VALIDER
; <<<<<<<<<<<<<<<<<
; <<<<< Video <<<<<
SDL_GetVideoSurface()
SDL_GetVideoInfo()
SDL_VideoDriverName(namebuf.s, maxlen.l)
SDL_ListModes(*Format.SDL_PixelFormat, Flags.l)
SDL_VideoModeOK(Width.l, Height.l, BitsPerPixel.l, Flags.l)
SDL_SetVideoMode(Width.l, Height.l, BitsPerPixel.l, Flags.l)
SDL_UpdateRect(*Screen.SDL_Surface, x.l, y.l, Width.l, Height.l)
SDL_UpdateRects(*Screen.SDL_Surface, NumRects.l, *Rects.SDL_Rect)
SDL_Flip(*Screen.SDL_Surface)
SDL_SetColors(*Surface.SDL_Surface, *colors.SDL_Color, firstcolor.l, ncolors.l)
SDL_SetPalette(*Surface.SDL_Surface, Flags.l, *colors.SDL_Color, firstcolor.l, ncolors.l)
SDL_SetGamma(Red_gamma.f, Green_gamma.f, Blue_gamma.f)
SDL_MapRGB(*Format.SDL_PixelFormat, Red.a, Green.a, Blue.a)
SDL_MapRGBA(*Format.SDL_PixelFormat, Red.a, Green.a, Blue.a, Alpha.a)
SDL_GetRGB(Pixel.l, *Format.SDL_PixelFormat, *Red.a, *Green.a, *Blue.a) ; --> À VALIDER
SDL_GetRGBA(Pixel.l, *Format.SDL_PixelFormat, *Red.a, *Green.a, *Blue.a, *Alpha.a) ; --> À VALIDER
SDL_CreateRGBSurface(Flags.l, Width.l, Height.l, BitsPerPixel.l, Rmask.l, Gmask.l, Bmask.l, Amask.l)
SDL_CreateRGBSurfaceFrom(*pixels.i, Width.l, Height.l, Depth.l, Pitch.l, Rmask.l, Gmask.l, Bmask.l, Amask.l) ; --> À VALIDER
SDL_FreeSurface(*Surface.SDL_Surface)
SDL_LockSurface(*Surface.SDL_Surface)
SDL_UnlockSurface(*Surface.SDL_Surface)
SDL_ConvertSurface(*Source.SDL_Surface, *fmt.SDL_PixelFormat, Flags.l)
SDL_DisplayFormat(*Surface.SDL_Surface)
SDL_DisplayFormatAlpha(*Surface.SDL_Surface)
SDL_LoadBMP(FileName.s)
SDL_SaveBMP(*Surface.SDL_Surface, FileName.s)
SDL_SetColorKey(*Surface.SDL_Surface, Flag.l, Key.l)
SDL_SetAlpha(*Surface.SDL_Surface, Flags.l, Alpha.l)
SDL_SetClipRect(*Surface.SDL_Surface, *Rect.SDL_Rect)
SDL_GetClipRect(*Surface.SDL_Surface, *Rect.SDL_Rect)
SDL_BlitSurface(*Source.SDL_Surface, *SourceRect.SDL_Rect, *Dest.SDL_Surface, *DestRect.SDL_Rect)
SDL_FillRect(*Dest.SDL_Surface, *DestRect.SDL_Rect, Color.l)
; SDL_GetGammaRamp(Uint16 *redtable, Uint16 *greentable, Uint16 *bluetable) ; --> À VALIDER
; SDL_SetGammaRamp(Uint16 *redtable, Uint16 *greentable, Uint16 *bluetable) ; --> À VALIDER
SDL_GL_LoadLibrary(Path.s)
SDL_GL_GetProcAddress(Proc.s)
SDL_GL_GetAttribute(Attribute.l, *Value.l) ; --> À VALIDER
SDL_GL_SetAttribute(Attribute.l, Value.l) ; --> À VALIDER
SDL_GL_SwapBuffers()
SDL_CreateYUVOverlay(Width.l, Height.l, Format.l, *Display.SDL_Surface)
SDL_LockYUVOverlay(*Overlay.SDL_Overlay)
SDL_UnlockYUVOverlay(*Overlay.SDL_Overlay)
SDL_DisplayYUVOverlay(*Overlay.SDL_Overlay, *DestRect.SDL_Rect)
SDL_FreeYUVOverlay(*Overlay.SDL_Overlay)
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Window management <<<<<
SDL_WM_SetCaption(Title.s, Icon.s)
SDL_WM_SetIcon(*icon.SDL_Surface, *mask.a)
SDL_WM_IconifyWindow()
SDL_WM_ToggleFullScreen(*Surface.SDL_Surface)
SDL_WM_GrabInput(Mode.b)
; SDL_GetWMInfo(*info.SDL_SysWMinfo)
; SDL_WM_GetCaption(char **title, char **icon) ; À VALIDER
; <<<<<<<<<<<<<<<<<<
; <<<<< Events <<<<<
SDL_PumpEvents()
SDL_PeepEvents(*Events.SDL_Event, numevents.l, Action.l, Mask.l)
SDL_PollEvent(*Event.SDL_Event)
SDL_WaitEvent(*Event.SDL_Event)
SDL_PushEvent(*Event.SDL_Event)
SDL_GetEventFilter()
SDL_EventState(Type.a, State.l)
SDL_GetKeyState(*numkeys.l)
SDL_GetModState()
SDL_SetModState(Modstate.l)
SDL_GetKeyName(Key.l)
SDL_EnableUNICODE(Enable.l)
SDL_EnableKeyRepeat(Delay.l, Interval.l)
SDL_GetMouseState(*x.l, *y.l)
SDL_GetRelativeMouseState(*x.l, *y.l)
SDL_GetAppState()
SDL_JoystickEventState(State.l)
SDL_StartTextInput()
SDL_StopTextInput()
SDL_SetTextInputRect(*Rect.SDL_Rect)
; SDL_SetEventFilter(SDL_EventFilter filter) ; --> À VALIDER
; <<<<<<<<<<<<<<<<<
; <<<<< Mouse <<<<<
SDL_WarpMouse(x.w, y.w)
SDL_CreateCursor(*data_.a, *mask.a, w.l, h.l, hot_x.l, hot_y.l) ; À VALIDER
SDL_FreeCursor(*Cursor.SDL_Cursor)
SDL_SetCursor(*Cursor.SDL_Cursor)
SDL_GetCursor()
SDL_ShowCursor(Toggle.l)
; <<<<<<<<<<<<<<<<<<<<
; <<<<< Joystick <<<<<
SDL_NumJoysticks()
SDL_JoystickUpdate()
SDL_JoystickName(Index.l)
SDL_JoystickOpen(Index.l)
SDL_JoystickOpened(Index.l)
SDL_JoystickIndex(*JoystickA.i)
SDL_JoystickNumAxes(*JoystickA.i)
SDL_JoystickNumBalls(*JoystickA.i)
SDL_JoystickNumHats(*JoystickA.i)
SDL_JoystickNumButtons(*JoystickA.i)
SDL_JoystickClose(*JoystickA.i)
SDL_JoystickGetAxis(*JoystickA.i, Axis.l)
SDL_JoystickGetHat(*JoystickA.i, Hat.l)
SDL_JoystickGetButton(*JoystickA.i, Button.l)
SDL_JoystickGetBall(*JoystickA.i, Ball.l, *Dx.l, *Dy.l)
EndImport
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Macro de formatage <<<<<
Macro Format_SDL_Version(SDL_VersionA)
"SDL Version : " + StrU(SDL_VersionA\major, #PB_Byte) + "." + StrU(SDL_VersionA\minor, #PB_Byte) + "." + StrU(SDL_VersionA\patch, #PB_Byte)
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur Initialize <<<<<
Procedure InitializeSDL_version(*SDL_versionA.SDL_version)
*Version.SDL_version = SDL_Linked_Version()
CopyMemory(*Version, *SDL_versionA, SizeOf(SDL_version))
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Code d'essai des résolutions avec lesquelles SDL peut travailler <<<<<
SDL_Init(#SDL_INIT_EVERYTHING)
InitializeSDL_version(SDL_version.SDL_version)
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; " + Format_SDL_Version(SDL_Version)
Debug "; Joystick test"
Debug ""
Max = SDL_NumJoysticks()
For Index = 0 To Max -1
Debug PeekS(SDL_JoystickName(Index))
Joystick.i = SDL_JoystickOpen(Index)
JoyIndex.b = SDL_JoystickIndex(Joystick)
AxisCount.b = SDL_JoystickNumAxes(Joystick)
BallsCount.b = SDL_JoystickNumBalls(Joystick)
HatCount.b = SDL_JoystickNumHats(Joystick)
ButtonCount.b = SDL_JoystickNumButtons(Joystick)
SDL_JoystickClose(Joystick)
Debug "JoyIndex = " + Str(JoyIndex)
Debug "AxisCount = " + Str(AxisCount)
Debug "BallsCount = " + Str(BallsCount)
Debug "HatCount = " + Str(HatCount)
Debug "ButtonCount = " + Str(ButtonCount)
Debug ""
Next
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; " + Format_SDL_Version(SDL_Version)
Debug "; Screen Resolution test"
Debug ""
Restore ScreenRes
For Index = 0 To 63
Read.l Width.l
Read.l Height.l
Read.s Aspect.s
If SDL_VideoModeOK(Width, Height, 16, #SDL_FULLSCREEN) <> 0
Debug Str(Width) + " X " + Str(Height) + " X 16 (" + Aspect + ")"
EndIf
If SDL_VideoModeOK(Width, Height, 24, #SDL_FULLSCREEN) <> 0
Debug Str(Width) + " X " + Str(Height) + " X 24 (" + Aspect + ")"
EndIf
If SDL_VideoModeOK(Width, Height, 32, #SDL_FULLSCREEN) <> 0
Debug Str(Width) + " X " + Str(Height) + " X 32 (" + Aspect + ")"
EndIf
Next
SDL_Quit()
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Liste des résolutions standards <<<<<
DataSection
ScreenRes:
Data.l 640, 480
Data.s "4:3"
Data.l 640, 512
Data.s "5:4"
Data.l 720, 348
Data.s "60:29"
; 3
Data.l 720, 350
Data.s "72:35"
Data.l 720, 364
Data.s "180:91"
Data.l 768, 480
Data.s "16:10"
; 6
Data.l 800, 352
Data.s "25:11"
Data.l 800, 480
Data.s "5:3"
Data.l 800, 600
Data.s "4:3"
; 9
Data.l 832, 624
Data.s "4:3"
Data.l 856, 480
Data.s "16:9"
Data.l 960, 540
Data.s "16:9"
; 12
Data.l 960, 720
Data.s "4:3"
Data.l 1024,576
Data.s "16:9"
Data.l 1024,640
Data.s "16:10"
; 15
Data.l 1024,768
Data.s "4:3"
Data.l 1024,1024
Data.s "1:1"
Data.l 1120,832
Data.s "35:26"
; 18
Data.l 1152,720
Data.s "16:10"
Data.l 1152,768
Data.s "3:2"
Data.l 1152,864
Data.s "4:3"
; 21
Data.l 1152,900
Data.s "32:25"
Data.l 1280,768
Data.s "5:3"
Data.l 1280,800
Data.s "16:10"
; 24
Data.l 1280,854
Data.s "3:2"
Data.l 1280,960
Data.s "4:3"
Data.l 1280,1024
Data.s "5:4"
; 27
Data.l 1366,768
Data.s "16:9"
Data.l 1400,1050
Data.s "4:3"
Data.l 1440,900
Data.s "16:10"
; 30
Data.l 1440,1024
Data.s "45:32"
Data.l 1440, 1080
Data.s "4:3"
Data.l 1600,768
Data.s "25:12"
; 33
Data.l 1600,900
Data.s "16:9"
Data.l 1600,1024
Data.s "25:16"
Data.l 1600,1200
Data.s "4:3"
; 36
Data.l 1680,1050
Data.s "16:10"
Data.l 1792,1344
Data.s "4:3"
Data.l 1800,1440
Data.s "5:4"
; 39
Data.l 1856,1392
Data.s "4:3"
Data.l 1920,1080
Data.s "16:9"
Data.l 1920,1200
Data.s "16:10"
Data.l 1920,1400
Data.s "48:35"
; 42
Data.l 1920,1440
Data.s "4:3"
Data.l 2048,1152
Data.s "16:9"
Data.l 2048,1536
Data.s "4:3"
; 45
Data.l 2304,1440
Data.s "16:10"
Data.l 2560,1440
Data.s "16:9"
Data.l 2560,1600
Data.s "16:10"
; 48
Data.l 2560,1920
Data.s "4:3"
Data.l 2560,2048
Data.s "5:4"
Data.l 2800,2100
Data.s "4:3"
; 51
Data.l 3200,2048
Data.s "25:16"
Data.l 3200,2400
Data.s "4:3"
Data.l 3840,2160
Data.s "16:9"
; 54
Data.l 3840,2400
Data.s "16:10"
Data.l 4096,2304
Data.s "16:9"
Data.l 4096,3072
Data.s "4:3"
; 57
Data.l 5120,3200
Data.s "16:10"
Data.l 5120,4096
Data.s "5:4"
Data.l 6400,4096
Data.s "5:4"
; 60
Data.l 6400,4800
Data.s "4:3"
Data.l 7680,4320
Data.s "16:9"
Data.l 7680,4800
Data.s "16:10"
; 63
EndDataSection
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<GNU/Linux Ubuntu 9.10 x64Debug output wrote:; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; SDL Version : 1.2.13
; Joystick test
Logitech Logitech Freedom 2.4
JoyIndex = 0
AxisCount = 4
BallsCount = 0
HatCount = 1
ButtonCount = 10
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; SDL Version : 1.2.13
; Screen Resolution test
640 X 480 X 16 (4:3)
640 X 480 X 24 (4:3)
640 X 480 X 32 (4:3)
640 X 512 X 16 (5:4)
640 X 512 X 24 (5:4)
640 X 512 X 32 (5:4)
720 X 348 X 16 (60:29)
720 X 348 X 24 (60:29)
720 X 348 X 32 (60:29)
720 X 350 X 16 (72:35)
720 X 350 X 24 (72:35)
720 X 350 X 32 (72:35)
720 X 364 X 16 (180:91)
720 X 364 X 24 (180:91)
720 X 364 X 32 (180:91)
768 X 480 X 16 (16:10)
768 X 480 X 24 (16:10)
768 X 480 X 32 (16:10)
800 X 352 X 16 (25:11)
800 X 352 X 24 (25:11)
800 X 352 X 32 (25:11)
800 X 480 X 16 (5:3)
800 X 480 X 24 (5:3)
800 X 480 X 32 (5:3)
800 X 600 X 16 (4:3)
800 X 600 X 24 (4:3)
800 X 600 X 32 (4:3)
832 X 624 X 16 (4:3)
832 X 624 X 24 (4:3)
832 X 624 X 32 (4:3)
856 X 480 X 16 (16:9)
856 X 480 X 24 (16:9)
856 X 480 X 32 (16:9)
960 X 540 X 16 (16:9)
960 X 540 X 24 (16:9)
960 X 540 X 32 (16:9)
960 X 720 X 16 (4:3)
960 X 720 X 24 (4:3)
960 X 720 X 32 (4:3)
1024 X 576 X 16 (16:9)
1024 X 576 X 24 (16:9)
1024 X 576 X 32 (16:9)
1024 X 640 X 16 (16:10)
1024 X 640 X 24 (16:10)
1024 X 640 X 32 (16:10)
1024 X 768 X 16 (4:3)
1024 X 768 X 24 (4:3)
1024 X 768 X 32 (4:3)
1024 X 1024 X 16 (1:1)
1024 X 1024 X 24 (1:1)
1024 X 1024 X 32 (1:1)
1120 X 832 X 16 (35:26)
1120 X 832 X 24 (35:26)
1120 X 832 X 32 (35:26)
1152 X 720 X 16 (16:10)
1152 X 720 X 24 (16:10)
1152 X 720 X 32 (16:10)
1152 X 768 X 16 (3:2)
1152 X 768 X 24 (3:2)
1152 X 768 X 32 (3:2)
1152 X 864 X 16 (4:3)
1152 X 864 X 24 (4:3)
1152 X 864 X 32 (4:3)
1152 X 900 X 16 (32:25)
1152 X 900 X 24 (32:25)
1152 X 900 X 32 (32:25)
1280 X 768 X 16 (5:3)
1280 X 768 X 24 (5:3)
1280 X 768 X 32 (5:3)
1280 X 800 X 16 (16:10)
1280 X 800 X 24 (16:10)
1280 X 800 X 32 (16:10)
1280 X 854 X 16 (3:2)
1280 X 854 X 24 (3:2)
1280 X 854 X 32 (3:2)
1280 X 960 X 16 (4:3)
1280 X 960 X 24 (4:3)
1280 X 960 X 32 (4:3)
1280 X 1024 X 16 (5:4)
1280 X 1024 X 24 (5:4)
1280 X 1024 X 32 (5:4)
1366 X 768 X 16 (16:9)
1366 X 768 X 24 (16:9)
1366 X 768 X 32 (16:9)
1400 X 1050 X 16 (4:3)
1400 X 1050 X 24 (4:3)
1400 X 1050 X 32 (4:3)
1440 X 900 X 16 (16:10)
1440 X 900 X 24 (16:10)
1440 X 900 X 32 (16:10)
1440 X 1024 X 16 (45:32)
1440 X 1024 X 24 (45:32)
1440 X 1024 X 32 (45:32)
1440 X 1080 X 16 (4:3)
1440 X 1080 X 24 (4:3)
1440 X 1080 X 32 (4:3)
1600 X 768 X 16 (25:12)
1600 X 768 X 24 (25:12)
1600 X 768 X 32 (25:12)
1600 X 900 X 16 (16:9)
1600 X 900 X 24 (16:9)
1600 X 900 X 32 (16:9)
1600 X 1024 X 16 (25:16)
1600 X 1024 X 24 (25:16)
1600 X 1024 X 32 (25:16)
1600 X 1200 X 16 (4:3)
1600 X 1200 X 24 (4:3)
1600 X 1200 X 32 (4:3)
1680 X 1050 X 16 (16:10)
1680 X 1050 X 24 (16:10)
1680 X 1050 X 32 (16:10)
1920 X 1080 X 16 (16:9)
1920 X 1080 X 24 (16:9)
1920 X 1080 X 32 (16:9)
1920 X 1200 X 16 (16:10)
1920 X 1200 X 24 (16:10)
1920 X 1200 X 32 (16:10)
Graphic card :
* ZOTAC GeForce GTX 295
* Core Clock: 576MHz
* Core Processors: 480 (240 x 2) stream processors
* Memory Clock: 1998MHz
* Memory Type: GDDR3
* Memory Interface: 896-bit (448 x 2)-bit
* Memory Size: 1792MB


