128x192 with 4 levels compatible

Propose new game/software design concepts or new game/software ideas. They can be as whimsical as you like, just be careful you don't ask someone to make it for you...
User avatar
4thRock
Dizzy
Posts: 90
Joined: Thu Nov 09, 2017 9:35 am
Location: Portugal
Contact:

128x192 with 4 levels compatible

Post by 4thRock » Tue Apr 03, 2018 5:09 pm

Ok, another one of my crazy ideas, just for the fun of it!

Thinking about a way to have a new screen-mode, 128x192 with 4 levels + attributes, and be compatible with standard Spectrums.

4 levels image:
Image

ZX Compatible image:
Image


If we take two consecutive pixels:
0 0 = 0
0 1 = 1
1 0 = 2
1 1 = 3

We can store two intermediate "gray scale" values that way.
On normal screens, the user would see a vertical dither pattern. Not that pretty, but not that different from many CGA or Apple II games.

But on an emulator that decodes the pixels patterns, the extra tones would be visible.
Of course, attributes and bright would still behave as before, with a two levels of mixing between paper and ink.

:D
0 x

AndyC
Manic Miner
Posts: 250
Joined: Mon Nov 13, 2017 5:12 am

Re: 128x192 with 4 levels compatible

Post by AndyC » Tue Apr 03, 2018 5:48 pm

Would be similar to the Amstrad CPC Mode 1 and suffer a similar issue with the sheer amount of memory you have to start pushing around to draw screens (if anything it would be worse since you'd need separate planar layouts to remain compatible rather than storing all the bits for a pixel within a given byte). With any display mode that pushes much past about the 7K memory limit you really start to need hardware assistance to shift things around, which is where the CPC and SAM Coupe really suffered. If you really wanted more colours on screen without losing resolution a character-based mode like the C64 would make a lot more sense (and potentially use less memory) but that's difficult to work with unless you have hardware scrolling and sprites.
0 x

Ersh
Manic Miner
Posts: 203
Joined: Mon Nov 13, 2017 1:06 pm

Re: 128x192 with 4 levels compatible

Post by Ersh » Tue Apr 03, 2018 6:10 pm

I think the idea behind 4throck's screenmode is that it takes exactly the same amount of memory as a usual 6912 screen just at the cost of horizontal resolution. Much the same way the multicolour modes work on the C64 (not including colour RAM etc).
0 x

User avatar
Seven.FFF
Manic Miner
Posts: 326
Joined: Sat Nov 25, 2017 10:50 pm
Location: USA

Re: 128x192 with 4 levels compatible

Post by Seven.FFF » Tue Apr 03, 2018 7:03 pm

This is Radastan mode on the ZX-Uno, except that you can have 16 colours per pixel rather than 4 greyscale, taken from a user-specified quarter of the GGGRRRBB ULA+ palette.

Jimistan mode on the Spectrum Next works similarly, except it uses the Timex shadow screen as well, interleaving a byte from each screen, allowing 256 colours per pixel taken freely from a ULA Enhanced palette of 512 colours (because the Next palettes are 9-bit RRRGGGBBB).

ZEsarUX emulates both Radastan and Jimistan modes.
0 x
Robin Verhagen-Guest
SevenFFF / Threetwosevensixseven / colonel32
seven-fff.com/blog

User avatar
4thRock
Dizzy
Posts: 90
Joined: Thu Nov 09, 2017 9:35 am
Location: Portugal
Contact:

Re: 128x192 with 4 levels compatible

Post by 4thRock » Tue Apr 03, 2018 7:13 pm

The idea is to only use the standard ZX spectrum screen memory, and to display images that are 100% compatible with a standard Spectrum.
So no extra memory, and all extra gray levels must translate to dithering.

Simple pixel averaging from 256x192 to 128x192 will get you a gray tone, but my proposal stores 2 gray levels ;)
00 = black
01 = grey 1
10 = grey 2
11 = white
0 x

User avatar
Seven.FFF
Manic Miner
Posts: 326
Joined: Sat Nov 25, 2017 10:50 pm
Location: USA

Re: 128x192 with 4 levels compatible

Post by Seven.FFF » Tue Apr 03, 2018 7:52 pm

OK, I see now! Nice :)
0 x
Robin Verhagen-Guest
SevenFFF / Threetwosevensixseven / colonel32
seven-fff.com/blog

User avatar
RMartins
Manic Miner
Posts: 391
Joined: Thu Nov 16, 2017 3:26 pm

Re: 128x192 with 4 levels compatible

Post by RMartins » Thu Apr 05, 2018 5:27 pm

I'm just curious, how an emulator would know that it should do this conversion ?

Something for the user to select by hand ?
0 x

User avatar
Seven.FFF
Manic Miner
Posts: 326
Joined: Sat Nov 25, 2017 10:50 pm
Location: USA

Re: 128x192 with 4 levels compatible

Post by Seven.FFF » Thu Apr 05, 2018 6:00 pm

Or maybe a ZXI port to turn it on and off, why not?
0 x
Robin Verhagen-Guest
SevenFFF / Threetwosevensixseven / colonel32
seven-fff.com/blog

User avatar
4thRock
Dizzy
Posts: 90
Joined: Thu Nov 09, 2017 9:35 am
Location: Portugal
Contact:

Re: 128x192 with 4 levels compatible

Post by 4thRock » Thu Apr 05, 2018 9:30 pm

I don't know much about hardware, but how about OUT 255 like the extra Timex modes ?
But since the idea is to be retro compatible, then yes, something that the user could select would be ideal.
Just select whatever mode works best for a given game / software.


I have a second idea: limit the effect to only certain attribute combinations (only bright for example).
This would allow full resolution text or detailed graphics as needed.
0 x

Joefish
Manic Miner
Posts: 564
Joined: Tue Nov 14, 2017 10:26 am

Re: 128x192 with 4 levels compatible

Post by Joefish » Fri Apr 06, 2018 9:43 am

I don't really think it's worth it trying to make it visible on ordinary displays. The dithered image looks terrible; no-one would play a game like that.

There's some merit, I suppose, in mimicking the modes of other 8-bit computers - in this case the C64. I don't like the blocky look myself, but if you're going to do it, why not go the whole way and use the attribute byte to set two colours of the four available in each character cell?

You could even use the byte in a 2+3+3 bit fashion to select three of the colours, with the remaining background colour being common across the whole screen. Might as well then use something like ULA+ on top to define separate 4/8/8 colour palettes for each part of that colour byte. Or if the attribute just sets two colours, use a 16-colour palette that can be similarly redefined.

Personally I'd rather see the pixels paired up vertically to gain the extra bits for colour indexing. It's a little harder to make text readable, but I think it works far better for designing sprites, particularly upright humanoid figures, trees, buildings etc.

What I'd like to see is a character-mapped mode like the MSX has, where you can redraw character cells by writing one byte, but there's enough character data that you can put a different character in each cell, then treat the character definition RAM as a completely bitmapped screen.
0 x

Post Reply