bon, y a deux trois trucs qui me sautent aux yeux, j'ai une grosse hypothèse que j'aimerai confirmer j'ai patché la coupe moteur du loader, si ceux chez qui la copie ne passe pas pouvaient me dire si cette version se charge, ça confirmerait mon soupçon (et je pourrai même faire ensuite un POC) https://1fichier.com/?2bdumfhh3bhuohoz6phu
j'comprenais pas trop pourquoi ça ramait à lire la piste #12, alors j'ai tracé un peu... bah il va lire les données du disque par dessus ce qu'il est en train de faire! donc potentiellement changer le loader donc qui dit loader patché, dit patch sur la piste 0 ET AUSSI sur la piste 12 mais pas au même endroit (secteur 8)
j'ai fait un dump commenté du loader en place, à part des trucs pas propres, y a rien de suspect, le mystère reste entier
Code :
retry call MOTORON_DELAY jr nc,retry ld a,3 ld bc,#cc0 call ReadTrack ; from track 3 read 12 tracks in #C000 => #8000 jr nc,retry ld bc,#bc01 ld hl,#2a call SetCRTC call MOTORON_DELAY jr nc,retry ld sp,#4000 ld a,15 ld bc,#480 call ReadTrack ; from track 15 read 4 tracks in #8000 jr nc,retry call MOTORON_DELAY jr nc,retry ld sp,labBFFF+1 ld a,19 ld bc,#4c0 call ReadTrack ; from track 19 read 4 tracks in #C000 jr nc,retry
ld bc,#bc01 ld hl,#202a call SetCRTC ; set screen ld c,6 ld hl,#181d call SetCRTC ld b,127 xor a ld hl,labBF98 .loop ld c,(hl) out (c),a out (c),c inc l inc a and 3 jr nz,.loop rst 0
SetCRTC out (c),c inc b out (c),h dec b inc c out (c),c inc b out (c),l dec b ret
; ; si on n'arrive pas à avoir le READY et une disquette déprotégée après un (re)démarrage moteur, ; on coupe et on revient au tout tout début du loader ; Sinon, ben on coupe le moteur quand même oO ; MOTORON_DELAY call MotorON ; BE6D ld hl,#C000 .rewait ld b,3 .wait djnz .wait dec hl ld a,h or l jr nz,.rewait
ld bc,#fb7f call GetET3_02 inc a jr z,MotorOFF call MakeCalibration scf jp labBE8D ; couper le moteur WTF ???
; motorOFF MotorOFF and a labBE8D push af ld bc,#fa7e xor a out (c),a pop af ret
MakeCalibration_01 call FDCIsReady ld a,7 call PutFDC xor a out (c),a ld l,255 .get_ET3_loop call FDCIsReady ld a,4 call PutFDC xor a call PutFDC in a,(c) and 16 jp nz,FDCIsReady dec l jr nz,.get_ET3_loop jr MakeCalibration_01
MotorON ld bc,#fa7e ; BEBB ld a,1 out (c),a ret
PutFDC out (c),a ; BEC3 FDCIsReady dec c ; BEC5 .ready in a,(c) rla jr nc,.ready inc c ret
GetET3_02 ld a,4 ; BECD call PutFDC xor a call PutFDC in a,(c) ld l,a and 32 jr z,labBEE7 ld a,l and 64 jr nz,labBEEA call FDCIsReady xor a ; ready + protected ret labBEE7 ld a,255 ; not ready ret labBEEA ld a,254 ; protected ret
SetVar ld (track),a ld h,c ld l,0 ld (destination),hl ret
ReadTrack call SetVar ; préparation des variables, piste, destination, compteurs push bc call MotorON ; on rallume ce qu'on vient d'éteindre... ld bc,#fb7f call GetET3_02 ; statut du lecteur inc a jp z,MotorOFF ; pas ready tu coupes et tu te casses???
call SeekTrack call ReadSector pop bc ld a,c add a,16 ; avance de 4K dans la RAM pour la destination ld c,a ld a,(track) inc a djnz ReadTrack ; on incrémente la piste autant de fois que requis scf ; flag OK ret
SeekTrack call FDCIsReady ld a,15 call PutFDC xor a call PutFDC ld a,(track) call PutFDC ; Sense FDC Int ld a,8 call PutFDC in l,(c) call FDCIsReady in a,(c) ld a,l and 192 ; DEGUEULASSE, on considère OK une erreur de calibration ou un lecteur eteint... jp z,FDCIsReady jr SeekTrack ; DEGUEULASSE !!!!! On ne devrait reboucler que sur le SensInterrupt (et encore, autrement)
ReadSector ld de,#4007 call FDCIsReady ld a,70 call PutFDC call ReadParam ld a,128 out (c),a ; dernier parametre de la commande ReadSector... dec c .ready in a,(c) rla jr nc,.ready and d jr z,GetResult inc c in a,(c) ld (hl),a inc hl dec c jr .ready
GetResult inc c .loop in a,(c) dec e jp z,FDCIsReady call FDCIsReady jr .loop
Inscription : 29 Août 2007, 12:04 Message(s) : 1990 Localisation : seine et marne 77
marcel a écrit :
j'comprenais pas trop pourquoi ça ramait à lire la piste #12, alors j'ai tracé un peu... bah il va lire les données du disque par dessus ce qu'il est en train de faire! donc potentiellement changer le loader donc qui dit loader patché, dit patch sur la piste 0 ET AUSSI sur la piste 12 mais pas au même endroit (secteur 8)
Ah tienssss !!! ça m'étonnait aussi que ce jeu soit pas protégé côté programme !
Il y a la protection Lazer soft dessus, et les mecs de consult software était électroniciens et programmeurs !
_________________ SPS Community Expert (SPS CE) / SPS France
Ah tienssss !!! ça m'étonnait aussi que ce jeu soit pas protégé côté programme ! Il y a la protection Lazer soft dessus, et les mecs de consult software était électroniciens et programmeurs !
Pour moi c'est à double tranchant comme "protection". D'un côté il va écraser toute la RAM en lisant 64K, de l'autre c'est très facile à contourner/reproduire, suffit de lire en linéaire les pistes de 7 à 22 (3 à 6 pour l'image d'intro) et c'est tout! => éventuellement en omettant le dernier secteur de la dernière piste pour faire vraiment son loader +propre et hop
Ça serait intéressant d'avoir le fin mot de l'histoire sur qui a fait quoi et pourquoi?
Pour ce que j’ai testé, la disquette générée avec le kryoflux fonctionne sur mon 464 + ddi-1 mais ne passe pas ni sur mon 664 ni sur deux 6128 differents
Comme toi le redump kryoflux donne le même qu’au départ
Inscription : 29 Août 2007, 12:04 Message(s) : 1990 Localisation : seine et marne 77
breiztiger a écrit :
Hello Denis
Pour ce que j’ai testé, la disquette générée avec le kryoflux fonctionne sur mon 464 + ddi-1 mais ne passe pas ni sur mon 664 ni sur deux 6128 differents
Comme toi le redump kryoflux donne le même qu’au départ
Niquel. Ces andouilles de chez Firebird auraient pu le spécifier, ça aurait évité à tout le monde de perdre du temps à tout désosser et à faire des tests dans tout les sens.
Je vais donc ajouter l'information dans l'archive kryoflux du jeu, et indiquer que le jeu ne tourne que sur 464+DDI-1, plus une étiquette dans la boite du jeu.
_________________ SPS Community Expert (SPS CE) / SPS France
Oui, ce sont leurs machines le problème (et le loader de merde qui ne protège rien y est pour beaucoup) le reste n'est que coincidences
De mon côté j'essaie de remettre en route correctement des CPC avec un 3 pouces ET des cartes d'extension mais l'alimentation semble être le talon d'Achille de l'ensemble...
Inscription : 29 Août 2007, 12:04 Message(s) : 1990 Localisation : seine et marne 77
breiztiger a écrit :
Denis,
il devrait marcher sur 664/6128 comme indique dans le manuel
"LOADING THE GAME
Amstrad CPC 464 tape
Hold down CONTROL and press the small ENTER key. Press PLAY on tape.
Amstrad CPC 6128 and CPC 664 tape.
Hold down SHIFT and press the @ key. Type TAPE and then press RETURN. Hold down CONTROL and press the small ENTER key. Press PLAY on tape.
Amstrad CPC 6128, 664 and 464 disc. Hold down 'SHIFT' and press the '@' key. Type CPM and then press RETURN."
Alors c'est pas normal...... Et je vois mal Firebird mettre en vente à l'époque un soft non testé avec un loader pourri qui ne passe pas sur certaines machines......
_________________ SPS Community Expert (SPS CE) / SPS France
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 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