Rev 1522 | Rev 1677 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1522 | Rev 1566 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ;;===Level_mode================================================================================================================ |
1 | ;;===Level_mode================================================================================================================ |
Line 2... | Line 2... | ||
2 | 2 | ||
Line 3... | Line -... | ||
3 | Level_begin: |
- | |
4 | - | ||
5 | mov [score], 0 |
3 | Level_begin: |
6 | mov [action], 0 |
- | |
7 | mov eax, [gw_mul_gh] |
- | |
8 | sub eax, 3 |
- | |
9 | mov [number_of_free_dots], ax |
- | |
10 | - | ||
11 | invoke ini.get_str, cur_dir_path, aScore, aChampion_name, champion_name, 15, champion_name |
- | |
12 | invoke ini.get_int, cur_dir_path, aScore, aHiscore, 0 |
- | |
13 | - | ||
14 | test eax, eax |
- | |
15 | jz @f |
- | |
16 | mov dword [hi_score], eax |
- | |
17 | @@: |
- | |
18 | - | ||
19 | mov esi, start_map |
- | |
20 | mov edi, field_map |
- | |
21 | mov ecx, [gw_mul_gh] |
- | |
22 | shr ecx, 2 |
- | |
23 | rep movsd |
4 | |
Line 24... | Line 5... | ||
24 | 5 | call Load_level |
|
25 | call Get_eat |
6 | call Get_eat |
Line -... | Line 7... | ||
- | 7 | ||
26 | 8 | Level_body: |
|
27 | Level_body: |
9 | ;;===Level_body======================================================================================================== |
28 | ;;===Level_body======================================================================================================== |
10 | |
29 | 11 | call Hide_cursor |
|
Line 41... | Line 23... | ||
41 | shl ecx, 16 |
23 | shl ecx, 16 |
42 | add ecx, dword[window_height] |
24 | add ecx, dword[window_height] |
43 | mcall 0, , ,[window_style], ,window_title |
25 | mcall 0, , ,[window_style], ,window_title |
Line 44... | Line 26... | ||
44 | 26 | ||
- | 27 | call Draw_decorations |
|
45 | call Draw_decorations |
28 | call Draw_stones |
46 | call Draw_snake |
29 | call Draw_snake |
47 | call Draw_eat |
30 | call Draw_eat |
Line 48... | Line 31... | ||
48 | call Draw_level_strings |
31 | call Draw_level_strings |
Line 80... | Line 63... | ||
80 | jz .key ; |
63 | jz .key ; |
81 | dec al ; was a button pressed? |
64 | dec al ; was a button pressed? |
82 | jz .button ; |
65 | jz .button ; |
Line -... | Line 66... | ||
- | 66 | ||
- | 67 | ||
- | 68 | .button: ; ¯à®æ¥¤ãà ®¡à ¡®ª¨ ª®¯®ª ¢ ¯à®£à ¬¬¥ |
|
- | 69 | mcall 17 ; äãªæ¨ï 17: ¯®«ãç¨âì ®¬¥à ¦ ⮩ ª®¯ª¨ |
|
- | 70 | ||
- | 71 | shr eax, 8 ; ᤢ¨£ ¥¬ ॣ¨áâà eax 8 ¡¨â ¢¯à ¢®, çâ®¡ë ¯®«ãç¨âì ®¬¥à ¦ ⮩ ª®¯ª¨ |
|
- | 72 | cmp eax, 1 |
|
- | 73 | je Save_do_smth_else_and_exit ; ¥á«¨ íâ® ¥ ª®¯ª 1 (§ १¥à¢¨à®¢ á¨á⥬®© ª ª ª®¯ª § ªàëâ¨ï ¯à®£à ¬¬ë), ¯à®¯ã᪠¥¬ 2 á«¥¤ãî騥 áâà®çª¨ ª®¤ |
|
- | 74 | ||
- | 75 | jmp .still |
|
83 | 76 | ||
84 | 77 | ||
Line 85... | Line 78... | ||
85 | .key: |
78 | .key: |
86 | mcall 2 ; get keycode |
79 | mcall 2 ; get keycode |
Line 99... | Line 92... | ||
99 | je .key.right |
92 | je .key.right |
Line 100... | Line 93... | ||
100 | 93 | ||
Line 101... | Line -... | ||
101 | jmp .still ; jump to wait for another event |
- | |
102 | - | ||
103 | - | ||
104 | .button: ; ¯à®æ¥¤ãà ®¡à ¡®ª¨ ª®¯®ª ¢ ¯à®£à ¬¬¥ |
- | |
105 | mcall 17 ; äãªæ¨ï 17: ¯®«ãç¨âì ®¬¥à ¦ ⮩ ª®¯ª¨ |
- | |
106 | - | ||
107 | shr eax, 8 ; ᤢ¨£ ¥¬ ॣ¨áâà eax 8 ¡¨â ¢¯à ¢®, çâ®¡ë ¯®«ãç¨âì ®¬¥à ¦ ⮩ ª®¯ª¨ |
- | |
108 | cmp eax, 1 |
- | |
109 | je Exit ; ¥á«¨ íâ® ¥ ª®¯ª 1 (§ १¥à¢¨à®¢ á¨á⥬®© ª ª ª®¯ª § ªàëâ¨ï ¯à®£à ¬¬ë), ¯à®¯ã᪠¥¬ 2 á«¥¤ãî騥 áâà®çª¨ ª®¤ |
- | |
110 | - | ||
111 | jmp .still |
94 | jmp .still ; jump to wait for another event |
112 | 95 | ||
113 | 96 | ||
114 | .key.left: |
97 | .key.left: |
115 | bts dword[action], 0 |
98 | bts [action], 0 |
116 | jc @f |
99 | jc @f |
117 | mov [time_to_wait], 0 |
100 | mov [time_to_wait], 0 |
Line 118... | Line 101... | ||
118 | @@: |
101 | @@: |
119 | mov [snake_napravlenie_next], LEFT |
102 | mov [snake_direction_next], LEFT |
120 | jmp .still |
103 | jmp .still |
121 | 104 | ||
122 | .key.down: |
105 | .key.down: |
123 | bts dword[action], 0 |
106 | bts [action], 0 |
124 | jc @f |
107 | jc @f |
Line 125... | Line 108... | ||
125 | mov [time_to_wait], 0 |
108 | mov [time_to_wait], 0 |
126 | @@: |
109 | @@: |
127 | mov [snake_napravlenie_next], DOWN |
110 | mov [snake_direction_next], DOWN |
128 | jmp .still |
111 | jmp .still |
129 | 112 | ||
130 | .key.up: |
113 | .key.up: |
131 | bts dword[action], 0 |
114 | bts [action], 0 |
Line 132... | Line 115... | ||
132 | jc @f |
115 | jc @f |
133 | mov [time_to_wait], 0 |
116 | mov [time_to_wait], 0 |
134 | @@: |
117 | @@: |
135 | mov [snake_napravlenie_next], UP |
118 | mov [snake_direction_next], UP |
136 | jmp .still |
119 | jmp .still |
137 | 120 | ||
138 | .key.right: |
121 | .key.right: |
Line 139... | Line 122... | ||
139 | bts dword[action], 0 |
122 | bts [action], 0 |
Line 140... | Line 123... | ||
140 | jc @f |
123 | jc @f |
141 | mov [time_to_wait], 0 |
124 | mov [time_to_wait], 0 |
142 | @@: |
125 | @@: |
143 | mov [snake_napravlenie_next], RIGHT |
126 | mov [snake_direction_next], RIGHT |
144 | jmp .still |
127 | jmp .still |
145 | 128 | ||
146 | 129 | ||
Line 147... | Line 130... | ||
147 | Game_step: |
130 | Game_step: |
148 | 131 | ||
149 | cmp [snake_napravlenie], LEFT ; are we moving to left? |
132 | cmp [snake_direction], LEFT ; are we moving to left? |
150 | jz .left |
133 | jz .left |
Line 151... | Line 134... | ||
151 | cmp [snake_napravlenie], DOWN ; ... down? |
134 | cmp [snake_direction], DOWN ; ... down? |
152 | jz .down |
135 | jz .down |
153 | cmp [snake_napravlenie], UP ; ... up? |
136 | cmp [snake_direction], UP ; ... up? |
154 | jz .up |
137 | jz .up |
Line 155... | Line 138... | ||
155 | jmp .right ; then right |
138 | jmp .right ; then right |
156 | 139 | ||
157 | .left: |
140 | .left: |
158 | cmp [snake_napravlenie_next], RIGHT ; next step is to right? |
141 | cmp [snake_direction_next], RIGHT ; next step is to right? |
Line 159... | Line 142... | ||
159 | jz .with_rewerse |
142 | jz .with_reverse |
160 | jmp .without_rewerse |
143 | jmp .without_reverse |
161 | 144 | ||
162 | .down: |
145 | .down: |
Line 163... | Line 146... | ||
163 | cmp [snake_napravlenie_next], UP ; next step is to up? |
146 | cmp [snake_direction_next], UP ; next step is to up? |
164 | jz .with_rewerse |
147 | jz .with_reverse |
165 | jmp .without_rewerse |
148 | jmp .without_reverse |
Line 166... | Line 149... | ||
166 | 149 | ||
167 | .up: |
- | |
168 | cmp [snake_napravlenie_next], DOWN ; next step is to bottom? |
150 | .up: |
169 | jz .with_rewerse |
151 | cmp [snake_direction_next], DOWN ; next step is to bottom? |
Line 170... | Line 152... | ||
170 | jmp .without_rewerse |
152 | jz .with_reverse |
171 | 153 | jmp .without_reverse |
|
172 | .right: |
154 | |
173 | cmp [snake_napravlenie_next], LEFT ; next step is to left? |
155 | .right: |
174 | jz .with_rewerse |
156 | cmp [snake_direction_next], LEFT ; next step is to left? |
175 | jmp .without_rewerse |
157 | jz .with_reverse |
176 | 158 | jmp .without_reverse |
|
177 | 159 | ||
Line 178... | Line 160... | ||
178 | .with_rewerse: |
160 | |
179 | call Set_reverse_napravlenie |
161 | .with_reverse: |
180 | call Reverse |
162 | call Set_reverse_direction |
181 | 163 | call Reverse |
|
182 | .without_rewerse: |
164 | |
183 | ; mov [time_to_wait], 0 |
165 | .without_reverse: |
184 | mov edx, snake_dots-2 |
166 | mov edx, snake_dots-2 |
185 | add edx, [snake_length_x2] |
167 | add edx, [snake_length_x2] |
186 | 168 | ||
187 | cmp [snake_napravlenie_next], LEFT |
169 | cmp [snake_direction_next], LEFT |
Line 188... | Line 170... | ||
188 | je .to_left |
170 | je .to_left |
189 | cmp [snake_napravlenie_next], DOWN |
171 | cmp [snake_direction_next], DOWN |
190 | je .to_down |
172 | je .to_down |
191 | cmp [snake_napravlenie_next], UP |
173 | cmp [snake_direction_next], UP |
192 | je .to_up |
174 | je .to_up |
193 | cmp [snake_napravlenie_next], RIGHT |
175 | cmp [snake_direction_next], RIGHT |
194 | je .to_right |
176 | je .to_right |
195 | 177 | ||
196 | .to_left: |
178 | .to_left: |
Line 197... | Line 179... | ||
197 | mov [snake_napravlenie], LEFT |
179 | mov [snake_direction], LEFT |
198 | mov ax, [edx] |
180 | mov ax, [edx] |
199 | dec al |
181 | dec al |
200 | cmp al, -1 |
182 | cmp al, -1 |
201 | jne @f |
183 | jne @f |
202 | mov al, byte[g_w] |
184 | mov al, GRID_WIDTH |
203 | dec al |
185 | dec al |
204 | @@: |
186 | @@: |
205 | jmp Snake_move |
187 | jmp Snake_move |
206 | 188 | ||
Line 207... | Line 189... | ||
207 | .to_down: |
189 | .to_down: |
208 | mov [snake_napravlenie], DOWN |
190 | mov [snake_direction], DOWN |
209 | mov ax, [edx] |
191 | mov ax, [edx] |
210 | inc ah |
192 | inc ah |
211 | cmp ah, byte[g_h] |
193 | cmp ah, GRID_HEIGHT |
212 | jne @f |
194 | jne @f |
213 | mov ah, 0 |
195 | mov ah, 0 |
214 | @@: |
196 | @@: |
215 | jmp Snake_move |
197 | jmp Snake_move |
Line 283... | Line 265... | ||
283 | Draw_level_strings: |
265 | Draw_level_strings: |
284 | ;;===Draw_level_strings================================================================================================ |
266 | ;;===Draw_level_strings================================================================================================ |
Line 285... | Line 267... | ||
285 | 267 | ||
286 | mov ebx, [window_width] |
268 | mov ebx, [window_width] |
287 | shr ebx, 1 |
269 | shr ebx, 1 |
288 | sub ebx, (string_resume_space-string_pause_space-1)*3+6 |
270 | sub ebx, string_pause_space.size*3+6 |
289 | shl ebx, 16 |
271 | shl ebx, 16 |
290 | add ebx, [top_strings] |
272 | add ebx, [top_strings] |
Line 291... | Line 273... | ||
291 | mcall 4, ,[navigation_strings_color],string_pause_space ; Draw 'PAUSE - SPACE' string |
273 | mcall 4, ,[navigation_strings_color],string_pause_space ; Draw 'PAUSE - SPACE' string |
Line 296... | Line 278... | ||
296 | call Draw_champion_string |
278 | call Draw_champion_string |
297 | call Draw_champion_name |
279 | call Draw_champion_name |
298 | call Draw_hiscore_string |
280 | call Draw_hiscore_string |
299 | call Draw_hiscore_number |
281 | call Draw_hiscore_number |
Line -... | Line 282... | ||
- | 282 | ||
- | 283 | cmp [play_mode], LEVELS_MODE |
|
- | 284 | jne @f |
|
- | 285 | ||
- | 286 | mov ebx, [window_width] |
|
- | 287 | shr ebx, 3 |
|
- | 288 | sub ebx, 5 |
|
- | 289 | shl ebx, 16 |
|
- | 290 | add ebx, [bottom_bottom_strings] |
|
- | 291 | mcall 4, ,[level_string_color],string_level |
|
- | 292 | ||
- | 293 | mov edx, [window_width] |
|
- | 294 | shr edx, 3 |
|
- | 295 | sub edx, 5+1 |
|
- | 296 | add edx, string_level.size*6 |
|
- | 297 | shl edx, 16 |
|
- | 298 | add edx, [bottom_bottom_strings] |
|
- | 299 | mcall 47,0x00020000,[cur_level_number], ,[level_number_color],[background_color] |
|
- | 300 | ||
- | 301 | @@: |
|
300 | 302 | ||
Line 301... | Line 303... | ||
301 | ret |
303 | ret |
Line 366... | Line 368... | ||
366 | jmp .loop |
368 | jmp .loop |
Line 367... | Line 369... | ||
367 | 369 | ||
368 | .place_found: |
370 | .place_found: |
369 | sub ebx, field_map |
371 | sub ebx, field_map |
370 | mov eax, ebx |
372 | mov eax, ebx |
371 | mov bl, byte[g_w] |
373 | mov bl, GRID_WIDTH |
372 | div bl |
374 | div bl |
Line 373... | Line 375... | ||
373 | xchg al, ah |
375 | xchg al, ah |
Line 393... | Line 395... | ||
393 | ret |
395 | ret |
Line 394... | Line 396... | ||
394 | 396 | ||
Line 395... | Line 397... | ||
395 | ;;---Sdvig------------------------------------------------------------------------------------------------------------- |
397 | ;;---Sdvig------------------------------------------------------------------------------------------------------------- |
396 | 398 | ||
Line 397... | Line 399... | ||
397 | 399 | ||
398 | Set_reverse_napravlenie: |
400 | Set_reverse_direction: |
Line 399... | Line 401... | ||
399 | ;;===Set_reverse_napravlenie=========================================================================================== |
401 | ;;===Set_reverse_direction================================================================================================== |
Line 408... | Line 410... | ||
408 | je .X_ravny |
410 | je .X_ravny |
Line 409... | Line 411... | ||
409 | 411 | ||
410 | cmp cl, 0 |
412 | cmp cl, 0 |
Line 411... | Line 413... | ||
411 | jne .skip2 |
413 | jne .skip2 |
412 | 414 | ||
413 | mov dl, byte[g_w] |
415 | mov dl, GRID_WIDTH |
414 | dec dl |
416 | dec dl |
415 | cmp ch, dl |
417 | cmp ch, dl |
416 | jne .Normal_y_ravny |
418 | jne .Normal_y_ravny |
Line 417... | Line 419... | ||
417 | mov [snake_napravlenie_next], RIGHT |
419 | mov [snake_direction_next], RIGHT |
418 | ret |
420 | ret |
419 | 421 | ||
420 | .skip2: |
422 | .skip2: |
421 | mov dl, byte[g_w] |
423 | mov dl, GRID_WIDTH |
422 | dec dl |
424 | dec dl |
423 | cmp cl, dl |
425 | cmp cl, dl |
424 | jne .Normal_y_ravny |
426 | jne .Normal_y_ravny |
425 | cmp ch, 0 |
427 | cmp ch, 0 |
Line 426... | Line 428... | ||
426 | jne .Normal_y_ravny |
428 | jne .Normal_y_ravny |
Line 427... | Line 429... | ||
427 | mov [snake_napravlenie_next], LEFT |
429 | mov [snake_direction_next], LEFT |
428 | ret |
430 | ret |
429 | 431 | ||
430 | .Normal_y_ravny: |
432 | .Normal_y_ravny: |
Line 431... | Line 433... | ||
431 | 433 | ||
432 | cmp cl, ch |
434 | cmp cl, ch |
433 | jg .Napravlenie_to_right |
435 | jg .Napravlenie_to_right |
Line 434... | Line 436... | ||
434 | mov [snake_napravlenie_next], LEFT |
436 | mov [snake_direction_next], LEFT |
435 | ret |
437 | ret |
436 | 438 | ||
Line 445... | Line 447... | ||
445 | mov ch, [ebx] |
447 | mov ch, [ebx] |
Line 446... | Line 448... | ||
446 | 448 | ||
447 | cmp cl, 0 |
449 | cmp cl, 0 |
Line 448... | Line 450... | ||
448 | jne .skip3 |
450 | jne .skip3 |
449 | 451 | ||
450 | mov dl, byte[g_h] |
452 | mov dl, GRID_HEIGHT |
451 | dec dl |
453 | dec dl |
452 | cmp ch, dl |
454 | cmp ch, dl |
453 | jne .Normal_x_ravny |
455 | jne .Normal_x_ravny |
Line 454... | Line 456... | ||
454 | mov [snake_napravlenie_next], DOWN |
456 | mov [snake_direction_next], DOWN |
455 | ret |
457 | ret |
456 | 458 | ||
457 | .skip3: |
459 | .skip3: |
458 | mov dl, byte[g_h] |
460 | mov dl, GRID_HEIGHT |
459 | dec dl |
461 | dec dl |
460 | cmp ch, dl |
462 | cmp ch, dl |
461 | jne .Normal_x_ravny |
463 | jne .Normal_x_ravny |
462 | cmp ch, 0 |
464 | cmp ch, 0 |
Line 463... | Line 465... | ||
463 | jne .Normal_x_ravny |
465 | jne .Normal_x_ravny |
Line 464... | Line 466... | ||
464 | mov [snake_napravlenie_next], UP |
466 | mov [snake_direction_next], UP |
465 | ret |
467 | ret |
466 | 468 | ||
467 | .Normal_x_ravny: |
469 | .Normal_x_ravny: |
468 | 470 | ||
469 | cmp cl, ch ; !!! |
471 | cmp cl, ch ; !!! |
470 | jg .Napravlenie_to_down ; 0 1 2 ... |
472 | jg .Napravlenie_to_down ; 0 1 2 ... |
Line 471... | Line 473... | ||
471 | mov [snake_napravlenie_next], UP ; 1 |
473 | mov [snake_direction_next], UP ; 1 |
Line 472... | Line 474... | ||
472 | ret ; 2 |
474 | ret ; 2 |
Line 473... | Line 475... | ||
473 | ; . |
475 | ; . |
474 | .Napravlenie_to_down: ; . |
476 | .Napravlenie_to_down: ; . |
475 | mov [snake_napravlenie_next], DOWN ; . |
477 | mov [snake_direction_next], DOWN ; . |
476 | 478 | ||
477 | ret |
479 | ret |
478 | 480 | ||
Line 491... | Line 493... | ||
491 | cmp ax, word[eat] |
493 | cmp ax, word[eat] |
492 | jne .eat_and_new_head_are_different |
494 | jne .eat_and_new_head_are_different |
Line 493... | Line 495... | ||
493 | 495 | ||
494 | add [snake_length_x2], 2 |
496 | add [snake_length_x2], 2 |
495 | add [score], SCORE_EAT |
497 | add [score], SCORE_EAT |
496 | dec word[number_of_free_dots] |
498 | dec [number_of_free_dots] |
497 | cmp word[number_of_free_dots], 0 |
499 | cmp [number_of_free_dots], 0 |
498 | je Game_over |
500 | je Game_over |
499 | mov ax, word[eat] |
501 | mov ax, word[eat] |
500 | mov cl, 1 |
502 | mov cl, 1 |
501 | call Draw_on_map |
503 | call Draw_on_map |
Line 537... | Line 539... | ||
537 | cmp [score], 0 |
539 | cmp [score], 0 |
538 | je @f |
540 | je @f |
539 | dec [score] |
541 | dec [score] |
540 | call Draw_score_number |
542 | call Draw_score_number |
541 | @@: |
543 | @@: |
- | 544 | ||
- | 545 | cmp [play_mode], LEVELS_MODE |
|
- | 546 | jne @f |
|
- | 547 | cmp [snake_length_x2], (EAT_TO_END_LEVEL+3)*2 |
|
- | 548 | je Do_smth_between_levels |
|
- | 549 | @@: |
|
- | 550 | ||
542 | mcall 26, 9 |
551 | mcall 26, 9 |
543 | mov [time_before_waiting], eax |
552 | mov [time_before_waiting], eax |
544 | mov eax, [time_wait_limit] |
553 | mov eax, [time_wait_limit] |
545 | mov [time_to_wait], eax |
554 | mov [time_to_wait], eax |
546 | jmp Level_body.still |
555 | jmp Level_body.still |
Line 547... | Line 556... | ||
547 | 556 | ||
Line -... | Line 557... | ||
- | 557 | ;;---Snake_move------------------------------------------------------------------------------------------------------------ |
|
- | 558 | ||
- | 559 | ||
- | 560 | Do_smth_between_levels: |
|
- | 561 | ;;===Do_smth_between_levels================================================================================================ |
|
- | 562 | ||
- | 563 | inc [cur_level_number] |
|
- | 564 | cmp [cur_level_number], LAST_LEVEL_NUMBER+1 |
|
- | 565 | jne @f |
|
- | 566 | mov [cur_level_number], LEVELS_MODE_FIRST_LEVEL |
|
- | 567 | @@: |
|
- | 568 | ||
- | 569 | call Draw_splash |
|
- | 570 | ||
- | 571 | @@: |
|
- | 572 | mcall 2 |
|
- | 573 | cmp eax, 1 |
|
- | 574 | jne @b |
|
- | 575 | ||
- | 576 | jmp Level_begin |
|
- | 577 | ||
- | 578 | ;;---Do_smth_between_levels------------------------------------------------------------------------------------------------ |
|
- | 579 | ||
- | 580 | ||
- | 581 | Draw_splash: |
|
- | 582 | ;;===Draw_splash=========================================================================================================== |
|
- | 583 | ||
- | 584 | mov al, 0 |
|
- | 585 | mov cl, GRID_WIDTH-1 |
|
- | 586 | mov edx, [splash_background_color] |
|
- | 587 | ||
- | 588 | .draw: |
|
- | 589 | mov bh, GRID_HEIGHT-1 |
|
- | 590 | mov bl, al |
|
- | 591 | @@: |
|
- | 592 | call Draw_square |
|
- | 593 | sub bh, 2 |
|
- | 594 | cmp bh, 0 |
|
- | 595 | jg @b |
|
- | 596 | ||
- | 597 | inc al |
|
- | 598 | ||
- | 599 | mov bh, GRID_HEIGHT-2 |
|
- | 600 | mov bl, cl |
|
- | 601 | @@: |
|
- | 602 | call Draw_square |
|
- | 603 | sub bh, 2 |
|
- | 604 | cmp bh, 0 |
|
- | 605 | jnl @b |
|
- | 606 | ||
- | 607 | dec cl |
|
- | 608 | cmp cl, 0 |
|
- | 609 | jl @f |
|
- | 610 | ||
- | 611 | push eax ebx |
|
- | 612 | mcall 5,PAUSE_WHILE_DRAWING_SPLASH |
|
- | 613 | pop ebx eax |
|
- | 614 | ||
- | 615 | jmp .draw |
|
- | 616 | @@: |
|
- | 617 | ||
- | 618 | ||
- | 619 | ||
- | 620 | mov ax, 2*0x100+24 |
|
- | 621 | mov cx, 1*0x100+5 |
|
- | 622 | mov edx, [splash_level_string_color] |
|
- | 623 | mov esi, picture_level |
|
- | 624 | call Draw_picture |
|
- | 625 | ||
- | 626 | mov eax, [cur_level_number] |
|
- | 627 | mov dl, 10 |
|
- | 628 | div dl |
|
- | 629 | push ax |
|
- | 630 | ||
- | 631 | mov esi, digits_font |
|
- | 632 | @@: |
|
- | 633 | test al, al |
|
- | 634 | jz @f |
|
- | 635 | add esi, 20 |
|
- | 636 | dec al |
|
- | 637 | jmp @b |
|
- | 638 | @@: |
|
- | 639 | ||
- | 640 | mov ax, 9*0x100+4 |
|
- | 641 | mov cx, 8*0x100+5 |
|
- | 642 | mov edx, [splash_level_number_color] |
|
- | 643 | call Draw_picture |
|
- | 644 | ||
- | 645 | pop ax |
|
- | 646 | mov esi, digits_font |
|
- | 647 | @@: |
|
- | 648 | test ah, ah |
|
- | 649 | jz @f |
|
- | 650 | add esi, 20 |
|
- | 651 | dec ah |
|
- | 652 | jmp @b |
|
- | 653 | @@: |
|
- | 654 | ||
- | 655 | mov ax, 15*0x100+4 |
|
- | 656 | mov cx, 8*0x100+5 |
|
- | 657 | mov edx, [splash_level_number_color] |
|
- | 658 | call Draw_picture |
|
- | 659 | ||
- | 660 | mcall 5,PAUSE_BETWEEN_LEVELS |
|
- | 661 | ||
- | 662 | ret |
|
- | 663 | ||
- | 664 | ;;---Draw_splash----------------------------------------------------------------------------------------------------------- |
|
548 | ;;---Snake_move------------------------------------------------------------------------------------------------------------ |
665 | |
549 | 666 |