void gr_use_palette_table( char * filename ) { CFILE *fp; int i,fsize; fp = cfopen( filename, "rb" ); if ( fp==NULL) Error("Can't open palette file <%s>",filename); fsize = cfilelength( fp ); Assert( fsize == 9472 ); cfread( gr_palette, 256*3, 1, fp ); cfread( gr_fade_table, 256*34, 1, fp ); cfclose(fp); // This is the TRANSPARENCY COLOR for (i=0; i<GR_FADE_LEVELS; i++ ) { gr_fade_table[i*256+255] = 255; } Num_computed_colors = 0; // Flush palette cache. #if defined(POLY_ACC) pa_update_clut(gr_palette, 0, 256, 0); #endif }
void gr_palette_load( ubyte * pal ) { int i; ubyte c; #if !defined(POLY_ACC) outp( 0x3c6, 0xff ); outp( 0x3c8, 0 ); for (i=0; i<768; i++ ) { c = pal[i] + gr_palette_gamma; if ( c > 63 ) c = 63; outp( 0x3c9,c); gr_current_pal[i] = pal[i]; } #else for (i=0; i<768; i++ ) { c = pal[i] + gr_palette_gamma; if ( c > 63 ) c = 63; gr_current_pal[i] = c; } pa_update_clut(gr_current_pal, 0, 256, 0); #endif gr_palette_faded_out = 0; // init_computed_colors(); }
ubyte *GrUsePaletteTable (char *pszFile, char *pszLevel) { CFILE *fp = NULL; int i, fsize; tPalette palette; #ifdef SWAP_0_255 ubyte c; #endif if (pszLevel) { char ifile_name [FILENAME_LEN]; ChangeFilenameExtension (ifile_name, pszLevel, ".pal"); fp = CFOpen (ifile_name, gameFolders.szDataDir, "rb", 0); } if (!fp) fp = CFOpen (pszFile, gameFolders.szDataDir, "rb", 0); // the following is a hack to enable the loading of d2 levels // even if only the d2 mac shareware datafiles are present. // However, if the pig file is present but the palette file isn't, // the textures in the level will look wierd... if (!fp) fp = CFOpen (DEFAULT_LEVEL_PALETTE, gameFolders.szDataDir, "rb", 0); if (!fp) { Error(TXT_PAL_FILES, pszFile, DEFAULT_LEVEL_PALETTE); return NULL; } fsize = CFLength (fp, 0); Assert (fsize == 9472); CFRead (palette, 256*3, 1, fp); CFRead (grFadeTable, 256*34, 1, fp); CFClose (fp); // This is the TRANSPARENCY COLOR for (i = 0; i < GR_FADE_LEVELS; i++) grFadeTable [i * 256 + 255] = 255; gameData.render.nComputedColors = 0; // Flush palette cache. #if defined(POLY_ACC) pa_update_clut (palette, 0, 256, 0); #endif // swap colors 0 and 255 of the palette along with fade table entries #ifdef SWAP_0_255 for (i = 0; i < 3; i++) { c = palette [i]; palette [i] = palette [765 + i]; palette [765 + i] = c; } for (i = 0; i < GR_FADE_LEVELS * 256; i++) if (grFadeTable [i] == 0) grFadeTable [i] = 255; for (i = 0; i < GR_FADE_LEVELS; i++) grFadeTable [i * 256] = TRANSPARENCY_COLOR; #endif return fadePalette = AddPalette (palette); }
void kmatrix_redraw () { int i, color; int sorted [MAX_NUM_NET_PLAYERS]; xOffs = (grdCurCanv->cv_bitmap.bm_props.w - 640) / 2; yOffs = (grdCurCanv->cv_bitmap.bm_props.h - 480) / 2; if (xOffs < 0) xOffs = 0; if (yOffs < 0) yOffs = 0; if (gameData.app.nGameMode & GM_MULTI_COOP) { kmatrix_redraw_coop (); return; } MultiSortKillList (); WIN (DDGRLOCK (dd_grd_curcanv)); grdCurCanv->cv_font = MEDIUM3_FONT; GrString (0x8000, LHY (10), TXT_KILL_MATRIX_TITLE ); grdCurCanv->cv_font = SMALL_FONT; MultiGetKillList (sorted); kmatrix_draw_names (sorted); for (i=0; i<gameData.multi.nPlayers; i++) { if (gameData.app.nGameMode & GM_TEAM) color = GetTeam (sorted [i]); else color = sorted [i]; if (gameData.multi.players [sorted [i]].connected==0) GrSetFontColorRGBi (GRAY_RGBA, 1, 0, 0); else GrSetFontColorRGBi (RGBA_PAL2 (player_rgb [color].r, player_rgb [color].g, player_rgb [color].b), 1, 0, 0); kmatrix_draw_item (i, sorted); } kmatrix_draw_deaths (sorted); #if defined (POLY_ACC) pa_save_clut (); pa_update_clut (grPalette, 0, 256, 0); #endif PA_DFX (pa_set_frontbuffer_current ()); GrUpdate (0); PA_DFX (pa_set_backbuffer_current ()); #if defined (POLY_ACC) pa_restore_clut (); #endif WIN (DDGRUNLOCK (dd_grd_curcanv)); GrPaletteStepLoad (NULL); }
void kmatrix_redraw_coop () { int i, color; int sorted [MAX_NUM_NET_PLAYERS]; MultiSortKillList (); WIN (DDGRLOCK (dd_grd_curcanv)); grdCurCanv->cv_font = MEDIUM3_FONT; GrString (0x8000, LHY (10), "COOPERATIVE SUMMARY" ); grdCurCanv->cv_font = SMALL_FONT; MultiGetKillList (sorted); kmatrix_draw_coop_names (sorted); for (i=0; i<gameData.multi.nPlayers; i++) { color = sorted [i]; if (gameData.multi.players [sorted [i]].connected==0) GrSetFontColorRGBi (GRAY_RGBA, 1, 0, 0); else GrSetFontColorRGBi (RGBA_PAL2 (player_rgb [color].r, player_rgb [color].g, player_rgb [color].b), 1, 0, 0); kmatrix_draw_coop_item (i, sorted); } kmatrix_draw_deaths (sorted); WIN (DDGRUNLOCK (dd_grd_curcanv)); WINDOS ( DDGrSetCurrentCanvas (NULL), GrSetCurrentCanvas (NULL) ); #if defined (POLY_ACC) pa_save_clut (); pa_update_clut (grPalette, 0, 256, 0); #endif PA_DFX (pa_set_frontbuffer_current ()); PA_DFX (pa_set_backbuffer_current ()); #if defined (POLY_ACC) pa_restore_clut (); #endif GrPaletteStepLoad (NULL); GrUpdate (0); }