]> Shamusworld >> Repos - virtualjaguar/blob - src/include/zbmpop8p.h
Fixed bitmap clipping
[virtualjaguar] / src / include / zbmpop8p.h
1                 uint8   *paletteRam=&tom_ram_8[0x400];
2                 paletteRam+=(idx&0x1)*256*2;
3                 if (flags&FLAGS_READMODIFY)
4                 {
5                         if (flags&FLAGS_HFLIP)
6                         {
7                                 while (scaled_width)
8                                 {
9                                         uint32 c=jaguar_byte_read(ptr+(((cnt>>16) & (~0x07))*pitch)+((cnt>>16)&0x07));
10                                         c<<=1;
11                                         if (flags&FLAGS_TRANSPARENT)
12                                         {                                       
13                                                 if (c)
14                                                 {
15                                                         *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[c+0]);
16                                                         *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[c+1]);
17                                                 }
18                                                 else
19                                                         current_line_buffer-=2;
20                                         }
21                                         else
22                                         {
23                                                 *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[c+0]);
24                                                 *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[c+1]);
25                                         }
26
27                                         cnt+=hscale_fixed;
28                                         scaled_width--;
29                                 }
30                         }
31                         else
32                         {
33                                 while (scaled_width)
34                                 {
35                                         uint32 c=jaguar_byte_read(ptr+(((cnt>>16) & (~0x07))*pitch)+((cnt>>16)&0x07));
36                                         c<<=1;
37                                         if (flags&FLAGS_TRANSPARENT)
38                                         {                                       
39                                                 if (c)
40                                                 {
41                                                         *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[c+0]);
42                                                         *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[c+1]);
43                                                 }
44                                                 else
45                                                         current_line_buffer+=2;
46                                         }
47                                         else
48                                         {
49                                                 *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[c+0]);
50                                                 *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[c+1]);
51                                         }
52
53                                         cnt+=hscale_fixed;
54                                         scaled_width--;
55                                 }
56                         }
57                 }
58                 else
59                 {
60                         if (flags&FLAGS_HFLIP)
61                         {
62                                 while (scaled_width)
63                                 {
64                                         uint32 c=jaguar_byte_read(ptr+(((cnt>>16) & (~0x07))*pitch)+((cnt>>16)&0x07));
65                                         c<<=1;
66                                         if (flags&FLAGS_TRANSPARENT)
67                                         {                                       
68                                                 if (c)
69                                                 {
70                                                         *current_line_buffer--=paletteRam[c+0];
71                                                         *current_line_buffer--=paletteRam[c+1];
72                                                 }
73                                                 else
74                                                         current_line_buffer-=2;
75                                         }
76                                         else
77                                         {
78                                                 *current_line_buffer--=paletteRam[c+0];
79                                                 *current_line_buffer--=paletteRam[c+1];
80                                         }
81
82                                         cnt+=hscale_fixed;
83                                         scaled_width--;
84                                 }
85                         }
86                         else
87                         {
88                                 while (scaled_width)
89                                 {
90                                         uint32 c=jaguar_byte_read(ptr+(((cnt>>16) & (~0x07))*pitch)+((cnt>>16)&0x07));
91                                         c<<=1;
92                                         if (flags&FLAGS_TRANSPARENT)
93                                         {                                       
94                                                 if (c)
95                                                 {
96                                                         *current_line_buffer++=paletteRam[c+0];
97                                                         *current_line_buffer++=paletteRam[c+1];
98                                                 }
99                                                 else
100                                                         current_line_buffer+=2;
101                                         }
102                                         else
103                                         {
104                                                 *current_line_buffer++=paletteRam[c+0];
105                                                 *current_line_buffer++=paletteRam[c+1];
106                                         }
107
108                                         cnt+=hscale_fixed;
109                                         scaled_width--;
110                                 }
111                         }
112                 }