⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sub_function1.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 3 页
字号:
	LD	L,(IX-2)
; 179.	    }
	JR	?0047
?0046:
; 180.	    //取当前歌曲数状态
; 181.	    g_musicamount = FSELGetTotal();
	LD	A,BYTE3 fselGetTotal
	LD	HL,LWRD fselGetTotal
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_musicamount),HL
; 182.	    g_musicsequence = FSELGetNo();
	LD	A,BYTE3 fselGetNo
	LD	HL,LWRD fselGetNo
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_musicsequence),HL
; 183.	    FSELSetMode(g_music_vars.repeat_mode);
	CALL	LWRD ?0174
; 184.	
; 185.	    //确保选择器与AP的目录对应
; 186.	    fselGetLocation(& g_music_vars.location);
	CALL	LWRD ?0178
; 187.	    //检测Music的类型
; 188.	     make_dirname();  //取目录名
	LD	A,BYTE3 make_dirname
	LD	HL,LWRD make_dirname
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 189.	    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
; 190.	    //找歌词文件并打开
; 191.	   //清 WATCH_DOG
; 192.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 193.	    return TRUE;
	LD	L,1
; 194.	}
?0047:
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0174:
	LD	DE,(g_music_vars+1)
?0173:
	LD	A,BYTE3 fselSetMode
	LD	HL,LWRD fselSetMode
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0178:
	LD	DE,g_music_vars+7
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	JP	LWRD ?BANK_CALL_DIRECT_L08
musicpSendCommand_bank:
; 195.	
; 196.	//==================================================================
; 197.	bool musicpSendCommand_bank( BYTE cmd, int param )
; 198.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65534
	PUSH	IY
	PUSH	BC
	POP	IY
; 199.	    bool result = FALSE;
; 200.	    //根据不同的音乐类型发不同的命令
; 201.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 202.	    switch (cmd)
	LD	A,(IX+2)
	CP	4
	JR	NZ,?0056
?0049:
; 203.	    {
; 204.	    case MC_PLAY:
; 205.	
; 206.	        if (!g_PAOpenFlag)
	LD	A,(g_PAOpenFlag)
	OR	A
	JR	NZ,?0051
?0050:
; 207.	        {
; 208.	            //第一次进入AP时由于要开PA,为了减少噪音,要进行淡入。
; 209.	           #ifdef OPT_Sup_FadeIn_fun
; 210.	            musicpSendCommand(MC_FADEINOUT, FadeIn_def);
	CALL	LWRD ?0170
?0051:
; 211.	           #endif //OPT_Sup_FadeIn_fun
; 212.	        }
; 213.	        if (g_FCexitflag)
	LD	A,(g_FCexitflag)
	OR	A
	JR	Z,?0053
?0052:
; 214.	        {
; 215.	            openPA(0);
	LD	E,0
	JR	?0153
; 216.	        }
; 217.	        else
?0053:
; 218.	        {
; 219.	            openPA(g_music_vars.volume);
	LD	DE,(g_music_vars)
?0153:
	LD	A,BYTE3 openPA
	LD	HL,LWRD openPA
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0054:
; 220.	        }
; 221.	
; 222.	        if (param == Nor_Break_open)
	PUSH	IY
	POP	HL
	LD	A,1
	XOR	L
	OR	H
	JR	NZ,?0056
?0055:
; 223.	        {
; 224.	            //断点播放时要淡入
; 225.	           #ifdef OPT_Sup_FadeIn_fun
; 226.	            musicpSendCommand(MC_FADEINOUT, FadeIn_def);
	CALL	LWRD ?0170
?0056:
; 227.	           #endif //OPT_Sup_FadeIn_fun
; 228.	        }
; 229.	        break;
?0057:
; 230.	
; 231.	    default:
; 232.	        break;
?0048:
; 233.	    }
; 234.	    switch (g_currentMusicType)
	LD	DE,(g_currentMusicType)
	CALL	LWRD ?C_S_SWITCH_L06
	DEFB	1
	DEFW	6
	DEFW	?0091
	DEFW	?0059
	DEFW	?0068
	DEFW	?0068
	DEFW	?0068
	DEFW	?0084
	DEFW	?0077
?0059:
; 235.	    {
; 236.	    case Music_MP3: //mp3
; 237.	        BankSwitch((unsigned long)mp3pSendCommand >> 16);
	LD	E,BYTE3 mp3pSendCommand
	CALL	LWRD ?0172
; 238.	        result = mp3pSendCommand(cmd, param);
	LD	A,BYTE3 mp3pSendCommand
	LD	HL,LWRD mp3pSendCommand
	CALL	LWRD ?0164
; 239.	        switch(cmd)
	JR	NZ,?0066
?0061:
; 240.	        {
; 241.	        case MC_LOAD:
; 242.	            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 ?0163
; 243.	            mp3pSendCommand(MC_SETSPEED, g_music_vars.play_rate);
	LD	A,BYTE3 mp3pSendCommand
	LD	HL,LWRD mp3pSendCommand
	CALL	LWRD ?0165
; 244.	            mp3pSendCommand(MC_SETEQ, g_music_vars.eq_type);
	LD	A,BYTE3 mp3pSendCommand
	LD	HL,LWRD mp3pSendCommand
	CALL	LWRD ?0166
; 245.	            if(g_music_vars.eq_type>8)  
	JR	NC,?0066
?0062:
; 246.	            { 
; 247.	             if(SRSModeFlag)
	LD	A,(SRSModeFlag)
	OR	A
	JR	Z,?0065
?0064:
; 248.	             { 
; 249.	              mp3pSendCommand(MC_SETUSEREQ, (int)&(g_music_vars.SRSMod));
	LD	BC,g_music_vars+81
	LD	E,66
	LD	A,BYTE3 mp3pSendCommand
	LD	HL,LWRD mp3pSendCommand
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 250.	             }
; 251.	             else 
	JR	?0066
?0065:
; 252.	             {  
; 253.	               srs_default_set();
	LD	A,BYTE3 srs_default_set
	LD	HL,LWRD srs_default_set
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0066:
?0063:
; 254.	             }
; 255.	            }
; 256.	            break;
?0067:
; 257.	
; 258.	        default:
; 259.	            break;
?0060:
; 260.	        }
; 261.	        break;
	JP	LWRD ?0058
?0068:
; 262.	
; 263.	    case Music_WMA: //wma
; 264.	    case Music_ASF: //asf
; 265.	    case Music_WMV: //wmv
; 266.	        BankSwitch((unsigned long)wmapSendCommand >> 16);
	LD	E,BYTE3 wmapSendCommand
	CALL	LWRD ?0172
; 267.	        result = wmapSendCommand(cmd, param);
	LD	A,BYTE3 wmapSendCommand
	LD	HL,LWRD wmapSendCommand
	CALL	LWRD ?0164
; 268.	
; 269.	        switch(cmd)
	JR	NZ,?0075
?0070:
; 270.	        {
; 271.	        case MC_LOAD:
; 272.	            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 ?0163
; 273.	            wmapSendCommand(MC_SETSPEED, g_music_vars.play_rate);
	LD	A,BYTE3 wmapSendCommand
	LD	HL,LWRD wmapSendCommand
	CALL	LWRD ?0165
; 274.	            wmapSendCommand(MC_SETEQ, g_music_vars.eq_type);
	LD	A,BYTE3 wmapSendCommand
	LD	HL,LWRD wmapSendCommand
	CALL	LWRD ?0166
; 275.	            if(g_music_vars.eq_type>8)  
	JR	NC,?0075
?0071:
; 276.	            { 
; 277.	             if(SRSModeFlag)
	LD	A,(SRSModeFlag)
	OR	A
	JR	Z,?0074
?0073:
; 278.	             { 
; 279.	              wmapSendCommand(MC_SETUSEREQ, (int)&(g_music_vars.SRSMod));
	LD	BC,g_music_vars+81
	LD	E,66
	LD	A,BYTE3 wmapSendCommand
	LD	HL,LWRD wmapSendCommand
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 280.	             }
; 281.	             else 
	JR	?0075
?0074:
; 282.	             {  
; 283.	               srs_default_set();
	LD	A,BYTE3 srs_default_set
	LD	HL,LWRD srs_default_set
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0075:
?0072:
; 284.	             }
; 285.	            }
; 286.	            break;
?0076:
; 287.	
; 288.	        default:
; 289.	            break;
?0069:
; 290.	        }
; 291.	        break;
	JP	LWRD ?0058
?0077:
; 292.	
; 293.	    case Music_APE:
; 294.	        BankSwitch((unsigned long)apepSendCommand >> 16);
	LD	E,BYTE3 apepSendCommand
	CALL	LWRD ?0172
; 295.	        result = apepSendCommand(cmd, param);
	LD	A,BYTE3 apepSendCommand
	LD	HL,LWRD apepSendCommand
	CALL	LWRD ?0164
; 296.	        switch(cmd)
	JR	NZ,?0082
?0079:
; 297.	        {
; 298.	        case MC_LOAD:
; 299.	            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 ?0163
; 300.	            apepSendCommand(MC_SETSPEED, g_music_vars.play_rate);
	LD	A,BYTE3 apepSendCommand
	LD	HL,LWRD apepSendCommand
	CALL	LWRD ?0167
; 301.	            if(g_music_vars.eq_type > 0x10)
	JR	NC,?0081
?0080:
; 302.	                apepSendCommand(MC_SETEQ, 0);
	LD	BC,0
	JR	?0154
; 303.	            else
?0081:
; 304.	            apepSendCommand(MC_SETEQ, g_music_vars.eq_type);
	LD	C,B
	LD	B,0
?0154:
	LD	E,67
	LD	A,BYTE3 apepSendCommand
	LD	HL,LWRD apepSendCommand
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0082:
; 305.	            break;
?0083:
; 306.	
; 307.	        default:
; 308.	            break;
?0078:
; 309.	        }
; 310.	        break;
	JR	?0058
?0084:
; 311.	        
; 312.	    case Music_OGG:
; 313.	        BankSwitch((unsigned long)oggpSendCommand >> 16);
	LD	E,BYTE3 oggpSendCommand
	CALL	LWRD ?0172
; 314.	        result = oggpSendCommand(cmd, param);
	LD	A,BYTE3 oggpSendCommand
	LD	HL,LWRD oggpSendCommand
	CALL	LWRD ?0164
; 315.	        switch(cmd)
	JR	NZ,?0058
?0086:
; 316.	        {
; 317.	        case MC_LOAD:
; 318.	            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 ?0163
; 319.	            oggpSendCommand(MC_SETSPEED, g_music_vars.play_rate);
	LD	A,BYTE3 oggpSendCommand
	LD	HL,LWRD oggpSendCommand
	CALL	LWRD ?0167
; 320.	            if(g_music_vars.eq_type > 0x10)
	JR	NC,?0088
?0087:
; 321.	                oggpSendCommand(MC_SETEQ, 0);
	LD	BC,0
	JR	?0155
; 322.	            else
?0088:
; 323.	            oggpSendCommand(MC_SETEQ, g_music_vars.eq_type);
	LD	C,B
	LD	B,0
?0155:
	LD	E,67
	LD	A,BYTE3 oggpSendCommand
	LD	HL,LWRD oggpSendCommand
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0089:
; 324.	            break;
	JR	?0058
?0090:
; 325.	
; 326.	        default:
; 327.	            break;
?0085:
; 328.	        }
; 329.	        break;
?0091:
; 330.	
; 331.	
; 332.	    default:
; 333.	        return FALSE;
	LD	L,0
; 334.	    }
	JR	?0106
?0058:
; 335.	
; 336.	
; 337.	    //[2]下面是在做完如下命令都要做的事情
; 338.	    switch ( cmd )
	LD	E,(IX+2)
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	4
	DEFB	4
	DEFB	6
	DEFB	19
	DEFB	65
	DEFW	?0092
	DEFW	?0093
	DEFW	?0104
	DEFW	?0103
	DEFW	?0100
?0093:
; 339.	    {
; 340.	    case MC_SETA_B:
; 341.	        if (result == 0)
	XOR	A
	OR	(IX-2)
	JR	Z,?0092
?0094:
; 342.	        {
; 343.	            break;
?0095:
; 344.	        }
; 345.	
; 346.	        switch ( param )
	PUSH	IY
	POP	BC
	LD	A,1
	XOR	C
	OR	B
	JR	NZ,?0098
?0097:
; 347.	        {
; 348.	        case SetAPoint:
; 349.	            g_2HZ_CNT = 0;//开始计AB点时间长度
	LD	L,A
	LD	H,A
	LD	(g_2HZ_CNT),HL
; 350.	            g_ABMinTimeCNT = ABReplayMiniTime_def;//定AB的最小时长为400ms
	LD	A,20
	LD	(g_ABMinTimeCNT),A
; 351.	            //g_ABMinTimeCNT = 4000/20;//定AB的最小时长为  4000/20 for debug
; 352.	            RePlayStatus = WaitSetBPointForAB;
	LD	A,2
	JR	?0156
; 353.	            UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 354.	            need_draw = TRUE;
; 355.	            break;
?0098:
	LD	A,2
	XOR	C
	OR	B
	JR	NZ,?0092
; 356.	
; 357.	        case SetBPoint:
; 358.	            g_ABPointTimeSize = g_2HZ_CNT;//记下AB点时间长度
	LD	HL,(g_2HZ_CNT)
	LD	(g_ABPointTimeSize),HL
; 359.	            g_ReplayTimeCNT = 0;//复读次数清0
	LD	(g_ReplayTimeCNT),A
; 360.	            RePlayStatus = ABLoopPlay;//自动进入复读模式
	LD	A,3
?0156:
	LD	(RePlayStatus),A
; 361.	            UpDisplayFlag = UpDisplayFlag | up_MPRLmode;//刷新复读图标
	LD	HL,UpDisplayFlag
	INC	HL
	SET	3,(HL)
; 362.	            need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 363.	            break;
	JR	?0092
?0099:
; 364.	
; 365.	        default:
; 366.	            break;
?0096:
; 367.	        }
; 368.	        break;
?0100:
; 369.	
; 370.	    case MC_PLAY:
; 371.	        if (result)
	XOR	A
	OR	(IX-2)
	JR	Z,?0092
?0101:
; 372.	        {
; 373.	            PlayStatus = PlaySta;
	LD	A,2
	LD	(PlayStatus),A
?0102:
; 374.	        }
; 375.	        break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -