// -----------------+ // md2_loadTexture : Download a pcx or png texture for MD2 models // -----------------+ static void md2_loadTexture(md2_t *model) { GLPatch_t *grpatch; const char *filename = model->filename; if (model->grpatch) { grpatch = model->grpatch; Z_Free(grpatch->mipmap.grInfo.data); } else grpatch = Z_Calloc(sizeof *grpatch, PU_HWRPATCHINFO, &(model->grpatch)); if (!grpatch->mipmap.downloaded && !grpatch->mipmap.grInfo.data) { int w = 0, h = 0; #ifdef HAVE_PNG grpatch->mipmap.grInfo.format = PNG_Load(filename, &w, &h, grpatch); if (grpatch->mipmap.grInfo.format == 0) #endif grpatch->mipmap.grInfo.format = PCX_Load(filename, &w, &h, grpatch); if (grpatch->mipmap.grInfo.format == 0) return; grpatch->mipmap.downloaded = 0; grpatch->mipmap.flags = 0; grpatch->width = (INT16)w; grpatch->height = (INT16)h; grpatch->mipmap.width = (UINT16)w; grpatch->mipmap.height = (UINT16)h; // not correct! grpatch->mipmap.grInfo.smallLodLog2 = GR_LOD_LOG2_256; grpatch->mipmap.grInfo.largeLodLog2 = GR_LOD_LOG2_256; grpatch->mipmap.grInfo.aspectRatioLog2 = GR_ASPECT_LOG2_1x1; } HWD.pfnSetTexture(&grpatch->mipmap); HWR_UnlockCachedPatch(grpatch); }
void main() { pcx_picture letters, ships; sprite checks, tiks, ship[6], explosion, boxed_icons, little_icons, slider_bar, weapons, ship_input, number_pointers, logo, opening; FILE *datafile; int c,s; alph alphabet; cout << "LOADING:\n"; cout << " ALPHABET : "; PCX_Load("alphab.pcx",(pcx_picture *)&letters); cout << "check.\n SHIPS : "; PCX_Load("shipdata.pcx",(pcx_picture *)&ships); cout << "check.\nGRABING:\n"; cout << " ALPHABET : "; Init_Alph(&alphabet,6); for (c=0;c<26;c++) // grab alphabet. Grab_Alph(0,&letters,&alphabet,c,1+c*6,1,5); cout << "."; for (c=0;c<26;c++) // grab alphabet. Grab_Alph(1,&letters,&alphabet,c,1+c*6,8,5); cout << "."; for (c=0;c<10;c++) // grab numbers. Grab_Alph(2,&letters,&alphabet,c,1+c*6,15,5); cout << "."; for (c=0;c<10;c++) // grab splat. Grab_Alph(3,&letters,&alphabet,c,1+c*6,22,5); cout << "check.\n SHIPS : "; for (s=0;s<6;s++) { // Grab and save all ships. Init_Sprite(&ship[s],19,19,10); for (c=0;c<10;c++) Grab_Sprite(&ships,c*19,s*19,c,&ship[s]); cout << "."; } cout << "check.\n LOSS COUNTER : "; Init_Sprite(&checks,7,5,3); for (c=0;c<3;c++) { Grab_Sprite(&ships,c*7,195,c,&checks); cout << "."; } cout << "check.\n KILL COUNTERS : "; Init_Sprite(&tiks,8,8,2); for (c=0;c<2;c++) { Grab_Sprite(&ships,c*8,187,c,&tiks); cout << "."; } cout << "check.\n EXPLOSION : "; Init_Sprite(&explosion,19,19,10); for (c=0;c<10;c++) { Grab_Sprite((pcx_picture *)&ships,c*19,114,c,(sprite *)&explosion); cout << "."; } cout << "check.\n LOGO : "; Init_Sprite(&logo,58,29,1); Grab_Sprite(&ships,210,90,0,&logo); cout << "check.\n BOXED ICONS : "; Init_Sprite(&boxed_icons,19,19,6); for (c=0;c<6;c++) { Grab_Sprite(&ships,190,c*19,c,&boxed_icons); cout << "."; } cout << "check.\n LITTLE ICONS : "; Init_Sprite(&little_icons,10,10,6); for (c=0;c<6;c++) { Grab_Sprite(&ships,210,c*10,c,&little_icons); cout << "."; } cout << "check.\n SLIDER BAR : "; Init_Sprite(&slider_bar,41,7,6); for (c=0;c<6;c++) { Grab_Sprite(&ships,240,c*7,c,&slider_bar); cout << "."; } cout << "check.\n NUMBER POINTERS : "; Init_Sprite(&number_pointers,8,13,12); for (c=0;c<12;c++) { Grab_Sprite(&ships,290,c*13,c,&number_pointers); cout << "."; } cout << "check.\n WEAPON ICONS : "; Init_Sprite(&weapons,12,12,12); for (c=0;c<12;c++) { Grab_Sprite(&ships,300,c*12,c,&weapons); cout << "."; } cout << "check.\n INPUT ICONS : "; Init_Sprite(&ship_input,42,7,1); Grab_Sprite(&ships,240,42,0,&ship_input); cout << "check.\n OPENING ANIMATION: "; Init_Sprite(&opening,61,47,4); for (c=0;c<4;c++) { Grab_Sprite(&ships,c*61,135,c,&opening); cout << "."; } cout << "check.\nSAVING:\n"; datafile=fopen("gravwhip.dat","wb"); cout << " ALPHABET : "; Save_Alph(datafile,&alphabet); cout << "check.\n SHIPS : "; for (c=0;c<6;c++) { Save_Sprite(datafile,&ship[c]); cout << "."; } cout << "check.\n EXPLOSIONS : "; Save_Sprite(datafile,&explosion); cout << "check.\n LOSS COUNTER : "; Save_Sprite(datafile,&checks); cout << "check.\n KILL COUNTER : "; Save_Sprite(datafile,&tiks); cout << "check.\n LOGO : "; Save_Sprite(datafile,&logo); cout << "check.\n BOXED ICONS : "; Save_Sprite(datafile,&boxed_icons); cout << "check.\n LITTLE ICONS : "; Save_Sprite(datafile,&little_icons); cout << "check.\n SLIDER BAR : "; Save_Sprite(datafile,&slider_bar); cout << "check.\n NUMBER POINTERS : "; Save_Sprite(datafile,&number_pointers); cout << "check.\n WEAPON ICONS : "; Save_Sprite(datafile,&weapons); cout << "check.\n INPUT ICONS : "; Save_Sprite(datafile,&ship_input); cout << "check.\n OPENING ANIMATION : "; Save_Sprite(datafile,&opening); cout << "check.\n PALLETTE : "; for (c=144;c<256;c++) Save_Color(datafile,ships.pal[c]); cout << "check.\n DONE"; fclose(datafile); } // end main