ttlworks wrote:
Cray Ze, to you it's obvious what you are doing there, but for us I think it isn't.
Would be awfully nice if you could just add a little bit of text to this screenshot.
But a good mystery sets the imagination to work. Mystery pause over, of course I'll elaborate a bit on what's going on.
I implemented many of the ideas mentioned previously in the thread, just not in TTL.
Quote:
Hmm... when looking at that screenshot...
......you are seeing:
A 40x25 window into an 80x50 memory space/screen. The 40x25 can scroll about the 80x50 but in this case it's at the bottom right extent,
this is entirely because the data in my 80x50 screen memory consists of the spicing of four screens created in an online (40x25) PETSCII editor.
Along with the 80x50 screen memory, there is a matching 80x50 attribute memory. The character set is obtained from an image of the standard
C64 character generator ROM, there are no redefined chars. All attributes are applied on the fly.
I implemented XFLIP, YFLIP, ROTATE RIGHT 90, UPPER/LOWER CASE attributes. I hadn't gotten around to INVERSE text before putting the design
down for a while, but it's easy, the hardware cursor already uses the principle.
Rotation is easy enough but requires a lot of memory access, though the whole design runs the high memory access rate so at least nothing special
has to be done for a rotate. A pixel is a single bit, so if you're accessing ram at the pixel clock frequency, you're only ever interested in a single pixel.
Just exchange the vertical and horizontal counter bits used in the character decode and there is your rotation, on the fly, we don't care about the other
bits in the addressed byte.
Quote:
If one would have a character set with all characters rotated by 90 deg.,
and if one would build the ROW and COLUMN counters etc. a bit different to make them run a different video address sequence,
I think it might be possible to display an entire text screen rotated by 90 deg., that's 40 lines of text, 25 characters per line.
Might be fun when writing code in assembly on such a screen...
after manually turning your TV set by 90 deg., that is.
I actually have an FPGA based 6502 dissembler that decodes memory straight into 6502 assembly listing on a VGA screen,
with selectable start address and both HEX and disassembly display modes. On the fly, not even a CPU
I could combine them....hmmmm. Whooops, wandering off topic again.
Edit: Actually a full screen rotated mode (and monitor on it's side) might not be such a silly idea for arcade style games.
Here is the same screen in the PETSCII editor, before exporting and splicing.
Colour translates nicely to attributes, except for when it's the same as the screen colour.
I had to massage the attribute output before using it as I'd used the wrong colours, search and replace in a text editor did the trick.
Link to mentioned editor:
http://petscii.krissz.hu/