Subject: Re: [stella] Optimizing Qb (was: Horizontal Positioning once more...) From: Manuel Polik <cybergoth@xxxxxxxx> Date: Wed, 08 Aug 2001 13:17:45 +0200 |
Thomas Jentzsch schrieb: > > Here's my idea: > > ---------------------------------------- > > STA HMP0,x > > INY ; Waste 5 cycles, 1 Byte > > STA WSYNC > > INY ; Waste 7(!) cycles, 1 Byte > > BIT 0 ; Waste 3 cycles, 2 Byte > > ; + sum: 15 cycles, _4_ Byte!!! > > PosDelay dey > > bpl PosDelay > > STA RESP0,x > > ---------------------------------------- > > > > Apart from saving a byte, it prevents you from possibly losing another > > two byte to the stack... > > (Avoiding that was my original intention, in Gunfight there's _never_ a > > subroutine call within a subroutine call within a subroutine :-)) > Yes, that should work, but sometimes you might waste a hole scanline when your first additional dey causes WSYNC to start to late. Actually I had to force the routine to lose this scanline _always_, since otherwise I didn't get a stable picture :-) The STA WSYNC was coming late on unpredictable occassions, since I've two different entry points into the positioning routine, one adding #$08, one adding #$09, then there's all this branches in it... The mess looks like this now: ----------------------------- PosPlayer2 ; For HMOVE on cycle 74 CLC ADC #$08 PosPlayer1 ; For normal HMOVE CLC ADC #$01 CMP #$A0 BCC NH2 SBC #$A0 NH2 TAY LSR LSR LSR LSR STA tempVar1 TYA AND #15 CLC ADC tempVar1 LDY tempVar1 CMP #15 BCC NH SBC #15 INY NH STA WSYNC ; Force the line to end EOR #7 ASL ASL ASL ASL STA HMP0,x INY ; Waste 5 cycles, 1 Byte STA WSYNC INY ; Waste 7(!) cycles, 1 Byte BIT 0 ; Waste 3 cycles, 2 Byte PosDelay DEY BPL PosDelay STA RESP0,x RTS In my case I can fortunately waste all these cycles/scanlines without any real drawbacks :-) > You might have a look at this: > ---------------------------------------- > sta HMP0,x > sta WSYNC > > iny ; waste 7 cylces, 1 byte > iny ; waste 7 cylces, 1 byte > > Jiggle dey > bpl Jiggle > sta.w RESP0,x ; waste 1 cylce, 1 byte > ; sum = 15 cylces, 3 bytes > ---------------------------------------- > One more byte saved and the WSYNC problem is gone too :) For some reasons this causes complete chaos... Maybe the .w cycle is gained right _after_ it was needed? Greetings, Manuel - 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 -> |
---|---|---|
Re: [stella] Optimizing Qb (was: Ho, Thomas Jentzsch | Thread | Re: [stella] Optimizing Qb (was: Ho, Thomas Jentzsch |
Re: [stella] Optimizing Qb (was: Ho, Thomas Jentzsch | Date | Re: [stella] Optimizing Qb (was: Ho, Thomas Jentzsch |
Month |