4 Way Scroll by Malcolm Bamber [[http://www.dark-well.pwp.blueyonder.co.uk/]] How I scrolled a 2 by 2 tiled map I hope it is a help to some one trying to scroll the screen This first part here will show you what the irq is doing when called __SCROLL UP__ IF YSCROLL=3 ADD ONE TO UDFLAG IF UDFLAG NOT 1 OR 2 THEN THEN QUIT OUT OF IRQ IF UDFLAG=1 THEN SO MOVE MAP POINTER UP ONE LINE IF WE CAN IF UDFLAG=2 THEN COPY SCREEN DOWN ONE LINE SET $D011 TO 3 SET YSCROLL TO 5 FOR NEXT TIME IRQ IS CALLED IF YSCROLL=5 SET $D011 TO 5 SET YSCROLL TO 7 FOR NEXT TIME IRQ IS CALLED DRAW TILE AT THE TOP OF THE SCREEN IF UDFLAG=1 THEN DRAW BOTTOM PART OF TILE IF UDFLAG=2 THEN DRAW TOP PART OF TILE IF YSCROLL=7 SET $D011 TO 7 SET YSCROLL TO 1 FOR NEXT TIME IRQ IS CALLED WE SCROLL EACH WAY TWO TIMES IF UDFLAG=1 THEN COPY EVEN COLOURS LINES TO SCREEN COLOUR MAP FROM SPARE COLOUR MAP AND SWAP SCREEN IF UDFLAG=1 THEN COPY ODD COLOURS LINES TO SCREEN COLOUR MAP FROM SPARE COLOUR MAP AND SWAP SCREEN IF YSCROLL=1 SET YSCROLL TO 3 FOR NEXT TIME IRQ IS CALLED __SCROLL DOWN__ IF YSCROLL=4 ADD ONE TO UDFLAG IF UDFLAG NOT 1 OR 2 THEN QUIT OUT OF IRQ IF UDFLAG=1 THEN COPY SCREEN AND COLOUR UP ONE LINE IF UDFLAG=2 THEN SO MOVE MAP POINTER DOWN ONE LINE IF WE CAN SET $D011 TO 4 SET YSCROLL TO 2 FOR NEXT TIME IRQ IS CALLED IF YSCROLL=2 IF UDFLAG=1 THEN DRAW TOP PART OF TILE AT BOTTOM OF SCREEN IF UDFLAG=2 THEN DRAW BOTTOM PART OF TILE AT BOTTOM OF SCREEN SET $D011 TO 2 SET YSCROLL TO 0 FOR NEXT TIME IRQ IS CALLED IF YSCROLL=0 SET $D011 TO 0 SET YSCROLL TO 6 NEXT TIME IRQ IS CALLED IF UDFLAG=1 THEN COPY COLOUR ODD LINE TO SCREEN COLOUR MAP AND SWAP SCREEN IF UDFLAG=2 THEN COPE COLOUR EVEN LINE TO SCREEN COLOUR MAP AND SWAP SCREEN IF YSCROLL=6 SET YSCROLL TO 4 FOR NEXT TIME IRQ IS CALLED __SCROLL LEFT__ IF xscroll=3 ADD ONE TO LRFLAG SET XSCROLL TO 5 FOR NEXT TIME IRQ IS CALLED SET $D016 TO 3 FOR SMOOTH SCROLL DOT POSITION IF LRFLAG NOT 1 OR 2 THEN THEN QUIT OUT OF IRQ IF LRFLAG=1 THEN SO MOVE MAP POINTER LEFT ONE POSITION IF WE CAN IF LRFLAG=2 THEN COPY SCREEN RIGHT ONE POSITION IF xscroll=5 SET XSCROLL TO 7 FOR NEXT TIME IRQ IS CALLED SET $D016 TO 5 FOR SMOOTH SCROLL DOT POSITION DRAW A SIDE OF THE TILE ON THE LEFT SIDE OF THE SCREEN IF xscroll=7 SET XSCROLL TO 1 FOR NEXT TIME IRQ IS CALLED SET $D016 TO 7 FOR SMOOTH SCROLL DOT POSITION IF LRFLAG=1 THEN COPY COLOUR EVEN POSIION TO SCREEN COLOUR MAP AND SWAP SCREEN IF LRFLAG=2 THEN COPY COLOUR ODD POSITION TO SCREEN COLOUR MAP AND SWAP SCREEN IF xscroll=1 SET XSCROLL TO 3 FOR NEXT TIME IRQ IS CALLED __SCROLL RIGHT__ IF xscroll=4 ADD ONE TO LRFLAG IF LRFLAG NOT 1 OR 2 THEN QUIT OUT IRQ IF LRFLAG=1 THEN SO MOVE MAP POINTER RIGHT ONE POSITION IF WE CAN IF LRFLAG=2 THEN COPY SCREEN LEFT ONE POSITION SET XSCROLL TO 0 FOR NEXT TIME IRQ IS CALLED SET $D016 TO 0 FOR SMOOTH SCROLL DOT POSITION IF xscroll=2 DRAW LEFT OR RIGHT SIDE OF TILE TO RIGHT SIDE OF SCREEN SET XSCROLL TO 0 FOR NEXT TIME IRQ IS CALLED SET $D016 TO 2 FOR SMOOTH SCROLL DOT POSITION IF xscroll=0 SET XSCROLL TO 6 FOR NEXT TIME IRQ IS CALLED SET $D016 TO 0 FOR SMOOTH SCROLL DOT POSITION IF LRFLAG=1 THEN COPY COLOUR ODD POSIION TO SCREEN COLOUR MAP AND SWAP SCREEN IF LRFLAG=2 THEN COPY COLOUR EVEN POSIION TO SCREEN COLOUR MAP AND SWAP SCREEN IF xscroll=6 SET XSCROLL TO 4 FOR NEXT TIME IRQ IS CALLED See Part 1 & 2 For Source Code Part1 and Part2 Needs To Be Run Together