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

📄 dsp.asm

📁 linux下的任天堂模拟器代码。供大家参考。
💻 ASM
📖 第 1 页 / 共 4 页
字号:
NEWSYM RDSPRegA1       ;      mov al,[DSPMem+0A1h]      retNEWSYM RDSPRegA2       ;      mov al,[DSPMem+0A2h]      retNEWSYM RDSPRegA3       ;      mov al,[DSPMem+0A3h]      retNEWSYM RDSPRegA4       ;      mov al,[DSPMem+0A4h]      retNEWSYM RDSPRegA5       ;      mov al,[DSPMem+0A5h]      retNEWSYM RDSPRegA6       ;      mov al,[DSPMem+0A6h]      retNEWSYM RDSPRegA7       ;      mov al,[DSPMem+0A7h]      retNEWSYM RDSPRegA8       ;      mov al,[DSPMem+0A8h]      retNEWSYM RDSPRegA9       ;      mov al,[DSPMem+0A9h]      retNEWSYM RDSPRegAA       ;      mov al,[DSPMem+0AAh]      retNEWSYM RDSPRegAB       ;      mov al,[DSPMem+0ABh]      retNEWSYM RDSPRegAC       ;      mov al,[DSPMem+0ACh]      retNEWSYM RDSPRegAD       ;      mov al,[DSPMem+0ADh]      retNEWSYM RDSPRegAE       ;      mov al,[DSPMem+0AEh]      retNEWSYM RDSPRegAF       ;      mov al,[DSPMem+0AFh]      retNEWSYM RDSPRegB0       ;      mov al,[DSPMem+0B0h]      retNEWSYM RDSPRegB1       ;      mov al,[DSPMem+0B1h]      retNEWSYM RDSPRegB2       ;      mov al,[DSPMem+0B2h]      retNEWSYM RDSPRegB3       ;      mov al,[DSPMem+0B3h]      retNEWSYM RDSPRegB4       ;      mov al,[DSPMem+0B4h]      retNEWSYM RDSPRegB5       ;      mov al,[DSPMem+0B5h]      retNEWSYM RDSPRegB6       ;      mov al,[DSPMem+0B6h]      retNEWSYM RDSPRegB7       ;      mov al,[DSPMem+0B7h]      retNEWSYM RDSPRegB8       ;      mov al,[DSPMem+0B8h]      retNEWSYM RDSPRegB9       ;      mov al,[DSPMem+0B9h]      retNEWSYM RDSPRegBA       ;      mov al,[DSPMem+0BAh]      retNEWSYM RDSPRegBB       ;      mov al,[DSPMem+0BBh]      retNEWSYM RDSPRegBC       ;      mov al,[DSPMem+0BCh]      retNEWSYM RDSPRegBD       ;      mov al,[DSPMem+0BDh]      retNEWSYM RDSPRegBE       ;      mov al,[DSPMem+0BEh]      retNEWSYM RDSPRegBF       ;      mov al,[DSPMem+0BFh]      retNEWSYM RDSPRegC0       ;      mov al,[DSPMem+0C0h]      retNEWSYM RDSPRegC1       ;      mov al,[DSPMem+0C1h]      retNEWSYM RDSPRegC2       ;      mov al,[DSPMem+0C2h]      retNEWSYM RDSPRegC3       ;      mov al,[DSPMem+0C3h]      retNEWSYM RDSPRegC4       ;      mov al,[DSPMem+0C4h]      retNEWSYM RDSPRegC5       ;      mov al,[DSPMem+0C5h]      retNEWSYM RDSPRegC6       ;      mov al,[DSPMem+0C6h]      retNEWSYM RDSPRegC7       ;      mov al,[DSPMem+0C7h]      retNEWSYM RDSPRegC8       ;      mov al,[DSPMem+0C8h]      retNEWSYM RDSPRegC9       ;      mov al,[DSPMem+0C9h]      retNEWSYM RDSPRegCA       ;      mov al,[DSPMem+0CAh]      retNEWSYM RDSPRegCB       ;      mov al,[DSPMem+0CBh]      retNEWSYM RDSPRegCC       ;      mov al,[DSPMem+0CCh]      retNEWSYM RDSPRegCD       ;      mov al,[DSPMem+0CDh]      retNEWSYM RDSPRegCE       ;      mov al,[DSPMem+0CEh]      retNEWSYM RDSPRegCF       ;      mov al,[DSPMem+0CFh]      retNEWSYM RDSPRegD0       ;      mov al,[DSPMem+0D0h]      retNEWSYM RDSPRegD1       ;      mov al,[DSPMem+0D1h]      retNEWSYM RDSPRegD2       ;      mov al,[DSPMem+0D2h]      retNEWSYM RDSPRegD3       ;      mov al,[DSPMem+0D3h]      retNEWSYM RDSPRegD4       ;      mov al,[DSPMem+0D4h]      retNEWSYM RDSPRegD5       ;      mov al,[DSPMem+0D5h]      retNEWSYM RDSPRegD6       ;      mov al,[DSPMem+0D6h]      retNEWSYM RDSPRegD7       ;      mov al,[DSPMem+0D7h]      retNEWSYM RDSPRegD8       ;      mov al,[DSPMem+0D8h]      retNEWSYM RDSPRegD9       ;      mov al,[DSPMem+0D9h]      retNEWSYM RDSPRegDA       ;      mov al,[DSPMem+0DAh]      retNEWSYM RDSPRegDB       ;      mov al,[DSPMem+0DBh]      retNEWSYM RDSPRegDC       ;      mov al,[DSPMem+0DCh]      retNEWSYM RDSPRegDD       ;      mov al,[DSPMem+0DDh]      retNEWSYM RDSPRegDE       ;      mov al,[DSPMem+0DEh]      retNEWSYM RDSPRegDF       ;      mov al,[DSPMem+0DFh]      retNEWSYM RDSPRegE0       ;      mov al,[DSPMem+0E0h]      retNEWSYM RDSPRegE1       ;      mov al,[DSPMem+0E1h]      retNEWSYM RDSPRegE2       ;      mov al,[DSPMem+0E2h]      retNEWSYM RDSPRegE3       ;      mov al,[DSPMem+0E3h]      retNEWSYM RDSPRegE4       ;      mov al,[DSPMem+0E4h]      retNEWSYM RDSPRegE5       ;      mov al,[DSPMem+0E5h]      retNEWSYM RDSPRegE6       ;      mov al,[DSPMem+0E6h]      retNEWSYM RDSPRegE7       ;      mov al,[DSPMem+0E7h]      retNEWSYM RDSPRegE8       ;      mov al,[DSPMem+0E8h]      retNEWSYM RDSPRegE9       ;      mov al,[DSPMem+0E9h]      retNEWSYM RDSPRegEA       ;      mov al,[DSPMem+0EAh]      retNEWSYM RDSPRegEB       ;      mov al,[DSPMem+0EBh]      retNEWSYM RDSPRegEC       ;      mov al,[DSPMem+0ECh]      retNEWSYM RDSPRegED       ;      mov al,[DSPMem+0EDh]      retNEWSYM RDSPRegEE       ;      mov al,[DSPMem+0EEh]      retNEWSYM RDSPRegEF       ;      mov al,[DSPMem+0EFh]      retNEWSYM RDSPRegF0       ;      mov al,[DSPMem+0F0h]      retNEWSYM RDSPRegF1       ;      mov al,[DSPMem+0F1h]      retNEWSYM RDSPRegF2       ;      mov al,[DSPMem+0F2h]      retNEWSYM RDSPRegF3       ;      mov al,[DSPMem+0F3h]      retNEWSYM RDSPRegF4       ;      mov al,[DSPMem+0F4h]      retNEWSYM RDSPRegF5       ;      mov al,[DSPMem+0F5h]      retNEWSYM RDSPRegF6       ;      mov al,[DSPMem+0F6h]      retNEWSYM RDSPRegF7      ;      mov al,[DSPMem+0F7h]      retNEWSYM RDSPRegF8      ;      mov al,[DSPMem+0F8h]      retNEWSYM RDSPRegF9      ;      mov al,[DSPMem+0F9h]      retNEWSYM RDSPRegFA      ;      mov al,[DSPMem+0FAh]      retNEWSYM RDSPRegFB      ;      mov al,[DSPMem+0FBh]      retNEWSYM RDSPRegFC      ;      mov al,[DSPMem+0FCh]      retNEWSYM RDSPRegFD      ;      mov al,[DSPMem+0FDh]      retNEWSYM RDSPRegFE      ;      mov al,[DSPMem+0FEh]      retNEWSYM RDSPRegFF      ;      mov al,[DSPMem+0FFh]      ret%macro ProcessGain 1      push eax      push ebx      push edx      test byte[DSPMem+07h+%1*10h],80h      jz near %%Direct      test byte[DSPMem+07h+%1*10h],40h      jnz near %%Increase      test byte[DSPMem+07h+%1*10h],20h      jz %%LinearDec      xor eax,eax      mov al,[DSPMem+07h+%1*10h]      and al,1Fh      mov ebx,[DecreaseRateExp+eax*4]      mov dword[Voice0EnvInc+%1*4],007FFFFFh      shr ebx,5      mov [Voice0Time+%1*4],ebx      mov [GainDecBendDataTime+%1*4],ebx      xor edx,edx      mov eax,127*65536      sub eax,118*65536      mov byte[GainDecBendDataPos+%1],0      mov byte[GainDecBendDataDat+%1],127      div ebx      neg eax      mov [Voice0IncNumber+%1*4],eax      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],7      ret%%LinearDec      xor eax,eax      mov al,[DSPMem+07h+%1*10h]      and al,1Fh      mov ebx,[Decrease+eax*4]      mov dword[Voice0EnvInc+%1*4],007FFFFFh      mov [Voice0Time+%1*4],ebx      xor edx,edx      mov eax,127*65536      div ebx      neg eax      mov [Voice0IncNumber+%1*4],eax      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],5      ret%%Increase      test byte[DSPMem+07h+%1*10h],20h      jz %%LinearInc      xor eax,eax      mov al,[DSPMem+07h+%1*10h]      and al,1Fh      mov ebx,[Increase+eax*4]      mov dword[Voice0EnvInc+%1*4],0      mov [Voice0Time+%1*4],ebx      xor edx,edx      mov eax,127*65536      div ebx      mov [Voice0IncNumber+%1*4],eax      mov ebx,[Voice0Time+%1*4]      mov eax,ebx      shr eax,2      sub ebx,eax      dec ebx      mov [Voice0Time+%1*4],ebx      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],6      ret%%LinearInc      xor eax,eax      mov al,[DSPMem+07h+%1*10h]      and al,1Fh      mov ebx,[Increase+eax*4]      mov dword[Voice0EnvInc+%1*4],0      mov [Voice0Time+%1*4],ebx      xor edx,edx      mov eax,127*65536      div ebx      mov [Voice0IncNumber+%1*4],eax      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],3      ret%%Direct      mov al,[DSPMem+07h+%1*10h]      and al,7Fh      mov dword[Voice0EnvInc+%1*4],0      mov [Voice0EnvInc+%1*4+2],al      mov dword[Voice0Time+%1*4],0FFFFFFFFh      mov dword[Voice0IncNumber+%1*4],0      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],4      ret%endmacro%macro ProcessGain2 1      push eax      push ebx      push edx      test byte[DSPMem+07h+%1*10h],80h      jz near %%Direct      test byte[DSPMem+07h+%1*10h],40h      jnz near %%Increase      test byte[DSPMem+07h+%1*10h],20h      jz %%LinearDec      xor eax,eax      mov al,[DSPMem+07h+%1*10h]      and al,1Fh      mov ebx,[DecreaseRateExp+eax*4]      shr ebx,5      mov [Voice0Time+%1*4],ebx      mov [GainDecBendDataTime+%1*4],ebx      xor edx,edx      mov dh,118      mov dl,[Voice0EnvInc+%1*4+2]      xor eax,eax      mov al,[VolumeConvTable+edx*2]      xor edx,edx      shl eax,16      mov dl,[Voice0EnvInc+%1*4+2]      neg eax      shl edx,16      add eax,edx      xor edx,edx      mov byte[GainDecBendDataPos+%1],0      div ebx      neg eax      mov [Voice0IncNumber+%1*4],eax      mov al,[Voice0EnvInc+%1*4+2]      mov [GainDecBendDataDat+%1],al      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],7      ret%%LinearDec      xor eax,eax      mov al,[DSPMem+07h+%1*10h]      and al,1Fh      mov ebx,[Decrease+eax*4]      mov [Voice0Time+%1*4],ebx      xor edx,edx      xor eax,eax      mov al,[Voice0EnvInc+%1*4+2]      shl eax,16      div ebx      neg eax      mov [Voice0IncNumber+%1*4],eax      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],5      ret%%Increase      test byte[DSPMem+07h+%1*10h],20h      jz %%LinearInc      xor eax,eax      mov al,[DSPMem+07h+%1*10h]      and al,1Fh      mov ebx,[Increase+eax*4]      mov [Voice0Time+%1*4],ebx      xor edx,edx      xor eax,eax      mov al,[Voice0EnvInc+%1*4+2]      inc al      test al,80h      jz %%noof      mov al,127%%noof      xor al,127      shl eax,16      div ebx      mov [Voice0IncNumber+%1*4],eax      mov ebx,[Voice0Time+%1*4]      mov eax,ebx      shr eax,2      sub ebx,eax      dec ebx      mov [Voice0Time+%1*4],ebx      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],6      ret%%LinearInc      xor eax,eax      mov al,[DSPMem+07h+%1*10h]      and al,1Fh      mov ebx,[Increase+eax*4]      mov [Voice0Time+%1*4],ebx      xor edx,edx      xor eax,eax      mov al,[Voice0EnvInc+%1*4+2]      inc al      test al,80h      jz %%noof2      mov al,127%%noof2      xor al,127      shl eax,16      div ebx      mov [Voice0IncNumber+%1*4],eax      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],3      ret%%Direct      mov al,[DSPMem+07h+%1*10h]      and al,7Fh      mov dword[Voice0EnvInc+%1*4],0      mov [Voice0EnvInc+%1*4+2],al      mov dword[Voice0Time+%1*4],0FFFFFFFFh      mov dword[Voice0IncNumber+%1*4],0      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],4      ret%%end      pop edx      pop ebx      pop eax      ret%endmacro%macro SwitchSustain 1      push eax      push ebx      push edx      mov al,[Voice0EnvInc+%1*4+2]      mov [GainDecBendDataDat+%1],al      cmp byte[Voice0State+%1],8      je %%full      cmp byte[Voice0State+%1],2      jae %%nofull%%full      mov byte[GainDecBendDataDat+%1],7Fh%%nofull      mov al,[DSPMem+05h+%1*10h]      shr al,4      and eax,07h      mov edx,[DecayRate+eax*4]      xor eax,eax      mov al,[DSPMem+06h+%1*10h]      and al,1Fh      mov ebx,[SustainRate+eax*4]      cmp edx,ebx      jae near %%decayover      ; ebx = total sustain time      xor eax,eax      mov al,[DSPMem+06h+%1*10h]      shr al,5      mov al,[AdsrSustLevLoc+eax]      ; traverse through al entries in edx time      ; then through 64-al entries in ebx-edx time      mov [AdsrBlocksLeft+%1],al      sub ebx,edx      push ebx      push eax      mov ebx,eax      mov eax,edx      xor edx,edx      or ebx,ebx      jz .oopszero      div ebx.oopszero      mov [Voice0Time+%1*4],eax      mov [GainDecBendDataTime+%1*4],eax      pop eax      pop ebx      mov edx,ebx      mov ebx,64      sub bl,al      mov eax,edx      xor edx,edx      div ebx      mov [AdsrNextTimeDepth+%1*4],eax      mov dword[Voice0EnvInc+%1*4],0      mov al,[GainDecBendDataDat+%1]      mov [Voice0EnvInc+%1*4+2],al      mov ebx,[Voice0Time+%1*4]      xor edx,edx      mov dh,122      mov dl,[Voice0EnvInc+%1*4+2]      xor eax,eax      mov al,[VolumeConvTable+edx*2]      xor edx,edx      shl eax,16      mov dl,[Voice0EnvInc+%1*4+2]      neg eax      shl edx,16      add eax,edx      xor edx,edx      mov byte[GainDecBendDataPos+%1],0      div ebx      neg eax      mov [Voice0IncNumber+%1*4],eax      pop edx      pop ebx      pop eax      mov byte[Voice0State+%1],9      ret%%decayover      sub edx,ebx      push ebx      mov eax,edx      xor ebx,ebx      mov bl,[DSPMem+06h+%1*10h]      shr bl,5      xor bl,07h      mul ebx      mov ebx,7      div ebx      pop ebx      add ebx,eax      mov dword[Voice0EnvInc+%1*4],007FFFFFh      shr ebx,5      mov [Voice0Time+%1*4],ebx      mov [GainDecBendDataTime+%1*4],ebx      xor edx,edx

⌨️ 快捷键说明

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