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.
----------------------------------------------------------------------
DOS 3.3 |
Download Cours GDF 10.2 rev 1.20 (gzipped) |
|
DOS 3.3 |
Download Cours GDF 10.2 rev 1.00 Copperfield
(gzipped) |
-------------------------------------------------------------------------------
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.
-------------------------------------------------------------------------------
===============================================================================
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
===============================================================================
===============================================================================
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
===============================================================================
===============================================================================
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
===============================================================================
-------------------------------------------------------------------------------
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 !...
-------------------------------------------------------------------------------
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
-------------------------------------------------------------------------------
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.
-------------------------------------------------------------------------------
===============================================================================
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!
===============================================================================
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
!!