H. G. Muller wrote on Sun, Feb 6, 2022 10:01 PM UTC:
You are right, moving E appears to trigger the problem. Which is strange, because all pieces use the same code for generating their moves; it is just that the data stored for describing E and e is in a different section of the array with move descriptions. Functions E and e are supposed to tell where exactly. Perhaps something disastrous happens in GAME code when using functions called E or e?
The shorter game causes the same problem: I put print statements at the start of the Pre-Game and Post-Move sections to see when they are called, and a printr $space; at the end of the Pre-Game section. This shows the same behavior also for the short game: Game Courier attempts to play the game twice for deducing the current position, but when it plays it the second time the Pre-Game section doesn't seem to be executed properly, because it sticks with the position resulting from applying the moves the first time instead of producing the initial position. So that the the fist halfmove cannot be applied to it the second time, and aborts the loading with an error message (see below).
I think the key to this is still understanding why Game Courier goes through the movelist twice. I see no need for it to do that.
Please report any bugs or errors to H.G. Muller
pregame
Array
(
[a12] => d
[b12] => l
[c12] => u
[d12] => z
[e12] => o
[f12] => q
[g12] => k
[h12] => o
[i12] => z
[j12] => u
[k12] => l
[l12] => d
[a11] => r
[b11] => m
[c11] => n
[d11] => b
[e11] => a
[f11] => y
[g11] => y
[h11] => a
[i11] => b
[j11] => n
[k11] => m
[l11] => r
[a10] => x
[b10] => i
[c10] => e
[d10] => g
[e10] => s
[f10] => c
[g10] => c
[h10] => s
[i10] => g
[j10] => e
[k10] => i
[l10] => x
[a9] => p
[b9] => p
[c9] => p
[d9] => p
[e9] => p
[f9] => p
[g9] => p
[h9] => p
[i9] => p
[j9] => p
[k9] => p
[l9] => p
[a8] => @
[b8] => @
[c8] => @
[d8] => @
[e8] => @
[f8] => @
[g8] => @
[h8] => @
[i8] => @
[j8] => @
[k8] => @
[l8] => @
[a7] => @
[b7] => @
[c7] => @
[d7] => @
[e7] => @
[f7] => @
[g7] => @
[h7] => @
[i7] => @
[j7] => @
[k7] => @
[l7] => @
[a6] => @
[b6] => @
[c6] => @
[d6] => @
[e6] => @
[f6] => @
[g6] => @
[h6] => @
[i6] => @
[j6] => @
[k6] => @
[l6] => @
[a5] => @
[b5] => @
[c5] => @
[d5] => @
[e5] => @
[f5] => @
[g5] => @
[h5] => @
[i5] => @
[j5] => @
[k5] => @
[l5] => @
[a4] => P
[b4] => P
[c4] => P
[d4] => P
[e4] => P
[f4] => P
[g4] => P
[h4] => P
[i4] => P
[j4] => P
[k4] => P
[l4] => P
[a3] => X
[b3] => I
[c3] => E
[d3] => G
[e3] => S
[f3] => C
[g3] => C
[h3] => S
[i3] => G
[j3] => E
[k3] => I
[l3] => X
[a2] => R
[b2] => M
[c2] => N
[d2] => B
[e2] => A
[f2] => Y
[g2] => Y
[h2] => A
[i2] => B
[j2] => N
[k2] => M
[l2] => R
[a1] => D
[b1] => L
[c1] => U
[d1] => Z
[e1] => O
[f1] => Q
[g1] => K
[h1] => O
[i1] => Z
[j1] => U
[k1] => L
[l1] => D
)
postmove1
postmove2
postmove1
pregame
Array
(
[a12] => d
[b12] => l
[c12] => u
[d12] => z
[e12] => o
[f12] => q
[g12] => k
[h12] => o
[i12] => z
[j12] => u
[k12] => l
[l12] => d
[a11] => r
[b11] => m
[c11] => n
[d11] => b
[e11] => a
[f11] => y
[g11] => y
[h11] => a
[i11] => b
[j11] => n
[k11] => m
[l11] => r
[a10] => x
[b10] => i
[c10] => e
[d10] => g
[e10] => s
[f10] => c
[g10] => c
[h10] => s
[i10] => g
[j10] => e
[k10] => i
[l10] => x
[a9] => p
[b9] => p
[c9] => p
[d9] => @
[e9] => p
[f9] => p
[g9] => p
[h9] => p
[i9] => p
[j9] => p
[k9] => p
[l9] => p
[a8] => @
[b8] => @
[c8] => @
[d8] => p
[e8] => @
[f8] => @
[g8] => @
[h8] => @
[i8] => @
[j8] => @
[k8] => @
[l8] => @
[a7] => @
[b7] => @
[c7] => @
[d7] => @
[e7] => @
[f7] => @
[g7] => @
[h7] => @
[i7] => @
[j7] => @
[k7] => @
[l7] => @
[a6] => @
[b6] => @
[c6] => @
[d6] => @
[e6] => @
[f6] => @
[g6] => @
[h6] => @
[i6] => @
[j6] => @
[k6] => @
[l6] => @
[a5] => @
[b5] => @
[c5] => @
[d5] => @
[e5] => @
[f5] => @
[g5] => @
[h5] => @
[i5] => P
[j5] => @
[k5] => @
[l5] => @
[a4] => P
[b4] => P
[c4] => P
[d4] => P
[e4] => P
[f4] => P
[g4] => P
[h4] => P
[i4] => E
[j4] => P
[k4] => P
[l4] => P
[a3] => X
[b3] => I
[c3] => E
[d3] => G
[e3] => S
[f3] => C
[g3] => C
[h3] => S
[i3] => G
[j3] => E
[k3] => I
[l3] => X
[a2] => R
[b2] => M
[c2] => N
[d2] => B
[e2] => A
[f2] => Y
[g2] => Y
[h2] => A
[i2] => B
[j2] => N
[k2] => M
[l2] => R
[a1] => D
[b1] => L
[c1] => U
[d1] => Z
[e1] => O
[f1] => Q
[g1] => K
[h1] => O
[i1] => Z
[j1] => U
[k1] => L
[l1] => D
)
postmove1
ILLEGAL: P i4-i5 on turn 1:
There was no P on i4. The piece on i4 is a E.
Go back with your browser's BACK button, reload the page, and try again.
For diagnostic purposes, here is the full movelist:
1. P i4-i5
1... p d9-d8
2. E j3-i4
You are right, moving E appears to trigger the problem. Which is strange, because all pieces use the same code for generating their moves; it is just that the data stored for describing E and e is in a different section of the array with move descriptions. Functions E and e are supposed to tell where exactly. Perhaps something disastrous happens in GAME code when using functions called E or e?
The shorter game causes the same problem: I put print statements at the start of the Pre-Game and Post-Move sections to see when they are called, and a printr $space; at the end of the Pre-Game section. This shows the same behavior also for the short game: Game Courier attempts to play the game twice for deducing the current position, but when it plays it the second time the Pre-Game section doesn't seem to be executed properly, because it sticks with the position resulting from applying the moves the first time instead of producing the initial position. So that the the fist halfmove cannot be applied to it the second time, and aborts the loading with an error message (see below).
I think the key to this is still understanding why Game Courier goes through the movelist twice. I see no need for it to do that.