source: trunk/src/ddraw/new/bltFunc.cpp@ 10367

Last change on this file since 10367 was 3345, checked in by mike, 25 years ago

Experimental fullscreen DDraw

File size: 19.4 KB
Line 
1/* $Id: bltFunc.cpp,v 1.1 2000-04-07 18:21:10 mike Exp $ */
2
3/*
4 * Blitting functions
5 *
6 * Copyright 1999 Markus Montkowski
7 *
8 * Project Odin Software License can be found in LICENSE.TXT
9 *
10 */
11
12#include <memory.h>
13#include <misc.h>
14#include "bltFunc.h"
15
16//
17// Blt Functions
18//
19
20#ifndef USE_ASM
21void __cdecl BltSolid8( char* pDst,
22 char* pSrc,
23 DWORD dwWidth,
24 DWORD dwHeight,
25 DWORD dwPitchDst,
26 DWORD dwPitchSrc)
27{
28 dprintf(("DDRAW:BltSolid8\n"));
29 while(dwHeight)
30 {
31 memcpy(pDst,pSrc,dwWidth);
32 pDst += dwPitchDst;
33 pSrc += dwPitchSrc;
34 dwHeight--;
35 }
36}
37void __cdecl BltSolid16(char* pDst,
38 char* pSrc,
39 DWORD dwWidth,
40 DWORD dwHeight,
41 DWORD dwPitchDst,
42 DWORD dwPitchSrc)
43{
44 dprintf(("DDRAW:BltSolid16\n"));
45 dwWidth *=2;
46 while(dwHeight)
47 {
48 memcpy(pDst,pSrc,dwWidth);
49 pDst += dwPitchDst;
50 pSrc += dwPitchSrc;
51 dwHeight--;
52 }
53}
54void __cdecl BltSolid24(char* pDst,
55 char* pSrc,
56 DWORD dwWidth,
57 DWORD dwHeight,
58 DWORD dwPitchDst,
59 DWORD dwPitchSrc)
60{
61 dprintf(("DDRAW:BltSolid24\n"));
62 dwWidth *=3;
63 while(dwHeight)
64 {
65 memcpy(pDst,pSrc,dwWidth);
66 pDst += dwPitchDst;
67 pSrc += dwPitchSrc;
68 dwHeight--;
69 }
70}
71void __cdecl BltSolid32(char* pDst,
72 char* pSrc,
73 DWORD dwWidth,
74 DWORD dwHeight,
75 DWORD dwPitchDst,
76 DWORD dwPitchSrc)
77{
78 dprintf(("DDRAW:BltSolid32\n"));
79 dwWidth *=4;
80 while(dwHeight)
81 {
82 memcpy(pDst,pSrc,dwWidth);
83 pDst += dwPitchDst;
84 pSrc += dwPitchSrc;
85 dwHeight--;
86 }
87}
88#else
89 #define BltSolid8 BltSolid8ASM
90 #define BltSolid16 BltSolid16ASM
91 #define BltSolid24 BltSolid24ASM
92 #define BltSolid32 BltSolid32ASM
93#endif
94
95// without ColorConversion
96void __cdecl BltSolid8to8( char *pDBDst,
97 char *pFBDst,
98 DWORD dwDstTop,
99 DWORD dwDstLeft,
100 DWORD dwPitchDBDst,
101 DWORD dwPitchFBDst,
102 char *pDBSrc,
103 char *pFBSrc,
104 DWORD dwSrcTop,
105 DWORD dwSrcLeft,
106 DWORD dwWidth,
107 DWORD dwHeight,
108 DWORD dwPitchDBSrc,
109 DWORD dwPitchFBSrc
110 )
111{
112 dprintf(("DDRAW:BltSolid8to8\n"));
113 BltSolid8( pDBDst + dwDstLeft + (dwDstTop*dwPitchDBDst),
114 pDBSrc + dwSrcLeft + (dwSrcTop*dwPitchDBSrc),
115 dwWidth,
116 dwHeight,
117 dwPitchDBDst,
118 dwPitchDBSrc);
119}
120void __cdecl BltSolid16to16( char *pDBDst,
121 char *pFBDst,
122 DWORD dwDstTop,
123 DWORD dwDstLeft,
124 DWORD dwPitchDBDst,
125 DWORD dwPitchFBDst,
126 char *pDBSrc,
127 char *pFBSrc,
128 DWORD dwSrcTop,
129 DWORD dwSrcLeft,
130 DWORD dwWidth,
131 DWORD dwHeight,
132 DWORD dwPitchDBSrc,
133 DWORD dwPitchFBSrc
134 )
135{
136 dprintf(("DDRAW:BltSolid16to16\n"));
137 BltSolid16( pDBDst + (dwDstLeft*2) + (dwDstTop*dwPitchDBDst),
138 pDBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchDBSrc),
139 dwWidth,
140 dwHeight,
141 dwPitchDBDst,
142 dwPitchDBSrc);
143}
144void __cdecl BltSolid24to24( char *pDBDst,
145 char *pFBDst,
146 DWORD dwDstTop,
147 DWORD dwDstLeft,
148 DWORD dwPitchDBDst,
149 DWORD dwPitchFBDst,
150 char *pDBSrc,
151 char *pFBSrc,
152 DWORD dwSrcTop,
153 DWORD dwSrcLeft,
154 DWORD dwWidth,
155 DWORD dwHeight,
156 DWORD dwPitchDBSrc,
157 DWORD dwPitchFBSrc
158 )
159{
160 dprintf(("DDRAW:BltSolid24to24\n"));
161 BltSolid24( pDBDst + (dwDstLeft*3) + (dwDstTop*dwPitchDBDst),
162 pDBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchDBSrc),
163 dwWidth,
164 dwHeight,
165 dwPitchDBDst,
166 dwPitchDBSrc);
167}
168void __cdecl BltSolid32to32( char *pDBDst,
169 char *pFBDst,
170 DWORD dwDstTop,
171 DWORD dwDstLeft,
172 DWORD dwPitchDBDst,
173 DWORD dwPitchFBDst,
174 char *pDBSrc,
175 char *pFBSrc,
176 DWORD dwSrcTop,
177 DWORD dwSrcLeft,
178 DWORD dwWidth,
179 DWORD dwHeight,
180 DWORD dwPitchDBSrc,
181 DWORD dwPitchFBSrc
182 )
183{
184 dprintf(("DDRAW:BltSolid32to32\n"));
185 BltSolid32( pDBDst + (dwDstLeft*4) + (dwDstTop*dwPitchDBDst),
186 pDBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchDBSrc),
187 dwWidth,
188 dwHeight,
189 dwPitchDBDst,
190 dwPitchDBSrc);
191}
192
193// With ColorConversion
194
195// 8 to X bit
196void __cdecl BltSolid8to16( char *pDBDst,
197 char *pFBDst,
198 DWORD dwDstTop,
199 DWORD dwDstLeft,
200 DWORD dwPitchDBDst,
201 DWORD dwPitchFBDst,
202 char *pDBSrc,
203 char *pFBSrc,
204 DWORD dwSrcTop,
205 DWORD dwSrcLeft,
206 DWORD dwWidth,
207 DWORD dwHeight,
208 DWORD dwPitchDBSrc,
209 DWORD dwPitchFBSrc
210 )
211{
212 dprintf(("DDRAW:BltSolid8to16\n"));
213
214 BltSolid8( pFBDst + dwDstLeft + (dwDstTop*dwPitchFBDst),
215 pFBSrc + dwSrcLeft + (dwSrcTop*dwPitchFBSrc),
216 dwWidth,
217 dwHeight,
218 dwPitchFBDst,
219 dwPitchFBSrc);
220 BltSolid16( pDBDst + (dwDstLeft*2) + (dwDstTop*dwPitchDBDst),
221 pDBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchDBSrc),
222 dwWidth,
223 dwHeight,
224 dwPitchDBDst,
225 dwPitchDBSrc);
226
227}
228
229void __cdecl BltSolid8to24( char *pDBDst,
230 char *pFBDst,
231 DWORD dwDstTop,
232 DWORD dwDstLeft,
233 DWORD dwPitchDBDst,
234 DWORD dwPitchFBDst,
235 char *pDBSrc,
236 char *pFBSrc,
237 DWORD dwSrcTop,
238 DWORD dwSrcLeft,
239 DWORD dwWidth,
240 DWORD dwHeight,
241 DWORD dwPitchDBSrc,
242 DWORD dwPitchFBSrc
243 )
244{
245 dprintf(("DDRAW:BltSolid8to24\n"));
246 BltSolid8( pFBDst + dwDstLeft + (dwDstTop*dwPitchFBDst),
247 pFBSrc + dwSrcLeft + (dwSrcTop*dwPitchFBSrc),
248 dwWidth,
249 dwHeight,
250 dwPitchFBDst,
251 dwPitchFBSrc);
252 BltSolid24( pDBDst + (dwDstLeft*3) + (dwDstTop*dwPitchDBDst),
253 pDBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchDBSrc),
254 dwWidth,
255 dwHeight,
256 dwPitchDBDst,
257 dwPitchDBSrc);
258}
259void __cdecl BltSolid8to32( char *pDBDst,
260 char *pFBDst,
261 DWORD dwDstTop,
262 DWORD dwDstLeft,
263 DWORD dwPitchDBDst,
264 DWORD dwPitchFBDst,
265 char *pDBSrc,
266 char *pFBSrc,
267 DWORD dwSrcTop,
268 DWORD dwSrcLeft,
269 DWORD dwWidth,
270 DWORD dwHeight,
271 DWORD dwPitchDBSrc,
272 DWORD dwPitchFBSrc
273 )
274{
275 dprintf(("DDRAW:BltSolid8to32\n"));
276 BltSolid8( pFBDst + dwDstLeft + (dwDstTop*dwPitchFBDst),
277 pFBSrc + dwSrcLeft + (dwSrcTop*dwPitchFBSrc),
278 dwWidth,
279 dwHeight,
280 dwPitchFBDst,
281 dwPitchFBSrc);
282 BltSolid32( pDBDst + (dwDstLeft*4) + (dwDstTop*dwPitchDBDst),
283 pDBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchDBSrc),
284 dwWidth,
285 dwHeight,
286 dwPitchDBDst,
287 dwPitchDBSrc);
288}
289
290// 16 to X bit
291void __cdecl BltSolid16to8( char *pDBDst,
292 char *pFBDst,
293 DWORD dwDstTop,
294 DWORD dwDstLeft,
295 DWORD dwPitchDBDst,
296 DWORD dwPitchFBDst,
297 char *pDBSrc,
298 char *pFBSrc,
299 DWORD dwSrcTop,
300 DWORD dwSrcLeft,
301 DWORD dwWidth,
302 DWORD dwHeight,
303 DWORD dwPitchDBSrc,
304 DWORD dwPitchFBSrc
305 )
306{
307 dprintf(("DDRAW:BltSolid16to8\n"));
308 BltSolid8( pDBDst + dwDstLeft + (dwDstTop*dwPitchDBDst),
309 pDBSrc + dwSrcLeft + (dwSrcTop*dwPitchDBSrc),
310 dwWidth,
311 dwHeight,
312 dwPitchDBDst,
313 dwPitchDBSrc);
314 BltSolid16( pFBDst + (dwDstLeft*2) + (dwDstTop*dwPitchFBDst),
315 pFBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchFBSrc),
316 dwWidth,
317 dwHeight,
318 dwPitchFBDst,
319 dwPitchFBSrc);
320}
321
322void __cdecl BltSolid16to24( char *pDBDst,
323 char *pFBDst,
324 DWORD dwDstTop,
325 DWORD dwDstLeft,
326 DWORD dwPitchDBDst,
327 DWORD dwPitchFBDst,
328 char *pDBSrc,
329 char *pFBSrc,
330 DWORD dwSrcTop,
331 DWORD dwSrcLeft,
332 DWORD dwWidth,
333 DWORD dwHeight,
334 DWORD dwPitchDBSrc,
335 DWORD dwPitchFBSrc
336 )
337{
338 dprintf(("DDRAW:BltSolid16to24\n"));
339 BltSolid24( pDBDst + (dwDstLeft*3) + (dwDstTop*dwPitchDBDst),
340 pDBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchDBSrc),
341 dwWidth,
342 dwHeight,
343 dwPitchDBDst,
344 dwPitchDBSrc);
345 BltSolid16( pFBDst + (dwDstLeft*2) + (dwDstTop*dwPitchFBDst),
346 pFBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchFBSrc),
347 dwWidth,
348 dwHeight,
349 dwPitchFBDst,
350 dwPitchFBSrc);
351}
352void __cdecl BltSolid16to32( char *pDBDst,
353 char *pFBDst,
354 DWORD dwDstTop,
355 DWORD dwDstLeft,
356 DWORD dwPitchDBDst,
357 DWORD dwPitchFBDst,
358 char *pDBSrc,
359 char *pFBSrc,
360 DWORD dwSrcTop,
361 DWORD dwSrcLeft,
362 DWORD dwWidth,
363 DWORD dwHeight,
364 DWORD dwPitchDBSrc,
365 DWORD dwPitchFBSrc
366 )
367{
368 dprintf(("DDRAW:BltSolid16to32\n"));
369 BltSolid32( pDBDst + (dwDstLeft*4) + (dwDstTop*dwPitchDBDst),
370 pDBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchDBSrc),
371 dwWidth,
372 dwHeight,
373 dwPitchDBDst,
374 dwPitchDBSrc);
375 BltSolid16( pFBDst + (dwDstLeft*2) + (dwDstTop*dwPitchFBDst),
376 pFBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchFBSrc),
377 dwWidth,
378 dwHeight,
379 dwPitchFBDst,
380 dwPitchFBSrc);
381}
382
383// 24 to X bit
384void __cdecl BltSolid24to8( char *pDBDst,
385 char *pFBDst,
386 DWORD dwDstTop,
387 DWORD dwDstLeft,
388 DWORD dwPitchDBDst,
389 DWORD dwPitchFBDst,
390 char *pDBSrc,
391 char *pFBSrc,
392 DWORD dwSrcTop,
393 DWORD dwSrcLeft,
394 DWORD dwWidth,
395 DWORD dwHeight,
396 DWORD dwPitchDBSrc,
397 DWORD dwPitchFBSrc
398 )
399{
400 dprintf(("DDRAW:BltSolid24to8\n"));
401 BltSolid8( pDBDst + dwDstLeft + (dwDstTop*dwPitchDBDst),
402 pDBSrc + dwSrcLeft + (dwSrcTop*dwPitchDBSrc),
403 dwWidth,
404 dwHeight,
405 dwPitchDBDst,
406 dwPitchDBSrc);
407 BltSolid24( pFBDst + (dwDstLeft*3) + (dwDstTop*dwPitchFBDst),
408 pFBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchFBSrc),
409 dwWidth,
410 dwHeight,
411 dwPitchFBDst,
412 dwPitchFBSrc);
413}
414void __cdecl BltSolid24to16( char *pDBDst,
415 char *pFBDst,
416 DWORD dwDstTop,
417 DWORD dwDstLeft,
418 DWORD dwPitchDBDst,
419 DWORD dwPitchFBDst,
420 char *pDBSrc,
421 char *pFBSrc,
422 DWORD dwSrcTop,
423 DWORD dwSrcLeft,
424 DWORD dwWidth,
425 DWORD dwHeight,
426 DWORD dwPitchDBSrc,
427 DWORD dwPitchFBSrc
428 )
429{
430 dprintf(("DDRAW:BltSolid24to16\n"));
431 BltSolid16( pDBDst + (dwDstLeft*2) + (dwDstTop*dwPitchDBDst),
432 pDBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchDBSrc),
433 dwWidth,
434 dwHeight,
435 dwPitchDBDst,
436 dwPitchDBSrc);
437 BltSolid24( pFBDst + (dwDstLeft*3) + (dwDstTop*dwPitchFBDst),
438 pFBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchFBSrc),
439 dwWidth,
440 dwHeight,
441 dwPitchFBDst,
442 dwPitchFBSrc);
443}
444void __cdecl BltSolid24to32( char *pDBDst,
445 char *pFBDst,
446 DWORD dwDstTop,
447 DWORD dwDstLeft,
448 DWORD dwPitchDBDst,
449 DWORD dwPitchFBDst,
450 char *pDBSrc,
451 char *pFBSrc,
452 DWORD dwSrcTop,
453 DWORD dwSrcLeft,
454 DWORD dwWidth,
455 DWORD dwHeight,
456 DWORD dwPitchDBSrc,
457 DWORD dwPitchFBSrc
458 )
459{
460 dprintf(("DDRAW:BltSolid24to32\n"));
461 BltSolid32( pDBDst + (dwDstLeft*4) + (dwDstTop*dwPitchDBDst),
462 pDBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchDBSrc),
463 dwWidth,
464 dwHeight,
465 dwPitchDBDst,
466 dwPitchDBSrc);
467 BltSolid24( pFBDst + (dwDstLeft*3) + (dwDstTop*dwPitchFBDst),
468 pFBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchFBSrc),
469 dwWidth,
470 dwHeight,
471 dwPitchFBDst,
472 dwPitchFBSrc);
473}
474
475// 32 to X bit
476void __cdecl BltSolid32to8( char *pDBDst,
477 char *pFBDst,
478 DWORD dwDstTop,
479 DWORD dwDstLeft,
480 DWORD dwPitchDBDst,
481 DWORD dwPitchFBDst,
482 char *pDBSrc,
483 char *pFBSrc,
484 DWORD dwSrcTop,
485 DWORD dwSrcLeft,
486 DWORD dwWidth,
487 DWORD dwHeight,
488 DWORD dwPitchDBSrc,
489 DWORD dwPitchFBSrc
490 )
491{
492 dprintf(("DDRAW:BltSolid32to8\n"));
493 BltSolid8( pDBDst + dwDstLeft + (dwDstTop*dwPitchDBDst),
494 pDBSrc + dwSrcLeft + (dwSrcTop*dwPitchDBSrc),
495 dwWidth,
496 dwHeight,
497 dwPitchDBDst,
498 dwPitchDBSrc);
499 BltSolid32( pFBDst + (dwDstLeft*4) + (dwDstTop*dwPitchFBDst),
500 pFBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchFBSrc),
501 dwWidth,
502 dwHeight,
503 dwPitchFBDst,
504 dwPitchFBSrc);
505}
506void __cdecl BltSolid32to16( char *pDBDst,
507 char *pFBDst,
508 DWORD dwDstTop,
509 DWORD dwDstLeft,
510 DWORD dwPitchDBDst,
511 DWORD dwPitchFBDst,
512 char *pDBSrc,
513 char *pFBSrc,
514 DWORD dwSrcTop,
515 DWORD dwSrcLeft,
516 DWORD dwWidth,
517 DWORD dwHeight,
518 DWORD dwPitchDBSrc,
519 DWORD dwPitchFBSrc
520 )
521{
522 dprintf(("DDRAW:BltSolid32to16\n"));
523 BltSolid16( pDBDst + (dwDstLeft*2) + (dwDstTop*dwPitchDBDst),
524 pDBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchDBSrc),
525 dwWidth,
526 dwHeight,
527 dwPitchDBDst,
528 dwPitchDBSrc);
529 BltSolid32( pFBDst + (dwDstLeft*4) + (dwDstTop*dwPitchFBDst),
530 pFBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchFBSrc),
531 dwWidth,
532 dwHeight,
533 dwPitchFBDst,
534 dwPitchFBSrc);
535}
536
537void __cdecl BltSolid32to24( char *pDBDst,
538 char *pFBDst,
539 DWORD dwDstTop,
540 DWORD dwDstLeft,
541 DWORD dwPitchDBDst,
542 DWORD dwPitchFBDst,
543 char *pDBSrc,
544 char *pFBSrc,
545 DWORD dwSrcTop,
546 DWORD dwSrcLeft,
547 DWORD dwWidth,
548 DWORD dwHeight,
549 DWORD dwPitchDBSrc,
550 DWORD dwPitchFBSrc
551 )
552{
553 dprintf(("DDRAW:BltSolid32to24\n"));
554 BltSolid24( pDBDst + (dwDstLeft*3) + (dwDstTop*dwPitchDBDst),
555 pDBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchDBSrc),
556 dwWidth,
557 dwHeight,
558 dwPitchDBDst,
559 dwPitchDBSrc);
560 BltSolid32( pFBDst + (dwDstLeft*4) + (dwDstTop*dwPitchFBDst),
561 pFBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchFBSrc),
562 dwWidth,
563 dwHeight,
564 dwPitchFBDst,
565 dwPitchFBSrc);
566}
567
Note: See TracBrowser for help on using the repository browser.