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