Author Topic: Text Typer FX - help needed ...  (Read 5508 times)

0 Members and 1 Guest are viewing this topic.

Offline slippy

  • Atari ST
  • ***
  • Posts: 172
  • Karma: 42
    • View Profile
Text Typer FX - help needed ...
« on: May 08, 2010 »
Hi guys,

currently I'm playing around with a lot of sources I found here - as I'm pretty addicted to cool-looking text typer fx things I'm really interested in inproving one of shockwaves' (outstanding) code portions I found here.

I could imagine to build out this code here to a text fx library with a whole bunch of fx one could select.  :stirrer:

For example zooming-in and out while building up a line of text or instantly sine-moving text like the one seen in the "Settler 7 cracktro" by Razor 1911 or a highly sophisticated text fx like in "Kings of the playground" ooooor (heaven forbid) the ones seen inf "Frameskool" in the upper left corner by Equinox  O0

[youtube]http://www.youtube.com/watch?v=fW1L68u_exY[/youtube]
[youtube]http://www.youtube.com/watch?v=ogH_SBOWaGA[/youtube]

Could you guys try to explain me some of the fx seen or at least how I could realise a zooming to the existing source?

Many many thanks in advance.

Here's the code portion from shocky I found ... I just extended the screen dimensions a bit ... not more :)

Code: [Select]


'       ALL VARIABLES MUST BE DECLARED.
'       -------------------------------

        OPTION STATIC
        OPTION EXPLICIT
       
'       SCREEN DIMENSIONS.
'       ------------------

        CONST   XRES = 800:'    WIDTH
        CONST   YRES = 600:'    HEIGHT

'#define PTC_WIN
        #INCLUDE "WINDOWS.BI"
        #INCLUDE "TINYPTC.BI"

'       "FLOATING TEXT" ROUTINE VARIABLES;
'-------------------------------------------------------------------------------

        DIM SHARED LHORIZ = 80: ' WIDTH OF TEXT PAGES.
        DIM SHARED LVERT  = 20 :' HEIGHT OF TEXT PAGES.
        DIM SHARED fontX = 8:
        DIM SHARED fontY = 8:
        DIM SHARED fontChars = 64:
       
        DIM SHARED AS INTEGER DYN
        DIM SHARED AS INTEGER scrdown

        DIM SHARED AS DOUBLE LXT( LHORIZ * LVERT ):' TARGET X LOCATION FOR LETTER.
        DIM SHARED AS DOUBLE LYT( LHORIZ * LVERT ):' TARGET Y LOCATION FOR LETTER.
       
        DIM SHARED AS DOUBLE LXA( LHORIZ * LVERT ):' ACTUAL X LOCATION FOR LETTER.
        DIM SHARED AS DOUBLE LYA( LHORIZ * LVERT ):' ACTUAL Y LOCATION FOR LETTER.

        DIM SHARED AS UBYTE  LYO( LHORIZ * LVERT ):' IS LETTER ACTIVE? ON=1 OFF=0       
        DIM SHARED AS STRING LYC( LHORIZ * LVERT ):' STORES THE LETTER.
       
        DIM SHARED AS DOUBLE YSPD( LHORIZ * LVERT )
        DIM SHARED AS DOUBLE XSPD( LHORIZ * LVERT )

        DIM SHARED AS UINTEGER  LLM:               ' HOW MANY LETTERS ARE ON SCREEN ATM?
        DIM SHARED AS UINTEGER  LTM:               ' TIMER (IN FRAMES) FOR NEXT LETTER.       
       
        DIM SHARED AS UBYTE CHECK_PLACEMENT=0
        DIM SHARED TPP AS INTEGER

        DIM SHARED TXT AS STRING
        DIM SHARED AS DOUBLE HOLD_TIME

        DIM SHARED AS DOUBLE GADD,GADD2,GADD3

        DIM SHARED SINEADD AS INTEGER
        DIM SHARED SINEADD2 AS INTEGER

'-------------------------------------------------------------------------------
'       TEXT WRITER;
'-------------------------------------------------------------------------------
        DECLARE SUB PRELOADGRID():' SET UP GRID POSITIONS FOR THE LETTERS.
        DECLARE SUB RESETWRITER():' NEW TEXT PAGE FOR WRITER.
        DECLARE SUB HYPERTEXTER():' THIS SUB DOES THE TEXT WRITER.
        DECLARE SUB TEXT(BYVAL BX AS INTEGER , BYVAL BY AS INTEGER , BYVAL WW AS STRING , BYVAL WR AS INTEGER, BYVAL WG AS INTEGER, BYVAL WB AS INTEGER)
        DECLARE SUB READFONT()

        DIM SHARED AS UINTEGER FONT (8*8*64) ' FONT BUFFER

        DIM SHARED AS UINTEGER BUFFER ( XRES * YRES )       


        '-------------------------------------------------------------------------------
        '            IMPORTANT!!!!! PLEASE MAKE SURE THAT YOU
        '             USE 80 CHARACTERS PER LINE!!!!!!!!!!!!
        '             YOU >>MUST<< FILL WITH SPACES TO MAKE
        '             SURE EACH LINE IS 80 CHARS WIDE......
        '            ALSO THERE ARE 20 LINES OF TEXT PER PAGE.
        '           DO NOT USE LESS OR MORE. THESE TEXT STRINGS
        '           HAVE TO BE KEPT THE SAME SIZE!!!!!!!!!!!!!!
        '                   OTHERWISE IT WILL FUCK UP.
        '          I HAVE PUT THE SPACERS "|" AS A GUIDE FOR YOU
        '       LINE THEM UP WITH THE QUOTES AND YOU WON'T GO WRONG.
        '-------------------------------------------------------------------------------
        '         |PAGE 1:                                 |
        TXT = ""
        TXT = TXT+"                            ========================                            "
        TXT = TXT+"                       WHAT A WONDERFUL FLOATING TEXT FX                        "
        TXT = TXT+"                  ============================================                  "
        TXT = TXT+" AS I REALLY LOVE THOSE TYPE OF EFFECTS, I WOULD LIKE TO HAVE AS MUCH DIFFERENT "
        TXT = TXT+"              TYPES OF FLOATING-IN AND FLOATING-OUT FX I COULD IMAGINE          "
        TXT = TXT+"                                                                                "
        TXT = TXT+"                    I COULD IMAGINE AN ADDITIONAL ZOOMING-IN                    "
        TXT = TXT+"                    OF THE LETTERS WHILE BUILDING UP THE TEXT                   "
        TXT = TXT+"                            OR EVEN ROTATING LETTERS OR                         "
        TXT = TXT+"                FALLING DOWN LETTERS OR SPRINGING LIKE A FOUNTAIN               "
        TXT = TXT+"--------------------------------------------------------------------------------"
        TXT = TXT+"                                                                                "
        TXT = TXT+"                       UNFORTUNATELY I AM TOO DUMB FOR THAT                     "
        TXT = TXT+"               SO I'D APPRECIATE ANY HELP I COULD GET FROM YOU GUYS             "
        TXT = TXT+"                                                                                "
        TXT = TXT+"                ERRRM DID I MENTION THAT THE WHOLE CODE FOR THE FX              "
        TXT = TXT+"                            YOU ARE CURRENTLY WATCHING                          "
        TXT = TXT+"                                                                                "
        TXT = TXT+"        HAS BEEN WRITTEN COMPLETELY BY SHOCKWAVE/CODIGOS AND NOT BY ME?!        "
        TXT = TXT+"   BTW. PLEASE DON'T TAKE THE TEXT TOO SERIOUS AS I NEED TO FILL UP THIS PAGE   "
        '         |PAGE 2:                                 |
        TXT = TXT+"                                                                                "
        TXT = TXT+"       ******************************************************************       "
        TXT = TXT+"                  ============================================                  "
        TXT = TXT+"                                                                                "
        TXT = TXT+"                 JUST A PLACEHOLDER PAGE BECAUSE AT THIS MOMENT I               "
        TXT = TXT+"                                                                                "
        TXT = TXT+"                             DUNNO WHAT TO WRITE HERE                           "
        TXT = TXT+"                                                                                "
        TXT = TXT+"                                  XXX XXX XXX                                   "
        TXT = TXT+"                                  XXX XXX XXX                                   "
        TXT = TXT+"                                 XXX  XXX  XXX                                  "
        TXT = TXT+"                                 XXX  XXX  XXX                                  "
        TXT = TXT+"                                XXX   XXX   XXX                                 "
        TXT = TXT+"                              XXXX    XXX    XXXX                               "
        TXT = TXT+"                             XXXX     XXX     XXXX                              "
        TXT = TXT+"                           XXXXX      XXX      XXXXX                            "
        TXT = TXT+"                       --------------------------------                         "
        TXT = TXT+"                        WHATEVER ... JUST PLACEHOLDING                          "
        TXT = TXT+"                                                                                "
        TXT = TXT+"                               (CHICKEN)-WRAP DAT                               "

        LLM=0
        LTM=0
        TPP=0

        READFONT()
        PRELOADGRID()
        RESETWRITER()

        If( PTC_OPEN( "TEXTWRITER", XRES, YRES ) = 0 ) Then
            End -1
        End If

        WHILE(GETASYNCKEYSTATE(VK_ESCAPE) <> -32767) 


            HYPERTEXTER()
            PTC_UPDATE @ BUFFER (0)
            ERASE BUFFER
           
            GADD=GADD+1
            GADD2=GADD2+.0257
            GADD3=GADD3+.04
        WEND

        '-------------------------------------------------------------------------------
        ' THE NICE WRITER;
        '-------------------------------------------------------------------------------
        SUB HYPERTEXTER()
            DIM AS INTEGER A,CF
            DIM AS DOUBLE FX,FY
            DIM AS DOUBLE XDV
            DIM AS DOUBLE YDV
            XDV=37
            YDV=45
           
            '---------------------------------------------------------------------------
            ' DRAW THE ACTIVE LETTERS ON THE SCREEN;
            '---------------------------------------------------------------------------
           
            FOR A=0 TO LLM
                IF INT(LXA(A))>-8 AND INT(LXA(A))<XRES AND INT(LYA(A))>-8 AND INT(LYA(A))<YRES THEN
                    TEXT(INT(LXA(A)),INT(LYA(A)),LYC(A),0,170,0)
                END IF
            NEXT
       
       
            '---------------------------------------------------------------------------
            ' IF ALL LETTERS ARE NOT IN PLACE THEN WE NEED TO DO THE WRITER;
            '---------------------------------------------------------------------------
            if DYN >= 0 and DYN <= 180 then
                DYN = DYN + 8 
            else
                DYN = DYN - 8
            end if
           
            IF CHECK_PLACEMENT=0 THEN
                '---------------------------------------------------------------------------
                ' THIS "FLOATING" POINT IS THE ORIGIN WHERE NEW LETTERS APPEAR FROM.
                '---------------------------------------------------------------------------
                FX = XRES/2 + (70*SIN(GADD2/ 7)+70*COS(GADD/9)+DYN*SIN(GADD3/6))
                FY = YRES/2 + (70*SIN(GADD/ 6)+70*COS(GADD/31)+(DYN*2)*SIN(GADD /4))
       
                IF LLM < (LHORIZ * LVERT) THEN
                    LLM = LLM + 1
                    LXA(LLM) = FX
                    LYA(LLM) = FY
                    LYO(LLM) = 0
                END IF
           
                FOR A=0 TO LLM
                    IF LXA(A)<>LXT(A) THEN
                        LXA(A)=LXA(A)+((LXT(A)-LXA(A))/XDV)
                    END IF
                    IF LYA(A)<>LYT(A) THEN
                        LYA(A)=LYA(A)+((LYT(A)-LYA(A))/YDV)
                    END IF
                    IF LXA(A)-LXT(A) >-.5 AND LXA(A)-LXT(A) <.5 THEN LXA(A)=LXT(A)
                    IF LYA(A)-LYT(A) >-.5 AND LYA(A)-LYT(A) <.5 THEN LYA(A)=LYT(A)
                NEXT
            END IF
       
            '---------------------------------------------------------------------------
            ' CHECK IF ALL LETTERS ARE IN PLACE;
            '---------------------------------------------------------------------------
           
            IF LLM >= ( LHORIZ * LVERT ) AND CHECK_PLACEMENT=0 THEN
            CF=1
            FOR A = 1 TO LLM
                IF LXA(A)<> LXT(A) OR LYA(A)<>LYT(A) THEN CF=0
            NEXT
       
            '---------------------------------------------------------------------------
            ' IF ALL LETTERS ARE IN PLACE BEGIN 8 SECOND COUNTDOWN
            '---------------------------------------------------------------------------
       
            IF CF=1 THEN
                CHECK_PLACEMENT=1
                HOLD_TIME = TIMER
            END IF
           
            END IF
       
            '---------------------------------------------------------------------------
            ' IF ALL LETTERS ARE IN PLACE AND THE COUNTDOWN HAS PASSED 5 SECS WE NEED TO
            ' START GETTING RID OF THE LETTERS
            '---------------------------------------------------------------------------
            IF CHECK_PLACEMENT=1 AND TIMER-HOLD_TIME >=5.5 AND TIMER-HOLD_TIME <=6 THEN
                FOR A=0 TO LLM
                    LYA(A)=LYA(A)+ (RND(1)-.5)
                    LXA(A)=LXA(A)+ (RND(1)-.5)
                    ' IF YSPD(A)<12 THEN YSPD(A)=YSPD(A)+.2
                NEXT
            END IF
           
            '---------------------------------------------------------------------------
            ' IF ALL LETTERS ARE IN PLACE AND THE COUNTDOWN HAS PASSED 5 SECS WE NEED TO
            ' START GETTING RID OF THE LETTERS
            '---------------------------------------------------------------------------
            IF CHECK_PLACEMENT=1 AND TIMER-HOLD_TIME >=6 THEN
                FOR A=0 TO LLM
                    LYA(A)=LYA(A)+YSPD(A)
                    LXA(A)=LXA(A)+XSPD(A)
                    IF YSPD(A)<12 THEN YSPD(A)=YSPD(A)+.2
                NEXT
            END IF
       
            '---------------------------------------------------------------------------
            ' GO TO NEXT PAGE IF COUNTDOWN>8 SECS AND LETTERS WERE IN PLACE.
            '---------------------------------------------------------------------------
       
            IF CHECK_PLACEMENT=1 AND TIMER-HOLD_TIME >=8 THEN
                TPP=TPP+(LHORIZ*LVERT)
                IF TPP>LEN(TXT)-(LHORIZ*LVERT) THEN TPP=0
                RESETWRITER()
            END IF
           
        END SUB
   
   
        '-------------------------------------------------------------------------------
        ' CLEAR OUT OLD TEXT AND SET UP NEW PAGE IN TEXT WRITER.
        '-------------------------------------------------------------------------------
        SUB RESETWRITER()
            print len(TXT)
            DIM AS INTEGER A,PS,T
            '---------------------------------------------------------------------------
            ' BOING DETERMINES WHETHER WE GO BACKWARDS OR FORWARDS THRU THE STRING
            ' AS LETTES IN ALTERNATE LINES HAVE TO BE REVERSED DUE TO THE ORDER WE
            ' ACTIVATE THEM!
            '---------------------------------------------------------------------------
            DIM AS INTEGER BOING
            BOING=0
            PS=1+TPP
            LLM=0
            FOR A=1 TO ( LHORIZ * LVERT )
                '-----------------------------------------------------------------------
                ' SET UP SOME SPEEDS FOR EXPLOSION WHEN TEXT SCREEN CHANGES
                '-----------------------------------------------------------------------
                YSPD(A)= (RND(1)*12)-9
                XSPD(A)= (RND(1)*7)-3.5
                '-----------------------------------------------------------------------
                ' TURN OFF THIS LETTER AND GET NEW CHARACTER
                '-----------------------------------------------------------------------
                LYO(A) = 0
                LYC(A) = MID(TXT,PS,1)

                '-----------------------------------------------------------------------
                ' CYCLE THROUGH STRING FORWARDS OR BACKWARDS
                '-----------------------------------------------------------------------
                IF BOING=0 THEN PS=PS+1
                IF BOING=1 THEN PS=PS-1
                '-----------------------------------------------------------------------
                ' WHEN WE HAVE CALCULATED ONE LINE, REVERSE DIRECTION.
                '-----------------------------------------------------------------------
                T=T+1
                IF T>=LHORIZ THEN
                    T=0
                    BOING=BOING+1
                    IF BOING>1 THEN BOING=0
                IF BOING=0 THEN PS=PS+(LHORIZ+1)
                IF BOING=1 THEN PS=PS+(LHORIZ-1)
                END IF
            NEXT
            '---------------------------------------------------------------------------
            ' LETTERS ARE NOW OUT OF PLACE, SO RESET THIS FLAG.
            '---------------------------------------------------------------------------
            CHECK_PLACEMENT=0
        END SUB
   
        '-------------------------------------------------------------------------------
        ' SET UP GRID TARGETS FOR LETTERS IN TYPER..
        '-------------------------------------------------------------------------------
        SUB PRELOADGRID()   
           
            DIM AS INTEGER TOP,LFT,A,T
            DIM AS INTEGER TRACKX,TRACKY
            DIM AS INTEGER BOING
           
            BOING=0
            TOP=XRES/4: '180:' TOP  OF GRID.
            LFT=0: '124:' LEFT OF GRID.
       
            TRACKY=TOP
            TRACKX=LFT   
           
            FOR A=1 TO ( LHORIZ * LVERT )
               
                LXT(A) = TRACKX
                LYT(A) = TRACKY
               
                IF BOING=0 THEN TRACKX=TRACKX+10
                IF BOING=1 THEN TRACKX=TRACKX-10
                T=T+1
                IF T>=LHORIZ THEN
                    T=0
                    BOING=BOING+1
                    IF BOING>1 THEN BOING=0
                IF BOING=0 THEN TRACKX=TRACKX+10
                IF BOING=1 THEN TRACKX=TRACKX-10
                    TRACKY=TRACKY+10
                END IF
            NEXT
        END SUB
   
        '
        ' Usage : TEXT ( X , Y , "YOUR TEXT" , R , G , B )
        '
        '
        SUB TEXT(BYVAL BX AS INTEGER , BYVAL BY AS INTEGER , BYVAL WW AS STRING , BYVAL WR AS INTEGER , BYVAL WG AS INTEGER , BYVAL WB AS INTEGER)
            WW = UCASE (WW)
            DIM blx,bly as Uinteger
            DIM as INTEGER STRX,STRY,TLP,TC,CH,TC2
            DIM bm,mm
            FOR TLP = 0 TO LEN(WW)
                TC = RGB (WR, WG, WB)
                CH = ASC(MID(WW,TLP,1))-31
                IF CH<0 OR CH>64 THEN CH=0
                IF CH > 0 THEN
                    '---------------------------------
                    'Calculate Offset In Font Data;---
                    '---------------------------------
                    bm=(ch*64)-64
                    STRY=BY
                    FOR BLY=0 TO 7
                        STRX=BX + ((TLP-1) * 9)
                        FOR BLX=1 TO 8
                            '--------
                            'Clip;---
                            '--------                   
                            '----------------------------------------------------
                            'Draw Pixel In Buffer If Onscreen And If Binary 1 ---
                            '----------------------------------------------------
                            MM= FONT((((BLY)*8)+(BLX))+BM)                       
                            IF (STRX>0) AND (STRX<XRES-3)  and (STRY>0) AND (STRY<YRES-3)THEN             
                                IF MM >0 THEN
                                    BUFFER (((STRY)*XRES)+STRX) = TC
                                END IF
                            END IF
                            STRX=STRX+1
                        NEXT BLX
                        STRY=STRY+1
                    NEXT BLY
                END IF
            NEXT TLP
        END SUB

        SUB READFONT()
            DIM lp
            RESTORE typerfont
            FOR LP=1 TO (8*8*64)
                READ FONT(LP)
            NEXT
        END SUB

typerfont:

'space
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0

'!
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0

' "
data 0,1,1,1,0,1,1,1
data 0,1,1,1,0,1,1,1
data 0,1,1,1,0,1,1,1
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0

' #

data 0,0,0,0,0,0,0,0
data 0,1,1,1,0,1,1,0
data 1,1,1,1,1,1,1,1
data 0,1,1,1,0,1,1,0
data 0,1,1,1,0,1,1,0
data 1,1,1,1,1,1,1,1
data 0,1,1,1,0,1,1,0
data 0,0,0,0,0,0,0,0

' $ = £
data 0,0,1,1,1,1,1,0
data 0,1,1,1,0,1,1,1
data 1,1,1,1,1,0,0,0
data 0,1,1,1,0,0,0,0
data 0,1,1,1,0,0,0,0
data 0,1,1,1,0,0,0,0
data 0,1,1,1,0,0,0,0
data 1,1,1,1,1,1,1,1

' %
data 0,0,0,0,0,0,0,0
data 0,1,1,0,0,1,1,1
data 0,1,1,0,1,1,1,0
data 0,0,0,1,1,1,0,0
data 0,0,1,1,1,0,0,0
data 0,1,1,1,0,1,1,0
data 1,1,1,0,0,1,1,0
data 0,0,0,0,0,0,0,0
' & = O
data 0,0,0,1,1,0,0,0
data 0,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,0
data 0,0,0,1,1,0,0,0
' '
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0

' (
data 0,0,1,1,1,1,0,0
data 0,1,1,1,1,0,0,0
data 0,1,1,1,0,0,0,0
data 0,1,1,1,0,0,0,0
data 0,1,1,1,0,0,0,0
data 0,1,1,1,0,0,0,0
data 0,1,1,1,1,0,0,0
data 0,0,1,1,1,1,0,0
' )
data 0,0,1,1,1,1,0,0
data 0,0,0,1,1,1,1,0
data 0,0,0,0,1,1,1,0
data 0,0,0,0,1,1,1,0
data 0,0,0,0,1,1,1,0
data 0,0,0,0,1,1,1,0
data 0,0,0,1,1,1,1,0
data 0,0,1,1,1,1,0,0

' *
data 0,0,0,0,0,0,0,0
data 0,1,0,1,1,0,1,0
data 0,0,1,1,1,1,0,0
data 0,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,0
data 0,0,1,1,1,1,0,0
data 0,1,0,1,1,0,1,0
data 0,0,0,0,0,0,0,0

' +
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0
data 0,0,0,1,1,0,0,0
data 0,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,0
data 0,0,0,1,1,0,0,0
data 0,0,0,1,1,0,0,0
data 0,0,0,0,0,0,0,0
' ,
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,1,1,1,1,0,0

' -
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,1,1,1,1,1,1,0
data 0,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
' .
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0
data 0,0,0,1,1,0,0,0
' /
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,1,1,1
data 0,0,0,0,1,1,1,0
data 0,0,0,1,1,1,0,0
data 0,0,1,1,1,0,0,0
data 0,1,1,1,0,0,0,0
data 1,1,1,0,0,0,0,0
data 0,0,0,0,0,0,0,0

'0
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,1,0,1,1,1
data 1,1,1,0,1,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
'1
data 0,0,0,1,1,1,0,0
data 0,0,1,1,1,1,0,0
data 0,0,1,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,1,1,1,1,1,0
'2
data 0,0,1,1,1,1,1,0
data 0,1,1,1,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,1,1
data 1,1,1,1,1,1,1,1
'3
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 0,0,0,0,1,1,1,0
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
'4
data 1,1,1,0,1,1,1,0
data 1,1,1,0,1,1,1,0
data 0,1,1,1,1,1,1,1
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
'5
data 1,1,1,1,1,1,1,0
data 1,1,1,0,1,1,1,0
data 1,1,1,0,0,0,0,0
data 0,1,1,1,1,1,1,0
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
'6
data 1,1,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
'7
data 1,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 0,0,0,0,1,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
'8
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
'9
data 0,1,1,1,1,1,1,1
data 1,1,0,0,0,1,1,1
data 0,1,1,1,1,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1

' :
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,1,1,1,1,0,0

' ;
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0

' <
data 0,0,0,0,0,0,0,0
data 0,0,1,1,1,0,0,0
data 0,1,1,1,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 0,1,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,0,0,0,0,0,0

' =
data 0,0,0,0,0,0,0,0
data 0,0,1,1,1,1,0,0
data 0,0,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,1,1,1,1,0,0
data 0,0,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0

' >
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,0,1,1,1,0
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,1,1,1,0
data 0,0,0,1,1,1,0,0
data 0,0,0,0,0,0,0,0

' ?
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 0,0,0,1,1,1,1,0
data 0,0,0,1,1,1,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0

' @
data 0,0,0,0,0,0,0,0
data 0,0,1,1,1,1,0,0
data 0,1,1,0,0,1,1,0
data 0,1,0,1,1,0,1,0
data 0,1,0,0,0,0,1,0
data 0,1,0,1,1,0,1,0
data 0,0,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0

'[]\^_?@

'A
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,1,1,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
'B
data 1,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,1,1,1,1,0
'C
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
'D
data 1,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,1,1,1,1,0
'E
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,1,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
'F
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,1,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0

'G
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,1,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0

'H
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,1,1,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1

'I
data 0,1,1,1,1,1,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,1,1,1,1,1,0,0
'J
data 0,1,1,1,1,1,1,1
data 1,1,1,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 1,1,1,1,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
'K
data 1,1,1,0,1,1,1,0
data 1,1,1,0,1,1,1,0
data 1,1,1,1,1,1,0,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
'L

data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0

'M

data 0,1,1,0,1,1,1,0
data 1,1,1,1,1,1,1,1
data 1,1,1,1,0,1,1,1
data 1,1,1,1,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1

'N

data 1,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1

'O
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
'P

data 1,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,1,1,1,1,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0

'Q
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,1,0,1,1
data 1,1,1,0,1,1,0,1
data 1,1,1,0,0,1,1,0
data 0,1,1,1,1,1,1,0


'R

data 1,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
'S

data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,0,0,0
data 0,1,1,1,1,1,1,0
data 0,0,0,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0

'T
data 1,1,1,1,1,1,1,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0
'U
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0

'V

data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,0,0,1,1,0
data 0,0,1,1,1,1,0,0

'W
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,1,0,1,1,1
data 1,1,1,1,0,1,1,1
data 1,1,1,1,0,1,1,1
data 0,1,1,1,1,1,1,0

'X
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1

'Y
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,0

'Z
data 0,1,1,1,1,1,1,1
data 1,1,1,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,1,1,1,1,1,1,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,1,1,1
data 1,1,1,1,1,1,1,0

'[
data 1,1,1,1,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 1,1,1,1,0,0,0,0
'\
data 1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0
data 0,1,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0
data 0,0,0,0,1,1,1,0
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,0,1,1
']
data 0,0,0,0,1,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1
data 0,0,0,0,1,1,1,1
'^
data 0,0,0,1,1,0,0,0
data 0,0,1,1,1,1,0,0
data 0,1,1,0,0,1,1,0
data 1,1,1,0,0,1,1,1
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0

'_
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0
data 0,1,1,1,1,1,1,0


Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17412
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Text Typer FX - help needed ...
« Reply #1 on: May 09, 2010 »
Hi Slippy,

That brilliant intro by Keops does indeed have some fabulous writer effects, in principle it is similar to the source that you already have from me, it's just moving some letters into position after all.

Keop's one uses the hardware though and the thing that you are using is software rendered so if you're going to spin the letters or zoom them then you'll have to do the work by hand. Also the results won't look as good as the hardware accelerated one which has the benefit of sub-pixel accuracy.

Oldschool could look cool though.. Anyway, zooming and flipping text.. I did this a long, long time ago in an intro I released for S!P called Dutch Colourz..

http://www.dbfinteractive.com/forum/index.php/topic,1236.0.html

Have a look through that source and feel free to take the scroller, it's a really cool one :)

It works by just stretching a bitmap, if you're after something else more like a text writer just say and I'll write one.. I'm looking for an excuse to blow the dust off my keys.. It's been too long since I did any proper demo programming.
Shockwave ^ Codigos
Challenge Trophies Won:

Offline slippy

  • Atari ST
  • ***
  • Posts: 172
  • Karma: 42
    • View Profile
Re: Text Typer FX - help needed ...
« Reply #2 on: May 09, 2010 »
Hey shocky ...

I will have a deeper look at the source of this cool intro (anyhow I didn't see it until now) ... the zooming and flipping looks really cool as the rest of the intro does!

*cough* ... if you really need an excuse to blow off the dust of your keyboard ... well, go ahead and code something ... I'd really look forward to see another one of your outstanding stuff again  O0

Cheers,
SLiPPY

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17412
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Text Typer FX - help needed ...
« Reply #3 on: May 10, 2010 »
I'll make something :)

Check back in a day or two mate.
Shockwave ^ Codigos
Challenge Trophies Won:

Offline slippy

  • Atari ST
  • ***
  • Posts: 172
  • Karma: 42
    • View Profile
Re: Text Typer FX - help needed ...
« Reply #4 on: May 10, 2010 »
Outstanding mate ... !

Have some karma in advance ...
Really looking forward to see what the wizard will cook  :stirrer:

Cheers,
SLiPPY

Offline Dr.Death

  • Senior Member
  • Amiga 1200
  • ********
  • Posts: 445
  • Karma: 9
    • View Profile
Re: Text Typer FX - help needed ...
« Reply #5 on: May 10, 2010 »
I would like to see something new too Shockwave   :updance:
Proud member of DAWN

Offline slippy

  • Atari ST
  • ***
  • Posts: 172
  • Karma: 42
    • View Profile
Re: Text Typer FX - help needed ...
« Reply #6 on: June 10, 2010 »
Hey shocky ...

did you already find the time to do something on a texttyper fx? If not - nevermind - I'm just curious ;)


Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 17412
  • Karma: 498
  • evil/good
    • View Profile
    • My Homepage
Re: Text Typer FX - help needed ...
« Reply #7 on: June 14, 2010 »
Fuck, sorry mate.  I've had a lot on my mind. I'll do something on this soon.
Shockwave ^ Codigos
Challenge Trophies Won: