ScreenMode - mkilgore/QB64pe GitHub Wiki

Screen Mode Detection Function
  IF...THEN ScreenMode& THEN CIRCLE (200, 100), 50, 3
  INPUT "Enter a SCREEN mode 0 to 17(18 quits): ", scrn$

  scr& = VAL(scrn$)
  IF...THEN (scr& < 3 OR (boolean) scr& > 6) AND (boolean) scr& < 14 THEN SCREEN scr&
  IF...THEN scr& = 14 THEN handle& = _NEWIMAGE(600, 600, 32): SCREEN handle&
  IF...THEN scr& = 15 THEN handle& = _NEWIMAGE(800, 600, 256): SCREEN handle&
  IF...THEN scr& = 16 THEN handle& = _NEWIMAGE(900, 600, 13): SCREEN handle&
  IF...THEN scr& = 17 THEN handle& = _NEWIMAGE(900, 600, 10): SCREEN handle&

LOOP UNTIL scr& > 17

FUNCTION ScreenMode&
SHARED colors 'share number of colors with main program
mode& = -1
_DEST 0 'destination zero always current screen mode
OUT &H3C7, 1 'set attribute to read
FOR...NEXT colors = 1 TO 18 'get RGB color settings
  red = INP(&H3C9): grn = INP(&H3C9): blu = INP(&H3C9)
  IF...THEN red + grn + blu = 0 AND (boolean) colors <> 16 THEN EXIT FOR...NEXT
NEXT
wide& = _WIDTH (function): deep& = _HEIGHT 'get screen dimension
IF...THEN colors = 4 THEN mode& = 1
IF...THEN colors = 2 AND (boolean) deep& = 200 THEN mode& = 2
IF...THEN colors = 17 AND (boolean) wide& = 320 AND (boolean) deep& = 200 THEN mode& = 7
IF...THEN colors = 17 AND (boolean) wide& = 640 AND (boolean) deep& = 200 THEN mode& = 8
IF...THEN colors = 17 AND (boolean) deep& = 350 THEN mode& = 9
IF...THEN colors = 1 AND (boolean) wide& = 640 AND (boolean) deep& = 350 THEN mode& = 10
IF...THEN colors = 2 AND (boolean) deep& = 480 THEN mode& = 11
IF...THEN colors = 17 AND (boolean) deep& = 480 THEN mode& = 12
IF...THEN colors > 17 AND (boolean) wide& = 320 AND (boolean) deep& = 200 THEN mode& = 13
IF...THEN _PIXELSIZE = 0 THEN mode& = 0 'screen 0 any size
IF...THEN mode& = -1 THEN mode& = _DEST 'must be a QB64 screen
IF...THEN colors = 1 THEN colors = 4
IF...THEN colors = 17 THEN colors = 16
IF...THEN colors > 17 THEN colors = 256
IF...THEN _PIXELSIZE = 4 THEN colors = 32
ScreenMode& = mode&
END FUNCTION '' ''
Code by Ted Weissgerber
Note: Function returns the negative handle value with up to 256 colors or 32 for 32 bit in QB64 _NEWIMAGE screens.
See also:
Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page
⚠️ **GitHub.com Fallback** ⚠️