From 6a9fa99fc6a9a0a1d9041a87cac1eb99ab18e3e1 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Fri, 27 Feb 2015 16:53:20 -0600 Subject: [PATCH] modified: pcxtest.exe modified: scroll.exe renamed: src/lib/lib_head.cpp -> src/lib/lib_head.c deleted: src/lib/scroll.c deleted: src/lib/scroll.h modified: src/pcxtest.c modified: src/scroll.c modified: src/test2.c modified: test2.exe --- PCXTEST.EXE | Bin 0 -> 40359 bytes pcxtest.exe | Bin 40285 -> 40359 bytes scroll.exe | Bin 53849 -> 53881 bytes src/lib/{lib_head.cpp => lib_head.c} | 0 src/lib/scroll.c | 309 --------------------------- src/lib/scroll.h | 66 ------ src/pcxtest.c | 6 +- src/scroll.c | 18 +- src/test2.c | 2 +- test2.exe | Bin 40101 -> 40101 bytes 10 files changed, 20 insertions(+), 381 deletions(-) create mode 100644 PCXTEST.EXE rename src/lib/{lib_head.cpp => lib_head.c} (100%) delete mode 100644 src/lib/scroll.c delete mode 100644 src/lib/scroll.h diff --git a/PCXTEST.EXE b/PCXTEST.EXE new file mode 100644 index 0000000000000000000000000000000000000000..a8cd8e4921c8eb88211fe9f066d3fc65500698de GIT binary patch literal 40359 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 delta 3674 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 NJ6B&4#ikjA{2v!+ZZ-e_ delta 9588 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 Y_u)Tf!1QbNG{^Gr+AET@w3v|p2fhwWEC2ui diff --git a/src/lib/lib_head.cpp b/src/lib/lib_head.c similarity index 100% rename from src/lib/lib_head.cpp rename to src/lib/lib_head.c diff --git a/src/lib/scroll.c b/src/lib/scroll.c deleted file mode 100644 index b424c8a6..00000000 --- a/src/lib/scroll.c +++ /dev/null @@ -1,309 +0,0 @@ -#include "src\scroll.h" -#include "src\lib\modex16.h" -#include -#include -#include "src\lib\dos_kb.h" -#include "src\lib\wtest\wtest.c" - -//word far *clock= (word far*) 0x046C; /* 18.2hz clock */ - -map_t -allocMap(int w, int h) { - map_t result; - - result.width =w; - result.height=h; - result.data = malloc(sizeof(byte) * w * h); - - return result; -} - - -void -initMap(map_t *map) { - /* just a place holder to fill out an alternating pattern */ - int x, y; - int i; - int tile = 1; - map->tiles = malloc(sizeof(tiles_t)); - - /* create the tile set */ - map->tiles->data = malloc(sizeof(bitmap_t)); - map->tiles->data->width = (TILEWH*2); - map->tiles->data->height= TILEWH; - map->tiles->data->data = malloc((TILEWH*2)*TILEWH); - map->tiles->tileHeight = TILEWH; - map->tiles->tileWidth =TILEWH; - map->tiles->rows = 1; - map->tiles->cols = 2; - - i=0; - for(y=0; ytiles->data->data[i] = 28;//0x24; - else - map->tiles->data->data[i] = 0;//0x34; - i++; - } - } - - i=0; - for(y=0; yheight; y++) { - for(x=0; xwidth; x++) { - map->data[i] = tile; - tile = tile ? 0 : 1; - i++; - } - tile = tile ? 0 : 1; - } -} - - -void -mapScrollRight(map_view_t *mv, byte offset, short lp) { - word x, y; /* coordinate for drawing */ - - /* increment the pixel position and update the page */ - mv->page->dx += offset; - - /* check to see if this changes the tile */ - if(mv->page->dx >= mv->dxThresh ) { - /* go forward one tile */ - mv->tx++; - /* 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; - if(lp%4) - mapDrawCol(mv, mv->tx + 20 , mv->ty-1, x, mv->page->dx); - } -} - - -void -mapScrollLeft(map_view_t *mv, byte offset, short lp) { - word x, y; /* coordinate for drawing */ - - /* increment the pixel position and update the page */ - mv->page->dx -= offset; - - /* check to see if this changes the tile */ - if(mv->page->dx == 0) { - /* go backward one tile */ - mv->tx--; - - /* Snap the origin backward */ - mv->page->data -= 4; - mv->page->dx = mv->map->tiles->tileWidth; - //} - /* draw the next column */ - if(lp%4) - mapDrawCol(mv, mv->tx-1, mv->ty-1, 0, mv->page->dx); - } -} - - -void -mapScrollUp(map_view_t *mv, byte offset, short lp) { - word x, y; /* coordinate for drawing */ - - /* increment the pixel position and update the page */ - mv->page->dy -= offset; - - /* check to see if this changes the tile */ - if(mv->page->dy == 0 ) { - /* go down one tile */ - mv->ty--; - /* Snap the origin downward */ - mv->page->data -= mv->page->width*4; - mv->page->dy = mv->map->tiles->tileHeight; - //} - - /* draw the next row */ - y= 0; - if(lp%3) - mapDrawRow(mv, mv->tx-1 , mv->ty-1, y, mv->page->dy); - } -} - - -void -mapScrollDown(map_view_t *mv, byte offset, short lp) { - word x, y; /* coordinate for drawing */ - - /* increment the pixel position and update the page */ - mv->page->dy += offset; - - /* check to see if this changes the tile */ - if(mv->page->dy >= mv->dyThresh ) { - /* go down one tile */ - mv->ty++; - /* 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; - if(lp%3) - mapDrawRow(mv, mv->tx-1 , mv->ty+15, y, mv->page->dy); - } - -} - - -void -mapGoTo(map_view_t *mv, int tx, int ty) { - int px, py; - unsigned int i; - - /* set up the coordinates */ - mv->tx = tx; - mv->ty = ty; - mv->page->dx = mv->map->tiles->tileWidth; - mv->page->dy = mv->map->tiles->tileHeight; - - /* set up the thresholds */ - mv->dxThresh = mv->map->tiles->tileWidth * 2; - mv->dyThresh = mv->map->tiles->tileHeight * 2; - - /* draw the tiles */ - modexClearRegion(mv->page, 0, 0, mv->page->width, mv->page->height, 0); - 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) { - mapDrawWRow(mv, tx-1, ty, py); - i+=mv->map->width - tx; - } -} - - -void -mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y) { - word rx; - word ry; - rx = (i % t->cols) * t->tileWidth; - ry = (i / t->cols) * t->tileHeight; - modexDrawBmpRegion(page, x, y, rx, ry, t->tileWidth, t->tileHeight, t->data); -} - - -void -mapDrawRow(map_view_t *mv, int tx, int ty, word y, word poopoffset) { - word x; - int i; - poopoffset%=SPEED; -//printf("y: %d\n", poopoffset); - /* the position within the map array */ - i=ty * mv->map->width + 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); - } - i++; /* next! */ - } -} - - -void -mapDrawCol(map_view_t *mv, int tx, int ty, word x, word poopoffset) { - int y; - int i; - poopoffset%=SPEED; -//printf("x: %d\n", poopoffset); - /* 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; - - /* 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=0; ydyThresh && 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 -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) -{ - short dire=32*d1; //direction - short qq; //scroll offset - - if(d2==0) qq = 0; - else qq = ((lp)*SPEED); - switch (d1) - { - case 0: - //up - x=x-4; - y=y-qq-TILEWH; - break; - case 1: - // right - x=x+qq-4; - y=y-TILEWH; - break; - case 2: - //down - x=x-4; - y=y+qq-TILEWH; - break; - case 3: - //left - x=x-qq-4; - y=y-TILEWH; - break; - } - modexCopyPageRegion(dest->page, src->page, x-4, y-4, x-4, y-4, 28, 40); - if(2>ls && ls>=1) { modexDrawSpriteRegion(dest->page, x, y, 48, dire, 24, 32, bmp); }else - if(3>ls && ls>=2) { modexDrawSpriteRegion(dest->page, x, y, 24, dire, 24, 32, bmp); }else - if(4>ls && ls>=3) { modexDrawSpriteRegion(dest->page, x, y, 0, dire, 24, 32, bmp); }else - if(5>ls && ls>=4) { modexDrawSpriteRegion(dest->page, x, y, 24, dire, 24, 32, bmp); } - //TODO: mask copy //modexCopyPageRegion(dest->page, src->page, x-4, y-4, x-4, y-4, 28, 40); - //modexClearRegion(top->page, 66, 66, 2, 40, 0); - //modexCopyPageRegion(dest->page, top->page, 66, 66, 66, 66, 2, 40); - //turn this off if XT - if(detectcpu() > 0) modexWaitBorder(); -} diff --git a/src/lib/scroll.h b/src/lib/scroll.h deleted file mode 100644 index e749a6fd..00000000 --- a/src/lib/scroll.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef SCROLL_H -#define SCROLL_H - -typedef struct { - bitmap_t *data; - word tileHeight; - word tileWidth; - unsigned int rows; - unsigned int cols; -} tiles_t; - - -typedef struct { - byte *data; - tiles_t *tiles; - int width; - int height; -} map_t; - - -typedef struct { - map_t *map; - page_t *page; - 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 - word dxThresh; //???? - word dyThresh; //???? -} map_view_t; - -//TODO: make this into actor_t -struct { - int x; //player exact position on the viewable map - int y; //player exact position on the viewable map - int tx; //player tile position on the viewable map - int ty; //player tile position on the viewable map - int triggerx; //player's trigger box tile position on the viewable map - int triggery; //player's trigger box tile position on the viewable map - int hp; //hitpoints of the player -} player; - - -map_t allocMap(int w, int h); -void initMap(map_t *map); -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, 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 -#define QUADWH (TILEWH/4) -#define SPEED 4 - -//place holder definitions -#define MAPX 200 -#define MAPY 150 -#define TRIGGX 10 -#define TRIGGY 9 -//#define SWAP(a, b) tmp=a; a=b; b=tmp; -#endif diff --git a/src/pcxtest.c b/src/pcxtest.c index 67e351c7..646598b9 100644 --- a/src/pcxtest.c +++ b/src/pcxtest.c @@ -1,4 +1,5 @@ #include +#include #include #include "src\lib\modex16.h" #include "src\lib\bitmap.h" @@ -69,7 +70,7 @@ void main() { modexPalUpdate(bmp.palette); /* clear and draw one sprite and one bitmap */ - modexClearRegion(&page, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 1); + //modexClearRegion(&page, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 1); /* non sprite comparison */ /*start = *clock; @@ -100,9 +101,10 @@ void main() { for(i=0; i<100 ;i++) { modexDrawSprite(&page, 20, 20, &bmp); }*/ + _fmemset(MK_FP(0xA000, 0), (int)p->plane, SCREEN_WIDTH*(SCREEN_HEIGHT*2)); while(!kbhit()) { - DrawPBuf(&page, 0, 0, p, 0); + //DrawPBuf(&page, 0, 0, p, 0); } modexLeave(); diff --git a/src/scroll.c b/src/scroll.c index 3831ed2b..9af84ef7 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -1,6 +1,7 @@ #include "src\lib\modex16.h" #include -#include +#include +#include #include "src\lib\dos_kb.h" #include "16\lib\x\modex.h" #include "src\lib\wtest\wtest.c" @@ -225,7 +226,8 @@ void main() { modexClearRegion(spri->page, 5*16, 5*16, 16, 16, 255); modexClearRegion(bg->page, 5*16, 5*16, 16, 16, 255); - modexShowPage(spri->page); + modexShowPage(spri->page); + //_fmemset(bg->page, (int)p, 16); while(!keyp(1) && player.hp>0) { //top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square @@ -522,7 +524,17 @@ void main() { nosound(); } if(player.q == (TILEWH/SPEED)+1 && player.d > 0 && (player.triggerx == 5 && player.triggery == 5)){ player.hp--; } - //if(keyp(0x0E)) while(1){ if(xmsmalloc(24)) break; } + //if(keyp(0x0E)) while(1){ if(xmsmalloc(24)) break; } + if(keyp(87)) + { + modexLeave(); + setkb(0); + __asm + { + mov ah,31h + int 21h + } + } } /* fade back to text mode */ diff --git a/src/test2.c b/src/test2.c index 7759156e..8a844d4a 100644 --- a/src/test2.c +++ b/src/test2.c @@ -31,7 +31,7 @@ void main() { bmp.data[i] = color; }*/ - bmp = bitmapLoadPcx("data/46113319.pcx"); + bmp = bitmapLoadPcx("data/koishi^^.pcx"); /* create the planar buffer */ p = planar_buf_from_bitmap(&bmp); diff --git a/test2.exe b/test2.exe index 5dc62ad4e780645ba2df28eb01045a9756150bbb..d9952813f01fee5f08002b2561dac0e3dbfb8b5f 100644 GIT binary patch delta 23 fcmZ3wlWFNrrVYnkIkNLJi!(Cg;x?amy%q)le?AJk delta 23 fcmZ3wlWFNrrVYnkIZVt94ULTrEjOQcy%q)lZzTy7 -- 2.39.5