2,7 → 2,7 |
; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; Compile with FASM |
; Version 0.3.5: Oct 5, 2018 |
; Version 0.3.6: Oct 9, 2018 |
|
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage |
; All rights reserved. |
53,6 → 53,13 |
jne @f |
mcall -1 |
@@: |
;ðåæèì æåñòà ïî ãîðÿ÷åé êëàâèøå? |
cmp byte[mode], 3 ;ïîäïèñûâàåìñÿ íà èíòåðåñíûå íàì ñîáûòèÿ â çàâèñèìîñòè îò ðåæèìà ðàáîòû |
jne @f |
mov ebx, 00000100000000000000000000100010b ;åñëè äà, òî ïîäïèñûâàåìñÿ íà êëàâèøè |
mcall 40 |
jmp init03 |
@@: |
;ðåæèì àêòèâàöèè ãîðÿ÷åé êëàâèøåé? |
cmp byte[mode], 2 ;ïîäïèñûâàåìñÿ íà èíòåðåñíûå íàì ñîáûòèÿ â çàâèñèìîñòè îò ðåæèìà ðàáîòû |
jne @f |
110,8 → 117,24 |
|
cmp ah, byte[keyActivate] ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà |
jne @f |
|
;for mode 3 [ |
cmp byte[keyState], 1 |
je hotkey.e |
|
push eax ebx |
mcall 37, 0 ;çàïîìèíàåì òåêóùèå(íà÷àëüíûå) êîîðäèíàòû ìûøè |
;mov dword[o.x], eax |
mov word[o.y], ax |
shr eax, 16 |
mov word[o.x], ax |
pop ebx eax |
|
mov byte[keyState], 1 |
mov byte[state], UNLOCKd |
.e: |
;] |
;mov byte[state], UNLOCKd |
jmp hotkey.end |
@@: |
push edx |
127,7 → 150,7 |
@@: |
pop edx |
.end: |
jmp mode02 |
jmp dword[backAdr] |
|
|
init01: |
449,10 → 472,165 |
ret |
|
|
;MODE 3 |
init03: |
mov dword[radius2], 100; 10*10 |
mov dword[backAdr], mode03 |
call setHotKey |
mode03: |
mcall 10 |
cmp eax, 2 ;îáðàáîòêà íàæàòèÿ êëàâèøè |
je hotkey |
|
;cmp byte[keyState], 0 |
;je mode03 |
cmp eax, 6 ;îáðàáîòêà ïåðåìåùåíèé è íàæàòèÿ ìûøè |
je mouse03 |
|
jmp mode03 |
|
mouse03: |
cmp byte[keyState], 0 ;åñëè êëàâèøà íå çàæàòà, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû |
je mouse03.updateCoord |
|
cmp byte[state], LOCKd ;åñëè óãîë çàáëîêèðîâàí, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû |
je mouse03.updateCoord |
|
call checkPointInCircle ;èíà÷å åñëè ïðåîäîëåëè ðàäèóñ àêòèâàöèè, òî âûçûâàåì äåéñòâèå íóæíîãî óãëà |
jmp @f |
.updateCoord: |
push eax ebx |
mcall 37, 0 ;çàïîìèíàåì òåêóùèå(íà÷àëüíûå) êîîðäèíàòû ìûøè |
;mov dword[o.x], eax |
mov word[o.y], ax |
shr eax, 16 |
mov word[o.x], ax |
pop ebx eax |
@@: |
jmp dword[backAdr] |
|
|
radius2 dd 0 ;êâàäðàò ðàäèóñà äëÿ mode 3 |
o: ;êîîðäèíàòû íà÷àëüíîé è òåêóùåé òî÷êè |
.x: dw 0 |
.y: dw 0 |
.cx: dw 0 |
.cy: dw 0 |
|
;ïðîâåðêà âûõîäà çà ïðåäåëû êðóãà |
; sqrt( (x2-x1)^2 + (y2-y1)^2 ) <= radius |
; (x2-x1)^2 + (y2-y1)^2 <= radius^2 |
checkPointInCircle: |
push eax ebx ecx edx |
mcall 37, 0 ;ïîëó÷àåì òåêóùèå êîîðäèíàòû ìûøè |
;mov dword[o.cx], eax |
mov word[o.cy], ax |
shr eax, 16 |
mov word[o.cx], ax |
|
xor eax, eax |
xor edx, edx |
mov ax, word[o.x] |
mov dx, word[o.cx] |
cmp dx, ax |
jae @f |
sub ax, dx |
mov dx, ax |
jmp .xend |
@@: |
sub dx, ax |
.xend: |
mov eax, edx |
mul dx |
|
mov ebx, eax |
|
xor eax, eax |
xor edx, edx |
mov ax, word[o.y] |
mov dx, word[o.cy] |
cmp dx, ax |
jae @f |
sub ax, dx |
mov dx, ax |
jmp .yend |
@@: |
sub dx, ax |
.yend: |
mov eax, edx |
mul dx |
|
add ebx, eax |
|
cmp ebx, dword[radius2] |
jbe @f |
call activateCorner ;èíà÷å àêòèâèðóåì íóæíûé óãîë |
@@: |
pop edx ecx ebx eax |
ret |
|
;âûÿñíèòü â ñòîðîíó êàêîãî óãëà óøëè è àêòèâèðîâàòü åãî |
activateCorner: |
push eax ecx |
xor eax, eax |
|
mov ax, word[o.cx] |
cmp ax, word[o.x] |
je activateCorner.end ;åñëè êîîðäèíàòà ðàâíà, òî âûõîäèì (òàêîãî áûòü íå äîëæíî) |
ja activateCorner.right |
|
;èíà÷å ëåâàÿ ñòîðîíà |
mov ax, word[o.cy] |
cmp ax, word[o.y] |
je activateCorner.end ;åñëè êîîðäèíàòà ðàâíà, òî âûõîäèì (òàêîãî áûòü íå äîëæíî) |
jb activateCorner.leftup |
|
;èíà÷å ëåâûé íèæíèé óãîë |
mov ecx, 1 |
call run_command |
mov byte[keyState], 0 |
mov byte[state], LOCKd |
jmp activateCorner.end |
|
.leftup: |
;ëåâûé âåðõíèé óãîë |
mov ecx, 0 |
call run_command |
mov byte[keyState], 0 |
mov byte[state], LOCKd |
jmp activateCorner.end |
|
.right: ;ïðàâàÿ ñòîðîíà ýêðàíà |
mov ax, word[o.cy] |
cmp ax, word[o.y] |
je activateCorner.end ;åñëè êîîðäèíàòà ðàâíà, òî âûõîäèì (òàêîãî áûòü íå äîëæíî) |
jb activateCorner.rightup |
|
;èíà÷å ïðàâûé íèæíèé óãîë |
mov ecx, 3 |
call run_command |
mov byte[keyState], 0 |
mov byte[state], LOCKd |
jmp activateCorner.end |
|
.rightup: |
;ïðàâûé âåðõíèé óãîë |
mov ecx, 2 |
call run_command |
mov byte[keyState], 0 |
mov byte[state], LOCKd |
jmp activateCorner.end |
|
.end: |
pop ecx eax |
ret |
|
|
|
keyActivate db 41 ;16 ;'Q' ;êëàâèøà àêòèâàöèè |
keyState db 0 ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà |
|
backAdr rd 1 ;dd 0 ; àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè |
backAdr rd 1 ;àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè |
|
;slotMax dd 0 |
;selfPID dd 0 |
463,8 → 641,8 |
|
;ñòðóêòóðêà äàííûõ äëÿ õðàíåíèÿ ïàðàìåòðîâ ýêðàíà |
screen: |
.width rw 1 ;dw 0 |
.height rw 1 ;dw 0 |
.width rw 1 |
.height rw 1 |
|
state: rb 1 ;ñîñòîÿíèå: 0=unlock, 1=lock |
mode: rb 1 ;ðåæèì ðàáîòû ïðèëîæåíèÿ: 0=íå ðàáîòàåò, 1=êëàññè÷åñêèé, 2=ïî ãîðÿ÷åé êëàâèøå |