Re: A83: Re: Buffer Draw Routines... (As seen on Dim-TI TCPA)
[Prev][Next][Index][Thread]
Re: A83: Re: Buffer Draw Routines... (As seen on Dim-TI TCPA)
pixel routine.
and it is only for plotting, but you can easily chang it to xor and such.
//Olle
James Matthews wrote:
>
> Look at Olle's sprite routine...I think its even smaller isn't it?
>
> Later,
>
> James.
>
> ==========================================
> E-mail matthews@tkb.att.ne.jp ICQ: 7413754
> http://home.att.ne.jp/gold/tomcat21/index.html
> http://hyperion.advanced.org/18242/
> ==========================================
> -----Original Message-----
> From: Scott Dial <homosapian@geocities.com>
> To: ASM83 <assembly-83@lists.ticalc.org>
> Date: Tuesday, February 23, 1999 11:14 AM
> Subject: A83: Buffer Draw Routines... (As seen on Dim-TI TCPA)
>
> >
> >I think that are great but the PIXEL routine which is the basis for most
> >of the routines is extremely unoptimized... I made it much quicker and
> >smaller (I believe someone mention this before on the list) So I made
> >the following:
> >
> >;-----------------------------------------------------------------------;
> >; Pixel Plotting Routine - By Jason Kovacs, with ZLIB's GetPix Routine.
> >;
> >; Revision by Scott Dial
> >;
> >; All clock times are + GETPIX
> >;
> >; Original - 44 Bytes
> >;
> >; White - 182 Clocks ;
> >; Black - 175 Clocks ;
> >; Xor - 172 Clocks ;
> >; Revision - 36 Bytes
> >;
> >; White - 136 Clocks ;
> >; Black - 143 Clocks
> >;
> >; Xor - 126 Clocks
> >;
> >; This increase in speed and shorting in size makes almost every other
> >;
> >; routine increase in speed and shorten in size.
> >;
> >;-----------------------------------------------------------------------;
> >; Input: D = X, E = Y, C = Pixel Color (0-Clear, 1-Plot, 2-XOR Pixel).
> >;
> >; Output: Pixel is Plotted to Graph Buffer according to Command in 'C'.
> >;
> >;-----------------------------------------------------------------------;
> >
> >PIXEL:
> > push bc ; [11] Save Loop Value and Color
> > push de ; [11] Save the Coordinates
> > push hl ; [11] Save these Values
> > ld a, c ; [ 4] Load this to check which Color
> > or a ; [ 4] CP 0
> > jr z, PIXEL_WHITE ; [12/7] Execute PIXEL_WHITE if C=0
> > dec a ; [ 4] CP 1
> > jr z, PIXEL_BLACK ; [12/7] Execute PIXEL_BLACK if C=1
> > ld a, d ; [ 4] 'a' now has X Coordinate
> > call GETPIX ; [17] Call the Pixel Routine from ZLIB
> > xor (hl) ; [ 7] 'XOR' to Toggle the Pixel
> >PIXEL_RET:
> > ld (hl), a ; [ 7] Write the new byte to Graph
> >Buffer
> > pop de ; [11] Retrieve the Coords for Other
> >Routines
> > pop bc ; [11] Retrieve the Loop Value and Color
> > ret ; [10] Return
> >
> >PIXEL_WHITE:
> > ld a, d ; [ 4] 'a' now has X Coordinate
> > call GETPIX ; [17] Call the Pixel Routine from ZLIB
> > CPL ; [ 4] Compliment 'a' for the correct
> >Bit Mask
> > and (hl) ; [ 7] 'AND' to Clear the Pixel
> > jr PIXEL_RET ; [12]
> >PIXEL_BLACK:
> > ld a, d ; [ 4] 'a' now has X Coordinate
> > call GETPIX ; [17] Call the Pixel Routine from ZLIB
> > or (hl) ; [ 7] 'OR' to Plot the Pixel
> > jr PIXEL_RET ; [12]
> >
> >--
> >Scott "_Wrath_" Dial
> >homosapian@geocities.com
> >ICQ#3608935
> >http://www.geocities.com/~homosapian/
> >
> >
References: