]> Shamusworld >> Repos - virtualjaguar/blob - src/include/fbmpop1p.h
eaed31d29b18a50c0e648ce3bf1edbcf07ab12b1
[virtualjaguar] / src / include / fbmpop1p.h
1
2                 uint32 c;
3                 paletteRam+=(idx<<2);
4                 int count=0;
5                 if (flags&FLAGS_READMODIFY)
6                 {
7                         if (flags&FLAGS_HFLIP)
8                         {
9                                 while (iwidth)
10                                 {
11                                         c=jaguar_byte_read(ptr++);
12                                         
13                                         if (flags&FLAGS_TRANSPARENT)
14                                         {
15                                                 #define PUTPIXEL_1_TB_HFLIP(C) if (C) { *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(1<<1)+0]); *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(1<<1)+1]); } else current_line_buffer-=2; 
16                                                 
17                                                 PUTPIXEL_1_TB_HFLIP(c&0x80)
18                                                 PUTPIXEL_1_TB_HFLIP(c&0x40)
19                                                 PUTPIXEL_1_TB_HFLIP(c&0x20)
20                                                 PUTPIXEL_1_TB_HFLIP(c&0x10)
21                                                 PUTPIXEL_1_TB_HFLIP(c&0x08)
22                                                 PUTPIXEL_1_TB_HFLIP(c&0x04)
23                                                 PUTPIXEL_1_TB_HFLIP(c&0x02)
24                                                 PUTPIXEL_1_TB_HFLIP(c&0x01)
25                                         }
26                                         else
27                                         {
28                                                 #define PUTPIXEL_1_B_HFLIP(C) if (C) { *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(1<<1)+0]); *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(1<<1)+1]); } else { *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[0]); *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[1]); }
29                                                 PUTPIXEL_1_B_HFLIP(c&0x80)
30                                                 PUTPIXEL_1_B_HFLIP(c&0x40)
31                                                 PUTPIXEL_1_B_HFLIP(c&0x20)
32                                                 PUTPIXEL_1_B_HFLIP(c&0x10)
33                                                 PUTPIXEL_1_B_HFLIP(c&0x08)
34                                                 PUTPIXEL_1_B_HFLIP(c&0x04)
35                                                 PUTPIXEL_1_B_HFLIP(c&0x02)
36                                                 PUTPIXEL_1_B_HFLIP(c&0x01)
37                                         }
38                                         count+=1;
39                                         if (count==8) // 8 bytes = a phrase (64 bits)
40                                         {
41                                                 ptr-=8*(pitch-1);
42                                                 count=0;
43                                         }
44                                         iwidth--;
45                                 }
46                         }
47                         else
48                         {
49                                 while (iwidth)
50                                 {
51                                         c=jaguar_byte_read(ptr++);
52                                         
53                                         if (flags&FLAGS_TRANSPARENT)
54                                         {
55                                                 #define PUTPIXEL_1_TB(C) if (C) { *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(1<<1)+0]); *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(1<<1)+1]); } else current_line_buffer+=2; 
56                                                 
57                                                 PUTPIXEL_1_TB(c&0x80)
58                                                 PUTPIXEL_1_TB(c&0x40)
59                                                 PUTPIXEL_1_TB(c&0x20)
60                                                 PUTPIXEL_1_TB(c&0x10)
61                                                 PUTPIXEL_1_TB(c&0x08)
62                                                 PUTPIXEL_1_TB(c&0x04)
63                                                 PUTPIXEL_1_TB(c&0x02)
64                                                 PUTPIXEL_1_TB(c&0x01)
65                                         }
66                                         else
67                                         {
68                                                 #define PUTPIXEL_1_B(C) if (C) { *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(1<<1)+0]); *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(1<<1)+1]); } else { *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[0]); *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[1]); }
69                                                 PUTPIXEL_1_B(c&0x80)
70                                                 PUTPIXEL_1_B(c&0x40)
71                                                 PUTPIXEL_1_B(c&0x20)
72                                                 PUTPIXEL_1_B(c&0x10)
73                                                 PUTPIXEL_1_B(c&0x08)
74                                                 PUTPIXEL_1_B(c&0x04)
75                                                 PUTPIXEL_1_B(c&0x02)
76                                                 PUTPIXEL_1_B(c&0x01)
77                                         }
78                                         count+=1;
79                                         if (count==8) // 8 bytes = a phrase (64 bits)
80                                         {
81                                                 ptr+=8*(pitch-1);
82                                                 count=0;
83                                         }
84                                         iwidth--;
85                                 }
86                         }
87                 }
88                 else
89                 {
90                         if (flags&FLAGS_HFLIP)
91                         {
92                                 while (iwidth)
93                                 {
94                                         c=jaguar_byte_read(ptr++);
95                                         
96                                         if (flags&FLAGS_TRANSPARENT)
97                                         {
98                                                 #define PUTPIXEL_1_T_HFLIP(C) if (C) { *current_line_buffer--=paletteRam[(1<<1)+0]; *current_line_buffer--=paletteRam[(1<<1)+1]; } else current_line_buffer-=2; 
99                                                 
100                                                 PUTPIXEL_1_T_HFLIP(c&0x80)
101                                                 PUTPIXEL_1_T_HFLIP(c&0x40)
102                                                 PUTPIXEL_1_T_HFLIP(c&0x20)
103                                                 PUTPIXEL_1_T_HFLIP(c&0x10)
104                                                 PUTPIXEL_1_T_HFLIP(c&0x08)
105                                                 PUTPIXEL_1_T_HFLIP(c&0x04)
106                                                 PUTPIXEL_1_T_HFLIP(c&0x02)
107                                                 PUTPIXEL_1_T_HFLIP(c&0x01)
108                                         }
109                                         else
110                                         {
111                                                 #define PUTPIXEL_1_HFLIP(C) if (C) { *current_line_buffer--=paletteRam[(1<<1)+0]; *current_line_buffer--=paletteRam[(1<<1)+1]; } else { *current_line_buffer--=paletteRam[0]; *current_line_buffer--=paletteRam[1]; }
112                                                 PUTPIXEL_1_HFLIP(c&0x80)
113                                                 PUTPIXEL_1_HFLIP(c&0x40)
114                                                 PUTPIXEL_1_HFLIP(c&0x20)
115                                                 PUTPIXEL_1_HFLIP(c&0x10)
116                                                 PUTPIXEL_1_HFLIP(c&0x08)
117                                                 PUTPIXEL_1_HFLIP(c&0x04)
118                                                 PUTPIXEL_1_HFLIP(c&0x02)
119                                                 PUTPIXEL_1_HFLIP(c&0x01)
120                                         }
121                                         iwidth--;
122                                         count+=1;
123                                         if (count==8) // 8 bytes = a phrase (64 bits)
124                                         {
125                                                 ptr-=8*(pitch-1);
126                                                 count=0;
127                                         }
128                                 }
129                         }
130                         else
131                         {
132                                 while (iwidth)
133                                 {
134                                         c=jaguar_byte_read(ptr++);
135                                         
136                                         if (flags&FLAGS_TRANSPARENT)
137                                         {
138                                                 #define PUTPIXEL_1_T(C) if (C) { *current_line_buffer++=paletteRam[(1<<1)+0]; *current_line_buffer++=paletteRam[(1<<1)+1]; } else current_line_buffer+=2; 
139                                                 
140                                                 PUTPIXEL_1_T(c&0x80)
141                                                 PUTPIXEL_1_T(c&0x40)
142                                                 PUTPIXEL_1_T(c&0x20)
143                                                 PUTPIXEL_1_T(c&0x10)
144                                                 PUTPIXEL_1_T(c&0x08)
145                                                 PUTPIXEL_1_T(c&0x04)
146                                                 PUTPIXEL_1_T(c&0x02)
147                                                 PUTPIXEL_1_T(c&0x01)
148                                         }
149                                         else
150                                         {
151                                                 #define PUTPIXEL_1(C) if (C) { *current_line_buffer++=paletteRam[(1<<1)+0]; *current_line_buffer++=paletteRam[(1<<1)+1]; } else { *current_line_buffer++=paletteRam[0]; *current_line_buffer++=paletteRam[1]; }
152                                                 PUTPIXEL_1(c&0x80)
153                                                 PUTPIXEL_1(c&0x40)
154                                                 PUTPIXEL_1(c&0x20)
155                                                 PUTPIXEL_1(c&0x10)
156                                                 PUTPIXEL_1(c&0x08)
157                                                 PUTPIXEL_1(c&0x04)
158                                                 PUTPIXEL_1(c&0x02)
159                                                 PUTPIXEL_1(c&0x01)
160                                         }
161                                         count+=1;
162                                         if (count==8) // 8 bytes = a phrase (64 bits)
163                                         {
164                                                 ptr+=8*(pitch-1);
165                                                 count=0;
166                                         }
167                                         iwidth--;
168                                 }
169                         }
170                 }