Loading lib_com/env_adj_fx.c +8 −0 Original line number Diff line number Diff line Loading @@ -104,7 +104,11 @@ void env_adj_fx IF( EQ_16(att_state, 1)) /* End of attenuation region found */ { /* tmp = min(1, max(0, len-ENV_ADJ_START)*(1.0f/ENV_ADJ_INCL)); */ #ifdef BASOP_NOGLOB tmp = round_fx_sat(L_shl_sat(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */ #else tmp = round_fx(L_shl(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */ #endif tmp_diff = sub(MAX_16, tmp); /* Q15 */ move16(); FOR( j = start; j < i ; j++ ) { Loading Loading @@ -144,7 +148,11 @@ void env_adj_fx IF( EQ_16(att_state, 1)) { /* tmp = min(1, max(0, len-ENV_ADJ_START)*(1.0f/ENV_ADJ_INCL)); */ #ifdef BASOP_NOGLOB tmp = round_fx_sat(L_shl_sat(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */ #else tmp = round_fx(L_shl(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */ #endif tmp_diff = sub(MAX_16, tmp); /* Q15 */ move16(); FOR( j = start; j < i ; j++ ) { Loading lib_com/tools_fx.c +4 −1 Original line number Diff line number Diff line Loading @@ -34,8 +34,11 @@ Word16 usdequant_fx( /* Qx*/ /*g = idx * delta + qlow;*/ L_tmp = L_deposit_l(qlow);/*Qx */ L_tmp = L_mac(L_tmp,idx,delta);/*Qx */ #ifdef BASOP_NOGLOB g = round_fx_sat(L_shl_sat(L_tmp,16)); /*Qx */ #else g = round_fx(L_shl(L_tmp,16)); /*Qx */ #endif return( g ); } Loading lib_com/trans_inv_fx.c +17 −12 Original line number Diff line number Diff line Loading @@ -86,9 +86,7 @@ void preecho_sb_fx( UWord16 tmp_u16; Word32 mean_prev_hb_fx_loc, mean_prev_nc_fx_loc, mean_prev_fx_loc; /* */ Word16 q16p1, qmemp1, qtmp; #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; #endif q16p1 = add(q_sig16, 1); qmemp1 = q16p1; Loading @@ -98,7 +96,7 @@ void preecho_sb_fx( mean_prev_fx_loc = L_add(*mean_prev_fx, 0); #ifdef BASOP_NOGLOB mean_prev_hb_fx_loc = L_shl_o(*mean_prev_hb_fx, shl(q_sig16, 1), &Overflow); /*Q0 to q_sig16*/ mean_prev_hb_fx_loc = L_shl_sat(*mean_prev_hb_fx, shl(q_sig16, 1)); /*Q0 to q_sig16*/ #else mean_prev_hb_fx_loc = L_shl(*mean_prev_hb_fx, shl(q_sig16,1)); /*Q0 to q_sig16*/ #endif Loading Loading @@ -192,7 +190,7 @@ void preecho_sb_fx( fxptr4 = rec_sig_fx + 2; #ifdef BASOP_NOGLOB tmp_fxL1 = L_mult(shl_o(*memfilt_lb_fx, q_sig16, &Overflow), 8192); /* *memfilt_lb_fx in q0 */ tmp_fxL1 = L_mult(shl_sat(*memfilt_lb_fx, q_sig16), 8192); /* *memfilt_lb_fx in q0 */ #else tmp_fxL1 = L_mult(shl(*memfilt_lb_fx, q_sig16), 8192); /* *memfilt_lb_fx in q0 */ #endif Loading Loading @@ -275,8 +273,11 @@ void preecho_sb_fx( move32(); } tmp_fx1 = shr(*fxptr2, q16p1); /*q-1 to avoisd saturation in energy*/ #ifdef BASOP_NOGLOB tmp_fxL1 = L_mac0_sat(tmp_fxL1, tmp_fx1, tmp_fx1); #else tmp_fxL1 = L_mac0(tmp_fxL1, tmp_fx1, tmp_fx1); #endif tmp_fxL2 = L_mac0(tmp_fxL2, *fxptr3, *fxptr3); cntnzcr = add(cntnzcr, 1); IF( L_mult0(*fxptr2, *(fxptr2-1)) <= 0 ) Loading Loading @@ -431,7 +432,7 @@ void preecho_sb_fx( } #ifdef BASOP_NOGLOB if( LT_32(max_es_fx, L_shl_o(mean_prev_fx_loc, 2, &Overflow)))/*OK if saturated*/ if( LT_32(max_es_fx, L_shl_sat(mean_prev_fx_loc, 2)))/*OK if saturated*/ #else if( LT_32(max_es_fx, L_shl(mean_prev_fx_loc, 2)))/*OK if saturated*/ #endif Loading Loading @@ -677,7 +678,7 @@ void preecho_sb_fx( } #ifdef BASOP_NOGLOB sum_plus_es_fx = L_add_o(sum_plus_es_fx, L_shl(tmp_fxL1, 2), &Overflow); sum_plus_es_fx = L_add_sat(sum_plus_es_fx, L_shl_sat(tmp_fxL1, 2)); #else sum_plus_es_fx = L_add(sum_plus_es_fx, L_shl(tmp_fxL1, 2)); #endif Loading Loading @@ -855,7 +856,7 @@ void preecho_sb_fx( FOR(j = 0; j < smooth_len; j++) { #ifdef BASOP_NOGLOB *fxptr1 = add_o(*fxptr1, tmp_fx1, &Overflow); *fxptr1 = add_sat(*fxptr1, tmp_fx1); #else *fxptr1 = add(*fxptr1, tmp_fx1); #endif Loading Loading @@ -897,7 +898,7 @@ void preecho_sb_fx( savehalfe_fx = L_add(mean_prev_nc_fx_loc, 0); } #ifdef BASOP_NOGLOB mean_prev_nc_fx_loc = L_add_o(mean_prev_nc_fx_loc, es_mdct_fx[i], &Overflow); mean_prev_nc_fx_loc = L_add_sat(mean_prev_nc_fx_loc, es_mdct_fx[i]); #else mean_prev_nc_fx_loc = L_add(mean_prev_nc_fx_loc, es_mdct_fx[i]); #endif Loading @@ -906,7 +907,7 @@ void preecho_sb_fx( if( LT_32(savehalfe_fx, L_shr(mean_prev_nc_fx_loc,1) )) { #ifdef BASOP_NOGLOB mean_prev_nc_fx_loc = L_shl_o(L_sub_o(mean_prev_nc_fx_loc, savehalfe_fx, &Overflow), 1, &Overflow); mean_prev_nc_fx_loc = L_shl_sat(L_sub_sat(mean_prev_nc_fx_loc, savehalfe_fx), 1); #else mean_prev_nc_fx_loc = L_shl(L_sub(mean_prev_nc_fx_loc, savehalfe_fx), 1); #endif Loading Loading @@ -950,9 +951,13 @@ void preecho_sb_fx( mean_prev_hb_fx_loc = L_shl(tmp_fxL1, 1); } #ifdef BASOP_NOGLOB last2_fx = L_shr(L_add_sat(es_mdct_fx[NUMSF_M1], es_mdct_fx[NUMSF_M2]), 1); last2_hb_fx = L_shr(L_add_sat(es_mdct_hb_fx[NUMSF_M1], es_mdct_hb_fx[NUMSF_M2]), 1); #else last2_fx = L_shr(L_add(es_mdct_fx[NUMSF_M1], es_mdct_fx[NUMSF_M2]), 1); last2_hb_fx = L_shr(L_add(es_mdct_hb_fx[NUMSF_M1], es_mdct_hb_fx[NUMSF_M2]), 1); #endif if( GT_32(last2_fx, mean_prev_fx_loc)) { mean_prev_fx_loc = L_add(last2_fx, 0); Loading lib_dec/FEC_pitch_estim_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -57,7 +57,11 @@ void FEC_pitch_estim_fx( tmp3 = shl(tmp2,1); /*Q6 (1.4f * old_pitch_buf[2*NB_SUBFR-1])*/ tmp16k1 = round_fx(L_shl(Mpy_32_16_1(old_pitch_buf[2*NB_SUBFR16k-1],22938), 6)); /*Q6 0.7f * old_pitch_buf[2*NB_SUBFR16k-1]*/ #ifdef BASOP_NOGLOB tmp16k2 = shl_sat(tmp16k1,1); /*Q6 1.4f * old_pitch_buf[2*NB_SUBFR16k-1]*/ #else tmp16k2 = shl(tmp16k1,1); /*Q6 1.4f * old_pitch_buf[2*NB_SUBFR16k-1]*/ #endif #ifdef IVAS_CODE test(); test(); IF (EQ_16(last_core, HQ_CORE) || EQ_16(last_core, TCX_20_CORE) || EQ_16(last_core, TCX_10_CORE)) Loading lib_dec/er_dec_tcx.c +8 −7 Original line number Diff line number Diff line Loading @@ -168,9 +168,6 @@ void con_tcx( HQ_DEC_HANDLE hHQ_core; TCX_LTP_DEC_HANDLE hTcxLtpDec; TCX_DEC_HANDLE hTcxDec; #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; #endif hTcxLtpDec = st->hTcxLtpDec; hHQ_core = st->hHQ_core; Loading Loading @@ -521,7 +518,7 @@ void con_tcx( ELSE { #ifdef BASOP_NOGLOB st->cummulative_damping = shl_o(mult_ro(st->cummulative_damping/*Q15*/,alpha/*Q14*/, &Overflow),1, &Overflow)/*Q15*/; st->cummulative_damping = shl_sat(mult_r_sat(st->cummulative_damping/*Q15*/,alpha/*Q14*/),1)/*Q15*/; #else st->cummulative_damping = shl(mult_r(st->cummulative_damping/*Q15*/,alpha/*Q14*/),1)/*Q15*/; #endif Loading @@ -548,9 +545,9 @@ void con_tcx( FOR ( i=offset; i < tmp_loop; i++ ) { #ifdef BASOP_NOGLOB exc[i] = mult_r(exc[i], round_fx_o(gain32, &Overflow))/*Q1*/; exc[i] = mult_r(exc[i], round_fx_sat(gain32))/*Q1*/; move16(); gain32 = L_sub_o(gain32, step32, &Overflow); gain32 = L_sub_sat(gain32, step32); #else exc[i] = mult_r(exc[i],round_fx(gain32))/*Q1*/; move16(); Loading Loading @@ -864,7 +861,7 @@ void con_tcx( FOR( i=0 ; i< tmp16; i++ ) { #ifdef BASOP_NOGLOB exc[i] = add_o(exc[i], shl(noise[i + (L_FIR_FER2 / 2)], Q_exc + noise_e), &Overflow);/*Q1*/ move16(); exc[i] = add_sat(exc[i], shl(noise[i + (L_FIR_FER2 / 2)], Q_exc + noise_e));/*Q1*/ move16(); #else exc[i] = add(exc[i] , shl(noise[i+(L_FIR_FER2/2)],Q_exc+noise_e));/*Q1*/ move16(); #endif Loading Loading @@ -1007,7 +1004,11 @@ void con_tcx( lerp(syn, st->hWIDec->old_syn2_fx, L_EXC_MEM, L_frame); } #ifdef BASOP_NOGLOB st->bfi_pitch_fx/*Q6*/ = round_fx_sat(L_shl_sat(pitch_buf[st->nb_subfr-1]/*15Q16*/,6/*Q6*/)); #else st->bfi_pitch_fx/*Q6*/ = round_fx(L_shl(pitch_buf[st->nb_subfr-1]/*15Q16*/,6/*Q6*/)); #endif move16(); st->bfi_pitch_frame_fx = st->L_frame_fx; move16(); Loading Loading
lib_com/env_adj_fx.c +8 −0 Original line number Diff line number Diff line Loading @@ -104,7 +104,11 @@ void env_adj_fx IF( EQ_16(att_state, 1)) /* End of attenuation region found */ { /* tmp = min(1, max(0, len-ENV_ADJ_START)*(1.0f/ENV_ADJ_INCL)); */ #ifdef BASOP_NOGLOB tmp = round_fx_sat(L_shl_sat(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */ #else tmp = round_fx(L_shl(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */ #endif tmp_diff = sub(MAX_16, tmp); /* Q15 */ move16(); FOR( j = start; j < i ; j++ ) { Loading Loading @@ -144,7 +148,11 @@ void env_adj_fx IF( EQ_16(att_state, 1)) { /* tmp = min(1, max(0, len-ENV_ADJ_START)*(1.0f/ENV_ADJ_INCL)); */ #ifdef BASOP_NOGLOB tmp = round_fx_sat(L_shl_sat(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */ #else tmp = round_fx(L_shl(L_mult0(s_max( 0, sub(len, ENV_ADJ_START_FX)), ENV_ADJ_INV_INCL_FX),16)); /* Q15 (15+16-16) */ #endif tmp_diff = sub(MAX_16, tmp); /* Q15 */ move16(); FOR( j = start; j < i ; j++ ) { Loading
lib_com/tools_fx.c +4 −1 Original line number Diff line number Diff line Loading @@ -34,8 +34,11 @@ Word16 usdequant_fx( /* Qx*/ /*g = idx * delta + qlow;*/ L_tmp = L_deposit_l(qlow);/*Qx */ L_tmp = L_mac(L_tmp,idx,delta);/*Qx */ #ifdef BASOP_NOGLOB g = round_fx_sat(L_shl_sat(L_tmp,16)); /*Qx */ #else g = round_fx(L_shl(L_tmp,16)); /*Qx */ #endif return( g ); } Loading
lib_com/trans_inv_fx.c +17 −12 Original line number Diff line number Diff line Loading @@ -86,9 +86,7 @@ void preecho_sb_fx( UWord16 tmp_u16; Word32 mean_prev_hb_fx_loc, mean_prev_nc_fx_loc, mean_prev_fx_loc; /* */ Word16 q16p1, qmemp1, qtmp; #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; #endif q16p1 = add(q_sig16, 1); qmemp1 = q16p1; Loading @@ -98,7 +96,7 @@ void preecho_sb_fx( mean_prev_fx_loc = L_add(*mean_prev_fx, 0); #ifdef BASOP_NOGLOB mean_prev_hb_fx_loc = L_shl_o(*mean_prev_hb_fx, shl(q_sig16, 1), &Overflow); /*Q0 to q_sig16*/ mean_prev_hb_fx_loc = L_shl_sat(*mean_prev_hb_fx, shl(q_sig16, 1)); /*Q0 to q_sig16*/ #else mean_prev_hb_fx_loc = L_shl(*mean_prev_hb_fx, shl(q_sig16,1)); /*Q0 to q_sig16*/ #endif Loading Loading @@ -192,7 +190,7 @@ void preecho_sb_fx( fxptr4 = rec_sig_fx + 2; #ifdef BASOP_NOGLOB tmp_fxL1 = L_mult(shl_o(*memfilt_lb_fx, q_sig16, &Overflow), 8192); /* *memfilt_lb_fx in q0 */ tmp_fxL1 = L_mult(shl_sat(*memfilt_lb_fx, q_sig16), 8192); /* *memfilt_lb_fx in q0 */ #else tmp_fxL1 = L_mult(shl(*memfilt_lb_fx, q_sig16), 8192); /* *memfilt_lb_fx in q0 */ #endif Loading Loading @@ -275,8 +273,11 @@ void preecho_sb_fx( move32(); } tmp_fx1 = shr(*fxptr2, q16p1); /*q-1 to avoisd saturation in energy*/ #ifdef BASOP_NOGLOB tmp_fxL1 = L_mac0_sat(tmp_fxL1, tmp_fx1, tmp_fx1); #else tmp_fxL1 = L_mac0(tmp_fxL1, tmp_fx1, tmp_fx1); #endif tmp_fxL2 = L_mac0(tmp_fxL2, *fxptr3, *fxptr3); cntnzcr = add(cntnzcr, 1); IF( L_mult0(*fxptr2, *(fxptr2-1)) <= 0 ) Loading Loading @@ -431,7 +432,7 @@ void preecho_sb_fx( } #ifdef BASOP_NOGLOB if( LT_32(max_es_fx, L_shl_o(mean_prev_fx_loc, 2, &Overflow)))/*OK if saturated*/ if( LT_32(max_es_fx, L_shl_sat(mean_prev_fx_loc, 2)))/*OK if saturated*/ #else if( LT_32(max_es_fx, L_shl(mean_prev_fx_loc, 2)))/*OK if saturated*/ #endif Loading Loading @@ -677,7 +678,7 @@ void preecho_sb_fx( } #ifdef BASOP_NOGLOB sum_plus_es_fx = L_add_o(sum_plus_es_fx, L_shl(tmp_fxL1, 2), &Overflow); sum_plus_es_fx = L_add_sat(sum_plus_es_fx, L_shl_sat(tmp_fxL1, 2)); #else sum_plus_es_fx = L_add(sum_plus_es_fx, L_shl(tmp_fxL1, 2)); #endif Loading Loading @@ -855,7 +856,7 @@ void preecho_sb_fx( FOR(j = 0; j < smooth_len; j++) { #ifdef BASOP_NOGLOB *fxptr1 = add_o(*fxptr1, tmp_fx1, &Overflow); *fxptr1 = add_sat(*fxptr1, tmp_fx1); #else *fxptr1 = add(*fxptr1, tmp_fx1); #endif Loading Loading @@ -897,7 +898,7 @@ void preecho_sb_fx( savehalfe_fx = L_add(mean_prev_nc_fx_loc, 0); } #ifdef BASOP_NOGLOB mean_prev_nc_fx_loc = L_add_o(mean_prev_nc_fx_loc, es_mdct_fx[i], &Overflow); mean_prev_nc_fx_loc = L_add_sat(mean_prev_nc_fx_loc, es_mdct_fx[i]); #else mean_prev_nc_fx_loc = L_add(mean_prev_nc_fx_loc, es_mdct_fx[i]); #endif Loading @@ -906,7 +907,7 @@ void preecho_sb_fx( if( LT_32(savehalfe_fx, L_shr(mean_prev_nc_fx_loc,1) )) { #ifdef BASOP_NOGLOB mean_prev_nc_fx_loc = L_shl_o(L_sub_o(mean_prev_nc_fx_loc, savehalfe_fx, &Overflow), 1, &Overflow); mean_prev_nc_fx_loc = L_shl_sat(L_sub_sat(mean_prev_nc_fx_loc, savehalfe_fx), 1); #else mean_prev_nc_fx_loc = L_shl(L_sub(mean_prev_nc_fx_loc, savehalfe_fx), 1); #endif Loading Loading @@ -950,9 +951,13 @@ void preecho_sb_fx( mean_prev_hb_fx_loc = L_shl(tmp_fxL1, 1); } #ifdef BASOP_NOGLOB last2_fx = L_shr(L_add_sat(es_mdct_fx[NUMSF_M1], es_mdct_fx[NUMSF_M2]), 1); last2_hb_fx = L_shr(L_add_sat(es_mdct_hb_fx[NUMSF_M1], es_mdct_hb_fx[NUMSF_M2]), 1); #else last2_fx = L_shr(L_add(es_mdct_fx[NUMSF_M1], es_mdct_fx[NUMSF_M2]), 1); last2_hb_fx = L_shr(L_add(es_mdct_hb_fx[NUMSF_M1], es_mdct_hb_fx[NUMSF_M2]), 1); #endif if( GT_32(last2_fx, mean_prev_fx_loc)) { mean_prev_fx_loc = L_add(last2_fx, 0); Loading
lib_dec/FEC_pitch_estim_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -57,7 +57,11 @@ void FEC_pitch_estim_fx( tmp3 = shl(tmp2,1); /*Q6 (1.4f * old_pitch_buf[2*NB_SUBFR-1])*/ tmp16k1 = round_fx(L_shl(Mpy_32_16_1(old_pitch_buf[2*NB_SUBFR16k-1],22938), 6)); /*Q6 0.7f * old_pitch_buf[2*NB_SUBFR16k-1]*/ #ifdef BASOP_NOGLOB tmp16k2 = shl_sat(tmp16k1,1); /*Q6 1.4f * old_pitch_buf[2*NB_SUBFR16k-1]*/ #else tmp16k2 = shl(tmp16k1,1); /*Q6 1.4f * old_pitch_buf[2*NB_SUBFR16k-1]*/ #endif #ifdef IVAS_CODE test(); test(); IF (EQ_16(last_core, HQ_CORE) || EQ_16(last_core, TCX_20_CORE) || EQ_16(last_core, TCX_10_CORE)) Loading
lib_dec/er_dec_tcx.c +8 −7 Original line number Diff line number Diff line Loading @@ -168,9 +168,6 @@ void con_tcx( HQ_DEC_HANDLE hHQ_core; TCX_LTP_DEC_HANDLE hTcxLtpDec; TCX_DEC_HANDLE hTcxDec; #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; #endif hTcxLtpDec = st->hTcxLtpDec; hHQ_core = st->hHQ_core; Loading Loading @@ -521,7 +518,7 @@ void con_tcx( ELSE { #ifdef BASOP_NOGLOB st->cummulative_damping = shl_o(mult_ro(st->cummulative_damping/*Q15*/,alpha/*Q14*/, &Overflow),1, &Overflow)/*Q15*/; st->cummulative_damping = shl_sat(mult_r_sat(st->cummulative_damping/*Q15*/,alpha/*Q14*/),1)/*Q15*/; #else st->cummulative_damping = shl(mult_r(st->cummulative_damping/*Q15*/,alpha/*Q14*/),1)/*Q15*/; #endif Loading @@ -548,9 +545,9 @@ void con_tcx( FOR ( i=offset; i < tmp_loop; i++ ) { #ifdef BASOP_NOGLOB exc[i] = mult_r(exc[i], round_fx_o(gain32, &Overflow))/*Q1*/; exc[i] = mult_r(exc[i], round_fx_sat(gain32))/*Q1*/; move16(); gain32 = L_sub_o(gain32, step32, &Overflow); gain32 = L_sub_sat(gain32, step32); #else exc[i] = mult_r(exc[i],round_fx(gain32))/*Q1*/; move16(); Loading Loading @@ -864,7 +861,7 @@ void con_tcx( FOR( i=0 ; i< tmp16; i++ ) { #ifdef BASOP_NOGLOB exc[i] = add_o(exc[i], shl(noise[i + (L_FIR_FER2 / 2)], Q_exc + noise_e), &Overflow);/*Q1*/ move16(); exc[i] = add_sat(exc[i], shl(noise[i + (L_FIR_FER2 / 2)], Q_exc + noise_e));/*Q1*/ move16(); #else exc[i] = add(exc[i] , shl(noise[i+(L_FIR_FER2/2)],Q_exc+noise_e));/*Q1*/ move16(); #endif Loading Loading @@ -1007,7 +1004,11 @@ void con_tcx( lerp(syn, st->hWIDec->old_syn2_fx, L_EXC_MEM, L_frame); } #ifdef BASOP_NOGLOB st->bfi_pitch_fx/*Q6*/ = round_fx_sat(L_shl_sat(pitch_buf[st->nb_subfr-1]/*15Q16*/,6/*Q6*/)); #else st->bfi_pitch_fx/*Q6*/ = round_fx(L_shl(pitch_buf[st->nb_subfr-1]/*15Q16*/,6/*Q6*/)); #endif move16(); st->bfi_pitch_frame_fx = st->L_frame_fx; move16(); Loading