trunk/src/mame/machine/st0016.c
| r32633 | r32634 | |
| 337 | 337 | /* |
| 338 | 338 | object ram : |
| 339 | 339 | |
| 340 | | each entry is 8 bytes: |
| 340 | each entry is 8 bytes: |
| 341 | 341 | |
| 342 | | 76543210 (bit) |
| 343 | | 0 llllllll |
| 344 | | 1 ---1SSSl |
| 345 | | 2 oooooooo |
| 346 | | 3 fooooooo |
| 347 | | 4 xxxxxxxx |
| 348 | | 5 ------xx |
| 349 | | 6 yyyyyyyy |
| 350 | | 7 ------yy |
| 342 | 76543210 (bit) |
| 343 | 0 llllllll |
| 344 | 1 ---gSSSl |
| 345 | 2 oooooooo |
| 346 | 3 fooooooo |
| 347 | 4 xxxxxxxx |
| 348 | 5 ----XXxx |
| 349 | 6 yyyyyyyy |
| 350 | 7 ----XYyy |
| 351 | 351 | |
| 352 | | 1 - always(?) set |
| 353 | | S - scroll index ? (ports $40-$60, X(word),Y(word) ) |
| 354 | | l - sublist length (8 byte entries -1) |
| 355 | | o - sublist offset (*8 to get real offset) |
| 356 | | f - end of list flag |
| 357 | | x,y - sprite coords |
| 352 | 1 - always(?) set |
| 353 | S - scroll index ? (ports $40-$60, X(word),Y(word) ) |
| 354 | l - sublist length (8 byte entries -1) |
| 355 | o - sublist offset (*8 to get real offset) |
| 356 | f - end of list flag |
| 357 | x,y - sprite coords |
| 358 | |
| 359 | (complete guess) |
| 360 | g - use tile sizes specified in list (global / fixed ones if not set?) (gostop) |
| 361 | X = global X size? |
| 362 | Y = global Y size? |
| 358 | 363 | |
| 359 | | sublist format (8 bytes/entry): |
| 364 | sublist format (8 bytes/entry): |
| 360 | 365 | |
| 361 | | 76543210 |
| 362 | | 0 cccccccc |
| 363 | | 1 cccccccc |
| 364 | | 2 --kkkkkk |
| 365 | | 3 QW------ |
| 366 | | 4 xxxxxxxx |
| 367 | | 5 -B---XXx |
| 368 | | 6 yyyyyyyy |
| 369 | | 7 -----YYy |
| 366 | 76543210 |
| 367 | 0 cccccccc |
| 368 | 1 cccccccc |
| 369 | 2 --kkkkkk |
| 370 | 3 QW------ |
| 371 | 4 xxxxxxxx |
| 372 | 5 -B--XX-x |
| 373 | 6 yyyyyyyy |
| 374 | 7 ----YY-y |
| 370 | 375 | |
| 371 | | c - character code |
| 372 | | k - palette |
| 373 | | QW - flips |
| 374 | | x,y - coords |
| 375 | | XX,YY - size (1<<size) |
| 376 | | B - merge pixel data with prevoius one (8bpp mode - neratte: seta logo and title screen) |
| 376 | c - character code |
| 377 | k - palette |
| 378 | QW - flips |
| 379 | x,y - coords |
| 380 | XX,YY - size (1<<size) |
| 381 | B - merge pixel data with prevoius one (8bpp mode - neratte: seta logo and title screen) |
| 377 | 382 | |
| 378 | 383 | */ |
| 379 | 384 | |
| 380 | 385 | gfx_element *gfx = m_gfxdecode->gfx(st0016_ramgfx); |
| 381 | | int i,j,lx,ly,x,y,code,offset,length,sx,sy,color,flipx,flipy,scrollx,scrolly/*,plx,ply*/; |
| 386 | int i, j, lx, ly, x, y, code, offset, length, sx, sy, color, flipx, flipy, scrollx, scrolly/*,plx,ply*/; |
| 382 | 387 | |
| 383 | 388 | |
| 384 | | for(i=0;i<ST0016_SPR_BANK_SIZE*ST0016_MAX_SPR_BANK;i+=8) |
| 389 | for (i = 0; i < ST0016_SPR_BANK_SIZE*ST0016_MAX_SPR_BANK; i += 8) |
| 385 | 390 | { |
| 386 | | x=st0016_spriteram[i+4]+((st0016_spriteram[i+5]&3)<<8); |
| 387 | | y=st0016_spriteram[i+6]+((st0016_spriteram[i+7]&3)<<8); |
| 391 | x = st0016_spriteram[i + 4] + ((st0016_spriteram[i + 5] & 3) << 8); |
| 392 | y = st0016_spriteram[i + 6] + ((st0016_spriteram[i + 7] & 3) << 8); |
| 388 | 393 | |
| 389 | | scrollx=(st0016_vregs[(((st0016_spriteram[i+1]&0x0f)>>1)<<2)+0x40]+256*st0016_vregs[(((st0016_spriteram[i+1]&0x0f)>>1)<<2)+1+0x40])&0x3ff; |
| 390 | | scrolly=(st0016_vregs[(((st0016_spriteram[i+1]&0x0f)>>1)<<2)+2+0x40]+256*st0016_vregs[(((st0016_spriteram[i+1]&0x0f)>>1)<<2)+3+0x40])&0x3ff; |
| 394 | int use_sizes = (st0016_spriteram[i + 1] & 0x10); |
| 395 | int globalx = (st0016_spriteram[i + 5] & 0x0c)>>2; |
| 396 | int globaly = (st0016_spriteram[i + 7] & 0x0c)>>2; |
| 391 | 397 | |
| 392 | | if(!ISMACS) |
| 393 | | { |
| 394 | | if (x & 0x200) x-= 0x400; //sign |
| 395 | | if (y & 0x200) y-= 0x400; |
| 398 | scrollx = (st0016_vregs[(((st0016_spriteram[i + 1] & 0x0f) >> 1) << 2) + 0x40] + 256 * st0016_vregs[(((st0016_spriteram[i + 1] & 0x0f) >> 1) << 2) + 1 + 0x40]) & 0x3ff; |
| 399 | scrolly = (st0016_vregs[(((st0016_spriteram[i + 1] & 0x0f) >> 1) << 2) + 2 + 0x40] + 256 * st0016_vregs[(((st0016_spriteram[i + 1] & 0x0f) >> 1) << 2) + 3 + 0x40]) & 0x3ff; |
| 396 | 400 | |
| 397 | | if (scrollx & 0x200) scrollx-= 0x400; //sign |
| 398 | | if (scrolly & 0x200) scrolly-= 0x400; |
| 399 | | } |
| 401 | if (!ISMACS) |
| 402 | { |
| 403 | if (x & 0x200) x -= 0x400; //sign |
| 404 | if (y & 0x200) y -= 0x400; |
| 400 | 405 | |
| 401 | | if(ISMACS1) |
| 402 | | { |
| 403 | | if (x & 0x200) x-= 0x400; //sign |
| 404 | | if (y & 0x200) y-= 0x2b0;//0x400; |
| 406 | if (scrollx & 0x200) scrollx -= 0x400; //sign |
| 407 | if (scrolly & 0x200) scrolly -= 0x400; |
| 408 | } |
| 405 | 409 | |
| 406 | | if (scrollx & 0x200) scrollx-= 0x400; //sign |
| 407 | | if (scrolly & 0x200) scrolly-= 0x400; |
| 408 | | } |
| 410 | if (ISMACS1) |
| 411 | { |
| 412 | if (x & 0x200) x -= 0x400; //sign |
| 413 | if (y & 0x200) y -= 0x2b0;//0x400; |
| 409 | 414 | |
| 410 | | x+=scrollx; |
| 411 | | y+=scrolly; |
| 415 | if (scrollx & 0x200) scrollx -= 0x400; //sign |
| 416 | if (scrolly & 0x200) scrolly -= 0x400; |
| 417 | } |
| 412 | 418 | |
| 413 | | if(ISMACS) |
| 414 | | { |
| 415 | | y+=0x20; |
| 416 | | } |
| 419 | x += scrollx; |
| 420 | y += scrolly; |
| 417 | 421 | |
| 418 | | if( st0016_spriteram[i+3]&0x80) /* end of list */ |
| 419 | | break; |
| 422 | if (ISMACS) |
| 423 | { |
| 424 | y += 0x20; |
| 425 | } |
| 420 | 426 | |
| 421 | | offset=st0016_spriteram[i+2]+256*(st0016_spriteram[i+3]); |
| 422 | | offset<<=3; |
| 427 | if (st0016_spriteram[i + 3] & 0x80) /* end of list */ |
| 428 | break; |
| 423 | 429 | |
| 424 | | length=st0016_spriteram[i+0]+1+256*(st0016_spriteram[i+1]&1); |
| 430 | offset = st0016_spriteram[i + 2] + 256 * (st0016_spriteram[i + 3]); |
| 431 | offset <<= 3; |
| 425 | 432 | |
| 433 | length = st0016_spriteram[i + 0] + 1 + 256 * (st0016_spriteram[i + 1] & 1); |
| 434 | |
| 426 | 435 | //plx=(st0016_spriteram[i+5]>>2)&0x3; |
| 427 | 436 | //ply=(st0016_spriteram[i+7]>>2)&0x3; |
| 428 | 437 | |
| 429 | | if(offset<ST0016_SPR_BANK_SIZE*ST0016_MAX_SPR_BANK) |
| 438 | if (offset < ST0016_SPR_BANK_SIZE*ST0016_MAX_SPR_BANK) |
| 430 | 439 | { |
| 431 | | for(j=0;j<length;j++) |
| 440 | for (j = 0; j < length; j++) |
| 432 | 441 | { |
| 433 | | code=st0016_spriteram[offset]+256*st0016_spriteram[offset+1]; |
| 434 | | sx=st0016_spriteram[offset+4]+((st0016_spriteram[offset+5]&1)<<8); |
| 435 | | sy=st0016_spriteram[offset+6]+((st0016_spriteram[offset+7]&1)<<8); |
| 442 | code = st0016_spriteram[offset] + 256 * st0016_spriteram[offset + 1]; |
| 443 | sx = st0016_spriteram[offset + 4] + ((st0016_spriteram[offset + 5] & 1) << 8); |
| 444 | sy = st0016_spriteram[offset + 6] + ((st0016_spriteram[offset + 7] & 1) << 8); |
| 436 | 445 | |
| 437 | | if(ISMACS && !(ISMACS1)) |
| 446 | if (ISMACS && !(ISMACS1)) |
| 438 | 447 | { |
| 439 | | if (sy & 0x100) sy-= 0x200; //yuka & yujan |
| 448 | if (sy & 0x100) sy -= 0x200; //yuka & yujan |
| 440 | 449 | } |
| 441 | 450 | |
| 442 | | if(ISMACS) |
| 451 | if (ISMACS) |
| 443 | 452 | { |
| 444 | | sy=0xe0-sy; |
| 453 | sy = 0xe0 - sy; |
| 445 | 454 | } |
| 446 | 455 | |
| 447 | | sx+=x; |
| 448 | | sy+=y; |
| 449 | | color=st0016_spriteram[offset+2]&0x3f; |
| 450 | | lx=(st0016_spriteram[offset+5]>>2)&3; |
| 451 | | ly=(st0016_spriteram[offset+7]>>2)&3; |
| 452 | | /* |
| 453 | | if(plx |ply) //parent |
| 454 | | { |
| 455 | | lx=plx; |
| 456 | | ly=ply; |
| 457 | | } |
| 458 | | */ |
| 456 | sx += x; |
| 457 | sy += y; |
| 458 | color = st0016_spriteram[offset + 2] & 0x3f; |
| 459 | |
| 460 | if (use_sizes) |
| 461 | { |
| 462 | lx = (st0016_spriteram[offset + 5] >> 2) & 3; |
| 463 | ly = (st0016_spriteram[offset + 7] >> 2) & 3; |
| 464 | } |
| 465 | else |
| 466 | { |
| 467 | lx = globalx; |
| 468 | ly = globaly; |
| 459 | 469 | |
| 460 | | flipx=st0016_spriteram[offset+3]&0x80; |
| 461 | | flipy=st0016_spriteram[offset+3]&0x40; |
| 470 | } |
| 462 | 471 | |
| 463 | | if(ISMACS) |
| 464 | | sy-=(1<<ly)*8; |
| 472 | /* |
| 473 | if(plx |ply) //parent |
| 474 | { |
| 475 | lx=plx; |
| 476 | ly=ply; |
| 477 | } |
| 478 | */ |
| 465 | 479 | |
| 480 | flipx = st0016_spriteram[offset + 3] & 0x80; |
| 481 | flipy = st0016_spriteram[offset + 3] & 0x40; |
| 482 | |
| 483 | if (ISMACS) |
| 484 | sy -= (1 << ly) * 8; |
| 485 | |
| 466 | 486 | { |
| 467 | | int x0,y0,i0=0; |
| 468 | | for(x0=(flipx?((1<<lx)-1):0);x0!=(flipx?-1:(1<<lx));x0+=(flipx?-1:1)) |
| 469 | | for(y0=(flipy?((1<<ly)-1):0);y0!=(flipy?-1:(1<<ly));y0+=(flipy?-1:1)) |
| 487 | int x0, y0, i0 = 0; |
| 488 | for (x0 = (flipx ? ((1 << lx) - 1) : 0); x0 != (flipx ? -1 : (1 << lx)); x0 += (flipx ? -1 : 1)) |
| 489 | for (y0 = (flipy ? ((1 << ly) - 1) : 0); y0 != (flipy ? -1 : (1 << ly)); y0 += (flipy ? -1 : 1)) |
| 470 | 490 | { |
| 471 | | /* custom draw */ |
| 472 | | UINT16 *destline; |
| 473 | | int yloop,xloop; |
| 474 | | int ypos, xpos; |
| 475 | | int tileno; |
| 476 | | const UINT8 *srcgfx; |
| 477 | | int gfxoffs; |
| 478 | | ypos = sy+y0*8+spr_dy; |
| 479 | | xpos = sx+x0*8+spr_dx; |
| 480 | | tileno = (code+i0++)&ST0016_CHAR_BANK_MASK ; |
| 491 | /* custom draw */ |
| 492 | UINT16 *destline; |
| 493 | int yloop, xloop; |
| 494 | int ypos, xpos; |
| 495 | int tileno; |
| 496 | const UINT8 *srcgfx; |
| 497 | int gfxoffs; |
| 498 | ypos = sy + y0 * 8 + spr_dy; |
| 499 | xpos = sx + x0 * 8 + spr_dx; |
| 500 | tileno = (code + i0++)&ST0016_CHAR_BANK_MASK; |
| 481 | 501 | |
| 482 | | gfxoffs = 0; |
| 483 | | srcgfx= gfx->get_data(tileno); |
| 502 | gfxoffs = 0; |
| 503 | srcgfx = gfx->get_data(tileno); |
| 484 | 504 | |
| 485 | | for (yloop=0; yloop<8; yloop++) |
| 486 | | { |
| 487 | | UINT16 drawypos; |
| 505 | for (yloop = 0; yloop < 8; yloop++) |
| 506 | { |
| 507 | UINT16 drawypos; |
| 488 | 508 | |
| 489 | | if (!flipy) {drawypos = ypos+yloop;} else {drawypos = (ypos+8-1)-yloop;} |
| 490 | | destline = &bitmap.pix16(drawypos); |
| 509 | if (!flipy) { drawypos = ypos + yloop; } |
| 510 | else { drawypos = (ypos + 8 - 1) - yloop; } |
| 511 | destline = &bitmap.pix16(drawypos); |
| 491 | 512 | |
| 492 | | for (xloop=0; xloop<8; xloop++) |
| 493 | | { |
| 494 | | UINT16 drawxpos; |
| 495 | | int pixdata; |
| 496 | | pixdata = srcgfx[gfxoffs]; |
| 513 | for (xloop = 0; xloop<8; xloop++) |
| 514 | { |
| 515 | UINT16 drawxpos; |
| 516 | int pixdata; |
| 517 | pixdata = srcgfx[gfxoffs]; |
| 497 | 518 | |
| 498 | | if (!flipx) { drawxpos = xpos+xloop; } else { drawxpos = (xpos+8-1)-xloop; } |
| 519 | if (!flipx) { drawxpos = xpos + xloop; } |
| 520 | else { drawxpos = (xpos + 8 - 1) - xloop; } |
| 499 | 521 | |
| 500 | | if (drawxpos > cliprect.max_x) |
| 501 | | drawxpos -= 512; // wrap around |
| 522 | if (drawxpos > cliprect.max_x) |
| 523 | drawxpos -= 512; // wrap around |
| 502 | 524 | |
| 503 | | if (cliprect.contains(drawxpos, drawypos)) |
| 525 | if (cliprect.contains(drawxpos, drawypos)) |
| 526 | { |
| 527 | if (st0016_spriteram[offset + 5] & 0x40) |
| 504 | 528 | { |
| 505 | | if(st0016_spriteram[offset+5]&0x40) |
| 529 | destline[drawxpos] = (destline[drawxpos] | pixdata << 4) & 0x3ff; |
| 530 | } |
| 531 | else |
| 532 | { |
| 533 | if (ISMACS2) |
| 506 | 534 | { |
| 507 | | destline[drawxpos] =(destline[drawxpos] | pixdata<<4)&0x3ff; |
| 535 | if (pixdata)//|| destline[drawxpos]==UNUSED_PEN) |
| 536 | { |
| 537 | destline[drawxpos] = pixdata + (color * 16); |
| 538 | } |
| 508 | 539 | } |
| 509 | 540 | else |
| 510 | 541 | { |
| 511 | | if(ISMACS2) |
| 542 | if (pixdata || destline[drawxpos] == UNUSED_PEN) |
| 512 | 543 | { |
| 513 | | if(pixdata )//|| destline[drawxpos]==UNUSED_PEN) |
| 514 | | { |
| 515 | | destline[drawxpos] = pixdata + (color*16); |
| 516 | | } |
| 544 | destline[drawxpos] = pixdata + (color * 16); |
| 517 | 545 | } |
| 518 | | else |
| 519 | | { |
| 520 | | if(pixdata || destline[drawxpos]==UNUSED_PEN) |
| 521 | | { |
| 522 | | destline[drawxpos] = pixdata + (color*16); |
| 523 | | } |
| 524 | | } |
| 525 | 546 | } |
| 526 | 547 | } |
| 548 | } |
| 527 | 549 | |
| 528 | | gfxoffs++; |
| 529 | | } |
| 550 | gfxoffs++; |
| 530 | 551 | } |
| 531 | 552 | } |
| 553 | } |
| 532 | 554 | } |
| 533 | | offset+=8; |
| 534 | | if(offset>=ST0016_SPR_BANK_SIZE*ST0016_MAX_SPR_BANK) |
| 555 | offset += 8; |
| 556 | if (offset >= ST0016_SPR_BANK_SIZE*ST0016_MAX_SPR_BANK) |
| 535 | 557 | break; |
| 536 | 558 | } |
| 537 | 559 | } |
| r32633 | r32634 | |
| 582 | 604 | } |
| 583 | 605 | |
| 584 | 606 | |
| 585 | | void st0016_cpu_device::draw_bgmap(bitmap_ind16 &bitmap,const rectangle &cliprect, int priority) |
| 607 | void st0016_cpu_device::draw_bgmap(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority) |
| 586 | 608 | { |
| 587 | 609 | gfx_element *gfx = m_gfxdecode->gfx(st0016_ramgfx); |
| 588 | 610 | int j; |
| 589 | 611 | //for(j=0x40-8;j>=0;j-=8) |
| 590 | | for(j=0;j<0x40;j+=8) |
| 612 | for (j = 0; j < 0x40; j += 8) |
| 591 | 613 | { |
| 592 | | if(st0016_vregs[j+1] && ((priority && (st0016_vregs[j+3]==0xff))||((!priority)&&(st0016_vregs[j+3]!=0xff)))) |
| 614 | if (st0016_vregs[j + 1] && ((priority && (st0016_vregs[j + 3] == 0xff)) || ((!priority) && (st0016_vregs[j + 3] != 0xff)))) |
| 593 | 615 | { |
| 594 | | int x,y,code,color,flipx,flipy; |
| 595 | | int i=st0016_vregs[j+1]*0x1000; |
| 596 | | for(x=0;x<32*2;x++) |
| 597 | | for(y=0;y<8*4;y++) |
| 616 | int x, y, code, color, flipx, flipy; |
| 617 | int i = st0016_vregs[j + 1] * 0x1000; |
| 618 | |
| 619 | for (x = 0; x < 32 * 2; x++) |
| 620 | { |
| 621 | for (y = 0; y < 8 * 4; y++) |
| 598 | 622 | { |
| 599 | | code=st0016_spriteram[i]+256*st0016_spriteram[i+1]; |
| 600 | | color=st0016_spriteram[i+2]&0x3f; |
| 623 | code = st0016_spriteram[i] + 256 * st0016_spriteram[i + 1]; |
| 624 | color = st0016_spriteram[i + 2] & 0x3f; |
| 601 | 625 | |
| 602 | | flipx=st0016_spriteram[i+3]&0x80; |
| 603 | | flipy=st0016_spriteram[i+3]&0x40; |
| 626 | flipx = st0016_spriteram[i + 3] & 0x80; |
| 627 | flipy = st0016_spriteram[i + 3] & 0x40; |
| 604 | 628 | |
| 605 | | if(priority) |
| 629 | if (priority) |
| 606 | 630 | { |
| 607 | | gfx->transpen(bitmap,cliprect, |
| 608 | | code, |
| 609 | | color, |
| 610 | | flipx,flipy, |
| 611 | | x*8+spr_dx,y*8+spr_dy,0); |
| 631 | gfx->transpen(bitmap, cliprect, |
| 632 | code, |
| 633 | color, |
| 634 | flipx, flipy, |
| 635 | x * 8 + spr_dx, y * 8 + spr_dy, 0); |
| 612 | 636 | } |
| 613 | 637 | else |
| 614 | 638 | { |
| 615 | | UINT16 *destline; |
| 616 | | int yloop,xloop; |
| 617 | | int ypos, xpos; |
| 618 | | const UINT8 *srcgfx; |
| 619 | | int gfxoffs; |
| 620 | | ypos = y*8+spr_dy;//+((st0016_vregs[j+2]==0xaf)?0x50:0);//hack for mayjinsen title screen |
| 621 | | xpos = x*8+spr_dx; |
| 622 | | gfxoffs = 0; |
| 623 | | srcgfx= gfx->get_data(code); |
| 639 | UINT16 *destline; |
| 640 | int yloop, xloop; |
| 641 | int ypos, xpos; |
| 642 | const UINT8 *srcgfx; |
| 643 | int gfxoffs; |
| 644 | ypos = y * 8 + spr_dy;//+((st0016_vregs[j+2]==0xaf)?0x50:0);//hack for mayjinsen title screen |
| 645 | xpos = x * 8 + spr_dx; |
| 646 | gfxoffs = 0; |
| 647 | srcgfx = gfx->get_data(code); |
| 624 | 648 | |
| 625 | | for (yloop=0; yloop<8; yloop++) |
| 626 | | { |
| 627 | | UINT16 drawypos; |
| 649 | for (yloop = 0; yloop < 8; yloop++) |
| 650 | { |
| 651 | UINT16 drawypos; |
| 628 | 652 | |
| 629 | | if (!flipy) {drawypos = ypos+yloop;} else {drawypos = (ypos+8-1)-yloop;} |
| 630 | | destline = &bitmap.pix16(drawypos); |
| 653 | if (!flipy) { drawypos = ypos + yloop; } |
| 654 | else { drawypos = (ypos + 8 - 1) - yloop; } |
| 655 | destline = &bitmap.pix16(drawypos); |
| 631 | 656 | |
| 632 | | for (xloop=0; xloop<8; xloop++) |
| 633 | | { |
| 634 | | UINT16 drawxpos; |
| 635 | | int pixdata; |
| 636 | | pixdata = srcgfx[gfxoffs]; |
| 657 | for (xloop = 0; xloop<8; xloop++) |
| 658 | { |
| 659 | UINT16 drawxpos; |
| 660 | int pixdata; |
| 661 | pixdata = srcgfx[gfxoffs]; |
| 637 | 662 | |
| 638 | | if (!flipx) { drawxpos = xpos+xloop; } else { drawxpos = (xpos+8-1)-xloop; } |
| 663 | if (!flipx) { drawxpos = xpos + xloop; } |
| 664 | else { drawxpos = (xpos + 8 - 1) - xloop; } |
| 639 | 665 | |
| 640 | | if (drawxpos > cliprect.max_x) |
| 641 | | drawxpos -= 512; // wrap around |
| 666 | if (drawxpos > cliprect.max_x) |
| 667 | drawxpos -= 512; // wrap around |
| 642 | 668 | |
| 643 | | if (cliprect.contains(drawxpos, drawypos)) |
| 669 | if (cliprect.contains(drawxpos, drawypos)) |
| 670 | { |
| 671 | if (st0016_vregs[j + 7] == 0x12) |
| 672 | destline[drawxpos] = (destline[drawxpos] | (pixdata << 4)) & 0x3ff; |
| 673 | else |
| 644 | 674 | { |
| 645 | | if(st0016_vregs[j+7]==0x12) |
| 646 | | destline[drawxpos] = (destline[drawxpos] | (pixdata<<4))&0x3ff; |
| 647 | | else |
| 675 | if (ISMACS2) |
| 648 | 676 | { |
| 649 | | if(ISMACS2) |
| 677 | if (pixdata)// || destline[drawxpos]==UNUSED_PEN) |
| 650 | 678 | { |
| 651 | | if(pixdata)// || destline[drawxpos]==UNUSED_PEN) |
| 652 | | { |
| 653 | | destline[drawxpos] = pixdata + (color*16); |
| 654 | | } |
| 679 | destline[drawxpos] = pixdata + (color * 16); |
| 655 | 680 | } |
| 656 | | else |
| 681 | } |
| 682 | else |
| 683 | { |
| 684 | if (pixdata || destline[drawxpos] == UNUSED_PEN) |
| 657 | 685 | { |
| 658 | | if(pixdata || destline[drawxpos]==UNUSED_PEN) |
| 659 | | { |
| 660 | | destline[drawxpos] = pixdata + (color*16); |
| 661 | | } |
| 686 | destline[drawxpos] = pixdata + (color * 16); |
| 662 | 687 | } |
| 688 | } |
| 663 | 689 | |
| 664 | | } |
| 665 | 690 | } |
| 691 | } |
| 666 | 692 | |
| 667 | | gfxoffs++; |
| 693 | gfxoffs++; |
| 668 | 694 | |
| 669 | | } |
| 670 | 695 | } |
| 696 | } |
| 671 | 697 | } |
| 672 | | i+=4; |
| 698 | i += 4; |
| 673 | 699 | } |
| 700 | } |
| 674 | 701 | } |
| 675 | 702 | } |
| 676 | 703 | } |