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

📄 ui_slider.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	POP	AF
; 137.	                main_ResShowPic(FMNUM0+file_name[1]-0x30,98,80);
	LD	C,80
	PUSH	BC
	LD	C,98
	LD	DE,(file_name+1)
	CALL	LWRD ?0112
	POP	AF
; 138.	                main_ResShowPic(FMNUM0+file_name[2]-0x30,121,80);
	LD	C,80
	PUSH	BC
	LD	C,121
	LD	DE,(file_name+2)
?0091:
	LD	D,0
?0102:
	LD	HL,9
?0094:
	ADD	HL,DE
	EX	DE,HL
?0108:
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
?0104:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0033:
?0027:
; 139.	            }
; 140.	            need_draw = FALSE;
	LD	(IX-9),0
?0024:
; 141.	        }         
; 142.	                             
; 143.	        //handle message
; 144.	        key = ap_get_message();
	CALL	LWRD ap_get_message
	LD	(IX-12),A
; 145.	        switch( key)
	LD	E,A
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	15
	DEFB	3
	DEFB	4
	DEFB	5
	DEFB	6
	DEFB	30
	DEFB	33
	DEFB	35
	DEFB	36
	DEFB	37
	DEFB	38
	DEFB	48
	DEFB	67
	DEFB	68
	DEFB	69
	DEFB	70
	DEFW	?0052
	DEFW	?0041
	DEFW	?0044
	DEFW	?0041
	DEFW	?0044
	DEFW	?0093
	DEFW	?0047
	DEFW	?0047
	DEFW	?0047
	DEFW	?0047
	DEFW	?0093
	DEFW	?0049
	DEFW	?0035
	DEFW	?0038
	DEFW	?0035
	DEFW	?0038
?0035:
; 146.	        {
; 147.	        case AP_KEY_NEXT:
; 148.	        case AP_KEY_VOLADD:
; 149.	            if((slider->value + slider->step) <= slider->max)
	LD	L,(IY+8)
	LD	H,(IY+9)
	LD	C,(IY+6)
	LD	B,(IY+7)
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	L,(IY+4)
	LD	H,(IY+5)
	OR	128
	SBC	HL,BC
	JP	PO,?0086
	XOR	H
?0086:
	JP	M,?0056
?0036:
; 150.	            {
; 151.	                slider->value += slider->step;
	LD	HL,6
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,(IY+8)
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	ADC	A,(IY+9)
	JR	?0100
; 152.	                value_changed = TRUE;
; 153.	                need_draw = TRUE;
	LD	(IX-10),1
	JR	?0105
?0037:
; 154.	            }
; 155.	            
; 156.	            break;
	JP	LWRD ?0056
?0038:
; 157.	
; 158.	            
; 159.	        case AP_KEY_PREV:
; 160.	        case AP_KEY_VOLSUB:
; 161.	            if((slider->value - slider->step) >= slider->min)
	LD	C,(IY+2)
	LD	B,(IY+3)
	LD	E,(IY+8)
	LD	D,(IY+9)
	LD	L,(IY+6)
	LD	H,(IY+7)
	AND	A
	SBC	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0087
	XOR	H
?0087:
	JP	M,?0056
?0039:
; 162.	            {
; 163.	                slider->value -= slider->step;
	LD	HL,6
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	SUB	(IY+8)
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	SBC	A,(IY+9)
?0100:
	LD	(HL),A
; 164.	                value_changed = TRUE;
; 165.	                need_draw = TRUE;
	LD	(IX-10),1
?0105:
	LD	(IX-9),1
?0040:
; 166.	            }
; 167.	            
; 168.	            break;
	JR	?0056
?0041:
; 169.	
; 170.	        //hold 用来控制加速开关
; 171.	        case AP_KEY_NEXT | AP_KEY_HOLD:
; 172.	        case AP_KEY_VOLADD | AP_KEY_HOLD:
; 173.	            if(hold_state == 0) hold_state = 1;
	XOR	A
	OR	(IX-11)
	JR	NZ,?0056
?0042:
	LD	(IX-11),1
?0043:
; 174.	
; 175.	            break;
	JR	?0056
?0044:
; 176.	
; 177.	
; 178.	        case AP_KEY_PREV | AP_KEY_HOLD:
; 179.	        case AP_KEY_VOLSUB | AP_KEY_HOLD:
; 180.	            if(hold_state == 0) hold_state = 2;
	XOR	A
	OR	(IX-11)
	JR	NZ,?0056
?0045:
	LD	(IX-11),2
?0046:
; 181.	            
; 182.	            break;
	JR	?0056
?0047:
; 183.	            
; 184.	
; 185.	        case AP_KEY_NEXT | AP_KEY_UP:
; 186.	        case AP_KEY_VOLADD | AP_KEY_UP:
; 187.	        case AP_KEY_PREV | AP_KEY_UP:
; 188.	        case AP_KEY_VOLSUB | AP_KEY_UP:
; 189.	            hold_state = 0;
	LD	(IX-11),0
; 190.	            
; 191.	            break;
	JR	?0056
?0048:
; 192.	            
; 193.	            
; 194.	        case AP_KEY_MODE | AP_KEY_UP:
; 195.	        case AP_KEY_PLAY | AP_KEY_UP:
; 196.	            return 0;        //ok and return
	JR	?0093
; 197.	
; 198.	            
; 199.	        case AP_MSG_WAIT_TIMEOUT:
	JR	?0082
?0049:
; 200.	            if(ui_auto_select) return 0;
	LD	A,(ui_auto_select)
	OR	A
	JR	Z,?0056
?0050:
	JR	?0093
; 201.	        
; 202.	            break;
	JR	?0082
?0051:
	JR	?0056
?0052:
; 203.	
; 204.	            
; 205.	        default:
; 206.	            key = ap_handle_hotkey(key);
	CALL	LWRD ap_handle_hotkey
	LD	(IX-12),A
; 207.	            if(key == RESULT_REDRAW) //need_draw = TRUE;
	CP	50
	JR	NZ,?0054
?0053:
; 208.	            {
; 209.	                //直接退出,因为控件不能重画背景
; 210.	                return 0;
?0093:
	LD	HL,0
; 211.	            }
	JR	?0082
?0054:
; 212.	            else if(key != 0) return key;
	XOR	A
	OR	(IX-12)
	JR	Z,?0056
?0055:
	LD	L,A
	LD	H,0
; 213.	        }
?0082:
	LD	SP,IX
	POP	IX
	POP	IY
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0056:
?0034:
; 214.	 
; 215.	
; 216.	        //check if holding
; 217.	        if(hold_state == 1)        //holding up
	LD	B,(IX-11)
	DEC	B
	JR	NZ,?0058
?0057:
; 218.	        {
; 219.	            if((slider->value + slider->step) <= slider->max)
	LD	L,(IY+8)
	LD	H,(IY+9)
	LD	C,(IY+6)
	LD	B,(IY+7)
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	L,(IY+4)
	LD	H,(IY+5)
	OR	128
	SBC	HL,BC
	JP	PO,?0088
	XOR	H
?0088:
	JP	M,?0071
?0059:
; 220.	            {
; 221.	                slider->value += slider->step;
	LD	HL,6
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,(IY+8)
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	ADC	A,(IY+9)
	LD	(HL),A
; 222.	                value_changed = TRUE;
; 223.	                need_draw = TRUE;
	LD	(IX-10),1
	LD	(IX-9),1
?0062:
; 224.	 
; 225.	                while(key != NULL)
	XOR	A
	OR	(IX-12)
	JR	Z,?0077
?0063:
; 226.	                {
; 227.	                    if((key & AP_KEY_UP) != NULL)
	BIT	5,(IX-12)
	JR	Z,?0065
?0064:
; 228.	                        hold_state = 0;
	LD	(IX-11),0
?0065:
; 229.	                    key = ap_get_message();
	CALL	LWRD ap_get_message
	LD	(IX-12),A
; 230.	                }       
; 231.	            }
	JR	?0062
?0061:
	JR	?0077
?0060:
; 232.	            else hold_state = 0;    //disable holding  
	JR	?0071
?0066:
	JR	?0077
?0058:
; 233.	        }
; 234.	        else if(hold_state == 2)    //holding down
	LD	B,(IX-11)
	DEC	B
	DEC	B
	JR	NZ,?0077
?0068:
; 235.	        {
; 236.	            if((slider->value - slider->step) >= slider->min)
	LD	C,(IY+2)
	LD	B,(IY+3)
	LD	E,(IY+8)
	LD	D,(IY+9)
	LD	L,(IY+6)
	LD	H,(IY+7)
	AND	A
	SBC	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0089
	XOR	H
?0089:
	JP	M,?0071
?0070:
; 237.	            {
; 238.	                slider->value -= slider->step;
	LD	HL,6
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	SUB	(IY+8)
	LD	(HL),A
	INC	HL
	LD	A,(HL)
	SBC	A,(IY+9)
	LD	(HL),A
; 239.	                value_changed = TRUE;
; 240.	                need_draw = TRUE;
	LD	(IX-10),1
	LD	(IX-9),1
?0073:
; 241.	 
; 242.	                while(key != NULL)
	XOR	A
	OR	(IX-12)
	JR	Z,?0077
?0074:
; 243.	                { 
; 244.	                    if((key & AP_KEY_UP) != NULL)
	BIT	5,(IX-12)
	JR	Z,?0076
?0075:
; 245.	                        hold_state = 0; 
	LD	(IX-11),0
?0076:
; 246.	                    key = ap_get_message();
	CALL	LWRD ap_get_message
	LD	(IX-12),A
; 247.	                }
; 248.	            }
	JR	?0073
?0072:
	JR	?0077
?0071:
; 249.	            else hold_state = 0;    //disable holding           
	LD	(IX-11),0
?0077:
?0069:
?0067:
; 250.	        }
; 251.	
; 252.	        //handle callback
; 253.	        if(callback != NULL && value_changed)
	LD	A,(IX+10)
	OR	(IX+11)
	OR	(IX+12)
	JP	Z,?0021
	XOR	A
	OR	(IX-10)
	JP	Z,?0021
?0081:
?0080:
?0078:
; 254.	        {
; 255.	            callback(slider->value);
	LD	E,(IY+6)
	LD	D,(IY+7)
	LD	A,(IX+12)
	LD	L,(IX+10)
	LD	H,(IX+11)
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 256.	            value_changed = FALSE;
	LD	(IX-10),0
?0079:
; 257.	        }
; 258.	        
; 259.	    }//while(1)
; 260.	}
	JP	LWRD ?0021
?0112:
	LD	D,0
?0111:
	LD	HL,9
	ADD	HL,DE
	EX	DE,HL
?0110:
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
; 261.	
; 262.	
	RSEG	CONST
?0019:
	DEFB	','
	DEFB	16
	DEFB	'('
	DEFB	16
	END

⌨️ 快捷键说明

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