// *********************************************** // CREATION.C - responsible for all tmd creation // *********************************************** #define SIZE (1024) #define _draw_TX_GP_ //#define _draw_TX_FP_ //#define _draw_GP_ //#define _draw_FP_ #define _texture_ (63) // **** includes #include "make_tmd.h" extern u_char WALLS[10][10]; extern u_char WALLSRGB[10][10][3]; u_long isSolid(long,long); u_long createPlayer(u_long tMemAddress) { VERTEX v[4]; COLOUR rgb[3]; TMD_setVERTEX(&v[0], 0, -100, 0); TMD_setVERTEX(&v[1], 0, 512, 128); TMD_setVERTEX(&v[2], -128, 512, -128); TMD_setVERTEX(&v[3], 128, 512, -128); TMD_setCOLOUR(&rgb[0], 255, 0, 0); TMD_setCOLOUR(&rgb[1], 0, 0, 255); TMD_setCOLOUR(&rgb[2], 0, 255, 0); TMD_prepare(tMemAddress, &v[0], &rgb[0], 0); TMD_set3_NS_FP(0, 1, 2, 0); TMD_set3_NS_FP(0, 2, 3, 1); TMD_set3_NS_FP(0, 3, 1, 2); return TMD_finish(); } // **** create an object u_long createWall(u_long tMemAddress, long tx, long ty, u_char *tCol) { VERTEX v[8]; COLOUR rgb[4]; TEXTURE txt[1]; TMD_setVERTEX(&v[0], 0, -SIZE, SIZE); TMD_setVERTEX(&v[1], SIZE, -SIZE, SIZE); TMD_setVERTEX(&v[2], SIZE, -SIZE, 0); TMD_setVERTEX(&v[3], 0, -SIZE, 0); TMD_setVERTEX(&v[4], 0, 0, SIZE); TMD_setVERTEX(&v[5], SIZE, 0, SIZE); TMD_setVERTEX(&v[6], SIZE, 0, 0); TMD_setVERTEX(&v[7], 0, 0, 0); TMD_setCOLOUR(&rgb[0], tCol[0], tCol[1], tCol[2]); TMD_setCOLOUR(&rgb[1], tCol[3], tCol[4], tCol[5]); TMD_setCOLOUR(&rgb[2], tCol[6], tCol[7], tCol[8]); TMD_setCOLOUR(&rgb[3], tCol[9], tCol[10], tCol[11]); TMD_setTEXTURE(&txt[0], 0, 640, 257, 640, 0, 128, 0, 128+_texture_, 0, 128, _texture_, 128+_texture_, _texture_); TMD_prepare(tMemAddress, &v[0], &rgb[0], &txt[0]); #ifdef _draw_TX_GP_ if (isSolid(tx, ty+1) == 0) TMD_set4_TX_NS_GP(1, 0, 5, 4, 1, 0, 1, 0, 0); if (isSolid(tx+1, ty) == 0) TMD_set4_TX_NS_GP(2, 1, 6, 5, 2, 1, 2, 1, 0); if (isSolid(tx, ty-1) == 0) TMD_set4_TX_NS_GP(3, 2, 7, 6, 3, 2, 3, 2, 0); if (isSolid(tx-1, ty) == 0) TMD_set4_TX_NS_GP(0, 3, 4, 7, 0, 3, 0, 3, 0); #endif #ifdef _draw_TX_FP_ if (isSolid(tx, ty+1) == 0) TMD_set4_TX_NS_FP(1, 0, 5, 4, 1, 0); if (isSolid(tx+1, ty) == 0) TMD_set4_TX_NS_FP(2, 1, 6, 5, 2, 0); if (isSolid(tx, ty-1) == 0) TMD_set4_TX_NS_FP(3, 2, 7, 6, 3, 0); if (isSolid(tx-1, ty) == 0) TMD_set4_TX_NS_FP(0, 3, 4, 7, 0, 0); #endif #ifdef _draw_GP_ if (isSolid(tx, ty+1) == 0) TMD_set4_NS_GP(1, 0, 5, 4, 1, 0, 1, 0); if (isSolid(tx+1, ty) == 0) TMD_set4_NS_GP(2, 1, 6, 5, 2, 1, 2, 1); if (isSolid(tx, ty-1) == 0) TMD_set4_NS_GP(3, 2, 7, 6, 3, 2, 3, 2); if (isSolid(tx-1, ty) == 0) TMD_set4_NS_GP(0, 3, 4, 7, 0, 3, 0, 3); #endif #ifdef _draw_FP_ if (isSolid(tx, ty+1) == 0) TMD_set4_NS_FP(1, 0, 5, 4, 1); if (isSolid(tx+1, ty) == 0) TMD_set4_NS_FP(2, 1, 6, 5, 2); if (isSolid(tx, ty-1) == 0) TMD_set4_NS_FP(3, 2, 7, 6, 3); if (isSolid(tx-1, ty) == 0) TMD_set4_NS_FP(0, 3, 4, 7, 0); #endif return TMD_finish(); } // **** create an object u_long createFloor(u_long tMemAddress, long tx, long ty, u_char *tCol) { VERTEX v[8]; COLOUR rgb[4]; TEXTURE txt[2]; TMD_setVERTEX(&v[0], 0, 0, SIZE); TMD_setVERTEX(&v[1], SIZE, 0, SIZE); TMD_setVERTEX(&v[2], SIZE, 0, 0); TMD_setVERTEX(&v[3], 0, 0, 0); TMD_setVERTEX(&v[4], 0, -SIZE, SIZE); TMD_setVERTEX(&v[5], SIZE, -SIZE, SIZE); TMD_setVERTEX(&v[6], SIZE, -SIZE, 0); TMD_setVERTEX(&v[7], 0, -SIZE, 0); TMD_setCOLOUR(&rgb[0], tCol[0], tCol[1], tCol[2]); TMD_setCOLOUR(&rgb[1], tCol[3], tCol[4], tCol[5]); TMD_setCOLOUR(&rgb[2], tCol[6], tCol[7], tCol[8]); TMD_setCOLOUR(&rgb[3], tCol[9], tCol[10], tCol[11]); TMD_setTEXTURE(&txt[0], 0, 640, 256, 640, 0, 0, 0, _texture_, 0, 0, _texture_, _texture_, _texture_); TMD_setTEXTURE(&txt[1], 0, 640, 258, 640, 0, 0, 128, _texture_, 128, 0, 128+_texture_, _texture_, 128+_texture_); WALLSRGB[tx][ty][0] = (u_char) (((u_long)tCol[0]+(u_long)tCol[3]+(u_long)tCol[6]+(u_long)tCol[9]) >> 2); WALLSRGB[tx][ty][1] = (u_char) (((u_long)tCol[1]+(u_long)tCol[4]+(u_long)tCol[7]+(u_long)tCol[10]) >> 2); WALLSRGB[tx][ty][2] = (u_char) (((u_long)tCol[2]+(u_long)tCol[5]+(u_long)tCol[8]+(u_long)tCol[11]) >> 2); TMD_prepare(tMemAddress, &v[0], &rgb[0], &txt[0]); #ifdef _draw_TX_GP_ TMD_set4_TX_NS_GP(0, 1, 3, 2, 0, 1, 3, 2, 0); TMD_set4_TX_NS_GP(7, 6, 4, 5, 3, 2, 0, 1, 1); #endif #ifdef _draw_TX_FP_ TMD_set4_TX_NS_FP(0, 1, 3, 2, 0, 0); TMD_set4_TX_NS_FP(7, 6, 4, 5, 3, 1); #endif #ifdef _draw_GP_ TMD_set4_NS_GP(0, 1, 3, 2, 0, 1, 3, 2); TMD_set4_NS_GP(7, 6, 4, 5, 3, 2, 0, 1); #endif #ifdef _draw_FP_ TMD_set4_NS_FP(0, 1, 3, 2, 0); TMD_set4_NS_FP(7, 6, 4, 5, 3); #endif return TMD_finish(); } u_long isSolid(long tx, long ty) { if ((tx<0) || (ty<0) || (tx>9) || (ty>9)) return 1; if (WALLS[tx][ty]) return 1; return 0; }