From bb469ec3b28468c0370f4fce239fad4375850a8d Mon Sep 17 00:00:00 2001 From: sparky4 Date: Mon, 1 Dec 2014 00:37:08 -0600 Subject: [PATCH] deleted: makefile~ modified: scroll.exe modified: src/scroll.c --- makefile~ | 37 ----------------- scroll.exe | Bin 48784 -> 49398 bytes src/scroll.c | 111 +++++++++++++++++++++++++++++++++++---------------- 3 files changed, 77 insertions(+), 71 deletions(-) delete mode 100644 makefile~ diff --git a/makefile~ b/makefile~ deleted file mode 100644 index 6ef7ecd1..00000000 --- a/makefile~ +++ /dev/null @@ -1,37 +0,0 @@ -FLAGS=-0 -d2 -all: test.exe pcxtest.exe test2.exe scroll.exe - -scroll.exe: scroll.obj modex16.obj dos_kb.obj bitmap.obj - wcl $(FLAGS) scroll.obj modex16.obj dos_kb.obj bitmap.obj -scroll.obj: src\scroll.c - wcl $(FLAGS) -c src\scroll.c -test.exe: test.obj modex16.obj bitmap.obj - wcl $(FLAGS) test.obj modex16.obj bitmap.obj - -test2.exe: test2.obj modex16.obj bitmap.obj - wcl $(FLAGS) test2.obj modex16.obj bitmap.obj - -pcxtest.exe: pcxtest.obj modex16.obj bitmap.obj - wcl $(FLAGS) pcxtest.obj modex16.obj bitmap.obj - -test.obj: src\test.c src\lib\modex16.h - wcl $(FLAGS) -c src\test.c - -test2.obj: src\test2.c src\lib\modex16.h - wcl $(FLAGS) -c src\test2.c - -pcxtest.obj: src\pcxtest.c src\lib\modex16.h - wcl $(FLAGS) -c src\pcxtest.c - -modex16.obj: src\lib\modex16.h src\lib\modex16.c - wcl $(FLAGS) -c src\lib\modex16.c - -dos_kb.obj: src\lib\dos_kb.h src\lib\dos_kb.c - wcl $(FLAGS) -c src\lib\dos_kb.c - -bitmap.obj: src\lib\bitmap.h src\lib\bitmap.c - wcl $(FLAGS) -c src\lib\bitmap.c - -clean: - del *.obj -# del *.exe diff --git a/scroll.exe b/scroll.exe index beb750e10bff701c878770117947e1dcc1df9742..afcb2529dc09cc400a98509575218a0daea3f278 100644 GIT binary patch delta 23422 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 diff --git a/src/scroll.c b/src/scroll.c index 3ce484db..12230d94 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -46,14 +46,16 @@ struct { map_t allocMap(int w, int h); void initMap(map_t *map); -void mapScrollRight(map_view_t *mv, byte offset); -void mapScrollLeft(map_view_t *mv, byte offest); -void mapScrollUp(map_view_t *mv, byte offset); -void mapScrollDown(map_view_t *mv, byte offset); +void mapScrollRight(map_view_t *mv, byte offset, short lp); +void mapScrollLeft(map_view_t *mv, byte offest, short lp); +void mapScrollUp(map_view_t *mv, byte offset, short lp); +void mapScrollDown(map_view_t *mv, byte offset, short lp); void mapGoTo(map_view_t *mv, int tx, int ty); 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); -void mapDrawCol(map_view_t *mv, int tx, int ty, word x); +void mapDrawRow(map_view_t *mv, int tx, int ty, word y, word poopoffset); +void mapDrawCol(map_view_t *mv, int tx, int ty, word x, word poopoffset); +void mapDrawWRow(map_view_t *mv, int tx, int ty, word y); +void mapDrawWCol(map_view_t *mv, int tx, int ty, word x); void animatePlayer(map_view_t *src, map_view_t *dest, /*map_view_t *top, */short d1, short d2, int x, int y, int ls, int lp, bitmap_t *bmp); #define TILEWH 16 @@ -172,8 +174,8 @@ break; INC_PER_FRAME; //animatePlayer(bg, spri, mask, 1, 1, player.x, player.y, persist_aniframe, q, &ptmp); animatePlayer(bg, spri, 1, 1, player.x, player.y, persist_aniframe, q, &ptmp); - mapScrollRight(bg, SPEED); - mapScrollRight(spri, SPEED); + mapScrollRight(bg, SPEED, q); + mapScrollRight(spri, SPEED, q); //mapScrollRight(mask, SPEED); modexShowPage(spri->page); } @@ -210,8 +212,8 @@ break; INC_PER_FRAME; //animatePlayer(bg, spri, mask, 3, 1, player.x, player.y, persist_aniframe, q, &ptmp); animatePlayer(bg, spri, 3, 1, player.x, player.y, persist_aniframe, q, &ptmp); - mapScrollLeft(bg, SPEED); - mapScrollLeft(spri, SPEED); + mapScrollLeft(bg, SPEED, q); + mapScrollLeft(spri, SPEED, q); //mapScrollLeft(mask, SPEED); modexShowPage(spri->page); } @@ -248,8 +250,8 @@ break; INC_PER_FRAME; //animatePlayer(bg, spri, mask, 2, 1, player.x, player.y, persist_aniframe, q, &ptmp); animatePlayer(bg, spri, 2, 1, player.x, player.y, persist_aniframe, q, &ptmp); - mapScrollDown(bg, SPEED); - mapScrollDown(spri, SPEED); + mapScrollDown(bg, SPEED, q); + mapScrollDown(spri, SPEED, q); //mapScrollDown(mask, SPEED); modexShowPage(spri->page); } @@ -286,8 +288,8 @@ break; INC_PER_FRAME; //animatePlayer(bg, spri, mask, 0, 1, player.x, player.y, persist_aniframe, q, &ptmp); animatePlayer(bg, spri, 0, 1, player.x, player.y, persist_aniframe, q, &ptmp); - mapScrollUp(bg, SPEED); - mapScrollUp(spri, SPEED); + mapScrollUp(bg, SPEED, q); + mapScrollUp(spri, SPEED, q); //mapScrollUp(mask, SPEED); modexShowPage(spri->page); } @@ -408,7 +410,7 @@ initMap(map_t *map) { void -mapScrollRight(map_view_t *mv, byte offset) { +mapScrollRight(map_view_t *mv, byte offset, short lp) { word x, y; /* coordinate for drawing */ /* increment the pixel position and update the page */ @@ -421,17 +423,18 @@ mapScrollRight(map_view_t *mv, byte offset) { /* Snap the origin forward */ mv->page->data += 4; mv->page->dx = mv->map->tiles->tileWidth; - + } /* draw the next column */ x= SCREEN_WIDTH + mv->map->tiles->tileWidth; - mapDrawCol(mv, mv->tx + 20 , mv->ty-1, x); - } + if(lp%2) + mapDrawCol(mv, mv->tx + 20 , mv->ty-1, x, mv->page->dx); + //} } void -mapScrollLeft(map_view_t *mv, byte offset) { +mapScrollLeft(map_view_t *mv, byte offset, short lp) { word x, y; /* coordinate for drawing */ /* increment the pixel position and update the page */ @@ -445,15 +448,16 @@ mapScrollLeft(map_view_t *mv, byte offset) { /* Snap the origin backward */ mv->page->data -= 4; mv->page->dx = mv->map->tiles->tileWidth; - - /* draw the next column */ - mapDrawCol(mv, mv->tx-1, mv->ty-1, 0); } + /* draw the next column */ + if(lp%2) + mapDrawCol(mv, mv->tx-1, mv->ty-1, 0, mv->page->dx); + //} } void -mapScrollUp(map_view_t *mv, byte offset) { +mapScrollUp(map_view_t *mv, byte offset, short lp) { word x, y; /* coordinate for drawing */ /* increment the pixel position and update the page */ @@ -466,17 +470,18 @@ mapScrollUp(map_view_t *mv, byte offset) { /* Snap the origin downward */ mv->page->data -= mv->page->width*4; mv->page->dy = mv->map->tiles->tileHeight; - + } /* draw the next row */ y= 0; - mapDrawRow(mv, mv->tx-1 , mv->ty-1, y); - } + if(lp%3) + mapDrawRow(mv, mv->tx-1 , mv->ty-1, y, mv->page->dy); + //} } void -mapScrollDown(map_view_t *mv, byte offset) { +mapScrollDown(map_view_t *mv, byte offset, short lp) { word x, y; /* coordinate for drawing */ /* increment the pixel position and update the page */ @@ -489,12 +494,13 @@ mapScrollDown(map_view_t *mv, byte offset) { /* Snap the origin downward */ mv->page->data += mv->page->width*4; mv->page->dy = mv->map->tiles->tileHeight; - + } /* draw the next row */ y= SCREEN_HEIGHT + mv->map->tiles->tileHeight; - mapDrawRow(mv, mv->tx-1 , mv->ty+15, y); - } + if(lp%3) + mapDrawRow(mv, mv->tx-1 , mv->ty+15, y, mv->page->dy); + //} } @@ -519,7 +525,7 @@ mapGoTo(map_view_t *mv, int tx, int ty) { py=0; i=mv->ty * mv->map->width + mv->tx; for(ty=mv->ty-1; py < SCREEN_HEIGHT+mv->dyThresh && ty < mv->map->height; ty++, py+=mv->map->tiles->tileHeight) { - mapDrawRow(mv, tx-1, ty, py); + mapDrawWRow(mv, tx-1, ty, py); i+=mv->map->width - tx; } } @@ -536,13 +542,14 @@ 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) { +mapDrawRow(map_view_t *mv, int tx, int ty, word y, word poopoffset) { word x; int i; + poopoffset%=6; /* the position within the map array */ i=ty * mv->map->width + tx; - for(x=0; xdxThresh && tx < mv->map->width; x+=mv->map->tiles->tileWidth, tx++) { + for(x=poopoffset; x<(SCREEN_WIDTH+mv->dxThresh)/(poopoffset+1) && tx < mv->map->width; x+=mv->map->tiles->tileWidth, tx++) { if(i>=0) { /* we are in the map, so copy! */ mapDrawTile(mv->map->tiles, mv->map->data[i], mv->page, x, y); @@ -553,7 +560,43 @@ mapDrawRow(map_view_t *mv, int tx, int ty, word y) { void -mapDrawCol(map_view_t *mv, int tx, int ty, word x) { +mapDrawCol(map_view_t *mv, int tx, int ty, word x, word poopoffset) { + int y; + int i; + poopoffset%=4; + + /* location in the map array */ + i=ty * mv->map->width + tx; + + /* We'll copy all of the columns in the screen, + i + 1 row above and one below */ + for(y=poopoffset; y<(SCREEN_HEIGHT+mv->dyThresh)/(poopoffset+1) && ty < mv->map->height; y+=mv->map->tiles->tileHeight, ty++) { + if(i>=0) { + /* we are in the map, so copy away! */ + mapDrawTile(mv->map->tiles, mv->map->data[i], mv->page, x, y); + } + i += mv->map->width; + } +} + +void +mapDrawWRow(map_view_t *mv, int tx, int ty, word y) { + word x; + int i; + + /* the position within the map array */ + i=ty * mv->map->width + tx; + for(x=0; xdxThresh && tx < mv->map->width; x+=mv->map->tiles->tileWidth, tx++) { + if(i>=0) { + /* we are in the map, so copy! */ + mapDrawTile(mv->map->tiles, mv->map->data[i], mv->page, x, y); + } + i++; /* next! */ + } +} + +void +mapDrawWCol(map_view_t *mv, int tx, int ty, word x) { int y; int i; -- 2.39.2