I’ve been tinkering with this ZX Spectrum graphics viewer/editor for a while now so I thought it was time to put it up for download. You can find it here.
The last thing that has been added is the TV screen view mode.
Basically you would normally rip graphics by arranging the bits in the file into rows of 8 bits / 16 / 24 / 32 etc. until you find the right width column to display the stored graphics as in the picture below:
You can see that the rows have been adjusted to 24 bits wide and the graphics become evident hidden within the file. When the programmer wants to use the graphics they are written into the display area of the memory in a certain way and they come up on your TV screen.
However the display part of the memory writes the graphics onto the screen in a unique way. If you consider a ZX spectrum with attached TV screen with the top row of pixels displayed being row 0, it will stream the bits linearly from the display area however it will draw on screen row 0, row 8,16,24,32,40,48 and 56. It will then jump back to row 1,9,17,25 etc etc. Once its done 8 rows of 8 pixels depth it then starts on the middle of the screen in the same fashion and then the lower part.
So thats just a monochrome screen of pixels on a background. It then reads the colour info from the attributes part of the speccies memory which follows straight after the display area.
Starting from the top left of the screen, each 8pixel by 8pixel block has a byte of attribute info associated with it that is only relevant for that 8×8 square. This byte of attributes contains Paper colour (background colour), Ink Colour (Pixel Colour), a bright bit and a flasher bit, both of which are either off (0) or on(1).
The speccy actually has a 15 colour pallette, not 8 as I thought. It has black, white, Yellow, Blue, Green, Red, Cyan and Magenta however it can also display all but one of these colours in two different levels of brightness, the exception of course being black. Total of 15 colours.
Each 8×8 square has a single foreground colour, a single background colour and both colours must be either from the bright pallette or the less bright pallette, not one from each.
The flasher bit… is a waste in my opinion. If its set to one then the ink and paper colours in that 8×8 square will swap themselves every half second or so. Personally I think having a bright bit for both the paper and the ink would have been a better use for it.
Using this method you can store a whole screen of coloured graphics in a small amount of memory, leaving more memory for better games. On the other hand you can see where the colour clash (Also named attribute clash for the now obvious reason) that the Speccy was infamous for came from.
Anyway you can now switch the display from bit mode to TV mode:
To be fair, the TV screen mode is probably only really useful to look at title screens Looking at the rest of the Speccy file is likely to show you colourful blocky garbage!