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

📄 sub_function2.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 3 页
字号:
	NAME	sub_function2(17)
	RSEG	CODE(0)
	RSEG	CSTR(0)
	RSEG	CONST(0)
	RSEG	IDATA0(0)
	RSEG	CDATA0(0)
	EXTERN	BankSwitch
	PUBLIC	ChangeVolume
	PUBLIC	CheckMusicType
	PUBLIC	CheckPlayrateLimit
	PUBLIC	CheckReplaygapLimit
	PUBLIC	CheckReplaytimesLimit
	PUBLIC	CheckVolumeLimit
	EXTERN	ClearScreen
	PUBLIC	ClearTimePara
	PUBLIC	ClosePA
	PUBLIC	DealForDRMsong
	EXTERN	DisablePA
	EXTERN	DisplayErrMsg
	PUBLIC	DisplayTimeRollback
	EXTERN	EnableDAC
	EXTERN	EnablePA
	EXTERN	FS_Backup
	EXTERN	FS_CD
	EXTERN	FS_GetName
	EXTERN	FS_Restore
	EXTERN	GetAPEInfoByNo
	EXTERN	GetDefaultComval
	PUBLIC	GetInformation
	EXTERN	OutPutVolume
	EXTERN	RePlayStatus
	EXTERN	ResShowMultiString
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	EXTERN	UpDisplayFlag
	EXTERN	VMRead
	EXTERN	ap_get_message
	EXTERN	ap_message_init
	EXTERN	ap_sleep
	EXTERN	dir_name
	EXTERN	fselGetLocation
	EXTERN	g_OldSecTempBackup
	EXTERN	g_PAOpenFlag
	EXTERN	g_PowerOffFlag
	EXTERN	g_TagInfoBuf
	EXTERN	g_comval
	EXTERN	g_currentMusicType
	EXTERN	g_introCNT
	EXTERN	g_introCntMode
	EXTERN	g_lyricflag
	EXTERN	g_music_vars
	EXTERN	g_result
	EXTERN	lyricLoad
	EXTERN	lyricQueryExist
	PUBLIC	make_dirname
	EXTERN	mp3GetID3Info
	EXTERN	musicpSendCommand
	EXTERN	need_draw
	PUBLIC	openDAC
	PUBLIC	openPA
	PUBLIC	read_var
	EXTERN	return_to_play
	EXTERN	slider
	EXTERN	speed_callback
	PUBLIC	temp_buffer
	EXTERN	ui_auto_update
	EXTERN	ui_dialog
	EXTERN	ui_slider
	EXTERN	unitochar
	EXTERN	volume_callback
	EXTERN	wmaGetTAGInfo
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	EXTERN	?STRCPY_L11
	EXTERN	?STRCAT_L11
	EXTERN	?MEMSET_L11
	EXTERN	?STRCMP_L11
	RSEG	CODE
CheckVolumeLimit:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        This program demostrates how to build an AP
; 5.	*
; 6.	*        (c) Copyright Actions Co,Ld.
; 7.	*
; 8.	*  $Id: sub_function2.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 9.	*******************************************************************************
; 10.	*/
; 11.	#include "ap_music.h"
; 12.	
; 13.	extern char g_TagInfoBuf[90];
; 14.	extern SD_FILE* g_Resfp_Sav;
; 15.	extern char return_to_play ; 
; 16.	 
; 17.	//extern bool ActiveDriveOK;
; 18.	
; 19.	char temp_buffer[6] = { 0 };
; 20.	void OutPutVolume(int vol);
; 21.	int DealForDRMsong(void);
; 22.	int ui_dialog(dialog_t *dialog,int string_id);
; 23.	BOOL GetAPEInfoByNo(char *filename, ID3Info_t *ID3, BYTE mode);
; 24.	
; 25.	void CheckVolumeLimit( void )
; 26.	{
	PUSH	BC
; 27.	    if (g_music_vars.volume>31) g_music_vars.volume = 31;
	LD	A,(g_music_vars)
	LD	B,A
	LD	A,31
	SUB	B
	JP	PO,?0135
	XOR	128
?0135:
	JP	P,?0003
?0002:
	LD	A,31
	LD	(g_music_vars),A
?0003:
; 28.	
; 29.	    if (g_music_vars.volume<0) g_music_vars.volume = 0;
	LD	A,(g_music_vars)
	OR	A
	JP	P,?0005
?0004:
	XOR	A
	LD	(g_music_vars),A
?0005:
; 30.	}
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
CheckPlayrateLimit:
; 31.	
; 32.	void CheckPlayrateLimit( void )
; 33.	{
	PUSH	BC
; 34.	    if (g_music_vars.play_rate > 8)
	LD	A,(g_music_vars+3)
	LD	B,A
	LD	A,8
	SUB	B
	JP	PO,?0136
	XOR	128
?0136:
	JP	P,?0007
?0006:
; 35.	    {
; 36.	        g_music_vars.play_rate = 8;
	LD	A,8
	LD	(g_music_vars+3),A
?0007:
; 37.	    }
; 38.	    if (g_music_vars.play_rate < -8)
	LD	A,(g_music_vars+3)
	XOR	128
	CP	120
	JR	NC,?0009
?0008:
; 39.	    {
; 40.	        g_music_vars.play_rate = -8;
	LD	A,248
	LD	(g_music_vars+3),A
?0009:
; 41.	    }
; 42.	}
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
CheckReplaygapLimit:
; 43.	
; 44.	void CheckReplaygapLimit( void )
; 45.	{
	PUSH	BC
; 46.	    if (g_music_vars.replaygap<1)
	LD	A,(g_music_vars+5)
	CP	1
	JR	NC,?0011
?0010:
; 47.	    {
; 48.	        g_music_vars.replaygap = 1;
	LD	A,1
	LD	(g_music_vars+5),A
?0011:
; 49.	    }
; 50.	    if (g_music_vars.replaygap>10)
	LD	B,A
	LD	A,10
	CP	B
	JR	NC,?0013
?0012:
; 51.	    {
; 52.	        g_music_vars.replaygap = 10;
	LD	(g_music_vars+5),A
?0013:
; 53.	    }
; 54.	}
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
CheckReplaytimesLimit:
; 55.	
; 56.	void CheckReplaytimesLimit( void )
; 57.	{
	PUSH	BC
; 58.	    if (g_music_vars.replaytimes<1)
	LD	A,(g_music_vars+4)
	CP	1
	JR	NC,?0015
?0014:
; 59.	    {
; 60.	        g_music_vars.replaytimes = 1;
	LD	A,1
	LD	(g_music_vars+4),A
?0015:
; 61.	    }
; 62.	    if (g_music_vars.replaytimes>10)
	LD	B,A
	LD	A,10
	CP	B
	JR	NC,?0017
?0016:
; 63.	    {
; 64.	        g_music_vars.replaytimes = 10;
	LD	(g_music_vars+4),A
?0017:
; 65.	    }
; 66.	}
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
CheckMusicType:
; 67.	
; 68.	//-------------------------------------
; 69.	/*
; 70.	********************************************************************************
; 71.	*             void StartIntro( bool mode )
; 72.	*
; 73.	* Description : 启动INTRO模式 mode = true 为 从头开始 = false 为从当前开始
; 74.	*
; 75.	* Arguments   : bool mode
; 76.	*
; 77.	* Returns     : void
; 78.	*
; 79.	* Notes       :
; 80.	*
; 81.	********************************************************************************
; 82.	*/
; 83.	//
; 84.	//void StartIntro( bool mode )
; 85.	//{
; 86.	//    g_introCntMode = mode;
; 87.	//    /* 用来比较出秒的变化 */
; 88.	//    //g_OldSecTempBackup = 0;
; 89.	//    g_OldSecTempBackup = g_music_vars.BreakPTDisTime.second;
; 90.	//    g_introCNT = 0;
; 91.	//}
; 92.	//
; 93.	/*
; 94.	********************************************************************************
; 95.	*             Music_type_t CheckMusicType(char *filename)
; 96.	*
; 97.	* Description : 检测当前是哪种类型的MUSIC文件
; 98.	*
; 99.	* Arguments   : char *filename  文件名
; 100.	*
; 101.	* Returns     : Music_type_t 文件类型
; 102.	*
; 103.	* Notes       :
; 104.	*
; 105.	********************************************************************************
; 106.	*/
; 107.	Music_type_t CheckMusicType( char * filename )
; 108.	{
	PUSH	BC
	PUSH	IX
	LD	HL,65508
	ADD	HL,SP
	LD	SP,HL
	PUSH	DE
	POP	IX
; 109.	    const char ExtMusicstr [] [4] =
; 110.	    {
; 111.	        "MP3", "WMA", "ASF", "WMV", "OGG", "APE"
; 112.	    };
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	HL,?0018
	LD	BC,24
	LDIR
; 113.	
; 114.	    BYTE ext[4];
; 115.	    memcpy(ext, filename + 8, 3);
	LD	L,C
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,8
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	BC,3
	LDIR
; 116.	    ext[0] = (ext[0]>='a' && ext[0]<='z') ? ext[0] - 'a' + 'A' : ext[0];
	LD	L,C
	LD	H,B
	ADD	HL,SP
	LD	A,(HL)
	CP	97
	JR	C,?0022
	LD	A,122
	CP	(HL)
	JR	C,?0022
	LD	A,(HL)
	ADD	A,224
	JR	?0023
?0022:
	LD	A,(HL)
?0023:
	LD	(HL),A
; 117.	    ext[1] = (ext[1]>='a' && ext[1]<='z') ? ext[1] - 'a' + 'A' : ext[1];
	INC	HL
	LD	A,(HL)
	CP	97
	JR	C,?0028
	LD	A,122
	CP	(HL)
	JR	C,?0028
	LD	A,(HL)
	ADD	A,224
	JR	?0029
?0028:
	LD	A,(HL)
?0029:
	LD	(HL),A
; 118.	    ext[2] = (ext[2]>='a' && ext[2]<='z') ? ext[2] - 'a' + 'A' : ext[2];
	INC	HL
	LD	A,(HL)
	CP	97
	JR	C,?0034
	LD	A,122
	CP	(HL)
	JR	C,?0034
	LD	A,(HL)
	ADD	A,224
	JR	?0035
?0034:
	LD	A,(HL)
?0035:
	LD	(HL),A
; 119.	    ext[3] = 0;
	INC	HL
	LD	(HL),B
; 120.	
; 121.	    if (strcmp(ext, ExtMusicstr[0]) == 0)
	DEC	HL
	DEC	HL
	DEC	HL
	EX	DE,HL
	LD	HL,4
	ADD	HL,SP
	CALL	LWRD ?0152
	JR	NZ,?0038
?0037:
; 122.	    {
; 123.	        return Music_MP3;
	LD	L,1
; 124.	    }
	JR	?0049
?0038:
; 125.	    else if (strcmp(ext, ExtMusicstr[1]) == 0)
	LD	L,C
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,4
	ADD	HL,SP
	LD	C,4
	CALL	LWRD ?0153
	JR	NZ,?0040
?0039:
; 126.	    {
; 127.	        return Music_WMA;
	LD	L,2
; 128.	    }
	JR	?0049
?0040:
; 129.	    else if (strcmp(ext, ExtMusicstr[2]) == 0)
	LD	L,B
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	L,C
	LD	H,B
	ADD	HL,SP
	LD	C,8
	CALL	LWRD ?0153
	JR	NZ,?0042
?0041:
; 130.	    {
; 131.	        return Music_ASF;
	LD	L,3
; 132.	    }
	JR	?0049
?0042:
; 133.	    else if (strcmp(ext, ExtMusicstr[3]) == 0)
	LD	L,B
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,4
	ADD	HL,SP
	LD	C,12
	CALL	LWRD ?0153
	JR	NZ,?0044
?0043:
; 134.	    {
; 135.	        return Music_WMV;
	LD	L,4
; 136.	    }
	JR	?0049
?0044:
; 137.	    else if (strcmp(ext, ExtMusicstr[4]) == 0)
	LD	L,B
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,4
	ADD	HL,SP
	LD	C,16
	CALL	LWRD ?0153
	JR	NZ,?0046
?0045:
; 138.	    {
; 139.	        return Music_OGG;
	LD	L,5
; 140.	    }
	JR	?0049
?0046:
; 141.	    else if (strcmp(ext, ExtMusicstr[5]) == 0)
	LD	L,B
	LD	H,B
	ADD	HL,SP
	EX	DE,HL
	LD	HL,4
	ADD	HL,SP
	LD	C,20
	CALL	LWRD ?0153
	JR	NZ,?0048
?0047:
; 142.	    {
; 143.	        return Music_APE;
	LD	L,6
; 144.	    }  
	JR	?0049
?0048:
; 145.	    else
; 146.	    {
; 147.	        return Music_NON;
	LD	L,B
; 148.	    }
?0049:
	EX	DE,HL
	LD	HL,28
	ADD	HL,SP
	LD	SP,HL
	EX	DE,HL
	POP	IX
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0153:
	ADD	HL,BC
?0152:
	CALL	LWRD ?STRCMP_L11
	LD	A,L
	OR	H
	RET
; 149.	}
make_dirname:
; 150.	
; 151.	/*
; 152.	********************************************************************************
; 153.	*             void read_var(void)
; 154.	*
; 155.	* Description : 读系统变量和ap局部变量
; 156.	*
; 157.	* Arguments   : void
; 158.	*
; 159.	* Returns     : void
; 160.	*
; 161.	* Notes       :
; 162.	*
; 163.	********************************************************************************
; 164.	*/
; 165.	void make_dirname(void)
; 166.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65502
; 167.	    int result;
; 168.	    char Backbuf[32];
; 169.	
; 170.	    fselGetLocation(&g_music_vars.location);
	LD	DE,g_music_vars+7
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 171.	    if(g_music_vars.location.path[0]==':')
	LD	A,(g_music_vars+21)
	CP	58
	JR	NZ,?0051
?0050:
; 172.	        {
; 173.	            strcpy(dir_name,"ROOT");
	LD	DE,?0052
	LD	HL,dir_name
	CALL	LWRD ?STRCPY_L11
; 174.	        }
; 175.	    else
	JR	?0053
?0051:
; 176.	        {
; 177.	
; 178.	        FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
	LD	HL,0
	PUSH	HL
	LD	C,2
	LD	L,4
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_Backup
	POP	HL
; 179.	
; 180.	//        dir_name[0] = ':';
; 181.	//            FS_CD(dir_name);
; 182.	            FS_CD("\\");
	LD	DE,?0054
	CALL	LWRD FS_CD
; 183.	        memcpy(dir_name, g_music_vars.location.path, 12);
	LD	BC,12
	LD	DE,dir_name
	LD	HL,g_music_vars+21
	LDIR
; 184.	            result = FS_GetName(dir_name, 14); //取出长名
	LD	C,14
	LD	DE,dir_name
	CALL	LWRD FS_GetName
	LD	B,0
; 185.	            if (result != 0)
	OR	A
	JR	Z,?0056
?0055:
; 186.	            {
; 187.	                unitochar(dir_name, sizeof(dir_name), g_comval.langid);
	LD	HL,g_comval+12
	LD	C,(HL)
	PUSH	BC
	LD	C,30
	LD	DE,dir_name
	CALL	LWRD ?0155
	POP	AF
; 188.	            }
; 189.	            else
	JR	?0057
?0056:
; 190.	            {
; 191.	                memcpy(dir_name, g_music_vars.location.path, 12);
	LD	C,12
	LD	DE,dir_name
	LD	HL,g_music_vars+21
	LDIR
; 192.	                dir_name[8]=0;
	LD	(dir_name+8),A
; 193.	                dir_name[9]=0;
	LD	(dir_name+9),A
?0057:
; 194.	            }
; 195.	            FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
	LD	HL,0
	PUSH	HL
	LD	C,2
	LD	L,4
	ADD	HL,SP
	EX	DE,HL

⌨️ 快捷键说明

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