Jump to content



0

50hz Coleco BIOS?


9 replies to this topic

#1 nanochess OFFLINE  

nanochess

    Star Raider

  • 64 posts
  • Location:Mexico, Mexico

Posted Tue Aug 30, 2011 4:02 PM

Hi. Does anyone have a dump of a Colecovision ROM for Europe 50hz? (BIOS location 0069H = 32H), every ROM site has only the 60 hz version.
Just wondering if it exists. Thanks in advance.

#2 NIAD OFFLINE  

NIAD

    Stargunner

  • 1,584 posts
  • Location:Chicago Suburb

Posted Tue Aug 30, 2011 6:46 PM

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.

Attached Files



#3 newcoleco OFFLINE  

newcoleco

    Stargunner

  • 1,053 posts

Posted Wed Aug 31, 2011 7:31 AM

View PostNIAD, on Tue Aug 30, 2011 6:46 PM, said:

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!

#4 5-11under OFFLINE  

5-11under

    Stargunner

  • 1,339 posts
  • Location:Ontario, Canada

Posted Wed Aug 31, 2011 7:50 AM

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?

#5 newcoleco OFFLINE  

newcoleco

    Stargunner

  • 1,053 posts

Posted Wed Aug 31, 2011 2:06 PM

View Post5-11under, on Wed Aug 31, 2011 7:50 AM, said:

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

#6 youki OFFLINE  

youki

    Stargunner

  • 1,077 posts

Posted Thu Sep 1, 2011 2:00 AM

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?

#7 retroclouds OFFLINE  

retroclouds

    Stargunner

  • 1,096 posts
  • Location:Germany

Posted Thu Sep 1, 2011 4:38 AM

View Postyouki, on Thu Sep 1, 2011 2:00 AM, said:

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.retroclou...iage/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, Thu Sep 1, 2011 4:56 AM.


#8 youki OFFLINE  

youki

    Stargunner

  • 1,077 posts

Posted Thu Sep 1, 2011 4:52 AM

Quote

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

#9 retroclouds OFFLINE  

retroclouds

    Stargunner

  • 1,096 posts
  • Location:Germany

Posted Thu Sep 1, 2011 4:59 AM

View Postyouki, on Thu Sep 1, 2011 4:52 AM, said:

Quote

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, Thu Sep 1, 2011 5:00 AM.


#10 nanochess OFFLINE  

nanochess

    Star Raider

  • 64 posts
  • Location:Mexico, Mexico

Posted Thu Sep 1, 2011 9:16 AM

View PostNIAD, on Tue Aug 30, 2011 6:46 PM, said:

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.


View Postnewcoleco, on Wed Aug 31, 2011 7:31 AM, said:

View PostNIAD, on Tue Aug 30, 2011 6:46 PM, said:

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 :)




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users