sub_function1.s01

来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 1,819 行 · 第 1/3 页

S01
1,819
字号
	NAME	sub_function1(17)
	RSEG	AP_SUB_FUN1(0)
	RSEG	CSTR(0)
	EXTERN	BankSwitch
	EXTERN	CaltimeFlag
	PUBLIC	ChangeMusic
	EXTERN	CheckMusicType
	EXTERN	ClearTimePara
	EXTERN	DRV_ActiveUD
	EXTERN	DRV_DetectUD
	PUBLIC	DealMusicFileEnd
	PUBLIC	Deal_Error_Playing
	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	bList_Flag
	EXTERN	fselGetLocation
	EXTERN	fselGetNextFile
	EXTERN	fselGetNo
	EXTERN	fselGetPrevFile
	EXTERN	fselGetTotal
	EXTERN	fselInit
	EXTERN	fselPlayListExit
	EXTERN	fselSetLocation
	EXTERN	fselSetMode
	EXTERN	fsel_mode_change_flag
	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_comval
	EXTERN	g_currentMusicType
	EXTERN	g_file_list_total
	EXTERN	g_music_vars
	EXTERN	g_musicamount
	EXTERN	g_musicsequence
	EXTERN	g_result
	EXTERN	ifSelBuffToltalTimeFlag
	EXTERN	itoa_2
	EXTERN	main_ResShowPic
	EXTERN	make_dirname
	EXTERN	mp3pSendCommand
	EXTERN	musicpSendCommand
	PUBLIC	musicpSendCommand_bank
	EXTERN	need_draw
	EXTERN	oggpSendCommand
	EXTERN	openPA
	EXTERN	select_music_list
	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
	EXTERN	?STRCAT_L11
	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.	extern BYTE fsel_mode_change_flag;
; 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.	extern int  select_music_list(BYTE Direct);   
; 26.	#pragma codeseg(AP_SUB_FUN1)
; 27.	void DisInFBHead(char DisMod)
; 28.	{
	CALL	LWRD ?ENT_PARM_DIRECT_L09
; 29.	    if (DisMod == 0)
	INC	E
	DEC	E
	JR	NZ,?0003
?0002:
; 30.	    {//普通显示模式
; 31.	        temp_buffer[0] = '0';
	LD	A,48
	LD	(temp_buffer),A
; 32.	        temp_buffer[1] = '0';
	LD	(temp_buffer+1),A
; 33.	        temp_buffer[3] = '0';
	LD	(temp_buffer+3),A
; 34.	        temp_buffer[4] = '0';
	LD	(temp_buffer+4),A
; 35.	        temp_buffer[6] = '0';
	LD	(temp_buffer+6),A
; 36.	        temp_buffer[7] = '0';
	LD	(temp_buffer+7),A
; 37.	        ui_show_d(temp_buffer,0);
	LD	C,E
	CALL	LWRD ?0207
; 38.	    }
; 39.	    else
	JR	?0004
?0003:
; 40.	    {//歌词显示模式
; 41.	        main_ResShowPic(LYRIC_R, LyricIcon_Pos_X, LyricIcon_Pos_Y);
	LD	C,121
	PUSH	BC
	LD	C,161
	LD	DE,160
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0004:
; 42.	    }
; 43.	    return;
; 44.	
; 45.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0207:
	LD	DE,temp_buffer
	LD	A,BYTE3 ui_show_d
	LD	HL,LWRD ui_show_d
	JP	LWRD ?BANK_CALL_DIRECT_L08
DisInFFEnd:
; 46.	
; 47.	void DisInFFEnd(char DisMod)
; 48.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65528
; 49.	    if(DisMod == 0)
	XOR	A
	OR	(IX+2)
	JR	NZ,?0006
?0005:
; 50.	    {//普通显示模式
; 51.	        wma_play_status_t status_buf;
; 52.	        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 ?0215
; 53.	        itoa_2(status_buf.total_time.hour, &temp_buffer[0]);
	LD	BC,temp_buffer
	LD	E,(IX-5)
	CALL	LWRD ?0217
; 54.	        strcat(temp_buffer,":");
; 55.	        itoa_2(status_buf.total_time.minute, &temp_buffer[3]);
	LD	BC,temp_buffer+3
	LD	E,(IX-4)
	CALL	LWRD ?0217
; 56.	        strcat(temp_buffer,":");
; 57.	        itoa_2(status_buf.total_time.second, & temp_buffer[6]);
	LD	BC,temp_buffer+6
	LD	E,(IX-3)
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 58.	        ui_show_d(temp_buffer,0);
	LD	C,0
	CALL	LWRD ?0207
; 59.	    }
; 60.	    else
	JR	?0008
?0006:
; 61.	    {//歌词显示模式
; 62.	        main_ResShowPic(LYRIC_F, LyricIcon_Pos_X, LyricIcon_Pos_Y);
	LD	C,121
	PUSH	BC
	LD	C,161
	LD	DE,159
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0008:
; 63.	    }
; 64.	    return;
; 65.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0216:
	LD	BC,1
	LD	E,13
?0215:
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0217:
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	DE,?0007
	LD	HL,temp_buffer
	CALL	LWRD ?STRCAT_L11
	RET
DealMusicFileEnd:
; 66.	
; 67.	//===========[放到文件尾时的处理]===============
; 68.	int DealMusicFileEnd( char DisMod)
; 69.	{
	PUSH	DE
; 70.	    wma_play_status_t status_buf;
; 71.	
; 72.	    int key;
; 73.	
; 74.	    need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 75.	
; 76.	    if (PlayStatus == FBPlaySta)
	LD	A,(PlayStatus)
	CP	4
	JR	NZ,?0010
?0009:
; 77.	    {
; 78.	        DisInFBHead( DisMod );//到头显示
	LD	A,BYTE3 DisInFBHead
	LD	HL,LWRD DisInFBHead
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0012:
; 79.	        while ( ap_get_message() != (AP_KEY_PREV | AP_KEY_UP) );
	CALL	LWRD ap_get_message
	CP	37
	JR	NZ,?0012
?0013:
?0011:
; 80.	        SelectCurMusic();
	LD	A,BYTE3 SelectCurMusic
	LD	HL,LWRD SelectCurMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	JR	?0028
?0010:
; 81.	
; 82.	    }
; 83.	    else if (PlayStatus == FFPlaySta)
	CP	3
	JR	NZ,?0016
?0015:
; 84.	    {
; 85.	        DisInFFEnd( DisMod );//到尾显示
	LD	A,BYTE3 DisInFFEnd
	LD	HL,LWRD DisInFFEnd
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0018:
; 86.	        while ( ap_get_message() != (AP_KEY_NEXT | AP_KEY_UP) );
	CALL	LWRD ap_get_message
	CP	38
	JR	NZ,?0018
?0019:
?0017:
; 87.	        g_result = ToNextMusic(Play_play);
	CALL	LWRD ?0218
; 88.	        if(DisMod == 0)
	ADD	HL,SP
	XOR	A
	OR	(HL)
	JR	NZ,?0021
?0020:
; 89.	        {
; 90.	            SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
?0021:
; 91.	        }
; 92.	        if(g_result == RESULT_UI_STOP) return g_result;
	LD	HL,(g_result)
	LD	A,102
	XOR	L
	OR	H
	JR	NZ,?0028
?0022:
	JR	?0029
; 93.	    }
?0023:
; 94.	
; 95.	    else
?0016:
; 96.	    {
; 97.	        g_result = ToNextMusic(Play_play);
	CALL	LWRD ?0218
; 98.	        if(DisMod == 0)
	ADD	HL,SP
	XOR	A
	OR	(HL)
	JR	NZ,?0026
?0025:
; 99.	        {
; 100.	            SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
?0026:
; 101.	        }
; 102.	        if(g_result == RESULT_UI_STOP) return g_result;
	LD	HL,(g_result)
	LD	A,102
	XOR	L
	OR	H
	JR	Z,?0029
?0027:
; 103.	    }
?0028:
?0024:
?0014:
; 104.	    return NULL;
	LD	HL,0
; 105.	}
?0029:
	POP	AF
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0218:
	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:
; 106.	//================================================
; 107.	
; 108.	
; 109.	/*
; 110.	*******************************************************************************
; 111.	* Description : 换曲时要做的选曲,初始化动作
; 112.	* Arguments  :
; 113.	* Returns     :真时表示可继续放,假时表示要停止放(播放状态)
; 114.	* Notes       :
; 115.	*******************************************************************************
; 116.	*/
; 117.	bool ChangeMusic( BYTE Direct, Music_sel_mod_t mod )
; 118.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65534
; 119.	    bool result;
; 120.	
; 121.	    //清 WATCH_DOG
; 122.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 123.	
; 124.	    //选文件
; 125.	    RePlayStatus = NormalPlay;
	XOR	A
	LD	(RePlayStatus),A
; 126.	    ClearTimePara();
	LD	A,BYTE3 ClearTimePara
	LD	HL,LWRD ClearTimePara
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 127.	    g_TagInfoBuf[0] = 0x0;
	XOR	A
	LD	(g_TagInfoBuf),A
; 128.	    BankSwitch((unsigned long)FSELInit >> 16);
	LD	E,BYTE3 fselInit
	EX	DE,HL
	LD	E,L
	CALL	LWRD BankSwitch
; 129.	    if(fsel_mode_change_flag)                 //退出playlist 模式时要重新初始化文件选择器
	LD	A,(fsel_mode_change_flag)
	OR	A
	JR	Z,?0031
?0030:
; 130.	    { 
; 131.	     fsel_mode_change_flag = FALSE;            
	XOR	A
	LD	(fsel_mode_change_flag),A
; 132.	     FSELInit(FSEL_TYPE_MUSIC, g_music_vars.repeat_mode, g_music_vars.fselmod ,g_music_vars.location.disk);//初始化文件选择器    
	LD	HL,g_music_vars+7
	LD	C,(HL)
	PUSH	BC
	LD	HL,g_music_vars+81
	LD	C,(HL)
	PUSH	BC
	LD	BC,(g_music_vars+1)
	LD	E,A
	CALL	LWRD ?0220
	POP	AF
	POP	AF
?0031:
; 133.	    }
; 134.	   if(g_music_vars.file_list_type==0xff)
	LD	A,(g_music_vars+92)
	INC	A
	JP	NZ,?0033
?0032:
; 135.	   { 
; 136.	    if (mod == Play_key)
	LD	B,(IX+4)
	DEC	B
	DEC	B
	JR	NZ,?0035
?0034:
; 137.	    {//play 按键的情况
; 138.	        switch (g_music_vars.repeat_mode)
	LD	A,(g_music_vars+1)
	CP	1
	JR	NZ,?0041
?0037:
; 139.	        {
; 140.	        case FSEL_ALL_REPEATONE:
; 141.	            FSELSetMode( FSEL_ALL_REPEATALL );//PLAY 时按键
	JR	?0193
; 142.	            break;
?0038:
; 143.	
; 144.	
; 145.	        default:
; 146.	            FSELSetMode(g_music_vars.repeat_mode);//
; 147.	            break;
?0036:
?0035:
; 148.	        }
; 149.	    }
; 150.	    else if (mod == Stop_key)
	OR	(IX+4)
	JR	NZ,?0041
?0040:
; 151.	    {//
; 152.	        FSELSetMode(FSEL_ALL_REPEATALL);//STOP时按键
?0193:
	LD	E,4
	JR	?0183
; 153.	    }
; 154.	    else
?0041:
; 155.	    {//正常播放的情况
; 156.	        FSELSetMode(g_music_vars.repeat_mode);
	LD	DE,(g_music_vars+1)
?0183:
	CALL	LWRD ?0222
?0042:
?0039:
; 157.	    }
; 158.	
; 159.	    switch (Direct)
	LD	E,(IX+2)
	CALL	LWRD ?C_S_SWITCH_L06
	DEFB	0
	DEFW	5
	DEFW	?0190
	DEFW	?0043
	DEFW	?0043
	DEFW	?0046
	DEFW	?0047
	DEFW	?0052
?0044:
; 160.	    {
; 161.	        case Music_Reset_Head:
; 162.	            break;
?0045:
; 163.	
; 164.	        case Music_Reset_End:
; 165.	            break;
?0046:
; 166.	
; 167.	        case Music_Cur:
; 168.	            result = TRUE;
	LD	(IX-2),1
; 169.	            break;
	JR	?0043
?0047:
; 170.	
; 171.	        case Music_Next:
; 172.	            if(mod==list_key)                //从播放列表选择文件模式             
	LD	A,(IX+4)
	CP	3
	JR	NZ,?0049
?0048:
; 173.	            { 
; 174.	             result = TRUE;   
	LD	(IX-2),1
; 175.	             if(!fselSetLocation(& g_music_vars.location))        //重新选择文件
	CALL	LWRD ?0226
	INC	L
	DEC	L
	JR	NZ,?0043
?0050:
; 176.	             {
; 177.	               DisplayErrMsg(MFILEOUT);                      //没有文件  
; 178.	               fselGetLocation(& g_music_vars.location); 
	CALL	LWRD ?0224
; 179.	               return FALSE;
	JR	?0053
; 180.	             } 
?0051:
; 181.	             break;          
?0049:
; 182.	            }
; 183.	            ifSelBuffToltalTimeFlag = FALSE;
	XOR	A
	LD	(ifSelBuffToltalTimeFlag),A
; 184.	            result = FSELGetNext(g_music_vars.location.filename);
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetNextFile
	LD	HL,LWRD fselGetNextFile
	JR	?0184
; 185.	            break;
?0052:
; 186.	
; 187.	        case Music_Prev:
; 188.	            ifSelBuffToltalTimeFlag = FALSE;
	XOR	A
	LD	(ifSelBuffToltalTimeFlag),A
; 189.	            result = FSELGetPrev(g_music_vars.location.filename);
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetPrevFile
	LD	HL,LWRD fselGetPrevFile
?0184:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(IX-2),L
; 190.	            break;
	JR	?0043
?0053:
; 191.	
; 192.	        default:
; 193.	            return FALSE;
	JP	LWRD ?0190
; 194.	    }
?0043:
; 195.	
; 196.	    if (!result)
	XOR	A
	OR	(IX-2)
	JR	NZ,?0055
?0054:
; 197.	    {
; 198.	        fselSetLocation(& g_music_vars.location);
	CALL	LWRD ?0226
; 199.	        return result;
	LD	L,(IX-2)
; 200.	    }
	JP	LWRD ?0076
?0055:
; 201.	
; 202.	#ifdef ACTIVE_USERPL
; 203.	    bList_Flag = FALSE;
	XOR	A
	LD	(bList_Flag),A
; 204.	#endif  
; 205.	    //取当前歌曲数状态
; 206.	    g_musicamount = FSELGetTotal();
	LD	A,BYTE3 fselGetTotal
	LD	HL,LWRD fselGetTotal
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_musicamount),HL
; 207.	    g_musicsequence = FSELGetNo();
	LD	A,BYTE3 fselGetNo
	LD	HL,LWRD fselGetNo
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_musicsequence),HL
; 208.	    FSELSetMode(g_music_vars.repeat_mode);
	CALL	LWRD ?0223
; 209.	
; 210.	    //确保选择器与AP的目录对应
; 211.	    fselGetLocation(& g_music_vars.location);
	CALL	LWRD ?0225
; 212.	 }     //没有选择列表

⌨️ 快捷键说明

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