The bane of CRTC compatibility

I want to discuss a feeling I just had again after watching Bits Brew. The feeling that when wanting to create modern demos on the CPC, which show some variant of line-by-line effects, one has to work around the different CRTCs quirks with detections and dedicated CRTC code. I am aware that great documentation exists, the most comprehensive one probably Longshot’s compendium. But I find dealing with this just so dreading and wonder how others overcome this. When I make a demo, I want to focus on the effect or more generally the idea I want to show (or play) and not work around the fact that the CPC video hardware suffers from a set of arbitrary quirks. Can someone relate to this? How did you solve this? The thing is, I do have some ideas and snippets lying around (mostly musical) for years that need some accompanying visuals, but I just can’t be arsed to jump through the CRTC hoop, it seems soooo boring.

I’d invest some time in crafting a handful of well-commented, configurable templates containing all the boring setup code. Especially for demo effects, which often rely on the same split-screen recipe. That way, I could experiment with different effects later without having to deal with the same boilerplate all over again.

Alternatively, if you just want to see what an idea looks like (and maybe tweak it) before implementing it in optimized assembly, JavaScript and a 2D Canvas work wonders :slight_smile:

1 Like

Target only the Plus machines: they all have the same CRTC, problem solved. :joy:

Less flippantly, I don’t see the problem with just declaring the a demo needs a specific CRTC these days. If you’re not getting fun out of the challenge of managing an effect with different hardware, why bother? The vast majority of people will probably see the results in an emulator.

3 Likes

To me the target of a CPC prod is “the physical CPC” whatever its CRTC. It’s a pity that they have different CRTCs but it’s a fact of life.

I consider the CRTC-tricks-oriented subset of possible demos and prods too crowded. Too many prods. Less room for originality.

I focus on other areas, which produce interesting effects while being compatible with all CRTCs.

So, no hassle, no quirky CRTC detection code and compatibility headache, only challenge and fun. :slightly_smiling_face:

E.g. Sunny Day

7 Likes

id say target one CRTC, usual CRTC 1… and add a specific CRTC 0/2 check and instructions later…

This is a really fascinating demo with several layers of graphic effects and sample output on top. I’m sure, bringing this all together and match the timing was a difficult task. But as far as I see, there is nothing used that is CRTC specific. So, not for all, but for many effects it should be possible to create one version of the software for all CRTCs.

Another point of view: Art is not mass production (letting pop art aside). There is no requirement to make something fit all configurations. Use the limitations and features of different machines for different effects. Art is about exploring and using differences. One CRTC example: CRTC 0 requires C0=1 (frames are at minimum 2 characters wide), but is forgiving in relation to HSYNC position and duration. CRTC 2 also allows C0=0 (frames with half the size), but struggles with the HSYNC. Both has its pros and cons. (Maybe this view of CRTC 2 is a bit too friendly.)

2 Likes

Thanks for the replies @Grimmy @AndyCadley @cpcitor @WacKEDmaN @lightforce6128 There’s surely something to chew on.