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

📄 sub_function1.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 3 页
字号:
	NAME	sub_function1(17)
	RSEG	AP_SUB_FUN1(0)
	EXTERN	BankSwitch
	EXTERN	CaltimeFlag
	PUBLIC	ChangeMusic
	EXTERN	CheckMusicType
	EXTERN	ClearTimePara
	EXTERN	DRV_ActiveUD
	PUBLIC	DealMusicFileEnd
	PUBLIC	DisInFBHead
	PUBLIC	DisInFFEnd
	EXTERN	DisplayErrMsg
	EXTERN	GetInformation
	PUBLIC	NoCardCaseInStopMenu
	EXTERN	PlayStatus
	EXTERN	RePlayStatus
	EXTERN	SRSModeFlag
	PUBLIC	SelectCurMusic
	EXTERN	ToNextMusic
	EXTERN	UpDisplayFlag
	EXTERN	UpdateFileSelector
	EXTERN	WaitForCaltimeCNT
	EXTERN	ap_get_message
	EXTERN	apepSendCommand
	EXTERN	fselGetLocation
	EXTERN	fselGetNextFile
	EXTERN	fselGetNo
	EXTERN	fselGetPrevFile
	EXTERN	fselGetTotal
	EXTERN	fselInit
	EXTERN	fselPlayListExit
	EXTERN	fselSetLocation
	EXTERN	fselSetMode
	EXTERN	g_2HZ_CNT
	EXTERN	g_ABMinTimeCNT
	EXTERN	g_ABPointTimeSize
	EXTERN	g_FCexitflag
	EXTERN	g_Openparam
	EXTERN	g_PAOpenFlag
	EXTERN	g_ReplayTimeCNT
	EXTERN	g_TagInfoBuf
	EXTERN	g_TagInfoBuf1
	EXTERN	g_comval
	EXTERN	g_currentMusicType
	EXTERN	g_music_vars
	EXTERN	g_musicamount
	EXTERN	g_musicsequence
	EXTERN	g_result
	EXTERN	ifSelBuffToltalTimeFlag
	EXTERN	itoa_1
	EXTERN	itoa_2
	EXTERN	main_ResShowPic
	EXTERN	make_dirname
	EXTERN	mp3pSendCommand
	EXTERN	musicpSendCommand
	PUBLIC	musicpSendCommand_bank
	EXTERN	need_draw
	EXTERN	oggpSendCommand
	EXTERN	openPA
	EXTERN	srs_default_set
	EXTERN	temp_buffer
	EXTERN	ui_auto_update
	EXTERN	ui_delete
	PUBLIC	ui_delete_Music
	EXTERN	ui_delete_all
	EXTERN	ui_directory
	EXTERN	ui_show_d
	EXTERN	wmapSendCommand
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?C_S_SWITCH_L06
	EXTERN	?S_S_SWITCH_L06
	EXTERN	?C_V_SWITCH_L06
	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	AP_SUB_FUN1
DisInFBHead:
; 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_function1.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 9.	*******************************************************************************
; 10.	*/
; 11.	#include "ap_music.h"
; 12.	
; 13.	extern bool g_FCexitflag;
; 14.	
; 15.	#pragma memory=constseg(APC_SUB_FUN1)
; 16.	#pragma memory=default
; 17.	
; 18.	void FadeOut( bool DisMod );
; 19.	void DisInFBHead(char DisMod);
; 20.	void DisInFFEnd(char DisMod);
; 21.	int ui_licensinf(int string_id);
; 22.	extern void make_dirname(void);
; 23.	extern void srs_default_set(void); 
; 24.	extern byte SRSModeFlag;
; 25.	#pragma codeseg(AP_SUB_FUN1)
; 26.	void DisInFBHead(char DisMod)
; 27.	{
	CALL	LWRD ?ENT_PARM_DIRECT_L09
; 28.	    if (DisMod == 0)
	INC	E
	DEC	E
	JR	NZ,?0003
?0002:
; 29.	    {//普通显示模式
; 30.	        temp_buffer[0] = '0';
	LD	A,48
	LD	(temp_buffer),A
; 31.	        temp_buffer[1] = '0';
	LD	(temp_buffer+1),A
; 32.	        temp_buffer[2] = '0';
	LD	(temp_buffer+2),A
; 33.	        temp_buffer[3] = '0';
	LD	(temp_buffer+3),A
; 34.	        temp_buffer[4] = '0';
	LD	(temp_buffer+4),A
; 35.	        ui_show_d(temp_buffer);
	CALL	LWRD ?0162
; 36.	    }
; 37.	    else
	JR	?0004
?0003:
; 38.	    {//歌词显示模式
; 39.	        main_ResShowPic(LYRIC_R, LyricIcon_Pos_X, LyricIcon_Pos_Y);
	LD	C,99
	PUSH	BC
	LD	C,197
	LD	DE,78
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0004:
; 40.	    }
; 41.	    return;
; 42.	
; 43.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0162:
	LD	DE,temp_buffer
	LD	A,BYTE3 ui_show_d
	LD	HL,LWRD ui_show_d
	JP	LWRD ?BANK_CALL_DIRECT_L08
DisInFFEnd:
; 44.	
; 45.	void DisInFFEnd(char DisMod)
; 46.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65528
; 47.	    if(DisMod == 0)
	XOR	A
	OR	(IX+2)
	JR	NZ,?0006
?0005:
; 48.	    {//普通显示模式
; 49.	        wma_play_status_t status_buf;
; 50.	        musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
	LD	L,A
	LD	H,A
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	E,131
	CALL	LWRD ?0169
; 51.	        itoa_1(status_buf.total_time.hour, &temp_buffer[0]);
	LD	BC,temp_buffer
	LD	E,(IX-5)
	LD	A,BYTE3 itoa_1
	LD	HL,LWRD itoa_1
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 52.	        itoa_2(status_buf.total_time.minute, &temp_buffer[1]);
	LD	BC,temp_buffer+1
	LD	E,(IX-4)
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 53.	        itoa_2(status_buf.total_time.second, & temp_buffer[3]);
	LD	BC,temp_buffer+3
	LD	E,(IX-3)
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 54.	        ui_show_d(temp_buffer);
	CALL	LWRD ?0162
; 55.	    }
; 56.	    else
	JR	?0007
?0006:
; 57.	    {//歌词显示模式
; 58.	        main_ResShowPic(LYRIC_F, LyricIcon_Pos_X, LyricIcon_Pos_Y);
	LD	C,99
	PUSH	BC
	LD	C,197
	LD	DE,77
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0007:
; 59.	    }
; 60.	    return;
; 61.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0170:
	LD	BC,1
	LD	E,13
?0169:
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	JP	LWRD ?BANK_CALL_DIRECT_L08
DealMusicFileEnd:
; 62.	
; 63.	//===========[放到文件尾时的处理]===============
; 64.	int DealMusicFileEnd( char DisMod)
; 65.	{
	PUSH	DE
; 66.	    wma_play_status_t status_buf;
; 67.	
; 68.	    int key;
; 69.	
; 70.	    need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 71.	
; 72.	    if (PlayStatus == FBPlaySta)
	LD	A,(PlayStatus)
	CP	4
	JR	NZ,?0009
?0008:
; 73.	    {
; 74.	        DisInFBHead( DisMod );//到头显示
	LD	A,BYTE3 DisInFBHead
	LD	HL,LWRD DisInFBHead
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0011:
; 75.	        while ( ap_get_message() != (AP_KEY_PREV | AP_KEY_UP) );
	CALL	LWRD ap_get_message
	CP	37
	JR	NZ,?0011
?0012:
?0010:
; 76.	        SelectCurMusic();
	LD	A,BYTE3 SelectCurMusic
	LD	HL,LWRD SelectCurMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	JR	?0027
?0009:
; 77.	
; 78.	    }
; 79.	    else if (PlayStatus == FFPlaySta)
	CP	3
	JR	NZ,?0015
?0014:
; 80.	    {
; 81.	        DisInFFEnd( DisMod );//到尾显示
	LD	A,BYTE3 DisInFFEnd
	LD	HL,LWRD DisInFFEnd
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0017:
; 82.	        while ( ap_get_message() != (AP_KEY_NEXT | AP_KEY_UP) );
	CALL	LWRD ap_get_message
	CP	38
	JR	NZ,?0017
?0018:
?0016:
; 83.	        g_result = ToNextMusic(Play_play);
	CALL	LWRD ?0171
; 84.	        if(DisMod == 0)
	ADD	HL,SP
	XOR	A
	OR	(HL)
	JR	NZ,?0020
?0019:
; 85.	        {
; 86.	            SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
?0020:
; 87.	        }
; 88.	        if(g_result == RESULT_UI_STOP) return g_result;
	LD	HL,(g_result)
	LD	A,102
	XOR	L
	OR	H
	JR	NZ,?0027
?0021:
	JR	?0028
; 89.	    }
?0022:
; 90.	
; 91.	    else
?0015:
; 92.	    {
; 93.	        g_result = ToNextMusic(Play_play);
	CALL	LWRD ?0171
; 94.	        if(DisMod == 0)
	ADD	HL,SP
	XOR	A
	OR	(HL)
	JR	NZ,?0025
?0024:
; 95.	        {
; 96.	            SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
?0025:
; 97.	        }
; 98.	        if(g_result == RESULT_UI_STOP) return g_result;
	LD	HL,(g_result)
	LD	A,102
	XOR	L
	OR	H
	JR	Z,?0028
?0026:
; 99.	    }
?0027:
?0023:
?0013:
; 100.	    return NULL;
	LD	HL,0
; 101.	}
?0028:
	POP	AF
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0171:
	LD	E,1
	LD	A,BYTE3 ToNextMusic
	LD	HL,LWRD ToNextMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
	LD	HL,0
	RET
ChangeMusic:
; 102.	//================================================
; 103.	
; 104.	
; 105.	/*
; 106.	*******************************************************************************
; 107.	* Description : 换曲时要做的选曲,初始化动作
; 108.	* Arguments  :
; 109.	* Returns     :真时表示可继续放,假时表示要停止放(播放状态)
; 110.	* Notes       :
; 111.	*******************************************************************************
; 112.	*/
; 113.	bool ChangeMusic( BYTE Direct, Music_sel_mod_t mod )
; 114.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65534
; 115.	    bool result;
; 116.	
; 117.	    //清 WATCH_DOG
; 118.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 119.	
; 120.	    //选文件
; 121.	    RePlayStatus = NormalPlay;
	XOR	A
	LD	(RePlayStatus),A
; 122.	    ClearTimePara();
	LD	A,BYTE3 ClearTimePara
	LD	HL,LWRD ClearTimePara
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 123.	    g_TagInfoBuf[0] = 0x0;
	XOR	A
	LD	(g_TagInfoBuf),A
; 124.	    BankSwitch((unsigned long)FSELInit >> 16);
	LD	E,BYTE3 fselInit
	EX	DE,HL
	LD	E,L
	CALL	LWRD BankSwitch
; 125.	
; 126.	    if (mod == Play_key)
	DEC	C
	DEC	C
	JR	NZ,?0030
?0029:
; 127.	    {//play 按键的情况
; 128.	        switch (g_music_vars.repeat_mode)
	LD	A,(g_music_vars+1)
	CP	1
	JR	NZ,?0036
?0032:
; 129.	        {
; 130.	        case FSEL_ALL_REPEATONE:
; 131.	            FSELSetMode( FSEL_ALL_REPEATALL );//PLAY 时按键
	JR	?0146
; 132.	            break;
?0033:
; 133.	
; 134.	
; 135.	        default:
; 136.	            FSELSetMode(g_music_vars.repeat_mode);//
; 137.	            break;
?0031:
?0030:
; 138.	        }
; 139.	    }
; 140.	    else if (mod == Stop_key)
	XOR	A
	OR	(IX+4)
	JR	NZ,?0036
?0035:
; 141.	    {//
; 142.	        FSELSetMode(FSEL_ALL_REPEATALL);//STOP时按键
?0146:
	LD	E,4
	JR	?0142
; 143.	    }
; 144.	    else
?0036:
; 145.	    {//正常播放的情况
; 146.	        FSELSetMode(g_music_vars.repeat_mode);
	LD	DE,(g_music_vars+1)
?0142:
	CALL	LWRD ?0173
?0037:
?0034:
; 147.	    }
; 148.	
; 149.	    switch (Direct)
	LD	E,(IX+2)
	CALL	LWRD ?C_S_SWITCH_L06
	DEFB	0
	DEFW	5
	DEFW	?0044
	DEFW	?0038
	DEFW	?0038
	DEFW	?0041
	DEFW	?0042
	DEFW	?0043
?0039:
; 150.	    {
; 151.	        case Music_Reset_Head:
; 152.	            break;
?0040:
; 153.	
; 154.	        case Music_Reset_End:
; 155.	            break;
?0041:
; 156.	
; 157.	        case Music_Cur:
; 158.	            result = TRUE;
	LD	(IX-2),1
; 159.	            break;
	JR	?0038
?0042:
; 160.	
; 161.	        case Music_Next:
; 162.	            ifSelBuffToltalTimeFlag = FALSE;
	XOR	A
	LD	(ifSelBuffToltalTimeFlag),A
; 163.	            result = FSELGetNext(g_music_vars.location.filename);
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetNextFile
	LD	HL,LWRD fselGetNextFile
	JR	?0143
; 164.	            break;
?0043:
; 165.	
; 166.	        case Music_Prev:
; 167.	            ifSelBuffToltalTimeFlag = FALSE;
	XOR	A
	LD	(ifSelBuffToltalTimeFlag),A
; 168.	            result = FSELGetPrev(g_music_vars.location.filename);
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetPrevFile
	LD	HL,LWRD fselGetPrevFile
?0143:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(IX-2),L
; 169.	            break;
	JR	?0038
?0044:
; 170.	
; 171.	        default:
; 172.	            return FALSE;
	LD	L,0
; 173.	    }
	JR	?0047
?0038:
; 174.	
; 175.	    if (!result)
	XOR	A
	OR	(IX-2)
	JR	NZ,?0046
?0045:
; 176.	    {
; 177.	        fselSetLocation(& g_music_vars.location);
	LD	DE,g_music_vars+7
	LD	A,BYTE3 fselSetLocation
	LD	HL,LWRD fselSetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 178.	        return result;

⌨️ 快捷键说明

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