Jump to content
IGNORED

Game Title Display Duration Analysis


Ikrananka

Recommended Posts

It is well known that NTSC ColecoVision consoles have, what many find to be, an irritatingly long duration set for displaying the title screen of games. Well, that is those games that use the "COLECOVISION PRESENTS" BIOS title screen function - quite a few do not, e.g. AtariSoft games. It is also well known that the title screen duration of CBS PAL-SECAM ColecoVision consoles was set much shorter.

It has also been documented that changing the value of byte 0x196A in the ColecoVision BIOS changes the duration that the "COLECOVISION PRESENTS" title screen is displayed.

This got me curious. What is the relationship between title screen duration (seconds) and the byte value of 0x196A? Well after much testing and measurement I figured out that it's a simple linear relationship that applies to both NTSC and PAL-SECAM ColecoVisions:

Title Screen Duration (seconds) = Decimal Value of 0x196A x 0.55


So, by way of an example. The value of byte 0x196A in the standard NTSC BIOS is 17h. This is equivalent to 23 in decimal and this multiplied by 0.55 equals 12.65 seconds. This is in fact higher than the all of the durations I have seen people report over the years which have been 7, 10 and 12 seconds. The mind boggles how anyone could have thought the delay was as low as 7 seconds, let alone 10 seconds.

As for CBS PAL-SECAM ColecoVisions, the value of byte 0x196A is set much lower at 06h. This is 6 in decimal and multiplied by 0.55 equals 3.3 seconds, over 9.3 seconds less than an NTSC unit ! ! !

The one exception (that I know of) is if 0x196A is set to zero. I was thinking that this would simply bypass the title screen but instead it does the opposite and permanently displays it. No amount of waiting (or anything else for that matter) will coax the ColecoVision to move to the game select screen.

To make things easy, here's a simple lookup table that lists the hex value of 0x196A and the title screen duration:

post-5757-0-15147700-1557066806_thumb.png

Emulators

A surprising observation is that the title screen duration varies amongst the CV emulators even when they're all using the default NTSC BIOS. I measured these duration's:

  • blueMSX v2.8.3 = 12.65s (correct)
  • CoolCV v0.6.6 = 5.50s (way too low)
  • ColEm 4.6 = 10.70s (low)

There's something strange going on with CoolCV and ColEm so I'm going to follow this up with the developers.

 

Conclusion

 

I have way to much time on my hands :-D

  • Like 6
Link to comment
Share on other sites

Actually I don't care how much time a title screen is displayed.

 

Yeah, I hear you - it's hard to get excited about this. I did this mainly out of curiosity and posted it here as there may be one or two people who find it interesting (hopefully).

 

With regard to the emulators, my concern is that the title delay being wrong may indicate some underlying timing issue and that this may affect games in some way. I'm not saying I've noticed any timing issues with games in these emulators but it's worth pointing this out to the developers just in case.

Edited by Ikrananka
  • Like 1
Link to comment
Share on other sites

It's very interesting, and also a little worrisome to learn that the delay is wrong in CoolCV and ColEm. It could be hardcoded into the emulators, but that's doubtful. Let us know if you make any progress or if sensible explanations are offered regarding the discrepancy. Also, I take it the range of the byte only goes up to 0x1F, as you didn't post values above. My guess is the delay increases by 0.55 sec up to 0x7F?

Link to comment
Share on other sites

CoolCV has the "advantage" of patching the BIOS so the starting delay is not so big.

 

It patches the 0x196a byte to 0x0a. :)

 

There are no timing errors. In fact I'm pretty proud CoolCV is one of the more exact emulators.

  • Like 2
Link to comment
Share on other sites

That is interesting...

I've been meaning to do a replacement EPROM for my ADAM because of this very annoyance.

Before I break out the Hex editor (some time) how does this compare to the various modded BIOS's that are floating about, and are there any that do something interesting / useful beyond fixing this stupidly long delay?

 

PS

I might have to buy a Colecovision just so I can change the value to something even higher and then re-sell it on eBay. icon_biggrin.gif

(FF)

Edited by CharlesMouse
Link to comment
Share on other sites

It's very interesting, and also a little worrisome to learn that the delay is wrong in CoolCV and ColEm. It could be hardcoded into the emulators, but that's doubtful. Let us know if you make any progress or if sensible explanations are offered regarding the discrepancy. Also, I take it the range of the byte only goes up to 0x1F, as you didn't post values above. My guess is the delay increases by 0.55 sec up to 0x7F?

 

Well, we've just had confirmation from nanochess that the 5.5 second delay is in fact hardcoded into CoolCV - so that explains that. As for ColEm, Marat the developer is investigating and I will report back here if I get any updates from him.

 

Yes, I just stopped at 0x1F as I thought there'd be little interest in extending the title delay for any longer. As for increasing 0x196A all the way up to 0x7F, this is 127 in decimal and based on my equation this should give a title screen duration of 69.85 seconds. I just tested this and it does indeed yield that duration.

 

In fact, I just tested increasing 0x196A up to it's absolute maximum of 0xFF (255 in decimal) and this yielded a 140.25 second title screen duration delay, exactly in line with my equation. So the equation works through the entire range of 0x01 to 0xFF.

Link to comment
Share on other sites

CoolCV has the "advantage" of patching the BIOS so the starting delay is not so big.

 

It patches the 0x196a byte to 0x0a. :)

 

There are no timing errors. In fact I'm pretty proud CoolCV is one of the more exact emulators.

 

My apologies, when I did my analysis I examined the CoolCV.exe file to see if the CV BIOS was intact in there. I was surprised when I thought I had found it and also thought I found where the 0x196A byte was set and saw the value of 17. It would seem I was being a bit dumb and must have been searching the wrong file (tab) in my hex editor as I have just looked again and this time I see that the CV BIOS is most certainly not intact in CoolCV.exe and I'm assuming is now unrecognisable due to your programming and compilation process.

Yes, setting 0x196A to 0x0A corresponds exactly to the 5.5 second title duration that I measured - so yes, no timing errors in CoolCV. I had no doubt that CoolCV was accurate and in fact CoolCV is my CV emulator of choice. I have never encountered any bugs in the entire time I have used it.

Link to comment
Share on other sites

That is interesting...

I've been meaning to do a replacement EPROM for my ADAM because of this very annoyance.

Before I break out the Hex editor (some time) how does this compare to the various modded BIOS's that are floating about, and are there any that do something interesting / useful beyond fixing this stupidly long delay?

 

There are quite a lot of modded variations of the CV BIOS around including:

  • "COLEO_SHORT_DELAY" - by 5-11under, this is the first example of someone just changing 0x196A to a different value and leaving the rest of the BIOS intact. In this case 0x05 yielding a 2.75 second title delay. It is this BIOS that inspired me to do my analysis. Thanks 5-11under :thumbsup: :thumbsup: :thumbsup: newcoleco followed this up with a PAL-SECAM version.
  • Intro Skip / No Title Delay - this hacks a different section of the BIOS to stop the title screen from being displayed at all. Although this isn't entirely successful as the top part of "COLECOVISION" flashes onscreen for a fraction of a second. I'm not aware of any issues that this BIOS causes with games but that doesn't mean that there aren't any. In my opinion you're better off using a non-destructive hack by only changing 0x196A to 0x01 if you want to absolutely minimise the title screen duration.
  • Intro Skip / No Title Delay on Fire - this hacks more of the BIOS to display the title screen for the default duration but allows the user to immediately jump to the game select screen after pressing a fire button on the joystick. However, there is one known issue with this hack and that is with the game Sewer Sam. After the title and skill selection screens the game tries to start but just ends up with some garbled graphics at the top of the screen and then a load of vertical green lines may appear.
  • youki Patched Intro Skip / No Title Delay on Fire - this was an attempt by youki to fix the above Sewer Sam problem. youki simply reverted some bytes of the BIOS back to their original values. This fixes the Sewer Sam issue but breaks the skip title on pressing fire and so the title screen is still displayed for the full 12.65 seconds. In this case, you're better off just using the original BIOS.
  • Bruce Tomlin Optimised - Bruce Tomlin disassembled the original BIOS, found and fixed a number of bugs and also did some optimisation. He also modified the code to introduce an intro skip / no title delay on fire feature. While this BIOS is of technical interest, there are a number of games that used the quirks of the original BIOS to their advantage and so do not work with this optimised BIOS. I don't believe there has ever been any significant testing of this BIOS so the number of games affected is unknown.
  • Fonts - there are a number of BIOS files that have been hacked to display fonts that are different to the standard one's by Coleco.

For a while now I have been using the "Intro Skip / No Title Delay on Fire" BIOS in my CVs. However, as this has issues with Sewer Sam, and may have introduced undiscovered issues with other games, I decided to keep it simple and have now changed the BIOS in my NTSC CVs to use one with just the single byte, 0x196A, changed to 0x06 to match the title duration of PAL-SECAM units. This gives me a perfectly acceptable title screen duration that matches the PAL unit that I grew up with. Also, changing this byte is by design and so will have no effect on game compatibility whatsoever.

 

 

I might have to buy a Colecovision just so I can change the value to something even higher and then re-sell it on eBay. icon_biggrin.gif

(FF)

I'd love to see their faces while they wait well over 2 minutes for the game select screen - LOL.

Edited by Ikrananka
Link to comment
Share on other sites

Is the Bruce Tomlin optimised BIOS available in a compiled version anywhere to download? I'd like to try it out in my favorite emulators.

 

What are the differences in this optimized version? Very little information aside from the commented .asm code itself is available.

Link to comment
Share on other sites

Is the Bruce Tomlin optimised BIOS available in a compiled version anywhere to download? I'd like to try it out in my favorite emulators.

 

What are the differences in this optimized version? Very little information aside from the commented .asm code itself is available.

 

Here you go.

 

There is a short readme in the attached zip with the only info I have about the changes Bruce made. What is interesting is that this BIOS allows the title screen to be skipped by pressing the fire button AND Sewer Sam works.

ColecoVision BIOS (no title delay on fire - Bruce Tomlin coleco29 Optimised).zip

Edited by Ikrananka
Link to comment
Share on other sites

CoolCV has the "advantage" of patching the BIOS so the starting delay is not so big.

 

It patches the 0x196a byte to 0x0a. :)

 

There are no timing errors. In fact I'm pretty proud CoolCV is one of the more exact emulators.

Great work! Now if you would just make version that ran on Sega CD.

Link to comment
Share on other sites

Very interesting. Does changing display time and writing to eprom cause any problems like was the case with sewer sam and fire skip bios.

 

Changing this value is by design and simply changes the value of the title screen duration variable in the BIOS code. As it's by design, and this variable was changed for the PAL release of the CV, I don't believe there will be any negative/undesirable effect on any existing game.

 

I can confirm that with the various test EPROMs I tried in my CV with just this variable changed, Sewer Sam worked perfectly in every case.

  • Like 1
Link to comment
Share on other sites

And c

 

 

Changing this value is by design and simply changes the value of the title screen duration variable in the BIOS code. As it's by design, and this variable was changed for the PAL release of the CV, I don't believe there will be any negative/undesirable effect on any existing game.

 

I can confirm that with the various test EPROMs I tried in my CV with just this variable changed, Sewer Sam worked perfectly in every case.

would you please post one with 2 second delay? I want to put in my CV.

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