*/
#include "tile.h"
+#include "display.h"
/* ---------------------------------------------------------------------- */
TILE_MAX
};
-/* 0=stop 1=ameuba */
-int tile_ameuba[] =
+/* 0=stop 1=amoeba */
+int tile_amoeba[] =
{
Xdripper, 1,
XdripperB, 1,
- Xameuba_1, 1,
- Xameuba_2, 1,
- Xameuba_3, 1,
- Xameuba_4, 1,
- Xameuba_5, 1,
- Xameuba_6, 1,
- Xameuba_7, 1,
- Xameuba_8, 1,
+ Xamoeba_1, 1,
+ Xamoeba_2, 1,
+ Xamoeba_3, 1,
+ Xamoeba_4, 1,
+ Xamoeba_5, 1,
+ Xamoeba_6, 1,
+ Xamoeba_7, 1,
+ Xamoeba_8, 1,
TILE_MAX
};
XwonderwallB, 6,
-1,
- Xameuba_1, 0,
- Xameuba_1, 1,
- Xameuba_1, 2,
- Xameuba_1, 3,
- Xameuba_1, 4,
- Xameuba_1, 5,
- Xameuba_1, 6,
- Xameuba_1, 7,
- -1,
- Xameuba_2, 0,
- Xameuba_2, 1,
- Xameuba_2, 2,
- Xameuba_2, 3,
- Xameuba_2, 4,
- Xameuba_2, 5,
- Xameuba_2, 6,
- Xameuba_2, 7,
- -1,
- Xameuba_3, 0,
- Xameuba_3, 1,
- Xameuba_3, 2,
- Xameuba_3, 3,
- Xameuba_3, 4,
- Xameuba_3, 5,
- Xameuba_3, 6,
- Xameuba_3, 7,
- -1,
- Xameuba_4, 0,
- Xameuba_4, 1,
- Xameuba_4, 2,
- Xameuba_4, 3,
- Xameuba_4, 4,
- Xameuba_4, 5,
- Xameuba_4, 6,
- Xameuba_4, 7,
- -1,
- Xameuba_5, 0,
- Xameuba_5, 1,
- Xameuba_5, 2,
- Xameuba_5, 3,
- Xameuba_5, 4,
- Xameuba_5, 5,
- Xameuba_5, 6,
- Xameuba_5, 7,
- -1,
- Xameuba_6, 0,
- Xameuba_6, 1,
- Xameuba_6, 2,
- Xameuba_6, 3,
- Xameuba_6, 4,
- Xameuba_6, 5,
- Xameuba_6, 6,
- Xameuba_6, 7,
- -1,
- Xameuba_7, 0,
- Xameuba_7, 1,
- Xameuba_7, 2,
- Xameuba_7, 3,
- Xameuba_7, 4,
- Xameuba_7, 5,
- Xameuba_7, 6,
- Xameuba_7, 7,
- -1,
- Xameuba_8, 0,
- Xameuba_8, 1,
- Xameuba_8, 2,
- Xameuba_8, 3,
- Xameuba_8, 4,
- Xameuba_8, 5,
- Xameuba_8, 6,
- Xameuba_8, 7,
+ Xamoeba_1, 0,
+ Xamoeba_1, 1,
+ Xamoeba_1, 2,
+ Xamoeba_1, 3,
+ Xamoeba_1, 4,
+ Xamoeba_1, 5,
+ Xamoeba_1, 6,
+ Xamoeba_1, 7,
+ -1,
+ Xamoeba_2, 0,
+ Xamoeba_2, 1,
+ Xamoeba_2, 2,
+ Xamoeba_2, 3,
+ Xamoeba_2, 4,
+ Xamoeba_2, 5,
+ Xamoeba_2, 6,
+ Xamoeba_2, 7,
+ -1,
+ Xamoeba_3, 0,
+ Xamoeba_3, 1,
+ Xamoeba_3, 2,
+ Xamoeba_3, 3,
+ Xamoeba_3, 4,
+ Xamoeba_3, 5,
+ Xamoeba_3, 6,
+ Xamoeba_3, 7,
+ -1,
+ Xamoeba_4, 0,
+ Xamoeba_4, 1,
+ Xamoeba_4, 2,
+ Xamoeba_4, 3,
+ Xamoeba_4, 4,
+ Xamoeba_4, 5,
+ Xamoeba_4, 6,
+ Xamoeba_4, 7,
+ -1,
+ Xamoeba_5, 0,
+ Xamoeba_5, 1,
+ Xamoeba_5, 2,
+ Xamoeba_5, 3,
+ Xamoeba_5, 4,
+ Xamoeba_5, 5,
+ Xamoeba_5, 6,
+ Xamoeba_5, 7,
+ -1,
+ Xamoeba_6, 0,
+ Xamoeba_6, 1,
+ Xamoeba_6, 2,
+ Xamoeba_6, 3,
+ Xamoeba_6, 4,
+ Xamoeba_6, 5,
+ Xamoeba_6, 6,
+ Xamoeba_6, 7,
+ -1,
+ Xamoeba_7, 0,
+ Xamoeba_7, 1,
+ Xamoeba_7, 2,
+ Xamoeba_7, 3,
+ Xamoeba_7, 4,
+ Xamoeba_7, 5,
+ Xamoeba_7, 6,
+ Xamoeba_7, 7,
+ -1,
+ Xamoeba_8, 0,
+ Xamoeba_8, 1,
+ Xamoeba_8, 2,
+ Xamoeba_8, 3,
+ Xamoeba_8, 4,
+ Xamoeba_8, 5,
+ Xamoeba_8, 6,
+ Xamoeba_8, 7,
-1,
Xdoor_1, 0,
/* 0=stop 1=acid */
unsigned char tab_acid[TILE_MAX];
-/* 0=stop 1=ameuba */
-unsigned char tab_ameuba[TILE_MAX];
+/* 0=stop 1=amoeba */
+unsigned char tab_amoeba[TILE_MAX];
/* 0=stop 1=move */
unsigned char tab_android_move[TILE_MAX];
/* map ascii to coords */
unsigned short map_ttl[128];
+/* map tiles and frames to graphics info */
+struct GraphicInfo_EM graphic_info_em[TILE_MAX][8];
+
void create_tab(int *invert, unsigned char *array)
{
int i;
int buffer[TILE_MAX];
- for(i = 0; i < TILE_MAX; i++)
+ for (i = 0; i < TILE_MAX; i++)
buffer[i] = 0;
- for(;invert[0] < TILE_MAX; invert += 2)
+ for (;invert[0] < TILE_MAX; invert += 2)
buffer[invert[0]] = invert[1];
- for(i = 0; i < TILE_MAX; i++)
+ for (i = 0; i < TILE_MAX; i++)
array[i] = buffer[i];
}
int *tile = tile_explode;
int buffer[TILE_MAX];
- for(i = 0; i < TILE_MAX; i++)
+ for (i = 0; i < TILE_MAX; i++)
buffer[i] = Xboom_1;
- while((i = *tile++) < TILE_MAX)
+ while ((i = *tile++) < TILE_MAX)
buffer[i] = i; /* these tiles are indestructable */
- while((i = *tile++) < TILE_MAX)
+ while ((i = *tile++) < TILE_MAX)
buffer[i] = *tile++; /* these tiles are special */
- for(i = 0; i < TILE_MAX; i++)
+ for (i = 0; i < TILE_MAX; i++)
tab_explode_normal[i] = buffer[i];
- while((i = *tile++) < TILE_MAX)
+ while ((i = *tile++) < TILE_MAX)
buffer[i] = *tile++; /* these tiles for dynamite */
- for(i = 0; i < TILE_MAX; i++)
+ for (i = 0; i < TILE_MAX; i++)
tab_explode_dynamite[i] = buffer[i];
}
int debug = 0;
- for(i = 0; i < 8; i++)
- for(j = 0; j < TILE_MAX; j++)
+ for (i = 0; i < 8; i++)
+ for (j = 0; j < TILE_MAX; j++)
buffer[i][j] = 0;
- for(i = 0; i < 64; i++)
+ for (i = 0; i < 64; i++)
{
- for(;*map != -1; map += 2)
+ for (;*map != -1; map += 2)
{
if (map[0] < 0 || map[0] >= TILE_MAX || map[1] < 0 || map[1] >= 8)
{
map++;
}
- for(i = 0; i < 896; i++)
+ for (i = 0; i < 896; i++)
{
- for(;*map != -1; map += 2)
+ for (;*map != -1; map += 2)
{
if (map[0] < 0 || map[0] >= TILE_MAX || map[1] < 0 || map[1] >= 8)
{
map++;
}
- for(i = 0; i < TILE_MAX; i++)
+ for (i = 0; i < TILE_MAX; i++)
{
- for(j = 0; j < 8; j++)
+ for (j = 0; j < 8; j++)
{
switch(buffer[j][i])
{
}
}
- if(sizeof(obj_map) / sizeof(*obj_map) != map - obj_map)
+ if (sizeof(obj_map) / sizeof(*obj_map) != map - obj_map)
{
fprintf(stderr, "obj_map: bad end (%d != %d)\n",
sizeof(obj_map) / sizeof(*obj_map), map - obj_map);
debug = 1;
}
- if(debug == 0)
+ if (debug == 0)
fprintf(stderr, "obj_map: looks good, now disable debug code\n");
abort();
#else
- for(i = 0; i < 8; i++)
- for(j = 0; j < TILE_MAX; j++)
+ for (i = 0; i < 8; i++)
+ for (j = 0; j < TILE_MAX; j++)
buffer[i][j] = Xblank;
/* special case for first 64 entries */
- for(i = 0; i < 64; i++)
+ for (i = 0; i < 64; i++)
{
- for(;*map != -1; map += 2)
+ for (;*map != -1; map += 2)
buffer[map[1]][map[0]] = i;
map++;
}
/* now regular entries */
- for(i = 0; i < 896 * 16; i += 16)
+ for (i = 0; i < 896 * 16; i += 16)
{
- for(;*map != -1; map += 2)
+ for (;*map != -1; map += 2)
buffer[map[1]][map[0]] = i;
map++;
}
- for(i = 0; i < 8; i++)
- for(j = 0; j < TILE_MAX; j++)
+ for (i = 0; i < 8; i++)
+ for (j = 0; j < TILE_MAX; j++)
map_obj[i][j] = buffer[7 - i][j];
#endif
}
+void create_obj_graphics_info_em()
+{
+ int i, j;
+
+ for (i = 0; i < TILE_MAX; i++)
+ {
+ for (j = 0; j < 8; j++)
+ {
+ struct GraphicInfo_EM *g = &graphic_info_em[i][j];
+ int obj = map_obj[j][i];
+
+ g->bitmap = objBitmap;
+ g->src_x = (obj / 512) * TILEX;
+ g->src_y = (obj % 512) * TILEY / 16;
+ g->src_offset_x = 0;
+ g->src_offset_y = 0;
+ g->dst_offset_x = 0;
+ g->dst_offset_y = 0;
+ g->width = TILEX;
+ g->height = TILEY;
+ }
+ }
+
+ InitGraphicsInfoEM();
+}
+
void create_spr()
{
int i, j, k;
int *map = spr_map;
int buffer[2][8][SPR_MAX];
- while(*map < SPR_MAX)
+ while (*map < SPR_MAX)
{
i = *map++;
j = *map++;
- for(k = 0; k < 8; k++)
+ for (k = 0; k < 8; k++)
buffer[j][k][i] = *map++;
}
- for(i = 0; i < 2; i++)
- for(j = 0; j < 8; j++)
- for(k = 0; k < SPR_MAX; k++)
+ for (i = 0; i < 2; i++)
+ for (j = 0; j < 8; j++)
+ for (k = 0; k < SPR_MAX; k++)
map_spr[i][j][k] = buffer[i][7 - j][k];
}
{
create_tab(tile_blank, tab_blank);
create_tab(tile_acid, tab_acid);
- create_tab(tile_ameuba, tab_ameuba);
+ create_tab(tile_amoeba, tab_amoeba);
create_tab(tile_android_move, tab_android_move);
create_explode();
create_obj();
create_spr();
}
+
+void tab_generate_graphics_info_em()
+{
+ create_obj_graphics_info_em();
+}