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 + -
显示快捷键?