| |
Sam
Registered: Aug 2010 Posts: 21 |
Can hires and multicolor chars coexist on the same rasterline?
If I change the multicolor and hires mode ($d016) in character mode, I can have characters that are hires on the upper half and multicolor on the bottom half, but what about a $d016 split raster, can left side of the screen be hires chars and right side would be multicolor chars? |
|
| |
tlr
Registered: Sep 2003 Posts: 1790 |
Yes, but there are some artifacts at the split point that might need dealing with.
Note that in char mode you can already have both hires and multicolor freely intermixed with the restriction that char colors can only be 0-7. |
| |
WVL
Registered: Mar 2002 Posts: 903 |
Also, note that you cannot do this on a badline, you simply cannot have a split in the middle of a line. |
| |
Oswald
Registered: Apr 2002 Posts: 5095 |
additional question but probably works:
make fli halfway down the char row change d800 from hires to multicolor will that work ? :) |
| |
WVL
Registered: Mar 2002 Posts: 903 |
Yes, that is what HCL does in Edge of Disgrace, some sort of half-fli with $d800 changes. Probably it will also work to switch chars from hires<->multicolor in the middle. |
| |
wil
Registered: Jan 2019 Posts: 63 |
Interesting question! In this stackoverflow answer, there are some insights about switching midline modes, specifically in this case between text mode to hi-res:
https://retrocomputing.stackexchange.com/questions/7549/can-a-c..
The bad lines could potentially be hidden when displaying text by rendering them as simple black lines every 8th raster line, separating the text rows.
Of course, when using both text and hi-res modes, the question arises: why not just stick to hi-res and "print" the characters by copying them there, 8 bytes a time? While pure text mode is faster to manipulate, that advantage becomes irrelevant if you’re running a routine that keeps the CPU busy for all 200 raster lines.
The case might be a bit different when dealing with hi-res and multicolor modes. However, it’s not particularly practical, especially when transitioning between modes in the middle of the screen. Ultimately, this is more of a "we do it because we can" kind of thing, aka our motto of retrocomputing. :-) |
| |
HCL
Registered: Feb 2003 Posts: 728 |
I feel the urge to post the following examples: Ice Cream Castle (chocolate ice) and Justintime which both of course are off-topic since they both are made with d011-splits and not d016-splits. Don't know it Crest's effect really works on all 8 lines per char, at least the font seems to be just 7 pixels high.. |
| |
Copyfault
Registered: Dec 2001 Posts: 478 |
Quoting Oswaldadditional question but probably works:
make fli halfway down the char row change d800 from hires to multicolor will that work ? :)
Quoting WVLYes, that is what HCL does in Edge of Disgrace, some sort of half-fli with $d800 changes. Probably it will also work to switch chars from hires<->multicolor in the middle.
Hmm, funny idea. But since Col-Ram ($D8xx) is re-read only when a badline is in place, it'd really mean that all 40 colour ram values had to be refreshed plus a badline needs to be triggered.
Somehow I tend to think that just switching $D016 from MC to Hi (or vice versa, from Hi to MC) plus triggering the additional badline should give more benefit: given you have that MC-flag set in every $D8xx-reg, switching to HiRes Charset would make the VIC read the char patterns from different memory locations. Might be exploitable (most probably has been already and I just don't know since I s**k at examining existing routines, or even worse, remembering it). |
| |
Copyfault
Registered: Dec 2001 Posts: 478 |
Quoting Copyfault...given you have that MC-flag set in every $D8xx-reg, switching to HiRes Charset would make the VIC read the char patterns from different memory locations. ... Which is crap, as I just got aware of :/ Seems I mixed this up with ECM which is encoded per char and not via the corresponding $D8xx-spots.
Sorry, should sleep more /o\ |
| |
Krill
Registered: Apr 2002 Posts: 2981 |
Quoting tlrNote that in char mode you can already have both hires and multicolor freely intermixed with the restriction that char colors can only be 0-7. This. And that restriction isn't much of a restriction, as can be seen in quite a few games.
So question to the OP: But why? :) |
| |
wil
Registered: Jan 2019 Posts: 63 |
Quote: I feel the urge to post the following examples: Ice Cream Castle (chocolate ice) and Justintime which both of course are off-topic since they both are made with d011-splits and not d016-splits. Don't know it Crest's effect really works on all 8 lines per char, at least the font seems to be just 7 pixels high..
Thank you for pointing at the Crest demos - always a pleasure to watch their work! As expected, it's truly impressive.
I took a closer look at Ice Cream Castle. The font used is 6 pixels high, with an empty line both at the top and bottom for each character. The $d011 switch occurs twice a line (to $13 and to $3B) at rasterlines mod %100, %101, %110, %111, %000, and %001, which correspond to the active lines in the character set. During badlines, no switch is performed; instead, bitmap mode is kept and an empty line is displayed for the badline and the following rasterline, creating a visually appealing gap between character lines.
The first few lines of the screen are blank because the charset had to be at the same address as the bitmap to avoid the need for switching $d018. So the show starts in the third text line ($450). Multicolor is always enabled, but textcolor is 1, so that the text is shown in hires, while the bitmap is multicolor. To cover the gap between the text area and the bitmap section, Sprite 0 is used repeatedly. The other sprites are utilized to display the scroller at the screen bottom. |