Jump to content
IGNORED

Best ColecoVision emulator?


Max_Chatsworth

Recommended Posts

1 hour ago, mr_me said:

I use Mame, it runs better than Coolcv on my old computer.  Mame also does a good job emulating Adam and its tape/disk drives.

Hmmm...pardon my ignorance, but I didn't realize MAME emulated ColecoVision/Consoles. I thought it just emulated arcade machines?

Link to comment
Share on other sites

I use MAME for the original retail games because it supports "special" controlers like the Super Action Controller and the steering wheel.

 

Some games crash on MAME due to sound issues, for those I use the blueMSX core in RetroArch...

 

And for homebrews, especially the SGM titles, CoolCV works great!

Link to comment
Share on other sites

8 hours ago, kmg said:

Do you happen to remember which ones? I'd like to look into it, and at the very least file bug reports.

Any of the ones that require the [S]uper [G]ame [M]odule to be attached to the system. 

 

Here are some of the titles:

Booming Boy
Buck Rogers Super Game
Caverns Of Titan
Children Of The Night
Cold Blood
Danger Tower
Deep Dungeon Adventure
Dragon's Lair
Gauntlet
Ghostbusters
Heroes Arena
Jetpac
King And Balloon
Kings Valley
Mecha 8
QBIQS
Secret Of The Moai
Shmup
Shouganai
Stray Cat
Subroc Super Game
Thexder
Traffic Jam
Txupinazo
Uridium
Wizard Of Wor
Zaxxon Super Game
Zombie Incident

 

Spoiler
And here are some technical details about the RAM expansion.
(For Programmers)

Some of you programmers are well aware, ColecoVision work RAM is limited to 1KB, mapped from 6000h to 63FFh, and then mirrored to 6400h until 7FFFh (so 8 times).
The ColecoVision also includes 8KB of BIOS routines, mapped from 0000h to 1FFFh.

The SGM expands the work RAM from 1KB to 32KB as a maximum.

Here is how:

24KB can be mapped from 2000h to 7FFFh. When mapped, the internal 1 KB of RAM is no longer accessible. All legacy software still works normally under this mode.
However, since the SGM must also be compatible with the ADAM, the 24 KB of extra RAM is NOT enabled by default.
In order to use that expanded memory in a ColecoVision system, the programmer must first enable it.
But before doing so, you also need to make sure the module isn’t attached to an ADAM system, otherwise there may be a memory conflict with potential for damaging the ADAM and/or the SGM.
So the first step is to check if the 24 KB are already available. If they are, then you have an ADAM system, and the SGM1 expanded memory should NOT be enabled.
If no memory is found (in the 2000h-5FFF range), then it is a ColecoVision system and the expanded memory can be enabled.
To do so, set bit0 in I/O port 53h to 1, like this (in assembly): LD A,00000001b ; OUT(53h),A

You can also map 8 KB of RAM (for a total of 32 KB) to address range 0000h-1FFFh. However, when doing so, the ColecoVision BIOS will be disabled.
RAM and BIOS can be mapped back and forth, though. To map RAM to the BIOS area, simply set bit1 in I/O port 7Fh to “0”.
In order to keep full compatibility with ADAM systems, all bits in I/O port 7Fh must be set to specific values, though. Here is how you should set the port: if you want the BIOS, set the port to “0001111b”.
If you want RAM instead, set the port to “0001101b” (see example above on how to do that in Assembly). Make sure you respect those values, or your game may not work on ADAM systems.
Eduardo has planned to release complete ASM libraries for detecting ADAM, SGM, and then setting RAM appropriately.
Eduado at Opcode Games recommend using those libraries, so that we can eliminate the risk of enabling the SGM expanded RAM on ADAM systems.

Here are the steps required to initialize a Super Game Module game:
(Coleco brand.)

1) When initializing your game, use RAM in the 6000h-63FFh range, because the SGM expanded RAM is disabled by default, and you must make sure it isn’t an ADAM before enabling it.

2) Run some memory tests to establish if RAM is already present in the 2000h-5FFFh. If it is, then you have an ADAM system. In that case, DO NOT enable the expanded RAM. Go to step 4

3) If no memory is found, then we have a ColecoVision system, and the SGM expanded RAM can be enabled. Do so by setting I/O port 53h to 01h.
You shouldn’t disable expanded RAM after that (i.e., do not access I/O port 53h again after initializing it).

4) Now that you know that 24 KB of RAM is available, your game can start using it.

5) Optionally you can replace the BIOS with RAM, using I/O port 7Fh. Make sure you only use the two values described above (‘00001111b’, ‘00001101b’), or your game may not work on an ADAM system.

 

 

Link to comment
Share on other sites

3 hours ago, Trebor said:

Any of the ones that require the [S]uper [G]ame [M]odule to be attached to the system. 

 

Here are some of the titles:

Booming Boy
Buck Rogers Super Game
Caverns Of Titan
Children Of The Night
Cold Blood
Danger Tower
Deep Dungeon Adventure
Dragon's Lair
Gauntlet
Ghostbusters
Heroes Arena
Jetpac
King And Balloon
Kings Valley
Mecha 8
QBIQS
Secret Of The Moai
Shmup
Shouganai
Stray Cat
Subroc Super Game
Thexder
Traffic Jam
Txupinazo
Uridium
Wizard Of Wor
Zaxxon Super Game
Zombie Incident

 

  Reveal hidden contents
And here are some technical details about the RAM expansion.
(For Programmers)

Some of you programmers are well aware, ColecoVision work RAM is limited to 1KB, mapped from 6000h to 63FFh, and then mirrored to 6400h until 7FFFh (so 8 times).
The ColecoVision also includes 8KB of BIOS routines, mapped from 0000h to 1FFFh.

The SGM expands the work RAM from 1KB to 32KB as a maximum.

Here is how:

24KB can be mapped from 2000h to 7FFFh. When mapped, the internal 1 KB of RAM is no longer accessible. All legacy software still works normally under this mode.
However, since the SGM must also be compatible with the ADAM, the 24 KB of extra RAM is NOT enabled by default.
In order to use that expanded memory in a ColecoVision system, the programmer must first enable it.
But before doing so, you also need to make sure the module isn’t attached to an ADAM system, otherwise there may be a memory conflict with potential for damaging the ADAM and/or the SGM.
So the first step is to check if the 24 KB are already available. If they are, then you have an ADAM system, and the SGM1 expanded memory should NOT be enabled.
If no memory is found (in the 2000h-5FFF range), then it is a ColecoVision system and the expanded memory can be enabled.
To do so, set bit0 in I/O port 53h to 1, like this (in assembly): LD A,00000001b ; OUT(53h),A

You can also map 8 KB of RAM (for a total of 32 KB) to address range 0000h-1FFFh. However, when doing so, the ColecoVision BIOS will be disabled.
RAM and BIOS can be mapped back and forth, though. To map RAM to the BIOS area, simply set bit1 in I/O port 7Fh to “0”.
In order to keep full compatibility with ADAM systems, all bits in I/O port 7Fh must be set to specific values, though. Here is how you should set the port: if you want the BIOS, set the port to “0001111b”.
If you want RAM instead, set the port to “0001101b” (see example above on how to do that in Assembly). Make sure you respect those values, or your game may not work on ADAM systems.
Eduardo has planned to release complete ASM libraries for detecting ADAM, SGM, and then setting RAM appropriately.
Eduado at Opcode Games recommend using those libraries, so that we can eliminate the risk of enabling the SGM expanded RAM on ADAM systems.

Here are the steps required to initialize a Super Game Module game:
(Coleco brand.)

1) When initializing your game, use RAM in the 6000h-63FFh range, because the SGM expanded RAM is disabled by default, and you must make sure it isn’t an ADAM before enabling it.

2) Run some memory tests to establish if RAM is already present in the 2000h-5FFFh. If it is, then you have an ADAM system. In that case, DO NOT enable the expanded RAM. Go to step 4

3) If no memory is found, then we have a ColecoVision system, and the SGM expanded RAM can be enabled. Do so by setting I/O port 53h to 01h.
You shouldn’t disable expanded RAM after that (i.e., do not access I/O port 53h again after initializing it).

4) Now that you know that 24 KB of RAM is available, your game can start using it.

5) Optionally you can replace the BIOS with RAM, using I/O port 7Fh. Make sure you only use the two values described above (‘00001111b’, ‘00001101b’), or your game may not work on an ADAM system.

 

 

Trebor, are you aware of any rom packs for the Colecovision similar to your 7800 collection?

Edited by Atari Nut
Link to comment
Share on other sites

16 hours ago, kmg said:

Do you happen to remember which ones? I'd like to look into it, and at the very least file bug reports.

 

Donkey Kong Jr. - Crashes when an enemy hits you

(Same with Super DK Jr.)

 

The Heist - Resets to title screen when it tries to start Level 1

 

Rock 'N Rope - Plays for a few seconds but freezes for no reason

 

Sewer Sam - Crashes when it tries to play a sampled sound when Sam falls in the manhole

 

Squish 'Em Sam - Also crashes when you touch the enemy, constant high pitch noise

  • Thanks 1
Link to comment
Share on other sites

44 minutes ago, MrMaddog said:

 

Donkey Kong Jr. - Crashes when an enemy hits you

(Same with Super DK Jr.)

 

The Heist - Resets to title screen when it tries to start Level 1

 

Rock 'N Rope - Plays for a few seconds but freezes for no reason

 

Sewer Sam - Crashes when it tries to play a sampled sound when Sam falls in the manhole

 

Squish 'Em Sam - Also crashes when you touch the enemy, constant high pitch noise

 

Thanks! I tried these, but on my end they all look like they're working. Are you using an older version of MAME? The Heist was fixed in MAME 0.227 (it's one of those games that is sensitive to RAM contents at power up, aka poorly programmed). As for the rest, maybe there was a change to the sound chip code that got them working at some point?

 

9 hours ago, Trebor said:

Any of the ones that require the [S]uper [G]ame [M]odule to be attached to the system. 

 

Yeah, it looks like there's no emulation of the expansion module interface the SGM connects to. I guess that makes sense, since it was originally only used for the 2600 and Adam expansion modules. Still, maybe a subset of the functionality could be added to support the SGM.

Link to comment
Share on other sites

On 1/7/2023 at 5:39 PM, kmg said:

Yeah, it looks like there's no emulation of the expansion module interface the SGM connects to. I guess that makes sense, since it was originally only used for the 2600 and Adam expansion modules. Still, maybe a subset of the functionality could be added to support the SGM.

The ColecoVision game Turbo used the Expansion Module #2 Driving Controller, which could also be used for the ColecoVision titles: Bump 'n' Jump, Dukes of Hazzard, and Pitstop.

On 1/7/2023 at 11:43 AM, Atari Nut said:

Trebor, are you aware of any rom packs for the Colecovision similar to your 7800 collection?

I am aware of none that are publicly available for homebrews, hacks, demos, and prototypes.  Ikrananka did a great job with the retail line-up though.

  • Like 1
Link to comment
Share on other sites

6 hours ago, Trebor said:

The ColecoVision game Turbo used the Expansion Module #2 Driving Controller, which could also be used for the ColecoVision titles: Bump 'n' Jump, Dukes of Hazzard, and Pitstop.

Despite the Expansion Module #2 name the driving controller only used a regular joystick port though. The Expansion Module Interface on the other hand is the 60-pin expansion connector. At least that's what's written on the cover door :)

 

Thanks for pointing out the missing SGM compatibility in MAME. I have a patch I'll submit after I do a little more testing and cleanup. Hopefully they accept it!

  • Like 1
Link to comment
Share on other sites

On 1/7/2023 at 5:39 PM, kmg said:

 

Thanks! I tried these, but on my end they all look like they're working. Are you using an older version of MAME? The Heist was fixed in MAME 0.227 (it's one of those games that is sensitive to RAM contents at power up, aka poorly programmed). As for the rest, maybe there was a change to the sound chip code that got them working at some point?

 

 

Ok, I was using an older version then...

 

I don't like to "upgrade" emulators, especially MAME, because it breaks shader features and also requires a whole new ROM set I have to spend days downloading.

  • Like 1
Link to comment
Share on other sites

16 hours ago, MrMaddog said:

I don't like to "upgrade" emulators, especially MAME, because it breaks shader features and also requires a whole new ROM set I have to spend days downloading.

MAME is the worst offender on that front.   I spend some time each winter upgrading all my emulators if they had new releases,  usually don't have issues.   But many times I'll skip doing Mame because I just don't want to deal with it

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