|
|
| version 1.5, 2003/10/27 15:06:31 | version 1.6, 2003/11/28 08:01:33 |
|---|---|
| Line 1 | Line 1 |
| FMDIV_BITS equ 8 | |
| FMDIV_ENT equ (1 << FMDIV_BITS) | |
| FMVOL_SFTBIT equ 4 | |
| SIN_BITS equ 11 | |
| EVC_BITS equ 10 | |
| ENV_BITS equ 16 | |
| KF_BITS equ 6 | |
| FREQ_BITS equ 20 | |
| ENVTBL_BIT equ 14 | |
| SINTBL_BIT equ 14 | |
| TL_BITS equ (FREQ_BITS+2) | |
| OPM_OUTSB equ (TL_BITS + 2 - 16) | |
| SIN_ENT equ (1 << SIN_BITS) | |
| EVC_ENT equ (1 << EVC_BITS) | |
| EC_ATTACK equ 0 | |
| EC_DECAY equ (EVC_ENT << ENV_BITS) | |
| EC_OFF equ ((2 * EVC_ENT) << ENV_BITS) | |
| EM_ATTACK equ 4 | |
| EM_DECAY1 equ 3 | |
| EM_DECAY2 equ 2 | |
| EM_RELEASE equ 1 | |
| EM_OFF equ 0 | |
| struc slot_t | struc slot_t |
| .detune1 resd 1 ; 00 | .detune1 resd 1 ; 00 |
| .totallevel resd 1 ; 04 | .totallevel resd 1 ; 04 |
| Line 66 | Line 95 |
| .vr_en resd 1 | .vr_en resd 1 |
| .vr_l resd 1 | .vr_l resd 1 |
| .vr_r resd 1 | .vr_r resd 1 |
| endstruc | |
| .sintable resd SIN_ENT | |
| FMDIV_BITS equ 8 | .envtable resd EVC_ENT |
| FMDIV_ENT equ (1 << FMDIV_BITS) | .envcurve resd (EVC_ENT*2 + 1) |
| FMVOL_SFTBIT equ 4 | endstruc |
| SIN_BITS equ 11 | |
| EVC_BITS equ 10 | |
| ENV_BITS equ 16 | |
| KF_BITS equ 6 | |
| FREQ_BITS equ 20 | |
| ENVTBL_BIT equ 14 | |
| SINTBL_BIT equ 14 | |
| TL_BITS equ (FREQ_BITS+2) | |
| OPM_OUTSB equ (TL_BITS + 2 - 16) | |
| SIN_ENT equ (1 << SIN_BITS) | |
| EVC_ENT equ (1 << EVC_BITS) | |
| EC_ATTACK equ 0 | |
| EC_DECAY equ (EVC_ENT << ENV_BITS) | |
| EC_OFF equ ((2 * EVC_ENT) << ENV_BITS) | |
| EM_ATTACK equ 4 | |
| EM_DECAY1 equ 3 | |
| EM_DECAY2 equ 2 | |
| EM_RELEASE equ 1 | |
| EM_OFF equ 0 | |
| section .text | section .text |
| Line 105 section .text | Line 109 section .text |
| extern _opncfg | extern _opncfg |
| extern _sinshift | extern _sinshift |
| extern _sintable | |
| extern _envshift | extern _envshift |
| extern _envtable | |
| extern _env_curve | ENVCURVE equ (_opncfg + opncfg_t.envcurve) |
| SINTABLE equ (_opncfg + opncfg_t.sintable) | |
| ENVTABLE equ (_opncfg + opncfg_t.envtable) | |
| global @opngen_getpcm@12 | global @opngen_getpcm@12 |
| Line 119 section .text | Line 124 section .text |
| shr eax, (FREQ_BITS - SIN_BITS) | shr eax, (FREQ_BITS - SIN_BITS) |
| and eax, (SIN_ENT - 1) | and eax, (SIN_ENT - 1) |
| mov cl, [_sinshift + eax] | mov cl, [_sinshift + eax] |
| mov eax, [_sintable + eax*4] | mov eax, [SINTABLE + eax*4] |
| add cl, [_envshift + edx] | add cl, [_envshift + edx] |
| imul eax, [_envtable + edx*4] | imul eax, [ENVTABLE + edx*4] |
| sar eax, cl | sar eax, cl |
| %endmacro | %endmacro |
| Line 135 section .text | Line 140 section .text |
| %2: mov [edi + slot_t.env_cnt], eax | %2: mov [edi + slot_t.env_cnt], eax |
| shr eax, ENV_BITS | shr eax, ENV_BITS |
| mov edx, [edi + slot_t.totallevel] | mov edx, [edi + slot_t.totallevel] |
| sub edx, [_env_curve + eax*4] | sub edx, [ENVCURVE + eax*4] |
| %endmacro | %endmacro |
| %macro setenv 3 | %macro setenv 3 |