]> Shamusworld >> Repos - virtualjaguar/blob - src/include/fbmpop2.h
Initial revision
[virtualjaguar] / src / include / fbmpop2.h
1                 uint32 c;
2                 paletteRam+=idx*2;
3                 if (flags&FLAGS_READMODIFY)
4                 {
5                         if (flags&FLAGS_HFLIP)
6                         {
7                                 if (flags&FLAGS_TRANSPARENT)
8                                 {
9                                         while (iwidth)
10                                         {
11                                                 c=jaguar_byte_read(ptr++);
12                                                 uint32 c0=(c>>6)&0x03;
13                                                 uint32 c1=(c>>4)&0x03;
14                                                 uint32 c2=(c>>2)&0x03;
15                                                 uint32 c3=(c>>0)&0x03;
16
17                                                 if (c0)
18                                                 {
19                                                         *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(c0<<1)+0]);
20                                                         *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(c0<<1)+1]);
21                                                 }
22                                                 else
23                                                         current_line_buffer-=2;
24                                                 if (c1)
25                                                 {
26                                                         *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(c1<<1)+0]);
27                                                         *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(c1<<1)+1]);
28                                                 }
29                                                 else
30                                                         current_line_buffer-=2;
31                                                 if (c2)
32                                                 {
33                                                         *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(c2<<1)+0]);
34                                                         *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(c2<<1)+1]);
35                                                 }
36                                                 else
37                                                         current_line_buffer-=2;
38                                                 if (c3)
39                                                 {
40                                                         *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(c3<<1)+0]);
41                                                         *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(c3<<1)+1]);
42                                                 }
43                                                 else
44                                                         current_line_buffer-=2;
45                                                 iwidth--;
46                                         }
47                                 }
48                                 else
49                                 {
50                                         while (iwidth)
51                                         {
52                                                 c=jaguar_byte_read(ptr++);
53                                                 uint32 c0=(c>>6)&0x03;
54                                                 uint32 c1=(c>>4)&0x03;
55                                                 uint32 c2=(c>>2)&0x03;
56                                                 uint32 c3=(c>>0)&0x03;
57
58                                                 *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(c0<<1)+0]);
59                                                 *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(c0<<1)+1]);
60                                                 *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(c1<<1)+0]);
61                                                 *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(c1<<1)+1]);
62                                                 *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(c2<<1)+0]);
63                                                 *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(c2<<1)+1]);
64                                                 *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(c3<<1)+0]);
65                                                 *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(c3<<1)+1]);
66                                                 iwidth--;
67                                         }
68                                 }
69                         }
70                         else
71                         {
72                                 if (flags&FLAGS_TRANSPARENT)
73                                 {
74                                         while (iwidth)
75                                         {
76                                                 c=jaguar_byte_read(ptr++);
77                                                 uint32 c0=(c>>6)&0x03;
78                                                 uint32 c1=(c>>4)&0x03;
79                                                 uint32 c2=(c>>2)&0x03;
80                                                 uint32 c3=(c>>0)&0x03;
81
82                                                 if (c0)
83                                                 {
84                                                         *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(c0<<1)+0]);
85                                                         *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(c0<<1)+1]);
86                                                 }
87                                                 else
88                                                         current_line_buffer+=2;
89                                                 if (c1)
90                                                 {
91                                                         *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(c1<<1)+0]);
92                                                         *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(c1<<1)+1]);
93                                                 }
94                                                 else
95                                                         current_line_buffer+=2;
96                                                 if (c2)
97                                                 {
98                                                         *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(c2<<1)+0]);
99                                                         *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(c2<<1)+1]);
100                                                 }
101                                                 else
102                                                         current_line_buffer+=2;
103                                                 if (c3)
104                                                 {
105                                                         *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(c3<<1)+0]);
106                                                         *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(c3<<1)+1]);
107                                                 }
108                                                 else
109                                                         current_line_buffer+=2;
110                                                 iwidth--;
111                                         }
112                                 }
113                                 else
114                                 {
115                                         while (iwidth)
116                                         {
117                                                 c=jaguar_byte_read(ptr++);
118                                                 uint32 c0=(c>>6)&0x03;
119                                                 uint32 c1=(c>>4)&0x03;
120                                                 uint32 c2=(c>>2)&0x03;
121                                                 uint32 c3=(c>>0)&0x03;
122
123                                                 *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(c0<<1)+0]);
124                                                 *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(c0<<1)+1]);
125                                                 *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(c1<<1)+0]);
126                                                 *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(c1<<1)+1]);
127                                                 *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(c2<<1)+0]);
128                                                 *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(c2<<1)+1]);
129                                                 *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(c3<<1)+0]);
130                                                 *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(c3<<1)+1]);
131                                                 iwidth--;
132                                         }
133                                 }
134                         }
135                 }
136                 else
137                 {
138                         if (flags&FLAGS_HFLIP)
139                         {
140                                 if (flags&FLAGS_TRANSPARENT)
141                                 {
142                                         while (iwidth)
143                                         {
144                                                 c=jaguar_byte_read(ptr++);
145                                                 uint32 c0=(c>>6)&0x03;
146                                                 uint32 c1=(c>>4)&0x03;
147                                                 uint32 c2=(c>>2)&0x03;
148                                                 uint32 c3=(c>>0)&0x03;
149
150                                                 if (c0)
151                                                 {
152                                                         *current_line_buffer--=paletteRam[(c0<<1)+0];
153                                                         *current_line_buffer--=paletteRam[(c0<<1)+1];
154                                                 }
155                                                 else
156                                                         current_line_buffer-=2;
157                                                 if (c1)
158                                                 {
159                                                         *current_line_buffer--=paletteRam[(c1<<1)+0];
160                                                         *current_line_buffer--=paletteRam[(c1<<1)+1];
161                                                 }
162                                                 else
163                                                         current_line_buffer-=2;
164                                                 if (c2)
165                                                 {
166                                                         *current_line_buffer--=paletteRam[(c2<<1)+0];
167                                                         *current_line_buffer--=paletteRam[(c2<<1)+1];
168                                                 }
169                                                 else
170                                                         current_line_buffer-=2;
171                                                 if (c3)
172                                                 {
173                                                         *current_line_buffer--=paletteRam[(c3<<1)+0];
174                                                         *current_line_buffer--=paletteRam[(c3<<1)+1];
175                                                 }
176                                                 else
177                                                         current_line_buffer-=2;
178                                                 iwidth--;
179                                         }
180                                 }
181                                 else
182                                 {
183                                         while (iwidth)
184                                         {
185                                                 c=jaguar_byte_read(ptr++);
186                                                 uint32 c0=(c>>6)&0x03;
187                                                 uint32 c1=(c>>4)&0x03;
188                                                 uint32 c2=(c>>2)&0x03;
189                                                 uint32 c3=(c>>0)&0x03;
190
191                                                 *current_line_buffer--=paletteRam[(c0<<1)+0];
192                                                 *current_line_buffer--=paletteRam[(c0<<1)+1];
193                                                 *current_line_buffer--=paletteRam[(c1<<1)+0];
194                                                 *current_line_buffer--=paletteRam[(c1<<1)+1];
195                                                 *current_line_buffer--=paletteRam[(c2<<1)+0];
196                                                 *current_line_buffer--=paletteRam[(c2<<1)+1];
197                                                 *current_line_buffer--=paletteRam[(c3<<1)+0];
198                                                 *current_line_buffer--=paletteRam[(c3<<1)+1];
199                                                 iwidth--;
200                                         }
201                                 }
202                         }
203                         else
204                         {
205                                 if (flags&FLAGS_TRANSPARENT)
206                                 {
207                                         while (iwidth)
208                                         {
209                                                 c=jaguar_byte_read(ptr++);
210                                                 uint32 c0=(c>>6)&0x03;
211                                                 uint32 c1=(c>>4)&0x03;
212                                                 uint32 c2=(c>>2)&0x03;
213                                                 uint32 c3=(c>>0)&0x03;
214
215                                                 if (c0)
216                                                 {
217                                                         *current_line_buffer++=paletteRam[(c0<<1)+0];
218                                                         *current_line_buffer++=paletteRam[(c0<<1)+1];
219                                                 }
220                                                 else
221                                                         current_line_buffer+=2;
222                                                 if (c1)
223                                                 {
224                                                         *current_line_buffer++=paletteRam[(c1<<1)+0];
225                                                         *current_line_buffer++=paletteRam[(c1<<1)+1];
226                                                 }
227                                                 else
228                                                         current_line_buffer+=2;
229                                                 if (c2)
230                                                 {
231                                                         *current_line_buffer++=paletteRam[(c2<<1)+0];
232                                                         *current_line_buffer++=paletteRam[(c2<<1)+1];
233                                                 }
234                                                 else
235                                                         current_line_buffer+=2;
236                                                 if (c3)
237                                                 {
238                                                         *current_line_buffer++=paletteRam[(c3<<1)+0];
239                                                         *current_line_buffer++=paletteRam[(c3<<1)+1];
240                                                 }
241                                                 else
242                                                         current_line_buffer+=2;
243                                                 iwidth--;
244                                         }
245                                 }
246                                 else
247                                 {
248                                         while (iwidth)
249                                         {
250                                                 c=jaguar_byte_read(ptr++);
251                                                 uint32 c0=(c>>6)&0x03;
252                                                 uint32 c1=(c>>4)&0x03;
253                                                 uint32 c2=(c>>2)&0x03;
254                                                 uint32 c3=(c>>0)&0x03;
255
256                                                 *current_line_buffer++=paletteRam[(c0<<1)+0];
257                                                 *current_line_buffer++=paletteRam[(c0<<1)+1];
258                                                 *current_line_buffer++=paletteRam[(c1<<1)+0];
259                                                 *current_line_buffer++=paletteRam[(c1<<1)+1];
260                                                 *current_line_buffer++=paletteRam[(c2<<1)+0];
261                                                 *current_line_buffer++=paletteRam[(c2<<1)+1];
262                                                 *current_line_buffer++=paletteRam[(c3<<1)+0];
263                                                 *current_line_buffer++=paletteRam[(c3<<1)+1];
264                                                 iwidth--;
265                                         }
266                                 }
267                         }
268                 }