ZSNES indeed has many and many emulating issues that makes certain advanced features don't work properly. Still it is not an excuse to make it unplayable with it if it's still 99% playable.
Naturally, if ZSNES don't ever get any update in next years, ZSNES will start disappearing due of incompatibilities with future operating systems and hardware. For example I can't run ZSNES on full screen with my laptop and a couple of people aren't able to open ZSNES at all because of the CPU architecture, GPU compatibility, etc. Microsoft probably will get rid of DirectDraw soon so I wouldn't get surprised if ZSNES stop working totally on future Windows versions.
Soon or later people will know about ZSNES limitations and will naturally switch to Snes9x, which in my opinion is the best emulator right now in terms of performance x user interface x compatibility. And we mustn't force the switch by making hacks simply refuse ZSNES or otherwise the users will end switching your hack instead...!
For who want to know, here is the list of issues I found with ZSNES so far:
- Emulating issues:
- Sound issues:
- Poor pitch emulation, many songs and sound effects ends getting a bit distorted, for example Mario's spin jump.
- Poor pitch modulation emulation
- Inaccurate echo emulation, where most songs ends sounding with a stronger echo.
- No echo buffer support, the guilty of previous Addmusic incompatibilities.
- The sound core runs desynchronized from SNES CPU, which makes impossible to make more timing precise operations, like faster data transfer which includes sample streaming (high quality music and sfx voices)
- Visual issues:
- Poor windowing (HDMA) support (often works glitchly and doesn't support some window modes).
- Poor offset-per-tile support (mode 2, 4 and 6).
- No hi-res support (which allows 512px width screen or a more "true" transparency).
- No intercalate support.
- No mode 5 and 6 support (known as "high resolution mode", since it can emulate a 512x448 screen).
- (SNES) CPU issues:
- Poor decimal mode support (which allows to identify ZSNES with a few lines of code using this issue)
- No open-bus support
- Poor or no timing at all with other chips, like the sound system I said earlier
- Allows accessing f/v/h-blank only registers at any time, including VRAM, CGRAM, etc.
- Instant hardware multiplication and division.
- SA-1 issues:
- Lower CPU speed (ZSNES makes SA-1 run around 5 MHz, while it should be 10.74 MHz)
- Neither SNES or SA-1 can execute code on I-RAM or BW-RAM.
- Unstable emulation (any SA-1 game can crash at any time, including it can wipe all your saved progress or ZSNES can even quit suddenly).
- Very poor character conversion DMA support (as far I know, ZSNES only added a hack to emulate the one used in SMRPG, the rest of character conversion DMA modes won't work and will either make the game look glitchly or will freeze the game instead.
- Doesn't support SA-1 NMI and a few SA-1 IRQs.
- Makes some SNES registers stop working when SA-1 is present (for example h-blank register).
- SA-1 can access everything, including stuff that not even SNES is supposed to access (any time VRAM access!)
- No 8MB support (that includes any game actually).
- Other:
- Rewinds can desync your current recording movie.
- Rewinds also kills echo effects.
- Sound issues:
- OS issues:
- Often kills other applications that has any audio playing, like Winamp
- Uses obsolete drawing methods, making some GPUs simply refuse ZSNES, specially full screen mode.
- 99% written in pure x86 ASM, making impossible to port it for example to phones and it may stop working on future hardware and operating systems.
And much more issues that I don't know or I forgot. Feel free to complete this table if someone found more issues.