|
Subject: [stella] Qb: Horizontal Positioning of sprites From: "Andrew Davie" <adavie@xxxxxxxxxxxxx> Date: Mon, 12 Feb 2001 01:50:17 +1100 |
I had a bit of fun with the horizontal positioning. I'm sure everyone
stumbles on this one.... The following routine works for me - it correctly
positions (relative to my background) two sprites described by pixel
position "PlayerX". Bin attached shows it in action. Can anyone improve
the initial "divide by 15" for me? I was thinking something like a divide
by 16, and then an adjust... there's a definite pattern. How are others
doing this calculation efficiently (that is, converting pixel pos to loop
counters).
Anyway, here's my current horizontal position routine (which works)...
----------------------------------------------
PositionSprites
; Set the horizontal position of the two sprites
ldx #1
PosSP
ldy #2 ; fudged start offset
; Count 15-pixel loops
sec
lda PlayerX,x ; absolute X pixel
CountX sbc #15
iny
bcs CountX
; Use remainder for fine adjustment
eor #15
sbc #7 ; -8 to +7
asl
asl
asl
asl
sta HMCLR ; clear any previous movement
sta HMP0,x ; fine movement
sta WSYNC
Jiggle dey
bpl Jiggle
nop
sta RESP0,x
sta WSYNC
sta HMOVE
dex
bpl PosSP
; Now fine-adjust to make it sit nicely on my cubes...
jsr Ret
jsr Ret ; at least... 24 cycle mystery time
lda #%01000000
sta HMP0
sta HMP1
sta WSYNC
sta HMOVE
Ret rts
----------------------------------------------
This uses, essentially, 3 scan lines.... is there a better way?
Thanks
A
--
_ _ _| _ _ _| _ * _ _ ,
(_|| )(_|( (/_\/\/ (_|(_|\/(_(/_ ,~' L_|\
,-' \
see my Museum of Soviet Calculators at ( \
http://www.taswegian.com/MOSCOW/soviet.html \ __ /
L,~' "\__/
@--> v
Attachment:
push.bin
Description: Binary data
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [stella] Horizontal Positioning of , Andrew Davie | Thread | [stella] illegal 6502, Andrew Davie |
| [stella] Horizontal Positioning of , Andrew Davie | Date | Re: [stella] zero-read, Eckhard Stolberg |
| Month |