?? upsample.s
字號:
.if OUTPUT_MODE == OUT_6CH
; ldw r0, @[a13+2]
ecld a, r0
esla8 a
eld @rp3+d0 ,a ;LS
; ldw r0, @[a13+4]
ecld a, r0
esla8 a
eld @rp3+d0 ,a ;C
; ldw r0, @[a13+6]
.endif
.if OUTPUT_MODE == OUT_8CH
; ldw r0, @[a13+2]
ecld a, r0
esla8 a
eld @rp3+d0 ,a ;L
; ldw r0, @[a13+4]
ecld a, r0
esla8 a
eld @rp3+d0 ,a ;LS
; ldw r0, @[a13+6]
ecld a, r0
esla8 a
eld @rp3+d0 ,a ;C
; ldw r0, @[a13+8]
.endif
; ecld a, r0
; esla8 a
; eld ph, a
; eadd ma1, p
eld a, ma1h
eld @rp3+d0 ,a ;R
.if OUTPUT_MODE == OUT_2CH
add a13, #4
.endif
.if OUTPUT_MODE == OUT_6CH
; ldw r0, @[a13+8]
ecld a, r0
esla8 a
eld @rp3+d0 ,a ;RS
; ldw r0, @[a13+10]
ecld a, r0
esla8 a
eld @rp3+d0 ,a ;W
add a13, #12
.endif
.if OUTPUT_MODE == OUT_8CH
; ldw r0, @[a13+10]
ecld a, r0
esla8 a
eld @rp3+d0 ,a ;R
; ldw r0, @[a13+12]
ecld a, r0
esla8 a
eld @rp3+d0 ,a ;RS
; ldw r0, @[a13+14]
ecld a, r0
esla8 a
eld @rp3+d0 ,a ;W
add a13, #16
.endif
dt r6
brfd Nomix_main
add r7, r3
upsampleEnd:
ecld b ,r7
efz8 b
eld rp1 ,#Mix_readOffset
eld @rp1+d0 ,b
ld a13 ,#SFR_BASE
ldw r0 ,@[a13+rSBL0OFF+0]
ldw r2 ,@[a13+rSBL0OFF+2]
ecld ah ,r0
ecld a ,r2
eld Up_ReadOffset, a
Up_Mix_end:
er psh1
er opm
pop a14 ,a13
pop r7 ,r6
pop r5 ,r4
pop r3 ,r2
pop r0 ,r1
ret
//======================================================================
//9.45KHz(110 sample) => 32KHz(320 sample)
//189 sample => 567 sample
//(8*3+7)*18 + 9 = 567
//(9*3+8)*18 + 10 = 640
//Input:rp0
//Output: output_L2 and output_R2
//======================================================================
_resamp_32::
push r6 ,r7
eld sd0 ,#0x1010
eld rp1 ,#output
ld r6 ,#(110-1)
upsample_F32:
eld a ,@rp0+s1 ;L side
eld @rp1+d1 ,a
eld @rp1+d1 ,a
bnzd r6 ,upsample_F32
eld @rp1+d1 ,a
//L side===============================
eld rp1 ,#output
eld rp2 ,#output2
ld r6 ,#10
loop_32:
ld r7 ,#(16-1)
loop_32_01:
eld a ,@rp1+s1
eld @rp2+d1 ,a
eld a ,@rp1+s1
bnzd r7 ,loop_32_01 ;9*3
eld @rp2+d1 ,a
erpn rp1 ,#1
dt r6
brf loop_32 ;(9*3+8)*18
pop r7, r6
ret
//======================================================================
//9.45KHz(189 sample) => 44.1KHz(882 sample)
//189*4 = 756 882-756 = 126 756/126=6
//6*126 = 756
//7*126 = 882
//Input:rp0
//Output: output_L2 and output_R2
//======================================================================
_resamp_441::
push r6 ,r7
eld sd0 ,#0x1010
eld rp1 ,#output
ld r6 ,#(110-1)
upsample_F441:
eld a ,@rp0+s1
eld @rp1+d1 ,a
eld @rp1+d1 ,a
eld @rp1+d1 ,a
bnzd r6 ,upsample_F441
eld @rp1+d1 ,a
//L side===============================
eld rp1 ,#output
eld rp2 ,#output2
ld r6 ,#(110-1) ;220/2
loop_441:
eld a ,@rp1+s1
eld @rp2+d1 ,a
eld a ,@rp1+s1
bnzd r6 ,loop_441
eld @rp2+d1 ,a
eld @rp2+d1 ,a
ld r6 ,#(110-1) ;220/2
loop_4412:
eld a ,@rp1+s1
eld @rp2+d1 ,a
eld a ,@rp1+s1
bnzd r6 ,loop_4412
eld @rp2+d1 ,a
pop r7, r6
ret
//======================================================================
//9.45KHz(189 sample) => 48KHz(960 sample)
//189*5 = 945 960-945 = 15 945/15=63
//63*15 = 945
//64*15 = 960
//Input:rp0
//Output: output_L2 and output_R2
//======================================================================
_resamp_48::
push r6 ,r7
eld sd0 ,#0x1010
eld rp1 ,#output
ld r6 ,#(110-1)
upsample_F48:
eld a ,@rp0+s1
eld @rp1+d1 ,a
eld @rp1+d1 ,a
eld @rp1+d1 ,a
bnzd r6 ,upsample_F48
eld @rp1+d1 ,a
//L side===============================
eld rp1 ,#output
eld rp2 ,#output2
ld r6 ,#40
loop_48:
ld r7 ,#(5-1) ;10/2
subloop_48:
eld a ,@rp1+s1
eld @rp2+d1 ,a
eld a ,@rp1+s1
bnzd r7 ,subloop_48 ;62
eld @rp2+d1 ,a
eld a ,@rp1+s1
eld @rp2+d1 ,a
eld @rp2+d1 ,a ;64
dt r6
brf loop_48 ;64*15
pop r7, r6
ret
//======================================================LPF
//r6:1 frame size. 32KHz:640 44.1KHz:882 48KHz:960
//rp1:Input
//Rp2:Output
//
//==========================================================
_LFE_pass::
push r6, r7
eld sd0, #0x20f0
eld sd3, #0x20f1
esec0 #2
esec1 #3
lfe_main:
ld r7, #9
eld rp0, #(x+1)
eld rp3, #(y+1)
coef_re:
eld x0, @rp0+s1
eld y0, @rp3+s1
eld @rp0+d1, x0
bnzd r7, coef_re
eld @rp3+d1, y0
eld a, @rp1+s1 ;lfe_temp = (float) *lfe_str2++
esra a ;lfe_temp/2 ;chnage EJY 20050621
erpn rp0 ,#-1
eld @rp0+d0, a ;rp0 = x[10]
ld r7, #9
eld rp0, #(x+10)
eld a, coeb_add
eld rp3, a ;#coe_b
ecr ma0 ;ma0 = y[10]
eld x1, @rp0+s1, y1, @rp3+s0
emul x1y1, x1, @rp0+s1, y1, @rp3+s0
filter_bx:
bnzd r7, $
emad ma0, x1y1, x1, @rp0+s1, y1, @rp3+s0
eadd ma0, p
ld r7, #8
eld rp0, #(y+9)
eld a, coea_add
eld rp3, a ;#coe_a
eld x1, @rp0+s1, y1, @rp3+s0
emul x1y1, x1, @rp0+s1, y1, @rp3+s0
filter_ay:
bnzd r7, $
emsb ma0, x1y1, x1, @rp0+s1, y1, @rp3+s0
esub ma0, p ;Q19
esla ma0
esla ma0
esla ma0
esla ma0
esla ma0 ;output/2 For Mixer
; eld @rp2+d1, ma0h
esla ma0
eld rp3, #(y+10)
eld @rp3+d0, ma0h
esla ma0 ;chnage EJY 20050621
eld @rp2+d1, ma0h
dt r6
brf lfe_main
pop r7, r6
ret
init_upsampler:
.ifndef KARAOKE_INTEGRATED
ld r1 ,#1
ldw @[a10+UP_CodecStartFlag] ,r1
.endif
ld r6 ,#6181-1 ;2291 = X Memory size(9164)/4
eld a ,#0
eld rp1 ,#XDelayBuf_me
; ld r6 ,#200-1 ;2291 = X Memory size(9164)/4
upmem_clear:
; eld @rp1+d1 ,a
; eld @rp1+d1 ,a
; eld @rp1+d1 ,a
bnzd r6 ,upmem_clear
eld @rp1+d1 ,a
/*
ld r6 ,#1800-1 ;2291 = X Memory size(9164)/4
upmem_clear1:
eld @rp1+d1 ,a
eld @rp1+d1 ,a
eld @rp1+d1 ,a
bnzd r6 ,upmem_clear1
eld @rp1+d1 ,a
ld r6 ,#291-1 ;2291 = X Memory size(9164)/4
upmem_clear2:
eld @rp1+d1 ,a
eld @rp1+d1 ,a
eld @rp1+d1 ,a
bnzd r6 ,upmem_clear2
eld @rp1+d1 ,a
*/
//.ifndef KARAOKE_INTEGRATED
jsr _load_table
jsr _mac_init
//.endif
ldw r1, @[a10+iPOST_MIC_IN_BUF_START_PTR+0]
ldw r0, @[a10+iPOST_MIC_IN_BUF_START_PTR+2]
ecld ah, r1
ecld a, r0
eld Up_ReadOffset, a
eld a, #0
eld b, a
ldw r0 ,@[a10+iPOST_SAMPLE_RATE+2]
cmp eq, r0, #0x1F40 ;8000Hz
brt table_8
cmp eq, r0, #0x2B11 ;11052Hz
brt table_441
cmp eq, r0, #12000 ;12000Hz
brt table_48
cmp eq, r0, #0x3E80 ;16000Hz
brt table_32
cmp eq, r0, #0x5622 ;22050Hz
brt table_441
cmp eq, r0, #0x5DC0 ;24000Hz
brt table_48
cmp eq ,r0 ,#0x7D00 ;32000Hz
brt table_32
cmp eq ,r0 ,#0xAC44 ;44100Hz
brt table_441
cmp eq ,r0 ,#0xBB80 ;48000Hz
brt table_48
table_8:
eld rp2 ,#coeb_add
eld a ,#coe_b8
efz8 a
eld @rp2+d1 ,a
eld a ,#coe_a8
efz8 a
eld @rp2+d1 ,a
jmp Up_Mix_end
table_32:
eld rp2 ,#coeb_add
eld a ,#coe_b32
efz8 a
eld @rp2+d1 ,a
eld a ,#coe_a32
efz8 a
eld @rp2+d1 ,a
jmp Up_Mix_end
table_441:
eld rp2 ,#coeb_add
eld a ,#coe_b441
efz8 a
eld @rp2+d1 ,a
eld a ,#coe_a441
efz8 a
eld @rp2+d1 ,a
jmp Up_Mix_end
table_48:
eld rp2 ,#coeb_add
eld a ,#coe_b48
efz8 a
eld @rp2+d1 ,a
eld a ,#coe_a48
efz8 a
eld @rp2+d1 ,a
jmp Up_Mix_end
.if 1 //ndef KARAOKE_MIXER_SUPPORTED
_mac_init::
push r0, r1
push a8, a9
eld a, #0
eld msr0, a
eld msr1, a
eld msr2, a
//SB init
ld a8, #ADM_BASE ;CONFIG0
ldw r0, @[a8+0]
and r0, #0xf0
ld r1 ,#0xE600
or r0, r1
ldw @[a8], r0
ld r0, #0
eld a, #0
eld b, a
//SB0 Init
ldw @[a8+rSB0OFF_H], r0 ;init SB0 offset
ldw @[a8+rSB0OFF_L], r0
ldw @[a8+rSB0BEGIN_H], r0 ;init SB0BEGIN_H
ldw @[a8+rSB0BEGIN_L], r0 ;init SB0BEGIN_L
ld r1, #0x2000
ldw @[a8+rSB0END_H], r0 ;init SB0BEGIN_H
ldw @[a8+rSB0END_L], r1 ;init SB0BEGIN_L
//SB1 Init
ldw @[a8+rSB1OFF_H], r0 ;init SB1 offset
ldw @[a8+rSB1OFF_L], r0
ldw @[a8+rSB1BEGIN_H], r0 ;init SB1BEGIN_H
ldw @[a8+rSB1BEGIN_L], r0 ;init SB1BEGIN_L
ld r1, #0x2400
ldw @[a8+rSB1END_H], r0 ;init SB1BEGIN_H
ldw @[a8+rSB1END_L], r1 ;init SB1BEGIN_L
pop a9, a8
pop r1, r0
ret
.extern |MEMORY$$y_memory_def$$LOAD|
.extern |MEMORY$$y_memory_def$$SIZE|
.extern |MEMORY$$y_memory_def$$START|
.extern |KARAOKE_MEM$$sec_KaraokeTable$$LOAD|
.extern |KARAOKE_MEM$$sec_KaraokeTable$$SIZE|
.extern |KARAOKE_MEM$$sec_KaraokeTable$$START|
//load_table section code
// load_table
_load_table::
push R4, R6
push A11, A12
push A13
ld R6, #|KARAOKE_MEM$$sec_KaraokeTable$$SIZE|
cmp eq, R6, #0
brt $ ; for debug
sub R6, #1
ld A11, #|KARAOKE_MEM$$sec_KaraokeTable$$LOAD|
ld A12, #0x220000+(TABLE_START_ADDRESS-0x8000)*2
ld A13, #0x220000+(TABLE_START_ADDRESS-0x8000)*2 + 0x10000
ldc R4, @A11
%1
push R4
srb R4
ldb @[A13+1], R4
pop R4
and R4, #0x00ff
ldb @[A12+0], R4
add A11, #2
add A13, #2
ldc R4, @A11
push R4
srb R4
ldb @[A12+1], R4
pop R4
and R4, #0x00ff
ldb @[A13+1], R4
add A11, #2
add A12, #2
add A13, #2
ldc R4, @A11
ldw @[A12+0], R4
add A11, #2
add A12, #2
sub R6, #1
bnzd R6, %b1
ldc R4, @A11
pop A13
pop A12, A11
pop R6, R4
ret
.endif /* ifndef KARAOKE_MIXER_SUPPORTED */
.endif /* if KARAOKE_MIXER_SUPPORTED == 1 */
.end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -