+++ /dev/null
-#define SQ2NCOEFFS 1024
-
-#if 0
-static int32 sq2coeffs[SQ2NCOEFFS];
-
-static int32 SQ2C44100NTSC[SQ2NCOEFFS/2]=
-{
- #include "fir/c44100ntsc.h"
-};
-
-static int32 SQ2C48000NTSC[SQ2NCOEFFS/2]=
-{
- #include "fir/c48000ntsc.h"
-};
-
-static int32 SQ2C96000NTSC[SQ2NCOEFFS/2]=
-{
- #include "fir/c96000ntsc.h"
-};
-
-static int32 SQ2C44100PAL[SQ2NCOEFFS/2]=
-{
- #include "fir/c44100pal.h"
-};
-
-static int32 SQ2C48000PAL[SQ2NCOEFFS/2]=
-{
- #include "fir/c48000pal.h"
-};
-
-static int32 SQ2C96000PAL[SQ2NCOEFFS/2]=
-{
- #include "fir/c96000pal.h"
-};
-#endif
-
-#define NCOEFFS 484
-
-static int32 coeffs[NCOEFFS];
-
-/* 96000hz filter could probably be improved. */
-
-/*
-Parks-McClellan FIR Filter Design
-
-Filter type: Low pass
-Passband: 0 - 0.016761904
-Order: 483
-Passband ripple: 0.01 dB
-Transition band: 0.01005714
-Stopband attenuation: 103.0 dB
-
-Coefficients:
-*/
-static int32 C96000NTSC[NCOEFFS/2]=
-{
-/*0*/ 65536*16* -5.9950991853042605E-6
-/*1*/, 65536*16* -3.0394382502604395E-6
-/*2*/, 65536*16* -3.728403434239284E-6
-/*3*/, 65536*16* -4.460351826790638E-6
-/*4*/, 65536*16* -5.2164320385801135E-6
-/*5*/, 65536*16* -5.9787071016806234E-6
-/*6*/, 65536*16* -6.716463411023574E-6
-/*7*/, 65536*16* -7.408551386580002E-6
-/*8*/, 65536*16* -8.023491429829738E-6
-/*9*/, 65536*16* -8.531232892238868E-6
-/*10*/, 65536*16* -8.878741512154837E-6
-/*11*/, 65536*16* -9.046773382992595E-6
-/*12*/, 65536*16* -8.993971214348702E-6
-/*13*/, 65536*16* -8.66944931521744E-6
-/*14*/, 65536*16* -8.049348524459474E-6
-/*15*/, 65536*16* -7.083238646482467E-6
-/*16*/, 65536*16* -5.746762349938464E-6
-/*17*/, 65536*16* -4.005753681691657E-6
-/*18*/, 65536*16* -1.838018035195733E-6
-/*19*/, 65536*16* 7.763983938828864E-7
-/*20*/, 65536*16* 3.842232025916005E-6
-/*21*/, 65536*16* 7.361161707034959E-6
-/*22*/, 65536*16* 1.1325948767988128E-5
-/*23*/, 65536*16* 1.5711486406341978E-5
-/*24*/, 65536*16* 2.0488201424957098E-5
-/*25*/, 65536*16* 2.5608402660083142E-5
-/*26*/, 65536*16* 3.101231858515874E-5
-/*27*/, 65536*16* 3.6630654060842745E-5
-/*28*/, 65536*16* 4.2375439803123404E-5
-/*29*/, 65536*16* 4.815060832963289E-5
-/*30*/, 65536*16* 5.384626411548906E-5
-/*31*/, 65536*16* 5.934549587237094E-5
-/*32*/, 65536*16* 6.451785679907682E-5
-/*33*/, 65536*16* 6.923065879553487E-5
-/*34*/, 65536*16* 7.334304650233838E-5
-/*35*/, 65536*16* 7.671308820252635E-5
-/*36*/, 65536*16* 7.920112989696133E-5
-/*37*/, 65536*16* 8.066793124218096E-5
-/*38*/, 65536*16* 8.098382483962539E-5
-/*39*/, 65536*16* 8.002921154479775E-5
-/*40*/, 65536*16* 7.769789869215064E-5
-/*41*/, 65536*16* 7.390152475899438E-5
-/*42*/, 65536*16* 6.857231550142758E-5
-/*43*/, 65536*16* 6.16673817460573E-5
-/*44*/, 65536*16* 5.3169767940001464E-5
-/*45*/, 65536*16* 4.309495398773014E-5
-/*46*/, 65536*16* 3.148737405995964E-5
-/*47*/, 65536*16* 1.8428415219696232E-5
-/*48*/, 65536*16* 4.0337781533928895E-6
-/*49*/, 65536*16* -1.154525373085283E-5
-/*50*/, 65536*16* -2.8120750949316567E-5
-/*51*/, 65536*16* -4.5470242422149815E-5
-/*52*/, 65536*16* -6.333736379615692E-5
-/*53*/, 65536*16* -8.143489509942166E-5
-/*54*/, 65536*16* -9.94475640226242E-5
-/*55*/, 65536*16* -1.1703729468742291E-4
-/*56*/, 65536*16* -1.3384679191408508E-4
-/*57*/, 65536*16* -1.4950548598267213E-4
-/*58*/, 65536*16* -1.6363792959068823E-4
-/*59*/, 65536*16* -1.7586732627086947E-4
-/*60*/, 65536*16* -1.858264971517669E-4
-/*61*/, 65536*16* -1.9316312487547242E-4
-/*62*/, 65536*16* -1.975494021862538E-4
-/*63*/, 65536*16* -1.9868977868165154E-4
-/*64*/, 65536*16* -1.963293865814053E-4
-/*65*/, 65536*16* -1.9026146175876417E-4
-/*66*/, 65536*16* -1.803352078962109E-4
-/*67*/, 65536*16* -1.66463443436789E-4
-/*68*/, 65536*16* -1.4862710934868261E-4
-/*69*/, 65536*16* -1.2688200452566298E-4
-/*70*/, 65536*16* -1.0136212853169677E-4
-/*71*/, 65536*16* -7.228199463954364E-5
-/*72*/, 65536*16* -3.9939461621236575E-5
-/*73*/, 65536*16* -4.7134932934724E-6
-/*74*/, 65536*16* 3.2936215273699675E-5
-/*75*/, 65536*16* 7.247384833064696E-5
-/*76*/, 65536*16* 1.1329187082792405E-4
-/*77*/, 65536*16* 1.5471948843725746E-4
-/*78*/, 65536*16* 1.9603027714808286E-4
-/*79*/, 65536*16* 2.364532958813608E-4
-/*80*/, 65536*16* 2.751853212246927E-4
-/*81*/, 65536*16* 3.114033208188799E-4
-/*82*/, 65536*16* 3.442804841775461E-4
-/*83*/, 65536*16* 3.7300098840546946E-4
-/*84*/, 65536*16* 3.967764136715296E-4
-/*85*/, 65536*16* 4.148631617351676E-4
-/*86*/, 65536*16* 4.265789297533608E-4
-/*87*/, 65536*16* 4.3132002526188114E-4
-/*88*/, 65536*16* 4.2857701618443636E-4
-/*89*/, 65536*16* 4.179510914969621E-4
-/*90*/, 65536*16* 3.991670037587729E-4
-/*91*/, 65536*16* 3.720870989970653E-4
-/*92*/, 65536*16* 3.367209236003282E-4
-/*93*/, 65536*16* 2.932338231303312E-4
-/*94*/, 65536*16* 2.419533571940393E-4
-/*95*/, 65536*16* 1.8337169647749448E-4
-/*96*/, 65536*16* 1.1814612711310299E-4
-/*97*/, 65536*16* 4.709567952563025E-5
-/*98*/, 65536*16* -2.880519351052945E-5
-/*99*/, 65536*16* -1.08436462295612E-4
-/*100*/, 65536*16* -1.905455293630124E-4
-/*101*/, 65536*16* -2.7376362665015007E-4
-/*102*/, 65536*16* -3.566259161939277E-4
-/*103*/, 65536*16* -4.375928024937683E-4
-/*104*/, 65536*16* -5.150762555847844E-4
-/*105*/, 65536*16* -5.874662774920191E-4
-/*106*/, 65536*16* -6.531605887419429E-4
-/*107*/, 65536*16* -7.105951946653638E-4
-/*108*/, 65536*16* -7.582757639600853E-4
-/*109*/, 65536*16* -7.948096207059845E-4
-/*110*/, 65536*16* -8.189373133065186E-4
-/*111*/, 65536*16* -8.295634640890689E-4
-/*112*/, 65536*16* -8.257854455404298E-4
-/*113*/, 65536*16* -8.069208861135825E-4
-/*114*/, 65536*16* -7.725316214556066E-4
-/*115*/, 65536*16* -7.224442067331338E-4
-/*116*/, 65536*16* -6.567673177902021E-4
-/*117*/, 65536*16* -5.759031970767677E-4
-/*118*/, 65536*16* -4.8055576975832975E-4
-/*119*/, 65536*16* -3.7173219275304865E-4
-/*120*/, 65536*16* -2.507394811359122E-4
-/*121*/, 65536*16* -1.191747608775131E-4
-/*122*/, 65536*16* 2.1089774143064154E-5
-/*123*/, 65536*16* 1.6792832047168277E-4
-/*124*/, 65536*16* 3.189887341095747E-4
-/*125*/, 65536*16* 4.7172479984555337E-4
-/*126*/, 65536*16* 6.234346495766704E-4
-/*127*/, 65536*16* 7.713029674040095E-4
-/*128*/, 65536*16* 9.124478381058291E-4
-/*129*/, 65536*16* 0.0010439713492973299
-/*130*/, 65536*16* 0.0011630121060354824
-/*131*/, 65536*16* 0.0012668003330792172
-/*132*/, 65536*16* 0.0013527131638668246
-/*133*/, 65536*16* 0.0014183305230994348
-/*134*/, 65536*16* 0.0014614889365474647
-/*135*/, 65536*16* 0.0014803340336415063
-/*136*/, 65536*16* 0.0014733688575452508
-/*137*/, 65536*16* 0.001439498243826639
-/*138*/, 65536*16* 0.0013780680098511918
-/*139*/, 65536*16* 0.0012888970057146566
-/*140*/, 65536*16* 0.0011723026532406624
-/*141*/, 65536*16* 0.0010291180003947405
-/*142*/, 65536*16* 8.607001658653358E-4
-/*143*/, 65536*16* 6.689295599970792E-4
-/*144*/, 65536*16* 4.5619928199453885E-4
-/*145*/, 65536*16* 2.253948582736753E-4
-/*146*/, 65536*16* -2.0136349562764177E-5
-/*147*/, 65536*16* -2.766248035657636E-4
-/*148*/, 65536*16* -5.399290507797791E-4
-/*149*/, 65536*16* -8.055939397996815E-4
-/*150*/, 65536*16* -0.0010689177291287714
-/*151*/, 65536*16* -0.0013250265370767429
-/*152*/, 65536*16* -0.0015689549600474482
-/*153*/, 65536*16* -0.0017957322527663085
-/*154*/, 65536*16* -0.002000472024117418
-/*155*/, 65536*16* -0.0021784645223266222
-/*156*/, 65536*16* -0.0023252695222818146
-/*157*/, 65536*16* -0.0024368087083972345
-/*158*/, 65536*16* -0.002509455241851095
-/*159*/, 65536*16* -0.0025401189567937766
-/*160*/, 65536*16* -0.0025263261450844377
-/*161*/, 65536*16* -0.0024662908754217406
-/*162*/, 65536*16* -0.002358977944127433
-/*163*/, 65536*16* -0.002204154401342649
-/*164*/, 65536*16* -0.002002429343138771
-/*165*/, 65536*16* -0.0017552803385372808
-/*166*/, 65536*16* -0.0014650656045065488
-/*167*/, 65536*16* -0.001135021049166992
-/*168*/, 65536*16* -7.692415547098649E-4
-/*169*/, 65536*16* -3.7264671522013244E-4
-/*170*/, 65536*16* 4.906989195928291E-5
-/*171*/, 65536*16* 4.895067103339711E-4
-/*172*/, 65536*16* 9.416355837269647E-4
-/*173*/, 65536*16* 0.001397897684142057
-/*174*/, 65536*16* 0.0018503121614766558
-/*175*/, 65536*16* 0.002290597319733804
-/*176*/, 65536*16* 0.0027103015920374113
-/*177*/, 65536*16* 0.0031009433327120863
-/*178*/, 65536*16* 0.0034541565687980116
-/*179*/, 65536*16* 0.0037618412630103333
-/*180*/, 65536*16* 0.004016315066649496
-/*181*/, 65536*16* 0.004210464374744574
-/*182*/, 65536*16* 0.004337892288164658
-/*183*/, 65536*16* 0.004393060165490985
-/*184*/, 65536*16* 0.004371421226297046
-/*185*/, 65536*16* 0.004269542847715132
-/*186*/, 65536*16* 0.00408521543517564
-/*187*/, 65536*16* 0.0038175457430583526
-/*188*/, 65536*16* 0.00346703221076496
-/*189*/, 65536*16* 0.0030356209846777236
-/*190*/, 65536*16* 0.002526740400739804
-/*191*/, 65536*16* 0.0019453134428630866
-/*192*/, 65536*16* 0.0012977462825954304
-/*193*/, 65536*16* 5.918933555500828E-4
-/*194*/, 65536*16* -1.6300197379338156E-4
-/*195*/, 65536*16* -9.563908629597664E-4
-/*196*/, 65536*16* -0.0017765255338228524
-/*197*/, 65536*16* -0.0026105886000394158
-/*198*/, 65536*16* -0.003444843158936217
-/*199*/, 65536*16* -0.004264802433556331
-/*200*/, 65536*16* -0.00505541655658742
-/*201*/, 65536*16* -0.005801274223045036
-/*202*/, 65536*16* -0.0064868164183708756
-/*203*/, 65536*16* -0.007096559102022994
-/*204*/, 65536*16* -0.007615322236172286
-/*205*/, 65536*16* -0.008028460796606074
-/*206*/, 65536*16* -0.008322095341268461
-/*207*/, 65536*16* -0.008483337773170242
-/*208*/, 65536*16* -0.008500509194641638
-/*209*/, 65536*16* -0.008363346317351387
-/*210*/, 65536*16* -0.008063192746297233
-/*211*/, 65536*16* -0.007593172286363423
-/*212*/, 65536*16* -0.0069483408893122045
-/*213*/, 65536*16* -0.006125814985695579
-/*214*/, 65536*16* -0.005124873148956596
-/*215*/, 65536*16* -0.003947029569132915
-/*216*/, 65536*16* -0.002596077508306772
-/*217*/, 65536*16* -0.0010781012650798818
-/*218*/, 65536*16* 5.985434770618447E-4
-/*219*/, 65536*16* 0.0024232820773754
-/*220*/, 65536*16* 0.004383405101533075
-/*221*/, 65536*16* 0.006464184070028333
-/*222*/, 65536*16* 0.008649017282842432
-/*223*/, 65536*16* 0.010919604285452066
-/*224*/, 65536*16* 0.013256146772932903
-/*225*/, 65536*16* 0.015637573164024095
-/*226*/, 65536*16* 0.018041784432073237
-/*227*/, 65536*16* 0.020445917198990023
-/*228*/, 65536*16* 0.022826621253151515
-/*229*/, 65536*16* 0.025160347111354456
-/*230*/, 65536*16* 0.02742363969736895
-/*231*/, 65536*16* 0.02959343430076011
-/*232*/, 65536*16* 0.03164735012116834
-/*233*/, 65536*16* 0.03356397767681876
-/*234*/, 65536*16* 0.035323155364389396
-/*235*/, 65536*16* 0.03690623176571385
-/*236*/, 65536*16* 0.03829630932788767
-/*237*/, 65536*16* 0.03947846623700253
-/*238*/, 65536*16* 0.040439953107911
-/*239*/, 65536*16* 0.0411703612762271
-/*240*/, 65536*16* 0.04166176091370756
-/*241*/, 65536*16* 0.041908806136461134
-};
-
-/*
-Parks-McClellan FIR Filter Design
-
-Filter type: Low pass
-Passband: 0 - 0.01804395
-Order: 483
-Passband ripple: 0.01 dB
-Transition band: 0.0108263
-Stopband attenuation: 114.0 dB
-
-Coefficients:
-*/
-
-static int32 C96000PAL[NCOEFFS/2]=
-{
-/*0*/ 65536*16* 3.850781559466991E-7
-/*1*/, 65536*16* -1.280019401722687E-6
-/*2*/, 65536*16* -1.3004583488088965E-6
-/*3*/, 65536*16* -1.7523167437749452E-6
-/*4*/, 65536*16* -2.410249470764872E-6
-/*5*/, 65536*16* -3.2346426554155092E-6
-/*6*/, 65536*16* -4.227271662321092E-6
-/*7*/, 65536*16* -5.3971678027414914E-6
-/*8*/, 65536*16* -6.753444785567694E-6
-/*9*/, 65536*16* -8.302128790766257E-6
-/*10*/, 65536*16* -1.0045896006160685E-5
-/*11*/, 65536*16* -1.1982368218542129E-5
-/*12*/, 65536*16* -1.4104296519058353E-5
-/*13*/, 65536*16* -1.6397945806910793E-5
-/*14*/, 65536*16* -1.8843550708827064E-5
-/*15*/, 65536*16* -2.1413952016264175E-5
-/*16*/, 65536*16* -2.407540699773165E-5
-/*17*/, 65536*16* -2.6786418491045868E-5
-/*18*/, 65536*16* -2.949883620881563E-5
-/*19*/, 65536*16* -3.215685693993941E-5
-/*20*/, 65536*16* -3.4698621200866915E-5
-/*21*/, 65536*16* -3.7055635055088747E-5
-/*22*/, 65536*16* -3.915516367387583E-5
-/*23*/, 65536*16* -4.092005046973106E-5
-/*24*/, 65536*16* -4.227173792151256E-5
-/*25*/, 65536*16* -4.313002076491602E-5
-/*26*/, 65536*16* -4.3416606424857764E-5
-/*27*/, 65536*16* -4.3054793786740716E-5
-/*28*/, 65536*16* -4.1974462257106624E-5
-/*29*/, 65536*16* -4.011236719136458E-5
-/*30*/, 65536*16* -3.7415159397597796E-5
-/*31*/, 65536*16* -3.3846213818414235E-5
-/*32*/, 65536*16* -2.9372757531099172E-5
-/*33*/, 65536*16* -2.3989695934591954E-5
-/*34*/, 65536*16* -1.7705989252101064E-5
-/*35*/, 65536*16* -1.0551320217411096E-5
-/*36*/, 65536*16* -2.5775325043216536E-6
-/*37*/, 65536*16* 6.139645766572715E-6
-/*38*/, 65536*16* 1.5501423038008354E-5
-/*39*/, 65536*16* 2.5384753820737575E-5
-/*40*/, 65536*16* 3.5643398684518664E-5
-/*41*/, 65536*16* 4.6108393091574726E-5
-/*42*/, 65536*16* 5.659011526249589E-5
-/*43*/, 65536*16* 6.68803323899828E-5
-/*44*/, 65536*16* 7.675537622878941E-5
-/*45*/, 65536*16* 8.597960059720824E-5
-/*46*/, 65536*16* 9.430960279897814E-5
-/*47*/, 65536*16* 1.0149893801465577E-4
-/*48*/, 65536*16* 1.0730328189856642E-4
-/*49*/, 65536*16* 1.1148622997923174E-4
-/*50*/, 65536*16* 1.1382511217545132E-4
-/*51*/, 65536*16* 1.141174295909343E-4
-/*52*/, 65536*16* 1.1218671460549208E-4
-/*53*/, 65536*16* 1.078890398041802E-4
-/*54*/, 65536*16* 1.0111839925160891E-4
-/*55*/, 65536*16* 9.181292532691402E-5
-/*56*/, 65536*16* 7.995923739813694E-5
-/*57*/, 65536*16* 6.559772591687974E-5
-/*58*/, 65536*16* 4.882471526869663E-5
-/*59*/, 65536*16* 2.9795861807919456E-5
-/*60*/, 65536*16* 8.727003235393024E-6
-/*61*/, 65536*16* -1.4106777294769694E-5
-/*62*/, 65536*16* -3.836880959229582E-5
-/*63*/, 65536*16* -6.366921149307032E-5
-/*64*/, 65536*16* -8.956481187350594E-5
-/*65*/, 65536*16* -1.1556632861786434E-4
-/*66*/, 65536*16* -1.411455941949306E-4
-/*67*/, 65536*16* -1.657445386231986E-4
-/*68*/, 65536*16* -1.8878427001863077E-4
-/*69*/, 65536*16* -2.0967688285495866E-4
-/*70*/, 65536*16* -2.2783715638612827E-4
-/*71*/, 65536*16* -2.4269587549180196E-4
-/*72*/, 65536*16* -2.5371305459897316E-4
-/*73*/, 65536*16* -2.603919787720978E-4
-/*74*/, 65536*16* -2.6229284265917287E-4
-/*75*/, 65536*16* -2.59046413963889E-4
-/*76*/, 65536*16* -2.503668396740634E-4
-/*77*/, 65536*16* -2.3606367328604213E-4
-/*78*/, 65536*16* -2.160524966650091E-4
-/*79*/, 65536*16* -1.903639226156617E-4
-/*80*/, 65536*16* -1.59150691014015E-4
-/*81*/, 65536*16* -1.2269241610349266E-4
-/*82*/, 65536*16* -8.139812226735764E-5
-/*83*/, 65536*16* -3.5805772732231955E-5
-/*84*/, 65536*16* 1.3420603339835859E-5
-/*85*/, 65536*16* 6.549742374431074E-5
-/*86*/, 65536*16* 1.1953033076822495E-4
-/*87*/, 65536*16* 1.745269622757623E-4
-/*88*/, 65536*16* 2.2941123586808386E-4
-/*89*/, 65536*16* 2.830419125977025E-4
-/*90*/, 65536*16* 3.3423267917052983E-4
-/*91*/, 65536*16* 3.81774499172079E-4
-/*92*/, 65536*16* 4.244616654237554E-4
-/*93*/, 65536*16* 4.611154134679936E-4
-/*94*/, 65536*16* 4.906128810250551E-4
-/*95*/, 65536*16* 5.119138315653597E-4
-/*96*/, 65536*16* 5.240878477917174E-4
-/*97*/, 65536*16* 5.263406012974186E-4
-/*98*/, 65536*16* 5.180395272684202E-4
-/*99*/, 65536*16* 4.987363674123535E-4
-/*100*/, 65536*16* 4.681879119879578E-4
-/*101*/, 65536*16* 4.263728836819278E-4
-/*102*/, 65536*16* 3.735054898141368E-4
-/*103*/, 65536*16* 3.1004425441119956E-4
-/*104*/, 65536*16* 2.3669640454159868E-4
-/*105*/, 65536*16* 1.5441686754990788E-4
-/*106*/, 65536*16* 6.440207419421148E-5
-/*107*/, 65536*16* -3.192198333335273E-5
-/*108*/, 65536*16* -1.3291717686663037E-4
-/*109*/, 65536*16* -2.3675627296534203E-4
-/*110*/, 65536*16* -3.414512496033162E-4
-/*111*/, 65536*16* -4.4488659997924806E-4
-/*112*/, 65536*16* -5.44857304239037E-4
-/*113*/, 65536*16* -6.391106241040588E-4
-/*114*/, 65536*16* -7.253914361418537E-4
-/*115*/, 65536*16* -8.0148962040363E-4
-/*116*/, 65536*16* -8.652895191393541E-4
-/*117*/, 65536*16* -9.148193159968953E-4
-/*118*/, 65536*16* -9.483009583169883E-4
-/*119*/, 65536*16* -9.64197392644944E-4
-/*120*/, 65536*16* -9.612579850877552E-4
-/*121*/, 65536*16* -9.385600118624972E-4
-/*122*/, 65536*16* -8.955444281498081E-4
-/*123*/, 65536*16* -8.320477398703453E-4
-/*124*/, 65536*16* -7.483247067952744E-4
-/*125*/, 65536*16* -6.450648142040654E-4
-/*126*/, 65536*16* -5.234000259248345E-4
-/*127*/, 65536*16* -3.8490357943433983E-4
-/*128*/, 65536*16* -2.3157879639504726E-4
-/*129*/, 65536*16* -6.583909529283622E-5
-/*130*/, 65536*16* 1.0952239530879758E-4
-/*131*/, 65536*16* 2.9137227027685464E-4
-/*132*/, 65536*16* 4.76285797012954E-4
-/*133*/, 65536*16* 6.606041066674581E-4
-/*134*/, 65536*16* 8.404993785845289E-4
-/*135*/, 65536*16* 0.0010120465600366754
-/*136*/, 65536*16* 0.00117130077980147
-/*137*/, 65536*16* 0.0013143787565297594
-/*138*/, 65536*16* 0.0014375429397231808
-/*139*/, 65536*16* 0.0015372865339524395
-/*140*/, 65536*16* 0.0016104178085955662
-/*141*/, 65536*16* 0.0016541417860661317
-/*142*/, 65536*16* 0.0016661374441763997
-/*143*/, 65536*16* 0.0016446287155235182
-/*144*/, 65536*16* 0.0015884472759871292
-/*145*/, 65536*16* 0.0014970858621845143
-/*146*/, 65536*16* 0.0013707399310406382
-/*147*/, 65536*16* 0.0012103371052757787
-/*148*/, 65536*16* 0.0010175519857289184
-/*149*/, 65536*16* 7.94807053668863E-4
-/*150*/, 65536*16* 5.452573395422002E-4
-/*151*/, 65536*16* 2.727594075846488E-4
-/*152*/, 65536*16* -1.8175144027827955E-5
-/*153*/, 65536*16* -3.2244298920455907E-4
-/*154*/, 65536*16* -6.344261333752713E-4
-/*155*/, 65536*16* -9.480839637356165E-4
-/*156*/, 65536*16* -0.001257058056943197
-/*157*/, 65536*16* -0.001554788246611654
-/*158*/, 65536*16* -0.001834637661184569
-/*159*/, 65536*16* -0.0020900256934556468
-/*160*/, 65536*16* -0.0023145651572872143
-/*161*/, 65536*16* -0.0025022020560114683
-/*162*/, 65536*16* -0.002647354498854991
-/*163*/, 65536*16* -0.002745048447695108
-/*164*/, 65536*16* -0.0027910469441460657
-/*165*/, 65536*16* -0.002781970255972488
-/*166*/, 65536*16* -0.0027154038464012363
-/*167*/, 65536*16* -0.002589991713387623
-/*168*/, 65536*16* -0.0024055123883779776
-/*169*/, 65536*16* -0.0021629354924022053
-/*170*/, 65536*16* -0.0018644567566629092
-/*171*/, 65536*16* -0.0015135100031795994
-/*172*/, 65536*16* -0.0011147548631940517
-/*173*/, 65536*16* -6.740394224166433E-4
-/*174*/, 65536*16* -1.9833762845333352E-4
-/*175*/, 65536*16* 3.043386309556266E-4
-/*176*/, 65536*16* 8.250516255359581E-4
-/*177*/, 65536*16* 0.0013540734762851313
-/*178*/, 65536*16* 0.0018810427835111666
-/*179*/, 65536*16* 0.002395141352428365
-/*180*/, 65536*16* 0.002885286937512414
-/*181*/, 65536*16* 0.0033403397957704442
-/*182*/, 65536*16* 0.003749319662913449
-/*183*/, 65536*16* 0.00410162844368435
-/*184*/, 65536*16* 0.00438727601255591
-/*185*/, 65536*16* 0.004597103692808949
-/*186*/, 65536*16* 0.004723001540295747
-/*187*/, 65536*16* 0.004758115147888017
-/*188*/, 65536*16* 0.0046970379302800494
-/*189*/, 65536*16* 0.0045359837766146575
-/*190*/, 65536*16* 0.004272937350956345
-/*191*/, 65536*16* 0.003907777448988567
-/*192*/, 65536*16* 0.0034423707924944227
-/*193*/, 65536*16* 0.0028806330094231125
-/*194*/, 65536*16* 0.0022285548928660825
-/*195*/, 65536*16* 0.0014941919971143964
-/*196*/, 65536*16* 6.876167025638233E-4
-/*197*/, 65536*16* -1.7916781098860902E-4
-/*198*/, 65536*16* -0.001092351250031068
-/*199*/, 65536*16* -0.002036476651580642
-/*200*/, 65536*16* -0.002994635788760751
-/*201*/, 65536*16* -0.003948697212655613
-/*202*/, 65536*16* -0.004879563858611486
-/*203*/, 65536*16* -0.005767456511229176
-/*204*/, 65536*16* -0.006592218979894068
-/*205*/, 65536*16* -0.007333640031607341
-/*206*/, 65536*16* -0.007971787269457032
-/*207*/, 65536*16* -0.008487346947516187
-/*208*/, 65536*16* -0.008861964740105959
-/*209*/, 65536*16* -0.009078580419089913
-/*210*/, 65536*16* -0.009121751784315056
-/*211*/, 65536*16* -0.008977961157199062
-/*212*/, 65536*16* -0.008635898786325313
-/*213*/, 65536*16* -0.008086718339557295
-/*214*/, 65536*16* -0.007324258683042848
-/*215*/, 65536*16* -0.0063452279676933475
-/*216*/, 65536*16* -0.005149346015761238
-/*217*/, 65536*16* -0.0037394415039958702
-/*218*/, 65536*16* -0.0021215012056140783
-/*219*/, 65536*16* -3.046703636518387E-4
-/*220*/, 65536*16* 0.0016987979320526618
-/*221*/, 65536*16* 0.0038736435001752246
-/*222*/, 65536*16* 0.006201749792159754
-/*223*/, 65536*16* 0.00866234250983842
-/*224*/, 65536*16* 0.011232233932071251
-/*225*/, 65536*16* 0.013886109426908738
-/*226*/, 65536*16* 0.016596852190097027
-/*227*/, 65536*16* 0.01933590131308301
-/*228*/, 65536*16* 0.022073637826085922
-/*229*/, 65536*16* 0.024779792715016697
-/*230*/, 65536*16* 0.027423870545765342
-/*231*/, 65536*16* 0.029975581949125456
-/*232*/, 65536*16* 0.03240527801144671
-/*233*/, 65536*16* 0.034684379593278115
-/*234*/, 65536*16* 0.03678579448103684
-/*235*/, 65536*16* 0.03868431571442653
-/*236*/, 65536*16* 0.04035699420925718
-/*237*/, 65536*16* 0.041783479941480954
-/*238*/, 65536*16* 0.04294632536294341
-/*239*/, 65536*16* 0.043831247006285705
-/*240*/, 65536*16* 0.044427339714649856
-/*241*/, 65536*16* 0.04472724072106236
-};
-
-/*
-Parks-McClellan FIR Filter Design
-
-Filter type: Low pass
-Passband: 0 - 0.0077845
-Order: 483
-Passband ripple: 0.1 dB
-Transition band: 0.005625
-Stopband attenuation: 60.0 dB
-*/
-static int32 C48000NTSC[NCOEFFS/2]=
-{
-/*0*/ 65536*16* -1.2211019733097893E-4
-/*1*/ , 65536*16* 5.374660789759626E-4
-/*2*/ , 65536*16* 1.9882723274804067E-4
-/*3*/ , 65536*16* 1.3631041618360223E-4
-/*4*/ , 65536*16* 1.3153691128499229E-4
-/*5*/ , 65536*16* 1.3886281724158703E-4
-/*6*/ , 65536*16* 1.4887278966773673E-4
-/*7*/ , 65536*16* 1.5943890243162037E-4
-/*8*/ , 65536*16* 1.7020639605259616E-4
-/*9*/ , 65536*16* 1.809192079749018E-4
-/*10*/ , 65536*16* 1.9162093203709557E-4
-/*11*/ , 65536*16* 2.02127312351196E-4
-/*12*/ , 65536*16* 2.1249848894399555E-4
-/*13*/ , 65536*16* 2.2254095363111247E-4
-/*14*/ , 65536*16* 2.323202963851337E-4
-/*15*/ , 65536*16* 2.4163344759163413E-4
-/*16*/ , 65536*16* 2.505472122265602E-4
-/*17*/ , 65536*16* 2.5885306226458603E-4
-/*18*/ , 65536*16* 2.6660828860384193E-4
-/*19*/ , 65536*16* 2.736061193417779E-4
-/*20*/ , 65536*16* 2.79907587492226E-4
-/*21*/ , 65536*16* 2.852884076207648E-4
-/*22*/ , 65536*16* 2.898305905338908E-4
-/*23*/ , 65536*16* 2.93305922863925E-4
-/*24*/ , 65536*16* 2.958004341042564E-4
-/*25*/ , 65536*16* 2.9706939623100196E-4
-/*26*/ , 65536*16* 2.972508466837626E-4
-/*27*/ , 65536*16* 2.960684730022295E-4
-/*28*/ , 65536*16* 2.937123123731801E-4
-/*29*/ , 65536*16* 2.898634667442807E-4
-/*30*/ , 65536*16* 2.8478700978604426E-4
-/*31*/ , 65536*16* 2.7808505097364714E-4
-/*32*/ , 65536*16* 2.7016032300539216E-4
-/*33*/ , 65536*16* 2.6042025835357706E-4
-/*34*/ , 65536*16* 2.496053090718662E-4
-/*35*/ , 65536*16* 2.3660011363209167E-4
-/*36*/ , 65536*16* 2.228827056917728E-4
-/*37*/ , 65536*16* 2.0662381151599093E-4
-/*38*/ , 65536*16* 1.8946729340692708E-4
-/*39*/ , 65536*16* 1.707894290302382E-4
-/*40*/ , 65536*16* 1.4964075656329285E-4
-/*41*/ , 65536*16* 1.2806315562352013E-4
-/*42*/ , 65536*16* 1.0470129333132878E-4
-/*43*/ , 65536*16* 7.952742687952367E-5
-/*44*/ , 65536*16* 5.3080519892589936E-5
-/*45*/ , 65536*16* 2.5960680465529317E-5
-/*46*/ , 65536*16* -2.5651586484338896E-6
-/*47*/ , 65536*16* -3.248840068536756E-5
-/*48*/ , 65536*16* -6.374045088088799E-5
-/*49*/ , 65536*16* -9.575401529845337E-5
-/*50*/ , 65536*16* -1.2853435644071695E-4
-/*51*/ , 65536*16* -1.6188456243132127E-4
-/*52*/ , 65536*16* -1.9591394048834482E-4
-/*53*/ , 65536*16* -2.3037663947407175E-4
-/*54*/ , 65536*16* -2.6523734278928246E-4
-/*55*/ , 65536*16* -3.0020331327926296E-4
-/*56*/ , 65536*16* -3.352268879856044E-4
-/*57*/ , 65536*16* -3.700260022275662E-4
-/*58*/ , 65536*16* -4.045571559416333E-4
-/*59*/ , 65536*16* -4.38534577720557E-4
-/*60*/ , 65536*16* -4.718927645081437E-4
-/*61*/ , 65536*16* -5.043317033789757E-4
-/*62*/ , 65536*16* -5.357994753678582E-4
-/*63*/ , 65536*16* -5.659671580788766E-4
-/*64*/ , 65536*16* -5.947897013020397E-4
-/*65*/ , 65536*16* -6.219384666963997E-4
-/*66*/ , 65536*16* -6.473787936195385E-4
-/*67*/ , 65536*16* -6.707514595741775E-4
-/*68*/ , 65536*16* -6.920680579893526E-4
-/*69*/ , 65536*16* -7.109402066802999E-4
-/*70*/ , 65536*16* -7.274298271538291E-4
-/*71*/ , 65536*16* -7.411375648954899E-4
-/*72*/ , 65536*16* -7.520788343347275E-4
-/*73*/ , 65536*16* -7.600510659768832E-4
-/*74*/ , 65536*16* -7.647430899316486E-4
-/*75*/ , 65536*16* -7.664294191482773E-4
-/*76*/ , 65536*16* -7.644147173692687E-4
-/*77*/ , 65536*16* -7.590920613362674E-4
-/*78*/ , 65536*16* -7.501459543641885E-4
-/*79*/ , 65536*16* -7.373621082253133E-4
-/*80*/ , 65536*16* -7.208964561671388E-4
-/*81*/ , 65536*16* -7.006901755632023E-4
-/*82*/ , 65536*16* -6.764591748580997E-4
-/*83*/ , 65536*16* -6.483697284795448E-4
-/*84*/ , 65536*16* -6.164929718400197E-4
-/*85*/ , 65536*16* -5.806918766677904E-4
-/*86*/ , 65536*16* -5.409344735839229E-4
-/*87*/ , 65536*16* -4.97405373620265E-4
-/*88*/ , 65536*16* -4.502086002815554E-4
-/*89*/ , 65536*16* -3.9932330033988294E-4
-/*90*/ , 65536*16* -3.448028565721092E-4
-/*91*/ , 65536*16* -2.8685420307046736E-4
-/*92*/ , 65536*16* -2.256958038579715E-4
-/*93*/ , 65536*16* -1.615040528190604E-4
-/*94*/ , 65536*16* -9.438524808984473E-5
-/*95*/ , 65536*16* -2.4519303584370608E-5
-/*96*/ , 65536*16* 4.786961616483501E-5
-/*97*/ , 65536*16* 1.2248011782462745E-4
-/*98*/ , 65536*16* 1.990534978611127E-4
-/*99*/ , 65536*16* 2.7728245405517893E-4
-/*100*/ , 65536*16* 3.5690342407690407E-4
-/*101*/ , 65536*16* 4.376002679601721E-4
-/*102*/ , 65536*16* 5.19047629492113E-4
-/*103*/ , 65536*16* 6.008846564336277E-4
-/*104*/ , 65536*16* 6.827617063818499E-4
-/*105*/ , 65536*16* 7.643160551093983E-4
-/*106*/ , 65536*16* 8.451272011819538E-4
-/*107*/ , 65536*16* 9.248890776355356E-4
-/*108*/ , 65536*16* 0.001003072355955673
-/*109*/ , 65536*16* 0.0010794672777372975
-/*110*/ , 65536*16* 0.0011534276232606116
-/*111*/ , 65536*16* 0.0012247823207262698
-/*112*/ , 65536*16* 0.0012929541324917778
-/*113*/ , 65536*16* 0.001357585199795128
-/*114*/ , 65536*16* 0.001418338397346014
-/*115*/ , 65536*16* 0.0014746734285279383
-/*116*/ , 65536*16* 0.0015262884930771822
-/*117*/ , 65536*16* 0.0015728226550844923
-/*118*/ , 65536*16* 0.00161379655898045
-/*119*/ , 65536*16* 0.001648915948444658
-/*120*/ , 65536*16* 0.0016778840108713717
-/*121*/ , 65536*16* 0.0017002560629258679
-/*122*/ , 65536*16* 0.0017157641984855009
-/*123*/ , 65536*16* 0.0017241805985007432
-/*124*/ , 65536*16* 0.001725182645995729
-/*125*/ , 65536*16* 0.0017184841648036691
-/*126*/ , 65536*16* 0.0017039216808435336
-/*127*/ , 65536*16* 0.001681334520841587
-/*128*/ , 65536*16* 0.0016504918660173195
-/*129*/ , 65536*16* 0.0016112687597971862
-/*130*/ , 65536*16* 0.0015636063248128528
-/*131*/ , 65536*16* 0.0015074624593932396
-/*132*/ , 65536*16* 0.0014427699009003175
-/*133*/ , 65536*16* 0.001369527394628539
-/*134*/ , 65536*16* 0.0012878043567412672
-/*135*/ , 65536*16* 0.0011977101442406943
-/*136*/ , 65536*16* 0.0010993686954177168
-/*137*/ , 65536*16* 9.928872878864818E-4
-/*138*/ , 65536*16* 8.784941174786496E-4
-/*139*/ , 65536*16* 7.564288883294911E-4
-/*140*/ , 65536*16* 6.270372159510238E-4
-/*141*/ , 65536*16* 4.905983779660314E-4
-/*142*/ , 65536*16* 3.4754116793679786E-4
-/*143*/ , 65536*16* 1.9816162887093084E-4
-/*144*/ , 65536*16* 4.300342678121075E-5
-/*145*/ , 65536*16* -1.1751370467978956E-4
-/*146*/ , 65536*16* -2.8280605795854083E-4
-/*147*/ , 65536*16* -4.523173545514795E-4
-/*148*/ , 65536*16* -6.255041797790695E-4
-/*149*/ , 65536*16* -8.016355996557292E-4
-/*150*/ , 65536*16* -9.801573426762404E-4
-/*151*/ , 65536*16* -0.0011602954820678437
-/*152*/ , 65536*16* -0.001341343986206184
-/*153*/ , 65536*16* -0.001522571621631356
-/*154*/ , 65536*16* -0.001703172768158951
-/*155*/ , 65536*16* -0.0018823360844618293
-/*156*/ , 65536*16* -0.00205930337901632
-/*157*/ , 65536*16* -0.0022331579230920632
-/*158*/ , 65536*16* -0.002403069015327
-/*159*/ , 65536*16* -0.0025682175666884455
-/*160*/ , 65536*16* -0.002727682820990084
-/*161*/ , 65536*16* -0.002880584481539458
-/*162*/ , 65536*16* -0.003026077683940661
-/*163*/ , 65536*16* -0.00316326704154516
-/*164*/ , 65536*16* -0.003291235176827385
-/*165*/ , 65536*16* -0.0034091436232751705
-/*166*/ , 65536*16* -0.0035161624262765347
-/*167*/ , 65536*16* -0.00361139707788214
-/*168*/ , 65536*16* -0.0036940241232429707
-/*169*/ , 65536*16* -0.003763249197925811
-/*170*/ , 65536*16* -0.0038183138554794805
-/*171*/ , 65536*16* -0.003858413648517434
-/*172*/ , 65536*16* -0.0038828565696081884
-/*173*/ , 65536*16* -0.0038909308779192654
-/*174*/ , 65536*16* -0.0038820231307916493
-/*175*/ , 65536*16* -0.0038554750792844325
-/*176*/ , 65536*16* -0.003810737282493679
-/*177*/ , 65536*16* -0.003747262375484652
-/*178*/ , 65536*16* -0.0036646285078894706
-/*179*/ , 65536*16* -0.0035623728689170597
-/*180*/ , 65536*16* -0.0034401218523635543
-/*181*/ , 65536*16* -0.003297594128579178
-/*182*/ , 65536*16* -0.0031344918897463427
-/*183*/ , 65536*16* -0.0029506999116335536
-/*184*/ , 65536*16* -0.002746012743503227
-/*185*/ , 65536*16* -0.0025204082871514897
-/*186*/ , 65536*16* -0.0022738407863853822
-/*187*/ , 65536*16* -0.0020063873037173175
-/*188*/ , 65536*16* -0.0017182175415557032
-/*189*/ , 65536*16* -0.0014095092681882975
-/*190*/ , 65536*16* -0.0010805220633352567
-/*191*/ , 65536*16* -7.316077716348434E-4
-/*192*/ , 65536*16* -3.631468249678417E-4
-/*193*/ , 65536*16* 2.438177178474359E-5
-/*194*/ , 65536*16* 4.3040711526763105E-4
-/*195*/ , 65536*16* 8.543758511240976E-4
-/*196*/ , 65536*16* 0.0012955688715509065
-/*197*/ , 65536*16* 0.0017532574138845757
-/*198*/ , 65536*16* 0.0022266720975588176
-/*199*/ , 65536*16* 0.0027149312534676365
-/*200*/ , 65536*16* 0.003217102703811305
-/*201*/ , 65536*16* 0.0037322302087511496
-/*202*/ , 65536*16* 0.004259307964559864
-/*203*/ , 65536*16* 0.004797205731205993
-/*204*/ , 65536*16* 0.00534482556712745
-/*205*/ , 65536*16* 0.00590099232932727
-/*206*/ , 65536*16* 0.0064644836497811
-/*207*/ , 65536*16* 0.007034017389280477
-/*208*/ , 65536*16* 0.007608353016621833
-/*209*/ , 65536*16* 0.008186157965561618
-/*210*/ , 65536*16* 0.008766068964147668
-/*211*/ , 65536*16* 0.009346716260147759
-/*212*/ , 65536*16* 0.009926718862388615
-/*213*/ , 65536*16* 0.010504681043184161
-/*214*/ , 65536*16* 0.01107917387309342
-/*215*/ , 65536*16* 0.011648797102049465
-/*216*/ , 65536*16* 0.012212089485935572
-/*217*/ , 65536*16* 0.012767702033610684
-/*218*/ , 65536*16* 0.01331416222058608
-/*219*/ , 65536*16* 0.013850107485964188
-/*220*/ , 65536*16* 0.01437415626494087
-/*221*/ , 65536*16* 0.01488494484218882
-/*222*/ , 65536*16* 0.015381157046388828
-/*223*/ , 65536*16* 0.015861470914555698
-/*224*/ , 65536*16* 0.016324639468324405
-/*225*/ , 65536*16* 0.01676942738258265
-/*226*/ , 65536*16* 0.017194657140859698
-/*227*/ , 65536*16* 0.01759919326505855
-/*228*/ , 65536*16* 0.01798195744932672
-/*229*/ , 65536*16* 0.018341882104229386
-/*230*/ , 65536*16* 0.018678046774501487
-/*231*/ , 65536*16* 0.018989525183852277
-/*232*/ , 65536*16* 0.019275463483745325
-/*233*/ , 65536*16* 0.019535099985330217
-/*234*/ , 65536*16* 0.019767681230128092
-/*235*/ , 65536*16* 0.019972616359274192
-/*236*/ , 65536*16* 0.02014933369102741
-/*237*/ , 65536*16* 0.020297350637687013
-/*238*/ , 65536*16* 0.020416241350314838
-/*239*/ , 65536*16* 0.020505719050281913
-/*240*/ , 65536*16* 0.020565502954380747
-/*241*/ , 65536*16* 0.02059542406883178
-};
-
-
-/* 44100 NTSC
-
-Parks-McClellan FIR Filter Design
-
-Filter type: Low pass
-Passband: 0 - 0.006695
-Order: 483
-Passband ripple: 0.2 dB
-Transition band: 0.005625
-Stopband attenuation: 66.4 dB
-
-Coefficients:
-*/
-
-static int32 C44100NTSC[NCOEFFS/2]=
-{
-/*0*/ 65536 *16 * 2.7250584077004043E-4
-/*1*/, 65536 *16 * -5.6651407794062126E-5
-/*2*/, 65536 *16 * -5.387595203270082E-5
-/*3*/, 65536 *16 * -5.3104114528112036E-5
-/*4*/, 65536 *16 * -5.3927905431407917E-5
-/*5*/, 65536 *16 * -5.624810531844495E-5
-/*6*/, 65536 *16 * -5.9753966587005594E-5
-/*7*/, 65536 *16 * -6.443298022976466E-5
-/*8*/, 65536 *16 * -7.002861393823279E-5
-/*9*/, 65536 *16 * -7.658937335809571E-5
-/*10*/, 65536 *16 * -8.388337472693157E-5
-/*11*/, 65536 *16 * -9.20081628039712E-5
-/*12*/, 65536 *16 * -1.007311169050114E-4
-/*13*/, 65536 *16 * -1.1019992230503533E-4
-/*14*/, 65536 *16 * -1.2014773803429516E-4
-/*15*/, 65536 *16 * -1.3080398984366903E-4
-/*16*/, 65536 *16 * -1.4175865072457003E-4
-/*17*/, 65536 *16 * -1.536527853404198E-4
-/*18*/, 65536 *16 * -1.6517054562524376E-4
-/*19*/, 65536 *16 * -1.7797585116596963E-4
-/*20*/, 65536 *16 * -1.909845496405445E-4
-/*21*/, 65536 *16 * -2.0389566936141008E-4
-/*22*/, 65536 *16 * -2.1726846302640957E-4
-/*23*/, 65536 *16 * -2.310008165840215E-4
-/*24*/, 65536 *16 * -2.4506881863360544E-4
-/*25*/, 65536 *16 * -2.5926465655995895E-4
-/*26*/, 65536 *16 * -2.735381275272462E-4
-/*27*/, 65536 *16 * -2.878190904612406E-4
-/*28*/, 65536 *16 * -3.0209388781875723E-4
-/*29*/, 65536 *16 * -3.163448868528516E-4
-/*30*/, 65536 *16 * -3.30514980542584E-4
-/*31*/, 65536 *16 * -3.4458721564408845E-4
-/*32*/, 65536 *16 * -3.5843761692424506E-4
-/*33*/, 65536 *16 * -3.720823326733447E-4
-/*34*/, 65536 *16 * -3.8529611278848583E-4
-/*35*/, 65536 *16 * -3.982435971141635E-4
-/*36*/, 65536 *16 * -4.1054225307421383E-4
-/*37*/, 65536 *16 * -4.223385042208698E-4
-/*38*/, 65536 *16 * -4.3363210365443626E-4
-/*39*/, 65536 *16 * -4.440451096331875E-4
-/*40*/, 65536 *16 * -4.537334227294333E-4
-/*41*/, 65536 *16 * -4.6260960194346025E-4
-/*42*/, 65536 *16 * -4.706224417116799E-4
-/*43*/, 65536 *16 * -4.776010427698281E-4
-/*44*/, 65536 *16 * -4.8350610346281614E-4
-/*45*/, 65536 *16 * -4.8826489934975626E-4
-/*46*/, 65536 *16 * -4.918511387810396E-4
-/*47*/, 65536 *16 * -4.941839548845786E-4
-/*48*/, 65536 *16 * -4.95186572618022E-4
-/*49*/, 65536 *16 * -4.947817087436606E-4
-/*50*/, 65536 *16 * -4.928828353341973E-4
-/*51*/, 65536 *16 * -4.894676199661217E-4
-/*52*/, 65536 *16 * -4.8443244774343773E-4
-/*53*/, 65536 *16 * -4.778002134883142E-4
-/*54*/, 65536 *16 * -4.694896704084311E-4
-/*55*/, 65536 *16 * -4.593928438902496E-4
-/*56*/, 65536 *16 * -4.4763586771533415E-4
-/*57*/, 65536 *16 * -4.3399559196764174E-4
-/*58*/, 65536 *16 * -4.185187519793231E-4
-/*59*/, 65536 *16 * -4.0118338859945383E-4
-/*60*/, 65536 *16 * -3.820043675631783E-4
-/*61*/, 65536 *16 * -3.6090543967085524E-4
-/*62*/, 65536 *16 * -3.379128204177913E-4
-/*63*/, 65536 *16 * -3.130247503897743E-4
-/*64*/, 65536 *16 * -2.8628759491904673E-4
-/*65*/, 65536 *16 * -2.5769205396918157E-4
-/*66*/, 65536 *16 * -2.2726228845123853E-4
-/*67*/, 65536 *16 * -1.9501222414998665E-4
-/*68*/, 65536 *16 * -1.609903786128509E-4
-/*69*/, 65536 *16 * -1.2525258280646142E-4
-/*70*/, 65536 *16 * -8.786088130641809E-5
-/*71*/, 65536 *16 * -4.885883411475722E-5
-/*72*/, 65536 *16 * -8.373566315346232E-6
-/*73*/, 65536 *16 * 3.362843819360238E-5
-/*74*/, 65536 *16 * 7.69302822233031E-5
-/*75*/, 65536 *16 * 1.2151249228835434E-4
-/*76*/, 65536 *16 * 1.6724878315058612E-4
-/*77*/, 65536 *16 * 2.1402171363813576E-4
-/*78*/, 65536 *16 * 2.6167305946436103E-4
-/*79*/, 65536 *16 * 3.10122854445744E-4
-/*80*/, 65536 *16 * 3.5921866691687363E-4
-/*81*/, 65536 *16 * 4.0882826181233784E-4
-/*82*/, 65536 *16 * 4.5876834733749337E-4
-/*83*/, 65536 *16 * 5.089048509923103E-4
-/*84*/, 65536 *16 * 5.590621717784201E-4
-/*85*/, 65536 *16 * 6.090870406928206E-4
-/*86*/, 65536 *16 * 6.587768488216395E-4
-/*87*/, 65536 *16 * 7.079653533691067E-4
-/*88*/, 65536 *16 * 7.56434905175643E-4
-/*89*/, 65536 *16 * 8.040537989021466E-4
-/*90*/, 65536 *16 * 8.505576158388297E-4
-/*91*/, 65536 *16 * 8.958345533585908E-4
-/*92*/, 65536 *16 * 9.396170235698547E-4
-/*93*/, 65536 *16 * 9.817197600520506E-4
-/*94*/, 65536 *16 * 0.0010219440113723856
-/*95*/, 65536 *16 * 0.0010600976395277468
-/*96*/, 65536 *16 * 0.0010959465933076378
-/*97*/, 65536 *16 * 0.0011293213059753442
-/*98*/, 65536 *16 * 0.001160012212002378
-/*99*/, 65536 *16 * 0.0011878334518393636
-/*100*/, 65536 *16 * 0.0012125633172564833
-/*101*/, 65536 *16 * 0.0012340340153475305
-/*102*/, 65536 *16 * 0.0012520523486154733
-/*103*/, 65536 *16 * 0.001266464375255462
-/*104*/, 65536 *16 * 0.001277070934117742
-/*105*/, 65536 *16 * 0.0012837351142488396
-/*106*/, 65536 *16 * 0.0012862625405968798
-/*107*/, 65536 *16 * 0.0012845614834936406
-/*108*/, 65536 *16 * 0.0012784420593778636
-/*109*/, 65536 *16 * 0.0012678178114382621
-/*110*/, 65536 *16 * 0.0012525556826375537
-/*111*/, 65536 *16 * 0.0012325473943852084
-/*112*/, 65536 *16 * 0.0012077126268838676
-/*113*/, 65536 *16 * 0.0011779966448355029
-/*114*/, 65536 *16 * 0.0011433146771737655
-/*115*/, 65536 *16 * 0.0011036347058885887
-/*116*/, 65536 *16 * 0.0010589202139950945
-/*117*/, 65536 *16 * 0.0010091683044254098
-/*118*/, 65536 *16 * 9.543624468571229E-4
-/*119*/, 65536 *16 * 8.945398819399117E-4
-/*120*/, 65536 *16 * 8.297313883125644E-4
-/*121*/, 65536 *16 * 7.600155199968718E-4
-/*122*/, 65536 *16 * 6.854405952299358E-4
-/*123*/, 65536 *16 * 6.061236114458317E-4
-/*124*/, 65536 *16 * 5.221478191516476E-4
-/*125*/, 65536 *16 * 4.336813620599164E-4
-/*126*/, 65536 *16 * 3.408549526515998E-4
-/*127*/, 65536 *16 * 2.438450825114285E-4
-/*128*/, 65536 *16 * 1.428494911857926E-4
-/*129*/, 65536 *16 * 3.8067640594361634E-5
-/*130*/, 65536 *16 * -7.027035111775681E-5
-/*131*/, 65536 *16 * -1.818984143827126E-4
-/*132*/, 65536 *16 * -2.9656343184630157E-4
-/*133*/, 65536 *16 * -4.1397802421901906E-4
-/*134*/, 65536 *16 * -5.33838500742085E-4
-/*135*/, 65536 *16 * -6.558110253978588E-4
-/*136*/, 65536 *16 * -7.795655816897978E-4
-/*137*/, 65536 *16 * -9.047371821667003E-4
-/*138*/, 65536 *16 * -0.001030961345825847
-/*139*/, 65536 *16 * -0.0011578367988084777
-/*140*/, 65536 *16 * -0.0012849810572319298
-/*141*/, 65536 *16 * -0.0014119662266064482
-/*142*/, 65536 *16 * -0.0015383759515758101
-/*143*/, 65536 *16 * -0.001663756794188296
-/*144*/, 65536 *16 * -0.0017876541594460456
-/*145*/, 65536 *16 * -0.001909621722046808
-/*146*/, 65536 *16 * -0.0020291786719378088
-/*147*/, 65536 *16 * -0.002145855089743562
-/*148*/, 65536 *16 * -0.002259171910476534
-/*149*/, 65536 *16 * -0.0023686314802222655
-/*150*/, 65536 *16 * -0.002473745572697707
-/*151*/, 65536 *16 * -0.0025740277587192853
-/*152*/, 65536 *16 * -0.0026689831666099955
-/*153*/, 65536 *16 * -0.0027581124255643377
-/*154*/, 65536 *16 * -0.0028409282136656177
-/*155*/, 65536 *16 * -0.0029169432593640367
-/*156*/, 65536 *16 * -0.002985680612410139
-/*157*/, 65536 *16 * -0.003046658228485494
-/*158*/, 65536 *16 * -0.003099414222252269
-/*159*/, 65536 *16 * -0.0031434902530511595
-/*160*/, 65536 *16 * -0.003178436798255356
-/*161*/, 65536 *16 * -0.0032038260756887147
-/*162*/, 65536 *16 * -0.003219225355080285
-/*163*/, 65536 *16 * -0.0032242502222488744
-/*164*/, 65536 *16 * -0.003218506103318342
-/*165*/, 65536 *16 * -0.003201625222636992
-/*166*/, 65536 *16 * -0.003173259488065382
-/*167*/, 65536 *16 * -0.0031330803817718332
-/*168*/, 65536 *16 * -0.0030807779128908526
-/*169*/, 65536 *16 * -0.0030160821637947783
-/*170*/, 65536 *16 * -0.0029387362752889335
-/*171*/, 65536 *16 * -0.002848510131379585
-/*172*/, 65536 *16 * -0.0027451998188029363
-/*173*/, 65536 *16 * -0.00262863682904045
-/*174*/, 65536 *16 * -0.0024986780420415064
-/*175*/, 65536 *16 * -0.0023552114528323513
-/*176*/, 65536 *16 * -0.0021981491527779964
-/*177*/, 65536 *16 * -0.0020274504745732714
-/*178*/, 65536 *16 * -0.0018430877753141852
-/*179*/, 65536 *16 * -0.0016450910502005863
-/*180*/, 65536 *16 * -0.0014334955802048866
-/*181*/, 65536 *16 * -0.0012083983821827642
-/*182*/, 65536 *16 * -9.699135443572468E-4
-/*183*/, 65536 *16 * -7.181935207475589E-4
-/*184*/, 65536 *16 * -4.534224887286362E-4
-/*185*/, 65536 *16 * -1.758311300125605E-4
-/*186*/, 65536 *16 * 1.1433027008948132E-4
-/*187*/, 65536 *16 * 4.1675921199616097E-4
-/*188*/, 65536 *16 * 7.311320710094336E-4
-/*189*/, 65536 *16 * 0.0010570872458505827
-/*190*/, 65536 *16 * 0.0013942372682560795
-/*191*/, 65536 *16 * 0.001742148094642797
-/*192*/, 65536 *16 * 0.002100362793433286
-/*193*/, 65536 *16 * 0.0024683818857210646
-/*194*/, 65536 *16 * 0.002845695057494279
-/*195*/, 65536 *16 * 0.0032317385772924275
-/*196*/, 65536 *16 * 0.0036259433326630884
-/*197*/, 65536 *16 * 0.0040276894120370626
-/*198*/, 65536 *16 * 0.004436353627556968
-/*199*/, 65536 *16 * 0.004851271439526238
-/*200*/, 65536 *16 * 0.005271762758295799
-/*201*/, 65536 *16 * 0.005697120565601845
-/*202*/, 65536 *16 * 0.006126626859240469
-/*203*/, 65536 *16 * 0.006559527746778011
-/*204*/, 65536 *16 * 0.0069950693344747504
-/*205*/, 65536 *16 * 0.007432470090915211
-/*206*/, 65536 *16 * 0.007870944336430185
-/*207*/, 65536 *16 * 0.008309688701943495
-/*208*/, 65536 *16 * 0.008747898549370043
-/*209*/, 65536 *16 * 0.009184747205291654
-/*210*/, 65536 *16 * 0.009619414724898365
-/*211*/, 65536 *16 * 0.010051063453485451
-/*212*/, 65536 *16 * 0.010478876316671397
-/*213*/, 65536 *16 * 0.010902016899039163
-/*214*/, 65536 *16 * 0.011319665474466693
-/*215*/, 65536 *16 * 0.011730992134403782
-/*216*/, 65536 *16 * 0.012135186113163639
-/*217*/, 65536 *16 * 0.01253143889871197
-/*218*/, 65536 *16 * 0.012918956981226547
-/*219*/, 65536 *16 * 0.013296952886747157
-/*220*/, 65536 *16 * 0.013664665893392403
-/*221*/, 65536 *16 * 0.014021339353548561
-/*222*/, 65536 *16 * 0.014366244972764902
-/*223*/, 65536 *16 * 0.014698670942210527
-/*224*/, 65536 *16 * 0.015017930945351435
-/*225*/, 65536 *16 * 0.015323359168800435
-/*226*/, 65536 *16 * 0.015614322198635518
-/*227*/, 65536 *16 * 0.015890204972590742
-/*228*/, 65536 *16 * 0.016150433344740527
-/*229*/, 65536 *16 * 0.01639445378257351
-/*230*/, 65536 *16 * 0.016621758349582072
-/*231*/, 65536 *16 * 0.01683186471138077
-/*232*/, 65536 *16 * 0.01702432745775747
-/*233*/, 65536 *16 * 0.017198732908190056
-/*234*/, 65536 *16 * 0.017354710361561963
-/*235*/, 65536 *16 * 0.017491928210652433
-/*236*/, 65536 *16 * 0.017610096156964024
-/*237*/, 65536 *16 * 0.017708958417438553
-/*238*/, 65536 *16 * 0.017788304726419644
-/*239*/, 65536 *16 * 0.01784796484627723
-/*240*/, 65536 *16 * 0.017887808513528385
-/*241*/, 65536 *16 * 0.01790775243433271
-};
-
-/* 48000 PAL
-Parks-McClellan FIR Filter Design
-
-Filter type: Low pass
-Passband: 0 - 0.008810
-Order: 483
-Passband ripple: 0.133 dB
-Transition band: 0.005625
-Stopband attenuation: 63.0 dB
-
-Coefficients:
-*/
-static int32 C48000PAL[NCOEFFS/2]=
-{
-/*0*/ 65536 *16 * -4.8720337170268194E-4
-/*1*/, 65536 *16 * 7.629902642634879E-7
-/*2*/, 65536 *16 * 2.1378369687164975E-6
-/*3*/, 65536 *16 * 4.2506426520122444E-6
-/*4*/, 65536 *16 * 7.369889860416342E-6
-/*5*/, 65536 *16 * 1.1216062943011637E-5
-/*6*/, 65536 *16 * 1.6073843505677063E-5
-/*7*/, 65536 *16 * 2.1633099120040373E-5
-/*8*/, 65536 *16 * 2.8206508485377597E-5
-/*9*/, 65536 *16 * 3.543629776593455E-5
-/*10*/, 65536 *16 * 4.368764327716006E-5
-/*11*/, 65536 *16 * 5.2518982409171E-5
-/*12*/, 65536 *16 * 6.239757141317561E-5
-/*13*/, 65536 *16 * 7.27096511997309E-5
-/*14*/, 65536 *16 * 8.417180660805913E-5
-/*15*/, 65536 *16 * 9.556951705928003E-5
-/*16*/, 65536 *16 * 1.0902571193097876E-4
-/*17*/, 65536 *16 * 1.227237340685471E-4
-/*18*/, 65536 *16 * 1.3608963828565135E-4
-/*19*/, 65536 *16 * 1.5074291732163737E-4
-/*20*/, 65536 *16 * 1.654957671774518E-4
-/*21*/, 65536 *16 * 1.8094544537755017E-4
-/*22*/, 65536 *16 * 1.9650254639058925E-4
-/*23*/, 65536 *16 * 2.124977005396817E-4
-/*24*/, 65536 *16 * 2.2850169154416925E-4
-/*25*/, 65536 *16 * 2.447269340662641E-4
-/*26*/, 65536 *16 * 2.60813097374866E-4
-/*27*/, 65536 *16 * 2.769089011403406E-4
-/*28*/, 65536 *16 * 2.926838284872595E-4
-/*29*/, 65536 *16 * 3.082587328683191E-4
-/*30*/, 65536 *16 * 3.233018169377691E-4
-/*31*/, 65536 *16 * 3.379664790017549E-4
-/*32*/, 65536 *16 * 3.520147829064225E-4
-/*33*/, 65536 *16 * 3.6489502104188965E-4
-/*34*/, 65536 *16 * 3.771837837785839E-4
-/*35*/, 65536 *16 * 3.8841744550992556E-4
-/*36*/, 65536 *16 * 3.985152578693797E-4
-/*37*/, 65536 *16 * 4.0737410559796126E-4
-/*38*/, 65536 *16 * 4.1485052511765913E-4
-/*39*/, 65536 *16 * 4.2087321591616255E-4
-/*40*/, 65536 *16 * 4.252880030529943E-4
-/*41*/, 65536 *16 * 4.2804175098790727E-4
-/*42*/, 65536 *16 * 4.289792011350111E-4
-/*43*/, 65536 *16 * 4.280677040429387E-4
-/*44*/, 65536 *16 * 4.251526022872329E-4
-/*45*/, 65536 *16 * 4.202312572840644E-4
-/*46*/, 65536 *16 * 4.1313629237647344E-4
-/*47*/, 65536 *16 * 4.0393669855985745E-4
-/*48*/, 65536 *16 * 3.9229544134295797E-4
-/*49*/, 65536 *16 * 3.785081882385653E-4
-/*50*/, 65536 *16 * 3.624387298611128E-4
-/*51*/, 65536 *16 * 3.439609793120755E-4
-/*52*/, 65536 *16 * 3.2317107312926493E-4
-/*53*/, 65536 *16 * 3.0001522643985015E-4
-/*54*/, 65536 *16 * 2.7456037312211196E-4
-/*55*/, 65536 *16 * 2.468022375847908E-4
-/*56*/, 65536 *16 * 2.1682011116032351E-4
-/*57*/, 65536 *16 * 1.846463359087917E-4
-/*58*/, 65536 *16 * 1.5038519581308458E-4
-/*59*/, 65536 *16 * 1.1409999503195986E-4
-/*60*/, 65536 *16 * 7.592602477010921E-5
-/*61*/, 65536 *16 * 3.594949037485983E-5
-/*62*/, 65536 *16 * -5.654205953473915E-6
-/*63*/, 65536 *16 * -4.8796158887641113E-5
-/*64*/, 65536 *16 * -9.324450907374415E-5
-/*65*/, 65536 *16 * -1.3875102646747199E-4
-/*66*/, 65536 *16 * -1.853099936736042E-4
-/*67*/, 65536 *16 * -2.3256519878196182E-4
-/*68*/, 65536 *16 * -2.803629983423417E-4
-/*69*/, 65536 *16 * -3.284299717573991E-4
-/*70*/, 65536 *16 * -3.7655572805983734E-4
-/*71*/, 65536 *16 * -4.244648731259925E-4
-/*72*/, 65536 *16 * -4.7191652130487173E-4
-/*73*/, 65536 *16 * -5.18626812434502E-4
-/*74*/, 65536 *16 * -5.64334322901072E-4
-/*75*/, 65536 *16 * -6.087503654593899E-4
-/*76*/, 65536 *16 * -6.515995849807032E-4
-/*77*/, 65536 *16 * -6.925935510204477E-4
-/*78*/, 65536 *16 * -7.314432865833455E-4
-/*79*/, 65536 *16 * -7.678735923848921E-4
-/*80*/, 65536 *16 * -8.015359919770463E-4
-/*81*/, 65536 *16 * -8.322768680565776E-4
-/*82*/, 65536 *16 * -8.597539203190856E-4
-/*83*/, 65536 *16 * -8.836879776280238E-4
-/*84*/, 65536 *16 * -9.038629010388075E-4
-/*85*/, 65536 *16 * -9.200080217158554E-4
-/*86*/, 65536 *16 * -9.319235257639778E-4
-/*87*/, 65536 *16 * -9.393690949611698E-4
-/*88*/, 65536 *16 * -9.421725179420662E-4
-/*89*/, 65536 *16 * -9.401299048871544E-4
-/*90*/, 65536 *16 * -9.33106896645869E-4
-/*91*/, 65536 *16 * -9.209400636174311E-4
-/*92*/, 65536 *16 * -9.035401279622776E-4
-/*93*/, 65536 *16 * -8.807854817776823E-4
-/*94*/, 65536 *16 * -8.526430615286829E-4
-/*95*/, 65536 *16 * -8.190296190822509E-4
-/*96*/, 65536 *16 * -7.799980167439345E-4
-/*97*/, 65536 *16 * -7.355478199155667E-4
-/*98*/, 65536 *16 * -6.8567697874281E-4
-/*99*/, 65536 *16 * -6.305240657493408E-4
-/*100*/, 65536 *16 * -5.701694385732142E-4
-/*101*/, 65536 *16 * -5.047740591296687E-4
-/*102*/, 65536 *16 * -4.344980221283718E-4
-/*103*/, 65536 *16 * -3.595556715693896E-4
-/*104*/, 65536 *16 * -2.8017864491759883E-4
-/*105*/, 65536 *16 * -1.9664106446578853E-4
-/*106*/, 65536 *16 * -1.0924056590418239E-4
-/*107*/, 65536 *16 * -1.831009861307028E-5
-/*108*/, 65536 *16 * 7.579029921420169E-5
-/*109*/, 65536 *16 * 1.726696848384902E-4
-/*110*/, 65536 *16 * 2.719067221880469E-4
-/*111*/, 65536 *16 * 3.7305728261123155E-4
-/*112*/, 65536 *16 * 4.7562651195605295E-4
-/*113*/, 65536 *16 * 5.791888527128953E-4
-/*114*/, 65536 *16 * 6.831673135667645E-4
-/*115*/, 65536 *16 * 7.870493762901182E-4
-/*116*/, 65536 *16 * 8.902822670362451E-4
-/*117*/, 65536 *16 * 9.923024258505538E-4
-/*118*/, 65536 *16 * 0.0010925350458368308
-/*119*/, 65536 *16 * 0.0011903898503065698
-/*120*/, 65536 *16 * 0.0012852771482304163
-/*121*/, 65536 *16 * 0.0013765956662458894
-/*122*/, 65536 *16 * 0.001463753120426749
-/*123*/, 65536 *16 * 0.001546148019165285
-/*124*/, 65536 *16 * 0.0016231971391851225
-/*125*/, 65536 *16 * 0.0016943089588603764
-/*126*/, 65536 *16 * 0.0017589264521182184
-/*127*/, 65536 *16 * 0.001816477825843157
-/*128*/, 65536 *16 * 0.001866465750234791
-/*129*/, 65536 *16 * 0.001908351881851273
-/*130*/, 65536 *16 * 0.0019416355874888774
-/*131*/, 65536 *16 * 0.0019658912100497094
-/*132*/, 65536 *16 * 0.0019806705540431754
-/*133*/, 65536 *16 * 0.001985602463070219
-/*134*/, 65536 *16 * 0.0019803173347810094
-/*135*/, 65536 *16 * 0.001964518487218229
-/*136*/, 65536 *16 * 0.00193792749109128
-/*137*/, 65536 *16 * 0.0019003361153152295
-/*138*/, 65536 *16 * 0.0018515636696845045
-/*139*/, 65536 *16 * 0.0017915008584460717
-/*140*/, 65536 *16 * 0.0017200735452676211
-/*141*/, 65536 *16 * 0.0016372830430278298
-/*142*/, 65536 *16 * 0.0015431709906056357
-/*143*/, 65536 *16 * 0.0014378573929982352
-/*144*/, 65536 *16 * 0.0013215084987890104
-/*145*/, 65536 *16 * 0.001194328283068528
-/*146*/, 65536 *16 * 0.0010566468386934231
-/*147*/, 65536 *16 * 9.088002025373218E-4
-/*148*/, 65536 *16 * 7.512135584215806E-4
-/*149*/, 65536 *16 * 5.843621536328689E-4
-/*150*/, 65536 *16 * 4.087894375795271E-4
-/*151*/, 65536 *16 * 2.2510227575334467E-4
-/*152*/, 65536 *16 * 3.396239791846655E-5
-/*153*/, 65536 *16 * -1.6390294871759475E-4
-/*154*/, 65536 *16 * -3.6771789280231503E-4
-/*155*/, 65536 *16 * -5.766405458635558E-4
-/*156*/, 65536 *16 * -7.897872933737203E-4
-/*157*/, 65536 *16 * -0.001006209757480115
-/*158*/, 65536 *16 * -0.0012249304977170316
-/*159*/, 65536 *16 * -0.0014449054341312839
-/*160*/, 65536 *16 * -0.0016650898600315796
-/*161*/, 65536 *16 * -0.001884343774622382
-/*162*/, 65536 *16 * -0.0021015342465919864
-/*163*/, 65536 *16 * -0.0023154975831354337
-/*164*/, 65536 *16 * -0.0025250324219407566
-/*165*/, 65536 *16 * -0.0027289312457094736
-/*166*/, 65536 *16 * -0.0029259546931934967
-/*167*/, 65536 *16 * -0.003114871201398419
-/*168*/, 65536 *16 * -0.003294430723892981
-/*169*/, 65536 *16 * -0.003463396424710959
-/*170*/, 65536 *16 * -0.003620525188769811
-/*171*/, 65536 *16 * -0.0037645967189351955
-/*172*/, 65536 *16 * -0.003894396916361478
-/*173*/, 65536 *16 * -0.00400874728567525
-/*174*/, 65536 *16 * -0.004106485394068385
-/*175*/, 65536 *16 * -0.004186497692846864
-/*176*/, 65536 *16 * -0.004247692032125654
-/*177*/, 65536 *16 * -0.004289020763525844
-/*178*/, 65536 *16 * -0.0043095197889136795
-/*179*/, 65536 *16 * -0.004308238489219152
-/*180*/, 65536 *16 * -0.004284317631022625
-/*181*/, 65536 *16 * -0.0042369380515990835
-/*182*/, 65536 *16 * -0.004165372803509635
-/*183*/, 65536 *16 * -0.004068956516951112
-/*184*/, 65536 *16 * -0.003947110543306579
-/*185*/, 65536 *16 * -0.003799332887739826
-/*186*/, 65536 *16 * -0.0036252122359255057
-/*187*/, 65536 *16 * -0.0034244255727248728
-/*188*/, 65536 *16 * -0.0031967441992062605
-/*189*/, 65536 *16 * -0.0029420359603045624
-/*190*/, 65536 *16 * -0.002660262473612329
-/*191*/, 65536 *16 * -0.0023514913391939015
-/*192*/, 65536 *16 * -0.002015874218170038
-/*193*/, 65536 *16 * -0.0016537021922741356
-/*194*/, 65536 *16 * -0.0012653326032471951
-/*195*/, 65536 *16 * -8.512425489658283E-4
-/*196*/, 65536 *16 * -4.12008134196091E-4
-/*197*/, 65536 *16 * 5.169160678832697E-5
-/*198*/, 65536 *16 * 5.3906734093252E-4
-/*199*/, 65536 *16 * 0.0010492444783799305
-/*200*/, 65536 *16 * 0.0015812369440962736
-/*201*/, 65536 *16 * 0.002133975437656693
-/*202*/, 65536 *16 * 0.002706284295633396
-/*203*/, 65536 *16 * 0.003296910987472264
-/*204*/, 65536 *16 * 0.0039045040922850343
-/*205*/, 65536 *16 * 0.004527645156076457
-/*206*/, 65536 *16 * 0.005164822580527953
-/*207*/, 65536 *16 * 0.00581446977998051
-/*208*/, 65536 *16 * 0.00647492818678252
-/*209*/, 65536 *16 * 0.007144495527005753
-/*210*/, 65536 *16 * 0.007821417135435386
-/*211*/, 65536 *16 * 0.008503870707064397
-/*212*/, 65536 *16 * 0.00919000676302643
-/*213*/, 65536 *16 * 0.009877917856582038
-/*214*/, 65536 *16 * 0.010565689475867907
-/*215*/, 65536 *16 * 0.011251366750588049
-/*216*/, 65536 *16 * 0.01193298816023733
-/*217*/, 65536 *16 * 0.012608574497468706
-/*218*/, 65536 *16 * 0.013276151008399953
-/*219*/, 65536 *16 * 0.013933744269275995
-/*220*/, 65536 *16 * 0.014579397589755912
-/*221*/, 65536 *16 * 0.015211171751139368
-/*222*/, 65536 *16 * 0.015827155422328678
-/*223*/, 65536 *16 * 0.01642547256780349
-/*224*/, 65536 *16 * 0.01700428326907068
-/*225*/, 65536 *16 * 0.017561819587529177
-/*226*/, 65536 *16 * 0.018096338432718698
-/*227*/, 65536 *16 * 0.018606183762999433
-/*228*/, 65536 *16 * 0.019089749497960648
-/*229*/, 65536 *16 * 0.019545523698532997
-/*230*/, 65536 *16 * 0.019972069058400564
-/*231*/, 65536 *16 * 0.02036803110561515
-/*232*/, 65536 *16 * 0.020732154475618856
-/*233*/, 65536 *16 * 0.021063275458886234
-/*234*/, 65536 *16 * 0.021360340738775345
-/*235*/, 65536 *16 * 0.02162239534537267
-/*236*/, 65536 *16 * 0.021848603142668337
-/*237*/, 65536 *16 * 0.02203823092181804
-/*238*/, 65536 *16 * 0.022190674411724294
-/*239*/, 65536 *16 * 0.022305434241445123
-/*240*/, 65536 *16 * 0.022382153728111424
-/*241*/, 65536 *16 * 0.022420574751016616
-};
-
-/* 44100 PAL
-Parks-McClellan FIR Filter Design
-
-Filter type: Low pass
-Passband: 0 - 0.0076373
-Order: 483
-Passband ripple: 0.1 dB
-Transition band: 0.005625
-Stopband attenuation: 60.5 dB
-
-Coefficients:
-*/
-static int32 C44100PAL[NCOEFFS/2]=
-{
-/*0*/ 65536 *16 * 5.793783958720019E-4
-/*1*/, 65536 *16 * 1.0571291666629312E-4
-/*2*/, 65536 *16 * 1.1459085882755871E-4
-/*3*/, 65536 *16 * 1.2371675029136968E-4
-/*4*/, 65536 *16 * 1.3275170325031607E-4
-/*5*/, 65536 *16 * 1.4207721167879995E-4
-/*6*/, 65536 *16 * 1.5130497600100568E-4
-/*7*/, 65536 *16 * 1.6077227873948047E-4
-/*8*/, 65536 *16 * 1.6990814771316866E-4
-/*9*/, 65536 *16 * 1.79005024990367E-4
-/*10*/, 65536 *16 * 1.8739246068939436E-4
-/*11*/, 65536 *16 * 1.9572039600801667E-4
-/*12*/, 65536 *16 * 2.0352846914404956E-4
-/*13*/, 65536 *16 * 2.1201116607443127E-4
-/*14*/, 65536 *16 * 2.188838839136502E-4
-/*15*/, 65536 *16 * 2.2495686284733203E-4
-/*16*/, 65536 *16 * 2.3149812422937834E-4
-/*17*/, 65536 *16 * 2.363635497444841E-4
-/*18*/, 65536 *16 * 2.410054979130104E-4
-/*19*/, 65536 *16 * 2.445286108284421E-4
-/*20*/, 65536 *16 * 2.474675828550653E-4
-/*21*/, 65536 *16 * 2.4934815214903343E-4
-/*22*/, 65536 *16 * 2.50372333906785E-4
-/*23*/, 65536 *16 * 2.501665763315339E-4
-/*24*/, 65536 *16 * 2.488750795254978E-4
-/*25*/, 65536 *16 * 2.4640153199411455E-4
-/*26*/, 65536 *16 * 2.428720291968876E-4
-/*27*/, 65536 *16 * 2.3801309032826844E-4
-/*28*/, 65536 *16 * 2.3160240772113682E-4
-/*29*/, 65536 *16 * 2.2423402291517938E-4
-/*30*/, 65536 *16 * 2.152856501527123E-4
-/*31*/, 65536 *16 * 2.0488674543318888E-4
-/*32*/, 65536 *16 * 1.9317919544163198E-4
-/*33*/, 65536 *16 * 1.7994016398005858E-4
-/*34*/, 65536 *16 * 1.6541109383681028E-4
-/*35*/, 65536 *16 * 1.4938382649739635E-4
-/*36*/, 65536 *16 * 1.3200975730094075E-4
-/*37*/, 65536 *16 * 1.1313240842725184E-4
-/*38*/, 65536 *16 * 9.296992728984174E-5
-/*39*/, 65536 *16 * 7.143010735440594E-5
-/*40*/, 65536 *16 * 4.8632764324109725E-5
-/*41*/, 65536 *16 * 2.443073549738759E-5
-/*42*/, 65536 *16 * -8.284349612349981E-7
-/*43*/, 65536 *16 * -2.7227387247375577E-5
-/*44*/, 65536 *16 * -5.4818038895146106E-5
-/*45*/, 65536 *16 * -8.330005435111118E-5
-/*46*/, 65536 *16 * -1.1275737974091186E-4
-/*47*/, 65536 *16 * -1.4298620796919756E-4
-/*48*/, 65536 *16 * -1.7390785487074508E-4
-/*49*/, 65536 *16 * -2.054308580401118E-4
-/*50*/, 65536 *16 * -2.37415521983132E-4
-/*51*/, 65536 *16 * -2.697456782629617E-4
-/*52*/, 65536 *16 * -3.022375619849705E-4
-/*53*/, 65536 *16 * -3.348339660959209E-4
-/*54*/, 65536 *16 * -3.673583086741243E-4
-/*55*/, 65536 *16 * -3.996554197363865E-4
-/*56*/, 65536 *16 * -4.3147108191834185E-4
-/*57*/, 65536 *16 * -4.6285023012872966E-4
-/*58*/, 65536 *16 * -4.934440989261961E-4
-/*59*/, 65536 *16 * -5.231720978150925E-4
-/*60*/, 65536 *16 * -5.518656107257292E-4
-/*61*/, 65536 *16 * -5.793049560550073E-4
-/*62*/, 65536 *16 * -6.053792205725333E-4
-/*63*/, 65536 *16 * -6.298765704841736E-4
-/*64*/, 65536 *16 * -6.526402738994988E-4
-/*65*/, 65536 *16 * -6.734722964365358E-4
-/*66*/, 65536 *16 * -6.922485843472661E-4
-/*67*/, 65536 *16 * -7.088111930758961E-4
-/*68*/, 65536 *16 * -7.229789042068006E-4
-/*69*/, 65536 *16 * -7.34572975483669E-4
-/*70*/, 65536 *16 * -7.435049180176613E-4
-/*71*/, 65536 *16 * -7.496258178311876E-4
-/*72*/, 65536 *16 * -7.527294926570751E-4
-/*73*/, 65536 *16 * -7.528075552986548E-4
-/*74*/, 65536 *16 * -7.496410435428715E-4
-/*75*/, 65536 *16 * -7.432054606042111E-4
-/*76*/, 65536 *16 * -7.33375741493331E-4
-/*77*/, 65536 *16 * -7.200753858529672E-4
-/*78*/, 65536 *16 * -7.03226653737734E-4
-/*79*/, 65536 *16 * -6.827921676621563E-4
-/*80*/, 65536 *16 * -6.58752773848678E-4
-/*81*/, 65536 *16 * -6.31061807229375E-4
-/*82*/, 65536 *16 * -5.997124150992168E-4
-/*83*/, 65536 *16 * -5.647352645065657E-4
-/*84*/, 65536 *16 * -5.261799041455252E-4
-/*85*/, 65536 *16 * -4.8402880277824417E-4
-/*86*/, 65536 *16 * -4.3840329475572E-4
-/*87*/, 65536 *16 * -3.893672279202991E-4
-/*88*/, 65536 *16 * -3.37002579326518E-4
-/*89*/, 65536 *16 * -2.8148278838384204E-4
-/*90*/, 65536 *16 * -2.2288467365854118E-4
-/*91*/, 65536 *16 * -1.6140368454103024E-4
-/*92*/, 65536 *16 * -9.718648150744015E-5
-/*93*/, 65536 *16 * -3.046343268277719E-5
-/*94*/, 65536 *16 * 3.859234051837562E-5
-/*95*/, 65536 *16 * 1.0974328274324426E-4
-/*96*/, 65536 *16 * 1.8273974279995372E-4
-/*97*/, 65536 *16 * 2.5730055402762935E-4
-/*98*/, 65536 *16 * 3.3318458939353874E-4
-/*99*/, 65536 *16 * 4.100891270013777E-4
-/*100*/, 65536 *16 * 4.876860015464126E-4
-/*101*/, 65536 *16 * 5.657011755504638E-4
-/*102*/, 65536 *16 * 6.437547403393535E-4
-/*103*/, 65536 *16 * 7.215350856659516E-4
-/*104*/, 65536 *16 * 7.986901321007353E-4
-/*105*/, 65536 *16 * 8.748424228508639E-4
-/*106*/, 65536 *16 * 9.496338070297501E-4
-/*107*/, 65536 *16 * 0.0010226804298925178
-/*108*/, 65536 *16 * 0.001093633836878271
-/*109*/, 65536 *16 * 0.0011620773771650913
-/*110*/, 65536 *16 * 0.001227641045409496
-/*111*/, 65536 *16 * 0.0012899374110895208
-/*112*/, 65536 *16 * 0.001348607725415767
-/*113*/, 65536 *16 * 0.001403236086962171
-/*114*/, 65536 *16 * 0.0014534904370406968
-/*115*/, 65536 *16 * 0.0014989864777827345
-/*116*/, 65536 *16 * 0.0015393672007052272
-/*117*/, 65536 *16 * 0.0015743174329729173
-/*118*/, 65536 *16 * 0.0016034756800234508
-/*119*/, 65536 *16 * 0.0016265420570988364
-/*120*/, 65536 *16 * 0.0016432110467175217
-/*121*/, 65536 *16 * 0.0016532197970121178
-/*122*/, 65536 *16 * 0.0016562968359550962
-/*123*/, 65536 *16 * 0.0016521969919585549
-/*124*/, 65536 *16 * 0.001640721606064916
-/*125*/, 65536 *16 * 0.001621678045313759
-/*126*/, 65536 *16 * 0.0015948992297934834
-/*127*/, 65536 *16 * 0.0015602457924787695
-/*128*/, 65536 *16 * 0.0015176354451292787
-/*129*/, 65536 *16 * 0.0014669598890367775
-/*130*/, 65536 *16 * 0.001408218899058892
-/*131*/, 65536 *16 * 0.001341376545671481
-/*132*/, 65536 *16 * 0.0012664621369705463
-/*133*/, 65536 *16 * 0.0011835425953369801
-/*134*/, 65536 *16 * 0.0010927146027981068
-/*135*/, 65536 *16 * 9.941150953832762E-4
-/*136*/, 65536 *16 * 8.878982163088053E-4
-/*137*/, 65536 *16 * 7.742911468907501E-4
-/*138*/, 65536 *16 * 6.535350381595103E-4
-/*139*/, 65536 *16 * 5.259114487251054E-4
-/*140*/, 65536 *16 * 3.9173611703422796E-4
-/*141*/, 65536 *16 * 2.513813444320677E-4
-/*142*/, 65536 *16 * 1.0522988594595334E-4
-/*143*/, 65536 *16 * -4.627799877161863E-5
-/*144*/, 65536 *16 * -2.0266153878465397E-4
-/*145*/, 65536 *16 * -3.6344539072942917E-4
-/*146*/, 65536 *16 * -5.28061484912101E-4
-/*147*/, 65536 *16 * -6.959549845043866E-4
-/*148*/, 65536 *16 * -8.665108935058429E-4
-/*149*/, 65536 *16 * -0.0010391137133997624
-/*150*/, 65536 *16 * -0.001213088248571412
-/*151*/, 65536 *16 * -0.0013877438142645866
-/*152*/, 65536 *16 * -0.0015623746142961936
-/*153*/, 65536 *16 * -0.001736242850147973
-/*154*/, 65536 *16 * -0.0019085899496564314
-/*155*/, 65536 *16 * -0.002078639823528187
-/*156*/, 65536 *16 * -0.0022456104279907118
-/*157*/, 65536 *16 * -0.002408678368623706
-/*158*/, 65536 *16 * -0.002567052121352872
-/*159*/, 65536 *16 * -0.0027198956481072887
-/*160*/, 65536 *16 * -0.0028663750213148488
-/*161*/, 65536 *16 * -0.0030056713494924794
-/*162*/, 65536 *16 * -0.0031369487365098063
-/*163*/, 65536 *16 * -0.0032593909953083865
-/*164*/, 65536 *16 * -0.0033721594370116153
-/*165*/, 65536 *16 * -0.0034744643621211356
-/*166*/, 65536 *16 * -0.0035654990231207963
-/*167*/, 65536 *16 * -0.003644488024347632
-/*168*/, 65536 *16 * -0.0037106644342197828
-/*169*/, 65536 *16 * -0.0037632989436418352
-/*170*/, 65536 *16 * -0.00380166827783197
-/*171*/, 65536 *16 * -0.0038250950477227447
-/*172*/, 65536 *16 * -0.0038329329853570827
-/*173*/, 65536 *16 * -0.0038245430145814447
-/*174*/, 65536 *16 * -0.0037993625516763766
-/*175*/, 65536 *16 * -0.003756842883124589
-/*176*/, 65536 *16 * -0.0036964913119694686
-/*177*/, 65536 *16 * -0.0036178458358447655
-/*178*/, 65536 *16 * -0.00352050628243193
-/*179*/, 65536 *16 * -0.003404123578517079
-/*180*/, 65536 *16 * -0.003268383375473133
-/*181*/, 65536 *16 * -0.0031130454148921446
-/*182*/, 65536 *16 * -0.002937909773123352
-/*183*/, 65536 *16 * -0.0027428475146560275
-/*184*/, 65536 *16 * -0.0025277729297779944
-/*185*/, 65536 *16 * -0.0022926869206439508
-/*186*/, 65536 *16 * -0.0020376141174133374
-/*187*/, 65536 *16 * -0.0017626719756025908
-/*188*/, 65536 *16 * -0.0014680351622130402
-/*189*/, 65536 *16 * -0.0011539297872750212
-/*190*/, 65536 *16 * -8.206567501069872E-4
-/*191*/, 65536 *16 * -4.685710694984321E-4
-/*192*/, 65536 *16 * -9.811116382477182E-5
-/*193*/, 65536 *16 * 2.902488429495873E-4
-/*194*/, 65536 *16 * 6.959516881166062E-4
-/*195*/, 65536 *16 * 0.0011183883405789612
-/*196*/, 65536 *16 * 0.0015568865209671754
-/*197*/, 65536 *16 * 0.0020107155705137744
-/*198*/, 65536 *16 * 0.002479084293281152
-/*199*/, 65536 *16 * 0.002961149037985776
-/*200*/, 65536 *16 * 0.0034560223628435746
-/*201*/, 65536 *16 * 0.0039627343373741354
-/*202*/, 65536 *16 * 0.0044803036416812955
-/*203*/, 65536 *16 * 0.005007678185806692
-/*204*/, 65536 *16 * 0.00554377521563058
-/*205*/, 65536 *16 * 0.006087456836491167
-/*206*/, 65536 *16 * 0.006637561024809676
-/*207*/, 65536 *16 * 0.007192890398414245
-/*208*/, 65536 *16 * 0.0077522050201042055
-/*209*/, 65536 *16 * 0.008314254820045306
-/*210*/, 65536 *16 * 0.008877749982246051
-/*211*/, 65536 *16 * 0.009441393781470539
-/*212*/, 65536 *16 * 0.010003862886118781
-/*213*/, 65536 *16 * 0.01056383933598836
-/*214*/, 65536 *16 * 0.011119972235266088
-/*215*/, 65536 *16 * 0.011670924253482212
-/*216*/, 65536 *16 * 0.012215363764388693
-/*217*/, 65536 *16 * 0.012751945584822125
-/*218*/, 65536 *16 * 0.013279348664168343
-/*219*/, 65536 *16 * 0.013796251849197938
-/*220*/, 65536 *16 * 0.0143013718962506
-/*221*/, 65536 *16 * 0.014793420656675483
-/*222*/, 65536 *16 * 0.015271157641252524
-/*223*/, 65536 *16 * 0.015733358657288442
-/*224*/, 65536 *16 * 0.016178837288118402
-/*225*/, 65536 *16 * 0.016606446422463023
-/*226*/, 65536 *16 * 0.01701507865820779
-/*227*/, 65536 *16 * 0.017403671672970734
-/*228*/, 65536 *16 * 0.01777119975394863
-/*229*/, 65536 *16 * 0.018116717572056962
-/*230*/, 65536 *16 * 0.01843930362202181
-/*231*/, 65536 *16 * 0.01873811058717855
-/*232*/, 65536 *16 * 0.01901234584784063
-/*233*/, 65536 *16 * 0.019261287195027194
-/*234*/, 65536 *16 * 0.019484271195397335
-/*235*/, 65536 *16 * 0.0196806998422779
-/*236*/, 65536 *16 * 0.019850058102456474
-/*237*/, 65536 *16 * 0.019991882444368586
-/*238*/, 65536 *16 * 0.0201058042761605
-/*239*/, 65536 *16 * 0.02019151207246131
-/*240*/, 65536 *16 * 0.02024878178965319
-/*241*/, 65536 *16 * 0.020277449712345474
-};
+++ /dev/null
-/* FCE Ultra - NES/Famicom Emulator
- *
- * Copyright notice for this file:
- * Copyright (C) 2002 Xodnizel
- *
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <string.h>
-
-#include "types.h"
-#include "x6502.h"
-
-#include "fce.h"
-#include "sound.h"
-#include "filter098.h"
-#include "state.h"
-#include "svga.h"
-//#include "wave.h"
-
-static uint32 wlookup1[32];
-static uint32 wlookup2[203];
-
-int32 WaveHi[40000];
-//int32 WaveFinal[2048+512]; // TODO: use WaveFinalMono
-
-static uint8 TriCount=0;
-static uint8 TriMode=0;
-
-static int32 tristep=0;
-
-static int32 wlcount[4]={0,0,0,0}; /* Wave length counters. */
-
-static uint8 IRQFrameMode=0; /* $4017 / xx000000 */
-//static uint8 PSG[0x10];
-static uint8 RawDALatch=0; /* $4011 0xxxxxxx */
-
-static uint8 EnabledChannels=0; /* Byte written to $4015 */
-
-typedef struct {
- uint8 Speed;
- uint8 Mode; /* Fixed volume(1), and loop(2) */
- uint8 DecCountTo1;
- uint8 decvolume;
- int reloaddec;
-} ENVUNIT;
-
-static ENVUNIT EnvUnits[3];
-
-static const int RectDuties[4]={1,2,4,6};
-
-static int32 RectDutyCount[2];
-//static uint8 sweepon[2];
-//static int32 curfreq[2];
-//static uint8 SweepCount[2];
-
-//static uint16 nreg=0;
-
-//static uint8 fcnt=0;
-//static int32 fhcnt=0;
-//static int32 fhinc=0;
-
-/* Variables exclusively for low-quality sound. */
-static int32 sqacc[2];
-/* LQ variables segment ends. */
-
-static int32 lengthcount[4];
-static const uint8 lengthtable[0x20]=
-{
- 0x5*2,0x7f*2,0xA*2,0x1*2,0x14*2,0x2*2,0x28*2,0x3*2,0x50*2,0x4*2,0x1E*2,0x5*2,0x7*2,0x6*2,0x0E*2,0x7*2,
- 0x6*2,0x08*2,0xC*2,0x9*2,0x18*2,0xa*2,0x30*2,0xb*2,0x60*2,0xc*2,0x24*2,0xd*2,0x8*2,0xe*2,0x10*2,0xf*2
-};
-
-static const uint32 NoiseFreqTable[0x10]=
-{
- 2,4,8,0x10,0x20,0x30,0x40,0x50,0x65,0x7f,0xbe,0xfe,0x17d,0x1fc,0x3f9,0x7f2
-};
-
-static const uint32 NTSCDMCTable[0x10]=
-{
- 428,380,340,320,286,254,226,214,
- 190,160,142,128,106, 84 ,72,54
-};
-
-static const uint32 PALDMCTable[0x10]=
-{
- 397, 353, 315, 297, 265, 235, 209, 198,
- 176, 148, 131, 118, 98, 78, 66, 50,
-};
-
-// $4010 - Frequency
-// $4011 - Actual data outputted
-// $4012 - Address register: $c000 + V*64
-// $4013 - Size register: Size in bytes = (V+1)*64
-
-static int32 DMCacc=1;
-static int32 DMCPeriod=0;
-static uint8 DMCBitCount=0;
-
-static uint8 DMCAddressLatch=0,DMCSizeLatch=0; /* writes to 4012 and 4013 */
-static uint8 DMCFormat=0; /* Write to $4010 */
-
-static uint32 DMCAddress=0;
-static int32 DMCSize=0;
-static uint8 DMCShift=0;
-static uint8 SIRQStat=0;
-
-static char DMCHaveDMA=0;
-static uint8 DMCDMABuf=0;
-static char DMCHaveSample=0;
-
-static void Dummyfunc(void) {};
-static void (*DoNoise)(void)=Dummyfunc;
-static void (*DoTriangle)(void)=Dummyfunc;
-static void (*DoPCM)(void)=Dummyfunc;
-static void (*DoSQ1)(void)=Dummyfunc;
-static void (*DoSQ2)(void)=Dummyfunc;
-
-static uint32 ChannelBC[5];
-
-static void LoadDMCPeriod(uint8 V)
-{
- if(PAL)
- DMCPeriod=PALDMCTable[V];
- else
- DMCPeriod=NTSCDMCTable[V];
-}
-
-static void PrepDPCM()
-{
- DMCAddress=0x4000+(DMCAddressLatch<<6);
- DMCSize=(DMCSizeLatch<<4)+1;
-}
-
-/* Instantaneous? Maybe the new freq value is being calculated all of the time... */
-
-static int FASTAPASS(2) CheckFreq(uint32 cf, uint8 sr)
-{
- uint32 mod;
- if(!(sr&0x8))
- {
- mod=cf>>(sr&7);
- if((mod+cf)&0x800)
- return(0);
- }
- return(1);
-}
-
-static void SQReload(int x, uint8 V)
-{
- if(EnabledChannels&(1<<x))
- {
- if(x)
- DoSQ2();
- else
- DoSQ1();
- lengthcount[x]=lengthtable[(V>>3)&0x1f];
- }
-
- sweepon[x]=PSG[(x<<2)|1]&0x80;
- curfreq[x]=PSG[(x<<2)|0x2]|((V&7)<<8);
- SweepCount[x]=((PSG[(x<<2)|0x1]>>4)&7)+1;
-
- RectDutyCount[x]=7;
- EnvUnits[x].reloaddec=1;
- //reloadfreq[x]=1;
-}
-
-static DECLFW(Write_PSG)
-{
- A&=0x1F;
- switch(A)
- {
- case 0x0:DoSQ1();
- EnvUnits[0].Mode=(V&0x30)>>4;
- EnvUnits[0].Speed=(V&0xF);
- break;
- case 0x1:
- sweepon[0]=V&0x80;
- break;
- case 0x2:
- DoSQ1();
- curfreq[0]&=0xFF00;
- curfreq[0]|=V;
- break;
- case 0x3:
- SQReload(0,V);
- break;
- case 0x4:
- DoSQ2();
- EnvUnits[1].Mode=(V&0x30)>>4;
- EnvUnits[1].Speed=(V&0xF);
- break;
- case 0x5:
- sweepon[1]=V&0x80;
- break;
- case 0x6:DoSQ2();
- curfreq[1]&=0xFF00;
- curfreq[1]|=V;
- break;
- case 0x7:
- SQReload(1,V);
- break;
- case 0xa:DoTriangle();
- break;
- case 0xb:
- DoTriangle();
- if(EnabledChannels&0x4)
- lengthcount[2]=lengthtable[(V>>3)&0x1f];
- TriMode=1; // Load mode
- break;
- case 0xC:DoNoise();
- EnvUnits[2].Mode=(V&0x30)>>4;
- EnvUnits[2].Speed=(V&0xF);
- break;
- case 0xE:DoNoise();
- break;
- case 0xF:
- DoNoise();
- if(EnabledChannels&0x8)
- lengthcount[3]=lengthtable[(V>>3)&0x1f];
- EnvUnits[2].reloaddec=1;
- break;
- case 0x10:DoPCM();
- LoadDMCPeriod(V&0xF);
-
- if(SIRQStat&0x80)
- {
- if(!(V&0x80))
- {
- X6502_IRQEnd(FCEU_IQDPCM);
- SIRQStat&=~0x80;
- }
- else X6502_IRQBegin(FCEU_IQDPCM);
- }
- break;
- }
- PSG[A]=V;
-}
-
-static DECLFW(Write_DMCRegs)
-{
- A&=0xF;
-
- switch(A)
- {
- case 0x00:DoPCM();
- LoadDMCPeriod(V&0xF);
-
- if(SIRQStat&0x80)
- {
- if(!(V&0x80))
- {
- X6502_IRQEnd(FCEU_IQDPCM);
- SIRQStat&=~0x80;
- }
- else X6502_IRQBegin(FCEU_IQDPCM);
- }
- DMCFormat=V;
- break;
- case 0x01:DoPCM();
- RawDALatch=V&0x7F;
- break;
- case 0x02:DMCAddressLatch=V;break;
- case 0x03:DMCSizeLatch=V;break;
- }
-
-
-}
-
-static DECLFW(StatusWrite)
-{
- int x;
-
- DoSQ1();
- DoSQ2();
- DoTriangle();
- DoNoise();
- DoPCM();
- for(x=0;x<4;x++)
- if(!(V&(1<<x))) lengthcount[x]=0; /* Force length counters to 0. */
-
- if(V&0x10)
- {
- if(!DMCSize)
- PrepDPCM();
- }
- else
- {
- DMCSize=0;
- }
- SIRQStat&=~0x80;
- X6502_IRQEnd(FCEU_IQDPCM);
- EnabledChannels=V&0x1F;
-}
-
-static DECLFR(StatusRead)
-{
- int x;
- uint8 ret;
-
- ret=SIRQStat;
-
- for(x=0;x<4;x++) ret|=lengthcount[x]?(1<<x):0;
- if(DMCSize) ret|=0x10;
-
- #ifdef FCEUDEF_DEBUGGER
- if(!fceuindbg)
- #endif
- {
- SIRQStat&=~0x40;
- X6502_IRQEnd(FCEU_IQFCOUNT);
- }
- return ret;
-}
-
-static void FASTAPASS(1) FrameSoundStuff(int V)
-{
- int P;
-
- DoSQ1();
- DoSQ2();
- DoNoise();
- DoTriangle();
-
- if(!(V&1)) /* Envelope decay, linear counter, length counter, freq sweep */
- {
- if(!(PSG[8]&0x80))
- if(lengthcount[2]>0)
- lengthcount[2]--;
-
- if(!(PSG[0xC]&0x20)) /* Make sure loop flag is not set. */
- if(lengthcount[3]>0)
- lengthcount[3]--;
-
- for(P=0;P<2;P++)
- {
- if(!(PSG[P<<2]&0x20)) /* Make sure loop flag is not set. */
- if(lengthcount[P]>0)
- lengthcount[P]--;
-
- /* Frequency Sweep Code Here */
- /* xxxx 0000 */
- /* xxxx = hz. 120/(x+1)*/
- if(sweepon[P])
- {
- int32 mod=0;
-
- if(SweepCount[P]>0) SweepCount[P]--;
- if(SweepCount[P]<=0)
- {
- SweepCount[P]=((PSG[(P<<2)+0x1]>>4)&7)+1; //+1;
- if(PSG[(P<<2)+0x1]&0x8)
- {
- mod-=(P^1)+((curfreq[P])>>(PSG[(P<<2)+0x1]&7));
- if(curfreq[P] && (PSG[(P<<2)+0x1]&7)/* && sweepon[P]&0x80*/)
- {
- curfreq[P]+=mod;
- }
- }
- else
- {
- mod=curfreq[P]>>(PSG[(P<<2)+0x1]&7);
- if((mod+curfreq[P])&0x800)
- {
- sweepon[P]=0;
- curfreq[P]=0;
- }
- else
- {
- if(curfreq[P] && (PSG[(P<<2)+0x1]&7)/* && sweepon[P]&0x80*/)
- {
- curfreq[P]+=mod;
- }
- }
- }
- }
- }
- else /* Sweeping is disabled: */
- {
- //curfreq[P]&=0xFF00;
- //curfreq[P]|=PSG[(P<<2)|0x2]; //|((PSG[(P<<2)|3]&7)<<8);
- }
- }
- }
-
- /* Now do envelope decay + linear counter. */
-
- if(TriMode) // In load mode?
- TriCount=PSG[0x8]&0x7F;
- else if(TriCount)
- TriCount--;
-
- if(!(PSG[0x8]&0x80))
- TriMode=0;
-
- for(P=0;P<3;P++)
- {
- if(EnvUnits[P].reloaddec)
- {
- EnvUnits[P].decvolume=0xF;
- EnvUnits[P].DecCountTo1=EnvUnits[P].Speed+1;
- EnvUnits[P].reloaddec=0;
- continue;
- }
-
- if(EnvUnits[P].DecCountTo1>0) EnvUnits[P].DecCountTo1--;
- if(EnvUnits[P].DecCountTo1==0)
- {
- EnvUnits[P].DecCountTo1=EnvUnits[P].Speed+1;
- if(EnvUnits[P].decvolume || (EnvUnits[P].Mode&0x2))
- {
- EnvUnits[P].decvolume--;
- EnvUnits[P].decvolume&=0xF;
- }
- }
- }
-}
-
-static void FrameSoundUpdate098(void)
-{
- // Linear counter: Bit 0-6 of $4008
- // Length counter: Bit 4-7 of $4003, $4007, $400b, $400f
-
- if(!fcnt && !(IRQFrameMode&0x3))
- {
- SIRQStat|=0x40;
- X6502_IRQBegin(FCEU_IQFCOUNT);
- }
-
- if(fcnt==3)
- {
- if(IRQFrameMode&0x2)
- fhcnt+=fhinc;
- }
- FrameSoundStuff(fcnt);
- fcnt=(fcnt+1)&3;
-}
-
-
-static INLINE void tester(void)
-{
- if(DMCBitCount==0)
- {
- if(!DMCHaveDMA)
- DMCHaveSample=0;
- else
- {
- DMCHaveSample=1;
- DMCShift=DMCDMABuf;
- DMCHaveDMA=0;
- }
- }
-}
-
-static INLINE void DMCDMA(void)
-{
- if(DMCSize && !DMCHaveDMA)
- {
- /*
- X6502_DMR(0x8000+DMCAddress);
- X6502_DMR(0x8000+DMCAddress);
- X6502_DMR(0x8000+DMCAddress);
- DMCDMABuf=X6502_DMR(0x8000+DMCAddress);
- */
- DMCDMABuf=ARead[0x8000](0x8000);
- X6502_AddCycles(4);
-
- DMCHaveDMA=1;
- DMCAddress=(DMCAddress+1)&0x7fff;
- DMCSize--;
- if(!DMCSize)
- {
- if(DMCFormat&0x40)
- PrepDPCM();
- else
- {
- SIRQStat|=0x80;
- if(DMCFormat&0x80)
- X6502_IRQBegin(FCEU_IQDPCM);
- }
- }
- }
-}
-
-void FASTAPASS(1) FCEU_SoundCPUHook098(int cycles)
-{
- fhcnt-=cycles*48;
- if(fhcnt<=0)
- {
- FrameSoundUpdate098();
- fhcnt+=fhinc;
- }
-
- DMCDMA();
- DMCacc-=cycles;
-
- while(DMCacc<=0)
- {
- if(DMCHaveSample)
- {
- uint8 bah=RawDALatch;
- int t=((DMCShift&1)<<2)-2;
-
- /* Unbelievably ugly hack */
- if(FSettings.SndRate)
- {
- soundtsoffs+=DMCacc;
- DoPCM();
- soundtsoffs-=DMCacc;
- }
- RawDALatch+=t;
- if(RawDALatch&0x80)
- RawDALatch=bah;
- }
-
- DMCacc+=DMCPeriod;
- DMCBitCount=(DMCBitCount+1)&7;
- DMCShift>>=1;
- tester();
- }
-}
-
-#if 0
-static void RDoPCM(void)
-{
- int32 V;
-
- for(V=ChannelBC[4];V<SOUNDTS;V++)
- WaveHi[V]+=RawDALatch<<16;
-
- ChannelBC[4]=SOUNDTS;
-}
-
-/* This has the correct phase. Don't mess with it. */
-static INLINE void RDoSQ(int x)
-{
- int32 V;
- int32 amp;
- int32 rthresh;
- int32 *D;
- int32 currdc;
- int32 cf;
- int32 rc;
-
- if(curfreq[x]<8 || curfreq[x]>0x7ff)
- goto endit;
- if(!CheckFreq(curfreq[x],PSG[(x<<2)|0x1]))
- goto endit;
- if(!lengthcount[x])
- goto endit;
-
- if(EnvUnits[x].Mode&0x1)
- amp=EnvUnits[x].Speed;
- else
- amp=EnvUnits[x].decvolume;
-// printf("%d\n",amp);
- amp<<=24;
-
- rthresh=RectDuties[(PSG[(x<<2)]&0xC0)>>6];
-
- D=&WaveHi[ChannelBC[x]];
- V=SOUNDTS-ChannelBC[x];
-
- currdc=RectDutyCount[x];
- cf=(curfreq[x]+1)*2;
- rc=wlcount[x];
-
- while(V>0)
- {
- if(currdc<rthresh)
- *D+=amp;
- rc--;
- if(!rc)
- {
- rc=cf;
- currdc=(currdc+1)&7;
- }
- V--;
- D++;
- }
-
- RectDutyCount[x]=currdc;
- wlcount[x]=rc;
-
- endit:
- ChannelBC[x]=SOUNDTS;
-}
-
-static void RDoSQ1(void)
-{
- RDoSQ(0);
-}
-
-static void RDoSQ2(void)
-{
- RDoSQ(1);
-}
-#endif
-
-static void RDoSQLQ(void)
-{
- int32 start,end;
- int32 V;
- int32 amp[2];
- int32 rthresh[2];
- int32 freq[2];
- int x;
- int32 inie[2];
-
- int32 ttable[2][8];
- int32 totalout;
-
- start=ChannelBC[0];
- end=(SOUNDTS<<16)/soundtsinc;
- if(end<=start) return;
- ChannelBC[0]=end;
-
- for(x=0;x<2;x++)
- {
- int y;
-
- inie[x]=nesincsize;
- if(curfreq[x]<8 || curfreq[x]>0x7ff)
- inie[x]=0;
- if(!CheckFreq(curfreq[x],PSG[(x<<2)|0x1]))
- inie[x]=0;
- if(!lengthcount[x])
- inie[x]=0;
-
- if(EnvUnits[x].Mode&0x1)
- amp[x]=EnvUnits[x].Speed;
- else
- amp[x]=EnvUnits[x].decvolume;
-
- if(!inie[x]) amp[x]=0; /* Correct? Buzzing in MM2, others otherwise... */
-
- rthresh[x]=RectDuties[(PSG[x*4]&0xC0)>>6];
-
- for(y=0;y<8;y++)
- {
- if(y < rthresh[x])
- ttable[x][y] = amp[x];
- else
- ttable[x][y] = 0;
- }
- freq[x]=(curfreq[x]+1)<<1;
- freq[x]<<=17;
- }
-
- totalout = wlookup1[ ttable[0][RectDutyCount[0]] + ttable[1][RectDutyCount[1]] ];
-
- if(!inie[0] && !inie[1])
- {
- for(V=start;V<end;V++)
- ((int32 *)Wave)[V>>4]+=totalout;
- }
- else
- for(V=start;V<end;V++)
- {
- //int tmpamp=0;
- //if(RectDutyCount[0]<rthresh[0])
- // tmpamp=amp[0];
- //if(RectDutyCount[1]<rthresh[1])
- // tmpamp+=amp[1];
- //tmpamp=wlookup1[tmpamp];
- //tmpamp = wlookup1[ ttable[0][RectDutyCount[0]] + ttable[1][RectDutyCount[1]] ];
-
- ((int32 *)Wave)[V>>4]+=totalout; //tmpamp;
-
- sqacc[0]-=inie[0];
- sqacc[1]-=inie[1];
-
- if(sqacc[0]<=0)
- {
- rea:
- sqacc[0]+=freq[0];
- RectDutyCount[0]=(RectDutyCount[0]+1)&7;
- if(sqacc[0]<=0) goto rea;
- totalout = wlookup1[ ttable[0][RectDutyCount[0]] + ttable[1][RectDutyCount[1]] ];
- }
-
- if(sqacc[1]<=0)
- {
- rea2:
- sqacc[1]+=freq[1];
- RectDutyCount[1]=(RectDutyCount[1]+1)&7;
- if(sqacc[1]<=0) goto rea2;
- totalout = wlookup1[ ttable[0][RectDutyCount[0]] + ttable[1][RectDutyCount[1]] ];
- }
- }
-}
-
-#if 0
-static void RDoTriangle(void)
-{
- int32 V;
- int32 tcout;
-
- tcout=(tristep&0xF);
- if(!(tristep&0x10)) tcout^=0xF;
- tcout=(tcout*3) << 16; //(tcout<<1);
-
- if(!lengthcount[2] || !TriCount)
- { /* Counter is halted, but we still need to output. */
- int32 *start = &WaveHi[ChannelBC[2]];
- int32 count = SOUNDTS - ChannelBC[2];
- while(count--)
- {
- *start += tcout;
- start++;
- }
- //for(V=ChannelBC[2];V<SOUNDTS;V++)
- // WaveHi[V]+=tcout;
- }
- else
- for(V=ChannelBC[2];V<SOUNDTS;V++)
- {
- WaveHi[V]+=tcout;
- wlcount[2]--;
- if(!wlcount[2])
- {
- wlcount[2]=(PSG[0xa]|((PSG[0xb]&7)<<8))+1;
- tristep++;
- tcout=(tristep&0xF);
- if(!(tristep&0x10)) tcout^=0xF;
- tcout=(tcout*3) << 16;
- }
- }
-
- ChannelBC[2]=SOUNDTS;
-}
-#endif
-
-static void RDoTriangleNoisePCMLQ(void)
-{
- static uint32 tcout=0;
- static int32 triacc=0;
- static int32 noiseacc=0;
-
- int32 V;
- int32 start,end;
- int32 freq[2];
- int32 inie[2];
- uint32 amptab[2];
- uint32 noiseout;
- int nshift;
-
- int32 totalout;
-
- start=ChannelBC[2];
- end=(SOUNDTS<<16)/soundtsinc;
- if(end<=start) return;
- ChannelBC[2]=end;
-
- inie[0]=inie[1]=nesincsize;
-
- freq[0]=(((PSG[0xa]|((PSG[0xb]&7)<<8))+1));
-
- if(!lengthcount[2] || !TriCount || freq[0]<=4)
- inie[0]=0;
-
- freq[0]<<=17;
- if(EnvUnits[2].Mode&0x1)
- amptab[0]=EnvUnits[2].Speed;
- else
- amptab[0]=EnvUnits[2].decvolume;
- amptab[1]=0;
- amptab[0]<<=1;
-
- if(!lengthcount[3])
- amptab[0]=inie[1]=0; /* Quick hack speedup, set inie[1] to 0 */
-
- noiseout=amptab[(nreg>>0xe)&1];
-
- if(PSG[0xE]&0x80)
- nshift=8;
- else
- nshift=13;
-
-
- totalout = wlookup2[tcout+noiseout+RawDALatch];
-
- if(inie[0] && inie[1])
- {
- for(V=start;V<end;V++)
- {
- ((int32 *)Wave)[V>>4]+=totalout;
-
- triacc-=inie[0];
- noiseacc-=inie[1];
-
- if(triacc<=0)
- {
- rea:
- triacc+=freq[0]; //t;
- tristep=(tristep+1)&0x1F;
- if(triacc<=0) goto rea;
- tcout=(tristep&0xF);
- if(!(tristep&0x10)) tcout^=0xF;
- tcout=tcout*3;
- totalout = wlookup2[tcout+noiseout+RawDALatch];
- }
-
- if(noiseacc<=0)
- {
- rea2:
- noiseacc+=NoiseFreqTable[PSG[0xE]&0xF]<<(16+2);
- nreg=(nreg<<1)+(((nreg>>nshift)^(nreg>>14))&1);
- nreg&=0x7fff;
- noiseout=amptab[(nreg>>0xe)];
- if(noiseacc<=0) goto rea2;
- totalout = wlookup2[tcout+noiseout+RawDALatch];
- } /* noiseacc<=0 */
- } /* for(V=... */
- }
- else if(inie[0])
- {
- for(V=start;V<end;V++)
- {
- ((int32 *)Wave)[V>>4]+=totalout;
-
- triacc-=inie[0];
-
- if(triacc<=0)
- {
- area:
- triacc+=freq[0]; //t;
- tristep=(tristep+1)&0x1F;
- if(triacc<=0) goto area;
- tcout=(tristep&0xF);
- if(!(tristep&0x10)) tcout^=0xF;
- tcout=tcout*3;
- totalout = wlookup2[tcout+noiseout+RawDALatch];
- }
- }
- }
- else if(inie[1])
- {
- for(V=start;V<end;V++)
- {
- ((int32 *)Wave)[V>>4]+=totalout;
- noiseacc-=inie[1];
- if(noiseacc<=0)
- {
- area2:
- noiseacc+=NoiseFreqTable[PSG[0xE]&0xF]<<(16+2);
- nreg=(nreg<<1)+(((nreg>>nshift)^(nreg>>14))&1);
- nreg&=0x7fff;
- noiseout=amptab[(nreg>>0xe)];
- if(noiseacc<=0) goto area2;
- totalout = wlookup2[tcout+noiseout+RawDALatch];
- } /* noiseacc<=0 */
- }
- }
- else
- {
- for(V=start;V<end;V++)
- ((int32 *)Wave)[V>>4]+=totalout;
- }
-}
-
-
-#if 0
-static void RDoNoise(void)
-{
- int32 V;
- int32 outo;
- uint32 amptab[2];
-
- if(EnvUnits[2].Mode&0x1)
- amptab[0]=EnvUnits[2].Speed;
- else
- amptab[0]=EnvUnits[2].decvolume;
-
- amptab[0]<<=16;
- amptab[1]=0;
-
- amptab[0]<<=1;
-
- outo=amptab[nreg&1]; //(nreg>>0xe)&1];
-
- if(!lengthcount[3])
- {
- outo=amptab[0]=0;
- }
-
- if(PSG[0xE]&0x80) // "short" noise
- for(V=ChannelBC[3];V<SOUNDTS;V++)
- {
- WaveHi[V]+=outo;
- wlcount[3]--;
- if(!wlcount[3])
- {
- uint8 feedback;
- wlcount[3]=NoiseFreqTable[PSG[0xE]&0xF]<<1;
- feedback=((nreg>>8)&1)^((nreg>>14)&1);
- nreg=(nreg<<1)+feedback;
- nreg&=0x7fff;
- outo=amptab[(nreg>>0xe)&1];
- }
- }
- else
- for(V=ChannelBC[3];V<SOUNDTS;V++)
- {
- WaveHi[V]+=outo;
- wlcount[3]--;
- if(!wlcount[3])
- {
- uint8 feedback;
- wlcount[3]=NoiseFreqTable[PSG[0xE]&0xF]<<1;
- feedback=((nreg>>13)&1)^((nreg>>14)&1);
- nreg=(nreg<<1)+feedback;
- nreg&=0x7fff;
- outo=amptab[(nreg>>0xe)&1];
- }
- }
- ChannelBC[3]=SOUNDTS;
-}
-#endif
-
-static DECLFW(Write_IRQFM)
-{
- V=(V&0xC0)>>6;
- fcnt=0;
- if(V&0x2)
- FrameSoundUpdate098();
- fcnt=1;
- fhcnt=fhinc;
- X6502_IRQEnd(FCEU_IQFCOUNT);
- SIRQStat&=~0x40;
- IRQFrameMode=V;
-}
-
-void SetNESSoundMap098(void)
-{
- SetWriteHandler(0x4000,0x400F,Write_PSG);
- SetWriteHandler(0x4010,0x4013,Write_DMCRegs);
- SetWriteHandler(0x4017,0x4017,Write_IRQFM);
-
- SetWriteHandler(0x4015,0x4015,StatusWrite);
- SetReadHandler(0x4015,0x4015,StatusRead);
-}
-
-static int32 inbuf=0;
-int FlushEmulateSound098(void)
-{
- int x;
- int32 end,left;
-
- if(!timestamp) return(0);
-
- if(!FSettings.SndRate)
- {
- left=0;
- end=0;
- goto nosoundo;
- }
-
- DoSQ1();
- DoSQ2();
- DoTriangle();
- DoNoise();
- DoPCM();
-
-#if 0
- if(FSettings.soundq>=1)
- {
- int32 *tmpo=&WaveHi[soundtsoffs];
-
- if(GameExpSound.HiFill) GameExpSound.HiFill();
-
- for(x=timestamp;x;x--)
- {
- uint32 b=*tmpo;
- *tmpo=(b&65535)+wlookup2[(b>>16)&255]+wlookup1[b>>24];
- tmpo++;
- }
- end=NeoFilterSound(WaveHi,WaveFinal,SOUNDTS,&left);
-
- memmove(WaveHi,WaveHi+SOUNDTS-left,left*sizeof(uint32));
- memset(WaveHi+left,0,sizeof(WaveHi)-left*sizeof(uint32));
-
- if(GameExpSound.HiSync) GameExpSound.HiSync(left);
- for(x=0;x<5;x++)
- ChannelBC[x]=left;
- }
- else
-#endif
- {
- end=(SOUNDTS<<16)/soundtsinc;
- if(GameExpSound.Fill)
- GameExpSound.Fill(end&0xF);
-
- SexyFilter((int32 *)Wave,WaveFinalMono,end>>4);
-
- if(end&0xF)
- Wave[0]=Wave[(end>>4)];
- Wave[end>>4]=0;
- }
- nosoundo:
-
-#if 0
- if(FSettings.soundq>=1)
- {
- soundtsoffs=left;
- }
- else
-#endif
- {
- for(x=0;x<5;x++)
- ChannelBC[x]=end&0xF;
- soundtsoffs = (soundtsinc*(end&0xF))>>16;
- end>>=4;
- }
- inbuf=end;
-
- return(end);
-}
-
-/* FIXME: Find out what sound registers get reset on reset. I know $4001/$4005 don't,
-due to that whole MegaMan 2 Game Genie thing.
-*/
-
-void FCEUSND_Reset(void)
-{
- int x;
-
- IRQFrameMode=0x0;
- fhcnt=fhinc;
- fcnt=0;
-
- nreg=1;
- for(x=0;x<2;x++)
- {
- wlcount[x]=2048;
- if(nesincsize) // lq mode
- sqacc[x]=((uint32)2048<<17)/nesincsize;
- else
- sqacc[x]=1;
- sweepon[x]=0;
- curfreq[x]=0;
- }
- wlcount[2]=1; //2048;
- wlcount[3]=2048;
- DMCHaveDMA=DMCHaveSample=0;
- SIRQStat=0x00;
-
- RawDALatch=0x00;
- TriCount=0;
- TriMode=0;
- tristep=0;
- EnabledChannels=0;
- for(x=0;x<4;x++)
- lengthcount[x]=0;
-
- DMCAddressLatch=0;
- DMCSizeLatch=0;
- DMCFormat=0;
- DMCAddress=0;
- DMCSize=0;
- DMCShift=0;
-
- // MAJOR BUG WAS HERE: DMCacc and DMCBitCount never got reset...
- // so, do some ridiculous hackery if a movie's about to play to keep it in sync...
-
-#if 0
- extern int movieSyncHackOn,resetDMCacc,movieConvertOffset1,movieConvertOffset2;
- if(movieSyncHackOn)
- {
- if(resetDMCacc)
- {
- // no value in movie save state
-#ifdef WIN32
- // use editbox fields
- DMCacc=movieConvertOffset1;
- DMCBitCount=movieConvertOffset2;
-#else
- // no editbox fields, so leave the values alone
- // and print out a warning that says what they are
- FCEU_PrintError("Warning: These variables were not found in the save state and will keep their current value: DMCacc=%d, DMCBitCount=%d\n", DMCacc, DMCBitCount);
-#endif
- }
- else
- {
- // keep values loaded from movie save state or reset earlier
- }
- }
- else
-#endif
- {
- // reset these variables like should have done in the first place
- DMCacc=1;
- DMCBitCount=0;
- }
-
-// FCEU_PrintError("DMCacc=%d, DMCBitCount=%d",DMCacc,DMCBitCount);
-}
-
-void FCEUSND_Power(void)
-{
- int x;
-
- SetNESSoundMap098();
- memset(PSG,0x00,sizeof(PSG));
- FCEUSND_Reset();
-
- memset(Wave,0,sizeof(Wave));
- memset(WaveHi,0,sizeof(WaveHi));
- memset(&EnvUnits,0,sizeof(EnvUnits));
-
- for(x=0;x<5;x++)
- ChannelBC[x]=0;
- soundtsoffs=0;
- LoadDMCPeriod(DMCFormat&0xF);
-}
-
-
-void SetSoundVariables098(void)
-{
- int x;
-
- fhinc=PAL?16626:14915; // *2 CPU clock rate
- fhinc*=24;
-
- if(FSettings.SndRate)
- {
- wlookup1[0]=0;
- for(x=1;x<32;x++)
- {
- wlookup1[x]=(double)16*16*16*4*95.52/((double)8128/(double)x+100);
-// if(!FSettings.soundq) wlookup1[x]>>=4;
- }
- wlookup2[0]=0;
- for(x=1;x<203;x++)
- {
- wlookup2[x]=(double)16*16*16*4*163.67/((double)24329/(double)x+100);
-// if(!FSettings.soundq) wlookup2[x]>>=4;
- }
-#if 0
- if(FSettings.soundq>=1)
- {
- DoNoise=RDoNoise;
- DoTriangle=RDoTriangle;
- DoPCM=RDoPCM;
- DoSQ1=RDoSQ1;
- DoSQ2=RDoSQ2;
- }
- else
-#endif
- {
- DoNoise=DoTriangle=DoPCM=DoSQ1=DoSQ2=Dummyfunc;
- DoSQ1=RDoSQLQ;
- DoSQ2=RDoSQLQ;
- DoTriangle=RDoTriangleNoisePCMLQ;
- DoNoise=RDoTriangleNoisePCMLQ;
- DoPCM=RDoTriangleNoisePCMLQ;
- }
- }
- else
- {
- DoNoise=DoTriangle=DoPCM=DoSQ1=DoSQ2=Dummyfunc;
- return;
- }
-
- MakeFilters(FSettings.SndRate);
-
- if(GameExpSound.RChange)
- GameExpSound.RChange();
-
- nesincsize=(int32)(((int64)1<<17)*(double)(PAL?PAL_CPU:NTSC_CPU)/(FSettings.SndRate * 16));
- memset(sqacc,0,sizeof(sqacc));
- memset(ChannelBC,0,sizeof(ChannelBC));
-
- LoadDMCPeriod(DMCFormat&0xF); // For changing from PAL to NTSC
-
- soundtsinc=(uint32)((uint64)(PAL?(long double)PAL_CPU*65536:(long double)NTSC_CPU*65536)/(FSettings.SndRate * 16));
-}
-
-/*
-void FCEUI_SetLowPass(int q)
-{
- FSettings.lowpass=q;
-}
-
-void FCEUI_SetSoundQuality(int quality)
-{
- FSettings.soundq=quality;
- SetSoundVariables098();
-}
-*/
-
-
-SFORMAT FCEUSND_STATEINFO[]={
-
- { &fhcnt, 4|FCEUSTATE_RLSB,"FHCN"},
- { &fcnt, 1, "FCNT"},
- { PSG, 0x10, "PSG"},
- { &EnabledChannels, 1, "ENCH"},
- { &IRQFrameMode, 1, "IQFM"},
- { &nreg, 2|FCEUSTATE_RLSB, "NREG"},
- { &TriMode, 1, "TRIM"},
- { &TriCount, 1, "TRIC"},
-
- { &EnvUnits[0].Speed, 1, "E0SP"},
- { &EnvUnits[1].Speed, 1, "E1SP"},
- { &EnvUnits[2].Speed, 1, "E2SP"},
-
- { &EnvUnits[0].Mode, 1, "E0MO"},
- { &EnvUnits[1].Mode, 1, "E1MO"},
- { &EnvUnits[2].Mode, 1, "E2MO"},
-
- { &EnvUnits[0].DecCountTo1, 1, "E0D1"},
- { &EnvUnits[1].DecCountTo1, 1, "E1D1"},
- { &EnvUnits[2].DecCountTo1, 1, "E2D1"},
-
- { &EnvUnits[0].decvolume, 1, "E0DV"},
- { &EnvUnits[1].decvolume, 1, "E1DV"},
- { &EnvUnits[2].decvolume, 1, "E2DV"},
-
- { &lengthcount[0], 4|FCEUSTATE_RLSB, "LEN0"},
- { &lengthcount[1], 4|FCEUSTATE_RLSB, "LEN1"},
- { &lengthcount[2], 4|FCEUSTATE_RLSB, "LEN2"},
- { &lengthcount[3], 4|FCEUSTATE_RLSB, "LEN3"},
- { sweepon, 2, "SWEE"},
- { &curfreq[0], 4|FCEUSTATE_RLSB,"CRF1"},
- { &curfreq[1], 4|FCEUSTATE_RLSB,"CRF2"},
- { SweepCount, 2,"SWCT"},
-
- { &SIRQStat, 1, "SIRQ"},
-
- { &DMCacc, 4|FCEUSTATE_RLSB, "5ACC"},
- { &DMCBitCount, 1, "5BIT"},
- { &DMCAddress, 4|FCEUSTATE_RLSB, "5ADD"},
- { &DMCSize, 4|FCEUSTATE_RLSB, "5SIZ"},
- { &DMCShift, 1, "5SHF"},
-
- { &DMCHaveDMA, 1, "5HVDM"},
- { &DMCHaveSample, 1, "5HVSP"},
-
- { &DMCSizeLatch, 1, "5SZL"},
- { &DMCAddressLatch, 1, "5ADL"},
- { &DMCFormat, 1, "5FMT"},
- { &RawDALatch, 1, "RWDA"},
- { 0 }
-};
-
-void FCEUSND_SaveState(void)
-{
-
-}
-
-void FCEUSND_LoadState(int version)
-{
- LoadDMCPeriod(DMCFormat&0xF);
- RawDALatch&=0x7F;
- DMCAddress&=0x7FFF;
-}