?? decl2lib.s
字號:
eld rpd0.index_Gd ,a
eld rp1 ,#tbl_dd
erpn rp1 ,c
eld a ,@rp1+s0
eld rpd0.index_Gdd ,a
eld rp1 ,#tbl_nli
erpn rp1 ,c
eld a ,@rp1+s0
eld rpd0.index_Gnlevels ,a
eld rp1 ,#tbl_grouping
erpn rp1 ,c
eld a ,@rp1+s0
eld rpd0.index_Ggrouping ,a
eld rp1 ,rpd1.index_Grpi
ecp a ,#0
enop
bra ec0 ,Intensity_grouping_zero
// eld d ,a
eld ma1 ,a
eld a ,rpd0.index_Gno_ofbits
eld sa ,a
push a14
jsr GetNBitFromBitstreamOnlyMP3
pop a14
eld a ,sg
eld p ,ma1
push a14
jsr Div24
pop a14
eld Area_samplebuf ,d
eld p ,ma1
push a14
jsr Div24
pop a14
eld Area_samplebuf+1,d
eld p ,ma1
push a14
jsr Div24
pop a14
eld Area_samplebuf+2,d
eld rpd1.index_Grpi ,rp0
eld rp0 ,#Area_samplebuf
eld a ,@rp2+s0
eld rpd0.index_GdequanScale ,a
eld a ,@rp2+s0
eld rpd0.index_GdequanScale2,a
ld r7 ,#3-1
Intensity_grp_quantizer
push a14
jsr DequantizerL2_Sub1Joint
pop a14
eld @rp3+d0 ,a // L
eld @rp3+d0 ,d // R
erpn rp3 ,#62
bnzd r7 ,Intensity_grp_quantizer
nop
erpn rp3 ,#-190
eld rp0 ,rpd1.index_Grpi
jmp DequanIntensity_zeroEnd
Intensity_grouping_zero
eld a ,rpd0.index_Gno_ofbits
eld sa ,a
push a14
jsr GetNBitFromBitstreamOnlyMP3
pop a14
eld a ,sg
eld Area_samplebuf ,a
push a14
jsr GetNBitFromBitstreamOnlyMP3
pop a14
eld a ,sg
eld Area_samplebuf+1,a
push a14
jsr GetNBitFromBitstreamOnlyMP3
pop a14
eld a ,sg
eld Area_samplebuf+2,a
eld rpd1.index_Grpi ,rp0
eld rp0 ,#Area_samplebuf
eld a ,@rp2+s0
eld rpd0.index_GdequanScale ,a
eld a ,@rp2+s0
eld rpd0.index_GdequanScale2,a
ld r7 ,#3-1
Intensity_Notgrp_quantizer
push a14
jsr DequantizerL2_Sub2Joint
pop a14
eld @rp3+d0 ,a // L
eld @rp3+d0 ,d // R
erpn rp3 ,#62
bnzd r7 ,Intensity_Notgrp_quantizer
nop
erpn rp3 ,#-190
eld rp0 ,rpd1.index_Grpi
jmp DequanIntensity_zeroEnd
DequanIntensity_zero
eld a ,#0
eld @rp3+d0 ,a // L
eld @rp3+d0 ,a // R
erpn rp3 ,#62
eld @rp3+d0 ,a
eld @rp3+d0 ,a
erpn rp3 ,#62
eld @rp3+d0 ,a
eld @rp3+d0 ,a
erpn rp3 ,#-128
//
erps rp2+s1 // scalefactor address increase
//
inc r4
DequanIntensity_zeroEnd
inc r2
jmp DequanBound_chk
none_intensityDequan
/////////////////////////////////////////////////////////////////
eld a ,rpd0.index_Gnch // Rest
ecld r2 ,a
eld a ,rpd0.index_Gsblimit
ecld r0 ,a
DequanRestBound_chk
cmp eq ,r0 ,#32
brt none_restDequan
eld a ,#0
eld @rp3+d0 ,a
erpn rp3 ,#63
eld @rp3+d0 ,a
erpn rp3 ,#63
eld @rp3+d0 ,a
erpn rp3 ,#-128
cmp eq ,r2 ,#2
brf mono_rest
eld @rp3+d0 ,a
erpn rp3 ,#63
eld @rp3+d0 ,a
erpn rp3 ,#63
eld @rp3+d0 ,a
erpn rp3 ,#-128
mono_rest
inc r0
jmp DequanRestBound_chk
none_restDequan
es me1
ret
//////////////////////////////////////////////////////////////////////////////////
//
// return : a
//////////////////////////////////////////////////////////////////////////////////
DequantizerL2_Sub1::
eld x0 ,@rp0+s0
eld a ,rpd0.index_Gnlevels
eld y0 ,a
emul x0y0
emld ma0 ,x0y0
esra ma0
eld a ,ma0l
eld d ,rpd0.index_Gm1
eadd a ,d
eld d ,rpd0.index_Gd
eadd a ,d
////////////
// eld ma0 ,a
// eld p ,d
// eadd ma0 ,p
// eld a ,ma0
////////////
eld x0 ,a
eld d ,rpd0.index_Gc
eld y0 ,d
emul x0y0
emld ma0 ,x0y0
esla ma0
eld a ,ma0
eld x0 ,a
eld a ,rpd0.index_GdequanScale
eld y0 ,a
emul x0y0
emld ma0 ,x0y0
esla ma0
eld a ,ma0
ret
//////////////////////////////////////////////////////////////////////////////////
//
// return : a
//////////////////////////////////////////////////////////////////////////////////
DequantizerL2_Sub2::
eld x0 ,@rp0+s0
eld a ,rpd0.index_Gnlevels
eld y0 ,a
emul x0y0
eld d ,sr
eld a ,pl
eld sa ,#-1
esft a ,sa
eld a ,sr
eld sr ,d
eld d ,rpd0.index_Gdd
eadd a ,d
eld d ,p
ecld r0 ,d
cmp eq ,r0 ,#0
brt under_plus1
eld d ,rpd0.index_Gp1
under_plus1
eadd a ,d
eld x0 ,a
eld d ,rpd0.index_Gc
eld y0 ,d
emul x0y0
emld ma0 ,x0y0
esla ma0
eld a ,ma0
eld x0 ,a
eld a ,rpd0.index_GdequanScale
eld y0 ,a
emul x0y0
emld ma0 ,x0y0
esla ma0
eld a ,ma0
ret
//////////////////////////////////////////////////////////////////////////////////
//
// return : a,d
//////////////////////////////////////////////////////////////////////////////////
DequantizerL2_Sub1Joint::
eld x0 ,@rp0+s0
eld a ,rpd0.index_Gnlevels
eld y0 ,a
emul x0y0
emld ma0 ,x0y0
esra ma0
eld a ,ma0l
eld d ,rpd0.index_Gm1
eadd a ,d
eld d ,rpd0.index_Gd
eadd a ,d
////////////
// eld ma0 ,a
// eld p ,d
// eadd ma0 ,p
// eld a ,ma0
////////////
eld x0 ,a
eld d ,rpd0.index_Gc
eld y0 ,d
emul x0y0
emld ma0 ,x0y0
esla ma0
eld a ,ma0
eld x0 ,a
eld a ,rpd0.index_GdequanScale
eld y0 ,a
eld a ,rpd0.index_GdequanScale2
eld y1 ,a
emul x0y0
emld ma0 ,x0y1
esla ma0
eld a ,ma0
emld ma1 ,x0y1
esla ma1
eld d ,ma1
ret
//////////////////////////////////////////////////////////////////////////////////
//
// return : a,d
//////////////////////////////////////////////////////////////////////////////////
DequantizerL2_Sub2Joint::
eld x0 ,@rp0+s0
eld a ,rpd0.index_Gnlevels
eld y0 ,a
emul x0y0
eld d ,sr
eld a ,pl
eld sa ,#-1
esft a ,sa
eld a ,sr
eld sr ,d
eld d ,rpd0.index_Gdd
eadd a ,d
eld d ,p
ecld r0 ,d
cmp eq ,r0 ,#0
brt under_plus1Joint
eld d ,rpd0.index_Gp1
under_plus1Joint
eadd a ,d
eld x0 ,a
eld d ,rpd0.index_Gc
eld y0 ,d
emul x0y0
emld ma0 ,x0y0
esla ma0
eld a ,ma0
eld x0 ,a
eld a ,rpd0.index_GdequanScale
eld y0 ,a
eld a ,rpd0.index_GdequanScale2
eld y1 ,a
emul x0y0
emld ma0 ,x0y1
esla ma0
eld a ,ma0
emld ma1 ,x0y1
esla ma1
eld d ,ma1
ret
//////////////////////////////////////////////////////////////////////////////////
//
//
//////////////////////////////////////////////////////////////////////////////////
Separate_channel::
eld a ,rpd0.index_Gnch //2002
ecld r0 ,a //2002
cmp eq ,r0 ,#2 //2002
brf MonoSetL2 //2002
eld rp0 ,#Area_fraction
eld rp2 ,#Area_leftChannel
esd0 s0 ,#0
esd2 d0 ,#1
eld d ,#0
ld r7 ,#32-1
Separate_leftInit
eld c ,#Area_fraction
eadd c ,d
eld rp0 ,c
eadd d ,#2
ld r6 ,#18-1
Separate_left
eld a ,@rp0+s0
erpn rp0 ,#64
bnzd r6 ,Separate_left
eld @rp2+d0 ,a
bnzd r7 ,Separate_leftInit
nop
esd0 s0 ,#1
eld rp0 ,#Area_fraction
eld rp2 ,#Area_rightChannel
esd0 s0 ,#0
esd2 d0 ,#1
eld d ,#0
ld r7 ,#32-1
Separate_rightInit
eld c ,#Area_fraction+1
eadd c ,d
eld rp0 ,c
eadd d ,#2
ld r6 ,#18-1
Separate_right
eld a ,@rp0+s0
erpn rp0 ,#64
bnzd r6 ,Separate_right
eld @rp2+d0 ,a
bnzd r7 ,Separate_rightInit
nop
jmp MonoSetL2End
MonoSetL2 //2002
eld rp0 ,#Area_fraction
eld rp2 ,#Area_leftChannel
esd0 s0 ,#0
esd2 d0 ,#1
eld d ,#0
ld r7 ,#32-1
Separate_leftInitMono
eld c ,#Area_fraction
eadd c ,d
eld rp0 ,c
eadd d ,#1 //2002
ld r6 ,#18-1
Separate_leftMono
eld a ,@rp0+s0
erpn rp0 ,#64
bnzd r6 ,Separate_leftMono
eld @rp2+d0 ,a
bnzd r7 ,Separate_leftInitMono
nop
MonoSetL2End
esd0 s0 ,#1
ret
//////////////////////////////////////////////////////////////////////////////////
//
//
//////////////////////////////////////////////////////////////////////////////////
FetchDequanData::
ldw r0 ,@[a13+Index_FrameLength]
eld c ,#1
ecld a ,r0
efz8 a
esra a ;set carry-flag
etst c ,t
esrat c
eadd a ,c
eld rp0 ,#Area_mpegBitstream
ecld r6 ,a
dec r6
copy_dequanData
eld a ,@rp1+s0
bnzd r6 ,copy_dequanData
eld @rp0+d0 ,a
eld rp1 ,#Area_mpegBitstream
ret
//////////////////////////////////////////////////////////////////////////////////
//
//
//////////////////////////////////////////////////////////////////////////////////
ComposeStereoL12::
eld a ,rpd0.index_Gnch //2002
ecld r0 ,a //2002
cmp eq ,r0 ,#2 //2002
brt ComposeStereoL12Ret
eld a ,GLayerDiff //2002
ecld r1 ,a //2002
cmp eq ,r1 ,#2 //2002
jpt L1Compose //2002
eld sd0 ,#((-1&0fh)<<12)|(1<<8)|((-1&0fh)<<4)|(1<<0)
ld r6 ,#144-1
eld a ,rpd1.index_GptrPcmSamples
eld rp0 ,a
erpn rp0 ,#1151
L2ComposeStereoLoop
eld a ,@rp0+s1
eld @rp0+d1 ,a
eld a ,@rp0+s1
eld @rp0+d1 ,a
eld a ,@rp0+s1
eld @rp0+d1 ,a
eld a ,@rp0+s1
bnzd r6 ,L2ComposeStereoLoop
eld @rp0+d1 ,a
jmp ComposeStereoL12Ret
L1Compose
eld sd0 ,#((-1&0fh)<<12)|(1<<8)|((-1&0fh)<<4)|(1<<0)
ld r6 ,#96-1
eld a ,rpd1.index_GptrPcmSamples
eld rp0 ,a
erpn rp0 ,#767
L1ComposeStereoLoop
eld a ,@rp0+s1
eld @rp0+d1 ,a
eld a ,@rp0+s1
eld @rp0+d1 ,a
eld a ,@rp0+s1
eld @rp0+d1 ,a
eld a ,@rp0+s1
bnzd r6 ,L1ComposeStereoLoop
eld @rp0+d1 ,a
ComposeStereoL12Ret
ret
//////////////////////////////////////////////////////////////////////////////////
// a: dividend d: divisor
// a: Quotient d: Remainder
//////////////////////////////////////////////////////////////////////////////////
Div24::
er nq
ecr ma0
eld ma0l ,a
esla ma0
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
edivq ma0 ,p
eld a ,ma0l
eresr ma0 ,p
esra ma0
eld d ,ma0
ret
//////////////////////////////////////////////////////
// YDMA Load (for mp3 table)
//////////////////////////////////////////////////////
// 0x8000 (Y-memory block0 )
//////////////////////////////////////////////////////
Load_L2table::
.if(0)
push a14
esd0 d0 ,#1
eld rp0 ,#|WORD3_IDATA_ABS$$secL2_table$$START|
ld a12 ,#|WORD3_IDATA_ABS$$secL2_table$$LOAD|
ld r6 ,#|WORD3_IDATA_ABS$$secL2_table$$SIZE|
jsr codeTable_copy
// Layer2 table copy
eld rp0 ,#|WORD3_IDATA_ABS$$ancL2_table$$START|
ld a12 ,#|WORD3_IDATA_ABS$$ancL2_table$$LOAD|
ld r6 ,#|WORD3_IDATA_ABS$$ancL2_table$$SIZE|
jsr codeTable_copy
// Layer1 table copy
eld rp0 ,#|WORD3_IDATA_ABS$$ancL1_table$$START|
ld a12 ,#|WORD3_IDATA_ABS$$ancL1_table$$LOAD|
ld r6 ,#|WORD3_IDATA_ABS$$ancL1_table$$SIZE|
jsr codeTable_copy
pop a14
.endif
ret
codeTable_copy
// ld r0 ,#0
// ld e10 ,r0
ld r3 ,#0
ld r4 ,#2
ldc r0 ,@a12
/// add r10 ,#2
ld r5 ,e12
add r12 ,r4
adc r5 ,r3
ld e12 ,r5
ecld a ,r0
esla8 a
ldc r0 ,@a12
/// add r10 ,#2
ld r5 ,e12
add r12 ,r4
adc r5 ,r3
ld e12 ,r5
ld r1 ,r0
srb r0
ecld r2 ,a
or r0 ,r2
ecld a ,r0
eld @rp0+d0 ,a
ecld a ,r1
esla8 a
esla8 a
ldc r0 ,@a12
/// add r10 ,#2
ld r5 ,e12
add r12 ,r4
adc r5 ,r3
ld e12 ,r5
ecld a ,r0
eld @rp0+d0 ,a
bnzd r6 ,codeTable_copy
nop
ret
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -