home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format 41
/
af041b.adf
/
Bullfrogs
/
display.s
< prev
next >
Wrap
Text File
|
1992-10-23
|
3KB
|
140 lines
FUNC_DISPLAY = 1
FUNC_MUSIC = 0
PLANESIZE = SCREEN_WIDTH*SCREEN_HEIGHT
******************************************************************************
xdef _display
_display
movem.l d0-d7/a0-a6,-(sp)
jsr _set_up_disc
.repeat
jsr _wait_vbi ; wait for a vertical blank
jsr _clear_screen
; jsr _init ; initiate man.
; move.w #$707,(COLOR).l
jsr _draw_all ; draw all the sprites and things
jsr _swap_screens ; display the screen
jsr _move_all ; move all the sprites and things
cmp.b #KB_Q,_iinkey ; have we pressed the quit key?
bne .repeat ; no then loop around
.the_end ; Oh we have then lets exit
movem.l (sp)+,d0-d7/a0-a6
rts
even
dc.l 0,0
**************************************************************************
_lmul ; long multiply routine
movem.l d1-d3,-(sp)
move.w d0,d2
move.w d1,d3
swap d0
swap d1
mulu d2,d1
mulu d3,d0
mulu d3,d2
add.w d1,d0
swap d0
clr.w d0
add.l d2,d0
movem.l (sp)+,d1-d3
rts
******************************************************************************
* Random Number Routine *
******************************************************************************
_rnd ;takes d1 (0-d1)
move.w .seed(pc),d0
mulu #9377,d0
add.w #9439,d0
move.w d0,.seed
and.l #$7fff,d0 ;make sure positive word
divu d1,d0
swap d0
rts
.seed dc.w 1972
******************************************************************************
_abs ; turn number to absolute
tst.w d0
bpl.s .positive
neg.w d0
.positive
rts
******************************************************************************
* Redraw a Background Screen *
******************************************************************************
_q_redraw ;needs a0 as data to copy
move.l _w_screen,a1
move.l #32000/40/4-1,d7
.copy_loop
movem.l (a0)+,a2-a4/d0-d6
movem.l a2-a4/d0-d6,(a1)
lea 40(a1),a1
movem.l (a0)+,a2-a4/d0-d6
movem.l a2-a4/d0-d6,(a1)
lea 40(a1),a1
movem.l (a0)+,a2-a4/d0-d6
movem.l a2-a4/d0-d6,(a1)
lea 40(a1),a1
movem.l (a0)+,a2-a4/d0-d6
movem.l a2-a4/d0-d6,(a1)
lea 40(a1),a1
dbra d7,.copy_loop
rts
******************************************************************************
_clear_all_registers
moveq.l #0,d0
moveq.l #0,d1
moveq.l #0,d2
moveq.l #0,d3
moveq.l #0,d4
moveq.l #0,d5
moveq.l #0,d6
moveq.l #0,d7
move.l d0,a0
move.l d0,a1
move.l d0,a2
move.l d0,a3
move.l d0,a4
move.l d0,a5
move.l d0,a6
rts
******************************************************************************
quit dc.w 0
_sp_screen ;where sprites can be drawn
dc.l 0
title
backscreen
ds.b 32000
even
an1 dc.l 0,0,0 ;animation stack
******************************************************************************
* uses d0 as counter, a0 as screen
_clear_screen
bsr _clear_all_registers ; clear all registers
move.l _w_screen,a0 ; find start of screen to clear
lea 32000(a0),a0 ; and move to the end of it
moveq.w #(615/5)-1,d0 ; number of times we want to loop -1
.loop
movem.l d1-d7/a1-a6,-(a0) ; clear 52 bytes
movem.l d1-d7/a1-a6,-(a0) ; 5 times
movem.l d1-d7/a1-a6,-(a0)
movem.l d1-d7/a1-a6,-(a0)
movem.l d1-d7/a1-a6,-(a0)
dbra d0,.loop
movem.l d1-d5,-(a0) ;clear off the last 20 bytes
rts