| |
pmprog Account closed
Registered: Nov 2005 Posts: 54 |
Sprite Multiplexing
Might seem a dumb question, but do you have to use an IRQ to multiplex sprites?
I've written a small multiplexor, but it's part of the game loop, checking D011/D012; but it only displays one lot of sprites, and to get the other set to show, I have to comment out the code for the first lot.
I don't think there's a reason I can't use an IRQ, but more curious on why my multiplexor doesn't work. |
|
| |
oziphantom
Registered: Oct 2014 Posts: 490 |
If you want to just check D012 , sure. just you have to make sure you can actually hit the value.
LDA #150
- CMP D012
BNE -
will only work if the code runs in the 63 clocks that 150 is valid.
You also need to be sure that another wait loop doesn't hit
$1XX where XX is the value you are comparing, as that will break your chain.
Put some lda #1,2...7 sta $d020 where your sprite code happens and make sure they fire where you think they do. |
| |
Mixer
Registered: Apr 2008 Posts: 452 |
You can write unrolled code, use delay loops or variable delay-routines, poll $d012 or use raster irq or timers to wait for a suitable moment to change sprite y positions. |
| |
pmprog Account closed
Registered: Nov 2005 Posts: 54 |
I know my code is hitting, because I also set the border colour when the multiplexor is active, and you can see them trigger. I might post some code when I get home. Maybe I've just overlooked something. |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
guess you need to reset the first lot of sprites after the 2nd lot was displayed.
so
wait raster1
setup lot1 to show
lot1
wait raster2
setup lot2 to show
lot2
and no you dont need an irq to multiplex. at the end of the day the irq does the same thing, just in a more flexible way. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
Forgive me if this is obvious, but you know the sprites have to be set up for the part of the screen currently being drawn, right?
Might be an idea to (eg) set $d021 to green after you set up the first set of sprites, then set it to red when you set up the second set of sprites.
If you don't have a green background for the area that should contain the first set of sprites, and a red background for the area that should contain the second set of sprites, then there's your problem. |
| |
pmprog Account closed
Registered: Nov 2005 Posts: 54 |
Right, okay, my question wasn't dumb, however, I was/am!
It turns out in my infinite wisdom, to forget the jmp at the end of my "config player sprites" code, so it was then rolling into the "config tiger sprites" code... Hence why I didn't see the player sprites.
So all fixed now. Thanks for everyones help :) |