'Flames for Qbasic '$STATIC DEFINT A-Z RANDOMIZE TIMER DIM Fpal(41, 41) x1 = 15 x2 = x1 + 30 y1 = 33 y2 = y1 + 36 size% = 4 + ((x2 - x1 + 2) * 8 + 7) / 8 * ((y2 - y1) + 2) DIM Flame2(size%) DIM Fon(10) FOR i = 4 TO 10 Fon(i) = 255 NEXT SCREEN 13 DEF SEG = &HA000 b = 5 FOR i = 0 TO 3 b = b + 1 OUT &H3C8, i OUT &H3C9, 0 OUT &H3C9, 0 OUT &H3C9, b NEXT r = 0 b = 10 FOR i = 4 TO 16 r = r + 2 b = b - 1 IF b < 0 THEN b = 0 OUT &H3C8, i OUT &H3C9, r OUT &H3C9, 0 OUT &H3C9, b NEXT r = 31 FOR i = 17 TO 33 r = r + 1 OUT &H3C8, i OUT &H3C9, r OUT &H3C9, 0 OUT &H3C9, 0 NEXT r = 45 g = 0 FOR i = 34 TO 46 r = r + 1 g = g + 1 OUT &H3C8, i OUT &H3C9, r OUT &H3C9, g OUT &H3C9, 0 NEXT g = 9 FOR i = 47 TO 99 IF i MOD 2 = 0 THEN g = g + 1 OUT &H3C8, i OUT &H3C9, 63 OUT &H3C9, g OUT &H3C9, 0 NEXT g = 36 FOR i = 99 TO 179 IF i MOD 4 = 0 THEN g = g + 1 OUT &H3C8, i OUT &H3C9, 63 OUT &H3C9, g OUT &H3C9, 0 NEXT Ttop = 80 Ptext = 180 FOR i = Ptext TO 216 OUT &H3C8, i OUT &H3C9, 0 OUT &H3C9, 0 OUT &H3C9, 6 NEXT COLOR Ptext FOR i = 1 TO 5 READ a$ LOCATE 9 + i * 2, 21 - LEN(a$) \ 2: PRINT a$ NEXT Plast = Ptext FOR i = Ttop TO Ttop + 74 IF i MOD 2 THEN Plast = Plast + 1 FOR y = 54 TO 264 IF POINT(y, i) THEN PSET (y, i), Plast NEXT NEXT FOR i = Ptext TO Plast STEP 8 FOR b = 0 TO 56 FOR c = i TO i + 6 OUT &H3C8, c OUT &H3C9, b OUT &H3C9, b \ 2 OUT &H3C9, 6 + b \ 2 WAIT &H3DA, 8 NEXT NEXT NEXT SLEEP 1 c = (Plast - Ptext) \ 2 FOR b = 56 TO 0 STEP -4 FOR i = Ptext TO Ptext + c OUT &H3C8, i OUT &H3C9, b OUT &H3C9, b \ 2 OUT &H3C9, 6 + b \ 2 OUT &H3C8, Plast + Ptext - i OUT &H3C9, b OUT &H3C9, b \ 2 OUT &H3C9, 6 + b \ 2 WAIT &H3DA, 8 NEXT NEXT DIM Tpal(255, 3) FOR i = 0 TO 255 OUT &H3C7, i Tpal(i, 1) = INP(&H3C9) Tpal(i, 2) = INP(&H3C9) Tpal(i, 3) = INP(&H3C9) NEXT FOR i = 164 TO 199 LINE (0, i)-(319, i), i \ 2 - 65 WAIT &H3DA, 8 NEXT b = 4 FOR i = 164 TO 199 IF i MOD 2 = 0 THEN b = b + b \ 4 LINE (0, i)-(130 - b, i), i \ 2 - 69 LINE (319, i)-(190 + b, i), i \ 2 - 69 WAIT &H3DA, 8 NEXT FOR i = 30 TO 45 b = (i - 10) \ 8 LINE (i, 70)-(i, 185 - b), 74 - i LINE (60 - i, 70)-(60 - i, 185 - b), 74 - i LINE (i + 50, 90)-(i + 50, 175 - b), 74 - i LINE (112 - i, 90)-(112 - i, 175 - b), 74 - i LINE (i + 209, 90)-(i + 209, 175 - b), 74 - i LINE (271 - i, 90)-(271 - i, 175 - b), 74 - i LINE (i + 259, 70)-(i + 259, 185 - b), 74 - i LINE (319 - i, 70)-(319 - i, 185 - b), 74 - i WAIT &H3DA, 8 NEXT WHILE INKEY$ = "" Delay# = TIMER + .001 FOR i = 1 TO 37 c = Fpal((12 + i) \ 2, 18) OUT &H3C8, Ptext - 1 + i OUT &H3C9, Tpal(c, 1) OUT &H3C9, Tpal(c, 2) OUT &H3C9, Tpal(c, 3) hk = i - 1 hk2 = i + 1 Fpal(hk, 0) = (Fpal(i, 0) + Fpal(hk, 39) + Fpal(i, 1) + Fpal(hk2, 0)) \ 4 FOR y = 1 TO 38 STEP 2 yy = y + 1 Fpal(hk, y) = (Fpal(i, y) + Fpal(i, y - 1) + Fpal(i, yy) + Fpal(hk2, y)) \ 4 IF Fpal(i, y) > 16 THEN Fpal(i, y) = Fpal(i, y) - 17 ELSE IF Fpal(i, y) > 3 THEN Fpal(i, y) = Fpal(i, y) - 4 ELSE IF Fpal(i, y) > 0 THEN Fpal(i, y) = 0 END IF END IF Fpal(hk, yy) = (Fpal(i, yy) + Fpal(i, y) + Fpal(i, y + 2) + Fpal(hk2, yy)) \ 4 IF Fpal(i, yy) > 16 THEN Fpal(i, yy) = Fpal(i, yy) - 17 ELSE IF Fpal(i, yy) > 3 THEN Fpal(i, yy) = Fpal(i, yy) - 4 ELSE IF Fpal(i, yy) > 0 THEN Fpal(i, yy) = 0 END IF END IF IF i < 35 THEN LINE (9 + y, 33 + i)-(11 + y, 35 + i), Fpal(i, y), BF END IF NEXT Fpal(hk, 39) = (Fpal(i, 39) + Fpal(i, 38) + Fpal(hk2, 0) + Fpal(hk2, 39)) \ 4 NEXT GET (x1, y1)-(x2, y2), Flame2 PUT (273, 33), Flame2, PSET PUT (65, 53), Flame2, PSET PUT (224, 53), Flame2, PSET k = NOT k FOR y = 9 + k TO 31 - k STEP 4 d = Fon(RND * 10) Fpal(37, y) = d Fpal(37, y + 1) = d Fpal(37, y + 2) = d Fpal(37, y + 3) = d NEXT WAIT &H3DA, 8 WAIT &H3DA, 8, 8 WHILE TIMER < Delay# WEND WEND SCREEN 0 WIDTH 80 'make it a bit interesting DATA "In the beginning" DATA "there was darkness" DATA "and the Basic God said" DATA "let there be light and a" DATA "mighty flame sprang forth"