Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in 
CSDb User Forums

Forums > C64 Coding > Has ECM been implemented on the VIC chip in the most efficient way?
2016-12-11 18:45
Color Bar

Registered: Oct 2012
Posts: 150
Has ECM been implemented on the VIC chip in the most efficient way?

In ECM mode bit 6 and 7 are used to select a color register, but they are not used for selection of the character image. It seems to me that this may be inefficient.

To explain what I mean: suppose bits 6 and 7 were also used for the character image (I don't know if that was technically possible when the VIC chip was designed, but let's suppose it was). Let's call this ECM2 mode. This hypothetical mode uses bits 6 and 7 twice: for the character code and for selecting a color register.

Suppose also that a character set is used with 256 distinct characters. Now, if two or more of the color registers contain the same color code, then it is possible in ECM that two different character codes, for example code 65 and 129, are indistinguishable from each other on the screen, if $d022 and $d023 contain the same color.

With the hypothetical ECM2 mode, however, these are distinguishable, since they show a different character, although on the same background color, because all bits are used for the character code.

So I seems ECM is wasting bits compared to ECM2 mode. But probably there is a flaw in my logic and I would appreciate it if someone could point that out.

If this reasoning is correct, then a more efficient multicolor mode could have been implemented by displaying an "10" and "01" exactly like that on the screen (in high resolution, that is), and let the color of the 1 be determined as in MC mode as it exist on the C64 now.
... 1 post hidden. Click here to view all posts....
2016-12-11 21:35

Registered: Aug 2004
Posts: 785
Well, there are pros and cons. Upside of the way it was actually done is that the charset uses only 512 bytes, freeing up 1536 for other purposes.

What would have been really cool would have been if bit 0 of $d018 had actually become active in ECM mode, allowing for 16 charsets per bank instead of just 8...

Easy enough to add to an emulator or one of the FPGA clones, but then it's not a c64 anymore.
2016-12-11 21:43

Registered: Jul 2007
Posts: 353
I think the rationale was that you could use the standard ROM fonts and get letters, digits and punctuation, with individually assigned foreground and background colours. That way, you'd still have 64 kB RAM for the business logic and data.
2016-12-11 21:52

Registered: Mar 2005
Posts: 274
I always felt sorry for the fact you can't have multicolor ECM. Kinda coder's dream. Some coders (Crossbow) claimed to "force" this mode AFAIR ;-)

Or the unused hi-nibble of color RAM could be a background color for the char.
2016-12-11 21:58

Registered: Dec 2001
Posts: 959
Some VIC tricks take advantage of the fact that the chars wrap at 64, e.g. Crossbow's 56 lines sideborder FPP in Krestage. Also a routine I'm coding at the moment, which isn't a VIC trick, but it still saves some cycles because of this.

Edit: But it would make some amazing PETSCII possible with 256 chars ECM. :)
2016-12-11 22:33

Registered: May 2010
Posts: 44
Not quite the same, but I did a little bit of code to pop PETSCII pics into hires bitmap mode. So you get independent background colour per char that way.
2016-12-11 23:39

Registered: Apr 2002
Posts: 4233
VICII is doing quite a lot already with d800, on a badline it reads 12 bit of data on each cycle, or with sprites make it 20 bits at almost every cycle, however on a 2nd badline it could read a 2nd background color tho, but that would mean another 40x4bit color buffer ON chip, which would make it explode :)


somehow never missed multi-ecm, in fact for plasma basic ecm seems more powerful (AEG plasma)
and crossbow was just talking bullshit to fool other coders with that mode.
2016-12-12 00:12

Registered: Nov 2002
Posts: 758
For me biggest waste is always higher Colour RAM nybble. Why wasn't it used for example for 16 luma levels or hires/multicolor switch in MC charmode? :(
2016-12-12 01:31

Registered: Dec 2001
Posts: 959
Jammer: To quote Oswald, because the VIC chip would explode if it had to handle more. It's 1982 technology after all. Have you checked how hot it gets after running for some hours?
2016-12-12 06:59

Registered: Aug 2004
Posts: 785
Quote: For me biggest waste is always higher Colour RAM nybble. Why wasn't it used for example for 16 luma levels or hires/multicolor switch in MC charmode? :(

Not so much wasted as never installed; colour ram is a whole seperate chip that's only four bits wide; there are a whole extra four pins on the VIC chip just so it can read colour ram at the same time as the char indices.

Hi nybbles of colour ram would have needed an extra or more expensive color ram chip, and more traces on the circuit board, and more pins on vic.. (that or 50% faster ram ($$$!!!) across the board and a three phase timing cycle, to read char index then colour then charset each tick...)
2016-12-12 07:13

Registered: Oct 2014
Posts: 173
I like the sound of the shared upper 2 bits.
64 chars per colour sounds good.
Previous - 1 | 2 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Users Online
Zardax/Artline Designs
Guests online: 40
Top Demos
1 Uncensored  (9.7)
2 Edge of Disgrace  (9.7)
3 Coma Light 13  (9.6)
4 The Shores of Reflec..  (9.6)
5 Comaland 100%  (9.6)
6 We Come in Peace  (9.6)
7 Lunatico  (9.6)
8 Incoherent Nightmare  (9.5)
9 Wonderland XII  (9.5)
10 Wonderland XIII  (9.5)
Top onefile Demos
1 FMX Music Demo  (9.5)
2 Pandemoniac Part 2 o..  (9.5)
3 Daah, Those Acid Pil..  (9.5)
4 Dawnfall V1.1  (9.5)
5 Treu Love [reu]  (9.5)
6 In Memoriam BHF  (9.5)
7 Merry Xmas 2017  (9.4)
8 Dawnfall  (9.4)
9 SWiRL  (9.4)
10 Synthesis  (9.4)
Top Groups
1 Oxyron  (9.4)
2 Booze Design  (9.4)
3 Censor Design  (9.4)
4 Finnish Gold  (9.4)
5 Crest  (9.3)
Top Coders
1 Axis  (9.8)
2 Tom-Cat  (9.8)
3 Graham  (9.8)
4 Crossbow  (9.8)
5 CRT  (9.8)

Home - Disclaimer
Copyright © No Name 2001-2018
Page generated in: 0.509 sec.