@@ -152,7 +152,7 @@ CalculateTurnAI::
152
152
jr nz , .colLoop
153
153
154
154
; ---------------------------------------------------------
155
- ; Check left-to-right diagonal for possible win
155
+ ; Check left-to-right diagonal for win- and block-moves
156
156
; ---------------------------------------------------------
157
157
158
158
; Set registers for checks
@@ -179,8 +179,9 @@ CalculateTurnAI::
179
179
180
180
; Check if win on diagonal
181
181
ld a , c
182
- and a
183
- jr nz , .noWinLtrDiagonal
182
+ cp 1
183
+ jr z , .noWinLtrDiagonal
184
+ ld [ wAITurnBlockFlag ], a
184
185
ld a , b
185
186
cp 1
186
187
jr nz , .noWinLtrDiagonal
@@ -200,13 +201,19 @@ CalculateTurnAI::
200
201
dec hl
201
202
and a
202
203
jr nz , .ltrDiagonalFindWinSquareLoop
204
+ ld a , [ wAITurnBlockFlag ]
205
+ and a
203
206
ld a , b
207
+ jr z , .ltrDiagonalLoadWinMove
208
+ ld [ wAITurnBlockBuffer ], a
209
+ jr .noWinLtrDiagonal
210
+ .ltrDiagonalLoadWinMove
204
211
ld [ wCursorPosAI ], a
205
212
ret
206
213
.noWinLtrDiagonal
207
214
208
215
; ---------------------------------------------------------
209
- ; Check right-to-left diagonal for possible win
216
+ ; Check right-to-left diagonal for win- and block-moves
210
217
; ---------------------------------------------------------
211
218
212
219
; Set registers for checks
@@ -231,8 +238,9 @@ CalculateTurnAI::
231
238
232
239
; Check if win on diagonal
233
240
ld a , c
234
- and a
235
- jr nz , .noWinRtlDiagonal
241
+ cp 1
242
+ jr z , .noWinRtlDiagonal
243
+ ld [ wAITurnBlockFlag ], a
236
244
ld a , b
237
245
cp 1
238
246
jr nz , .noWinRtlDiagonal
@@ -248,7 +256,13 @@ CalculateTurnAI::
248
256
dec hl
249
257
and a
250
258
jr nz , .rtlDiagonalFindWinSquareLoop
259
+ ld a , [ wAITurnBlockFlag ]
260
+ and a
251
261
ld a , b
262
+ jr z , .rtlDiagonalLoadWinMove
263
+ ld [ wAITurnBlockBuffer ], a
264
+ jr .noWinRtlDiagonal
265
+ .rtlDiagonalLoadWinMove
252
266
ld [ wCursorPosAI ], a
253
267
ret
254
268
.noWinRtlDiagonal
0 commit comments