**************************** * This is another one of * * those useless 'Boing' * * type things. * * * * written by: * * E. Lenz * * Johann-Fichte-Strasse 11 * * 8 Munich 40 * * Germany * * * **************************** _AbsExecBase equ 4 **** exec ***** _LVOForbid equ -$84 _LVOPermit equ -$8a _LVOAllocMem equ -$c6 _LVOFreeMem equ -$d2 _LVOGetMsg equ -$174 _LVOReplyMsg equ -$17a _LVOWaitPort equ -$180 _LVOCloseLibrary equ -$19e _LVOOpenLibrary equ -$228 **** Graphics **** _LVOGetSprite equ -$198 _LVOFreeSprite equ -$19e _LVOChangeSprite equ -$1a4 **** Dos *** _LVODelay equ -$c6 pr_MsgPort equ $5c pr_CLI equ $ac ThisTask equ $114 VBlankFrequency equ $212 movea.l _AbsExecBase,a6 test if WB or CLI movea.l ThisTask(a6),a0 moveq #0,d0 tst.l pr_CLI(a0) bne.s isCLI lea pr_MsgPort(a0),a0 for WB get WB Message jsr _LVOWaitPort(a6) jsr _LVOGetMsg(a6) isCLI move.l d0,-(a7) cmpi.b #60,VBlankFrequency(a6) test if PAL or NTSC beq.s isNTS move.w #242,tryy+2 move.w #242,triy+2 isNTS move.l #Imend-SimpleSprite,d0 moveq #2,d1 chip memory jsr _LVOAllocMem(a6) move.l d0,sprite1 beq.s Gexit move.l d0,d1 add.l #Site-SimpleSprite,d1 move.l d1,sprite2 lea SimpleSprite(pc),a0 movea.l d0,a1 move.l #Imend-SimpleSprite-1,d0 trans move.b (a0)+,(a1)+ dbra d0,trans lea DosName(pc),a1 open dos library moveq #0,d0 jsr _LVOOpenLibrary(a6) movea.l d0,a5 tst.l d0 beq.s Gexit lea GfxName(pc),a1 open graphics library moveq #0,d0 jsr _LVOOpenLibrary(a6) movea.l d0,a4 Gexit beq exit movea.l d0,a6 moveq #-1,d0 set sprite Nr. 1 movea.l sprite1(pc),a0 jsr _LVOGetSprite(a6) move.w d0,No1 moveq #-1,d0 set sprite Nr. 2 movea.l sprite2(pc),a0 jsr _LVOGetSprite(a6) move.w d0,No2 moveq #8,d3 moveq #5,d4 moveq #-8,d5 moveq #6,d6 loop movea.l a5,a6 wait a while moveq #1,d1 jsr _LVODelay(a6) movea.l a4,a6 suba.l a0,a0 no ViewPort movea.l sprite1(pc),a1 lea Image-SimpleSprite(a1),a2 add.w d3,6(a1) increment X-pos add.w d4,8(a1) increment Y-Pos jsr _LVOChangeSprite(a6) set sprite suba.l a0,a0 no ViewPort movea.l sprite2(pc),a1 lea Imag-Site(a1),a2 pointer to sprite data add.w d5,6(a1) increment X-pos add.w d6,8(a1) increment Y-Pos jsr _LVOChangeSprite(a6) set sprite btst #6,$bfe001 mouse clicked? beq.s exit movea.l sprite1(pc),a1 check boundries cmpi.w #300,6(a1) bge.s negx tst.w 6(a1) bpl.s tryy negx neg.w d3 tryy cmpi.w #184,8(a1) bge.s negy tst.w 8(a1) bpl.s next negy neg.w d4 next movea.l sprite2(pc),a1 cmpi.w #300,6(a1) bge.s notx tst.w 6(a1) bpl.s triy notx neg.w d5 triy cmpi.w #184,8(a1) bge.s noty tst.w 8(a1) bpl.s Glop noty neg.w d6 Glop bra loop exit move.l sprite1(pc),d0 beq.s nosp1 movea.l _AbsExecBase,a6 movea.l d0,a1 move.l #Imend-SimpleSprite,d0 jsr _LVOFreeMem(a6) movea.l a4,a6 remove sprite move.w No1(pc),d0 jsr _LVOFreeSprite(a6) nosp1 move.l sprite2(pc),d0 remove sprite beq.s nosp2 move.w No2(pc),d0 jsr _LVOFreeSprite(a6) nosp2 movea.l _AbsExecBase,a6 move.l (a7)+,d0 beq.s NoBen jsr _LVOForbid(a6) reply to WB movea.l d0,a1 jsr _LVOReplyMsg(a6) jsr _LVOPermit(a6) NoBen move.l a4,d1 close graphics library beq.s noGfx movea.l d1,a1 jsr _LVOCloseLibrary(a6) noGfx move.l a5,d1 beq.s noDos movea.l d1,a1 jsr _LVOCloseLibrary(a6) noDos moveq #0,d0 no error rts No1 dc.w 0 sprite1 dc.l 0 No2 dc.w 0 sprite2 dc.l 0 GfxName dc.b 'graphics.library',0 even DosName dc.b 'dos.library',0 even * SimpleSprite structures SimpleSprite dc.w 0,0 pointer to image dc.w 16,0,0 height, X- aund Y-pos dc.w 0 sprite number Image dc.l 0 sprite data dc.l %00000111111000000000000000000000 dc.l %00011100001110000000000000000000 dc.l %00111100001111000000000000000000 dc.l %01111100001111100000000000000000 dc.l %01000011110000100000000000000000 dc.l %10000011110000010000000000000000 dc.l %10000011110000010000000000000000 dc.l %11111100001111110000000000000000 dc.l %11111100001111110000000000000000 dc.l %11111100001111110000000000000000 dc.l %10000011110000010000000000000000 dc.l %01000011110000100000000000000000 dc.l %01000011110000100000000000000000 dc.l %00111100001111100000000000000000 dc.l %00011100001110000000000000000000 dc.l %00000111111000000000000000000000 dc.l 0 Site dc.w 0,0 pointer to image dc.w 16,300,0 height, X- aund Y-pos dc.w 0 sprite number Imag dc.l 0 sprite data dc.l %00000111111000000000011111100000 dc.l %00011100001110000001110000111000 dc.l %00111100001111000011110000111100 dc.l %01111100001111100111110000111110 dc.l %01000011110000100100001111000010 dc.l %10000011110000011000001111000001 dc.l %10000011110000011000001111000001 dc.l %11111100001111111111110000111111 dc.l %11111100001111111111110000111111 dc.l %11111100001111111111110000111111 dc.l %10000011110000011000001111000001 dc.l %01000011110000100100001111000010 dc.l %01000011110000100100001111000010 dc.l %00111100001111100011110000111110 dc.l %00011100001110000001110000111000 dc.l %00000111111000000000011111100000 dc.l 0 Imend: end