APPLICATIONSCOURS DE BIDOUILLAGE ★ PROBLÈMES DE COMPATIBILITÉ CPC/CPC PLUS|TOM ET JERRY/GPA) ★

Problèmes de compatibilité CPC/CPC Plus|Tom et Jerry/GPA)Applications Cours De Bidouillage

Valable pour CPC +

Récent possesseur d'un CPC nouvelle génération, quelle ne fût pas ma surprise en constatant qu'une partie non négligeable des jeux que je possède sur CPC ne daignaient pas tourner sur CPC+. Cela concerne même des «hits» comme Shufflepuck Café, Afterburner ou Nigel Mansell's Grand Prix.

Prenant mon courage à deux mains, je me suis mis à essayer «d'adapter» ces jeux récalcitrants afin de les utiliser sur le nouvel Amstrad.

Le petit topo que j'ai réalisé a pour objet de faire le point sur l'état actuel de mes trouvailles concernant les différences CPC/ CPC+, et le moyen de remédier aux erreurs pouvant en découler.
Vous trouverez quelques loaders BASIC permettant d'utiliser des programmes originaux sur disquette, les adeptes de l'éditeur de secteurs pourront également modifier quelques uns de leurs jeux grâce à des chaînes hexadécimales.

LES PROBLEMES LIES A LA ROM DISQUETTE

Comme vous avez dû le remarquer, l'une des principales nouveautés du CPC+ par rapport à son aine, c'est son port cartouche. Amstrad a jugé bon de fournir une partie de la ROM du CPC+, non pas en interne mais sur une cartouche, celle qui contient également Burnin' Rubber. Les programmeurs de chez Amstrad en ont profité pour retoucher la ROM disque, en partie pour pouvoir loger de nouvelles RSX dans le CPC+ (|JEU, |JUEGO, |GAME) et en partie pour l'optimiser (?).

Le résultat est que cette nouvelle version de la ROM disque est « décalée » par rapport à l'ancienne, ce qui se traduit par un plantage assuré lors d'un appel direct à une routine de cette ROM. Certaines parties ont même été complètement modifiées ! Il semblerait de plus que le FDC du CPC+ ( processeur gérant le lecteur de disquette ) soit légèrement buggé, dixit Longshot de Logon System, que je remercie au passage pour ses conseils éclairés.

Concrètement, cette différence de la ROM disque est la source de plantage de chargeurs de jeux, plus ou moins anciens, comme Strike Harrier Force, Biggle Geebee air rallye, Sigma 7, Fernandez must die, etc. Tous les loaders d'anciens jeux d'ERE Informatique et d'Infogrames sont également concernés.

Le remède le plus simple est de se procurer une cartouche contenant l'ancienne ROM du CPC, distribuée par Amstrad peu après la sortie du CPC+. Il est malheureusement assez difficile de la trouver actuellement. L'autre solution consiste à adapter ces chargeurs, en modifiant les adresses d'appels aux routines de la ROM disque qu'ils effectuent. Vous trouverez ci-dessous une table de conversion des principales adresses rencontrées. Cette modification ne s'avère hélas pas efficace à 100%, certains jeux continuant à planter, en particulier la plupart des anciens softs Infogrames (Les dieux de la mer, Bob Morane Espace) effectuant des re-chargements. Voici une petite table de conversion des adresses d'appel de la ROM disque les plus employées :

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

Petit conseil : travaillez sur une copie de sauvegarde de votre original si vous lancez dans l'adaptation de vos logiciels.

LES PROBLEMES LIES A L'EMULATION DU PPI

Autre source fréquence d'incompatibilité, l'émulation du PPI 8256. Pour doter son CPC+ de caractéristiques étendues par rapport à son aine, Amstrad n'a pas hésité à remplacer le Gate Array, le CRTC et le PPI 8255 du CPC par une puce nouvelle : l'ASIC. Même si cette puce est très puissante (sprites hard, 4096 couleurs, rupture, etc), elle n'en présente pas moins un petit défaut au niveau de l'émulation du test clavier du CPC. Dans la pratique, le clavier ne «répond» plus, aucune des touches sur lesquelles vous pouvez appuyer n'est prise en compte par l'ordinateur. Je ne vais pas rentrer dans les détails, sachez seulement qu'il est relativement simple d'adapter la plupart des routines de test du port clavier. Un exemple de début de «scanning clavier» est fourni ci-dessous :

Routine CPC           Routine CPC+
LD BC,&F40E           LD BC,&F40E
OUT (C),C             OUT (C),C
LD BC ,&F6C0          LD BC ,&F6C0
OUT (C),C             OUT (C),C
LD BC,&F795           LD C,&00
OUT (C),C             OUT (C),C
LD BC,&F795           OUT (C),C

Comme vous pouvez le constater, l'adaptation est minime, il suffit de faire un OUT &F600,&00 après le OUT &F600,&C0. La seule difficulté consiste à retrouver dans un jeu cette fameuse routine de lecture du port clavier. Une interface, style Hacker, est chaudement recommandée dans ce cas, car elle simplifie les recherches.

Attention ! A priori, l'ASIC est également sensible à l'ordre dans lequel vous transmettez des données dans les ports. Ainsi, la routine suivante sera incompatible sur CPC+, alors qu'elle tourne parfaitement sur CPC :

LD  BC,&F6C0
OUT (C),C
LD  C,&00
OUT (C),C
LD  BC,&F40E
OUT (C),C

Cette incompatibilité est, avec les problèmes liés à la ROM disc, la plus fréquemment rencontrée. Elle concerne aussi bien des jeux comme Barbarian, Super Cycle, Tornado low level, que des démos ou des fanzines sur disquettes.

PROBLEMES DIVERS

D'autres problèmes d'incompatibilité existent également, mais ils sont assez rares dans la pratique :

-Emulation du CRTC

Vous pourrez parfois avoir des problèmes d'affichage sur votre moniteur. L'écran n'est plus stable, une partie de l'écran est absente ou mal placée. Là c'est l'émulation du CRTC par l'ASIC qui est en cause. Si vous êtes un fan de démos, vous devez savoir qu'il existe plusieurs types de CRTC (en gros, le processeur gérant l'affichage de l'écran) sur le CPC, plus ou moins compatibles entre eux. L'ASIC semble avoir été conçu pour émuler un CRTC type 0 mais dans certains cas, il «réagit» différemment, Les techniques dites de «rupture d'écran» peuvent parfois poser des problèmes.

L'adaptation de programmes utilisant de tels procédés est plutôt complexe et longue. Heureusement, ce genre d'incompatibilité est exceptionnel pour des jeux. A ma connaissance, un seul programme d'éditeur est atteint par ce mal, il s'agit d'un budget sur cassette, Octoplex. Par contre, pas mal de démos (Terrific démo, par exemple) refusent de fonctionner sur CPC+ à cause de l'émulation CRTC.

-Programmes BASIC protégés

Toujours à titre d'information car, dans la pratique, les éditeurs n'utilisent jamais ce genre de bizarreries, des programmes BASIC modifiés dont le chargement s'opère comme un fichier binaire, plantent si on les démarre sur un CPC+. En général, ce sont des petits programmes trouvés dans les fanzines (Noix de Croco no4, par exemple), qui vous permettent de générer une telle protection. Pour l'instant, l'explication de ce phénomène m'échappe, la ROM BASIC semblant, en tout point, identique à celle d'un CPC 6128. Heureusement, il existe un palliatif : il suffit de charger le faux fichier binaire avec les routines système (&BC77, &BC83 et &BC7A) puis de le lancer par le CALL approprié.

-Bugs graphiques

Les possesseurs de CPC+ l'auront certainement remarqué, l'écran couleur du CPC nouvelle génération est plus large que les anciens modèles CTM 644. Cette différence de taille explique le fait que, sur certaines démos en overscan, on voit sur le côté droit de l'écran des choses que l'on ne devrait pas voir ! En général, il s'agit de bouts de lettres non effacées utilisées pour des scrollings. Cela n'est pas à proprement parler un bug, mais cela gâche un peu la qualité graphique de ces démos. Pour avoir un overscan couvrant de l'écran, il suffit de la définir comme suit, en assembleur :

LD BC,&BC01
OUT (C),C
LD BC,&BD31
OUT (C),C
LD BC,&BC02
OUT (C),C
LD BC,&BD32
OUT(C),C

Autre petite curiosité, si un programmeur a utilisé des rasters (changement de couleur d'une encre, géré en fonction du balayage de l'écran) ou des split-rasters (plusieurs changements de couleur sur une même ligne) dans son programme, ceux-ci seront décalés un peu vers la droite. Le décalage entre le CPC et le CPC+ peut être estimé à un NOP. Ceci ne concerne que des démos ou des intros.

Il y a une petite astuce, qui dans certains cas, peut éliminer ce petit bug, il suffit de décaler l'écran du CPC+ d'un caractère vers la droite, en tapant la séquence suivante sous BASIC :

OUT &BC00,2
OUT &BD00,45

Ou celle-ci en assembleur :

LD BC,&BC02
OUT(C),C
INC B
LD C,&2D
OUT (C),C

CHARGEURS BASIC ET CHAINES HEXADECIMALES

Vous trouverez à la suite de cet article des loaders pour les programmes originaux suivants :
Afterburner (Activision), Astérix and the magie cauldron (Melbourne House), Barbarian (Palace Software), Biggles (Mirrorsoft), Blue War (Free Game Blot), Bob Morane Chevalerie (Infogrames), Fernandez must die (Imageworks), Geebee air rally (Activision), Nigel Mansell's Grand Prix (Martech), Shufflepuck Café (Broderbund), Sigma 7 (Durell), Sky Démo 2 (démo de Strooki), Star Raiders II (Electric dreams), Street Sport Basketball (Epyx), Strike Harrier Force (Mirrorsoft), Super Cycle (Epyx), Textomat (le traitement de texte de Micro-Application), Turbo Cup (Loriciels).

Si vous maniez avec dextérité un éditeur de secteurs, voici quelques recherches à effectuer pour d'autres jeux. Un conseil : travaillez TOUJOURS avec une copie de sauvegarde de votre jeu, un malheur est si vite arrivé...

CONCLUSION

Les problèmes de compatibilité entre CPC et CPC+ ne sont pas si importants que l'on pourrait le croire. Il est en effet possible, comme nous venons de le voir, de remédier dans la majorité des cas aux petits bugs affectant certains jeux ou programmes, même si des connaissances de base en langage machine sont obligatoires. C'est l'occasion de vous y mettre !

Sachez que pour adapter certains jeux, il sera nécessaire de «déprotéger» leurs chargeurs. Que les pirates en herbe ne se gaussent pas trop, un certain nombre de loaders de déplombeurs sont également affectés par des problèmes de comptibilité (test clavier), et ces derniers sont également protégés !

Hervé MONCHATRE "TOM et JERRY" , CPCinfos n°46 , http://cpcrulez.fr

★ ANNÉE: ???
★ AUTEUR: Hervé MONCHATRE (TOM et JERRY/GPA)

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 285 millisecondes et consultée 1626 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.