Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.65 - CLIENT : 54.221.147.93

 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Pipe Dream IIgs (Lucasfilm, 1990)

 
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 2949
Localisation: Le Chesnay, France

MessagePosté le: Sam 09 Jan 2016, 10:37    Sujet du message: Pipe Dream IIgs (Lucasfilm, 1990) Répondre en citant

A great SHR semi-arcade, semi-board game. You are a plumber and you must assemble a certain number of pipes to let the water flow. A very challenging one.

At first, I thought there were differences with the 8-bit protection scheme because I played with the same zero page address ($80) and the game kept on running the protection and displayed GAME OVER instantly after three attempts. Boy, I was wrong, the $80 address on the 16-bit version is used as the game over flag. From 8-bit to 16-bit, some zero page values have grown from 1-byte to 2-bytes and $80 on 8-bit has become $A6 on 16-bit. That's all, no checksum, absolutely no change from the 8-bit version.

Protection type
It is an off-disk protection. You must assemble three pipes to match a color. If you succeed, you can play. If you miss three times... you can play! How weird? So, what is the interest of putting a protection if its result is not used. Really?!?

No... Just play and you'll have a long message telling that people at Lucasfilm want the best for the players, buy our games. And, they are right! We'll have to find how that text is activated.

How to pseudo boot-trace
In file PM0, we find a pointer to the string "PRESS ANY KEY TO CONTINUE". After some jumps, the code at $47C6 that starts the password protection check depending on the value of zero page index $A6.

By default, that value is set to #$FF
At $B289, the branch is taken because it matches the BMI (bit 7=1) and the check is performed.
If we fail entering the password three times, $A6 is set to #$00 and then, the long message is displayed, see $4A2C.
But, if we put #$01 at $80 then:
1. The protection routine is not called
2. The later warning message is not displayed.
And we're done!

We need to find some room to init $A6 to #$0001. At the entry point of the game at $4D7C, there is a LDA #$0001, we will move some code up by two bytes ($4D98..$4DA3 to $4D96..$4DA1) and put a 85 A6 (STA $A6) at $4DA2, that way we will answer to the original request of forcing $A6 to be #$0001.

How to copy
Use ZZCopy or Photonix II to copy your original that you put afterwards in a dry and safe place.

How to crack
Launch Block.Warden
Prefix /PIPEDREAM/DATA/
Follow PM0
At offset $4D96: 84 A6 8C F8 2A 20 BA A0 20 85 2A A9 01 00 => 8C F8 2A 20 BA A0 20 85 2A A9 01 00 85 A6
Save the block

The disk image is available at http://www.brutaldeluxe.fr/crack/

Reboot and... enjoy,
LoGo
1/2016


Dernière édition par toinet le Sam 09 Jan 2016, 10:42; édité 1 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 2949
Localisation: Le Chesnay, France

MessagePosté le: Sam 09 Jan 2016, 10:39    Sujet du message: Répondre en citant

Excerpt from the code:

Code:

00/4D7C: 78                         SEI                                         
00/4D7D: 18                         CLC                                         
00/4D7E: FB                         XCE                                         
00/4D7F: C230                       REP   #$30                                 
00/4D81: 4B                         PHK                                         
00/4D82: AB                         PLB                                         
00/4D83: F40000                     PEA   $0000                                 
00/4D86: 2B                         PLD                                         
00/4D87: A9FF01                     LDA   #$01FF                               
00/4D8A: 1B                         TCS                                         
00/4D8B: AFCA00E1                   LDAL  $E100CA                               
00/4D8F: 8522                       STA   $22                                   
00/4D91: A0FFFF                     LDY   #$FFFF          ; INIT VARIABLES
00/4D94: 845C                       STY   $5C                                   
00/4D96: 84A6                       STY   $A6             ; <= THE PROTECTION FLAG
00/4D98: 8CF82A                     STY   $2AF8                                 
00/4D9B: 20BAA0                     JSR   $A0BA           ; INIT MOUSE         
00/4D9E: 20852A                     JSR   $2A85           ; RANDOM NUMBER       
00/4DA1: A90100                     LDA   #$0001                               
00/4DA4: A00100                     LDY   #$0001                               

The timer before the message is displayed:

00/3779: A568                       LDA   $68                                   
00/377B: F005                       BEQ   $3782                                 
00/377D: C668                       DEC   $68                                   
00/377F: 4C29CF                     JMP   $CF29                                 
00/3782: 2480                       BIT   $80                                   
00/3784: 1003                       BPL   $3789                                 
00/3786: 4C9C37                     JMP   $379C                                 
00/3789: 60                         RTS                                         
00/378A: A6A6                       LDX   $A6             ; ANSWER OK?         
00/378C: E00100                     CPX   #$0001                               
00/378F: F00A                       BEQ   $379B           ; YES                 
00/3791: A6AA                       LDX   $AA                                   
00/3793: E0100E                     CPX   #$0E10                               
00/3796: 9003                       BCC   $379B                                 
00/3798: 4C2C4A                     JMP   $4A2C                                 
00/379B: 60                         RTS                                         
00/379C: 6480                       STZ   $80                                   
00/379E: A90000                     LDA   #$0000                               
00/37A1: A00200                     LDY   #$0002                               
00/37A4: 20A24B                     JSR   $4BA2                                 

The routine that displays the long message:

00/4A2C: 204899                     JSR   $9948           ; DISPLAY MESSAGE     
00/4A2F: 20834A                     JSR   $4A83                                 
00/4A32: 20329C                     JSR   $9C32                                 
00/4A35: A9FFFF                     LDA   #$FFFF                               
00/4A38: A00000                     LDY   #$0000                               
00/4A3B: 207D9C                     JSR   $9C7D                                 
00/4A3E: A9B608                     LDA   #$08B6                               
00/4A41: A20039                     LDX   #$3900                               
00/4A44: 20989C                     JSR   $9C98                                 
00/4A47: 20A19B                     JSR   $9BA1                                 
00/4A4A: 4C4A4A                     JMP   $4A4A           ; LOOP               
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 2949
Localisation: Le Chesnay, France

MessagePosté le: Sam 09 Jan 2016, 10:39    Sujet du message: Répondre en citant

The block view with Block.Warden:

Code:

Before the change:

Block: $019D (413)      Volume name: PIPEDREAM       Thursday    8-Jan-16  9:05
Prefix: /PIPEDREAM/DATA/                                                       
Following: PM0, Type BIN, Rel block 39, Byte $004D00                           
(c) Q      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F             R/W mode
1988ZSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
    Z 100: 0A A2 C8 24 86 00 A2 AF 26 86 04 B2 00 29 FF 00   ."H$.."/&..2.).   
  b Z 110: C9 FF 00 F0 EC C9 80 00 F0 20 0A AA BD 70 28 8D   I.plI..p .*=p(.   
B y Z 120: 9A 24 A9 00 10 8D 9C 24 A9 24 00 8D 9E 24 A9 FF   .$)....$)$...$)   
L   Z 130: 00 8D A0 24 20 58 4C 20 91 4C B2 04 29 FF 00 C9   .. $ XL .L2.).I   
O G Z 140: FF 00 F0 BD C9 80 00 F0 20 0A AA BD 70 28 8D 9A   .p=I..p .*=p(..   
C l Z 150: 24 A9 00 00 8D 9C 24 A9 12 00 8D 9E 24 A9 C0 00   $)....$)....$)@.   
K e Z 160: 8D A0 24 20 58 4C 20 91 4C A2 07 00 20 90 9B CA   . $ XL .L".. ..J   
  n Z 170: 10 FA E6 00 E6 04 20 F9 3F 90 90 60 78 18 FB C2   .zf.f. y?..`x.{B   
W   Z 180: 30 4B AB F4 00 00 2B A9 FF 01 1B AF CA 00 E1 85   0K+t..+)../J.a.   
A B Z 190: 22 A0 FF FF 84 5C>84 A6 8C F8 2A 20 BA A0 20 85   " .\.&.x* :  .   
R r Z 1A0: 2A A9 01 00<A0 01 00 22 A6 08 00 A9 01 00 A0 02   *).. .."&..).. .   
D e Z 1B0: 00 22 A6 08 00 20 F2 9B 64 5E 64 60 64 62 4C FA   ."&.. r.d^d`dbLz   
E d Z 1C0: 3B A9 FF 01 1B 20 4E 99 20 83 4A A9 03 00 8F 26   ;).. N. .J)...&   
N o Z 1D0: C0 E1 8F 10 C0 E1 4C 48 3C A9 FF 01 1B 20 4E 99   @a..@aLH<).. N.   
  n Z 1E0: 20 83 4A 4C 7B 40 A9 FF 01 1B 20 4E 99 20 83 4A    .JL{@).. N. .J   
    Z 1F0: 20 52 2A 20 FA 2A 20 C6 47 20 A5 2A 20 65 30 64    R* z* FG %* e0d   

After the change:

Block: $019D (413)      Volume name: PIPEDREAM       Thursday    8-Jan-16  9:06
Prefix: /PIPEDREAM/DATA/                                                       
Following: PM0, Type BIN, Rel block 39, Byte $004D00                           
(c) Q      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F             R/W mode
1988ZSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
    Z 100: 0A A2 C8 24 86 00 A2 AF 26 86 04 B2 00 29 FF 00   ."H$.."/&..2.).   
  b Z 110: C9 FF 00 F0 EC C9 80 00 F0 20 0A AA BD 70 28 8D   I.plI..p .*=p(.   
B y Z 120: 9A 24 A9 00 10 8D 9C 24 A9 24 00 8D 9E 24 A9 FF   .$)....$)$...$)   
L   Z 130: 00 8D A0 24 20 58 4C 20 91 4C B2 04 29 FF 00 C9   .. $ XL .L2.).I   
O G Z 140: FF 00 F0 BD C9 80 00 F0 20 0A AA BD 70 28 8D 9A   .p=I..p .*=p(..   
C l Z 150: 24 A9 00 00 8D 9C 24 A9 12 00 8D 9E 24 A9 C0 00   $)....$)....$)@.   
K e Z 160: 8D A0 24 20 58 4C 20 91 4C A2 07 00 20 90 9B CA   . $ XL .L".. ..J   
  n Z 170: 10 FA E6 00 E6 04 20 F9 3F 90 90 60 78 18 FB C2   .zf.f. y?..`x.{B   
W   Z 180: 30 4B AB F4 00 00 2B A9 FF 01 1B AF CA 00 E1 85   0K+t..+)../J.a.   
A B Z 190: 22 A0 FF FF 84 5C>8C F8 2A 20 BA A0 20 85 2A A9   " .\.x* :  .*)   
R r Z 1A0: 01 00 85 A6<A0 01 00 22 A6 08 00 A9 01 00 A0 02   ...& .."&..).. .   
D e Z 1B0: 00 22 A6 08 00 20 F2 9B 64 5E 64 60 64 62 4C FA   ."&.. r.d^d`dbLz   
E d Z 1C0: 3B A9 FF 01 1B 20 4E 99 20 83 4A A9 03 00 8F 26   ;).. N. .J)...&   
N o Z 1D0: C0 E1 8F 10 C0 E1 4C 48 3C A9 FF 01 1B 20 4E 99   @a..@aLH<).. N.   
  n Z 1E0: 20 83 4A 4C 7B 40 A9 FF 01 1B 20 4E 99 20 83 4A    .JL{@).. N. .J   
    Z 1F0: 20 52 2A 20 FA 2A 20 C6 47 20 A5 2A 20 65 30 64    R* z* FG %* e0d   
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster 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 voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com