Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.129 - CLIENT : 54.224.166.141

 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 

Apple Puck Man (Broderbund, 1981)

 
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Mer 09 Mar 2016, 20:02    Sujet du message: Apple Puck Man (Broderbund, 1981) Répondre en citant

#804 - This is Star Craft's Pac-man clone, named Apple Puck-Man, and published by Broderbund in 1981. Turn your monitor...

Protection type
This is a single-load program on a 5.25" floppy disk. The disk has data from track 0 to track C.
The format is a pseudo DOS 3.2. I say so because the disk boots on a 16-sec controller card. So, what they used is a 13-sec format to prevent evil pirates from copying the game, and added a 16-sec boot sector.

Let's get the RWTS
9600<C600.C6FFM
96FB:20 FDDA 60
9600G
*Beep* We have the T0/S0 at $0800.
This looks like a DOS 3.2 one that relocates at $200 then loads another T0/S0 now with the 5.3 encoding scheme. By default, to be compatible with 13 and 16-sec controllers, publishers put two sectors 0 on the track 0. One being encoded 6.2 for 16-sec and one 5.3 for 13-sec.
We can go further and get the second sector 0:
96FB:A9 59 8D 842 A9 FF 8D 84C 4C 801
9600G
*Beep* We have the second one at $0300.

The best way would be to go further and patch the second sector 0 but I let the exercise to you Wink

Now, I consider you have passed that step and that you have the RWTS at $B700..$BFFF.

It performs some inits and then reads the disk from T1/S0 starting at address $0400 until it has read $93 sectors. You'll hear the arm make noise, that's normal, that is because data is loaded in the text screen holes where values of the last track is recorded. You'll also see some garbage on the text screen, that's also normal, there is some code at $400.

Once the program is loaded, a jump to $400 is performed. Some data is decyphered with value #$A5 and the memory address and then a jump to $4B00 is done and one to $1FE0.

What is important is the load process. Broderbund has slightly changed the DOS 3.2 data markers and at $B800, you can see some code:

Code:

B800:48             PHA                 
B801:AD EC B7       LDA   $B7EC         
B804:09 AA          ORA   #$AA         
B806:8D 80 B9       STA   $B980         
B809:68             PLA                 
B80A:4C 00 BD       JMP   $BD00   


Interesting! The second marker of the data field is mixed with the track number. A simple DOS 3.2 to DOS 3.3 copy would not work. We'll have to use that routine again.

How to copy
Let's use Advanced Demuffin from my copy disk. Load the DEMU.RWTS3.2 at B700.
First, copy T0/S1 to T0/S9 or limit to T0/S1. Why? We either want the complete DOS 3.2 RWTS or at least the most important sector, the one that loads the game, it is on track 0 sector 1.
Then, enter the monitor at:
Code:

BD00:20 08 02 EA
280:84 48 85 49 48 A0 04 B1 48 09 AA 8D 80 B9 68 60

$BD00 is the entry point of the RWTS, we tell it to call $280. At $280, we save the pointer to the IOB table and set the second data marker like the routine at $B800.
Now, press ctrl-Y and copy T1/S0 to TC/SC.

Let's normalize the disk
We have a 16-sec disk with a 13-sec RWTS, ahem... I've decided to copy a DOS 3.3 RWTS on my disk. So...
- Launch my copy disk, select Disk Fixer v4
- Insert a DOS 3.3 slave disk in drive 1
- Insert your nearly-cracked disk in drive 2
- Read T0/S0 and press C to copy to drive 2
- Do the same operation for sectors 2 to 9, you'll copy the DOS 3.3 RWTS.
Do not copy T0/S1 as it contains the load program
Now, edit T0/S1 on the nearly-cracked disk
At offset $B9, replace $B8 with $BD to tell the load routine to directly jump to the entry point of the RWTS.


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

Reboot and... enjoy,

LoGo
3/2016
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Mer 09 Mar 2016, 20:08    Sujet du message: Répondre en citant

And some code...

Code:

----------- DISASSEMBLY MODE -----------
B7B5:08             PHP                 
B7B6:78             SEI                 
B7B7:20 00 B8       JSR   $B800         
B7BA:B0 03          BCS   $B7BF         
B7BC:28             PLP                 
B7BD:18             CLC                 
B7BE:60             RTS                 
B7BF:28             PLP                 
B7C0:38             SEC                 
B7C1:60             RTS                 

...

B800:48             PHA                 
B801:AD EC B7       LDA   $B7EC         
B804:09 AA          ORA   #$AA         
B806:8D 80 B9       STA   $B980         
B809:68             PLA                 
B80A:4C 00 BD       JMP   $BD00         

...

B970:BD 8C C0       LDA   $C08C,X       
B973:10 FB          BPL   $B970         
B975:C9 D5          CMP   #$D5         
B977:D0 F0          BNE   $B969         
B979:EA             NOP                 
B97A:BD 8C C0       LDA   $C08C,X       
B97D:10 FB          BPL   $B97A         
B97F:C9 AA          CMP   #$AA      ; CHANGE 2ND MARKER
B981:D0 F2          BNE   $B975         
B983:A0 03          LDY   #$03         
B985:BD 8C C0       LDA   $C08C,X       
B988:10 FB          BPL   $B985         
B98A:C9 B5          CMP   #$B5         
B98C:D0 E7          BNE   $B975         
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