| ... | ... |
@@ -16,9 +16,8 @@ void |
| 16 | 16 |
clear(Ppu *p) |
| 17 | 17 |
{
|
| 18 | 18 |
int i, sz = p->height * p->width; |
| 19 |
- for(i = 0; i < sz; ++i) {
|
|
| 20 |
- p->pixels[i] = 0; |
|
| 21 |
- } |
|
| 19 |
+ for(i = 0; i < sz; ++i) |
|
| 20 |
+ p->pixels[i] = 0x00; |
|
| 22 | 21 |
} |
| 23 | 22 |
|
| 24 | 23 |
void |
| ... | ... |
@@ -41,28 +40,24 @@ puticn(Ppu *p, Uint8 layer, Uint16 x, Uint16 y, Uint8 *sprite, Uint8 color, Uint |
| 41 | 40 |
layer, |
| 42 | 41 |
x + (flipx ? 7 - h : h), |
| 43 | 42 |
y + (flipy ? 7 - v : v), |
| 44 |
- ch1 ? color % 4 : color / 4); |
|
| 43 |
+ ch1 ? (color & 0x3) : (color >> 0x2)); |
|
| 45 | 44 |
} |
| 46 | 45 |
} |
| 47 | 46 |
|
| 48 | 47 |
void |
| 49 | 48 |
putchr(Ppu *p, Uint8 layer, Uint16 x, Uint16 y, Uint8 *sprite, Uint8 color, Uint8 flipx, Uint8 flipy) |
| 50 | 49 |
{
|
| 51 |
- Uint8 k1 = 1, k2 = 2; |
|
| 52 | 50 |
Uint16 v, h; |
| 53 |
- if(!(color & 1)) {
|
|
| 54 |
- ++color; |
|
| 55 |
- k1 = 2, k2 = 1; |
|
| 56 |
- } |
|
| 57 | 51 |
for(v = 0; v < 8; v++) |
| 58 | 52 |
for(h = 0; h < 8; h++) {
|
| 59 | 53 |
Uint8 ch1 = ((sprite[v] >> (7 - h)) & 0x1) * color; |
| 60 | 54 |
Uint8 ch2 = ((sprite[v + 8] >> (7 - h)) & 0x1) * color; |
| 61 |
- putpixel(p, |
|
| 62 |
- layer, |
|
| 63 |
- x + (flipx ? 7 - h : h), |
|
| 64 |
- y + (flipy ? 7 - v : v), |
|
| 65 |
- ((ch1 * k1 + ch2 * k2) + color / 4) & 0x3); |
|
| 55 |
+ if(ch1 + ch2 || (color != 0x05 && color != 0x0a && color != 0x0f)) |
|
| 56 |
+ putpixel(p, |
|
| 57 |
+ layer, |
|
| 58 |
+ x + (flipx ? 7 - h : h), |
|
| 59 |
+ y + (flipy ? 7 - v : v), |
|
| 60 |
+ ((ch1 ? (color & 0x3) : (color >> 0x2)) + (ch2 ? (color & 0x3) : (color >> 0x2)) * 2) & 0x3); |
|
| 66 | 61 |
} |
| 67 | 62 |
} |
| 68 | 63 |
|