Difference between revisions of "ZESERUse:known bugs"

From SpecNext official Wiki
Jump to: navigation, search
(separating from ZEsarUX page)
 
m
 
(7 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
* don't use "--enable-esxdos-handler" option together with running NextZXOS from full MMC card image - it will clash with the MMC functionality
 
* don't use "--enable-esxdos-handler" option together with running NextZXOS from full MMC card image - it will clash with the MMC functionality
  
Known bugs (ordered by importance "to understand" from Next SW developer point of view and most likely to affect your SW output):
+
v8.2.2 2022-07-01 - Known bugs (ordered by importance "to understand" from Next SW developer point of view and most likely to affect your SW output):
 +
* direct load of NEX file with entry bank 8+ is broken (fixed in source for v8.2.6)
 
* 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) - when compiled with extra flag "-DTBBLUE_DELAYED_COPPER_WAITS" it will delay copper instructions waiting for h-blank till next line (does produce better visual output in some cases, but makes the emulation less accurate in terms of timing)
 
* 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) - when compiled with extra flag "-DTBBLUE_DELAYED_COPPER_WAITS" it will delay copper instructions waiting for h-blank till next line (does produce better visual output in some cases, but makes the emulation less accurate in terms of timing)
* blending modes - only L2+ULA blending (core 3.0 mode), +tiles and new core3.1.3 modes are not implemented
+
* blending modes - sprites ordering above/under non-blend layers is not implemented, "S,U|T,B+L" ordering is used to render blend modes
* ULA+tilemode does not support stencil mode
+
* slow-DMA to audio nextregs does sounds like lot of noise instead of playing the expected audio (seems the slow-DMA-audio may be actually somewhat working, but Mike's mod-player detects wrong speed due to some bug in emulation maybe, outputting later noise as result of wrong initialization - needs lot more debugging to figure out what precisely is broken)
 +
* zilogDMA does not read register values (regression?)
 
* sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline, calculation of pixel-bandwidth exhaustion is vastly incorrect
 
* sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline, calculation of pixel-bandwidth exhaustion is vastly incorrect
* relative sprites with huge relative offsets in "unified" mode don't wrap-around correctly in large scale situations (like x8 scale with +120 offset, the HW will wrap it somehow all the way around making the child visible somewhere on screen, but in ZESERUse they seem to get completely rejected as offscreen pixels) (should be fixed in latest commits, but I didn't re-test it thoroughly yet)
 
 
* nextreg $8C "alt ROM" is probably not emulated 100% correctly
 
* nextreg $8C "alt ROM" is probably not emulated 100% correctly
 
* SRAM region shadowed by BRAM (bank5 + half-bank7) is not emulated
 
* SRAM region shadowed by BRAM (bank5 + half-bank7) is not emulated
* CP/M "no files" stub screen can't reach NextZXOS after space (it's doing `nextreg 2,1` in loop, soft-reset implementation seems is incomplete)
+
* missing all core 3.1.6+ features (the emulator is targetting core3.1.5 state at this moment)
* missing all core 3.1.6 features (the emulator is targetting core3.1.5 state at this moment)
 
 
* tilemode doesn't wrap in memory the same way as HW (when gfx/map address is toward end of Bank 5)
 
* tilemode doesn't wrap in memory the same way as HW (when gfx/map address is toward end of Bank 5)
 
* audio has "clicks" and noise on many platforms, although YMMV ("--ao pulse" made it better for me)
 
* audio has "clicks" and noise on many platforms, although YMMV ("--ao pulse" made it better for me)
 
* when running without the full NextZXOS card image, the esxdos services are provided by the emulator itself, which does not implement all of them, and they don't always return the state described by the NextZXOS documentation
 
* when running without the full NextZXOS card image, the esxdos services are provided by the emulator itself, which does not implement all of them, and they don't always return the state described by the NextZXOS documentation
 +
* Z80: (should not affect any ZX SW, just emulation accuracy) ccf/scf doesn't produce stable outcome in undocumented flags
 +
* Z80: (should not affect any ZX SW, just emulation accuracy) block instruction flags while repeating are incorrect
 +
 +
v8.2.1:
 +
* <del>blending modes - only L2+ULA blending (core 3.0 mode), +tiles and new core3.1.3 modes are not implemented</del> - improved in 8.2.2
 +
* <del>ULA+tilemode does not support stencil mode</del> - implemented in 8.2.2 without much testing
 +
* <del>Z80: EI instruction doesn't inhibit accepting masked interrupt until next instruction is executed</del> - hopefully 100% fixed in 8.2.2
 +
* <del>Z80: extra IX/IY prefix is wrongly processed and with even number of prefixes the next instruction is using HL instead of IX/IY</del> - fixed in 8.2.2
 +
* <del>ULA half-width scroll is not implemented</del> - fixed in 8.2.2
  
 
----------------
 
----------------
Line 23: Line 32:
 
I'm building it in linux with this configuration (running the command in bash shell inside the src folder to launch configure script):
 
I'm building it in linux with this configuration (running the command in bash shell inside the src folder to launch configure script):
  
<nowiki>CFLAGS='-O2 -DTBBLUE_DELAYED_COPPER_WAITS' LDFLAGS=-O2 ./configure --disable-stdout --disable-simpletext --disable-curses --disable-aa --disable-caca --prefix ~/.local --disable-alsa --disable-dsp --disable-coreaudio --disable-cocoa --disable-cursesw
+
<nowiki>CFLAGS='-O3 -DTBBLUE_DELAYED_COPPER_WAITS' LDFLAGS=-O3 ./configure --disable-stdout --disable-simpletext --disable-curses --disable-aa --disable-caca --prefix ~/.local --disable-alsa --disable-dsp --disable-coreaudio --disable-cocoa --disable-cursesw --enable-memptr --enable-undoc-scfccf --enable-visualmem --enable-cpustats --enable-sdl2
 
</nowiki>
 
</nowiki>
  
 
And I'm launching the emulator usually through helper scripts reconfiguring it to tbblue machine (not using config file), my helper scripts are available at [https://github.com/MrKWatkins/ZXSpectrumNextTests/tree/develop/Tools ZXSpectrumNextTests/Tools], check "runzeseruse" and "mmczeseruse" (edit the file paths to use them at your own PC).
 
And I'm launching the emulator usually through helper scripts reconfiguring it to tbblue machine (not using config file), my helper scripts are available at [https://github.com/MrKWatkins/ZXSpectrumNextTests/tree/develop/Tools ZXSpectrumNextTests/Tools], check "runzeseruse" and "mmczeseruse" (edit the file paths to use them at your own PC).

Latest revision as of 19:13, 19 August 2024

You may want also to check the official ZEsarUX FAQ to see if you have a known issue which has solution (ZX Next is "TBBlue" type of machine).

Other Issues (not a bug):

  • 28MHz mode requires quite powerful PC to emulate it smoothly, "lagging" emulator menu/etc is likely to happen in 28MHz mode - the fork is even more power hungry than vanilla ZEsarUX version
  • don't use "--enable-esxdos-handler" option together with running NextZXOS from full MMC card image - it will clash with the MMC functionality

v8.2.2 2022-07-01 - Known bugs (ordered by importance "to understand" from Next SW developer point of view and most likely to affect your SW output):

  • direct load of NEX file with entry bank 8+ is broken (fixed in source for v8.2.6)
  • 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) - when compiled with extra flag "-DTBBLUE_DELAYED_COPPER_WAITS" it will delay copper instructions waiting for h-blank till next line (does produce better visual output in some cases, but makes the emulation less accurate in terms of timing)
  • blending modes - sprites ordering above/under non-blend layers is not implemented, "S,U|T,B+L" ordering is used to render blend modes
  • slow-DMA to audio nextregs does sounds like lot of noise instead of playing the expected audio (seems the slow-DMA-audio may be actually somewhat working, but Mike's mod-player detects wrong speed due to some bug in emulation maybe, outputting later noise as result of wrong initialization - needs lot more debugging to figure out what precisely is broken)
  • zilogDMA does not read register values (regression?)
  • sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline, calculation of pixel-bandwidth exhaustion is vastly incorrect
  • nextreg $8C "alt ROM" is probably not emulated 100% correctly
  • SRAM region shadowed by BRAM (bank5 + half-bank7) is not emulated
  • missing all core 3.1.6+ features (the emulator is targetting core3.1.5 state at this moment)
  • tilemode doesn't wrap in memory the same way as HW (when gfx/map address is toward end of Bank 5)
  • audio has "clicks" and noise on many platforms, although YMMV ("--ao pulse" made it better for me)
  • when running without the full NextZXOS card image, the esxdos services are provided by the emulator itself, which does not implement all of them, and they don't always return the state described by the NextZXOS documentation
  • Z80: (should not affect any ZX SW, just emulation accuracy) ccf/scf doesn't produce stable outcome in undocumented flags
  • Z80: (should not affect any ZX SW, just emulation accuracy) block instruction flags while repeating are incorrect

v8.2.1:

  • blending modes - only L2+ULA blending (core 3.0 mode), +tiles and new core3.1.3 modes are not implemented - improved in 8.2.2
  • ULA+tilemode does not support stencil mode - implemented in 8.2.2 without much testing
  • Z80: EI instruction doesn't inhibit accepting masked interrupt until next instruction is executed - hopefully 100% fixed in 8.2.2
  • Z80: extra IX/IY prefix is wrongly processed and with even number of prefixes the next instruction is using HL instead of IX/IY - fixed in 8.2.2
  • ULA half-width scroll is not implemented - fixed in 8.2.2

I'm building it in linux with this configuration (running the command in bash shell inside the src folder to launch configure script):

CFLAGS='-O3 -DTBBLUE_DELAYED_COPPER_WAITS' LDFLAGS=-O3 ./configure --disable-stdout --disable-simpletext --disable-curses --disable-aa --disable-caca --prefix ~/.local --disable-alsa --disable-dsp --disable-coreaudio --disable-cocoa --disable-cursesw --enable-memptr --enable-undoc-scfccf --enable-visualmem --enable-cpustats --enable-sdl2

And I'm launching the emulator usually through helper scripts reconfiguring it to tbblue machine (not using config file), my helper scripts are available at ZXSpectrumNextTests/Tools, check "runzeseruse" and "mmczeseruse" (edit the file paths to use them at your own PC).