From 48360bc891427eca1d1598644103becbbe304cee Mon Sep 17 00:00:00 2001 From: sparky4 Date: Sun, 23 Nov 2014 17:35:12 -0600 Subject: [PATCH] modified: Project 16.bfproject modified: modex16.c modified: modex16.h modified: pcxtest.exe new file: ptmp0.pcx modified: scroll.c modified: scroll.exe modified: test.exe modified: test2.exe --- Project 16.bfproject | 56 ++++++++++++++++++++++------------------ modex16.c | 55 --------------------------------------- modex16.h | 1 - pcxtest.exe | Bin 36428 -> 36196 bytes ptmp0.pcx | Bin 0 -> 5047 bytes scroll.c | 60 +++++++++++++++++-------------------------- scroll.exe | Bin 21160 -> 19872 bytes test.exe | Bin 17508 -> 17260 bytes test2.exe | Bin 17260 -> 17028 bytes 9 files changed, 54 insertions(+), 118 deletions(-) create mode 100644 ptmp0.pcx diff --git a/Project 16.bfproject b/Project 16.bfproject index 698c75de..cb3ed63a 100644 --- a/Project 16.bfproject +++ b/Project 16.bfproject @@ -1,9 +1,10 @@ c2e.convert_special: 0 e2c.convert_num: 0 openfiles: /dos/z/16/doc/project.txt:0:0:0: -openfiles: /dos/z/16/scroll.c:4669:4145:1: -openfiles: /dos/z/16/modex16.c:2077:556:0: -openfiles: /dos/z/16/modex16.h:1150:0:0: +openfiles: /dos/z/16/scroll.c:12536:10702:1: +openfiles: /dos/z/16/modex16.c:15726:15322:0: +openfiles: /dos/z/16/modex16.h:2230:1258:0: +openfiles: /dos/z/16/pcxtest.c:1339:797:0: snr_recursion_level: 0 convertcolumn_horizontally: 0 adv_open_matchname: 0 @@ -18,20 +19,25 @@ c2e.convert_iso: 0 opendir: file:///dos/z/16 wrap_text_default: 0 bookmarks_filename_mode: 1 -ssearch_text: modexShowPage(spri->page); +ssearch_text: waitb snr_casesens: 1 view_blocks: 1 name: project 16 -replacelist: てすと -replacelist: \t -replacelist: putPixel_X -replacelist: SCREEN_WIDTH -replacelist: SCREEN_HEIGHT replacelist: modexClearPlayer(mv->page replacelist: animatePlayer(draw replacelist: animatePlayer(spri replacelist: modexDrawSpriteRegion(spri replacelist: spri->page = modexDefaultPage(); +replacelist: screen2=modexNextPage(mv.page); +replacelist: spri->page=draw->page; +replacelist: mv +replacelist: src +replacelist: mv->page, src->page, +replacelist: modexShowPage(spri +replacelist: modexShowPage(draw +replacelist: wPage(spri +replacelist: 34); +replacelist: bg fb_show_hidden_f: 0 editor_tab_width: 4 show_visible_spacing: 1 @@ -45,7 +51,6 @@ ssearch_regex: 0 e2c.convert_iso: 0 ssearch_casesens: 0 charmap_block: 1 -recent_files: file:///dos/z/16/16/lib/x/MXVS.ASM recent_files: file:///dos/z/16/16/lib/x/MAKEFILE recent_files: file:///dos/z/16/16/lib/x/MODEX.DEF recent_files: file:///dos/z/4x4_16/modex/DEMO01.PAS @@ -95,6 +100,7 @@ recent_files: file:///dos/z/16/scroll.c recent_files: file:///dos/z/16/doc/project.txt recent_files: file:///dos/z/16/modex16.h recent_files: file:///dos/z/16/modex16.c +recent_files: file:///dos/z/16/pcxtest.c snr_replacetype: 0 savedir: file:///dos/z/16 spell_check_default: 1 @@ -106,21 +112,21 @@ snr_escape_chars: 0 htmlbar_view: 0 spell_lang: en ssearch_dotmatchall: 0 -searchlist: SC_INDEX -searchlist: gq -searchlist: setvideo -searchlist: clock -searchlist: vga -searchlist: color 0 -searchlist: sprite -searchlist: clear -searchlist: modexClearRegion(mv->page -searchlist: animatePlayer(spri -searchlist: color -searchlist: modexShowPage(spri->page); -searchlist: animatePlayer(draw -searchlist: modexDrawSpriteRegion(draw -searchlist: spri->page=NULL; +searchlist: &mv, &src, +searchlist: modexCopyPageRegion +searchlist: modexShowPage(draw +searchlist: ->page +searchlist: w->page +searchlist: modexShowPage(spri +searchlist: howPage(draw +searchlist: wPage(draw +searchlist: 32); +searchlist: 33) +searchlist: 3) +searchlist: draw +searchlist: 34) +searchlist: 0x3DA +searchlist: waitb autocomplete: 1 outputb_show_all_output: 0 bookmarks_show_mode: 0 diff --git a/modex16.c b/modex16.c index 256a08ef..8828d9ec 100644 --- a/modex16.c +++ b/modex16.c @@ -214,61 +214,6 @@ modexClearRegion(page_t *page, int x, int y, int w, int h, byte color) { } } - -void -modexClearPlayer(page_t *page, int x, int y, int w, int h) { - word pageOff = (word) page->data; - word xoff=x/4; /* xoffset that begins each row */ - word scanCount=w/4; /* number of iterations per row (excluding right clip)*/ - word poffset = pageOff + y*(page->width/4) + xoff; /* starting offset */ - word nextRow = page->width/4-scanCount-1; /* loc of next row */ - byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ - byte rclip[] = {0x00, 0x01, 0x03, 0x07}; - byte left = lclip[x&0x03]; - byte right = rclip[(x+w)&0x03]; - - /* handle the case which requires an extra group */ - if((x & 0x03) && !((x+w) & 0x03)) { - right=0x0f; - } - - __asm { - MOV AX, SCREEN_SEG ; go to the VGA memory - MOV ES, AX - MOV DI, poffset ; go to the first pixel - MOV DX, SC_INDEX ; point to the map mask - MOV AL, MAP_MASK - OUT DX, AL - INC DX - MOV AL, NULL ; get ready to write colors - SCAN_START: - MOV CX, scanCount ; count the line - MOV BL, AL ; remember color - MOV AL, left ; do the left clip - OUT DX, AL ; set the left clip - MOV AL, BL ; restore color - STOSB ; write the color - DEC CX - JZ SCAN_DONE ; handle 1 group stuff - - ;-- write the main body of the scanline - MOV BL, AL ; remember color - MOV AL, 0x0f ; write to all pixels - OUT DX, AL - MOV AL, BL ; restore color - REP STOSB ; write the color - SCAN_DONE: - MOV BL, AL ; remeber color - MOV AL, right - OUT DX, AL ; do the right clip - MOV AL, BL ; restore color - STOSB ; write pixel - ADD DI, nextRow ; go to the next row - DEC h - JNZ SCAN_START - } -} - void modexDrawBmp(page_t *page, int x, int y, bitmap_t *bmp) { diff --git a/modex16.h b/modex16.h index 9ee36908..65b37d9d 100644 --- a/modex16.h +++ b/modex16.h @@ -30,7 +30,6 @@ void modexShowPage(page_t *page); void modexPanPage(page_t *page, int dx, int dy); void modexSelectPlane(byte plane); void modexClearRegion(page_t *page, int x, int y, int w, int h, byte color); -void modexClearPlayer(page_t *page, int x, int y, int w, int h); void modexDrawBmp(page_t *page, int x, int y, bitmap_t *bmp); void modexDrawBmpRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp); void modexDrawSprite(page_t *page, int x, int y, bitmap_t *bmp); diff --git a/pcxtest.exe b/pcxtest.exe index f70b085bfa92773d4756b5beeab180b1fd06946c..de765ece05216f2d419837866388d044bac54429 100644 GIT binary patch delta 6274 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 literal 0 HcmV?d00001 diff --git a/scroll.c b/scroll.c index dd84b2af..8f27cbb0 100644 --- a/scroll.c +++ b/scroll.c @@ -105,7 +105,7 @@ void main() { player.x = player.tx*TILEWH; player.y = player.ty*TILEWH; modexDrawSpriteRegion(spri->page, player.x-4, player.y-TILEWH, 24, 64, 24, 32, &ptmp); - modexCopyPageRegion(bg->page, spri->page, player.x-4, player.y-TILEWH-2, player.x-4, player.y-TILEWH-2, 24, 34); + modexCopyPageRegion(bg->page, spri->page, player.x-4, player.y-TILEWH-2, player.x-4, player.y-TILEWH-2, 24, 36); modexShowPage(spri->page); while(!keyp(1)) { @@ -114,6 +114,7 @@ void main() { //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 //TODO: render the player properly with animation and sprite sheet + //TODO: fexible speeds if(keyp(77)) { if(bg->tx >= 0 && bg->tx+20 < MAPX && player.tx == bg->tx + 10) @@ -448,9 +449,10 @@ mapDrawCol(map_view_t *mv, int tx, int ty, word x) { void animatePlayer(map_view_t *mv, map_view_t *src, short d1, short d2, int x, int y, int ls, bitmap_t *bmp) { - int qq; - int lo = ((TILEWH / SPEED) / 3); - int loo = (ls + lo); + short dire=32*d1; + short qq; + short lo = ((TILEWH / SPEED) / 3); + short loo = (ls + lo); if(d2==0) qq = 0; else qq = ((ls+1)*SPEED); @@ -458,47 +460,31 @@ void animatePlayer(map_view_t *mv, map_view_t *src, short d1, short d2, int x, i { case 0: //up - if(ls<1) { modexCopyPageRegion(mv->page, src->page, x-4, y-qq-TILEWH, x-4, y-qq-TILEWH, 24, 34); - modexDrawSpriteRegion(mv->page, x-4, y-qq-TILEWH, 24, 0, 24, 32, bmp); } - if(4>ls && ls>=1) { modexCopyPageRegion(mv->page, src->page, x-4, y-qq-TILEWH, x-4, y-qq-TILEWH, 24, 34); - modexDrawSpriteRegion(mv->page, x-4, y-qq-TILEWH, 48, 0, 24, 32, bmp); } - if(7>ls && ls>=4) { modexCopyPageRegion(mv->page, src->page, x-4, y-qq-TILEWH, x-4, y-qq-TILEWH, 24, 34); - modexDrawSpriteRegion(mv->page, x-4, y-qq-TILEWH, 0, 0, 24, 32, bmp); } - if(ls>=7) { modexCopyPageRegion(mv->page, src->page, x-4, y-qq-TILEWH, x-4, y-qq-TILEWH, 24, 34); - modexDrawSpriteRegion(mv->page, x-4, y-qq-TILEWH, 24, 0, 24, 32, bmp); } + x=x-4; + y=y-qq-TILEWH; break; case 1: // right - if(ls<1) { modexCopyPageRegion(mv->page, src->page, x+qq-4, y-TILEWH, x+qq-4, y-TILEWH, 24, 34);// modexWaitBorder(); - modexDrawSpriteRegion(mv->page, x+qq-4, y-TILEWH, 24, 32, 24, 32, bmp); } - if(4>ls && ls>=1) { modexCopyPageRegion(mv->page, src->page, x+qq-4, y-TILEWH, x+qq-4, y-TILEWH, 24, 34);// modexWaitBorder(); - modexDrawSpriteRegion(mv->page, x+qq-4, y-TILEWH, 48, 32, 24, 32, bmp); } - if(7>ls && ls>=4) { modexCopyPageRegion(mv->page, src->page, x+qq-4, y-TILEWH, x+qq-4, y-TILEWH, 24, 34);// modexWaitBorder(); - modexDrawSpriteRegion(mv->page, x+qq-4, y-TILEWH, 0, 32, 24, 32, bmp); } - if(ls>=7) { modexCopyPageRegion(mv->page, src->page, x+qq-4, y-TILEWH, x+qq-4, y-TILEWH, 24, 34);// modexWaitBorder(); - modexDrawSpriteRegion(mv->page, x+qq-4, y-TILEWH, 24, 32, 24, 32, bmp); } + x=x+qq-4; + y=y-TILEWH; break; case 2: //down - if(ls<1) { modexCopyPageRegion(mv->page, src->page, x-4, y+qq-TILEWH-2, x-4, y+qq-TILEWH-2, 24, 34); - modexDrawSpriteRegion(mv->page, x-4, y+qq-TILEWH, 24, 64, 24, 32, bmp); } - if(4>ls && ls>=1) { modexCopyPageRegion(mv->page, src->page, x-4, y+qq-TILEWH-2, x-4, y+qq-TILEWH-2, 24, 34); - modexDrawSpriteRegion(mv->page, x-4, y+qq-TILEWH, 48, 64, 24, 32, bmp); } - if(7>ls && ls>=4) { modexCopyPageRegion(mv->page, src->page, x-4, y+qq-TILEWH-2, x-4, y+qq-TILEWH-2, 24, 34); - modexDrawSpriteRegion(mv->page, x-4, y+qq-TILEWH, 0, 64, 24, 32, bmp); } - if(ls>=7) { modexCopyPageRegion(mv->page, src->page, x-4, y+qq-TILEWH-2, x-4, y+qq-TILEWH-2, 24, 34); - modexDrawSpriteRegion(mv->page, x-4, y+qq-TILEWH, 24, 64, 24, 32, bmp); } + x=x-4; + y=y+qq-TILEWH; break; case 3: //left - if(ls<1) { modexCopyPageRegion(mv->page, src->page, x-qq-4, y-TILEWH, x-qq-4, y-TILEWH, 24, 34);// modexWaitBorder(); - modexDrawSpriteRegion(mv->page, x-qq-4, y-TILEWH, 24, 96, 24, 32, bmp); } - if(4>ls && ls>=1) { modexCopyPageRegion(mv->page, src->page, x-qq-4, y-TILEWH, x-qq-4, y-TILEWH, 24, 34);// modexWaitBorder(); - modexDrawSpriteRegion(mv->page, x-qq-4, y-TILEWH, 48, 96, 24, 32, bmp); } - if(7>ls && ls>=4) { modexCopyPageRegion(mv->page, src->page, x-qq-4, y-TILEWH, x-qq-4, y-TILEWH, 24, 34);// modexWaitBorder(); - modexDrawSpriteRegion(mv->page, x-qq-4, y-TILEWH, 0, 96, 24, 32, bmp); } - if(ls>=7) { modexCopyPageRegion(mv->page, src->page, x-qq-4, y-TILEWH, x-qq-4, y-TILEWH, 24, 34);// modexWaitBorder(); - modexDrawSpriteRegion(mv->page, x-qq-4, y-TILEWH, 24, 96, 24, 32, bmp); } + x=x-qq-4; + y=y-TILEWH; break; - } + } //TODO: make flexible animation thingy + if(ls<1) { modexCopyPageRegion(mv->page, src->page, x, y-2, x, y-2, 24, 36);// modexWaitBorder(); + modexDrawSpriteRegion(mv->page, x, y, 24, dire, 24, 32, bmp); }else + if(4>ls && ls>=1) { modexCopyPageRegion(mv->page, src->page, x, y-2, x, y-2, 24, 36);// modexWaitBorder(); + modexDrawSpriteRegion(mv->page, x, y, 48, dire, 24, 32, bmp); }else + if(7>ls && ls>=4) { modexCopyPageRegion(mv->page, src->page, x, y-2, x, y-2, 24, 36);// modexWaitBorder(); + modexDrawSpriteRegion(mv->page, x, y, 0, dire, 24, 32, bmp); }else + if(8>=ls && ls>=7) { modexCopyPageRegion(mv->page, src->page, x, y-2, x, y-2, 24, 36);// modexWaitBorder(); + modexDrawSpriteRegion(mv->page, x, y, 24, dire, 24, 32, bmp); }else ls-=ls; } diff --git a/scroll.exe b/scroll.exe index f7c0fafbfac4106e4817edda4d6f0f1a61176ae6..93e386f9a7cce13aa0fd1519179eb9b8d70d8ecb 100644 GIT binary patch delta 4300 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 diff --git a/test.exe b/test.exe index 38a4eb9d6596306360b08a7fdc25434840ee765a..99404b1a3666201b98a9dba2cbe162f0e6a6d49f 100644 GIT binary patch delta 3576 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 diff --git a/test2.exe b/test2.exe index c71ba0e2b8a8e366382bce326dfc2e041ffceeee..2b870eff82dc4159ec20cecb40d7e0287b92bca1 100644 GIT binary patch delta 3645 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 delta 3748 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