Difference between revisions of "CSpect:known bugs"

From SpecNext official Wiki
Jump to: navigation, search
(V2.14.0 refresh)
(add automap bug, change style/sections a bit)
 
(21 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
CSpect V2.16.6.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
 +
** (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)
 +
** 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: wrong, 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]))
 +
** vertical ULA clipping is not working in Timex modes
 +
** ULA scroll and half-width scroll is not implemented in Timex modes
 +
** 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)
 +
* subtle differences
 +
** 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)
 +
** 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))
 +
** 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 (may be related to soft-reset implementation?)
 +
** 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 <del>$03,</del> $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)
 +
** 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, and may force interrupts-enabling, use only F7 step-into when debugging parts of code which expect interrupts disabled
 +
** divMMC automap-enabled traps certain addresses even when RAM is mapped to MMU0/MMU1
 +
** 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
 +
** Z80: when masked interrupt handler is entered, the interrupts remain enabled (IFF1=1, IFF2=1)
 +
** F3 reset does not autodetect NextZXOS 2.06 vs 2.07 when running with card-image, so 2.06 image ends with purple stripes.
 +
* recently fixed:
 +
** <del>tilemode 80x32: horizontal scrolling has wrong scale (probably expecting only 320x256 offsets, confused by 640x256)</del>
 +
** <del>NextReg $02 hard-reset</del>
  
CSpect V2.14.00
+
not verified in V2.16.6.0 (but known bugs of older versions, may be still present):
* sprites: the collision bit is not implemented (intentionally for emulator performance reasons)
+
* CTC timing is affected by the Z80N clock speed. It should be using a constant 28Mhz reference clock.
* sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current/previous scanline (intentionally for emulator performance reasons)
+
* CTC time constant of 0 causes incorrect code execution.
* modifications to NextRegs done in copper propagate to rendering usually only once per scanline, usually retroactively for whole current scanline when triggered in h-blank area (palette changes, X/Y offsets, etc) (mostly intentionally for emulator performance reasons)
+
* stencil mode is not implemented
* modifications to NextRegs done by CPU propagate to rendering usually only once per scanline, usually retroactively for whole current scanline (mostly intentionally for emulator performance reasons)
 
* missing Nextreg $64 "video line offset" (core 3.1.5)
 
* blending modes: the core 3.1.5 now blends Layer2+ULA in different way ([https://github.com/MrKWatkins/ZXSpectrumNextTests/issues/8 details]), CSpect renders it in the core2.0 - 3.0 way
 
* sprites: 4bit relative patterns are incorrect in complex cases
 
* sprites: clipping is incorrect on Y2 in over-border mode, showing many pixels below the edge (other variants were not tested, so they may or may not be correct), and right side clip is now again incorrect
 
* DMA: reading-registers is a bit off (for example bit5+0 not reset correctly after LOAD, and probably more... contrary to core3.1.5 the bit0 is set)
 
* DMA: Zilog mode is not implemented (port 0x0B)
 
* 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)
 
* border color and Enhanced ULA on/off states sometimes produce incorrect color of border and paper, and FLASH effect is not done by flipping pixel values
 
* 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)
 
 
 
not verified in V2.14.00 (but known bugs of older versions, may be still present):
 
* 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)
 
 
* 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)
 
* 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)
* layers clipping - were +-1 or 2 pixel incorrect, but .37 fixed the ones I had in tests, need new test to verify all layers in all possible modes - .37 is probably mostly fixed
+
* default ULA palette after power on (quick boot without NextZXOS) is slightly different
* blending modes: the new core3.1.3 blending (with extra Tiles|ULA front-slice) is not supported
+
* (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)
 
* 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: the default clipping is wrong (set clip window explicitly any way) - this one was maybe silently fixed without changelog note, but I'm not sure (not interesting enough to run precise test)
+
* sprites: something something about default clipping... just set clip windows explicitly in your SW.
 +
* sprites: clipping in non-over-border configuration is maybe wrong
 +
* fixed (but needs thorough test) <del>Layer2 640x256x4bpp clipping is broken (and rendering partially too? should be fixed in next release)</del>
  
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
 +
* works in 2.16.5.0 <del>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)</del>
 +
 +
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 11:35, 29 November 2022

CSpect V2.16.6.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
    • (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)
    • 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: wrong, but the test is not comprehensive (HW core 3.1.5 now blends Layer2+ULA in different way (details))
    • vertical ULA clipping is not working in Timex modes
    • ULA scroll and half-width scroll is not implemented in Timex modes
    • 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)
  • subtle differences
    • 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)
    • 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))
    • 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 (may be related to soft-reset implementation?)
    • 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)
    • 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, and may force interrupts-enabling, use only F7 step-into when debugging parts of code which expect interrupts disabled
    • divMMC automap-enabled traps certain addresses even when RAM is mapped to MMU0/MMU1
    • 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
    • Z80: when masked interrupt handler is entered, the interrupts remain enabled (IFF1=1, IFF2=1)
    • F3 reset does not autodetect NextZXOS 2.06 vs 2.07 when running with card-image, so 2.06 image ends with purple stripes.
  • recently fixed:
    • tilemode 80x32: horizontal scrolling has wrong scale (probably expecting only 320x256 offsets, confused by 640x256)
    • NextReg $02 hard-reset

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

  • CTC timing is affected by the Z80N clock speed. It should be using a constant 28Mhz reference clock.
  • CTC time constant of 0 causes incorrect code execution.
  • stencil mode is not implemented
  • 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
  • fixed (but needs thorough test) Layer2 640x256x4bpp clipping is broken (and rendering partially too? should be fixed in next release)

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
  • works in 2.16.5.0 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.