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