MODPlay

One day in late September 2020 I rediscovered my old MOD file music collection from the early 90s and felt the sudden urge to try to write a MOD-file player for SMSQ/E, which would be the first for this platform!

So I started looking for an existing MOD library that can be ported and eventually found HxCModPlayer by Jean-François del Nero. This is a small and clean C library that could be compiled with C68 without many problems (most stem from the fact that C68’s preprocessor is somewhat… let’s say special).

What was left to do was to write an SSSS (SMSQ/E Samples Sound System) library for C, which I think nobody has tried before either, and the player itself. After a while things stopped crashing and started playing music, hoorrray. I spent a lot of time fine-tuning QPC’s SSSS implementation back in the day (using “18 and Life” from Skid Row as my demo, which to this day I connect with the horrors of programming the DirectSound API for both Windows 95 and NT) and must say I’m very pleased with the result.

The next question was if this works with native hardware, too, as I don’t use any QPC specific features. I sent it off to some beta testers and unfortunately got back that neither Q68 nor the Q40 are fast enough for this. Especially the latter was unexpected to me, but I guess that the way the Q40 generates sounds (by an interrupt that must be served 20000 times per second) might not leave enough CPU power for the rest of the system.

In an effort to rectify this I tried to compile the player using QDOS-gcc. Getting QDOS-gcc to work was an even bigger task than writing the MOD player itself, in the end I succeeded by installing the docker version from XorA. Unfortunately it was all in vain, for reasons I cannot explain the GCC generated code was slower(!) than the Q68 code (yes, I did specify “-o2”). But the Q60 remains untested so far, so if anybody wants to give it a go I’d appreciate feedback.

On SMSQmulator the player at least works but the sound output is pretty LoFi (on my Windows machine, I got feedback that it works better under Linux). On SMSQmuator the player works fine, provided the volume in the settings is set to at least 80. QemuLator also sounds pretty decent, but I didn’t bother making the BOOT file QDOS compatible, that is left as an exercise for the user.

So for best results get QPC, point WIN1 to the extracted “MODPlay.win” and get going, I have already included my personal MOD collection from 25 years ago. Have fun!

MODPlay in action

MODPlay.zip – Complete bootable .WIN file (13MB)
MODPlay_src.zip – The source code

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.