|
Subject: [stella] Delightful horizontal position code... From: "Andrew Davie" <adavie@xxxxxxxxxxxxx> Date: Mon, 12 Feb 2001 17:44:38 +1100 |
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 :)
Enjoy!
----------------------------------------------------
PositionSprites
; Set the horizontal position of the two sprites, based upon their
coordinates
sta HMCLR ; clear any previous movement
ldx #1 ; sprite index
PosSP
lda PlayerX,x
lsr
lsr
lsr
lsr
tay ; /16
sta PS_temp
lda PlayerX,x
and #15
clc
adc PS_temp
cmp #15
tya
adc #0
tay
sty PS_temp
iny
iny
iny
lda PlayerX,x
and #15
clc
adc PS_temp ; calculate the remainder for the
/15
; Use remainder for fine adjustment
eor #15
sbc #7 ; -8 to +7
asl
asl
asl
asl
sta HMP0,x ; fine movement
sta WSYNC
Jiggle dey
bpl Jiggle
sta RESP0,x
dex
bpl PosSP
sta WSYNC
sta HMOVE
rts
----------------------------------------------------
--
_ _ _| _ _ _| _ * _ _ ,
(_|| )(_|( (/_\/\/ (_|(_|\/(_(/_ ,~' L_|\
,-' \
see my Museum of Soviet Calculators at ( \
http://www.taswegian.com/MOSCOW/soviet.html \ __ /
L,~' "\__/
@--> v
-
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] Lode Runner, number of lev, Glenn Saunders | Thread | Re: [stella] Delightful horizontal , Thomas Jentzsch |
| Re: [stella] Jumpman gets a go!, Andrew Davie | Date | Re: [stella] Jumpman gets a go!, MickeyKnox667 |
| Month |