Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.129 - CLIENT : 54.156.58.187

 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 

Spy's demise (Penguin Software, 1982)

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

MessagePosté le: Jeu 02 Juin 2016, 21:49    Sujet du message: Spy's demise (Penguin Software, 1982) Répondre en citant

#874 - Arcade action by Alan Zeldin. A great game from 1982. One of the first games I have ever played on the Apple II. A big thanks to Paul for the .edd image of it and a big shit to J. Wink

Disk structure
This is a 16-sec 6*2 encoded nibbles disk. There is no extra track, there is no DOS but there are two DOS 3.3 files on the disk.
The header markers of the address field are different from the standard, but are the same for the epilog markers of the address and data fields:
- address field: for even tracks D5AA96 DAAAEB (instead of DEAAEB)
- address field: for odd tracks D4AA96 DAAAEB (instead of D5AA96 DAAAEB)
- data field: D5AAAD DAAAEB (instead of DEAAEB)

The D5/D4 is easy to handle because each divided by 2 (LSR) gives 6A. So, the code has to check for 6A. If that matches, we can read the rest of the address field.

The first $11 tracks have data. That does not mean that we have data on all sectors but at least, those are formatted. The rest is garbage.

Boot trace
Not very useful here. The Disk II controller card loads T0/S0 at $800, gives control to $801 which loads a RWTS at $B700..$BFFF then control is given to $B700. There, we find some usual inits and data is read through the A/X/Y registers (see code). The title screen is loaded first then the program at $6000. Then control is given to the program at $6000.
Note that the RWTS is accessed not by the usual $B7B5 entry point but by $8D2 that reads a T/S but reboots the disk if a read or write error occurred.

How to copy
It must be noted that the RWTS is slightly changed from the standard, so I've opted for a change of the RWTS at $B800..$BFFF. We'll put one from a slave DOS 3.3 disk.

So:
- Launch Advanced demuffin 1.4 from my copy disk
- Press P to bypass boot
- Insert original in drive 1, blank disk in drive 2
- Enter the monitor
Code:

B930: 18 60 EA /* shunt the epilog markers check of the data field
B954: 4A C9 6A D0 EF /* dive the nibble by 2 and compare with 6A
B98B: 18 60 EA /* shunt the epilog markers check of the address field

- Press Control-Y to return to the program
- Convert disk
- Select 16-sectors
- Copy from T0/S0 to T11/SF
Now, you have a standard 16-sec disk. You have to update the RWTS.

Standardize the disk
Now,
- Launch Disk Fixer from my copy disk and
- Insert a DOS 3.3 slave disk in drive 1 (you still have a non bootable disk in drive 2)
- Copy T0/S2 to T0/S9 (to put a standard RWTS)
- T0/S1/56: DA -> DE /* to set the standard first epilog marker
- T0/S8/15: A5 -> 24
- T0/S8/25: E1 -> 00
The two above changes to bypass the volume check. We never know if the game checks that. It is set as 0 (ie. all volume values accepted) but it is safer to perform the two changes.

Disk organization
Here are the different files. The DOS 3.3 TS file allocation is loaded at $200 then all sectors are loaded one after the other until the end of the TS allocation table (when 0/0 is found)
- T4/SF, address $4000: title screen
- T5/SA, address $6000: game code
- T0/SF, address $80FF: score file (routines at $80D8 to load it, $80E1 to save the score table)

Note that I've set the right information on T11/S0 and T11/SF. Track $11 is the DOS 3.3 catalog track. So, I've added two files (TITLE and SPY'S DEMISE) that point to their TS list. So, you can play directly from the binary files. Don't forget to deactivate the RW of the score table by putting a 60 at T7/S9/D8 (replacing a 4C)

Qkumba, please?

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

Reboot and... enjoy,

LoGo
6/2016


Dernière édition par toinet le Jeu 02 Juin 2016, 22:15; é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: 2886
Localisation: Le Chesnay, France

MessagePosté le: Jeu 02 Juin 2016, 21:56    Sujet du message: Répondre en citant

How data is loaded:

Code:

----------- DISASSEMBLY MODE -----------
0000:8E E9 B7       STX   $B7E9         
0003:8E F7 B7       STX   $B7F7         
0006:BD 88 C0       LDA   $C088,X       
0009:A0 07          LDY   #$07         
000B:A9 00          LDA   #$00         
000D:99 78 04       STA   $0478,Y       
0010:99 F8 04       STA   $04F8,Y       
0013:88             DEY                 
0014:10 F7          BPL   $000D         
0016:A2 40          LDX   #$40          ; load address
0018:A9 0F          LDA   #$0F          ; sector of the file TS list
001A:A0 04          LDY   #$04          ; track of the file TS list
001C:20 41 B7       JSR   $B741         ; read please
001F:2C 52 C0       BIT   $C052         
0022:2C 57 C0       BIT   $C057         
0025:2C 50 C0       BIT   $C050         
0028:2C 55 C0       BIT   $C055         
002B:A2 60          LDX   #$60         
002D:A9 0A          LDA   #$0A         
002F:A0 05          LDY   #$05         
0031:20 41 B7       JSR   $B741         
0034:4C 00 60       JMP   $6000         
0037:6C F2 03       JMP   ($03F2)       
003A:A9 B7          LDA   #$B7          ; go read
003C:A0 E8          LDY   #$E8         
003E:4C D2 08       JMP   $08D2         

0041:D8             CLD                 ; entry point
0042:CA             DEX                 ; RAM pointer--
0043:86 1A          STX   $1A           ; save RAM pointer
0045:8D ED B7       STA   $B7ED         ; save sector
0048:8C EC B7       STY   $B7EC         ; save track
004B:A9 00          LDA   #$00          ; load TS at $0200
004D:8D F0 B7       STA   $B7F0         
0050:A9 02          LDA   #$02         
0052:8D F1 B7       STA   $B7F1         
0055:A9 DE          LDA   #$DE          ; set markers
0057:8D 91 B9       STA   $B991         
005A:8D 35 B9       STA   $B935         
005D:20 3A B7       JSR   $B73A         ; read TS
0060:A9 FC          LDA   #$FC          ; set low pointer to $FC
0062:8D F0 B7       STA   $B7F0         ; coz DOS 3.3 uses the
0065:A5 1A          LDA   $1A           ; first 4 bytes for address
0067:8D F1 B7       STA   $B7F1         ; and length of file
006A:A9 0C          LDA   #$0C          ; start at $020C
006C:85 1C          STA   $1C           ; within the TS list
006E:A9 02          LDA   #$02         
0070:85 1D          STA   $1D           
0072:A0 00          LDY   #$00         
0074:B1 1C          LDA   ($1C),Y       ; exit if T is 0
0076:F0 14          BEQ   $008C         
0078:8D EC B7       STA   $B7EC         ; set T
007B:E6 1C          INC   $1C           
007D:B1 1C          LDA   ($1C),Y       
007F:8D ED B7       STA   $B7ED         ; set S
0082:E6 1C          INC   $1C           
0084:20 3A B7       JSR   $B73A         ; read TS
0087:EE F1 B7       INC   $B7F1         ; RAM++
008A:D0 E6          BNE   $0072         
008C:A9 00          LDA   #$00          ; exit OK
008E:85 48          STA   $48           
0090:60             RTS                 
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
qkumba



Inscrit le: 29 Jan 2012
Messages: 168

MessagePosté le: Ven 03 Juin 2016, 20:04    Sujet du message: Répondre en citant

ProDOS version is done now.
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