Rev 2726 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2726 | Rev 6331 | ||
---|---|---|---|
1 | ;------------------------------------------------------------------------------ |
1 | ;------------------------------------------------------------------------------ |
2 | ; Mad Mouse |
2 | ; Mad Mouse |
3 | ;--------------------------------------------------------------------- |
3 | ;--------------------------------------------------------------------- |
4 | ; version: 0.2 |
4 | ; version: 0.2 |
5 | ; last update: 03/06/2012 |
5 | ; last update: 03/06/2012 |
6 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
6 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
7 | ; changes: Some optimizations. |
7 | ; changes: Some optimizations. |
8 | ;--------------------------------------------------------------------- |
8 | ;--------------------------------------------------------------------- |
9 | ; ¢â®à í⮣® 㦠ᮠáâ६®£® ª®¤ : Sourcerer, 23.04.2010 |
9 | ; ¢â®à í⮣® 㦠ᮠáâ६®£® ª®¤ : Sourcerer, 23.04.2010 |
10 | ; popovpa (29.05.2012) |
10 | ; popovpa (29.05.2012) |
11 | ; 1. §¬¥¥¨¥ «®£¨ª¨ à ¡®âë ¯à®£à ¬¬ë. |
11 | ; 1. §¬¥¥¨¥ «®£¨ª¨ à ¡®âë ¯à®£à ¬¬ë. |
12 | ; 2. ®¡ ¢«¥® "¯¥à¥áª ª¨¢ ¨¥" ᢥàåã ¨ ¨§ã :) |
12 | ; 2. ®¡ ¢«¥® "¯¥à¥áª ª¨¢ ¨¥" ᢥàåã ¨ ¨§ã :) |
13 | ; 3. ¯â¨¬¨§ æ¨ï ª®¤ . |
13 | ; 3. ¯â¨¬¨§ æ¨ï ª®¤ . |
14 | ;------------------------------------------------------------------------------ |
14 | ;------------------------------------------------------------------------------ |
15 | use32 ; âà á«ïâ®à, ¨á¯®«ì§ãî騩 32-å à §àï¤ë¥ ª®¬ ¤ë |
15 | use32 ; âà á«ïâ®à, ¨á¯®«ì§ãî騩 32-å à §àï¤ë¥ ª®¬ ¤ë |
16 | org 0x0 ; ¡ §®¢ë© ¤à¥á ª®¤ , ¢á¥£¤ 0x0 |
16 | org 0x0 ; ¡ §®¢ë© ¤à¥á ª®¤ , ¢á¥£¤ 0x0 |
17 | 17 | ||
18 | db 'MENUET01' ; 1. ¨¤¥â¨ä¨ª â®à ¨á¯®«ï¥¬®£® ä ©« (8 ¡ ©â) |
18 | db 'MENUET01' ; 1. ¨¤¥â¨ä¨ª â®à ¨á¯®«ï¥¬®£® ä ©« (8 ¡ ©â) |
19 | dd 0x01 ; 2. ¢¥àá¨ï ä®à¬ â § £®«®¢ª ¨á¯®«ï¥¬®£® ä ©« |
19 | dd 0x01 ; 2. ¢¥àá¨ï ä®à¬ â § £®«®¢ª ¨á¯®«ï¥¬®£® ä ©« |
20 | dd START ; 3. ¤à¥á, ª®â®àë© á¨á⥬ ¯¥à¥¤ ñâ ã¯à ¢«¥¨¥ |
20 | dd START ; 3. ¤à¥á, ª®â®àë© á¨á⥬ ¯¥à¥¤ ñâ ã¯à ¢«¥¨¥ |
21 | ; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥¨ï ¢ ¯ ¬ïâì |
21 | ; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥¨ï ¢ ¯ ¬ïâì |
22 | dd IM_END ; 4. à §¬¥à ¯à¨«®¦¥¨ï |
22 | dd IM_END ; 4. à §¬¥à ¯à¨«®¦¥¨ï |
23 | dd I_END ; 5. ®¡êñ¬ ¥®¡å®¤¨¬®© ¯à¨«®¦¥¨î ¯ ¬ï⨠|
23 | dd I_END ; 5. ®¡êñ¬ ¥®¡å®¤¨¬®© ¯à¨«®¦¥¨î ¯ ¬ï⨠|
24 | ; ¬®¦® ®¡à é âìáï ª ¯ ¬ï⨠¢ ¤¨ ¯ §®¥ ®â 0x0 |
24 | ; ¬®¦® ®¡à é âìáï ª ¯ ¬ï⨠¢ ¤¨ ¯ §®¥ ®â 0x0 |
25 | ; ¤® § 票ï, ®¯à¥¤¥«ñ®£® §¤¥áì |
25 | ; ¤® § 票ï, ®¯à¥¤¥«ñ®£® §¤¥áì |
26 | dd stack_area ; 6. ¢¥àè¨ á⥪ ¢ ¤¨ ¯ §®¥ ¯ ¬ïâ¨, 㪠§ ®¬ ¢ëè¥ |
26 | dd stack_area ; 6. ¢¥àè¨ á⥪ ¢ ¤¨ ¯ §®¥ ¯ ¬ïâ¨, 㪠§ ®¬ ¢ëè¥ |
27 | dd 0x0 ; 7. 㪠§ ⥫ì áâபã á ¯ à ¬¥âà ¬¨. |
27 | dd 0x0 ; 7. 㪠§ ⥫ì áâபã á ¯ à ¬¥âà ¬¨. |
28 | ; ¥á«¨ ¯®á«¥ § ¯ã᪠¥à ¢® ã«î, ¯à¨«®¦¥¨¥ ¡ë«® |
28 | ; ¥á«¨ ¯®á«¥ § ¯ã᪠¥à ¢® ã«î, ¯à¨«®¦¥¨¥ ¡ë«® |
29 | ; § ¯ã饮 á ¯ à ¬¥âà ¬¨ ¨§ ª®¬ ¤®© áâப¨ |
29 | ; § ¯ã饮 á ¯ à ¬¥âà ¬¨ ¨§ ª®¬ ¤®© áâப¨ |
30 | dd 0x0 ; 8. 㪠§ ⥫ì áâபã, ¢ ª®â®àãî § ¯¨á ¯ãâì, |
30 | dd 0x0 ; 8. 㪠§ ⥫ì áâபã, ¢ ª®â®àãî § ¯¨á ¯ãâì, |
31 | ; ®âªã¤ § ¯ã饮 ¯à¨«®¦¥¨¥ |
31 | ; ®âªã¤ § ¯ã饮 ¯à¨«®¦¥¨¥ |
32 | ;------------------------------------------------------------------------------ |
32 | ;------------------------------------------------------------------------------ |
33 | ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§ì ¯à®£à ¬¬¨áâ |
- | |
34 | include '../../macros.inc' |
- | |
35 | ;------------------------------------------------------------------------------ |
- | |
36 | ;--- ---------------------------------------------- |
33 | ;--- ---------------------------------------------- |
37 | ;------------------------------------------------------------------------------ |
34 | ;------------------------------------------------------------------------------ |
38 | START: ; ¤à¥á ç « ¯à®£à ¬¬ë |
35 | START: ; ¤à¥á ç « ¯à®£à ¬¬ë |
39 | mov eax,40 ;ãáâ ®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩. |
36 | mov eax,40 ;ãáâ ®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩. |
40 | mov ebx,100000b ;㦮 ⮫쪮 ᮡë⨥ ¬ëè¨ |
37 | mov ebx,100000b ;㦮 ⮫쪮 ᮡë⨥ ¬ëè¨ |
41 | int 0x40 |
38 | int 0x40 |
42 | ;------------------------------------------------------------------------------ |
39 | ;------------------------------------------------------------------------------ |
43 | ;--- ---------------------------------------- |
40 | ;--- ---------------------------------------- |
44 | ;------------------------------------------------------------------------------ |
41 | ;------------------------------------------------------------------------------ |
45 | align 4 |
42 | align 4 |
46 | still: |
43 | still: |
47 | mov eax,10 ;®¦¨¤ âì ᮡë⨩ |
44 | mov eax,10 ;®¦¨¤ âì ᮡë⨩ |
48 | int 0x40 |
45 | int 0x40 |
49 | 46 | ||
50 | mov eax,14 ;äãªæ¨ï 14 - ¯®«ãç¨âì à §¬¥à íªà |
47 | mov eax,14 ;äãªæ¨ï 14 - ¯®«ãç¨âì à §¬¥à íªà |
51 | int 0x40 ;¢ë§®¢ ä.14 ¢ 横«¥ ¯®â®¬ã çâ® ¬®¦¥â |
48 | int 0x40 ;¢ë§®¢ ä.14 ¢ 横«¥ ¯®â®¬ã çâ® ¬®¦¥â |
52 | ;¯®¬¥ïâìáï à §à¥è¥¨¥ íªà |
49 | ;¯®¬¥ïâìáï à §à¥è¥¨¥ íªà |
53 | mov ebx,eax |
50 | mov ebx,eax |
54 | shl ebx,16 |
51 | shl ebx,16 |
55 | shr ebx,16 |
52 | shr ebx,16 |
56 | mov edi,ebx ;á®åà ¨¬ ã |
53 | mov edi,ebx ;á®åà ¨¬ ã |
57 | shr eax,16 ;ᤢ¨£ ¥¬ eax ¢¯à ¢® 16 - ¯®«ãç ¥¬ x |
54 | shr eax,16 ;ᤢ¨£ ¥¬ eax ¢¯à ¢® 16 - ¯®«ãç ¥¬ x |
58 | mov esi,eax ;á®åà ¨¬ x |
55 | mov esi,eax ;á®åà ¨¬ x |
59 | ;¯®«ãç ¥¬ ª®®à¤¨ âë ªãàá®à |
56 | ;¯®«ãç ¥¬ ª®®à¤¨ âë ªãàá®à |
60 | mov eax,37 ;äãªæ¨ï 37 - à ¡®â á ¬ëèìî |
57 | mov eax,37 ;äãªæ¨ï 37 - à ¡®â á ¬ëèìî |
61 | xor ebx,ebx ;¯®¤äãªæ¨ï 0 - ª®®à¤¨ âë ¬ëè¨ |
58 | xor ebx,ebx ;¯®¤äãªæ¨ï 0 - ª®®à¤¨ âë ¬ëè¨ |
62 | ;®â®á¨â¥«ì® íªà |
59 | ;®â®á¨â¥«ì® íªà |
63 | int 0x40 |
60 | int 0x40 |
64 | 61 | ||
65 | mov ebx,eax ;§ ¯®¬¨ ¥¬ ª®®à¤¨ âë |
62 | mov ebx,eax ;§ ¯®¬¨ ¥¬ ª®®à¤¨ âë |
66 | shr eax,16 ;⥯¥àì ã á ⮫쪮 x. 㦥 ¨ y |
63 | shr eax,16 ;⥯¥àì ã á ⮫쪮 x. 㦥 ¨ y |
67 | mov ecx,eax ;§ ¯®¬¨ ¥¬ x |
64 | mov ecx,eax ;§ ¯®¬¨ ¥¬ x |
68 | shl ebx,16 ;ᤢ¨¥¬ ¢«¥® 16 |
65 | shl ebx,16 ;ᤢ¨¥¬ ¢«¥® 16 |
69 | shr ebx,16 ;ᤢ¨¥¬¢ ¯à ¢® 16, ã á ¥áâì ã |
66 | shr ebx,16 ;ᤢ¨¥¬¢ ¯à ¢® 16, ã á ¥áâì ã |
70 | ;------------------------------------------------------------------------------ |
67 | ;------------------------------------------------------------------------------ |
71 | ;¢ esi ¨ edi ª®®à¤¨ âë à §¬¥à íªà X ¨ Y ᮮ⢥âᢥ® |
68 | ;¢ esi ¨ edi ª®®à¤¨ âë à §¬¥à íªà X ¨ Y ᮮ⢥âᢥ® |
72 | ;¢ ecx ¨ ebx ª®®à¤¨ âë ªãàá®à X ¨ Y ᮮ⢥⢥® |
69 | ;¢ ecx ¨ ebx ª®®à¤¨ âë ªãàá®à X ¨ Y ᮮ⢥⢥® |
73 | ;------------------------------------------------------------------------------ |
70 | ;------------------------------------------------------------------------------ |
74 | ;áà ¢¥¨¥ ª®®à¤¨ â x |
71 | ;áà ¢¥¨¥ ª®®à¤¨ â x |
75 | test ecx,ecx ;à ¢ 0? |
72 | test ecx,ecx ;à ¢ 0? |
76 | jz left_border ;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã «¥¢®£® ªà ï |
73 | jz left_border ;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã «¥¢®£® ªà ï |
77 | 74 | ||
78 | cmp ecx,esi ;à ¢ è¨à¨¥ íªà ? |
75 | cmp ecx,esi ;à ¢ è¨à¨¥ íªà ? |
79 | jz right_border ;¯¥à¥å®¤¨¬ ª ®¡à ¡®âª¥ ã ¯à ¢®£® ªà ï |
76 | jz right_border ;¯¥à¥å®¤¨¬ ª ®¡à ¡®âª¥ ã ¯à ¢®£® ªà ï |
80 | ;áà ¢¥¨¥ ª®®à¤¨ â y |
77 | ;áà ¢¥¨¥ ª®®à¤¨ â y |
81 | test ebx,ebx ;à ¢ 0? |
78 | test ebx,ebx ;à ¢ 0? |
82 | jz top_border ;¥á«¨ ¤ § ç¨â ªãàá®à ¢¢¥àåã |
79 | jz top_border ;¥á«¨ ¤ § ç¨â ªãàá®à ¢¢¥àåã |
83 | 80 | ||
84 | cmp ebx,edi ;à ¢ ¢ëá®â¥ íªà ? |
81 | cmp ebx,edi ;à ¢ ¢ëá®â¥ íªà ? |
85 | jz bottom_border ;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã ¨¦¥£® ªà ï |
82 | jz bottom_border ;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã ¨¦¥£® ªà ï |
86 | 83 | ||
87 | jmp still ;¨ ç¥ ¨ç¥£® ¤¥« âì ¥ 㦮 |
84 | jmp still ;¨ ç¥ ¨ç¥£® ¤¥« âì ¥ 㦮 |
88 | ;------------------------------------------------------------------------------ |
85 | ;------------------------------------------------------------------------------ |
89 | align 4 |
86 | align 4 |
90 | left_border: |
87 | left_border: |
91 | mov edx,esi ;¢ edx ¨¬¥¥¬ è¨à¨ã íªà |
88 | mov edx,esi ;¢ edx ¨¬¥¥¬ è¨à¨ã íªà |
92 | dec edx ;㬥ì訬 1 |
89 | dec edx ;㬥ì訬 1 |
93 | shl edx,16 ;⥯¥àì edx=(x-1)*65536 |
90 | shl edx,16 ;⥯¥àì edx=(x-1)*65536 |
94 | add edx,ebx ; ⥯¥àì edx=(x-1)*65536+y |
91 | add edx,ebx ; ⥯¥àì edx=(x-1)*65536+y |
95 | ;------------------------------------------------------------------------------ |
92 | ;------------------------------------------------------------------------------ |
96 | align 4 |
93 | align 4 |
97 | set_mouse_position: |
94 | set_mouse_position: |
98 | mov eax,18 ;äãªæ¨ï 18: ãáâ ®¢¨âì áâனª¨ ¬ëè¨ |
95 | mov eax,18 ;äãªæ¨ï 18: ãáâ ®¢¨âì áâனª¨ ¬ëè¨ |
99 | mov ebx,19 ;¯®¤äãªæ¨ï 19 |
96 | mov ebx,19 ;¯®¤äãªæ¨ï 19 |
100 | mov ecx,4 ;¯®¤¯®¤äãªæ¨ï 4: ãáâ ®¢¨âì ¯®«®¦¥¨¥ |
97 | mov ecx,4 ;¯®¤¯®¤äãªæ¨ï 4: ãáâ ®¢¨âì ¯®«®¦¥¨¥ |
101 | ;ªãàá®à |
98 | ;ªãàá®à |
102 | int 0x40 |
99 | int 0x40 |
103 | jmp still ;®â¤ëå ¥¬ |
100 | jmp still ;®â¤ëå ¥¬ |
104 | ;------------------------------------------------------------------------------ |
101 | ;------------------------------------------------------------------------------ |
105 | align 4 |
102 | align 4 |
106 | right_border: ;ªãàá®à ã ¯à ¢®£® ªà ï |
103 | right_border: ;ªãàá®à ã ¯à ¢®£® ªà ï |
107 | 104 | ||
108 | xor edx,edx |
105 | xor edx,edx |
109 | inc edx ;edx=1 |
106 | inc edx ;edx=1 |
110 | shl edx,16 ;edx = 1*65536 |
107 | shl edx,16 ;edx = 1*65536 |
111 | add edx,ebx ;edx=1*65536+y |
108 | add edx,ebx ;edx=1*65536+y |
112 | jmp set_mouse_position |
109 | jmp set_mouse_position |
113 | ;------------------------------------------------------------------------------ |
110 | ;------------------------------------------------------------------------------ |
114 | align 4 |
111 | align 4 |
115 | top_border: ;ªãàá®à ã ¢¥à奣® ªà ï |
112 | top_border: ;ªãàá®à ã ¢¥à奣® ªà ï |
116 | 113 | ||
117 | mov edx,ecx ; ª®®à¤¨ â ªãàá®à |
114 | mov edx,ecx ; ª®®à¤¨ â ªãàá®à |
118 | shl edx,16 ;⥯¥àì edx=(x)*65536 |
115 | shl edx,16 ;⥯¥àì edx=(x)*65536 |
119 | add edx,edi ; ⥯¥àì edx=(x)*65536+y |
116 | add edx,edi ; ⥯¥àì edx=(x)*65536+y |
120 | dec edx ; ⥯¥àì edx=(x)*65536+(ã-1) |
117 | dec edx ; ⥯¥àì edx=(x)*65536+(ã-1) |
121 | jmp set_mouse_position |
118 | jmp set_mouse_position |
122 | ;------------------------------------------------------------------------------ |
119 | ;------------------------------------------------------------------------------ |
123 | align 4 |
120 | align 4 |
124 | bottom_border: ;ªãàá®à ã ¨¦¥£® ªà ï |
121 | bottom_border: ;ªãàá®à ã ¨¦¥£® ªà ï |
125 | mov edx,ecx ;edx=ecx x ª®®à¤¨ â ªãàá®à |
122 | mov edx,ecx ;edx=ecx x ª®®à¤¨ â ªãàá®à |
126 | shl edx,16 ;edx = å*65536 |
123 | shl edx,16 ;edx = å*65536 |
127 | ;ã ª®®à¤¨ â à ¢ 0 |
124 | inc edx ;ã ª®®à¤¨ â à ¢ 1 |
128 | jmp set_mouse_position |
125 | jmp set_mouse_position |
129 | ;------------------------------------------------------------------------------ |
126 | ;------------------------------------------------------------------------------ |
130 | IM_END: ; ¬¥âª ª®æ ª®¤ |
127 | IM_END: ; ¬¥âª ª®æ ª®¤ |
131 | ;------------------------------------------------------------------------------ |
128 | ;------------------------------------------------------------------------------ |
132 | align 4 |
129 | align 4 |
133 | rb 1024 |
130 | rb 1024 |
134 | stack_area: |
131 | stack_area: |
135 | ;------------------------------------------------------------------------------ |
132 | ;------------------------------------------------------------------------------ |
136 | I_END: ; ¬¥âª ª®æ ¯à®£à ¬¬ë |
133 | I_END: ; ¬¥âª ª®æ ¯à®£à ¬¬ë |
137 | ;------------------------------------------------------------------------------ |
134 | ;------------------------------------------------------------------------------ |