#include "data_test.h"
#include "gfx.h"
+#include "hwregs.h" /* XXX */
+
#define TILE_W 32
#define TILE_H 16
void convert_tile_data(unsigned char *dest, const char *src);
static unsigned char test_tiles[2][TILE_W * TILE_H / 8 * NBPL];
+static unsigned char tile_mask[TILE_W * TILE_H / 8 * NBPL];
int game_init(void)
{
for(i=0; i<2; i++) {
convert_tile_data(test_tiles[i], test_tiles_cpix[i][0]);
}
+ convert_tile_data(tile_mask, tile_mask_cpix[0]);
return 0;
}
void draw_tile(int tid, int x, int y, int light)
{
- int i;
-
unsigned char *dest = bplptr[0] + (y * SCANSZ * NBPL) + x / 8;
unsigned char *src = test_tiles[tid];
- for(i=0; i<TILE_H * NBPL; i++) {
- memcpy(dest, src, TILE_W / 8);
- dest += SCANSZ;
- src += TILE_W / 8;
- }
+ wait_blit();
+
+ REG32_BLTCON = BLTCON_USEA | BLTCON_USEB | BLTCON_USEC | BLTCON_USED |
+ BLTCON_LF(0xca);
+ REG32_BLTAFLWM = 0xffffffff;
+ REG_BLTAMOD = 0;
+ REG_BLTBMOD = 0;
+ REG_BLTCMOD = SCANSZ - TILE_W / 8;
+ REG_BLTDMOD = SCANSZ - TILE_W / 8;
+ REG32_BLTAPT = (intptr_t)tile_mask;
+ REG32_BLTBPT = (intptr_t)src;
+ REG32_BLTCPT = (intptr_t)dest;
+ REG32_BLTDPT = (intptr_t)dest;
+ REG_BLTSIZE = BLTSIZE(TILE_W, TILE_H * NBPL);
}
static inline int charpix_color(char c)
{
switch(c) {
+ case '0':
+ return 0;
case '#':
return 1;
case 'x':
return 3;
case 'o':
return 4;
- default:
case '.':
+ return 0x1f;
+ default:
break;
}
return 0;