Jump to content
IGNORED

7800 NTSC boot rom documented?


Recommended Posts

I wonder if there is a 7800 NTSC boot rom documented somewhere. I wonder if the Atari 2600 F4 cart could be corrupted by the boot process due to the 7800 accessing the hot spots of the cart during boot?

Link to comment
Share on other sites

I am pretty sure the source code was found. At least a late beta of it. I probably have a copy on my hard drive somewhere if you can't find it with a Google search.

 

Mitch

Link to comment
Share on other sites

I did check the source and apparently the memory location FFF8/FFF9 is accessed for testing the region. As a side effect this triggers the hot spot in the F4 bankswitching.

 

What I am still missing is the source of the fallback to 2600 mode.

 

There is just a line:

 

BADCART   JMP     LOCK2600-CODEDIF       ;CART DOES NOT CHECK, DO 2600...
Ani ideas of where to find the code for starting the 2600 mode?

 

Edit: obviously there is no BIOS in the 2600. So my guess is that the code just jumps to some start address.
How did the old Atari F4 carts solve the bankswitcing conflict caused by the regon check? Or did the 7800 NTSC not play SuperGame carts?

Link to comment
Share on other sites

 

 

2 hours ago, karri said:

I did check the source and apparently the memory location FFF8/FFF9 is accessed for testing the region. As a side effect this triggers the hot spot in the F4 bankswitching.

 

What I am still missing is the source of the fallback to 2600 mode.

 

There is just a line:

 

BADCART   JMP     LOCK2600-CODEDIF       ;CART DOES NOT CHECK, DO 2600...
Ani ideas of where to find the code for starting the 2600 mode?

 

Edit: obviously there is no BIOS in the 2600. So my guess is that the code just jumps to some start address.
How did the old Atari F4 carts solve the bankswitcing conflict caused by the regon check? Or did the 7800 NTSC not play SuperGame carts?

Hopefully, these links should help:

https://web.archive.org/web/20231003164525/https://atarihq.com/danb/a7800.shtml#encryption

 

https://www.atariage.com/7800/archives/encryption.html?SystemID=7800

 

Under 7800 NTSC systems, if the authentication signature is not present, it goes into 2600 mode and processes the cartridge just like a 2600 console would handle it.

Link to comment
Share on other sites

Thanks, I have already read these pages. The "problem" comes from the fact that reading fff8 location to check the region will also flip the page in a F4 game. So when the console boots in 2600 mode the rom content does no longer show the correct starting page and the game fails.

 

On a PAL console the boot reads the start address from fffc just like on a ntsc console. This sets the correct page for the 2600 boot. But on a NTSC console the region check corrupts the startup. The 2600 boot appears to start from F000 and does not read the start vector again when the region check has been done.

 

There is hopfully some new bios files where the region checks are gone or the start address is read from fffc before the jump to f000. I don't know...

 

Was this a known problem?

Link to comment
Share on other sites

1 hour ago, karri said:

Thanks, I have already read these pages. The "problem" comes from the fact that reading fff8 location to check the region will also flip the page in a F4 game.

F4 (32K Atari ROM) game does not exist under NTSC from the original 2600 Retail library.  Largest games were 16K.

 

The only F4 PAL Atari ROM I am aware from the original retail 2600 Atari library is 2600 Fatal Run.

Link to comment
Share on other sites

1 hour ago, karri said:

Was this a known problem?

[edit - trebor beat me to it]

 

According to Kevin Horton's 2600 Bankswitch guide, there was only one commercial game that used F4, Fatal Run. The best practice for 2600 bankswitched games is not to assume a particular start-up bank. I tried starting up Fatal Run in different banks using Stella's "-startbank" argument, and the game appears to follow best practice.

 

So it wasn't a problem during the commercial life of the 7800, and shouldn't be a problem for homebrew games that follow best practice.

  • Like 4
Link to comment
Share on other sites

Thank you guys! I am learning a lot here all the time. This probably means that the start vectors need to be duplicated in every bank.

 

~/Otaku-flash
  Cart Name:       Fatal Run (Ultimate Driving) (1991) (Atari) (PAL)
  Cart MD5:        074ec425ec20579e64a7ded592155d48
  Controller 0:    Joystick in left port
  Controller 1:    Joystick in right port
  Display Format:  PAL*
  Bankswitch Type: F4SC* (32K) 
 

So this game works on a 7800 PAL console without problems. But not on a 7800 NTSC according to what I hear.

 

As you see from Stella's rominfo the game is actually F4SC and not F4.

 

Is there 7800 NTSC firmwares that just jump to F000 if the region check fails? Because it looks like it from the documented bios source I found. The SuperGame cart has 128 bytes of write-page for the RAM at address F000 for all banks.

 

Edt:

I can verify that the start vector is the same for all banks:

1100

3100

5100

...

f100

 

The start addresses all point to 1100 that contains proper code to set the banks.

 

Anyway... I try to buy myself a 7800 NTSC unit just in order to test my games.

Link to comment
Share on other sites

I just uploaded a copy of the NTSC bios (updated with additional comments) to my github. (it's not open source, which is why I didn't add it to the 7800 devtools github)

 

The source could use more commenting, for sure, but I'm not seeing a jump to F000. The bios NMI lives at F000, so maybe that's what you're seeing? In any case, search for "26C2" and you'll find the start of the 2600 Init code.

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

Your github is private. But for me it is enough that the code does not jump to F000. I am only guessing as I don't have a NTSC console to experiment with.

 

I just bought a NTSC console. So out of pure interest I may look at the startup on a logic analyzer to see where the problem is. But it takes a few weeks to get it here.

Link to comment
Share on other sites

14 hours ago, karri said:

Thank you guys! I am learning a lot here all the time. This probably means that the start vectors need to be duplicated in every bank.

 

~/Otaku-flash
  Cart Name:       Fatal Run (Ultimate Driving) (1991) (Atari) (PAL)
  Cart MD5:        074ec425ec20579e64a7ded592155d48
  Controller 0:    Joystick in left port
  Controller 1:    Joystick in right port
  Display Format:  PAL*
  Bankswitch Type: F4SC* (32K) 
 

So this game works on a 7800 PAL console without problems. But not on a 7800 NTSC according to what I hear.

 

As you see from Stella's rominfo the game is actually F4SC and not F4.

That ROM having any issues trying to run under an NTSC system, is not necessarily because it is F4SC, but due to it being PAL.

 

True, Fatal Run was ultimately discovered to use 128 bytes of 'Superchip' RAM, which added the 'SC' moniker; however, homebrew games, such as Princess Rescue, is plain F4, and runs fine across all my NTSC 7800 systems.

 

As RevEng stated, following best practices, there should not be any issues.

  • Thanks 1
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.
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...