ColinPitrat / caprice32

An emulator of the Amstrad CPC 8bit home computer range.
GNU General Public License v2.0
146 stars 32 forks source link

Incompatibility with some CRTC types (0 to 4) #239

Open FloLore opened 1 year ago

FloLore commented 1 year ago

Hi ColinPitrat,

Glad to see your caprice32 getting better and better! I identified a rather annoying problem on two original games (Thunder Blade & Bonanza Bros.) with the display scrolling without the image being stable, on the menu and during the game. It seems to be a problem of CRTC, incompatibility on some. How can we correct this mistake? Could we with a command line option, or in the "cap32.cfg" file, be able to change the type of CRTC from 0 to 4, depending on the incompatibility encountered?

FloLore commented 1 year ago

on the "CPC power" links of "bonanza bros" and "thunder blade", it would be mentioned that there is a compatibility problem with certain emulators on some CRTC registers (R4 and/or R5).

https://www.cpc-power.com/index.php?page=detail&onglet=dumps&num=454 https://www.cpc-power.com/index.php?page=detail&onglet=dumps&num=2224

This incompatibility leads to a constant jump (scanning) of the image...

ColinPitrat commented 1 year ago

What makes you think this is the CRTC type which us the problem?

Looking at https://www.cpcwiki.eu/index.php/CRTC

The main differences seem to be:

ColinPitrat commented 1 year ago

The "Horizontal and Vertical Sync (R3)" section might be the problem

FloLore commented 1 year ago

For thunder blade, Nicholas CAMPBELL made a version (corrected CRTC) with trainer by modifying the values of some CRTC registers (R4 and R7) to increase compatibility with emulators and some monitors...

For Bonanza bros, I read on the game sheet (link above) that by changing the value of register 4 of the CRTC (&2B to &2C), the problem would be solved...

Maybe changing CRTC won't solve anything... In fact, this vertical synchronization problem for these two games is original. On real CPCs, not in emulation, the problem is present but with the potentiometer of the monitor to adjust the "v-hold" signal" we could solve this problem manually... I think that these games force the frame rate to 60hz instead of 50hz? I think if the emulator also allows choosing the length of the V-hold signal with flexible horizontal sync ?

In the hope that a solution can be found to be able to make these games in their original version functional :)