Subject: RE: [stella] New demo, skipdraw with isb|
From: "Aaron" <stella-receiver@xxxxxxxxxxxxxxxxx>
Date: Fri, 12 Nov 2004 15:23:25 -0600 (CST)
Dennis Debro said: > Could you supply the source too? I'd like to see how this benefits your > situation. Sure. > Are your sprites not stored upside down in ROM? No, they're upside down, though they could be made right side up without much trouble I think... The code I used to actually /draw/ the sprites is mostly independent of what I'm talking about. But I've used the skipdraw-with-isb for related stuff... The source will explain it better than I can (which isn't saying much). >> The nice thing is that it leaves the a register with useful information >> that you can use to draw the sprite. In the dcp version you need to >> reload the value out of SpriteEnd, > > Huh? Wouldn't SpriteEnd been an offset for your sprite? Maybe I didn't say that right... here's the relevant code: ldy sprite_list_index lda sprite_list_span,y sta REFP1 and #%00000111 sec isb sprite_list_section,y ;other stuff... bcs .set_sprite ;more unrelated stuff... .set_sprite: tax lda x6_table,x adc sprite_list_lsb,y sta sp1ptr Now, instead of a constant SPRITEHEIGHT, I have a value stored in sprite_list_span,y - so the height can change for every sprite (it doesn't in the demo though). I also used bit 3 of this value for the reflection... but you can probably ignore that. sprite_list_section,y is equivalent to SpriteEnd. Anyway, we get down to .set_sprite and it turns out the quantity (sprite_list_span,y - sprite_list_section,y) is useful. The version of skipdraw with dcp just throws that result away since dcp is based on cmp, see?
Description: Zip archive