예제 #1
0
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...");
	}
}
예제 #2
0
파일: SndFont.c 프로젝트: svkaiser/doom64DS
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);
}