Subject: Re: [stella] Player data loading...semi newbie From: Thomas Jentzsch <tjentzsch@xxxxxx> Date: Wed, 17 Oct 2001 21:38:43 +0100 |
Ben Larson wrote: > Anyway, like I said, I don't really know what the > standard player graphic-loading methods are. Right > now I'm just wondering if this is a viable (albeit > wasteful) method. I think it is, but I need some > insight... Your idea will work and should be very fast, but it wastes a lot of ROM to store the data with those additional zero bytes needed. The fastest (non illegal opcode) version I know, looks like this: TYA ;2 Y contains the kernel line counter (i.E. 191..0) SEC ;2 if carry is already known, this can be removed SBC SpriteStart ;3 contains the line where the graphic starts+1 ADC #SPRITEHEIGHT ;2 assuming the height is constant (i.E. 6) BCC .skipDraw ;2/3 LDA (GfxPtr),Y ;5 STA GRPx ;3 .skipDraw: ; = 19/12 (or 17/10) If you are willing to use an illegal opcode, the two SEC cycles can be totally removed: LDA #SPRITEHEIGHT-1 ;2 assuming the height is constant (i.E. 6) DCP SpriteEnd ;5 illegal opcode, see below BCC .skipDraw ;2/3 LDA (GfxPtr),Y ;5 STA GRPx ;3 .skipDraw: ; = 17/10 (DCP SpriteEnd == DEC SpriteEnd, CMP SpriteEnd) So when your sprite is 6 pixels tall and shall start at line 45, then you initialize SpriteEnd with 50 (45+6-1). With each line, SpriteEnd will be decreased. The result of the following compare will be: 50..6: 5 (SPRITEHEIGHT-1) is smaller than SpriteEnd -> carry = 0 -> .skipDraw 5..0: 5 is bigger than/equal to SpriteEnd -> carry = 1 -> draw! 255..: 5 is smaller than SpriteEnd -> carry = 0 -> .skipDraw In both cases, GFxPtr has to point at the data where the graphics are stored, minus the Y value of the line where the player shall be displayed. I'm quite sure, that's (in most cases) the optimal way, but someone may prove that I'm wrong. Have fun! Thomas _______________________________________________________ Thomas Jentzsch | *** Every bit is sacred ! *** tjentzsch at web dot de | - Archives (includes files) at http://www.biglist.com/lists/stella/archives/ Unsub & more at http://www.biglist.com/lists/stella/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[stella] Player data loading...semi, Ben Larson | Thread | Re: [stella] Player data loading..., Erik Mooney |
Re: [stella] Player data loading..., Erik Mooney | Date | Re: [stella] Player data loading..., Chris Wilkson |
Month |