]> Shamusworld >> Repos - virtualjaguar/blob - src/include/fbmpop4p.h
Adding 1.0.1/2 uncompressed tarballs to tags for historical purposes.
[virtualjaguar] / src / include / fbmpop4p.h
1                 int count=0;\r
2                 uint32 c;\r
3                 paletteRam+=idx*4;\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 cl=c>>4;\r
14                                                 uint32 ch=c&0x0f;\r
15                                                 if (cl)\r
16                                                 {\r
17                                                         *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(cl<<1)+0]);\r
18                                                         *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(cl<<1)+1]);\r
19                                                 }\r
20                                                 else\r
21                                                         current_line_buffer-=2;\r
22                                                 if (ch)\r
23                                                 {\r
24                                                         *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(ch<<1)+0]);\r
25                                                         *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(ch<<1)+1]);\r
26                                                 }\r
27                                                 else\r
28                                                         current_line_buffer-=2;\r
29                                                 count+=1;\r
30                                                 if (count==8) // 8 bytes = a phrase (64 bits)\r
31                                                 {\r
32                                                         ptr-=8*(pitch-1);\r
33                                                         count=0;\r
34                                                 }\r
35                                                 iwidth--;\r
36                                         }\r
37                                 }\r
38                                 else\r
39                                 {\r
40                                         while (iwidth)\r
41                                         {\r
42                                                 c=jaguar_byte_read(ptr++);\r
43                                                 uint32 cl=c>>4;\r
44                                                 uint32 ch=c&0x0f;\r
45                                                 *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(cl<<1)+0]);\r
46                                                 *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(cl<<1)+1]);\r
47                                                 *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(ch<<1)+0]);\r
48                                                 *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(ch<<1)+1]);\r
49                                                 count+=1;\r
50                                                 if (count==8) // 8 bytes = a phrase (64 bits)\r
51                                                 {\r
52                                                         ptr-=8*(pitch-1);\r
53                                                         count=0;\r
54                                                 }\r
55                                                 iwidth--;\r
56                                         }\r
57                                 }\r
58                         }\r
59                         else\r
60                         {\r
61                                 if (flags&FLAGS_TRANSPARENT)\r
62                                 {\r
63                                         while (iwidth)\r
64                                         {\r
65                                                 c=jaguar_byte_read(ptr++);\r
66                                                 uint32 cl=c>>4;\r
67                                                 uint32 ch=c&0x0f;\r
68                                                 if (cl)\r
69                                                 {\r
70                                                         *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(cl<<1)+0]);\r
71                                                         *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(cl<<1)+1]);\r
72                                                 }\r
73                                                 else\r
74                                                         current_line_buffer+=2;\r
75                                                 if (ch)\r
76                                                 {\r
77                                                         *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(ch<<1)+0]);\r
78                                                         *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(ch<<1)+1]);\r
79                                                 }\r
80                                                 else\r
81                                                         current_line_buffer+=2;\r
82                                                 count+=1;\r
83                                                 if (count==8) // 8 bytes = a phrase (64 bits)\r
84                                                 {\r
85                                                         ptr+=8*(pitch-1);\r
86                                                         count=0;\r
87                                                 }\r
88                                                 iwidth--;\r
89                                         }\r
90                                 }\r
91                                 else\r
92                                 {\r
93                                         while (iwidth)\r
94                                         {\r
95                                                 c=jaguar_byte_read(ptr++);\r
96                                                 uint32 cl=c>>4;\r
97                                                 uint32 ch=c&0x0f;\r
98                                                 *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(cl<<1)+0]);\r
99                                                 *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(cl<<1)+1]);\r
100                                                 *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(ch<<1)+0]);\r
101                                                 *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(ch<<1)+1]);\r
102                                                 iwidth--;\r
103                                                 count+=1;\r
104                                                 if (count==8) // 8 bytes = a phrase (64 bits)\r
105                                                 {\r
106                                                         ptr+=8*(pitch-1);\r
107                                                         count=0;\r
108                                                 }\r
109                                         }\r
110                                 }\r
111                         }\r
112                 }\r
113                 else\r
114                 {\r
115                         if (flags&FLAGS_HFLIP)\r
116                         {\r
117                                 if (flags&FLAGS_TRANSPARENT)\r
118                                 {\r
119                                         while (iwidth)\r
120                                         {\r
121                                                 c=jaguar_byte_read(ptr++);\r
122                                                 uint32 cl=c>>4;\r
123                                                 uint32 ch=c&0x0f;\r
124                                                 if (cl)\r
125                                                 {\r
126                                                         *current_line_buffer--=paletteRam[(cl<<1)+0];\r
127                                                         *current_line_buffer--=paletteRam[(cl<<1)+1];\r
128                                                 }\r
129                                                 else\r
130                                                         current_line_buffer-=2;\r
131                                                 if (ch)\r
132                                                 {\r
133                                                         *current_line_buffer--=paletteRam[(ch<<1)+0];\r
134                                                         *current_line_buffer--=paletteRam[(ch<<1)+1];\r
135                                                 }\r
136                                                 else\r
137                                                         current_line_buffer-=2;\r
138                                                 count+=1;\r
139                                                 if (count==8) // 8 bytes = a phrase (64 bits)\r
140                                                 {\r
141                                                         ptr-=8*(pitch-1);\r
142                                                         count=0;\r
143                                                 }\r
144                                                 iwidth--;\r
145                                         }\r
146                                 }\r
147                                 else\r
148                                 {\r
149                                         while (iwidth)\r
150                                         {\r
151                                                 c=jaguar_byte_read(ptr++);\r
152                                                 uint32 cl=c>>4;\r
153                                                 uint32 ch=c&0x0f;\r
154                                                 *current_line_buffer--=paletteRam[(cl<<1)+0];\r
155                                                 *current_line_buffer--=paletteRam[(cl<<1)+1];\r
156                                                 *current_line_buffer--=paletteRam[(ch<<1)+0];\r
157                                                 *current_line_buffer--=paletteRam[(ch<<1)+1];\r
158                                                 count+=1;\r
159                                                 if (count==8) // 8 bytes = a phrase (64 bits)\r
160                                                 {\r
161                                                         ptr-=8*(pitch-1);\r
162                                                         count=0;\r
163                                                 }\r
164                                                 iwidth--;\r
165                                         }\r
166                                 }\r
167                         }\r
168                         else\r
169                         {\r
170                                 if (flags&FLAGS_TRANSPARENT)\r
171                                 {\r
172                                         while (iwidth)\r
173                                         {\r
174                                                 c=jaguar_byte_read(ptr++);\r
175                                                 uint32 cl=c>>4;\r
176                                                 uint32 ch=c&0x0f;\r
177                                                 if (cl)\r
178                                                 {\r
179                                                         *current_line_buffer++=paletteRam[(cl<<1)+0];\r
180                                                         *current_line_buffer++=paletteRam[(cl<<1)+1];\r
181                                                 }\r
182                                                 else\r
183                                                         current_line_buffer+=2;\r
184                                                 if (ch)\r
185                                                 {\r
186                                                         *current_line_buffer++=paletteRam[(ch<<1)+0];\r
187                                                         *current_line_buffer++=paletteRam[(ch<<1)+1];\r
188                                                 }\r
189                                                 else\r
190                                                         current_line_buffer+=2;\r
191                                                 count+=1;\r
192                                                 if (count==8) // 8 bytes = a phrase (64 bits)\r
193                                                 {\r
194                                                         ptr+=8*(pitch-1);\r
195                                                         count=0;\r
196                                                 }\r
197                                                 iwidth--;\r
198                                         }\r
199                                 }\r
200                                 else\r
201                                 {\r
202                                         while (iwidth)\r
203                                         {\r
204                                                 c=jaguar_byte_read(ptr++);\r
205                                                 uint32 cl=c>>4;\r
206                                                 uint32 ch=c&0x0f;\r
207                                                 *current_line_buffer++=paletteRam[(cl<<1)+0];\r
208                                                 *current_line_buffer++=paletteRam[(cl<<1)+1];\r
209                                                 *current_line_buffer++=paletteRam[(ch<<1)+0];\r
210                                                 *current_line_buffer++=paletteRam[(ch<<1)+1];\r
211                                                 count+=1;\r
212                                                 if (count==8) // 8 bytes = a phrase (64 bits)\r
213                                                 {\r
214                                                         ptr+=8*(pitch-1);\r
215                                                         count=0;\r
216                                                 }\r
217                                                 iwidth--;\r
218                                         }\r
219                                 }\r
220                         }\r
221                 }\r