Jump to content
IGNORED

NANO atmega328 retro Computer project using TIA as video/sound


universal2600

Recommended Posts

Okay i've gotten the basic pcb layout done (mostly) but i wanted to know how well if at all, using a fifo dual port buffer (aka dual ported 64-bit fifo ram and bits as bits not bytes! CY7C408A is whats used in this design since you write to it like a shift register from what im seeing) so the "arduino" is connected to 2 74xxx595 one is used to drive the TIA address bus and the other to provide inputs to the fifo, the [fifo] outputs are connected to the TIA databus (Note: this is a one way route as its designed with only writing to the TIA @ the moment). With said databus being clocked by TIA Phase 0, and the 328p-side fifo Write is simply done by toggling its corresponding 74hc595 pin 9 (serial out/overflow). the goal of that is simply for your arduino (328p) simply uses like the vcs a sort of "kernel" that would allow you to just write to the buffer, cycle the TIA addresses, and while the TIA is reading from FIFO you'd in theory use the arduino(as if @ 20Mhz you'd should have plenty of cycles) to do anything else until an almost empty flag on the fifo triggers a interrupt (there is an interrupt for half full, and the TIA HALT aswell for syncing the 328), and since the fifo is asynchronous (the TIA always reads its values at Phase 0, and arduino can write as fast as it needs) programming necessarily does not need to be as critical (to an extent) with timing. I've attached pics of the pcb, I haven't made a schematic yet...., the schematic that is attached is used for the clock of the TIA, beware The pcb isn't finished but i would say should work...., the goal is to have something that could produce a display and sound, and with the 328p you could be able to use the TIA to its Fullest(or atleast more than atari's) extent

 

 

post-30967-0-84689300-1516166486_thumb.jpg

 

post-30967-0-40355200-1516166477.gif

 

post-30967-0-97777400-1516166435_thumb.jpg

 

post-30967-0-17017500-1516166519_thumb.jpg

 

 

 

post-30967-0-03708300-1516167428_thumb.jpg

Edited by universal2600
  • Like 1
Link to comment
Share on other sites

Are you making a 2600 clone or some type of 2600 compatible computer?

In a sense Yes but using the 328p as the "brain", you simply would shift the data to the fifo for the TIA (how much can 64 bytes do in one tia line? I believe it's a 64byte fifo as the datasheet uses words to define the size...) and while the tia is drawing, simply shift your addresses the you need to modify for said line, since the arduino is much faster youd have alot more time per se for more computing, the fifo is there so that you futher reduce how many times you'd need to constantly "refresh" the tia, lets say you 328 would "draw" the line in fifo so when the tia goes to look the info is always there since the output is clocked with The TIA phase 0 output (iirc 1.79mhz) you don't have to worry about keeping cycle accurate timing with arduino, you simply just have the TIA sync to the 328 with rdy/halt when you have to.

  • Like 1
Link to comment
Share on other sites

In a sense Yes but using the 328p as the "brain", you simply would shift the data to the fifo for the TIA (how much can 64 bytes do in one tia line? I believe it's a 64byte fifo as the datasheet uses words to define the size...) and while the tia is drawing, simply shift your addresses the you need to modify for said line, since the arduino is much faster youd have alot more time per se for more computing, the fifo is there so that you futher reduce how many times you'd need to constantly "refresh" the tia, lets say you 328 would "draw" the line in fifo so when the tia goes to look the info is always there since the output is clocked with The TIA phase 0 output (iirc 1.79mhz) you don't have to worry about keeping cycle accurate timing with arduino, you simply just have the TIA sync to the 328 with rdy/halt when you have to.

And no it would not be compatible with 2600 carts, although I do plan on making a 64k vcs sometime in the future

  • Like 1
Link to comment
Share on other sites

okay this so far is the pcb finished (as in that it should "work") and cleaned up somewhat, I added the composite out and audio outputs aswell. Board size is 3 x 4 1/8 inches (7.62cm x 10.4775cm for metric inclined) also btw the CY7C408A is 128 byte dual port buffer ram so in 2 64 x 8 buffered chunks, and for the record I am using the NTSC TIA (Now Thats Some Color, lol), not PAL, iirc a few pins are shuffled around on PAL chips, while it isn't a hard thing to fix, PAL TIA's may not function correctly as this board is:

 

post-30967-0-21843700-1516207131_thumb.jpg

 

post-30967-0-57875200-1516207144_thumb.jpg

 

post-30967-0-87389500-1516207162_thumb.jpg

 

post-30967-0-34395400-1516207174_thumb.jpg

 

post-30967-0-51962300-1516208157_thumb.jpg

 

composite Video circuit schematic I used (note: this is using PAL Pinout, on NTSC LUMA0 is pin 8.):

 

post-30967-0-15469400-1516207638.jpg

 

PS: I recall somewhere that The Tia needs a Vref for color and i remember for proper color, that you need ~4.2V on color delay?

Edited by universal2600
Link to comment
Share on other sites

  • 1 month later...

Okay few questions before i begin actually building this; Using a CY7C408A (128byte (64 word x 8 deep) fifo dual port buffer sram) on the tia data bus can you simply use the phase-2 clock to simply clock the output bus, so that data leaves the fifo at the rate of the (6507) clock @ 1.19MHZ since the CY7C408A input/outputs can be clocked asynchronously, TIA data would be written from a shift register controlled by the avr/arduino to the buffer, and the address bus is shifted out aswell when the screen is drawn, which would use AFE flag from the fifo, TIA (cpu)Halt as interrupts to the arduino. I am also thinking of adding a pic18f4550 as a sort of DMA chip, with built-in USB capability, and some external ram. It would emulate tim64t and some of riot functions in the 2600. Kinda like a DMA and portIO chip, it would replace the shift-register on the tia address bus, so the arduino writes to the buffer, and simply writes the list of addresses to ram that the 4550 would need to properly drive the TIA display/sound for the data written, in a way having vcs display Kernel effectively "emulated" on the pic4550 so that all the arduino needs to do is update the frame, keep everything but changes to the display, since tia bits are latched this would less difficult. So since the pic's max clock is 48MHz which imho should be enough to atleast move video and sound data from the buffer to the tia bus or move it to external ram (I would simply connect a HM62256 32kybte ram to the 4550 and simply to have to arduino be able to write to ram using a serial connection to the pic4550. How many bytes would you need to store one NTSC TIA scan line, same for a 128 x 160 frame drawn by the tia?

 

attachicon.gifstiaall.jpg

 

attachicon.gifcirc429.gif

 

attachicon.gifstiatb.jpg

 

attachicon.gifstiat.jpg

 

attachicon.gifstiab.jpg

 

Edited by universal2600
Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...