亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mtmfile.c

?? 這個(gè)是延伸mame的在wince平臺(tái)下的游戲模擬器的代碼
?? C
字號(hào):
/* * $Id: mtmfile.c 1.1 1996/09/25 17:19:14 chasan released $ * * Multitracker 1.0 module file loader * * Copyright (C) 1995-1999 Carlos Hasan * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */#include <stdio.h>#include <malloc.h>#include <string.h>#include "audio.h"#include "iofile.h"/* * MTM file header signature defines */#define MTM_SIGN_PATTERN    0x104D544DL#define MTM_SIGN_MASK       0xF0FFFFFFL/* * MTM module header structure */typedef struct {    DWORD   dwMTM;    CHAR    szModuleName[20];    WORD    nSeqTracks;    BYTE    nPatterns;    BYTE    nOrders;    WORD    nMesgSize;    BYTE    nSamples;    BYTE    bFlags;    BYTE    nBeatsPerTrack;    BYTE    nChannels;    BYTE    aPanningTable[32];} MTMHEADER, *LPMTMHEADER;/* * MTM sample header structure */typedef struct {    CHAR    szSampleName[22];    DWORD   dwLength;    DWORD   dwLoopStart;    DWORD   dwLoopEnd;    BYTE    nFinetune;    BYTE    nVolume;    BYTE    bFlags;} MTMSAMPLE, *LPMTMSAMPLE;/* * MTM track data structure */typedef struct {    BYTE    aData[3*64];} MTMTRACK, *LPMTMTRACK;static UINT MTMMakePattern(UINT nTracks, UINT nSeqTracks,			   LPAUDIOPATTERN lpPattern, WORD aPatSeqTable[32], LPMTMTRACK lpTrackTable){    LPBYTE lpData, lpEvent;    UINT nRowOfs, nTrack;    UINT fFlags, nNote, nSample, nCommand, nParams;    if ((lpData = (LPBYTE) malloc(64*5*nTracks)) == NULL)        return AUDIO_ERROR_NOMEMORY;    lpPattern->lpData = lpData;    lpPattern->nPacking = 0;    lpPattern->nTracks = nTracks;    lpPattern->nRows = 64;    for (nRowOfs = 0; nRowOfs < 3*64; nRowOfs += 3) {        for (nTrack = 0; nTrack < nTracks; nTrack++) {            if (aPatSeqTable[nTrack] >= 1 &&                aPatSeqTable[nTrack] <= nSeqTracks) {                lpEvent = &lpTrackTable[aPatSeqTable[nTrack]-1].aData[nRowOfs];                nNote = (lpEvent[0] >> 2) & 0x3F;                nSample = ((lpEvent[0] & 0x03) << 4) | (lpEvent[1] >> 4);                nCommand = (lpEvent[1] & 0x0F);                nParams = lpEvent[2];                fFlags = AUDIO_PATTERN_PACKED;                if (nNote) {                    nNote += 12*2 + 1;                    fFlags |= AUDIO_PATTERN_NOTE;                }                if (nSample)                    fFlags |= AUDIO_PATTERN_SAMPLE;                if (nCommand)                    fFlags |= AUDIO_PATTERN_COMMAND;                if (nParams)                    fFlags |= AUDIO_PATTERN_PARAMS;                *lpData++ = fFlags;                if (fFlags & AUDIO_PATTERN_NOTE)                    *lpData++ = nNote;                if (fFlags & AUDIO_PATTERN_SAMPLE)                    *lpData++ = nSample;                if (fFlags & AUDIO_PATTERN_COMMAND)                    *lpData++ = nCommand;                if (fFlags & AUDIO_PATTERN_PARAMS)                    *lpData++ = nParams;            }            else {                *lpData++ = AUDIO_PATTERN_PACKED;            }        }    }    lpPattern->nSize = lpData - lpPattern->lpData;    if ((lpPattern->lpData = (LPBYTE) 	 realloc(lpPattern->lpData, lpPattern->nSize)) == NULL)        return AUDIO_ERROR_NOMEMORY;    return AUDIO_ERROR_NONE;}static UINT MTMMakeSample(LPAUDIOPATCH lpPatch, LPMTMSAMPLE lpMTMSample){    LPAUDIOSAMPLE lpSample;    LPBYTE lpData;    DWORD dwCount;    UINT rc;    strncpy(lpPatch->szPatchName, lpMTMSample->szSampleName,	    sizeof(lpMTMSample->szSampleName));    if (lpMTMSample->dwLength) {        if ((lpSample = (LPAUDIOSAMPLE) calloc(1, sizeof(AUDIOSAMPLE))) == NULL)            return AUDIO_ERROR_NOMEMORY;        lpPatch->nSamples = 1;        lpPatch->aSampleTable = lpSample;        lpSample->Wave.wFormat = AUDIO_FORMAT_8BITS | AUDIO_FORMAT_MONO;        lpSample->Wave.dwLength = lpMTMSample->dwLength;        lpSample->nVolume = lpMTMSample->nVolume;        lpSample->nFinetune = lpMTMSample->nFinetune;        lpSample->nPanning = 0x80;        if (lpMTMSample->dwLoopStart + 2 < lpMTMSample->dwLoopEnd &&            lpMTMSample->dwLoopEnd <= lpMTMSample->dwLength) {            lpSample->Wave.wFormat |= AUDIO_FORMAT_LOOP;            lpSample->Wave.dwLoopStart = lpMTMSample->dwLoopStart;            lpSample->Wave.dwLoopEnd = lpMTMSample->dwLoopEnd;        }        if ((rc = ACreateAudioData(&lpSample->Wave)) != AUDIO_ERROR_NONE)            return rc;        AIOReadFile(lpSample->Wave.lpData, lpSample->Wave.dwLength);        lpData = lpSample->Wave.lpData;        dwCount = lpSample->Wave.dwLength;        while (dwCount--)            *lpData++ ^= 0x80;        AWriteAudioData(&lpSample->Wave, 0, lpSample->Wave.dwLength);    }    return AUDIO_ERROR_NONE;}UINT AIAPI ALoadModuleMTM(LPSTR lpszFileName, 			  LPAUDIOMODULE* lplpModule, DWORD dwFileOffset){    LPAUDIOMODULE lpModule;    static MTMHEADER Header;    LPMTMSAMPLE lpSampleTable;    LPMTMTRACK lpTrackTable;    static WORD aPatSeqTable[32];    UINT n, rc;    if (AIOOpenFile(lpszFileName)) {        return AUDIO_ERROR_FILENOTFOUND;    }    AIOSeekFile(dwFileOffset, SEEK_SET);    if ((lpModule = (LPAUDIOMODULE) calloc(1, sizeof(AUDIOMODULE))) == NULL) {        AIOCloseFile();        return AUDIO_ERROR_NOMEMORY;    }    /* load MTM module header data */    AIOReadLong(&Header.dwMTM);    AIOReadFile(Header.szModuleName, sizeof(Header.szModuleName));    AIOReadShort(&Header.nSeqTracks);    AIOReadChar(&Header.nPatterns);    AIOReadChar(&Header.nOrders);    AIOReadShort(&Header.nMesgSize);    AIOReadChar(&Header.nSamples);    AIOReadChar(&Header.bFlags);    AIOReadChar(&Header.nBeatsPerTrack);    AIOReadChar(&Header.nChannels);    AIOReadFile(Header.aPanningTable, sizeof(Header.aPanningTable));    /* check MTM file header signature and other fields */    if ((Header.dwMTM & MTM_SIGN_MASK) != MTM_SIGN_PATTERN ||/***    (Header.nPatterns > AUDIO_MAX_PATTERNS) ||   FIX: avoid warnings ***//***    (Header.nOrders > AUDIO_MAX_ORDERS) ||       FIX: avoid warnings ***/        (Header.nSamples > AUDIO_MAX_PATCHES) ||        (Header.nChannels > AUDIO_MAX_VOICES) ||        (Header.nBeatsPerTrack != 64)) {        AFreeModuleFile(lpModule);        AIOCloseFile();        return AUDIO_ERROR_BADFILEFORMAT;    }    /* build the local module header structure */    strncpy(lpModule->szModuleName, Header.szModuleName,	    sizeof(Header.szModuleName));    lpModule->wFlags = AUDIO_MODULE_AMIGA | AUDIO_MODULE_PANNING;    lpModule->nOrders = Header.nOrders + 1;    lpModule->nRestart = AUDIO_MAX_ORDERS;    lpModule->nTracks = Header.nChannels;    lpModule->nPatterns = Header.nPatterns + 1;    lpModule->nPatches = Header.nSamples;    lpModule->nTempo = 6;    lpModule->nBPM = 125;    for (n = 0; n < lpModule->nTracks; n++) {        lpModule->aPanningTable[n] = Header.aPanningTable[n] << 4;    }    /* allocate space for local patterns and patches */    if ((lpModule->aPatternTable = (LPAUDIOPATTERN)	 calloc(lpModule->nPatterns, sizeof(AUDIOPATTERN))) == NULL) {        AFreeModuleFile(lpModule);        AIOCloseFile();        return AUDIO_ERROR_NOMEMORY;    }    if ((lpModule->aPatchTable = (LPAUDIOPATCH)	 calloc(lpModule->nPatches, sizeof(AUDIOPATCH))) == NULL) {        AFreeModuleFile(lpModule);        AIOCloseFile();        return AUDIO_ERROR_NOMEMORY;    }    /* allocate space for MTM samples and track structures */    if ((lpSampleTable = (LPMTMSAMPLE) 	 calloc(Header.nSamples, sizeof(MTMSAMPLE))) == NULL) {        AFreeModuleFile(lpModule);        AIOCloseFile();        return AUDIO_ERROR_NOMEMORY;    }    if ((lpTrackTable = (LPMTMTRACK)	 calloc(Header.nSeqTracks, sizeof(MTMTRACK))) == NULL) {        free(lpSampleTable);        AFreeModuleFile(lpModule);        AIOCloseFile();        return AUDIO_ERROR_NOMEMORY;    }    /* load MTM sample header structures */    for (n = 0; n < lpModule->nPatches; n++) {        AIOReadFile(lpSampleTable[n].szSampleName, 		    sizeof(lpSampleTable[n].szSampleName));        AIOReadLong(&lpSampleTable[n].dwLength);        AIOReadLong(&lpSampleTable[n].dwLoopStart);        AIOReadLong(&lpSampleTable[n].dwLoopEnd);        AIOReadChar(&lpSampleTable[n].nFinetune);        AIOReadChar(&lpSampleTable[n].nVolume);        AIOReadChar(&lpSampleTable[n].bFlags);    }    /* load the MTM module order list */    AIOReadFile(lpModule->aOrderTable, 128);    /* load MTM module tracks from disk */    AIOReadFile(lpTrackTable, sizeof(MTMTRACK) * Header.nSeqTracks);    /* build module patterns from tracks */    for (n = 0; n < lpModule->nPatterns; n++) {        AIOReadFile(aPatSeqTable, sizeof(aPatSeqTable));        rc = MTMMakePattern(lpModule->nTracks, Header.nSeqTracks,			    &lpModule->aPatternTable[n], aPatSeqTable, lpTrackTable);        if (rc != AUDIO_ERROR_NONE) {            free(lpTrackTable);            free(lpSampleTable);            AFreeModuleFile(lpModule);            AIOCloseFile();            return rc;        }    }    free(lpTrackTable);    /* skip MTM comment message data */    AIOSeekFile(Header.nMesgSize, SEEK_CUR);    /* build module patches and samples structures */    for (n = 0; n < lpModule->nPatches; n++) {        rc = MTMMakeSample(&lpModule->aPatchTable[n], &lpSampleTable[n]);        if (rc != AUDIO_ERROR_NONE) {            free(lpSampleTable);            AFreeModuleFile(lpModule);            AIOCloseFile();            return rc;        }    }    free(lpSampleTable);    *lplpModule = lpModule;    return AUDIO_ERROR_NONE;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费看黄色91| 国产毛片一区二区| 欧美精品一区二区蜜臀亚洲| 99国产欧美另类久久久精品| 强制捆绑调教一区二区| 《视频一区视频二区| 欧美大片拔萝卜| 欧美三区在线视频| 91免费看`日韩一区二区| 狠狠网亚洲精品| 日韩成人午夜电影| 亚洲精品免费看| 欧美激情一区三区| 精品国产一二三| 欧美一区二区三区免费视频| 99视频精品免费视频| 狠狠色丁香婷综合久久| 丝袜诱惑制服诱惑色一区在线观看 | 99在线热播精品免费| 狠狠色2019综合网| 美女脱光内衣内裤视频久久网站 | 国产亲近乱来精品视频| 日韩欧美一级二级| 欧美乱妇20p| 欧美三级日韩三级| 在线观看视频91| 色诱视频网站一区| 北条麻妃一区二区三区| 福利一区在线观看| 国产精品一级在线| 国产一区二区三区久久悠悠色av | 久久99精品久久久久婷婷| 亚洲成av人影院| 一区二区国产视频| 亚洲精品视频一区二区| 亚洲视频每日更新| 亚洲人成伊人成综合网小说| 中文字幕在线观看不卡| 中文字幕一区二区三区视频| 国产精品欧美精品| 国产精品久久久久aaaa| 国产精品免费久久久久| 国产精品视频一二三区| 国产精品久久三区| 亚洲人精品一区| 一级做a爱片久久| 亚洲第一av色| 青娱乐精品视频在线| 国产剧情一区二区三区| 国产一区二区三区久久久 | 成人午夜激情在线| 成人免费毛片高清视频| 成人av电影免费观看| 99视频一区二区三区| 91行情网站电视在线观看高清版| 色一区在线观看| 欧美挠脚心视频网站| 91精选在线观看| 精品国产一区二区三区av性色| 久久精品一区蜜桃臀影院| 国产精品嫩草99a| 一区二区在线观看视频| 日韩电影一二三区| 国产福利一区二区| 色综合亚洲欧洲| 91麻豆精品国产综合久久久久久 | 成人伦理片在线| 91成人免费在线| 欧美二区三区91| 欧美精品一区视频| 亚洲三级在线免费| 亚洲成人福利片| 国产乱国产乱300精品| www.色精品| 91精品在线观看入口| 国产日韩精品一区二区三区| 综合久久久久综合| 老司机免费视频一区二区三区| 国产精品一品二品| 欧美日韩小视频| 国产日韩欧美综合在线| 亚洲线精品一区二区三区八戒| 美女诱惑一区二区| 97精品国产露脸对白| 91精品久久久久久久久99蜜臂| 国产日产欧美一区二区视频| 一区二区三区四区在线| 国产一区不卡在线| 欧美体内she精高潮| 国产欧美日本一区视频| 午夜私人影院久久久久| 懂色av一区二区三区免费观看 | 国产欧美一区二区在线观看| 亚洲资源中文字幕| 国产精品一区二区三区四区| 91福利社在线观看| 国产丝袜在线精品| 美女高潮久久久| 91免费看片在线观看| 国产亚洲精品免费| 免费看日韩精品| 欧美性猛交xxxx黑人交| 欧美国产成人在线| 九九视频精品免费| 欧美日韩视频在线第一区 | 亚洲免费观看高清完整版在线观看 | 久久久www免费人成精品| 亚洲一卡二卡三卡四卡无卡久久| 国产精品亚洲一区二区三区妖精| 欧美日韩国产小视频在线观看| 国产精品久久久久久久久久免费看| 蜜桃视频在线观看一区| 欧美丝袜丝nylons| 亚洲摸摸操操av| av午夜精品一区二区三区| 26uuu国产日韩综合| 日韩制服丝袜av| 欧美日韩精品是欧美日韩精品| 一区在线播放视频| 成人av电影在线播放| 久久精品在线观看| 国产精品一区在线观看乱码| 日韩三级免费观看| 日本一不卡视频| 欧美电影一区二区三区| 午夜一区二区三区在线观看| 一本到不卡免费一区二区| 中文字幕在线不卡一区 | 亚洲高清在线精品| 91国偷自产一区二区使用方法| 国产精品国产三级国产普通话蜜臀 | 国产毛片精品视频| 久久综合狠狠综合久久综合88| 麻豆精品国产91久久久久久| 欧美日韩国产中文| 午夜精品一区二区三区免费视频| 欧美日韩在线播| 亚洲风情在线资源站| 欧美日韩一区精品| 日韩国产欧美在线观看| 欧美日韩精品系列| 免费亚洲电影在线| 久久久久国产精品厨房| 国产成人福利片| 国产精品国产三级国产普通话蜜臀| 99久久精品国产精品久久| 亚洲丝袜自拍清纯另类| 亚洲麻豆国产自偷在线| 日本韩国欧美一区二区三区| 亚洲五月六月丁香激情| 欧美日韩国产bt| 久久99最新地址| 国产区在线观看成人精品| 成人高清在线视频| 亚洲综合免费观看高清完整版| 欧美日韩在线播放三区四区| 日本视频中文字幕一区二区三区 | 欧美高清在线一区二区| www.在线成人| 亚洲一区二区黄色| 日韩午夜在线观看视频| 国产一区二区三区在线观看精品 | 精品日韩在线观看| 国产精品中文字幕欧美| 国产精品久久久久久福利一牛影视| 91麻豆免费在线观看| 亚洲成人自拍网| 日韩精品一区二区三区四区视频| 国产成人在线观看| 亚洲综合色噜噜狠狠| 日韩欧美一区在线观看| 成人免费视频网站在线观看| 亚洲一卡二卡三卡四卡五卡| 精品久久免费看| 91丝袜美腿高跟国产极品老师 | 国产欧美一二三区| 欧美午夜精品一区二区三区| 久久99精品国产麻豆婷婷| 国产精品久久久久影院亚瑟| 在线免费不卡视频| 久草这里只有精品视频| 亚洲激情校园春色| 精品av久久707| 91黄色激情网站| 国产黄色成人av| 日韩在线a电影| 国产精品久久久久久久久免费相片| 欧美二区在线观看| 91视频www| 国产精品中文字幕欧美| 亚洲午夜久久久久久久久久久 | 亚洲一二三区视频在线观看| 精品免费视频一区二区| 91黄视频在线观看| 国产91精品入口| 麻豆精品国产传媒mv男同| 亚洲综合网站在线观看| 欧美激情一区在线| 欧美大片在线观看一区| 欧美在线短视频|