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