From 1ca8aca3588ac1d6ee056b5795cb262eb8410a9b Mon Sep 17 00:00:00 2001
From: sparky4 <sparky4@cock.li>
Date: Sat, 22 Nov 2014 10:25:54 -0600
Subject: [PATCH] 	modified:   16/modex16/scroll.c 	modified:  
 16/modex16/scroll.exe added edge triggers~

---
 16/modex16/scroll.c   |  88 +++++++++++++++++++++++++++---------------
 16/modex16/scroll.exe | Bin 18566 -> 18766 bytes
 2 files changed, 57 insertions(+), 31 deletions(-)

diff --git a/16/modex16/scroll.c b/16/modex16/scroll.c
index 8a960eee..838ef4bf 100644
--- a/16/modex16/scroll.c
+++ b/16/modex16/scroll.c
@@ -26,8 +26,10 @@ typedef struct {
 typedef struct {
 	map_t *map;
 	page_t *page;
-	int tx; //???? appears to be the tile position on the viewable screen map
-	int ty; //???? appears to be the tile position on the viewable screen map
+	int tx; //appears to be the top left tile position on the viewable screen map
+	int ty; //appears to be the top left tile position on the viewable screen map
+//	int ttx; //bottem right tile
+//	int tty; //bottem left tile
 	word dxThresh; //????
 	word dyThresh; //????
 } map_view_t;
@@ -50,7 +52,12 @@ void mapDrawRow(map_view_t *mv, int tx, int ty, word y);
 void mapDrawCol(map_view_t *mv, int tx, int ty, word x);
 
 #define TILEWH 16
-#define QUADWH (TILEWH/4)
+#define QUADWH (TILEWH/4)
+#define SPEED 1
+
+//place holder definitions
+#define MAPX 40
+#define MAPY 30
 //#define SWAP(a, b) tmp=a; a=b; b=tmp;
 void main() {
 //	int show1=1;
@@ -71,9 +78,13 @@ void main() {
 
 	setkb(1);
 	/* create the map */
-	map = allocMap(160,120); //20x15 is the resolution of the screen you can make maps smaller than 20x15 but the null space needs to be drawn properly
+	map = allocMap(MAPX,MAPY); //20x15 is the resolution of the screen you can make maps smaller than 20x15 but the null space needs to be drawn properly
 	initMap(&map);
-	mv.map = &map;
+	mv.map = &map;
+
+	//initiate bottem right edge trigger
+//	mv.ttx = mv.tx + 20;
+//	mv.tty = mv.ty + 15;
 //	mv2.map = &map;
 
 	/* draw the tiles */
@@ -82,7 +93,6 @@ void main() {
 	screen = modexDefaultPage();
 	screen.width += (TILEWH*2);
 	mv.page = &screen;
-	mapGoTo(&mv, 16, 16);
 //	screen2=modexNextPage(mv.page);
 //	mv2.page = &screen2;
 //	mapGoTo(&mv2, 16, 16);
@@ -91,57 +101,73 @@ void main() {
 	/* set up paging */
 //	show = &mv;
 //	draw = &mv2;
-	draw = &mv;
+	draw = &mv;
+
+	mapGoTo(draw, 0, 0);
 
 	//TODO: set player position data here according to the viewable map screen thingy
-
+
+	modexShowPage(draw->page);
 	while(!keyp(1)) {
 	//TODO: top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square
 	//to stop scrolling and have the player position data move to the edge of the screen with respect to the direction
 	//when player.tx or player.ty == 0 or player.tx == 20 or player.ty == 15 then stop because that is edge of map and you do not want to walk of the map
-	if(keyp(77)){
-//		for(q=0; q<TILEWH; q++) {
-		mapScrollRight(draw, 1);
-//		modexShowPage(draw->page);
+	if(keyp(77)){
+		if(draw->tx >= 0 && draw->tx+20 < MAPX)
+			for(q=0; q<16; q++) {
+				mapScrollRight(draw, SPEED);
+				modexShowPage(draw->page);
 //		mapScrollRight(draw, 1);
 //		SWAP(draw, show);
-//		}
+			}
+
 	}
 
-	if(keyp(75)){
-//		for(q=0; q<TILEWH; q++) {
- 		mapScrollLeft(draw, 1);
-//		modexShowPage(draw->page);
+	if(keyp(75)){
+		if(draw->tx > 0 && draw->tx+20 <= MAPX)
+			for(q=0; q<16; q++) {
+ 				mapScrollLeft(draw, SPEED);
+				modexShowPage(draw->page);
 // 		mapScrollLeft(show, 1);
 //		SWAP(draw, show);
-//		}
+			}
+
 	}
 
-	if(keyp(80)){
-//		for(q=0; q<TILEWH; q++) {
-		mapScrollDown(draw, 1);
-//		modexShowPage(draw->page);
+	if(keyp(80)){
+		if(draw->ty >= 0 && draw->ty+15 < MAPY)
+			for(q=0; q<16; q++) {
+				mapScrollDown(draw, SPEED);
+				modexShowPage(draw->page);
 //		mapScrollDown(show, 1);
 //		SWAP(draw, show);
-//		}
+			}
+
 	}
 
-	if(keyp(72)){
-//		for(q=0; q<TILEWH; q++) {
-		mapScrollUp(draw, 1);
-//		modexShowPage(draw->page);
+	if(keyp(72)){
+		if(draw->ty > 0 && draw->ty+15 <= MAPY)
+			for(q=0; q<16; q++) {
+				mapScrollUp(draw, SPEED);
+				modexShowPage(draw->page);
 //		mapScrollUp(show, 1);
 //		SWAP(draw, show);
-//		}
+			}
+
 	}
 
 	//keyp(ch);
-	modexShowPage(draw->page);
+	//modexShowPage(draw->page);
 
 	}
-
+
 	modexLeave();
-	setkb(0);
+	setkb(0);
+	printf("Project 16 scroll.exe\n");
+	printf("tx: %d\n", draw->tx);
+	printf("ty: %d\n", draw->ty);
+	//printf("ttx: %d\n", draw->ttx);
+	//printf("tty: %d\n", draw->tty);
 }
 
 
diff --git a/16/modex16/scroll.exe b/16/modex16/scroll.exe
index 237625209c1e852c181a9daaff3091d00438534e..603a936804aed171a429cccf6e60913515708492 100755
GIT binary patch
delta 4352
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

delta 4135
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

-- 
2.39.5