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

📄 ui_play_menu.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_play_menu(17)
	RSEG	AP_UI_MNU(0)
	RSEG	IDATA0(0)
	RSEG	CDATA0(0)
	RSEG	APC_UI_MNU(0)
	EXTERN	CheckPlayrateLimit
	EXTERN	CheckReplaygapLimit
	EXTERN	CheckReplaytimesLimit
	EXTERN	ClearScreen
	EXTERN	RePlayStatus
	EXTERN	SRSModeFlag
	EXTERN	bass_user_callback
	EXTERN	eq_callback
	PUBLIC	eq_string
	EXTERN	g_OldSecTempBackup
	EXTERN	g_comval
	EXTERN	g_currentMusicType
	EXTERN	g_introCNT
	EXTERN	g_introCntMode
	EXTERN	g_music_vars
	EXTERN	g_result
	EXTERN	list
	EXTERN	loop_callback
	EXTERN	musicpSendCommand
	PUBLIC	play_string
	PUBLIC	repeat_string
	EXTERN	slider
	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
	EXTERN	ui_auto_update
	PUBLIC	ui_loop_menu
	PUBLIC	ui_play_menu
	PUBLIC	ui_play_menu_loop
	EXTERN	ui_popup_list
	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.	
; 13.	#pragma codeseg(AP_UI_MNU)
; 14.	#pragma memory=constseg(APC_UI_MNU)
; 15.	
; 16.	const WORD eq_string[7] =
; 17.	{
; 18.	    MEQ1, MEQ2, MEQ3, MEQ4, MEQ5, MEQ6, MEQ7
; 19.	};
; 20.	const WORD srsuser_string[4] =
; 21.	{
; 22.	 SRS3D,SRSTBAS,SRSFOCUS,MPLAY7
; 23.	};
; 24.	const WORD srs_string[3]=
; 25.	{
; 26.	   SRSSET,SRSUSER, DISABSRS
; 27.	};
; 28.	
; 29.	const WORD play_string[8] =
; 30.	{
; 31.	    MPLAY1, MPLAY2,SRSMAIN, MPLAY3, MPLAY4, MPLAY5, MPLAY6, MPLAY7
; 32.	};
; 33.	
; 34.	const WORD repeat_string[7] =
; 35.	{
; 36.	    VLOOPM1, VLOOPM2, VLOOPM3, VLOOPM4, VLOOPM5, VLOOPM6, VLOOPM7
; 37.	};
; 38.	
; 39.	#pragma memory=default
; 40.	
; 41.	int ui_play_menu_loop(void);
; 42.	void srs_default_set(void);   
; 43.	extern byte SRSModeFlag;
; 44.	//增加这函数的目的是集中处理这函数退出时都要做的一些事
; 45.	                              //(减小调用处的程序开销)
; 46.	int ui_play_menu(void)
; 47.	{
	PUSH	DE
; 48.	    int result;
; 49.	    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
; 50.	    StartIntro(FALSE);
	XOR	A
	LD	(g_introCntMode),A
	LD	A,(g_music_vars+77)
	LD	(g_OldSecTempBackup),A
	XOR	A
	LD	(g_introCNT),A
; 51.	    return result;
	EX	DE,HL
; 52.	}
	POP	DE
	JP	LWRD ?BANK_FAST_LEAVE_L08
ui_play_menu_loop:
; 53.	
; 54.	int ui_play_menu_loop(void)
; 55.	{
	PUSH	BC
	PUSH	DE
	LD	HL,491
	LD	(list+6),HL
; 56.	    //int result;
; 57.	    static char PlayMenuactive=0;    //保持选中菜单的序号
; 58.	    
; 59.	    list.headid = PLAYMENU;
; 60.	    list.active = PlayMenuactive;
	LD	BC,(?0002)
	LD	B,0
	LD	(list+4),BC
; 61.	    list.total = 8;
	LD	HL,8
	LD	(list+2),HL
; 62.	    list.strid = play_string;
	LD	HL,play_string
	LD	(list),HL
; 63.	    list.string_id = g_comval.langid;
	LD	A,(g_comval+12)
	LD	(list+8),A
; 64.	    g_result = ui_popup_list(&list, NULL);
	LD	C,B
	PUSH	BC
	PUSH	BC
	LD	DE,list
	CALL	LWRD ?0099
	POP	AF
	POP	AF
	LD	(g_result),HL
; 65.	    PlayMenuactive = list.active;
	LD	A,(list+4)
	LD	(?0002),A
; 66.	    DEBUGP(5);
; 67.	
; 68.	    if (g_result == RESULT_IGNORE)return 0;
	LD	A,52
	XOR	L
	OR	H
	JP	Z,?0007
?0003:
?0004:
; 69.	
; 70.	    if (g_result != 0)return g_result; //是热键
	LD	A,L
	OR	H
	JP	NZ,?0033
?0005:
?0006:
; 71.	
; 72.	    switch (list.active)
	LD	DE,(list+4)
	CALL	LWRD ?S_S_SWITCH_L06
	DEFW	0
	DEFW	8
	DEFW	?0007
	DEFW	?0008
	DEFW	?0009
	DEFW	?0010
	DEFW	?0015
	DEFW	?0022
	DEFW	?0025
	DEFW	?0028
	DEFW	?0007
?0008:
; 73.	    {
; 74.	        case 0: //repeat
; 75.	            g_result = ui_loop_menu();
	LD	A,BYTE3 ui_loop_menu
	LD	HL,LWRD ui_loop_menu
	JR	?0083
; 76.	            return g_result;
; 77.	
; 78.	        case 1: //eq
?0009:
; 79.	            g_result = ui_EQ_menu();
	LD	A,BYTE3 ui_EQ_menu
	LD	HL,LWRD ui_EQ_menu
	JR	?0083
; 80.	            return g_result;
; 81.	
; 82.	        case 2: //play speed
?0010:
; 83.	            if( g_currentMusicType==Music_MP3 ||g_currentMusicType==Music_WMA) 
	LD	A,(g_currentMusicType)
	DEC	A
	JR	Z,?0013
	LD	A,(g_currentMusicType)
	DEC	A
	DEC	A
	JR	NZ,?0012
?0013:
?0014:
?0011:
; 84.	            {
; 85.	             g_result = ui_SRS_menu();
	LD	A,BYTE3 ui_SRS_menu
	LD	HL,LWRD ui_SRS_menu
?0083:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_result),HL
; 86.	             return g_result;
; 87.	            }
	JP	LWRD ?0033
?0012:
; 88.	            else
; 89.	              break; 
	JP	LWRD ?0007
?0015:
; 90.	        case 3: //play speed
; 91.	            //只有在播放MP3并不是在SD卡时才能调节播放速度
; 92.	            if( (g_currentMusicType == Music_MP3)
; 93.	                && (g_music_vars.location.disk != 'H') )
	LD	A,(g_currentMusicType)
	DEC	A
	JR	NZ,?0021
	LD	A,(g_music_vars+7)
	CP	72
	JR	Z,?0021
?0019:
?0018:
?0016:
; 94.	            {
; 95.	                //show background
; 96.	                ClearScreen(NULL);
	LD	E,C
	LD	D,B
	CALL	LWRD ClearScreen
; 97.	                slider.max = 8;
	LD	HL,8
	LD	(slider+4),HL
; 98.	                slider.min = -8;
	LD	HL,65528
	LD	(slider+2),HL
; 99.	                slider.step = 1;
	LD	HL,1
	LD	(slider+8),HL
; 100.	                CheckPlayrateLimit();
	LD	A,BYTE3 CheckPlayrateLimit
	LD	HL,LWRD CheckPlayrateLimit
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 101.	                slider.value = g_music_vars.play_rate;
	LD	BC,(g_music_vars+3)
	LD	A,C
	RLCA
	SBC	A,A
	LD	B,A
	LD	(slider+6),BC
; 102.	                slider.string_id = g_comval.langid;
	LD	A,(g_comval+12)
	LD	(slider+10),A
; 103.	                slider.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	L,B
	LD	(slider),HL
; 104.	                g_result = ui_slider(& slider, speed_callback);
	LD	C,BYTE3 speed_callback
	PUSH	BC
	LD	HL,LWRD speed_callback
	PUSH	HL
	CALL	LWRD ?0098
	POP	AF
	POP	AF
	LD	(g_result),HL
; 105.	                g_music_vars.play_rate = slider.value;
	LD	A,(slider+6)
	LD	(g_music_vars+3),A
; 106.	                if (g_result != 0)return g_result;
	LD	A,L
	OR	H
	JR	NZ,?0084
?0020:
; 107.	            }
?0021:
?0017:
; 108.	            break;
	JP	LWRD ?0007
?0022:
; 109.	
; 110.	        case 4: // set A_B
; 111.	            if(musicpSendCommand(MC_SETA_B, ClrABPoint))
	LD	E,65
	CALL	LWRD ?0101
	INC	L
	DEC	L
	JR	Z,?0024
?0023:
; 112.	                RePlayStatus = WaitSetAPointForAB;
	LD	A,1
	LD	(RePlayStatus),A
?0024:
; 113.	            break;
	JP	LWRD ?0007
?0025:
; 114.	
; 115.	        case 5: //replay times
; 116.	            slider.max = 10;
	LD	HL,10
	LD	(slider+4),HL
; 117.	            slider.min = 1;
	LD	L,1
	LD	(slider+2),HL
; 118.	            slider.step = 1;
	LD	(slider+8),HL
; 119.	            CheckReplaytimesLimit();
	LD	A,BYTE3 CheckReplaytimesLimit
	LD	HL,LWRD CheckReplaytimesLimit
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 120.	            slider.value = g_music_vars.replaytimes;
	LD	BC,(g_music_vars+4)
	LD	B,0
	LD	(slider+6),BC
; 121.	            slider.string_id = g_comval.langid;
	LD	A,(g_comval+12)
	LD	(slider+10),A
; 122.	            slider.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	L,B
	LD	(slider),HL
; 123.	            g_result = ui_slider(& slider, NULL);
	LD	C,0
	PUSH	BC
	LD	L,C
	LD	H,C
	PUSH	HL
	CALL	LWRD ?0098
	POP	AF
	POP	AF
	LD	(g_result),HL
; 124.	            g_music_vars.replaytimes = slider.value;
	LD	A,(slider+6)
	LD	(g_music_vars+4),A
; 125.	            if (g_result != 0)return g_result;
	LD	A,L
	OR	H
	JR	Z,?0007
?0026:
?0084:
	JR	?0033
; 126.	            break;
?0027:
?0028:
; 127.	
; 128.	        case 6: //replay pause
; 129.	            slider.max = 10;
	LD	HL,10
	LD	(slider+4),HL
; 130.	            slider.min = 1;
	LD	L,1
	LD	(slider+2),HL
; 131.	            slider.step = 1;
	LD	(slider+8),HL
; 132.	            CheckReplaygapLimit();
	LD	A,BYTE3 CheckReplaygapLimit
	LD	HL,LWRD CheckReplaygapLimit
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 133.	            slider.value = g_music_vars.replaygap;
	LD	BC,(g_music_vars+5)
	LD	B,0
	LD	(slider+6),BC
; 134.	            slider.string_id = g_comval.langid;
	LD	A,(g_comval+12)
	LD	(slider+10),A
; 135.	            slider.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	L,B
	LD	(slider),HL
; 136.	            g_result = ui_slider(& slider, NULL);
	LD	C,0
	PUSH	BC
	LD	L,C
	LD	H,C
	PUSH	HL
	CALL	LWRD ?0098
	POP	AF
	POP	AF
	LD	(g_result),HL
; 137.	            ui_auto_update = TRUE;
	LD	A,1
	LD	(ui_auto_update),A
; 138.	            g_music_vars.replaygap = slider.value;
	LD	A,(slider+6)
	LD	(g_music_vars+5),A
; 139.	            if (g_result != 0)return g_result;
	LD	A,L
	OR	H
	JR	NZ,?0033
?0029:
; 140.	            break;
?0030:
?0031:
; 141.	
; 142.	        case 7: //exit
; 143.	            break;
?0032:
; 144.	
; 145.	        default:
; 146.	            break;
?0007:
; 147.	    } //switch(menu.active)
; 148.	
; 149.	    return 0;
	LD	HL,0
; 150.	
; 151.	}     //ui_play_menu()
?0033:
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0098:
	LD	DE,slider
	LD	A,BYTE3 ui_slider
	LD	HL,LWRD ui_slider
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0100:
	EX	DE,HL
?0099:
	LD	A,BYTE3 ui_popup_list
	LD	HL,LWRD ui_popup_list
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0101:
	LD	A,BYTE3 musicpSendCommand
	LD	HL,LWRD musicpSendCommand
	JP	LWRD ?BANK_CALL_DIRECT_L08
ui_EQ_menu:
; 152.	
; 153.	int ui_EQ_menu( void )
; 154.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65526
; 155.	
; 156.	        pop_up_list_t list;
; 157.	        list.strid= eq_string;
	LD	(IX-10),LOW(eq_string)
	LD	(IX-9),HIGH(eq_string)
; 158.	        list.total = 7;
	LD	(IX-8),7
	LD	(IX-7),0
; 159.	     if(g_music_vars.eq_type>8)
	LD	A,(g_music_vars+2)
	LD	B,A
	LD	A,8
	CP	B
	JR	NC,?0035
?0034:
; 160.	     {
; 161.	       list.active= 0;
	XOR	A
	LD	(IX-6),A
	LD	(IX-5),A
; 162.	       eq_callback(0);
	LD	E,A
	LD	D,A
	LD	A,BYTE3 eq_callback
	LD	HL,LWRD eq_callback
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 163.	     }
; 164.	     else
	JR	?0036
?0035:
; 165.	      {
; 166.	        list.active = g_music_vars.eq_type;
	LD	(IX-6),B
	LD	B,0
	LD	(IX-5),B
?0036:
; 167.	      }
; 168.	        list.string_id = g_comval.langid;
	LD	A,(g_comval+12)
	LD	(IX-2),A
; 169.	        list.headid=MPLAY2;
	LD	(IX-4),31
	LD	(IX-3),1
; 170.	        g_result = ui_popup_list(&list, eq_callback);
	LD	C,BYTE3 eq_callback
	PUSH	BC
	LD	HL,LWRD eq_callback
	PUSH	HL
	LD	HL,4
	ADD	HL,SP
	CALL	LWRD ?0100
	POP	AF
	POP	AF
	LD	(g_result),HL
; 171.	        StartIntro(FALSE);
	XOR	A
	LD	(g_introCntMode),A
	LD	A,(g_music_vars+77)
	LD	(g_OldSecTempBackup),A
	XOR	A

⌨️ 快捷键说明

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