X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_enti.c;h=c940800f3092762235ee2e7227f5dd5239772c5e;hb=45f3e2d77b5287888a171d442f74ca4e0e807d9b;hp=d0a3de5190a93f90f1370a24a83f0e8e9a206716;hpb=d03215b6373268416dd879c8bb5b0b1f0c8e9309;p=16.git diff --git a/src/lib/16_enti.c b/src/lib/16_enti.c index d0a3de51..c940800f 100755 --- a/src/lib/16_enti.c +++ b/src/lib/16_enti.c @@ -22,29 +22,53 @@ #include "src/lib/16_enti.h" -void EN_initentity(entity_t *enti) +void EN_initentity(entity_t *enti, video_t *video) { + unsigned int i,o,o2,w,h; //tx and ty inited by map enti->x = enti->tx*TILEWH; enti->y = enti->ty*TILEWH; enti->triggerx = enti->tx; - enti->triggery = enti->ty+1; + enti->triggery = enti->ty+1; //south + enti->q = 1; enti->d =2; enti->hp=4; enti->speed=4; enti->persist_aniframe = enti->q; enti->spt=(TILEWH/(enti->speed)); //speed per tile wwww - enti->invq=1; enti->pred = enti->d; enti->overdraww=0; enti->overdrawh=4; + +// VL_Initofs(video); + +// modexClearRegion(&video->page[0], enti->x, enti->y, 16, 16, 2); +// modexClearRegion(&video->page[2], 0, 0, video->page[2].sw, video->page[2].sh, 45); +// modexClearRegion(&video->page[3], 0, 0, video->page[3].sw, video->page[3].sh, 47); +#ifndef OLDBGPRESERVE + video->ofs.pattern_ofs=(uint16_t)video->page[0].data; + video->ofs.offscreen_ofs=(uint16_t)video->page[3].data; + w = (enti->x + 24) & (~3); + h = enti->y + 32; + + // block copy pattern to where we will draw the sprite + vga_setup_wm1_block_copy(); + o2 = video->ofs.offscreen_ofs; //dest + o = video->ofs.pattern_ofs + (enti->y * video->page[0].stridew) + (enti->x >> 2); // source + for (i=0;i < h;i++,o += video->page[0].stridew,o2 += (w >> 2)) vga_wm1_mem_block_copy(o2,o,w >> 2); + // must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally + vga_restore_rm0wm0(); +#else + w=h=o=i=o2=0; + modexCopyPageRegion(&video->page[2], &video->page[0], enti->x, enti->y, 0, 0, 24, 32); +#endif } //init player! -void EN_initplayer(player_t *player, word pn) +void EN_initplayer(player_t *player, word pn, video_t *video) { - EN_initentity(&player[pn].enti); + EN_initentity(&player[pn].enti, video); /* player[0].info.x = player[0].tx; player[0].info.xaxis = player[0].tx*TILEWH; player[0].info.y = player[0].ty;