⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mvreverb.masm

📁 An interactive water fountain. A realistic water source in your pocket with full control. Contro
💻 MASM
字号:
.586PCODE SEGMENT PUBLIC USE32 'DATA'ASSUME cs:CODE,ds:CODE;================;; MV_16BitReverb;;================; eax - source position; edx - destination position; ebx - Volume table; ecx - number of samplesALIGN 16PUBLIC _MV_16BitReverb_MV_16BitReverb:	pushad	mov     eax, dword ptr [esp + 0*4 + 9*4]	mov     edx, dword ptr [esp + 1*4 + 9*4]	mov     ebx, dword ptr [esp + 2*4 + 9*4]	mov     ecx, dword ptr [esp + 3*4 + 9*4]	        mov     esi, eax        lea     edi, [edx - 2];ALIGN 4rev16loop:        movzx   eax, word ptr [esi]             ; get sample        add     edi, 2        movzx   edx, ah        sub     ah, ah        movsx   eax, byte ptr [2*eax+ebx+1]     ; volume translate low byte of sample        xor     edx, 80h        movsx   edx, word ptr [2*edx+ebx]       ; volume translate high byte of sample        add     esi, 2        lea     eax, [ eax + edx + 80h ]        ; mix high byte of sample        dec     ecx                             ; decrement count        mov     [edi], ax                       ; write new sample to destination        jnz     rev16loop                       ; loop	popad        ret;================;; MV_8BitReverb;;================; eax - source position; edx - destination position; ebx - Volume table; ecx - number of samplesALIGN 16PUBLIC _MV_8BitReverb_MV_8BitReverb:	pushad	mov     eax, dword ptr [esp + 0*4 + 9*4]	mov     edx, dword ptr [esp + 1*4 + 9*4]	mov     ebx, dword ptr [esp + 2*4 + 9*4]	mov     ecx, dword ptr [esp + 3*4 + 9*4]        mov     esi, eax        lea     edi, [edx - 1]        xor     eax, eax;ALIGN 4rev8loop:;        movzx   eax, byte ptr [esi]             ; get sample        mov     al, byte ptr [esi]              ; get sample        inc     edi;        movsx   eax, byte ptr [2*eax+ebx]       ; volume translate sample        mov     al, byte ptr [2*eax+ebx]        ; volume translate sample        inc     esi;        add     eax, 80h        add     al, 80h        dec     ecx                             ; decrement count        mov     [edi], al                       ; write new sample to destination        jnz     rev8loop                        ; loop	popad        ret;================;; MV_16BitReverbFast;;================; eax - source position; edx - destination position; ebx - number of samples; ecx - shiftALIGN 16PUBLIC _MV_16BitReverbFast_MV_16BitReverbFast:	pushad	mov     eax, dword ptr [esp + 0*4 + 9*4]	mov     edx, dword ptr [esp + 1*4 + 9*4]	mov     ebx, dword ptr [esp + 2*4 + 9*4]	mov     ecx, dword ptr [esp + 3*4 + 9*4]        mov     esi, eax        mov     eax,OFFSET rpatch16+3        mov     [eax],cl        lea     edi, [edx - 2];ALIGN 4frev16loop:        mov     ax, word ptr [esi]             ; get sample        add     edi, 2rpatch16:        sar     ax, 5    ;;;;Add 1 before shift        add     esi, 2        mov     [edi], ax                       ; write new sample to destination        dec     ebx                             ; decrement count        jnz     frev16loop                      ; loop	popad        ret;================;; MV_8BitReverbFast;;================; eax - source position; edx - destination position; ebx - number of samples; ecx - shiftALIGN 16PUBLIC _MV_8BitReverbFast_MV_8BitReverbFast:	pushad	mov     eax, dword ptr [esp + 0*4 + 9*4]	mov     edx, dword ptr [esp + 1*4 + 9*4]	mov     ebx, dword ptr [esp + 2*4 + 9*4]	mov     ecx, dword ptr [esp + 3*4 + 9*4]        mov     esi, eax        mov     eax,OFFSET rpatch8+2        mov     edi, edx        mov     edx, 80h        mov     [eax],cl        mov     eax, 80h        shr     eax, cl        dec     edi        sub     edx, eax;ALIGN 4frev8loop:        mov     al, byte ptr [esi]             ; get sample        inc     esi        mov     ecx, eax        inc     edirpatch8:        shr     eax, 3        xor     ecx, 80h                        ; flip the sign bit        shr     ecx, 7                          ; shift the sign down to 1        add     eax, edx        add     eax, ecx                        ; add sign bit to round to 0        dec     ebx                             ; decrement count        mov     [edi], al                       ; write new sample to destination        jnz     frev8loop                       ; loop	popad        retCODE ENDSEND

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -