RSS Bot Posted March 10, 2007 Share Posted March 10, 2007 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 More sharing options...
Recommended Posts