home *** CD-ROM | disk | FTP | other *** search
- ' PROG: A Micro Machine type game engine using old High Octane gfx.
- 'Author: Paul Overy.
- '
- '*** NOTE: This needs the turbo pro extension to work ***
- ' ------
- 'Sorry I had no time to convert it into TRUE AMOS.
- '
- '*** The Carft 2 Turbo extension on CU Amiga August 1994 should be OK ***
- '*** Although I use the lastest version ***
- '(No time to convert it to TRUE AMOS)
- '
- 'Keys: Arrow up speed up scroll
- ' Arrow down slow down scroll
- ' left mouse to exit
- '
- ' This version should be in ascii format with all the
- ' banks supplied in a draw named "Data" by the program file.
- '
- '
- ' As you can see this program has no comments, no time.
- ' Anyway... "Good structured High Level code documents itself".
- ' So you should have no trouble understanding my code, Haarrrr!
- '
- ' Those people who do have time to comments in their code, please
- ' don't put things like....
- '
- ' add X_AXIS,MOVE_X :rem add x_axis to move_x ....."very helpfull!"
- ' TRY
- ' rem Move alien in pixels, on the horizontal.
- '
- Dim PX(36),PY(36),_COL(15),LK_UP(7)
- Global PX(),PY(),_COL()
- Proc GRAB
- Proc ANGLES
- '
- LK_UP(0)=1 : LK_UP(1)=6
- LK_UP(2)=10 : LK_UP(3)=15
- LK_UP(4)=19 : LK_UP(5)=24
- LK_UP(6)=28 : LK_UP(7)=33
- OFFSET_X=32*16 : OFFSET_Y=32*16
- MAP_X=16 : MAP_Y=10
- FACE=10 : SPEED=4 : OX=320
- '
- Screen Open 0,640,240,8,Lowres : Flash Off : Curs Off : Cls 0
- Screen Display 0,128+16,44,320-32,240-32
- Autoback 0 : Auto View Off : Bob Update Off
- Screen 0 : Scene Palette 2 : Scene Bank 12
- Scene 16 View 0,320,0 To 640,240
- Scene 16 Do MAP_X,MAP_Y
- Scene 16 View 0,0,0 To 320,240
- Scene 16 Do MAP_X,MAP_Y
- '
- For K=16 To 31
- Colour K,_COL(K-16)
- Next K
- Screen Offset 0,OFFSET_X/16,OFFSET_Y/16 : View
- Hide : Sprite Update Off
- Sprite 0,X Hard(128),Y Hard(96),FACE
- Multi No
- '
- Repeat
- Screen Offset 0,OFFSET_X/16+OX,OFFSET_Y/16
- Vbl Wait Y Hard(200)
- Update : View
- '
- _DIR=LK_UP(Range(Peek((MAP_Y+7)*128+MAP_X+9+Start(11)),0 To 7))
- '
- TURN= Not(TURN)
- If TURN=True or SPEED<3
- If _DIR>FACE
- If _DIR>27 and FACE<9
- Add FACE,-1,1 To 36
- Else
- Add FACE,1,1 To 36
- End If
- End If
- If _DIR<FACE
- If _DIR<9 and FACE>27
- Add FACE,1,1 To 36
- Else
- Add FACE,-1,1 To 36
- End If
- End If
- Sprite 0,,,FACE
- End If
- '
- If Raw Key(77)
- If LAST_KEY77=False
- SPEED=Range(SPEED+1,1 To 10)
- End If
- LAST_KEY77=True
- Else
- LAST_KEY77=False
- End If
- If Raw Key(76)
- If LAST_KEY76=False
- SPEED=Range(SPEED-1,1 To 10)
- End If
- LAST_KEY76=True
- Else
- LAST_KEY76=False
- End If
- '
- If SPEED<10
- Add OFFSET_X,PX(FACE)/SPEED : Add OFFSET_Y,PY(FACE)/SPEED
- End If
- '
- If OFFSET_X/16<1
- MAP_X=Range(MAP_X-1,0 To 160) : MV_X2=16
- Add OFFSET_X,256
- _UPDATE=True
- End If
- If OFFSET_X/16>31
- MAP_X=Range(MAP_X+1,0 To 160) : MV_X1=16
- Add OFFSET_X,-256
- _UPDATE=True
- End If
- If OFFSET_Y/16<1
- MAP_Y=Range(MAP_Y-1,0 To 84) : MV_Y2=16
- Add OFFSET_Y,256
- _UPDATE=True
- Scene 16 Top MAP_X,MAP_Y
- End If
- If OFFSET_Y/16>31
- MAP_Y=Range(MAP_Y+1,0 To 84) : MV_Y1=16
- Add OFFSET_Y,-256
- _UPDATE=True
- Scene 16 Bottom MAP_X,MAP_Y
- End If
- '
- If _UPDATE=True
- If MV_X2=16
- Scene 16 Left MAP_X,MAP_Y
- End If
- If MV_X1=16
- Scene 16 Right MAP_X,MAP_Y
- End If
- SWP= Not SWP
- If SWP=False
- Scene 16 View 0,0,0 To 320,240
- Screen Copy 0,MV_X1,MV_Y1+Y,320-MV_X2,240-MV_Y2 To 0,320+MV_X2,MV_Y2
- OX=320
- Else
- Scene 16 View 0,320,0 To 640,240
- Screen Copy 0,320+MV_X1,MV_Y1+Y,640-MV_X2,240-MV_Y2 To 0,MV_X2,MV_Y2
- OX=0
- End If
- _UPDATE=False
- MV_X1=0 : MV_Y1=0 : MV_X2=0 : MV_Y2=0
- End If
- Until Left Click
- '
- Multi Yes
- '
- Procedure GRAB
- Load Dir$+"data/bank10.dat"
- Load Dir$+"data/bank11.dat"
- Load Dir$+"data/bank12.dat"
- Load Dir$+"data/bank15.dat"
- Unpack 15 To 0
- N=1 : Erase 2
- For Y=0 To 240 Step 16
- For X=0 To 304 Step 16
- Get Icon N,X,Y To X+16,Y+16 : Inc N
- Next X
- Next Y
- Unpack 10 To 0
- For K=0 To 15 : _COL(K)= Colour(K) : Next K
- Erase 1 : N=1
- For Y=0 To 84-21 Step 21
- For X=0 To 288 Step 32
- Get Sprite N,X,Y To X+32,Y+21
- Make Mask N : Inc N
- Next X
- Next Y
- End Proc
- Procedure ANGLES
- K=10
- For N#=0.0 To Pi#*2.0 Step Pi#/18.0
- PX(K)=16.0*Cos(N#)*16.0
- PY(K)=16.0*Sin(N#)*16.0
- Exit If K=9
- Add K,1,1 To 36
- Next N#
- End Proc
-