ui_play.s01
来自「MP3 整个 SDK」· S01 代码 · 共 1,057 行 · 第 1/2 页
S01
1,057 行
LD HL,0
; 180. }
JR ?0082
?0056:
; 181. else if(tmp==-1)
LD B,(HL)
INC B
JR NZ,?0067
?0065:
; 182. {
; 183. output8(0x27,input8(0x27)|0x40);
IN A,(39)
SET 6,A
OUT (39),A
; 184. FS_FClose(fp);
LD DE,(fp)
CALL LWRD FS_FClose
; 185. switch(PlayStatus)
LD A,(PlayStatus)
CP 2
JR C,?0071
CP 5
JR NC,?0071
?0068:
; 186. {
; 187. case PlaySta:
; 188. case FFPlaySta:
; 189. case FBPlaySta:
; 190. g_result = DealMusicFileEnd(0);
LD E,B
LD A,BYTE3 DealMusicFileEnd
LD HL,LWRD DealMusicFileEnd
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 191. if ( g_result != NULL )
LD A,L
OR H
JR Z,?0076
?0069:
; 192. {
; 193. return g_result;
JR ?0112
; 194. }
?0070:
; 195. need_draw = TRUE;
; 196. break;
?0071:
CP 5
JR NZ,?0074
; 197. case NextPlaySta:
; 198. 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
; 199. if ( g_result != NULL )
LD A,L
OR H
JR Z,?0076
?0072:
; 200. {
; 201. return g_result;
JR ?0112
; 202. }
?0073:
; 203. need_draw = TRUE;
; 204. break;
?0074:
CP 6
JR NZ,?0077
; 205. case PrevPlaySta:
; 206. g_result = PrevMusicInPlay();
LD A,BYTE3 PrevMusicInPlay
LD HL,LWRD PrevMusicInPlay
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 207. if ( g_result != NULL )
LD A,L
OR H
JR NZ,?0112
?0075:
; 208. {
; 209. return g_result;
; 210. }
?0076:
; 211. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 212. break;
JR ?0067
?0077:
; 213.
; 214. default:
; 215. AmvDecSetCMD(MC_CLOSE,(int )&g_amv_vars.amvfilebreakpoint);
LD BC,g_amv_vars+46
LD E,2
CALL LWRD ?0126
; 216. return g_result;
?0112:
LD HL,(g_result)
; 217. }
?0082:
POP AF
POP AF
POP AF
POP AF
POP IX
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0067:
?0066:
; 218.
; 219. }
; 220.
; 221. // if(g_amv_vars.location.disk=='H')
; 222.
; 223. {
; 224. if((PlayStatus!=FFPlaySta)&&(PlayStatus!=FBPlaySta))
LD A,(PlayStatus)
CP 3
JP Z,?0003
CP 4
JP Z,?0003
?0081:
?0080:
?0078:
; 225. ReadOnePageFromDisk(); //判断是否从卡上读数据
CALL LWRD ReadOnePageFromDisk
?0079:
; 226. }
; 227.
; 228. }/* while(1) */
; 229.
; 230. }
JP LWRD ?0003
?0127:
LD BC,0
LD E,6
?0126:
LD A,BYTE3 AmvDecSetCMD
LD HL,LWRD AmvDecSetCMD
JP LWRD ?BANK_CALL_DIRECT_L08
ShowNowTime:
; 231.
; 232. /*
; 233. ********************************************************************************
; 234. * void Show_Bitrate( void )
; 235. *
; 236. * Description : 显示比特率
; 237. *
; 238. * Arguments : void
; 239. *
; 240. * Returns : void
; 241. *
; 242. * Notes :
; 243. *
; 244. ********************************************************************************
; 245. */
; 246.
; 247. void ShowNowTime(bool para)
; 248. {
PUSH BC
PUSH IY
PUSH IX
LD IX,0
ADD IX,SP
PUSH DE
LD HL,65526
ADD HL,SP
LD SP,HL
; 249. long int totaltime,nowtime;
; 250. int num,i;
; 251.
; 252. nowtime = g_amv_vars.amvfilebreakpoint.TimeHou*3600+g_amv_vars.amvfilebreakpoint.TimeMin*60
; 253. + g_amv_vars.amvfilebreakpoint.TimeSec;
LD BC,(g_amv_vars+51)
LD B,0
LD DE,60
CALL LWRD ?S_MUL_L02
PUSH DE
LD BC,(g_amv_vars+52)
LD B,0
LD DE,3600
CALL LWRD ?S_MUL_L02
EX DE,HL
POP DE
ADD HL,DE
LD BC,(g_amv_vars+50)
LD B,0
ADD HL,BC
LD A,H
RLCA
SBC A,A
LD C,A
LD B,C
LD (IX-10),L
LD (IX-9),H
LD (IX-8),C
LD (IX-7),B
; 254. totaltime = Totaltime.hour*3600+Totaltime.minute*60+Totaltime.second;
LD DE,(Totaltime+1)
LD D,0
LD BC,60
CALL LWRD ?S_MUL_L02
PUSH DE
LD BC,(Totaltime)
LD B,0
LD DE,3600
CALL LWRD ?S_MUL_L02
EX DE,HL
POP DE
ADD HL,DE
LD BC,(Totaltime+2)
LD B,0
ADD HL,BC
LD A,H
RLCA
SBC A,A
LD C,A
LD B,C
; 255. num=(nowtime*193)/totaltime;
PUSH BC
PUSH HL
LD HL,0
PUSH HL
LD L,193
PUSH HL
LD C,(IX-8)
LD B,(IX-7)
LD L,(IX-10)
LD H,(IX-9)
CALL LWRD ?L_MUL_L03
CALL LWRD ?SL_DIV_L03
LD (IX-12),L
LD (IX-11),H
; 256. itoa_1(g_amv_vars.amvfilebreakpoint.TimeHou, temp_buffer);
LD BC,temp_buffer
LD DE,(g_amv_vars+52)
LD A,BYTE3 itoa_1
LD HL,LWRD itoa_1
CALL LWRD ?BANK_CALL_DIRECT_L08
; 257. itoa_2(g_amv_vars.amvfilebreakpoint.TimeMin, & temp_buffer[1]);
LD BC,temp_buffer+1
LD DE,(g_amv_vars+51)
LD A,BYTE3 itoa_2
LD HL,LWRD itoa_2
CALL LWRD ?BANK_CALL_DIRECT_L08
; 258. itoa_2(g_amv_vars.amvfilebreakpoint.TimeSec, & temp_buffer[3]);
LD BC,temp_buffer+3
LD DE,(g_amv_vars+50)
LD A,BYTE3 itoa_2
LD HL,LWRD itoa_2
CALL LWRD ?BANK_CALL_DIRECT_L08
; 259. temp_buffer[5] = 0x00;
XOR A
LD (temp_buffer+5),A
; 260. ui_show_d(temp_buffer);
LD DE,temp_buffer
LD A,BYTE3 ui_show_d
LD HL,LWRD ui_show_d
CALL LWRD ?BANK_CALL_DIRECT_L08
; 261. if(!para)
XOR A
OR (IX-2)
JR NZ,?0084
?0083:
; 262. {
; 263. main_ResShowPic(GUAGEBG, POS_GUAGEBG-2, POSY_GUAGE-1); //刷新进度条背景
LD C,29
PUSH BC
LD C,13
LD DE,75
CALL LWRD ?0128
POP AF
; 264. for(i=0;i<num;i++)
LD IY,0
?0086:
LD C,(IX-12)
LD B,(IX-11)
PUSH IY
POP HL
OR 128
SBC HL,BC
JP PO,?0124
XOR H
?0124:
JP P,?0089
?0087:
; 265. main_ResShowPic(GUAGE,POS_GUAGE+i,POSY_GUAGE);
LD C,30
PUSH BC
PUSH IY
POP HL
LD A,L
ADD A,15
LD C,A
LD DE,74
CALL LWRD ?0128
POP AF
; 266. }
INC IY
JR ?0086
?0085:
; 267. else
?0084:
; 268. {
; 269. main_ResShowPic(GUAGE,POS_GUAGE+num-1,POSY_GUAGE); //防止出现断点
LD C,30
PUSH BC
LD A,(IX-12)
ADD A,14
LD C,A
LD DE,74
CALL LWRD ?0128
POP AF
; 270. main_ResShowPic(GUAGE,POS_GUAGE+num,POSY_GUAGE);
LD C,30
PUSH BC
LD A,(IX-12)
ADD A,15
LD C,A
LD DE,74
CALL LWRD ?0128
POP AF
?0089:
; 271. }
; 272. }
LD SP,IX
POP IX
POP IY
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0129:
LD E,(HL)
LD D,0
LD HL,81
ADD HL,DE
EX DE,HL
?0128:
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
Show_Bitrate:
; 273.
; 274. //----------------
; 275.
; 276. //-----------------------------------
; 277.
; 278. void Show_Bitrate( void )
; 279. {
PUSH BC
PUSH DE
PUSH AF
PUSH AF
PUSH AF
; 280. audio_format_t pFormat;
; 281.
; 282. pFormat.bit_rate[0] = 0;
LD HL,3
ADD HL,SP
LD (HL),0
; 283. pFormat.bit_rate[1] = 8;
INC HL
LD (HL),8
; 284. pFormat.bit_rate[2] = 8;
INC HL
LD (HL),8
; 285.
; 286. main_ResShowPic(MBIT0+pFormat.bit_rate[0],POS_BITRATE,POSY_BITRATE);
LD C,4
PUSH BC
LD C,9
DEC HL
DEC HL
CALL LWRD ?0129
POP AF
; 287. main_ResShowPic(MBIT0+pFormat.bit_rate[1],POS_BITRATE+6,POSY_BITRATE);
LD C,4
PUSH BC
LD C,15
LD HL,6
ADD HL,SP
CALL LWRD ?0129
POP AF
; 288. main_ResShowPic(MBIT0+pFormat.bit_rate[2],POS_BITRATE+12,POSY_BITRATE);
LD C,4
PUSH BC
LD C,21
LD HL,7
ADD HL,SP
CALL LWRD ?0129
POP AF
; 289. }
POP HL
POP HL
POP HL
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
InitLcmDeviceInfor:
; 290.
; 291.
; 292. int InitLcmDeviceInfor(ColorLcmInfor *infor)
; 293. {
PUSH IX
PUSH DE
POP IX
; 294. infor->LcmWidth=CSTNPixelWidth; //set width;
EX DE,HL
LD (HL),220
; 295. infor->LcmHeigh=CSTNPixelHeight; //set height
LD (IX+1),176
; 296. infor->RScale=5; //set color number
LD (IX+2),5
; 297. infor->GScale=6;
LD (IX+3),6
; 298. infor->BScale=5;
LD (IX+4),5
; 299. infor->RGBOrder=0; // set the order
LD (IX+5),0
; 300. return 0;
LD HL,0
; 301. }
POP IX
JP LWRD ?BANK_FAST_LEAVE_L08
ToNextMusic:
; 302.
; 303.
; 304.
; 305. int ToNextMusic( Music_sel_mod_t mod )
; 306. {
PUSH BC
PUSH DE
; 307. output8(0x4e,input8(0x4e)|0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 308. g_result = ChangeMusic(Music_Next, mod);
LD C,E
LD E,3
LD A,BYTE3 ChangeMusic
LD HL,LWRD ChangeMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
LD H,0
LD (g_result),HL
; 309. if(!g_result)
LD A,L
OR A
JR NZ,?0091
?0090:
; 310. {
; 311. return RESULT_UI_STOP;//回到停止界面
LD L,102
; 312. }
JR ?0092
?0091:
; 313. GetInformation(); //取文件信息
LD A,BYTE3 GetInformation
LD HL,LWRD GetInformation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 314. return NULL;
LD HL,0
; 315. }
?0092:
POP AF
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
PrevMusicInPlay:
; 316.
; 317.
; 318. int PrevMusicInPlay(void)
; 319. {
PUSH BC
PUSH DE
; 320.
; 321. g_result = ChangeMusic(Music_Prev, Play_key);
LD C,2
LD E,4
LD A,BYTE3 ChangeMusic
LD HL,LWRD ChangeMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
LD H,0
LD (g_result),HL
; 322. if(!g_result)
LD A,L
OR A
JR NZ,?0094
?0093:
; 323. {
; 324. return RESULT_UI_STOP;//回到停止界面
LD L,102
; 325. }
JR ?0095
?0094:
; 326. GetInformation(); //取文件信息
LD A,BYTE3 GetInformation
LD HL,LWRD GetInformation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 327. return NULL;
LD HL,0
; 328. }
?0095:
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
SetAmvWin:
; 329.
; 330. ////////////////////////// Amv设窗
; 331. void SetAmvWin(void)
; 332. {
PUSH DE
; 333.
; 334. SetWindow(&AmvRegion);
LD DE,AmvRegion
CALL LWRD SetWindow
; 335.
; 336. }
POP DE
JP LWRD ?BANK_FAST_LEAVE_L08
; 337. ///////////////////////
; 338.
RSEG UDATA0
Dscinf:
DEFS 6
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?