static void init_timetables( FM_OPL *OPL , int ARRATE , int DRRATE )

{

	int i;

	double rate;



	/* make attack rate & decay rate tables */

	for (i = 0;i < 4;i++) OPL->AR_TABLE[i] = OPL->DR_TABLE[i] = 0;

	for (i = 4;i <= 60;i++){

		rate  = OPL->freqbase;						/* frequency rate */

		if( i < 60 ) rate *= 1.0+(i&3)*0.25;		/* b0-1 : x1 , x1.25 , x1.5 , x1.75 */

		rate *= 1<<((i>>2)-1);						/* b2-5 : shift bit */

		rate *= (double)(EG_ENT<<ENV_BITS);

		OPL->AR_TABLE[i] = rate / ARRATE;

		OPL->DR_TABLE[i] = rate / DRRATE;

	}

	for (i = 60;i < 76;i++)

	{

		OPL->AR_TABLE[i] = EG_AED-1;

		OPL->DR_TABLE[i] = OPL->DR_TABLE[60];

	}

#if 0

	for (i = 0;i < 64 ;i++){	/* make for overflow area */

		LOG(LOG_WAR,("rate %2d , ar %f ms , dr %f ms \n",i,

			((double)(EG_ENT<<ENV_BITS) / OPL->AR_TABLE[i]) * (1000.0 / OPL->rate),

			((double)(EG_ENT<<ENV_BITS) / OPL->DR_TABLE[i]) * (1000.0 / OPL->rate) ));

	}

#endif

}

static void init_timetables( FM_OPL *OPL , int ARRATE , int DRRATE )

{

	int i;

	double rate;



	

	for (i = 0;i < 4;i++) OPL->AR_TABLE[i] = OPL->DR_TABLE[i] = 0;

	for (i = 4;i <= 60;i++){

		rate  = OPL->freqbase;						

		if( i < 60 ) rate *= 1.0+(i&3)*0.25;		

		rate *= 1<<((i>>2)-1);						

		rate *= (double)(EG_ENT<<ENV_BITS);

		OPL->AR_TABLE[i] = rate / ARRATE;

		OPL->DR_TABLE[i] = rate / DRRATE;

	}

	for (i = 60;i < 76;i++)

	{

		OPL->AR_TABLE[i] = EG_AED-1;

		OPL->DR_TABLE[i] = OPL->DR_TABLE[60];

	}

#if 0

	for (i = 0;i < 64 ;i++){	

		LOG(LOG_WAR,("rate %2d , ar %f ms , dr %f ms \n",i,

			((double)(EG_ENT<<ENV_BITS) / OPL->AR_TABLE[i]) * (1000.0 / OPL->rate),

			((double)(EG_ENT<<ENV_BITS) / OPL->DR_TABLE[i]) * (1000.0 / OPL->rate) ));

	}

#endif

}

	for (i = 60;i < 76;i++)
static void FUNC_0( FM_OPL *VAR_0 , int VAR_1 , int VAR_2 )

{

	int VAR_3;

	double VAR_4;



	

	for (VAR_3 = 0;VAR_3 < 4;VAR_3++) VAR_0->AR_TABLE[VAR_3] = VAR_0->DR_TABLE[VAR_3] = 0;

	for (VAR_3 = 4;VAR_3 <= 60;VAR_3++){

		VAR_4  = VAR_0->freqbase;						

		if( VAR_3 < 60 ) VAR_4 *= 1.0+(VAR_3&3)*0.25;		

		VAR_4 *= 1<<((VAR_3>>2)-1);						

		VAR_4 *= (double)(EG_ENT<<ENV_BITS);

		VAR_0->AR_TABLE[VAR_3] = VAR_4 / VAR_1;

		VAR_0->DR_TABLE[VAR_3] = VAR_4 / VAR_2;

	}

	for (VAR_3 = 60;VAR_3 < 76;VAR_3++)

	{

		VAR_0->AR_TABLE[VAR_3] = EG_AED-1;

		VAR_0->DR_TABLE[VAR_3] = VAR_0->DR_TABLE[60];

	}

#if 0

	for (VAR_3 = 0;VAR_3 < 64 ;VAR_3++){	

		LOG(LOG_WAR,("VAR_4 %2d , ar %f ms , dr %f ms \n",VAR_3,

			((double)(EG_ENT<<ENV_BITS) / VAR_0->AR_TABLE[VAR_3]) * (1000.0 / VAR_0->VAR_4),

			((double)(EG_ENT<<ENV_BITS) / VAR_0->DR_TABLE[VAR_3]) * (1000.0 / VAR_0->VAR_4) ));

	}

#endif

}

static void FUNC_0( FM_OPL *VAR_0 , int VAR_1 , int VAR_2 )
{ int VAR_3; double VAR_4; for (VAR_3 = 0;VAR_3 < 4;VAR_3++) VAR_0->AR_TABLE[VAR_3] = VAR_0->DR_TABLE[VAR_3] = 0; for (VAR_3 = 4;VAR_3 <= 60;VAR_3++){ VAR_4  = VAR_0->freqbase; if( VAR_3 < 60 ) VAR_4 *= 1.0+(VAR_3&3)*0.25; VAR_4 *= 1<<((VAR_3>>2)-1); VAR_4 *= (double)(EG_ENT<<ENV_BITS); VAR_0->AR_TABLE[VAR_3] = VAR_4 / VAR_1; VAR_0->DR_TABLE[VAR_3] = VAR_4 / VAR_2; } for (VAR_3 = 60;VAR_3 < 76;VAR_3++) { VAR_0->AR_TABLE[VAR_3] = EG_AED-1; VAR_0->DR_TABLE[VAR_3] = VAR_0->DR_TABLE[60]; } #if 0
for (VAR_3 = 0;VAR_3 < 64 ;VAR_3++){ LOG(LOG_WAR,("VAR_4 %2d , ar %f ms , dr %f ms \n",VAR_3,
((double)(EG_ENT<<ENV_BITS) / VAR_0->AR_TABLE[VAR_3]) * (1000.0 / VAR_0->VAR_4),
((double)(EG_ENT<<ENV_BITS) / VAR_0->DR_TABLE[VAR_3]) * (1000.0 / VAR_0->VAR_4) )); } #endif
}