Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Sprite Multiplexing
2017-06-18 12:57
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.
2017-06-18 13:11
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.
2017-06-18 13:27
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.
2017-06-18 13:42
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.
2017-06-18 14:01
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.
2017-06-18 16:00
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.
2017-06-18 16:57
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 :)
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Flashback
Alakran_64
rambo/Therapy/ Resou..
Matt
Hein
LDX#40
Guests online: 103
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 No Listen  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Rainbow Connection  (9.5)
7 Dawnfall V1.1  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top Original Suppliers
1 Derbyshire Ram  (9.7)
2 Fungus  (9.3)
3 Black Beard  (9.2)
4 Baracuda  (9.2)
5 hedning  (9.1)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.036 sec.