Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Text mode screen 0 revisited....
#1
Joe, you're right, things like plasmas could be done.


The challenge is to make a graphical textmode screen 0 effect.
rules:

1. No call absolute
2. No external files
3. Call interrupt is okay to use.



Here's and example:

Plasma and floormapper. ;*)

Code:
'I am crazy!!!
'Plasma anf Floormapper in TextMode!!!
'Relsoft 2003
DECLARE SUB BlobsTxt (Intensity%)
DECLARE SUB DrawBlob (bx%, by%)
DECLARE SUB Mode7Text (sx%, sy%, sz%, horz%)
DEFINT A-Z

RANDOMIZE TIMER

CLS
SCREEN 0
WIDTH 80, 50
CONST PI = 3.14151693#
CONST FALSE = 0, TRUE = NOT FALSE

DIM SHARED Lsin1%(-1024 TO 1024)
DIM SHARED Lsin2%(-1024 TO 1024)
DIM SHARED Lsin3%(-1024 TO 1024)
DIM SHARED Lsin!(-10 TO 370)
DIM SHARED Lcos!(-10 TO 370)

    
    FOR i% = -1024 TO 1024
        Lsin1%(i%) = SIN(i% / (16)) * 16
        Lsin2%(i%) = SIN(i% / (32)) * 64
        Lsin3%(i%) = SIN(i% / (32)) * 8
    NEXT i%

    j! = 255 / 360 * 2
    k! = 255 / 360 * 8
    l! = 255 / 360 * 4
    FOR i% = 0 TO 255
        m% = INT(a!)
        n% = INT(b!)
        o% = INT(c!)
        r% = 63 * ABS(SIN(m% * PI / 180))
        g% = 63 * ABS(SIN(n% * PI / 180))
        b% = 63 * ABS(SIN(o% * PI / 180))
        a! = a! + j!
        b! = b! + k!
        c! = c! + l!
        OUT &H3C8, i%
        OUT &H3C9, r%
        OUT &H3C9, g%
        OUT &H3C9, b%
    NEXT



Dir% = 1
DEF SEG = &HB800
DO
    counter& = (counter& + Dir%)
    IF counter& > 600 THEN Dir% = -Dir%
    IF counter& < -600 THEN Dir% = -Dir%
    offset% = 0
    FOR y% = 1 TO 50
        FOR x% = 1 TO 80
            c% = Lsin3%(x%) + Lsin1%(x% + counter&) + Lsin2%(y% + counter&)
            c% = c% + Lsin3%(c%) + Lsin1%(c% + counter&) + Lsin2%(counter& - y% + x%)
            POKE offset%, 177 + (c% AND 1)
            POKE offset% + 1, c% AND 15
            offset% = offset% + 2
        NEXT x%
    NEXT y%
LOOP UNTIL INKEY$ <> ""


CLS

horz% = 10
sx% = 30
sy% = 30
sz% = 40
Mode7Text sx%, sy%, sz%, horz%


END

SUB Mode7Text (sx%, sy%, sz%, horz%)

'256*126 = 32256
'((256*126)+4)\2 =16130
'256*8 =2048
'32256\2=16128

FOR i% = 0 TO 359
    RA! = i% * (3.141593 / 180)
    Lcos!(i%) = COS(RA!)
    Lsin!(i%) = SIN(RA!)
NEXT i%

    FOR i% = -1024 TO 1024
        Lsin1%(i%) = SIN(i% / (16)) * 32
        Lsin2%(i%) = SIN(i% / (32)) * 16
        Lsin3%(i%) = SIN(i% / (32)) * 32
    NEXT i%

    j! = 255 / 360 * 8
    k! = 255 / 360 * 8
    l! = 255 / 360 * 16
    FOR i% = 0 TO 255
        m% = INT(a!)
        n% = INT(b!)
        o% = INT(c!)
        r% = 63 * ABS(SIN(m% * PI / 180))
        g% = 63 * ABS(SIN(n% * PI / 180))
        b% = 63 * ABS(SIN(o% * PI / 180))
        a! = a! + j!
        b! = b! + k!
        c! = c! + l!
        OUT &H3C8, i%
        OUT &H3C9, r%
        OUT &H3C9, g%
        OUT &H3C9, b%
    NEXT

SpaceZ! = sz%
ScaleY! = sy%
ScaleX! = sx%
Horizon% = horz%

countdir% = 1
counter% = 50
t# = TIMER
DO
    F& = (F& + 1) AND &H7FFFFFFF
    counter% = (counter% + countdir%)
    IF counter% < 2 THEN
        countdir% = -countdir%
    ELSEIF counter% > 700 THEN
        countdir% = -countdir%
    END IF
    pd% = (pd% + 1) AND 1023
    ci% = (ci% + 1) AND (3)
    px% = SIN(ci% / counter%) * 4
    py% = COS(ci% / counter%) * 8

    Angle = (Angle + 1) MOD 359

    xv! = Lcos!(Angle)
    yv! = Lsin!(Angle)
    offset% = (80 * 4)
    FOR ya% = 4 TO 50
            Distance! = (SpaceZ! * ScaleY!) / (ya% + Horizon%)
            HorizScale! = (Distance! / ScaleX!)
            LineDX! = (-yv! * HorizScale!)
            LineDy! = (xv! * HorizScale!)
            SpaceX! = ((Distance! * xv!)) - (40 * LineDX!)
            SpaceY! = ((Distance! * yv!)) - (25 * LineDy!)
            ldx& = LineDX! * 1024
            ldy& = LineDy! * 1024
            sx& = SpaceX! * 1024
            sy& = SpaceY! * 1024
            pxysin% = Lsin3%(px% + py%)
    FOR xa% = 1 TO 80
            xx% = sx& \ 1024' + (pd%)
            yy% = sy& \ 1024' + (pd%)
            c% = Lsin1%(xx% + px%) + Lsin2%(yy% + py%) + pxysin%
            c% = Lsin2%(xx% - counter%) + Lsin3%(Lsin1%(yy% - counter%) - Lsin3%(xx% - counter% - c%))
            POKE offset%, 177 + (c% AND 1)
            POKE offset% + 1, c% AND 15
            offset% = offset% + 2
            sx& = sx& + ldx&
            sy& = sy& + ldy&
    NEXT xa%
    NEXT ya%
LOOP UNTIL INKEY$ <> ""

END SUB
y smiley is 24 bit.
[Image: anya2.jpg]

Genso's Junkyard:
http://rel.betterwebber.com/
Reply


Messages In This Thread
Text mode screen 0 revisited.... - by relsoft - 08-11-2003, 12:07 PM
Text mode screen 0 revisited.... - by oracle - 08-11-2003, 12:25 PM
Text mode screen 0 revisited.... - by toonski84 - 08-11-2003, 12:29 PM
Text mode screen 0 revisited.... - by relsoft - 08-11-2003, 12:34 PM
Text mode screen 0 revisited.... - by relsoft - 08-11-2003, 12:35 PM
Text mode screen 0 revisited.... - by toonski84 - 08-11-2003, 12:43 PM
Text mode screen 0 revisited.... - by relsoft - 08-11-2003, 12:52 PM
Text mode screen 0 revisited.... - by toonski84 - 08-11-2003, 01:07 PM
Text mode screen 0 revisited.... - by na_th_an - 08-11-2003, 02:05 PM
Text mode screen 0 revisited.... - by toonski84 - 08-11-2003, 02:13 PM
Text mode screen 0 revisited.... - by na_th_an - 08-11-2003, 02:15 PM
Text mode screen 0 revisited.... - by toonski84 - 08-11-2003, 05:50 PM
Text mode screen 0 revisited.... - by na_th_an - 08-11-2003, 06:22 PM
Text mode screen 0 revisited.... - by Ninkazu - 08-11-2003, 06:48 PM
Text mode screen 0 revisited.... - by oracle - 08-12-2003, 03:24 AM
Text mode screen 0 revisited.... - by relsoft - 08-12-2003, 09:59 AM
Text mode screen 0 revisited.... - by Nexinarus - 08-12-2003, 03:29 PM
Text mode screen 0 revisited.... - by BinarySHOCK - 08-27-2003, 08:40 AM
Text mode screen 0 revisited.... - by relsoft - 08-27-2003, 12:50 PM
Text mode screen 0 revisited.... - by barok - 08-27-2003, 10:26 PM
Text mode screen 0 revisited.... - by Agamemnus - 08-27-2003, 11:29 PM
Text mode screen 0 revisited.... - by Nexinarus - 08-30-2003, 01:04 AM
Text mode screen 0 revisited.... - by barok - 08-30-2003, 03:46 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)