Sdw #1 Posted April 8, 2011 I have been messing around a bit with 2600 development. At first I used only normal 4k cart as target, now I've moved on to a F8-style bankswitched 8k cart target as I needed some more space. Lately I've been reading up a bit about the different bankswitching schemes and the fact that some of them also had extra RAM. And some extra RAM would open up some interesting possibilities, that's for sure! I do my testing in Stella and then on a real 2600 with a Harmony cart, so almost all bankswitching modes are available to me - however, I'd like to stay "historically correct", that is, not use any fancy features that has been invented after the commercial life of the 2600, or that would not have been commercially viable to produce back then. I've been looking at: FA (CBS RAM+, 12kb ROM and 256 bytes RAM) E7 (M-network, ??kb ROM and a whopping 2kb of RAM) Were any of these widely used back in the day (say up to the mid-80ies or so) so that I can use them with a clean conscience? Quote Share this post Link to post Share on other sites
+JAC! #2 Posted April 8, 2011 Thanks for this post - due to it I just found out that there is something like a Harmony card I'm also getting into VCS coding these days, and I wondered how I could modify cards to run my stuff. Quote Share this post Link to post Share on other sites
Thomas Jentzsch #3 Posted April 8, 2011 I've been looking at: FA (CBS RAM+, 12kb ROM and 256 bytes RAM) E7 (M-network, ??kb ROM and a whopping 2kb of RAM) IMO both are fair to use in your case. Quote Share this post Link to post Share on other sites
+GroovyBee #4 Posted April 8, 2011 Emphasis mine :- I'd like to stay "historically correct", that is, not use any fancy features that has been invented after the commercial life of the 2600, or that would not have been commercially viable to produce back then. You'd better stop using the Stella emulator and a Harmony cart in that case . A more widely used RAM system back in the day was SARA which added another 128 bytes of RAM. Quote Share this post Link to post Share on other sites
+SpiceWare #5 Posted April 8, 2011 You could also use DPC, it was used for PitFall 2 and adds some interesting abilities. Quote Share this post Link to post Share on other sites
+Random Terrain #6 Posted April 8, 2011 . . . however, I'd like to stay "historically correct", that is, not use any fancy features that has been invented after the commercial life of the 2600, or that would not have been commercially viable to produce back then. The following is adapted from a reply I posted last month: If Atari would have been able to keep their promise, with new tricks discovered and constant advancements in cartridge technology over the years, the Atari 2600 really could have been what they promised: http://www.atarimania.com/pubs/hi_res/pub_everything_you_always_wanted_to_know.jpg Are they a passing fancy,like Hula Hoops? They're exactly the opposite. The ATARI Video Computer System™ Game is not a toy to be put in the closet and forgotten. It's a permanent part of a home entertainment center. And just as there are constantly new records available for your stereo, Atari will constantly offer new Game Program™ cartridges for your system. If the Atari 2600 is supposed to be a permanent part of our home entertainment centers, the cartridges would have become more advanced over time. Atari cartridges grew with us. As we demanded more complex games with better graphics, Atari and some third-party companies delivered. If Atari could have kept their promise, who knows how advanced Atari 2600 cartridges might be today with nonstop advancements through the 1990s and 2000s? Instead of trying to limit yourself, why not use the Harmony cart for testing and use Melody boards when you go to sell your game and give Atari 2600 gamers an eye candy overload and an extreme replayability joygasm? Quote Share this post Link to post Share on other sites
+RevEng #7 Posted April 8, 2011 Not a definitive list, but out of the 520 roms I had, there were 3 FA games and 3 E7 games. FA Mountain King (1983)Omega Race (1983)Tunnel Runner (1983) E7 Bump'n'Jump (1983)BurgerTime (1983)Masters of the Universe, The Power of He-Man (1983) Quote Share this post Link to post Share on other sites
cd-w #8 Posted April 10, 2011 Does anyone have an accurate description of E7 (M-Network) bank-switching? I remember reading that there were some errors in Kevin Horton's E7 description, but I have been unable to find a corrected version. Thanks, Chris Quote Share this post Link to post Share on other sites
Thomas Jentzsch #9 Posted April 10, 2011 Does anyone have an accurate description of E7 (M-Network) bank-switching? I remember reading that there were some errors in Kevin Horton's E7 description, but I have been unable to find a corrected version. My Elite demos are using this bankswitching. IIRC I found some bugs, but I can't remember which. Quote Share this post Link to post Share on other sites
Thomas Jentzsch #10 Posted April 10, 2011 Here is some doc from the source code: ;M-Network's E7 Scheme. 8 2K Banks + 2K RAM ; ;7 ROM Banks are selected by $ffe0-$ffe6 and mapped at $f000-$f7ff. ; The 8th bank is fixed at $f800-$ffff. ;The 1st 1K RAM block is selected by $ffe7 and mapped at $f000-$f7ff ; Writing to $f000-$f3ff, reading from $f400-$f7ff ;The 2nd 1K RAM block is split up into 256b parts, selected by $ffe8-$ffeb ; The 256b chuncks are mapped at $f800-$f9ff ; Writing to $f800-$f8ff, reading from $f900-$f9ff ;+-----------------------------------+-----------+-----------------------+ ;|ROM: ffe0-ffe6, RAM: ffe7 |ffe8-ffeb | | ;+-----------------------------------+-----+-----+-----------------------+ ;|7 ROM banks |write|read |fixed ROM | ;|f000 f7ff|RAM |RAM |fa00 ffff| ;+-----------------+-----------------+ | +-----------------------+ ;|write RAM |read RAM | | | | ;|f000 f3ff|f400 f7ff|f8xx |f9xx | | ;+-----------------+-----------------+-----+-----+-----------------------+ Quote Share this post Link to post Share on other sites
cd-w #11 Posted April 10, 2011 Here is some doc from the source code ... Thanks - that makes things much clearer. I assume that the first 512 bytes of the 8th ROM bank are inaccessible, as they are overlapped by the RAM? Chris Quote Share this post Link to post Share on other sites
Thomas Jentzsch #12 Posted April 10, 2011 Thanks - that makes things much clearer. I assume that the first 512 bytes of the 8th ROM bank are inaccessible, as they are overlapped by the RAM? Seems so. And my code doesn't use them too. Quote Share this post Link to post Share on other sites
+stephena #13 Posted April 10, 2011 Does anyone have an accurate description of E7 (M-Network) bank-switching? I remember reading that there were some errors in Kevin Horton's E7 description, but I have been unable to find a corrected version. Thanks, Chris You can take a look at the CartE7 source code in Stella, as follows: CartE7.hxx CartE7.cxx Some of the comments will help in understanding this format. Quote Share this post Link to post Share on other sites
Thomas Jentzsch #14 Posted April 11, 2011 BTW: E7 is even a bit more tricky than it seems. During development I often had to move around code in the last bank. It wasn't always clear what happened, but IIRC branches and data accesses caused unintended bankswitchings. Quote Share this post Link to post Share on other sites
+Omegamatrix #15 Posted April 12, 2011 BTW: E7 is even a bit more tricky than it seems. During development I often had to move around code in the last bank. It wasn't always clear what happened, but IIRC branches and data accesses caused unintended bankswitchings. From your diagram this could easily happen if you are in the $FF page and branching to somewhere in $FEE0-$FEEB. This will trigger a hotspot. Quote Share this post Link to post Share on other sites
Thomas Jentzsch #16 Posted April 12, 2011 From your diagram this could easily happen if you are in the $FF page and branching to somewhere in $FEE0-$FEEB. This will trigger a hotspot. Yes, it was a branch in some code at the end of the last bank. Quote Share this post Link to post Share on other sites
Sdw #17 Posted April 14, 2011 Thanks for your comments. Maybe I should have mentioned that this was for a demo, because I agree that for a game there is no need to hold back, just use whatever is necessary. However, when doing a demo the goal is often is about stretching an old machine to see what can be done and then it might be considered cheating to utilize modern hardware. But it seems like both those bankswitching methods were available back then, even if not used extensively. I think I'll start with the FA one as it was much more straightforward. 256 bytes should hold me over for a while anyway! Btw. nice to see you here as well JAC! I heard that maybe you were working on a 2600 demo as well, seems like there were some truths to those rumors then! Quote Share this post Link to post Share on other sites
Zach #18 Posted April 14, 2011 Thanks - that makes things much clearer. I assume that the first 512 bytes of the 8th ROM bank are inaccessible, as they are overlapped by the RAM? Chris Yes, that was my experience. Of course you can copy instructions into the first 256 bytes, which may be useful since space in the 8th bank is scarce. Quote Share this post Link to post Share on other sites
+stephena #19 Posted April 18, 2011 From your diagram this could easily happen if you are in the $FF page and branching to somewhere in $FEE0-$FEEB. This will trigger a hotspot. Yes, it was a branch in some code at the end of the last bank. Could someone create a test ROM that illustrates this behaviour? I'd like to test in Stella, and improve the emulation if it isn't accurate. Quote Share this post Link to post Share on other sites