Difference between revisions of "CSpect:known bugs"

From SpecNext official Wiki
Jump to: navigation, search
(V2.12.31 refresh)
(V2.19.1.0 refresh (2))
 
(42 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.12.31
+
not verified in V2.19.1.0 (but known bugs of older versions, may be still present):
* sprites: the collision bit is not implemented (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 full scanline when triggered in h-blank area (palette changes, X/Y offsets, etc) (mostly intentionally for emulator 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)
* modifications to NextRegs done by CPU propagate to rendering usually only once per scanline, usually on following scanline (mostly intentionally for emulator performance reasons)
+
* default ULA palette after power on (quick boot without NextZXOS) is slightly different
* some NextRegs read as zero until they are written into first (quick-boot mode without full NextZXOS image) (for example regs $03, $12, $13, $14, $42, $4A, $4B, $4C)
+
* (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.
* $6E and $6F are supposed to be fixed in V2.12.30, but the SNA test still reads them as zeroes, maybe the snapshot loader clears them or the fix does not 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)
* NextRegs $09, $34, $41, $8E reads wrong values (the more "esoteric" ones like expansion bus related are not part of this test/list)
+
* sprites: something something about default clipping... just set clip windows explicitly in your SW.
* NextRegs $6E and $6F don't read the top two bits as zeroes, but return the written value
+
* sprites: clipping in non-over-border configuration is maybe wrong (probably fixed, needs more testing with 2.19.1.0 or later)
* NextReg $02 does not implement soft-reset (and probably also no hard-reset)
+
* fixed by V2.19.0.3 <del>stencil mode is not implemented</del>, needs more testing
* DMA: Zilog mode is not implemented (port 0x0B)
 
* DMA: reading registers seems to work only right after "read mask" setup (and only second+ time after start)
 
* Layer2 port $123B - the new feature "bank offset" when writing with bit4=1 is not working correctly
 
* Layer2 palette in 320x256 seems completely wrong (256x192 and 640x256 seems ok)
 
* (advertised as fixed in V2.12.30, but not?) Layer2 palette offset (nextreg $70) is ignored (test in 320 and 640 modes, didn't test in 256x192)
 
* 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
 
* blending modes: the core 3.1.5 now blends Layer2+ULA in different way [(details)](https://github.com/MrKWatkins/ZXSpectrumNextTests/issues/8), CSpect renders it in the core2.0 - 3.0 way
 
* 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
 
* border color and Enhanced ULA on/off states sometimes produce incorrect color of border and paper
 
* 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.31 (but known bugs of older versions, may be still present):
+
Platform Specific (may be already fixed):
* screen saver of NextZXOS will "crash" the emulated machine (not emulator itself)
+
* Mac: Mouse does not work / behaves erratically
* blending modes: the new core3.1.3 blending (with extra Tiles|ULA front-slice) is not supported
+
* Mac: after launch keyboard being irresponsive - try "alt+tab" to other app and back
* sprites rendering is unlimited (real HW drops further sprites after exhausting allocated pixel throughput for current line) (reported by David B.)
+
* Linux: (some/all?) plugin windows like nextregisters (ctrl+alt+r) does not refresh while in debugger
* direct loading of NEX file doesn't init the machine in the same way as NEXLOAD from NextZXOS (memory stays filled with FF, etc)
+
* Linux: (some/all?) plugin windows like nextregisters (ctrl+alt+r) does draw hover-hint tooltip only for one frame, then it becomes invisible
* 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)
 
* 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)
 
  
Platform Specific
+
Not a bug:
* Mac: Mouse does not work / behaves erratically
+
* 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.