Rev 1522 | Rev 1677 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1522 | Rev 1566 | ||
---|---|---|---|
1 | ;;===HEADER==================================================================================================================== |
1 | ;;===HEADER==================================================================================================================== |
2 | 2 | ||
3 | use32 |
3 | use32 |
4 | org 0x0 |
4 | org 0x0 |
5 | db 'MENUET01' |
5 | db 'MENUET01' |
6 | dd 0x1,start,i_end,d_end,stacktop,0x0,cur_dir_path |
6 | dd 0x01,start,i_end,d_end,stacktop,0x0,cur_dir_path |
7 | 7 | ||
8 | ;;---HEADER-------------------------------------------------------------------------------------------------------------------- |
8 | ;;---HEADER-------------------------------------------------------------------------------------------------------------------- |
9 | 9 | ||
10 | include '../../../proc32.inc' |
10 | include '../../../proc32.inc' |
11 | include '../../../macros.inc' |
11 | include '../../../macros.inc' |
12 | include '../../../system/launch/trunk/mem.inc' |
12 | include '../../../system/launch/trunk/mem.inc' |
13 | include '../../../develop/libraries/libs-dev/.test/dll.inc' |
13 | include '../../../develop/libraries/libs-dev/.test/dll.inc' |
14 | include '../../../develop/libraries/box_lib/trunk/box_lib.mac' |
14 | include '../../../develop/libraries/box_lib/trunk/box_lib.mac' |
15 | ;include '../../../system/board/trunk/debug.inc' |
15 | ;include '../../../system/board/trunk/debug.inc' |
16 | 16 | ||
17 | ;;===Define_chapter============================================================================================================ |
17 | ;;===Define_chapter============================================================================================================ |
- | 18 | ||
- | 19 | GRID_WIDTH equ 28 |
|
- | 20 | GRID_HEIGHT equ 14 |
|
- | 21 | ||
- | 22 | MIN_SQUARE_SIDE_LENGTH equ 9 |
|
18 | 23 | ||
19 | SCORE_EAT equ 100 |
24 | SCORE_EAT equ 100 |
20 | 25 | ||
21 | LEFT equ 0 |
26 | LEFT equ 0 |
22 | DOWN equ 1 |
27 | DOWN equ 1 |
23 | UP equ 2 |
28 | UP equ 2 |
24 | RIGHT equ 3 |
29 | RIGHT equ 3 |
- | 30 | ||
- | 31 | struct LEVEL |
|
- | 32 | field db GRID_WIDTH*GRID_HEIGHT dup (?) |
|
- | 33 | snake_dots db 6 dup (?) |
|
- | 34 | snake_direction dd ? |
|
- | 35 | snake_direction_next dd ? |
|
- | 36 | number_of_stones dd ? |
|
- | 37 | ends |
|
- | 38 | ||
- | 39 | CLASSIC_MODE equ 0 |
|
- | 40 | LEVELS_MODE equ 1 |
|
- | 41 | ||
- | 42 | CLASSIC_MODE_FIRST_LEVEL equ 0 |
|
- | 43 | LEVELS_MODE_FIRST_LEVEL equ 1 |
|
- | 44 | ||
- | 45 | EAT_TO_END_LEVEL equ 12 |
|
- | 46 | PAUSE_BETWEEN_LEVELS equ 250 |
|
- | 47 | PAUSE_WHILE_DRAWING_SPLASH equ 4 |
|
- | 48 | ||
- | 49 | CHAMPION_NAME_LENGTH equ 15 |
|
- | 50 | LAST_LEVEL_NUMBER equ 12 |
|
25 | 51 | ||
26 | ;;---Define_chapter------------------------------------------------------------------------------------------------------------ |
52 | ;;---Define_chapter------------------------------------------------------------------------------------------------------------ |
27 | 53 | ||
28 | start: |
54 | start: |
29 | 55 | ||
30 | stdcall dll.Load,@IMPORT |
56 | stdcall dll.Load,@IMPORT |
31 | or eax, eax |
57 | or eax, eax |
32 | jnz Exit |
58 | jnz Exit |
33 | 59 | ||
34 | align 4 |
60 | align 4 |
35 | 61 | ||
36 | mov eax, cur_dir_path |
62 | mov eax, cur_dir_path |
37 | @@: |
63 | @@: |
38 | cmp byte[eax], 0 |
64 | cmp byte[eax], 0 |
39 | jz @f |
65 | jz @f |
40 | inc eax |
66 | inc eax |
41 | jmp @b |
67 | jmp @b |
42 | @@: |
68 | @@: |
43 | mov dword[eax], '.ini' |
69 | mov dword[eax], '.ini' |
44 | 70 | ||
45 | invoke ini.get_int, cur_dir_path, aPreferences, aSpeed, 80 |
71 | invoke ini.get_int, cur_dir_path, aPreferences, aSpeed, 80 |
46 | neg eax |
72 | neg eax |
47 | add [time_wait_limit], eax |
73 | add [time_wait_limit], eax |
48 | invoke ini.get_int, cur_dir_path, aPreferences, aSquare_side_length, 19 |
- | |
49 | mov [square_side_length], eax |
- | |
50 | invoke ini.get_int, cur_dir_path, aPreferences, aSpace_between_squares, 1 |
- | |
51 | mov [space_between_squares], eax |
- | |
52 | invoke ini.get_str, cur_dir_path, aPreferences, aTheme, aTheme_name, 31, aTheme_name |
74 | invoke ini.get_str, cur_dir_path, aPreferences, aTheme, aTheme_name, 31, aTheme_name |
53 | 75 | ||
54 | invoke ini.get_int, cur_dir_path, aTheme_name, aDecorations, 2 |
76 | invoke ini.get_int, cur_dir_path, aTheme_name, aDecorations, 2 |
55 | mov [decorations], al |
77 | mov [decorations], eax |
56 | invoke ini.get_color, cur_dir_path, aTheme_name, aBackground_color, 0x000000 |
78 | invoke ini.get_color, cur_dir_path, aTheme_name, aBackground_color, 0x000000 |
57 | or [background_color], eax |
79 | or [background_color], eax |
58 | or [window_style], eax |
80 | or [window_style], eax |
59 | invoke ini.get_color, cur_dir_path, aTheme_name, aDecorations_color, 0x00aaaa00 |
81 | invoke ini.get_color, cur_dir_path, aTheme_name, aDecorations_color, 0xAAAA00 |
60 | or [decorations_color], eax |
82 | or [decorations_color], eax |
61 | invoke ini.get_color, cur_dir_path, aTheme_name, aSnake_color, 0x1111ff |
83 | invoke ini.get_color, cur_dir_path, aTheme_name, aSnake_color, 0x1111ff |
62 | or [snake_color], eax |
84 | or [snake_color], eax |
63 | invoke ini.get_color, cur_dir_path, aTheme_name, aSnake_head_color, 0x1111ff |
85 | invoke ini.get_color, cur_dir_path, aTheme_name, aSnake_head_color, 0x6B6Bff |
64 | or [snake_head_color], eax |
86 | or [snake_head_color], eax |
65 | invoke ini.get_color, cur_dir_path, aTheme_name, aSnake_picture_color, 0x4488ff |
87 | invoke ini.get_color, cur_dir_path, aTheme_name, aSnake_picture_color, 0x4488ff |
66 | or [snake_picture_color], eax |
88 | or [snake_picture_color], eax |
67 | invoke ini.get_color, cur_dir_path, aTheme_name, aVersion_picture_color, 0x55ff55 |
89 | invoke ini.get_color, cur_dir_path, aTheme_name, aVersion_picture_color, 0x55ff55 |
68 | or [version_picture_color], eax |
90 | or [version_picture_color], eax |
69 | invoke ini.get_color, cur_dir_path, aTheme_name, aPause_picture_color, 0x11ff11 |
91 | invoke ini.get_color, cur_dir_path, aTheme_name, aPause_picture_color, 0x11ff11 |
70 | or [pause_picture_color], eax |
92 | or [pause_picture_color], eax |
71 | invoke ini.get_color, cur_dir_path, aTheme_name, aGame_over_picture_color, 0xff1111 |
93 | invoke ini.get_color, cur_dir_path, aTheme_name, aGame_over_picture_color, 0xff1111 |
72 | or [game_over_picture_color], eax |
94 | or [game_over_picture_color], eax |
- | 95 | invoke ini.get_color, cur_dir_path, aTheme_name, aYou_win_picture_color, 0xffff11 |
|
- | 96 | or [you_win_picture_color], eax |
|
73 | invoke ini.get_color, cur_dir_path, aTheme_name, aEat_color, 0xffff11 |
97 | invoke ini.get_color, cur_dir_path, aTheme_name, aEat_color, 0xffff11 |
74 | or [eat_color], eax |
98 | or [eat_color], eax |
75 | invoke ini.get_color, cur_dir_path, aTheme_name, aNavigation_strings_color, 0x80ff7777 |
99 | invoke ini.get_color, cur_dir_path, aTheme_name, aNavigation_strings_color, 0x80ff7777 |
76 | or [navigation_strings_color], eax |
100 | or [navigation_strings_color], eax |
77 | invoke ini.get_color, cur_dir_path, aTheme_name, aGame_over_strings_color, 0x80ff9900 |
101 | invoke ini.get_color, cur_dir_path, aTheme_name, aGame_over_strings_color, 0x80ff9900 |
78 | or [game_over_strings_color], eax |
102 | or [game_over_strings_color], eax |
79 | invoke ini.get_color, cur_dir_path, aTheme_name, aScore_string_color, 0x80ffffff |
103 | invoke ini.get_color, cur_dir_path, aTheme_name, aScore_string_color, 0x80ffffff |
80 | or [score_string_color], eax |
104 | or [score_string_color], eax |
- | 105 | invoke ini.get_color, cur_dir_path, aTheme_name, aLevel_string_color, 0xffffff |
|
- | 106 | or [level_string_color], eax |
|
81 | invoke ini.get_color, cur_dir_path, aTheme_name, aHiscore_string_color, 0x80ffffff |
107 | invoke ini.get_color, cur_dir_path, aTheme_name, aHiscore_string_color, 0x80ffffff |
82 | or [hiscore_string_color], eax |
108 | or [hiscore_string_color], eax |
83 | invoke ini.get_color, cur_dir_path, aTheme_name, aChampion_string_color, 0x80ffffff |
109 | invoke ini.get_color, cur_dir_path, aTheme_name, aChampion_string_color, 0x80ffffff |
84 | or [champion_string_color], eax |
110 | or [champion_string_color], eax |
85 | invoke ini.get_color, cur_dir_path, aTheme_name, aGame_over_hiscore_color, 0x80ffdd44 |
111 | invoke ini.get_color, cur_dir_path, aTheme_name, aGame_over_hiscore_color, 0x80ffdd44 |
86 | or [game_over_hiscore_color], eax |
112 | or [game_over_hiscore_color], eax |
87 | invoke ini.get_color, cur_dir_path, aTheme_name, aScore_number_color, 0xffffff |
113 | invoke ini.get_color, cur_dir_path, aTheme_name, aScore_number_color, 0xffffff |
88 | or [score_number_color], eax |
114 | or [score_number_color], eax |
- | 115 | invoke ini.get_color, cur_dir_path, aTheme_name, aLevel_number_color, 0xffffff |
|
- | 116 | or [level_number_color], eax |
|
89 | invoke ini.get_color, cur_dir_path, aTheme_name, aHiscore_number_color, 0x00ffffff |
117 | invoke ini.get_color, cur_dir_path, aTheme_name, aHiscore_number_color, 0x00ffffff |
90 | or [hiscore_number_color], eax |
118 | or [hiscore_number_color], eax |
91 | invoke ini.get_color, cur_dir_path, aTheme_name, aChampion_name_color, 0x80ffffff |
119 | invoke ini.get_color, cur_dir_path, aTheme_name, aChampion_name_color, 0x80ffffff |
92 | or [champion_name_color], eax |
120 | or [champion_name_color], eax |
93 | invoke ini.get_color, cur_dir_path, aTheme_name, aEdit_box_selection_color, 0x00aa00 |
121 | invoke ini.get_color, cur_dir_path, aTheme_name, aEdit_box_selection_color, 0x00aa00 |
94 | or [edit1+0x10], eax |
122 | or [edit1.shift_color], eax |
- | 123 | invoke ini.get_color, cur_dir_path, aTheme_name, aButton_color, 0xDDDDDD |
|
- | 124 | or [button_color], eax |
|
- | 125 | invoke ini.get_color, cur_dir_path, aTheme_name, aButton_text_color, 0x000000 |
|
- | 126 | or [button_text_color], eax |
|
- | 127 | invoke ini.get_color, cur_dir_path, aTheme_name, aStone_color, 0x5f8700 |
|
- | 128 | or [stone_color], eax |
|
- | 129 | invoke ini.get_color, cur_dir_path, aTheme_name, aSplash_background_color, 0xAAAA00 |
|
- | 130 | or [splash_background_color], eax |
|
- | 131 | invoke ini.get_color, cur_dir_path, aTheme_name, aSplash_level_number_color, 0x000000 |
|
- | 132 | or [splash_level_number_color], eax |
|
- | 133 | invoke ini.get_color, cur_dir_path, aTheme_name, aSplash_level_string_color, 0x000000 |
|
- | 134 | or [splash_level_string_color], eax |
|
- | 135 | ||
- | 136 | invoke ini.get_int, cur_dir_path, aReserved, aSquare_side_length, 19 |
|
- | 137 | mov [square_side_length], eax |
|
- | 138 | invoke ini.get_str, cur_dir_path, aReserved, aChampion_name_classic, champion_name_classic, CHAMPION_NAME_LENGTH, champion_name_classic |
|
- | 139 | invoke ini.get_int, cur_dir_path, aReserved, aHiscore_classic, 777 |
|
- | 140 | or [hi_score_classic], eax |
|
- | 141 | invoke ini.get_str, cur_dir_path, aReserved, aChampion_name_levels, champion_name_levels, CHAMPION_NAME_LENGTH, champion_name_levels |
|
- | 142 | invoke ini.get_int, cur_dir_path, aReserved, aHiscore_levels, 777 |
|
- | 143 | or [hi_score_levels], eax |
|
95 | 144 | ||
96 | mov eax, [background_color] |
145 | mov eax, [background_color] |
97 | mov [edit1+0x0C], eax |
146 | mov [edit1.color], eax |
98 | mov [edit1+0x14], eax |
147 | mov [edit1.focus_border_color], eax |
99 | mov [edit1+0x18], eax |
148 | mov [edit1.blur_border_color], eax |
100 | mov eax, [game_over_hiscore_color] |
149 | mov eax, [game_over_hiscore_color] |
- | 150 | mov [edit1.text_color], eax |
|
- | 151 | ||
- | 152 | mcall 37,4,cursor_data,2 ; load empty cursor (for "hiding" cursor while level_mode) |
|
101 | mov [edit1+0x1C], eax |
153 | mov [cursor_handle], eax |
102 | 154 | ||
103 | call Set_geometry |
155 | call Set_geometry |
104 | 156 | ||
105 | include 'first_menu.asm' ; First menu body and functions |
157 | include 'first_menu.asm' ; First menu body and functions |
106 | include 'level.asm' ; Level body and functions (game process) |
158 | include 'level.asm' ; Level body and functions (game process) |
107 | include 'pause.asm' ; Pause body and functions |
159 | include 'pause.asm' ; Pause body and functions |
108 | include 'game_over.asm' ; Game_over body and functions |
160 | include 'game_over.asm' ; Game_over body and functions |
109 | 161 | ||
110 | ;;===Some_functions============================================================================================================ |
162 | ;;===Some_functions============================================================================================================ |
- | 163 | ||
- | 164 | ||
- | 165 | Save_do_smth_else_and_exit: |
|
- | 166 | ;;===Save_do_smth_else_and_exit============================================================================================ |
|
- | 167 | ||
- | 168 | mcall 37,6,[cursor_handle] ; delete cursor |
|
- | 169 | ||
- | 170 | invoke ini.set_int, cur_dir_path, aReserved, aSquare_side_length, [square_side_length] |
|
- | 171 | ||
- | 172 | mov edi, champion_name_classic |
|
- | 173 | xor al, al |
|
- | 174 | mov ecx, CHAMPION_NAME_LENGTH+1 |
|
- | 175 | cld |
|
- | 176 | repne scasb |
|
- | 177 | neg ecx |
|
- | 178 | add ecx, CHAMPION_NAME_LENGTH |
|
- | 179 | invoke ini.set_str, cur_dir_path, aReserved, aChampion_name_classic, champion_name_classic, ecx |
|
- | 180 | invoke ini.set_int, cur_dir_path, aReserved, aHiscore_classic, [hi_score_classic] |
|
- | 181 | ||
- | 182 | mov edi, champion_name_levels |
|
- | 183 | xor al, al |
|
- | 184 | mov ecx, CHAMPION_NAME_LENGTH+1 |
|
- | 185 | cld |
|
- | 186 | repne scasb |
|
- | 187 | neg ecx |
|
- | 188 | add ecx, CHAMPION_NAME_LENGTH |
|
- | 189 | invoke ini.set_str, cur_dir_path, aReserved, aChampion_name_levels, champion_name_levels, ecx |
|
- | 190 | invoke ini.set_int, cur_dir_path, aReserved, aHiscore_levels, [hi_score_levels] |
|
- | 191 | ||
- | 192 | ;;---Save_do_smth_else_and_exit-------------------------------------------------------------------------------------------- |
|
- | 193 | ||
111 | 194 | ||
112 | Exit: |
195 | Exit: |
113 | ;;===Exit================================================================================================================== |
196 | ;;===Exit================================================================================================================== |
114 | 197 | ||
115 | or eax, -1 |
198 | or eax, -1 |
116 | int 0x40 |
199 | int 0x40 |
117 | 200 | ||
118 | ;;---Exit------------------------------------------------------------------------------------------------------------------ |
201 | ;;---Exit------------------------------------------------------------------------------------------------------------------ |
119 | 202 | ||
120 | 203 | ||
121 | Set_geometry: |
204 | Set_geometry: |
122 | ;;===Set_geometry========================================================================================================== |
205 | ;;===Set_geometry========================================================================================================== |
123 | 206 | ||
124 | mov eax, [space_between_squares] |
207 | mov eax, [square_side_length] |
125 | add eax, [square_side_length] |
208 | inc eax ; space between squares |
126 | mov [g_s], eax |
209 | mov [g_s], eax |
127 | 210 | ||
128 | mov eax, [g_s] |
211 | mov eax, [g_s] |
129 | shr eax, 1 |
212 | shr eax, 1 |
130 | mov ebx, eax |
213 | mov ebx, eax |
131 | shr ebx, 1 |
214 | shr ebx, 1 |
132 | add eax, ebx |
215 | add eax, ebx |
133 | mov [g_e], eax |
216 | mov [g_e], eax |
134 | 217 | ||
135 | mov eax, [g_s] |
218 | mov eax, [g_s] |
136 | add eax, [g_e] |
219 | add eax, [g_e] |
137 | mov [gbxm1], eax |
220 | mov [gbxm1], eax |
138 | 221 | ||
139 | mov eax, [g_e] |
222 | mov eax, [g_e] |
140 | add eax, 25 |
223 | add eax, 25 |
141 | mov [gbym1], eax |
224 | mov [gbym1], eax |
142 | - | ||
143 | mov eax, [g_w] |
- | |
144 | mul word[g_h] |
- | |
145 | mov [gw_mul_gh], eax |
- | |
146 | 225 | ||
147 | mov edx, [g_w] |
226 | mov edx, GRID_WIDTH |
148 | mov eax, [g_s] |
227 | mov eax, [g_s] |
149 | mul dx |
228 | mul dx |
150 | mov [gw_mul_gs], eax |
229 | mov [gw_mul_gs], eax |
151 | 230 | ||
152 | mov edx, [g_h] |
231 | mov edx, GRID_HEIGHT |
153 | mov eax, [g_s] |
232 | mov eax, [g_s] |
154 | mul dx |
233 | mul dx |
155 | mov [gh_mul_gs], eax |
234 | mov [gh_mul_gs], eax |
156 | 235 | ||
157 | mov eax, [gbxm1] |
236 | mov eax, [gbxm1] |
158 | add eax, [gw_mul_gs] |
237 | add eax, [gw_mul_gs] |
159 | mov [gbxm1_plus_gw_mul_gs], eax |
238 | mov [gbxm1_plus_gw_mul_gs], eax |
160 | 239 | ||
161 | mov eax, [gbym1] |
240 | mov eax, [gbym1] |
162 | add eax, [gh_mul_gs] |
241 | add eax, [gh_mul_gs] |
163 | mov [gbym1_plus_gh_mul_gs], eax |
242 | mov [gbym1_plus_gh_mul_gs], eax |
164 | 243 | ||
165 | mov eax, [g_s] |
244 | mov eax, [g_s] |
166 | shl eax, 16 |
245 | shl eax, 16 |
167 | add eax, [g_s] |
246 | add eax, [g_s] |
168 | mov [gs_shl16_gs], eax |
247 | mov [gs_shl16_gs], eax |
169 | 248 | ||
170 | mov eax, [gbxm1] |
249 | mov eax, [gbxm1] |
171 | shl eax, 16 |
250 | shl eax, 16 |
172 | add eax, [gbxm1] |
251 | add eax, [gbxm1] |
173 | mov [gbxm1_shl16_gbxm1], eax |
252 | mov [gbxm1_shl16_gbxm1], eax |
174 | 253 | ||
175 | mov eax, [gbym1] |
254 | mov eax, [gbym1] |
176 | shl eax, 16 |
255 | shl eax, 16 |
177 | add eax, [gbym1] |
256 | add eax, [gbym1] |
178 | mov [gbym1_shl16_gbym1], eax |
257 | mov [gbym1_shl16_gbym1], eax |
179 | 258 | ||
180 | 259 | ||
181 | mov eax, [gw_mul_gs] |
260 | mov eax, [gw_mul_gs] |
182 | add eax, [gbxm1] |
261 | add eax, [gbxm1] |
183 | add eax, [gbxm1] |
262 | add eax, [gbxm1] |
184 | add eax, 5*2 ; skin width |
263 | add eax, 5*2 ; skin width |
185 | mov [window_width], eax |
264 | mov [window_width], eax |
- | 265 | ||
186 | 266 | mcall 48,4 ; get skin header height |
|
187 | mov eax, [gh_mul_gs] |
267 | add eax, [gh_mul_gs] |
188 | add eax, [gbym1] |
268 | add eax, [gbym1] |
189 | add eax, [g_e] |
269 | add eax, [g_e] |
190 | add eax, 30 |
270 | add eax, 30 |
191 | add eax, 22+5 ; skin height |
271 | add eax, 5 ; skin height (bottom part) |
192 | mov [window_height], eax |
272 | mov [window_height], eax |
193 | 273 | ||
194 | mcall 48, 5 |
274 | mcall 48, 5 |
195 | mov dx, ax |
275 | mov dx, ax |
196 | shr eax, 16 |
276 | shr eax, 16 |
197 | sub dx, ax |
277 | sub dx, ax |
198 | cmp dx, word[window_width] ; does window fit to work area width? |
278 | cmp dx, word[window_width] ; does window fit to work area width? |
199 | jnl @f |
279 | jnl @f |
200 | dec [square_side_length] |
280 | dec [square_side_length] |
201 | ; dps 'snake: Window does not fit to screen.' |
- | |
202 | ; newline |
- | |
203 | ; dps 'Square_side_length was decreased.' |
- | |
204 | ; newline |
- | |
205 | ; dps 'Check you config file! (snake.ini)' |
- | |
206 | ; newline |
- | |
207 | jmp Set_geometry |
281 | jmp Set_geometry |
208 | @@: |
282 | @@: |
209 | 283 | ||
210 | mov cx, bx |
284 | mov cx, bx |
211 | shr ebx, 16 |
285 | shr ebx, 16 |
212 | sub cx, bx |
286 | sub cx, bx |
213 | cmp cx, word[window_height] ; does window fit to work area height? |
287 | cmp cx, word[window_height] ; does window fit to work area height? |
214 | jnl @f |
288 | jnl @f |
215 | dec [square_side_length] |
289 | dec [square_side_length] |
216 | ; dps 'snake: Window does not fit to screen.' |
- | |
217 | ; newline |
- | |
218 | ; dps 'Square_side_length was decreased.' |
- | |
219 | ; newline |
- | |
220 | ; dps 'Check you config file! (snake.ini)' |
- | |
221 | ; newline |
- | |
222 | jmp Set_geometry |
290 | jmp Set_geometry |
223 | @@: |
291 | @@: |
224 | 292 | ||
225 | sub dx, word[window_width] |
293 | sub dx, word[window_width] |
226 | shr dx, 1 |
294 | shr dx, 1 |
227 | mov word[wp_x], dx |
295 | mov word[wp_x], dx |
228 | sub cx, word[window_height] |
296 | sub cx, word[window_height] |
229 | shr cx, 1 |
297 | shr cx, 1 |
230 | mov dx, cx |
298 | mov dx, cx |
231 | shr cx, 1 |
299 | shr cx, 1 |
232 | add cx, dx |
300 | add cx, dx |
233 | mov word[wp_y], cx |
301 | mov word[wp_y], cx |
234 | 302 | ||
235 | mov [top_strings], 8 |
303 | mov [top_strings], 8 |
236 | mov eax, [window_height] |
304 | mov eax, [window_height] |
237 | sub eax, 50 |
305 | sub eax, 50 |
238 | mov [bottom_top_strings], eax |
306 | mov [bottom_top_strings], eax |
239 | add eax, 6 |
307 | add eax, 6 |
240 | mov [bottom_middle_strings], eax |
308 | mov [bottom_middle_strings], eax |
241 | add eax, 6 |
309 | add eax, 6 |
242 | mov [bottom_bottom_strings], eax |
310 | mov [bottom_bottom_strings], eax |
243 | 311 | ||
244 | sub eax, 4 |
312 | sub eax, 4 |
245 | mov [edit1+0x08], eax |
313 | mov [edit1.top], eax |
- | 314 | ||
- | 315 | ||
- | 316 | mov eax, [g_s] |
|
- | 317 | shl eax, 2 |
|
- | 318 | sub eax, 2 |
|
- | 319 | mov [button_width_short], eax |
|
- | 320 | mov eax, [g_s] |
|
- | 321 | shl eax, 3 |
|
- | 322 | add eax, [g_s] |
|
- | 323 | sub eax, 2 |
|
- | 324 | mov [button_width_long], eax |
|
- | 325 | mov eax, [g_s] |
|
- | 326 | sub eax, 2 |
|
- | 327 | mov [button_height], eax |
|
- | 328 | ||
- | 329 | mov bl, 0x10 |
|
- | 330 | mov cl, 0x08 |
|
- | 331 | ||
- | 332 | mov al, byte[g_s] |
|
- | 333 | mul bl |
|
- | 334 | mov bx, ax |
|
- | 335 | add bx, word[gbxm1] |
|
- | 336 | inc bx |
|
- | 337 | ||
- | 338 | mov al, byte[g_s] |
|
- | 339 | mul cl |
|
- | 340 | mov cx, ax |
|
- | 341 | add cx, word[gbym1] |
|
- | 342 | inc cx |
|
- | 343 | ||
- | 344 | mov [button_x_left], ebx |
|
- | 345 | mov [button_y_top], ecx |
|
- | 346 | ||
- | 347 | add ebx, [g_s] |
|
- | 348 | add ebx, [g_s] |
|
- | 349 | add ebx, [g_s] |
|
- | 350 | add ebx, [g_s] |
|
- | 351 | add ebx, [g_s] |
|
- | 352 | ||
- | 353 | mov [button_x_right], ebx |
|
- | 354 | ||
- | 355 | add ecx, [g_s] |
|
- | 356 | add ecx, [g_s] |
|
- | 357 | ||
- | 358 | mov [button_y_middle], ecx |
|
- | 359 | ||
- | 360 | add ecx, [g_s] |
|
- | 361 | add ecx, [g_s] |
|
- | 362 | ||
- | 363 | mov [button_y_bottom], ecx |
|
- | 364 | ||
246 | 365 | ||
247 | ret |
366 | ret |
248 | 367 | ||
249 | ;;---Set_geometry------------------------------------------------------------------------------------------------------ |
368 | ;;---Set_geometry------------------------------------------------------------------------------------------------------ |
250 | 369 | ||
- | 370 | ||
- | 371 | Increase_geometry: |
|
- | 372 | ;;===Increase_geometry================================================================================================= |
|
- | 373 | ||
- | 374 | inc [square_side_length] |
|
- | 375 | call Set_geometry |
|
- | 376 | mcall 67,[wp_x],[wp_y],[window_width],[window_height] |
|
- | 377 | ||
- | 378 | ret |
|
- | 379 | ||
- | 380 | ;;---Increase_geometry------------------------------------------------------------------------------------------------- |
|
- | 381 | ||
- | 382 | ||
- | 383 | Decrease_geometry: |
|
- | 384 | ;;===Decrease_geometry================================================================================================= |
|
- | 385 | ||
- | 386 | cmp [square_side_length], MIN_SQUARE_SIDE_LENGTH |
|
- | 387 | je @f |
|
- | 388 | dec [square_side_length] |
|
- | 389 | call Set_geometry |
|
- | 390 | mcall 67,[wp_x],[wp_y],[window_width],[window_height] |
|
- | 391 | ||
- | 392 | @@: |
|
- | 393 | ret |
|
- | 394 | ||
- | 395 | ;;---Decrease_geometry------------------------------------------------------------------------------------------------- |
|
- | 396 | ||
251 | 397 | ||
252 | Draw_decorations: |
398 | Draw_decorations: |
253 | ;;===Draw_decorations================================================================================================== |
399 | ;;===Draw_decorations================================================================================================== |
254 | 400 | ||
255 | mov al, [decorations] |
401 | mov al, byte[decorations] |
256 | dec al |
402 | dec al |
257 | jz grid_lines |
403 | jz grid_lines |
258 | dec al |
404 | dec al |
259 | jz grid_lines_with_ends |
405 | jz grid_lines_with_ends |
260 | dec al |
406 | dec al |
261 | jz grid_lines_with_corners |
407 | jz grid_lines_with_corners |
262 | dec al |
408 | dec al |
263 | jz grid_dots |
409 | jz grid_dots |
264 | dec al |
410 | dec al |
265 | jz borders_lines |
411 | jz borders_lines |
266 | dec al |
412 | dec al |
267 | jz borders_lines_with_corners |
413 | jz borders_lines_with_corners |
268 | dec al |
414 | dec al |
269 | jz borders_dots |
415 | jz borders_dots |
270 | dec al |
416 | dec al |
271 | jz corners_dots |
417 | jz corners_dots |
272 | dec al |
418 | dec al |
273 | jz corners_inner |
419 | jz corners_inner |
274 | dec al |
420 | dec al |
275 | jz corners_outer |
421 | jz corners_outer |
276 | dec al |
422 | dec al |
277 | jz corners_crosses |
423 | jz corners_crosses |
278 | ret |
424 | ret |
279 | 425 | ||
280 | 426 | ||
281 | grid_lines: |
427 | grid_lines: |
282 | 428 | ||
283 | mov eax, 38 |
429 | mov eax, 38 |
284 | ;mov ebx, (GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1) |
430 | ;mov ebx, (GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1) |
285 | mov ebx, [gbxm1_shl16_gbxm1] |
431 | mov ebx, [gbxm1_shl16_gbxm1] |
286 | ;mov ecx, (GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP) |
432 | ;mov ecx, (GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP) |
287 | mov ecx, [gbym1_shl16_gbym1] |
433 | mov ecx, [gbym1_shl16_gbym1] |
288 | add ecx, [gh_mul_gs] |
434 | add ecx, [gh_mul_gs] |
289 | mov edx, [decorations_color] |
435 | mov edx, [decorations_color] |
290 | mov esi, [g_w] |
436 | mov esi, GRID_WIDTH |
291 | add esi, 1 |
437 | add esi, 1 |
292 | 438 | ||
293 | @@: |
439 | @@: |
294 | mcall |
440 | mcall |
295 | add ebx, [gs_shl16_gs] |
441 | add ebx, [gs_shl16_gs] |
296 | dec esi |
442 | dec esi |
297 | jnz @b |
443 | jnz @b |
298 | 444 | ||
299 | ;mov ebx, (GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP) |
445 | ;mov ebx, (GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP) |
300 | mov ebx, [gbxm1_shl16_gbxm1] |
446 | mov ebx, [gbxm1_shl16_gbxm1] |
301 | add ebx, [gw_mul_gs] |
447 | add ebx, [gw_mul_gs] |
302 | mov ecx, [gbym1_shl16_gbym1] |
448 | mov ecx, [gbym1_shl16_gbym1] |
303 | mov esi, [g_h] |
449 | mov esi, GRID_HEIGHT |
304 | add esi, 1 |
450 | add esi, 1 |
305 | 451 | ||
306 | @@: |
452 | @@: |
307 | mcall |
453 | mcall |
308 | add ecx, [gs_shl16_gs] |
454 | add ecx, [gs_shl16_gs] |
309 | dec esi |
455 | dec esi |
310 | jnz @b |
456 | jnz @b |
311 | 457 | ||
312 | ret |
458 | ret |
313 | 459 | ||
314 | 460 | ||
315 | grid_lines_with_ends: |
461 | grid_lines_with_ends: |
316 | 462 | ||
317 | mov eax, 38 |
463 | mov eax, 38 |
318 | mov ebx, [gbxm1_shl16_gbxm1] |
464 | mov ebx, [gbxm1_shl16_gbxm1] |
319 | mov ecx, [gbym1] |
465 | mov ecx, [gbym1] |
320 | sub ecx, [g_e] |
466 | sub ecx, [g_e] |
321 | shl ecx, 16 |
467 | shl ecx, 16 |
322 | add ecx, [gbym1_plus_gh_mul_gs] |
468 | add ecx, [gbym1_plus_gh_mul_gs] |
323 | add ecx, [g_e] |
469 | add ecx, [g_e] |
324 | mov edx, [decorations_color] |
470 | mov edx, [decorations_color] |
325 | mov esi, [g_w] |
471 | mov esi, GRID_WIDTH |
326 | add esi, 1 |
472 | add esi, 1 |
327 | 473 | ||
328 | @@: |
474 | @@: |
329 | mcall |
475 | mcall |
330 | add ebx, [gs_shl16_gs] |
476 | add ebx, [gs_shl16_gs] |
331 | dec esi |
477 | dec esi |
332 | jnz @b |
478 | jnz @b |
333 | 479 | ||
334 | mov ebx, [gbxm1] |
480 | mov ebx, [gbxm1] |
335 | sub ebx, [g_e] |
481 | sub ebx, [g_e] |
336 | shl ebx, 16 |
482 | shl ebx, 16 |
337 | add ebx, [gbxm1_plus_gw_mul_gs] |
483 | add ebx, [gbxm1_plus_gw_mul_gs] |
338 | add ebx, [g_e] |
484 | add ebx, [g_e] |
339 | mov ecx, [gbym1_shl16_gbym1] |
485 | mov ecx, [gbym1_shl16_gbym1] |
340 | mov esi, [g_h] |
486 | mov esi, GRID_HEIGHT |
341 | add esi, 1 |
487 | add esi, 1 |
342 | 488 | ||
343 | @@: |
489 | @@: |
344 | mcall |
490 | mcall |
345 | add ecx, [gs_shl16_gs] |
491 | add ecx, [gs_shl16_gs] |
346 | dec esi |
492 | dec esi |
347 | jnz @b |
493 | jnz @b |
348 | 494 | ||
349 | ret |
495 | ret |
350 | 496 | ||
351 | 497 | ||
352 | grid_lines_with_corners: |
498 | grid_lines_with_corners: |
353 | 499 | ||
354 | call grid_lines |
500 | call grid_lines |
355 | call corners_outer |
501 | call corners_outer |
356 | 502 | ||
357 | ret |
503 | ret |
358 | 504 | ||
359 | 505 | ||
360 | grid_dots: |
506 | grid_dots: |
361 | 507 | ||
362 | mov eax, 1 |
508 | mov eax, 1 |
363 | mov ebx, [gbxm1] |
509 | mov ebx, [gbxm1] |
364 | mov ecx, [gbym1] |
510 | mov ecx, [gbym1] |
365 | mov edx, [decorations_color] |
511 | mov edx, [decorations_color] |
366 | 512 | ||
367 | @@: |
513 | @@: |
368 | mcall |
514 | mcall |
369 | add ebx, [g_s] |
515 | add ebx, [g_s] |
370 | cmp ebx, [gbxm1_plus_gw_mul_gs] |
516 | cmp ebx, [gbxm1_plus_gw_mul_gs] |
371 | jng @b |
517 | jng @b |
372 | add ecx, [g_s] |
518 | add ecx, [g_s] |
373 | cmp ecx, [gbym1_plus_gh_mul_gs] |
519 | cmp ecx, [gbym1_plus_gh_mul_gs] |
374 | jg @f |
520 | jg @f |
375 | mov ebx, [gbxm1] |
521 | mov ebx, [gbxm1] |
376 | jmp @b |
522 | jmp @b |
377 | 523 | ||
378 | @@: |
524 | @@: |
379 | ret |
525 | ret |
380 | 526 | ||
381 | 527 | ||
382 | borders_lines: |
528 | borders_lines: |
383 | 529 | ||
384 | mov eax, 38 |
530 | mov eax, 38 |
385 | mov ebx, [gbxm1_shl16_gbxm1] |
531 | mov ebx, [gbxm1_shl16_gbxm1] |
386 | mov ecx, [gbym1_shl16_gbym1] |
532 | mov ecx, [gbym1_shl16_gbym1] |
387 | add ecx, [gh_mul_gs] |
533 | add ecx, [gh_mul_gs] |
388 | mov edx, [decorations_color] |
534 | mov edx, [decorations_color] |
389 | mcall |
535 | mcall |
390 | 536 | ||
391 | mov ebx, [gbxm1_plus_gw_mul_gs] |
537 | mov ebx, [gbxm1_plus_gw_mul_gs] |
392 | shl ebx, 16 |
538 | shl ebx, 16 |
393 | add ebx, [gbxm1_plus_gw_mul_gs] |
539 | add ebx, [gbxm1_plus_gw_mul_gs] |
394 | mcall |
540 | mcall |
395 | 541 | ||
396 | mov ebx, [gbxm1_shl16_gbxm1] |
542 | mov ebx, [gbxm1_shl16_gbxm1] |
397 | add ebx, [gw_mul_gs] |
543 | add ebx, [gw_mul_gs] |
398 | mov ecx, [gbym1_shl16_gbym1] |
544 | mov ecx, [gbym1_shl16_gbym1] |
399 | mcall |
545 | mcall |
400 | 546 | ||
401 | mov ecx, [gbym1_plus_gh_mul_gs] |
547 | mov ecx, [gbym1_plus_gh_mul_gs] |
402 | shl ecx, 16 |
548 | shl ecx, 16 |
403 | add ecx, [gbym1_plus_gh_mul_gs] |
549 | add ecx, [gbym1_plus_gh_mul_gs] |
404 | mcall |
550 | mcall |
405 | 551 | ||
406 | ret |
552 | ret |
407 | 553 | ||
408 | 554 | ||
409 | borders_lines_with_corners: |
555 | borders_lines_with_corners: |
410 | 556 | ||
411 | call borders_lines |
557 | call borders_lines |
412 | call corners_outer |
558 | call corners_outer |
413 | 559 | ||
414 | ret |
560 | ret |
415 | 561 | ||
416 | 562 | ||
417 | borders_dots: |
563 | borders_dots: |
418 | 564 | ||
419 | mov eax, 1 |
565 | mov eax, 1 |
420 | mov ebx, [gbxm1] |
566 | mov ebx, [gbxm1] |
421 | mov ecx, [gbym1] |
567 | mov ecx, [gbym1] |
422 | mov edx, [decorations_color] |
568 | mov edx, [decorations_color] |
423 | @@: |
569 | @@: |
424 | mcall |
570 | mcall |
425 | add ebx, [g_s] |
571 | add ebx, [g_s] |
426 | cmp ebx, [gbxm1_plus_gw_mul_gs] |
572 | cmp ebx, [gbxm1_plus_gw_mul_gs] |
427 | jng @b |
573 | jng @b |
428 | 574 | ||
429 | mov ebx, [gbxm1] |
575 | mov ebx, [gbxm1] |
430 | mov ecx, [gbym1_plus_gh_mul_gs] |
576 | mov ecx, [gbym1_plus_gh_mul_gs] |
431 | @@: |
577 | @@: |
432 | mcall |
578 | mcall |
433 | add ebx, [g_s] |
579 | add ebx, [g_s] |
434 | cmp ebx, [gbxm1_plus_gw_mul_gs] |
580 | cmp ebx, [gbxm1_plus_gw_mul_gs] |
435 | jng @b |
581 | jng @b |
436 | 582 | ||
437 | mov ebx, [gbxm1] |
583 | mov ebx, [gbxm1] |
438 | mov ecx, [gbym1] |
584 | mov ecx, [gbym1] |
439 | @@: |
585 | @@: |
440 | mcall |
586 | mcall |
441 | add ecx, [g_s] |
587 | add ecx, [g_s] |
442 | cmp ecx, [gbym1_plus_gh_mul_gs] |
588 | cmp ecx, [gbym1_plus_gh_mul_gs] |
443 | jng @b |
589 | jng @b |
444 | 590 | ||
445 | mov ebx, [gbxm1_plus_gw_mul_gs] |
591 | mov ebx, [gbxm1_plus_gw_mul_gs] |
446 | mov ecx, [gbym1] |
592 | mov ecx, [gbym1] |
447 | @@: |
593 | @@: |
448 | mcall |
594 | mcall |
449 | add ecx, [g_s] |
595 | add ecx, [g_s] |
450 | cmp ecx, [gbym1_plus_gh_mul_gs] |
596 | cmp ecx, [gbym1_plus_gh_mul_gs] |
451 | jng @b |
597 | jng @b |
452 | 598 | ||
453 | ret |
599 | ret |
454 | 600 | ||
455 | 601 | ||
456 | corners_dots: |
602 | corners_dots: |
457 | 603 | ||
458 | mov eax, 13 |
604 | mov eax, 13 |
459 | mov ebx, [gbxm1] |
605 | mov ebx, [gbxm1] |
460 | dec ebx |
606 | dec ebx |
461 | shl ebx, 16 |
607 | shl ebx, 16 |
462 | add ebx, 2 |
608 | add ebx, 2 |
463 | mov ecx, [gbym1] |
609 | mov ecx, [gbym1] |
464 | dec ecx |
610 | dec ecx |
465 | shl ecx, 16 |
611 | shl ecx, 16 |
466 | add ecx, 2 |
612 | add ecx, 2 |
467 | mov edx, [decorations_color] |
613 | mov edx, [decorations_color] |
468 | mcall |
614 | mcall |
469 | 615 | ||
470 | mov ebx, [gbxm1_plus_gw_mul_gs] |
616 | mov ebx, [gbxm1_plus_gw_mul_gs] |
471 | shl ebx, 16 |
617 | shl ebx, 16 |
472 | add ebx, 2 |
618 | add ebx, 2 |
473 | mcall |
619 | mcall |
474 | 620 | ||
475 | mov ebx, [gbxm1] |
621 | mov ebx, [gbxm1] |
476 | dec ebx |
622 | dec ebx |
477 | shl ebx, 16 |
623 | shl ebx, 16 |
478 | add ebx, 2 |
624 | add ebx, 2 |
479 | mov ecx, [gbym1_plus_gh_mul_gs] |
625 | mov ecx, [gbym1_plus_gh_mul_gs] |
480 | shl ecx, 16 |
626 | shl ecx, 16 |
481 | add ecx, 2 |
627 | add ecx, 2 |
482 | mcall |
628 | mcall |
483 | 629 | ||
484 | mov ebx, [gbxm1_plus_gw_mul_gs] |
630 | mov ebx, [gbxm1_plus_gw_mul_gs] |
485 | shl ebx, 16 |
631 | shl ebx, 16 |
486 | add ebx, 2 |
632 | add ebx, 2 |
487 | mcall |
633 | mcall |
488 | 634 | ||
489 | ret |
635 | ret |
490 | 636 | ||
491 | 637 | ||
492 | corners_inner: |
638 | corners_inner: |
493 | 639 | ||
494 | mov eax, 38 |
640 | mov eax, 38 |
495 | mov ebx, [gbxm1_shl16_gbxm1] |
641 | mov ebx, [gbxm1_shl16_gbxm1] |
496 | add ebx, [g_e] |
642 | add ebx, [g_e] |
497 | mov ecx, [gbym1_shl16_gbym1] |
643 | mov ecx, [gbym1_shl16_gbym1] |
498 | mov edx, [decorations_color] |
644 | mov edx, [decorations_color] |
499 | mcall |
645 | mcall |
500 | 646 | ||
501 | mov ecx, [gbym1_plus_gh_mul_gs] |
647 | mov ecx, [gbym1_plus_gh_mul_gs] |
502 | shl ecx, 16 |
648 | shl ecx, 16 |
503 | add ecx, [gbym1_plus_gh_mul_gs] |
649 | add ecx, [gbym1_plus_gh_mul_gs] |
504 | mcall |
650 | mcall |
505 | 651 | ||
506 | mov ebx, [gbxm1_plus_gw_mul_gs] |
652 | mov ebx, [gbxm1_plus_gw_mul_gs] |
507 | sub ebx, [g_e] |
653 | sub ebx, [g_e] |
508 | shl ebx, 16 |
654 | shl ebx, 16 |
509 | add ebx, [gbxm1_plus_gw_mul_gs] |
655 | add ebx, [gbxm1_plus_gw_mul_gs] |
510 | mcall |
656 | mcall |
511 | 657 | ||
512 | mov ecx, [gbym1_shl16_gbym1] |
658 | mov ecx, [gbym1_shl16_gbym1] |
513 | mcall |
659 | mcall |
514 | 660 | ||
515 | mov ebx, [gbxm1_shl16_gbxm1] |
661 | mov ebx, [gbxm1_shl16_gbxm1] |
516 | mov ecx, [gbym1_shl16_gbym1] |
662 | mov ecx, [gbym1_shl16_gbym1] |
517 | add ecx, [g_e] |
663 | add ecx, [g_e] |
518 | mcall |
664 | mcall |
519 | 665 | ||
520 | mov ebx, [gbxm1_plus_gw_mul_gs] |
666 | mov ebx, [gbxm1_plus_gw_mul_gs] |
521 | shl ebx, 16 |
667 | shl ebx, 16 |
522 | add ebx, [gbxm1_plus_gw_mul_gs] |
668 | add ebx, [gbxm1_plus_gw_mul_gs] |
523 | mcall |
669 | mcall |
524 | 670 | ||
525 | mov ecx, [gbym1_plus_gh_mul_gs] |
671 | mov ecx, [gbym1_plus_gh_mul_gs] |
526 | sub ecx, [g_e] |
672 | sub ecx, [g_e] |
527 | shl ecx, 16 |
673 | shl ecx, 16 |
528 | add ecx, [gbym1_plus_gh_mul_gs] |
674 | add ecx, [gbym1_plus_gh_mul_gs] |
529 | mcall |
675 | mcall |
530 | 676 | ||
531 | mov ebx, [gbxm1_shl16_gbxm1] |
677 | mov ebx, [gbxm1_shl16_gbxm1] |
532 | mcall |
678 | mcall |
533 | 679 | ||
534 | ret |
680 | ret |
535 | 681 | ||
536 | 682 | ||
537 | corners_outer: |
683 | corners_outer: |
538 | 684 | ||
539 | mov eax, 38 |
685 | mov eax, 38 |
540 | mov ebx, [gbxm1_shl16_gbxm1] |
686 | mov ebx, [gbxm1_shl16_gbxm1] |
541 | sub ebx, [g_e] |
687 | sub ebx, [g_e] |
542 | mov ecx, [gbym1_shl16_gbym1] |
688 | mov ecx, [gbym1_shl16_gbym1] |
543 | mov edx, [decorations_color] |
689 | mov edx, [decorations_color] |
544 | mcall |
690 | mcall |
545 | 691 | ||
546 | mov ecx, [gbym1_plus_gh_mul_gs] |
692 | mov ecx, [gbym1_plus_gh_mul_gs] |
547 | shl ecx, 16 |
693 | shl ecx, 16 |
548 | add ecx, [gbym1_plus_gh_mul_gs] |
694 | add ecx, [gbym1_plus_gh_mul_gs] |
549 | mcall |
695 | mcall |
550 | 696 | ||
551 | mov ebx, [gbxm1_plus_gw_mul_gs] |
697 | mov ebx, [gbxm1_plus_gw_mul_gs] |
552 | shl ebx, 16 |
698 | shl ebx, 16 |
553 | add ebx, [gbxm1_plus_gw_mul_gs] |
699 | add ebx, [gbxm1_plus_gw_mul_gs] |
554 | add ebx, [g_e] |
700 | add ebx, [g_e] |
555 | mcall |
701 | mcall |
556 | 702 | ||
557 | mov ecx, [gbym1_shl16_gbym1] |
703 | mov ecx, [gbym1_shl16_gbym1] |
558 | mcall |
704 | mcall |
559 | 705 | ||
560 | mov ebx, [gbxm1_shl16_gbxm1] |
706 | mov ebx, [gbxm1_shl16_gbxm1] |
561 | mov ecx, [gbym1_shl16_gbym1] |
707 | mov ecx, [gbym1_shl16_gbym1] |
562 | sub ecx, [g_e] |
708 | sub ecx, [g_e] |
563 | mcall |
709 | mcall |
564 | 710 | ||
565 | mov ebx, [gbxm1_plus_gw_mul_gs] |
711 | mov ebx, [gbxm1_plus_gw_mul_gs] |
566 | shl ebx, 16 |
712 | shl ebx, 16 |
567 | add ebx, [gbxm1_plus_gw_mul_gs] |
713 | add ebx, [gbxm1_plus_gw_mul_gs] |
568 | mcall |
714 | mcall |
569 | 715 | ||
570 | mov ecx, [gbym1_plus_gh_mul_gs] |
716 | mov ecx, [gbym1_plus_gh_mul_gs] |
571 | shl ecx, 16 |
717 | shl ecx, 16 |
572 | add ecx, [gbym1_plus_gh_mul_gs] |
718 | add ecx, [gbym1_plus_gh_mul_gs] |
573 | add ecx, [g_e] |
719 | add ecx, [g_e] |
574 | mcall |
720 | mcall |
575 | 721 | ||
576 | mov ebx, [gbxm1_shl16_gbxm1] |
722 | mov ebx, [gbxm1_shl16_gbxm1] |
577 | mcall |
723 | mcall |
578 | 724 | ||
579 | ret |
725 | ret |
580 | 726 | ||
581 | 727 | ||
582 | corners_crosses: |
728 | corners_crosses: |
583 | 729 | ||
584 | call corners_inner |
730 | call corners_inner |
585 | call corners_outer |
731 | call corners_outer |
586 | 732 | ||
587 | ret |
733 | ret |
588 | 734 | ||
589 | 735 | ||
590 | ;;---Draw_decorations-------------------------------------------------------------------------------------------------- |
736 | ;;---Draw_decorations-------------------------------------------------------------------------------------------------- |
591 | 737 | ||
592 | 738 | ||
593 | Draw_square: |
739 | Draw_square: |
594 | ;;===Draw_square======================================================================================================= |
740 | ;;===Draw_square======================================================================================================= |
595 | ;; bl - x_coord |
741 | ;; bl - x_coord |
596 | ;; bh - y_coord |
742 | ;; bh - y_coord |
597 | ;; edx - color |
743 | ;; edx - color |
- | 744 | ||
- | 745 | push eax ebx ecx edx |
|
598 | 746 | ||
599 | mov cl, bh |
747 | mov cl, bh |
600 | 748 | ||
601 | mov al, byte[g_s] |
749 | mov al, byte[g_s] |
602 | mul bl |
750 | mul bl |
603 | mov bx, ax |
751 | mov bx, ax |
604 | add bx, word[gbxm1] |
752 | add bx, word[gbxm1] |
605 | inc bx |
753 | inc bx |
606 | shl ebx, 16 |
754 | shl ebx, 16 |
607 | add ebx, [g_s] |
755 | add ebx, [g_s] |
608 | dec ebx |
756 | dec ebx |
609 | 757 | ||
610 | mov al, byte[g_s] |
758 | mov al, byte[g_s] |
611 | mul cl |
759 | mul cl |
612 | mov cx, ax |
760 | mov cx, ax |
613 | add cx, word[gbym1] |
761 | add cx, word[gbym1] |
614 | inc cx |
762 | inc cx |
615 | shl ecx, 16 |
763 | shl ecx, 16 |
616 | add ecx, [g_s] |
764 | add ecx, [g_s] |
617 | dec ecx |
765 | dec ecx |
618 | 766 | ||
619 | mcall 13 |
767 | mcall 13 |
- | 768 | ||
- | 769 | pop edx ecx ebx eax |
|
620 | 770 | ||
621 | ret |
771 | ret |
622 | 772 | ||
623 | ;;---Draw_square------------------------------------------------------------------------------------------------------- |
773 | ;;---Draw_square------------------------------------------------------------------------------------------------------- |
624 | 774 | ||
625 | 775 | ||
626 | Draw_menu_esc: |
776 | Draw_menu_esc: |
627 | ;;===Draw_menu_esc===================================================================================================== |
777 | ;;===Draw_menu_esc===================================================================================================== |
628 | 778 | ||
629 | mov ebx, [window_width] |
779 | mov ebx, [window_width] |
630 | shr ebx, 1 |
780 | shr ebx, 1 |
631 | sub ebx, (string_apply_name_enter-string_menu_esc-1)*3+6 |
781 | sub ebx, string_menu_esc.size*3+6 |
632 | shl ebx, 16 |
782 | shl ebx, 16 |
633 | add ebx, dword[top_strings] |
783 | add ebx, dword[top_strings] |
634 | mcall 4, ,[navigation_strings_color],string_menu_esc |
784 | mcall 4, ,[navigation_strings_color],string_menu_esc |
635 | 785 | ||
636 | ret |
786 | ret |
637 | 787 | ||
638 | ;;---Draw_menu_esc----------------------------------------------------------------------------------------------------- |
788 | ;;---Draw_menu_esc----------------------------------------------------------------------------------------------------- |
639 | 789 | ||
640 | 790 | ||
641 | Draw_score_string: |
791 | Draw_score_string: |
642 | ;;===Draw_score_string================================================================================================= |
792 | ;;===Draw_score_string================================================================================================= |
643 | 793 | ||
644 | mov ebx, [window_width] |
794 | mov ebx, [window_width] |
645 | shr ebx, 3 |
795 | shr ebx, 3 |
646 | sub ebx, 5 |
796 | sub ebx, 5 |
647 | shl ebx, 16 |
797 | shl ebx, 16 |
648 | add ebx, dword[bottom_top_strings] |
798 | add ebx, dword[bottom_top_strings] |
649 | mcall 4, ,[score_string_color],string_score |
799 | mcall 4, ,[score_string_color],string_score |
650 | 800 | ||
651 | ret |
801 | ret |
652 | 802 | ||
653 | ;;---Draw_score_string------------------------------------------------------------------------------------------------- |
803 | ;;---Draw_score_string------------------------------------------------------------------------------------------------- |
654 | 804 | ||
655 | 805 | ||
656 | Draw_score_number: |
806 | Draw_score_number: |
657 | ;;===Draw_score_number================================================================================================= |
807 | ;;===Draw_score_number================================================================================================= |
658 | 808 | ||
659 | mov edx, [window_width] |
809 | mov edx, [window_width] |
660 | shr edx, 3 |
810 | shr edx, 3 |
661 | sub edx, 6 |
811 | sub edx, 5+1 |
662 | add edx, (string_hi_score-string_score)*6 |
812 | add edx, string_score.size*6 |
663 | shl edx, 16 |
813 | shl edx, 16 |
664 | add edx, dword[bottom_top_strings] |
814 | add edx, dword[bottom_top_strings] |
665 | mcall 47,0x00070000,[score], ,[score_number_color],[background_color] |
815 | mcall 47,0x00070000,[score], ,[score_number_color],[background_color] |
666 | 816 | ||
667 | ret |
817 | ret |
668 | 818 | ||
669 | ;;---Draw_score_number------------------------------------------------------------------------------------------------- |
819 | ;;---Draw_score_number------------------------------------------------------------------------------------------------- |
670 | 820 | ||
671 | 821 | ||
672 | Draw_hiscore_string: |
822 | Draw_hiscore_string: |
673 | ;;===Draw_hiscore_string=============================================================================================== |
823 | ;;===Draw_hiscore_string=============================================================================================== |
674 | 824 | ||
675 | mov ebx, [window_width] |
825 | mov ebx, [window_width] |
676 | shr ebx, 3 |
826 | shr ebx, 3 |
677 | neg ebx |
827 | neg ebx |
678 | add ebx, [window_width] |
828 | add ebx, [window_width] |
679 | sub ebx, (string_player-string_hi_score)*6+7*6+5 |
829 | sub ebx, string_hi_score.size*6+7*6+5 |
680 | shl ebx, 16 |
830 | shl ebx, 16 |
681 | add ebx, dword[bottom_top_strings] |
831 | add ebx, dword[bottom_top_strings] |
682 | mcall 4, ,[hiscore_string_color],string_hi_score |
832 | mcall 4, ,[hiscore_string_color],string_hi_score |
683 | 833 | ||
684 | ret |
834 | ret |
685 | 835 | ||
686 | ;;---Draw_hiscore_string----------------------------------------------------------------------------------------------- |
836 | ;;---Draw_hiscore_string----------------------------------------------------------------------------------------------- |
687 | 837 | ||
688 | 838 | ||
689 | Draw_hiscore_number: |
839 | Draw_hiscore_number: |
690 | ;;===Draw_hiscore_number=============================================================================================== |
840 | ;;===Draw_hiscore_number=================================================================================================== |
691 | 841 | ||
692 | mov edx, [window_width] |
842 | mov edx, [window_width] |
693 | shr edx, 3 |
843 | shr edx, 3 |
694 | neg edx |
844 | neg edx |
695 | add edx, [window_width] |
845 | add edx, [window_width] |
696 | sub edx, 7*6+6 |
846 | sub edx, 7*6+6 |
697 | shl edx, 16 |
847 | shl edx, 16 |
698 | add edx, dword[bottom_top_strings] |
848 | add edx, dword[bottom_top_strings] |
- | 849 | ||
- | 850 | cmp [play_mode], CLASSIC_MODE |
|
- | 851 | jne @f |
|
- | 852 | mov ecx, [hi_score_classic] |
|
- | 853 | jmp .done |
|
- | 854 | @@: |
|
- | 855 | mov ecx, [hi_score_levels] |
|
- | 856 | ||
- | 857 | .done: |
|
699 | mcall 47,0x00070000,[hi_score], ,[hiscore_number_color] |
858 | mcall 47,0x00070000, , ,[hiscore_number_color] |
700 | 859 | ||
701 | ret |
860 | ret |
702 | 861 | ||
703 | ;;---Draw_hiscore_number----------------------------------------------------------------------------------------------- |
862 | ;;---Draw_hiscore_number--------------------------------------------------------------------------------------------------- |
704 | 863 | ||
705 | 864 | ||
706 | Draw_champion_string: |
865 | Draw_champion_string: |
707 | ;;===Draw_champion_string============================================================================================== |
866 | ;;===Draw_champion_string================================================================================================== |
708 | 867 | ||
709 | mov ebx, [window_width] |
868 | mov ebx, [window_width] |
710 | shr ebx, 3 |
869 | shr ebx, 3 |
711 | neg ebx |
870 | neg ebx |
712 | add ebx, [window_width] |
871 | add ebx, [window_width] |
713 | sub ebx, (string_level-string_champion)*6+7*6+5 |
872 | sub ebx, string_champion.size*6+7*6+5 |
714 | shl ebx, 16 |
873 | shl ebx, 16 |
715 | add ebx, dword[bottom_bottom_strings] |
874 | add ebx, dword[bottom_bottom_strings] |
716 | mcall 4, ,[champion_string_color],string_champion |
875 | mcall 4, ,[champion_string_color],string_champion |
717 | 876 | ||
718 | ret |
877 | ret |
719 | 878 | ||
720 | ;;---Draw_champion_string---------------------------------------------------------------------------------------------- |
879 | ;;---Draw_champion_string---------------------------------------------------------------------------------------------- |
721 | 880 | ||
722 | 881 | ||
723 | Draw_champion_name: |
882 | Draw_champion_name: |
724 | ;;===Draw_champion_name================================================================================================ |
883 | ;;===Draw_champion_name================================================================================================ |
725 | 884 | ||
726 | mov ebx, [window_width] |
885 | mov ebx, [window_width] |
727 | shr ebx, 3 |
886 | shr ebx, 3 |
728 | neg ebx |
887 | neg ebx |
729 | add ebx, [window_width] |
888 | add ebx, [window_width] |
730 | sub ebx, (press_to_start-champion_name)*6+7*6+6 |
889 | sub ebx, CHAMPION_NAME_LENGTH/2*6+7*6+6 ; there is no difference between length of champion names for other play_modes |
731 | add ebx, (press_to_start-champion_name)*6 |
890 | add ebx, CHAMPION_NAME_LENGTH/2*6 |
732 | shl ebx, 16 |
891 | shl ebx, 16 |
733 | add ebx, dword[bottom_bottom_strings] |
892 | add ebx, dword[bottom_bottom_strings] |
- | 893 | ||
- | 894 | cmp [play_mode], CLASSIC_MODE |
|
- | 895 | jne @f |
|
- | 896 | mov edx, champion_name_classic |
|
- | 897 | jmp .done |
|
- | 898 | @@: |
|
- | 899 | mov edx, champion_name_levels |
|
- | 900 | ||
- | 901 | .done: |
|
734 | mcall 4, ,[champion_name_color],champion_name |
902 | mcall 4, ,[champion_name_color], |
735 | 903 | ||
736 | ret |
904 | ret |
737 | 905 | ||
738 | ;;---Draw_champion_name------------------------------------------------------------------------------------------------ |
906 | ;;---Draw_champion_name------------------------------------------------------------------------------------------------ |
739 | 907 | ||
740 | 908 | ||
741 | Draw_picture: |
909 | Draw_picture: |
742 | ;;===Draw_picture====================================================================================================== |
910 | ;;===Draw_picture====================================================================================================== |
743 | ;; in : |
911 | ;; in : |
744 | ;; ax = number of left square *0x100+ picture width (in squares) |
912 | ;; ax = number of left square *0x100+ picture width (in squares) |
745 | ;; cx = number of top square *0x100+ picture height (in squares) |
913 | ;; cx = number of top square *0x100+ picture height (in squares) |
746 | ;; edx = picture color |
914 | ;; edx = picture color |
747 | ;; esi = pointer to picture data |
915 | ;; esi = pointer to picture data |
748 | ;; |
916 | ;; |
749 | 917 | ||
750 | add al, ah |
918 | add al, ah |
751 | add cl, ch |
919 | add cl, ch |
752 | mov bh, ch |
920 | mov bh, ch |
753 | 921 | ||
754 | .draw: |
922 | .draw: |
755 | mov bl, ah |
923 | mov bl, ah |
756 | 924 | ||
757 | .loop: |
925 | .loop: |
758 | cmp byte[esi], 0 |
926 | cmp byte[esi], 0 |
759 | jz @f |
927 | jz @f |
760 | push eax ebx ecx esi |
928 | push eax ebx ecx esi |
761 | call Draw_square |
929 | call Draw_square |
762 | pop esi ecx ebx eax |
930 | pop esi ecx ebx eax |
763 | 931 | ||
764 | @@: |
932 | @@: |
765 | inc esi |
933 | inc esi |
766 | inc bl |
934 | inc bl |
767 | cmp bl, al |
935 | cmp bl, al |
768 | jne .loop |
936 | jne .loop |
769 | 937 | ||
770 | inc bh |
938 | inc bh |
771 | cmp bh, cl |
939 | cmp bh, cl |
772 | jne .draw |
940 | jne .draw |
773 | ret |
941 | ret |
774 | 942 | ||
775 | ;;---Draw_picture------------------------------------------------------------------------------------------------------ |
943 | ;;---Draw_picture------------------------------------------------------------------------------------------------------ |
776 | 944 | ||
777 | 945 | ||
778 | Draw_on_map: |
946 | Draw_on_map: |
779 | ;;===Draw_on_map======================================================================================================= |
947 | ;;===Draw_on_map======================================================================================================= |
780 | ;; in : |
948 | ;; in : |
781 | ;; al = x coord |
949 | ;; al = x coord |
782 | ;; ah = y coord |
950 | ;; ah = y coord |
783 | ;; cl = value to draw |
951 | ;; cl = value to draw |
784 | ;; |
952 | ;; |
- | 953 | ||
- | 954 | push eax ebx edx |
|
785 | 955 | ||
786 | and eax, 0x0000ffff |
956 | and eax, 0x0000ffff |
787 | xor bx, bx |
957 | xor bx, bx |
788 | mov bl, al |
958 | mov bl, al |
789 | shr ax, 8 |
959 | shr ax, 8 |
790 | mov dx, word[g_w] |
960 | mov dx, GRID_WIDTH |
791 | mul dx |
961 | mul dx |
792 | add ax, bx |
962 | add ax, bx |
793 | mov edi, field_map |
963 | mov edx, field_map |
794 | add edi, eax |
964 | add edx, eax |
795 | mov [edi], cl |
965 | mov [edx], cl |
- | 966 | ||
- | 967 | pop edx ebx eax |
|
796 | 968 | ||
797 | ret |
969 | ret |
798 | 970 | ||
799 | ;;---Draw_on_map------------------------------------------------------------------------------------------------------- |
971 | ;;---Draw_on_map----------------------------------------------------------------------------------------------------------- |
800 | 972 | ||
801 | 973 | ||
802 | Get_from_map: |
974 | Get_from_map: |
803 | ;;===Get_from_map====================================================================================================== |
975 | ;;===Get_from_map========================================================================================================== |
804 | ;; in : |
976 | ;; in : |
805 | ;; al = x coord |
977 | ;; al = x coord |
806 | ;; ah = y coord |
978 | ;; ah = y coord |
807 | ;; out : |
979 | ;; out : |
808 | ;; bl = value on map |
980 | ;; bl = value on map |
809 | ;; |
981 | ;; |
810 | 982 | ||
811 | push eax |
983 | push eax |
812 | 984 | ||
813 | and eax, 0x0000ffff |
985 | and eax, 0x0000ffff |
814 | xor bx, bx |
986 | xor bx, bx |
815 | mov bl, al |
987 | mov bl, al |
816 | shr ax, 8 |
988 | shr ax, 8 |
817 | mov dx, word[g_w] |
989 | mov dx, GRID_WIDTH |
818 | mul dx |
990 | mul dx |
819 | add ax, bx |
991 | add ax, bx |
820 | mov edi, field_map |
992 | mov edi, field_map |
821 | add edi, eax |
993 | add edi, eax |
822 | mov bl, [edi] |
994 | mov bl, [edi] |
823 | 995 | ||
824 | pop eax |
996 | pop eax |
825 | 997 | ||
826 | ret |
998 | ret |
827 | 999 | ||
- | 1000 | ;;---Get_from_map----------------------------------------------------------------------------------------------------------- |
|
- | 1001 | ||
- | 1002 | ||
- | 1003 | Load_level: |
|
- | 1004 | ;;===Load_level============================================================================================================= |
|
- | 1005 | ;; in : |
|
- | 1006 | ;; cur_level_number = level number to load |
|
- | 1007 | ;; |
|
- | 1008 | ||
- | 1009 | mov eax, [cur_level_number] |
|
- | 1010 | mov edx, stage_00 |
|
- | 1011 | @@: |
|
- | 1012 | test al, al |
|
- | 1013 | jz @f |
|
- | 1014 | add edx, 410 |
|
- | 1015 | dec al |
|
- | 1016 | jmp @b |
|
- | 1017 | @@: |
|
- | 1018 | ||
- | 1019 | mov [cur_level], edx |
|
- | 1020 | ||
- | 1021 | mov esi, edx |
|
- | 1022 | add esi, LEVEL.field |
|
- | 1023 | mov edi, field_map |
|
- | 1024 | mov ecx, GRID_WIDTH*GRID_HEIGHT/4 |
|
- | 1025 | rep movsd |
|
- | 1026 | ||
- | 1027 | mov esi, edx |
|
- | 1028 | add esi, LEVEL.snake_dots |
|
- | 1029 | mov edi, snake_dots |
|
- | 1030 | mov ecx, 3 |
|
- | 1031 | rep movsw |
|
- | 1032 | ||
- | 1033 | mov esi, edx |
|
- | 1034 | add esi, LEVEL.snake_direction |
|
- | 1035 | mov eax, [esi] |
|
- | 1036 | mov [snake_direction], eax |
|
- | 1037 | ||
- | 1038 | mov esi, edx |
|
- | 1039 | add esi, LEVEL.snake_direction_next |
|
- | 1040 | mov eax, [esi] |
|
- | 1041 | mov [snake_direction_next], eax |
|
- | 1042 | ||
- | 1043 | mov esi, edx |
|
- | 1044 | add esi, LEVEL.number_of_stones |
|
- | 1045 | mov eax, [esi] |
|
- | 1046 | mov [number_of_free_dots], GRID_WIDTH*GRID_HEIGHT-3 |
|
- | 1047 | sub [number_of_free_dots], eax |
|
- | 1048 | ||
- | 1049 | mov ax, word[snake_dots] |
|
- | 1050 | mov cl, 1 |
|
- | 1051 | call Draw_on_map |
|
- | 1052 | mov ax, word[snake_dots+2] |
|
- | 1053 | mov cl, 1 |
|
- | 1054 | call Draw_on_map |
|
- | 1055 | mov ax, word[snake_dots+4] |
|
- | 1056 | mov cl, 1 |
|
- | 1057 | call Draw_on_map |
|
- | 1058 | ||
- | 1059 | mov [action], 0 |
|
- | 1060 | mov [snake_length_x2], 6 |
|
- | 1061 | ||
- | 1062 | ret |
|
- | 1063 | ||
- | 1064 | ;;---Load_level------------------------------------------------------------------------------------------------------------- |
|
- | 1065 | ||
- | 1066 | ||
- | 1067 | Draw_stones: |
|
- | 1068 | ;;===Draw_stones============================================================================================================ |
|
- | 1069 | ||
- | 1070 | mov ax, 0*0x100+GRID_WIDTH |
|
- | 1071 | mov cx, 0*0x100+GRID_HEIGHT |
|
- | 1072 | mov edx, [stone_color] |
|
- | 1073 | mov esi, [cur_level] |
|
- | 1074 | add esi, LEVEL.field |
|
- | 1075 | call Draw_picture |
|
- | 1076 | ||
- | 1077 | ret |
|
828 | ;;---Get_from_map------------------------------------------------------------------------------------------------------ |
- | |
- | 1078 | ||
- | 1079 | ;;---Draw_stones------------------------------------------------------------------------------------------------------------ |
|
- | 1080 | ||
- | 1081 | ||
- | 1082 | Hide_cursor: |
|
- | 1083 | ;;===Hide_cursor=========================================================================================================== |
|
- | 1084 | ||
- | 1085 | mcall 37,5,[cursor_handle] |
|
- | 1086 | ||
- | 1087 | ret |
|
- | 1088 | ||
- | 1089 | ;;---Show_cursor----------------------------------------------------------------------------------------------------------- |
|
- | 1090 | ||
- | 1091 | ||
- | 1092 | Show_cursor: |
|
- | 1093 | ;;===Hide_cursor=========================================================================================================== |
|
- | 1094 | ||
- | 1095 | mcall 37,5,0 |
|
- | 1096 | ||
- | 1097 | ret |
|
- | 1098 | ||
- | 1099 | ;;---Show_cursor----------------------------------------------------------------------------------------------------------- |
|
829 | 1100 | ||
830 | 1101 | ||
831 | ;;---Some_functions-------------------------------------------------------------------------------------------------------- |
1102 | ;;---Some_functions------------------------------------------------------------------------------------------------------------- |
832 | 1103 | ||
833 | 1104 | ||
834 | ;;===Variables============================================================================================================= |
1105 | ;;===Variables================================================================================================================== |
835 | 1106 | ||
836 | window_title db 'Snake',0 |
1107 | window_title db 'Snake',0 |
837 | window_style dd 0x34000000 |
1108 | window_style dd 0x34000000 |
838 | time_before_waiting dd 0x0 |
1109 | time_before_waiting dd 0x0 |
839 | time_to_wait dd 0x0 |
1110 | time_to_wait dd 0x0 |
840 | time_wait_limit dd 101 |
1111 | time_wait_limit dd 101 |
- | 1112 | ||
- | 1113 | play_mode dd 0x0 |
|
- | 1114 | ||
841 | 1115 | square_side_length dd 19 |
|
842 | 1116 | ||
843 | gbxm1 dd 30 |
1117 | gbxm1 dd 30 |
844 | gbym1 dd 30 |
1118 | gbym1 dd 30 |
845 | g_w dd 29 |
- | |
846 | g_h dd 15 |
- | |
847 | g_e dd 13 |
- | |
848 | 1119 | ||
849 | field_map db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
850 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
851 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
852 | 0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
853 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
854 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
855 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
856 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
857 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
858 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
859 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
860 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
861 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
862 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\ |
- | |
863 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
- | |
864 | - | ||
865 | string_score db 'SCORE :',0 |
1120 | szZ string_score ,'SCORE : ' |
866 | string_hi_score db 'HI-SCORE :',0 |
1121 | szZ string_hi_score ,'HI-SCORE : ' |
867 | string_player db 'PLAYER :',0 |
1122 | ;szZ string_player ,'PLAYER :' |
868 | string_champion db 'CHAMPION :',0 |
1123 | szZ string_champion ,'CHAMPION : ' |
869 | string_level db 'LEVEL :',0 |
1124 | szZ string_level ,'LEVEL : ' |
- | 1125 | ;szZ string_hi_level ,'HI-LEVEL :' |
|
870 | string_pause_space db 'PAUSE - ',0x27,'SPACE',0x27,0 |
1126 | szZ string_pause_space ,'PAUSE - ',0x27,'SPACE',0x27 |
871 | string_resume_space db 'RESUME - ',0x27,'SPACE',0x27,0 |
1127 | szZ string_resume_space ,'RESUME - ',0x27,'SPACE',0x27 |
872 | string_menu_esc db 'MENU - ',0x27,'ESC',0x27,0 |
1128 | szZ string_menu_esc ,'MENU - ',0x27,'ESC',0x27 |
873 | string_apply_name_enter db 'APPLY NAME - ',0x27,'ENTER',0x27,0 |
1129 | szZ string_apply_name_enter ,'APPLY NAME - ',0x27,'ENTER',0x27 |
874 | press_to_start db 'PRESS ',0x27,'SPACE',0x27,' OR ',0x27,'ENTER',0x27,' TO START',0 |
1130 | szZ press_to_start ,'PRESS ',0x27,'ENTER',0x27,' TO START' |
875 | press_esc_to_exit db 'PRESS ',0x27,'ESC',0x27,' TO EXIT',0 |
1131 | szZ press_esc_to_exit ,'PRESS ',0x27,'ESC',0x27,' TO EXIT' |
876 | ;press_F2_to_options db 'PRESS ',0x27,'F2',0x27,' TO OPTIONS',0 |
1132 | ;press_F2_to_options db 'PRESS ',0x27,'F2',0x27,' TO OPTIONS',0 |
877 | 1133 | ||
878 | string_congratulations db ' Congratulations!!! New hi-score is :',0 |
1134 | szZ string_congratulations ,' Congratulations!!! New hi-score is : ' |
879 | string_enter_your_name db 'You are the champion! Enter your name :',0 |
- | |
880 | strings_end: |
1135 | szZ string_enter_your_name ,'You are the champion! Enter your name : ' |
881 | 1136 | ||
882 | snake_dots db 3,3, 4,3, 5,3, 865 dup (0) |
1137 | szZ string_button_play ,'PLAY' |
883 | snake_napravlenie db 3 |
1138 | szZ string_button_exit ,'EXIT' |
884 | snake_napravlenie_next db 3 |
1139 | szZ string_button_inc ,'+INC+' |
- | 1140 | szZ string_button_dec ,'-dec-' |
|
- | 1141 | szZ string_button_pm_classic,'CLASSIC mode' |
|
885 | snake_length_x2 dd 6 |
1142 | szZ string_button_pm_levels ,'LEVELS mode' |
886 | - | ||
887 | score dd 0 |
- | |
888 | hi_score dd 777 |
1143 | |
889 | is_new_record db 0 |
1144 | is_new_record dd 0 |
890 | 1145 | ||
891 | action db 0 |
1146 | action dd 0 |
892 | 1147 | ||
893 | picture_first_menu_snake db 1,1,1,1,1,0,1,0,0,0,1,0,0,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,\ |
- | |
894 | 1,0,0,0,0,0,1,1,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,\ |
1148 | picture_first_menu_snake db 1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,1,1,1,\ |
895 | 1,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,\ |
1149 | 1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,0,1,\ |
896 | 1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,0,1,1,1,1,0,\ |
1150 | 1,1,1,1,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,1,\ |
897 | 0,0,0,0,1,0,1,0,0,1,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,\ |
1151 | 0,0,0,1,0,1,0,1,1,0,1,1,1,1,0,1,0,1,0,0,1,0,0,0,\ |
- | 1152 | 1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1 |
|
898 | 1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,1,1,0,1,1,1,1,1 |
1153 | |
899 | 1154 | ||
900 | picture_first_menu_version db 1,1,1,1,0,0,0,1,1,1,1,\ |
1155 | picture_first_menu_version db 1,1,1,1,0,0,0,1,1,1,1,\ |
901 | 1,0,0,1,0,0,0,0,0,0,1,\ |
1156 | 1,0,0,1,0,0,0,1,0,0,0,\ |
902 | 1,0,0,1,0,0,0,0,1,1,1,\ |
1157 | 1,0,0,1,0,0,0,1,1,1,1,\ |
903 | 1,0,0,1,0,0,0,0,0,0,1,\ |
1158 | 1,0,0,1,0,0,0,0,0,0,1,\ |
904 | 1,1,1,1,0,1,0,1,1,1,1 |
1159 | 1,1,1,1,0,1,0,1,1,1,1 |
941 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
1532 | .number_of_stones dd 110 |
942 | 1533 | ||
943 | background_color dd 0x000000 |
1534 | background_color dd 0x000000 |
944 | decorations_color dd 0x00000000 |
1535 | decorations_color dd 0x00000000 |
945 | snake_color dd 0x000000 |
1536 | snake_color dd 0x000000 |
946 | snake_head_color dd 0x000000 |
1537 | snake_head_color dd 0x000000 |
947 | snake_picture_color dd 0x000000 |
1538 | snake_picture_color dd 0x000000 |
948 | version_picture_color dd 0x000000 |
1539 | version_picture_color dd 0x000000 |
949 | pause_picture_color dd 0x000000 |
1540 | pause_picture_color dd 0x000000 |
950 | game_over_picture_color dd 0x000000 |
1541 | game_over_picture_color dd 0x000000 |
- | 1542 | you_win_picture_color dd 0x000000 |
|
951 | eat_color dd 0x000000 |
1543 | eat_color dd 0x000000 |
952 | navigation_strings_color dd 0x80000000 |
1544 | navigation_strings_color dd 0x80000000 |
953 | game_over_strings_color dd 0x80000000 |
1545 | game_over_strings_color dd 0x80000000 |
954 | score_string_color dd 0x80000000 |
1546 | score_string_color dd 0x80000000 |
955 | hiscore_string_color dd 0x80000000 |
1547 | hiscore_string_color dd 0x80000000 |
956 | champion_string_color dd 0x80000000 |
1548 | champion_string_color dd 0x80000000 |
957 | game_over_hiscore_color dd 0x80000000 |
1549 | game_over_hiscore_color dd 0x80000000 |
958 | score_number_color dd 0x40000000 |
1550 | score_number_color dd 0x40000000 |
959 | hiscore_number_color dd 0x00000000 |
1551 | hiscore_number_color dd 0x00000000 |
960 | champion_name_color dd 0x80000000 |
1552 | champion_name_color dd 0x80000000 |
- | 1553 | button_color dd 0x000000 |
|
- | 1554 | button_text_color dd 0x80000000 |
|
- | 1555 | stone_color dd 0x000000 |
|
- | 1556 | splash_background_color dd 0x000000 |
|
- | 1557 | splash_level_string_color dd 0x000000 |
|
- | 1558 | splash_level_number_color dd 0x000000 |
|
- | 1559 | level_string_color dd 0x80000000 |
|
- | 1560 | level_number_color dd 0x00000000 |
|
- | 1561 | ||
961 | 1562 | ||
962 | align 4 |
1563 | align 4 |
963 | @IMPORT: |
1564 | @IMPORT: |
964 | 1565 | ||
965 | library \ |
1566 | library \ |
966 | libini , 'libini.obj' ,\ |
1567 | libini , 'libini.obj' ,\ |
967 | box_lib , 'box_lib.obj' |
1568 | box_lib , 'box_lib.obj' |
968 | 1569 | ||
969 | import libini,\ |
1570 | import libini,\ |
970 | ini.get_str , 'ini_get_str' ,\ |
1571 | ini.get_str , 'ini_get_str' ,\ |
971 | ini.get_int , 'ini_get_int' ,\ |
1572 | ini.get_int , 'ini_get_int' ,\ |
972 | ini.set_str , 'ini_set_str' ,\ |
1573 | ini.set_str , 'ini_set_str' ,\ |
973 | ini.set_int , 'ini_set_int' ,\ |
1574 | ini.set_int , 'ini_set_int' ,\ |
974 | ini.get_color , 'ini_get_color' |
1575 | ini.get_color , 'ini_get_color' |
975 | 1576 | ||
976 | import box_lib,\ |
1577 | import box_lib,\ |
977 | edit_box.draw , 'edit_box' ,\ |
1578 | edit_box.draw , 'edit_box' ,\ |
978 | edit_box.key , 'edit_box_key' ,\ |
1579 | edit_box.key , 'edit_box_key' ,\ |
979 | edit_box.mouse , 'edit_box_mouse' |
1580 | edit_box.mouse , 'edit_box_mouse' |
980 | 1581 | ||
981 | bFirstDraw db 0 |
1582 | bFirstDraw db 0 |
982 | 1583 | ||
983 | aPreferences db 'Preferences',0 |
1584 | aPreferences db 'Preferences',0 |
984 | aSpeed db 'Speed',0 |
1585 | aSpeed db 'Speed',0 |
985 | aSquare_side_length db 'Square_side_length',0 |
- | |
986 | aSpace_between_squares db 'Space_between_squares',0 |
- | |
987 | aTheme db 'Theme',0 |
1586 | aTheme db 'Theme',0 |
988 | 1587 | ||
989 | aTheme_name db 32 dup (0) |
1588 | aTheme_name db 32 dup (0) |
990 | aDecorations db 'Decorations',0 |
1589 | aDecorations db 'Decorations',0 |
991 | aBackground_color db 'Background_color',0 |
1590 | aBackground_color db 'Background_color',0 |
992 | aDecorations_color db 'Decorations_color',0 |
1591 | aDecorations_color db 'Decorations_color',0 |
993 | aSnake_color db 'Snake_color',0 |
1592 | aSnake_color db 'Snake_color',0 |
994 | aSnake_head_color db 'Snake_head_color',0 |
1593 | aSnake_head_color db 'Snake_head_color',0 |
995 | aSnake_picture_color db 'Snake_picture_color',0 |
1594 | aSnake_picture_color db 'Snake_picture_color',0 |
996 | aVersion_picture_color db 'Version_picture_color',0 |
1595 | aVersion_picture_color db 'Version_picture_color',0 |
997 | aPause_picture_color db 'Pause_picture_color',0 |
1596 | aPause_picture_color db 'Pause_picture_color',0 |
998 | aGame_over_picture_color db 'Game_over_picture_color',0 |
1597 | aGame_over_picture_color db 'Game_over_picture_color',0 |
- | 1598 | aYou_win_picture_color db 'You_win_picture_color',0 |
|
999 | aEat_color db 'Eat_color',0 |
1599 | aEat_color db 'Eat_color',0 |
1000 | aNavigation_strings_color db 'Navigation_string_color',0 |
1600 | aNavigation_strings_color db 'Navigation_string_color',0 |
1001 | aGame_over_strings_color db 'Game_over_string_color',0 |
1601 | aGame_over_strings_color db 'Game_over_string_color',0 |
1002 | aScore_string_color db 'Score_string_color',0 |
1602 | aScore_string_color db 'Score_string_color',0 |
1003 | aHiscore_string_color db 'Hiscore_string_color',0 |
1603 | aHiscore_string_color db 'Hiscore_string_color',0 |
1004 | aChampion_string_color db 'Champion_string_color',0 |
1604 | aChampion_string_color db 'Champion_string_color',0 |
1005 | aGame_over_hiscore_color db 'Game_over_hiscore_color',0 |
1605 | aGame_over_hiscore_color db 'Game_over_hiscore_color',0 |
1006 | aScore_number_color db 'Score_number_color',0 |
1606 | aScore_number_color db 'Score_number_color',0 |
1007 | aHiscore_number_color db 'Hiscore_number_color',0 |
1607 | aHiscore_number_color db 'Hiscore_number_color',0 |
1008 | aChampion_name_color db 'Champion_name_color',0 |
1608 | aChampion_name_color db 'Champion_name_color',0 |
1009 | aEdit_box_selection_color db 'Edit_box_selection_color',0 |
1609 | aEdit_box_selection_color db 'Edit_box_selection_color',0 |
- | 1610 | aButton_color db 'Button_color',0 |
|
- | 1611 | aButton_text_color db 'Button_text_color',0 |
|
- | 1612 | aStone_color db 'Stone_color',0 |
|
- | 1613 | aSplash_background_color db 'Splash_background_color',0 |
|
- | 1614 | aSplash_level_string_color db 'Splash_level_string_color',0 |
|
- | 1615 | aSplash_level_number_color db 'Splash_level_number_color',0 |
|
- | 1616 | aLevel_string_color db 'Level_string_color',0 |
|
- | 1617 | aLevel_number_color db 'Level_number_color',0 |
|
1010 | 1618 | ||
- | 1619 | aReserved db 'Reserved',0 |
|
- | 1620 | aSquare_side_length db 'Square_side_length',0 |
|
- | 1621 | aHiscore_classic db 'Hiscore_classic',0 |
|
1011 | aScore db 'Score',0 |
1622 | aChampion_name_classic db 'Champion_name_classic',0 |
1012 | aHiscore db 'Hiscore',0 |
1623 | aHiscore_levels db 'Hiscore_levels',0 |
1013 | aChampion_name db 'Champion_name',0 |
1624 | aChampion_name_levels db 'Champion_name_levels',0 |
1014 | 1625 | ||
1015 | edit1 edit_box 65,397,0x0,0x000000,0x000000,0x000000,0x000000,0x80000000,15,hed,mouse_dd,ed_focus,hed_end-hed-1,hed_end-hed-1 |
1626 | edit1 edit_box 65,397,0x0,0x000000,0x000000,0x000000,0x000000,0x80000000,15,hed,mouse_dd,ed_focus,hed_end-hed-1,hed_end-hed-1 |
1016 | 1627 | ||
1017 | hed db '',0 |
1628 | hed db '',0 |
1018 | ;;---Variables------------------------------------------------------------------------------------------------------------- |
1629 | ;;---Variables------------------------------------------------------------------------------------------------------------- |
1019 | i_end: |
1630 | i_end: |
1020 | hed_end: |
1631 | hed_end: |
1021 | rb 256 |
1632 | rb 256 |
1022 | mouse_dd rd 1 |
1633 | mouse_dd rd 1 |
- | 1634 | ||
- | 1635 | cur_level rd 1 |
|
- | 1636 | cur_level_number rd 1 |
|
- | 1637 | hi_level rd 1 |
|
- | 1638 | ||
- | 1639 | score rd 1 |
|
- | 1640 | hi_score_classic rd 1 |
|
- | 1641 | hi_score_levels rd 1 |
|
- | 1642 | ||
- | 1643 | champion_name_classic rb CHAMPION_NAME_LENGTH |
|
- | 1644 | champion_name_levels rb CHAMPION_NAME_LENGTH |
|
- | 1645 | ||
- | 1646 | snake_dots rb GRID_WIDTH*GRID_HEIGHT*2+3 ; +3 bytes for faster dword copying |
|
- | 1647 | snake_direction rd 1 |
|
- | 1648 | snake_direction_next rd 1 |
|
- | 1649 | snake_length_x2 rd 1 |
|
1023 | 1650 | ||
1024 | decorations rb 1 |
1651 | decorations rd 1 |
1025 | number_of_free_dots rw 1 |
1652 | number_of_free_dots rd 1 |
1026 | - | ||
1027 | eat rb 1 |
- | |
1028 | 1653 | ||
- | 1654 | eat rw 1 |
|
1029 | square_side_length rd 1 |
1655 | |
1030 | space_between_squares rd 1 |
1656 | g_s rd 1 |
1031 | g_s rd 1 |
1657 | g_e rd 1 |
1032 | 1658 | ||
1033 | window_width rd 1 |
1659 | window_width rd 1 |
1034 | window_height rd 1 |
1660 | window_height rd 1 |
1035 | wp_x rd 1 |
1661 | wp_x rd 1 |
1036 | wp_y rd 1 |
1662 | wp_y rd 1 |
1037 | - | ||
1038 | gw_mul_gh rd 1 |
1663 | |
1039 | gw_mul_gs rd 1 |
1664 | gw_mul_gs rd 1 |
1040 | gh_mul_gs rd 1 |
1665 | gh_mul_gs rd 1 |
1041 | gbxm1_plus_gw_mul_gs rd 1 |
1666 | gbxm1_plus_gw_mul_gs rd 1 |
1042 | gbym1_plus_gh_mul_gs rd 1 |
1667 | gbym1_plus_gh_mul_gs rd 1 |
1043 | gs_shl16_gs rd 1 |
1668 | gs_shl16_gs rd 1 |
1044 | gbxm1_shl16_gbxm1 rd 1 |
1669 | gbxm1_shl16_gbxm1 rd 1 |
1045 | gbym1_shl16_gbym1 rd 1 |
1670 | gbym1_shl16_gbym1 rd 1 |
1046 | 1671 | ||
1047 | bottom_top_strings rd 1 |
1672 | bottom_top_strings rd 1 |
1048 | bottom_middle_strings rd 1 |
1673 | bottom_middle_strings rd 1 |
1049 | bottom_bottom_strings rd 1 |
1674 | bottom_bottom_strings rd 1 |
1050 | top_strings rd 1 |
1675 | top_strings rd 1 |
- | 1676 | ||
- | 1677 | button_x_left rd 1 |
|
- | 1678 | button_x_right rd 1 |
|
- | 1679 | button_y_top rd 1 |
|
- | 1680 | button_y_middle rd 1 |
|
- | 1681 | button_y_bottom rd 1 |
|
- | 1682 | button_width_short rd 1 |
|
- | 1683 | button_width_long rd 1 |
|
- | 1684 | button_height rd 1 |
|
- | 1685 | ||
1051 | 1686 | cursor_data rb 32*32*4 |
|
1052 | champion_name rb 16 |
1687 | cursor_handle rd 1 |
1053 | 1688 | ||
1054 | cur_dir_path rb 4096 |
1689 | cur_dir_path rb 4096 |
1055 | @PARAMS rb 4096 |
1690 | @PARAMS rb 4096 |
- | 1691 | ||
- | 1692 | field_map rb GRID_WIDTH*GRID_HEIGHT*2 |
|
1056 | 1693 | ||
1057 | rb 4096 |
1694 | rb 4096 |
1058 | stacktop: |
1695 | stacktop: |
1059 | d_end: |
1696 | d_end: |