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

📄 sub_function2.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 3 页
字号:
	EX	DE,HL
	CALL	LWRD VMRead
	POP	HL
; 180.	    g_PowerOffFlag = kval.rtcresetflag;
	LD	A,(IX-48)
	LD	(g_PowerOffFlag),A
; 181.	
; 182.	    //read comval
; 183.	    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
; 184.	    ASSERT(result);
; 185.	
; 186.	    //check if valid
; 187.	    if (g_comval.magic != MAGIC_COMVAL)
	LD	HL,57005
	LD	BC,(g_comval)
	AND	A
	SBC	HL,BC
	JR	Z,?0058
?0057:
; 188.	    {
; 189.	        DUMP_STRING("comval init-ed!");
; 190.	        GetDefaultComval(&g_comval);
	LD	DE,g_comval
	CALL	LWRD GetDefaultComval
?0058:
; 191.	    }
; 192.	
; 193.	    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
; 194.	
; 195.	    //read ap vars
; 196.	    result = VMRead(& g_music_vars, VM_AP_MUSIC, sizeof(g_music_vars));
	LD	HL,95
	PUSH	HL
	LD	BC,4096
	LD	DE,g_music_vars
	CALL	LWRD VMRead
	POP	HL
; 197.	    ASSERT(result);
; 198.	
; 199.	    //check if valid
; 200.	    if (g_music_vars.magic != MAGIC_MUSIC)
	LD	HL,(g_music_vars+93)
	LD	BC,48879
	AND	A
	SBC	HL,BC
	JR	Z,?0060
?0059:
; 201.	    {
; 202.	        BYTE i;
; 203.	
; 204.	        DUMP_STRING("vars init-ed!");
; 205.	        g_music_vars.magic = MAGIC_MUSIC;
	LD	(g_music_vars+93),BC
; 206.	        g_music_vars.volume = 24;
	LD	A,24
	LD	(g_music_vars),A
; 207.	        output8(0x87, 24|0xe0);
	LD	A,248
	OUT	(135),A
; 208.	        g_music_vars.eq_type = 0;
	XOR	A
	LD	(g_music_vars+2),A
; 209.	        g_music_vars.replaytimes = 5;
	LD	A,5
	LD	(g_music_vars+4),A
; 210.	        g_music_vars.replaygap = 1;
	LD	A,1
	LD	(g_music_vars+5),A
; 211.	        g_music_vars.repeat_mode = FSEL_ALL_SEQUENCE;
	XOR	A
	LD	(g_music_vars+1),A
; 212.	        g_music_vars.play_rate = 0;
	LD	(g_music_vars+3),A
; 213.	        g_music_vars.location.disk = 'C';
	LD	A,67
	LD	(g_music_vars+7),A
; 214.	        g_music_vars.play_listmod = mlistnor;
	LD	A,5
	LD	(g_music_vars+80),A
; 215.	        g_music_vars.fselmod = FSEL_TYPE_COMMONDIR;
	XOR	A
	LD	(g_music_vars+81),A
; 216.	        g_music_vars.MusicOpenMod = Nor_open;
	LD	(g_music_vars+6),A
; 217.	        g_music_vars.SRSMod.Wow=8; 
	LD	A,8
	LD	(g_music_vars+83),A
; 218.	        g_music_vars.SRSMod.Bass=8;
	LD	(g_music_vars+84),A
; 219.	        g_music_vars.SRSMod.Srs=4;   
	LD	A,4
	LD	(g_music_vars+85),A
; 220.	        g_music_vars.file_list_type = 0xff;     
	LD	A,255
	LD	(g_music_vars+92),A
; 221.	        g_music_vars.file_list_num = 0; 
	LD	HL,0
	LD	(g_music_vars+90),HL
; 222.	        strcpy(g_music_vars.location.path, FS_CD_ROOT);
	LD	DE,?0061
	LD	HL,g_music_vars+21
	CALL	LWRD ?STRCPY_L11
; 223.	        ClearTimePara();
	LD	A,BYTE3 ClearTimePara
	LD	HL,LWRD ClearTimePara
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0060:
; 224.	    }
; 225.	    if(g_from_browser)
	LD	A,(g_from_browser)
	OR	A
	JR	Z,?0063
?0062:
; 226.	    {
; 227.	        VMRead(&temp_browser_vars, VM_AP_BROWSER, sizeof(browser_vars_t));
	LD	HL,45
	PUSH	HL
	LD	BC,19456
	LD	L,15
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD VMRead
	POP	HL
; 228.	        memcpy(&g_music_vars.location, &temp_browser_vars.location, sizeof(file_location_t));
	LD	BC,43
	LD	DE,g_music_vars+7
	LD	HL,13
	ADD	HL,SP
	LD	C,2
	ADD	HL,BC
	LD	C,43
	LDIR
; 229.	        g_music_vars.file_list_type = 0xff;     
	LD	A,255
	LD	(g_music_vars+92),A
; 230.	        ClearTimePara();
	LD	A,BYTE3 ClearTimePara
	LD	HL,LWRD ClearTimePara
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0063:
; 231.	    }
; 232.	    list.string_id = g_comval.langid;
	LD	A,(g_comval+12)
	LD	(list+8),A
; 233.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
openDAC:
; 234.	
; 235.	
; 236.	
; 237.	void openDAC(void)
; 238.	{
	PUSH	DE
	PUSH	AF
	PUSH	AF
; 239.	    dac_t dacattr;
; 240.	    sfr IO80_dac = 0x80;
; 241.	    sfr IO8B_dac = 0x8b;
; 242.	    dacattr.dacselect = 0;
	LD	HL,0
	ADD	HL,SP
	LD	(HL),0
; 243.	    dacattr.rate = FS_8K;
	INC	HL
	LD	(HL),8
; 244.	    EnableDAC(& dacattr);
	DEC	HL
	EX	DE,HL
	CALL	LWRD EnableDAC
; 245.	    IO80_dac = IO80_dac | 0x08; //test
	IN	A,(128)
	OR	8
	OUT	(128),A
; 246.	    IO8B_dac = IO8B_dac | 0x10; //test
	IN	A,(139)
	OR	16
	OUT	(139),A
; 247.	}
	POP	HL
	POP	HL
	POP	DE
	JP	LWRD ?BANK_FAST_LEAVE_L08
ClearTimePara:
; 248.	
; 249.	void ClearTimePara(void)
; 250.	{
	PUSH	BC
	PUSH	DE
; 251.	    BYTE i;
; 252.	    g_music_vars.MusicOpenMod = Nor_open;
	XOR	A
	LD	(g_music_vars+6),A
; 253.	    g_music_vars.BreakPTSave.breakPT = 0; //开始断点为0
	LD	C,A
	LD	L,C
	LD	B,A
	LD	H,B
	LD	(g_music_vars+50),HL
	LD	(g_music_vars+52),BC
; 254.	    g_music_vars.BreakPTDisTime.hour = 0;
	LD	(g_music_vars+77),A
; 255.	    g_music_vars.BreakPTDisTime.minute = 0;
	LD	(g_music_vars+78),A
; 256.	    g_music_vars.BreakPTDisTime.second = 0;
	LD	(g_music_vars+79),A
; 257.	    g_music_vars.BreakPTSave.ApointSave = 0; //开始断点为0
	LD	(g_music_vars+54),HL
	LD	(g_music_vars+56),BC
; 258.	    g_music_vars.BreakPTSave.BpointSave = 0; //开始断点为0
	LD	(g_music_vars+58),HL
	LD	(g_music_vars+60),BC
; 259.	    for (i = 0; i<12; i++)
	LD	E,0
?0065:
	LD	A,E
	CP	12
	JR	NC,?0064
?0066:
; 260.	    {                                        //清0时间记录
; 261.	        g_music_vars.BreakPTSave.breakPTTime[i] = 0;
	LD	HL,g_music_vars+62
	LD	C,E
	ADD	HL,BC
	LD	(HL),B
	INC	E
	JR	?0065
?0064:
; 262.	    }
; 263.	    StartIntro(TRUE)//因为时间清0了,所以浏览要从头开始
	LD	A,1
	LD	(g_introCntMode),A
	LD	A,(g_music_vars+79)
	LD	(g_OldSecTempBackup),A
	XOR	A
	LD	(g_introCNT),A
; 264.	}
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
ChangeVolume:
; 265.	
; 266.	//============改变音量================
; 267.	int ChangeVolume( void )
; 268.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-12
	PUSH	IY
; 269.	    wma_play_status_t status_buf;
; 270.	    int key;
; 271.	    slider_t slider; 
; 272.	    return_to_play=1;
	LD	A,1
	LD	(return_to_play),A
; 273.	     slider.string_id=g_comval.langid;
	LD	A,(g_comval+12)
	LD	(IX-2),A
; 274.	    if (RePlayStatus != NormalPlay)
	LD	A,(RePlayStatus)
	OR	A
	JP	Z,?0069
?0068:
; 275.	    {
; 276.	        if (g_currentMusicType == Music_MP3)
	LD	A,(g_currentMusicType)
	DEC	A
	JP	NZ,?0131
?0070:
; 277.	        {
; 278.	
; 279.	            if (g_music_vars.location.disk != 'C')
	LD	A,(g_music_vars+7)
	CP	67
	JP	NZ,?0131
?0072:
; 280.	            {
; 281.	                //如不是“C”盘就不进行速度调节
; 282.	                return 0;
; 283.	            }
?0073:
; 284.	            //show background
; 285.	            ClearScreen(NULL);
	LD	DE,0
	CALL	LWRD ClearScreen
; 286.	            slider.max = 8;
	LD	(IX-8),8
	LD	(IX-7),0
; 287.	            slider.min = -8;
	LD	(IX-10),248
	LD	(IX-9),255
; 288.	            slider.step = 1;
	LD	(IX-4),1
	LD	(IX-3),0
; 289.	            slider.title=MPLAY3;
	LD	(IX-12),212
	LD	(IX-11),1
; 290.	            CheckPlayrateLimit();
	LD	A,BYTE3 CheckPlayrateLimit
	LD	HL,LWRD CheckPlayrateLimit
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 291.	            slider.value = g_music_vars.play_rate;
	LD	BC,(g_music_vars+3)
	LD	A,C
	RLCA
	SBC	A,A
	LD	B,A
	LD	(IX-6),C
	LD	(IX-5),B
; 292.	            ui_auto_update=FALSE;
	XOR	A
	LD	(ui_auto_update),A
; 293.	            g_result = ui_slider(& slider, speed_callback);
	LD	C,BYTE3 speed_callback
	PUSH	BC
	LD	HL,LWRD speed_callback
	PUSH	HL
	LD	HL,6
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 ui_slider
	LD	HL,LWRD ui_slider
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
	LD	(g_result),HL
; 294.	            ui_auto_update = TRUE;
; 295.	            g_music_vars.play_rate = slider.value;
	LD	A,(IX-6)
	LD	(g_music_vars+3),A
; 296.	
; 297.	            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
; 298.	            need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 299.	
; 300.	                if (g_result != 0)
	LD	A,L
	OR	H
	JR	Z,?0131
?0074:
; 301.	                {
; 302.	                    return g_result;
	JR	?0078
; 303.	                }
?0075:
?0071:
; 304.	
; 305.	        }
; 306.	        return 0;
; 307.	    }
?0069:
; 308.	
; 309.	    //show background
; 310.	    slider.min = 0;
	LD	(IX-10),A
	LD	(IX-9),A
; 311.	    slider.max = 31;
	LD	(IX-8),31
	LD	(IX-7),A
; 312.	    slider.value = g_music_vars.volume;
	LD	BC,(g_music_vars)
	LD	A,C
	RLCA
	SBC	A,A
	LD	B,A
	LD	(IX-6),C
	LD	(IX-5),B
; 313.	    slider.step = 1;
	LD	(IX-4),1
	LD	(IX-3),0
; 314.	    slider.title=CHANGEVO;
	LD	(IX-12),137
	LD	(IX-11),1
; 315.	    g_result = ui_slider(& slider, volume_callback);
	LD	C,BYTE3 volume_callback
	PUSH	BC
	LD	HL,LWRD volume_callback
	PUSH	HL
	LD	HL,6
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 ui_slider
	LD	HL,LWRD ui_slider
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
	LD	(g_result),HL
; 316.	    ui_auto_update = TRUE;
	LD	A,1
	LD	(ui_auto_update),A
; 317.	    StartIntro(FALSE);
	XOR	A
	LD	(g_introCntMode),A
	LD	A,(g_music_vars+79)
	LD	(g_OldSecTempBackup),A
	XOR	A
	LD	(g_introCNT),A
; 318.	
; 319.	    if (g_result != 0)
	LD	A,L
	OR	H
	JR	NZ,?0078
?0076:
; 320.	    {
; 321.	        return g_result;
; 322.	    }
?0077:
; 323.	    SetFullInterface();
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 324.	    need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 325.	    return 0;
?0131:
	LD	HL,0
; 326.	}
?0078:
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
GetInformation:
; 327.	
; 328.	
; 329.	/*
; 330.	********************************************************************************
; 331.	*             int GetInformation(void)
; 332.	*
; 333.	* Description : 读取歌曲信息,歌词
; 334.	*
; 335.	* Arguments   : void
; 336.	*
; 337.	* Returns     : int
; 338.	*
; 339.	* Notes       :
; 340.	*
; 341.	********************************************************************************
; 342.	*/
; 343.	int GetInformation( void )
; 344.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65520
; 345.	    char g_lyric_mod;
; 346.	    int result;
; 347.	    ID3Info_t ID3;
; 348.	
; 349.	    //清 WATCH_DOG
; 350.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 351.	    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
; 352.	    ID3.TIT2_length = 30;
	LD	(IX-12),30
; 353.	    ID3.TPE1_length = 30;
	LD	(IX-9),30
; 354.	    ID3.TALB_length = 30;
	LD	(IX-6),30
; 355.	    ID3.TENC_length = 0;
	LD	(IX-3),0
; 356.	    ID3.TIT2_buffer = & g_TagInfoBuf[0];
	LD	(IX-11),LOW(g_TagInfoBuf)
	LD	(IX-10),HIGH(g_TagInfoBuf)
; 357.	    ID3.TPE1_buffer = & g_TagInfoBuf[30];
	LD	(IX-8),LOW(g_TagInfoBuf+30)
	LD	(IX-7),HIGH(g_TagInfoBuf+30)
; 358.	    ID3.TALB_buffer = & g_TagInfoBuf[60];
	LD	(IX-5),LOW(g_TagInfoBuf+60)
	LD	(IX-4),HIGH(g_TagInfoBuf+60)
; 359.	    ID3.TENC_buffer = & g_TagInfoBuf[90];
	LD	(IX-2),LOW(g_TagInfoBuf+90)
	LD	(IX-1),HIGH(g_TagInfoBuf+90)
; 360.	
; 361.	        switch (g_currentMusicType)
	CP	2
	JR	C,?0089
	CP	5
	JR	NC,?0089
?0080:
; 362.	    {
; 363.	    case  Music_WMA:
; 364.	    case  Music_WMV:
; 365.	    case  Music_ASF:
; 366.	        ID3.TALB_length = 30;
	LD	(IX-6),30
; 367.	        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,?0082
?0081:
; 368.	        {
; 369.	            unitochar(g_TagInfoBuf, 30, g_comval.langid);
	LD	HL,g_comval+12
	LD	C,(HL)
	PUSH	BC
	LD	BC,30
	CALL	LWRD ?0149
	POP	AF
; 370.	            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 ?0148
	POP	AF
; 371.	            unitochar(&g_TagInfoBuf[60], 30, g_comval.langid); 
	LD	HL,g_comval+12
	LD	C,(HL)
	PUSH	BC
	LD	BC,30
	LD	DE,g_TagInfoBuf+60
	CALL	LWRD ?0148
	POP	AF
; 372.	            if ( (g_TagInfoBuf[0] !=0)
; 373.	                    || (g_TagInfoBuf[30] !=0)||(g_TagInfoBuf[60]!=0))
	LD	A,(g_TagInfoBuf)
	OR	A
	JR	NZ,?0085
	LD	A,(g_TagInfoBuf+30)
	OR	A
	JR	NZ,?0085
	LD	A,(g_TagInfoBuf+60)
	OR	A
	JR	Z,?0088
?0085:

⌨️ 快捷键说明

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