Cours de déplombage 10.2



Ecran


Disk : Gdf10_2.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
 B A$0800 (002048) L$14FB (005371) 022 ADVANCED DEMUFFIN 1.1
 A A$0000 (000000) L$0A19 (002585) 012 HELLO
 B A$0800 (002048) L$1800 (006144) 026 LOCKSMITH DEMUFFIN
 T A$0000 (000000) L$B900 (047360) 185 T.COURS 10 HOLOBYTE
 T A$0000 (000000) L$5500 (021760) 085 T.COURS 10.2...2EME FICHIER
 T A$0000 (000000) L$1600 (005632) 022 T.DEPLOMBAGES COOKBOOK
 T A$0000 (000000) L$0A00 (002560) 010 T.GODFATHER RACONTE...
 T A$0000 (000000) L$1900 (006400) 025 T.INTRODUCTION
 T A$0000 (000000) L$0600 (001536) 006 T.LES PROGRAMMES DE CE DISK
 T A$0000 (000000) L$2000 (008192) 032 T.INFORMATIONS COURS
 T A$0000 (000000) L$0F00 (003840) 015 T.LES COMPLEMENTS A CE COURS
 B A$0901 (002305) L$159E (005534) 023 EPYX DIAGNOSTIC.S
 B A$8000 (032768) L$0301 (000769) 005 EPYX DIAGNOSTIC
 T A$0000 (000000) L$1100 (004352) 017 T.COURS 10.2...3EME FICHIER
 T A$0000 (000000) L$0800 (002048) 008 LET.ELEVES COURS 10

This catalog contains 15 files. 0 were DELETED.
----------------------------------------------------------------------


Floppy
DOS 3.3
Download Cours GDF 10.2 rev 1.20 (gzipped)
Floppy
DOS 3.3
Download Cours GDF 10.2 rev 1.00 Copperfield (gzipped)


Sommaire


Lien Article
Voir Introduction.
Voir Cours 10.2 Holobyte.
Voir Cours 10.2 seconde partie.
Voir Cours 10.2 troisième partie.
Voir Les programmes de ce disk.
Voir Lettre élèves.
Voir Déplombages cookbook.
Voir Les compléments à ce cours.
Voir Informations cours.

hr cours GDF

Introduction.


-------------------------------------------------------------------------------
COURS 10 (SUITE) INTRODUCTION                          1er Mai 1988 - Godfather
-------------------------------------------------------------------------------
Révision 1.20


Salut et salut tout le monde,

        Vous voici de retour du cours 10 sur la protection Epyx ?.. oui ?..
        Impeccable.. vous etes peut etre meme allés faire un tour du coté
        du Epyx boot maker pendant que vous y étiez.. ou du coté du Epyx Copy
        (dont on retrouvera une adaptation ici meme!).. oui ?.. non ?
        Vous avez peut etre meme fait un don aux restos du coeur..?. non ?
        Ah! Le début on s'en fout, mais ne pas faire ca, c'est grave !..
        Bon.. passons !.. je commence dans le serieux..

        Le cours 10 est celui qui s'est le mieux distribué et sans contexte,
        si ce n'est pas le plus long ni (bien au contraire) le plus complexe,
        néanmoins, c'est celui que j'ai le plus souvent révisé.. amélioré à
        droite à gauche.. bref, meme s'il n'a pas le numéro de version le
        plus élevé, c'est jusqu'à présent celui qui m'a causé le plus de boulot
        sans parler des godfather's products (j'ai mis 5 mois avant d'aboutir
        à une version potable du Epyx boot maker !).. Bref!.. duuuuur !

        De plus, la protection Epyx n'est pas du tout une protection
        compliquée.. ah! me dites pas ca !.. je viens de terminer de me bouffer
        la nouvelle protection eoa (qu'on va avoir sur le dos encore 4 ans,
        comme avec la protection précédente basée sur le génial codage mcode!.)
        et Epyx à coté, c'est ca !.. (ah!, zut!.. vous avez pas l'image..
        bon, tant pis..).

        Alors pourquoi on en parle tant de ce cours.. pourquoi est ce le cours
        le plus complémenté, et pourquoi encore est ce que je reviens pour
        vous en parler ?..

        Ma foi! la raison est très simple : ON RETROUVE CE PLOMBAGE PARTOUT !..

        Je ne sais pas trop ce qui se passe en ce début d'année.. le plombeur
        de chez Epyx (je parle du mec, Bill, pas du programme !), a été vendu
        semble-t-il à d'autres éditeurs, et comme elle apporte trois avantages
        indéniables et relativement rares à savoir :

         - On peut plomber un disk très rapidement (voir le Epyx Copy !)
           et ca ne coute rien, si ce n'est ce qu'on paye à l'auteur de la
           protection !.. (plombage facile, si on sait comment !)
         - La copie ainsi obtenue est totalement incopiable !..
           (incopiable, sauf quand on sait comment!)
         - Le boot Epyx en lui meme est super pratique (principe du pseudo_cat
           Epyx, que l'on retrouve dans les fboots, ou dans le nouveau
           plombage Eoa dont je vous parlais plus haut, par exemple!..)
           et permet d'éviter le dos très facilement.

        La raison de mon retour (dans cette suite du cours 10) est la suivante:

                La protection décrite dans le cours a évoluée..
                A partir d'un boot 3.3, recemment elle vient de se greffer
                sur un prodos (pour world games de chez Epyx)
                Et maintenant, retour au boot 3.3, disparition du E-Boot
                infernal, mais le tout publié par un autre éditeur, à savoir :

                   SPECTRUM HOLOBYTE qui publie : DONDRA the new Beginning

                C'est un super soft !.. (jeu d'aventure DEMENTIEL en 6 faces!)
                Et l'on y trouve, à peu de choses près, la meme protection que
                celle d'Epyx, simplement un peu plus évoluée par rapport aux
                premiers plombages epyx..

        Deux solutions à cette découverte de la protection Epyx chez
        un autre éditeur..

        1. Le plombeur est un traitre..et s'est fait du fric ailleurs!
        2. Le plombage Epyx a été décortiqué par un mec de chez Holobyte, qui a
           ensuite pondu un plombeur similaire, un peu plus évolué.. (comme
           on l'a fait nous mm avec le copieur Epyx 1.60).

        Je penche perso pour la première solution.. peut etre que je me trompe.
        M'enfin.. donc, on a vu ce plombage autre part, et si c'est bien
        en effet moi qui ait raison, on devrait voir réapparaitre cette
        protection chez d'autres éditeurs occasionnels 'sans protections'.
        (et qui dit 'éditeurs occasionnels' dit 'super softs préparés
        pendant très longtemps!'.. comprendo?)

        Seulement le probleme est le suivant..
        Je vous ai fait un cours sur la protection Epyx au moment des 3 ou 4
        premiers, et ensuite, la protection a évoluée (voir entre autre
        World Games sous proDos).. seulement, peut d'entre vous connaissent
        suffisament bien le language machine pour pouvoir se ballader
        dans n'importe quelle évolution de cette protection, très facilement.
        Alors qu'est ce que je fait ?. mon but premier n'étant pas de gagner
        du fric comme une bete, mais de faire avancer le schmillblick, c'est
        à dire de faire avancer le cracking dans notre beau pays !..

        Alors voici la "suite" du cours 10.. que l'on ne pourrait considerer
        que comme un cours à part entière (pas comme une révision!), et
        qui va essayer de décortiquer encore plus ce plombage et les
        techniques de déplombage et de copie d'originaux (de plombage)
        pour que vous puissiez sans probleme et en en connaissant à peine
        plus en language machine (si vous voulez vous bouffer des bouquins
        sur le language machine, faites le!.. je vous conseille Assembly
        Lines, en version francaise! mais vous aurez bcp de boulot !)..
        pour que vous puissez - disais-je - vous ADAPTER à n'importe quelle
        évolution de cette protection !.. ok?.. on est parti!..

        Sautez vite sur le fichier de cours !.. et good luck captain goodnight!

                                              Amicalement (et Erotiquement), G.
-------------------------------------------------------------------------------


Retour sommaire

hr cours GDF

Cours 10.2 Holobyte.


===============================================================================
COURS 10 (SUITE) : La protection EPYX a bien évoluée cette année !..       Gdf.
===============================================================================
Révision 1.20                                          Update : 1er Mai 1988 !!


Salut et salut,

        Au début.. il y avait la terre. ensuite est venu l'homme.. et de
        l'homme est né la femme. la femme : la blonde, la brune, la rousse,
        la vraie blonde, la vraie rousse..etc.. et ainsi naquit la
        civilisation : par une série d'accouplements bestiaux sur toute
        la terre..

        Mais je ne suis pas là pour vous parler de ca..
        Je m'attaque tout de suite au cours : le plombage d'Epyx.. continued!

Le plan de ce cours...
-------------------------------------------------------------------------------
1. Demuffin : on savait comment faire depuis le premier cours !
2. Trouver la vérification (techniques générales, puis pour ce cas précis!)
3. Comprendre le but de la vérification (une désynchro, c'est pas beau !)
4. Comprendre la vérification.
5. L'evolution passée de ce plombage. (de Championship Wrestling à Dondra!)
6. Décortiquons chaque partie des 4 générations de ce plombage Epyx !
7. Comment pourrait encore évoluer cette protection (boot,post_lecture..)
8. Obtenir une copie de l'original adaptée à la protection
9. La programmation du Epyx Copy (pb : la protection change!)

Et je commence tout de suite...

DEMUFFIN : On savait comment faire depuis le cours 1
-------------------------------------------------------------------------------
La protection "format" du disk a toujours été, et sera certainement toujours la
meme à savoir un format "patched" en FF FF EB. (pour plus de détails sur un
tel plombage, re-regardez le cours 6; et pour plus de détails sur les méthodes
de demuffin, re-regardez les cours 1 (patched sans rien chercer) et 2 (cas du
boot 3.3). De ce coté là, pas de probleme.. pour faire un demuffin de ces
originaux (c'est à dire, je le rappelle, une copie (qui ne boote pas!) au
format "locksmith"), il suffit de taper un CALL-151 puis B942:18 puis BRUN
ADVANCED DEMUFFIN 1.1, ou encore plus simple - dans le cas des disks en
boot 3.3 (c'est à dire tous, meme celui que l'on va voir ici, sauf Destroyer
et World Games) - il suffit de faire un BRUN ADVANCED DEMUFFIN BOOT TRACER 1.2.
(comme quoi les premiers cours ne sont pas inutiles.. donnant peu de détails,
mais traitant de protections format que l'on croise très souvent! because
pas cher..). Bref, avec le cours 10 et tout ca, je vous crois sur parole..
vous avez entre les mains (et peut etre meme l'aviez vous entre les mains
avant de commencer la lecture de ce cours_suite!), une copie demuffin du soft
original donné ici. (le fameux soft de chez Spectrum HoloByte 1988).
Ceci étant cela, je passe donc au reste c'est à dire à la suite.. allez, zou!


VERIFICATION : Trouver la vérification en ram et sur le disk - Tech_classiques.
-------------------------------------------------------------------------------
Le but du jeu est simple.. on doit trouver ici une vérification que l'on
connait déjà !.. dans le précédent cours 10, on avait trouvé la vérif à partir
de rien.. en boot tracant. Ensuite, on aurait pu (mais c'était sous boot 3.3,
alors, le connaissant bien, on n'a pas eu à le faire) à partir de certains
octets de la vérif, en les scannant sur le disk demuffinisé (copy II+ 5.x,
option Sector Editor, Scan for Byte Hexa), retrouver ces octets, donc la vérif
sur le disk original, pour ensuite la comprendre et l'annuler.

En guise de remarque, je dirais que, si le boot se compliquait enormement, et
que l'on n'avait aucune connaissance de la vérif, on aurait pu la chercher sur
le disk suite à plusieurs indices (des erreurs dans le plombage, puisqu'ils
pourraient nous permettre de retrouver rapidement la vérif ?) :

        1er indice pour traquer la (une) vérif : LA COPIE DEMUFFIN REBOOTE !
        ----------
        On pourrait se mettre à chercher les octets formant l'adresse de la
        routine de boot soit 00 C6 (pour $C600). Essayer $C600G, vous
        comprendrez aussitot. On devrait les trouver, logiquement, car
        il y a de fortes chances que le plombeur passe par là pour
        faire son reboot après une vérification qui aurait détecté la présence
        d'une copie dans le drive!.. (pour rebooter, on doit faire un
        JMP $C600 (ou autre JMP ($Adresse) avec 00 C6 mis à l'adresse donnée)).
        Ceci vous servira pour le cas général où une copie demuffin reboote à
        cause d'une vérif, ce qui est très fréquent en déplombage :
        Il faut chercher en premier lieu pour trouver la vérif les octets
        suivants : 00 C6 à cause du reboot on l'a vu, ou encore FC FF.
        (car un JMP ($FFFC) a le meme effet)..
        On me dira "mais il y a bien d'autres points d'entrée pour faire
        un reboot galactique", c'est vrai, mais ceci sont les deux les plus
        utilisés. Le premier parce que c'est la routine principale de boot,
        et le second parce que tous les bons programmeurs le connaissent.
        Une fois que vous auriez ainsi trouvé le bon bout de programme qui
        occasionne le reboot après la vérif, voius devriez avoir la vérif avant
        ce bout de prg.      =====                                        =====
        Une fois souligné ainsi, on se rend compte que je viens de dire une
        évidence. M'enfin.. comprendo?.. bon! ca c'était pour le cas général,
        ca servira plus tard!..
        Dans le cas qui nous concerne, on étudiera plus tard comment on
        cherche et ce que l'on obtient.. ici, c'est le cas général.

        2eme indice pour traquer la (une) vérif : LES COMMUTATEURS GRILLE PAIN
        -----------
        On pourrait se mettre à chercher des adressages des commutateurs drive,
        puisque la vérif n'est en fait qu'une lecture bizzaroiide de nibbles.
        Le commutateur que j'appelerais "Accès_Nibble" mais qui s'appelle en
        fait "Q6L", ce qui ne veut pas dire grand chose au néophyte, est
        comme tous les commutateurs, une adresse, à savoir l'adresse : $C0EC.
        D'accord ?.. et en théorie, on doit trouver - dans chaque routine
        d'accès disk - un accès à cette adresse.. absolu, ou indexé.
        Absolu, c'est à dire que la première chose à faire (on suppose en
        premier que l'adressage est absolu), est de chercher les octet : EC C0
        mais on les trouve bien rarement. (sauf sur les fast boot en général)
        ou (seconde possibilité) indexé. indexé c'est à dire qu'au lieu de
        faire un LDA $C0EC pour lire un bit de nibble (c'est très compliqué!)
        et le mettre dans A, on pourrait faire LDA $C000,X avec X=EC. Ok?
        Seulement, c'est bien rarement le cas.. en général, on fait un
        LDA $C08C,X.. X contenant #$60, soit le numéro du slot (lu dés le
        boot, et pour les boot 3.3, mis en $2B) multiplié par 16 (#$10) !..
        (sauf dans le dernier eoa qui nous offre quelques LDA $C054,X !..
        $C054, on l'a vu dans le cours 5 je crois, est un commutateur de
        la page graphique, mais X compensant, ca n'avait - oh grand dieu -
        aucun effet sur l'affichage graphique!.. ca formait l'adresse $C0EC!
        et on trouvait ca au milieu de la routine read!)..
        Donc, ici.. seconde méthode "classique" pour trouver une vérif disk.
        Il suffit de chercher d'abord les octets 8C C0 (on a plus de chances)
        puis enfin, en cas d'echec ,  les octets EC C0. et là, on devrait
        se trouver au coeur de la vérif. Il suffit alors de remonter un peu
        dans le programme (sur le secteur où l'on trouve ces octets) pour
        trouver le point d'entrée de la vérif..

Maintenant que j'ai bien traité le cas général (ouf! c'est terminé!),
je vous parle du cas précis de cette protection Epyx.. on la connait, alors
plus besoin de fantasmer sur un ou deux octets qu'on pourrait trouver quinze
fois par face et donc sur quinze routines à décortiquer, pour savoir si on
est tombé sur la bonne.. comment on fait ?.. on en recherche sur le disk
demuffinisé (je vais dire 'le disk locksmith', ok?) les octets les plus
caractéristiques.

De toutes facons, il faut remarque ceci : LA VERIF S'EST TOUJOURS TROUVEE
SUR LA PISTE $00 DES ORIGINAUX !.. (c'est pas comme la protection activision
de cette année, dont je ferais bientot un cours, qui planque toujours leur
vérif en piste $22 en se disant sans doute que le pirate devra parcourir tout
le disque secteur par secteur à la loupe, avant de trouver la vérif à la fin!)
Le fait de savoir qu'elle était toujours en piste $00 (mieux! presque toujours
en secteur $5, sauf dans le cas du ProDOS où elle se retrouve casée en secteur
numéro $E), nous aide déjà beaucoup.. mais étudions un peu la vérif, pour
voir ce qui en ressort, ce qui en est caractéristique.. ok?..
Je passe à cette étude évoluée, et à la fin du cours, quand on passerra au
crack de l'original vu dans ce cours (la pratique de ce cours de techniques
générales),  on verra le comment faire ss pb.. ok?
(je sais pas pourquoi je vous pose encore et toujours des questions,
vous pouvez pas me répondre!)..


VERIFICATION : Le but du jeu (ca veut dire quoi "désynchro", messieur ?)
-------------------------------------------------------------------------------
Le but du jeu, je vous en parlais dans le cours 10, est d'annuler la vérif'
(bout de programme en language machine) qui analyse un truc sur le disk
qui contient le programme (dans le drive) pour voir si c'est une copie ou
au contraire, un original tout beau tout cher. Alors comment peut il
reconnaitre si c'est un original ou pas ? comment peut il distinguer une
copie et son original alors que les programmes de copie sont si évolués
de nos jours ?.. ma foi!!.. je vous l'avait dit : "c'est une désynchro.. et
un désynchro, c'est incopiable !..".
Ca c'est une belle phrase, mais pour un néophyte, ca ne veut pas dire grand
chose.. en fait, ca ne peut lui servir qu'à le répéter à des mecs qui n'auront
peut etre pas plus de possibilités de comprendre ca que lui meme !
Bon.. alors je vais imager. Un désynchro, c'est une petite bete. un truc qui
a été écrit d'une manière bien spéciale sur un secteur donné (que l'on citera
plus loin comme "le secteur de la désynchro" à ne pas confondre avec le
secteur de la vérification disk.. en fait, le secteur de la désynchro,
c'est le secteur du plombage, et le secteur de la vérif, c'est le secteur
relatif au déplombage !.. comprendo amigo?).
Ceux qui ont lu le cours 7 (partie plombage/déplombage, suite au cours 6 !),
comprendront comment on peut concevoir une telle vérification, en pratique!
Ici, je vais pas me lancer dans des développement relatifs au plombage, ce qui
serait bien plus long et compliqué que de parler de déplombage, (c'est
pourtant ce qu'a tenté de faire kristo dans le epyx copy).. mais rappelez vous
de ceci : une désynchro, c'est une petite bete.. de plus, une petite bete
incopiable avec les outils classiques (copieurs apple non-spécialisés)..
et voila et voila.. donc, je vous l'assure, sans connaitre la gueule de la
petite bete, aucune copie n'est possible avec aucun nibble copieur. et voila!
et voila!.. la suite garcon svp!


VERIFICATION : Comprendre la vérif _ Points caractéristiques _ "Variables"
-------------------------------------------------------------------------------
La vérification se compose TOUJOURS de plusieurs parties.. certaines que l'on
retrouve toujours, et d'autres un peu moins indispensables.. J'ai indiqué ici
bas les routines facultatives, à savoir que toutes les autres sont indispensa-
bles. ok?.. allons y..

        1. avant le début de la vérif, remise à 00 de la page0. (facultatif!)
           car les nibbles à lire (résultats de la vérif) seront mis, on le
           sait depuis le cours 10, dans les adresses $F0-F7 (de la page0).
           Je rappelle ce que signifie le terme "page0". Une page est un
           groupe de #$FF octets. La mémoire allant de $0000 à $FFFF sur nos
           bécanes chéries, les pages vont donc de $00 à $FF. OK?..
           La page $63 par exemple, correspond à la zone ram $6300-63FF. Bien.
           Avant de lire la vérif, ca fait plus "propre" de nettoyer toute
           la page0. on s'y retrouve mieux (merci) mais c'est pas indispensable
        2. Initialisation du nombre d'essais de lecture pour la vérif.
           (Certains drives peuvent délirer un peu parfois (vieillesse),
           et ne pas réussir à lire la désynchro - pourtant présente sur
           le disk dans le drive - de la première fois.
        3. Initialisation du nombre d'essais pour la routine de lecture
           de l'adress field. (#$80 essais).
VERIF_  4. Passage en mode lecture / drive on
ADR.F_  5. Lecture du champ adresse original soit D5 AA 96 (inchangé)
           C'est un premier repère pour retrouver les nibbles désynchronisés
           qui sont le sujet de la vérif. (le boot contenant déjà une
           routine de lecture donc une routine de lecture du champ adresse,
           elle n'est pas réécrite en général.. on trouve un simple JSR à
           la routine Read_Adr_Field du dos ou du prodos...
        6. On regarde si l'adress field trouvé (sous la tete de lecture au
           moment de la lecture est bien celui du secteur où se trouve la
           désynchro). (attention! ce secteur peut varier avec les originaux.
           C'est ce que l'on va voir plus loin.. Si ce n'est pas le bon,
           il ne nous interesse pas, alors on va aller en lire un autre.
           Donc, on re-saute en (5). (routine de lecture de l'adress_field)
        7. On vient de trouver le bon secteur, celui où a été écrit, sur le
           champ données, la désynchro, donc ce que l'on cherche.
READ_   8. Enfin vient la lecture des nibbles en question. la vérif en elle
           meme. Il y a invariablement lecture des nibbles suivants (je
           développe pas trop, pas la peine) :

                - lecture de #$FF nibbles (pour les laisser passer)
                - lecture de #$D5
                - Lecture de #$E7 (3 fois) + Désynchronisation
                - Lecture de #$EE
       et enfin - Lecture de 8 nibbles, stockés de $F0 à $F7

           Ici, il y a trois cas de figure envisageables..

                - On a l'original
                - On a une copie nibble copieur
                - On a une copie demuffin

           De la présence d'un de ces cas de figure ds le drive (!), en
           résulte trois conséquences..

                - la vérif a lu les bons nibbles qui se trouvent de $F0 à $F7
                - la vérif a lu les bons nibbles jusqu'à la lecture des #$EE
                  (le nibble copieur a tout restitué, sauf la désynchro..). là,
                  ca ne va plus, et les adresses $F0-F7 contiennent alors
                  (si la vérif trouve un #$EE) de mauvaises valeurs
                  (différentes des valeurs à trouver sur l'original), ce à
                  cause du fait qu'une désynchro est incopiable sauf quand on
                  sait comment elle a été écrite.
                - la vérif a trouvé les #$E7 écrits normalement, mais après
                  la désynchro (lecture des #$EE), ca plantera car elle
                  ne pourra en lire aucun !.. ils ne sont plus sur la copie
                  demuffin, alors ca plante par un reboot !

           Aussi, il nous reste seulement deux cas de figure, où l'on arrive
           jusqu'ici.. un copie demuffin a tout de suite été repérée, mais
           pour une copie nibble copieur, les adresses $F0-F7 détiennent la
           réponse à la question ultime : est ce un original ou une copie ?

           La réponse, la voici.. avec ce petit tableau des bonnes valeurs
           à avoir en $F0-F7 à ce moment là de la vérif.
                ________________________________________________
               !                                                !
               !        $F0 : FC                $F4 : E7        !
               !        $F1 : EE                $F5 : EE        !
               !        $F2 : EE                $F6 : FC        !
               !        $F3 : FC                $F7 : E7        !
               !________________________________________________!

           Seulement, il ne suffit pas qu'elle soient bonnes ou différentes
           des bonnes, dans ces adresses pour que ca marche ou que ca plante..
           Il faut les vérifier. On arrete donc la routine vérif_disk,
           pour passer à la vérif_ram, vérification des résultats de la
           vérif disk. et là, il peut y avoir pas mal de variantes..
           On va commencer par étudier toutes celles vues sur des disks
           originaux, et on va parler de ce qui pourrait arriver.


VERIFICATION : Toutes les modifications faites jusqu'à présent (historique)
-------------------------------------------------------------------------------
En premier, j'ai étudié tous les originaux Epyx depuis deux ans (Championship
Wrestling (c) 1986), et voici ce qui en ressort, par rapport à la vérif
première listée ici (reprise du cours 10 mais encore plus détaillée) :

                   L'ETUDE DE LA VERIFICATION (DESYNCHRONISATION)
                ----------------------------------------------------
                     (On commence par Championship Wrestling)

*** INITIALISATION (Met les adresses $F0-FF à #$00 et $FC à #$0A)
*** C'EST CETTE ROUTINE QUI EST FACULTATIVE.. (voir plus loin, explications)

*BB00:A9 00     LDA #$00        ; On va mettre la valeur #$00
*BB02:A2 F0     LDX #$F0        ; On commence en $F0..
*BB04:9A        TXS             ;
*BB05:95 00     STA $00,X       ; On stocke A (soit 00) dans $00+X soit $F0..
*BB07:E8        INX             ; puis $F1, puis $F2..etc
*BB08:D0 FB     BNE $BB05       ; jusqu'à $FF.

*** COMPTEUR PRINCIPAL D'ESSAIS POUR LA VERIF..

*BB0A:A9 0A     LDA #$0A        ;
*BB0C:85 FC     STA $FC         ;

*** INITIALISATIONS DRIVE (MODE LECTURE)

*BB0E:A6 2B     LDX $2B         ; $2B contient #$60 soit le SLOT 6 * #$10
*BB10:BD 89 C0  LDA $C089,X     ; Allume le drive
*BB13:BD 8E C0  LDA $C08E,X     ; PaQsse en Mode Lecture

*** SOUS-COMPTEUR DU NOMBRE D'ESSAIS POUR LA LECTURE VERIF'...

*BB16:A9 80     LDA #$80        ; Lecture vérif..essais.
*BB18:85 FD     STA $FD         ;
*BB1A:C6 FD     DEC $FD         ;
*BB1C:F0 6E     BEQ $BB8C       ; Aucun essai n'a été concluant --> JMP REBOOT

*** RECHERCHE LES HEADERS DE DEBUT DE CHAMP ADRESSES ($D5 AA 96) (JSR $BB96)

*BB1E:20 96 BB  JSR $BB96       ; Routine de recherche de $D5 AA 96...
*BB21:B0 69     BCS $BB8C       ; (lecture de champ adresse / Reboot si ERR)

*** COMPARE LE SECTEUR DONT LE DRIVE VIENT DE LIRE LES HEADERS AVEC LE SECTEUR
*** PHYSIQUE #$08. (LE PROGRAMME RECHERCHE AINSI LES HEADERS DU SECTEUR
*** PHYSIQUE #$08 POUR LOCALISER LES NIBBLES DONT IL VEUT VERIFIER LA PRESENCE)

*BB23:A5 F9     LDA $F9         ; numéro du secteur physique en $F9. ($BB96)
*BB25:C9 08     CMP #$08        ; Vérifie si c'est bien le secteur phys. #$08
*BB27:D0 F1     BNE $BB1A       ;

*** RECHERCHE DES NIBBLES PRECIS QUI PRECEDENT LES NIBBLES A VERIFIER..
*** RECHERCHE D'UN NIBBLE #$D5 PUIS DE TROIS NIBBLES #$E7 CONSECUTIFS...

*BB29:A0 00     LDY #$00        ;
*BB2B:BD 8C C0  LDA $C08C,X     ; Lecture d'un nibble
*BB2E:10 FB     BPL $BB2B       ;
*BB30:88        DEY             ;
*BB31:F0 59     BEQ $BB8C       ; err : go essai suivant
*BB33:C9 D5     CMP #$D5        ; Trouve #$D5
*BB35:D0 F4     BNE $BB2B       ; Non, ce n'est pas un #$D5. On recommence.

*BB37:A0 00     LDY #$00        ;
*BB39:BD 8C C0  LDA $C08C,X     ; Lecture d'un nibble
*BB3C:10 FB     BPL $BB39       ;
*BB3E:88        DEY             ;
*BB3F:F0 4B     BEQ $BB8C       ;
*BB41:C9 E7     CMP #$E7        ; Trouve #$E7
*BB43:D0 F4     BNE $BB39       ; Non.. on recommence.
*BB45:BD 8C C0  LDA $C08C,X     ; Lecture d'un nibble
*BB48:10 FB     BPL $BB45       ;
*BB4A:C9 E7     CMP #$E7        ; Trouve un second #$E7
*BB4C:D0 3E     BNE $BB8C       ; non, on plante (essai suivant)
*BB4E:BD 8C C0  LDA $C08C,X     ; Lecture d'un nibble
*BB51:10 FB     BPL $BB4E       ;
*BB53:C9 E7     CMP #$E7        ; Trouve un troisième #$E7
*BB55:D0 35     BNE $BB8C       ; non, on plante (essai suivant)

*** DESYNCHRO' (AVEC RECHERCHE D'UN NIBBLE #$EE)

*BB57:BD 8D C0  LDA $C08D,X     ; --> Désynchronisation (Incopiable!)
*BB5A:A0 10     LDY #$10        ;
*BB5C:24 80     BIT $80         ;
*BB5E:BD 8C C0  LDA $C08C,X     ; Lecture d'un nibble
*BB61:10 FB     BPL $BB5E       ;
*BB63:88        DEY             ;
*BB64:F0 26     BEQ $BB8C       ; err - on plante (essai suivant)
*BB66:C9 EE     CMP #$EE        ; Trouve un #$EE
*BB68:D0 F4     BNE $BB5E       ;
*BB6A:EA        NOP             ;
*BB6B:EA        NOP             ;

*** APRES TOUTES LES LECTURES / RECHERCHES DE NIBBLES PRECEDENTS ET APRES
*** LA DESYNCHRO', IL A LOCALISE LES NIBBLES QU'IL CHERCHAIT ET QUI SONT
*** CARACTERISTIQUES DE L'ORIGINAL (ILS SONT INCOPIABLES A CAUSE DE LA
*** DESYNCHRO' JUSTEMENT...)... IL VA LES SAUVER DE $F0 A $F7...

*BB6C:A0 07     LDY #$07        ; Sauve les 8 Nibbles suivants en $F0...
*BB6E:BD 8C C0  LDA $C08C,X     ;
*BB71:10 FB     BPL $BB6E       ;
*BB73:99 F0 00  STA $00F0,Y     ;
*BB76:EA        NOP             ;
*BB77:88        DEY             ;
*BB78:10 F4     BPL $BB6E       ;

*** ET ENFIN, IL SE SERT DE CES 8 NIBBLES LUS SUR L'ORIGINAL (ET QUE L'ON
*** NE TROUVE QUE SUR L'ORIGINAL, POUR DECODER LA SUITE DU BOOT (RWTS EN $B700)

*BB7A:A0 00     LDY #$00        ; On commence à l'octet  $00 de la page $B7
*BB7C:A5 F4     LDA $F4         ; On prend le contenu de $F4 (valeur=#$E7)
*BB7E:59 00 B7  EOR $B700,Y     ; On l'EOR avec la page $B7 de $B700 à $B7FF
*BB81:99 00 B7  STA $B700,Y     ; On re-stocke le résultat  de $B700 à $B7FF
*BB84:88        DEY             ; On recommence encore.. pour tte la page $B7
*BB85:D0 F5     BNE $BB7C       ; et on continue jusqu'à la fin.. (-> Y=00)

*** ENSUITE, IL CONTINUE L'EXECUTION DU BOOT (LDX #$60 JMP $B700)

*BB87:A6 2B     LDX $2B         ; On met dans X le slot
*BB89:4C 00 B7  JMP $B700       ; avant de sauter en $B700 (suite du boot)

*** SOUS-ROUTINE : ESSAI RATE.. ON N'A PAS TROUVE LES BONS TRUCS..

*BB8C:C6 FC     DEC $FC         ; On décrémente le compteur d'essais
*BB8E:D0 86     BNE $BB16       ; pas encore à #$00, alors on relit encore !
*BB90:EE F4 03  INC $03F4       ; On incremente reset (pour aller sur Boot)
*BB93:6C FC FF  JMP ($FFFC)     ; Reboot (jmp indirect).

*** SOUS-ROUTINE

*BB96:A0 FD     LDY #$FD        ; Essais..
*BB98:84 F0     STY $F0         ; -
*BB9A:C8        INY             ;
*BB9B:D0 04     BNE $BBA1       ;
*BB9D:E6 F0     INC $F0         ;
*BB9F:F0 3D     BEQ $BBDE       ;

*** LECTURE CHAMP D5 AA 96

*BBA1:BD 8C C0  LDA $C08C,X     ; Lecture d'un nibble
*BBA4:10 FB     BPL *-3         ;
*BBA6:C9 D5     CMP #$D5        ; est ce un :   ( D5 )
*BBA8:D0 F0     BNE $BB9A       ; non, alors on recommence (essai suivant!)
*BBAA:EA        NOP             ;
*BBAB:BD 8C C0  LDA $C08C,X     ; Lecture d'un nibble
*BBAE:10 FB     BPL *-3         ;
*BBB0:C9 AA     CMP #$AA        ; est ce un :   ( AA )
*BBB2:D0 F2     BNE $BBA6       ; non, alors on va voir si c'est un D5..
*BBB4:A0 03     LDY #$03        ;
*BBB6:BD 8C C0  LDA $C08C,X     ; Lecture d'un nibble
*BBB9:10 FB     BPL *-3         ;
*BBBB:C9 96     CMP #$96        ; est ce un :   ( 96 )
*BBBD:D0 E7     BNE $BBA6       ; non, alors on va voir si c'est un D5..

*** SOUS ROUTINE FIN : LECTURE NIBBLES

*BBBF:A9 00     LDA #$00        ;
*BBC1:85 F1     STA $F1         ; $F1=00.. marrant, non ?
*BBC3:BD 8C C0  LDA $C08C,X     ; Lecture d'un nibble
*BBC6:10 FB     BPL *-3         ;
*BBC8:2A        ROL             ;
*BBC9:85 F0     STA $F0         ; qu'on met en $F0 après un ROL
*BBCB:BD 8C C0  LDA $C08C,X     ; Lecture d'un nibble
*BBCE:10 FB     BPL *-3         ;
*BBD0:25 F0     AND $F0         ; qu'on décode avec $F0,
*BBD2:99 F8 00  STA $00F8,Y     ; et qu'on stocke..
*BBD5:45 F1     EOR $F1         ; agaga..
*BBD7:88        DEY             ; et on passe à l'octet suivant..
*BBD8:10 E7     BPL $BBC1       ;
*BBDA:A8        TAY             ;
*BBDB:EA        NOP             ;
*BBDC:18        CLC             ; No_err;
*BBDD:60        RTS             ; End.
*BBDE:38        SEC             ; Err;
*BBDF:60        RTS             ; End.

On a donc cette vérif :         $BB00-$BB0D / INITIALISATIONS FACULTATIVES
                                $BB0E-$BB6B / VERIFICATION DE LA DESYNCHRO
                                $BB6C-$BB79 / SAUVE LES NIBBLES TROUVES APRES
                                $BB7A-$BB86 / DECODE LA SUITE AVEC LES NIBBLES
                                $BB87-$BB8B / SAUTE AU BOOT SUIVANT DECODé.
                                $BB8C-$BB95 / COMPTEUR D'ESSAIS.. REBOOT.
                                $BB96-$BBA0 / INITIALISATIONS2
                                $BBA1-$BBDF / LECTURE CHAMP ADR. D5 AA 96

Et comme paramètres :

           LDA $F9 CMP #$08 / SECTEUR PHYSIQUE OU SE TROUVE LA DESYNCHRO


L'EVOLUTION DE CETTE PROTECTION : Historique de Championship Wrestling à Dondra
-------------------------------------------------------------------------------
Je vais étudier ce plombage trouvé sur tous les derniers epyx notamment.
Pour citer les softs plus loin, j'ai utilisé des abréviations, à savoir :

        - ChW   pour Championship Wrestling
        - MvM   pour Movie Monster Game
        - Rad   pour Rad Warrior
        - Cal   pour California Games
        - Bdr   pour Boulder Dash Construction Kit
        - SSB   pour Street sports baseball
        - WdG   pour World Games
        - Dra   pour Dondra, a new beginning!

Premiere chose qu'on peut facilement changer, c'est le secteur sur lequel la
petite bete se trouve.. le secteur où est écrit la désynchro. et ce secteur
doit donc etre connu de la vérification, aussi, en la listant, on le retrouve.

C'est ici que le probleme des limites du Epyx Copy s'est vite posé!..
Leur vérification, ils la modifiaient de temps à autre, ainsi que pas mal
de leurs paramètres.. alors pour faire un copieur universel de softs epyx,
il fallait aller lire le disk original pour y pomper au coeur de la vérif
les renseignements necessaire au replombage apres copie. (mais aussi pour
verification qu'on avait bien affaire à un original epyx à copier, ou à un
E_boot à plomber (voir le Epyx-Boot maker)).. bref, pour faire un copieur
universel,il fallait se referer à la vérif elle meme pour y pomper les
parametres indispensables et malheureusement variés selon les softs, seulement
probleme :

                - Le programme est relogé (meme de quelques octets) et pour
                  s'y retrouver, faut se faire chier..
                - La vérif n'est pas toujours sur le meme secteur selon le
                  boot 3.3 ou boot prodos. Alors comment savoir où elle est ?

Le principal parametre necessaire à la copie replombée, est le numéro du
secteur où se situe la désynchro.. la petite bete qu'on l'on va réécrire.
Seulement, elle peut varier de place, alors on va voir, pour ce cas, comment
la retrouve dans chacun des originaux vu jusqu'ici, et donc dans les futurs.
Ainsi, vous pourriez par exemple arranger plus tard vous meme le Epyx Copy
pour faire des copies des nouveaux originaux. Mais on va reparler de ca + loin.

Je vais tout de suite commencer l'étude des divers softs, et de leur vérif
en parlant de ces différentes parties :

      1. Initialisations                                 (maintenant annulées)
      2. La mise en route du drive                       (inchangée)
      3. La lecture du champ adresse D5 AA 96..etc       (inchangée)
      4. Ou trouver le numéro du secteur de la désynchro (changé souvent)
      5. La vérification en elle meme de la désynchro    (inchangée)
      6. les conséquences de la vérif : reboot           (inchangée)
      7. Les conséquences finales de la vérif...         (pleins de variantes)

Initialisations (routine allant de $BB00 à BB0D quand elle existe!)
-------------------------------------------------------------------
Parfois il y a... parfois il n'y a pas... tout dépend de leur humeur.
On sait que les nibbles résultant de la lecture de la désynchro seront
stockés en $F0-F7, et on voit sur certaines vérif (dont celle de championship
wrestling listée ci-dessus) dés le début, qu'une routine remet à 00 le contenu
de ces adresse. en fait c'est inutile, sinon à marquer que ce seront bien les
adresses utilisées plus loin.. aussi, si vous ne retrouvez pas tout le temps
cette routine sur un soft plombé ainsi, on s'en fout : elle sert à rien.

Place aux statistiques :        ChW     - oui, routine présente
^^^^^^^^^^^^^^^^^^^^^^^^        MvM     - oui, routine présente
                                Rad     - oui, routine présente
                                Cal     - oui, routine présente
                                Bdr     - oui, routine présente
                                SSB     - oui, routine présente
Restriction du boot =:=>        WdG     - non, routine absente
                                Dra     - non, routine absente...suite?

Bref, il leur a fallu 6 fois utiliser cette routine pour s'apercevoir enfin
qu'elle ne servait à rien, et l'enlever.. aussi, on ne pense pas la
retrouver dans le futur. (c'est une prédiction "godfather")

A noter que s'ils s'en sont apercu sur World games, ce n'est surement pas un
hasard.. ils ont dut reloger leur vérif à cette occasion en $900 (à cause du
boot prodos (exceptionnel) de ce programme).. et donc arranger leur source,
et ce faisant ils ont vu ce détail bete.. m'enfin!.. (avec les stats, tout
s'explique !)

La mise en route du drive
-------------------------
Toujours inchangée :            LDX $2B (contient le slot!)
                                LDA $C089,X
                                LDA $C08E,X

La lecture du champ adresse D5 AA 96
------------------------------------
D'abord le numéro de secteur se situe dans le contexte de routine suivante.
Il y a lecture du champ adresse (D5 AA 96) et de ses premiers parametres
ensuite décodés (piste, secteur, etc..). Cette lecture de champ s'est toujours
faite par une sous routine de la vérification, et jamais par la routine meme
de la rwts par exemple!.. m'enfin. Et cette routine est restée et restera
encore inchangée car on ne peut faire plus simple. Pour la voir, sachez qu'elle
commence en $BB96 sur ChampionshipW. ok?. alors regardez voir plus haut!
Que ce soit sous Dos ou sous ProDos (et c'est peut etre à cause de
l'éventualité du changement de boot qu'aucune routine exterieure à la vérif
n'est appellée.. parce que cet extèrieur peut changer justement..) on trouve
toujours la meme routine à des adresses différentes.. (listez la vérif de
votre original, vous devez tomber sur un jsr à cette routine dés le début de
la vérif et sur la vérif elle meme, dans la zone $BB00-BBFF (la "page" #$BB).

Le numéro de secteur de la désynchro
------------------------------------
Dès le début du Jsr à la lecture de D5AA96, on doit avoir quelque chose
comme ceci : BCS //// LDA //// CMP Valeur. Ok?.. le bcs est un test pour
savoir (en gros) si la retenue (ou carry), c'est à dire le "drapeau" erreur
est mis ou pas, c'est à dire si la lecture de D5AA96 s'est produit sans
erreur ou pas.. (si vous enlever le disk du drive au moment de la lecture
de D5AA96, il faut bien gueuler contre ca, non?)... Ensuite, on trouve un
LDA Adresse, où Adresse correspond à l'adresse contenant le numéro du
secteur physique duquel on vient de situer le champ adresse (D5AA96).
CMP Valeur, compare le numéro du champ adresse lu ici (où se trouve en ce
moment la tete de lecture (pioche, pour ceux qui ont lu le cours 1)) avec
la valeur du secteur que l'on cherche à localiser : le numéro de secteur
physique de la désynchro.. ce que l'on recherche.. ok?..

Pour Dondra par exemple, on a :

       $BB20- JSR $BBB6         ; Lecture champ adresse $D5AA96
            - BCS $BB98         ; Erreur ?.. alors reboot (JMP $BB98)
            - LDA $F9           ; L'adresse du numéro du secteur lu ici..
            - CMP #$0B          ; contient elle le numéro du bon secteur ?

Le secteur physique de la désynchro est donc : $0B
(c'est ce que doit vous indiquer le Epyx Copy à la fin de la copie!..)

Mais attention, le numéro de secteur que vous trouverez dans la vérification
est le numéro de secteur physique de la disquette. et non le numéro de secteur
logique.. ce qui est très différent. La aussi, probleme. Il est très compliqué
de parler de ca, sans devoir completement développer la programmation d'un
fast boot, et c'est la mort totale ! aussi, je laisse lachement tomber ca
(peut etre aurais-je assez de courage et d'ambition pour une prochaine
révision de ce cours 10 suite.. qui sait? si je deviens fou!)..
M'enfin.. on va voir déjà comment retrouver dans cette vérification le
numéro du secteur physique et comment le transformer en numéro de secteur
logique.

Pour l'instant, je ne dirais que ceci.
Le numéro du secteur physique est celui que l'on trouve dans une telle vérif.
Le numéro du secteur logique est la transcription du premier pour obtenir le
numéro du secteur à lire avec un éditeur de secteur pour se trouver sur le
secteur de la désynchro..

Voici la table (bete) de correspondance :
              ___________________________
             !                           !
             !  Physique        Logique  !
             !---------------------------!
             !  $00             $00      !
             !  $01             $07      !
             !  $02             $0E      !
             !  $03             $06      !
             !  $04             $0D      !
             !  $05             $05      !
             !  $06             $0C      !
             !  $07             $04      !
             !  $08             $0B      !
             !  $09             $03      !
             !  $0A             $0A      !
             !  $0B             $02      !
             !  $0C             $09      !
             !  $0D             $01      !
             !  $0E             $08      !
             !  $0F             $0F      !
             !___________________________! (Déja vu vite fait ds le cours 5)

Ainsi, pour aller voir la tete du secteur de la désynchro avec un éditeur de
secteurs, il suffit de transcrire (toujours pour Dondar, notre exemple ici)
la valeur $0B physique avec ce tableau, ce qui nous donne $02 logique.
(de toutes facons, y'a rien à voir !)

Ce secteur, après déplombage, sera libre puisque la petite bete est alors tuée!
Le numéro de ce secteur varie en fonction des envies du plombeur, mais souvent
aussi en fonction du boot utilisé. une rwts ne laisse pas les memes secteurs
libres sur la piste $00 qu'une routine de lecture prodos par exemple, aussi,
selon le boot que le programmeur veut utiliser (en général, il se sont tous
adaptés au boot_epyx), il faut que le plombeur s'adapte !..

Place aux statistiques :  ChW - P$0 secteur phys.$08   logic.$0B   boot.Epyx
^^^^^^^^^^^^^^^^^^^^^^^^  MvM - P$0 secteur phys.$08   logic.$0B   boot.Epyx
                          Rad - P$0 secteur phys.$     logic.$     boot.Epyx
                          Cal - P$0 secteur phys.$08   logic.$0B   boot.Epyx
restriction du boot =:=>  Bdr - P$0 secteur phys.$0A   logic.$0A   boot.DOS
                          SSB - P$0 secteur phys.$08   logic.$0B   boot.Epyx
                          WdG - P$0 secteur phys.$07   logic.$04   boot.ProDS
restriction du boot =:=>  Dra - P$B secteur phys.$0B   logic.$02   boot.3.3

Leur protection a été faite au départ, et concue spécialement avec le boot
"Epyx-Boot". aussi, ils ont collé leur désynchro sur un secteur libre (à
savoir le secteur logique $0B).. et ce jusqu'à ce qu'un programme qui ne
pouvait etre mis facilement sous e-boot (à savoir boulder dash cst qui
doit etre sous dos pour les fonctions bsave et bload du dos 3.3, et qui,
étant déjà tout programmé sans parler de plombage par un mec, aurait été
difficilement adpaté au e-boot (mais c'était possible si le plombeur
avait travaillé la main dans la main avec le programmeur!)). Bref, il
fallait que boulder soit sous dos 3.3, aussi à ce moment là, le
secteur $0B n'était plus disponible!.. et il fallait alors donc arranger
le plombage !.. en changeant le numéro du secteur de la désynchro.. et à
partir de cette "obligation de changer le secteur", et pas avant, ils se
sont mis à changer regulièrement ce secteur, pour essayer de nous compliquer
le boulot... (bien inutile, n'est ce pas ?)..

La vérification en elle meme de la désynchro
--------------------------------------------
La vérification de la désynchro restera la meme tant que le plombage restera
le meme.. c'est comme la (présence de la) routine de lecture de D5AA96.
Inchangée, et elle restera inchangée..
Pour la retrouver sur un nouvel Epyx par exemple, il suffit de rechercher la
routine que j'ai listée ci-dessus avec ChampW, à partir de l'adresse $BB29
jusqu'en $BB6B. Ok?.. (notez bien que ces adresses changeront avec les
prochains softs.. je vous demande de comparer la page $BB avec cette routine!).

La lecture des "nibbles à vérifier", après la désynchro
-------------------------------------------------------
La lecture s'est et se fera surement toujours de la meme facon.. à savoir
ainsi : (l'adresse peut varier, pour Dondra cette routine est en $BB6E)

       Adresse - LDY #$07       ; On veut lire des nibbles de 0 à 7 ($F0-F7)
       Rd_Nib  - LDA $C08C,X    ; Lecture d'un nibble
                 BPL *-3        ; si ce n'est pas un nibble valide, on relit..
                 STA $00F0,Y    ; Stocke nibble valide lu en $F0,Y ($F7..F6..)
                 NOP            ;
                 DEY            ; On passe à Y=6, Y=5.. pour $F6, $F5..
                 BPL Rd_Nib     ; jusqu'à    Y=-1 (Y=FF).. après lecture $F0.

Attention ici!.. pourrait changer l'adresse où le programme stocke les nibbles
lus. ici c'est $F0-F7.. mais ca peut varier.. on va voir ca plus loin.
Seul World Games a une routine similaire mais avec un truc en plus, on va
voir aussi ca plus loin lorsque l'on parlera de la fin de la vérif..

Les conséquences de la vérif : reboot
-------------------------------------
Une vérif situant parfaitement une copie à un niveau quelconque de la lecture
du secteur de la bebete, reboote.. mais au lieu de rebooter de manière
classique par un JMP $C600, le reboot se fait par un JMP ($FFFC), l'équivalent
du pomme control reset.. Pour ceux qui ne connaissent pas, je le dit.. car
on aurait pu vouloir chercher la vérif en scannant les octets 00 C6, et donc
ne rien trouver.. ne rien trouver, SAUF pour le seul programme dans lequel
le secteur de la vérif ait été modifié (donc le seul programme pour lequel
il fallait retrouver la vérif..) où le reboot se fait pas un JMP $C600.
Je veux parler de World Games sous prodos, avec un jmp $C600 en $099F.
(Ils mettent la vérif ailleurs (obligés à cause du boot contraignant) et
ainsi le déplombage est (minimement) compliqué.. mais ils nous en facilitent
encore plus la réussite ainsi, en ne "planquant" plus leur fin de vérif ! -
ils utilisent le jmp que tout le monde connait.. m'enfin!).
Toujours est-il.. à retenir : un reboot peut se faire par un JMP $C600 comme
par un JMP ($FFFC)... ou encore par un JMP $ qui est l'équivalent du jmp
($FFFC) correspondant à l'action de pomme control reset. ($C600 correspondant
à l'action de PR#6).

LES CONSEQUANCES FINALES de la vérif (décodage1, compare, décodage2, autre?)
----------------------------------------------------------------------------
Ah!.. voici la partie la plus interessante, et en fait, c'est la partie qui
vous a posée le plus de problemes à tous.. en effet, sur ChW (1986), la routine
qui suivait la vérif ne décodait que la page $B7 codée au préalable avec la
valeur du nibble lu puis mis en $F4. (EOR #$E7). C'était la premiere génération
de la fin de la vérif disk..

Ensuite, dés Movie Monster (fin 1986), on vu aparaitre une routine ayant une
action similaire, mais utilisant alors 4 octets ($F0-F4) pour décoder 4 pages
mémoire ($B7-BA).. effet similaire.. programmation différente bien sur..
c'est ce qui en a perdu certains.. c'est la seconde génération de la fin de la
vérif disk, qui n'a jamais changée, jusqu'à World Games. Oh! elle a changé
d'adresse parfois, suite à ce que l'on modifiait un bout de la routine qui la
précédait, mais jamais elle n'a changée en tt que routine... elle décodait la
rwts 3.3 du E-Boot..

Ensuite est arrivé - comme je viens de le dire - world games (1987), en ProDOS,
et là, plus de rwts 3.3 donc.. Alors que faire ?.. hum!..
Et bien au lieu de décoder les page $B7-BA correspondant à la rwts 3.3 du Dos,
la vérif se terminait autrement, en comparant simplement les adresses des
nibbles lus ($F0-F7) avec les valeurs qui sont les valeurs lues si un original
est dans le drive... cette comparaison était le coeur de la vérification
3eme génération.

Ensuite, je vous apporte le dernier Spectrum Holobyte, à savoir Dondar..
et là, on retrouve la seconde génération. Alors, en fait, cette troisieme
génération (world games) n'en est pas une.. c'est une exception due au fait que
le soft devait booter en prodos et qu'ils ont du s'arranger autrement qu'avec
la rwts. Aussi, je préfèrerais appeler cette génération, la génération ProDOS
(bien que sous fboot par exemple, on utiliserait la meme !)

De plus, comme je vous en parlais dans le nouveau quatrieme fichier de la
dernière révision du cours 10, cette fin de vérif offre l'avantage que la
vérif complete devient "déconnectable".. pour plus de détails, demandez moi
cette dernière révision. En attendant, comme annoncé, voici le listing de
chacune des vérifications suivant les générations.

1ere génération (vu simplement sur Championship Wrestling)
----------------------------------------------------------
Cette fin de vérif se rapproche tout à fait de la routine de codage/décodage
(la plus simple) que j'ai listée pour vous à l'occasion du cours 12 sur la
signature d'un crack en texte.. voici ce que ca donne :

Adresse - LDY #$00
Loop    - LDA $F4
          EOR $B700,Y
          STA $B700,Y
          DEY
          BNE Loop

2eme génération (de MvM, jusqu'à Street Sports Baseball, sauf sur World Games)
------------------------------------------------------------------------------
La routine est un peu plus complexe.. en voici le listing commenté..
(Pour Movie Monster Game.. où "Décode" correspond à $BB7A).

Adresse - LDX #$03      ; Num.octet utilisé en 1er entre $F0 et $F7 (00 à 07)
          LDA #$00      ;
          TAY           ;
          STA $F8       ; Adresse basse de l'adresse de la zone à décoder
          LDA #$B7      ; Adresse haute de l'adresse de la zone à décoder
          STA $F9       ; ($F8 = 00, $F9 = B7)
Loop    - LDA $F0,X     ; On prend l'octet à l'adresse $F0+X ($F3 au début)
          EOR ($F8),Y   ; On décode sa valeur avec les octets de la page ($B7.)
          STA ($F8),Y   ; On stocke le résultat dans cette meme page (décodée)
          DEY           ; On passe à l'octet suivant de la page à décoder
          BNE Loop      ; On boucle jusqu'à décoder tous les octets
          INC $F9       ; On passe à la page suivante ($F8 = 00, $F9 = B8..etc)
          DEX           ; On décrémente l'octet utilisé pour décoder ($F3,F2..)
          BPL Loop      ; On boucle jusqu'à ce que X=00 soit décodage avec $F0.
          ... ....      ; Suite du boot (maintenant décodé)..

Si vous ne comprenez pas tout, c'est surement à cause du fait des instructions
à adressage indirect indéxé : (Adresse),Y. Je vous l'explique en trois mots.
Un LDA ($F8),Y avec $F8=ED et $F9=FD par exemple, correspond à un LDA $FDED.
(c'est en rom). Aussi, la routine (1) aura le meme effet que la (2) :

1       - LDA #$ED             2        - LDA $FDED
        - STA $F8                       - STA $2000
        - LDA #$FD                      - JMP $FF59
        - STA $F9
        - LDA ($F8)     Après l'éxécution de la premiere, puis de la seconde,
        - STA $2000     allez voir le contenu (rom, donc invariable) de l'adr
        - JMP $FF59     $FDED, puis de l'adresse $2000. les valeurs st les mm!

Compris?.. et de meme, on peut faire un EOR (Adresse),Y ou JMP (Adresse)..etc..
Pour plus de détails, si vous ne comprenez pas avec ca, referez vous à un bon
bouquin d'assembleur.. (au hasard, Assembly Lines).

3eme génération (World Games)
-----------------------------
World games, je le disait plus haut, n'a pas de rwts 3.3 à décoder (prodos)
bref, ils se sont pas cassé, voici la routine de vérif qui est "soudée" avec
la routine de lecture des nibbles désynchronisés..
Voici ce que ca donne..

$0915   - LDA #$A5      ; Initialisation pour un accès indirect à ce qui
          STA $F6       ; se trouve en $09A5. (on verra plus loin ce dont il
          LDA #$09      ; s'agit..). On poke 09 en $F7, et A5 en $F6.
          STA $F7       ;
          ... ...       ; lecture D5AA96.. + désynchro
          ... ...       ;
                        ;
$0971   - LDY #$07      ; lecture des 7 nibbles comme toujours, mais qui ne
Loop    - LDA $C08C,X   ; sont plus stockés.. non!.. au fur et à mesure de la
          BPL *-3       ; lecture, leurs valeur est comparée avec les bonnes
          CMP ($F6),Y   ; valeurs des nibbles relatifs à un original, mis en
          BNE Reboot    ; $09A5.. (Indirect ($F6)). Comparaison, par l'inter-
          DEY           ; médiaire de l'instruction CMP (COMPARE avec A-Reg).
          BPL Loop      ; Et ce pour les 7 nibbles!..
          ... ....      ;
          ... ....      ;

$09A5   - HEX FC EE EE FC E7 EE FC E7

Compris ?..

Je vous parlerais de la quatrième génération de ce plombage avec le déplombage
de Dondra, dans le second fichier de ce cours sur l'évolution de la protection
de chez Epyx !..

On y parle aussi de l'évolution future probable de cette protection, de la
programmation de notre epyx copy qui doit evoluer avec leur protection, d'une
troisieme méthode de déplombage concernant tous les softs epyx, et encore
plus simple que les deux précédentes vues dans le cours 10.. et de bien
d'autres choses encore !..

A tout de suite dans le fichier 2 de ce cours 10.suite..        Godfather 01/88
===============================================================================


Retour sommaire

hr cours GDF

Cours 10.2 seconde partie.


===============================================================================
L'EVOLUTION FUTURE (PROBABLE) DE LA PROTECTION EPYX + CRITIQUES DIVERSES !   G.
===============================================================================
Ainsi que tous les détails sur la programmation de notre Epyx Copy !...
et une troisieme méthode de déplombage des softs epyx (triple emploi !)..
et le comment déplomber Dondra.. !.. comment retrouver le secteur de la
désynchro employé sur l'original à l'aide d'un bete sector editor..  etc, etc..
===============================================================================

Tout de suite on s'attaque à la routine de décodage 4eme génération :

4eme génération (Dondra)
------------------------
(pour Dondra.. où "Décode" correspond à $BBA5. On trouve ceci à Adresse $BB7C)
                                                                        =====
Adresse - LDA $00                Décode - STA $F9
          TAY                    Loop   - LDA $F0,X
          STA $F8                       - EOR ($F8),Y
          LDX #$00                      - STA ($F8),Y
          LDA #$B8                      - DEY
          JSR Décode                    - BNE Loop
          LDA #$03                      - INC $F9
          LDA $BC                       - DEX
          JSR Décode                    - BPL Loop
          ... .....                     - RTS

Cette routine de décodage en deux parties, est la meme que celle de la 2nde
génération, sauf qu'au lieu de ne décoder QUE les page $B7-BA, ici il y a deux
appels de la routine Décode, qui permet de décoder la ram chargée (boot 3.3)
ainsi :

     La Page $B8 est décodée par un EOR $F0 soit un EOR #$FC
     La Page $BC est décodée par un EOR $F3 soit un EOR #$FC
     La Page $BD est décodée par un EOR $F2 soit un EOR #$EE
     La Page $BE est décodée par un EOR $F1 soit un EOR #$EE
     La Page $BF est décodée par un EOR $F0 soit un EOR #$FC
     La Page $BB contient la vérification disk (donc n'est pas codée!)
     Les pages $B7,$BA,$BB ne sont pas codées...

Referez vous aux commentaire de la vérif "2nde génération", et vous comprendrez
tout ca tout de suite en comparant avec cette vérif.. (j'espère que vous avez
une imprimante! sinon, mazette!)..

Un truc super important à noter à propos de cette vérif de la 4eme génération!.
La piste de la désynchro a changée !.. ce n'est plus la piste $00 mais la
piste $0B. Comment savoir ca ?.. si vous regardez la vérif, vous tomberez dés
le début ($BB00) sur la routine suivante, inhabituelle :

$BB00-  A9 00           LDA #$00        ; Piste actuelle
        8D 78 04        STA $0478       ; (pokées ds un trou de la page texte)
        A9 16           LDA #$16        ; Piste à atteindre *2
        A6 2B           LDX $2B         ; Slot*16 dans X
        20 A0 B9        JSR $B9A0       ; JSR Seekabs

On remarque tout de suite le JSR $B9A0. Cette routine dans le dos correspond
à la routine Seekabs, soit la routine de déplacement de la pioche sur une
piste au choix. Cette piste est désignée par le LDA #$16, car A-reg doit
contenir le numéro de la piste à atteindre multiplié par 2.. donc, cette
routine position la tete de lecture sur la piste $16/2 soit (division en
base hexadécimale, soit en base 15) sur la piste $0B. ($0B+$0B=$16).
Si vous ne comprenez pas ca, admettez le simplement..
Donc, dans cette 4eme génération de vérif, la désynchro change non seulement
de secteur mais aussi de piste !.. marrant !..

On pourrait utiliser les deux méthodes du cours 1 pour déplomber ce soft en
les modifiant un minimum relativement aux modifications de ce plombage, (les
exemples sur ce Spectrum Holobyte vont suivre, tous bien détaillés) mais il y
a une troisieme méthode de déplombage encore plus simple et universelle à
laquelle je viens de penser..


5eme génération (Spy vs Spy 3)
------------------------------
Spy vs spy 3 arrive avec truc en plus à cause de son boot tout nouveau tout bo!
En effet, un JSR à la vérif (qui se charge en $C00 dés le boot1) se trouve en
$82A et dés le début de la vérif, les valeurs initiales de l'instruction qui
doit se trouver en $82A sont re-pokées (LDA #8D STA $82A LDA #$09 STA $82B
LDA #$C0 STA $82C). Aussi, cette partie de la "vérif" est indispensable pour
bien continuer le boot. De plus - autre évolution - la routine de décodage
est très différentes des précédentes..

Il y a, à la fin de la routine de lecture des nibbles D5 AA 96, une routine
en plus - celle ci :.. mais on s'en fout!

$0CDE-  LDA #$00
$0CE0-  STA $F1
        LDA $C08C,X
        BPL *-3
        ROL
        STA $F0
        LDA $C08C,X
        BPL *-3
        AND $F0
        STA $00F8,Y
        EOR $F1
        DEY
        BPL $0CE0
        TAY
        NOP
        CLC
        RTS

Ce qui nous interesse en fait, c'est la routine de lecture des nibbles ainsi
que la (nouvelle) routine de décodage des pages de la rwts chargées codées :

Lecture des nibbles (comme toujours) :

$0C7A-  LDY #$07
Lp   -  LDA $C08C,X
        BPL *-3
        STA $00F0,Y
        NOP
        DEY
        BPL Lp

Routine (nouvelle) de décodage : Elle décode avec les valeurs en $F2 et $F1
les pages $09, $08 par simple eor, comme toujours.

$0C88-  LDX #$02
        LDA #$00        ; Adresse basse du buffer à décoder ($0900)
        TAY             ;
        STA $F8         ;
        LDA #$09        ; Adresse haute ($09)
        STA $F9         ;
        LDA $F0,X       ; Premier nibble.. puis second..
        EOR ($F8),Y     ; comme clé de décodage pour le buffer concerné..
        STA ($F8),Y     ; on décode, et on re-stocke le résultat..
        DEY             ; octet suivant..
        BNE Lp          ; dernier octet ?.. non, alors octet suivant
        INC $F9         ; page suivante..
        DEX             ; on décrémente le nombre de pages à décoder
        BPL $0C93       ; décodage términé ?


Méthode1 (Poker les bonnes valeurs dans le bonnes adresses et sauter au décode)
-------------------------------------------------------------------------------
Pour cette technique 1 de cracking, il faut avoir localisé le début début début
de la routine de décodage, juste après la lecture des nibbles désynchronisés.
Le premier fichier de ce cours doit vous aider justement à retrouver ces
routines, memes si quelques autres modifications sont faites à ces routines !!.
Pour déplomber Dondra par exemple, la première méthode revenait à ceci :
Il suffirait de mettre en $BB00 la routine immortelle suivante déjà vue dans le
cours 10 (puisque les valeurs des nibbles désynchronisés n'ont jamais changées)
soit ceci, terminée par un jmp au décodeur (pour dondra, à l'adresse $BB7C).

Pour déplomber Dondra, mettez en piste $00 05 0C, ceci :

        $BB0C-  A9 FC           LDA #$FC
                85 F0           STA $F0
                85 F3           STA $F3
                85 F6           STA $F6
                A9 EE           LDA #$EE
                85 F1           STA $F1
                85 F2           STA $F2
                85 F5           STA $F5
                A9 E7           LDA #$E7
                85 F4           STA $F4
                85 F7           STA $F7
                4C 77 BB        JMP $BB7C

Pour rentrer ces valeurs, on sait que la page $BB correspond dans un boot 3.3
au secteur $5 de la piste $00. Il vous suffit donc de booter un copy II+ 5.x
par exemple, de vous rendre à l'octet $00 de ce secteur (lisez le!) et d'entrer
l'hexa suivant, avant de réécrire ce secteur.

Méthode 2 : Décoder ce qui doit etre décodé, avant de le réécrire et d'oter le
----------- décodeur qui se trouve en $BBxx, et qui n'a plus de raison d'etre..

Pour Dondra, vous ne saurez peut etre pas reperer les secteurs par rapport
aux pages.. car il y a d'autres pages à décoder par rapport aux premieres
générations de ce plombage. mais la méthode est éxactement la meme que celle
vue dans le cours 10. Laissez moi donc juste vous aider à vous y retrouver en
vous offrant la table complete de correspondance des secteurs de la piste $00
avec les pages chargées lors d'un boot 3.3.

        Secteur $00     - Page $B6 (et $08)
        Secteur $01     - Page $B7
        Secteur $02     - Page $B8
        Secteur $03     - Page $B9
        Secteur $04     - Page $BA
        Secteur $05     - Page $BB (la vérif)
        Secteur $06     - Page $BC
        Secteur $07     - Page $BD
        Secteur $08     - Page $BE
        Secteur $09     - Page $BF

En sachant ca, vous n'aurez aucun probleme à adapter la méthode2 du cours 10.

Méthode 3 (nouvelle méthode rusée) : modifier la routine de lecture des nibbles
-------------------------------------------------------------------------------
Oui!.. je me suis rendu compte qu'une troisieme méthode encore plus simple à
mettre en application était possible pour déplomber tous les softs Epyx.
On a vu dans le premier fichier que toutes la routine de lecture des nibbles
était toujours la meme... sauf dans le cas de world games, mais ces différen-
ces ne vont meme pas nous géner, vous allez voir.

La routine de lecture, je la re-liste, est celle ci :

Adresse - LDY #$07
Rd_Nib  - LDA $C08C,X   ; Ici, le programme va chercher les nibbles sur le disk
        - BPL *-3
        - STA $00F0,Y   ; avant de les stocker en $F0, $F1..etc...
        - NOP
        - DEY
        - BPL Rd_Nib

Alors ma nouvelle méthode consiste en la chose suivante (j'en ai eu
l'idée en étudiant pour ce cours la protection de World Games), à savoir qu'il
y a toujours de la place à la fin de la page $BB (au moins 8 octets de $BBF0 à
$BBF7). Il suffit d'y mettre les bonnes valeurs :

$BBF0: FC EE EE FC E7 EE FC E7

Et de modifier 2 octets dans la routine de lecture des nibbles, pour remplacer
l'adresse $C08C,X par $BBF0,X; ce qui nous donne :

Adresse - LDY #$07
Rd_Tab  - LDA $BBF0,Y    ; On "lit" les bonnes valeurs directement en octets!
        - BPL *-3       ; (et les octets normaux sont copiables par rapport
        - STA $00F0,Y   ; aux nibbles désynchronisés !!.. gag!)
        - NOP
        - DEY
        - BPL Rd_Tab    ; On lit la table de nibbles en ram comme le disk !..

Pour ce qui est de Sub battle par exemple et si je ne m'abuse, la zone $BBF0
est occupée par la fin de la vérif, mais les nibbles sont déjà écrit quelque
part à un autre octet de ce secteur.. aussi, sachant que ca correspond à la
page $BB, il faut modifier ce qui se trouve ci-dessus sous le label Rd_Tab
en fonction de l'octet où sont ces octets.. si vous ne comprenez pas,
ne vous suicidez pas et allez plutot mettre un nez dans les un bouquin
simple d'assembleur. (ed.PSI par exemple..?)

Pour déplomber les softs epyx, il suffit donc de faire :
      _____________________________________________________________________
     !                                                                     !
     ! * Lire le secteur $05 de la piste $00 qui correspond à la page $BB, !
     !   donc, où l'on trouvera la vérification du disk..                  !
     ! * Ecrire à l'octet $F0 de ce secteur, les valeurs suivantes relati- !
     !   ves aux valeurs à mettre en $F0-F7 soit FC EE EE FC E7 EE FC E7   !
     ! * Aller à l'octet $70 de ce secteur (LDA $C08C,X) et mettre à la    !
     !   place, les octets suivants : B9 F0 BB (soit LDA $BBF0,Y).         !
     ! * Ecrire le secteur ainsi modifié sur le disk.. et booter !..       !
     !_____________________________________________________________________!

Avant d'appliquer cette méthode, il faut simplement :

        - Localiser le LDA $C08C,X relatif à la routine de lecture des
          7 nibbles (ici, il était à l'adresse $BB70 soit octet $70 du
          secteur $5 de la piste $00)
        - Vérifier que les octets $F0-F7 de la page $BB sont bien libres.
          C'est presque toujours le cas, mais malheureusement pas pour Dondra.
          (dans ce cas, utilisez la première méthode de déplombage, en sachant
          que le décodeur commence en $BB7C)

Cette méthode à plusieurs avantages sur les autres :

        - Le minimum d'octets modifiés (juste écrire les nibbles sous forme
          d'octets sur le disk, ce qui est indispensable pour les méthodes
          où l'on ne décode pas le truc soit meme) et modifier 3 octets.
        - Ne pas avoir à comprendre la routine de décodage qui peut etre très
          complexe..ni à avoir à trouver l'adresse de cette routine..etc..
        - Ne pas avoir à réécrire des secteurs "à la main" sur le disk après
          les avoir chargé puis décodé.. ce qui necessite pleins de manips
          folles..etc..

Bref, c'est la plus belle des trois méthodes que je vous aient livrées !




COMMENT RETROUVER LA DESYNCHRO SI ELLE CHANGE ENCORE DE PLACE ?!?
-------------------------------------------------------------------------------
Pourquoi j'ai mis deux points d'interrogation, là ?.. bien sur qu'elle va
encore changée de place..! Dans la ligne droite, le favori va pas se mettre à
courir en zig-zag !!.. elle avait changée de secteur, puis de piste !.. et elle
n'est pas prete de s'arreter !
A quoi ca sert, vous demandez vous, de reperer la désynchro, alors que si je
ne vous en avait pas parlé, vous n'en auriez jamais soupconné l'existence ?..
Mais à faire une copie, voyons !.. (il est bete lui, ohh!!)..
Et ca sert aussi pour les curieux, tiens !.. et pour faire un cours !.
Donc, comment retrouver le secteur de la désynchro très facilement, autrement
qu'en regardant dans la vérif elle meme ?!..
La réponse est simple !.. cette désynchro est une suite de nibble, d'accord ?
ca on le savait.. et elle est écrite sur un secteur, dans le champ donnée. ca
aussi, on le savait. (regardez la vérif, elle cherche D5 AA AD avant de lire
cette fameuse suite de nibbles incopiables! - pour + de détails, cf cours 6)..
Et des nibbles dans le champ donnés!.. ca donne quoi ma bonne dame ?..
Ben.. un secteur, c'est quoi autrement que des octets.. c'est une suite de 342
nibbles écrits dans ce que l'on appelle le champ données!. alors, une suite
de x nibbles écrits dans le champ données, ca donne quoi au niveau du secteur ?
Ben.. des octets bien sur !..

Sous forme d'octet (on dit dé-nibellisée!) la désynchro ressemble à ceci :
(si vous lisez le secteur de la désynchro bien sur, avec un éditeur de secteurs
genre Copy II+ 5.x) :

        $== : 00 00 00 00 00 00 00 00   àààààààà ..le début des AC est
        $== : 00 00 00 00 00 00 00 00   àààààààà   n'importe où sur le secteur!
        $== : 00 00 AC 00 AC 00 AC 00   àà,à,à,à
        $== : AC 00 AC 00 AC 00 AC 00   ,à,à,à,à
        $== : AC 00 AC AC AC AC AC AC   ,à,,,,,,
        $== : AC AC AC AC AC AC AC AC   ,,,,,,,,
        $== : AC AC AC AC AC AC AC AC   ,,,,,,,, ..et ce,
        $== : AC AC AC AC AC AC AC AC   ,,,,,,,,   jusqu'à la fin du secteur!

Pour retrouver la désynchro, il faut travailler sur un original, booter un
Copy II+ 5.x - je me répète - puis passer en option Sector Editor, appuyer sur
"P" pour sélectionner le mode "Dos Patched 3.3" (ca vous rappelle rien?, du
coté du cours 1 ?), puis revenez au sector editor en pressant <esc>, et enfin,
tapez "S" pour Scanner les octets suivants : AC 00 AC 00 AC, par exemple.
Dés que vous les trouvez, normalement vous etes sur le secteur où a été
écrite la désynchro, soit le coeur de la protection !.. Yéééh !..




CE QUI PEUT CHANGER DANS LE FUTUR DE CETTE PROTECTION
-------------------------------------------------------------------------------
On peut imaginer plusieurs changements dans cette protection, ce qui pourrait
vous perdre.. avec les deux premières méthodes.

* D'abord, on peut envisager qu'ils changent les adresses où se chargent
  les nibbles lus. au lieu de $F0-F7, on pourrait voir $A0-A7 par exemple, et
  là, il faudrait aller voir la routine de lecture pour s'en appercevoir, et
  il faudrait s'y adapter dans toutes les méthodes.. seule la troisieme est
  simple à ce niveau là, car il suffira toujours de modifier le LDA $C08C,X
  de la routine et de mettre les bonnes valeurs quelque par pour que ce soit
  gagné !..

* On pourrait envisager qu'ils changent encore pour une raison quelconque
  (nouveau boot, ou envie de compliquer) le secteur de la désynchro. s'il ne
  la codent pas, aucun probleme.. cherchez des BD 8C C0 par exemple
  (LDA $C08C,X) et vous la retrouverez sans probleme. S'ils la codent, soit
  ils la codent par un EOR simple, et dans ce cas, scanner les memes valeurs
  avec le Scan disk eor du cours 10 vous permettra de la retrouver, et sinon,
  il suffira de boot-tracer le soft et vous tomberez sur la vérif juste après
  la routine de décodage, dés le début du boot tracing. (cf cours 10)

* Ils vont surement encore modifier le secteur de la désynchro, mais ca ne
  vous touche en rien, sinon pour adapter en mon absence le epyx copy,
  puisque vous en avez le source. mais on va voir ca plus loin, en parlant
  justement de la programmation de ce copieur spécial epyx.

* Ils pourraient aussi changer le format du disk, toujours en patched FF FF EB,
  au lieu de DE AA EB. (pour plus de détails, allez voir le super cours 6..)
  mais ca, c'est du déplombage du domaine du cours 6 justement !.. alors je
  n'en parle plus ici.

Mais comme dit le proverbe, qui vivra verra.. alors attendons de voir, avec
la venue prochaine de trois nouveaux Epyx, dont spy vs spy III (déjà sorti),
Spiderbot et Deflexor.. patience !..



PROGRAMMATION EPYX COPY : Tous nos secrets enfin révélés !
-------------------------------------------------------------------------------
Comment l'adpater vous memes à des modifs de la protection ?. (connaissances en
assembleur requises! pour bien appliquer les conseils qui suivent ici...).!
-------------------------------------------------------------------------------
Un programme par Godfather, Kristo, Sam et les plombeur de chez Epyx !..

Attention. Ce qui suit va surement vous aider à mieux comprendre le source
du Epyx Copy, mais il faut s'y connaitre un minimum en asm, et avoir le
source commenté sous les yeux pour s'y retrouver..

Le epyx copy vient pomper sur le disk original le numéro du secteur où se
trouve écrite la désynchro (et où il doit en réécrire une), et il supposait au
départ de la vérif se trouve sur le secteur $5. c'est pourquoi, après la
venue de world games, j'ai updaté ce programme. Il vous demande avant la
copie "Boot3.3 ou ProDOS".. et si vous répondez boot3.3, il ira chercher la
vérif en secteur $5, sinon en secteur $E... donc, si la vérif change encore
de secteur, regardez le source, et rajoutez une option "Boot3.3, Prodos ou
Agaga :", et si le gars appuie sur "A", le programme doit signaler au copieur
que le secteur à lire n'est ni $5 ni $E, mais le nouveau secteur de la vérif.

Une fois que le programme a trouvé la vérif, il va y pomper dedans le numéro
du secteur physique.. il vérifie si c'est bien un epyx en comparant 4 octets
qu'il connait avec cette vérif.. et s'il ne les trouve pas, il essaye avec
4 autres (nouvelle génération).. ainsi, il est sur que c'est la vérif et pas
n'importe quel disk étranger au plombage epyx qui est dans le drive.
Il se situe selon des reperes que je lui ait donné, pour trouver le numéro
du secteur.. en connaissance des diverses générations de vérifs. (regardez
dans le premier fichier le bout de source qui compare le secteur lu au
secteur physique à localiser). Ainsi, en connaissance du secteur de la
désynchro, il pourra reproduire la meme au meme endroit sur la copie !
Pour vérifier qu'il a bien le secteur, il regarde aussi en plus si c'est un
numéro de secteur cohérent. (compris entre $00 et $0F)

La présence de la désynchro en piste $B entraine que l'on a du aussi
paramétrer la piste. Lorsque le programme repere qu'il en est ainsi, il
change le copieur qui suit en remplacant le numéro de la piste où écrire la
désynchro de $00 en $0B.

A noter que l'original est en format patched, mais c'est une routine fast boot
qui ne tient pas compte de DE AA EB qui s'occupe de la lecture de l'original.

A noter également que la "prise" du numéro du secteur de la désynchro et la
vérif du fait que c'est bien un epyx ou pas, se fait lors de la copie (lecture
de la premiere "passe" sur l'original).


PROCHAINES REVISIONS DES TRUCS RELATIFS A CE COURS :
-------------------------------------------------------------------------------
* Epyx Copy sera révisé, s'il ne l'est pas déjà au moment où vous lisez ce
  cours, pour copier les spectrum holobytes (vérif 4eme génération), et
  marchera aussi chez ceux d'entre vous qui ne possedent malheureusement qu'un
  seul drive.

* Bientot, vous trouverez dans la liste des godfather's products, un
  déplombeur automatique de softs epyx, que j'espèrerais finalement universel
  et adapté à toute modification et relocation de leur vérif !. tant que la
  désynchro restera la meme, que le format restera un format patched, et
  que la vérif ne sera pas codée, ce qui - croyez le - n'a que très très peu
  de chances de se produire chez Epyx !..



J'espère qu'après ce long cours, à mon avis très interessant, vous permettra
de venir à bout de n'importe quelle évolution de ce plombage.. sans mon aide!
mais je réviserais encore ces fichiers, au fur et à mesure de cette évolution.

                            Amicalement, Godfather - Terminé le 20 janvier 1988
===============================================================================


Retour sommaire

hr cours GDF

Cours 10.2 troisième partie.


===============================================================================
COMPLEMENT COURS 10.2 : UPDATE AVRIL 1988 / 3 NOUVEAUX SOFT "EPYX" SONT ARRIVE!
===============================================================================

Tout de suite je saute sur le premier des 3 epyx qui me soient tombé dessus
en ce début de moi d'avril 1988.. death sword.

Deathsword (c) epyx 88
----------------------
Pour le commentaire je dirais que death sword est la version apple par palace
software du barbarian de l'atari st, dont epyx a très bien fait de racheter la
license. Tout comme rad warrior, jeu C64 par excellence, ce n'est pas un soft
qui a été reprogrammé sur IIe mais au contraire une conversion. L'interpreteur
C64/IIe doit d'ailleur trainer quelque part, en carte language ou quoi..
Ce qui explique (lang.interprété) la relative lenteur du soft, mais sans ce
principe de conversion, nous n'aurions rien du tout, alors ne nous plaignons
pas trop voulez vous!.. Le probleme que ca pose est le probleme des fixs..
c'est bien souvent impossible à fixer!.. m'enfin... vous etes prévenu.

La méthode de la vérif se fait par comparaison. Le boot est en prodos,
et ce, surement plus à cause de la conversion en question qu'à cause du IIgs.
Pour récupérer la vérif, on ne doit plus maintenant s'ennuyer à boot tracer,
le mieux est de booter une copie qui reboote (faite avec disk muncher par
exemple, mais donc surtout pas avec mon epyx copy (car elle "risquerait de
marcher!"), et de taper Ctrl-Reset dés que ca reboote (JMP $C600 de la vérif).
Ensuite, il vous suffit de passer en moniteur et de lister $900 si le boot a
l'air d'un boot prodos, ou encore $BB00, ou encore $C00.. ou encore de boot-
tracer...(hum!). Pour ces boot prodos - itou pour carmen europe - on ne peut
pas remplacer facilement le JMP $900 du boot1 car $900 sert aussi de buffer de
chargement et si on s'avise de mettre JMP $FF59, tout se chargera en rom,
donc rien ne se chargera!

Pour récuperer la routine, il suffit donc de booter une mauvaise copie et
au moment du reboot vérif de taper deux fois ctrl-reset puis call-151.Ok?

C'est ce que j'ai fait avec deathsword, pour trouver immediatement la vérif
en $900. Rien de bien neuf ma foi. les nibbles lus lont en $9A5. Ils sont lu
en $971 et comparé aux valeurs en $9A5 au fur et à mesure de leur lecture.
Rien à dire, c'est du déjà vu. Allez jeter un coup d'oeil aux déplombages
cookbook.

Street Sports Basketball (c) Epyx 88
------------------------------------
Epyx Boot normal. Vérif en $BB00 comme à l'origine de la protection.
Programmes en catalog epyx, cataloguables avec mon epyx boot maker...facile!
Vérif par décodage. tout ce qu'il y a de plus ancestral.
Aucun autre commentaire necessaire, donc.

Where in europe is Carmen Sandiego ? (c) Broderbund 88
------------------------------------------------------
Après spectrum holobyte, c'est Broderbund qui y passe..
Après avoir fait un score de quelques 85000 ventes (!) des premiers carmen,
peut etre se sont ils dits que si celui ci était mal plombé donc vite déplombé,
certes ils y perdraient sur celui-ci, mais ils vendraient par cette pub'pirate
encore plus des deux premiers à des personnes qui sinon ne les acheteraient pas
Je crois sincèrement que ca s'est tourné comme ca dans leur tete, et c'est bien
malheureux.. m'enfin..

Pour ce qui est du plombage, le boot est un boot prodos classique.
La vérif se trouve en $900 (récupérée par la méthode des "deux reset").
Elle se fait par comparaison classique. etc..
Rien à ajouter.

Donc, pour l'instant.. avril88.. aucune evolution sinon une tendance à plus
utiliser le prodos et à parfois revenir au bon "epyx boot". De plus, une
politique d'epyx a vraiment proposer sa protection a qui la veut, en tant
qu'incopiable mais facilement déplombable...

Ma foi, que voulez vous leur dire ?

                                                         Amicalement, Godfather
===============================================================================


Retour sommaire

hr cours GDF

Les programmes de ce disk.


-------------------------------------------------------------------------------
LES PROGRAMMES DE CE DISK                                                    G.
-------------------------------------------------------------------------------

Vous trouverez sur ce disk des programmes vus dans les cours 1 et 10,
concernant le demuffin, à savoir :

        * Advanced Demuffin 1.1
        -----------------------
        Demuffin universel, vu dans le cours 1. (pour convertir les epyx,
        précédez un brun de ce programme par un passage en dos patched)

        * Locksmith 6.0 demuffin FF FF EB
        ---------------------------------
        Pour convertir les originaux epyx au format 3.3 (DE AA EB)

Et bientot :

        * Protection Epyx Diagnostic
        ----------------------------
        Pour obtenir automatiquement tous les renseignements sur le
        plombage d'un nouvel Epyx..!.. (préversion en catalog)

        * Deplombeur automatique de softs epyx (complement de cours)
        ------------------------------------------------------------
        Ce nom veut tout dire !...

-------------------------------------------------------------------------------


Retour sommaire

hr cours GDF

Lettre élèves.


Salut et salut,

        Vous avez entre les mains le cours et l'original.. comme toujours..

        Seulement, nous en sommes au cours 10.. alors, si vous permettez,
        je ne vous tiendrais désormais plus autant la main que désormais...

        C'est comme en bio, si vous etes encore dans le 2nd cycle scolaire..
        je vous explique tout sur un grenouille et vous devez résoudre un
        probleme avec un rhinocéros.. les memes principes et théories sont
        à appliquer, mais le sujet n'est pas vraiment le meme. Il est
        soit plus évolué, soit moins évolué.. mais c'est en fait toujours la
        meme chose..

        Ici, on parle de protections anti-copie. La protection epyx présente
        sur l'original que vous avez maintenant entre les mains, ou sur les
        prochains à venir que je devrais recevoir dés leur sortie, pour vous,
        est plus évoluée que celle que j'ai décortiqué en détails dans
        les cours sur cette protection.. tout évolue.. et il faut que vous
        puissez vous débrouiller seul, meme et surtot si ca évolue encore..

        Bien sur, si vous étiez vraiment coincé avec ce crack - ce qui
        m'étonnerais tout de meme sauf si vous y mettez de la bonne volonté -
        je suis tout pret à vous aider. mais il vaut mieux pour vous, essayer
        d'y arriver seul.. c'est le principe et le but de mes cours,
        qui s'illustre aussi par le premier examen de passage (gratuit)
        dont je viens de terminer la mise au point.

        Je vous laisse donc sans plus vous en dire.. il y a mon cours pour
        prendre le relai, et vous faire avancer..

        Bonne chance !




                                                        Sincèrement, Godfather


Retour sommaire

hr cours GDF

Déplombages cookbook.


-------------------------------------------------------------------------------
DEPLOMBAGE CLES EN MAINS (Pour voir si vous avez tout juste...)       Godfather
-------------------------------------------------------------------------------

Voici les déplombages clés en mains des derniers softs plombés par ce plombage
Epyx, du marché... mais gaffe! ce ne sont pas les seules variantes de ce
déplombage.. mais surement les plus courtes..

Pour tous les softs, il faut bien sur au préalable démuffiniser les originaux
avec le locksmith 6.0 par exemple (cf cours 6) ou encore avec le adv.dem 1.1.
Ensuite, passez sous Copy II+ 5.x et modifiez les octets des secteurs suivants:

Artic Antics : Spy vs spy III
-----------------------------
En boot tracant ce soft, on voit vite que la vérif a été relogée en $C00 et
qu'elle se charge dés le boot1. Il y a un JSR $C00 ds ce mm boot dés le début.
On a vu (vérif 5eme génération) que seules les adresses $F0-F2 je crois,
étaient utilisées pour la bonne marche du truc.. on a vu également que la
petite routine LDA STA qui va de $0C00 à $0C0E. on va donc placer notre routine
de réinitialisation des adresses $F0-$F2 dés $0C0F, juste après. ok?
Cette vérif, chargée en $C00 se retrouve vite sur la piste $00 en secteur $0B.
On a vu enfin, que le décodeur se trouvait logé en $0C88. Il suffit donc de
sauter à cette adresse dés que l'on aura remis les bonnes valeurs en $F0-F2.
Modifiez donc à l'octet $0F (pour $C0F) : A9 FC 85 F0 A9 EE 85 F1 85 F2 4C 88 C
Soit la routine bete suivante : (c'est toujours à peu près la meme chose)
LDA #$FC STA $F0 LDA #$EE STA $F1 STA $F2 JMP $0C88. Comprendo ?..

Sub Battle Simulator
--------------------
Cette fois-ci, la vérif se charge et s'éxécute en $0D00, soit du secteur $..
du disk original. La routine de décodage se trouve en $0D7A et il n'y a
aucune routine indispensable dés le début de la "vérif", soit en $D00.
La routine de décodage n'utile que 5 adresses parmi celles contenant les
nibbles lus, à savoir $F0,$F1,$F2,$F3,$F4. On va donc aller éditer au
Copy II+ 5.x le secteur de la vérif, pour y mettre à l'octet $00 la routine
suivante : (meme principe depuis deux ans!)
LDA #$FC STA $F0 STA $F3 LDA #$EE STA $F1 STA $F2 LDA #$E7 STA $F4 JMP $0D7A
soit en héxadécimal : A9 FC 85 F0 85 F3 A9 EE 85 F1 85 F2 A9 E7 85 F4 4C 7A 0D

Dondra : A New Beginning
------------------------
Cette fois ci, la vérif est en $BB00 comme souvent. On a vu qu'il y avait un
déplacement de la pioche sur la piste $B mais on remarque aussi que ce dépla-
cement est annulé par un retour de la pioche sur la piste $00 à la fin de la
vérif; seulement on va sauter au décodeur qui se poursuivra par ce retour
alors il vaut mieux commencer notre routine LDA STA après ce premier
déplacement de la tete en $B. Pourquoi pas ?.. et pour ceux d'entre vous qui
me direz que c'est un déplacement de bras inutile - ce en quoi vous avez
totalement raison puisqu'il n'y a plus rien à lire sur la piste $B, la
désynchro étant absente des copies, evidemment - je répondrais que vous pouvez
très bien si ca vous chante annuler les deux JSR $B9A0, soit - on l'a vu -
les JSR à la routine "seekabs" de déplacement du bras.. m'enfin!..
On voit donc qu'on peut greffer notre routine LDA STA classique juste après
le premier déplacement du bras (après le JSR $B9A0 qui est en $BB09) soit
en $BB0C, pour la terminer par un JMP décodeur soit un JMP $BB7C. (c'est là
qu'on a repéré le début de la routine de décodage (par rapport à celle du
cours) pour cet original). On a vu aussi que cette routine de décodage
n'utilisait que les adresses de $F0 à $F3, aussi n'allons nous que
réinitialiser ces 4 adresses encore une fois. Il suffit donc d'éditer le
secteur de la vérif sur une copie démuffin (on la retrouve en secteur $05
de la piste $00) en $0C : en hexa_ A9 FC 85 F0 85 F3 A9 EE 85 F1 85 F2 4C 7C BB
soit en assembleur: LDA #$FC STA $F0 STA $F3 LDA #$EE STA $F1 STA $F2 JMP $BB7C

Après avoir fait ces modifications, réécrivez le secteur concerné, et c'est
encore une fois gagné !.. merci qui ?..

J'espère que vous avez noté ce qu'il faut chercher à chaque fois pour utiliser
cette méthode de cracking :

        - Adresse de départ du décodeur (pour le jmp)
        - Adresse dans le début de la vérif, où l'on peut "débrancher" la vérif
          (selon s'il y a des initialisations indispensables necessaires à la
          copie déplombée!.. il faut donc alors commencer après ces init_).
        - Adresses de la page *00 à ré-initialiser pour le décodeur
          (on pourrait toutes les ré-initialiser de $F0 à $F7, mais ce serait
          pas très clean (pour nous!))

Voila.. avec les cours 10 et 10.2 vous devez avoir suffisament d'expérience et
de conseils en tout genre pour venir à bout de tout soft epyx ou plombé avec
cette meme protection, non?
et si ce n'est pas le cas, pensez au déplombeur automatique de softs epyx
qui jusqu'ici m'a permi de faire tous les derniers sans meme les booter!
Mais ceci uniquement en cas de force majeure! n'est ce pas ?

        Alors bonne chance pour les prochains, il ne devrait pas y avoir de pb!

                                                                Amicalement, G.
-------------------------------------------------------------------------------


Retour sommaire

hr cours GDF

Les compléments à ce cours.


===============================================================================
LES COMPLEMENTS GEANTS DE CE COURS SONT LES SUIVANTS...               Godfather
===============================================================================

D'abord le copieur d'originaux-plombeur unique au monde :

COMPLEMENT COURS 10 (GODFATHER'S PRODUCTS #5) : EPYX COPY 2.64        Kristo+G.
===============================================================================
Révision 2.64                                                          29/01/88

Les derniers Epyx ont une protection super sympa (voir cours 10).. et de plus
elle est incopiable.. j'ai dit incopiable mais pas in-reproductible.. c'est à
dire qu'aucun copieur n'arrivera à la comprendre pour la recopier, mais si
l'on utilise un programme connaissant la protection, tel le notre, vous pourrez
copier Tous les epyx présentés avec le cours 10 super rapidement !..
De plus, associé au GP's #6 (qui suit), vous pourrez plomber VOS PROPRES
PROGRAMMES avec la meme protection qu'une boite aussi prestigieuse qu'EPYX !..
Nouveau : option single drive copy.

Mais aussi, (at last, but not at least!) le gestionnaire galactique du EBoot
de chez Epyx bien sur, à savoir (version définitive 1.22) :

2ND COMPLEMENT COURS 10 (GODFATHER'S PRODUCTS #6) : EPYX BOOT MAKER 1.22
===============================================================================
Révision 1.22                                                          06/12/87

La protection Epyx 87 est passionnante, d'accord.. mais LE BOOT AUSSI !..
Ce programme est utile pour manier et exploiter ce Epyx_Boot 1.00 au maximum :

* Examiner le pseudo_catalog des softs Epyx, ainsi que le plan de leur disk !
* Récuperer et sauver des fichiers sur le disk /rapport au pseudo_catalog
* Changer le pseudo_boot_program, pour signer les softs Epyx par exemple !
* Pour mad_compacter des programmes (notamment ceux necessitant une rwts 3.3!)
* Gagner la place du command_handler du dos sur les disks pour en mettre plus!
* Rajouter des fichiers aux softs Epyx..
* Méga_fichier explicatif (plus de 130 secteurs)...

                               ...bref, on peut tout manipuler de leur E_Boot!!

Et enfin, je vous rappelle que vous pouvez piocher dans ma logiteque folle
d'originaux epyx (pour vous entrainer) à savoir, vs pouvez me demander :

Original au choix * Street Sports Baseball          (1 face.)
                  * World Games                     (4 faces)
                  * California Games                (2 faces)
                  * Rad Warrior                     (1 face.)
                  * Boulder Dash Construction Kit   (1 face.)
                  * Championship Wrestling          (2 faces)
                  * Movie Monster Game              (2 faces)
                  * Sub Battle Simulator            (2 faces)
                  * Spy vs Spy III                  (1 face.)
                  * Dondra, a new beginning         (6 faces)

Et bientot, si Dieu le veut :

                  * Destroyer                       (pas encore disponible)
                  * Spiderbot                       (pas encore disponible)
                  * Deflexor                        (pas encore disponible)
                  * Tank Simulator                  (pas encore disponible)

Alors ne passez surtout pas à coté de toutes ces bonnes choses!
===============================================================================


Retour sommaire

hr cours GDF

Informations cours.



                        INFORMATIONS CONCERNANT LES COURS
                -------------------------------------------------
                       Fichier mis à jour ce 27 Janvier 88!

===============================================================================
COURS "10 SUITE" : L'Evolution de la protection EPYX depuis 1986!         v1.20
-------------------------------------------------------------------------------
Enfin pret!.. la suite du cours 10 : comment la protection Epyx a évoluée
depuis 1986, date de sa création, jusqu'à maintenant !.. pour que vous puissiez
vous balader sur n'importe quelle protection basée sur celle ci, quelles qu'en
soient les modifications simples apportées !.. pour plus de détails, allez voir
la liste détaillée des cours !.. un original 88 : Dondar, a new beginning !..
mais aussi les deux derniers Epyx : Spy vs spy 3 et Sub Battle Simulator !!..


===============================================================================
BIENTOT => 2 NOUVEAUX COURS : Protection ORIGIN SYSTEMS 87 + Fixez vous la vie!
-------------------------------------------------------------------------------
Vous voulez un conseil..? sautez vite sur ces cours.. ce sont d'une part les
plus longs cours que je n'ai jamais rédigé, et d'autre part peut etre à la fois
les plus balaises, et les plus interessants !.. et utiles.. puisque, en ce qui
concerne la protection origin systems 87, ils viennent d'annoncer Ultima 5 mais
aussi Autoduel 2400, qui devraient (?) etre plombés comme leurs 3 derniers
softs, et en ce qui concerne le cours sur le fixs, parce que avec toutes les
news qui arrivent sans cesse, il y a vraiment de quoi faire.. croyez pas ?
Allez, n'attendez pas !.. je vous posterai une copie de Ultima 5 et de
Roadwar 2400 dés qu'on les aura si c'est bien la meme protection géante !!!...



===============================================================================
REORGANISATION DES GODFATHER'S PRODUCTS 1988                      1er Jan. 1988
-------------------------------------------------------------------------------
Tous les programmes ont été ré-ordonnées par rapport aux divers cours, et un
nouveau programme s'y est adjoint - le plus géant, vous verrez : Wildcard Maker
Mise en catalog AUTOMATIQUE de la plupart des softs !.. oui! AUTOMATIQUE !..
Attention, quand vous commanderez un gp's, indiquez en le NOUVEAU numéro,
ET le nom du programme pour qu'il n'y ait aucune erreur possible par rapport
à l'ancien ordre des godfather's products !.. on progresse messieurs!...



===============================================================================
JE VIENS DE TERMINER...            Godfather's Products #4 : Fast Boot SAM 3.21
-------------------------------------------------------------------------------
Je viens de terminer la version 3.21 du fast boot maker pour le f_boot de sam !
Elle permet d'installer n'importe quel programme en fast boot avec une page
texte au boot !.. de plus, le fast boot est maintenant sans conteste ce que
l'on peut faire de plus rapide en matière de fast boot (copiable)..
Sautez dessus ! faites moi confiance ! vous ne le regretterez pas !!...



===============================================================================
SUR QUOI IL FAUT SAUTER AVANT QUE CA REFROIDISSE...          Cours 10 Rev. 1.61
-------------------------------------------------------------------------------
Epyx prépare pour très bientot plusieurs nouveaux softs géants.. et comme on
les connait, ils vont encore utiliser leur désynchro folle et géante !..
Que dire ?.. à la sortie de California games, Boulder cst et Rad warrior, tout
le monde a sauté sur le cours 10..ou presque.. alors maintenant, à l'aube
d'autres news, il faudrait peut etre que les autres sautent aussi dessus, de
manière à se préparer à la venue imminente de :

                - Street sports baseball                (arrivé le 15/12/87)
                - Spy vs Spy III, Artic Antics     ==>  (arrivé le 25/01/88)
                - Sub Battle Simulator             ==>  (arrivé le 25/01/88)
                - Tank Simulator
                - Spiderbot
                - Deflexor
   mais aussi : - World Games IIe                       (arrivé le 21/12/87)

Sautez vite dessus avant que ca ne refroidisse !!..ainsi que sur le copieur
Epyx 2.64 et sur le Epyx boot maker, si vous voulez vraiment etre incollables
sur le sujet !!.. A très bientot j'espère avec ce cours !..

Ce nouveau soft m'a permi de faire la révision 2.64 du GP#5 : Epyx Copy 2.64..
et j'ai meme baissé son prix de plus de 30% !!.. pour l'occasion !!..



===============================================================================
EVOLUONS MESSIEURS... EVOLUONS...      Godfather's Products #5 : Epyx Copy 1.60
-------------------------------------------------------------------------------
Suite à la sortie de World Games, dont la protection (Epyx) a encore évoluée,
et que le copieur epyx 1.50 ne pouvait ainsi pas reconnaitre comme original
Epyx, j'ai passé une longue nuit de ce beau mois décembre à programmer et
fignoler la version 1.60 de ce plombeur/copieur epyx !.. le seul copieur à
pouvoir vous offrir des copies intactes de tous les originaux Epyx depuis belle
lurette et gai luron !.. De plus, le prix n'a pas changé !!...



===============================================================================
LES DERNIERES REVISIONS DES COURS...           Cours 12 Révision 1.60 + Cours 6
-------------------------------------------------------------------------------
Ajouté à ce cours le super probleme du boot par PR#6.. votre routine print par
$FDED fait tout planter !.. comment ? pourquoi ? comment l'empecher ?
Ensuite, toute la théorie et la logique de la routine cout est expliquée, ainsi
que le principe des fontes graphiques et de sonclav !.. super interessant !
Enfin, et toujours pour ce cours, ajouté le 29/11, tout une partie
supplémentaire concernant la programmation d'une vérification du texte affiché,
toujours contre les name-killers !!.. pour pas qu'on vous enleve du boot !!

Ajouté à Mirage, l'original du cours 6, un locksmith intégré au boot.
Bootez le et tapez esc dés le début du boot : ce n'est plus mirage qui se
charge mais un locksmith 6.0 compatible IIgs et déjà modifié en D4 AA EB pour
faire des copies conformes  de cet original !!...



===============================================================================
LES DERNIERES REVISIONS DES GODFATHER'S PRODUCTS    GP#6 : Epyx Boot Maker 1.22
-------------------------------------------------------------------------------
Grace à l'aide immense de Deny from The ACS-Dijon, je vous propose enfin la
version définitive provisoire (!) du fameux éditeur de catalog Epyx.. cette
version, outre toutes les super options et possibilitées du programme, contient
un méga-fichier texte expliquant le comment-fait-le-programme !..
Un cours en fait !... géant et super utile si vous avez déjà pris le cours 10!



===============================================================================
LES REVISIONS EN PROJETS                                 Cours 11 Révision 2.00
-------------------------------------------------------------------------------
A ce super cours sur les techniques folles de mise en catalog, je vais rajouter
la super technique presque toujours infaillible de Fusco Volant (un ex-cracker
américain!).. utilisant la carte language pour mettre en catalog les softs
n'utilisant pas la carte language !!...



===============================================================================
BUG BUG BUG
-------------------------------------------------------------------------------
Erreur bete dans le Dos eor maker.. le disk obtenu DOIT booter. si ce n'est pas
le cas avec votre version, demandez moi vite l'update janvier 88.



-------------------------------------------------------------------------------
Et je le rappelle : toutes les révisions de cours sont gratuites !!


Retour sommaire