fox32+fox32rom: Add EVENT_TYPE_MOUSE_RELEASE
This commit is contained in:
parent
3871ae4810
commit
7f830cdceb
|
@ -60,7 +60,8 @@ compare_memory_words: jmp [0xF004600C]
|
||||||
|
|
||||||
; event types
|
; event types
|
||||||
const EVENT_TYPE_MOUSE_CLICK: 0x00000000
|
const EVENT_TYPE_MOUSE_CLICK: 0x00000000
|
||||||
const EVENT_TYPE_MENU_BAR_CLICK: 0x00000001
|
const EVENT_TYPE_MOUSE_RELEASE: 0x00000001
|
||||||
const EVENT_TYPE_MENU_UPDATE: 0x00000002
|
const EVENT_TYPE_MENU_BAR_CLICK: 0x00000002
|
||||||
const EVENT_TYPE_MENU_CLICK: 0x00000003
|
const EVENT_TYPE_MENU_UPDATE: 0x00000003
|
||||||
|
const EVENT_TYPE_MENU_CLICK: 0x00000004
|
||||||
const EVENT_TYPE_EMPTY: 0xFFFFFFFF
|
const EVENT_TYPE_EMPTY: 0xFFFFFFFF
|
||||||
|
|
4
main.asm
4
main.asm
|
@ -77,6 +77,10 @@ event_loop:
|
||||||
cmp r0, EVENT_TYPE_MOUSE_CLICK
|
cmp r0, EVENT_TYPE_MOUSE_CLICK
|
||||||
;ifz call mouse_click_event
|
;ifz call mouse_click_event
|
||||||
|
|
||||||
|
; was the mouse released?
|
||||||
|
cmp r0, EVENT_TYPE_MOUSE_RELEASE
|
||||||
|
;ifz call mouse_release_event
|
||||||
|
|
||||||
; did the user click the menu bar?
|
; did the user click the menu bar?
|
||||||
cmp r0, EVENT_TYPE_MENU_BAR_CLICK
|
cmp r0, EVENT_TYPE_MENU_BAR_CLICK
|
||||||
ifz mov r0, menu_items_root
|
ifz mov r0, menu_items_root
|
||||||
|
|
2
menu.asm
2
menu.asm
|
@ -229,7 +229,7 @@ menu_update_event_no_redraw:
|
||||||
; check the mouse held bit
|
; check the mouse held bit
|
||||||
; this is kinda hacky but it works
|
; this is kinda hacky but it works
|
||||||
call get_mouse_button
|
call get_mouse_button
|
||||||
bts r0, 1
|
bts r0, 2
|
||||||
ifnz jmp menu_update_event_clicked
|
ifnz jmp menu_update_event_clicked
|
||||||
|
|
||||||
jmp menu_update_event_end_add
|
jmp menu_update_event_end_add
|
||||||
|
|
39
mouse.asm
39
mouse.asm
|
@ -49,8 +49,19 @@ mouse_update:
|
||||||
in r3, r2
|
in r3, r2
|
||||||
|
|
||||||
; check click bit
|
; check click bit
|
||||||
|
push r2
|
||||||
|
push r3
|
||||||
bts r3, 0
|
bts r3, 0
|
||||||
ifz jmp mouse_update_end
|
ifnz call mouse_update_clicked
|
||||||
|
pop r3
|
||||||
|
pop r2
|
||||||
|
|
||||||
|
; check release bit
|
||||||
|
bts r3, 1
|
||||||
|
ifnz call mouse_update_released
|
||||||
|
|
||||||
|
jmp mouse_update_end
|
||||||
|
mouse_update_clicked:
|
||||||
; mouse was clicked, clear the click bit
|
; mouse was clicked, clear the click bit
|
||||||
bcl r3, 0
|
bcl r3, 0
|
||||||
out r2, r3
|
out r2, r3
|
||||||
|
@ -65,16 +76,16 @@ mouse_update:
|
||||||
; first check if the menu bar is enabled
|
; first check if the menu bar is enabled
|
||||||
in r3, 0x8000031E ; overlay 30: enable status
|
in r3, 0x8000031E ; overlay 30: enable status
|
||||||
cmp r3, 0
|
cmp r3, 0
|
||||||
ifz jmp mouse_update_no_menu
|
ifz jmp mouse_update_clicked_no_menu
|
||||||
cmp r1, 17
|
cmp r1, 17
|
||||||
ifc jmp mouse_update_menu_was_clicked
|
ifc jmp mouse_update_menu_was_clicked
|
||||||
mouse_update_no_menu:
|
mouse_update_clicked_no_menu:
|
||||||
|
|
||||||
; if a menu is open, don't push a click event
|
; if a menu is open, don't push a click event
|
||||||
; this is hacky as fuck
|
; this is hacky as fuck
|
||||||
in r3, 0x8000031D ; overlay 29: enable status
|
in r3, 0x8000031D ; overlay 29: enable status
|
||||||
cmp r3, 0
|
cmp r3, 0
|
||||||
ifnz jmp mouse_update_end
|
ifnz ret
|
||||||
|
|
||||||
; otherwise, just add a standard mouse click event to the event queue
|
; otherwise, just add a standard mouse click event to the event queue
|
||||||
mov r2, r1 ; copy Y position to event parameter 1
|
mov r2, r1 ; copy Y position to event parameter 1
|
||||||
|
@ -84,9 +95,24 @@ mouse_update_no_menu:
|
||||||
mov r5, 0
|
mov r5, 0
|
||||||
mov r6, 0
|
mov r6, 0
|
||||||
mov r7, 0
|
mov r7, 0
|
||||||
mov r0, EVENT_TYPE_MOUSE_CLICK ; set event type to mouse type
|
mov r0, EVENT_TYPE_MOUSE_CLICK ; set event type to mouse click
|
||||||
call new_event
|
call new_event
|
||||||
jmp mouse_update_end
|
ret
|
||||||
|
mouse_update_released:
|
||||||
|
; mouse was released, clear the release bit
|
||||||
|
bcl r3, 1
|
||||||
|
out r2, r3
|
||||||
|
|
||||||
|
mov r2, r1 ; copy Y position to event parameter 1
|
||||||
|
mov r1, r0 ; copy X position to event parameter 0
|
||||||
|
mov r3, 0
|
||||||
|
mov r4, 0
|
||||||
|
mov r5, 0
|
||||||
|
mov r6, 0
|
||||||
|
mov r7, 0
|
||||||
|
mov r0, EVENT_TYPE_MOUSE_RELEASE ; set event type to mouse release
|
||||||
|
call new_event
|
||||||
|
ret
|
||||||
mouse_update_menu_was_clicked:
|
mouse_update_menu_was_clicked:
|
||||||
mov r2, r1 ; copy Y position to event parameter 1
|
mov r2, r1 ; copy Y position to event parameter 1
|
||||||
mov r1, r0 ; copy X position to event parameter 0
|
mov r1, r0 ; copy X position to event parameter 0
|
||||||
|
@ -97,6 +123,7 @@ mouse_update_menu_was_clicked:
|
||||||
mov r7, 0
|
mov r7, 0
|
||||||
mov r0, EVENT_TYPE_MENU_BAR_CLICK ; set event type to menu bar click type
|
mov r0, EVENT_TYPE_MENU_BAR_CLICK ; set event type to menu bar click type
|
||||||
call new_event
|
call new_event
|
||||||
|
ret
|
||||||
mouse_update_end:
|
mouse_update_end:
|
||||||
pop r7
|
pop r7
|
||||||
pop r6
|
pop r6
|
||||||
|
|
Loading…
Reference in New Issue
Block a user