Thanks for the information. Unfortunately it's a bit hard for me to follow, as google translate does not do a very good job translating the mostly informal language used there.

Is the 8080 source code available for these ports?

Also, first time I hear about Lvov PK-01. Found this emulator, is it any good?
EDIT: nevermind, seems it's also available in MAME. Hard to find documentation on the machine, though.

Haha, no, I can't take any credit for that discovery, you figured that out by yourself!

I've done some experimenting with using bit 3 for reverb. However, volume levels for bit 3 vary considerably between 48K board revisions (not to mention different models), so it's not really useful. Generally speaking, the output from bit 3 is low enough that it can be ignored for practical purposes. (It does cause problems for engines with a high volume resolution, but that's another story.) Anyway, the main reason you'll see bit 3 being used is because it costs additional cycles to mask it out. Povver is a typical example of this: Use of bit 3 is by no means intentional, but there is at least one location where I couldn't find enough cycles to mask it. Aside from that, some PFM-based engines use bit 3 in sync with bit 4 for a little extra volume boost. Alone Coder's BeepTracker engines do this, for example.


(19 replies, posted in Sinclair)

Meh, that's pretty bad news. But great you figured it out, thanks a lot for your efforts!

So basically any engine that doesn't mask bit 3 will be incompatible with the +3. Which is like, most of my engines yikes So I guess you better stick to Shiru's engines for now.


(19 replies, posted in Sinclair)

It's totally unclear to me what's going on here. Let's wait for Noel.


(19 replies, posted in Sinclair)

Very odd. This should toggle the border color every scanline, but seems it's actually running much slower?
Admittedly I'm pretty much out of ideas, so let's wait and see if Noel will be kind enought to run some tests.


(19 replies, posted in Sinclair)

Ah, crap. Here you go.


(19 replies, posted in Sinclair)

Damn. Could you try the attached .tap and post an image of the screen? Probably won't tell us much either, though.
You don't happen to know any other +3 user who could test this on their machine?


(19 replies, posted in Sinclair)

I see. Very strange indeed. Yes, sounds like it's running in contended RAM, but then it seems to run at pretty much the same speed as the 48K version!?! Well, let's first rule out contention issues. Could you export an .asm file from 1tracker, and post it here? (Or, if you want, assemble it yourself at 0xc000 and try it out. 1tracker's asm output works with sjasmplus.)

Also, have you tried with any other engines?

Yeah, that looks a bit nicer for sure wink Care to make a pull request on Github, with the updated fritzing file? Or, if you can't be bothered, just attach the .fz here.


(20 replies, posted in Sinclair)

The problem on Speccy isn't so much one of finding some free cycles to update graphics. In fact, in PFM and Phaser type engines, you can actually waste quite a few cycles with barely any drawbacks. However, on Speccy we have this thing called memory contention. Very simply said, if you write to or read from certain memory locations on the Speccy, additional wait states will be introduced. While it is possible to predict when those wait states occur, actually writing an engine that will work around these limitations is extremely challenging, so basically nobody bothers. AMP16 is currently about as good as it gets when it comes to running 1-bit code in contended memory.

I can't comment on the headphone amp, since I didn't make that. You'd have to get in touch with @salkinitzor. I can confirm it works, though wink

Watcha mean, the gerber files won't download? You can't download them from github?
Just grab … and it should have all the stuff.

Ok, so what's the current state, you got things rolling on the 83+ but not on the 83?


How do I install the drivers for the Silverlink cable in Windows 10?

**EDIT....despite TILP being recommended, it does not work, because there are no drivers for the silverlink cable that work with this software for Windows 10....

Problem is, there was no Windows 10 when this stuff came out. And then Microsoft made damn sure things will be hell for 3rd party devs who need access to lo-level stuff and don't want to pay $$$ for an agreement with them. Anyway, to make your current setup work with TiLP,  you need to carefully follow all the steps in this guide: … ADME.win32


I am utterly confounded as to WHY when designing an OS for a MOUSE-LESS system, they would give it a cursor and click interface... WHY??

Now that is also beyond me, lol.

Don't install TI-Connect and TiLP at the same time, that's not going to work.
Unless you are using a TI-82, you can theoretically just use TI-Connect, though I faintly recall someone reporting problems with TI-Connect screwing up the HT2.*p files. I'd say give that a try first though.


(12 replies, posted in Atari)

xxl, what is the timing for the interrupts? If we had some fast interrupt reset CONSOL each scanline, for example, then this could actually be useful for PCM/pulse-interleaving playback.


(12 replies, posted in Atari)

Awesome, thanks for the hard work and the great write-up, Shiru. And not least congrats on composing such a kick-ass tune.

I faintly remember trying to code something for GTIA some years ago and also being frustrated by the not-so-stellar documentation available. I wonder if there are any GTIA-specific tricks one could pull here. The basic mode of operation is to write a value < 8 to 0xd01f to set the beeper on, else it's off, right? Did you discover anything beyond that?

Wow, what a massive package. Thanks a lot for all your hard work!


(18 replies, posted in Atari)

I'm sorry, but I won't make it. Too much stuff going on right now.


(2 replies, posted in Sinclair)

Absolutely massive composition, mate. Somehow I can never force myself to polish 'em so much.
Also lol @ "This is from the Pentagon 128, a Russian Spectrum clone that was fan made." Where do these people come from.


(18 replies, posted in Atari)

Thanks for the reminder! Would have totally forgotten about it, since normally SV happens towards the end of the year.
I'm tempted to join this and maybe also 2600 msx, but I'm not sure I'll have time to make something.


(11 replies, posted in Other Platforms)

Ah, now I understand a bit better how you want to generate the different volume levels.

2) You can specify high/low thresholds for pcm2pwm, ie.

$ pcm2pwm sound.wav hi lo

where hi and lo are 8-bit unsigned integers. Default is hi=252, lo=3. Lowering hi and raising lo will make the converter more sensitive.

3) To get rid of the parasite tone (3903Hz), mixing frequency would need to rise above the audible range. So ideally you'd mix at 20KHz or more. On Spectrum we usually mix around 15KHz, and rely on hardware filtering/smoothing to take care of any remaining noise/whining. Beware that emulators introduce additional noise, depending on how they implement sound. MAME's MZ-700 suffers from this, for example.
4). Let me try to construct a basic example. Late night coding attempt, and completely untested, but the idea is to do something like this:

; two-channel OR mixing (aka Squeeker method)
  ld hl,0        ; reset oscillator 2 state
  ld de,div2     ; osc2 clock [freq = sample_rate * div2 / $10000]
  ld hl,0        ; reset osc1 state
  ld de,div1     ; osc1 clock
  ld bc,ring_buffer   ; must be aligned to 256b page
  add hl,de      ; update osc counter channel 1
  ld a,h
  add a,$e0      ; $100 - duty ($e0 = 12.5%)
  ld a,$27
  adc a,0        ; if duty threshold exceeded, A is now $28 
  add hl,de      ; same for channel 2
  ld c,a
  ld a,h
  add a,$e0
  ld a,0
  adc a,c        ; A is now $27, $28, or $29
  and #28        ; mask bits, A = $20 | $28
  ld (bc),a
  inc c
  jr z,loop

PS: You should be able to change your nick now. Let me know if it doesn't work, then I'll change it for you.


(11 replies, posted in Other Platforms)

Great to see some in-game 1-bit music action, and also great to see the MZ-700 getting some love! Tbh I think it actually sounds surprisingly decent considering the sample rate.

There are some people on here that know more about 8253 wizardry than me, but a quick couple of thoughts:

- Beware of the Nyquist limit, ie. the highest frequency in the audio may at most be half of the sample rate. So if you replay at ~2Khz, you should apply a low-pass filter with a cutoff of ~1KHz before resampling.
- pcm2pwm isn't very well suited for harmonic content. Its main purpose is to encode percussive sounds in a very size-efficient manner.
- I'm not sure intersective PWM is worth it. In order to produce decent results, it requires a very high sample rate (likely at least 80KHz), which would be pretty hard to pull off on a 3.5MHz Z80 machine.
- It is possible to mix multiple channels without volume control. A method that works well at low sample rates is to have 2-4 pulse wave generators with a duty cycle below ~25%, and OR their outputs together (example).

Anyway, thanks for the detailed write-up, looking forward to hearing more from your 1-bit endeavours!


(2 replies, posted in Calculators & Pocket Computers)

Hehehe, sounds like you're having some good fun with this thing big_smile Great "experiment", keep 'em coming wink


(3 replies, posted in Sinclair)

Ohhh yes! Such a heavy bass. Another great milestone on the way to perfecting that Tufty™ style.

Ah, the fluctuation isn't that bad. When batteries are 100% full the clock rate drops quite quickly, but around 80% you can probably hand-sync for quite a while.