ZESERUse:known bugs

From SpecNext official Wiki
Revision as of 21:57, 10 June 2022 by Ped7g (talk | contribs) (another Z80 emulation bug found)
Jump to: navigation, search

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

Known bugs (ordered by importance "to understand" from Next SW developer point of view and most likely to affect your SW output):

  • 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
  • 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)
  • ULA+tilemode does not support stencil mode
  • 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: EI instruction doesn't inhibit accepting masked interrupt until next instruction is executed fixed May 15, 2022 (fix is not 100% correct, needs rework, long block of DD/FD eventually fails to prevent interrupts)
  • Z80: extra IX/IY prefix is wrongly processed and with even number of prefixes the next instruction is using HL instead of IX/IY
  • 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

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

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

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).