Re: A83: Re: Clearing & xoring rectangles
[Prev][Next][Index][Thread]
Re: A83: Re: Clearing & xoring rectangles
Perhaps a cheap-ass version of David routine...let me see:
ld hl,(10<<8)+10 ; p1 = 10,10
ld de,(30<<8)+30 ; p2 = 30,30
ld d,STYLE ; 0 = off, 1 = on, 2 = xor
ld bc,hl ; Don't know whether these are valid, but you get my meaning.
ld l,e
Loop:
call _iline
dec d
dec b
ld a,b
cp h-1
jr done
jp loop
done:
Something like that should help.
Later,
James Matthews (matthews@tkb.att.ne.jp)
ICQ: 7413754
http://home.att.ne.jp/gold/tomcat21/index.html
http://library.advanced.org/18242/
----------
> From: Jkhum98@aol.com
> To: assembly-83@lists.ticalc.org
> Subject: Re: A83: Re: Clearing & xoring rectangles
> Date: Monday, October 26, 1998 7:34 AM
>
>
> That was put very nicely, but I think he was wanting to know how to alter the
> pixels inside of a rectangle, Every pixel, not just the rim of it... Hmm,
> could you still port that optimized routine you had, to the 83...? That would
> be very helpful... =)
> --Jason K.
>
> In a message dated 10/25/98 4:52:05 PM, electrum@tfs.net writes:
>
> >The easiest, smallest, and of course, slowest way is to use the _iLine
> >rom call. STYLE is the type of line you want to draw (0 = off, 1 = on,
> >2 = XOR/reverse). I am assuming here that _iLine doesn't destroy any
> >important registers (meaning anything other than AF). If it does, add
> >a few pushes and pops:
> >
> >
> >Box: ; IN: p1 = b,c p2 = d,e h = style
> > ld l,d ; save p2x
> > ld d,b ; left side
> > call _iLine ; *draw line
> > ld d,l ; restore p2x
> > ld l,e ; save p2y
> > ld e,c ; top side
> > call _iLine ; *draw line
> > ld e,l ; restore p2y
> > ld l,b ; save p1x
> > ld b,d ; right side
> > call _iLine ; *draw line
> > ld b,l ; restore p1x
> > ld c,e ; bottom side
> > call _iLine ; *draw line
> >; if you call this as a routine, add a RET here
> >
> >What this does is simple. It uses the rom's line drawing routine four
> >times to draw the four sides of the box. The L register is used to save
> >the coord that is changed for each line.
> >
> >This will work fine if you only need to draw a few boxes at a time,
> >like for a title screen or something. But this is way too slow to be
> >used in the middle of a game as a general purpose box drawing routine.
> >The reason for this is the use of _iLine. First, it's a rom call. Rom
> >calls are slow, because the correct rom page must be loaded before
> >the actual routine is called. The second reason is that the routine can
> >set, reset, or xor pixels. Being a rom routine, it does not do self-
> >modifying code to change the actual pixel setting instruction (between
> >OR, AND, XOR), and I would doubt that they have a separate routine for
> >each type of line. The next is that _iLine is a general purpose line
> >drawing routine, and it is not specifically designed to just draw hori-
> >zontal or vertical lines which a fast box drawing routine needs. These
> >types of lines can >usually be drawn at least an order of magnitude faster
> >than a normal line, depending the algorithm used for drawing it. Jimmy
> >Mardell's has an excellent implementation of Bresenham's algorith, and he
> >worked the inner loop down to between 98.5 and 106.75 t's. I would doubt
> >that the rom routine is that well coded, making it even more important to
> >use a special horizontal and vertical algorithm.
> >
> >I wrote a fairly decent box drawing routine a while back. If someone wants
> >it, email me (not the list) and I'll port it to the 83. Sorry about the
> >rant, but I'm kind of a fanatic when it comes to fast graphics code. ;-)
> >
> >TANSTATFC!
> >
> >-----Original Message-----
> >From: Henry Davidowich <rdaneelolivaw@hotmail.com>
> >To: assembly-83@lists.ticalc.org <assembly-83@lists.ticalc.org>
> >Date: Saturday, October 24, 1998 11:38 PM
> >Subject: A83: Clearing & xoring rectangles
> >
> >>
> >>OK, lets say I have the top left and bottom right coordinates of a
> >>rectangle. I want to reset every pixel in that rectangle; how? I want
> >>to xor every pixel in that rectangle; how? Thanks!
> >>
> >>______________________________________________________
> >>Get Your Private, Free Email at http://www.hotmail.com