User Tools

Site Tools


base:4_ways_scroll

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

base/4_ways_scroll.txt · Last modified: 2015-04-17 04:30 (external edit)