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 + -
显示快捷键?