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 |