ui_play.s01
来自「MP3 整个 SDK」· S01 代码 · 共 1,532 行 · 第 1/3 页
S01
1,532 行
?0053:
; 223. {
; 224. return 0;
?0153:
LD HL,0
; 225. }
?0055:
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0054:
; 226.
; 227. }/* while(1) */
; 228.
; 229. }
JP LWRD ?0003
?0169:
LD E,0
LD A,BYTE3 DealMusicFileEnd
LD HL,LWRD DealMusicFileEnd
JP LWRD ?BANK_CALL_DIRECT_L08
?0170:
LD C,L
LD B,H
LD E,131
?0171:
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
JP LWRD ?BANK_CALL_DIRECT_L08
RealDisplay:
; 230. /*
; 231. ********************************************************************************
; 232. * void RealDisplay( void )
; 233. *
; 234. * Description : 显示时间,滚屏,AB闪
; 235. *
; 236. * Arguments : void
; 237. *
; 238. * Returns : int
; 239. *
; 240. * Notes :
; 241. *
; 242. ********************************************************************************
; 243. */
; 244. int RealDisplay( void )
; 245. {
PUSH BC
PUSH DE
; 246. // DisplayMIPSForTest();
; 247.
; 248. BackupCurrentTime();
LD A,BYTE3 BackupCurrentTime
LD HL,LWRD BackupCurrentTime
CALL LWRD ?BANK_CALL_DIRECT_L08
; 249.
; 250. if (g_music_vars.BreakPTDisTime.second != g_OldSecTempBackup)
LD A,(g_music_vars+77)
PUSH AF
LD A,(g_OldSecTempBackup)
LD B,A
POP AF
CP B
JR Z,?0057
?0056:
; 251. {
; 252. g_OldSecTempBackup = g_music_vars.BreakPTDisTime.second;
LD A,(g_music_vars+77)
LD (g_OldSecTempBackup),A
; 253.
; 254. if (g_music_vars.repeat_mode == Intro)
LD A,(g_music_vars+1)
CP 6
JR NZ,?0061
?0058:
; 255. {
; 256. g_introCNT++;
LD HL,g_introCNT
INC (HL)
; 257. if ( (g_introCntMode
; 258. && (g_music_vars.BreakPTDisTime.second > IntCntValDef) )
; 259. || (g_introCNT > IntCntValDef) )
LD A,(g_introCntMode)
OR A
JR Z,?0063
LD A,(g_music_vars+77)
LD B,A
LD A,10
CP B
JR C,?0064
?0063:
?0062:
LD A,(g_introCNT)
LD B,A
LD A,10
CP B
JR NC,?0061
?0064:
?0065:
?0060:
; 260.
; 261. { //从头开始的情况
; 262.
; 263. return DealMusicFileEnd(0);
CALL LWRD ?0169
; 264. }
JP LWRD ?0081
?0061:
?0059:
; 265. }
; 266. if(RePlayStatus == NormalPlay) Show_Bitrate();
LD A,(RePlayStatus)
OR A
JR NZ,?0067
?0066:
LD A,BYTE3 Show_Bitrate
LD HL,LWRD Show_Bitrate
CALL LWRD ?BANK_CALL_DIRECT_L08
?0067:
; 267.
; 268. ShowNowTime(TRUE);
LD E,1
LD A,BYTE3 ShowNowTime
LD HL,LWRD ShowNowTime
CALL LWRD ?BANK_CALL_DIRECT_L08
?0057:
; 269. }
; 270.
; 271. {
; 272. //FadeInOutFun();//淡入淡出
; 273. }
; 274. //滚屏时的处理
; 275.
; 276. if (g_ScrollFlag)
LD A,(g_ScrollFlag)
OR A
JR Z,?0069
?0068:
; 277. {
; 278. g_ScrollFlag = FALSE;
XOR A
LD (g_ScrollFlag),A
; 279. // SetAsciiFont(FONT_TYPE_LARGE);
; 280. SetPenColor(Color_WHITE_def);
LD C,A
LD B,A
LD DE,65535
CALL LWRD SetPenColor
; 281. //SetBackgdColor(Color_BULE1_def);
; 282. SetBackgdColor(0x92e);
LD BC,0
LD DE,2350
CALL LWRD SetBackgdColor
; 283. //if(memcmp(g_music_vars.location.filename+8,"APE",3))
; 284. Scroll(g_TagInfoBuf, FALSE,g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD C,0
LD DE,g_TagInfoBuf
LD A,BYTE3 Scroll
LD HL,LWRD Scroll
CALL LWRD ?BANK_CALL_DIRECT_L08
POP HL
; 285. {
; 286. ui_show_batt(GetBattery(), g_comval.BatteryType,0);
LD C,0
PUSH BC
LD BC,(g_comval+15)
CALL LWRD GetBattery
LD E,A
LD D,0
LD A,BYTE3 ui_show_batt
LD HL,LWRD ui_show_batt
CALL LWRD ?BANK_CALL_DIRECT_L08
POP HL
?0069:
; 287.
; 288. }
; 289.
; 290. }
; 291.
; 292. //复读A闪,B闪时的处理
; 293. if (RePlayStatus == WaitSetAPointForAB)
LD A,(RePlayStatus)
DEC A
JR NZ,?0071
?0070:
; 294. {
; 295. if (g_2HZFlag)
LD A,(g_2HZFlag)
OR A
JR NZ,?0160
?0072:
; 296. {
; 297. main_ResShowPic(MRPLAB,0,0);
; 298. }
; 299. else
?0073:
; 300. {
; 301. main_ResShowPic(MRPLNOA,0,0);
LD C,A
PUSH BC
LD DE,154
JR ?0158
?0074:
?0071:
; 302. }
; 303. }
; 304. else if (RePlayStatus == WaitSetBPointForAB)
LD A,(RePlayStatus)
DEC A
DEC A
JR NZ,?0080
?0076:
; 305. {
; 306. if (g_2HZFlag)
LD A,(g_2HZFlag)
OR A
JR Z,?0079
?0078:
; 307. {
; 308. main_ResShowPic(MRPLAB,0,0);
?0160:
LD C,0
PUSH BC
LD DE,149
JR ?0158
; 309. }
; 310. else
?0079:
; 311. {
; 312. main_ResShowPic(MRPLNOB,0,0);
LD C,A
PUSH BC
LD DE,155
?0158:
CALL LWRD ?0172
POP AF
?0080:
?0077:
?0075:
; 313. }
; 314. }
; 315.
; 316.
; 317. return NULL;
LD HL,0
; 318. }
?0081:
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0173:
LD D,0
LD HL,33
ADD HL,DE
EX DE,HL
?0172:
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
musicpSendCommand:
; 319. /*
; 320. ********************************************************************************
; 321. * bool musicpSendCommand( BYTE cmd, int param )
; 322. *
; 323. * Description : 根据不同的文件类型来选择发的命令(对MODULE)
; 324. *
; 325. * Arguments : cmd 命令 param 参数
; 326. *
; 327. * Returns : success/fail
; 328. *
; 329. * Notes :
; 330. *
; 331. ********************************************************************************
; 332. */
; 333. bool musicpSendCommand(BYTE cmd, int param)
; 334. {
PUSH IX
PUSH DE
; 335. //清 WATCH_DOG
; 336. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 337.
; 338. switch ( cmd )
LD A,E
CP 13
JR Z,?0083
CP 128
JR C,?0084
CP 132
JR Z,?0084
CP 134
JR NC,?0084
?0083:
; 339. {//这几个命令由于经常调用,所以不要切BANK
; 340. case MC_GETTIME:
; 341. case MC_GETSAPLE:
; 342. case MC_GETSTATUS:
; 343. case MC_GETAUDIOFMT:
; 344. case MC_FADEINOUT:
; 345. case MC_GETPOWERVALUE:
; 346. switch ( g_currentMusicType )
LD DE,(g_currentMusicType)
CALL LWRD ?C_S_SWITCH_L06
DEFB 1
DEFW 6
DEFW ?0089
DEFW ?0085
DEFW ?0086
DEFW ?0086
DEFW ?0086
DEFW ?0087
DEFW ?0088
?0085:
; 347. {
; 348. case Music_MP3: //mp3
; 349. //BankSwitch((unsigned long)mp3pSendCommand >> 16);
; 350. return mp3pSendCommand(cmd, param);
LD E,A
LD A,BYTE3 mp3pSendCommand
LD HL,LWRD mp3pSendCommand
JR ?0168
; 351.
; 352. case Music_WMA: //wma
?0086:
; 353. case Music_ASF: //asf
; 354. case Music_WMV: //wmv
; 355. //BankSwitch((unsigned long)wmapSendCommand >> 16);
; 356. {
; 357. // bool result;
; 358. return wmapSendCommand(cmd, param);
LD E,A
LD A,BYTE3 wmapSendCommand
LD HL,LWRD wmapSendCommand
JR ?0168
; 359. //return result;
; 360. }
?0087:
; 361. case Music_OGG:
; 362. return oggpSendCommand(cmd, param);
LD E,A
LD A,BYTE3 oggpSendCommand
LD HL,LWRD oggpSendCommand
JR ?0168
; 363. case Music_APE:
?0088:
; 364. return apepSendCommand(cmd, param);
LD E,A
LD A,BYTE3 apepSendCommand
LD HL,LWRD apepSendCommand
JR ?0168
; 365.
; 366. default:
?0089:
; 367. return FALSE;
LD L,0
; 368. }
JR ?0091
?0084:
?0090:
; 369. // return FALSE;
; 370.
; 371. default:
; 372. //下面函数放在别的 BANK 里,
; 373. return musicpSendCommand_bank( cmd, param );
LD A,BYTE3 musicpSendCommand_bank
LD HL,LWRD musicpSendCommand_bank
?0168:
CALL LWRD ?BANK_CALL_DIRECT_L08
; 374. }
?0082:
; 375. return FALSE;
; 376.
; 377.
; 378. }
?0091:
POP AF
POP IX
JP LWRD ?BANK_FAST_LEAVE_L08
BackupCurrentTime:
; 379. /*
; 380. ********************************************************************************
; 381. * void Show_Bitrate( void )
; 382. *
; 383. * Description : 显示比特率
; 384. *
; 385. * Arguments : void
; 386. *
; 387. * Returns : void
; 388. *
; 389. * Notes :
; 390. *
; 391. ********************************************************************************
; 392. */
; 393.
; 394. void BackupCurrentTime(void)
; 395. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65530
; 396. Full_time_t time_buf;
; 397. if ( musicpSendCommand(MC_GETTIME, (int)& time_buf) )
LD HL,0
ADD HL,SP
LD C,L
LD B,H
LD E,128
CALL LWRD ?0171
INC L
DEC L
JR Z,?0093
?0092:
; 398. {
; 399. g_music_vars.BreakPTDisTime.hour = time_buf.TimeHour;
LD A,(IX-2)
LD (g_music_vars+75),A
; 400. g_music_vars.BreakPTDisTime.minute = time_buf.TimeMinute;
LD A,(IX-3)
LD (g_music_vars+76),A
; 401. g_music_vars.BreakPTDisTime.second = time_buf.TimeSecond;
LD A,(IX-4)
LD (g_music_vars+77),A
?0093:
; 402. }
; 403. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
ShowNowTime:
; 404.
; 405.
; 406. void ShowNowTime(bool para) //zxs change for guage display
; 407. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW -16
PUSH IY
; 408. long int totaltime,nowtime;
; 409. int num;
; 410. int i;
; 411. music_play_status_t status_buf;
; 412. if (ifSelBuffToltalTimeFlag || (!CaltimeFlag))
LD A,(ifSelBuffToltalTimeFlag)
OR A
JR NZ,?0096
LD A,(CaltimeFlag)
OR A
JR NZ,?0095
?0096:
?0097:
?0094:
; 413. {
; 414. //用 buffer 里的总时间数据
; 415. status_buf.total_time.hour = TimeRateData_sav.TotalTime_sav[0];
LD A,(TimeRateData_sav+3)
LD (IX-13),A
; 416. status_buf.total_time.minute = TimeRateData_sav.TotalTime_sav[1];
LD A,(TimeRateData_sav+4)
LD (IX-12),A
; 417. status_buf.total_time.second = TimeRateData_sav.TotalTime_sav[2];
LD A,(TimeRateData_sav+5)
LD (IX-11),A
; 418. }
; 419. else
JR ?0098
?0095:
; 420. {
; 421.
; 422. musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
LD HL,2
ADD HL,SP
CALL LWRD ?0170
; 423. //暂存现在的总时间数据到 buffer
; 424. TimeRateData_sav.TotalTime_sav[0] = status_buf.total_time.hour;
LD A,(IX-13)
LD (TimeRateData_sav+3),A
; 425. TimeRateData_sav.TotalTime_sav[1] = status_buf.total_time.minute;
LD A,(IX-12)
LD (TimeRateData_sav+4),A
; 426. TimeRateData_sav.TotalTime_sav[2] = status_buf.total_time.second;
LD A,(IX-11)
LD (TimeRateData_sav+5),A
; 427. ifSelBuffToltalTimeFlag=1;
LD A,1
LD (ifSelBuffToltalTimeFlag),A
?0098:
; 428. }
; 429. totaltime=status_buf.total_time.hour*3600+ status_buf.total_time.minute*60+status_buf.total_time.second;
LD C,(IX-12)
LD B,0
LD DE,60
CALL LWRD ?S_MUL_L02
PUSH DE
LD C,(IX-13)
LD DE,3600
CALL LWRD ?S_MUL_L02
EX DE,HL
POP DE
ADD HL,DE
LD C,(IX-11)
ADD HL,BC
LD A,H
RLCA
SBC A,A
LD C,A
LD B,C
LD (IX-4),L
LD (IX-3),H
LD (IX-2),C
LD (IX-1),B
; 430. nowtime=g_music_vars.BreakPTDisTime.hour*3600+g_music_vars.BreakPTDisTime.minute*60 +g_music_vars.BreakPTDisTime.second;
LD BC,(g_music_vars+76)
LD B,0
LD DE,60
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?