]> 4ch.mooo.com Git - 16.git/blobdiff - 16/modex16/scroll.c
added paging to controls
[16.git] / 16 / modex16 / scroll.c
index 43edbcd589949a3f8c9ff53a7357ec85abea6084..89a06aeb5a670ed19d1d8b92d5dbc74bfa621b7d 100644 (file)
@@ -1,6 +1,6 @@
 #include "modex16.h"\r
 #include <stdio.h>\r
-#include <stdlib.h>
+#include <stdlib.h>\r
 #include "dos_kb.h"\r
 \r
 //word far *clock= (word far*) 0x046C; /* 18.2hz clock */\r
@@ -45,24 +45,25 @@ void mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y);
 void mapDrawRow(map_view_t *mv, int tx, int ty, word y);\r
 void mapDrawCol(map_view_t *mv, int tx, int ty, word x);\r
 \r
+#define SWAP(a, b) tmp=a; a=b; b=tmp;\r
 void main() {\r
     int show1=1;\r
     int tx, ty;\r
-    int x, y;
-       //int ch=0x0;
-       byte ch;
+    int x, y;\r
+       //int ch=0x0;\r
+       byte ch;\r
        int q=0;\r
-    page_t screen;\r
+    page_t screen,screen2;\r
     map_t map;\r
-    map_view_t mv;\r
-    byte *ptr;
-
-    setkb(1);\r
-\r
+    map_view_t mv, mv2;\r
+    map_view_t *draw, *show, *tmp;\r
+    byte *ptr;\r
+    \r
     /* create the map */\r
     map = allocMap(40,30);\r
     initMap(&map);\r
     mv.map = &map;\r
+    mv2.map = &map;\r
 \r
     /* draw the tiles */\r
     ptr = map.data;\r
@@ -70,64 +71,57 @@ void main() {
     screen = modexDefaultPage();\r
     screen.width = 352;\r
     mv.page = &screen;\r
+    screen2=modexNextPage(mv.page);\r
+    mv2.page = &screen2;\r
     mapGoTo(&mv, 0, 0);\r
+    mapGoTo(&mv2, 0, 0);\r
     modexShowPage(mv.page);\r
-
-       while(!keyp(1))
-       {\r
-    // scroll all the way to the right\r
-    //for(x=0; x<(map.width*16-SCREEN_WIDTH); x++) {
-       //if(ch==0x4d){
-       if(keyp(77)){
-       for(q=0; q<16; q++) {\r
-       mapScrollRight(&mv, 1);\r
-       modexShowPage(mv.page);
+\r
+    /* set up paging */\r
+    show = &mv;\r
+    draw = &mv2;\r
+\r
+    while(!keyp(1)) {\r
+       if(keyp(77)){\r
+           for(q=0; q<16; q++) {\r
+               mapScrollRight(draw, 1);\r
+               modexShowPage(draw->page);\r
+               SWAP(draw, show);\r
+           }\r
        }\r
-    }\r
 \r
-    // scroll all the way to the left\r
-    //for(; x>0; x--) {
-       //if(ch==0x4b){
-       if(keyp(75)){
-       for(q=0; q<16; q++) {\r
-       mapScrollLeft(&mv, 1);\r
-       modexShowPage(mv.page);
+       if(keyp(75)){\r
+           for(q=0; q<16; q++) {\r
+               mapScrollLeft(draw, 1);\r
+               modexShowPage(draw->page);\r
+               SWAP(draw, show);\r
+           }\r
        }\r
-    }\r
 \r
-    // scroll all the way down\r
-    //for(y=0; y<(map.height*16-SCREEN_HEIGHT); y++) {
-       //if(ch==0x50){
-       if(keyp(80)){
-               for(q=0; q<16; q++) {\r
-        mapScrollDown(&mv, 1);\r
-        modexShowPage(mv.page);
-    }\r
-    }\r
+       if(keyp(80)){\r
+           for(q=0; q<16; q++) {\r
+               mapScrollDown(draw, 1);\r
+               modexShowPage(draw->page);\r
+               SWAP(draw, show);\r
+           }\r
+       }\r
+\r
+\r
+       if(keyp(72)){\r
+           for(q=0; q<16; q++) {\r
+               mapScrollUp(draw, 1);\r
+               modexShowPage(draw->page);\r
+               SWAP(draw, show);\r
 \r
-    // scroll all the way up\r
-    //for(; y>0; y--) {
-       //if(ch==0x48){
-       if(keyp(72)){
-               for(q=0; q<16; q++) {\r
-       mapScrollUp(&mv, 1);\r
-       modexShowPage(mv.page);
+           }\r
        }\r
+\r
+       keyp(ch);\r
+\r
     }\r
 \r
-    // spin for a time \r
-    /*for(x=0; x<500; x++) {\r
-        modexWaitBorder();\r
-    }*/
-    //while(1){
-//                     ch=getch();
-                       //printf("0x%02x\n", ch);
-                       keyp(ch);\r
-//                     if(ch==0x71)break; // 'q'\r
-//                     if(ch==0x1b)break; // 'ESC'\r
-}\r
-    modexLeave();
-       setkb(0);\r
+    modexLeave();\r
+    setkb(0);\r
 }\r
 \r
 \r