Jump to content
IGNORED

Possible to make dual 2600/7800 games?


Gemintronic

Recommended Posts

I don't think there is. I'm not sure of the specifics but going into 2600 mode involves shutting down much of Maria functionality and configuring the system differently:

 

- CPU runs in slow mode regardless of what's being accessed.

- upper bits of addresses ignored, so 6502 behaves as a 6507 would.

- Maria registers become unavailable, full set of TIA registers available.

 

How something in 2600 mode knows it's on a 7800? I don't know. Maybe some/all of the 7800's RAM is accessable? Maybe the RIOT RAM has some residual stuff that's evidence the BIOS code used it? Maybe some of the mirror images in the memory map are different on a 7800?

 

In theory, a 7800 cart would probably be able to change to 2600 mode but getting back probably not possible.

Edited by Rybags
Link to comment
Share on other sites

Maybe the RIOT RAM has some residual stuff that's evidence the BIOS code used it?

This is how it's done.

 

So far as dual games, when the 7800 bios finds its not running a 7800 game, it locks the console into 2600 mode. The only way to lift the lock is to power cycle the console.

Edited by RevEng
Link to comment
Share on other sites

Couldn't someone craft a single ROM that would pass as a valid 7800 game to the 7800 BIOS and also be able to run on the 2600? The 6502 code would then have to detect if it was running on a 2600 or 7800 so that it could take different code paths as necessary, but that would allow a cart to have the ability to have an expanded set of capabilities on a 7800 while still being backwards compatible to the 2600.

Link to comment
Share on other sites

Off the top of my head, I can't think of a reason why it couldn't be signed, with some kind of detection in-game.

 

The main problem I do see is that 7800 carts have extra address lines and won't plug physically plug into the 2600, so at the very least you'd be stuck in a 4k 2600 based format for the 7800 mode of your game.

 

If it was a bank switched format, which I think you'd want to do if you had to write code for both platforms, the hardware would need either need to boot consistently with the same bank up, or you'd need to sign each 4k bank individually.

Link to comment
Share on other sites

It should be possible to have the smaller board size and run in 7800 mode but it'd be a pain.

 

But realistically, a game that used either piece of hardware and had different code paths. TBH, there would be next to nothing in common with the code, unless it was some really simple game.

 

On 2600, all your RAM addressing is usually zero-page. On 7800 with the more complex games, z-page becomes a valuable resource so is used sparingly in a more orthodox 6502 sort of fashion.

 

On 7800, you don't really have a display kernal like 2600 games.

The way the graphics are stored is very different on both systems.

 

Realistically, there would be so little in common that doing a game that works in both modes would be a compromise in both situations and the only "convenience" would be that the user doesn't have to change cart, yet would still have to power cycle the machine to get from 2600 back to 7800 mode.

Link to comment
Share on other sites

Realistically, there would be so little in common that doing a game that works in both modes would be a compromise in both situations and the only "convenience" would be that the user doesn't have to change cart, yet would still have to power cycle the machine to get from 2600 back to 7800 mode.

 

I'm thinking it would be more like having an enhanced 2600 game than anything else -- but looking over at how the 7800 works, I'm not exactly sure how it would be enhanced. If you are driving the TIA instead of using the MARIA chip, there really isn't much other than extra RAM that the 7800 has over the 2600.

 

Still, it might make an interesting demo at some point.

Link to comment
Share on other sites

I don't think any 7800 specific resources are available in 2600 mode.

 

Similar even applies going the other way - you lose half the access to TIA so can't use the graphical facilities... for what it's worth TIA provides the hardware collision detection although for what it's worth you'd probably spend less time doing bounding box maths than going through the X-positioning procedure that you need with TIA.

 

Re "demo" - I suppose an interesting demo might be something that starts in 7800 mode then drops through to 2600 mode. Although since the 7800 should be able to graphically reproduce what a 2600 can do and the sound is the same it would be kind of pointless.

Link to comment
Share on other sites

Re "demo" - I suppose an interesting demo might be something that starts in 7800 mode then drops through to 2600 mode. Although since the 7800 should be able to graphically reproduce what a 2600 can do and the sound is the same it would be kind of pointless.

 

I believe the 7800 diag cart does this. ie starts in 7800 mode and then switches to 2600 mode.

 

Mitch

Link to comment
Share on other sites

It should be possible to have the smaller board size and run in 7800 mode but it'd be a pain.

 

I don't think this is possible. IIRC, one of the tests for 2600 games in the 7800 BIOS is for cartridge size. If you leave the extra address lines for 7800 carts unconnected, the BIOS will detect that and lock the console into 2600 mode. Since the PAL 7800 doesn't check for the signature key in the ROM, this is actually the main test for detecting 2600 games there.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

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...