wwww
修訂 | 51b40bfb7f114e300c6739f98292bc7c5fe6c2d9 (tree) |
---|---|
時間 | 2016-06-28 23:34:02 |
作者 | sparky4 <sparky4@cock...> |
Commiter | sparky4 |
gvar.video.page[1].pattern_ofs added wwwwwwwww
@@ -0,0 +1 @@ | ||
1 | +23936 40960 |
@@ -104,7 +104,7 @@ int main(int argc,char **argv) { | ||
104 | 104 | * this time, we render the distinctive pattern to another offscreen location and just copy. |
105 | 105 | * note this version is much faster too! */ |
106 | 106 | { |
107 | - const unsigned int pattern_ofs = 0x10000UL - gvar.video.page[0].pagesize;//(gvar.video.page[0].stridew * gvar.video.page[0].height); | |
107 | + //const unsigned int pattern_ofs = 0x10000UL - gvar.video.page[0].pagesize;//(gvar.video.page[0].stridew * gvar.video.page[0].height); | |
108 | 108 | unsigned int i,j,o,o2; |
109 | 109 | int x,y,rx,ry,w,h; |
110 | 110 | unsigned int overdraw = 1; // how many pixels to "overdraw" so that moving sprites with edge pixels don't leave streaks. |
@@ -115,7 +115,7 @@ int main(int argc,char **argv) { | ||
115 | 115 | //4 this dose the sprite? wwww |
116 | 116 | /* fill pattern offset with a distinctive pattern */ |
117 | 117 | for (i=0;i < gvar.video.page[0].width;i++) { |
118 | - o = (i >> 2) + pattern_ofs; | |
118 | + o = (i >> 2) + gvar.video.page[1].pattern_ofs; | |
119 | 119 | vga_write_sequencer(0x02/*map mask*/,1 << (i&3)); |
120 | 120 | for (j=0;j < VMEMHEIGHT;j++,o += gvar.video.page[0].stridew) |
121 | 121 | vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15! |
@@ -146,7 +146,7 @@ int main(int argc,char **argv) { | ||
146 | 146 | /* block copy pattern to where we will draw the sprite */ |
147 | 147 | vga_setup_wm1_block_copy(); |
148 | 148 | o2 = gvar.video.page[0].pagesize; |
149 | - o = pattern_ofs + (ry * gvar.video.page[0].stridew) + (rx >> 2); // source offscreen | |
149 | + o = gvar.video.page[1].pattern_ofs + (ry * gvar.video.page[0].stridew) + (rx >> 2); // source offscreen | |
150 | 150 | for (i=0;i < h;i++,o += gvar.video.page[0].stridew,o2 += (w >> 2)) vga_wm1_mem_block_copy(o2,o,w >> 2); |
151 | 151 | /* must restore Write Mode 0/Read Mode 0 for this code to continue drawing normally */ |
152 | 152 | vga_restore_rm0wm0(); |
@@ -278,7 +278,8 @@ int main(int argc,char **argv) { | ||
278 | 278 | if (dh < 40) dh_step = 1; |
279 | 279 | } |
280 | 280 | } |
281 | - | |
281 | +//uint16_t | |
282 | + printf("%u %u\n", (gvar.video.page[1].data), 0x10000UL - gvar.video.page[0].pagesize); | |
282 | 283 | VGAmodeX(0, 1, &gvar); |
283 | 284 | free(vrl_lineoffs); |
284 | 285 | buffer = NULL; |
@@ -197,6 +197,7 @@ modexDefaultPage(page_t *p) | ||
197 | 197 | page.tilesh=page.height/TILEWH; |
198 | 198 | page.tilemidposscreenx = page.tw/2; |
199 | 199 | page.tilemidposscreeny = (page.th/2)+1; |
200 | + page.pattern_ofs=0; | |
200 | 201 | page.stridew=page.width/4; |
201 | 202 | page.pagesize = (word)(page.stridew)*page.height; |
202 | 203 | page.pi=page.width*4; |
@@ -224,6 +225,7 @@ modexNextPage(page_t *p) { | ||
224 | 225 | result.tilesw = p->tilesw; |
225 | 226 | result.tilesh = p->tilesh; |
226 | 227 | result.stridew=p->stridew; |
228 | + result.pattern_ofs = 0x10000UL - p->pagesize; | |
227 | 229 | result.pagesize = p->pagesize; |
228 | 230 | result.pi=result.width*4; |
229 | 231 | result.id = p->id+1; |
@@ -248,6 +250,7 @@ modexNextPageFlexibleSize(page_t *p, word x, word y) | ||
248 | 250 | result.th = result.sh/TILEWH; |
249 | 251 | result.tilesw=result.width/TILEWH; |
250 | 252 | result.tilesh=result.height/TILEWH; |
253 | + result.pattern_ofs=0x10000UL - (p->pattern_ofs+p->pagesize); | |
251 | 254 | result.id = p->id+1; |
252 | 255 | result.stridew=p->sw/4;//result.width/4; |
253 | 256 | result.pagesize = (word)(result.stridew)*result.height; |
@@ -374,6 +374,7 @@ void near mapScrollRight(map_view_t *mv, player_t *player, word id, word plid) | ||
374 | 374 | mv[id].tx++; |
375 | 375 | /* Snap the origin forward */ |
376 | 376 | mv[id].page->data += 4; |
377 | + mv[id].page->pattern_ofs += 4; | |
377 | 378 | mv[id].page->dx = mv[id].map->tiles->tileWidth; |
378 | 379 | } |
379 | 380 |
@@ -403,6 +404,7 @@ void near mapScrollLeft(map_view_t *mv, player_t *player, word id, word plid) | ||
403 | 404 | mv[id].tx--; |
404 | 405 | /* Snap the origin backward */ |
405 | 406 | mv[id].page->data -= 4; |
407 | + mv[id].page->pattern_ofs -= 4; | |
406 | 408 | mv[id].page->dx = mv[id].map->tiles->tileWidth; |
407 | 409 | } |
408 | 410 |
@@ -432,6 +434,7 @@ void near mapScrollUp(map_view_t *mv, player_t *player, word id, word plid) | ||
432 | 434 | mv[id].ty--; |
433 | 435 | /* Snap the origin downward */ |
434 | 436 | mv[id].page->data -= mv[id].page->pi; |
437 | + mv[id].page->pattern_ofs -= mv[id].page->pi; | |
435 | 438 | mv[id].page->dy = mv[id].map->tiles->tileHeight; |
436 | 439 | } |
437 | 440 |
@@ -460,6 +463,7 @@ void near mapScrollDown(map_view_t *mv, player_t *player, word id, word plid) | ||
460 | 463 | mv[id].ty++; |
461 | 464 | /* Snap the origin downward */ |
462 | 465 | mv[id].page->data += mv[id].page->pi; |
466 | + mv[id].page->pattern_ofs += mv[id].page->pi; | |
463 | 467 | mv[id].page->dy = mv[id].map->tiles->tileHeight; |
464 | 468 | } |
465 | 469 |
@@ -489,6 +493,7 @@ void near ScrollRight(map_view_t *mv, player_t *player, word id, word plid) | ||
489 | 493 | // vga_restore_rm0wm0(); |
490 | 494 | /* Snap the origin forward */ |
491 | 495 | mv[id].page->data += 4; |
496 | + mv[id].page->pattern_ofs += 4; | |
492 | 497 | mv[id].page->dx = mv[0].map->tiles->tileWidth; |
493 | 498 | } |
494 | 499 | } |
@@ -506,6 +511,7 @@ void near ScrollLeft(map_view_t *mv, player_t *player, word id, word plid) | ||
506 | 511 | // vga_restore_rm0wm0(); |
507 | 512 | /* Snap the origin backward */ |
508 | 513 | mv[id].page->data -= 4; |
514 | + mv[id].page->pattern_ofs -=4; | |
509 | 515 | mv[id].page->dx = mv[0].map->tiles->tileWidth; |
510 | 516 | } |
511 | 517 | } |
@@ -523,6 +529,7 @@ void near ScrollUp(map_view_t *mv, player_t *player, word id, word plid) | ||
523 | 529 | // vga_restore_rm0wm0(); |
524 | 530 | /* Snap the origin backward */ |
525 | 531 | mv[id].page->data -= mv[id].page->pi; |
532 | + mv[id].page->pattern_ofs -= mv[id].page->pi; | |
526 | 533 | mv[id].page->dy = mv[0].map->tiles->tileWidth; |
527 | 534 | } |
528 | 535 | } |
@@ -540,6 +547,7 @@ void near ScrollDown(map_view_t *mv, player_t *player, word id, word plid) | ||
540 | 547 | // vga_restore_rm0wm0(); |
541 | 548 | /* Snap the origin forward */ |
542 | 549 | mv[id].page->data += mv[id].page->pi; |
550 | + mv[id].page->pattern_ofs += mv[id].page->pi; | |
543 | 551 | mv[id].page->dy = mv[0].map->tiles->tileWidth; |
544 | 552 | } |
545 | 553 | } |
@@ -82,6 +82,7 @@ typedef struct { | ||
82 | 82 | sword tilemidposscreeny; /* middle tile position */ |
83 | 83 | sword tileplayerposscreenx; /* player position on screen */ |
84 | 84 | sword tileplayerposscreeny; /* player position on screen */ |
85 | + uint16_t pattern_ofs; /* doslib vga patter offset www */ | |
85 | 86 | word stridew; /*width/4*/ |
86 | 87 | word pagesize; /* page size */ |
87 | 88 | word pi; /* incremention page by this much to preserve location */ |