Subversion Repositories Kolibri OS

Rev

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