⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decl2lib.s

📁 samsung 9908DVD源代码,
💻 S
📖 第 1 页 / 共 3 页
字号:
	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 + -