Rev 205 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 205 | Rev 485 | ||
---|---|---|---|
- | 1 | include '..\..\..\macros.inc' |
|
1 | use32 |
2 | use32 |
2 | org 0x0 |
3 | org 0x0 |
3 | 4 | ||
4 | db 'MENUET01' |
5 | db 'MENUET01' |
5 | dd 0x01 |
6 | dd 0x01 |
6 | dd START |
7 | dd START |
7 | dd I_END |
8 | dd I_END |
8 | dd mem_end |
9 | dd mem_end |
9 | dd mem_end |
10 | dd mem_end |
10 | dd 0x0, 0x0 |
11 | dd 0x0, 0x0 |
11 | 12 | ||
12 | START: |
13 | START: |
13 | 14 | ||
14 | mov edi, my_img |
15 | mov edi, my_img |
15 | mov ecx, 64001*3/4+1 |
16 | mov ecx, 64001*3/4+1 |
16 | xor eax, eax |
17 | xor eax, eax |
17 | rep stosd |
18 | rep stosd |
18 | 19 | ||
19 | mov al, 3 |
20 | mov al, 3 |
20 | int 0x40 |
21 | mcall |
21 | mov [curtime], eax |
22 | mov [curtime], eax |
22 | 23 | ||
23 | red: |
24 | red: |
24 | push 12 |
25 | push 12 |
25 | pop eax |
26 | pop eax |
26 | push 1 |
27 | push 1 |
27 | pop ebx |
28 | pop ebx |
28 | int 0x40 |
29 | mcall |
29 | 30 | ||
30 | xor eax, eax |
31 | xor eax, eax |
31 | mov ebx, 200*65536+325 |
32 | mov ebx, 200*65536+325 |
32 | mov ecx, 150*65536+225 |
33 | mov ecx, 150*65536+225 |
33 | xor edx, edx |
34 | xor edx, edx |
34 | xor esi, esi |
35 | xor esi, esi |
35 | mov edi, 0x00100000 |
36 | mov edi, 0x00100000 |
36 | int 0x40 |
37 | mcall |
37 | 38 | ||
38 | mov al, 8 |
39 | mov al, 8 |
39 | mov ebx, (325-19)*65536+12 |
40 | mov ebx, (325-19)*65536+12 |
40 | mov ecx, 5*65536+12 |
41 | mov ecx, 5*65536+12 |
41 | inc edx |
42 | inc edx |
42 | mov esi, 0x00400000 |
43 | mov esi, 0x00400000 |
43 | int 0x40 |
44 | mcall |
44 | 45 | ||
45 | mov al, 4 |
46 | mov al, 4 |
46 | mov ebx, 8*65536+8 |
47 | mov ebx, 8*65536+8 |
47 | mov ecx, 0x00FFFFFF;0x00402020 |
48 | mov ecx, 0x00FFFFFF;0x00402020 |
48 | mov edx, fire_label |
49 | mov edx, fire_label |
49 | push len00 |
50 | push len00 |
50 | pop esi |
51 | pop esi |
51 | int 0x40 |
52 | mcall |
52 | 53 | ||
53 | mov al, 12 |
54 | mov al, 12 |
54 | push 2 |
55 | push 2 |
55 | pop ebx |
56 | pop ebx |
56 | int 0x40 |
57 | mcall |
57 | 58 | ||
58 | still: |
59 | still: |
59 | 60 | ||
60 | push 11 |
61 | push 11 |
61 | pop eax |
62 | pop eax |
62 | int 0x40 |
63 | mcall |
63 | 64 | ||
64 | dec eax |
65 | dec eax |
65 | jz red |
66 | jz red |
66 | dec eax |
67 | dec eax |
67 | jz key |
68 | jz key |
68 | dec eax |
69 | dec eax |
69 | jz button |
70 | jz button |
70 | 71 | ||
71 | call image |
72 | call image |
72 | push 3 |
73 | push 3 |
73 | pop eax |
74 | pop eax |
74 | int 0x40 |
75 | mcall |
75 | cmp eax, [curtime] |
76 | cmp eax, [curtime] |
76 | jz still |
77 | jz still |
77 | mov [curtime], eax |
78 | mov [curtime], eax |
78 | print_fps: |
79 | print_fps: |
79 | push 13 |
80 | push 13 |
80 | pop eax |
81 | pop eax |
81 | mov ebx, (8+27*6)*65536+18 |
82 | mov ebx, (8+27*6)*65536+18 |
82 | mov ecx, 8*65536+8 |
83 | mov ecx, 8*65536+8 |
83 | xor edx, edx |
84 | xor edx, edx |
84 | int 0x40 |
85 | mcall |
85 | lea edx, [ebx-10] |
86 | lea edx, [ebx-10] |
86 | mov al, 47 |
87 | mov al, 47 |
87 | mov ebx, 30000h |
88 | mov ebx, 30000h |
88 | xor ecx, ecx |
89 | xor ecx, ecx |
89 | xchg ecx, [fps] |
90 | xchg ecx, [fps] |
90 | mov esi, 0x00FFFFFF ;0x00400000 |
91 | mov esi, 0x00FFFFFF ;0x00400000 |
91 | int 0x40 |
92 | mcall |
92 | jmp still |
93 | jmp still |
93 | 94 | ||
94 | key: |
95 | key: |
95 | mov al, 2 |
96 | mov al, 2 |
96 | int 0x40 |
97 | mcall |
97 | cmp ah, 1Bh ; |
98 | cmp ah, 1Bh ; |
98 | jne still |
99 | jne still |
99 | button: |
100 | button: |
100 | ; we have only one button, close |
101 | ; we have only one button, close |
101 | or eax, -1 |
102 | or eax, -1 |
102 | int 0x40 |
103 | mcall |
103 | 104 | ||
104 | image: |
105 | image: |
105 | 106 | ||
106 | ; ¨á㥬 ¯¥â £p ¬¬ã |
107 | ; ¨á㥬 ¯¥â £p ¬¬ã |
107 | penta: |
108 | penta: |
108 | mov edi,my_img+0x540*3 |
109 | mov edi,my_img+0x540*3 |
109 | mov ebx,(320)*3 |
110 | mov ebx,(320)*3 |
110 | mov eax,0x00fc0000 |
111 | mov eax,0x00fc0000 |
111 | push edi |
112 | push edi |
112 | push 0x78 |
113 | push 0x78 |
113 | pop ecx |
114 | pop ecx |
114 | ll_3: |
115 | ll_3: |
115 | call put_big_point |
116 | call put_big_point |
116 | lea edi, [edi+ebx+6] |
117 | lea edi, [edi+ebx+6] |
117 | loop ll_3 |
118 | loop ll_3 |
118 | pop edi |
119 | pop edi |
119 | mov cl, 0x60 |
120 | mov cl, 0x60 |
120 | ll_4: |
121 | ll_4: |
121 | call put_big_point |
122 | call put_big_point |
122 | lea edi, [edi+ebx*2+3] |
123 | lea edi, [edi+ebx*2+3] |
123 | loop ll_4 |
124 | loop ll_4 |
124 | mov cl, 0x61 |
125 | mov cl, 0x61 |
125 | ll_5: |
126 | ll_5: |
126 | call put_big_point |
127 | call put_big_point |
127 | sub edi, 2*320*3-3 |
128 | sub edi, 2*320*3-3 |
128 | loop ll_5 |
129 | loop ll_5 |
129 | mov edi, my_img+0x1D4F6 |
130 | mov edi, my_img+0x1D4F6 |
130 | push edi |
131 | push edi |
131 | mov cl, 0x78 |
132 | mov cl, 0x78 |
132 | ll_6: |
133 | ll_6: |
133 | call put_big_point |
134 | call put_big_point |
134 | add edi,6 |
135 | add edi,6 |
135 | sub edi,ebx |
136 | sub edi,ebx |
136 | loop ll_6 |
137 | loop ll_6 |
137 | pop edi |
138 | pop edi |
138 | mov ecx,0x8F*2 |
139 | mov ecx,0x8F*2 |
139 | ll_7: stosd |
140 | ll_7: stosd |
140 | mov [edi+ebx-4],eax |
141 | mov [edi+ebx-4],eax |
141 | dec edi |
142 | dec edi |
142 | loop ll_7 |
143 | loop ll_7 |
143 | 144 | ||
144 | fire: |
145 | fire: |
145 | ; _HH _! ¤¥áì á ¬®¥ ¨â¥p¥á®¥. |
146 | ; _HH _! ¤¥áì á ¬®¥ ¨â¥p¥á®¥. |
146 | ; «£®p¨â¬ £®p¥¨ï. |
147 | ; «£®p¨â¬ £®p¥¨ï. |
147 | mov esi,[count1] |
148 | mov esi,[count1] |
148 | mov edx,[count2] |
149 | mov edx,[count2] |
149 | mov ecx, 10000h |
150 | mov ecx, 10000h |
150 | Flame: cmp esi,0xFA00*3+my_img ; ᥢ¤®á«ãç © ï â®çª ¢ ¯p¥¤ « å íªp |
151 | Flame: cmp esi,0xFA00*3+my_img ; ᥢ¤®á«ãç © ï â®çª ¢ ¯p¥¤ « å íªp |
151 | jae NxtP ; ¥á«¨ H - ¡¥p¥¬ á«¥¤ãîéãî. |
152 | jae NxtP ; ¥á«¨ H - ¡¥p¥¬ á«¥¤ãîéãî. |
152 | lodsd |
153 | lodsd |
153 | dec esi ; ç¨âë¢ ¥¬ ¥¥ 梥â. |
154 | dec esi ; ç¨âë¢ ¥¬ ¥¥ 梥â. |
154 | ; and eax,0x00ff0000 |
155 | ; and eax,0x00ff0000 |
155 | test eax, eax |
156 | test eax, eax |
156 | ; ®çª ç¥p ï? (£®p¥âì ¥ç¥¬ã?) |
157 | ; ®çª ç¥p ï? (£®p¥âì ¥ç¥¬ã?) |
157 | jz NxtP ; ¥á«¨ - ¡¥p¥¬ á«¥¤ãîéãî. |
158 | jz NxtP ; ¥á«¨ - ¡¥p¥¬ á«¥¤ãîéãî. |
158 | sub eax,0x00040000 |
159 | sub eax,0x00040000 |
159 | ; ¢¥â®¬ ¥¤¨¨æã ¬¥ì訬 |
160 | ; ¢¥â®¬ ¥¤¨¨æã ¬¥ì訬 |
160 | mov [esi-2*3],eax ; áâ ¢¨¬ â®çªã á«¥¢ , |
161 | mov [esi-2*3],eax ; áâ ¢¨¬ â®çªã á«¥¢ , |
161 | mov [esi],eax ; á¯p ¢ , |
162 | mov [esi],eax ; á¯p ¢ , |
162 | mov [320*3+esi-1*3],eax ; ᨧã |
163 | mov [320*3+esi-1*3],eax ; ᨧã |
163 | mov [esi-0x141*3],eax ; ¨ ᢥpåã. |
164 | mov [esi-0x141*3],eax ; ¨ ᢥpåã. |
164 | NxtP: |
165 | NxtP: |
165 | add esi,edx |
166 | add esi,edx |
166 | cmp esi,0xffff*3+my_img |
167 | cmp esi,0xffff*3+my_img |
167 | jbe loc_cont |
168 | jbe loc_cont |
168 | sub esi,0xfffe*3 |
169 | sub esi,0xfffe*3 |
169 | loc_cont: |
170 | loc_cont: |
170 | ; ¥p¥¬ á«¥¤ãîéãî |
171 | ; ¥p¥¬ á«¥¤ãîéãî |
171 | add edx,3 |
172 | add edx,3 |
172 | cmp edx,0x10000*3 |
173 | cmp edx,0x10000*3 |
173 | jbe loc_cont2 |
174 | jbe loc_cont2 |
174 | sub edx,0xfffe*3 |
175 | sub edx,0xfffe*3 |
175 | loc_cont2: |
176 | loc_cont2: |
176 | ; ¯á¥¢¤®á«ãç ©ãî â®çªã. |
177 | ; ¯á¥¢¤®á«ãç ©ãî â®çªã. |
177 | ;jnz Flame ; â ª 65536 p §. |
178 | ;jnz Flame ; â ª 65536 p §. |
178 | loop Flame |
179 | loop Flame |
179 | mov [count1],esi |
180 | mov [count1],esi |
180 | mov [count2],edx |
181 | mov [count2],edx |
181 | 182 | ||
182 | mov ebx,my_img |
183 | mov ebx,my_img |
183 | mov ecx,320*65536+200 |
184 | mov ecx,320*65536+200 |
184 | mov edx,2*65536+23 |
185 | mov edx,2*65536+23 |
185 | push 7 |
186 | push 7 |
186 | pop eax |
187 | pop eax |
187 | int 0x40 |
188 | int 0x40 |
188 | 189 | ||
189 | inc [fps] |
190 | inc [fps] |
190 | retn |
191 | retn |
191 | 192 | ||
192 | put_big_point: |
193 | put_big_point: |
193 | mov [edi], eax |
194 | mov [edi], eax |
194 | mov [edi+3], eax |
195 | mov [edi+3], eax |
195 | mov [edi-3], eax |
196 | mov [edi-3], eax |
196 | mov [edi+ebx], eax |
197 | mov [edi+ebx], eax |
197 | ret |
198 | ret |
198 | 199 | ||
199 | ;DATA |
200 | ;DATA |
200 | align 4 |
201 | align 4 |
201 | 202 | ||
202 | count1 dd my_img |
203 | count1 dd my_img |
203 | count2 dd 0 |
204 | count2 dd 0 |
204 | curtime dd 0 |
205 | curtime dd 0 |
205 | fps dd 0 |
206 | fps dd 0 |
206 | fire_label db 'Pentagramm in FIRE FPS:' |
207 | fire_label db 'Pentagramm in FIRE FPS:' |
207 | len00=$-fire_label |
208 | len00=$-fire_label |
208 | I_END: |
209 | I_END: |
209 | 210 | ||
210 | align 16 |
211 | align 16 |
211 | rb 320*3 |
212 | rb 320*3 |
212 | my_img rb 320*200*3 |
213 | my_img rb 320*200*3 |
213 | rb 320*3 |
214 | rb 320*3 |
214 | 215 | ||
215 | ; stack |
216 | ; stack |
216 | align 256 |
217 | align 256 |
217 | rb 256 |
218 | rb 256 |
218 | mem_end: |
219 | mem_end: |