Ok, just spent a couple of hours on this. The game has a screen buffer at #B44B which contains the address of each character data to make up the screen. The buffer uses 3 bytes per character, one for controlling the looping (sets a relative jump offset, normal #AD for each character, #07 for each end of line and #00 for end of screen), then two bytes for the address of the character data. If bit 7 of the data is not set, the character is not drawn as it is assumed to have not changed since the last screen update.
When the game loads, it inserts all the #AD, #07 and the final #00 bytes in the buffer, but the rest of the data is not changed (not sure if this is the original loader). On some versions of the Amstrad the keyboard definition buffer occupies the address range and obviously a few characters have the same values as what gets placed into the buffer, so the bits are reset and never drawn. I suspect this is either a crack and the original loader cleared the memory first, or the original loader was only designed for a standard CPC464 which has it's keyboard definitions a little lower in memory.