source: trunk/src/ddraw/bltFunc.cpp@ 2012

Last change on this file since 2012 was 1746, checked in by hugh, 26 years ago

Fixes to let RA run

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