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

📄 sub_function2.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 3 页
字号:
	CALL	LWRD FS_Restore
	POP	HL
?0053:
; 196.	        }
; 197.	
; 198.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0156:
	LD	DE,g_TagInfoBuf
?0155:
	LD	A,BYTE3 unitochar
	LD	HL,LWRD unitochar
	JP	LWRD ?BANK_CALL_DIRECT_L08
read_var:
; 199.	void read_var( void )
; 200.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65522
; 201.	    int result;
; 202.	    kval_t kval;
; 203.	
; 204.	    //读出是否刚上电,如是,则要重调时间。
; 205.	    VMRead(& kval, VM_KERNEL, sizeof(kval_t));
	LD	HL,11
	PUSH	HL
	LD	C,H
	LD	B,H
	LD	L,4
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD VMRead
	POP	HL
; 206.	    g_PowerOffFlag = kval.rtcresetflag;
	LD	A,(IX-2)
	LD	(g_PowerOffFlag),A
; 207.	
; 208.	    //read comval
; 209.	    result = VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
	LD	HL,32
	PUSH	HL
	LD	BC,512
	LD	DE,g_comval
	CALL	LWRD VMRead
	POP	HL
; 210.	    ASSERT(result);
; 211.	
; 212.	    //check if valid
; 213.	    if (g_comval.magic != MAGIC_COMVAL)
	LD	HL,57005
	LD	BC,(g_comval)
	AND	A
	SBC	HL,BC
	JR	Z,?0059
?0058:
; 214.	    {
; 215.	        DUMP_STRING("comval init-ed!");
; 216.	        //COMVAL_INIT(g_comval);
; 217.	        GetDefaultComval(&g_comval);
	LD	DE,g_comval
	CALL	LWRD GetDefaultComval
?0059:
; 218.	    }
; 219.	
; 220.	    ap_message_init(& g_comval);
	LD	DE,g_comval
	LD	A,BYTE3 ap_message_init
	LD	HL,LWRD ap_message_init
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 221.	
; 222.	    //read ap vars
; 223.	    result = VMRead(& g_music_vars, VM_AP_MUSIC, sizeof(g_music_vars));
	LD	HL,86
	PUSH	HL
	LD	BC,4096
	LD	DE,g_music_vars
	CALL	LWRD VMRead
	POP	HL
; 224.	    ASSERT(result);
; 225.	
; 226.	    //check if valid
; 227.	    if (g_music_vars.magic != MAGIC_MUSIC)
	LD	HL,(g_music_vars+84)
	LD	BC,48879
	AND	A
	SBC	HL,BC
	JR	Z,?0061
?0060:
; 228.	    {
; 229.	        BYTE i;
; 230.	
; 231.	        DUMP_STRING("vars init-ed!");
; 232.	        g_music_vars.magic = MAGIC_MUSIC;
	LD	(g_music_vars+84),BC
; 233.	        g_music_vars.volume = 24;
	LD	A,24
	LD	(g_music_vars),A
; 234.	        g_music_vars.eq_type = 0;
	XOR	A
	LD	(g_music_vars+2),A
; 235.	        g_music_vars.replaytimes = 5;
	LD	A,5
	LD	(g_music_vars+4),A
; 236.	        g_music_vars.replaygap = 1;
	LD	A,1
	LD	(g_music_vars+5),A
; 237.	        g_music_vars.repeat_mode = FSEL_ALL_SEQUENCE;
	XOR	A
	LD	(g_music_vars+1),A
; 238.	        g_music_vars.play_rate = 0;
	LD	(g_music_vars+3),A
; 239.	        g_music_vars.location.disk = 'C';
	LD	A,67
	LD	(g_music_vars+7),A
; 240.	        g_music_vars.play_listmod = mlistnor;
	LD	A,5
	LD	(g_music_vars+78),A
; 241.	        g_music_vars.fselmod = FSEL_TYPE_COMMONDIR;
	XOR	A
	LD	(g_music_vars+79),A
; 242.	        g_music_vars.MusicOpenMod = Nor_open;
	LD	(g_music_vars+6),A
; 243.	        g_music_vars.SRSMod.Wow=8; 
	LD	A,8
	LD	(g_music_vars+81),A
; 244.	        g_music_vars.SRSMod.Bass=8;
	LD	(g_music_vars+82),A
; 245.	        g_music_vars.SRSMod.Srs=4;   
	LD	A,4
	LD	(g_music_vars+83),A
; 246.	        strcpy(g_music_vars.location.path, FS_CD_ROOT);
	LD	DE,?0062
	LD	HL,g_music_vars+21
	CALL	LWRD ?STRCPY_L11
; 247.	        ClearTimePara();
	LD	A,BYTE3 ClearTimePara
	LD	HL,LWRD ClearTimePara
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0061:
; 248.	    }
; 249.	
; 250.	//    menu.string_id = g_comval.langid;
; 251.	
; 252.	
; 253.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
openDAC:
; 254.	
; 255.	
; 256.	
; 257.	void openDAC(void)
; 258.	{
	PUSH	DE
	PUSH	AF
	PUSH	AF
; 259.	    dac_t dacattr;
; 260.	    sfr IO80_dac = 0x80;
; 261.	    sfr IO8B_dac = 0x8b;
; 262.	    dacattr.dacselect = 0;
	LD	HL,0
	ADD	HL,SP
	LD	(HL),0
; 263.	    dacattr.rate = FS_8K;
	INC	HL
	LD	(HL),8
; 264.	    EnableDAC(& dacattr);
	DEC	HL
	EX	DE,HL
	CALL	LWRD EnableDAC
; 265.	    IO80_dac = IO80_dac | 0x08; //test
	IN	A,(128)
	OR	8
	OUT	(128),A
; 266.	    IO8B_dac = IO8B_dac | 0x10; //test
	IN	A,(139)
	OR	16
	OUT	(139),A
; 267.	}
	POP	HL
	POP	HL
	POP	DE
	JP	LWRD ?BANK_FAST_LEAVE_L08
ClearTimePara:
; 268.	
; 269.	void ClearTimePara(void)
; 270.	{
	PUSH	BC
	PUSH	DE
; 271.	    BYTE i;
; 272.	    g_music_vars.MusicOpenMod = Nor_open;
	XOR	A
	LD	(g_music_vars+6),A
; 273.	    g_music_vars.BreakPTSave.breakPT = 0; //开始断点为0
	LD	C,A
	LD	L,C
	LD	B,A
	LD	H,B
	LD	(g_music_vars+48),HL
	LD	(g_music_vars+50),BC
; 274.	    g_music_vars.BreakPTDisTime.hour = 0;
	LD	(g_music_vars+75),A
; 275.	    g_music_vars.BreakPTDisTime.minute = 0;
	LD	(g_music_vars+76),A
; 276.	    g_music_vars.BreakPTDisTime.second = 0;
	LD	(g_music_vars+77),A
; 277.	    g_music_vars.BreakPTSave.ApointSave = 0; //开始断点为0
	LD	(g_music_vars+52),HL
	LD	(g_music_vars+54),BC
; 278.	    g_music_vars.BreakPTSave.BpointSave = 0; //开始断点为0
	LD	(g_music_vars+56),HL
	LD	(g_music_vars+58),BC
; 279.	    for (i = 0; i<12; i++)
	LD	E,0
?0064:
	LD	A,E
	CP	12
	JR	NC,?0063
?0065:
; 280.	    {                                        //清0时间记录
; 281.	        g_music_vars.BreakPTSave.breakPTTime[i] = 0;
	LD	HL,g_music_vars+60
	LD	C,E
	ADD	HL,BC
	LD	(HL),B
	INC	E
	JR	?0064
?0063:
; 282.	    }
; 283.	    StartIntro(TRUE)//因为时间清0了,所以浏览要从头开始
	LD	A,1
	LD	(g_introCntMode),A
	LD	A,(g_music_vars+77)
	LD	(g_OldSecTempBackup),A
	XOR	A
	LD	(g_introCNT),A
; 284.	}
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
ChangeVolume:
; 285.	
; 286.	//============改变音量================
; 287.	int ChangeVolume( void )
; 288.	{
	PUSH	BC
	PUSH	DE
	PUSH	IY
; 289.	    wma_play_status_t status_buf;
; 290.	    int key;
; 291.	    return_to_play=1;
	LD	A,1
	LD	(return_to_play),A
; 292.	     slider.string_id=g_comval.langid;
	LD	A,(g_comval+12)
	LD	(slider+10),A
; 293.	    if (RePlayStatus != NormalPlay)
	LD	A,(RePlayStatus)
	OR	A
	JR	Z,?0068
?0067:
; 294.	    {
; 295.	        if (g_currentMusicType == Music_MP3)
	LD	A,(g_currentMusicType)
	DEC	A
	JP	NZ,?0140
?0069:
; 296.	        {
; 297.	
; 298.	            if (g_music_vars.location.disk != 'C')
	LD	A,(g_music_vars+7)
	CP	67
	JP	NZ,?0140
?0071:
; 299.	            {
; 300.	                //如不是“C”盘就不进行速度调节
; 301.	                return 0;
; 302.	            }
?0072:
; 303.	            //show background
; 304.	            ClearScreen(NULL);
	LD	DE,0
	CALL	LWRD ClearScreen
; 305.	            slider.max = 8;
	LD	HL,8
	LD	(slider+4),HL
; 306.	            slider.min = -8;
	LD	HL,65528
	LD	(slider+2),HL
; 307.	            slider.step = 1;
	LD	HL,1
	LD	(slider+8),HL
; 308.	            slider.title=MPLAY3;
	LD	HL,288
	LD	(slider),HL
; 309.	            CheckPlayrateLimit();
	LD	A,BYTE3 CheckPlayrateLimit
	LD	HL,LWRD CheckPlayrateLimit
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 310.	            slider.value = g_music_vars.play_rate;
	LD	BC,(g_music_vars+3)
	LD	A,C
	RLCA
	SBC	A,A
	LD	B,A
	LD	(slider+6),BC
; 311.	            ui_auto_update=FALSE;
	XOR	A
	LD	(ui_auto_update),A
; 312.	            g_result = ui_slider(& slider, speed_callback);
	LD	C,BYTE3 speed_callback
	PUSH	BC
	LD	HL,LWRD speed_callback
	PUSH	HL
	CALL	LWRD ?0157
	POP	AF
	POP	AF
	LD	(g_result),HL
; 313.	            ui_auto_update = TRUE;
; 314.	            g_music_vars.play_rate = slider.value;
	LD	A,(slider+6)
	LD	(g_music_vars+3),A
; 315.	
; 316.	            SetFullInterface();
	XOR	A
	LD	(ui_auto_update),A
	LD	IY,UpDisplayFlag
	LD	A,(IY+0)
	OR	193
	LD	(IY+0),A
	LD	(IY+1),255
; 317.	            need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 318.	
; 319.	            //if (g_result != RESULT_RECORD)//不响应单键录音
; 320.	            //{
; 321.	                if (g_result != 0)
	LD	A,L
	OR	H
	JR	Z,?0140
?0073:
; 322.	                {
; 323.	                    return g_result;
	JR	?0077
; 324.	                }
?0074:
?0070:
; 325.	            //}
; 326.	
; 327.	        }
; 328.	        return 0;
; 329.	    }
?0068:
; 330.	
; 331.	    //show background
; 332.	    slider.min = 0;
	LD	L,A
	LD	H,A
	LD	(slider+2),HL
; 333.	    slider.max = 31;
	LD	L,31
	LD	(slider+4),HL
; 334.	    //g_music_vars.volume = GetPAVolume();
; 335.	    slider.value = g_music_vars.volume;
	LD	BC,(g_music_vars)
	LD	A,C
	RLCA
	SBC	A,A
	LD	B,A
	LD	(slider+6),BC
; 336.	    slider.step = 1;
	LD	L,1
	LD	(slider+8),HL
; 337.	    slider.title=CHANGEVO;
	LD	HL,489
	LD	(slider),HL
; 338.	    g_result = ui_slider(& slider, volume_callback);
	LD	C,BYTE3 volume_callback
	PUSH	BC
	LD	HL,LWRD volume_callback
	PUSH	HL
	CALL	LWRD ?0157
	POP	AF
	POP	AF
	LD	(g_result),HL
; 339.	    ui_auto_update = TRUE;
	LD	A,1
	LD	(ui_auto_update),A
; 340.	    StartIntro(FALSE);
	XOR	A
	LD	(g_introCntMode),A
	LD	A,(g_music_vars+77)
	LD	(g_OldSecTempBackup),A
	XOR	A
	LD	(g_introCNT),A
; 341.	
; 342.	    if (g_result != 0)
	LD	A,L
	OR	H
	JR	NZ,?0077
?0075:
; 343.	    {
; 344.	        return g_result;
; 345.	    }
?0076:
; 346.	    SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 347.	    need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 348.	    return 0;
?0140:
	LD	HL,0
; 349.	}
?0077:
	POP	IY
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0157:
	LD	DE,slider
	LD	A,BYTE3 ui_slider
	LD	HL,LWRD ui_slider
	JP	LWRD ?BANK_CALL_DIRECT_L08
GetInformation:
; 350.	
; 351.	
; 352.	/*
; 353.	********************************************************************************
; 354.	*             int GetInformation(void)
; 355.	*
; 356.	* Description : 读取歌曲信息,歌词
; 357.	*
; 358.	* Arguments   : void
; 359.	*
; 360.	* Returns     : int
; 361.	*
; 362.	* Notes       :
; 363.	*
; 364.	********************************************************************************
; 365.	*/
; 366.	int GetInformation( void )
; 367.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65520
; 368.	    char g_lyric_mod;
; 369.	    int result;
; 370.	    ID3Info_t ID3;
; 371.	
; 372.	    //清 WATCH_DOG
; 373.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 374.	    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
; 375.	    ID3.TIT2_length = 30;
	LD	(IX-12),30
; 376.	    ID3.TPE1_length = 30;
	LD	(IX-9),30
; 377.	    ID3.TALB_length = 30;
	LD	(IX-6),30
; 378.	    ID3.TENC_length = 0;
	LD	(IX-3),0
; 379.	    ID3.TIT2_buffer = & g_TagInfoBuf[0];
	LD	(IX-11),LOW(g_TagInfoBuf)
	LD	(IX-10),HIGH(g_TagInfoBuf)
; 380.	    ID3.TPE1_buffer = & g_TagInfoBuf[30];
	LD	(IX-8),LOW(g_TagInfoBuf+30)
	LD	(IX-7),HIGH(g_TagInfoBuf+30)
; 381.	    ID3.TALB_buffer = & g_TagInfoBuf[60];
	LD	(IX-5),LOW(g_TagInfoBuf+60)
	LD	(IX-4),HIGH(g_TagInfoBuf+60)
; 382.	    ID3.TENC_buffer = & g_TagInfoBuf[90];
	LD	(IX-2),LOW(g_TagInfoBuf+90)
	LD	(IX-1),HIGH(g_TagInfoBuf+90)
; 383.	
; 384.	        switch (g_currentMusicType)
	CP	2
	JR	C,?0088
	CP	5
	JR	NC,?0088
?0079:
; 385.	    {
; 386.	    case  Music_WMA:
; 387.	    case  Music_WMV:
; 388.	    case  Music_ASF:
; 389.	        ID3.TALB_length = 0;
	LD	(IX-6),0
; 390.	        if (wmaGetTAGInfo(g_music_vars.location.filename, &ID3))
	LD	HL,4
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	DE,g_music_vars+33
	LD	A,BYTE3 wmaGetTAGInfo
	LD	HL,LWRD wmaGetTAGInfo
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	JR	Z,?0081
?0080:
; 391.	        {
; 392.	            unitochar(g_TagInfoBuf, 30, g_comval.langid);
	LD	HL,g_comval+12
	LD	C,(HL)
	PUSH	BC
	LD	BC,30
	CALL	LWRD ?0156
	POP	AF
; 393.	            unitochar(&g_TagInfoBuf[30], 30, g_comval.langid);
	LD	HL,g_comval+12
	LD	C,(HL)
	PUSH	BC
	LD	BC,30
	LD	DE,g_TagInfoBuf+30
	CALL	LWRD ?0155
	POP	AF
; 394.	            if ( (g_TagInfoBuf[0] !=0)
; 395.	                    || (g_TagInfoBuf[30] !=0) )
	LD	A,(g_TagInfoBuf)
	OR	A
	JR	NZ,?0084
	LD	A,(g_TagInfoBuf+30)
	OR	A
	JR	Z,?0087
?0084:
?0085:
?0082:
; 396.	            {
; 397.	                strcpy(g_TagInfoBuf, & g_TagInfoBuf[0]);
	CALL	LWRD ?0154
; 398.	                strcat(g_TagInfoBuf, " ");
; 399.	                strcat(g_TagInfoBuf, & g_TagInfoBuf[30]);
; 400.	                strcat(g_TagInfoBuf, " ");
?0083:
; 401.	            }
; 402.	        }
; 403.	        else
	JR	?0087
?0081:
; 404.	        {
; 405.	            g_TagInfoBuf[0] = 0x0;
	XOR	A
	LD	(g_TagInfoBuf),A
?0087:
; 406.	        }
; 407.	     break;
	JR	?0078
?0088:
	CP	1
	JR	NZ,?0092
; 408.	
; 409.	    case  Music_MP3:
; 410.	        if (mp3GetID3Info(g_music_vars.location.filename, & ID3, g_comval.langid))
	LD	BC,(g_comval+12)
	LD	B,0
	PUSH	BC
	LD	HL,6
	ADD	HL,SP
	LD	C,L
	LD	B,H
	LD	DE,g_music_vars+33
	LD	A,BYTE3 mp3GetID3Info
	LD	HL,LWRD mp3GetID3Info
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	INC	L
	DEC	L
	JR	Z,?0096
?0089:
; 411.	        {
; 412.	            strcpy(g_TagInfoBuf, & g_TagInfoBuf[0]);

⌨️ 快捷键说明

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