|
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 |