'LAST DRAWN MAP POSITION IN CELL COLUMNS GLOBAL MAPX MAPX=-32 'PLAYER POSITION IN PIXELS POSX=80 POSY=64 'CAMERA POSITION IN PIXELS CAMX=0 CAMY=0 'PLAYER SCREEN BORDER 'FOR SCROLLING BORDER=40 'GET MAP SIZE IN PIXELS MAPWIDTH=PEEK(ROM(3)+2)*8 MAPHEIGHT=PEEK(ROM(3)+3)*8 GAMEPAD 1 DO 'MOVE PLAYER IF LEFT(0) THEN POSX=POSX-1 IF RIGHT(0) THEN POSX=POSX+1 IF UP(0) THEN POSY=POSY-1 IF DOWN(0) THEN POSY=POSY+1 'ADJUST CAMERA IF POSX-BORDERCAMX+160 THEN CAMX=MIN(POSX+BORDER+8,MAPWIDTH)-160 IF POSY-BORDERCAMY+128 THEN CAMY=MIN(POSY+BORDER+8,MAPHEIGHT)-128 CALL DRAWMAP(CAMX,CAMY) SPRITE 0,POSX-CAMX,POSY-CAMY,1 SCROLL 0,CAMX,CAMY WAIT VBL LOOP 'X,Y: CAMERA POSITION IN PIXELS SUB DRAWMAP(X,Y) 'GET CELL COLUMN MX=X\8 'COMPARE NEW POSITION TO LAST IF ABS(MX-MAPX)>1 THEN 'DRAW COMPLETE SCREEN 'IF SCROLL DISTANCE IS BIG BG COPY MX,0,21,32 TO 0,0 ELSE IF MX>MAPX THEN 'DRAW ONLY ONE COLUMN ON RIGHT SIDE 'WHEN SCROLLING TO RIGHT BG COPY MX+20,0,1,32 TO MX+20,0 ELSE IF MX