Jump to content
IGNORED

50hz Coleco BIOS?


nanochess

Recommended Posts

This is the only PAL version of the CV BIOS that I have... if I recall correctly, someone posted it on the CV/ADAM Forum not to long ago. It is the "Press fire-button to bypass CV Title Screen" hack. If you don't press a fire-button, the title screen displays normally for 11 seconds. Hope this helps.

ColecoVision BIOS (2010) (Unknown) (Fire Button Skip Intro) (PAL).zip

Link to comment
Share on other sites

This is the only PAL version of the CV BIOS that I have... if I recall correctly, someone posted it on the CV/ADAM Forum not to long ago. It is the "Press fire-button to bypass CV Title Screen" hack. If you don't press a fire-button, the title screen displays normally for 11 seconds. Hope this helps.

It was me who modified this modded bios rom file. It was in a thread about modding by changing the OS in ColecoVision in order to skip the title screen, and I've decided to make the ROM file properly set as a PAL version by changing the value 60 for 50 at the address memory $0069, which is, based on the Coleco documentation, where the frequency value is hardcoded... and it's named AMERICA in the OS7 BIOS Complete listing, which is weird but... Anyway, mystery solved!

Link to comment
Share on other sites

So, do PAL machines normally have that byte set to 50, or do all CVs, regardless of video format, have that byte set to 60?

In theory, CBS ColecoVision systems (PAL) should have this value at $0069 set to 50 for 50Hz, yes. I have no clue if it's really the case, but it should be because the official ColecoVision programming documentation declared that particular byte to be set that way : 60 for NTSC and 50 for PAL. Does it affect the hardware? not at all, but it may affect games if they use, for example, this byte to calculate time in seconds rather than simply the number of screen refresh (through NMI interupts).

Link to comment
Share on other sites

I was wondering reading that post, if there is a way to know by sofware if you are running on a PAL or a SECAM machine?

 

EDIT: rereading your post, I realized you said SECAM. The below applies to the difference between PAL and NTSC. I guess that is what you are referring too?

 

I'm not sure about the colecovision, but I did create such routine on the TI-99/4A (same VDP as the coleco).

 

1. Turn off interrupt handling on the CPU.

2. Write a loop that:

a) reads the VDP status register

b) Checks bit 0 in the VDP status register

c) if the bit is set then exit loop, otherwise increase a counter

 

3. Run this loop 10 times and check the value in the counter.

 

The counter value in the PAL system must be higher than on NTSC, because the VDP interrupt flag is not set that often.

It's then easy to add an IF statement to set the PAL/NTSC flag based on the highest counter value.

 

How high the counter gets, depends on the used CPU and hardware. So this is something you have to try on the Z80.

 

The below assembly source is for the TMS9900 CPU (a 16 bit processor), but you get the idea.

Something similar should be possible on the Z80. I'm not sure if you can mask interrupts on the colecovision though.

 

*--------------------------------------------------------------
* Determine if VDP is PAL or NTSC 
*--------------------------------------------------------------   
       LIMI  0                     ; Mask interrupts on CPU    
       CLR   R1                    ; Reset counter
       LI    R2,10                 ; We test 10 times
RUNLI5  MOV   @VDPS,R3
       COC   @WBIT0,R3             ; Interupt flag set ?
       JEQ   RUNLI6
       INC   R1                    ; Increase counter
       JMP   RUNLI5
RUNLI6  DEC   R2                    ; Next test
       JNE   RUNLI5
       CI    R1,>1250              ; Max for NTSC reached ?
       JLE   RUNLI7                ; No, so it must be NTSC
       ORI   CONFIG,PALON          ; Yes, it must be PAL, set flag

 

EDIT:

Check page 23 in the VDP programmers' manual for details on the interrupt flag. Check http://www.retroclouds.de/atariage/vdp_pg.pdf

I believe that on the colecovision you can't turn off interrupt handling on the Z80 CPU, because the VDP interrupt is handled

as non-maskable interupt.

 

However you can tell the VDP itself NOT to send an interrupt to the Z80 CPU, by clearing bit 2 in VDP register 1 (see page 20).

The interrupt flag in the VDP status register will still be set, so you should be fine.

Edited by retroclouds
Link to comment
Share on other sites

I guess that is what you are referring too?

 

no, no, i was well asking to determine if the console is PAL or SECAM , not NTSC.

 

To determine PAL vs NTSC there is just one byte in mermory to read.

 

Even if the interest seems limited to know if it is SECAM or PAL (as both are 50hz) , but just by curiosity and because i just had a funny idea i could use in my next game... ;)

Link to comment
Share on other sites

I guess that is what you are referring too?

 

no, no, i was well asking to determine if the console is PAL or SECAM , not NTSC.

 

To determine PAL vs NTSC there is just one byte in mermory to read.

 

Even if the interest seems limited to know if it is SECAM or PAL (as both are 50hz) , but just by curiosity and because i just had a funny idea i could use in my next game... ;)

 

ok, got it. Well in that case it's more of theoretical issue. But reading the byte in memory works as long as the BIOS ROM and the VDP are aligned.

If you swap one of both, it will not work. Testing the VDP yourself will always work :)

 

From a "software" point of view both SECAM and PAL are identical, so don't think there's a way to test.

Edited by retroclouds
Link to comment
Share on other sites

This is the only PAL version of the CV BIOS that I have... if I recall correctly, someone posted it on the CV/ADAM Forum not to long ago. It is the "Press fire-button to bypass CV Title Screen" hack. If you don't press a fire-button, the title screen displays normally for 11 seconds. Hope this helps.

 

 

This is the only PAL version of the CV BIOS that I have... if I recall correctly, someone posted it on the CV/ADAM Forum not to long ago. It is the "Press fire-button to bypass CV Title Screen" hack. If you don't press a fire-button, the title screen displays normally for 11 seconds. Hope this helps.

It was me who modified this modded bios rom file. It was in a thread about modding by changing the OS in ColecoVision in order to skip the title screen, and I've decided to make the ROM file properly set as a PAL version by changing the value 60 for 50 at the address memory $0069, which is, based on the Coleco documentation, where the frequency value is hardcoded... and it's named AMERICA in the OS7 BIOS Complete listing, which is weird but... Anyway, mystery solved!

 

Thanks NIAD and newcoleco for the info, maybe simply Colecovision was sold unchanged everywhere and games were adapted, or Donkey Kong runs slower in Europe :)

Link to comment
Share on other sites

  • 11 months later...

In theory, CBS ColecoVision systems (PAL) should have this value at $0069 set to 50 for 50Hz, yes. I have no clue if it's really the case, but it should be because the official ColecoVision programming documentation declared that particular byte to be set that way : 60 for NTSC and 50 for PAL. Does it affect the hardware? not at all, but it may affect games if they use, for example, this byte to calculate time in seconds rather than simply the number of screen refresh (through NMI interupts).

 

Sorry for having missed this thread for so long and replying so late. The Europen ColecoVisions I have this byte set to to 50. And I take care in my libcvu library to use this byte in the music playback routine to get the speed correct.

 

Philipp

  • Like 1
Link to comment
Share on other sites

In theory, CBS ColecoVision systems (PAL) should have this value at $0069 set to 50 for 50Hz, yes. I have no clue if it's really the case, but it should be because the official ColecoVision programming documentation declared that particular byte to be set that way : 60 for NTSC and 50 for PAL. Does it affect the hardware? not at all, but it may affect games if they use, for example, this byte to calculate time in seconds rather than simply the number of screen refresh (through NMI interupts).

 

Sorry for having missed this thread for so long and replying so late. The Europen ColecoVisions I have this byte set to to 50. And I take care in my libcvu library to use this byte in the music playback routine to get the speed correct.

 

Philipp

Thank you so much. :) I'm using this byte in my games to keep speed equal

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