True Colors and High res.

If you have questions about any aspect of QBasic programming, or would like to help fellow programmers solve their problems, check out this board!

Moderators: Pete, Mods

Post Reply
User avatar
Zamaster
Veteran
Posts: 174
Joined: Wed Jun 15, 2005 1:51 pm

True Colors and High res.

Post by Zamaster »

Ive heard about people doing 24 bit (r-255,g-255,b-255) colors and high resolution (800x600, 1024x7680,ect...) graphics in QB. Does anybody know how to do this without the use of librarys? I mean... I dunno... OUT statements or something.
C:\DOS
C:\DOS\RUN
RUN\DOS\RUN
User avatar
{Nathan}
Veteran
Posts: 1169
Joined: Thu Aug 19, 2004 6:08 pm
Location: The wetlands of central Ohio, USA
Contact:

Post by {Nathan} »

Uhh... it is REALLY slow, but wizard Aaron Severn released something on that... its in the tutorials sections.

FREEBASIC! *cough cough*

www.freebasic.net
Image
Benedicto
Newbie
Posts: 1
Joined: Tue Jun 14, 2005 2:06 am

Post by Benedicto »

Code: Select all

red% = 222: green% = 0: blue% = 0 
OUT &H3C8, 0
OUT &H3C9, red% 
OUT &H3C9, green%
OUT &H3C9, blue%

Code: Select all

'Subject:?VGA/SVGA?INTERRUPTS??????Date:?03-03-96?(20:38)
'Author:?Mike?Huff?????????????????Code:?Text
'Origin:?FidoNet?QUIK?BAS?Echo?????Packet:?FAQS.ABC
'___________________________________________________
'>?inreg.ax?=?&H1C?'?Sets?640X480X256?mode
'>?CALL?INTERRUPT(&H10,?inreg,?outreg)

'This?routine?doesn't?work?so?great?on?my?machine?(or?at?least?my?Trident?VESA
'card.)?You?used?the?wrong?value?for?the?AX?register.?Here's?a?list?that
'should?work?on?any?VGA/SVGA?machine:

'AX??????Resolution??????Text?H/W?????????Segment

'5Ch?for?640x400x256?????(80x25)??????????A000h
'5Dh?for?640x480x256?????(80x30)??????????A000h
'6Ch?for?640x480x16M?????(80x30)??????????A000h
'5Bh?for?800x600x16??????(100x75)?????????A000h
'5Eh?for?800x600x256?????(100x75)?????????A000h
'5Fh?for?1024x768x16?????(128x48)?????????A000h
'62h?for?1024x768x256????(128x48)?????????A000h
'63h?for?1280x1024x16????(160x64)?????????A000h
'64h?for?1280x1024x256???(160x64)?????????A000h

'Some?of?the?higher?res?or?color?modes?may?not?work?on?every?video?card.
'You?should?also?use?direct?memory?writes?instead?of?the?extremely?slow?BIOS
'"PSET"?routines.?Here's?an?example?in?case?you?don't?know:

'DEF?SEG?=?&HA000
'POKE?(Xmax&?*?Y&?+?X&),?TheColorYaWant%
'DEF?SEG

Code: Select all

' Subject: COLOR MIXER                        Date: 09-22-97 (21:59)
'  Author: David Calhoun                      Code: QB, QBasic, PDS    
'  Origin: _gotmilk_@geocities.com          Packet: GRAPHICS.ABC
'---------------------------------------------------------------------------
'? This is HEXCOLORS.BAS by David--- ?
'? Calhoun '97. This is a helpful--- ?
'? prog. for finding the RGB value-- ?
'? of just about any color. -------- ?
'
SCREEN 12
COLOR 4

PRINT "Press R for more red", 
COLOR 2: PRINT "Press G for more green", 
COLOR 1: PRINT "  Press B for more blue"
COLOR 4
PRINT "Press 1 for less red", 
COLOR 2: PRINT "Press 2 for less green", 
COLOR 1: PRINT "  Press 3 for less blue"
COLOR 7
PRINT
PRINT " Press "; CHR$(24); " for all up        Press D for Default color.     Press "; CHR$(25); " for all down"
COLOR 3

r = 0: g = 0: b = 0
rr = 310: gg = 310: bb = 310
l$ = ""

DO UNTIL l$ = CHR$(27)
l$ = UCASE$(l$)
l$ = INKEY$
IF l$ = "r" AND r < 63 THEN LINE (30, rr)-(50, rr), 0: r = r + 1: rr = rr - 3
IF l$ = "g" AND g < 63 THEN LINE (90, gg)-(110, gg), 0: g = g + 1: gg = gg - 3
IF l$ = "b" AND b < 63 THEN LINE (150, bb)-(170, bb), 0: b = b + 1: bb = bb - 3
IF l$ = "1" AND r > 0 THEN LINE (30, rr)-(50, rr), 0: r = r - 1: rr = rr + 3
IF l$ = "2" AND g > 0 THEN LINE (90, gg)-(110, gg), 0: g = g - 1: gg = gg + 3
IF l$ = "3" AND b > 0 THEN LINE (150, bb)-(170, bb), 0: b = b - 1: bb = bb + 3

IF l$ = CHR$(0) + "H" AND r < 63 AND g < 63 AND b < 63 THEN
LINE (30, rr)-(50, rr), 0
LINE (90, gg)-(110, gg), 0
LINE (150, bb)-(170, bb), 0
r = r + 1: g = g + 1: b = b + 1
rr = rr - 3: gg = gg - 3: bb = bb - 3
END IF

IF l$ = CHR$(0) + "P" AND r > 0 AND g > 0 AND b > 0 THEN
LINE (30, rr)-(50, rr), 0
LINE (90, gg)-(110, gg), 0
LINE (150, bb)-(170, bb), 0
r = r - 1: g = g - 1: b = b - 1
rr = rr + 3: gg = gg + 3: bb = bb + 3
END IF

IF l$ = "d" THEN
LINE (30, rr)-(50, rr), 0
LINE (90, gg)-(110, gg), 0
LINE (150, bb)-(170, bb), 0
r = 0: g = 0: b = 0: rr = 310: gg = 310: bb = 310
END IF

LINE (40, 122)-(40, 309), 4
LINE (100, 122)-(100, 309), 2
LINE (160, 122)-(160, 309), 1
LINE (30, rr)-(50, rr), 4
LINE (90, gg)-(110, gg), 2
LINE (150, bb)-(170, bb), 1

OUT &H3C8, 3
OUT &H3C9, r
OUT &H3C9, g
OUT &H3C9, b

CIRCLE (400, 240), 131, 8
CIRCLE (400, 240), 130

PAINT (400, 240)
COLOR 12
LOCATE 7, 4
PRINT r
LOCATE 7, 11
PRINT g
LOCATE 7, 18
PRINT b
COLOR 3
LOOP
COLOR 12
i need help cleaning my home and my mind
User avatar
Zamaster
Veteran
Posts: 174
Joined: Wed Jun 15, 2005 1:51 pm

Post by Zamaster »

I LOVE YOU!
C:\DOS
C:\DOS\RUN
RUN\DOS\RUN
Post Reply