Inscription : 29 Août 2007, 12:04 Message(s) : 1989 Localisation : seine et marne 77
markerror a écrit :
Bonsoir,
Euh, c'est surtout super chiant à faire . Et le plus difficile n'est pas de decoder le loader/ récupérer les données d'un jeu, mais réussir à le faire fonctionner en format fichier (s'il y a des rechargements et si la ram est utilisée à 99%, ce qui arrivait quand même de temps en temps). Si le nombre de crackers s'est réduit à la fin de la vie du CPC, c'est aussi que la Multiface ne suffisait plus pour faire des cracjs propres ).
T&J/GPA
tu te sers du loader, c'est à dire que tu vas modifier le loader pour qu'il te charge les données normalement, sauf que tu vas mettre une routine qui va
halter le chargement. J'explique simplement par rapport à ce que je sais :
1) Le loader vient de se charger, maintenant le z80 a la tache de le décrypter.
2) Il est décrypté -> sauvegarde sur une disquette vierge.
3) Examen du loader avec les routine de chargement spéciale pour lire
les pistes dotées de secteurs de taille 6.
4) trouver la routine qui ressemble à :
table de fichier :
Fichier 01 Piste 02 à 05 / offset &500 à &4500
Fichier 02 Piste 06 à 08 / offset &4500 à &4800
et ainsi de suite. L'déal, c'est de se débrouiller pour ripper TOUTES les pistes en RAM. Avec les émulateurs on a accès à 512 ko de RAM. Donc y a
pas de pb la dessus.
Si on rippe par fichier, alors on va modifier le loader afin qui charge par
le nombre du fichier exemple :
fichier 01
fichier 02
fichier 03 etc....
Dans le loader 01 dans le nom du fichier doit être utilisé comme variable.
et donc faire comprendre au jeu qu'au lieu de charger la piste X,Y,Z
faut charger le fichier 01, 02 ou 03.
ça permet de niquer la gueule aux jeux MFM et qui utilisent un changement de format.
Ah tiens, puisque vos mémoires semblent être en meilleur état que la mienne, je suis à la recherche d'un défragmenteur de disquettes dont le listing avait dû être publié dans Amstrad 100% ou CPC infos.
Quelqu'un aurait ça SVP ?
Edit: J'allais oublier (ma pauvre mémoire ), je cherche aussi la version fichier ROM de DEStext. J'ai trouvé le DSK sur le net mais pas la ROM
1) Comme le dit Markerror, l'utilitaire Floppy dans Hercule II a une fonction de Lire Piste et de mémoire on peut même sauvegarder le résultat dans un fichier.
2) Cette fonction n'a pas l'air de marcher sur les émulateurs sur PC, donc à essayer sur CPC.
3) Dans le post http://cpcrulez.free.fr/forum/viewtopic.php?f=6&t=223&st=0&sk=t&sd=a&start=97 on s'amuse à cracker Hercule II, et j'en suis justement au niveau du test de la protection, qui utilise une routine de LirePiste, exactement ce que tu recherches ! N'hésite pas à regarder dans quelques semaines aux alentours de la page 9 ou 10, car pour l'instant je n'ai rien écrit là-dessus (c'est un peu compliqué à comprendre...)
4) Sinon, le plus simple c'est d'obtenir un scan du livre "Le livre du lecteur de disquette sur Amstrad" aux éditions Micro Application, que je cherche depuis longtemps sur le net sans succès...si quelqu'un l'a en papier, merci de penser à en faire un scan !! Sinon on en voit passer raremetn sur eBay.
Inscription : 20 Août 2007, 18:21 Message(s) : 4993
Citer :
4) Sinon, le plus simple c'est d'obtenir un scan du livre "Le livre du lecteur de disquette sur Amstrad" aux éditions Micro Application, que je cherche depuis longtemps sur le net sans succès...si quelqu'un l'a en papier, merci de penser à en faire un scan !! Sinon on en voit passer raremetn sur eBay.
si quelqu'un a une version papier, je suis biensur partant pour en faire un scan/ocr et le mettre en ligne sur le site..
Voici le code de LIRE_PISTE qui se trouve dans le test de la protection d'HERCULE II:
Code :
'PROGRAMME DE LECTURE_PISTE DU LECTEUR DE DISQUETTE AMSTRAD
ld c,#07 call #b90f ld de,#2500 où DE contient le numéro de la piste call #c045 di ld hl,TABLE voir tout en bas (codes correspondant à LIRE_PISTE) ld bc,#fb7e ld e,#09
la0ba: cette boucle envoie au FDC les 9 octets de l'instruction lire piste ld a,(hl) call #c95c inc hl dec e jr nz,la0ba ld hl,ADRESSE c'est l'adresse où on veut que les données soient stockées ld de,#1800 c'est le nombre d'octets que l'on veut lire jr la0d4
la0ca: boucle de lecture piste (attention on y entre par la0d4: ) ld a,d or e jr z,la0d4 lit tant que DE n'est pas nul inc c in a,(c) lit l'octet suivant ld (hl),a stocke dans HL l'octet lu inc hl dec c dec de la0d4: in a,(c) jp p,la0d4 and #20 jr nz,la0ca
ei call #c91c
' ici les 3 flags de résultat de la lecture de la piste se trouvent en: ' #BE4C, #BE4D, #BE4E
RET
TABLE: def #42,0,#24,0,#c1,2,#c1,#2a,#ff (de mémoire ces codes n'ont pas grande importance, à part les 2 premiers; à vérifier dans le livre sur le "lecteur de disquette")
Et une autre manière de procéder, tout simplement télécharger Hercule II (sur ce site dans la partie Utilitaires) et lister le Basic du programme FLOPPY qui contient l'instruction Lire_Piste, mais au final ça doit ressembler au ci-dessus.
Merci de me confirmer que le code ci-dessus fonctionne bien !
hERMOL, si tu le juges utile, tu peux placer ce programme dans la partie de CPCrulez autour de http://cpcrulez.free.fr/coding_asm38b.htm ou 36b qui décrivent du code pour gérer des pistes et secteurs...
Inscription : 12 Juin 2008, 20:29 Message(s) : 1709
TABLE: def #42,0,#24,0,#c1,2,#c1,#2a,#ff (de mémoire ces codes n'ont pas grande importance, à part les 2 premiers; à vérifier dans le livre sur le "lecteur de disquette")
voilà ce qui est demandé exactement au FDC :
&42 01000010 Send Command READ A TRACK avec "non" to SK Skip SK stands for Skip Deleted Data Address Mark avec "oui" to MFM ??? If MF is low, FM mode is selected and if it is high, MFM mode is selected.
&00 00000000 lecteur de disquette = A Tête du lecteur = 0
#24
numéro du cylindre = 36
0
numéro de tête de lecture = 0
&c1
numéro de secteur = &c1
&02
numéro de data du secteur
#c1
fin de piste
#2a
GPL stands for the length of Gap 3 (spacing between sectors excluding VCO Sync field)
#ff
When N is defined as 00, DTL stands for the data length which users are going to read out or write into the sector.
pour info également, je réalise en ce moment un programme z80 pour piloter le fdc et j'ai vu que winape ne savait pas faire la commande "read id" du FDC !!!
pour info également, je réalise en ce moment un programme z80 pour piloter le fdc et j'ai vu que winape ne savait pas faire la commande "read id" du FDC !!!
Salut Megachur, intéressant, sur la base de ton expérience quel est l'émulateur qui émule le mieux le FDC ?
(après quelques petits tests sans prétention, personnellement j'avais conclu à WinAPE car il arrivait à faire tourner le copieur Hercule II. Mais vu ce que tu nous dis sur "read id"...)
Inscription : 12 Juin 2008, 20:29 Message(s) : 1709
En fait, je me suis avancé un peu vite...
Il se trouve que l'émulation de winape est finalement mieux que celle de CPCE par exemple.
Car le Read Id doit renvoyer le secteur qui est juste lisible en ce moment par le FDC : winape me renvoyait jamais le même (après un seek à la piste 0) alors que cpce me renvoyait toujours "&c1"
et en fait c'est l'émulation fdc de winape qui est la mieux car c'est normal que lorsqu'on y arrive pas avec le même timing, la tête de lecture ne soit pas toujours à la même place !!!
Sinon, j'ai implémenté la commande "read data" également -> ce qui est bizarre, c'est qu'il ne faut pas fournir le paramètre GAP3 (GPL) sinon le FDC renvoie un 'abnormal termination of command' ou selon les valeurs 'end of cylinder'... je pense que cela ne doit être utile que pour le write, et que pour le reste, en lecture, il lit juste ce qu'il y a sur le disque en fonction du secteur id (ex : &c1 pour un disc formaté en data standard) et de la longueur attendu (ex : &02 pour un disc formaté en data standard)...
dans l'exemple :
TABLE: defb #42,0,#24,0,#c1,2,#c1,#2a,#ff
#2a et #ff sont inutiles et devrait être à 0 !
#2a car cela ne semble servir à rien au FDC (juste à faire un Abnormal Termination of command ou un 'j'ai dépassé le cylindre') #ff est inutile car le paramètre N n'est pas à 0 (mais à 2) !!!
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 74 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum