Rev 7134 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7134 | Rev 7373 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; SQ_game for MenuetOS |
1 | ; SQ_game for MenuetOS |
2 | ; Author: Alexei Ershov aka ealex |
2 | ; Author: Alexei Ershov aka ealex |
3 | ; E-mail: e-al[at]yandex[dot]ru |
3 | ; E-mail: e-al[at]yandex[dot]ru |
4 | ; Fidonet: 2:469/335.38 |
4 | ; Fidonet: 2:469/335.38 |
- | 5 | ; slightly updated by leency and renamed to Lights |
|
- | 6 | ; https://en.wikipedia.org/wiki/Lights_Out_(game) |
|
5 | ; slightly optimized by diamond |
7 | ; slightly optimized by diamond |
6 | ; english translation by diamond (two strings in end of source) |
8 | ; english translation by diamond (two strings in end of source) |
Line 7... | Line 9... | ||
7 | 9 | ||
8 | 10 | ||
9 | BtnSize equ 32 ; à §¬¥à ª®¯ª¨ |
11 | BtnSize equ 36 ; à §¬¥à ª®¯ª¨ |
10 | BtnSpace equ 10 ; ¯à®¬¥¦ã⮪ ¬¥¦¤ã ª®¯ª ¬¨ |
12 | BtnSpace equ 0 ; ¯à®¬¥¦ã⮪ ¬¥¦¤ã ª®¯ª ¬¨ |
11 | NofBtn equ 4 ; à §¬¥à ¯®«ï (3-15) |
13 | NofBtn equ 4 ; à §¬¥à ¯®«ï (3-15) |
Line 12... | Line 14... | ||
12 | Color1 equ 0xcc0000 |
14 | Color1 equ 0xcc0000 |
13 | Color2 equ 0x00cc00 |
15 | Color2 equ 0x00cc00 |
- | 16 | ||
Line 14... | Line 17... | ||
14 | 17 | FieldSize = (BtnSize+BtnSpace)*NofBtn + BtnSpace*3 |
|
15 | FieldSize = (BtnSize+BtnSpace)*NofBtn + BtnSpace*3 |
18 | center = FieldSize / 2 |
Line 26... | Line 29... | ||
26 | dd 0x1000 ; ª®«¨ç¥á⢮ ¯ ¬ï⨠|
29 | dd 0x1000 ; ª®«¨ç¥á⢮ ¯ ¬ï⨠|
27 | dd 0x1000 ; ¤à¥á ¢¥àè¨ë áâíª |
30 | dd 0x1000 ; ¤à¥á ¢¥àè¨ë áâíª |
28 | dd 0x0 ; ¤à¥á ¡ãä¥à ¤«ï ¯ à ¬¥â஢ (¥ ¨á¯®«ì§ã¥âáï) |
31 | dd 0x0 ; ¤à¥á ¡ãä¥à ¤«ï ¯ à ¬¥â஢ (¥ ¨á¯®«ì§ã¥âáï) |
29 | dd 0x0 ; § १¥à¢¨à®¢ ® |
32 | dd 0x0 ; § १¥à¢¨à®¢ ® |
Line 30... | Line 33... | ||
30 | 33 | ||
Line 31... | Line 34... | ||
31 | include 'macros.inc' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§ì áᥬ¡«¥à騪®¢! |
34 | include '../../../macros.inc' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§ì áᥬ¡«¥à騪®¢! |
32 | 35 | ||
33 | 36 | ||
Line 128... | Line 131... | ||
128 | ; Draw_Window |
131 | ; Draw_Window |
129 | ;---------------------------------------------------------------------------- |
132 | ;---------------------------------------------------------------------------- |
130 | Draw_Window: |
133 | Draw_Window: |
Line 131... | Line 134... | ||
131 | 134 | ||
132 | mcall 12, 1 |
135 | mcall 12, 1 |
133 | mcall 0, 200*65536+FieldSize,\ |
136 | mcall 0, 200*65536+FieldSize+margin*2,\ |
134 | 200*65536+FieldSize+20+20+20,\ |
137 | 200*65536+FieldSize+28+margin*3,\ |
135 | 0x14AABBCC, 0x805080D0, header |
138 | 0x14DDD7CF, 0x805080D0, header |
136 | 139 | ||
137 | mcall 8, BtnSpace*2*65536 + 83,\ |
140 | mcall 8, (BtnSpace*2+margin)*65536 + 83,\ |
138 | (FieldSize+BtnSpace+20)*65536+ 15, 2 |
141 | (FieldSize+BtnSpace+margin*2+10)*65536+ 22, 2 |
139 | mcall 4, (BtnSpace*2+3)*65536+(BtnSize+BtnSpace)*NofBtn+BtnSpace*4+20+4,\ |
142 | mcall 4, (BtnSpace*2+3+margin)*65536+(FieldSize+BtnSpace+margin*2)+14,\ |
140 | 0x10DDEEFF, strNew, strNew_e - strNew |
143 | 0x90DDEEFF, strNew |
141 | mcall 4, (center - 25) * 65536 + 30, 0, strMovs, strMovs_e - strMovs |
144 | mcall 4, (center - 25+margin) * 65536 + 30, 0x80000000, strMovs |
Line 142... | Line 145... | ||
142 | mcall 47, 4*65536+1, moves, (center + 2 ) * 65536 + 30, 0 |
145 | mcall 47, 4*65536+1, moves, (center + 2+margin ) * 65536 + 30, 0 |
143 | 146 | ||
Line 153... | Line 156... | ||
153 | div dh ; al = ax / dh, ah - ®áâ ⮪ |
156 | div dh ; al = ax / dh, ah - ®áâ ⮪ |
154 | mov dh, 0 |
157 | mov dh, 0 |
155 | test ah, ah ; ¥á«¨ ah = 0, ç¨ ¥¬ ®¢ë© àï¤ |
158 | test ah, ah ; ¥á«¨ ah = 0, ç¨ ¥¬ ®¢ë© àï¤ |
156 | jnz @f |
159 | jnz @f |
157 | add ecx, (BtnSize+BtnSpace)*65536 |
160 | add ecx, (BtnSize+BtnSpace)*65536 |
158 | mov ebx, BtnSpace*2*65536+BtnSize |
161 | mov ebx, (BtnSpace*2+margin)*65536+BtnSize+1 |
159 | @@: |
162 | @@: |
160 | mov esi, Color1 ; ¡ ©â ¯® ¤à¥áã |
163 | mov esi, Color1 ; ¡ ©â ¯® ¤à¥áã |
161 | cmp byte [field-NofBtn+edx], 0 ; field-NofBtn+®¬¥à_ª®¯ª¨ |
164 | cmp byte [field-NofBtn+edx], 0 ; field-NofBtn+®¬¥à_ª®¯ª¨ |
162 | jz @f ; £®¢®à¨â ® ¥¥ 梥⥠|
165 | jz @f ; £®¢®à¨â ® ¥¥ 梥⥠|
163 | mov esi, Color2 |
166 | mov esi, Color2 |
Line 221... | Line 224... | ||
221 | 224 | ||
222 | field db NofBtn * NofBtn dup(0) |
225 | field db NofBtn * NofBtn dup(0) |
223 | moves dd 0 |
226 | moves dd 0 |
Line -... | Line 227... | ||
- | 227 | generator dd 0 |
|
- | 228 | ||
224 | generator dd 0 |
229 | header db 'Lights',0 |
225 | - | ||
226 | if lang eq ru |
- | |
227 | header db 'CQ game',0 |
230 | |
228 | header_e: |
- | |
229 | strMovs db '' ; '' |
231 | if lang eq ru |
230 | strMovs_e: |
- | |
231 | strNew db '®¢ ï ¨£à ' ; '®¢ ï ¨£à ' |
232 | strMovs db '',0 |
232 | strNew_e: |
- | |
233 | else |
- | |
234 | header db 'CQ game',0 |
233 | strNew db '®¢ ï ¨£à ',0 |
235 | header_e: |
- | |
236 | strMovs db 'MOVE' |
234 | else |
237 | strMovs_e: |
- | |
238 | strNew db ' New game' |
235 | strMovs db 'MOVE',0 |
Line 239... | Line 236... | ||
239 | strNew_e: |
236 | strNew db ' New game',0 |