📄 ui_lyric.s01
字号:
NAME ui_lyric(17)
RSEG AP_UIA_LRC(0)
RSEG APD_UI_LRC(0)
RSEG APD_UIA_LRC(0)
EXTERN BackupCurrentTime
EXTERN DealMusicFileEnd
EXTERN DisInFBHead
EXTERN DisplayErrMsg
PUBLIC DisplayLyricStr
EXTERN FadeOut
PUBLIC GetNowTime
PUBLIC LyricStrBuf
EXTERN PlayStatus
EXTERN PrevMusicInPlay
EXTERN PutS
PUBLIC RT_buf
EXTERN RefreshMainScreen
EXTERN ResShowPic
EXTERN SelectCurMusic
EXTERN SetPenColor
EXTERN SetTextOutMode
EXTERN SetTextPos
EXTERN ToNextMusic
EXTERN UpDisplayFlag
EXTERN VMRead
EXTERN ap_get_message
EXTERN ap_handle_hotkey
EXTERN ap_message_init
EXTERN g_2HZ_CNT
EXTERN g_TagInfoBuf
EXTERN g_comval
EXTERN g_lyricflag
EXTERN g_music_vars
EXTERN g_result
EXTERN lyricGetNext
EXTERN lyricGetPrev
EXTERN lyricQueryOutof
EXTERN lyricSeekFor
EXTERN musicpSendCommand
EXTERN need_draw
EXTERN ui_auto_update
PUBLIC ui_lyric
EXTERN ?CLZ80B_4_04_L00
EXTERN ?S_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
RSEG AP_UIA_LRC
GetNowTime:
; 1. /*
; 2. *******************************************************************************
; 3. * ACTOS AP
; 4. * voice player stop program.
; 5. *
; 6. * (c) Copyright, Actions Co,Ld.
; 7. * All Right Reserved
; 8. *
; 9. * $Id: ui_lyric.c,v 1.2 2006/06/26 01:14:24 tangwh Exp $
; 10. *******************************************************************************
; 11. */
; 12.
; 13. #pragma codeseg(AP_UIA_LRC)
; 14. #include "ap_music.h"
; 15.
; 16. #define ExproTimeDef 5//浏览的延时值
; 17.
; 18. #pragma memory=dataseg(APD_UI_LRC)
; 19. char LyricStrBuf[88]; //
; 20. #pragma memory=default
; 21.
; 22.
; 23. #pragma memory=dataseg(APD_UIA_LRC)
; 24.
; 25. //char LyricStrBuf[87];
; 26.
; 27. BYTE RT_buf[4]; //当前时间
; 28. //wma_play_status_t status_buf;//不能开在这,因为查状态调用时要换BANK
; 29.
; 30. #pragma memory=default
; 31.
; 32. #pragma memory=constseg(APC_UIA_LRC)
; 33. #pragma memory=default
; 34.
; 35. void DisInFBHead(char DisMod);
; 36.
; 37.
; 38. void GetNowTime( void )
; 39. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65530
; 40. Full_time_t curtime_buf;
; 41.
; 42. BYTE temp;
; 43.
; 44. if (!musicpSendCommand(MC_GETTIME, (int)& curtime_buf))
LD HL,0
ADD HL,SP
LD C,L
LD B,H
LD E,128
CALL LWRD ?0103
INC L
DEC L
JR NZ,?0003
?0002:
; 45. {
; 46. *(long *)RT_buf = 0;
LD C,L
LD B,L
LD (RT_buf),BC
LD (RT_buf+2),BC
; 47. return;
; 48. }
JR ?0004
?0003:
; 49. //以下三句是把时间分,秒,毫秒合成LONG形与表中数据进行比较(只比较大小)
; 50. * (WORD* )RT_buf = curtime_buf.TimeMs;
LD L,(IX-6)
LD H,(IX-5)
LD (RT_buf),HL
; 51. //由于原来的MS不是按WORD方式送出的,所以这里要倒一下
; 52. temp = RT_buf[0];
LD A,(RT_buf)
LD E,A
; 53. RT_buf[0] = RT_buf[1];
LD A,(RT_buf+1)
LD (RT_buf),A
; 54. RT_buf[1] = temp;
LD A,E
LD (RT_buf+1),A
; 55.
; 56. //时间格式|MIN|SEC|MS_L|MS_H| //取出实时时间表
; 57. RT_buf[2] = curtime_buf.TimeSecond;
LD A,(IX-4)
LD (RT_buf+2),A
; 58. RT_buf[3] = curtime_buf.TimeMinute;
LD A,(IX-3)
LD (RT_buf+3),A
; 59. return;
; 60. }
?0004:
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0105:
LD C,B
?0104:
LD E,7
?0103:
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
JP LWRD ?BANK_CALL_DIRECT_L08
DisplayLyricStr:
; 61.
; 62.
; 63. void DisplayLyricStr( char * str ) //显示驱自动换行
; 64. {
CALL LWRD ?ENT_PARM_DIRECT_L09
; 65. ResShowPic(MLRCBCK,0,0);
LD C,0
PUSH BC
CALL LWRD ?0106
POP AF
; 66. SetTextOutMode(0x0f);
LD E,15
CALL LWRD SetTextOutMode
; 67. SetTextPos(42, 14);
LD C,14
LD E,42
CALL LWRD SetTextPos
; 68. SetPenColor(Color_WHITE_def);
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
; 69. PutS(g_TagInfoBuf, -1);
LD C,255
LD DE,g_TagInfoBuf
CALL LWRD PutS
; 70. SetTextPos(POSITION_LRCMID, POSITIONY_LRCMID);
LD C,99
LD E,40
CALL LWRD SetTextPos
; 71. SetPenColor(Color_BULE1_def);
LD BC,0
LD DE,30014
CALL LWRD SetPenColor
; 72. PutS(str, -1);
LD C,255
LD E,(IX+2)
LD D,(IX+3)
CALL LWRD PutS
; 73.
; 74. SetPenColor(0x00008410);
LD BC,0
LD DE,33808
CALL LWRD SetPenColor
; 75. if(lyricGetPrev(LyricStrBuf, sizeof(LyricStrBuf)))//前一句
CALL LWRD ?0108
JR Z,?0006
?0005:
; 76. {
; 77. SetTextPos(POSITION_LRCTOP, POSITIONY_LRCTOP);
LD C,136
CALL LWRD ?0107
; 78. PutS(LyricStrBuf, -1);
; 79. lyricGetNext(LyricStrBuf, sizeof(LyricStrBuf));
LD A,BYTE3 lyricGetNext
LD HL,LWRD lyricGetNext
CALL LWRD ?BANK_CALL_DIRECT_L08
?0006:
; 80. }
; 81. if(lyricGetNext(LyricStrBuf, sizeof(LyricStrBuf)))//后一句
LD C,88
LD DE,LyricStrBuf
LD A,BYTE3 lyricGetNext
LD HL,LWRD lyricGetNext
CALL LWRD ?0109
JR Z,?0008
?0007:
; 82. {
; 83. SetTextPos(POSITION_LRCBOT, POSITIONY_LRCBOT);
LD C,60
CALL LWRD ?0107
; 84. PutS(LyricStrBuf, -1);
; 85. lyricGetPrev(LyricStrBuf, sizeof(LyricStrBuf));
LD A,BYTE3 lyricGetPrev
LD HL,LWRD lyricGetPrev
CALL LWRD ?BANK_CALL_DIRECT_L08
?0008:
; 86. }
; 87. SetTextOutMode(NOCLARITY);
LD E,0
CALL LWRD SetTextOutMode
; 88. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0106:
LD DE,129
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
?0107:
LD E,40
CALL LWRD SetTextPos
LD C,255
LD DE,LyricStrBuf
CALL LWRD PutS
LD C,88
LD DE,LyricStrBuf
RET
?0108:
LD C,88
LD DE,LyricStrBuf
LD A,BYTE3 lyricGetPrev
LD HL,LWRD lyricGetPrev
?0109:
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
RET
ui_lyric:
; 89.
; 90.
; 91. int ui_lyric( void )
; 92. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65524
; 93. int key;
; 94.
; 95. bool KeyUpFlag = FALSE;
; 96. //lyric_t *LRCTimeTabPT;
; 97. bool ExproFlag = FALSE; //true: 在浏览模式
; 98.
; 99. wma_play_status_t status_buf;
; 100.
; 101. //先刷屏
; 102. //ResShowPic(MENUTWO,0,0);
; 103. //关闭背光时间
; 104. VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
LD HL,32
PUSH HL
LD BC,512
LD DE,g_comval
CALL LWRD VMRead
POP HL
; 105. g_comval.LightTime = 0;
XOR A
LD (g_comval+9),A
; 106. ap_message_init(& g_comval);
LD DE,g_comval
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
CALL LWRD ?BANK_CALL_DIRECT_L08
; 107.
; 108. need_draw = TRUE;
LD A,1
LD (need_draw),A
LD (IX-1),0
LD (IX-2),0
?0010:
; 109.
; 110. while (1)
?0014:
; 111. {
; 112. do
; 113. {
; 114. if (need_draw)
LD A,(need_draw)
OR A
JR Z,?0016
?0015:
; 115. {
; 116. GetNowTime();
LD A,BYTE3 GetNowTime
LD HL,LWRD GetNowTime
CALL LWRD ?BANK_CALL_DIRECT_L08
; 117. //ResShowPic(FMHEAD,0,107);
; 118. ResShowPic(MLRCBCK,0,0);
LD C,0
PUSH BC
CALL LWRD ?0106
POP AF
; 119. lyricSeekFor(LyricStrBuf, sizeof(LyricStrBuf), * (long * )RT_buf);
LD HL,(RT_buf+2)
PUSH HL
LD HL,(RT_buf)
PUSH HL
CALL LWRD ?0111
POP AF
POP AF
; 120. DisplayLyricStr(LyricStrBuf);
CALL LWRD ?0110
; 121. need_draw = FALSE;
XOR A
LD (need_draw),A
?0016:
?0019:
; 122. }
; 123.
; 124. //key = ap_get_message();
; 125.
; 126.
; 127. do
; 128. {
; 129. key = ap_get_message(); //读键值
CALL LWRD ap_get_message
LD C,A
LD B,0
; 130. //这里是处理快退大文件时可能丢掉KEYUP键的问题
; 131. }while(((PlayStatus == FFPlaySta) || (PlayStatus == FBPlaySta))
; 132. &&(key!=0)
; 133. &&(key!=(AP_KEY_PREV | AP_KEY_UP))
; 134. &&(key!=(AP_KEY_NEXT | AP_KEY_UP)));
LD A,(PlayStatus)
CP 3
JR Z,?0020
CP 4
JR NZ,?0017
?0020:
?0021:
LD A,C
OR A
JR Z,?0017
LD A,37
XOR C
JR Z,?0017
LD A,38
XOR C
JR NZ,?0016
?0017:
; 135.
; 136. switch (key)
LD E,C
LD D,B
CALL LWRD ?S_V_SWITCH_L06
DEFW 12
DEFW 29
DEFW 33
DEFW 35
DEFW 36
DEFW 37
DEFW 38
DEFW 48
DEFW 49
DEFW 55
DEFW 80
DEFW 133
DEFW 134
DEFW ?0061
DEFW ?0037
DEFW ?0038
DEFW ?0055
DEFW ?0058
DEFW ?0024
DEFW ?0034
DEFW ?0039
DEFW ?0047
DEFW ?0028
DEFW ?0031
DEFW ?0027
DEFW ?0024
?0025:
; 137. {
; 138. case AP_MSG_STANDBY: //standby 不响应
; 139. break;
?0026:
; 140.
; 141. case AP_KEY_AB | AP_KEY_UP: //rec 不响应
; 142. break;
?0027:
; 143.
; 144. case AP_KEY_PLAY | AP_KEY_UP:
; 145. #ifdef OPT_Sup_FadeOut_fun
; 146. FadeOut(FALSE);
LD E,B
LD A,BYTE3 FadeOut
LD HL,LWRD FadeOut
CALL LWRD ?BANK_CALL_DIRECT_L08
; 147. #endif
; 148. //RealDisplay();
; 149. BackupCurrentTime();
LD A,BYTE3 BackupCurrentTime
LD HL,LWRD BackupCurrentTime
CALL LWRD ?BANK_CALL_DIRECT_L08
; 150. musicpSendCommand(MC_STOP, NULL);
LD C,B
LD E,6
CALL LWRD ?0103
; 151. musicpSendCommand(MC_BACKUP, (int)& g_music_vars.BreakPTSave);
LD BC,g_music_vars+48
LD E,68
CALL LWRD ?0102
; 152. musicpSendCommand(MC_CLOSE, NULL);
CALL LWRD ?BANK_CALL_DIRECT_L08
; 153. SetFullInterface();
XOR A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 154. RefreshMainScreen();
LD A,BYTE3 RefreshMainScreen
LD HL,LWRD RefreshMainScreen
CALL LWRD ?BANK_CALL_DIRECT_L08
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -