|
Subject: Re: [stella] single digit scoring... From: Christopher Tumber <christophertumber@xxxxxxxxxx> Date: Sun, 24 Aug 2003 20:39:46 -0400 |
Erik wrote:
> LDY #5
>Loop
> STA WSYNC
> LDA (TempPointer), Y
> STA GRP0
> DEY
> BNE Loop
I wrote:
> LDA p0score ;accumulator = score
> ROL ;accumulator = score * 2
> ROL ;accumulator = score * 4
> ADC p0score ;accumulator = (score * 4) + score = score * 5
> TAY
> LDA Score0Graphic,y
> STA GRP0
Either of these is a perfectly valid way to go, it all really depends upon your allocation of resources.
Erik's method is good if you're using Y as a general scanline counter anyway and you can spare the two bytes RAM to make TempPointer. My version saves you the RAM, but doesn't share the Y register well. Erik's is also going to be quicker in the Kernal, but overall a little slower given the extra overhead pre-calculating TempPointer. This is probably getting ahead of things, but these are the kind of decisions you eventually have to make once you start running out of RAM/registers/cycles....
And an in between method might be:
Setup Everything during Vertical Blank/Overscan:
LDA p0score ;accumulator = score
ROL ;accumulator = score * 2
ROL ;accumulator = score * 4
ADC p0score ;accumulator = (score * 4) + score = score * 5
STA TempOffsetValue
In the Kernal:
LDX #5
Loop
STA WSYNC
LDY TempOffsetValue
LDA Score0Graphic,y
STA GRP0
DEX
BNE Loop
- Fastest in the Kernal and only uses 1 byte RAM but uses up both X and Y registers....
Chris...
----------------------------------------------------------------------------------------------
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] single digit scoring.., Erik Mooney | Thread | Re: [stella] single digit scoring.., Erik Mooney |
| Re: [stella] single digit scoring.., Christopher Tumber | Date | Re: [stella] single digit scoring.., Erik Mooney |
| Month |