📄 dspproc.asm
字号:
;Copyright (C) 1997-2007 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach );;http://www.zsnes.com;http://sourceforge.net/projects/zsnes;https://zsnes.bountysource.com;;This program is free software; you can redistribute it and/or;modify it under the terms of the GNU General Public License;version 2 as published by the Free Software Foundation.;;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 SPCRAM,spcPCRam,spcRamDP,spcS,spcX,RevStereoEXTSYM Invalidopcode,RSPCRegF0,RSPCRegF1,RSPCRegF2,RSPCRegF3EXTSYM RSPCRegF4,RSPCRegF5,RSPCRegF6,RSPCRegF7,RSPCRegF8,RSPCRegF9EXTSYM RSPCRegFA,RSPCRegFB,RSPCRegFC,RSPCRegFD,RSPCRegFE,RSPCRegFFEXTSYM SPCRegF0,SPCRegF1,SPCRegF2,SPCRegF3,SPCRegF4,SPCRegF5,SPCRegF6EXTSYM SPCRegF7,SPCRegF8,SPCRegF9,SPCRegFA,SPCRegFB,SPCRegFC,SPCRegFDEXTSYM SPCRegFE,SPCRegFF,VolumeConvTable,dspRptr,dspWptr,opcjmptabEXTSYM Op00,Op01,Op02,Op03,Op04,Op05,Op06,Op07,Op08,Op09,Op0A,Op0B,Op0C,Op0DEXTSYM Op0E,Op0F,Op10,Op11,Op12,Op13,Op14,Op15,Op16,Op17,Op18,Op19,Op1A,Op1BEXTSYM Op1C,Op1D,Op1E,Op1F,Op20,Op21,Op22,Op23,Op24,Op25,Op26,Op27,Op28,Op29EXTSYM Op2A,Op2B,Op2C,Op2D,Op2E,Op2F,Op30,Op31,Op32,Op33,Op34,Op35,Op36,Op37EXTSYM Op38,Op39,Op3A,Op3B,Op3C,Op3D,Op3E,Op3F,Op40,Op41,Op42,Op43,Op44,Op45EXTSYM Op46,Op47,Op48,Op49,Op4A,Op4B,Op4C,Op4D,Op4E,Op4F,Op50,Op51,Op52,Op53EXTSYM Op54,Op55,Op56,Op57,Op58,Op59,Op5A,Op5B,Op5C,Op5D,Op5E,Op5F,Op60,Op61EXTSYM Op62,Op63,Op64,Op65,Op66,Op67,Op68,Op69,Op6A,Op6B,Op6C,Op6D,Op6E,Op6FEXTSYM Op70,Op71,Op72,Op73,Op74,Op75,Op76,Op77,Op78,Op79,Op7A,Op7B,Op7C,Op7DEXTSYM Op7E,Op7F,Op80,Op81,Op82,Op83,Op84,Op85,Op86,Op87,Op88,Op89,Op8A,Op8BEXTSYM Op8C,Op8D,Op8E,Op8F,Op90,Op91,Op92,Op93,Op94,Op95,Op96,Op97,Op98,Op99EXTSYM Op9A,Op9B,Op9C,Op9D,Op9E,Op9F,OpA0,OpA1,OpA2,OpA3,OpA4,OpA5,OpA6,OpA7EXTSYM OpA8,OpA9,OpAA,OpAB,OpAC,OpAD,OpAE,OpAF,OpB0,OpB1,OpB2,OpB3,OpB4,OpB5EXTSYM OpB6,OpB7,OpB8,OpB9,OpBA,OpBB,OpBC,OpBD,OpBE,OpBF,OpC0,OpC1,OpC2,OpC3EXTSYM OpC4,OpC5,OpC6,OpC7,OpC8,OpC9,OpCA,OpCB,OpCC,OpCD,OpCE,OpCF,OpD0,OpD1EXTSYM OpD2,OpD3,OpD4,OpD5,OpD6,OpD7,OpD8,OpD9,OpDA,OpDB,OpDC,OpDD,OpDE,OpDFEXTSYM OpE0,OpE1,OpE2,OpE3,OpE4,OpE5,OpE6,OpE7,OpE8,OpE9,OpEA,OpEB,OpEC,OpEDEXTSYM OpEE,OpEF,OpF0,OpF1,OpF2,OpF3,OpF4,OpF5,OpF6,OpF7,OpF8,OpF9,OpFA,OpFBEXTSYM OpFC,OpFD,OpFE,OpFFEXTSYM RDSPReg00,RDSPReg01,RDSPReg02,RDSPReg03,RDSPReg04,RDSPReg05,RDSPReg06EXTSYM RDSPReg07,RDSPReg08,RDSPReg09,RDSPReg0A,RDSPReg0B,RDSPReg0C,RDSPReg0DEXTSYM RDSPReg0E,RDSPReg0F,RDSPReg10,RDSPReg11,RDSPReg12,RDSPReg13,RDSPReg14EXTSYM RDSPReg15,RDSPReg16,RDSPReg17,RDSPReg18,RDSPReg19,RDSPReg1A,RDSPReg1BEXTSYM RDSPReg1C,RDSPReg1D,RDSPReg1E,RDSPReg1F,RDSPReg20,RDSPReg21,RDSPReg22EXTSYM RDSPReg23,RDSPReg24,RDSPReg25,RDSPReg26,RDSPReg27,RDSPReg28,RDSPReg29EXTSYM RDSPReg2A,RDSPReg2B,RDSPReg2C,RDSPReg2D,RDSPReg2E,RDSPReg2F,RDSPReg30EXTSYM RDSPReg31,RDSPReg32,RDSPReg33,RDSPReg34,RDSPReg35,RDSPReg36,RDSPReg37EXTSYM RDSPReg38,RDSPReg39,RDSPReg3A,RDSPReg3B,RDSPReg3C,RDSPReg3D,RDSPReg3EEXTSYM RDSPReg3F,RDSPReg40,RDSPReg41,RDSPReg42,RDSPReg43,RDSPReg44,RDSPReg45EXTSYM RDSPReg46,RDSPReg47,RDSPReg48,RDSPReg49,RDSPReg4A,RDSPReg4B,RDSPReg4CEXTSYM RDSPReg4D,RDSPReg4E,RDSPReg4F,RDSPReg50,RDSPReg51,RDSPReg52,RDSPReg53EXTSYM RDSPReg54,RDSPReg55,RDSPReg56,RDSPReg57,RDSPReg58,RDSPReg59,RDSPReg5AEXTSYM RDSPReg5B,RDSPReg5C,RDSPReg5D,RDSPReg5E,RDSPReg5F,RDSPReg60,RDSPReg61EXTSYM RDSPReg62,RDSPReg63,RDSPReg64,RDSPReg65,RDSPReg66,RDSPReg67,RDSPReg68EXTSYM RDSPReg69,RDSPReg6A,RDSPReg6B,RDSPReg6C,RDSPReg6D,RDSPReg6E,RDSPReg6FEXTSYM RDSPReg70,RDSPReg71,RDSPReg72,RDSPReg73,RDSPReg74,RDSPReg75,RDSPReg76EXTSYM RDSPReg77,RDSPReg78,RDSPReg79,RDSPReg7A,RDSPReg7B,RDSPReg7C,RDSPReg7DEXTSYM RDSPReg7E,RDSPReg7F,RDSPReg80,RDSPReg81,RDSPReg82,RDSPReg83,RDSPReg84EXTSYM RDSPReg85,RDSPReg86,RDSPReg87,RDSPReg88,RDSPReg89,RDSPReg8A,RDSPReg8BEXTSYM RDSPReg8C,RDSPReg8D,RDSPReg8E,RDSPReg8F,RDSPReg90,RDSPReg91,RDSPReg92EXTSYM RDSPReg93,RDSPReg94,RDSPReg95,RDSPReg96,RDSPReg97,RDSPReg98,RDSPReg99EXTSYM RDSPReg9A,RDSPReg9B,RDSPReg9C,RDSPReg9D,RDSPReg9E,RDSPReg9F,RDSPRegA0EXTSYM RDSPRegA1,RDSPRegA2,RDSPRegA3,RDSPRegA4,RDSPRegA5,RDSPRegA6,RDSPRegA7EXTSYM RDSPRegA8,RDSPRegA9,RDSPRegAA,RDSPRegAB,RDSPRegAC,RDSPRegAD,RDSPRegAEEXTSYM RDSPRegAF,RDSPRegB0,RDSPRegB1,RDSPRegB2,RDSPRegB3,RDSPRegB4,RDSPRegB5EXTSYM RDSPRegB6,RDSPRegB7,RDSPRegB8,RDSPRegB9,RDSPRegBA,RDSPRegBB,RDSPRegBCEXTSYM RDSPRegBD,RDSPRegBE,RDSPRegBF,RDSPRegC0,RDSPRegC1,RDSPRegC2,RDSPRegC3EXTSYM RDSPRegC4,RDSPRegC5,RDSPRegC6,RDSPRegC7,RDSPRegC8,RDSPRegC9,RDSPRegCAEXTSYM RDSPRegCB,RDSPRegCC,RDSPRegCD,RDSPRegCE,RDSPRegCF,RDSPRegD0,RDSPRegD1EXTSYM RDSPRegD2,RDSPRegD3,RDSPRegD4,RDSPRegD5,RDSPRegD6,RDSPRegD7,RDSPRegD8EXTSYM RDSPRegD9,RDSPRegDA,RDSPRegDB,RDSPRegDC,RDSPRegDD,RDSPRegDE,RDSPRegDFEXTSYM RDSPRegE0,RDSPRegE1,RDSPRegE2,RDSPRegE3,RDSPRegE4,RDSPRegE5,RDSPRegE6EXTSYM RDSPRegE7,RDSPRegE8,RDSPRegE9,RDSPRegEA,RDSPRegEB,RDSPRegEC,RDSPRegEDEXTSYM RDSPRegEE,RDSPRegEF,RDSPRegF0,RDSPRegF1,RDSPRegF2,RDSPRegF3,RDSPRegF4EXTSYM RDSPRegF5,RDSPRegF6,RDSPRegF7,RDSPRegF8,RDSPRegF9,RDSPRegFA,RDSPRegFBEXTSYM RDSPRegFC,RDSPRegFD,RDSPRegFE,RDSPRegFFEXTSYM WDSPReg00,WDSPReg01,WDSPReg02,WDSPReg03,WDSPReg04,WDSPReg05,WDSPReg06EXTSYM WDSPReg07,WDSPReg08,WDSPReg09,WDSPReg0A,WDSPReg0B,WDSPReg0C,WDSPReg0DEXTSYM WDSPReg0E,WDSPReg0F,WDSPReg10,WDSPReg11,WDSPReg12,WDSPReg13,WDSPReg14EXTSYM WDSPReg15,WDSPReg16,WDSPReg17,WDSPReg18,WDSPReg19,WDSPReg1A,WDSPReg1BEXTSYM WDSPReg1C,WDSPReg1D,WDSPReg1E,WDSPReg1F,WDSPReg20,WDSPReg21,WDSPReg22EXTSYM WDSPReg23,WDSPReg24,WDSPReg25,WDSPReg26,WDSPReg27,WDSPReg28,WDSPReg29EXTSYM WDSPReg2A,WDSPReg2B,WDSPReg2C,WDSPReg2D,WDSPReg2E,WDSPReg2F,WDSPReg30EXTSYM WDSPReg31,WDSPReg32,WDSPReg33,WDSPReg34,WDSPReg35,WDSPReg36,WDSPReg37EXTSYM WDSPReg38,WDSPReg39,WDSPReg3A,WDSPReg3B,WDSPReg3C,WDSPReg3D,WDSPReg3EEXTSYM WDSPReg3F,WDSPReg40,WDSPReg41,WDSPReg42,WDSPReg43,WDSPReg44,WDSPReg45EXTSYM WDSPReg46,WDSPReg47,WDSPReg48,WDSPReg49,WDSPReg4A,WDSPReg4B,WDSPReg4CEXTSYM WDSPReg4D,WDSPReg4E,WDSPReg4F,WDSPReg50,WDSPReg51,WDSPReg52,WDSPReg53EXTSYM WDSPReg54,WDSPReg55,WDSPReg56,WDSPReg57,WDSPReg58,WDSPReg59,WDSPReg5AEXTSYM WDSPReg5B,WDSPReg5C,WDSPReg5D,WDSPReg5E,WDSPReg5F,WDSPReg60,WDSPReg61EXTSYM WDSPReg62,WDSPReg63,WDSPReg64,WDSPReg65,WDSPReg66,WDSPReg67,WDSPReg68EXTSYM WDSPReg69,WDSPReg6A,WDSPReg6B,WDSPReg6C,WDSPReg6D,WDSPReg6E,WDSPReg6FEXTSYM WDSPReg70,WDSPReg71,WDSPReg72,WDSPReg73,WDSPReg74,WDSPReg75,WDSPReg76EXTSYM WDSPReg77,WDSPReg78,WDSPReg79,WDSPReg7A,WDSPReg7B,WDSPReg7C,WDSPReg7DEXTSYM WDSPReg7E,WDSPReg7F,WDSPReg80,WDSPReg81,WDSPReg82,WDSPReg83,WDSPReg84EXTSYM WDSPReg85,WDSPReg86,WDSPReg87,WDSPReg88,WDSPReg89,WDSPReg8A,WDSPReg8BEXTSYM WDSPReg8C,WDSPReg8D,WDSPReg8E,WDSPReg8F,WDSPReg90,WDSPReg91,WDSPReg92EXTSYM WDSPReg93,WDSPReg94,WDSPReg95,WDSPReg96,WDSPReg97,WDSPReg98,WDSPReg99EXTSYM WDSPReg9A,WDSPReg9B,WDSPReg9C,WDSPReg9D,WDSPReg9E,WDSPReg9F,WDSPRegA0EXTSYM WDSPRegA1,WDSPRegA2,WDSPRegA3,WDSPRegA4,WDSPRegA5,WDSPRegA6,WDSPRegA7EXTSYM WDSPRegA8,WDSPRegA9,WDSPRegAA,WDSPRegAB,WDSPRegAC,WDSPRegAD,WDSPRegAEEXTSYM WDSPRegAF,WDSPRegB0,WDSPRegB1,WDSPRegB2,WDSPRegB3,WDSPRegB4,WDSPRegB5EXTSYM WDSPRegB6,WDSPRegB7,WDSPRegB8,WDSPRegB9,WDSPRegBA,WDSPRegBB,WDSPRegBCEXTSYM WDSPRegBD,WDSPRegBE,WDSPRegBF,WDSPRegC0,WDSPRegC1,WDSPRegC2,WDSPRegC3EXTSYM WDSPRegC4,WDSPRegC5,WDSPRegC6,WDSPRegC7,WDSPRegC8,WDSPRegC9,WDSPRegCAEXTSYM WDSPRegCB,WDSPRegCC,WDSPRegCD,WDSPRegCE,WDSPRegCF,WDSPRegD0,WDSPRegD1EXTSYM WDSPRegD2,WDSPRegD3,WDSPRegD4,WDSPRegD5,WDSPRegD6,WDSPRegD7,WDSPRegD8EXTSYM WDSPRegD9,WDSPRegDA,WDSPRegDB,WDSPRegDC,WDSPRegDD,WDSPRegDE,WDSPRegDFEXTSYM WDSPRegE0,WDSPRegE1,WDSPRegE2,WDSPRegE3,WDSPRegE4,WDSPRegE5,WDSPRegE6EXTSYM WDSPRegE7,WDSPRegE8,WDSPRegE9,WDSPRegEA,WDSPRegEB,WDSPRegEC,WDSPRegEDEXTSYM WDSPRegEE,WDSPRegEF,WDSPRegF0,WDSPRegF1,WDSPRegF2,WDSPRegF3,WDSPRegF4EXTSYM WDSPRegF5,WDSPRegF6,WDSPRegF7,WDSPRegF8,WDSPRegF9,WDSPRegFA,WDSPRegFBEXTSYM WDSPRegFC,WDSPRegFD,WDSPRegFE,WDSPRegFFEXTSYM spcBuffera,DSPMem,SoundInterpType,NoiseData,Voice0Disable,EchoDisEXTSYM Surround,echobuf,ENVDisable,LowPassFilterType,EMUPause,AudioLoggingEXTSYM MMXSupport,StereoSound,SoundQuality%ifdef __MSDOS__EXTSYM SB_alloc_dma,SB_quality_limiter,vibracard%endifSECTION .dataNEWSYM SBHDMA, db 0 ; stupid legacy code ...SECTION .bss; How the sound code works :; Clear memory at $01 to $EF; Store $BBAA into $2140; Wait for $CC in $2142; Goto FFEF:;FFD6:; Move $2140 into Y; Repeat until Y = 0;FFDA:; If $2140 <> 0, then jump to FFE9; Move $2141 into A; Move Y into $2140; Move A into [$00]+Y; Increment Y; Jump to FFDA if Y <> 0; Increment value at $01;FFE9:; If plus flag set, goto FFDA; If (Y-$2140) <> 0, goto FFE9;FFEF:; Move 2142 into YA; Move YA into Address $00; Move A into 2140; Move Y into A; Move A into X; If A is not zero, goto FFD6; Jump to Address [0000]DSPInterP resw 1024section .dataALIGN32Gaussian: dw 1305,1305,1304,1304,1304,1304,1304,1303 dw 1303,1303,1302,1302,1301,1300,1300,1299 dw 1298,1297,1297,1296,1295,1294,1293,1292 dw 1291,1290,1288,1287,1286,1284,1283,1282 dw 1280,1279,1277,1275,1274,1272,1270,1269 dw 1267,1265,1263,1261,1259,1257,1255,1253 dw 1251,1248,1246,1244,1241,1239,1237,1234 dw 1232,1229,1227,1224,1221,1219,1216,1213 dw 1210,1207,1205,1202,1199,1196,1193,1190 dw 1186,1183,1180,1177,1174,1170,1167,1164 dw 1160,1157,1153,1150,1146,1143,1139,1136 dw 1132,1128,1125,1121,1117,1113,1109,1106 dw 1102,1098,1094,1090,1086,1082,1078,1074 dw 1070,1066,1061,1057,1053,1049,1045,1040 dw 1036,1032,1027,1023,1019,1014,1010,1005 dw 1001, 997, 992, 988, 983, 978, 974, 969 dw 965, 960, 955, 951, 946, 941, 937, 932 dw 927, 923, 918, 913, 908, 904, 899, 894 dw 889, 884, 880, 875, 870, 865, 860, 855 dw 851, 846, 841, 836, 831, 826, 821, 816 dw 811, 806, 802, 797, 792, 787, 782, 777 dw 772, 767, 762, 757, 752, 747, 742, 737 dw 732, 728, 723, 718, 713, 708, 703, 698 dw 693, 688, 683, 678, 674, 669, 664, 659 dw 654, 649, 644, 640, 635, 630, 625, 620 dw 615, 611, 606, 601, 596, 592, 587, 582 dw 577, 573, 568, 563, 559, 554, 550, 545 dw 540, 536, 531, 527, 522, 517, 513, 508 dw 504, 499, 495, 491, 486, 482, 477, 473 dw 469, 464, 460, 456, 451, 447, 443, 439 dw 434, 430, 426, 422, 418, 414, 410, 405 dw 401, 397, 393, 389, 385, 381, 378, 374 dw 370, 366, 362, 358, 354, 351, 347, 343 dw 339, 336, 332, 328, 325, 321, 318, 314 dw 311, 307, 304, 300, 297, 293, 290, 286 dw 283, 280, 276, 273, 270, 267, 263, 260 dw 257, 254, 251, 248, 245, 242, 239, 236 dw 233, 230, 227, 224, 221, 218, 215, 212 dw 210, 207, 204, 201, 199, 196, 193, 191 dw 188, 186, 183, 180, 178, 175, 173, 171 dw 168, 166, 163, 161, 159, 156, 154, 152 dw 150, 147, 145, 143, 141, 139, 137, 134 dw 132, 130, 128, 126, 124, 122, 120, 118 dw 117, 115, 113, 111, 109, 107, 106, 104 dw 102, 100, 99, 97, 95, 94, 92, 90 dw 89, 87, 86, 84, 83, 81, 80, 78 dw 77, 76, 74, 73, 71, 70, 69, 67 dw 66, 65, 64, 62, 61, 60, 59, 58 dw 56, 55, 54, 53, 52, 51, 50, 49 dw 48, 47, 46, 45, 44, 43, 42, 41 dw 40, 39, 38, 37, 36, 36, 35, 34 dw 33, 32, 32, 31, 30, 29, 29, 28 dw 27, 27, 26, 25, 24, 24, 23, 23 dw 22, 21, 21, 20, 20, 19, 19, 18 dw 17, 17, 16, 16, 15, 15, 15, 14 dw 14, 13, 13, 12, 12, 11, 11, 11 dw 10, 10, 10, 9, 9, 9, 8, 8 dw 8, 7, 7, 7, 6, 6, 6, 6 dw 5, 5, 5, 5, 4, 4, 4, 4 dw 4, 3, 3, 3, 3, 3, 2, 2 dw 2, 2, 2, 2, 2, 1, 1, 1 dw 1, 1, 1, 1, 1, 1, 1, 1 dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, 0, 0, 0, 0, 0, 0, 0CubicSpline: dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, -1, -1, -1, -2, -2, -2, -3 dw -3, -4, -4, -5, -5, -6, -6, -7 dw -8, -8, -9, -10, -10, -11, -12, -13 dw -14, -14, -15, -16, -17, -18, -19, -20 dw -21, -22, -23, -24, -25, -26, -27, -28 dw -29, -30, -31, -32, -33, -34, -35, -37 dw -38, -39, -40, -41, -43, -44, -45, -46 dw -48, -49, -50, -51, -53, -54, -55, -56 dw -58, -59, -60, -62, -63, -64, -66, -67 dw -68, -70, -71, -72, -74, -75, -76, -78 dw -79, -80, -82, -83, -84, -86, -87, -88 dw -90, -91, -92, -93, -95, -96, -97, -99 dw -100,-101,-102,-104,-105,-106,-107,-109 dw -110,-111,-112,-113,-114,-116,-117,-118 dw -119,-120,-121,-122,-123,-124,-125,-126 dw -128,-128,-129,-130,-131,-132,-133,-134 dw -135,-136,-137,-137,-138,-139,-140,-141 dw -141,-142,-143,-143,-144,-144,-145,-146 dw -146,-147,-147,-148,-148,-148,-149,-149 dw -150,-150,-150,-150,-151,-151,-151,-151 dw -151,-151,-151,-151,-151,-151,-151,-151 dw -151,-151,-150,-150,-150,-149,-149,-149 dw -148,-148,-147,-147,-146,-146,-145,-144 dw -144,-143,-142,-141,-140,-139,-138,-137 dw -136,-135,-134,-133,-132,-130,-129,-128 dw -126,-125,-123,-122,-120,-119,-117,-115 dw -113,-112,-110,-108,-106,-104,-102,-100 dw -98, -95, -93, -91, -88, -86, -83, -81 dw -78, -76, -73, -70, -67, -65, -62, -59 dw -56, -53, -50, -46, -43, -40, -36, -33 dw -30, -26, -22, -19, -15, -11, -7, -3 dw 0, 4, 8, 12, 16, 21, 26, 30 dw 35, 40, 46, 51, 56, 62, 67, 73 dw 79, 85, 91, 97, 103, 109, 116, 122 dw 129, 136, 143, 149, 156, 164, 171, 178 dw 186, 193, 201, 208, 216, 224, 232, 240 dw 248, 256, 264, 273, 281, 289, 298, 307 dw 315, 324, 333, 342, 351, 360, 369, 378 dw 387, 397, 406, 415, 425, 435, 444, 454 dw 464, 473, 483, 493, 503, 513, 523, 533 dw 543, 553, 564, 574, 584, 594, 605, 615 dw 626, 636, 647, 657, 668, 679, 689, 700 dw 711, 721, 732, 743, 754, 765, 776, 787 dw 798, 808, 819, 830, 841, 852, 863, 874 dw 886, 897, 908, 919, 930, 941, 952, 963 dw 974, 985, 996,1008,1019,1030,1041,1052 dw 1063,1074,1085,1096,1107,1118,1129,1140 dw 1152,1162,1173,1184,1195,1206,1217,1228 dw 1239,1250,1261,1271,1282,1293,1303,1314 dw 1325,1335,1346,1356,1367,1377,1388,1398 dw 1408,1419,1429,1439,1449,1459,1470,1480 dw 1490,1499,1509,1519,1529,1539,1548,1558 dw 1567,1577,1586,1595,1605,1614,1623,1632 dw 1641,1650,1659,1668,1677,1685,1694,1702 dw 1711,1719,1727,1736,1744,1752,1760,1768 dw 1776,1783,1791,1798,1806,1813,1820,1828 dw 1835,1842,1849,1855,1862,1869,1875,1881 dw 1888,1894,1900,1906,1912,1918,1923,1929 dw 1934,1940,1945,1950,1955,1960,1964,1969 dw 1974,1978,1982,1986,1990,1994,1998,2002 dw 2005,2008,2012,2015,2018,2021,2023,2026 dw 2028,2031,2033,2035,2037,2038,2040,2041 dw 2043,2044,2045,2046,2046,2047,2047,2047 dw 2048,2047,2047,2047,2046,2046,2045,2044 dw 2043,2041,2040,2038,2037,2035,2033,2031 dw 2028,2026,2023,2021,2018,2015,2012,2008 dw 2005,2002,1998,1994,1990,1986,1982,1978 dw 1974,1969,1964,1960,1955,1950,1945,1940 dw 1934,1929,1923,1918,1912,1906,1900,1894 dw 1888,1881,1875,1869,1862,1855,1849,1842 dw 1835,1828,1820,1813,1806,1798,1791,1783 dw 1776,1768,1760,1752,1744,1736,1727,1719 dw 1711,1702,1694,1685,1677,1668,1659,1650 dw 1641,1632,1623,1614,1605,1595,1586,1577 dw 1567,1558,1548,1539,1529,1519,1509,1499 dw 1490,1480,1470,1459,1449,1439,1429,1419 dw 1408,1398,1388,1377,1367,1356,1346,1335 dw 1325,1314,1303,1293,1282,1271,1261,1250 dw 1239,1228,1217,1206,1195,1184,1173,1162 dw 1152,1140,1129,1118,1107,1096,1085,1074 dw 1063,1052,1041,1030,1019,1008, 996, 985 dw 974, 963, 952, 941, 930, 919, 908, 897 dw 886, 874, 863, 852, 841, 830, 819, 808 dw 798, 787, 776, 765, 754, 743, 732, 721 dw 711, 700, 689, 679, 668, 657, 647, 636 dw 626, 615, 605, 594, 584, 574, 564, 553 dw 543, 533, 523, 513, 503, 493, 483, 473 dw 464, 454, 444, 435, 425, 415, 406, 397 dw 387, 378, 369, 360, 351, 342, 333, 324 dw 315, 307, 298, 289, 281, 273, 264, 256 dw 248, 240, 232, 224, 216, 208, 201, 193 dw 186, 178, 171, 164, 156, 149, 143, 136 dw 129, 122, 116, 109, 103, 97, 91, 85 dw 79, 73, 67, 62, 56, 51, 46, 40 dw 35, 30, 26, 21, 16, 12, 8, 4 dw 0, -3, -7, -11, -15, -19, -22, -26 dw -30, -33, -36, -40, -43, -46, -50, -53 dw -56, -59, -62, -65, -67, -70, -73, -76 dw -78, -81, -83, -86, -88, -91, -93, -95 dw -98,-100,-102,-104,-106,-108,-110,-112 dw -113,-115,-117,-119,-120,-122,-123,-125 dw -126,-128,-129,-130,-132,-133,-134,-135 dw -136,-137,-138,-139,-140,-141,-142,-143 dw -144,-144,-145,-146,-146,-147,-147,-148 dw -148,-149,-149,-149,-150,-150,-150,-151 dw -151,-151,-151,-151,-151,-151,-151,-151 dw -151,-151,-151,-151,-151,-150,-150,-150 dw -150,-149,-149,-148,-148,-148,-147,-147 dw -146,-146,-145,-144,-144,-143,-143,-142 dw -141,-141,-140,-139,-138,-137,-137,-136 dw -135,-134,-133,-132,-131,-130,-129,-128 dw -128,-126,-125,-124,-123,-122,-121,-120 dw -119,-118,-117,-116,-114,-113,-112,-111 dw -110,-109,-107,-106,-105,-104,-102,-101 dw -100, -99, -97, -96, -95, -93, -92, -91 dw -90, -88, -87, -86, -84, -83, -82, -80 dw -79, -78, -76, -75, -74, -72, -71, -70 dw -68, -67, -66, -64, -63, -62, -60, -59 dw -58, -56, -55, -54, -53, -51, -50, -49 dw -48, -46, -45, -44, -43, -41, -40, -39 dw -38, -37, -35, -34, -33, -32, -31, -30 dw -29, -28, -27, -26, -25, -24, -23, -22 dw -21, -20, -19, -18, -17, -16, -15, -14 dw -14, -13, -12, -11, -10, -10, -9, -8 dw -8, -7, -6, -6, -5, -5, -4, -4 dw -3, -3, -2, -2, -2, -1, -1, -1 dw 0, 0, 0, 0, 0, 0, 0, 0%include "cpu/firtable.inc"SECTION .bssNEWSYM spcWptr, resd 16 ; SPC Write pointers (point to their own functions)NEWSYM spcRptr, resd 16 ; SPC Read pointers (point to their own functions)SECTION .dataNEWSYM SBToSPC, dd 22050NEWSYM dspPAdj, dd 0NEWSYM NumBRRconv, dd 0NEWSYM BufferSizeB, dd 320NEWSYM BufferSizeW, dd 640;TIME_CONSTANT = 256 - 1000000 / frequencyNEWSYM BufferSize, dw 320, 320, 320, 500, 320, 400, 400NEWSYM BufferSizes, dw 320, 320, 500, 900, 400, 750, 750NEWSYM SoundSpeeds, db 131, 165, 211, 233, 193, 225, 235 ; 8khz,11khz,22khz,44khzNEWSYM SoundSpeedt, db 193, 210, 233 ; 8khz,11khz,22khz
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -