Subject: Re: [stella] Delightful horizontal position code... From: Thomas Jentzsch <tjentzsch@xxxxxx> Date: Mon, 12 Feb 2001 09:15:26 +0100 |
At 12.02.2001, 07:44, Andrew Davie wrote: > I did a bit of work on my sprite horizontal position code, and am quite > delighted with this contribution... it figures out and positions two sprites > horizontally, based on their pixel position (X) held in PlayerX[2]. I > analysed the differences between dividing by 16 (4 shifts) and dividing by > 15 (repeated subtractions) and wrote a CONSTANT-TIME algorithm to do the > adjustment. That is, rather than multiple subtractions, this code does some > shifting and additions (constant time) to figure the player positions. It > works, and is quickish - but best of all... constant execution time! > This is the sort of trick code I like doing :) I'm using a different constant timed routine, which i found somewhere. I think it's an old standard routine which is based on the same idea that you have reinvented again. (i changed the code a little bit to get minimum average timing, the worst case time is slightly increased) CalcXPos: tay ; 2 lsr ; 2 lsr ; 2 lsr ; 2 lsr ; 2 sta tmpVar ; 3 = 13 tya ; 2 and #$0f ; 2 clc ; 2 adc tmpVar ; 3 cmp #$0f ; 2 bcc .nextPos ; 2³ sbc #$0f ; 2 inc tmpVar ; 5 .nextPos: ; = 14/20 eor #%00000111 ; 2 asl ; 2 asl ; 2 asl ; 2 asl ; 2 ldy tmpVar ; 3 rts ; 6 = 19 ... lda xpos jsr CalcXPos sta WSYNC sta HMPx ... ; some extra cycles needed here .wait: dey bpl .wait sta RESPx sta WSYNC sta HMOVE I think it's a little bit more compact than your approach. Have fun! Thomas _______________________________________________________ Thomas Jentzsch | *** Every bit is sacred ! *** tjentzsch at web dot de | - Archives (includes files) at http://www.biglist.com/lists/stella/archives/ Unsub & more at http://www.biglist.com/lists/stella/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[stella] Delightful horizontal posi, Andrew Davie | Thread | Re: [stella] Delightful horizontal , Andrew Davie |
[stella] Fw: Hex to BCD routine, Andrew Davie | Date | [stella] single line kernels and ho, Glenn Saunders |
Month |