Jump to content

I did the math(s). It checked out.


Recommended Posts

Hello, Atari IO!


I'm a long-time fan of retro computing, but pretty new to Atari. I don't have very much in the way of personal experiences with Atari or arcades, as many here do, in fact I suck at playing video games, but came to it through another route. I'm an embedded software developer so I enjoy learning about different platforms, CPU architectures and clever electronics.


I got started on a project to emulate a 2600 in a micro-controller (currently lacking a TIA, but the 6507 mostly works ;) ) and came to really appreciate the elegance of it considering the cost restrictions in place, along with the creativity of the developers tasked with creating engaging games.


I'm also very interested in the Jaguar. Despite its Hindenburg-esque history it remains a fascinating console: custom ASICs, weird co-processor architecture, love it. I hope to learn a lot more about it (I decided to sign up after coming across the thread with the JagDuo PCB and listening to a few of Shinto's game-by-game podcasts) and maybe even enough to be able to try my hand at a bit of homebrew hardware and software.




Edited by dgrubb
Link to comment
Share on other sites

Welcome!  We'd love to know more about your 2600 emulation project.  Was that for a commercial product?  Pretty cool stuff.


Sure! It was a kind of research project, really. The schematics for the 2600 are very simple looking (three ICs!) so I figured it would be possible for somebody to understand it top-to-bottom. If you can write a good emulator of a system then you can reasonably claim to have a good knowledge of it. I'm also interested in uCs and the idea of fitting an entire console into the computational power of a single IC or two tickled me a bit.


Having said that, embedded stuff is usually more I/O bound so raw processing power is less of an issue than some other architecture characteristics (see below).


There are a few related and experimental projects on my GitHub:


HiFive-2600: https://github.com/dgrubb/HiFive1-2600


My first attempt. This is based around a new RISC-V uC which is very performant and can be clocked at a massive 300MHz+ so I thought it would be a great platform. Unfortunately, it only has 16kb of scratch memory, supplemented by an external SPI flash chip. The SPI flash is memory mapped, but the access time is comparatively slow and causes a cache flush. The result is that a lot of the massive processing power is wasted unless you can fit the whole program in 16kb, which isn't going to be the case here. Still, on this version you can load a cartridge and step through each processor tick, while printing the 6507 state on a console.


STM32-RIOT-6502: https://github.com/dgrubb/STM32-RIOT-6502


Similar to the above on a slower uC, but one with enough RAM to fit the whole program and run at full-speed. I can just about get the 6507/memory/cartridge state emulation to execute within a 1.19MHz period, enough to run those parts at the the same speed as a real 2600. The TIA is out of the question though, as it uses an NTSC colour clock of 3.58MHz. As with the other project you can step through the emulation state, or run it at full-speed. The TIA has a very simple state machine, but the timing requirements are quite strict. To finish this project off and get some actual video out going I'm planning on implementing the TIA in a separate uC. That's a work-in-progress for the time being.


I was pretty chuffed just to get the 6507 emulation (mostly ;) ) working, probably quite a few bugs and mistakes which will need correcting which I'll find as I flesh out the unit tests. It got the point where I was seeing 6502 op-codes in the license plates of other cars during my commute!

Edited by dgrubb
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.

Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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.

  • Create New...