1 (edited by introspec 2016-04-30 19:10:44)

Topic: Rain

Hi guys, I thought that you may appreciate this one here:

PunBB bbcode test

(click on the image to see the youtube video). This is the corresponding download: http://introspec.retropc.ru/demo/rain.zip

Only possible with "Octode XL" *

* not really smile

Re: Rain

woooooooooooooooo! Super nice. Reminds me of some skrju prods (which I adore very much).

Re: Rain

We did hire half the skrju to work for us, to be fair! smile

Re: Rain

Hehe yeah I saw sq was on the payroll big_smile But the overall idea/design was your idea, wasn't it?

5 (edited by introspec 2016-04-30 21:02:27)

Re: Rain

My original design was much darker (a bit like early skrju demos, I suppose). So dark in fact I did not want to make it. sq^skrju came up with an alternative "story" which made it lighter and, ultimately, better in my opinion.

Otherwise, yes, it is mostly my design.

Re: Rain

Well, in any case I do like it a lot. Congrats.

Re: Rain

Thank you very much!

Re: Rain

it looks and sounds good...

Re: Rain

So, what's the magic technique behind it? How are you interlacing the music with the graphics?

10 (edited by introspec 2016-05-02 09:02:38)

Re: Rain

The effects are integrated into the sound core. Basically, out of each 4 iterations of the sound core, one is spent doing something visual. This has to be done using a special protocol (only a few registers are available) and making sure that the timing is fixed. More complex effects, e.g. rain itself, would not fit into a single iteration of the sound loop, so they have to be done using state machines.

It gives you surprisingly large amount of time for effects. In most scenes (excluding rain) I have to introduce various types of delays and time-wasting cycles, so that the thing does not rush too much.

I reckon this trick would work with any pin-based engine. In the case of "Octode XL", because we do regular Octode XL for three iterations of the loop and then do something else, it basically modulates all sounds at a frequency of few kilohertz. This makes it sound a little bit less "solid", but it also gives it a "space-y" feeling, almost as if the sound went through some sort of reverberator.

Re: Rain

This is great, very impressive. Love the music video feel to it smile

I'm amazed there was any processor time left for animation while playing Mister Beep's Interstellar Drift Octode XL tune!

AY drums on the 128K too?

12

Re: Rain

Yeah, I noticed you can lower the rate a lot with the "combined pin pulse" approach. I would have assumed you'd be interlacing music and gfx iterations one by one though Good to know that dropping one out of several sound frames works, too. I'd be curious about how you keep the timing of the gfx frame stable (ie dealing with contention) while still syncing properly, too. I assume syncing is done in software, not via an ISR? Well, guess I'll have to dig into this with a disassembler, then wink

13 (edited by introspec 2016-05-02 20:28:37)

Re: Rain

utz, I pretty much ignored contention for the graphics part of the sound loop. It is only one iteration in 4, so it is nowhere near as dramatic compared with the usual contention noise. Otherwise, I think this would become unbearable to code.

There is no synchronization per se in this demo. Everything is just a massive beeper engine. In fact, it was easier for me to code each scene as a separate beeper engine, which made it repetitive and well-compressible.

AtariTufty, yes, the stock Octode XL drums are a little bit lacking, so I thought that adding AY drum makes it sound a bit better.

14

Re: Rain

So does that mean the gfx iteration actually varies in length? I always thought the timing fluctuations from memory contention would be too much of a nuisance.

15 (edited by introspec 2016-05-02 21:43:48)

Re: Rain

On uncontended machines most timings are aligned perfectly or nearly perfectly (I did have to cut some corners for the sake of keeping my sanity smile ). On the contended machines, depends on the particular scene. Some of the effects do not interact with the slow memory much, so should sound a bit better. The rain does work with the screen memory rather heavily, but I do not think it is very obvious from the point of view of the sound quality.

So, yeah, it all sounds a bit flimsy and dangerous. This is why before I started work on the demo I, firstly, made sure that interlacing the soundloop with empty cycles does not bring the quality down too much. I actually made tests and established what I can get away with in several parts of the beeper engine, e.g. between rows, between patterns, etc. Secondly, I wrote the rain effect and made sure that it looks like rain and once again, that it does not spoil the sound quality too much.