VESCommodore

by sentogiga

  • Released 12 January 2021

Last edited on 5 Feb 2022 by Brittle. See all edits

2 comments

stgiga - 22:14 3 February 2022 #

DoricDream's FamiCommodore for the Fairchild Channel F. I have provided the XM and the SleizsaTrio BIN file. One of the videos is a real hardware recording.

stgiga - 22:16 3 February 2022 #

To showcase the impressiveness of this feat, the first video is the hardware recording.

YT description

This is my limit-pushing double-anniversary Fairchild Channel F cover of Sophie Fay's FamiCommodore. This cover celebrates the 45th anniversary of the Channel F, and the 5th anniversary of FamiCommodore itself, as well as remembering the 10th anniversary of the death of the black inventor of the Channel F who was one of the few black engineers in the 1970s tech field. FamiCommodore's official anniversary was February 18th 2021 (I uploaded this video on January 22nd, 2021), and February is Black History Month, making this cover a symbolic endeavor.
When compiled, it pushes the limits of SleizsaTrio, a player that already pushes the limits of the Channel F with its 1.77-2Mhz CPU and 64 bytes of RAM, plus highly-limited beeper.

In compilation I used a duty cycle of $40 (the safe and also 8khz-whine-free limit, which is 64% width) for the first channel, then the default $20 (32%) for the second channel (the bass), and the third channel (arps) used $10 (16%, producing a similar sound to the arps in FADE's OPL3 cover. Also Oscii Boy's Octode2K15 ZX Beeper cover's arps did this too.)
SleizsaTrio does not do volume, so this is why the beginning of the compiled version sounds like it does. I also pushed the pitch range limits. In addition, the cover uses Speed 1 with a tempo of 448, and also does not use channel 3's noise mode, instead just opting for the proper kick and hihat drums that are on XM channel 4 to give more melody spiff. I used a version of SleizsaTrio that supported 62KiB output binaries so that I could safely compile the song given the XM's size of 45KiB, so to be safe I compiled the binary at the maximum size of 62KiB.
No MIDIslapping was done here, and had I tried doing that, the results would have been disastrous.
Basically when compiled this port of FamiCommodore works by the skin of its teeth, while pushing the Channel F to the extreme. A system with a 1.77mhz-2MHz CPU, 64 bytes of RAM, and a beeper only able to do 3 frequencies of 50% square. SleizsaTrio is based on Zilogat0r's Squeeker, a ZX Beeper engine. The ZX Beeper is not nearly as limited as the Channel F's so it's a crazy feat. Also the song doesn't heavily use pin pulses, only using the thin 16% pulse width for the arps. Note that SleizsaTrio doesn't allow mid-song changes in duty cycle, instead one sets them before compiling. My decision not to use Channel 3's noise mode for drums gave me more melody room than the Doric original, which did fake C64-type swaps between N163 and APU2 noise on the bass. That isn't done here, and that makes this able to stand on its own in terms of arrangement. This can be seen in the video of the uncompiled module, where at some points everything fires at once in a way impossible to do with Channel 3 noise even if the bass channel were channel 3. This rearrangement makes it even more special given the limits.

In total, the limits pushed are duty cycle, speed 1+high tempo, file size, pitch range, channel real-estate, CPU, RAM, and only using the more-realistic (proper kick and hi-hat instead of plain noise) drums not on melody channels in a way that also gives extra melody channel beef. It truly is an impressive feat to see FamiCommodore ported to pretty much the worst platform.