Code archives/Graphics/Auto-set graphics mode
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| Call this function to set your graphics mode. It auto detects what the system is capable of and saves an ini file with the users settings, which can then be altered simply later on. The file is in text format, so is easily altered. You could also edit this function to include other things into your ini file such as difficulty settings, lives or other general setups. | |||||
Function GraphicsMode()
ini = ReadFile("setup.ini") ; reads ini file
If ini <> 0 ; Check if ini file exists
Repeat
a$ = ReadLine(ini) ; read lines
Until a$ = "[graphics]" ; ...until it finds the one we need
a$ = ReadLine(ini) ; read the following line
For x = 1 To Len(a$) ; cycle through till it finds a comma
l$ = Mid$(a$,x,1)
If l$ = ","
num = x
Exit
EndIf
Next
depth = ReadLine(ini)
If depth = 0 depth = 16 ; if omitted, default to 16-bit for compatibility
scr_w = Left(a$, num-1) ; grab the screen width
scr_h = Right(a$, (Len(a$) - num) )
If scr_h < 480 Or scr_w < 640
scr_h = 480
scr_w = 640
EndIf
If GfxModeExists(scr_w,scr_h,depth) = False ; if the graphics mode doesnt exist
scr_w = GfxModeWidth(1) ; set it up in basic mode
scr_h = GfxModeHeight(1)
depth = 16
EndIf
CloseFile(ini)
Else
scr_w = 0
scr_h = 0
Cls
Flip
Cls
Print "Set Graphics Mode"
For i = 1 To CountGfxModes()
Print i+") "+GfxModeWidth(i)+" x "+GfxModeHeight(i)+" x "+GfxModeDepth(i)
Next
.entermode
mode = Input(">")
If mode < 0 Or Mode > CountGfxModes() Goto entermode
scr_w = GfxModeWidth( mode )
scr_h = GfxModeHeight( mode )
depth = GfxModeDepth( mode )
ini = WriteFile("setup.ini")
WriteLine ini,"[graphics]"
WriteLine ini,scr_w+","+scr_h
CloseFile(ini)
EndIf
Graphics scr_w,scr_h,depth
SetBuffer BackBuffer()
Return
End Function |
Comments
None.
Code Archives Forum