📄 ui_lyric.s01
字号:
; 155.
; 156. case AP_KEY_VOLADD | AP_KEY_UP: //下一屏歌词
?0028:
; 157. if (lyricGetNext(LyricStrBuf, sizeof(LyricStrBuf)))
LD C,88
LD DE,LyricStrBuf
LD A,BYTE3 lyricGetNext
LD HL,LWRD lyricGetNext
CALL LWRD ?0108
JR Z,?0033
?0029:
; 158. {
; 159. DisplayLyricStr(LyricStrBuf); //显示歌词内容
JR ?0101
?0030:
; 160. }
; 161. ExproFlag = TRUE;
; 162. g_2HZ_CNT = 0;
; 163. break;
?0031:
; 164.
; 165. case AP_KEY_VOLSUB | AP_KEY_UP: //上一屏歌词
; 166. if (lyricGetPrev(LyricStrBuf, sizeof(LyricStrBuf)))
CALL LWRD ?0107
JR Z,?0033
?0032:
; 167. {
; 168. DisplayLyricStr(LyricStrBuf); //显示歌词内容
?0101:
CALL LWRD ?0109
?0033:
; 169. }
; 170. ExproFlag = TRUE;
; 171. g_2HZ_CNT = 0;
LD HL,0
LD (g_2HZ_CNT),HL
LD (IX-2),1
; 172. break;
JP LWRD ?0024
?0034:
; 173.
; 174. case AP_KEY_MODE | AP_KEY_UP:
; 175. if (!KeyUpFlag)
XOR A
OR (IX-1)
JR NZ,?0036
?0035:
; 176. {
; 177. KeyUpFlag = TRUE;
LD (IX-1),1
; 178. break;
JP LWRD ?0024
?0036:
; 179. }
; 180. return NULL;
JP LWRD ?0093
; 181.
; 182. case AP_KEY_NEXT | AP_KEY_LONG: //快进
?0037:
; 183. PlayStatus = FFPlaySta;
LD A,3
LD (PlayStatus),A
; 184. musicpSendCommand(MC_STEP, 4);
LD C,4
JR ?0092
; 185. break;
?0038:
; 186.
; 187. case AP_KEY_PREV | AP_KEY_LONG: //快退
; 188. PlayStatus = FBPlaySta;
LD A,4
LD (PlayStatus),A
; 189. musicpSendCommand(MC_STEP, -4);
LD BC,65532
?0092:
CALL LWRD ?0104
; 190. break;
JP LWRD ?0024
?0039:
; 191.
; 192. case AP_KEY_NEXT | AP_KEY_UP: //快进
; 193. if (PlayStatus == PlaySta)
LD A,(PlayStatus)
DEC A
DEC A
JR NZ,?0041
?0040:
; 194. {
; 195. FadeOut(FALSE);
LD E,B
LD A,BYTE3 FadeOut
LD HL,LWRD FadeOut
CALL LWRD ?BANK_CALL_DIRECT_L08
; 196. g_result = ToNextMusic(Play_key); //选下一首
LD E,2
LD A,BYTE3 ToNextMusic
LD HL,LWRD ToNextMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 197. //main_ResShowPic(FMHEAD,0,107);
; 198. if ( g_result != 0 )
LD A,L
OR H
JR NZ,?0098
?0042:
; 199. {
; 200. return g_result;
; 201. }
?0043:
; 202. if ( !g_lyricflag )return NULL;
LD A,(g_lyricflag)
OR A
JR NZ,?0046
?0044:
JP LWRD ?0093
; 203. }
?0045:
; 204. else
?0041:
; 205. {
; 206. musicpSendCommand(MC_STEP, 0);
CALL LWRD ?0105
; 207. PlayStatus = PlaySta;
LD A,2
LD (PlayStatus),A
?0046:
; 208. }
; 209. break;
JR ?0024
?0047:
; 210.
; 211. case AP_KEY_PREV | AP_KEY_UP:
; 212. if (PlayStatus == PlaySta)
LD A,(PlayStatus)
DEC A
DEC A
JR NZ,?0049
?0048:
; 213. {
; 214. g_result = PrevMusicInPlay();
LD A,BYTE3 PrevMusicInPlay
LD HL,LWRD PrevMusicInPlay
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 215. //main_ResShowPic(FMHEAD,0,107);
; 216. if (g_result != 0) return g_result;
LD A,L
OR H
JR Z,?0051
?0050:
?0098:
JP LWRD ?0090
?0051:
; 217.
; 218. if (!g_lyricflag)return NULL;
LD A,(g_lyricflag)
OR A
JR NZ,?0024
?0052:
JP LWRD ?0093
; 219. //RefreshMainScreen();
; 220. }
?0053:
; 221. else
?0049:
; 222. {
; 223. musicpSendCommand(MC_STEP, 0);
CALL LWRD ?0105
; 224. PlayStatus = PlaySta;
LD A,2
LD (PlayStatus),A
?0054:
; 225. }
; 226. break;
JR ?0024
?0055:
; 227.
; 228. case AP_KEY_MODE | AP_KEY_HOLD: //MODE键没抬起时不响应
; 229. if (!KeyUpFlag)continue;
XOR A
OR (IX-1)
JR NZ,?0024
?0056:
JP LWRD ?0083
?0057:
; 230. break;
?0058:
; 231.
; 232.
; 233. case AP_MSG_SD_OUT:
; 234. if (g_music_vars.location.disk == 'H')
LD A,(g_music_vars+7)
CP 72
JR NZ,?0024
?0059:
; 235. {
; 236. musicpSendCommand(MC_STOP, NULL);
LD C,B
LD E,6
CALL LWRD ?0102
; 237. musicpSendCommand(MC_CLOSE, NULL);
CALL LWRD ?BANK_CALL_DIRECT_L08
; 238. g_music_vars.location.disk = 'C';
LD A,67
LD (g_music_vars+7),A
; 239. DisplayErrMsg(CARDPULL);//显示卡拔出
LD DE,394
LD A,BYTE3 DisplayErrMsg
LD HL,LWRD DisplayErrMsg
CALL LWRD ?BANK_CALL_DIRECT_L08
; 240. return RESULT_UI_STOP;
JR ?0099
; 241. }
?0060:
; 242. break;
?0061:
; 243.
; 244. default:
; 245. key = ap_handle_hotkey(key);
LD E,C
CALL LWRD ap_handle_hotkey
LD C,A
; 246. if (key == RESULT_REDRAW)need_draw = TRUE;
LD A,50
XOR C
JR NZ,?0063
?0062:
LD A,1
LD (need_draw),A
JR ?0024
?0063:
; 247. else if(key != 0) return key;
LD A,C
OR A
JR Z,?0024
?0065:
LD L,C
LD H,B
; 248. break;
JR ?0090
?0066:
?0064:
?0024:
; 249. } //switch(key)
; 250. musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
LD HL,2
ADD HL,SP
LD C,L
LD B,H
LD E,131
CALL LWRD ?0103
; 251.
; 252. if (status_buf.status == PLAYING_REACH_END)
LD A,(IX-10)
CP 6
JR NZ,?0072
?0067:
; 253. {
; 254. g_result = DealMusicFileEnd(1);
LD E,1
CALL LWRD ?0111
; 255.
; 256. if (g_result == RESULT_UI_STOP) return RESULT_UI_STOP;
JR NZ,?0070
?0069:
?0099:
JR ?0100
?0070:
; 257. if (!g_lyricflag)return NULL;
LD A,(g_lyricflag)
OR A
JR Z,?0093
?0071:
; 258. }
?0072:
?0068:
; 259.
; 260. if (status_buf.status == PLAYING_REACH_HEAD)
LD A,(IX-10)
CP 14
JR NZ,?0081
?0073:
; 261. {
; 262. if (PlayStatus == PlaySta)
LD A,(PlayStatus)
DEC A
DEC A
LD E,1
JR NZ,?0076
?0075:
; 263. {
; 264. DisInFBHead( 1 );//到头显示
LD A,BYTE3 DisInFBHead
LD HL,LWRD DisInFBHead
CALL LWRD ?BANK_CALL_DIRECT_L08
; 265. SelectCurMusic();
LD A,BYTE3 SelectCurMusic
LD HL,LWRD SelectCurMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
; 266. }
; 267. else
JR ?0081
?0076:
; 268. {
; 269. g_result = DealMusicFileEnd(1);
CALL LWRD ?0111
; 270. if (g_result == RESULT_UI_STOP) return RESULT_UI_STOP;
JR NZ,?0079
?0078:
?0100:
LD HL,102
JR ?0090
?0079:
; 271. if (!g_lyricflag)return NULL;
LD A,(g_lyricflag)
OR A
JR NZ,?0081
?0080:
?0093:
LD HL,0
; 272. }
?0090:
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0081:
?0077:
?0074:
; 273. }
; 274.
; 275.
; 276. if (g_2HZ_CNT>ExproTimeDef)
LD BC,(g_2HZ_CNT)
LD HL,5
AND A
SBC HL,BC
JR NC,?0083
?0082:
; 277. {
; 278. ExproFlag = FALSE;
LD (IX-2),0
?0083:
?0013:
; 279. }
; 280.
; 281. } while ( (ExproFlag && (g_2HZ_CNT<=ExproTimeDef))
; 282. || (PlayStatus == FFPlaySta)
; 283. || (PlayStatus == FBPlaySta) );
XOR A
OR (IX-2)
JR Z,?0085
LD BC,(g_2HZ_CNT)
LD HL,5
SBC HL,BC
JP NC,?0010
?0085:
?0084:
LD A,(PlayStatus)
CP 3
JP Z,?0010
CP 4
JP Z,?0010
?0012:
; 284.
; 285.
; 286. GetNowTime();
LD A,BYTE3 GetNowTime
LD HL,LWRD GetNowTime
CALL LWRD ?BANK_CALL_DIRECT_L08
; 287. if (lyricQueryOutof(* (long * )RT_buf))
LD BC,(RT_buf+2)
LD DE,(RT_buf)
LD A,BYTE3 lyricQueryOutof
LD HL,LWRD lyricQueryOutof
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR Z,?0089
?0088:
; 288. {
; 289. lyricSeekFor(LyricStrBuf, sizeof(LyricStrBuf), * (long * )RT_buf);
LD HL,(RT_buf+2)
PUSH HL
LD HL,(RT_buf)
PUSH HL
CALL LWRD ?0110
POP AF
POP AF
; 290. DisplayLyricStr(LyricStrBuf);
CALL LWRD ?0109
?0089:
; 291. }
; 292.
; 293. }
; 294. //while(1)
; 295. } //ui_lyric
JP LWRD ?0010
?0102:
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
LD BC,0
LD E,2
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
RET
?0109:
LD DE,LyricStrBuf
LD A,BYTE3 DisplayLyricStr
LD HL,LWRD DisplayLyricStr
JP LWRD ?BANK_CALL_DIRECT_L08
?0110:
LD C,88
LD DE,LyricStrBuf
LD A,BYTE3 lyricSeekFor
LD HL,LWRD lyricSeekFor
JP LWRD ?BANK_CALL_DIRECT_L08
?0111:
LD A,BYTE3 DealMusicFileEnd
LD HL,LWRD DealMusicFileEnd
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
LD A,102
XOR L
OR H
RET
RSEG APD_UI_LRC
LyricStrBuf:
DEFS 88
RSEG APD_UIA_LRC
RT_buf:
DEFS 4
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -