From d3fb3fcbeee65178ac96027ee7df5fa1de944edc Mon Sep 17 00:00:00 2001 From: sparky4 Date: Thu, 18 Jun 2015 23:09:59 -0500 Subject: [PATCH] SCROLLING OPTIMIZED!!!! <3 modified: Project 16.bfproject modified: scroll.exe modified: src/scroll.c --- Project 16.bfproject | 18 +++--- scroll.exe | Bin 59960 -> 60077 bytes src/scroll.c | 148 ++++++++++++++++++++++--------------------- 3 files changed, 86 insertions(+), 80 deletions(-) diff --git a/Project 16.bfproject b/Project 16.bfproject index ab8785b1..a92a3bdf 100644 --- a/Project 16.bfproject +++ b/Project 16.bfproject @@ -3,7 +3,7 @@ e2c.convert_num: 0 openfiles: /dos/z/16/doc/project.txt:138:0:0: openfiles: /dos/z/16/src/palettec.c:179:0:0: openfiles: /dos/z/16/src/pcxtest.c:141:0:0: -openfiles: /dos/z/16/src/scroll.c:22998:22397:1: +openfiles: /dos/z/16/src/scroll.c:3783:3119:1: openfiles: /dos/z/16/src/fmemtest.c:116:0:0: openfiles: /dos/z/16/src/emmtest.c:439:0:0: openfiles: /dos/z/16/src/emsdump.c:456:0:0: @@ -47,7 +47,7 @@ c2e.convert_iso: 0 opendir: file:///dos/z/16/src wrap_text_default: 0 bookmarks_filename_mode: 1 -ssearch_text: drawcol +ssearch_text: mv snr_casesens: 0 view_blocks: 1 name: Project 16 @@ -121,13 +121,6 @@ snr_escape_chars: 0 htmlbar_view: 0 spell_lang: en ssearch_dotmatchall: 0 -searchlist: next -searchlist: bg -searchlist: newde -searchlist: default -searchlist: (1) -searchlist: map -searchlist: screen, searchlist: modexShowPage() searchlist: scrollright searchlist: col @@ -136,6 +129,13 @@ searchlist: dcol searchlist: drcol searchlist: dracol searchlist: drawcol +searchlist: scrolle +searchlist: scrollr +searchlist: map_view_db_tscr +searchlist: scrollright +searchlist: map_view_db_t *mvdb, byte offset, word id +searchlist: scrollright +searchlist: mv autocomplete: 1 outputb_show_all_output: 0 bookmarks_show_mode: 0 diff --git a/scroll.exe b/scroll.exe index af5d73432cdb25bcd67380074ed631030a415816..de46944bc8b85d688c5b3e6af5602ea65215b69f 100644 GIT binary patch delta 13920 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 E0k>Z9>;M1& diff --git a/src/scroll.c b/src/scroll.c index e0a6efca..9bd16184 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -39,10 +39,10 @@ typedef struct map_t allocMap(int w, int h); void initMap(map_t *map); -void mapScrollRight(map_view_db_t *mvdb, byte offset, word id); -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, word id); +void mapScrollLeft(map_view_t *mv, byte offest, word id); +void mapScrollUp(map_view_t *mv, byte offset, word id); +void mapScrollDown(map_view_t *mv, byte offset, word id); 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); @@ -76,9 +76,9 @@ void main() { static int persist_aniframe = 0; /* gonna be increased to 1 before being used, so 0 is ok for default */ page_t screen, screen2, screen3; map_t map; - map_view_t mv, mv2, mv3; + map_view_t mv[3];//mv, mv2, mv3; map_view_t *bg, *spri, *mask;//, *tmp; - map_view_db_t pgid[4]; + //map_view_db_t pgid[4]; byte *dpal, *gpal; byte *ptr; byte *mappalptr; @@ -121,9 +121,9 @@ void main() { //---- map = allocMap(map.width,map.height); //20x15 is the resolution of the screen you can make maps smaller than 20x15 but the null space needs to be drawn properly //if(isEMS()) printf("%d tesuto\n", coretotalEMS()); //---- initMap(&map); - mv.map = ↦ - mv2.map = ↦ - mv3.map = ↦ + mv[0].map = ↦ + mv[1].map = ↦ + mv[2].map = ↦ /* draw the tiles */ ptr = map.data; @@ -197,20 +197,20 @@ void main() { screen = modexDefaultPage(); screen.width += (TILEWH*2); screen.height += (TILEWH*2)+QUADWH; - mv.page = &screen; - screen2 = modexNextPage(mv.page); - mv2.page = &screen2; - screen3 = modexNextPage0(mv2.page, 352, 176); //(352*176)+1024 is the remaining amount of memory left wwww + mv[0].page = &screen; + screen2 = modexNextPage(mv[0].page); + mv[1].page = &screen2; + screen3 = modexNextPage0(mv[1].page, 352, 176); //(352*176)+1024 is the remaining amount of memory left wwww //screen3 = modexNextPage0(mv2.page, 320, 192); //(352*176)+1024 is the remaining amount of memory left wwww - mv3.page = &screen3; + mv[2].page = &screen3; /* set up paging */ - bg = &mv; - spri = &mv2; - mask = &mv3; - pgid[0].mv = &mv; - pgid[1].mv = &mv2; - pgid[2].mv = &mv3; + bg = &mv[0]; + spri = &mv[1]; + mask = &mv[2]; + //pgid[0].mv = &mv; + //pgid[1].mv = &mv2; + //pgid[2].mv = &mv3; //TODO: LOAD map data and position the map in the middle of the screen if smaller then screen mapGoTo(bg, 0, 0); @@ -265,8 +265,8 @@ void main() { INC_PER_FRAME; //animatePlayer(bg, spri, mask, 1, 1, player.x, player.y, persist_aniframe, q, &ptmp); animatePlayer(bg, spri, player.d-1, 1, player.x, player.y, persist_aniframe, player.q, &ptmp); - mapScrollRight(pgid, SPEED, 0); - mapScrollRight(pgid, SPEED, 1); + mapScrollRight(mv, SPEED, 0); + mapScrollRight(mv, SPEED, 1); //mapScrollRight(mask, SPEED); modexShowPage(spri->page); player.q++; @@ -307,8 +307,8 @@ void main() { INC_PER_FRAME; //animatePlayer(bg, spri, mask, 3, 1, player.x, player.y, persist_aniframe, q, &ptmp); animatePlayer(bg, spri, player.d-1, 1, player.x, player.y, persist_aniframe, player.q, &ptmp); - mapScrollLeft(bg, SPEED); - mapScrollLeft(spri, SPEED); + mapScrollLeft(mv, SPEED, 0); + mapScrollLeft(mv, SPEED, 1); //mapScrollLeft(mask, SPEED); modexShowPage(spri->page); player.q++; @@ -348,9 +348,9 @@ void main() { { INC_PER_FRAME; //animatePlayer(bg, spri, mask, 2, 1, player.x, player.y, persist_aniframe, q, &ptmp); - animatePlayer(bg, spri, player.d-1, 1, player.x, player.y, persist_aniframe, player.q, &ptmp); - mapScrollDown(bg, SPEED); - mapScrollDown(spri, SPEED); + animatePlayer(bg, spri, player.d-1, 1, player.x, player.y, persist_aniframe, player.q, &ptmp); + mapScrollDown(mv, SPEED, 0); + mapScrollDown(mv, SPEED, 1); //mapScrollDown(mask, SPEED); modexShowPage(spri->page); player.q++; @@ -390,9 +390,9 @@ void main() { { INC_PER_FRAME; //animatePlayer(bg, spri, mask, 0, 1, player.x, player.y, persist_aniframe, q, &ptmp); - animatePlayer(bg, spri, player.d-1, 1, player.x, player.y, persist_aniframe, player.q, &ptmp); - mapScrollUp(bg, SPEED); - mapScrollUp(spri, SPEED); + animatePlayer(bg, spri, player.d-1, 1, player.x, player.y, persist_aniframe, player.q, &ptmp); + mapScrollUp(mv, SPEED, 0); + mapScrollUp(mv, SPEED, 1); //mapScrollUp(mask, SPEED); modexShowPage(spri->page); player.q++; @@ -711,100 +711,106 @@ initMap(map_t *map) { void -mapScrollRight(map_view_db_t *mvdb, byte offset, word id) { +mapScrollRight(map_view_t *mv, byte offset, word id) +{ word x, y; /* coordinate for drawing */ /* increment the pixel position and update the page */ - mvdb[id].mv->page->dx += offset; + mv[id].page->dx += offset; /* check to see if this changes the tile */ - if(mvdb[id].mv->page->dx >= mvdb[id].mv->dxThresh ) { + if(mv[id].page->dx >= mv[id].dxThresh ) { /* go forward one tile */ - mvdb[id].mv->tx++; + mv[id].tx++; /* Snap the origin forward */ - mvdb[id].mv->page->data += 4; - mvdb[id].mv->page->dx = mvdb[id].mv->map->tiles->tileWidth; + mv[id].page->data += 4; + mv[id].page->dx = mv[id].map->tiles->tileWidth; /* draw the next column */ - x= SCREEN_WIDTH + mvdb[id].mv->map->tiles->tileWidth; - if(mvdb[id].mv->page->id==0) - mapDrawCol(mvdb[id].mv, mvdb[id].mv->tx + 20 , mvdb[id].mv->ty-1, x); + x= SCREEN_WIDTH + mv[id].map->tiles->tileWidth; + if(id==0) + mapDrawCol(&mv[id], mv[id].tx + 20 , mv[id].ty-1, x); else - modexCopyPageRegion(mvdb[id].mv->page, mvdb[0].mv->page, x, 0, x, 0, mvdb[id].mv->map->tiles->tileWidth, mvdb[id].mv->map->tiles->tileHeight*17); -// mv[0] + modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*17); } } void -mapScrollLeft(map_view_t *mv, byte offset) { +mapScrollLeft(map_view_t *mv, byte offset, word id) +{ word x, y; /* coordinate for drawing */ /* increment the pixel position and update the page */ - mv->page->dx -= offset; + mv[id].page->dx -= offset; /* check to see if this changes the tile */ - if(mv->page->dx == 0) { + if(mv[id].page->dx == 0) { /* go backward one tile */ - mv->tx--; + mv[id].tx--; /* Snap the origin backward */ - mv->page->data -= 4; - mv->page->dx = mv->map->tiles->tileWidth; - //} + mv[id].page->data -= 4; + mv[id].page->dx = mv[id].map->tiles->tileWidth; + /* draw the next column */ - if(mv->page->id==0) - mapDrawCol(mv, mv->tx-1, mv->ty-1, 0); + if(id==0) + mapDrawCol(&mv[0], mv[id].tx-1, mv[id].ty-1, 0); + else + modexCopyPageRegion(mv[id].page, mv[0].page, 0, 0, 0, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*17); } } void -mapScrollUp(map_view_t *mv, byte offset) { +mapScrollUp(map_view_t *mv, byte offset, word id) +{ word x, y; /* coordinate for drawing */ /* increment the pixel position and update the page */ - mv->page->dy -= offset; + mv[id].page->dy -= offset; /* check to see if this changes the tile */ - if(mv->page->dy == 0 ) { + if(mv[id].page->dy == 0 ) { /* go down one tile */ - mv->ty--; + mv[id].ty--; /* Snap the origin downward */ - mv->page->data -= mv->page->width*4; - mv->page->dy = mv->map->tiles->tileHeight; - //} + mv[id].page->data -= mv[id].page->width*4; + mv[id].page->dy = mv[id].map->tiles->tileHeight; /* draw the next row */ - y= 0; - if(mv->page->id==0) - mapDrawRow(mv, mv->tx-1 , mv->ty-1, y); + //y= 0; + if(id==0) + mapDrawRow(&mv[0], mv[id].tx-1 , mv[id].ty-1, 0); + else + modexCopyPageRegion(mv[id].page, mv[0].page, 0, 0, 0, 0, mv[id].map->tiles->tileWidth*22, mv[id].map->tiles->tileHeight); } } void -mapScrollDown(map_view_t *mv, byte offset) { +mapScrollDown(map_view_t *mv, byte offset, word id) +{ word x, y; /* coordinate for drawing */ /* increment the pixel position and update the page */ - mv->page->dy += offset; + mv[id].page->dy += offset; /* check to see if this changes the tile */ - if(mv->page->dy >= mv->dyThresh ) { + if(mv[id].page->dy >= mv[id].dyThresh ) { /* go down one tile */ - mv->ty++; + mv[id].ty++; /* Snap the origin downward */ - mv->page->data += mv->page->width*4; - mv->page->dy = mv->map->tiles->tileHeight; - //} + mv[id].page->data += mv[id].page->width*4; + mv[id].page->dy = mv[id].map->tiles->tileHeight; /* draw the next row */ - y= SCREEN_HEIGHT + mv->map->tiles->tileHeight; - if(mv->page->id==0) - mapDrawRow(mv, mv->tx-1 , mv->ty+15, y); + y= SCREEN_HEIGHT + mv[id].map->tiles->tileHeight; + if(id==0) + mapDrawRow(&mv[0], mv[id].tx-1 , mv[id].ty+15, y); + else + modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*22, mv[id].map->tiles->tileHeight); } - } -- 2.39.2