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

📄 ui_play.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_play(17)
	RSEG	AP_UI_PLY(0)
	RSEG	CSTR(0)
	RSEG	UDATA0(0)
	EXTERN	AmvDecModPolling
	EXTERN	AmvDecSetCMD
	EXTERN	AmvDecStart
	EXTERN	AmvRegion
	EXTERN	ChangeMusic
	EXTERN	ClearScreen
	EXTERN	DRV_DetectUD
	EXTERN	DealMusicFileEnd
	EXTERN	DisablePA
	EXTERN	DisplayErrMsg
	PUBLIC	Dscinf
	EXTERN	FS_FClose
	EXTERN	FS_FOpen
	EXTERN	GetInformation
	PUBLIC	InitLcmDeviceInfor
	EXTERN	PlayStatus
	PUBLIC	PrevMusicInPlay
	PUBLIC	SetAmvWin
	EXTERN	SetPAVolume
	EXTERN	SetWindow
	PUBLIC	ShowNowTime
	PUBLIC	Show_Bitrate
	PUBLIC	ToNextMusic
	EXTERN	Totaltime
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	fp
	EXTERN	g_amv_vars
	EXTERN	g_comval
	EXTERN	g_introCNT
	EXTERN	g_rSetPlayStatus
	EXTERN	g_result
	EXTERN	g_volcounter
	EXTERN	itoa_2
	EXTERN	main_ResShowPic
	EXTERN	need_draw
	EXTERN	openPA
	EXTERN	temp_buffer
	PUBLIC	ui_play
	EXTERN	ui_show_d
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?S_MUL_L02
	EXTERN	?L_MUL_L03
	EXTERN	?SL_DIV_L03
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?STRCAT_L11
	RSEG	AP_UI_PLY
ui_play:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        voice player stop program.
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.
; 7.	*             All Right Reserved
; 8.	*
; 9.	*  $Id: ui_play.c,v 1.1.1.1 2006/05/22 03:24:02 selina Exp $
; 10.	*******************************************************************************
; 11.	*/
; 12.	#include "ap_amv.h"
; 13.	#include  "AMVDec.h"
; 14.	#define IntCntValDef 10
; 15.	
; 16.	#include "display.h"
; 17.	ColorLcmInfor   Dscinf;
; 18.	extern  region_t   AmvRegion;
; 19.	
; 20.	#pragma codeseg(AP_UI_PLY)
; 21.	
; 22.	#pragma memory=constseg(APC_UI_PLY)
; 23.	#pragma memory=default
; 24.	
; 25.	extern bool g_introCntMode; //是从头开始还是从中途开始,TRUE 为从头开始
; 26.	extern region_t AmvRegion; 
; 27.	///extern BYTE BankCount;
; 28.	int InitLcmDeviceInfor(ColorLcmInfor *infor);
; 29.	
; 30.	extern char g_volcounter;
; 31.	extern bool     g_rSetPlayStatus;
; 32.	/*
; 33.	********************************************************************************
; 34.	*             int ui_play( void )
; 35.	*
; 36.	* Description : 显示时间,滚屏,AB闪
; 37.	*
; 38.	* Arguments   : void
; 39.	*
; 40.	* Returns     : void
; 41.	*
; 42.	* Notes       :
; 43.	*
; 44.	********************************************************************************
; 45.	*/
; 46.	int ui_play( void )
; 47.	{
	PUSH	BC
	PUSH	DE
	PUSH	IX
	PUSH	AF
	PUSH	AF
	PUSH	AF
	PUSH	AF
; 48.	        char key;
; 49.	        int i;
; 50.	        signed char  tmp;
; 51.	        int result;
; 52.	
; 53.	        need_draw = TRUE;/* need play file */
	LD	A,1
	LD	(need_draw),A
; 54.	
; 55.	                InitLcmDeviceInfor(&Dscinf);
	LD	DE,Dscinf
	LD	A,BYTE3 InitLcmDeviceInfor
	LD	HL,LWRD InitLcmDeviceInfor
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 56.	                openPA(g_amv_vars.volume);
	LD	DE,(g_amv_vars+2)
	LD	A,BYTE3 openPA
	LD	HL,LWRD openPA
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0003:
; 57.	        while (1)
; 58.	        {
; 59.	
; 60.	            if (need_draw)
	LD	A,(need_draw)
	OR	A
	JR	Z,?0006
?0005:
; 61.	            {
; 62.	            fp=FS_FOpen(g_amv_vars.location.filename,FS_OPEN_NORMAL);
	LD	C,0
	LD	DE,g_amv_vars+31
	CALL	LWRD FS_FOpen
	LD	(fp),HL
; 63.	            ClearScreen(NULL);
	LD	DE,0
	CALL	LWRD ClearScreen
; 64.	            AmvDecStart(&Dscinf,fp,&g_amv_vars.amvfilebreakpoint);
	LD	HL,g_amv_vars+48
	PUSH	HL
	LD	BC,(fp)
	LD	DE,Dscinf
	LD	A,BYTE3 AmvDecStart
	LD	HL,LWRD AmvDecStart
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 65.	            g_introCNT=0;
	XOR	A
	LD	(g_introCNT),A
?0008:
; 66.	            while(ap_get_message() != 0);
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0008
?0009:
?0007:
; 67.	            PlayStatus = PlaySta;
	LD	A,2
	LD	(PlayStatus),A
; 68.	            need_draw = FALSE;
	XOR	A
	LD	(need_draw),A
?0006:
?0012:
; 69.	            }
; 70.	
; 71.	        do
; 72.	        {
; 73.	           // output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
; 74.	            key = ap_get_message(); //读键值
	CALL	LWRD ap_get_message
	LD	HL,0
	ADD	HL,SP
	LD	(HL),A
; 75.	        //这里是处理快退大文件时可能丢掉KEYUP键的问题
; 76.	        }while(((PlayStatus == FFPlaySta) || (PlayStatus == FBPlaySta))
; 77.	            &&(key!=0)
; 78.	            &&(key!=(AP_KEY_PREV | AP_KEY_UP))
; 79.	            &&(key!=(AP_KEY_NEXT | AP_KEY_UP)));
	LD	A,(PlayStatus)
	CP	3
	JR	Z,?0013
	CP	4
	JR	NZ,?0010
?0013:
?0014:
	XOR	A
	OR	(HL)
	JR	Z,?0010
	CP	37
	JR	Z,?0010
	CP	38
	JR	NZ,?0006
?0010:
; 80.	         //   key = ap_get_message(); //读键值
; 81.	            switch(key)
	LD	E,(HL)
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	11
	DEFB	3
	DEFB	4
	DEFB	28
	DEFB	29
	DEFB	33
	DEFB	37
	DEFB	38
	DEFB	67
	DEFB	68
	DEFB	133
	DEFB	134
	DEFW	?0051
	DEFW	?0025
	DEFW	?0028
	DEFW	?0019
	DEFW	?0018
	DEFW	?0037
	DEFW	?0031
	DEFW	?0043
	DEFW	?0056
	DEFW	?0044
	DEFW	?0019
	DEFW	?0018
?0018:
; 82.	               {
; 83.	                case AP_KEY_VOLSUB:
; 84.	                case AP_KEY_VOLSUB | AP_KEY_HOLD:
; 85.	                    g_amv_vars.volume-=2;
	LD	A,(g_amv_vars+2)
	ADD	A,254
	LD	(g_amv_vars+2),A
?0019:
; 86.	                case AP_KEY_VOLADD:
; 87.	                case AP_KEY_VOLADD | AP_KEY_HOLD:
; 88.	                    g_amv_vars.volume++;
	LD	HL,g_amv_vars+2
	INC	(HL)
; 89.	                if(g_amv_vars.volume==0xff)g_amv_vars.volume=0;
	LD	A,(g_amv_vars+2)
	INC	A
	JR	NZ,?0021
?0020:
	LD	(g_amv_vars+2),A
?0021:
; 90.	                if(g_amv_vars.volume>=31)g_amv_vars.volume=31;
	LD	A,(g_amv_vars+2)
	CP	31
	JR	C,?0023
?0022:
	LD	A,31
	LD	(g_amv_vars+2),A
?0023:
; 91.	                    SetPAVolume(g_amv_vars.volume);
	LD	DE,(g_amv_vars+2)
	CALL	LWRD SetPAVolume
; 92.	                    break;
	JP	LWRD ?0056
?0024:
; 93.	               case AP_MSG_STANDBY:
; 94.	                    break;
?0025:
; 95.	               case AP_KEY_NEXT | AP_KEY_LONG:
; 96.	                   if(PlayStatus==PlaySta)
	LD	A,(PlayStatus)
	DEC	A
	DEC	A
	JP	NZ,?0056
?0026:
; 97.	                   {
; 98.	                       AmvDecSetCMD(MC_STEP,4);
	LD	BC,4
	LD	E,7
	CALL	LWRD ?0130
; 99.	                       PlayStatus=FFPlaySta;
	LD	A,3
	JP	LWRD ?0122
?0027:
; 100.	                   }
; 101.	                   break;
?0028:
; 102.	               case AP_KEY_PREV | AP_KEY_LONG:
; 103.	                   if(PlayStatus==PlaySta)
	LD	A,(PlayStatus)
	DEC	A
	DEC	A
	JP	NZ,?0056
?0029:
; 104.	                   {
; 105.	                       AmvDecSetCMD(MC_STEP,-4);
	LD	BC,65532
	LD	E,7
	CALL	LWRD ?0130
; 106.	                       PlayStatus=FBPlaySta;
	LD	A,4
	JR	?0122
?0030:
; 107.	                   }
; 108.	                   break;
?0031:
; 109.	               case AP_KEY_PREV|AP_KEY_UP:
; 110.	                       if(PlayStatus==FBPlaySta)
	LD	A,(PlayStatus)
	CP	4
	JR	Z,?0124
?0032:
; 111.	                       {
; 112.	                           PlayStatus=PlaySta;
; 113.	                           AmvDecSetCMD(MC_PLAY,0);
?0033:
; 114.	                   }
; 115.	                   else if(PlayStatus==PlaySta)
	DEC	A
	DEC	A
	JP	NZ,?0056
?0035:
; 116.	                   {
; 117.	                       PlayStatus=PrevPlaySta;
	LD	A,6
	LD	(PlayStatus),A
; 118.	                       AmvDecSetCMD(MC_STOP,0);
	LD	BC,0
	LD	E,A
	JR	?0115
?0036:
?0034:
; 119.	                   }
; 120.	
; 121.	                       break;
?0037:
; 122.	               case AP_KEY_NEXT|AP_KEY_UP:
; 123.	                      if(PlayStatus==FFPlaySta)
	LD	A,(PlayStatus)
	CP	3
	JR	NZ,?0039
?0038:
; 124.	                       {
; 125.	                           PlayStatus=PlaySta;
?0124:
	LD	A,2
	LD	(PlayStatus),A
; 126.	                           AmvDecSetCMD(MC_PLAY,0);
	LD	BC,0
	LD	E,4
	JR	?0115
?0039:
; 127.	                   }
; 128.	                   else if(PlayStatus==PlaySta)
	DEC	A
	DEC	A
	JR	NZ,?0056
?0041:
; 129.	                   {
; 130.	                       PlayStatus=NextPlaySta;
	LD	A,5
	LD	(PlayStatus),A
; 131.	                       AmvDecSetCMD(MC_STOP,0);
	LD	BC,0
	LD	E,6
?0115:
	CALL	LWRD ?0130
?0042:
?0040:
; 132.	                   }
; 133.	
; 134.	                       break;
	JR	?0056
?0043:
; 135.	               case AP_KEY_PLAY | AP_KEY_UP:
; 136.	                  AmvDecSetCMD(MC_STOP,0);                  
	CALL	LWRD ?0131
; 137.	                  PlayStatus=StopSta;
	XOR	A
	LD	(PlayStatus),A
; 138.	                  g_result=0;
	LD	L,A
	LD	H,A
	LD	(g_result),HL
; 139.	                  break;
	JR	?0056
?0044:
; 140.	              case AP_MSG_RTC:
; 141.	                    if(g_comval.EarProtect_flag)
	LD	A,(g_comval+24)
	OR	A
	JR	Z,?0046
?0045:
; 142.	                  {
; 143.	                         g_amv_vars.volume = input8(0x87)&0x1f;
	IN	A,(135)
	AND	31
	LD	(g_amv_vars+2),A
?0046:
; 144.	                  }
; 145.	                  if(g_amv_vars.repeat_mode==Intro)
	LD	A,(g_amv_vars+3)
	CP	6
	JR	NZ,?0056
?0047:
; 146.	                  {
; 147.	                      g_introCNT++;
	LD	HL,g_introCNT
	INC	(HL)
; 148.	                      if(g_introCNT>=20)
	LD	A,(g_introCNT)
	CP	20
	JR	C,?0056
?0049:
; 149.	                      {
; 150.	                       AmvDecSetCMD(MC_STOP,0);
	CALL	LWRD ?0131
; 151.	                       PlayStatus=NextPlaySta;
	LD	A,5
?0122:
	LD	(PlayStatus),A
?0050:
?0048:
; 152.	                      }
; 153.	                  }
; 154.	                  break;
	JR	?0056
?0051:
; 155.	               default:
; 156.	                    key = ap_handle_hotkey( key);
	CALL	LWRD ap_handle_hotkey
	LD	HL,0
	ADD	HL,SP
	LD	(HL),A
; 157.	                    if(key == RESULT_REDRAW)  ;       // 不响应锁键
	CP	50
	JR	Z,?0056
?0052:
?0053:
; 158.	                    else if(key != 0)
	XOR	A
	OR	(HL)
	JR	Z,?0056
?0055:
; 159.	                     {
; 160.	                        PlayStatus=HotkeyPlaysta;
	LD	A,7
	LD	(PlayStatus),A
; 161.	                        AmvDecSetCMD(MC_STOP,0);
	CALL	LWRD ?0131
; 162.	                        g_result=key;
	LD	HL,0
	ADD	HL,SP
	LD	C,(HL)
	LD	B,0
	LD	(g_result),BC
?0056:
?0054:
?0017:
; 163.	                     }
; 164.	               }
; 165.	               output8(0x27,input8(0x27)&0xdf);   //关RTC中断
	IN	A,(39)
	RES	5,A
	OUT	(39),A
; 166.	               tmp=AmvDecModPolling();
	LD	A,BYTE3 AmvDecModPolling
	LD	HL,LWRD AmvDecModPolling
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	LD	HL,5
	ADD	HL,SP
	POP	BC
	LD	(HL),C
; 167.	               output8(0x27,input8(0x27)|0x20);   //关RTC中断               
	IN	A,(39)
	SET	5,A
	OUT	(39),A
; 168.	               if(tmp==2)
	LD	B,C
	DEC	B
	DEC	B
	JR	NZ,?0058
?0057:
; 169.	               {
; 170.	                  int i;
; 171.	                  for(i=0;i<1000;i++);             //等待检测卡的状态  zxs modify  2006.02.17
	LD	IX,0
?0060:
	LD	BC,33768
	PUSH	IX
	POP	HL
	LD	A,128
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	NC,?0059
?0061:
	INC	IX
	JR	?0060
?0059:
; 172.	                  //output8(0x27,input8(0x27)|0x40);
; 173.	                  output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 174.	                  if ( (g_amv_vars.location.disk == 'H')
; 175.	                     &&(DRV_DetectUD(1)!= 0x20))
	LD	A,(g_amv_vars+5)
	CP	72
	JR	NZ,?0064
	LD	E,1
	CALL	LWRD DRV_DetectUD
	CP	32
	JR	Z,?0064
?0066:
?0065:
?0063:
; 176.	                  {
; 177.	                    AmvDecSetCMD(MC_STOP,0);
	CALL	LWRD ?0131
; 178.	                    FS_FClose(fp);
	LD	DE,(fp)
	CALL	LWRD FS_FClose
; 179.	                    g_amv_vars.location.disk = 'C';
	LD	A,67
	LD	(g_amv_vars+5),A
; 180.	                    //DisplayErrMsg(CARDPULL);//显示卡拔出
; 181.	                    DisablePA();
	CALL	LWRD DisablePA
; 182.	                    return RESULT_UI_STOP2;
	LD	HL,103
; 183.	                  }
	JP	LWRD ?0080
?0064:
; 184.	
; 185.	                   FS_FClose(fp);
	LD	DE,(fp)
	CALL	LWRD FS_FClose
; 186.	                   output8(0x27,input8(0x27)&0xfe);            //关Dsp中断 防止花屏  zxs add
	IN	A,(39)
	RES	0,A
	OUT	(39),A
; 187.	                   DisablePA();
	CALL	LWRD DisablePA
; 188.	                   DisplayErrMsg(MFMTERR);//显示格式错
	LD	DE,538
	LD	A,BYTE3 DisplayErrMsg
	LD	HL,LWRD DisplayErrMsg
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 189.	                   return NULL;
	LD	HL,0
; 190.	               }
	JR	?0080
?0058:
; 191.	               else if(tmp==-1)
	LD	B,(HL)
	INC	B
	JP	NZ,?0003
?0067:
; 192.	               {
; 193.	                  // output8(0x27,input8(0x27)|0x40);
; 194.	                   FS_FClose(fp);
	LD	DE,(fp)
	CALL	LWRD FS_FClose
; 195.	                   switch(PlayStatus)
	LD	A,(PlayStatus)

⌨️ 快捷键说明

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