I think I can see the bug now.

In the text writing code it does this:

ld a,(hl)     ; 7e
inc hl        ; 23
ld h,(hl)     ; 66
add a,e       ; 83
add a,e       ; 83
ld l,a        ; 6f
ld a,h        ; 7c
adc a,0       ; ce 00
ld h,a        ; 67

The first add a,e is ok, but if it overflows (goes greater than 255) the second add a,e will update the low byte only of the address. The effect is that the text moves to a different position. The result is as you see.

Code needs to be changed so that full 16-bits are updated. Address will be calculated correct now.:

ld a,(hl)     ;7e
inc hl        ;23
ld h,(hl)     ;66
ld l,a        ;6f
ld d,0        ;16 00
add hl,de     ;19
add hl,de     ;19
nop           ;00
nop           ;00

this will work I think.

Your snapshot is in the middle of drawing I think so already some text is displayed wrong, but if you have an earlier snapshot from when text begins to write then I think we will see correct result.

Try these pokes:

These bytes:

7e,23,66,6F,16,00,19,19,00,00


put these bytes at these addresses: 4111, 41b2 and 4233.
I see three places where similar code is being used, so I guessed that all of these need to be changed.

I hope this should work.

These addresses are based on your snapshot. I don't know what the address will be for 3dck when loaded from start.


arnoldemu
http://www.cpcwiki.eu/forum/applications/3d-construction-kit-bug/msg87055/#msg87055