201

(9 replies, posted in Other Platforms)

I was able to run Klavesin in BKBTL Windows, using the BK 0010.01 FDD configuration. Reset machine, Load BIN, then it'll automatically type in S1000 command (start from the load address). Press Enter, and it starts. Had to also enable sound emulation, it was disabled by default.

202

(9 replies, posted in Other Platforms)

There is also BKBTL that has a Qt port and is supposedly works under Linux.

To be honest, I have no idea what the BIN format is, and where it comes from.

177716 has a lot of other stuff, ranging from tape controls to CPU reset vector (!). Don't forget, it is a 16-bit register with plenty a bits on a really oldschool architecture.

203

(9 replies, posted in Other Platforms)

Yes, it is direct bit-banging just like on ZX. There is register 177716 (oct), bit 6 drives both speaker and tape output.

BK uses a PDP-11 compatible single chip CPU, but other than that it is not compatible. It has either a BASIC or FOCAL built-in interpreter (different models), custom graphics mode, etc.

I vaguely remember there was a Tritone port to UT-88 with 8253, just three channels of square wave without duty cycle or different volumes. Maybe it was Apogee or Vector-06C, though. These two has 8253 built-in as well, with all three channels routed to the speaker. All of these are 8080-based machines.

204

(9 replies, posted in Other Platforms)

Here is a list of emulators for Windows. The list says there are better options, but I prefer to stick to one I'm most familiar with, Bashkiria-2M emulator (called just Emu).

So far I have found about 5 beeper editors, but was able to load and hear something from with only one, with a 3-channel engine, called Klavesin (attached).

How to get it started:

Start Emu
Select BK-0010_01
File/Open, set filter to all, select klaves.bin

All others are disk based ones, so you have to be a bit familiar with the MK-DOS on BK-0011, which looks much like Norton Commander from DOS era. Then it gets worse, as neither of the editors have a demo song loaded (but there are some on disks), it is all in Russian, and it considers you know something about the thing. So I wasn't able to figure out any of those yet. Seen that one has loadable 2-ch and 4-ch drivers and a few songs ripped from ZX Spectrum (judging by the filenames).

205

(9 replies, posted in Other Platforms)

I think we've never discussed this one. This is an obscure Soviet era Russian home computer from 1983, one of earliest here. Actually a range of computers, kinda like ZX48/128 series. It is a 16-bit system, based on the LSI-11 architecture. It has extremely ugly graphics, much worse than CGA (imagine that), and of course no sound hardware besides our beloved beeper. Later models like BK-0011M had 128K, disk drive, Covox and AY-3-8910 hooked up, mostly borrowed from Spectrums of the era, but these are minority.

The platform wasn't much popular, always being in the shadow of ZX clones, but it had a following nevertheless, and was one of the second-popular platforms at demoparties. As it is not even remotely compatible with any game computer in existence, all software was created by its enthusiasts. A lot of stuff, from graphics to ideas, has been borrowed from other platforms, including ZX Spectrum. There are some impressive efforts, too, like, Prince of Persia and Monkey Island ports.

To my knowledge, there is a reasonable amount of beeper music. Mostly ripped from ZX Spectrum games, however, with engines rewritten into PDP-11 code, so the sound is much different. There is some original stuff, too, including a couple of music editors with multichannel engines. I would guess that it is the third beeper-heaviest platform after ZX and Apple II, by the sheer amount of stuff.

One problem is that there isn't much videos on YouTube. One can use an emulator (there is a few) and use this archive. Another one is that nearly everything you can find about this platform is written in Russian, so you're going to need a translator. For now a couple videos for you, hopefully will dig out and post some more.

https://www.youtube.com/watch?v=xuy59tQ-8B0
https://www.youtube.com/watch?v=OmR_vR_kEO8
https://www.youtube.com/watch?v=TE8L7-hrNx4

206

(10 replies, posted in Sinclair)

If you'll go the Nth/note with time signatures route, it will be not possible to properly support in tracker-alike editors (I had to replace such formats in some classic engines in 1tracker). Many also consider this format to be difficult to write by hand. So while it may have its own benefits, it dooms the format to never gain popularity.

207

(13 replies, posted in Other Platforms)

Sure, would be nice if it get fixed.

Here is the proof. Run this PRG in VICE, and you'll hear ~245 Hz sound, as expected. Run it in MAME, and you'll hear it twice higher.

The code is:

    lda #$10        ;shift out free running at T2 rate
    sta VIA_CR
    lda #255        ;lowest possible frequency, 1000000/16/255=245hz
    sta VIA_T2CL
    lda #%00001111
    sta VIA_SR

208

(13 replies, posted in Other Platforms)

Thanks to utz's input I got PET running in MAME. Turned out that MAME emulates 6522 quirks better, like, VICE would allow incorrect code to work just fine. However, MAME's SR produced pitch is twice higher than it should be.

209

(2 replies, posted in Sinclair)

Phaser1 in the first song, Music box for second one. BeepFX default set for sound effects.

210

(13 replies, posted in Other Platforms)

I'm working with VICE, as I wasn't able to set up MAME properly. Judging by MAME source code, it does emulate IRQ on shifting, or trying to do so, at least. Latest updates to 6522 emulation there were doing in August, so it is kinda alive.

Emulation quality in VICE, on the other hand, is kinda questionable. It is incomplete, and the way the sound emulated is really weird. Like, direct CB2 control sounds unfiltered, while SR-driven sound is clearly filtered with very weird curve, it gets quieter as the pitch rises, up to the point of being really faint, then gets back to normal volume. So it sounds like a mess in a normal music. Also pitch and frame rate seem to be a bit off.

I didn't find any in-depth docs other than that you're mentioned, and I missed pet-io-2.txt altogether (thanks!). I also used 6522 datasheets, there is three of them, and they're actually different. Synertek SY6522 from 1982 (not 1978!) seem to be more detailed in the timers section. I also looked up VICE and MAME source code.

As I don't have access to the real thing, and active back-and-forth is kinda difficult to do (David is busy man), I can't say for sure. However, Synertek datasheet mentions it explicitly - first enable shifting, then load value to the register to start shifting. As for bit 5 of ACR and loading $ff, I did it other way, by toggling bit 5 of PCR - it does work on the HW regardless of the shift register contents. However, there is the missing notes issue, may be related to either of these things. Will try your approach (looks more elegant), thank for hints.

211

(13 replies, posted in Other Platforms)

6522 is not a real serial interface, it is merely a timer plus shift register, so it does not really know about start and stop bits, it is all up to software to implement actual communication protocols.

When 6522 used for CB2 sound, the free running mode driven by T2 counter is used, that is, a 8-bit counter divides 0.5 MHz and clocks a 8-bit output shift register that is looped. Naive approach for PET sound is to load %11110000, %11001100, or %10101010 into the shift register, then set up T2 counter to some desired frequency. This means you can't go below 500000/255 Hz (~245), but you can have wave shapes other than regular square wave.

There is another mode where you can also output an arbitrary bit stream, getting an IRQ every time when shift register gets empty, thus getting some buffered playback. This mode is not emulated, unfortunately.

212

(13 replies, posted in Other Platforms)

T2 high byte is not supposed to work in the free running mode. I hoped there is some hack to make it work, but considering not so precise emulation and lack of real hardware (not even sole 6522 chip) on my end, I can't do tests. Well, the main issue with pushing PET is that it isn't emulated well (not all timer modes covered, for one), and there is like 1.5 PET emulators around (.5 in MAME, difficult to setup).

To me it seem the only viable way at the moment is to use IRQ to toggle CB2, I did it as a software Shift Register imitation there. However, there is some issue on the real HW that is not figured out yet is that some tones disappear when you switching between IRQ and Shift Register (just on the transition point, maybe IRQs get skipped?), and this behavior is not emulated (works just fine in emulator).

Another issues are that default IRQ handler pushes all the registers before going IRQ trampoline, which wastes a ton of time; default system handler still need to be called once a frame (to make keyboard input work for the game), which introduces clicks; and unexpectedly annoying one, speaker in PET barely can reproduce low frequencies, they're getting very quiet.

213

(13 replies, posted in Other Platforms)

I liked the achievement, but the bit pointed at Mr. Murray was kinda uncool. The 'wrong' person 'hired' implied there is me, I'm working on sound code for his project. Not to mention it questions my abilities, it also does not consider Mr. Murray has a vision on what he wants in his project. Sure I proposed multichannel stuff, sampled SFX, and other advanced things a while back for Planet X3, and once again for this one, but these ideas were all rejected in favor of the standard monophonic sound, not even going below the 245 Hz limit was considered at first. It also needs to be cross-platform (VIC-20, C64, with their native sound as well), and fit into mere 2.5K with code, SFX, and a music track.

214

(164 replies, posted in Sinclair)

I don't think I did anything that would break this compatibility. It is an SDL2 app, maybe something happened with the lib in lastest updates. Will check it out sometime later, thanks for report.

215

(164 replies, posted in Sinclair)

Yeah, by some reason SDL designers decided to not go in order, like ASCII or VK codes, and I didn't notice it.

216

(164 replies, posted in Sinclair)

Thanks for report. Turned out there is a metric ton of various issues in the v0.3 release, working on fixing them for a while now.

217

(8 replies, posted in Sinclair)

At the moment we have plenty engines with wavetable and sample playing capabilities.

utz did a great range of wavetable engines that using 256-byte long looped samples, which is enough to represent vowels; I did a number of engines with sample-based percussion of various kinds.

Just a few days ago I released SquatE, which is very close to your Squeeker (thanks a ton for this thing!), plus it features a sample channel that plays along without interrupting the tone channels. This was done exactly with vocal and pitched instrumental samples in mind. It can be done even better, as a song with vocal parts would need good compression, and 1-bit samples seem to be compressible with basic RLE well enough, so the next step would be an engine with on-fly RLE sample decoder, and a wider number of samples (currently numbers limited to 7-15). Perhaps with a sample offset effect, even.

As for a real-time vowel synth, I think we're discussed this possibility at some point somewhere around here. This sure yet to be done.

218

(5 replies, posted in Sinclair)

That's nice, please remind me if there are major issues with tracker or engines, maybe I'll get another round of updates to fix (some of) them.

219

(5 replies, posted in Sinclair)

An updated version of my older Squat engine. It features much higher sample quality, achieved by using interleaving mixing technique in the Music Box fashion, as well as reading two samples per one iteration of the tone loop, so while tone channels update at ~8400 Hz, sample channel gets updated at ~16.8 KHz, and they're not getting masked by the tone channels anymore. Strategic timings applied to even out tone and sample volumes. This helped to make samples sound much clearer, now suitable for high-frequency instruments such as hats, and for tonal instruments, to some extent. New mixing scheme affected the way tone channels sounds, too, so it does not obsolete the older version, they're more like two flavors of the same thing (gritty loud sound vs clean, but thinner one).

- 4 channels of tone, each channel has its own duty cycle
- Noise mode for the last tone channel
- Noise percussion, 9 pitches of noise at 4 volumes
- 15 non-interrupting sampled drums, can be very lengthy
- Improved speed range

Like usual, it is included into the latest 1tracker release.

220

(2 replies, posted in Sinclair)

Relistened it again. Damn, such a great song and sound.

I recall I didn't recognize my own engine here when I heard it for first time. Yet another example that you never really realize true limits of your creation(s). Happened with Tritone and Octode engines in the past as well, even though I was able to recognize them, but was surprised by what composer guys managed to pull out of those.

221

(164 replies, posted in Sinclair)

A minor update to v0.3, libs updated, some issues fixed, SquatE added. Windows x64 build introduced.

There is an unofficial fork of Game_Music_Emu that is still maintained. However, I ran into a weird issue with it that it works properly only in Debug build, but glitches all around in Release (mostly cuts playing after a very short while). Wasn't able to figure it out, so I decided to stick to the latest official version, even though it is kinda old.

222

(164 replies, posted in Sinclair)

Sure, but this is done on per-engine basis, so no quick fix. Some engines do break long lines, while others (Tritone Digi?) not. Will handle this a bit later.

223

(12 replies, posted in General Discussion)

All Tritone songs before Beepola were made with the XM converter. Some of them still made with the converter, because it gives the super speed capability (to imitate arpeggios and slides).

224

(35 replies, posted in Other Platforms)

A ton of distractions happened since, but English translation of the making of the demo is finally here: https://habr.com/ru/post/486010/

I'm not much familiar with the Savage code, and it is super convoluted to figure it out at quick glance, but it looks like it relies to IM2 handler a lot. Simply removing it certainly won't work. The engine can be rewritten (recreated) to work without interrupts, I think, but it is more like making a new engine from scratch than a simple edit.