Les CPC+ (464+;6128+) posent problème sur certains points avec leur ancêtres CPC old.

Ces incompatibilités sont de 3 types:

1 – Problèmes de chargement.
2 – Problèmes de tests clavier qui ne répondent plus.
3 – Problèmes Vidéo (décalage des Rasters).

Voyons un petit peu plus en détail d’où viennent ces problèmes et comment les résoudre.

1 – Problèmes de chargement.

Les problèmes de chargement sont causés par la ROM Disque.

Ayant profité de son port cartouche, Amstrad y ont placé la ROM Disque dans la cartouche fournie avec les CPC+ (celle contenant aussi Burnin’ Rubber).

Comme il fallait ajouter quelques RSX (dont ùGame; ùJuego; ùSpiel), certaines routines de la ROM Disque ont été quelque peu décalées.

Par conséquent, tout programme ayant appelé directement les fameuses routines via un CALL ne tomberont pas sur la routine voulue.

Pour corriger le problème, rien de plus simple: il suffit de modifier le code de la routine de chargement en modifiant l’adresse d’appel aux routines Disque.

Mais il est aussi possible de simplement changer la cartouche pour une cartouche contenant l’ancienne ROM 🙂

De plus, comme le CPC+ accepte sans problème qu’on lui mette une ROM 7 sur le port extension, vous pourrez aussi y mettre l’ancienne ROM ce qui règlera le problème sans avoir à changer de cartouche.

Pour ceux qui voudraient modifier les loader (si ca n’a pas déjà été fait..), voici donc un tableau de correspondance entre les anciennes adresse de la ROM Disque et la nouvelle ROM disque

CPC oldCPC +
&C6E5&C6EC
&C91C&C94A
&C947&C971
&C95C&C988
&C976&C9D8
&D252&D349

Les jeux originaux ayants ce problème sont les suivants:

JEUÉDITEURPATCH ?
Asterix and the magic cauldronMelbourne houseOUI
BigglesMirrorsoftOUI
Blue warFree game blotOUI
Bob morane chevalerieInfogramesOUI
Fernandez must dieImageworksOUI
Geebee air rallyActivisionOUI
GuadalcanalActivisionOUI
Le casse du siecleAriolasoftOUI
PredatorActivision?
Shufflepuck cafeMicroidsOUI
Sigma 7DurellOUI
Star raiders 2Electric dreamsOUI
TextomatMicro applicationOUI
Turbo cupLoricielsOUI

Certains de ces jeux ont été patchés par Tom & Jerry et sont donc disponibles.

2 – Problèmes de tests clavier qui ne répondent plus.

Le problème le plus courant (environ 50 jeux), reste d’avoir un test clavier qui ne répond pas.

Si comme moi vous avez à l’époque tapé le listing Molecularr paru dans ACPC (coucou Fred), vous êtes alors forcément familier du problème et avez comme moi maudit l’auteur du dit jeu pour cette erreur inacceptable, d’autant plus quand aujourd’hui monsieur développe un jeu sur cpc+ (Espèce de troll tiens !!!).

Bref, Quelques jeux refuseront de s’occuper de ce que vous tapez au clavier.

Mais ce n’est pas tout. Comme sur cpc, Clavier et son sont liés, il arrivera aussi (surtout dans des démos) que la musique déconne ou que les vumètres (animations qui suivent la musique) restent immobiles

Mais quelle en est la raison ?

Sur CPC (old ou +), pour tester le clavier, il nous faut malheureusement passer par un composant qui se nomme le PPI.

Ce PPI sur CPC+ est émulé en hard. Et la source du problème vient de là…

La logique de l’utilisation du PPI veut que dans l’ordre:

-On place la valeur sur le port A
-On précise au PPI que c’est un Registre
-On valide

Mais sur CPC old, que l’on valide ou pas ne change rien. Le PPI accuse réception dans tous les cas. Hors et justement, certains ont fait l’économie de cette validation. Pas de chance, sur CPC+ la validation est OBLIGATOIRE !!!

C’est ce qui causera l’incompatibilité puisque sans validation, le PPI du CPC+ ne prendra pas en compte ce qui lui a été dit juste avant. La conséquence directe sera que vous ne testerez rien…

Une routine avec validation correspond à ce qui suit:

LD           BC,#F40E           ;Valeur #0E sur le port A du PPI
OUT        (C),C
LD           BC,#F6C0           ;C’est un Registre
OUT        (C),c
LD           BC,#F600            ;VALIDATION
OUT        (C),C

Sur une routine « buguée », il vous manquera donc les deux dernières instructions (notez qu’un LD C,0:OUT(C),C fera tout aussi bien l’affaire puisque B contient déjà #F6…)

Pour patcher ce bug, il vous suffira donc de trouver la routine de test (que ce soit clavier ou autre accès PPI) et de rajouter cette validation.

Nombreux jeux ont déjà été patchés, principalement par Tom & Jerry qui fût certainement l’un des premiers à s’y interesser.

Voici une liste des jeux originaux ayants ce « bug »:

JEUÉDITEURPATCH ?
Academy                 Crl                     ?
Afterburner             Activision              OUI
Agent orange            A’n’f                   ?
Agent X II              Mastertronic            ?
Arcade trivia quizz simulator Zeppelin                OUI
Batman the caped crusa. Ocean software          ?
Barbarian               Palace software         OUI
Bestial warrior         Dinamic                 ?
Colony                  Mastertronic            ?
Comando tracer          Dinamic                 OUI
Death stalker           Codemasters             OUI
Froggy                  R&B software            ?
HundraDinamic?
Into the eagle’s nest   Pandora                 ?
Joe blade 2             Players                 ?
Joe blade 3             Players                 ?
Jonny quest             Hitech                  OUI
Midnight resistance     Ocean                   ?
MolecularrACPC?
Monty on the runGremlin?
Mr Heli                 Firebird                ?
Mutant fortress         Players                 OUI
Myth                    System 3                OUI
Nigel’s Mansell grand prix Martech                 OUI
Peter pack-rat          Firebird                ?
Prison riot             Players                 OUI
Red heat                Ocean                   OUI
Rex                     Martech                 ?
Road runner             U.s.Gold                ?
Room ten                Crl                     ?
Sabotage                Zeppelin                ?
Sim city                Infogrames              ?
Slap shot               Anirog                  ?
Street sport basketball Epyx                    OUI
Super cycle             Epyx                    OUI
The blue crystal        Rainbow arts            ?
The sacred armour or AntiriadPalace software?
Tie break               Ocean                   OUI
The fury                Martech                 ?
Tornado low level       Vortex software         OUI
Marauder                Hewson                  ?
Histoire d’or           Cobra soft              ?

3 – Problèmes Vidéo (décalage des Rasters…):

Voici un dernier point relativement rare puisque n’intervenant que dans de rares jeux (mais beaucoup plus dans des démos) puisqu’il concerne l’aspect « écran ».

Le problème concerne les rasters et surtout les splits rasters. Sur certains jeux (les demos on s’en fout puisque sur cpc old vous avez déjà 4 CRTC différents causant potentiellement 3 chances sur 4 de voir une démo merder sur votre cpc old), sont utilisés ce qu’on appelle des rasters.Ces changements de couleurs demandent à être effectués de façon relativement précise.

Hors sur cpc+ comparativement aux cpc old, vous serez décalé environ d’1 NOP (ce qui à l’écran fait à peut-prêt 5mm).

Pas de soucis, ceci se règle en BASIC en changeant la longueur de la HBL !!!

Tapez donc:

OUT &BC00,3:OUT &BD00,&8C.

De même, pour tout développement actuel utilisant précisément des raster, mettre R3 à la valeur #8C vous assurera d’être compatible tout CPC de ce coté là !!!

Enfin et pour conclure, certains jeux mal codés (oui oui il y en a plein) du point de vue CRTC feront votre écran partir en vrille. (on pourra citer Led Storm et SkateWar et Octoplex qui sont à ma connaissance les seuls jeux posant problème)… Le CPC+ Possède un CRTC émulé, qui copie plus ou moins bien le CRTC 0 des CPC old. Hors pour une question de précision il se peut que la routine de Rupture utilisée dans le jeu fasse celui-ci merder complètement. La encore, il est possible de corriger le code.

Cet article a été rédigé par BDCIron (moi) sur la base d’un excellent article de Tom & Jerry sur son site (http://tj.gpa.free.fr/)(Rubrique « Programmer »=> »Articles »)