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