sub_callback.s01

来自「MP3 整个 SDK」· S01 代码 · 共 384 行

S01
384
字号
	NAME	sub_callback(17)
	RSEG	CODE(0)
	RSEG	CONST(0)
	PUBLIC	EQVOLADJ_TAB
	PUBLIC	OutPutVolume
	EXTERN	SRSModeFlag
	EXTERN	SetPAVolume
	EXTERN	UpDisplayFlag
	PUBLIC	bass_user_callback
	PUBLIC	eq_callback
	EXTERN	g_music_vars
	PUBLIC	loop_callback
	EXTERN	musicpSendCommand
	PUBLIC	speed_callback
	PUBLIC	srs_callback
	PUBLIC	srs_user_callback
	PUBLIC	volume_callback
	PUBLIC	wow_user_callback
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_CMP_L02
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_PARM_DIRECT_L09
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	CODE
volume_callback:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        voice player stop program.
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.                             
; 7.	*             All Right Reserved                          
; 8.	*
; 9.	*  $Id: sub_callback.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 10.	*******************************************************************************
; 11.	*/
; 12.	
; 13.	#include "ap_music.h"
; 14.	             
; 15.	#define eqcount_def 8
; 16.	extern byte SRSModeFlag;
; 17.	const signed char EQVOLADJ_TAB[eqcount_def] = 
; 18.	{//EQ音量调整表
; 19.	     0,0,0,0,0,0,0,0
; 20.	};
; 21.	
; 22.	void OutPutVolume(int vol);
; 23.	              
; 24.	void volume_callback( int Vol )
; 25.	{
	CALL	LWRD ?ENT_PARM_DIRECT_L09
; 26.	    //实时改变音量的值
; 27.	    musicpSendCommand(MC_SETVOLUME, Vol);
	LD	C,E
	LD	B,D
	LD	E,64
	CALL	LWRD ?0024
; 28.	    g_music_vars.volume = Vol;
	LD	A,(IX+2)
	LD	(g_music_vars),A
; 29.	    OutPutVolume(g_music_vars.volume);    
	LD	DE,(g_music_vars)
	LD	A,E
	RLCA
	SBC	A,A
	LD	D,A
	LD	A,BYTE3 OutPutVolume
	LD	HL,LWRD OutPutVolume
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 30.	    //g_FadeInStatusFlag = 0;//关闭淡入淡出功能
; 31.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0025:
	LD	C,L
	LD	B,H
	LD	E,66
?0024:
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	JP	LWRD ?BANK_CALL_DIRECT_L08
speed_callback:
; 32.	
; 33.	void speed_callback( int speed )
; 34.	{
	CALL	LWRD ?ENT_PARM_DIRECT_L09
; 35.	    //实时改变速度
; 36.	    g_music_vars.play_rate = (BYTE)speed;
	LD	A,E
	LD	(g_music_vars+3),A
; 37.	    musicpSendCommand(MC_SETSPEED, speed); //设置当前的速度
	LD	C,E
	LD	B,D
	LD	E,70
?0019:
	CALL	LWRD ?0024
; 38.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
eq_callback:
; 39.	
; 40.	void eq_callback( int eq )
; 41.	{
	CALL	LWRD ?ENT_PARM_DIRECT_L09
; 42.	    //实时改变EQ的值
; 43.	    g_music_vars.eq_type = eq;
	LD	A,E
	LD	(g_music_vars+2),A
; 44.	    musicpSendCommand(MC_SETEQ, eq);
	LD	C,E
	LD	B,D
	LD	E,67
	CALL	LWRD ?0024
; 45.	    UpDisplayFlag = UpDisplayFlag | up_musiceqmode;
?0022:
	LD	HL,UpDisplayFlag
	INC	HL
	SET	2,(HL)
; 46.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
srs_callback:
; 47.	void srs_callback( int srs )
; 48.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-10
; 49.	    //实时改变EQ的值
; 50.	    int temp;
; 51.	    char temp1[10];
; 52.	    if(srs==0)
	LD	A,(IX+2)
	OR	(IX+3)
	JR	NZ,?0003
?0002:
; 53.	    {
; 54.	      g_music_vars.eq_type = 0x4f;//user srs
	LD	A,79
	LD	(g_music_vars+2),A
; 55.	      musicpSendCommand(MC_SETEQ, 0x4f);      
	LD	BC,79
	LD	E,67
	CALL	LWRD ?0024
; 56.	      temp1[0]=8;
	LD	(IX-10),8
; 57.	      temp1[1]=8;
	LD	(IX-9),8
; 58.	      temp1[2]=4;
	LD	(IX-8),4
; 59.	      musicpSendCommand(MC_SETUSEREQ, (int)&temp1);   
	LD	HL,0
	ADD	HL,SP
	CALL	LWRD ?0025
; 60.	      SRSModeFlag=0; 
	XOR	A
	JR	?0016
?0003:
; 61.	    }      
; 62.	    else if(srs==1)
	LD	A,1
	XOR	(IX+2)
	OR	(IX+3)
	JR	NZ,?0006
?0005:
; 63.	     {
; 64.	        g_music_vars.eq_type = 0x4f;//user srs
	LD	A,79
	LD	(g_music_vars+2),A
; 65.	        musicpSendCommand(MC_SETEQ, 0x4f);
	CALL	LWRD ?0023
; 66.	        temp1[0]=g_music_vars.SRSMod.Wow; 
; 67.	        temp1[1]=g_music_vars.SRSMod.Bass;
; 68.	        temp1[2]=g_music_vars.SRSMod.Srs;
; 69.	        musicpSendCommand(MC_SETUSEREQ, (int)&temp1);   
	ADD	HL,SP
	CALL	LWRD ?0025
; 70.	        SRSModeFlag=1; 
	LD	A,1
?0016:
	LD	(SRSModeFlag),A
; 71.	     } 
; 72.	   else 
	JR	?0007
?0006:
; 73.	    {
; 74.	     eq_callback(0);
	LD	DE,0
	LD	A,BYTE3 eq_callback
	LD	HL,LWRD eq_callback
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0007:
?0004:
; 75.	    }  
; 76.	      
; 77.	    UpDisplayFlag = UpDisplayFlag | up_musiceqmode;
	JP	LWRD ?0022
?0023:
	LD	BC,79
	LD	E,67
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,(g_music_vars+81)
	LD	(IX-10),A
	LD	A,(g_music_vars+82)
	LD	(IX-9),A
	LD	A,(g_music_vars+83)
	LD	(IX-8),A
	LD	HL,0
	RET
; 78.	}
srs_user_callback:
; 79.	void srs_user_callback(int srs_user)
; 80.	{ 
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65526
; 81.	    char temp[10];
; 82.	    g_music_vars.eq_type = 0x4f;
	LD	A,79
	LD	(g_music_vars+2),A
; 83.	    g_music_vars.SRSMod.Srs = srs_user;
	LD	A,(IX+2)
	LD	(g_music_vars+83),A
; 84.	    musicpSendCommand(MC_SETEQ, 0x4f);
	CALL	LWRD ?0023
; 85.	    temp[0]=g_music_vars.SRSMod.Wow; 
; 86.	    temp[1]=g_music_vars.SRSMod.Bass;
; 87.	    temp[2]=g_music_vars.SRSMod.Srs;
; 88.	    musicpSendCommand(MC_SETUSEREQ, (int)&temp);
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,66
	JP	LWRD ?0019
; 89.	       
; 90.	}
wow_user_callback:
; 91.	void wow_user_callback(int wow_user)
; 92.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65526
; 93.	    char  temp[10];
; 94.	    g_music_vars.eq_type = 0x4f;
	LD	A,79
	LD	(g_music_vars+2),A
; 95.	    g_music_vars.SRSMod.Wow = wow_user;
	LD	A,(IX+2)
	LD	(g_music_vars+81),A
; 96.	    musicpSendCommand(MC_SETEQ, 0x4f);
	CALL	LWRD ?0023
; 97.	    temp[0]=g_music_vars.SRSMod.Wow; 
; 98.	    temp[1]=g_music_vars.SRSMod.Bass;
; 99.	    temp[2]=g_music_vars.SRSMod.Srs;
; 100.	    musicpSendCommand(MC_SETUSEREQ, (int)&temp);
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,66
	JP	LWRD ?0019
; 101.	 
; 102.	}
bass_user_callback:
; 103.	
; 104.	void bass_user_callback(int bass_user)
; 105.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65526
; 106.	    char temp[10];
; 107.	    g_music_vars.eq_type = 0x4f;
	LD	A,79
	LD	(g_music_vars+2),A
; 108.	    g_music_vars.SRSMod.Bass = bass_user;
	LD	A,(IX+2)
	LD	(g_music_vars+82),A
; 109.	    
; 110.	    musicpSendCommand(MC_SETEQ, 0x4f);
	CALL	LWRD ?0023
; 111.	    temp[0]=g_music_vars.SRSMod.Wow; 
; 112.	    temp[1]=g_music_vars.SRSMod.Bass;
; 113.	    temp[2]=g_music_vars.SRSMod.Srs;
; 114.	    musicpSendCommand(MC_SETUSEREQ, (int)&temp);    
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,66
	JP	LWRD ?0019
; 115.	}     
loop_callback:
; 116.	
; 117.	void loop_callback( int loop )
; 118.	{
	CALL	LWRD ?ENT_PARM_DIRECT_L09
; 119.	    g_music_vars.repeat_mode = loop;
	LD	A,E
	LD	(g_music_vars+1),A
; 120.	    UpDisplayFlag = UpDisplayFlag | up_musicloopmode;
	LD	HL,UpDisplayFlag
	INC	HL
	SET	4,(HL)
; 121.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
OutPutVolume:
; 122.	/*===========================================
; 123.	functions: OutPutVolume(int vol)
; 124.	input:    int vol: 要输出的音量
; 125.	output:  void
; 126.	功能: 把音量值送到IO口,当在EQ变化时作出补尝
; 127.	============================================*/
; 128.	void OutPutVolume(int vol)
; 129.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	0
; 130.	    signed int temp;
; 131.	    
; 132.	    if (g_music_vars.eq_type >= eqcount_def)
	LD	A,(g_music_vars+2)
	CP	8
	JR	C,?0009
?0008:
; 133.	    {
; 134.	        temp = vol;
	LD	E,(IX+2)
	LD	D,(IX+3)
; 135.	    }
; 136.	    else
	JR	?0010
?0009:
; 137.	    {
; 138.	        temp = vol + EQVOLADJ_TAB[g_music_vars.eq_type];
	LD	C,A
	LD	B,0
	LD	HL,EQVOLADJ_TAB
	ADD	HL,BC
	LD	C,(HL)
	LD	A,C
	RLCA
	SBC	A,A
	LD	B,A
	LD	L,(IX+2)
	LD	H,(IX+3)
	ADD	HL,BC
	EX	DE,HL
?0010:
; 139.	    }
; 140.	    
; 141.	    if (temp>31)
	LD	C,E
	LD	B,D
	LD	HL,31
	CALL	LWRD ?SS_CMP_L02
	JR	NC,?0012
?0011:
; 142.	    {
; 143.	        temp = 31;
	LD	DE,31
	JR	?0015
?0012:
; 144.	    }
; 145.	    else if(temp<0)
	BIT	7,B
	JR	Z,?0015
?0014:
; 146.	    {
; 147.	        temp = 0;
	LD	DE,0
?0015:
?0013:
; 148.	    }
; 149.	    SetPAVolume(temp);
	EX	DE,HL
	LD	E,L
	CALL	LWRD SetPAVolume
; 150.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
	RSEG	CONST
EQVOLADJ_TAB:
	DEFB	0
	DEFB	0
	DEFB	0
	DEFB	0
	DEFB	0
	DEFB	0
	DEFB	0
	DEFB	0
	END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?