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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? modeng.c

?? 這個是延伸mame的在wince平臺下的游戲模擬器的代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
static VOID GetPatternNote(LPNOTE lpNote){    BYTE fPacking;#define GETBYTE *Player.lpData++    fPacking = (Player.lpData != NULL) ?        (Player.lpData[0] & AUDIO_PATTERN_PACKED ? GETBYTE : 0xFF) : 0x00;    lpNote->nNote = (fPacking & AUDIO_PATTERN_NOTE) ? GETBYTE : 0x00;    lpNote->nPatch = (fPacking & AUDIO_PATTERN_SAMPLE) ? GETBYTE : 0x00;    lpNote->nVolume = (fPacking & AUDIO_PATTERN_VOLUME) ? GETBYTE : 0x00;    lpNote->nCommand = (fPacking & AUDIO_PATTERN_COMMAND) ? GETBYTE : 0x00;    lpNote->bParams = (fPacking & AUDIO_PATTERN_PARAMS) ? GETBYTE : 0x00;}static VOID GetTrackNote(LPTRACK lpTrack){    static NOTE Note;    /* read next packed note from pattern */    GetPatternNote(&Note);    /* reset frequency for vibrato and arpeggio commands */    if (lpTrack->nCommand == 0x04 || lpTrack->nCommand == 0x06) {        if (Note.nCommand != 0x04 && Note.nCommand != 0x06) {            lpTrack->nOutPeriod = lpTrack->nPeriod;            lpTrack->bControl |= AUDIO_CTRL_PITCH;        }    }    else if (lpTrack->nCommand == 0x00 && lpTrack->bParams != 0x00) {        lpTrack->nOutPeriod = lpTrack->nPeriod;        lpTrack->bControl |= AUDIO_CTRL_PITCH;    }    /* assign volume and effect commands */    lpTrack->nVolumeCmd = Note.nVolume;    lpTrack->nCommand = Note.nCommand;    lpTrack->bParams = Note.bParams;    /* change default patch instrument */    if (Note.nPatch >= 1 && Note.nPatch <= Player.lpModule->nPatches) {        lpTrack->nPatch = Note.nPatch;        lpTrack->lpPatch = &Player.lpModule->aPatchTable[lpTrack->nPatch - 1];    }    /* new note pressed? */    if (Note.nNote >= 1 && Note.nNote <= AUDIO_MAX_NOTES) {        lpTrack->nNote = Note.nNote;        PlayNote(lpTrack);        if (Note.nPatch != 0 && lpTrack->lpSample != NULL)            StartEnvelopes(lpTrack);    }    else if (Note.nNote != 0) {        StopNote(lpTrack);    }    /* use default sample's volume and panning? */    if (Note.nPatch != 0 && lpTrack->lpSample != NULL) {        lpTrack->nVolume = lpTrack->nOutVolume = lpTrack->lpSample->nVolume;        lpTrack->bControl |= AUDIO_CTRL_VOLUME;        if (!(Player.wFlags & AUDIO_MODULE_PANNING)) {            lpTrack->nPanning = lpTrack->lpSample->nPanning;            lpTrack->bControl |= AUDIO_CTRL_PANNING;        }    }}static VOID SendNoteMesg(HAC hVoice, LPTRACK lpTrack){    if (lpTrack->bControl & (AUDIO_CTRL_KEYON | AUDIO_CTRL_TOUCH)) {        if (lpTrack->lpSample != NULL) {            APrimeVoice(hVoice, &lpTrack->lpSample->Wave);            if (lpTrack->bControl & AUDIO_CTRL_TOUCH)                ASetVoicePosition(hVoice, lpTrack->dwSampleOffset);        }    }    if (lpTrack->bControl & AUDIO_CTRL_KEYOFF) {        AStopVoice(hVoice);    }    if (lpTrack->bControl & AUDIO_CTRL_PITCH) {        ASetVoiceFrequency(hVoice, GetFrequencyValue(lpTrack->nFinalPeriod));    }    if (lpTrack->bControl & AUDIO_CTRL_VOLUME) {        ASetVoiceVolume(hVoice, (lpTrack->nFinalVolume * Player.nVolume) >> 6);    }    if (lpTrack->bControl & AUDIO_CTRL_PANNING) {        ASetVoicePanning(hVoice, lpTrack->nFinalPanning);    }    if (lpTrack->bControl & AUDIO_CTRL_KEYON) {        AStartVoice(hVoice);    }    lpTrack->bControl = 0x00;}static VOID GetNextPatternRow(VOID){    static NOTE Note;    LPAUDIOPATTERN lpPattern;    int n, m;    Player.nFrame = 0;    if (Player.wControl & AUDIO_PLAYER_DELAY)        return;    if (++Player.nRow >= Player.nRows) {        Player.wControl |= AUDIO_PLAYER_BREAK;    }    if (Player.wControl & AUDIO_PLAYER_JUMP) {        Player.nRow = Player.nJumpRow;        Player.nJumpRow = 0;        Player.nOrder = Player.nJumpOrder;    }    else if (Player.wControl & AUDIO_PLAYER_BREAK) {        Player.nRow = Player.nJumpRow;        Player.nJumpRow = 0;        Player.nOrder++;    }    if (Player.wControl & (AUDIO_PLAYER_BREAK | AUDIO_PLAYER_JUMP)) {        Player.wControl &= ~(AUDIO_PLAYER_BREAK | AUDIO_PLAYER_JUMP);        if (Player.nOrder >= Player.lpModule->nOrders) {            Player.nOrder = Player.lpModule->nRestart;            if (Player.nOrder >= Player.lpModule->nOrders) {                Player.nOrder = 0x00;                Player.wControl |= AUDIO_PLAYER_PAUSE;                return;            }        }        Player.nPattern = Player.lpModule->aOrderTable[Player.nOrder];        if (Player.nPattern < Player.lpModule->nPatterns) {            lpPattern = &Player.lpModule->aPatternTable[Player.nPattern];            Player.nRows = lpPattern->nRows;            Player.lpData = lpPattern->lpData;            if (Player.nRow >= Player.nRows) {                Player.nRow = 0x00;            }            for (m = 0; m < Player.nRow; m++) {                for (n = 0; n < Player.nTracks; n++)                    GetPatternNote(&Note);            }        }        else {            Player.nRows = 64;            Player.lpData = NULL;        }    }    for (n = 0; n < Player.nTracks; n++) {        GetTrackNote(&Player.aTracks[n]);    }}static VOID AIAPI PlayNextFrame(VOID){    int n;    if (!(Player.wControl & AUDIO_PLAYER_PAUSE)) {        if (++Player.nFrame >= Player.nTempo) {            GetNextPatternRow();        }        for (n = 0; n < Player.nTracks; n++) {            ExecVolumeCmd(&Player.aTracks[n]);            ExecNoteCmd(&Player.aTracks[n]);            UpdateEnvelopes(&Player.aTracks[n]);        }        if (Player.wControl & AUDIO_PLAYER_DELAY) {            if (!Player.nFrame && !--Player.nPatternDelay)                Player.wControl &= ~AUDIO_PLAYER_DELAY;        }        if (Player.wControl & AUDIO_PLAYER_VOLUME) {            Player.wControl &= ~AUDIO_PLAYER_VOLUME;            for (n = 0; n < Player.nTracks; n++)                Player.aTracks[n].bControl |= AUDIO_CTRL_VOLUME;        }        if (Player.wControl & AUDIO_PLAYER_BPM) {            Player.wControl &= ~AUDIO_PLAYER_BPM;            ASetAudioTimerRate(Player.nBPM);        }        for (n = 0; n < Player.nTracks; n++) {            SendNoteMesg(Player.aVoices[n], &Player.aTracks[n]);        }    }}/* * High-level extended module player routines */UINT AIAPI APlayModule(LPAUDIOMODULE lpModule){    int n;    if (!(Player.wControl & AUDIO_PLAYER_ACTIVE)) {        if (lpModule != NULL) {            memset(&Player, 0, sizeof(Player));            Player.lpModule = lpModule;            Player.nTracks = lpModule->nTracks;            Player.wFlags = lpModule->wFlags;            Player.nTempo = lpModule->nTempo;            Player.nBPM = lpModule->nBPM;            Player.nVolume = AUDIO_MAX_VOLUME;            Player.wControl = AUDIO_PLAYER_ACTIVE | AUDIO_PLAYER_JUMP;            for (n = 0; n < Player.nTracks; n++) {                if (ACreateAudioVoice(&Player.aVoices[n]) != AUDIO_ERROR_NONE) {                    AStopModule();                    return AUDIO_ERROR_NOMEMORY;                }                Player.aTracks[n].nPanning = lpModule->aPanningTable[n];                ASetVoicePanning(Player.aVoices[n], Player.aTracks[n].nPanning);            }            ASetAudioTimerRate(Player.nBPM);            ASetAudioTimerProc(PlayNextFrame);            return AUDIO_ERROR_NONE;        }        return AUDIO_ERROR_INVALPARAM;    }    return AUDIO_ERROR_NOTSUPPORTED;}UINT AIAPI AStopModule(VOID){    int n;    if (Player.wControl & AUDIO_PLAYER_ACTIVE) {        for (n = 0; n < Player.nTracks; n++) {            AStopVoice(Player.aVoices[n]);            ADestroyAudioVoice(Player.aVoices[n]);        }        memset(&Player, 0, sizeof(Player));        ASetAudioTimerProc(NULL);        ASetAudioTimerRate(125);        return AUDIO_ERROR_NONE;    }    return AUDIO_ERROR_NOTSUPPORTED;}UINT AIAPI APauseModule(VOID){    int n;    if (Player.wControl & AUDIO_PLAYER_ACTIVE) {        Player.wControl |= AUDIO_PLAYER_PAUSE;        for (n = 0; n < Player.nTracks; n++)            ASetVoiceVolume(Player.aVoices[n], 0x00);        return AUDIO_ERROR_NONE;    }    return AUDIO_ERROR_NOTSUPPORTED;}UINT AIAPI AResumeModule(VOID){    if (Player.wControl & AUDIO_PLAYER_ACTIVE) {        Player.wControl &= ~AUDIO_PLAYER_PAUSE;        Player.wControl |= AUDIO_PLAYER_VOLUME;        return AUDIO_ERROR_NONE;    }    return AUDIO_ERROR_NOTSUPPORTED;}UINT AIAPI ASetModuleVolume(UINT nVolume){    if (Player.wControl & AUDIO_PLAYER_ACTIVE) {        if (nVolume <= AUDIO_MAX_VOLUME) {            Player.nVolume = nVolume;            if (!(Player.wControl & AUDIO_PLAYER_PAUSE)) {                Player.wControl |= AUDIO_PLAYER_VOLUME;            }            return AUDIO_ERROR_NONE;        }        return AUDIO_ERROR_INVALPARAM;    }    return AUDIO_ERROR_NOTSUPPORTED;}UINT AIAPI ASetModulePosition(UINT nOrder, UINT nRow){    if (Player.wControl & AUDIO_PLAYER_ACTIVE) {        Player.nJumpOrder = nOrder;        Player.nJumpRow = nRow;        Player.wControl |= AUDIO_PLAYER_JUMP;        return AUDIO_ERROR_NONE;    }    return AUDIO_ERROR_NOTSUPPORTED;}UINT AIAPI AGetModuleVolume(LPUINT lpnVolume){    if (Player.wControl & AUDIO_PLAYER_ACTIVE) {        if (lpnVolume != NULL) {            *lpnVolume = Player.nVolume;            return AUDIO_ERROR_NONE;        }        return AUDIO_ERROR_INVALPARAM;    }    return AUDIO_ERROR_NOTSUPPORTED;}UINT AIAPI AGetModulePosition(LPUINT lpnOrder, LPUINT lpnRow){    if (Player.wControl & AUDIO_PLAYER_ACTIVE) {        if (lpnOrder != NULL && lpnRow != NULL) {            *lpnOrder = Player.nOrder;            *lpnRow = Player.nRow;            return AUDIO_ERROR_NONE;        }        return AUDIO_ERROR_INVALPARAM;    }    return AUDIO_ERROR_NOTSUPPORTED;}UINT AIAPI AGetModuleStatus(LPBOOL lpnStatus){    if (Player.wControl & AUDIO_PLAYER_ACTIVE) {        if (lpnStatus != NULL) {            *lpnStatus = ((Player.wControl & AUDIO_PLAYER_PAUSE) != 0);            return AUDIO_ERROR_NONE;        }        return AUDIO_ERROR_INVALPARAM;    }    return AUDIO_ERROR_NOTSUPPORTED;}UINT AIAPI ASetModuleCallback(LPFNAUDIOCALLBACK lpfnAudioCallback){    if (Player.wControl & AUDIO_PLAYER_ACTIVE) {        Player.lpfnCallback = lpfnAudioCallback;        return AUDIO_ERROR_NONE;    }    return AUDIO_ERROR_NOTSUPPORTED;}UINT AIAPI AFreeModuleFile(LPAUDIOMODULE lpModule){    LPAUDIOPATTERN lpPattern;    LPAUDIOPATCH lpPatch;    LPAUDIOSAMPLE lpSample;    UINT n, m;    if (lpModule != NULL) {        if ((lpPattern = lpModule->aPatternTable) != NULL) {            for (n = 0; n < lpModule->nPatterns; n++, lpPattern++) {                if (lpPattern->lpData != NULL)                    free(lpPattern->lpData);            }            free(lpModule->aPatternTable);        }        if ((lpPatch = lpModule->aPatchTable) != NULL) {            for (n = 0; n < lpModule->nPatches; n++, lpPatch++) {                lpSample = lpPatch->aSampleTable;                for (m = 0; m < lpPatch->nSamples; m++, lpSample++) {                    ADestroyAudioData(&lpSample->Wave);                }                free(lpPatch->aSampleTable);            }            free(lpModule->aPatchTable);        }        free(lpModule);        return AUDIO_ERROR_NONE;    }    return AUDIO_ERROR_INVALPARAM;}UINT AIAPI ALoadModuleFile(LPSTR lpszFileName, 			   LPAUDIOMODULE *lplpModule, DWORD dwOffset){    extern UINT AIAPI ALoadModuleXM(LPSTR, LPAUDIOMODULE*, DWORD);    extern UINT AIAPI ALoadModuleS3M(LPSTR, LPAUDIOMODULE*, DWORD);    extern UINT AIAPI ALoadModuleMOD(LPSTR, LPAUDIOMODULE*, DWORD);    extern UINT AIAPI ALoadModuleMTM(LPSTR, LPAUDIOMODULE*, DWORD);    UINT nErrorCode;    if (lpszFileName != NULL && lplpModule != NULL) {        *lplpModule = NULL;        nErrorCode = ALoadModuleXM(lpszFileName, lplpModule, dwOffset);        if (nErrorCode == AUDIO_ERROR_BADFILEFORMAT)            nErrorCode = ALoadModuleS3M(lpszFileName, lplpModule, dwOffset);        if (nErrorCode == AUDIO_ERROR_BADFILEFORMAT)            nErrorCode = ALoadModuleMOD(lpszFileName, lplpModule, dwOffset);        if (nErrorCode == AUDIO_ERROR_BADFILEFORMAT)            nErrorCode = ALoadModuleMTM(lpszFileName, lplpModule, dwOffset);        return nErrorCode;    }    return AUDIO_ERROR_INVALPARAM;}/*** NEW: 04/12/98 ***/UINT AIAPI AGetModuleTrack(UINT nTrack, LPAUDIOTRACK lpTrack){    if (Player.wControl & AUDIO_PLAYER_ACTIVE) {        if (nTrack < 32 && lpTrack != NULL) {            lpTrack->nNote = Player.aTracks[nTrack].nNote;            lpTrack->nPatch = Player.aTracks[nTrack].nPatch;            lpTrack->nSample = Player.aTracks[nTrack].nSample;            lpTrack->nCommand = Player.aTracks[nTrack].nCommand;            lpTrack->nVolumeCmd = Player.aTracks[nTrack].nVolumeCmd;            lpTrack->bParams = Player.aTracks[nTrack].bParams;            lpTrack->nVolume = Player.aTracks[nTrack].nFinalVolume;            lpTrack->nPanning = Player.aTracks[nTrack].nFinalPanning;            lpTrack->wPeriod = Player.aTracks[nTrack].nFinalPeriod;            lpTrack->dwFrequency = Player.aTracks[nTrack].dwFrequency;            return AUDIO_ERROR_NONE;        }        return AUDIO_ERROR_INVALPARAM;    }    return AUDIO_ERROR_NOTSUPPORTED;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久爽爽爽麻豆色哟哟| 久久亚洲一级片| 欧美成人欧美edvon| 亚洲伦在线观看| 寂寞少妇一区二区三区| 色妞www精品视频| 国产人妖乱国产精品人妖| 91精品一区二区三区久久久久久| 在线观看免费视频综合| 精品成a人在线观看| 一区二区三区日韩欧美| 国产成人精品免费在线| 7777女厕盗摄久久久| 成人欧美一区二区三区白人| 久久精品国产精品青草| 欧美日韩国产小视频在线观看| 欧美激情综合在线| 极品少妇xxxx精品少妇| 在线成人av网站| 亚洲图片欧美一区| 91精彩视频在线| 亚洲男人的天堂在线观看| 国产成人夜色高潮福利影视| 日韩美女视频在线| 日本欧美大码aⅴ在线播放| 欧美自拍偷拍午夜视频| 亚洲精品中文在线影院| 99精品黄色片免费大全| 欧美精品乱码久久久久久按摩 | 国产喷白浆一区二区三区| 性感美女极品91精品| 在线免费一区三区| 亚洲精品菠萝久久久久久久| 99久久精品免费精品国产| 中文字幕免费观看一区| 国产一区二区毛片| 久久亚洲综合av| 国内精品在线播放| 久久色.com| 国产一区欧美一区| 欧美精彩视频一区二区三区| 风间由美性色一区二区三区| 国产精品色眯眯| 91亚洲国产成人精品一区二三 | 亚洲手机成人高清视频| 波多野洁衣一区| 欧美日韩国产系列| 91片黄在线观看| 国产精品的网站| 91免费精品国自产拍在线不卡| 亚洲图片另类小说| 欧洲精品一区二区三区在线观看| 一区二区三区不卡在线观看 | 亚洲精品乱码久久久久久日本蜜臀| av福利精品导航| 亚洲国产视频直播| 精品免费日韩av| 成人小视频免费在线观看| 国产精品久久久久婷婷| 日本精品视频一区二区三区| 一区二区三区 在线观看视频 | 中文文精品字幕一区二区| 国产高清成人在线| 国产精品免费网站在线观看| av爱爱亚洲一区| 亚洲一区二区三区四区五区中文| 欧美视频在线一区二区三区 | 色哟哟国产精品| 亚洲综合一区二区三区| 欧美日本在线观看| 激情综合一区二区三区| 欧美国产一区在线| 91国产免费观看| 美女www一区二区| 中文字幕欧美国产| 91传媒视频在线播放| 捆绑变态av一区二区三区| 国产日产亚洲精品系列| 色8久久精品久久久久久蜜 | 成人av免费观看| 亚洲一区二区精品视频| 日韩欧美在线一区二区三区| 麻豆精品在线观看| 亚洲综合色在线| 欧美精品一区二区不卡| 91麻豆产精品久久久久久 | 欧美日韩视频在线一区二区| 蜜桃一区二区三区在线观看| 国产亚洲福利社区一区| 欧美日韩一区三区| 国产美女精品一区二区三区| 偷拍日韩校园综合在线| 中文一区在线播放| 制服丝袜日韩国产| 91一区二区三区在线播放| 日韩高清欧美激情| 久久久www成人免费毛片麻豆| 麻豆精品蜜桃视频网站| 国产精品久久二区二区| 日韩一区二区高清| 91极品美女在线| 国产精品一品二品| 亚洲国产一区二区三区| 亚洲欧美精品午睡沙发| 精品国产乱码久久久久久牛牛| 99精品视频在线观看免费| 久久国产精品免费| 午夜伦理一区二区| 亚洲精品视频自拍| 国产蜜臀97一区二区三区| 日韩欧美一级二级三级久久久| 在线观看日产精品| www.久久久久久久久| 国产一区二区不卡| 奇米一区二区三区av| 亚洲国产成人av| 一区二区三区四区五区视频在线观看 | 欧美性生活影院| 99久久综合精品| 成人免费高清视频在线观看| 久久国产精品99久久人人澡| 亚洲免费观看高清完整| 成人免费在线播放视频| 欧美激情一区在线| 久久精品夜色噜噜亚洲aⅴ| 日韩欧美国产麻豆| 欧美一区二区高清| 日韩午夜在线观看| 91麻豆精品国产91久久久久| 在线观看一区不卡| 国产成人在线电影| 91天堂素人约啪| 色综合天天综合网天天狠天天| 99re成人在线| 91免费观看在线| 日本韩国欧美在线| 91精品办公室少妇高潮对白| 91九色最新地址| 色老汉一区二区三区| 色琪琪一区二区三区亚洲区| 成人av免费网站| 91碰在线视频| 欧美影院精品一区| 欧美一区二区三区爱爱| 日韩欧美另类在线| 日本一区二区三区四区在线视频| 中文字幕不卡在线| 一区二区三区四区视频精品免费| 日本午夜精品视频在线观看| 激情五月婷婷综合| 丰满放荡岳乱妇91ww| 色婷婷久久一区二区三区麻豆| 日本高清成人免费播放| 91精品国产综合久久香蕉的特点 | 国产精品福利av| 一区二区三区蜜桃网| 日韩国产欧美在线播放| 国产资源在线一区| 97se亚洲国产综合自在线不卡| 色94色欧美sute亚洲线路二| 欧美挠脚心视频网站| 精品国产在天天线2019| 国产精品天干天干在观线| 亚洲一区二区不卡免费| 免费久久精品视频| 国产高清无密码一区二区三区| 欧美日本一区二区在线观看| 久久久精品黄色| 一区二区三区色| 国产尤物一区二区在线| 色综合天天性综合| 日韩天堂在线观看| 欧美一级免费大片| 一区二区三区精品视频在线| 免费人成精品欧美精品| 99久久免费国产| 日韩欧美一区二区不卡| 亚洲少妇最新在线视频| 天堂精品中文字幕在线| 狠狠色2019综合网| 欧美在线一区二区| 国产欧美视频在线观看| 日韩精品一级二级| 91影院在线免费观看| 精品国产亚洲在线| 亚洲蜜臀av乱码久久精品| 国产毛片一区二区| 91精品综合久久久久久| 亚洲欧洲99久久| 国产精品亚洲专一区二区三区 | 国产成人亚洲精品狼色在线| 91老师片黄在线观看| 国产欧美日韩三区| 日韩精品电影在线观看| 91碰在线视频| 国产精品久久久久久久浪潮网站| 另类中文字幕网| 欧美人成免费网站| 亚洲天堂av老司机| 91成人网在线|