L.C 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  3. SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
  4. END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  5. ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  6. IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  7. SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  8. FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  9. CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
  10. AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
  11. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
  12. */
  13. // From linear to SVGA
  14. void gr_bm_ubitblt02_2x(int w, int h, int dx, int dy, int sx, int sy, grs_bitmap * src, grs_bitmap * dest)
  15. {
  16. unsigned char * sbits;
  17. unsigned int offset, EndingOffset, VideoLocation;
  18. int sbpr, dbpr, y1, page, BytesToMove;
  19. sbpr = src->bm_rowsize;
  20. dbpr = dest->bm_rowsize << gr_bitblt_dest_step_shift;
  21. VideoLocation = (unsigned int)dest->bm_data + (dest->bm_rowsize * dy) + dx;
  22. sbits = src->bm_data + ( sbpr*sy ) + sx;
  23. for (y1=0; y1 < h; y1++ ) {
  24. page = VideoLocation >> 16;
  25. offset = VideoLocation & 0xFFFF;
  26. gr_vesa_setpage( page );
  27. EndingOffset = offset+w-1;
  28. if ( EndingOffset <= 0xFFFF )
  29. {
  30. gr_linear_rep_movsd_2x( (void *)sbits, (void *)(offset+0xA0000), w );
  31. VideoLocation += dbpr;
  32. sbits += sbpr;
  33. }
  34. else
  35. {
  36. BytesToMove = 0xFFFF-offset+1;
  37. gr_linear_rep_movsd_2x( (void *)sbits, (void *)(offset+0xA0000), BytesToMove );
  38. page++;
  39. gr_vesa_setpage(page);
  40. gr_linear_rep_movsd_2x( (void *)(sbits+BytesToMove/2), (void *)0xA0000, EndingOffset - 0xFFFF );
  41. VideoLocation += dbpr;
  42. sbits += sbpr;
  43. }
  44. }
  45. }
  46.