Difference between revisions of "CSpect:known bugs"

From SpecNext official Wiki
Jump to: navigation, search
(adding Layer2 and streaming API bugs discovered by playflx, rewording some older bugs)
(V2.19.1.0 refresh (2))
 
(23 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
CSpect V2.19.1.0
 +
* intentional for performance reasons:
 +
** sprites: the collision bit is not implemented
 +
** sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline
 +
** 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)
 +
** modifications to NextRegs done by CPU propagate to rendering usually only once per scanline, usually retroactively for whole current scanline
 +
* major differences / missing features
 +
** blending modes: improved greatly in V2.19.0.3, blending only L2 priority colours wrongly.
 +
** NextZXOS streaming API doesn't work (the initialization of stream fails - rst 8 service 0x86 ; DISK_STRMSTART)
 +
** DMA: Zilog mode is not implemented (port 0x0B) (but zxnDMA does listen to both ports, so SW using 0x0B will get one byte shorter transfers)
 +
* subtle differences
 +
** sprites: in border vs tiles in modes 3,4 and 5 are not drawn same weird way as HW
 +
** 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)
 +
** NextReg $02 implementation of soft-reset does something, but not the same thing like HW
 +
** NextBASIC SPECTRUM command may load SNA file with wrong ROM paged in (very likely related to SW NMI trigger emulation <code>nextreg 2,8</code> ROM2 $0aab)
 +
** NextZXOS browser is unable to load SNA/SNX/Z80 files in latest distribution (does work with older 3.1.5 core NextZXOS) (may be related to SW NMI)
 +
** More >> ZX80 and ZX81 modes reset and hangs on a black screen while launching the Paul Farrow emulators. (may be related to soft-reset)
 +
** More >> 128K BASIC launches but gets no keypresses on 2.19.0.2. On V2.16.6.0 it hangs on a black screen and border. (may be related to soft-reset)
 +
** 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))
 +
** 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)
 +
** debugger: the step-over F8 does run interrupt handler every 16-20ms (as part of debug-live-screen-view drawing), so it's almost after every F8 press
 +
** Z80: <code>di : halt</code> doesn't put CPU in infinite loop waiting for NMI, but proceeds further
 +
** Z80: block of prefixes/instructions 0xDD/0xFD/EI does not inhibit masked interrupts
 +
* recently fixed:
 +
** <del>L2 mode 320x256 and 640x256 could crash when clip.X2 > clip.X1</del>
 +
** <del>CTC timing is affected by the Z80N clock speed. It should be using a constant 28Mhz reference clock.</del>
 +
** <del>vertical ULA clipping is not working in Timex modes</del>
 +
** <del>ULA scroll and half-width scroll is not implemented in Timex modes</del>
 +
** <del>Z80: when masked interrupt handler is entered, the interrupts remain enabled (IFF1=1, IFF2=1)</del>
 +
** <del>divMMC automap-enabled traps certain addresses even when RAM is mapped to MMU0/MMU1</del>
 +
** <del>something not completely right about Enhanced ULA colours (test TFalBUla.sna)</del>
 +
** <del>F3 reset does not autodetect NextZXOS 2.06 vs 2.07 when running with card-image, so 2.06 image ends with purple stripes.</del>
 +
** <del>some NextRegs read as zero until they are written into first (quick-boot mode with SNA file without full NextZXOS image)</del>
 +
** <del>Layer2 640x256x4bpp clipping is broken</del> (V2.19.0.3 does fix this correctly, was still broken before)
  
CSpect V2.15.01
+
not verified in V2.19.1.0 (but known bugs of older versions, may be still present):
* sprites: the collision bit is not implemented (intentional for performance reasons)
+
* CTC time constant of 0 causes incorrect code execution.
* sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline (intentional for performance reasons)
+
* 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)
* (IMPROVED in 2.14.08) modifications to NextRegs done in copper propagate to rendering usually only once per scanline, the state for rendering is sampled around end of right border area before h-blank area (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)
 
* Layer2 displays incorrect data for higher banks (maybe the emulator is still emulating the original limits of nextreg $12 and $13, or some other bug, this needs somewhat better test to decipher current behaviour)
 
* blending modes: seems more wrong 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)
 
* NextReg $02 does not implement soft-reset (and probably also no hard-reset)
 
* 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 ULA palette after power on (quick boot without NextZXOS) is slightly different
 
* default ULA palette after power on (quick boot without NextZXOS) is slightly different
* default value: $6E and $6F are supposed to be fixed since V2.12.30, but the SNA test still reads zeroes
+
* (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.
* 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)
 
 
 
not verified in V2.15.01 (but known bugs of older versions, may be still present):
 
* without the full NextZXOS card image the esxdos services are provided by open source [https://github.com/mikedailly/CSpect CSpect plugin], the implementation is limited and crude - some of the returned values are incorrect/etc, but loading files works.
 
* 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)
 
 
* 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)
 
* 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.
 
* sprites: something something about default clipping... just set clip windows explicitly in your SW.
 +
* sprites: clipping in non-over-border configuration is maybe wrong (probably fixed, needs more testing with 2.19.1.0 or later)
 +
* fixed by V2.19.0.3 <del>stencil mode is not implemented</del>, needs more testing
  
Platform Specific
+
Platform Specific (may be already fixed):
 
* Mac: Mouse does not work / behaves erratically
 
* Mac: Mouse does not work / behaves erratically
 
* Mac: after launch keyboard being irresponsive - try "alt+tab" to other app and back
 
* 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)
+
* Linux: (some/all?) plugin windows like nextregisters (ctrl+alt+r) does not refresh while in debugger
 +
* Linux: (some/all?) plugin windows like nextregisters (ctrl+alt+r) does draw hover-hint tooltip only for one frame, then it becomes invisible
 +
 
 +
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.

Latest revision as of 20:53, 25 January 2023

CSpect V2.19.1.0

  • intentional for performance reasons:
    • sprites: the collision bit is not implemented
    • sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline
    • 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)
    • modifications to NextRegs done by CPU propagate to rendering usually only once per scanline, usually retroactively for whole current scanline
  • major differences / missing features
    • blending modes: improved greatly in V2.19.0.3, blending only L2 priority colours wrongly.
    • NextZXOS streaming API doesn't work (the initialization of stream fails - rst 8 service 0x86 ; DISK_STRMSTART)
    • DMA: Zilog mode is not implemented (port 0x0B) (but zxnDMA does listen to both ports, so SW using 0x0B will get one byte shorter transfers)
  • subtle differences
    • sprites: in border vs tiles in modes 3,4 and 5 are not drawn same weird way as HW
    • 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)
    • NextReg $02 implementation of soft-reset does something, but not the same thing like HW
    • NextBASIC SPECTRUM command may load SNA file with wrong ROM paged in (very likely related to SW NMI trigger emulation nextreg 2,8 ROM2 $0aab)
    • NextZXOS browser is unable to load SNA/SNX/Z80 files in latest distribution (does work with older 3.1.5 core NextZXOS) (may be related to SW NMI)
    • More >> ZX80 and ZX81 modes reset and hangs on a black screen while launching the Paul Farrow emulators. (may be related to soft-reset)
    • More >> 128K BASIC launches but gets no keypresses on 2.19.0.2. On V2.16.6.0 it hangs on a black screen and border. (may be related to soft-reset)
    • 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))
    • 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)
    • debugger: the step-over F8 does run interrupt handler every 16-20ms (as part of debug-live-screen-view drawing), so it's almost after every F8 press
    • Z80: di : halt doesn't put CPU in infinite loop waiting for NMI, but proceeds further
    • Z80: block of prefixes/instructions 0xDD/0xFD/EI does not inhibit masked interrupts
  • recently fixed:
    • L2 mode 320x256 and 640x256 could crash when clip.X2 > clip.X1
    • CTC timing is affected by the Z80N clock speed. It should be using a constant 28Mhz reference clock.
    • vertical ULA clipping is not working in Timex modes
    • ULA scroll and half-width scroll is not implemented in Timex modes
    • Z80: when masked interrupt handler is entered, the interrupts remain enabled (IFF1=1, IFF2=1)
    • divMMC automap-enabled traps certain addresses even when RAM is mapped to MMU0/MMU1
    • something not completely right about Enhanced ULA colours (test TFalBUla.sna)
    • F3 reset does not autodetect NextZXOS 2.06 vs 2.07 when running with card-image, so 2.06 image ends with purple stripes.
    • some NextRegs read as zero until they are written into first (quick-boot mode with SNA file without full NextZXOS image)
    • Layer2 640x256x4bpp clipping is broken (V2.19.0.3 does fix this correctly, was still broken before)

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

  • CTC time constant of 0 causes incorrect code execution.
  • 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)
  • 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.
  • sprites: clipping in non-over-border configuration is maybe wrong (probably fixed, needs more testing with 2.19.1.0 or later)
  • fixed by V2.19.0.3 stencil mode is not implemented, needs more testing

Platform Specific (may be already fixed):

  • Mac: Mouse does not work / behaves erratically
  • Mac: after launch keyboard being irresponsive - try "alt+tab" to other app and back
  • Linux: (some/all?) plugin windows like nextregisters (ctrl+alt+r) does not refresh while in debugger
  • Linux: (some/all?) plugin windows like nextregisters (ctrl+alt+r) does draw hover-hint tooltip only for one frame, then it becomes invisible

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.