home *** CD-ROM | disk | FTP | other *** search
- ;
- ; NOTE! This code is not CJ approved! It is purely here to accompany
- ; the article Reading_C
- ;
-
-
- ;******SET TABS TO 8*********
-
- include 'exec/types.i'
- include 'exec/exec_lib.i'
- include 'dos/dos_lib.i'
- include 'intuition/intuition.i'
- include 'intuition/intuition_lib.i'
- include 'graphics/graphics_lib.i'
- include 'graphics/scale.i'
- include 'graphics/gfx.i'
- include 'graphics/rastport.i'
-
- ;-------------------------------
-
- OPENLIB MACRO
- lea \1,a1
- move.l #\2,d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,\3
- ENDM
-
- CLOSELIB MACRO
- movea.l (4).w,a6
- movea.l \1,a1
- jsr _LVOCloseLibrary(a6)
- ENDM
-
- ;-------------------------------
-
- Start:
-
- movea.l (4).w,a6
- OPENLIB dosname,37,dosbase
- tst.l d0
- beq nodos
- OPENLIB intname,37,intbase
- tst.l d0
- beq closedos
- OPENLIB gfxname,37,gfxbase
- tst.l d0
- bne main
- bra closeInt
- main:
- movea.l intbase,a6
- sub.l a0,a0
- lea WindowTags,A1
- jsr _LVOOpenWindowTagList(a6)
- move.l d0,WindowHD
-
- movea.l gfxbase,a6
- lea MyBitMap,a0
- moveq #3,d0
- move.l #400,d1
- move.l #200,d2
- jsr _LVOInitBitMap(a6)
- lea MyBitMap,a0
- adda.l #bm_Planes,a0
- move.l #dat,(a0)+
- move.l #dat+10000,(a0)+
- move.l #dat+20000,(a0)+
-
- movea.l WindowHD,a2
- movea.l wd_RPort(a2),a1
- moveq #0,d2
- moveq #0,d3
- move.b wd_BorderLeft(a2),d2
- move.b wd_BorderTop(a2),d3
- lea bsa,a0
- move.w d2,bsa_DestX(a0)
- move.w d3,bsa_DestY(a0)
-
-
- movea.l wd_RPort(a2),a2
- move.l rp_BitMap(a2),bsa_DestBitMap(a0)
-
- move.l #4,d7
- bra .pt
- .loop:
- jsr _LVOBitMapScale(a6)
- .pt lea bsa,a0
- addi.w #47,bsa_XDestFactor(a0)
- addi.w #9,bsa_YDestFactor(a0)
- dbf d7,.loop
-
-
- move.l #12,d7
- bra .pt2
- .loop2
- jsr _LVOBitMapScale(a6)
- .pt2: lea bsa,a0
- subi.w #47,bsa_XDestFactor(a0)
- subi.w #15,bsa_YDestFactor(a0)
- dbf d7,.loop2
-
- lea (bsa),a0
- move.w #600,bsa_XDestFactor(a0)
- move.w #250,bsa_YDestFactor(a0)
- move.w #100,bsa_XSrcFactor(a0)
- move.w #100,bsa_YSrcFactor(a0)
- move.w #100,bsa_SrcWidth(a0)
- move.w #100,bsa_SrcHeight(a0)
-
- jsr _LVOBitMapScale(a6)
-
- move.l #50,d1 ;OUR DELAY ROUTINE
- bsr del
-
- lea bsa,a0
- move.w #600,bsa_XDestFactor(a0)
- move.w #250,bsa_YDestFactor(a0)
- move.w #40,bsa_XSrcFactor(a0)
- move.w #40,bsa_YSrcFactor(a0)
- move.w #40,bsa_SrcWidth(a0)
- move.w #40,bsa_SrcHeight(a0)
- move.w #100,bsa_SrcX(a0)
- move.w #100,bsa_SrcY(a0)
-
- jsr _LVOBitMapScale(a6)
- move.l #50,d1
- bsr del
-
- lea bsa,a0
- move.w #600,bsa_XDestFactor(a0)
- move.w #250,bsa_YDestFactor(a0)
- move.w #90,bsa_XSrcFactor(a0)
- move.w #90,bsa_YSrcFactor(a0)
- move.w #90,bsa_SrcWidth(a0)
- move.w #90,bsa_SrcHeight(a0)
- move.w #230,bsa_SrcX(a0)
- move.w #50,bsa_SrcY(a0)
-
- jsr _LVOBitMapScale(a6)
- move.l #50,d1
- bsr del
-
- lea bsa,a0
- move.w #600,bsa_XDestFactor(a0)
- move.w #250,bsa_YDestFactor(a0)
- move.w #200,bsa_XSrcFactor(a0)
- move.w #200,bsa_YSrcFactor(a0)
- move.w #200,bsa_SrcWidth(a0)
- move.w #200,bsa_SrcHeight(a0)
- move.w #2000,bsa_SrcX(a0)
- move.w #0,bsa_SrcY(a0)
-
- jsr _LVOBitMapScale(a6)
- move.l #50,d1
- bsr del
-
- lea bsa,a0
- move.w #600,bsa_XDestFactor(a0)
- move.w #250,bsa_YDestFactor(a0)
- move.w #12,bsa_XSrcFactor(a0)
- move.w #12,bsa_YSrcFactor(a0)
- move.w #12,bsa_SrcWidth(a0)
- move.w #12,bsa_SrcHeight(a0)
- move.w #350,bsa_SrcX(a0)
- move.w #180,bsa_SrcY(a0)
-
- jsr _LVOBitMapScale(a6)
- move.l #50,d1
- bsr del
-
-
- lea bsa,a0
- move.w #0,bsa_SrcX(a0)
- move.w #0,bsa_SrcY(a0)
- move.w #600,bsa_XDestFactor(a0)
- move.w #250,bsa_YDestFactor(a0)
- move.w #400,bsa_XSrcFactor(a0)
- move.w #200,bsa_YSrcFactor(a0)
- move.w #400,bsa_SrcWidth(a0)
- move.w #200,bsa_SrcHeight(a0)
-
- jsr _LVOBitMapScale(a6)
-
- move.l #150,d1
- bsr del
-
- movea.l intbase,a6
- movea.l WindowHD,a0
- jsr _LVOCloseWindow(a6)
-
- closegfx:
- movea.l (4).w,a6
- movea.l gfxbase,a1
- jsr _LVOCloseLibrary(a6)
- closeInt:
- movea.l (4).w,a6
- movea.l intbase,a1
- jsr _LVOCloseLibrary(a6)
- closedos:
- movea.l (4).w,a6
- movea.l dosbase,a1
- jsr _LVOCloseLibrary(a6)
-
- nodos: rts
- del:
- movem.l d0/a0/a6,-(sp)
- movea.l dosbase,a6
- jsr _LVODelay(a6)
- movem.l (Sp)+,d0/a0/a6
- rts
-
- ;--------------------------------------------------
-
- intname:
- dc.b 'intuition.library',0
- gfxname:
- dc.b 'graphics.library',0
- dosname:
- dc.b 'dos.library',0
- even
- intbase: dc.l 0
- WindowHD: dc.l 0
- dosbase: dc.l 0
- gfxbase: dc.l 0
- WindowTags: dc.l WA_Left,0
- dc.l WA_Top,0
- dc.l WA_InnerWidth,600
- dc.l WA_InnerHeight,250
- dc.l WA_Flags
- dc.l 0
- dc.l WA_Title
- dc.l titletext
- dc.l 0 ;TAG_DONE
- titletext:
- dc.b 'Scaling some bitmaps Dude! Do ME on an 8 color WB ',0
- even
- MyBitMap:
- ds.b bm_SIZEOF
- bsa:
- ; STRUCTURE ;BitScaleArgs,0
- dc.w 0 ;UWORD bsa_SrcX ; source origin
- dc.w 0 ;UWORD bsa_SrcY
- dc.w 400 ;UWORD bsa_SrcWidth ; source size
- dc.w 200 ;UWORD bsa_SrcHeight
- dc.w 400 ;UWORD bsa_XSrcFactor ; scale factor denominators
- dc.w 200 ;UWORD bsa_YSrcFactor
- dc.w 0 ;UWORD bsa_DestX ; destination origin
- dc.w 0 ;UWORD bsa_DestY
- dc.w 0 ;UWORD bsa_DestWidth ; destination size result
- dc.w 0 ;UWORD bsa_DestHeight
- dc.w 400 ;UWORD bsa_XDestFactor ; scale factor numerators
- dc.w 200 ;UWORD bsa_YDestFactor
- dc.l MyBitMap ;APTR bsa_SrcBitMap ; source BitMap
- WDBM: dc.l 0 ;APTR bsa_DestBitMap ; destination BitMap
- dc.l 0 ;ULONG bsa_Flags ; reserved. Must be zero!
- dc.w 0 ;UWORD bsa_XDDA ; reserved
- dc.w 0 ;UWORD bsa_YDDA
- dc.l 0 ;LONG bsa_Reserved1
- dc.l 0 ;LONG bsa_Reserved2
- ;LABEL bsa_SIZEOF
-
-
- section nn,data_c
-
- dat: incbin 'dh0:Bmap'
-