Hi Piero!
>>It repositions _both_ sprites in the same scannline!
>How do you do that?
It works pretty straightforward. Basically, as one would
expect, I just do
STA RESP0
STA RESP1
in one scannline.
With the second RESP, I loose one pixel, so using the
same HMOV values for both sprites would produce a one
pixel gap.
You lose 15 cycles every iteration in the timing loop
before the RESPs, but you have 16 different HMOV values,
i.e. a one pixel shift is just possible!
So I worked out two tables, that are shifted by one
pixel.
Here's a little example code:
LDA movetab1,X
sta HMP0
LDA movetab2,X
sta HMP1
AND #$0F
TAY
RespLoop
dey
bpl RespLoop
sta RESP0
sta RESP1
The tables look like this:
movetab1
.byte $6X,$5X,$4X,$3X,$2X,$1X,$0X,$FX
.byte $EX,$DX,$CX,$BX,$AX,$9X,$8X
repeat with X+1;
repeat with X+2;
...
movetab2
.byte $7X,$6X,$5X,$4X,$3X,$2X,$1X,$0X
.byte $FX,$EX,$DX,$CX,$BX,$AX,$9X
repeat with X+1;
repeat with X+2;
...
>Are there any restrictions?
Well, there's some troubles at the left/right edges. I
have yet to determine the maximum range where the big
ships can be freely moved. And I've yet to find out the
ranges where RESPX is working properly.
(I think there's a table somewhere in the archive :-))
Another restriction is, that all you can do with this
technique is gaps with 0-2 pixels between both sprites.
This is working perfect for my game, but if your
intention would be total free positioning of both
sprites, the solution would be... uhm... complex. I
think it is possible, but...
Greetings,
Manuel
----------------------------------------------------------------------------------------------
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/