present(backbuf);
tunrot = nframes;
- bgmat[0] = (COS(tunrot) * 280) >> 8;
- bgmat[1] = (-SIN(tunrot) * 280) >> 8;
- bgmat[2] = (SIN(tunrot) * 280) >> 8;
- bgmat[3] = (COS(tunrot) * 280) >> 8;
+ bgmat[0] = (COS(tunrot) * 140) >> 8;
+ bgmat[1] = (-SIN(tunrot) * 140) >> 8;
+ bgmat[2] = (SIN(tunrot) * 140) >> 8;
+ bgmat[3] = (COS(tunrot) * 140) >> 8;
bgx = (120 << 8) - bgmat[0] * 120 + bgmat[1] * -80;
bgy = (80 << 8) - bgmat[2] * 120 + bgmat[3] * -80;
zoffs = nframes;
- uoffs = tunrot;
+ uoffs = tunrot >> 1;
top = vram[backbuf] + 20;
bot = vram[backbuf] + 159 * 240 / 2 + 20;
spr_oam(oam, 0, 512 + 256, x - 64, y - 64, SPR_256COL | SPR_SZ64 | SPR_DBLSZ |
SPR_ROTSCL | SPR_ROTSCL_SEL(0));
- mat[0] = COS(rot) << 1;
- mat[1] = -SIN(rot) << 1;
- mat[2] = SIN(rot) << 1;
- mat[3] = COS(rot) << 1;
+ mat[0] = COS(rot);
+ mat[1] = -SIN(rot);
+ mat[2] = SIN(rot);
+ mat[3] = COS(rot);
spr_transform(oam, 0, mat);
((uint16_t*)CRAM_BG_ADDR)[idx] = (uint16_t)(r) | ((uint16_t)(g) << 5) | ((uint16_t)(b) << 10); \
} while(0)
-extern int8_t sinlut[];
+extern int16_t sinlut[];
#define SIN(x) sinlut[(x) & 0xff]
#define COS(x) sinlut[((x) + 64) & 0xff]
puts("sinlut:");
for(i=0; i<256; i++) {
float x = sin((float)i / 128.0f * M_PI);
- printf("\t.byte %d\n", (int)(x * 127.5f - 0.5f));
+ printf("\t.short %d\n", (int)(x * 256.0f));
}
return 0;
}