Смотрите другие статьи из рубрики «Консольные классики» в Google.
Смотрите другие статьи из рубрики «Консольные классики» в Google.
NextPlayer gets a thorough ZX Spectrum makeover, shrinking its code, widening hardware support, and taming TurboSound’s rough edges.
A Familiar Problem in the AY Music Scene
ZX Spectrum music has never suffered from a lack of charm. It has suffered from a lack of convenient players.
For years, AY and TurboSound enthusiasts have had only a small selection of serious tracker-module players. The most broadly compatible option has been The Viewer, while WildPlayer focuses on expanded hardware and TSMP has gradually become a relic of an earlier era. All three were designed around TR-DOS, which meant real-hardware listeners relied on them to play roughly 500 TurboSound modules, with that collection continuing to grow.
The situation on neighboring systems was even thinner. NedoOS had its own command-line option, while +3DOS offered Modplay, though without TurboSound support. Other DOS variants had no dedicated player at all. That’s a pretty thin shelf for a music format that remains one of the Spectrum’s liveliest creative corners.
Why NextPlayer Felt Like a Strange Fit
That made NextPlayer’s arrival feel important. It brought TurboSound support to the NextZXOS environment, and for a while it appeared to be the only practical alternative to the older players.
Then the questions started.
NextPlayer used the ordinary ZX Spectrum screen. It didn’t make use of three AY chips. Its file access depended on esxDOS, a system already available to users of several storage interfaces and FPGA-based Spectrum machines. It also wasn’t deeply integrated into the distinctive hardware features that supposedly justified tying it so closely to the Next platform.
In other words, the program wore a modern badge while doing much of its work in a thoroughly traditional way. That isn’t automatically bad—sometimes a simple engine is exactly what you want—but the arrangement did feel awkward.
The Code Raised Eyebrows Too
The interface became a second source of debate. Some observers saw the code as the product of automated assistance; others argued that the sheer number of mistakes pointed in the opposite direction. I can’t settle that argument, and frankly, the label matters less than the result: the code contained plenty of clutter.
Several routines sent screen-position and display data to the wrong registers before swapping them around later. Number-printing functions passed parameters through the stack in a way that could fail when the stack moved. The program used VTPL for PT2 and PT3 playback because it supported TurboSound, yet another PT2/PT3 player was still compiled into the program and stored in memory without ever being called.
There were also unused branches, duplicated routines, abandoned structures, and variables that served no visible purpose. A little archaeological digging through old assembly code is normal in retro computing. This was more like opening a cupboard and finding three incomplete radios, a bicycle pump, and a manual for something that never existed.
The publicly available code also contained contributions from several earlier AY developers without clear credit, while the player’s authorship and interface work were presented in a way that blurred those lines. That was a fair criticism, especially in a small scene where technical credit is part of the historical record.
The First Step Toward deNextPlayer
User dissatisfaction eventually pushed NextPlayer away from its exclusive Next focus. From version 0.72 onward, it was aimed at esxDOS and the standard 128K Spectrum, although the transition wasn’t especially polished.
The program performed little error checking. When an esxDOS operation failed, it could simply reset instead of explaining what had gone wrong. Emulator users discovered this quickly when loading the supplied TAP file. A player that collapses because a file system request misbehaves is not exactly giving the listener a warm welcome.
The project also hit a strange social wall. The original developer reportedly hoped someone else would fix the program, while also feeling that people preferred to criticize it. After that, the source code stopped being published. For users, that left an uncomfortable choice: continue relying on a tool that needed work, or rebuild the useful parts themselves.
That second option became deNextPlayer.
Two Players, One Very Different Direction


The older NextPlayer 0.74 appears beside deNextPlayer 0.75, showing how closely the interface lineage remains connected.
At first glance, deNextPlayer looked like a straightforward cleanup. My first impression was that it would be little more than a stripped-down port with some rough edges sanded away. That turned out to be too dismissive. The project changed enough under the hood to become a proper TR-DOS-oriented player rather than a Next program with its badge removed.
The work took about two weeks of code reading and repeated compilation. It began with translating comments and labels, then moved into removing Next-specific registers and hardware operations, including the 3.5/28 MHz screen-output trick intended to speed up text rendering.
Once those dependencies were removed, the program started to resemble software designed for ordinary Spectrum hardware from the beginning. That shift is more meaningful than it sounds. Good retro software isn’t only about cutting features; it’s about making every remaining feature fit the machine underneath it.
A Dramatic Reduction in Size
The result is striking on paper.
NextPlayer occupied 49,664 bytes of code, plus roughly 176–192 KB depending on directory size and the dynamic memory banks used for long filenames. deNextPlayer reduced the main program to 17,862 bytes, with a packed release fitting into about 13 KB on disk.
That smaller build runs on compatible TR-DOS machines with AY or TurboSound hardware and as little as 48 KB of memory. More importantly, the reduction didn’t come from gutting the player. The feature set was preserved and, in several areas, expanded.
This is the kind of optimization that makes sense on an old computer. Every byte has a job, and anything sitting around waiting for a hardware feature that isn’t present is effectively charging rent.
The File Browser Becomes More Useful


One screen searches for files matching “mon,” while the other plays only the resulting selection.
The file browser received a particularly practical overhaul. deNextPlayer supports TR-DOS directories with error handling and can manage directories containing up to 128 files. It recognizes both three-character extensions—such as PT2, PT3, STC, STP, and SQT—and the standard M and C extensions.
Extension filtering is now case-insensitive, which sounds tiny until you’re staring at a directory assembled from files created by several different tools. Drive switching also handles a missing disk rather than treating it as an invitation to crash.
Long-filename support was replaced with information that is more useful on the target hardware: file names, file sizes in bytes, disk errors, and clearer messages when a directory lacks playable modules. During playback, the freed space can show the music editor used to create the track and identify its TurboSound format.
The player can also return to the same directory entry after playback is interrupted with Break. That’s the sort of detail that never makes a feature list look glamorous, but it saves plenty of needless cursor wrestling.
TurboSound Without the Crackle
There’s a less obvious hardware issue lurking in TurboSound playback: amplitude.
A single AY chip can reach roughly 15 amplitude units at its peak, while two chips together can approach 30. The amplifier input, however, is designed for around 15. When both chips push too hard, the signal clips. On real hardware, especially through headphones, that can sound like harsh crackling.
A PC player may hide the problem entirely. Real machines won’t, except in hardware configurations where the signals are properly matched. The Unreal emulator can reproduce the unpleasant effect too, which is a reminder that emulation occasionally gets uncomfortable details right.


The interface shown with Alone Coder TS and Vortex TS playback.
deNextPlayer addresses this with an optional amplitude filter. It is disabled by default, presumably because not every setup needs it, but it provides a useful safety valve for TurboSound listening.
The filter replaces the original player’s AY/YM switching feature. On actual hardware, there usually isn’t anything meaningful to switch in that context: the playback tables target approximately 1.75 MHz divided by 16, and the AY-3-8910 and YM2149 behave closely enough for the same tables. Their audible difference comes mainly from the shape of the volume curve.
More Detection, Less Guesswork
deNextPlayer can inspect a file header to identify the tracker or editor used to create a tune. It can also identify the TurboSound format and switch stereo layouts between ABC and ACB in software.
That last feature matters for modules made with Sound Tracker and SQ Tracker, where the expected channel arrangement may differ. Rather than forcing listeners to dig through configuration screens before every track, the player handles the adjustment directly.
At startup, it checks for TurboSound and displays an information line. The analyzer was also made more sensitive, with a clearer palette that makes its readings easier to interpret. These changes don’t transform the program into a modern media player—and that’s probably for the best—but they make the old machine feel less hostile.
The 0.75 Feature Set
- Runs on a 48K ZX Spectrum.
- Supports TR-DOS with error handling and directories of up to 128 files.
- Recognizes PT2, PT3, STC, STP, SQT, M, and C extensions.
- Filters extensions without caring about capitalization.
- Switches drives while reporting missing-disk errors.
- Displays file names and sizes instead of relying on long-filename data.
- Distinguishes disk errors, empty selections, and unplayable modules.
- Identifies the music editor and TurboSound format.
- Detects TurboSound at startup.
- Includes an optional amplitude filter.
- Switches ABC and ACB stereo modes in software for all supported file types.
- Improves analyzer sensitivity and readability.
- Reworks navigation for faster operation and fewer bugs.
- Returns to the interrupted directory entry after pressing Break.
- Plays most AlCo TS modules, including examples that older players may reject.
- Refactors and optimizes the code layout.
- Restores information about the programmers behind the playback routines and AY-related code.
- Removes a large collection of errors and unused implementation debris.
The one thing I’m still uncertain about is how every edge case behaves across the enormous variety of Spectrum clones and storage setups. No two retro hardware collections seem to agree on what “standard” means. Still, deNextPlayer’s direction is clear: fewer assumptions, better feedback, and a much smaller footprint.
Заключение
deNextPlayer is a strong example of practical retro-software surgery. It takes a player that was too tightly attached to hardware it barely used, removes unnecessary machinery, repairs the rough spots, and makes the result useful on a much broader range of Spectrum systems.
It isn’t flashy. It doesn’t need to be. When the music starts cleanly, the browser finds the right file, and TurboSound stops yelling through your headphones, the old machine has already made its case. Would you give deNextPlayer a place in your Spectrum setup?
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
- What is deNextPlayer?
deNextPlayer is a compact AY and TurboSound module player designed for TR-DOS-compatible ZX Spectrum hardware. - Can deNextPlayer run on a 48K Spectrum?
Yes. The 0.75 TR-DOS version is designed to run with as little as 48 KB of memory. - Which music formats does it support?
It supports PT2, PT3, STC, STP, SQT, M, and C file extensions, along with a broad range of TurboSound modules. - What does the amplitude filter do?
It reduces the risk of analog clipping when two AY chips produce a combined signal that is too strong for the amplifier input. - Can it switch between ABC and ACB stereo layouts?
Yes. The player can programmatically switch between ABC and ACB modes, including for files created with Sound Tracker and SQ Tracker.
Want more thoughtful retro-hardware stories and classic game analysis? Подписаться на рассылку for occasional updates.
