ui_play.s01
来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 1,535 行 · 第 1/3 页
S01
1,535 行
; 417. if(g_rSetPlayStatus)
LD A,(g_rSetPlayStatus)
OR A
JR Z,?0113
?0112:
; 418. {
; 419. para = FALSE;
; 420. g_rSetPlayStatus = FALSE;
XOR A
LD (g_rSetPlayStatus),A
LD (IX+2),A
?0113:
; 421. }
; 422.
; 423. if (ifSelBuffToltalTimeFlag || (!CaltimeFlag))
LD A,(ifSelBuffToltalTimeFlag)
OR A
JR NZ,?0116
LD A,(CaltimeFlag)
OR A
JR NZ,?0115
?0116:
?0117:
?0114:
; 424. {
; 425. //用 buffer 里的总时间数据
; 426. status_buf.total_time.hour = TimeRateData_sav.TotalTime_sav[0];
LD A,(TimeRateData_sav+3)
LD (IX-13),A
; 427. status_buf.total_time.minute = TimeRateData_sav.TotalTime_sav[1];
LD A,(TimeRateData_sav+4)
LD (IX-12),A
; 428. status_buf.total_time.second = TimeRateData_sav.TotalTime_sav[2];
LD A,(TimeRateData_sav+5)
LD (IX-11),A
; 429. }
; 430. else
JR ?0118
?0115:
; 431. {
; 432. musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
LD HL,2
ADD HL,SP
CALL LWRD ?0186
; 433. //暂存现在的总时间数据到 buffer
; 434. TimeRateData_sav.TotalTime_sav[0] = status_buf.total_time.hour;
LD A,(IX-13)
LD (TimeRateData_sav+3),A
; 435. TimeRateData_sav.TotalTime_sav[1] = status_buf.total_time.minute;
LD A,(IX-12)
LD (TimeRateData_sav+4),A
; 436. TimeRateData_sav.TotalTime_sav[2] = status_buf.total_time.second;
LD A,(IX-11)
LD (TimeRateData_sav+5),A
; 437. ifSelBuffToltalTimeFlag=1;
LD A,1
LD (ifSelBuffToltalTimeFlag),A
?0118:
; 438. }
; 439. 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
; 440. nowtime=g_music_vars.BreakPTDisTime.hour*3600+g_music_vars.BreakPTDisTime.minute*60 +g_music_vars.BreakPTDisTime.second;
LD BC,(g_music_vars+78)
LD B,0
LD DE,60
CALL LWRD ?S_MUL_L02
PUSH DE
LD BC,(g_music_vars+77)
LD B,0
LD DE,3600
CALL LWRD ?S_MUL_L02
EX DE,HL
POP DE
ADD HL,DE
LD BC,(g_music_vars+79)
LD B,0
ADD HL,BC
LD A,H
RLCA
SBC A,A
LD C,A
LD B,C
LD (IX-8),L
LD (IX-7),H
; 441. num=(nowtime*161)/totaltime;
LD L,(IX-2)
LD H,(IX-1)
PUSH HL
LD L,(IX-4)
LD H,(IX-3)
PUSH HL
LD HL,0
PUSH HL
LD L,161
PUSH HL
LD L,(IX-8)
LD H,(IX-7)
CALL LWRD ?L_MUL_L03
CALL LWRD ?SL_DIV_L03
PUSH HL
POP IY
; 442. if(num>161) //防止串烧时出现当前时间大于总时间的bug
LD C,L
LD B,H
LD HL,161
CALL LWRD ?SS_CMP_L02
JR NC,?0120
?0119:
; 443. num=0;
LD IY,0
?0120:
; 444. itoa_2(g_music_vars.BreakPTDisTime.hour, temp_buffer);
LD BC,temp_buffer
LD DE,(g_music_vars+77)
CALL LWRD ?0191
; 445. strcat(temp_buffer,":");
; 446. itoa_2(g_music_vars.BreakPTDisTime.minute, & temp_buffer[3]);
LD DE,(g_music_vars+78)
; 447. strcat(temp_buffer,":");
CALL LWRD ?0192
; 448. itoa_2(g_music_vars.BreakPTDisTime.second, & temp_buffer[6]);
LD BC,temp_buffer+6
LD DE,(g_music_vars+79)
LD A,BYTE3 itoa_2
LD HL,LWRD itoa_2
CALL LWRD ?BANK_CALL_DIRECT_L08
; 449. ui_show_d(temp_buffer,0); //显示当前播放时间 changed by zxs
LD C,0
CALL LWRD ?0188
; 450. output8(0x4e,input8(0x4e)|0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 451. if(!para)
XOR A
OR (IX+2)
JR NZ,?0123
?0122:
; 452. {
; 453. if(g_volcounter==0)
LD A,(g_volcounter)
OR A
JR NZ,?0126
?0124:
; 454. {
; 455. main_ResShowPic(GUAGEBG1, 0, 106); //刷新进度条背景
LD C,106
PUSH BC
LD C,A
LD DE,154
CALL LWRD ?0189
POP AF
; 456. for(i=0;i<num;i++)
LD DE,0
?0127:
PUSH IY
POP BC
LD L,E
LD H,D
CALL LWRD ?SS_CMP_L02
JR NC,?0126
?0128:
; 457. main_ResShowPic(GUAGE1,8+i,109);
PUSH DE
LD C,109
PUSH BC
CALL LWRD ?0190
POP AF
POP DE
INC DE
; 458. }
JR ?0127
?0126:
?0125:
; 459.
; 460. itoa_2(status_buf.total_time.hour, temp_buffer);
LD BC,temp_buffer
LD E,(IX-13)
CALL LWRD ?0191
; 461. strcat(temp_buffer,":");
; 462. itoa_2(status_buf.total_time.minute, & temp_buffer[3]);
LD E,(IX-12)
; 463. strcat(temp_buffer,":");
CALL LWRD ?0192
; 464. itoa_2(status_buf.total_time.second, & temp_buffer[6]);
LD BC,temp_buffer+6
LD E,(IX-11)
LD A,BYTE3 itoa_2
LD HL,LWRD itoa_2
CALL LWRD ?BANK_CALL_DIRECT_L08
; 465. ui_show_d(temp_buffer,1);
LD C,1
CALL LWRD ?0188
; 466. }
; 467. else
JR ?0144
?0123:
; 468. {
; 469. if(PlayStatus == FBPlaySta)
LD A,(PlayStatus)
CP 4
JR NZ,?0132
?0131:
; 470. {
; 471. if(g_volcounter==0)
LD A,(g_volcounter)
OR A
JR NZ,?0144
?0133:
; 472. {
; 473. for(i=num;i<savenum+1;i++)
PUSH IY
POP HL
EX DE,HL
?0136:
LD BC,(savenum)
LD B,0
INC BC
LD L,E
LD H,D
CALL LWRD ?SS_CMP_L02
JR NC,?0144
?0137:
; 474. main_ResShowPic(GUAGECL1,8+i,109);
PUSH DE
LD C,109
PUSH BC
LD A,E
ADD A,8
LD C,A
LD DE,155
CALL LWRD ?0189
POP AF
POP DE
INC DE
; 475. }
JR ?0136
?0135:
?0134:
; 476. }
; 477. else
?0132:
; 478. {
; 479. if (num < savenum) num = savenum;
LD BC,(savenum)
LD B,0
PUSH IY
POP HL
CALL LWRD ?SS_CMP_L02
JR NC,?0141
?0140:
LD BC,(savenum)
LD B,0
PUSH BC
POP IY
?0141:
; 480.
; 481. if(g_volcounter==0)
LD A,(g_volcounter)
OR A
JR NZ,?0144
?0142:
; 482. {
; 483. for(i=savenum;i<num;i++)
LD BC,(savenum)
LD D,A
LD E,C
?0145:
PUSH IY
POP BC
LD L,E
LD H,D
CALL LWRD ?SS_CMP_L02
JR NC,?0144
?0146:
; 484. main_ResShowPic(GUAGE1,8+i,109);
PUSH DE
LD C,109
PUSH BC
CALL LWRD ?0190
POP AF
POP DE
INC DE
; 485. }
JR ?0145
?0144:
?0143:
?0139:
?0130:
; 486. }
; 487. }
; 488.
; 489. savenum=num;//记录上一个点
PUSH IY
POP HL
LD A,L
LD (savenum),A
; 490. }
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0188:
LD DE,temp_buffer
LD A,BYTE3 ui_show_d
LD HL,LWRD ui_show_d
JP LWRD ?BANK_CALL_DIRECT_L08
?0191:
LD A,BYTE3 itoa_2
LD HL,LWRD itoa_2
CALL LWRD ?BANK_CALL_DIRECT_L08
LD DE,?0121
LD HL,temp_buffer
CALL LWRD ?STRCAT_L11
LD BC,temp_buffer+3
RET
?0192:
LD A,BYTE3 itoa_2
LD HL,LWRD itoa_2
CALL LWRD ?BANK_CALL_DIRECT_L08
LD DE,?0121
LD HL,temp_buffer
JP LWRD ?STRCAT_L11
DealForABGap:
; 491. //----------------
; 492.
; 493.
; 494. //----------------
; 495.
; 496. //-----------------------------------
; 497.
; 498. /*
; 499. void Show_Bitrate(void)
; 500. {
; 501.
; 502. audio_format_t pFormat;
; 503. musicpSendCommand(MC_GETAUDIOFMT, (int)& pFormat);
; 504.
; 505. if ((pFormat.bit_rate[0]<'0')
; 506. || (pFormat.bit_rate[0] > '9')
; 507. || (pFormat.bit_rate[1] < '0')
; 508. || (pFormat.bit_rate[1] > '9')
; 509. || (pFormat.bit_rate[2] < '0')
; 510. || (pFormat.bit_rate[2] > '9') )
; 511. {
; 512. pFormat.bit_rate[0] = '0';
; 513. pFormat.bit_rate[1] = '0';
; 514. pFormat.bit_rate[2] = '0';
; 515. }
; 516. TimeRateData_sav.Bitrate_sav[0] = pFormat.bit_rate[0]; //保存用于跟读对比时显示
; 517. TimeRateData_sav.Bitrate_sav[1] = pFormat.bit_rate[1];
; 518. TimeRateData_sav.Bitrate_sav[2] = pFormat.bit_rate[2];
; 519.
; 520. main_ResShowPic(MBIT0+(pFormat.bit_rate[0] - 0x30),POS_BITRATE,POSY_BITRATE);
; 521. main_ResShowPic(MBIT0+(pFormat.bit_rate[1] - 0x30),POS_BITRATE+7,POSY_BITRATE);
; 522. main_ResShowPic(MBIT0+(pFormat.bit_rate[2] - 0x30),POS_BITRATE+14,POSY_BITRATE);
; 523.
; 524. }
; 525. */ //Jerry Xie Removed for test
; 526. //===================[处理AB复读状态]====================
; 527. void DealForABGap(music_play_status_t *status)
; 528. {
PUSH BC
PUSH IX
PUSH DE
POP IX
; 529. //[1]放到B点时,要清B
; 530. if ( status->signal == SIGNAL_CLEAR_B)
EX DE,HL
INC HL
LD A,(HL)
CP 3
JR NZ,?0149
?0148:
; 531. {
; 532. if (g_AVSetFlag)
LD A,(g_AVSetFlag)
OR A
JR Z,?0151
?0150:
; 533. {//如原是用自动方式定B
; 534. musicpSendCommand(MC_SETA_B, SetAPoint);
LD BC,1
LD E,65
CALL LWRD ?0187
; 535. }
; 536. else
JR ?0158
?0151:
; 537. {//如原是手动方式定B
; 538. RePlayStatus = WaitSetAPointForAB;
LD A,1
LD (RePlayStatus),A
; 539. UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
LD HL,UpDisplayFlag
INC HL
SET 3,(HL)
; 540. need_draw = TRUE;
LD (need_draw),A
?0152:
; 541. }
; 542.
; 543. return;
; 544. }
JR ?0158
?0149:
; 545.
; 546. //[2]放到B点时不清B,开始间隔
; 547. if ( status->signal == SIGNAL_REACH_B)
LD B,(IX+1)
DEC B
DEC B
JR NZ,?0156
?0153:
; 548. {
; 549. g_ReplayTimeCNT++;
LD HL,g_ReplayTimeCNT
INC (HL)
; 550. g_2HZ_CNT = 0;
LD L,B
LD H,B
LD (g_2HZ_CNT),HL
; 551. if (g_ReplayTimeCNT >= g_music_vars.replaytimes)
LD A,(g_music_vars+4)
LD B,A
LD A,(g_ReplayTimeCNT)
CP B
JR C,?0156
?0155:
; 552. {
; 553. //通知BASAL 下一次要清AB了
; 554. musicpSendCommand(MC_SETA_B, ABFinished);
LD BC,4
LD E,65
CALL LWRD ?0187
?0156:
?0154:
; 555. }
; 556. }
; 557.
; 558. //[3]在间隔中,等待回到A点
; 559. if ( status->status == PLAYING_WAIT_A)
LD A,(IX+0)
CP 11
JR NZ,?0158
?0157:
; 560. {
; 561. if (g_music_vars.replaygap * 2 >= g_2HZ_CNT) //PAUSE值
LD HL,(g_music_vars+5)
LD H,0
ADD HL,HL
LD BC,(g_2HZ_CNT)
AND A
SBC HL,BC
JR C,?0160
?0159:
; 562. {
; 563. g_FCexitflag = TRUE;
LD A,1
LD (g_FCexitflag),A
; 564. return;
; 565. }
JR ?0158
?0160:
; 566. g_FCexitflag = FALSE;
XOR A
LD (g_FCexitflag),A
; 567. musicpSendCommand(MC_SETA_B, ReturnApoint);
LD BC,3
LD E,65
CALL LWRD ?0187
; 568. RePlayStatus = ABLoopPlay;
LD A,3
LD (RePlayStatus),A
?0158:
; 569. }
; 570. }
?0161:
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
RSEG CSTR
?0121:
DEFB ':'
DEFB 0
RSEG IDATA0
g_rSetPlayStatus:
DEFS 1
RSEG CDATA0
DEFB 0
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?