home *** CD-ROM | disk | FTP | other *** search
- MAIN:
- ' This routine - believe it or not - runs at full 50 fps on my A1200
- ' (No Fast RAM either) before I've even compiled it! You'll have to
- ' edit it a little to get what you want, I've used four layers of
- ' chex to make it look better.
- ' Freak/NFA
-
- _MAKESCREENS
- _ENVIRONMENT
-
- ' ------------------------------------- get original plane pointers
- Screen 1
- P0=Leek(Screen Base+24)
- P1=Leek(Screen Base+28)
- P2=Leek(Screen Base+32)
- P3=Leek(Screen Base+36)
-
- ' ------------------------------------- find where work data starts
- Screen 0
- SRC=Phybase(0) : MEM=(Screen Width/8)*Screen Height
-
- ' ------------------------------------- 66 frame (!) anim
- Reserve As Chip Work 10,(MEM*66)
-
- ' ------------------------------------- this bit generates the chex at
- ' increasing sizes to give the
- ' impression of motion and then
- ' copies them into that big bank
- OFF=0
- For SCALE=50 To 700 Step 10
- Cls 0
- XM=(Screen Width/2)+(SCALE/4)
- YM=(Screen Height/2)-(SCALE/4)
- For Y=-2 To 2
- For X=-4 To 3
- Ink 1
- Bar XM+(X*SCALE)+1,YM+(Y*SCALE)+1 To XM+(X*SCALE)+(SCALE/2),YM+(Y*SCALE)+(SCALE/2)
- Bar XM+(X*SCALE)+(SCALE/2)+1,YM+(Y*SCALE)+(SCALE/2)+1 To XM+(X*SCALE)+SCALE,YM+(Y*SCALE)+SCALE
- Next X
- Next Y
- Copy SRC,SRC+MEM To Start(10)+(OFF*MEM) : Inc OFF
- Next SCALE
-
- ' you might notice that the anim doesn't look as good as the ones
- ' you'll have seen in the demos, this is because I didn't use proper
- ' distance scaling, I just increased each successive square size by
- ' 10 pixels each time, cos you have to use mathtrans.library to do
- ' it properly, and besides which I don't KNOW how to DO that bloody
- ' perspective scaling thingy!
-
- Screen Close 0
- SP=1 : Dec OFF
-
- ' --------------------------- Space the bitplane offsets out at
- ' equal intervals through the 66 frames
- PLANE0=(OFF/4)*3
- PLANE1=(OFF/4)*2
- PLANE2=(OFF/4)*1
- PLANE3=(OFF/4)*0
-
- ' --------------------------- Palette fading, you might want to do a
- ' bit of fiddling here to try and get a
- ' nice see-through effect.
- K=$FFF
- X0=$112 : X1=$55A : X2=$448 : X3=$336 : X4=$224
- Fade 2,X0,X1,X2,X1,X3,X1,X2,X1,X4,X1,X2,X1,X3,X1,X2,X1,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K
-
- ' ----------------------------- The main loop (Deceptively EASY!)
- Screen 1
- Do
- Exit If Mouse Key<>0
-
- ' -------------------------- Which was the LAST bitplane to loop
- ' back to frame 0?
- ' (M stores it until another change)
- If PLANE0=0 Then M=0
- If PLANE1=0 Then M=1
- If PLANE2=0 Then M=2
- If PLANE3=0 Then M=3
-
- ' -------------------------- Bitplanes have to be ordered so that
- ' they appear in accordance with the
- ' palette, not too difficult, I just
- ' wich there was a neater way to do it!
- If M=0
- L3=PLANE0
- L0=PLANE1
- L1=PLANE2
- L2=PLANE3
- Else If M=1
- L2=PLANE0
- L3=PLANE1
- L0=PLANE2
- L1=PLANE3
- Else If M=2
- L1=PLANE0
- L2=PLANE1
- L3=PLANE2
- L0=PLANE3
- Else If M=3
- L0=PLANE0
- L1=PLANE1
- L2=PLANE2
- L3=PLANE3
- End If
-
- ' ------------------------------------- Eeek! It's them funny LOKE
- ' commands again!
- Loke Screen Base+24,Start(10)+(L0*MEM)
- Loke Screen Base+28,Start(10)+(L1*MEM)
- Loke Screen Base+32,Start(10)+(L2*MEM)
- Loke Screen Base+36,Start(10)+(L3*MEM)
-
- ' ------------------------------------- Update the frame pointers
- Add PLANE0,1,0 To OFF
- Add PLANE1,1,0 To OFF
- Add PLANE2,1,0 To OFF
- Add PLANE3,1,0 To OFF
-
- ' ------------------------------------- Show changes to Screen Base
- Wait SP : View
- Loop
-
- _CLEANUP
-
- Procedure _MAKESCREENS
-
- SH=200
-
- ' ------------------------------------- Screen 0 - work screen
- Screen Open 0,320,SH,2,Lowres
- Curs Off : Flash Off : Cls 0
- Screen Hide 0
-
- ' ------------------------------------- screen 1 - anim screen
- Screen Open 1,320,SH,32,Lowres
- Curs Off : Flash Off : Cls 0 : K=$112
- Palette K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K
- Hide : Screen Display 1,,70,,
- Gr Writing 0
-
- ' ------------------------------------ Some screen text using plane 3
- ' What's interesting is that if
- ' you open your screen in E.H.B
- ' you can use pen 32 as a "shadow"
- ' colour for your text and it will
- ' do the colours for you!
- ' (I have not tried this!)
- Pen 16 : Paper 0
- For Y=18 To 23
- Read T$
- Locate 0,Y
- Centre T$
- Next Y
-
- Data "Freak says HI to ßudda!"
- Data "-=-=-=-=-=-=-=-=-=-=-=-"
- Data "Here's the routine you wanted dude,"
- Data "now that I've done it I'll put in"
- Data "some REMs so you can see what I was"
- Data "getting up to, see the letter too!"
-
- End Proc
- Procedure _ENVIRONMENT
-
- ' ----------------------------------> No stopping while we're messing
- ' about with the bitplanes matey!
- Amos Lock
- Break Off
- Request Off
-
- End Proc
- Procedure _CLEANUP
- Shared P0,P1,P2,P3
-
- ' ----------------------------> Restore Screen 1's Screen Base with
- ' the values we got at the start, so
- ' that AMOS won't throw a wobbler when
- ' it tries to close the screen and finds
- ' that the planes are not looking where
- ' they're supposed to be!
- Screen 1
- Loke Screen Base+24,P0
- Loke Screen Base+28,P1
- Loke Screen Base+32,P2
- Loke Screen Base+36,P3
-
- ' ----------------------------> Free up the AMOS bits again.
- Erase 10
- Amos Unlock
- Break On
-
- End : Rem ----------------------> Fin!
-
- End Proc
-
-
-
-
-
-
-