Subject: Re: [stella] Odd Occurance in Program From: Erik Eid <eeid@xxxxxxxxx> Date: Thu, 9 Jan 2003 18:21:01 -0500 |
I've attached some cycle counts to the code. Hopefully the more expert programmers will swoop in and correct me. :) Your comments indicate that the extra pixel from missle graphics (indicated by $82) is disabled. I'll assume that for this first section. I will also assume that PlusFive does not cross a page boundary and that neither does "BEQ Nope." LDX #59 ;Used for debugging when X equates to this high, the kernel crashes. If below 50 the kernel functions fine. InCardLoop ;Loop 11 times, drawing card symbol and white box. STA WSYNC LDA PlusFive,X ; [0] +4, +5 if across a page boundary STA GRP0 ; [4] +3 LDA #%11100000 ; [7] +2 STA PF2 ; [9] +3 LDA $82 ; [12] +3 ;$82 is enabled if the symbol sprite requires an extra pixel of data from the missle graphics. I have disabled this for testing. BEQ Nope ; [15] +3 if taken (assumed), +4 if across boundary LDA PlusFive,X STA ENAM0 JMP Laa Nope ;Delay to make all the symbols line up correctly nop ; [18] +2 nop ; [20] +2 nop ; [22] +2 nop ; [24] +2 Laa nop ; [26] +2 nop ; [28] +2 nop ; [30] +2 nop ; [32] +2 LDA #%00110000 ; [34] +2 STA PF0 ; [36] +3 STA RESP0 ; [39] +3 ;Position Player graphic near middle of screen STA RESM0 ; [42] +3 LDA #0 ; [45] +2 STA PF2 ; [47] +3 STA PF0 ; [50] +3 STA ENAM0 ; [53] +3 DEY ; [56] +2 ;Y contains scan lines remaining on screen. DEX ; [58] +2 ;X contains card offset index DEC $84 ; [60] +5 ;$84 contains how many scan lines remaining for this card BNE InCardLoop ; [65] +2 if not taken, +3 or 4 if taken This results in 67 cycles if no page boundaries are crossed by indexed addressing or branches. Worst case, it's 71 cycles. What about if you do enable the missile? LDX #59 ;Used for debugging when X equates to this high, the kernel crashes. If below 50 the kernel functions fine. InCardLoop ;Loop 11 times, drawing card symbol and white box. STA WSYNC LDA PlusFive,X ; [0] +4, +5 if across a page boundary STA GRP0 ; [4] +3 LDA #%11100000 ; [7] +2 STA PF2 ; [9] +3 LDA $82 ; [12] +3 ;$82 is enabled if the symbol sprite requires an extra pixel of data from the missle graphics. I have disabled this for testing. BEQ Nope ; [15] +2 LDA PlusFive,X ; [17] +4, +5 if across a page boundary STA ENAM0 ; [21] +3 JMP Laa ; [24] +3 Nope ;Delay to make all the symbols line up correctly nop nop nop nop Laa nop ; [27] +2 nop ; [29] +2 nop ; [31] +2 nop ; [33] +2 LDA #%00110000 ; [35] +2 STA PF0 ; [37] +3 STA RESP0 ; [41] +3 ;Position Player graphic near middle of screen STA RESM0 ; [43] +3 LDA #0 ; [46] +2 STA PF2 ; [48] +3 STA PF0 ; [51] +3 STA ENAM0 ; [54] +3 DEY ; [57] +2 ;Y contains scan lines remaining on screen. DEX ; [59] +2 ;X contains card offset index DEC $84 ; [61] +5 ;$84 contains how many scan lines remaining for this card BNE InCardLoop ; [66] +2 if not taken, +3 or 4 if taken It's 68 cycles best-case and 72 worst-case. However, do note that using the missile is a bit more costly than not using it. Given this, I can't find something that screams out "I'm the problem." Sorry! ---------------------------------------------------------------------------------------------- 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] Odd Occurance in Progr, Chris Larkin | Thread | Re: [stella] Odd Occurance in Progr, Chris Larkin |
Re: [stella] Fu Kung! v0.03, Fabrizio Zavagli | Date | Re: [stella] Odd Occurance in Progr, Chris Larkin |
Month |