void Texture_Setup(void) { int i = 0; int pos = 0; for(i = Wad_GetLumpNum("T_START")+1; i < Wad_GetLumpNum("T_END"); i++) { romWadFile.lumpcache[i] = Wad_GetLump(romWadFile.lump[i].name, true); Texture_CreateRomLump(&d64RomTexture[pos], romWadFile.lumpcache[i]); Texture_CreateExLump(&d64ExTexture[pos], &d64RomTexture[pos]); // Masked textures are identified by having its first palette color all 0s, but // the nukage textures appear to have 0 RGB for its first palette color.. which // causes them to be masked or see-through. This hack will prevent that.. if(i == Wad_GetLumpNum("SLIMEA") || i == Wad_GetLumpNum("SLIMEB")) { d64ExTexture[pos].palette[0][0].r = d64ExTexture[pos].palette[0][0].g = d64ExTexture[pos].palette[0][0].b = 1; } d64ExTexture[pos++].lumpRef = i; WGen_UpdateProgress("Converting Textures..."); } }
void SF_CreatePresets(patch_t* patch, int npatch, subpatch_t* subpatch, int nsubpatch, wavtable_t* wavtable) { int i; int j; uint banks = 0; uint presetcount = 0; gentypes_t value; char name[20]; WGen_UpdateProgress("Building Soundfont Presets..."); for(i = 0; i < npatch; i++) { patch_t* p; p = &patch[i]; // // I can only assume that normal sounds come after all instruments... // it would suck if they didn't... // if(!subpatch[p->offset].instrument && !banks) { presetcount = 0; banks++; } sprintf(name, "PRESET_%03d", totalpresets); SF_AddPreset(&preset->info, name, totalpresets, banks, presetcount++); for(j = 0; j < p->length; j++) { subpatch_t* sp; wavtable_t* wt; SF_AddPresetBag(&preset->bag); value.wAmount = totalinstruments; SF_AddPresetGenerator(&preset->gen, GEN_INSTRUMENT, value); sp = &subpatch[p->offset + j]; wt = &wavtable[sp->id]; sprintf(name, "INST_%03d", totalinstruments); SF_AddInstrument(&inst->info, name, totalinstruments); SF_AddInstrumentBag(&inst->bag); // // min/max notes // value.ranges.byLo = sp->minnote; value.ranges.byHi = sp->maxnote; SF_AddInstrumentGenerator(&inst->gen, GEN_KEYRANGE, value); // // attenuation // if(sp->attenuation < 127) { value.wAmount = (int)attentopercent(sp->attenuation); SF_AddInstrumentGenerator(&inst->gen, GEN_ATTENUATION, value); } // // panning // if(sp->pan != 64) { value.wAmount = (int)pantopercent(sp->pan); SF_AddInstrumentGenerator(&inst->gen, GEN_PAN, value); } // // attack time // if(sp->attacktime > 1) { value.wAmount = (int)usectotimecents(sp->attacktime); SF_AddInstrumentGenerator(&inst->gen, GEN_VOLENVATTACK, value); } // // release time // if(sp->decaytime > 1) { value.wAmount = (int)usectotimecents(sp->decaytime); SF_AddInstrumentGenerator(&inst->gen, GEN_VOLENVRELEASE, value); } // // sample loops // if(wt->loopid != -1) { value.wAmount = 1; SF_AddInstrumentGenerator(&inst->gen, GEN_SAMPLEMODE, value); } // // root key override // value.wAmount = getoriginalpitch(sp->rootkey, wt->pitch); SF_AddInstrumentGenerator(&inst->gen, GEN_OVERRIDEROOTKEY, value); // // sample id // value.wAmount = sp->id; SF_AddInstrumentGenerator(&inst->gen, GEN_SAMPLEID, value); totalinstruments++; } totalpresets++; } SF_AddPreset(&preset->info, "EOP", totalpresets, 0, ++banks); SF_AddPresetBag(&preset->bag); value.wAmount = 0; SF_AddPresetGenerator(&preset->gen, GEN_INSTRUMENT, value); SF_AddInstrument(&inst->info, "EOI", totalinstruments); SF_AddInstrumentBag(&inst->bag); value.wAmount = 0; SF_AddInstrumentGenerator(&inst->gen, GEN_SAMPLEID, value); }