base:4_ways_scroll
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:4_ways_scroll [2015-04-17 04:30] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | 4 Way Scroll by Malcolm Bamber | ||
+ | [[http:// | ||
+ | |||
+ | 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 by 127.0.0.1