📄 dsp.asm
字号:
;Copyright (C) 1997-2001 ZSNES Team ( zsknight@zsnes.com / _demo_@zsnes.com )
;
;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;as published by the Free Software Foundation; either
;version 2 of the License, or (at your option) any later
;version.
;
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;GNU General Public License for more details.
;
;You should have received a copy of the GNU General Public License
;along with this program; if not, write to the Free Software
;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
%include "macros.mac"
EXTSYM BRRPlace0,BRRPlace1,BRRPlace2,BRRPlace3,BRRPlace4,BRRPlace5,BRRPlace6
EXTSYM BRRPlace7,Decrease,DecreaseRateExp,EchoFB,EchoRate,EchoVL,EchoVR
EXTSYM FIRTAPVal0,FIRTAPVal1,FIRTAPVal2,FIRTAPVal3,FIRTAPVal4,FIRTAPVal5
EXTSYM FIRTAPVal6,FIRTAPVal7,GlobalVL,GlobalVR,Increase,IncreaseBent
EXTSYM MaxEcho,MusicVol,NoiseInc,NoiseSpeeds,SBToSPC,Voice0End,Voice0EnvInc
EXTSYM Voice0IncNumber,Voice0Loop,Voice0Noise,Voice0Prev0,Voice0Prev1
EXTSYM Voice0Start,Voice0State,Voice0Status,Voice0Time,Voice1End,Voice1Noise
EXTSYM Voice1Prev0,Voice1Prev1,Voice1Start,Voice2End,Voice2Noise,Voice2Prev0
EXTSYM Voice2Prev1,Voice2Start,Voice3End,Voice3Noise,Voice3Prev0,Voice3Prev1
EXTSYM Voice3Start,Voice4End,Voice4Noise,Voice4Prev0,Voice4Prev1,Voice4Start
EXTSYM Voice5End,Voice5Noise,Voice5Prev0,Voice5Prev1,Voice5Start,Voice6End
EXTSYM Voice6Noise,Voice6Prev0,Voice6Prev1,Voice6Start,Voice7End,Voice7Noise
EXTSYM Voice7Prev0,Voice7Prev1,Voice7Start,VolumeConvTable,VolumeTableb,keyonsn
EXTSYM RevStereo,Voice1Status,Voice2Status,Voice3Status,Voice4Status,Voice5Status
EXTSYM Voice6Status,Voice7Status
EXTSYM GainDecBendDataPos,GainDecBendDataTime,GainDecBendDataDat
EXTSYM AdsrSustLevLoc,AdsrBlocksLeft,AdsrNextTimeDepth
EXTSYM MuteVoiceF,VoiceStarter
EXTSYM DecayRate,SustainRate,SustainValue
EXTSYM KeyOnStA,KeyOnStB,SoundTest
NEWSYM DspAsmStart
%include "betauser.mac"
;none times 256 db 0
identcode db 255,1,78,78
idcodedata db USERNAMEI
;sardcode db 234,76,80,128,65,65 ; 6
;efxcode db 17,47,62,97,26,126,98 ; 7
;zopcode db 54,39,21,0,0,8,14,12,18 ; 9
;yoshcode db 0,68,23,76,123,98,34,87,12,98,65 ; 11
;deejcode db 78,39,240,150,15,78,39,68,89,54,32,33 ; 12
;vmprcode db 127,127,127,127,255,255,255,255,0,0,0,0,1,0,1,0 ; 16
;conjcode db 32,32,25,20,78,232,242,242,0,1,4,98,98,45,13,12,99 ; 17
;wnelcode db 32,64,123,76,123,76,12,0,1,7,43,12,87,18,51,136,65,132 ; 18
;crascode db 82,48,89,26,65,10,200,26,73,84,29,120,37,213,78,89,111,23,84,13,200 ; 21 - Crashman
; Digital Sound Processor of the SPC700 By _Demo_
%macro initrevsthelp 1
mov al,[DSPMem+01h+%1]
mov ah,[DSPMem+00h+%1]
mov [DSPMem+01h+%1],ah
mov [DSPMem+00h+%1],al
%endmacro
NEWSYM initrevst
cmp byte[RevStereo],0
; jne .norev
ret
.norev
initrevsthelp 00h
initrevsthelp 10h
initrevsthelp 20h
initrevsthelp 30h
initrevsthelp 40h
initrevsthelp 50h
initrevsthelp 60h
initrevsthelp 70h
ret
ALIGN32
NEWSYM DSPMem, times 256 db 0
;Read DSP Registers functions
NEWSYM RDSPReg00 ; Voice 0 Volume Left
; cmp byte[RevStereo],1
; je .rev
mov al,[DSPMem+00h]
ret
.rev
mov al,[DSPMem+01h]
ret
NEWSYM RDSPReg01 ; Voice 0 Volume Right
; cmp byte[RevStereo],1
; je .rev
mov al,[DSPMem+01h]
ret
.rev
mov al,[DSPMem+00h]
ret
NEWSYM RDSPReg02 ; Voice 0 Pitch Low
mov al,[DSPMem+02h]
ret
NEWSYM RDSPReg03 ; Voice 0 Pitch High
mov al,[DSPMem+03h]
ret
NEWSYM RDSPReg04 ; Voice 0 SCRN
mov al,[DSPMem+04h]
ret
NEWSYM RDSPReg05 ; Voice 0 ADSR (1)
mov al,[DSPMem+05h]
ret
NEWSYM RDSPReg06 ; Voice 0 ADSR (2)
mov al,[DSPMem+06h]
ret
NEWSYM RDSPReg07 ; Voice 0 GAIN
mov al,[DSPMem+07h]
ret
NEWSYM RDSPReg08 ; Voice 0 ENVX
mov al,[DSPMem+08h]
xor al,al
ret
NEWSYM RDSPReg09 ; Voice 0 OUTX
mov al,[DSPMem+09h]
ret
NEWSYM RDSPReg0A ;
mov al,[DSPMem+0Ah]
ret
NEWSYM RDSPReg0B ;
mov al,[DSPMem+0Bh]
ret
NEWSYM RDSPReg0C ;
mov al,[DSPMem+0Ch]
ret
NEWSYM RDSPReg0D ;
mov al,[DSPMem+0Dh]
ret
NEWSYM RDSPReg0E ;
mov al,[DSPMem+0Eh]
ret
NEWSYM RDSPReg0F ; Voice 0 Echo coefficient
mov al,[DSPMem+0Fh]
ret
NEWSYM RDSPReg10 ; Voice 1 Volume Left
; cmp byte[RevStereo],1
; je .rev
mov al,[DSPMem+10h]
ret
.rev
mov al,[DSPMem+11h]
ret
NEWSYM RDSPReg11 ; Voice 1 Volume Right
; cmp byte[RevStereo],1
; je .rev
mov al,[DSPMem+11h]
ret
.rev
mov al,[DSPMem+10h]
ret
NEWSYM RDSPReg12 ; Voice 1 Pitch Low
mov al,[DSPMem+012h]
ret
NEWSYM RDSPReg13 ; Voice 1 Pitch High
mov al,[DSPMem+013h]
ret
NEWSYM RDSPReg14 ; Voice 1 SCRN
mov al,[DSPMem+014h]
ret
NEWSYM RDSPReg15 ; Voice 1 ADSR (1)
mov al,[DSPMem+015h]
ret
NEWSYM RDSPReg16 ; Voice 1 ADSR (2)
mov al,[DSPMem+016h]
ret
NEWSYM RDSPReg17 ; Voice 1 GAIN
mov al,[DSPMem+017h]
ret
NEWSYM RDSPReg18 ; Voice 1 ENVX
mov al,[DSPMem+018h]
xor al,al
ret
NEWSYM RDSPReg19 ; Voice 1 OUTX
mov al,[DSPMem+019h]
ret
NEWSYM RDSPReg1A ;
mov al,[DSPMem+01Ah]
ret
NEWSYM RDSPReg1B ;
mov al,[DSPMem+01Bh]
ret
NEWSYM RDSPReg1C ;
mov al,[DSPMem+01Ch]
ret
NEWSYM RDSPReg1D ;
mov al,[DSPMem+01Dh]
ret
NEWSYM RDSPReg1E ;
mov al,[DSPMem+01Eh]
ret
NEWSYM RDSPReg1F ; Voice 1 Echo coefficient
mov al,[DSPMem+01Fh]
ret
NEWSYM RDSPReg20 ; Voice 2 Volume Left
; cmp byte[RevStereo],1
; je .rev
mov al,[DSPMem+20h]
ret
.rev
mov al,[DSPMem+21h]
ret
NEWSYM RDSPReg21 ; Voice 2 Volume Right
; cmp byte[RevStereo],1
; je .rev
mov al,[DSPMem+21h]
ret
.rev
mov al,[DSPMem+20h]
ret
NEWSYM RDSPReg22 ; Voice 2 Pitch Low
mov al,[DSPMem+022h]
ret
NEWSYM RDSPReg23 ; Voice 2 Pitch High
mov al,[DSPMem+023h]
ret
NEWSYM RDSPReg24 ; Voice 2 SCRN
mov al,[DSPMem+024h]
ret
NEWSYM RDSPReg25 ; Voice 2 ADSR (1)
mov al,[DSPMem+025h]
ret
NEWSYM RDSPReg26 ; Voice 2 ADSR (2)
mov al,[DSPMem+026h]
ret
NEWSYM RDSPReg27 ; Voice 2 GAIN
mov al,[DSPMem+027h]
ret
NEWSYM RDSPReg28 ; Voice 2 ENVX
mov al,[DSPMem+028h]
xor al,al
ret
NEWSYM RDSPReg29 ; Voice 2 OUTX
mov al,[DSPMem+029h]
ret
NEWSYM RDSPReg2A ;
mov al,[DSPMem+02Ah]
ret
NEWSYM RDSPReg2B ;
mov al,[DSPMem+02Bh]
ret
NEWSYM RDSPReg2C ;
mov al,[DSPMem+02Ch]
ret
NEWSYM RDSPReg2D ;
mov al,[DSPMem+02Dh]
ret
NEWSYM RDSPReg2E ;
mov al,[DSPMem+02Eh]
ret
NEWSYM RDSPReg2F ; Voice 2 Echo coefficient
mov al,[DSPMem+02Fh]
ret
NEWSYM RDSPReg30 ; Voice 3 Volume Left
; cmp byte[RevStereo],1
; je .rev
mov al,[DSPMem+30h]
ret
.rev
mov al,[DSPMem+31h]
ret
NEWSYM RDSPReg31 ; Voice 3 Volume Right
; cmp byte[RevStereo],1
; je .rev
mov al,[DSPMem+31h]
ret
.rev
mov al,[DSPMem+30h]
ret
NEWSYM RDSPReg32 ; Voice 3 Pitch Low
mov al,[DSPMem+032h]
ret
NEWSYM RDSPReg33 ; Voice 3 Pitch High
mov al,[DSPMem+033h]
ret
NEWSYM RDSPReg34 ; Voice 3 SCRN
mov al,[DSPMem+034h]
ret
NEWSYM RDSPReg35 ; Voice 3 ADSR (1)
mov al,[DSPMem+035h]
ret
NEWSYM RDSPReg36 ; Voice 3 ADSR (2)
mov al,[DSPMem+036h]
ret
NEWSYM RDSPReg37 ; Voice 3 GAIN
mov al,[DSPMem+037h]
ret
NEWSYM RDSPReg38 ; Voice 3 ENVX
mov al,[DSPMem+038h]
xor al,al
ret
NEWSYM RDSPReg39 ; Voice 3 OUTX
mov al,[DSPMem+039h]
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -