home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src6.dms / in.adf / BOUNCHSRCS.LZH / gels.asm < prev    next >
Encoding:
Assembly Source File  |  1990-10-22  |  5.5 KB  |  274 lines

  1. ;  Belze-Bobs av Micke Andersson 1989
  2.  
  3. ;Först lite inkluderingar
  4.  
  5.     include    "exec/types.i"
  6.     include    "exec/memory.i"
  7.     include    "hardware/custom.i"
  8.     include    "hardware/dmabits.i"
  9.     include    "intuition/intuition.i"
  10.     include    "graphics/gfx.i"
  11.     include    "graphics/gels.i"
  12.  
  13. ;Sen lite eXterna REFerenser
  14.  
  15.     xref    _AbsExecBase
  16.     xref    _LVOSetAPen
  17.     xref    _LVOLoadRGB4
  18.     xref    _LVOOpenLibrary
  19.     xref    _LVOOpenScreen
  20.     xref    _LVOCloseScreen
  21.     xref    _LVORectFill
  22.     xref    _LVOWaitTOF
  23.     xref    _LVOAllocMem
  24.     xref    _LVOInitGels
  25.     xref    _LVOInitMasks
  26.     xref    _LVOAddBob
  27.     xref    _LVOSortGList
  28.     xref    _LVODrawGList
  29.     xref    _LVOFreeMem
  30.  
  31. ;Några Macros, jag är lat.
  32.  
  33. callexe    macro
  34.     movea.l  _AbsExecBase,a6
  35.     jsr      _LVO\1(a6)
  36.     endm
  37.  
  38. callint    macro
  39.     movea.l  _INTUITIONBASE,a6
  40.     jsr      _LVO\1(a6)
  41.     endm
  42.  
  43. callgfx    macro
  44.     movea.l  _GFXBASE,a6
  45.     jsr      _LVO\1(a6)
  46.     endm
  47.  
  48.  
  49. NULL        EQU    0
  50. MEMTYPE        EQU    MEMF_CHIP+MEMF_CLEAR
  51. BOB_WIDTH    EQU    1
  52. BOB_HEIGHT    EQU    16
  53. BOB_DEPTH    EQU    2
  54. MEM_SIZE    EQU    512
  55.  
  56.     LEA    INTLIB,A1        ;Öppna relevanta Libraries
  57.     MOVEQ    #$00,D0
  58.     CALLEXE    OpenLibrary
  59.     TST    D0
  60.     BEQ    ERROR
  61.     MOVE.L    D0,_INTUITIONBASE    ;och spara pekarna
  62.     LEA    GFXLIB,A1
  63.     MOVEQ    #$00,D0
  64.     CALLEXE    OpenLibrary
  65.     TST    D0
  66.     BEQ    ERROR
  67.     MOVE.L    D0,_GFXBASE
  68.     LEA    NEWSCREEN,A0        ;Öppna screen.
  69.     CALLINT    OpenScreen
  70.     TST    D0
  71.     BEQ    ERROR
  72.     MOVE.L    D0,SCREEN_PTR        ;Screen Pekaren
  73. ;NEW PAGE
  74.     MOVE.L    D0,A0
  75.     ADD.L    #sc_RastPort,A0        ;Offset till Rastporten
  76.     MOVE.L    A0,RASTPORT        ;sparad
  77.     MOVE.L    D0,A0
  78.     ADD.L    #sc_ViewPort,A0        ;Begär View pekaren
  79.     LEA    PALETTE,A1
  80.     MOVE.W    #NUMCOLS,D0        ;antal färger
  81.     CALLGFX    LoadRGB4        ;Sätt färg paletten
  82.     MOVE.L    #MEM_SIZE,D0        ;Begär tillräckligt med `CHIP`
  83.     MOVE.L    #MEMTYPE,D1        ;minne för BOBen och 
  84.     CALLEXE    AllocMem        ;save buffern
  85.     TST    D0
  86.     BEQ    SHUTSCREEN        ;Fick vi minnet vi begärde?
  87.     MOVE.L    D0,MEMBASE        ;om inte -Stäng affären.
  88. POINTER
  89.     LEA    MY_VSPRITE,A0
  90.     MOVE.L    D0,vs_ImageData(A0)    ;Stoppa in data pekaren
  91.     ADD.L    #BOBWORDS*4,D0        ;plus BOBstorleken
  92.     LEA    MY_BOB,A0
  93.     MOVE.L    D0,bob_SaveBuffer(A0)    ;Bakgrund save buffer
  94.     ADD.L    #BOBWORDS*4,D0
  95.     MOVE.L    D0,bob_ImageShadow(A0)    ;och spar buffer storleken
  96.     LEA    MY_VSPRITE,A0
  97.     MOVE.L    D0,vs_CollMask(A0)    
  98.     LEA    SMILEY,A0        ;kopiera BOBdatan
  99.     MOVE.L    MEMBASE,A1        ;till CHIP minnet
  100.     MOVE.L    #BOBWORDS,D0
  101.  
  102. COPY_BOB
  103.     MOVE.W    (A0)+,(A1)+
  104.     DBRA    D0,COPY_BOB        ;Brancha tills det är klart
  105.  
  106.     LEA    DUMMY1,A0        
  107.     LEA    DUMMY2,A1        
  108.     LEA    MY_GELSINFO,A2        ;Min GI structur
  109.     CALLGFX    InitGels        ;Initalize
  110.  
  111.     MOVE.L    RASTPORT,A0        ;Linka till RP
  112.     MOVE.L    #MY_GELSINFO,rp_GelsInfo(A0)
  113.  
  114.     LEA    MY_VSPRITE,A0        ;Mask MAKER.
  115.     CALLGFX    InitMasks
  116.  
  117.     LEA    MY_BOB,A0        ;Addera min BOB till systemet.
  118.     MOVE.L    RASTPORT,A1
  119.     CALLGFX    AddBob
  120.  
  121.     MOVE.L    RASTPORT,A1        ;Byt till färg #5
  122.     MOVE.L    #$05,D0
  123.     CALLGFX    SetAPen
  124.  
  125.     MOVE.L    RASTPORT,A1        ;Rita rektangeln
  126.     MOVE.L    #100,D0
  127.     MOVE.L    #50,D1
  128.     MOVE.L    #220,D2
  129.     MOVE.L    #150,D3
  130.     CALLGFX    RectFill
  131.  
  132. DRAW_LOOP                ;Den här loopen
  133.     MOVE.L    RASTPORT,A1        ;`sortar` och ritar
  134.     CALLGFX    SortGList        ;egentligen
  135.  
  136.     MOVE.L    RASTPORT,A1        ;BOBarna in i
  137.     MOVE.L    A1,A0            ;rastporten
  138.     CALLGFX    DrawGList
  139.  
  140. WAIT    SUBQ    #$01,TIMER
  141.     BMI    FREEUP
  142.     CALLGFX    WaitTOF
  143.     BSR    BOUNCE            ;annars studsa BOB
  144.     BRA    DRAW_LOOP        ;och brancha
  145. FREEUP
  146.     MOVE.L    MEMBASE,A1
  147.     MOVE.L    #MEM_SIZE,D0
  148.     CALLEXE    FreeMem
  149. SHUTSCREEN
  150.     MOVE.L    SCREEN_PTR,A0        ;klockan är fyra, dags att städa
  151.     CALLINT    CloseScreen        ;och gå hem.
  152. ERROR    RTS
  153.  
  154.                     ;I`LL NOW TALK ENGLISH, EASIER..
  155. BOUNCE    LEA    MY_VSPRITE,A0        ;BOUNCE ROUTINE
  156.     MOVE.W    vs_X(A0),D0        ;WHICH CLAIMS X
  157.     CMP.W    #300,D0            ;AND CHECKS FOR
  158.     BHI    NEGA            ;LIMITS
  159.     CMP.W    #10,D0
  160.     BHI    NONEGA            ;NEGATING `AMOUNT`
  161. NEGA    NEG.W    AMOUNTX            ;WHEN NECESSARY
  162. NONEGA    ADD.W    AMOUNTX,D0        ;BEFORE ADDING TO
  163.     MOVE.W    D0,vs_X(A0)        ;CURRENT X
  164.     MOVE.W    vs_Y(A0),D0        ;SAME FOR Y CO-ORD
  165.     CMP.W    #180,D0
  166.     BHI    NEGA2
  167.     CMP.W    #10,D0
  168.     BHI    NONEGA2
  169. NEGA2    NEG.W    AMOUNTY
  170. NONEGA2    ADD.W    AMOUNTY,D0
  171.     MOVE.W    D0,vs_Y(A0)
  172.     RTS
  173.  
  174. AMOUNTX    DC.W    $0004
  175. AMOUNTY    DC.W    $0003
  176.  
  177. NEWSCREEN
  178.     DC.W    0,0        ;SCREEN X Y ORIGIN
  179.     DC.W    320,200        :SCREEN WIDHT,HEIGHT
  180.     DC.W    3        ;SCREEN DEPTH (NUMBER OF BITPLANES)
  181.     DC.B    7,1        ;DETAIL AND BLOCK PENS
  182.     DC.W    NULL        ;DISPLAY MODES FOR THIS SCREEN
  183.     DC.W    CUSTOMSCREEN    ;SCREEN TYPE
  184.     DC.L    NULL        ;POINTER TO DEFAULT SCREEN FONT
  185.     DC.L    SCREEN_TITLE    ;SCREEN TITLE!
  186.     DC.L    NULL        ;FIRST IN GADGET LIST
  187.     DC.L    NULL        ;POINTER TO CUSTOM BITMAP STRUCTURE
  188. SCREEN_TITLE
  189.     DC.B    'BELZE-BOBS !!!!',0
  190.     CNOP    0,2
  191. PALETTE
  192.     DC.W    $0000
  193.     DC.W    $056F
  194.     DC.W    $0B22
  195.     DC.W    $0FEE
  196.     DC.W    $000F
  197.     DC.W    $0F0F
  198.     DC.W    $00FF
  199.     DC.W    $0FFF
  200.  
  201. NUMCOLS        EQU    (*-PALETTE)/2
  202.  
  203. INTLIB        DC.B    'intuition.library',0
  204.         EVEN
  205. _INTUITIONBASE    DC.L    0
  206. GFXLIB        DC.B    'graphics.library',0
  207.         EVEN
  208. _GFXBASE    DC.L    0
  209.  
  210. SCREEN_PTR    DC.L    0
  211.  
  212. MEMBASE        DC.L    0
  213.  
  214. RASTPORT    DC.L    0
  215.  
  216. BLINE        DC.W    0
  217.  
  218. DUMMY1        DS.B    vs_SIZEOF
  219.         EVEN
  220.  
  221. DUMMY2        DS.B    vs_SIZEOF
  222.         EVEN
  223.  
  224. MY_GELSINFO    DS.B    gi_SIZEOF
  225.         EVEN
  226.  
  227. TIMER        DC.W    $0400            ;HOW LONG SHALL IT BE
  228.  
  229. MY_VSPRITE
  230.     DC.L    0                ;NEXTVSPRITE
  231.     DC.L    0                ;PREVVSPRITE
  232.     DC.L    0                ;DRAWPATH
  233.     DC.L    0                ;CLEARPATH
  234.     DC.W    0                ;OLDY
  235.     DC.W    0                ;OLDX
  236.     DC.W    VSF_SAVEBACK+VSF_OVERLAY    ;VSFLAGS
  237.     DC.W    40                ;Y
  238.     DC.W    80                ;X
  239.     DC.W    BOB_HEIGHT            ;HEIGHT
  240.     DC.W    BOB_WIDTH            ;WIDTH
  241.     DC.W    BOB_DEPTH            ;DEPTH
  242.     DC.W    0                ;MEMASK
  243.     DC.W    0                ;HITMASK
  244.     DC.L    0                ;IMAGEDATA
  245.     DC.L    BLINE                ;BORDERLINE
  246.     DC.L    0                ;COLLMASK
  247.     DC.L    0                ;SPRCOLORS
  248.     DC.L    MY_BOB                ;VSBOB
  249.     DC.B    3                ;PLANEPICK
  250.     DC.B    0                ;PLANE ON OFF
  251.     DC.W    0                ;SUSEREXT
  252.     
  253.     EVEN
  254. MY_BOB
  255.     DC.W    0                ;FLAGS
  256.     DC.L    0                ;SAVEBUFFER
  257.     DC.L    0                ;IMAGESHADOW
  258.     DC.L    0                ;BEFORE
  259.     DC.L    0                ;AFTER
  260.     DC.L    MY_VSPRITE            ;BOBVSPRITE
  261.     DC.L    0                ;BOBCOMP
  262.     DC.L    0                ;DBUFFER
  263.  
  264. SMILEY
  265.     DC.W    $0000,$0000,$0000,$0000,$0C60,$0C60,$0C60
  266.     DC.W    $600C,$600C,$3018,$3018,$1C70,$0FE0,$0380
  267.     DC.W    $0000,$0000,$07C0,$1FF0,$3FF8,$7FFC,$7FFC
  268.     DC.W    $FFFE,$FFFE,$FFFE,$FFFE,$FFFE,$7FFC,$7FFC
  269.     DC.W    $3FF8,$1FF0,$07C0,$0000
  270.  
  271. BOBWORDS    EQU    (*-SMILEY)/2
  272.  
  273.  END
  274.