Jump to content
Sign in to follow this  
the_crayon_king

Arcadia 2001 RGB Mod

Recommended Posts

So I couldn't find any specific guide for RGB out of the Arcadia.

After looking at the datasheet this should work: https://easyeda.com/hotdog6394/arcadia-2001-rgb

 

There is one line that is ORed across RGB this has to be white.

The RGB lines are either off or on.

 

So I'd think the colors would be limited to:

WRGB

1XXX White

0000 Black

0001 Blue

0010 Green

0011 Cyan

0100 Red

0101 Magenta

0110 Yellow

0111 (also White)

 

The circuit above applies blanking and clocking. If I had more specific palettes to go off of I could adjust the circuit accordingly (I don't use potentiometers)

 

Assuming blanking is a logic "1" when blanking and that sync is active low this should work fine.

Let me know if you see something that should be changed.

Share this post


Link to post
Share on other sites

I got this working a few weeks ago. My design uses the same circuit as my intellivision rgb mod, just had to rewrite the truth table in the GAL22V10. I have some blank circuit boards sitting on my desk waiting to be assembled. I'll post some pics when I get them built.

 

Edit: Your truth table matches mine except I didn't consider "1xxx" for white. Blanking is logic "1"

 

About that line that's ORed across RGB, the chip is a 74ls86 which is XOR. In my console the hardware doesn't match the schematic in the service manual. C0 from the 2637 isn't connected to the RGB XOR gates. Instead, the flag signal from the 2650A is buffered through one of the XOR gates then connected to the RGB gates. Again, this is just my console which had been opened previously.

 

Also, the color code signals from the 2637 appear to be open collector as I measured only 1vpp signals at the inputs of the 74ls86. Somehow it's operating outside of the ttl standards. On top of that, the 74ls86 is driving a 4069 and you're not supposed to drive CMOS logic with TTL. I placed 1k pullups on the color code signals and intend to replace the 74ls86 with 74hct86 when I install the mod. Hope this helps.

Edited by emerson

Share this post


Link to post
Share on other sites

I got this working a few weeks ago. My design uses the same circuit as my intellivision rgb mod, just had to rewrite the truth table in the GAL22V10. I have some blank circuit boards sitting on my desk waiting to be assembled. I'll post some pics when I get them built.

 

Edit: Your truth table matches mine except I didn't consider "1xxx" for white. Blanking is logic "1"

 

About that line that's ORed across RGB, the chip is a 74ls86 which is XOR. In my console the hardware doesn't match the schematic in the service manual. C0 from the 2637 isn't connected to the RGB XOR gates. Instead, the flag signal from the 2650A is buffered through one of the XOR gates then connected to the RGB gates. Again, this is just my console which had been opened previously.

 

Also, the color code signals from the 2637 appear to be open collector as I measured only 1vpp signals at the inputs of the 74ls86. Somehow it's operating outside of the ttl standards. On top of that, the 74ls86 is driving a 4069 and you're not supposed to drive CMOS logic with TTL. I placed 1k pullups on the color code signals and intend to replace the 74ls86 with 74hct86 when I install the mod. Hope this helps.

 

So basically what I have been doing is making normal mod kits then fpga code. It helps me when I am writing the code to see what the analog counterpart is doing. I couldn't do a normal non-fpga mod kit for the intellivision :(

 

I was wrong about white being 1XXX because I was drinking and did not notice that gate type as XOR (I was thinking OR)

 

From the 2637 datasheet:

Color 1, Color 2, Color 3: Outputs denoting the color to be displayed. (this is C1, C2, and C3)

Object Video: This output goes low when the UVI is presenting object information (services?) the fourth color output (this is C0)

Color 0 through 3 are listed as open drain outputs.

 

I was taking the RGB values out of the 74LS86N for this version of the mod (which is TTL in and out)

I assumed the outputs C0 - C3 must be able to drive the 74LS86N already or else we wouldn't have any video output.

The datasheet confirms your measurements of non-ttl; yet we still get video out so what gives ?

 

I need to measure the VCC voltage of the 4066 and the outputs of the 74LS86N that should tell me everything I need to know.

You have been a great help thanks.

Share this post


Link to post
Share on other sites

Everyone gets things mixed around sometimes. I might know one person in particular...

 

When it says object information I believe it's talking about sprites. I have no idea how this thing produces a video signal while operating out of spec.

Share this post


Link to post
Share on other sites

Everyone gets things mixed around sometimes. I might know one person in particular...

 

When it says object information I believe it's talking about sprites. I have no idea how this thing produces a video signal while operating out of spec.

 

I dunno but I now see that blanking is already applied to the RGB out from the 74LS86N.

So assuming everything I've seen in prior situations then you should be able to get SRGB with just a THS7374 and a few resistors.

I am assuming all the "on" voltages should be maxed as in the output of "1" on R, G,or B will be 0.714V + whatever the off voltage is. So that I will have 0.714V p-p.

 

Eg. If this were decimal I would be using 255 or 0 for RGB currently; If you know of a palette that is different from that please let me know.

 

Now I have to go dig out this console from storage.

Edited by the_crayon_king

Share this post


Link to post
Share on other sites

Maxing out the voltages is a good place to start if your going with a simple circuit like you described. Since I used programmable logic I adjusted the colors a bit to my liking. Below is my truth table. It uses a 2:1 resistor ladder for the DAC so you can convert the binary value to its respective voltage.

    BIT ORDER: r2 r1 r0 g2 g1 g0 b2 b1 b0

    'b'0000 => 'b'000000000; /**BLACK**/
    'b'0001 => 'b'000000111; /**BLUE**/
    'b'0010 => 'b'000111000; /**GREEN**/
    'b'0011 => 'b'010110111; /**CYAN**/
    'b'0100 => 'b'111000000; /**RED**/
    'b'0101 => 'b'111001100; /**MAGENTA**/
    'b'0110 => 'b'111111000; /**YELLOW**/
    'b'0111 => 'b'111111111; /**WHITE**/

Share this post


Link to post
Share on other sites

 

Maxing out the voltages is a good place to start if your going with a simple circuit like you described. Since I used programmable logic I adjusted the colors a bit to my liking. Below is my truth table. It uses a 2:1 resistor ladder for the DAC so you can convert the binary value to its respective voltage.

    BIT ORDER: r2 r1 r0 g2 g1 g0 b2 b1 b0

    'b'0000 => 'b'000000000; /**BLACK**/
    'b'0001 => 'b'000000111; /**BLUE**/
    'b'0010 => 'b'000111000; /**GREEN**/
    'b'0011 => 'b'010110111; /**CYAN**/
    'b'0100 => 'b'111000000; /**RED**/
    'b'0101 => 'b'111001100; /**MAGENTA**/
    'b'0110 => 'b'111111000; /**YELLOW**/
    'b'0111 => 'b'111111111; /**WHITE**/

 

looks alot like the code I use. Cept I am using more bits.

eg  

                WHEN "0000" =>     -- DARK BLACK
                REDOUT   <= "00000000"; --000
                GREENOUT <= "00000000"; --000
                BLUEOUT  <= "00000000"; --000

 

The only difference in what our two codes would output is the magenta and cyan as you seem to have the rest the same.

 

The reason I have so many bits its because the outputs are going to a ADV7125 for a DAC and some other stuff.

This will let me toggle between RGB, and component easily which is a must for me.

 

Have you set a jumper as a logic input so you can toggle a few palettes ?

I thought of it like having my own colors then colors that would match RF out on a TV.

 

Anyway I have another problem this console seems to not be working. I a/v modded it many years ago and havent touched it since.

Ill have to postpone RGB modding it till I can diagnose the issue. I forgot how bodged the wiring is inside of these arcadias. 

Im not even getting a DC pop on composite atm.

 

I looked at another post on here and TheCoolDave mentioned coils:

http://atariage.com/forums/topic/284236-arcadia-2001-repair-video-out-av-upgrade/

 

"

Arcadia power LED lights up but unit otherwise appears dead  Coils L4 and/or L5 may be open circuit. Remove and bypass coils with jumper wires. They seem intended to prevent EMF but mostly they just fail."

 

My coils look roached so I would wager this is the issue.

--edit the coils were the issue. Tomorrow I will build and test RGB,

Edited by the_crayon_king

Share this post


Link to post
Share on other sites

Since I removed the rf modulator I use the channel switch to choose between two palettes. It saves some time and case tooling. I havn't created two palettes for the arcadia yet but the intellivision I tried to match the palettes to ntsc and pal color schemes.

 

L4 and L5 were fried in my console as well. They also fried one of the caps nearby and burnt half way through the pcb. Replacing them brought the console back to life.

 

I mentioned this over in the intellivision thread, but since you're using 8 bits per color you could look at the color palette of your arcadia emulator and use it as reference. I suspect everything would be maxed out (255 or close to it) like you mentioned previously

Share this post


Link to post
Share on other sites

Since I removed the rf modulator I use the channel switch to choose between two palettes. It saves some time and case tooling. I havn't created two palettes for the arcadia yet but the intellivision I tried to match the palettes to ntsc and pal color schemes.

 

L4 and L5 were fried in my console as well. They also fried one of the caps nearby and burnt half way through the pcb. Replacing them brought the console back to life.

 

I mentioned this over in the intellivision thread, but since you're using 8 bits per color you could look at the color palette of your arcadia emulator and use it as reference. I suspect everything would be maxed out (255 or close to it) like you mentioned previously

 

I have jumped L4 and L5.

Note that video out from the 74LS86N had warped lines.

These other points seem to be better. Which are right after the 4069. Which is convenient since its also next to the outputs for the composite mod and sound. 

 

I also measured outputs of the 2637 and got around 1v p-p as well. Output from the 74LS86N was around 3.3V. Sync output was also around 3.3V. I didn't write down the exact values.

Now I have to set everything back up and measure from the 4069 output I did test and get video however,

 

The CV mod was done following a guide by GameTechUS > https://www.youtube.com/watch?v=TAuMRMaBM-o

This should be a good kick off point for anyone wanting to do a simple RGB mod. Specific circuit to come soon.

yzmI6TA.jpg

Edited by the_crayon_king

Share this post


Link to post
Share on other sites

Ok well this screen shot is from Mobile Suit Gundam take note of the issues.  Namely rounding of pixels here is a close up of some mountains or something:

Any ideas ? Im going to replace all the capacitors I guess idk.

ZIwGOqs.jpg

 

ooyrjs3.jpg

Share this post


Link to post
Share on other sites

I looked at your schematic and I see you have a clock input on the 74hct273. Can you please explain your thoughts on doing this and which clock signal it is? I've had good luck with asynchronous circuits myself.

Share this post


Link to post
Share on other sites

Here is an excert from the 2621 datasheet. Mind you this is the PAL version of the chip so timings may differ from NTSC.

Position Clock: Horizontal position clock output. Contains 227 cycles of 282ns in each horizontal period.

My assumption is you're using this signal to clock in each pixel? This seems like an unnecessary step, do you have a 24hct244 you can test with?

Share this post


Link to post
Share on other sites

Here is an excert from the 2621 datasheet. Mind you this is the PAL version of the chip so timings may differ from NTSC.

Position Clock: Horizontal position clock output. Contains 227 cycles of 282ns in each horizontal period.

My assumption is you're using this signal to clock in each pixel? This seems like an unnecessary step, do you have a 24hct244 you can test with?

 

Id be using the 3.58 ish mhz clock. I want to see if clocking will remove some aberrations I have in video. See those white lines on the robot ?

Ill be doing both clocked and unclocked.

I also need a clock for video encoding the lower formats y/c, cv, ypbpr.

So the clock will more or less be input someplace either way.

 

I had this working with pull ups and it inverted the colors.

Else I can't imagine what I could have done incorrectly enough to reach black being white and white being black.

 

I tore it apart since its a mess anyway and also my 74LS86N blue line stopped working. So I can't even do this with just an op amp anymore.

I have a kit for the O2 that I have to pick up then populate that will work for this. If the colors are still inverted with that Ill use an inverter instead of a buffer.

 

I will retest after getting all the parts I need.

 

I would recommend any DIYers to just try an op amp THS7316 or THS7374 with resistors (on the spots shown above keep in mind you have to drop the voltage alot)

It's cheap and dirty but gave me this:

LtyRkuo.jpg

Edited by the_crayon_king

Share this post


Link to post
Share on other sites

I didn't see those artifacts in the robot picture before. It looks like there is some blue around the right eye as well. The white lines almost looks like a cable impedance mismatch type situation. I can't explain the rounded pixels. Did you tried it without the 220uf caps before you tore up the breadboard?

 

I remember having some issues with color inversion as well... I forget where I was reading about it, maybe check GitHub for the MAME documentation on the Arcadia 2001?

 

Glad to see you got a quick and dirty version working at least. I'm sure it's better than some of the circuitry going on in the Arcadia itself right? Haha. Did you notice they under-valued the power resistor for the rf modulator? It's less than 1/3 the required value specified in the modulator datasheet!

Share this post


Link to post
Share on other sites

I didn't see those artifacts in the robot picture before. It looks like there is some blue around the right eye as well. The white lines almost looks like a cable impedance mismatch type situation. I can't explain the rounded pixels. Did you tried it without the 220uf caps before you tore up the breadboard?

 

I remember having some issues with color inversion as well... I forget where I was reading about it, maybe check GitHub for the MAME documentation on the Arcadia 2001?

 

Glad to see you got a quick and dirty version working at least. I'm sure it's better than some of the circuitry going on in the Arcadia itself right? Haha. Did you notice they under-valued the power resistor for the rf modulator? It's less than 1/3 the required value specified in the modulator datasheet!

 

Disabling the RF was the first thing I ever did so I have never paid it any mind.

 

I tried with and without caps. Any impedance issues would have to be on the input of the amp anyway. Also tried with the LPF off and on.

 

I think the possible inversion has to do with the weird way they are using the 2637 and 74LS86N.

Normally for open drain you would have two states ground and a high impedance state. Right ?

I think its meant to be used as 0 is 1V and 1 is float; but I think they are using it in the opposite manner somehow.

Really I have no idea  Im just going to use an inverter instead of a buffer and see what happens.

Share this post


Link to post
Share on other sites

Yes, with open collector (or open drain) the two states are ground and high impedance. That's why open collector circuits require pull-up resistors. It seems like they're relying on the internals of the 74ls86 as pull-ups, and somehow it works. Maybe it has something to do with the design of schottkey inputs? That's a little beyond my understanding of things.

 

Here is an excerpt from some arcadia programming info I saved, although I can't site the source unfortunately. Search for Arcadia 2001 homebrew programming for useful hardware info.

Games are synchronized with the raster beam, as is usual for most
systems. Many of the UVI registers can only be read or written at certain
points in the frame. The vertical retrace status is available in the Sense
pin of the CPU. (The Flag pin of the CPU can be used to invert the colours
of all or part of the display.) All other UVI data is mapped to memory
locations; specialized I/O commands are not used. The current character
row being drawn by the UVI is available as a UVI register (mapped to a
memory location). The current raster line being drawn by the UVI is not
available but can of course be deduced by cycle counting. Horizontal
retrace status is not available (but is deducable).

Flag pin
--------
Most consoles implement the Flag line (bit 7 of the PSU): while this is
set, all colours are inverted. This even applies to sprites. The Tempest
MPT-03, for example, definitely does implement this. However, some
consoles, such as the actual Emerson Arcadia 2001, do not implement this
and therefore the colours will not be inverted on such machines.

Graphics
--------
3-bit colour codes (eg. as used for background and sprite colours) are as
follows:

    %000    White
    %001    Yellow
    %010    Cyan (light blue)
    %011    Green
    %100    Purple (magenta)
    %101    Red
    %110    Blue (dark blue)
    %111    Black

Check if you have a wire from pin 40 of the 2650 going to the 74ls86. This is the FLAG pin. The documentation says it's not implemented but mine is definitely connected. If the arcadia 2001 isn't supposed to use it and holds the FLAG pin high, just remove it from pin 40 and tie it to either VCC or GND, whichever makes the xor buffer output logic 0.

 

 

 

Share this post


Link to post
Share on other sites

That pin doesn't have any voltage on it that I can tell. If it did have voltage I assume it would invert.

From booting the console and starting the game I didn't see it trigger at all.

 

 

2637 output > https://i.imgur.com/BWsmV5d.jpg

74LS86N output > https://i.imgur.com/F25h9K3.jpg

4069 inverter second output > https://i.imgur.com/lKvinuC.jpg

2622 sync output > https://i.imgur.com/ZO1l16d.jpg

 

You can see the signal from beginning to end; more or less. It's not inverted.

So I'd assume that the output of my buffer would match.

 

Look how degraded the signal gets at the inverter. The first inversion is just as bad so I didn't take any photos. 

Sync is not ideal either.

 

Now lets see what happens when I add a pullup or short the 74LS86N to 40 line to 5V

 

With pin 40 NC https://i.imgur.com/g7MICzq.jpg

 

RED pin 40 NC https://i.imgur.com/kLYJbXs.jpg

RED pin 40 connected https://i.imgur.com/4rgKI5x.jpg

 

So pin 40 seems to invert the signal when floating somehow even though the other XOR is grounded ?

 

More importantly with a 10k pullup I noticed absolutely no change in the signal at any point.

Edited by the_crayon_king

Share this post


Link to post
Share on other sites

Hmm, the output from the 4069 looks like an RC time constant curve. Are you able to swap it out with a known good one? Maybe this a the result of controlling a CMOS device with TTL? If possible, try replacing the 74ls86 with a 74(hct or act) 86 and see what happens.

 

Were these measurements taken with pull-ups on c1-c3? Although the problem seems to be on the logic 1 to logic 0 transition it may help. Just for kicks, try taking your RGB directly from the 2637.

 

I don't know what else to suggest.

Share this post


Link to post
Share on other sites

Hmm, the output from the 4069 looks like an RC time constant curve. Are you able to swap it out with a known good one? Maybe this a the result of controlling a CMOS device with TTL? If possible, try replacing the 74ls86 with a 74(hct or act) 86 and see what happens.

 

Were these measurements taken with pull-ups on c1-c3? Although the problem seems to be on the logic 1 to logic 0 transition it may help. Just for kicks, try taking your RGB directly from the 2637.

 

I don't know what else to suggest.

 

I am not too concerned with the measurements downstream they are not where I will be tapping. Just looking and they look gross.

I took measurements with pullups but no change I can only assume there is already a pullup applied with 1V.

That is the only reason I can figure for no change with a 10k on 5V.

 

Since I added pullups and then one of my lines of the LS burnt up I can only assume the two are related.

 

I try to concentrate on the best ways to do things without changing the existing circuitry.

 

So the best way I can figure is :

amp with 12db gain on outputs of 2637> into logic buffer with OE tied to blanking> into resistor/divider to THS7374.

 

I am certain this combination will work I just don't have the parts around to test. If inversion is still an issue the buffer would just be a buffer inverter.

 

It is interesting that the other truth table was inverted from mine exactly. Looking at the signal itself it doesn't appear to be inverted.

Usually an inverted signal would be constant high with a few lows to indicate whatever. And from what I have seen that is the opposite.

I just have my one test build of having inverted colors to go off of. Since inverters/buffers are pin compatible its not an issue and I will begin an actual PCB design soon.

Share this post


Link to post
Share on other sites

Ouch! Sorry to hear it got fried. How long was it running for before it burnt up? I used 1k pullups on mine and havn't run into issues but I also hanv't ran it for an extended period of time.

 

I'd have to measure again but I remember the addition of pullups making a significant difference in the open collector voltage.

 

The truth table I posted earlier was from some programming documentaion (i.e. software). That's not to say the hardware doesn't invert the color code before it reaches the outside world. I really don't know...

Share this post


Link to post
Share on other sites

Ouch! Sorry to hear it got fried. How long was it running for before it burnt up? I used 1k pullups on mine and havn't run into issues but I also hanv't ran it for an extended period of time.

 

I'd have to measure again but I remember the addition of pullups making a significant difference in the open collector voltage.

 

The truth table I posted earlier was from some programming documentaion (i.e. software). That's not to say the hardware doesn't invert the color code before it reaches the outside world. I really don't know...

 

I am pretty sure the change you have is from a lower value resistance on your pullups. 

I literally had the scope connected while I shorted 5V to the output through 10k so I don't think I made any errors. 

Damaging some easily replaceable ICs is one thing but if the 2637 goes out its game over.

I had the pullup active for an hour or so I am not sure when the issue happened since I wasn't testing that part at the time. 

I only had the pullup on one line and that is the one that burnt up so yea

 

Id rather keep the OEM circuit untouched and I cant see a way to do it without a op amp > buffer > op amp. 

 

I did manage to get SD video out through an expansion circuit so CV, S-Video, and Component is easily made with an additional board.

That thing was held together on hope and nothing else so I couldn't test much further. I will have a prototype design ready to print tomorrow evening I am confident it will work. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...