Difference between revisions of "CSpect:known bugs"

From SpecNext official Wiki
Jump to: navigation, search
(new bug noted - layer2 palette offset is ignored)
(interrupt-ack does not disable interrupts, F8 in debugger keeps spamming interrupts)
(27 intermediate revisions by 2 users not shown)
Line 1: Line 1:
CSpect V2.12.29
 
* sprites: the collision bit is not implemented (intentionally for emulator performance reasons)
 
* modifications to NextRegs done in copper propagate to rendering usually only once per scanline, usually retroactively for full scanline when triggered in h-blank area (palette changes, X/Y offsets, etc) (mostly intentionally for emulator performance reasons)
 
* some NextRegs read as zero until they are written into first (quick-boot mode without full NextZXOS image) (for example regs $03, $08, $12, $13, $14, $42, $4A, $4B, $4C, $6E, $6F)
 
* NextRegs $09, $34, $41, $8E reads wrong values (the more "esoteric" ones like expansion bus related are not part of this test/list)
 
* NextRegs $6E and $6F don't read the top two bits as zeroes, but return the written value
 
* DMA: Zilog mode is not implemented (port 0x0B), reading DMA registers is not supported
 
* Layer2 port $123B - the new feature "bank offset" when writing with bit4=1 is not working correctly
 
* Layer2 palette offset (nextreg $70) is ignored (at least in new 320x256 and 640x256 modes)
 
* layers clipping - it is often +-1px off showing/hiding one extra pixel
 
* blending modes: there's sometimes wrong half-pixel at end of paper area
 
* sprites: mostly work except the "big sprites" having wrong compound transformations
 
* sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline
 
* sprites rendering is unlimited (real HW drops further sprites after exhausting allocated pixel throughput for current line) (reported by David B.)
 
* border color and Enhanced ULA on/off states sometimes produce incorrect color of border
 
* direct loading of NEX file doesn't init the machine in the same way as NEXLOAD from NextZXOS (memory stays filled with FF, etc)
 
* direct loading of NEX files does not support all combinations of loading-screen type and palette on/off (but V2.12.9 does load more files than V2.12.5) (the unofficial V1.3 NEX file is partially supported)
 
* when running without the full NextZXOS card image, the esxdos services are provided by the emulator itself, the implementation is very limited and crude (most of the returned values are incorrect/etc, but loading files works)
 
  
not verified in V2.12.29 (but known bugs of V2.12.5):
+
CSpect V2.16.0
* screen saver of NextZXOS will "crash" the emulated machine (not emulator itself)
+
* sprites: the collision bit is not implemented (intentional for performance reasons)
* blending modes: the new core3.1.3 blending (with extra ULA slice) is not supported
+
* sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline (intentional for performance reasons)
* sprites: the default clipping is wrong (rather set clip window explicitly)
+
* (moved a bit in 2.16.0) modifications to NextRegs done in copper propagate to rendering usually only once per scanline, the state for rendering is sampled after right border area (ahead of copper wait h=39), affecting previous line instead of next (palette changes, X/Y offsets, etc) (intentional for performance reasons)
 +
* modifications to NextRegs done by CPU propagate to rendering usually only once per scanline, usually retroactively for whole current scanline (mostly intentional for performance reasons)
 +
* blending modes: quite wrong (worse than 2.14.08), but the test is not comprehensive (HW core 3.1.5 now blends Layer2+ULA in different way ([https://github.com/MrKWatkins/ZXSpectrumNextTests/issues/8 details]))
 +
* sprites: 4bit relative patterns are incorrect in complex cases
 +
* DMA: reading-registers are a bit off (for example status bit5+0 not reset correctly after LOAD, probably few more (but core 3.1.5 also reads bit0 wrongly, so always test own code with all target platforms))
 +
* DMA: Zilog mode is not implemented (port 0x0B)
 +
* NextZXOS streaming API doesn't work (the initialization of stream fails - rst 8 service 0x86 ; DISK_STRMSTART)
 +
* tilemode 80x32: horizontal scrolling has wrong scale (probably expecting only 320x256 offsets, confused by 640x256)
 +
* there's still something not completely right about Enhanced ULA colours, maybe just default values are wrong, or even something is emulated wrongly? (test TFalBUla.sna)
 +
* di : halt doesn't put CPU in infinite loop waiting for NMI, but proceeds further
 +
* NextReg $02 implementation of soft/hard-reset does something, but not the same thing like HW yet (stuck in ROM03 infinite loop)
 +
* sprites: the wrap-around the 512x512 coordinate space is only partially implemented in extreme cases (relative sprite so far from anchor that x8 scale wraps it back onto screen)
 +
* default value: $6E and $6F are supposed to be fixed since V2.12.30, but the SNA test still reads zeroes
 +
* some NextRegs read as zero until they are written into first (quick-boot mode with SNA file without full NextZXOS image) (for example regs $03, $12, $13, $14, $42, $4A, $4B, $4C)
 +
* NextRegs $09, $34, $41, $8E read incorrectly (reads after certain writes produce wrong value) (but also the test is checking 3.1.5 behaviour, needs update to 3.1.10)
 +
* the initial file-import sequence of CP/M BIOS fails. (get cpm-a.p3d file from somebody with a working clean CP/M installation and copy that into c:/NextZXOS, or use other emulator to create the file)
 +
* Z80: block of prefixes/instructions 0xDD/0xFD/EI does not inhibit masked interrupts
 +
* Z80: when masked interrupt handler is entered, the interrupts remain enabled (IFF1=1, IFF2=1)
 +
* debugger: the step-over F8 does run interrupt handler after (almost?) every press, and may force interrupts-enabling, use only F7 step-into when debugging parts of code which expect interrupts disabled
 +
 
 +
not verified in V2.16.0 (but known bugs of older versions, may be still present):
 +
* default ULA palette after power on (quick boot without NextZXOS) is slightly different
 +
* (should be improved now, to be tested) without the full NextZXOS card image the esxdos services are provided by open source [https://github.com/mikedailly/CSpectPlugins CSpect plugins], the implementation is limited and crude - some of the returned values are incorrect/etc, but loading files works.
 +
* direct loading of NEX files does not support all combinations of loading-screen type and palette on/off (but V2.12.9 does load more files than V2.12.5, all common ones should work)
 +
* sprites: something something about default clipping... just set clip windows explicitly in your SW.
 +
 
 +
Platform Specific:
 +
* Mac: Mouse does not work / behaves erratically
 +
* Mac: after launch keyboard being irresponsive - try "alt+tab" to other app and back
 +
* Linux: the copper disassembly window added in 2.15.01 (ctrl+alt+c) does not draw its content and remains as empty frame (after debugging the plugin: the winform doesn't receive paint messages from the emulator, same winform code running as stand-alone app without emulator does draw in linux)
 +
 
 +
Not a bug:
 +
* CSpect works with "-sound" (does switch sounds OFF), but shows only black screen without it:
 +
** you forgot to install OpenAL, check the ReadMe.txt of the emulator.

Revision as of 14:25, 28 April 2022

CSpect V2.16.0

  • sprites: the collision bit is not implemented (intentional for performance reasons)
  • sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline (intentional for performance reasons)
  • (moved a bit in 2.16.0) modifications to NextRegs done in copper propagate to rendering usually only once per scanline, the state for rendering is sampled after right border area (ahead of copper wait h=39), affecting previous line instead of next (palette changes, X/Y offsets, etc) (intentional for performance reasons)
  • modifications to NextRegs done by CPU propagate to rendering usually only once per scanline, usually retroactively for whole current scanline (mostly intentional for performance reasons)
  • blending modes: quite wrong (worse than 2.14.08), but the test is not comprehensive (HW core 3.1.5 now blends Layer2+ULA in different way (details))
  • sprites: 4bit relative patterns are incorrect in complex cases
  • DMA: reading-registers are a bit off (for example status bit5+0 not reset correctly after LOAD, probably few more (but core 3.1.5 also reads bit0 wrongly, so always test own code with all target platforms))
  • DMA: Zilog mode is not implemented (port 0x0B)
  • NextZXOS streaming API doesn't work (the initialization of stream fails - rst 8 service 0x86 ; DISK_STRMSTART)
  • tilemode 80x32: horizontal scrolling has wrong scale (probably expecting only 320x256 offsets, confused by 640x256)
  • there's still something not completely right about Enhanced ULA colours, maybe just default values are wrong, or even something is emulated wrongly? (test TFalBUla.sna)
  • di : halt doesn't put CPU in infinite loop waiting for NMI, but proceeds further
  • NextReg $02 implementation of soft/hard-reset does something, but not the same thing like HW yet (stuck in ROM03 infinite loop)
  • sprites: the wrap-around the 512x512 coordinate space is only partially implemented in extreme cases (relative sprite so far from anchor that x8 scale wraps it back onto screen)
  • default value: $6E and $6F are supposed to be fixed since V2.12.30, but the SNA test still reads zeroes
  • some NextRegs read as zero until they are written into first (quick-boot mode with SNA file without full NextZXOS image) (for example regs $03, $12, $13, $14, $42, $4A, $4B, $4C)
  • NextRegs $09, $34, $41, $8E read incorrectly (reads after certain writes produce wrong value) (but also the test is checking 3.1.5 behaviour, needs update to 3.1.10)
  • the initial file-import sequence of CP/M BIOS fails. (get cpm-a.p3d file from somebody with a working clean CP/M installation and copy that into c:/NextZXOS, or use other emulator to create the file)
  • Z80: block of prefixes/instructions 0xDD/0xFD/EI does not inhibit masked interrupts
  • Z80: when masked interrupt handler is entered, the interrupts remain enabled (IFF1=1, IFF2=1)
  • debugger: the step-over F8 does run interrupt handler after (almost?) every press, and may force interrupts-enabling, use only F7 step-into when debugging parts of code which expect interrupts disabled

not verified in V2.16.0 (but known bugs of older versions, may be still present):

  • default ULA palette after power on (quick boot without NextZXOS) is slightly different
  • (should be improved now, to be tested) without the full NextZXOS card image the esxdos services are provided by open source CSpect plugins, the implementation is limited and crude - some of the returned values are incorrect/etc, but loading files works.
  • direct loading of NEX files does not support all combinations of loading-screen type and palette on/off (but V2.12.9 does load more files than V2.12.5, all common ones should work)
  • sprites: something something about default clipping... just set clip windows explicitly in your SW.

Platform Specific:

  • Mac: Mouse does not work / behaves erratically
  • Mac: after launch keyboard being irresponsive - try "alt+tab" to other app and back
  • Linux: the copper disassembly window added in 2.15.01 (ctrl+alt+c) does not draw its content and remains as empty frame (after debugging the plugin: the winform doesn't receive paint messages from the emulator, same winform code running as stand-alone app without emulator does draw in linux)

Not a bug:

  • CSpect works with "-sound" (does switch sounds OFF), but shows only black screen without it:
    • you forgot to install OpenAL, check the ReadMe.txt of the emulator.