The graphical glitches and extraneous wipes were all caused by a 6809 register not being preserved in the sprite flipping routine. I found that very late last night and patched it, but this morning I implemented the proper fix. All rendering looks spot-on now - another major milestone!
I also found the bug when jumping off the top of the screen; that was (Z80) NEG transcribed as COMA instead of NEGA - used when calculating the actual number of lines to render for the sprite.
So at this point, there are no outstanding bugs that are apparent from my (admittedly) limited testing, although I have wandered around several dozen screens and jumped and climbed all over the contents. I would imagine that most, if not all, of the rendering logic has been reasonably thoroughly exercised by now.
|It was previously impossible to get to this block without crashing the game|
There is one very minor glitch that seems to appear on only the initial screen, in that exiting the south arch causes a pixel or two from the panel to be wiped. However I have confirmed that this is actually an issue with original ZX Spectrum version, so it's something that I will not be fixing. After all, the idea is to provide a completely authentic experience.
Next on the agenda is the nightly transformation to sabrewulf and adding the special objects and the ability to pick them up and drop them. I'm tempted to say that it'll be quite straightforward, but I don't want to jinx myself!
UPDATE: Sabreman/sabrewulf (day/night) transform done.
UPDATE #2: Special objects appear.
UPDATE #3: Pickup/drop is coded and half-working - need to code object display to debug.