📄 ui_menu.s01
字号:
LD E,(HL)
PUSH DE
LD C,10
LD DE,108
CALL LWRD ?0063
POP AF
; 114. }
; 115. SetPenColor(Color_WHITE_def);
CALL LWRD ?0065
; 116. ResShowMultiString(menu->title[active], menu->string_id,
; 117. menu_str_x_def, menu_pos_menu[i]-3);
LD HL,menu_pos_menu
LD C,(IX-12)
LD B,(IX-11)
ADD HL,BC
LD A,(HL)
ADD A,253
LD C,A
PUSH BC
LD C,32
PUSH BC
LD C,(IY+9)
LD L,(IY+4)
LD H,(IY+5)
PUSH HL
LD L,(IX-14)
LD H,(IX-13)
ADD HL,HL
EX DE,HL
POP HL
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 118. SetPenColor(Color_WHITE_def);
CALL LWRD ?0065
; 119. }
; 120. else
JR ?0015
?0014:
; 121. {
; 122. ResShowPic(MENUARR1+i, menu_ptr_x_def, menu_pos_menu[i]);
LD E,(HL)
PUSH DE
LD C,10
LD HL,94
LD E,(IX-12)
LD D,B
ADD HL,DE
EX DE,HL
CALL LWRD ?0063
POP AF
; 123. ResShowMultiString(menu->title[n+i], menu->string_id,
; 124. menu_str_x_def, menu_pos_menu[i]-3);
LD HL,menu_pos_menu
LD C,(IX-12)
LD B,(IX-11)
ADD HL,BC
LD A,(HL)
ADD A,253
LD E,A
PUSH DE
LD E,32
PUSH DE
LD C,(IY+9)
LD L,(IY+4)
LD H,(IY+5)
PUSH HL
LD L,(IX-12)
LD H,B
LD E,(IX-10)
LD D,(IX-9)
ADD HL,DE
ADD HL,HL
EX DE,HL
POP HL
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
?0015:
INC (IX-12)
JP NZ,?0008
INC (IX-11)
JP LWRD ?0008
?0007:
; 125. }
; 126. }
; 127.
; 128. need_draw = FALSE;
LD (IX-4),0
?0006:
; 129. }//need draw
; 130.
; 131. if(value_changed)
XOR A
OR (IX-2)
JR Z,?0017
?0016:
; 132. {
; 133. show_active_menu(menu,old_active,active);
LD L,(IX-14)
LD H,(IX-13)
PUSH HL
LD C,(IX-6)
LD B,(IX-5)
PUSH IY
POP DE
LD A,BYTE3 show_active_menu
LD HL,LWRD show_active_menu
CALL LWRD ?BANK_CALL_DIRECT_L08
POP HL
; 134. value_changed=FALSE;
LD (IX-2),0
?0017:
; 135. }
; 136. key = ap_get_message();
CALL LWRD ap_get_message
; 137. //handle message
; 138. switch( key)
LD E,A
CALL LWRD ?C_V_SWITCH_L06
DEFW 7
DEFB 5
DEFB 6
DEFB 30
DEFB 33
DEFB 48
DEFB 69
DEFB 70
DEFW ?0048
DEFW ?0019
DEFW ?0031
DEFW ?0044
DEFW ?0060
DEFW ?0045
DEFW ?0019
DEFW ?0031
?0019:
; 139. {
; 140. case AP_KEY_NEXT:
; 141. case AP_KEY_NEXT | AP_KEY_HOLD:
; 142. if(active < menu->total - 1)
LD C,(IY+0)
LD B,(IY+1)
DEC BC
LD L,(IX-14)
LD H,(IX-13)
OR 128
SBC HL,BC
JP PO,?0057
XOR H
?0057:
JP P,?0021
?0020:
; 143. {
; 144. active++;
INC (IX-14)
JR NZ,?0058
INC (IX-13)
?0058:
; 145. if(active/MENU_NUM_ONE_PAGE==cur_group)
LD BC,6
LD E,(IX-14)
LD D,(IX-13)
CALL LWRD ?SS_DIV_L02
LD L,(IX-8)
LD H,(IX-7)
AND A
SBC HL,DE
JR NZ,?0061
?0022:
; 146. {
; 147. old_active=active-1;
LD L,(IX-14)
LD H,(IX-13)
DEC HL
LD (IX-6),L
LD (IX-5),H
; 148. value_changed=TRUE;
LD (IX-2),1
; 149. }
; 150. else
JR ?0025
?0023:
; 151. need_draw = TRUE;
?0024:
; 152. }
; 153. else
?0021:
; 154. {
; 155. active = 0;
; 156. need_draw = TRUE;
XOR A
LD (IX-14),A
LD (IX-13),A
?0061:
LD (IX-4),1
?0025:
; 157. }
; 158. if(callback != NULL)
LD A,(IX+10)
OR (IX+11)
OR (IX+12)
JR Z,?0027
?0026:
; 159. callback(active);
LD E,(IX-14)
LD D,(IX-13)
LD A,(IX+12)
LD L,(IX+10)
LD H,(IX+11)
CALL LWRD ?BANK_CALL_DIRECT_L08
?0027:
?0029:
; 160. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JP Z,?0003
?0030:
; 161. break;
JR ?0027
?0028:
?0031:
; 162.
; 163.
; 164.
; 165. case AP_KEY_PREV:
; 166. case AP_KEY_PREV | AP_KEY_HOLD:
; 167. if(active > 0)
LD C,(IX-14)
LD B,(IX-13)
LD HL,0
OR 128
SBC HL,BC
JP PO,?0059
XOR H
?0059:
JP P,?0033
?0032:
; 168. {
; 169. active--;
LD L,C
LD H,B
DEC HL
LD (IX-14),L
LD (IX-13),H
; 170. if(active/MENU_NUM_ONE_PAGE==cur_group)
LD BC,6
EX DE,HL
CALL LWRD ?SS_DIV_L02
LD L,(IX-8)
LD H,(IX-7)
AND A
SBC HL,DE
JR NZ,?0062
?0034:
; 171. {
; 172. old_active=active+1;
LD L,(IX-14)
LD H,(IX-13)
INC HL
LD (IX-6),L
LD (IX-5),H
; 173. value_changed=TRUE;
LD (IX-2),1
; 174. }
; 175. else
JR ?0037
?0035:
; 176. need_draw = TRUE;
?0036:
; 177. }
; 178. else
?0033:
; 179. {
; 180. active = menu->total - 1;
LD L,(IY+0)
LD H,(IY+1)
DEC HL
LD (IX-14),L
LD (IX-13),H
; 181. need_draw = TRUE;
?0062:
LD (IX-4),1
?0037:
; 182. }
; 183. if(callback != NULL)
LD A,(IX+10)
OR (IX+11)
OR (IX+12)
JR Z,?0039
?0038:
; 184. callback(active);
LD E,(IX-14)
LD D,(IX-13)
LD A,(IX+12)
LD L,(IX+10)
LD H,(IX+11)
CALL LWRD ?BANK_CALL_DIRECT_L08
?0039:
?0041:
; 185. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JP Z,?0003
?0042:
; 186. break;
JR ?0039
?0040:
?0043:
; 187.
; 188. case AP_KEY_PLAY | AP_KEY_UP: //取消退出
; 189. // SetPenColor(oldDC_sav.PenColor);
; 190. //SetBackgdColor(oldDC_sav.BackgdColor);
; 191. //SetTextOutMode(0); //设字体不透明
; 192. return RESULT_IGNORE;
; 193.
; 194. case AP_KEY_MODE | AP_KEY_UP: //确认退出
?0044:
; 195. menu->active = active;
LD L,(IX-14)
LD (IY+2),L
LD H,(IX-13)
LD (IY+3),H
; 196. // SetPenColor(oldDC_sav.PenColor);
; 197. // SetBackgdColor(oldDC_sav.BackgdColor);
; 198. // SetTextOutMode(0); //设字体不透明
; 199. return 0;
LD HL,0
; 200.
; 201. case AP_MSG_WAIT_TIMEOUT:
JR ?0054
?0045:
; 202. if(ui_auto_select)
LD A,(ui_auto_select)
OR A
JP Z,?0003
?0046:
; 203. {
; 204. //SetPenColor(oldDC_sav.PenColor);
; 205. // SetBackgdColor(oldDC_sav.BackgdColor);
; 206. // SetTextOutMode(0); //设字体不透明
; 207. return RESULT_IGNORE;
?0060:
LD HL,52
; 208. }
JR ?0054
?0047:
; 209. break;
?0048:
; 210.
; 211. default:
; 212. key = ap_handle_hotkey(key);
CALL LWRD ap_handle_hotkey
LD (IX-3),A
; 213. if(key == RESULT_REDRAW) need_draw = TRUE;
CP 50
JR NZ,?0050
?0049:
LD (IX-4),1
; 214. else
JP LWRD ?0003
?0050:
; 215. if(key != 0)
XOR A
OR (IX-3)
JP Z,?0003
?0052:
; 216. {
; 217. // SetPenColor(oldDC_sav.PenColor);
; 218. // SetBackgdColor(oldDC_sav.BackgdColor);
; 219. // SetTextOutMode(0); //设字体不透明
; 220. return key;
LD L,A
LD H,0
; 221. }
?0054:
LD SP,IX
POP IX
POP IY
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0053:
?0051:
?0018:
; 222. }// switch(key)
; 223.
; 224. }//while(1)
; 225. // SetPenColor(oldDC_sav.PenColor);
; 226. // SetBackgdColor(oldDC_sav.BackgdColor);
; 227. }
; 228.
RSEG CONST
menu_pos_menu:
DEFB 'w'
DEFB 'b'
DEFB 'M'
DEFB '8'
DEFB '#'
DEFB 14
menu_bck_pic:
DEFW 106
DEFW 105
DEFW 104
DEFW 103
DEFW 102
DEFW 101
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -