ui_play_menu.s01

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

S01
1,505
字号
	NAME	ui_play_menu(17)
	RSEG	AP_UI_MNU(0)
	RSEG	CSTR(0)
	RSEG	UDATA0(0)
	RSEG	IDATA0(0)
	RSEG	CDATA0(0)
	RSEG	APC_UI_MNU(0)
	EXTERN	CheckPlayrateLimit
	EXTERN	CheckReplaytimesLimit
	EXTERN	ClearScreen
	EXTERN	DisplayErrMsg
	PUBLIC	FILENAMELSIT
	EXTERN	FS_Backup
	EXTERN	FS_CD
	EXTERN	FS_FOpen
	EXTERN	FS_Restore
	PUBLIC	Navifp
	EXTERN	RePlayStatus
	EXTERN	SRSModeFlag
	PUBLIC	TALBFileName
	PUBLIC	TIT2FileName
	PUBLIC	TPE1FileName
	EXTERN	bass_user_callback
	EXTERN	eq_callback
	PUBLIC	eq_string
	PUBLIC	fsel_mode_change_flag
	EXTERN	g_OldSecTempBackup
	EXTERN	g_comval
	EXTERN	g_currentMusicType
	EXTERN	g_file_list_total
	EXTERN	g_introCNT
	EXTERN	g_introCntMode
	EXTERN	g_music_vars
	EXTERN	g_result
	EXTERN	list
	PUBLIC	list_fp
	PUBLIC	list_playmenu
	EXTERN	loop_callback
	PUBLIC	music_list_menu
	PUBLIC	music_list_string
	EXTERN	musicpSendCommand
	PUBLIC	play_string
	PUBLIC	play_string_ME
	PUBLIC	repeat_string
	PUBLIC	replay_string
	EXTERN	show_music_list
	EXTERN	speed_callback
	EXTERN	srs_callback
	PUBLIC	srs_default_set
	PUBLIC	srs_string
	EXTERN	srs_user_callback
	PUBLIC	srsuser_string
	PUBLIC	ui_EQ_menu
	PUBLIC	ui_SRSUSER_menu
	PUBLIC	ui_SRS_menu
	PUBLIC	ui_loop_menu
	PUBLIC	ui_play_menu
	PUBLIC	ui_play_menu_loop
	EXTERN	ui_popup_list
	PUBLIC	ui_relpay_set_menu
	EXTERN	ui_slider
	EXTERN	wow_user_callback
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?S_S_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	AP_UI_MNU
ui_play_menu:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        This program demostrates how to build an AP
; 5.	*
; 6.	*        (c) Copyright Actions Co,Ld.
; 7.	*
; 8.	*  $Id: ui_play_menu.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 9.	*******************************************************************************
; 10.	*/
; 11.	#include "ap_music.h"
; 12.	handle list_fp;  //列表文件句柄  
; 13.	handle Navifp;  //目录导航文件句柄   
; 14.	BYTE fsel_mode_change_flag = FALSE;  
; 15.	pop_up_list_t  list_playmenu; 
; 16.	extern  int show_music_list(char list_type,const WORD headid);   
; 17.	extern int UI_play_Navi(); 
; 18.	extern int UI_Favourite(BYTE string_id);     
; 19.	extern handle  fpPlaylist; 
; 20.	#pragma codeseg(AP_UI_MNU)
; 21.	#pragma memory=constseg(APC_UI_MNU)
; 22.	
; 23.	const WORD eq_string[7] =
; 24.	{
; 25.	    MEQ1, MEQ2, MEQ3, MEQ4, MEQ5, MEQ6, MEQ7
; 26.	};
; 27.	const WORD srsuser_string[4] =
; 28.	{
; 29.	 SRS3D,SRSTBAS,SRSFOCUS,MPLAY7
; 30.	};
; 31.	const WORD srs_string[3]=
; 32.	{
; 33.	   SRSSET,SRSUSER, DISABSRS
; 34.	};
; 35.	
; 36.	const WORD play_string[6] =
; 37.	{
; 38.	    MPLAY1, MPLAY2,SRSMAIN, MPLAY3,SMAIN5,/*MPLAYLS,MFAVI,*//*MDIRNAVI,MBMARK,*/MPLAY7
; 39.	};
; 40.	//********************add by mzh for musicedit********************
; 41.	const WORD play_string_ME[6] =
; 42.	{
; 43.	    MPLAY1,MPLAY2,SRSMAIN,MPLAY3,SMAIN5,/*MPLAYLS,MFAVI,*//*MDIRNAVI,MBMARK,MPLAY8,MPLAY10,*/MPLAY7
; 44.	};
; 45.	//************************************************************
; 46.	const WORD repeat_string[7] =
; 47.	{
; 48.	    VLOOPM1, VLOOPM2, VLOOPM3, VLOOPM4, VLOOPM5, VLOOPM6, VLOOPM7
; 49.	};
; 50.	const WORD replay_string[3] = 
; 51.	{
; 52.	 MPLAY4,MPLAY5,MPLAY6 
; 53.	}; 
; 54.	
; 55.	//***********************************************************
; 56.	
; 57.	const WORD music_list_string[5] =
; 58.	{
; 59.	    MTITLE, MTPE1, MTALB, MFNAME, MSTOP5
; 60.	}; 
; 61.	const char TIT2FileName[] = "TIT2    BIN" ;      //标题
; 62.	const char TPE1FileName[] = "TPE1    BIN" ;     //艺术家
; 63.	const char TALBFileName[] = "TALB    BIN" ;     //专辑 
; 64.	const char FILENAMELSIT[] = "FILENAMEBIN" ;     //文件名  
; 65.	#pragma memory=default 
; 66.	 
; 67.	#pragma memory=dataseg(APD_UI_MNU)   
; 68.	
; 69.	#pragma memory=default
; 70.	 
; 71.	int music_list_menu(void);
; 72.	int ui_play_menu_loop(void);   
; 73.	int ui_relpay_set_menu(void); 
; 74.	void srs_default_set(void);
; 75.	///-void felseltype_check(void);  
; 76.	extern byte SRSModeFlag;
; 77.	//增加这函数的目的是集中处理这函数退出时都要做的一些事
; 78.	extern EMU_MusicEditSelStatus MusicEditSelStatus;    //musicedit add by mzh 2007.1.19
; 79.	extern EMU_MusicEditStatus MusicEditStatus;    //musicedit add by mzh 2007.1.19
; 80.	extern STRU_SelMusicSegment MusicEdit_SelSeg;
; 81.	extern time_t MusicEditStartTime;
; 82.	extern time_t MusicEditEndTime;
; 83.	extern HANDLE m_Mp3deFileHandle;
; 84.	extern BYTE c_mp3deSongTimeLength[];
; 85.	//******func add by mzh 2007.1.19******
; 86.	extern int UI_SelectSeg(void);
; 87.	extern int UI_DeleteSeg(void);
; 88.	extern int UI_ShowDelSegComfirm(void);
; 89.	extern int UI_BookMark(BYTE string_id);  
; 90.	extern int Deal_play_Navi(void);    //文件导航处理  
; 91.	int ui_play_menu(void)
; 92.	{
	PUSH	DE
; 93.	    int result;
; 94.	    result = ui_play_menu_loop();
	LD	A,BYTE3 ui_play_menu_loop
	LD	HL,LWRD ui_play_menu_loop
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	EX	DE,HL
; 95.	    StartIntro(FALSE);
	XOR	A
	LD	(g_introCntMode),A
	LD	A,(g_music_vars+79)
	LD	(g_OldSecTempBackup),A
	XOR	A
	LD	(g_introCNT),A
; 96.	    return result;
	EX	DE,HL
; 97.	}
	POP	DE
	JP	LWRD ?BANK_FAST_LEAVE_L08
ui_play_menu_loop:
; 98.	
; 99.	int ui_play_menu_loop(void)
; 100.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65524
; 101.	    static char PlayMenuactive=0;    //保持选中菜单的序号
; 102.	    slider_t slider_playmenu; 
; 103.	    if(g_currentMusicType==Music_MP3)            
	LD	A,(g_currentMusicType)
	DEC	A
	JR	NZ,?0004
?0003:
; 104.	    {
; 105.	        list.total = sizeof(play_string_ME)/2;
	LD	HL,6
	LD	(list+2),HL
; 106.	        list.strid = play_string_ME;
	LD	HL,play_string_ME
	JR	?0119
; 107.	    }
; 108.	    else
?0004:
; 109.	    {
; 110.	        ///-if(PlayMenuactive>=8)
; 111.	        if(PlayMenuactive>=4)
	LD	A,(?0002)
	CP	4
	JR	C,?0007
?0006:
; 112.	            PlayMenuactive=0;
	XOR	A
	LD	(?0002),A
?0007:
; 113.	        list.total = sizeof(play_string)/2;
	LD	HL,6
	LD	(list+2),HL
; 114.	        list.strid = play_string;
	LD	HL,play_string
?0119:
	LD	(list),HL
?0005:
; 115.	    }
; 116.	    
; 117.	    list.headid = PLAYMENU;
	LD	HL,416
	LD	(list+6),HL
; 118.	    list.active = PlayMenuactive;
	LD	BC,(?0002)
	LD	B,0
	LD	(list+4),BC
; 119.	    list.string_id = g_comval.langid;
	LD	A,(g_comval+12)
	LD	(list+8),A
; 120.	    g_result = ui_popup_list(&list, NULL);
	LD	C,B
	PUSH	BC
	PUSH	BC
	LD	DE,list
	CALL	LWRD ?0156
	POP	AF
	POP	AF
	LD	(g_result),HL
; 121.	    PlayMenuactive = list.active;
	LD	A,(list+4)
	LD	(?0002),A
; 122.	
; 123.	    if (g_result == RESULT_IGNORE)return 0;
	LD	A,52
	XOR	L
	OR	H
	JP	Z,?0012
?0008:
?0009:
; 124.	
; 125.	    if (g_result != 0)return g_result; //是热键
	LD	A,L
	OR	H
	JR	NZ,?0016
?0010:
?0011:
; 126.	    /*if( (list.active>4) && (list.active<11))           
; 127.	      felseltype_check();                    //退出DRM播放列表模式*/
; 128.	    switch (list.active)
	LD	DE,(list+4)
	CALL	LWRD ?S_S_SWITCH_L06
	DEFW	0
	DEFW	6
	DEFW	?0012
	DEFW	?0013
	DEFW	?0017
	DEFW	?0018
	DEFW	?0023
	DEFW	?0030
	DEFW	?0012
?0013:
; 129.	    {
; 130.	        case 0: //repeat
; 131.	            if(g_music_vars.file_list_type == 0xff)   
	LD	A,(g_music_vars+92)
	INC	A
	JR	NZ,?0015
?0014:
; 132.	            g_result = ui_loop_menu();
	LD	A,BYTE3 ui_loop_menu
	LD	HL,LWRD ui_loop_menu
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	JR	?0120
; 133.	            else 
?0015:
; 134.	            g_result = 0; 
	LD	L,C
	LD	H,B
?0120:
	LD	(g_result),HL
?0016:
; 135.	            return g_result;
	JP	LWRD ?0033
; 136.	
; 137.	        case 1: //eq
?0017:
; 138.	            g_result = ui_EQ_menu();
	LD	A,BYTE3 ui_EQ_menu
	LD	HL,LWRD ui_EQ_menu
	JR	?0124
; 139.	            return g_result;
; 140.	
; 141.	        case 2: //play speed
?0018:
; 142.	            if( g_currentMusicType==Music_MP3 ||g_currentMusicType==Music_WMA) 
	LD	A,(g_currentMusicType)
	DEC	A
	JR	Z,?0021
	LD	A,(g_currentMusicType)
	DEC	A
	DEC	A
	JR	NZ,?0020
?0021:
?0022:
?0019:
; 143.	            {
; 144.	             g_result = ui_SRS_menu();
	LD	A,BYTE3 ui_SRS_menu
	LD	HL,LWRD ui_SRS_menu
?0124:
	JP	LWRD ?0125
; 145.	             return g_result;
; 146.	            }
?0020:
; 147.	            else
; 148.	              break; 
	JP	LWRD ?0012
?0023:
; 149.	        case 3: //play speed
; 150.	            //只有在播放MP3并不是在SD卡时才能调节播放速度
; 151.	            if( (g_currentMusicType == Music_MP3)
; 152.	                && (g_music_vars.location.disk != 'H') )
	LD	A,(g_currentMusicType)
	DEC	A
	JR	NZ,?0029
	LD	A,(g_music_vars+7)
	CP	72
	JR	Z,?0012
?0027:
?0026:
?0024:
; 153.	            {
; 154.	                //show background
; 155.	                ClearScreen(NULL);
	LD	E,C
	LD	D,B
	CALL	LWRD ClearScreen
; 156.	                slider_playmenu.max = 8;
	LD	(IX-8),8
	LD	(IX-7),B
; 157.	                slider_playmenu.min = -8;
	LD	(IX-10),248
	LD	(IX-9),255
; 158.	                slider_playmenu.step = 1;
	LD	(IX-4),1
	LD	(IX-3),B
; 159.	                CheckPlayrateLimit();
	LD	A,BYTE3 CheckPlayrateLimit
	LD	HL,LWRD CheckPlayrateLimit
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 160.	                slider_playmenu.value = g_music_vars.play_rate;
	LD	BC,(g_music_vars+3)
	LD	A,C
	RLCA
	SBC	A,A
	LD	B,A
	LD	(IX-6),C
	LD	(IX-5),B
; 161.	                slider_playmenu.string_id = g_comval.langid;
	LD	A,(g_comval+12)
	LD	(IX-2),A
; 162.	                slider_playmenu.title=play_string[list.active];
	LD	HL,(list+4)
	ADD	HL,HL
	LD	BC,play_string
	ADD	HL,BC
	LD	B,(HL)
	INC	HL
	LD	H,(HL)
	LD	(IX-12),B
	LD	(IX-11),H
; 163.	                g_result = ui_slider(& slider_playmenu, speed_callback);
	LD	C,BYTE3 speed_callback
	PUSH	BC
	LD	HL,LWRD speed_callback
	PUSH	HL
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 ui_slider
	LD	HL,LWRD ui_slider
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
	LD	(g_result),HL
; 164.	                g_music_vars.play_rate = slider_playmenu.value;
	LD	A,(IX-6)
	LD	(g_music_vars+3),A
; 165.	                if (g_result != 0)return g_result;
	LD	A,L
	OR	H
	JR	Z,?0012
?0028:
; 166.	            }
	JR	?0033
?0029:
?0025:
; 167.	            break;
	JR	?0012
?0030:
; 168.	
; 169.	        case 4: // set A_B
; 170.	            g_result = ui_relpay_set_menu();
	LD	A,BYTE3 ui_relpay_set_menu
	LD	HL,LWRD ui_relpay_set_menu
?0125:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
; 171.	            return g_result;
; 172.	        case 5: //exit
	JR	?0033
?0031:
; 173.	                  break;
?0032:
; 174.	/*
; 175.	            g_result = music_list_menu();                   //ID3 列表排序播放
; 176.	            if(g_result == 0)                           
; 177.	            { 
; 178.	             g_result = RESULT_MUSIC_PLAY; 
; 179.	            }
; 180.	            if(g_result == RESULT_IGNORE)g_result = 0;
; 181.	            return g_result; 
; 182.	            break;      
; 183.	     
; 184.	       case 6:                 //退出DRM列表模式          //收藏夹功能            
; 185.	            g_music_vars.file_list_type = 0xff;       
; 186.	            g_result =UI_Favourite(g_comval.langid);         
; 187.	            if(g_result == RESULT_IGNORE)g_result = 0;
; 188.	            return g_result;
; 189.	            break;                        
; 190.	                                      
; 191.	       case 7: //exit                                     //k时文件导航
; 192.	            g_music_vars.file_list_type = 0xff;    
; 193.	            g_music_vars.fselmod = FSEL_TYPE_COMMONDIR;   
; 194.	            g_result = Deal_play_Navi();            
; 195.	            if(g_result == RESULT_IGNORE)                  
; 196.	            g_result =0;
; 197.	            return g_result;
; 198.	            break;                         
; 199.	                   
; 200.	        case 8: //bookmark 
; 201.	               
; 202.	            g_result = UI_BookMark(g_comval.langid);     //书签
; 203.	            return g_result;
; 204.	
; 205.	        case 9: //select seg
; 206.	            if(g_currentMusicType==Music_MP3)
; 207.	            { 
; 208.	                g_result = UI_SelectSeg();          //串烧选段
; 209.	                return g_result;
; 210.	            }
; 211.	            break;
; 212.	        case 10: //delete seg
; 213.	            if(g_currentMusicType==Music_MP3)            
; 214.	            {
; 215.	                g_result = UI_DeleteSeg();      //串烧删除选段  
; 216.	                return g_result;
; 217.	            }
; 218.	            break;
; 219.	        case 11: //exit
; 220.	            break;
; 221.	*/
; 222.	        default:
; 223.	            break;
?0012:
; 224.	    } //switch(menu.active)
; 225.	
; 226.	    return 0;
	LD	HL,0
; 227.	
; 228.	}     //ui_play_menu()
?0033:
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0157:
	LD	DE,list_playmenu
?0156:
	LD	A,BYTE3 ui_popup_list
	LD	HL,LWRD ui_popup_list
	JP	LWRD ?BANK_CALL_DIRECT_L08
ui_EQ_menu:
; 229.	
; 230.	int ui_EQ_menu( void )
; 231.	{
	PUSH	BC
	PUSH	DE
	LD	HL,eq_string

⌨️ 快捷键说明

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