Intellivision RGB mod

Modding, reparatie en randapparatuur
Gebruikersavatar
unstablewarpfield
Locatie: Dongen
Berichten: 236
Lid geworden op: 04 aug 2017, 22:24

Intellivision RGB mod

27 apr 2021, 16:54

Hoi allemaal!

Weer even een nieuw topic omdat ik al een paar weken onder de radar aan het werken ben aan een Intellivision RGB mod.

Als intro:

De Intellivision is helaas standaard alleen in staat om RF uit te sturen. Als je echter wat beter kijkt dan vind je dat er gebruik gemaakt wordt van een LM1886N DAC. Dit IC gebruikt de 3bit digitale rgb kleuren die de Intellivision aan maakt. Het is dus theoretisch mogelijk om met een modern digitaal naar analoog IC een RGB beeldje te krijgen. Ik heb daarvoor de adv7125 gebruikt. Een 8bit rgb DAC... beetje overkill, maar wel erg goed! Ik heb een test pcb ontworpen en krijg een zeer mooi rgb beeldje.

Het vervelende is dat niet iedere Intellivision deze LM1886N aan boord heeft. Met andere woorden... deze rgb mod werkt alleen op een beperkt aantal consoles. Dat moet beter kunnen.

Ik ben er wat dieper in gedoken. Voor de geïnteresseerden... Dit wordt waarschijnlijk een technisch verhaaltje over adres bussen, PROM's, kleuren, bits, digitale video signalen, oscilloscopen, clocks, PLD's, VHDL en meer. Kort gezegd... Ik probeer een Intellivision rgb mod te maken die universeel te gebruiken is (in ieder geval op alle PAL machines). Als alles uiteindelijk werkt zoals ik het voor me zie dan heb ik direct 1 printplaatje wat vast gesoldeerd wordt aan de onderkant van het moederboard van de Intellivision.
Inmiddels zit ik er zover in dat ik een diagnostische cartridge besteld heb om de kleuren te kunnen decoderen. Ik ben al een heel eind en start zodra ik kan aan wat VHDL code om een nieuwe kleuren decoder te maken.

Ik neem diegenen die het leuk vinden hier graag in mee de komende weken/maanden.

Happy gaming! :-)



-----------------------------UPDATE-------------------------------



Voor de mensen die nog iets meer willen weten...

Hieronder even een simpele schematische weergave van hoe de (europese) Intellivisions werken. Althans... sommige...

Afbeelding

Het handige is dus het stukje aan de rechterkant. Dit is de DAC. DAC staat voor digital-analog-converter. Oftwel een chip die het digitale signaal om zet naar een analoog signaal wat een oude beeldbuis tv "begrijpt". Het probleem is dat deze DAC in de intellivision het digitale kleuren signaal omzet naar RF. RF kennen we allemaal als de "kabel aansluiting" op consoles waarbij je de goede frequentie moest opzoeken om beeld te krijgen. Een gruwelijk slecht signaal, zeker in deze tijden van LED en OLED tv's.

Het punt is dat we graag analoge rgb video signalen naar onze scart connectoren willen sturen voor de beste analoge beeldkwaliteit. Wat kunnen we doen? Juist! De digitale rgb signalen "aftappen" en die naar een nieuwe DAC sturen die wel netjes analoog rgb uit stuurt. Dat lukt dus prima met een van de modernere chips die op de markt zijn. Probleem opgelost zou je zeggen.

Helaasch...

Er zijn blijkbaar ook Europese Intellivisions die op een andere manier werken en die geen enkele manier hebben om de digitale rgb signalen af te tappen. Dan is er dus een probleem. De amerikaanse console hebben hetzelfde probleem. Nergens in de console is er een digitaal rgb signaal te bekennen dat af te tappen valt.

Hoe werkt dit dan verder binnen in?

Alles is in de Intellivision terug te leiden naar de STIC. STIC staat voor Standard Television Interface Chip. de STIC is verantwoordelijk voor het maken van een 4 bits code die het beeld vertegenwoordigt. Met 4 bits (een bit kan 1 of 0 zijn) kun je 16 kleuren maken. Hoe kom je daar aan? 2^4 = 16. Dus... 16 mogelijke kleuren in de Intellivision. Waarom staan er dan in het plaatje hierboven 5 lijntjes vanaf de STIC? Dat komt omdat het 5e signaal voor het sync signaal zorgt. (kort door de bocht het synchronisatie signaal waardoor alle pixels goed op het scherm verschijnen. Zonder sync signaal geen beeld!)

Nu... V1, V2, V3, V4 en V5 geven dus een "code" met enen en nullen die naar een stukje ROM geheugen gestuurd wordt. Het ROM geheugen vertaalt dit naar een digitaal rgb signaal. Dat betekent dus dat de kleuren signalen "gecodeerd" uit de STIC komen en door het stukje kleuren ROM "gedecodeerd" worden. Als je dus dit kleuren signaal kunt decoderen en vervolgens kunt omzetten naar analoog (dat gedeelte heb ik al onder de knie) dan betekent dit dat een mod mogelijk is waarbij je niet het digitale rgb signaal af tapt, maar het gecodeerde signaal van de STIC zelf. En die zit in iedere versie van de Intellivision. Ik gok er op dat IEDERE pal Intellivision zal werken met deze mod, en ik zou eigenlijk wel eens willen weten wat NTSC consoles er mee doen... Ik denk dat er weinig nodig is om deze er ook mee te laten werken.

Waarom is er dan nog geen degelijke rgb mod voor de Intellivision?

Laten we wel zijn... de meeste die-hard modders voor dit soort spul komen uit Amerika. Maar als het op de Intellivision aan komt hebben de Amerikanen een achterstand. In geen enkele NTSC Intellivision zijn er digitale rgb signalen aanwezig. Dat betekent dat met een Amerikaanse console het nagenoeg onmogelijk is om de STIC kleuren te decoderen. Zij hebben immers geen toegang tot de digitale rgb signalen in de console. Wij als europeanen wel. Ik vermoed ook dat dit de reden is dat er wel Amerikaanse mods bestaan, maar dat men daar altijd rommelt met de kleuren van de console. Men gaat af op wat men ziet op de tv en programmeert deze in een mod. Vaak zijn er verschillende kleuren palletten te gebruiken, maar geen enkele is precies.

Tot zover deze update. Waar ik momenteel op wacht is PLD (Programmable Logical Device) IC's waarin ik de code kan zetten om de kleuren te decoderen en een diagnostische cartridge voor de Intellivision (deze gebruik ik om achter het digitale rgb signaal te komen). In de volgende update zal ik wat meer laten zien over hoe de kleuren in elkaar steken, welke bit codes de kleuren hebben, hoe ik de kleuren decodeer met een oscilloscoop en hoe ik de IC's wil programmeren.

Happy gaming! :-)



-----------------------------UPDATE-------------------------------



Zoals beloofd een update waarin we even wat beter gaan kijken naar de kleuren.

Ik begin even met de STIC. In de vorige update hebben we gevonden dat de STIC alle kleuren gecodeerd verstuurd. Kunnen we dan niet achter de codes van die kleuren komen? Jazeker wel! Het Internet geeft in de datasheets de volgende tabel:

Afbeelding

Wat hierin interessant is, zijn de waarden die horizontaal voor V1, V2, V3, V4 en V5 staan. Dit zijn bits, dus enen en nullen. Zo is er bijvoorbeeld te zien dat bij de "kleur" zwart alle data lijnen een 0 weergeven. (logisch, want zwart betekent geen kleur, dus geen signalen.) De oplettende kijker ziet dat V5 pas helemaal onder in de tabel relevant wordt. Bij alle kleuren staat V5 op nul. Dit betekent dus al dat V5 totaal geen rol speelt in wat de kleuren precies doen. V5 zorgt voor het blanking en sync signaal. Beide signalen hebben we nodig om een beeld te maken.

Even terug naar de kleuren. Want hoe kunnen we nu verifiëren dat deze tabel ook klopt voor onze Europese Intellivision? Dit is het moment waarop de oscilloscoop komt kijken. Hier is nog een keer het plaatje waar we mee begonnen.

Afbeelding

Ik heb de vier signalen die voor een kleur zorgen eventjes gearceerd. Als we op deze plaatsen de oscilloscoop aansluiten kunnen we de signalen bekijken. Superhandig! Echter is er 1 probleem. Tijdens het spelen van games zullen de pixels steeds op een andere plaats getekend worden (logisch... het beeld beweegt), dus om zaken goed te analyseren hebben we een statisch beeld nodig. Laat nu toevallig elke Intellivision game een intro scherm hebben met in ieder geval de helft van alle kleuren er al op! Kijk maar naar bijvoorbeeld Astrosmash. Hieronder ze je de 8 kleuren waar ik het over heb.

Afbeelding

We gaan dus eens kijken naar een lijn met pixels op de oscilloscoop en hoe dan de code eruit ziet. Ik heb even een screenshot gemaakt van wat je dan op de scope te zien krijgt. Van links naar rechts hebben we een lijn met bits die achtereenvolgens V1, V2, V3 en V4 voorstellen. Als je dan van boven naar beneden de bits leest krijg je een kleurcode van 4 bits. Ik neem bijvoorbeeld even de 4e verticale lijn met bits. Dit is V1 = 0, V2 = 0, V3 = 1, V4 = 0. Ga je dan kijken welke kleur er overeenkomt met deze code in de kleurentabel uit de datasheet dan zien we dat dit "grass green" is. Kijken we in het opstart scherm van Astrosmash dan blijkt deze 4e kleur inderdaad groen te zijn. Of het daadwerkelijk "grass" green is valt over te discussiëren, maar zo hebben ze het genoemd. Alle 8 kleuren zijn op deze manier te achterhalen.

Afbeelding

De oplettende kijker ziet wellicht steeds "tussen de kleuren door" van boven naar beneden de binaire code 1101 terug komen. Dit is natuurlijk de achtergrond kleur. Volgens de tabel is 1101 brown. In ons scherm is dit groen! Dit is een bekend fenomeen en op verschillende fora zijn er discussies te vinden over het waarom hiervan. Mogelijk een last minute design wijziging van Mattel. In ieder geval niets bijzonders en geheel volgens verwachting :-)

Helaas is het zo dat de andere 8 kleuren moeilijker zijn. Deze zitten niet in het statische beeld van het introscherm. Dit is de reden dat ik een diagnostische cartridge gekocht heb. Deze cartridge test de console en laat zodoende ook een statisch scherm met alle 16 mogelijke kleuren zien. Zodra ik deze heb kan ik alle kleuren die uit de STIC komen verifiëren met de datasheet waarden zodat ik er absoluut zeker van ben dat dit voor mijn Europese console klopt.

In de volgende update neem ik jullie mee hoe we deze 4 bits kleuren code van de STIC decoderen naar een digitaal 3-bit rgb signaal.
Spoiler: weergeven
... ik heb de hele methode al klaar liggen en wacht enkel nog op de test cart ;-)
-----------------------------UPDATE-------------------------------

Alright... Tijd voor een update. En een goeie ook!

We zijn geëindigd met de kleuren code van de STIC en we weten al dat de STIC een 4 bit signaal naar de kleuren ROMS toestuurt. Volgens het kleuren kaartje in een vorige update kennen we ook alle mogelijke kleuren combinaties met bijbehorende 4 bit code uit de STIC. Dat is mooi! We kunnen dus al deels in kaart brengen hoe de kleuren ROMS werken, want de input kant kennen we dus al. Tijd om te kijken naar wat die kleuren ROMs eigenlijk uitpoepen, want als we dat kunnen achterhalen dan weten we de input en output van deze stukjes geheugen en kunnen we beginnen met wat Boolse wiskunde.

Volgens dit plaatje lopen er per kleur drie lijntjes naar buiten. digitale rgb lijntjes wel te verstaan.

Afbeelding

Als we nu op het openingsscherm gaan kijken op de testcartridge dan zien we dat dit scherm onder andere alle kleuren laat zien.

Afbeelding

Dit betekent dat als we weten op de oscilloscoop waar we moeten kijken, we de datalijntjes r0, r1, r2, b0, b1, b2 en g0, g1 en g2 kunnen gaan besnuffelen. We kunnen dan precies achterhalen wat elke datalijn doet voor elke kleur. (btw... ik heb hier geen opleiding voor gevolgd. Met boerenverstand en wat simpele truukjes op een scope kom je een heel eind!)

Hieronder zal ik een plaatje posten van hoe de beeldlijnen van de msb's (Most Significant Bits) van iedere kleur eruit zien. Tevens heb ik het sync signaal toe gevoegd. We kijken hier naar een representatie in bits van 1 lijn met pixels. dus van links naar rechts zijn dit de bits die het geheugen uitspuugt voor alle kleuren op de b2, g2 en r2 lijn. Als we nu de probes van de oscilloscoop verplaatsen naar b1, g1 en r1 kunnen we deze ook besnuffelen. Tevens doen we dit voor b0, g0 en r0. Dan is het plaatje compleet! We kunnen dan alles in een excel bestand plaatsen en de tabel afmaken. Een deel van de tabel post ik hieronder ook.

Afbeelding

Afbeelding

Op deze manier heb ik dus de input en de output van de stukjes kleuren ROM bepaald. Als je het complete plaatje hebt (wat ik nog even niet openbaar ga maken) dan kun je hiermee de logische wiskunde achterhalen om te bepalen wanneer er een bit naar elke datalijn verstuurd moet worden. We nemen bijvoorbeeld in het plaatje hierboven even het blauwe kanaal. En dan specifiek de LSB van blauw (onder de L)
Ik zie dat deze datalijn een "1" moet geven in twee situaties. Namelijk bij (v4=0 & v3=0 & v2=0 & v1=1) of bij (v4=0 & v3=0 & v2=1 & v1=1). als het geheugen deze bitcodes door krijgt van de STIC moet het geheugen een 1 uitsturen om de lsb van blauw. In mijn complete tabel zijn er 8 situaties waarin lsb blauw (ik noem hem "b0") een 1 moet uitsturen. Op deze manier maak je dus een lange logische specificatie voor hoe b0 zich dient te gedragen ten gevolge van een bepaalde input bitcode.
Dit doe ik voor alle uitgestuurde signalen.

Via het programma winCUPL is het bijna kinderlijk eenvoudig om eproms te programmeren. Hieronder een linkje hoe dat er uit ziet. Je geeft dus aan welk soort IC je gebruikt, en zet er vervolgens in welke poot welke input is. Het zelfde doe je voor de output pootjes. Daarna volgen de logische vergelijkingen. Ik heb er eentje hieronder laten staan., die van b0. Deze heb ik sterk vereenvoudigd. (Het is mogelijk Boolse algebra te vereenvoudigen, zoals je met normale algebra ook kunt. Anders worden de formules zo langdradig...) WinCUPL gebruikt voor "is nul" het uitroepteken. Het "en" symbol is &, het "of" symbool is #.

Afbeelding

Vervolgens heb ik de gecompileerde jedec bestanden met een eprom brander in 2 eprommetjes gebrand. Ik heb twee atf16v8a's gebruikt. Deze eproms gebruik ik tevens om het sync signaal en het blanking signaal aan te maken. Dit alles wordt doorgestuurd naar een digitaal naar analoog convertor met bijbehorende standaard schakeling. Ik gebruik hiervoor een adv7125 van Analog Devices. Dit ding werkt op de kloksnelheid van de intellivision, dus voor PAL 4Mhz. Ook de clock valt prima af te tappen van de STIC. Alles bij elkaar is dit het prototype.

Afbeelding

En dat geeft deze ouput.
Afbeelding

Prima dus en alle kleuren kloppen!

Nu... dit alles heb ik gedaan omdat ik de wens had een klein pcb te maken wat gemakkelijk op de intellivision vast te solderen valt. Ik wil het zo doen dat dit precies tussen de pootjes van de STIC (DIP 40 package) past op de onderkant van het moederboard (wat op de Intellivision gek genoeg naar boven wijst haha.) Daarvoor is dit het uiteindelijke resultaat, ontworpen in Eagle. Deze printplaat heb ik inmiddels besteld en ik hoop binnen een week of twee met een update te komen waarin hij geïnstalleerd is :-)

Afbeelding
Laatst gewijzigd door unstablewarpfield op 08 jun 2021, 20:29, 4 keer totaal gewijzigd.
"I cannae change the laws of physics, captain!"
Gebruikersavatar
unstablewarpfield
Locatie: Dongen
Berichten: 236
Lid geworden op: 04 aug 2017, 22:24

Re: Intellivision RGB mod

30 apr 2021, 20:52

---------------UPDATE IN OP-----------------
Laatst gewijzigd door unstablewarpfield op 04 mei 2021, 08:26, 2 keer totaal gewijzigd.
"I cannae change the laws of physics, captain!"
Gebruikersavatar
OldSchool
Contacteer:
Berichten: 4165
Lid geworden op: 05 feb 2017, 20:40

Re: Intellivision RGB mod

30 apr 2021, 21:39

Ik heb een Intellivision, die ik via een videorecorder op een HD TV. Werkt ook, maar een dergelijke mod maakt het natuurlijk een stuk makkelijker.

Probleem met mijn, en vele anderen, Intellivision zijn de controllers, niet erg betrouwbaar die dingen. Erg plastic allemaal. Als je daar nog een mooi alternatief voor kunt bedenken, als je toch bezig bent...
Gebruikersavatar
unstablewarpfield
Locatie: Dongen
Berichten: 236
Lid geworden op: 04 aug 2017, 22:24

Re: Intellivision RGB mod

01 mei 2021, 09:32

OldSchool schreef:Ik heb een Intellivision, die ik via een videorecorder op een HD TV. Werkt ook, maar een dergelijke mod maakt het natuurlijk een stuk makkelijker.

Probleem met mijn, en vele anderen, Intellivision zijn de controllers, niet erg betrouwbaar die dingen. Erg plastic allemaal. Als je daar nog een mooi alternatief voor kunt bedenken, als je toch bezig bent...
Zeker dat dit kan. Waar ik me het meest aan stoor is dat de controlers vast zitten aan de console. Bij de Colecovision kun je ze tenminste loskoppelen. Het is sowieso mogelijk om connectorpoorten in te bouwen (al ben ik nooit zo voor gaten boren in consoles) dus dan is er vast ook wel iets te bedenken voor een universele aansluiting.

Ik ben echter als 2e project voor de Intellivision bezig met een universele voeding. Bizar hoe de originele voeding in elkaar zit. Ongebalanceerd, gebalanceerd... werkt op 16V, 12V, 5V en -2,1V.. wat een zooitje. Zoiets als bijgevoegd plaatje moet het worden.

Afbeelding

Verstuurd vanaf mijn SM-N960F met Tapatalk

"I cannae change the laws of physics, captain!"
Gebruikersavatar
unstablewarpfield
Locatie: Dongen
Berichten: 236
Lid geworden op: 04 aug 2017, 22:24

Re: Intellivision RGB mod

04 mei 2021, 09:15

---------------UPDATE IN OP-----------------
"I cannae change the laws of physics, captain!"
Gebruikersavatar
unstablewarpfield
Locatie: Dongen
Berichten: 236
Lid geworden op: 04 aug 2017, 22:24

Re: Intellivision RGB mod

08 jun 2021, 20:30

---------------UPDATE IN OP-----------------
"I cannae change the laws of physics, captain!"
Gebruikersavatar
OldSchool
Contacteer:
Berichten: 4165
Lid geworden op: 05 feb 2017, 20:40

Re: Intellivision RGB mod

09 jun 2021, 09:05

unstablewarpfield schreef:
08 jun 2021, 20:30
---------------UPDATE IN OP-----------------
Jij hebt er misschien niet voor geleerd, maar ik kan het allemaal maar half volgen 😂.

Diep respect dat je dit überhaupt al kunt uitdenken en dan ook nog eens uitvoeren!
Gebruikersavatar
unstablewarpfield
Locatie: Dongen
Berichten: 236
Lid geworden op: 04 aug 2017, 22:24

Re: Intellivision RGB mod

09 jun 2021, 20:52


OldSchool schreef:
unstablewarpfield schreef:
08 jun 2021, 20:30
---------------UPDATE IN OP-----------------
Jij hebt er misschien niet voor geleerd, maar ik kan het allemaal maar half volgen Afbeelding.

Diep respect dat je dit überhaupt al kunt uitdenken en dan ook nog eens uitvoeren!
Thanks! Ik probeer het zo duidelijk mogelijk te brengen. Vaak lukt dat, maar in dit geval zou ik echt nog veel meer tekst nodig hebben om echt goed in bert en ernie taal tot de essentie te komen. Mochten mensen geïnteresseerd zijn... vragen stellen staat natuurlijk altijd vrij :-)

Ik post bewust de tabel (en de PROM memory map die ik gemaakt heb) nog eventjes niet omdat ik niet precies weet hoe "waardevol" het is wat ik handen heb. Als dit werkt voor de Amerikaanse Intellivisions dan is er wellicht een markt voor. Geen idee... ik zal wel eens e.e.a. posten op de grotere internationale forums. Kijken wat men er van vindt. Zodra ik de pcb's binnen heb soldeer ik er eentje en post ik hier ook wat foto's van.

Leuk detail overigens... het is op deze manier mogelijk om een digitale Intellivision met upscaling/linedoubling te maken. Zelfde manier die toegepast is bij de ps1, sega dreamcast, wiidual en de N64. Een Intellivision met hdmi dus. Moet niet veel gekker worden.

Verstuurd vanaf mijn SM-N960F met Tapatalk

"I cannae change the laws of physics, captain!"
Gebruikersavatar
OldSchool
Contacteer:
Berichten: 4165
Lid geworden op: 05 feb 2017, 20:40

Re: Intellivision RGB mod

09 jun 2021, 23:01

Dat laatste zou zeker wel in trek zijn! Ik moet die van mij toch maar weer eens een keer opzoeken en kijken of het nog enigszins functioneert.

Ik merk wel dat je het ‘simpel’ probeert uit te leggen, maar het komt ook gewoon dat ik totaal niet technisch ben en daardoor ook geen ervaring heb met de dingen die je vertelt. Maar komt goed, vind het nog altijd leuk om mee te lezen.

Terug naar “Tech”