]> Shamusworld >> Repos - virtualjaguar/blob - src/include/fbmpop16.h
Initial revision
[virtualjaguar] / src / include / fbmpop16.h
1                 if (flags&FLAGS_READMODIFY)
2                 {
3                         if (flags&FLAGS_HFLIP)
4                         {
5                                 while (iwidth)
6                                 {
7                                         if (flags&FLAGS_TRANSPARENT)
8                                         {                                       
9                                                 uint16 data=jaguar_byte_read(ptr++);
10                                                 data<<=8;
11                                                 data|=jaguar_byte_read(ptr++);
12                                                 if (data)
13                                                 {
14                                                         *current_line_buffer--=BLEND_Y(*current_line_buffer,(data>>8));
15                                                         *current_line_buffer--=BLEND_CC(*current_line_buffer,(data&0xff));
16                                                 }
17                                                 else
18                                                         current_line_buffer-=2;
19                                         }
20                                         else
21                                         {
22                                                 *current_line_buffer--=BLEND_Y(*current_line_buffer,jaguar_byte_read(ptr++));
23                                                 *current_line_buffer--=BLEND_CC(*current_line_buffer,jaguar_byte_read(ptr++));
24                                         }
25                                         iwidth--;
26                                 }
27                         }
28                         else
29                         {
30                                 while (iwidth)
31                                 {
32                                         if (flags&FLAGS_TRANSPARENT)
33                                         {                                       
34                                                 uint16 data=jaguar_byte_read(ptr++);
35                                                 data<<=8;
36                                                 data|=jaguar_byte_read(ptr++);
37                                                 if (data)
38                                                 {
39                                                         *current_line_buffer++=BLEND_Y(*current_line_buffer,(data>>8));
40                                                         *current_line_buffer++=BLEND_CC(*current_line_buffer,(data&0xff));
41                                                 }
42                                                 else
43                                                         current_line_buffer+=2;
44                                         }
45                                         else
46                                         {
47                                                 *current_line_buffer++=BLEND_Y(*current_line_buffer,jaguar_byte_read(ptr++));
48                                                 *current_line_buffer++=BLEND_CC(*current_line_buffer,jaguar_byte_read(ptr++));
49                                         }
50                                         iwidth--;
51                                 }
52                         }
53                 }
54                 else
55                 {
56                         if (flags&FLAGS_HFLIP)
57                         {
58                                 while (iwidth)
59                                 {
60                                         if (flags&FLAGS_TRANSPARENT)
61                                         {                                       
62                                                 uint16 data=jaguar_byte_read(ptr++);
63                                                 data<<=8;
64                                                 data|=jaguar_byte_read(ptr++);
65                                                 if (data)
66                                                 {
67                                                         *current_line_buffer--=(data>>8);
68                                                         *current_line_buffer--=(data&0xff);
69                                                 }
70                                                 else
71                                                         current_line_buffer-=2;
72                                         }
73                                         else
74                                         {
75                                                 *current_line_buffer--=jaguar_byte_read(ptr++);
76                                                 *current_line_buffer--=jaguar_byte_read(ptr++);
77                                         }
78                                         iwidth--;
79                                 }
80                         }
81                         else
82                         {
83                                 int count=0;
84
85                                 while (iwidth)
86                                 {
87                                         if (flags&FLAGS_TRANSPARENT)
88                                         {                                       
89                                                 uint16 data=jaguar_byte_read(ptr++);
90                                                 data<<=8;
91                                                 data|=jaguar_byte_read(ptr++);
92                                                 if (data)
93                                                 {
94                                                         *current_line_buffer++=(data>>8);
95                                                         *current_line_buffer++=(data&0xff);
96                                                 }
97                                                 else
98                                                         current_line_buffer+=2;
99                                         }
100                                         else
101                                         {
102                                                 *current_line_buffer++=jaguar_byte_read(ptr++);
103                                                 *current_line_buffer++=jaguar_byte_read(ptr++);
104                                         }                               
105                                         count+=2;
106                                         if (count==8) // 8 bytes = a phrase (64 bits)
107                                         {
108                                                 ptr+=8*(pitch-1);
109                                                 count=0;
110                                         }
111                                         iwidth--;
112                                 }
113                         }
114                 }