Atari 2600 VCS Emulator

Freeway2P.ino.leonardo.hex (77.1 KB)

I’ve always wanted to write an emulator from scratch, and I decided now was the time.
I finished this a week and a half early so I’m posting it now. From the legendary David Crane, I present to you Freeway!. I know what you’re thinking “It’s two player only!” Not a problem. Player one uses Up and Left. Player two uses Right and Down. But, careful not to touch A and B as those are Start and Select.

If you have no friends, there’s another mode if you use the konami cheat code.

I was going to write this for a different system, but it hasn’t come in yet and I couldn’t figure out how to make their emulator work so here I am.

Enjoy!.

Dave

3 Likes

Haha there are some scaling problems but this is really cool that it works, I can’t believe the number of emulators available for the Arduboy system now. Nice work!

Would love to see some source if this is truly an Atari emulator and not just a remake… I looked into Atari emulation before and it was WAY more complicated than you’d’ think. Of course there is also already a really good Atari emulation project (in general). Can’t recall the name of it right now.

Yeah, originally I was doing Haunted House, it would have been sweet as the sprites are bigger and the background would have scaled well and everything has a black background. But it just didn’t fit. Freeway is the only 2k joystick game that I liked. If you do UUDDLRLR it does a zoom and the graphics are better but you can’t really see what’s coming at you.

  • fixed code

Ah yes, Stella: https://stella-emu.github.io

2600 emulation is not so much binary as a spectrum with Stella on one end and admittedly me on the opposite end. Long ago I made a 2600 multicart and wrote a menu system for it, so I already knew the hardware. Emulating one game is actually pretty easy, two not so much. For example when I switched from Haunted House to Freeway there were 4 scan lines missing and on the lower center stripe every 5th stripe was missing. Since I was worried about performance I didn’t actually fix the emu timing, I adjusted the rom to fit my timing. I’m actually not doing timing. Rather than write the graphics as it goes across the scanline as would be proper I’m putting everything into a list, and at the end of the scanline drawing everything in the list. This can lead to glitches but I don’t think 100% accuracy is a possibility on this platform.

2 Likes

Yeah that would be my concern. The Stella codebase looked pretty sizable to me.