Jump to content

Yes Octopus

Posted by atari2600land, 11 June 2012 · 1,213 views

Well, someone was kind enough to sort through my gobbledegook code and figure out the problem. Someone else tested it and said it works. So now the octopus is back in the game. I'd like to thank the both of them, since I'm not too keen on spending about $100 on testing Odyssey2 games on real hardware since I don't really have any more ideas for games I could make on the Odyssey2 at the moment. So anyway, that's apparently all taken care of so I can start working on the code again. In the meantime, I've started up work again on the 50-foot-tall stalk of celery game. Dormant since last December, I decided to give it a go again now that I can test 2600 games on real hardware. A bunch of fixing and tweaking later (I spent probably about 4 hours on the thing with going back and forth a dozen times erasing and putting on the newer versions on an SD card) I got it so it doesn't shake very much when playing on real hardware. It doesn't shake at all in Stella, that and the octopus debacle leaves me wondering why emulator programmers can't get their emulators to emulate more accurately. Don't get me wrong, Stella is a great tool for homebrewers and an excellent emulator, and so is O2EM, but I'm just wondering.

The biggest difference between emulators and hardware is parallelism. On a real 2600 the 6507, TIA and RIOT do stuff each clock cycle in parallel. So while the 6507 is reading code from RAM or ROM, the TIA has several counters which are determining what audio and video are output at that particular moment. Then the 6507 accesses one of the TIA registers and the TIA gets the signal in the middle of whatever it is doing and it takes effect immediately.

This is very, very difficult to do. The emulator has to keep track of the various TIA counters so it can determine when the 6507 accessed the TIA register and determine what impact that has. In parallel with running the 6507 code it has to generate the right graphics data and update the VGA frame buffer (keeping in mind the TIA register updates, including HMOVE wierdness). And this all has to be done as fast (if not faster) than it happens on the 2600.
  • Report