|
|
| version 1.4, 2003/10/25 09:08:24 | version 1.5, 2003/10/27 15:06:31 |
|---|---|
| Line 29 | Line 29 |
| .algorithm resb 1 | .algorithm resb 1 |
| .feedback resb 1 | .feedback resb 1 |
| .playing resb 1 | .playing resb 1 |
| resb 1 | .outslot resb 1 |
| .op1fb resd 1 | .op1fb resd 1 |
| .connect1 resd 1 | .connect1 resd 1 |
| .connect3 resd 1 | .connect3 resd 1 |
| Line 138 section .text | Line 138 section .text |
| sub edx, [_env_curve + eax*4] | sub edx, [_env_curve + eax*4] |
| %endmacro | %endmacro |
| %macro setenv 2 | %macro setenv 3 |
| %1: mov dl, [edi + slot_t.env_mode] | %1: mov dl, [edi + slot_t.env_mode] |
| dec dl | dec dl |
| je short %%setrr | je short %%setrr |
| Line 164 section .text | Line 164 section .text |
| %%setrr: mov byte [edi + slot_t.env_mode], EM_OFF | %%setrr: mov byte [edi + slot_t.env_mode], EM_OFF |
| %%setd2: mov dword [edi + slot_t.env_end], EC_OFF + 1 | %%setd2: mov dword [edi + slot_t.env_end], EC_OFF + 1 |
| and dword [edi + slot_t.env_inc], byte 0 | and dword [edi + slot_t.env_inc], byte 0 |
| and byte [esi + ch_t.playing], ~(%3) | |
| mov eax, EC_OFF | mov eax, EC_OFF |
| jmp near %2 | jmp near %2 |
| %endmacro | %endmacro |
| Line 173 section .text | Line 174 section .text |
| @opngen_getpcm@12: | @opngen_getpcm@12: |
| cmp dword [esp+4], byte 0 | cmp dword [esp+4], byte 0 |
| je near og_noupdate | je near og_noupdate |
| cmp dword [_opngen + opngen_t.playing], byte 0 | |
| je near og_noupdate | |
| push ebx | push ebx |
| push esi | push esi |
| Line 193 og_fmout_st: mov eax, ebx | Line 196 og_fmout_st: mov eax, ebx |
| sub ebx, eax | sub ebx, eax |
| imul eax, [_opngen + opngen_t.outdr] | imul eax, [_opngen + opngen_t.outdr] |
| mov [esp + OPN_SAMPR], eax | mov [esp + OPN_SAMPR], eax |
| og_fmout_lp: xor eax, eax | og_fmout_lp: mov [_opngen + opngen_t.calcremain], ebx |
| mov [_opngen + opngen_t.calcremain], ebx | and dword [_opngen + opngen_t.playing], byte 0 |
| mov [_opngen + opngen_t.outdl], eax | and dword [_opngen + opngen_t.outdl], byte 0 |
| mov [_opngen + opngen_t.outdc], eax | and dword [_opngen + opngen_t.outdc], byte 0 |
| mov [_opngen + opngen_t.outdr], eax | and dword [_opngen + opngen_t.outdr], byte 0 |
| mov ch, [_opngen + opngen_t.playchannels] | mov ch, [_opngen + opngen_t.playchannels] |
| mov edi, _opnch | mov esi, _opnch |
| og_calcch_lp: xor eax, eax | og_calcch_lp: mov cl, [esi + ch_t.outslot] |
| mov [_opngen + opngen_t.feedback2], eax | test cl, [esi + ch_t.playing] |
| mov [_opngen + opngen_t.feedback3], eax | je near og_calcch_nt |
| mov [_opngen + opngen_t.feedback4], eax | and dword [_opngen + opngen_t.feedback2], byte 0 |
| mov esi, edi | and dword [_opngen + opngen_t.feedback3], byte 0 |
| and dword [_opngen + opngen_t.feedback4], byte 0 | |
| mov edi, esi | |
| calcenv envcalc1, envret1 ; slot1 calculate | calcenv envcalc1, envret1 ; slot1 calculate |
| jl near og_calcslot3 | jl near og_calcslot3 |
| mov cl, [esi + ch_t.feedback] | mov cl, [esi + ch_t.feedback] |
| Line 249 og_calcslot4: add edi, byte slot_t.size | Line 254 og_calcslot4: add edi, byte slot_t.size |
| op_out | op_out |
| mov ebx, [esi + ch_t.connect4] | mov ebx, [esi + ch_t.connect4] |
| add [ebx], eax | add [ebx], eax |
| og_calcsloted: add edi, byte (ch_t.size - (slot_t.size * 3)) | og_calcsloted: inc dword [_opngen + opngen_t.playing] |
| og_calcch_nt: add esi, ch_t.size | |
| dec ch | dec ch |
| jne near og_calcch_lp | jne near og_calcch_lp |
| mov eax, [_opngen + opngen_t.outdc] | mov eax, [_opngen + opngen_t.outdc] |
| Line 291 og_nextsamp: neg ebx | Line 297 og_nextsamp: neg ebx |
| pop ebx | pop ebx |
| og_noupdate: ret 4 | og_noupdate: ret 4 |
| setenv envcalc1, envret1 | setenv envcalc1, envret1, 1 |
| setenv envcalc2, envret2 | setenv envcalc2, envret2, 2 |
| setenv envcalc3, envret3 | setenv envcalc3, envret3, 4 |
| setenv envcalc4, envret4 | setenv envcalc4, envret4, 8 |
| align 16 | align 16 |
| Line 435 ogv_nextsamp: neg ebx | Line 441 ogv_nextsamp: neg ebx |
| pop ebx | pop ebx |
| ogv_noupdate: ret 4 | ogv_noupdate: ret 4 |
| setenv vrenvcalc1, vrenvret1 | setenv vrenvcalc1, vrenvret1, 1 |
| setenv vrenvcalc2, vrenvret2 | setenv vrenvcalc2, vrenvret2, 2 |
| setenv vrenvcalc3, vrenvret3 | setenv vrenvcalc3, vrenvret3, 4 |
| setenv vrenvcalc4, vrenvret4 | setenv vrenvcalc4, vrenvret4, 8 |
| ends | ends |