home *** CD-ROM | disk | FTP | other *** search
- ; Belze-Bobs av Micke Andersson 1989
-
- ;Först lite inkluderingar
-
- include "exec/types.i"
- include "exec/memory.i"
- include "hardware/custom.i"
- include "hardware/dmabits.i"
- include "intuition/intuition.i"
- include "graphics/gfx.i"
- include "graphics/gels.i"
-
- ;Sen lite eXterna REFerenser
-
- xref _AbsExecBase
- xref _LVOSetAPen
- xref _LVOLoadRGB4
- xref _LVOOpenLibrary
- xref _LVOOpenScreen
- xref _LVOCloseScreen
- xref _LVORectFill
- xref _LVOWaitTOF
- xref _LVOAllocMem
- xref _LVOInitGels
- xref _LVOInitMasks
- xref _LVOAddBob
- xref _LVOSortGList
- xref _LVODrawGList
- xref _LVOFreeMem
-
- ;Några Macros, jag är lat.
-
- callexe macro
- movea.l _AbsExecBase,a6
- jsr _LVO\1(a6)
- endm
-
- callint macro
- movea.l _INTUITIONBASE,a6
- jsr _LVO\1(a6)
- endm
-
- callgfx macro
- movea.l _GFXBASE,a6
- jsr _LVO\1(a6)
- endm
-
-
- NULL EQU 0
- MEMTYPE EQU MEMF_CHIP+MEMF_CLEAR
- BOB_WIDTH EQU 1
- BOB_HEIGHT EQU 16
- BOB_DEPTH EQU 2
- MEM_SIZE EQU 512
-
- LEA INTLIB,A1 ;Öppna relevanta Libraries
- MOVEQ #$00,D0
- CALLEXE OpenLibrary
- TST D0
- BEQ ERROR
- MOVE.L D0,_INTUITIONBASE ;och spara pekarna
- LEA GFXLIB,A1
- MOVEQ #$00,D0
- CALLEXE OpenLibrary
- TST D0
- BEQ ERROR
- MOVE.L D0,_GFXBASE
- LEA NEWSCREEN,A0 ;Öppna screen.
- CALLINT OpenScreen
- TST D0
- BEQ ERROR
- MOVE.L D0,SCREEN_PTR ;Screen Pekaren
- ;NEW PAGE
- MOVE.L D0,A0
- ADD.L #sc_RastPort,A0 ;Offset till Rastporten
- MOVE.L A0,RASTPORT ;sparad
- MOVE.L D0,A0
- ADD.L #sc_ViewPort,A0 ;Begär View pekaren
- LEA PALETTE,A1
- MOVE.W #NUMCOLS,D0 ;antal färger
- CALLGFX LoadRGB4 ;Sätt färg paletten
- MOVE.L #MEM_SIZE,D0 ;Begär tillräckligt med `CHIP`
- MOVE.L #MEMTYPE,D1 ;minne för BOBen och
- CALLEXE AllocMem ;save buffern
- TST D0
- BEQ SHUTSCREEN ;Fick vi minnet vi begärde?
- MOVE.L D0,MEMBASE ;om inte -Stäng affären.
- POINTER
- LEA MY_VSPRITE,A0
- MOVE.L D0,vs_ImageData(A0) ;Stoppa in data pekaren
- ADD.L #BOBWORDS*4,D0 ;plus BOBstorleken
- LEA MY_BOB,A0
- MOVE.L D0,bob_SaveBuffer(A0) ;Bakgrund save buffer
- ADD.L #BOBWORDS*4,D0
- MOVE.L D0,bob_ImageShadow(A0) ;och spar buffer storleken
- LEA MY_VSPRITE,A0
- MOVE.L D0,vs_CollMask(A0)
- LEA SMILEY,A0 ;kopiera BOBdatan
- MOVE.L MEMBASE,A1 ;till CHIP minnet
- MOVE.L #BOBWORDS,D0
-
- COPY_BOB
- MOVE.W (A0)+,(A1)+
- DBRA D0,COPY_BOB ;Brancha tills det är klart
-
- LEA DUMMY1,A0
- LEA DUMMY2,A1
- LEA MY_GELSINFO,A2 ;Min GI structur
- CALLGFX InitGels ;Initalize
-
- MOVE.L RASTPORT,A0 ;Linka till RP
- MOVE.L #MY_GELSINFO,rp_GelsInfo(A0)
-
- LEA MY_VSPRITE,A0 ;Mask MAKER.
- CALLGFX InitMasks
-
- LEA MY_BOB,A0 ;Addera min BOB till systemet.
- MOVE.L RASTPORT,A1
- CALLGFX AddBob
-
- MOVE.L RASTPORT,A1 ;Byt till färg #5
- MOVE.L #$05,D0
- CALLGFX SetAPen
-
- MOVE.L RASTPORT,A1 ;Rita rektangeln
- MOVE.L #100,D0
- MOVE.L #50,D1
- MOVE.L #220,D2
- MOVE.L #150,D3
- CALLGFX RectFill
-
- DRAW_LOOP ;Den här loopen
- MOVE.L RASTPORT,A1 ;`sortar` och ritar
- CALLGFX SortGList ;egentligen
-
- MOVE.L RASTPORT,A1 ;BOBarna in i
- MOVE.L A1,A0 ;rastporten
- CALLGFX DrawGList
-
- WAIT SUBQ #$01,TIMER
- BMI FREEUP
- CALLGFX WaitTOF
- BSR BOUNCE ;annars studsa BOB
- BRA DRAW_LOOP ;och brancha
- FREEUP
- MOVE.L MEMBASE,A1
- MOVE.L #MEM_SIZE,D0
- CALLEXE FreeMem
- SHUTSCREEN
- MOVE.L SCREEN_PTR,A0 ;klockan är fyra, dags att städa
- CALLINT CloseScreen ;och gå hem.
- ERROR RTS
-
- ;I`LL NOW TALK ENGLISH, EASIER..
- BOUNCE LEA MY_VSPRITE,A0 ;BOUNCE ROUTINE
- MOVE.W vs_X(A0),D0 ;WHICH CLAIMS X
- CMP.W #300,D0 ;AND CHECKS FOR
- BHI NEGA ;LIMITS
- CMP.W #10,D0
- BHI NONEGA ;NEGATING `AMOUNT`
- NEGA NEG.W AMOUNTX ;WHEN NECESSARY
- NONEGA ADD.W AMOUNTX,D0 ;BEFORE ADDING TO
- MOVE.W D0,vs_X(A0) ;CURRENT X
- MOVE.W vs_Y(A0),D0 ;SAME FOR Y CO-ORD
- CMP.W #180,D0
- BHI NEGA2
- CMP.W #10,D0
- BHI NONEGA2
- NEGA2 NEG.W AMOUNTY
- NONEGA2 ADD.W AMOUNTY,D0
- MOVE.W D0,vs_Y(A0)
- RTS
-
- AMOUNTX DC.W $0004
- AMOUNTY DC.W $0003
-
- NEWSCREEN
- DC.W 0,0 ;SCREEN X Y ORIGIN
- DC.W 320,200 :SCREEN WIDHT,HEIGHT
- DC.W 3 ;SCREEN DEPTH (NUMBER OF BITPLANES)
- DC.B 7,1 ;DETAIL AND BLOCK PENS
- DC.W NULL ;DISPLAY MODES FOR THIS SCREEN
- DC.W CUSTOMSCREEN ;SCREEN TYPE
- DC.L NULL ;POINTER TO DEFAULT SCREEN FONT
- DC.L SCREEN_TITLE ;SCREEN TITLE!
- DC.L NULL ;FIRST IN GADGET LIST
- DC.L NULL ;POINTER TO CUSTOM BITMAP STRUCTURE
- SCREEN_TITLE
- DC.B 'BELZE-BOBS !!!!',0
- CNOP 0,2
- PALETTE
- DC.W $0000
- DC.W $056F
- DC.W $0B22
- DC.W $0FEE
- DC.W $000F
- DC.W $0F0F
- DC.W $00FF
- DC.W $0FFF
-
- NUMCOLS EQU (*-PALETTE)/2
-
- INTLIB DC.B 'intuition.library',0
- EVEN
- _INTUITIONBASE DC.L 0
- GFXLIB DC.B 'graphics.library',0
- EVEN
- _GFXBASE DC.L 0
-
- SCREEN_PTR DC.L 0
-
- MEMBASE DC.L 0
-
- RASTPORT DC.L 0
-
- BLINE DC.W 0
-
- DUMMY1 DS.B vs_SIZEOF
- EVEN
-
- DUMMY2 DS.B vs_SIZEOF
- EVEN
-
- MY_GELSINFO DS.B gi_SIZEOF
- EVEN
-
- TIMER DC.W $0400 ;HOW LONG SHALL IT BE
-
- MY_VSPRITE
- DC.L 0 ;NEXTVSPRITE
- DC.L 0 ;PREVVSPRITE
- DC.L 0 ;DRAWPATH
- DC.L 0 ;CLEARPATH
- DC.W 0 ;OLDY
- DC.W 0 ;OLDX
- DC.W VSF_SAVEBACK+VSF_OVERLAY ;VSFLAGS
- DC.W 40 ;Y
- DC.W 80 ;X
- DC.W BOB_HEIGHT ;HEIGHT
- DC.W BOB_WIDTH ;WIDTH
- DC.W BOB_DEPTH ;DEPTH
- DC.W 0 ;MEMASK
- DC.W 0 ;HITMASK
- DC.L 0 ;IMAGEDATA
- DC.L BLINE ;BORDERLINE
- DC.L 0 ;COLLMASK
- DC.L 0 ;SPRCOLORS
- DC.L MY_BOB ;VSBOB
- DC.B 3 ;PLANEPICK
- DC.B 0 ;PLANE ON OFF
- DC.W 0 ;SUSEREXT
-
- EVEN
- MY_BOB
- DC.W 0 ;FLAGS
- DC.L 0 ;SAVEBUFFER
- DC.L 0 ;IMAGESHADOW
- DC.L 0 ;BEFORE
- DC.L 0 ;AFTER
- DC.L MY_VSPRITE ;BOBVSPRITE
- DC.L 0 ;BOBCOMP
- DC.L 0 ;DBUFFER
-
- SMILEY
- DC.W $0000,$0000,$0000,$0000,$0C60,$0C60,$0C60
- DC.W $600C,$600C,$3018,$3018,$1C70,$0FE0,$0380
- DC.W $0000,$0000,$07C0,$1FF0,$3FF8,$7FFC,$7FFC
- DC.W $FFFE,$FFFE,$FFFE,$FFFE,$FFFE,$7FFC,$7FFC
- DC.W $3FF8,$1FF0,$07C0,$0000
-
- BOBWORDS EQU (*-SMILEY)/2
-
- END
-