RSS Bot Posted June 29, 2006 Share Posted June 29, 2006 I've done the first little test of some vertical scrolling techniques using a moving ANTIC JMP instruction, so far it works, i just need to alter the counter on the up cycle slightly, but one question.. how do I make the scrolling completely smooth, with no jumps? -Thom Source Code: t01vscrl.zip CODE<div class='codemain'> ; ; TEST PROGRAM TO TRY MY DISPLAY LIST THEORY. ; ; NOTES ; ; 5 INVADERS LINES OF 8 PIXELS HIGH ; 2 BLANK LINES BETWEEN EACH SEGMENT ; ; USING ANTIC MODE 2 TO SEE THE LINE DIVISIONS ; .INCLUDE atariequ.asm UPCTRL = $80 ; UP LINE COUNTER UPCTRH = $81 ; DNCTRL = $82 ; DOWN LINE COUNTER DNCTRH = $83 ; UPDOWN = $84 ; GOING UP OR DOWN? *=$2000 JMP START ; ; DISPLAY LIST ; DLIST .BYTE $70 ; 3 BLANK 8-LINES .BYTE $70 ; FOR THE .BYTE $70 ; BORDER UPJMP .BYTE $01,<UPBOT,>UPBOT UPBLNK .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE UPBOT .BYTE $00 ; 1 BLANK LINE .BYTE $55,$00,$49 ; BONUS DISPLAY .BYTE $40 ; 5 BLANK LINES .BYTE $52,$00,$50 ; .BYTE $20 ; 3 BLANK LINES .BYTE $52,$00,$51 ; .BYTE $20 ; .BYTE $52,$00,$52 ; .BYTE $20 ; .BYTE $52,$00,$53 ; .BYTE $20 ; .BYTE $52,$00,$54 ; DNJMP .BYTE $01,<DNTOP,>DNTOP ; JUMP INSTRUCTION FOR MIDDLE OF SCREEN DNTOP .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE .BYTE $00 ; 1 BLANK LINE DNBOT .BYTE $00 ; 1 BLANK LINE .BYTE $41,<DLIST,>DLIST ; JUMP BACK TO BEGINNING OF DLIST AT VBLANK ; ; MAIN PROGRAM ; START CLD SCTR LDA #<UPBOT ; SET INITIAL COUNTERS STA UPCTRL ; LDA #>UPBOT ; STA UPCTRH ; LDA #<DNTOP ; STA DNCTRL ; LDA #>DNTOP ; STA DNCTRH ; LDA #$01 ; STA UPDOWN ; SDMA LDA #$3D ; STA SDMCTL ; SET UP PLAYFIELD SDLS LDA #<DLIST ; SET UP DISPLAY LIST STA SDLSTL ; LDA #>DLIST ; STA SDLSTL+1 ; SVBI LDA #$06 ; IMMEDIATE VBI LDY #$00 ; LDX #$06 ; JSR SETVBV ; LOOP JMP LOOP ; ; VBI ROUTINE ; *=$0600 VBI TXA ; PUSH EVERYTHING ONTO STACK PHA ; TYA ; PHA ; LDA #67 STA COLOR2 LDA RTCLOK+2 ; GRAB REALTIME CLOCK VAL AND #$0 ; EIGHT VBI BNE VBDON ; SKIP IF THIS ISN'T OUR TIME. LDA #$00 ; ARE WE GOING UP OR DOWN? CMP UPDOWN ; BEQ GOUP ; GODOWN LDA #39 STA 712 DEC UPCTRL ; UPDATE COUNTERS FOR THE MOVE. INC DNCTRL ; LDA UPCTRL ; CLC ; ADC <UPJMP ; ADD THE LO BYTE OFFSET OF THE JMP INSTRUCTION STA UPJMP+1 ; UPDATE THE DLIST LDA DNCTRL ; CLC ; ADC <DNJMP ; AND AGAIN.... STA DNJMP+1 ; UPDATE THE DLIST LDA #$00 ; 124 LINES PASSED? CMP DNCTRL BEQ SETUP ; FLIP THE FLAG TO UP JMP VBDON GOUP LDA #23 STA 712 INC UPCTRL ; DEC DNCTRL ; LDA UPCTRL ; CLC ; ADC <UPJMP ; STA UPJMP+1 ; LDA DNCTRL ; CLC ; ADC <DNJMP ; STA DNJMP+1 ; LDA #$00 ; CMP UPCTRL ; BEQ SETDN ; JMP VBDON SETUP LDA #$00 ; SET FLAG TO UP STA UPDOWN ; JMP VBDON ; SETDN LDA #$01 ; SET FLAG TO DOWN STA UPDOWN ; JMP VBDON ; VBDON PLA ; TAKE EVERYTHING OFF OF STACK TAY ; PLA ; TAX ; JMP SYSVBV ; AND JUMP TO THE DEFERRED VBI VECTOR ; ; SCREEN MEMORY ; *=$4900 .SBYTE " () "; BONUS DISPLAY .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " *=$5000 .SBYTE " !! !! !! !! !! !! !! !! "; INVADERS LINE 1 .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " *=$5100 .SBYTE " @@ @@ @@ @@ @@ @@ @@ @@ "; INVADERS LINE 2 .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " *=$5200 .SBYTE " ## ## ## ## ## ## ## ## "; INVADERS LINE 3 .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " *=$5300 .SBYTE " $$ $$ $$ $$ $$ $$ $$ $$ "; INVADERS LINE 4 .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " *=$5400 .SBYTE " %% %% %% %% %% %% %% %% "; INVADERS LINE 5 .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " " .SBYTE " &nb http://www.atariage.com/forums/index.php?a...;showentry=1673 Link to comment Share on other sites More sharing options...
Recommended Posts