mirror of
https://github.com/mi57730/a2d.git
synced 2025-02-08 13:30:31 +00:00
mouse scaling
This commit is contained in:
parent
9d67360cba
commit
cf0fe83d6f
103
desktop/mgtk.s
103
desktop/mgtk.s
@ -3870,8 +3870,8 @@ mouse_x: .word 0
|
|||||||
mouse_y: .word 0
|
mouse_y: .word 0
|
||||||
mouse_status: .byte 0
|
mouse_status: .byte 0
|
||||||
|
|
||||||
L5FFD: .byte $00
|
mouse_scale_x: .byte $00
|
||||||
L5FFE: .byte $00
|
mouse_scale_y: .byte $00
|
||||||
|
|
||||||
mouse_hooked_flag: ; High bit set if mouse is "hooked", and calls
|
mouse_hooked_flag: ; High bit set if mouse is "hooked", and calls
|
||||||
.byte 0 ; bypassed; never appears to be set.
|
.byte 0 ; bypassed; never appears to be set.
|
||||||
@ -4214,7 +4214,7 @@ L6293: lda mouse_x,x
|
|||||||
jsr update_cursor
|
jsr update_cursor
|
||||||
L629F: bit no_mouse_flag
|
L629F: bit no_mouse_flag
|
||||||
bmi L62A7
|
bmi L62A7
|
||||||
jsr L62BA
|
jsr read_mouse_pos
|
||||||
L62A7: bit no_mouse_flag
|
L62A7: bit no_mouse_flag
|
||||||
bpl L62B1
|
bpl L62B1
|
||||||
lda #$00
|
lda #$00
|
||||||
@ -4224,10 +4224,14 @@ L62B1: lda kbd_mouse_state
|
|||||||
jsr L7EF5
|
jsr L7EF5
|
||||||
rts4: rts
|
rts4: rts
|
||||||
|
|
||||||
L62BA: ldy #READMOUSE
|
;;; ============================================================
|
||||||
|
|
||||||
|
.proc read_mouse_pos
|
||||||
|
ldy #READMOUSE
|
||||||
jsr call_mouse
|
jsr call_mouse
|
||||||
bit mouse_hooked_flag
|
bit mouse_hooked_flag
|
||||||
bmi L62D9
|
bmi do_scale_x
|
||||||
|
|
||||||
ldx mouse_firmware_hi
|
ldx mouse_firmware_hi
|
||||||
lda MOUSE_X_LO,x
|
lda MOUSE_X_LO,x
|
||||||
sta mouse_x
|
sta mouse_x
|
||||||
@ -4235,28 +4239,37 @@ L62BA: ldy #READMOUSE
|
|||||||
sta mouse_x+1
|
sta mouse_x+1
|
||||||
lda MOUSE_Y_LO,x
|
lda MOUSE_Y_LO,x
|
||||||
sta mouse_y
|
sta mouse_y
|
||||||
L62D9: ldy L5FFD
|
|
||||||
beq L62EF
|
;; Scale X
|
||||||
L62DE: lda mouse_x
|
do_scale_x:
|
||||||
|
ldy mouse_scale_x
|
||||||
|
beq do_scale_y
|
||||||
|
: lda mouse_x
|
||||||
asl a
|
asl a
|
||||||
sta mouse_x
|
sta mouse_x
|
||||||
lda mouse_x+1
|
lda mouse_x+1
|
||||||
rol a
|
rol a
|
||||||
sta mouse_x+1
|
sta mouse_x+1
|
||||||
dey
|
dey
|
||||||
bne L62DE
|
bne :-
|
||||||
L62EF: ldy L5FFE
|
|
||||||
beq L62FE
|
;; Scale Y
|
||||||
|
do_scale_y:
|
||||||
|
ldy mouse_scale_y
|
||||||
|
beq done_scaling
|
||||||
lda mouse_y
|
lda mouse_y
|
||||||
L62F7: asl a
|
: asl a
|
||||||
dey
|
dey
|
||||||
bne L62F7
|
bne :-
|
||||||
sta mouse_y
|
sta mouse_y
|
||||||
L62FE: bit mouse_hooked_flag
|
|
||||||
bmi L6309
|
done_scaling:
|
||||||
|
bit mouse_hooked_flag
|
||||||
|
bmi done
|
||||||
lda MOUSE_STATUS,x
|
lda MOUSE_STATUS,x
|
||||||
sta mouse_status
|
sta mouse_status
|
||||||
L6309: rts
|
done: rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
;;; GetCursorAddr
|
;;; GetCursorAddr
|
||||||
@ -4359,10 +4372,16 @@ L63AC: txa
|
|||||||
sta menu_item_y_table,y
|
sta menu_item_y_table,y
|
||||||
cpy #$0E
|
cpy #$0E
|
||||||
bcc L63AC
|
bcc L63AC
|
||||||
copy16 #$0001, L5FFD
|
lda #1
|
||||||
|
sta mouse_scale_x
|
||||||
|
lda #0
|
||||||
|
sta mouse_scale_y
|
||||||
bit L6336
|
bit L6336
|
||||||
bvs L63D1
|
bvs L63D1
|
||||||
copy16 #$0102, L5FFD
|
lda #2
|
||||||
|
sta mouse_scale_x
|
||||||
|
lda #1
|
||||||
|
sta mouse_scale_y
|
||||||
L63D1: ldx L6338
|
L63D1: ldx L6338
|
||||||
jsr find_mouse
|
jsr find_mouse
|
||||||
bit L6338
|
bit L6338
|
||||||
@ -7812,8 +7831,9 @@ menu_index:
|
|||||||
menu_item_index:
|
menu_item_index:
|
||||||
.byte 0
|
.byte 0
|
||||||
|
|
||||||
other_mouse_x: .word 0
|
saved_mouse_pos:
|
||||||
other_mouse_y: .byte 0
|
saved_mouse_x: .word 0
|
||||||
|
saved_mouse_y: .byte 0
|
||||||
|
|
||||||
L7D7F: .byte $00
|
L7D7F: .byte $00
|
||||||
L7D80: .byte $00
|
L7D80: .byte $00
|
||||||
@ -7879,23 +7899,26 @@ not_hooked:
|
|||||||
|
|
||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
|
|
||||||
L7E5D: ldx other_mouse_x
|
.proc restore_mouse_pos
|
||||||
ldy other_mouse_x+1
|
ldx saved_mouse_x
|
||||||
lda other_mouse_y
|
ldy saved_mouse_x+1
|
||||||
|
lda saved_mouse_y
|
||||||
jmp set_mouse_pos
|
jmp set_mouse_pos
|
||||||
|
.endproc
|
||||||
|
|
||||||
set_mouse_pos_from_kbd_mouse:
|
.proc set_mouse_pos_from_kbd_mouse
|
||||||
ldx kbd_mouse_x
|
ldx kbd_mouse_x
|
||||||
ldy kbd_mouse_x+1
|
ldy kbd_mouse_x+1
|
||||||
lda kbd_mouse_y
|
lda kbd_mouse_y
|
||||||
jmp set_mouse_pos
|
jmp set_mouse_pos
|
||||||
|
.endproc
|
||||||
|
|
||||||
L7E75: bcc L7E7D
|
L7E75: bcc L7E7D
|
||||||
ldx L5FFD
|
ldx mouse_scale_x
|
||||||
bne L7E82
|
bne L7E82
|
||||||
L7E7C: rts
|
L7E7C: rts
|
||||||
|
|
||||||
L7E7D: ldx L5FFE
|
L7E7D: ldx mouse_scale_y
|
||||||
beq L7E7C
|
beq L7E7C
|
||||||
L7E82: pha
|
L7E82: pha
|
||||||
tya
|
tya
|
||||||
@ -7917,13 +7940,15 @@ L7E8E: lda kbd_mouse_x,x
|
|||||||
L7E98: jsr L7E8C
|
L7E98: jsr L7E8C
|
||||||
jmp set_mouse_pos_from_kbd_mouse
|
jmp set_mouse_pos_from_kbd_mouse
|
||||||
|
|
||||||
L7E9E: jsr L62BA
|
.proc save_mouse_pos
|
||||||
ldx #$02
|
jsr read_mouse_pos
|
||||||
L7EA3: lda mouse_x,x
|
ldx #2
|
||||||
sta other_mouse_x,x
|
: lda mouse_x,x
|
||||||
|
sta saved_mouse_pos,x
|
||||||
dex
|
dex
|
||||||
bpl L7EA3
|
bpl :-
|
||||||
rts
|
rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
L7EAD: jsr stash_addr
|
L7EAD: jsr stash_addr
|
||||||
lda L7F2E
|
lda L7F2E
|
||||||
@ -7936,7 +7961,7 @@ L7EAD: jsr stash_addr
|
|||||||
sta kbd_mouse_state
|
sta kbd_mouse_state
|
||||||
lda #$40
|
lda #$40
|
||||||
sta mouse_status
|
sta mouse_status
|
||||||
jmp L7E5D
|
jmp restore_mouse_pos
|
||||||
|
|
||||||
L7ECD: lda #$00
|
L7ECD: lda #$00
|
||||||
sta L7D81
|
sta L7D81
|
||||||
@ -8091,7 +8116,7 @@ L7FDE: jmp L7E8C
|
|||||||
|
|
||||||
L7FE1: php
|
L7FE1: php
|
||||||
sei
|
sei
|
||||||
jsr L7E9E
|
jsr save_mouse_pos
|
||||||
lda #$01
|
lda #$01
|
||||||
sta kbd_mouse_state
|
sta kbd_mouse_state
|
||||||
jsr L800F
|
jsr L800F
|
||||||
@ -8292,7 +8317,7 @@ L816F: sta L6BD9
|
|||||||
|
|
||||||
L817C: php
|
L817C: php
|
||||||
sei
|
sei
|
||||||
jsr L7E9E
|
jsr save_mouse_pos
|
||||||
lda #$80
|
lda #$80
|
||||||
sta mouse_status
|
sta mouse_status
|
||||||
jsr L70B7
|
jsr L70B7
|
||||||
@ -8648,12 +8673,16 @@ L840D: sec
|
|||||||
;;; clamp is to fractions of screen (0 = full, 1 = 1/2, 2 = 1/4, 3 = 1/8) (why???)
|
;;; clamp is to fractions of screen (0 = full, 1 = 1/2, 2 = 1/4, 3 = 1/8) (why???)
|
||||||
|
|
||||||
.proc ScaleMouseImpl
|
.proc ScaleMouseImpl
|
||||||
copy16 $82, L5FFD
|
params := $82
|
||||||
|
lda params+0
|
||||||
|
sta mouse_scale_x
|
||||||
|
lda params+1
|
||||||
|
sta mouse_scale_y
|
||||||
|
|
||||||
L8431: bit no_mouse_flag ; called after INITMOUSE
|
L8431: bit no_mouse_flag ; called after INITMOUSE
|
||||||
bmi end
|
bmi end
|
||||||
|
|
||||||
lda L5FFD
|
lda mouse_scale_x
|
||||||
asl a
|
asl a
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
@ -8681,7 +8710,7 @@ L8431: bit no_mouse_flag ; called after INITMOUSE
|
|||||||
ldy #CLAMPMOUSE
|
ldy #CLAMPMOUSE
|
||||||
jsr call_mouse
|
jsr call_mouse
|
||||||
|
|
||||||
lda L5FFE
|
lda mouse_scale_y
|
||||||
asl a
|
asl a
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user