home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1992-02-26 | 3.4 KB | 168 lines |
- ' *************************************************************
- '
- ' HOW TO GET A BIG MONSTER MOVING
- ' ===============================
- '
- ' ON SCREEN WITHOUT ANY SLOW DOWN
- ' ===============================
- '
- ' i.e. CHEAT! using screen offset
- '
- ' /\/\/\/\/\/\/\/\/\
- ' By: Paul Nordovics
- ' \/\/\/\/\/\/\/\/\/
- '
- ' *************************************************************
- '
- Hide
- '
- ' *************************
- ' put monster onto screen 0
- ' *************************
- Unpack 1 To 0
- Screen Hide
- '
- ' ********************
- ' open nice big screen
- ' ********************
- Screen Open 1,960,256,8,Lowres
- Screen Hide
- Curs Off : Flash Off
- Get Palette 0
- Cls 0
- '
- ' ********************************
- ' copy scary monster to big screen
- ' ********************************
- Screen Copy 0,0,0,320,256 To 1,320,0
- '
- ' *****************
- ' set up big screen
- ' *****************
- _SCREEN_OFFSET=640
- Screen Offset 1,_SCREEN_OFFSET,0
- Screen Show 1
- '
- ' **************
- ' set up monster
- ' **************
- Dim MONSTER_LUT(8)
- Restore MONSTER_LUT
- For K=0 To 8
- Read MONSTER_LUT(K)
- Next K
- MONSTER_LUT_POINTER=0
- '
- MONSTER_SPEED=8
- '
- ' -------------------------------------------------------------
- '
- ' *************************************************************
- ' MAIN LOOP
- ' *************************************************************
- MAIN:
- Do
- Wait Vbl
- Gosub _DO_MONSTER
- Screen Offset 1,_SCREEN_OFFSET,0
- Loop
- '
- ' -------------------------------------------------------------
- '
- _DO_MONSTER:
- ' *********
- ' get state
- ' *********
- If MONSTER_STATE=0
- Repeat
- MONSTER_STATE=MONSTER_LUT(MONSTER_LUT_POINTER)
- If MONSTER_STATE=-1
- MONSTER_LUT_POINTER=0
- End If
- Until MONSTER_STATE<>-1
- Add MONSTER_LUT_POINTER,1
- End If
- ' **********
- ' move right
- ' **********
- If MONSTER_STATE=1
- Add _SCREEN_OFFSET,-MONSTER_SPEED
- If _SCREEN_OFFSET<=0
- _SCREEN_OFFSET=0
- MONSTER_STATE=0
- End If
- End If
- ' *********
- ' move left
- ' *********
- If MONSTER_STATE=2
- Add _SCREEN_OFFSET,MONSTER_SPEED
- If _SCREEN_OFFSET>=640
- _SCREEN_OFFSET=640
- MONSTER_STATE=0
- End If
- End If
- ' **************
- ' move to middle
- ' **************
- If MONSTER_STATE=3
- If _SCREEN_OFFSET>320
- Add _SCREEN_OFFSET,-MONSTER_SPEED
- If _SCREEN_OFFSET<320
- _SCREEN_OFFSET=320
- End If
- End If
- If _SCREEN_OFFSET<320
- Add _SCREEN_OFFSET,MONSTER_SPEED
- If _SCREEN_OFFSET>320
- _SCREEN_OFFSET=320
- End If
- End If
- If _SCREEN_OFFSET=320
- MONSTER_STATE=0
- End If
- End If
- ' *****
- ' flash
- ' *****
- If MONSTER_STATE=4
- Gosub _GET_MONSTER_COLOURS
- MONSTER_STATE=0
- End If
- ' ****
- ' wait
- ' ****
- If MONSTER_STATE=5
- Wait 25
- MONSTER_STATE=0
- End If
- Return
- '
- ' -------------------------------------------------------------
- '
- _GET_MONSTER_COLOURS:
- For MONSTER_LOOP=0 To 49
- Wait Vbl
- K=Rnd(2)
- If K=0 Then Restore MONSTER_COLOURS0
- If K=1 Then Restore MONSTER_COLOURS1
- If K=2 Then Restore MONSTER_COLOURS2
- For L=2 To 6
- Read V
- Colour L,V
- Next L
- Next MONSTER_LOOP
- Return
- '
- ' -------------------------------------------------------------
- '
- MONSTER_LUT:
- Data 1,2,1,3,5,4,5,2,-1
- '
- MONSTER_COLOURS0:
- Data $3,$6,$9,$C,$F
- MONSTER_COLOURS1:
- Data $300,$600,$900,$C00,$F00
- MONSTER_COLOURS2:
- Data $30,$60,$90,$C0,$F0
- '