#include #include #include #include #include #include #include #include #include #include #include #include #include #include "defs.h" #include "types.h" #include "main.h" #include "gfx.h" #include "font.h" //Fontset to use #include "gfx/tiles_gfx.h" //gems_tiles_compressed, explosion_tiles_compressed #include "gfx/sprites_gfx.h" //cursor_compressed, grid_compressed #include "gfx/bg_gfx.h" //Background stuffs #include "gfx/score_gfx.h" //Numerals for scoreboard #include "gfx/char_gfx.h" //Fancy glyphs for "Game Over" / "You've Done It!" /* ----------------------- Define your constants here ------------------------*/ uint8_t *chars[] = { s__apo_compressed, s__exc_compressed, s_A_compressed, s_D_compressed, s_E_compressed, s_G_compressed, s_I_compressed, s_M_compressed, s_N_compressed, s_O_compressed, s_R_compressed, s_T_compressed, s_U_compressed, s_V_compressed, s_Y_compressed, }; gfx_rletsprite_t *gems_spr[gems_tiles_num]; gfx_rletsprite_t *explosion_spr[explosion_tiles_num]; gfx_rletsprite_t *cursor_spr; gfx_sprite_t *grid_spr; gfx_sprite_t *greentile; gfx_sprite_t *cyantile; gfx_rletsprite_t *titlebanner; gfx_rletsprite_t *bg_central; gfx_rletsprite_t *bg_next; gfx_rletsprite_t *bg_score; gfx_rletsprite_t *bg_scoref; gfx_rletsprite_t *bg_btm8d; gfx_rletsprite_t *bg_btm8df; gfx_rletsprite_t *bg_btm5d; gfx_rletsprite_t *bg_btm5df; gfx_rletsprite_t *bg_btm4d; gfx_rletsprite_t *bg_btm4df; gfx_rletsprite_t *bg_btm3d; gfx_rletsprite_t *bg_btm3df; gfx_rletsprite_t *bg_top8d; gfx_rletsprite_t *bg_top5d; gfx_rletsprite_t *bg_top4d; gfx_rletsprite_t *bg_top3d; gfx_rletsprite_t *bgspr[16]; gfx_rletsprite_t *scorenum1[score_tiles_num]; //0-9 and colon. gfx_rletsprite_t *scorenum2[score_tiles_num]; //0-9 and colon. gfx_sprite_t *menutile; gfx_sprite_t *menuborder; gfx_rletsprite_t *p1sprite; gfx_rletsprite_t *p2sprite; gfx_rletsprite_t *downarrow; gfx_rletsprite_t *flashgems[6][8]; gfx_rletsprite_t *magicgems[6]; gfx_rletsprite_t *arcadeselect; gfx_rletsprite_t *gameoverspr[8][2]; gfx_rletsprite_t *youdiditspr[13][2]; gfx_sprite_t *hsborder; gfx_sprite_t *hsborderf; uint8_t gameoverchr[8] = {SYM_G,SYM_A,SYM_M,SYM_E,SYM_O,SYM_V,SYM_E,SYM_R}; uint8_t youdiditchr[13]= { SYM_Y,SYM_O,SYM_U,SYM_APO,SYM_V,SYM_E, SYM_D,SYM_O,SYM_N,SYM_E,SYM_I,SYM_T,SYM_EXC }; uint8_t gameoverpos[8] = {6,16,26,36,54,64,74,85}; uint8_t youdiditpos[13]= {21,30,41,50,60,70,12,22,33,42,59,67,79}; /* ----------------------- Function prototypes goes here ---------------------*/ /* ----------------------- Define all your functions here --------------------*/ void palshift(gfx_sprite_t *sprite, uint8_t shiftby) { uint8_t x,y; int size; uint8_t *ptr; ptr = (uint8_t*) sprite; size = ptr[0]*ptr[1]; ptr+=2; for(;size;--size,++ptr) ptr[0] +=shiftby; } gfx_rletsprite_t* decompAndAllocate(void* cmprsprite) { uint8_t i; void *baseimg,*flipimg,*img; baseimg = (void*) gfx_vbuffer; flipimg = (void*) (*gfx_vbuffer+32768+2); dzx7_Turbo(cmprsprite,baseimg); img = gfx_ConvertMallocRLETSprite((gfx_sprite_t*)baseimg); gfx_FlipSpriteY((gfx_sprite_t*) baseimg, (gfx_sprite_t*)flipimg); return img; } void decompAndVaryChars(uint8_t ch, gfx_rletsprite_t **v) { uint8_t *baseimg,*ptr; uint8_t i; baseimg = (uint8_t*) gfx_vbuffer; dzx7_Turbo(chars[ch],baseimg); i = baseimg[0]*baseimg[1]; v[0] = gfx_ConvertMallocRLETSprite((gfx_sprite_t*)baseimg); dzx7_Turbo(chars[ch],baseimg); for (ptr=baseimg+2; i; ptr++,i--) if ((ptr[0]==8)||(ptr[0]==9)) ptr[0]+=2; v[1] = gfx_ConvertMallocRLETSprite((gfx_sprite_t*)baseimg); } //%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%% void initGraphics(void) { uint8_t a,i,j; void *baseimg,*flipimg; uint8_t *ptr; int loop; uint8_t *fontspacing; gfx_Begin(); gfx_SetDrawBuffer(); ti_CloseAll(); gfx_SetTextTransparentColor(BG_TRANSPARENT); baseimg = (void*) gfx_vbuffer; flipimg = (void*) (*gfx_vbuffer+32768+2); //Title banner and graphics dzx7_Turbo(banner_compressed,baseimg); titlebanner = gfx_ConvertMallocRLETSprite((gfx_sprite_t*)baseimg); //Menu graphics dzx7_Turbo(menutile_compressed,menutile = malloc(menutile_size)); dzx7_Turbo(menuborder_compressed,menuborder = malloc(menuborder_size)); p1sprite = decompAndAllocate(p1_compressed); p2sprite = decompAndAllocate(p2_compressed); downarrow = decompAndAllocate(downarrow_compressed); arcadeselect = decompAndAllocate(arcadeselect_compressed); //Font data abbreviated gfx_SetFontData(font-(32*8)); fontspacing = malloc(128); for (i=0;i<128;i++) fontspacing[i]=8; gfx_SetFontSpacing(fontspacing); gfx_SetPalette(tiles_gfx_pal,sizeof tiles_gfx_pal,0); //Palette area at PALSWAP_AREA is initialized on game mode select for (i=0;i