sub_function1.s01
来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 1,819 行 · 第 1/3 页
S01
1,819 行
; 213.
; 214. else //选择列表
JR ?0056
?0033:
; 215. {
; 216. switch (Direct)
LD A,(IX+2)
CP 2
JR NZ,?0059
?0058:
; 217. {
; 218. case Music_Cur:
; 219. result = TRUE;
LD (IX-2),1
; 220. break;
JR ?0057
?0059:
CP 3
JR NZ,?0066
; 221.
; 222. case Music_Next:
; 223. if(mod==list_key) //从播放列表选择文件模式
LD A,(IX+4)
CP 3
JR Z,?0057
?0060:
; 224. {
; 225. break;
?0061:
; 226. }
; 227. if((mod==Play_key) &&(g_music_vars.file_list_num ==g_file_list_total-1)) //最后一首停止
LD B,A
DEC B
DEC B
JR NZ,?0063
LD HL,(g_music_vars+90)
PUSH HL
LD HL,65535
LD BC,(g_file_list_total)
ADD HL,BC
LD C,L
LD B,H
POP HL
AND A
SBC HL,BC
JR Z,?0190
?0065:
?0064:
?0062:
; 228. return FALSE;
?0063:
; 229. ifSelBuffToltalTimeFlag = FALSE;
XOR A
LD (ifSelBuffToltalTimeFlag),A
; 230. result = select_music_list(Music_Next); //选择下一首
LD E,3
JR ?0185
; 231. break;
?0066:
CP 4
JR NZ,?0057
; 232.
; 233. case Music_Prev:
; 234. if((mod==Play_key) &&(g_music_vars.file_list_num ==0))
LD B,(IX+4)
DEC B
DEC B
JR NZ,?0068
LD HL,(g_music_vars+90)
LD A,L
OR H
JR Z,?0190
?0070:
?0069:
?0067:
; 235. return FALSE;
?0068:
; 236.
; 237. ifSelBuffToltalTimeFlag = FALSE;
XOR A
LD (ifSelBuffToltalTimeFlag),A
; 238. result = select_music_list(Music_Prev); //选择上一首
LD E,4
?0185:
LD A,BYTE3 select_music_list
LD HL,LWRD select_music_list
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (IX-2),L
; 239. break;
?0071:
; 240.
; 241. default:
; 242. break;
?0057:
; 243. }
; 244. if(result==RESULT_LIST_ERR) //列表不存在
LD A,(IX-2)
CP 106
JR Z,?0190
?0072:
; 245. {
; 246. return FALSE;
; 247. }
?0073:
; 248. if(!fselSetLocation(& g_music_vars.location)) //文件已被删除
CALL LWRD ?0226
INC L
DEC L
JR NZ,?0075
?0074:
; 249. {
; 250. DisplayErrMsg(MFILEOUT); //没有文件
; 251. fselGetLocation(& g_music_vars.location);
CALL LWRD ?0224
; 252. return FALSE;
?0190:
LD L,0
; 253. }
JR ?0076
?0075:
; 254. else
; 255. {
; 256. g_musicamount = g_file_list_total;
LD HL,(g_file_list_total)
LD (g_musicamount),HL
; 257. g_musicsequence = g_music_vars.file_list_num+1; //当前列表编号
LD HL,(g_music_vars+90)
INC HL
LD (g_musicsequence),HL
?0056:
; 258. }
; 259. }
; 260. //检测Music的类型
; 261. make_dirname(); //取目录名
LD A,BYTE3 make_dirname
LD HL,LWRD make_dirname
CALL LWRD ?BANK_CALL_DIRECT_L08
; 262. g_currentMusicType = CheckMusicType(g_music_vars.location.filename);
LD DE,g_music_vars+33
LD A,BYTE3 CheckMusicType
LD HL,LWRD CheckMusicType
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
LD (g_currentMusicType),A
; 263. //找歌词文件并打开
; 264. //清 WATCH_DOG
; 265. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 266. return TRUE;
LD L,1
; 267. }
?0076:
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0221:
LD E,C
?0220:
LD A,BYTE3 fselInit
LD HL,LWRD fselInit
JP LWRD ?BANK_CALL_DIRECT_L08
?0223:
LD DE,(g_music_vars+1)
?0222:
LD A,BYTE3 fselSetMode
LD HL,LWRD fselSetMode
JP LWRD ?BANK_CALL_DIRECT_L08
?0224:
LD DE,535
LD A,BYTE3 DisplayErrMsg
LD HL,LWRD DisplayErrMsg
CALL LWRD ?BANK_CALL_DIRECT_L08
?0225:
LD DE,g_music_vars+7
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
JP LWRD ?BANK_CALL_DIRECT_L08
?0226:
LD DE,g_music_vars+7
LD A,BYTE3 fselSetLocation
LD HL,LWRD fselSetLocation
JP LWRD ?BANK_CALL_DIRECT_L08
musicpSendCommand_bank:
; 268.
; 269. //==================================================================
; 270. bool musicpSendCommand_bank( BYTE cmd, int param )
; 271. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65534
PUSH IY
PUSH BC
POP IY
; 272. bool result = FALSE;
; 273. //根据不同的音乐类型发不同的命令
; 274. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 275. switch (cmd)
LD A,(IX+2)
CP 4
JR NZ,?0085
?0078:
; 276. {
; 277. case MC_PLAY:
; 278.
; 279. if (!g_PAOpenFlag)
LD A,(g_PAOpenFlag)
OR A
JR NZ,?0080
?0079:
; 280. {
; 281. //第一次进入AP时由于要开PA,为了减少噪音,要进行淡入。
; 282. #ifdef OPT_Sup_FadeIn_fun
; 283. musicpSendCommand(MC_FADEINOUT, FadeIn_def);
CALL LWRD ?0216
?0080:
; 284. #endif //OPT_Sup_FadeIn_fun
; 285. }
; 286. if (g_FCexitflag)
LD A,(g_FCexitflag)
OR A
JR Z,?0082
?0081:
; 287. {
; 288. openPA(0);
LD E,0
JR ?0194
; 289. }
; 290. else
?0082:
; 291. {
; 292. openPA(g_music_vars.volume);
LD DE,(g_music_vars)
?0194:
LD A,BYTE3 openPA
LD HL,LWRD openPA
CALL LWRD ?BANK_CALL_DIRECT_L08
?0083:
; 293. }
; 294.
; 295. if (param == Nor_Break_open)
PUSH IY
POP HL
LD A,1
XOR L
OR H
JR NZ,?0085
?0084:
; 296. {
; 297. //断点播放时要淡入
; 298. #ifdef OPT_Sup_FadeIn_fun
; 299. musicpSendCommand(MC_FADEINOUT, FadeIn_def);
CALL LWRD ?0216
?0085:
; 300. #endif //OPT_Sup_FadeIn_fun
; 301. }
; 302. break;
?0086:
; 303.
; 304. default:
; 305. break;
?0077:
; 306. }
; 307. switch (g_currentMusicType)
LD DE,(g_currentMusicType)
CALL LWRD ?C_S_SWITCH_L06
DEFB 1
DEFW 6
DEFW ?0120
DEFW ?0088
DEFW ?0097
DEFW ?0097
DEFW ?0097
DEFW ?0113
DEFW ?0106
?0088:
; 308. {
; 309. case Music_MP3: //mp3
; 310. BankSwitch((unsigned long)mp3pSendCommand >> 16);
LD E,BYTE3 mp3pSendCommand
CALL LWRD ?0219
; 311. result = mp3pSendCommand(cmd, param);
LD A,BYTE3 mp3pSendCommand
LD HL,LWRD mp3pSendCommand
CALL LWRD ?0210
; 312. switch(cmd)
JR NZ,?0095
?0090:
; 313. {
; 314. case MC_LOAD:
; 315. mp3pSendCommand(MC_SETVOLUME, g_music_vars.volume);
LD BC,(g_music_vars)
LD A,C
RLCA
SBC A,A
LD B,A
LD E,64
LD A,BYTE3 mp3pSendCommand
LD HL,LWRD mp3pSendCommand
CALL LWRD ?0208
; 316. mp3pSendCommand(MC_SETSPEED, g_music_vars.play_rate);
LD A,BYTE3 mp3pSendCommand
LD HL,LWRD mp3pSendCommand
CALL LWRD ?0211
; 317. mp3pSendCommand(MC_SETEQ, g_music_vars.eq_type);
LD A,BYTE3 mp3pSendCommand
LD HL,LWRD mp3pSendCommand
CALL LWRD ?0212
; 318. if(g_music_vars.eq_type>8)
JR NC,?0095
?0091:
; 319. {
; 320. if(SRSModeFlag)
LD A,(SRSModeFlag)
OR A
JR Z,?0094
?0093:
; 321. {
; 322. mp3pSendCommand(MC_SETUSEREQ, (int)&(g_music_vars.SRSMod));
LD BC,g_music_vars+83
LD E,66
LD A,BYTE3 mp3pSendCommand
LD HL,LWRD mp3pSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
; 323. }
; 324. else
JR ?0095
?0094:
; 325. {
; 326. srs_default_set();
LD A,BYTE3 srs_default_set
LD HL,LWRD srs_default_set
CALL LWRD ?BANK_CALL_DIRECT_L08
?0095:
?0092:
; 327. }
; 328. }
; 329. break;
?0096:
; 330.
; 331. default:
; 332. break;
?0089:
; 333. }
; 334. break;
JP LWRD ?0087
?0097:
; 335.
; 336. case Music_WMA: //wma
; 337. case Music_ASF: //asf
; 338. case Music_WMV: //wmv
; 339. BankSwitch((unsigned long)wmapSendCommand >> 16);
LD E,BYTE3 wmapSendCommand
CALL LWRD ?0219
; 340. result = wmapSendCommand(cmd, param);
LD A,BYTE3 wmapSendCommand
LD HL,LWRD wmapSendCommand
CALL LWRD ?0210
; 341.
; 342. switch(cmd)
JR NZ,?0104
?0099:
; 343. {
; 344. case MC_LOAD:
; 345. wmapSendCommand(MC_SETVOLUME, g_music_vars.volume);
LD BC,(g_music_vars)
LD A,C
RLCA
SBC A,A
LD B,A
LD E,64
LD A,BYTE3 wmapSendCommand
LD HL,LWRD wmapSendCommand
CALL LWRD ?0208
; 346. wmapSendCommand(MC_SETSPEED, g_music_vars.play_rate);
LD A,BYTE3 wmapSendCommand
LD HL,LWRD wmapSendCommand
CALL LWRD ?0211
; 347. wmapSendCommand(MC_SETEQ, g_music_vars.eq_type);
LD A,BYTE3 wmapSendCommand
LD HL,LWRD wmapSendCommand
CALL LWRD ?0212
; 348. if(g_music_vars.eq_type>8)
JR NC,?0104
?0100:
; 349. {
; 350. if(SRSModeFlag)
LD A,(SRSModeFlag)
OR A
JR Z,?0103
?0102:
; 351. {
; 352. wmapSendCommand(MC_SETUSEREQ, (int)&(g_music_vars.SRSMod));
LD BC,g_music_vars+83
LD E,66
LD A,BYTE3 wmapSendCommand
LD HL,LWRD wmapSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
; 353. }
; 354. else
JR ?0104
?0103:
; 355. {
; 356. srs_default_set();
LD A,BYTE3 srs_default_set
LD HL,LWRD srs_default_set
CALL LWRD ?BANK_CALL_DIRECT_L08
?0104:
?0101:
; 357. }
; 358. }
; 359. break;
?0105:
; 360.
; 361. default:
; 362. break;
?0098:
; 363. }
; 364. break;
JP LWRD ?0087
?0106:
; 365.
; 366. case Music_APE:
; 367. BankSwitch((unsigned long)apepSendCommand >> 16);
LD E,BYTE3 apepSendCommand
CALL LWRD ?0219
; 368. result = apepSendCommand(cmd, param);
LD A,BYTE3 apepSendCommand
LD HL,LWRD apepSendCommand
CALL LWRD ?0210
; 369. switch(cmd)
JR NZ,?0111
?0108:
; 370. {
; 371. case MC_LOAD:
; 372. apepSendCommand(MC_SETVOLUME, g_music_vars.volume);
LD BC,(g_music_vars)
LD A,C
RLCA
SBC A,A
LD B,A
LD E,64
LD A,BYTE3 apepSendCommand
LD HL,LWRD apepSendCommand
CALL LWRD ?0208
; 373. apepSendCommand(MC_SETSPEED, g_music_vars.play_rate);
LD A,BYTE3 apepSendCommand
LD HL,LWRD apepSendCommand
CALL LWRD ?0213
; 374. if(g_music_vars.eq_type > 0x10)
JR NC,?0110
?0109:
; 375. apepSendCommand(MC_SETEQ, 0);
LD BC,0
JR ?0195
; 376. else
?0110:
; 377. apepSendCommand(MC_SETEQ, g_music_vars.eq_type);
LD C,B
LD B,0
?0195:
LD E,67
LD A,BYTE3 apepSendCommand
LD HL,LWRD apepSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
?0111:
; 378. break;
?0112:
; 379.
; 380. default:
; 381. break;
?0107:
; 382. }
; 383. break;
JR ?0087
?0113:
; 384.
; 385. case Music_OGG:
; 386. BankSwitch((unsigned long)oggpSendCommand >> 16);
LD E,BYTE3 oggpSendCommand
CALL LWRD ?0219
; 387. result = oggpSendCommand(cmd, param);
LD A,BYTE3 oggpSendCommand
LD HL,LWRD oggpSendCommand
CALL LWRD ?0210
; 388. switch(cmd)
JR NZ,?0087
?0115:
; 389. {
; 390. case MC_LOAD:
; 391. oggpSendCommand(MC_SETVOLUME, g_music_vars.volume);
LD BC,(g_music_vars)
LD A,C
RLCA
SBC A,A
LD B,A
LD E,64
LD A,BYTE3 oggpSendCommand
LD HL,LWRD oggpSendCommand
CALL LWRD ?0208
; 392. oggpSendCommand(MC_SETSPEED, g_music_vars.play_rate);
LD A,BYTE3 oggpSendCommand
LD HL,LWRD oggpSendCommand
CALL LWRD ?0213
; 393. if(g_music_vars.eq_type > 0x10)
JR NC,?0117
?0116:
; 394. oggpSendCommand(MC_SETEQ, 0);
LD BC,0
JR ?0196
; 395. else
?0117:
; 396. oggpSendCommand(MC_SETEQ, g_music_vars.eq_type);
LD C,B
LD B,0
?0196:
LD E,67
LD A,BYTE3 oggpSendCommand
LD HL,LWRD oggpSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
?0118:
; 397. break;
JR ?0087
?0119:
; 398.
; 399. default:
; 400. break;
?0114:
; 401. }
; 402. break;
?0120:
; 403.
; 404.
; 405. default:
; 406. return FALSE;
LD L,0
; 407. }
JR ?0135
?0087:
; 408.
; 409.
; 410. //[2]下面是在做完如下命令都要做的事情
; 411. switch ( cmd )
LD E,(IX+2)
CALL LWRD ?C_V_SWITCH_L06
DEFW 4
DEFB 4
DEFB 6
DEFB 19
DEFB 65
DEFW ?0121
DEFW ?0122
DEFW ?0133
DEFW ?0132
DEFW ?0129
?0122:
; 412. {
; 413. case MC_SETA_B:
; 414. if (result == 0)
XOR A
OR (IX-2)
JR Z,?0121
?0123:
; 415. {
; 416. break;
?0124:
; 417. }
; 418.
; 419. switch ( param )
PUSH IY
POP BC
LD A,1
XOR C
OR B
JR NZ,?0127
?0126:
; 420. {
; 421. case SetAPoint:
; 422. g_2HZ_CNT = 0;//开始计AB点时间长度
LD L,A
LD H,A
LD (g_2HZ_CNT),HL
; 423. g_ABMinTimeCNT = ABReplayMiniTime_def;//定AB的最小时长为400ms
LD A,20
LD (g_ABMinTimeCNT),A
; 424. //g_ABMinTimeCNT = 4000/20;//定AB的最小时长为 4000/20 for debug
; 425. RePlayStatus = WaitSetBPointForAB;
LD A,2
JR ?0197
; 426. UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 427. need_draw = TRUE;
; 428. break;
?0127:
LD A,2
XOR C
OR B
JR NZ,?0121
; 429.
; 430. case SetBPoint:
; 431. g_ABPointTimeSize = g_2HZ_CNT;//记下AB点时间长度
LD HL,(g_2HZ_CNT)
LD (g_ABPointTimeSize),HL
; 432. g_ReplayTimeCNT = 0;//复读次数清0
LD (g_ReplayTimeCNT),A
; 433. RePlayStatus = ABLoopPlay;//自动进入复读模式
LD A,3
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?