📄 ui_play_menu.s01
字号:
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 + -