-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathXO_WinCon_V1.1.INC
158 lines (117 loc) · 1.82 KB
/
XO_WinCon_V1.1.INC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
CompAndMove:
mov ebx,ecx
and ebx,[field]
xor ebx,ecx
jnz skipH0
shr ecx, 1
mov ebx,ecx
and ebx,[field]
cmp ebx,ecx
jz Win
cmp ebx, 0
jz Win
jmp OutH0
skipH0:
shr ecx,1
OutH0:
shr ecx,1
jmp rcam
;
Win:
or eax, 128
rcam:
ret
WinCon:
xor eax, eax
mov ecx, 0x80808000 ;\
call CompAndMove
test eax, 128
jz noDi1
mov ebx , (2)*65536+(96-2)
mov ecx, (7)*65536+(96+3)
mcall 38 , , , 0xFFFF00
add ebx, 1*65536
sub ecx, 1
mcall , , ,
sub ebx, 1*65536+1
add ecx, 1*65536+1
mcall , , ,
xor eax, eax
or [field], 16
noDi1:
mov ecx, 0x8880000 ;/
call CompAndMove
test eax, 128
jz noDi2
mov ebx , (2)*65536+(96-2)
mov ecx, (96+3)*65536+(7)
mcall 38 , , , 0xFFFF00
sub ebx, 1
sub ecx, 1*65536
mcall , , ,
add ebx, 1*65536+1
add ecx, 1*65536+1
mcall , , ,
xor eax, eax
or [field], 16
noDi2:
mov ecx, 0xA8000000 ;-
call CompAndMove
test eax, 128
jnz DHor
add eax,32
shr ecx, 4
call CompAndMove
test eax, 128
jnz DHor
add eax,32
shr ecx, 4
call CompAndMove
test eax, 128
jz SDHor
DHor:
and eax ,96
mov ecx,(5+15)*65536+(5+15)
mov ebx, eax
shl ebx, 16
or eax,ebx
add ecx, eax
mcall 38 , 2*65536+(96-2), , 0xFFFF00;-
add ecx, 1*65536+1
mcall 38 , , ,
or [field], 16
SDHor:
xor eax, eax
mov ecx, 0x82080000 ;|
call CompAndMove
test eax, 128
jnz DWert
add eax,32
call CompAndMove
test eax, 128
jnz DWert
add eax,32
call CompAndMove
test eax, 128
jz SDWert
DWert:
and eax ,96
mov ebx, eax
shl ebx, 16
or eax, ebx
mov ebx,(15)*65536+(15)
add ebx, eax
mcall 38 , , 7*65536+99 , 0xFFFF00 ;|
add ebx, 1*65536+1
mcall 38 , , ,
or [field], 16
SDWert:
test [field], 16
jnz noDow
mov edx, [field]
and edx, 0xF
cmp edx, 9
jnz noDow
or [field], 48
noDow:
ret