Jump to content
IGNORED

EricBall's Tech Projects - vertical motion


RSS Bot

Recommended Posts

The starfield now move up and down, following the sine wave, though in 8 line jumps. Smooth scrolling is next, but that requires some display list & display list list magic.

 

I've also started using a 6502 simulator for general debugging. Since a lot of 7800 code is data movement, it's reasonable to use a general 6502 simulator. I caught a couple of bugs this way. The biggest problem is the built-in assembler isn't DASM compatible and isn't as capable.

 

I've also made some major improvements to the SINE routine:

CODE

SINE LDX #3 ; y[n+1] = y[n] - y[n-1] - y[n]/64K + y[n]

SEC

3$ LDA STARY,X

SBC STARYP,X

STA STARYP,X

DEX

BPL 3$

LDA STARY+2 ; rounding

EOR STARY ; reverse if negative

EOR #$80 ; reverse for subtract

ASL ; put in Carry

LDA STARYP+3

SBC STARY+1

STA STARYP+3

LDX #2

4$ LDA STARYP,X

SBC STARY ; sign extended

STA STARYP,X

DEX

BPL 4$

LDX #3

CLC

5$ LDA STARY,X

TAY

ADC STARYP,X

STA STARY,X

STY STARYP,X

DEX

BPL 5$

 

Some of the changes are because StarY is 9.16 bits, so the MSByte is either 0 or -1 ($FF). This means the -y[n]/64K can use that byte directly as a sign extend rather than having two branches. The rounding calculation is also much simpler, again no branching required. I also realized I didn't need an extra temporary variable.

 

Oh, I've also decreased the number of stars to those less than magnitude 5. I still can't pick out constellations though. FoV = 61 degrees horizontal, 42 degrees vertical which is fairly wide.

 

 

ep070309.zip

 

http://www.atariage.com/forums/index.php?a...;showentry=3004

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...