Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.1 - CLIENT : 54.235.48.106

 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 

Lady Tut (Programme, 1983)

 
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: Lun 12 Sep 2011, 21:19    Sujet du message: Lady Tut (Programme, 1983) Répondre en citant

We won't start by the usual sentences as the game is heavily protected and requires some information to be said:

- 6502 compatible program only
- use of the ROM to decypher opcodes
- all of that in the boot 1 at $0800 Wink

Antoine
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Archange427



Inscrit le: 01 Avr 2011
Messages: 535
Localisation: 92

MessagePosté le: Lun 12 Sep 2011, 21:29    Sujet du message: Répondre en citant

T'as réussi à la booter finalement ou t'as mis la main sur une autre version que la mienne ?
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: Lun 12 Sep 2011, 22:16    Sujet du message: Répondre en citant

Archange427 a écrit:
T'as réussi à la booter finalement ou t'as mis la main sur une autre version que la mienne ?


This is your disk. It does not boot past boot 1. I'll boot it on a IIc or on an unenhanced IIe to check whether the disk is correct or not. If not, I'll stop there and give it back to you. If it boots, I'll try to crack it on a 8-bit machine.

I can't decently crack it on the IIgs because the 6516 opcodes prevents me from getting correct values (register status is one of them)

Antoine
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: 176

MessagePosté le: Lun 17 Aoû 2015, 22:44    Sujet du message: Répondre en citant

The boot sector looks like this:

Code:
0800                 .BYTE   0
0801                 JSR     $FF4A
0804                 AND     #$FB
0806                 INC     $3F4
0809                 STA     $2E
080B                 LDY     #$FF
080D                 STY     $3E    ;important later
080F                 STY     $42    ;important later
0811 loc_811:
0811                 EOR     $800,Y
0814                 STA     $800,Y
0817                 DEY
0818                 BNE     $811


FF4A? Turning to our trust monitor sources, we see this:

Code:
FF4A    SAVE         STA     ACC        ;SAVE 6502 REG CONTENTS
FF4C    SAV1         STX     XREG
FF4E                 STY     YREG
FF50                 PHP
FF51                 PLA            ;aha!
FF52                 STA     STATUS
FF54                 TSX
FF55                 STX     SPNT
FF57                 CLD
FF58                 RTS


So the status register is the key here.
Of course we know which bits are what:

Code:
 N  V  -  B  D  I  Z  C
 80 40 20 10 08 04 02 01


Back to the boot sector:

Code:
0804                 AND     #$FB   ;discard I flag
...
080B                 LDY     #$FF
...
0811 loc_811:
0811                 EOR     $800,Y ;decode using initial register value
0814                 STA     $800,Y
0817                 DEY
0818                 BNE     $811


Which bits does it expect are set? Let's see. We know that it can't loop over all of the values in the Y register, because that would destroy the decoder.
We are left with only one alternative: the branch value at $819 is altered, but to what? The obvious assumption would be to zero, but of course that's not it.
Hint: at this point, the following flags are set: the always-set bit with value #$20, the Breakpoint flag (because of a quirk in the 6502 architecture, the PHP instruction always sets this bit), and the carry flag.
Why the carry flag? Because of the boot PROM:

Code:
C6EF                 LDA     $3D
C6F1                 CMP     $0800
...
C6F6                 BCC     $C6D3  ;branch if clear
C6F8                 JMP     $0801  ;jump if set


So excluding the I flag, we have a value of #$31.
Decoding...

Code:
0818                 BNE     $882


We go there:

Code:
0882                 BNE     $8A7


We go there (the parts in between are doubly-encoded, so not meaningful yet):

Code:
08A7                 LDA     #$B0
08A9                 STA     $800
08AC                 LDA     #$E8
08AE                 STA     $3F
08B0                 LDX     #$20
08B2                 STX     $41
08B4                 LDA     #0
08B6                 LDY     #0
08B8 loc_8B8:
08B8                 STA     ($40),Y    ;erase graphics screen 1
08BA                 INY
08BB                 BNE     $8B8
08BD                 INC     $3F    ;wrap around to #$08, important later
08BF                 INC     $41
08C1                 DEX
08C2                 BNE     $8B8
08C4                 INC     $42
08C6                 LDA     $C052
08C9                 LDA     $C050
08CC                 LDA     $C057  ;black screen (because text screen will hold code later)
08CF                 STX     $3C    ;#$00
08D1                 LDA     $41    ;#$40
08D3                 LSR     A
08D4                 LSR     A
08D5                 LSR     A
08D6                 LSR     A
08D7                 STA     $43    ;#$04
08D9                 STX     $41    ;#$00
08DB                 LDA     $3F
08DD                 STA     $37    ;#$08
08DF                 JSR     $F832


$F832? CLRSCR. Erase full text screen 1 using a graphics function instead of the more common $FC58 (HOME).

Code:
08E2                 LDY     $2D    ;number of lines that were cleared by $F843 (#$2F)
08E4                 LDA     $FFFF,Y    ;fetch from $2F-#$01=$2E: the colour mask that was used to erase the high byte of the cells (#$F0), and our next key
08E7                 LDX     #0
08E9 loc_8E9:
08E9                 EOR     $800,X ;decode remainder
08EC                 STA     $800,X ;has the side-effect of setting $801 to #$60.
08EF                 INX
08F0                 CPX     #$E9
08F2                 BNE     $8E9
08F4                 CLC
08F5                 LDA     $859   ;#$99, very important, see below
08F8                 STA     $38
08FA                 INC     $3F4
08FD                 JSR     $81B   ;resume from newly decoded region
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: 176

MessagePosté le: Lun 17 Aoû 2015, 22:46    Sujet du message: Répondre en citant

So let's do that.

Code:
081B                 INC     $27    ;#$08 (was high address of graphics buffer written by $F832)
081D                 LDX     #0
081F loc_81F:
081F                 LDA     $800,X
0822                 STA     $400,X ;copy self to text screen 1
0825                 INX
0826                 BNE     $81F
0828                 LDA     $27
082A                 STA     $3D    ;#$08
082C                 LDA     #$4D
082E                 STA     $36    ;note this value
0830                 LDA     $2B    ;slot
0832                 EOR     #6
0834                 ROR     A
0835 loc_835:
0835                 ROR     A
0836                 BCS     $835   ;interesting way to set #$Cx
0838                 STA     $39    ;#$C6 for slot 6
083A                 INC     $3F4
083D                 JSR     $FF3F  ;restore registers saved by $FF4A
0840                 JSR     $FE36


FE36? This one is VFY. It compares a memory region in ($3C-3D...$3E-3F) with the one in ($42-43).
Any failure will cause an error to be printed via CSWL. This is important, too.
We have in 3C: #$0800, 3E: #$08FF, 42: #$0400, so we compare $800...8FF with $400...4FF.
If there is a failure, control be transferred to CSWL ($36-37). From above, it contains #$084D.
It looks like this, a complete misdirection:

Code:
084D                 LDA     #$D
084F                 STA     $38
0851                 LDY     #$6C
0853 loc_853:
0853                 LDA     $400,Y
0856                 EOR     $401,Y
0859                 STA     $400,Y
085C                 INY
085D                 DEC     $38
085F                 BNE     $853   ;$38 is now zero
0861                 INC     $27
0863                 BNE     $843   ;and resume
0865                 JMP     $46C


That looks like a decoder for a block that would then be run, but note the branch at $863 is always taken.
In either case, we reach $843:

Code:
0843                 INC     $27    ;#$09
0845                 STY     $26    ;#$00
0847                 STY     $800   ;#$00
084A                 JSR     $FD17  ;does not return


FD17 is not a regular entrypoint. Instead, it looks like this:

Code:
FD17                 PLA        ;force A to known value (#$4C)
                    ;this instruction is a NOP on enhanced Apple IIe and later ROMs,
                    ;and the game is relying on the presence of a PLA, so it can't run there
FD18                 JMP   (KSWL)     ;GO TO USER KEY-IN


For the failure case, KSWL ($38-39) contains #$C600, so it reboots. For the success case, it contains #$C699.
For the success case, VFY also has the side-effect of incrementing $3D to #$09.

At $C699 is the "CMP $3D" to check the sector. The value in A is not the current sector, so the boot PROM loops to find the requested sector.
When the sector is found, control is transferred to $801, which we know contains an RTS, so control resumes from $900 instead (via the call at $8FD above).

At $900, we have this:

Code:
0900                 ORA     (0,X)  ;garbage instruction
0902                 PHP
0903                 PHA
0904                 TYA
0905                 PHA
0906                 TXA
0907                 PHA
0908                 TSX
0909                 TXA
090A                 PHA
090B                 LDX     $2B
090D                 INC     $3F4
0910                 JSR     $9DC   ;step, but interesting, too
0913 loc_913:
0913                 LDA     $C08C,X
0916                 BPL     $913
0918 loc_918:
0918                 CMP     #$FD
091A                 BNE     $913
091C loc_91C:
091C                 LDA     $C08C,X
091F                 BPL     $91C
0921                 CMP     #$AE
0923                 BNE     $918
0925 loc_925:
0925                 LDA     $C08C,X
0928                 BPL     $925
092A                 CMP     #$BB
092C                 BNE     $913
092E                 INC     $3F4
0931                 LDY     #0
0933 loc_933:
0933                 LDA     $C08C,X
0936                 BPL     $933
0938                 SEC
0939                 ROL     A
093A                 STA     $2
093C loc_93C:
093C                 LDA     $C08C,X
093F                 BPL     $93C
0941                 AND     $2
0943                 STA     $800,Y ;4x4 encoding, nothing special
0946                 INY
0947                 BNE     $933   ;but notice that there's no checksum verification
                    ;this is a problem because floppies are failing now
0949                 INC     $3F4
094C                 LDY     #$4F
094E                 LDA     #$EA
0950 loc_950:
0950                 STA     $900,Y ;erase everything before this point
0953                 DEY
0954                 BNE     $950
0956                 JSR     $800   ;does not return.  What follows it is simply more misdirection


The step routine is interesting because of the instruction at $9F3. Instead of the usual "take any track and step to there", this one steps by only one track at a time.

Code:
09DC sub_9DC:
09DC                 LDY     #0
09DE                 STX     $2
09E0 loc_9E0:
09E0                 LDA     $C080,X
09E3                 INY
09E4                 TYA
09E5                 AND     #3
09E7                 ASL     A
09E8                 ORA     $2B
09EA                 TAX
09EB                 LDA     $C081,X
09EE                 LDA     #$56
09F0                 JSR     $FCA8
09F3                 CPY     #4
09F5                 BNE     $9E0
09F7                 INC     $9     ;hmm, used while uninitialised...
09F9                 LDA     #$A
09FB                 STA     $8
09FD                 LDX     $2
09FF                 RTS


So we are at track 1.

Code:
0800                 STX     $2
0802                 TSX
0803                 TXA
0804                 LDX     $2
0806                 SBC     $49    ;stored by SAVE long ago
0808                 AND     #$F1   ;#$91
080A                 STA     $22
080C                 JSR     $8C0
080F                 LDA     #$60
0811                 PHA        ;misdirection
0812                 LDA     #$80
0814                 PHA        ;misdirection
0815                 LDA     #7
0817                 PHA        ;misdirection (there's an RTI at the end, but it doesn't use these values)
0818 loc_818:
0818                 LDA     $C08C,X
081B                 BPL     $818
081D loc_81D:
081D                 CMP     #$CF
081F                 BNE     $818
0821 loc_821:
0821                 LDA     $C08C,X
0824                 BPL     $821
0826                 CMP     #$FF
0828                 BNE     $81D
082A loc_82A:
082A                 LDA     $C08C,X
082D                 BPL     $82A
082F                 CMP     #$AB
0831                 BNE     $81D
0833                 LDY     #0
0835 loc_835:
0835                 LDA     $C08C,X
0838                 BPL     $835
083A                 SEC
083B                 ROL     A
083C                 STA     loc_1+1
083E loc_83E:
083E                 LDA     $C08C,X
0841                 BPL     $83E
0843                 AND     $2
0845                 EOR     $22    ;key from above
0847                 STA     $22
0849                 EOR     $400,Y
084C                 STA     $400,Y
084F                 INY
0852                 JSR     $400   ;as usual, what follows is another misdirection, so not included
                    ;however, the misdirection is funny because it contains texts like
                    ;"BLOAD ASM.CODE,A$6000"


The routine at $8C0 is for the failure case:

Code:
08C0                 LDA     #0
08C2                 STA     $3F2
08C5                 LDA     #$96
08C7                 STA     $3F3
08CA                 EOR     #$A5
08CC                 STA     $3F4
08CF                 LDY     #$15
08D1 loc_8D1:
08D1                 LDA     $8DB,Y
08D4                 STA     $9600,Y
08D7                 DEY
08D8                 BPL     $8D1
08DA                 RTS
08DF loc_8DB:
08DB                 LDA     #$EA
08DD                 LDX     #0
08DF loc_8DF:
08DF                 STA     $9500,X    ;erase memory
08E2                 DEX
08E3                 BNE     $8DF
08E5                 DEC     $9606
08E8                 BNE     $8DF
08EA                 INC     $3F4
08ED                 JSR     $9612  ;trigger stack overflow (when relocated, this instruction is at $9612)


It's not interesting from out point of view, but included for completeness.
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: 176

MessagePosté le: Lun 17 Aoû 2015, 22:48    Sujet du message: Répondre en citant

Let's jump to $400 and see what's next:

Code:
0400 sub_400:
0400                 LDA     $415,Y
0403                 STA     $9000,Y    ;copy a read routine
0406                 INY
0407                 BNE     $400
0409 loc_409:
0409                 LDA     $900,Y
040C                 STA     $9100,Y    ;copy a block including the step routine
040F                 INY
0410                 BNE     $409
0412                 JSR     $9000


Another copy routine. Let's resume from $9000.

Code:
9000                 LDA     #$A0
9002                 STA     $800,Y
9005                 STA     $900,Y
9008                 STA     $A00,Y
900B                 STA     $B00,Y
900E                 DEY
900F                 BNE     loc_9000   ;clear some memory
9011                 LDA     $C051
9014                 LDA     $C055  ;switch to text screen 2
9017                 PLA
9018                 PLA
9019                 PLA
901A                 PLA        ;clean the stack
901B loc_901B:
901B                 JSR     $91DC  ;step
901E                 LDA     #$B
9020                 STA     $90A5  ;sector count
9023 loc_9023:
9023                 LDA     $C08C,X
9026                 BPL     $9023
9028 loc_9028:
9028                 CMP     #$CE
902A                 BNE     $9023
902C loc_902C:
902C                 LDA     $C08C,X
902F                 BPL     $902C
9031                 CMP     #$EF
9033                 BNE     $9028
9035 loc_9035:
9035                 LDA     $C08C,X
9038 loc_9038:
9038                 BPL     $9035
903A                 CMP     #$FD
903C                 BNE     $9028
903E                 LDA     $9061
9041                 STA     $90A6
9044                 LDY     #0
9046                 SEC
9047 loc_9047:
9047                 LDA     $C08C,X
904A                 BPL     $9047
904C                 ROL     A
904D                 STA     $2
904F                 INY
9050                 BNE     $9058
9052                 DEC     $90A5
9055                 BNE     $9058
9057                 CLC
9058 loc_9058:
9058                 DEY
9059 loc_9059:
9059                 LDA     $C08C,X
905C                 BPL     $9059
905E                 AND     $2
9060 loc_9060:
9060                 STA     0,Y
9063                 INY
9064                 BNE     $9047
9066                 INC     $9062
9069                 BCS     $9047
906B loc_906B:
906B                 LDA     $C08C,X
906E                 BPL     loc_906B
9070                 SEC
9071                 ROL     A
9072                 STA     $2
9074 loc_9074:
9074                 LDA     $C08C,X
9077                 BPL     $9074
9079                 AND     $2
907B                 BEQ     $9085  ;poor checksum verification
907D                 LDA     $90A6
9080                 STA     $9062
9083                 BCS     $9023
9085 loc_9085:
9085                 STX     $2B
9087                 DEC     $20    ;what?
9089                 BNE     $901B


Nothing special so far. We read #$B sectors into memory, starting at the zero page!
That's the reason for so few references to the zero page - the game doesn't want to overwrite its own variables until after the read has completed.
But wait - where is $20 initialised? Yes, it's part of the first sector that was read into memory. It has the value #$0D initially.
So we have tracks of 11 sectors each, and we read 13 tracks into memory, from $0000-8EFF.
However, we're not done yet. This little routine has a copy-protection trick of its own:

Code:
908B                 LDA     $C088,X    ;turn off drive
908E loc_908E:
908E                 LDA     $C08C,X
9091                 PHA
9092                 LDY     #$10
9094 loc_9094:
9094                 LDA     #0
9096                 JSR     $FCA8
9099                 DEY
909A                 BNE     $9094
909C                 PLA
909D                 CMP     $C08C,X
90A0                 BNE     $908E
90A2                 STX     $7F
90A4                 RTI


The drive is turned off. A value is read from the disk. We might think that we've seen this before - there is a 1s window in which a read will succeed after the drive is turned off.
Yes, but this is not that.
The delay set up by $9092 is very long. Then there is another read. So the game is intentionally waiting longer than the 1s window, while watching for two identical values to be read sequentially.
The idea is that once the drive stops spinning, the last value that was read will remain available for reading forever.
This value is very important, but first, that RTI. Where does it go?
Remember that we just read lots of sectors into memory, starting at the zero page. Yes, the stack was overwritten, too. It's full of #$04s.
An RTI resumes from exactly the value on the stack, so we jump to $404, which was also just read into memory.

Code:
0404                 CLD
0405                 STA     $7E    ;save the last read value
0407                 LDA     #0
0409                 STA     $20
040B                 LDA     #3
040D                 STA     $21
040F                 LDA     #$20
0411                 STA     $2B
0413                 LDA     $C054  ;switch to text screen 1 (this explains the flash of garbage before the title screen)
0416                 JMP     ($4FD) ;$8460.  It matches the values of the push above, but any breakpoint placed there would have been overwritten by the read.


The routine at $8460 prompts for the Mockingboard setup. It is not interesting (and the coding is very poor), but one important thing that it does it to save the slot number to $7F, and Q6L to $98-99.
What is interesting is what happens after the setup is complete. We jump to $6000:

Code:
6000                 LDY     $7F    ;#$60 for slot 6
6002                 LDA     ($98),Y    ;this is $C08C, Y
6004                 CMP     $7E    ;compare with last read byte
6006                 BEQ     $600B
6008                 JMP     ($9A)  ;reboot instead
...


There are lots of checks like this one. Bye bye emulators and other tools. If the drive is spinning, the game will restart.
Anyway, that's it. Next time, we'll deprotect it.
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: 176

MessagePosté le: Mar 18 Aoû 2015, 1:14    Sujet du message: Répondre en citant

And here's a little program to capture the game into memory:

Code:
9600<C600.C6FCM
96F8:B9 00 08 99 00 90 C8 D0
9700:F7 A0 05 B9 5E 97 99 17 90 88 D0 F7 E0 00 20 01
9710:90 A9 60 8D FD 08 20 A7 08 20 1B 08 A0 03 B9 63
9720:97 99 55 09 88 D0 F7 4C 00 09 A0 03 B9 66 97 99
9730:51 08 88 D0 F7 20 00 08 A0 03 B9 69 97 99 B6 04
9740:88 D0 F7 20 00 04 A2 08 A0 00 B9 00 00 99 00 A0
9750:C8 D0 F7 EE 4C 97 EE 4F 97 CA D0 EE 4C 59 FF C0
9760:18 D0 F5 60 4C 2A 97 4C 38 97 4C 46 97
9600G


which decodes to this:

Code:
96F8                 LDA     $800,Y
96FB                 STA     $9000,Y
96FE                 INY
96FF                 BNE     $96F8
9701                 LDY     #5
9703 loc_9703:
9703                 LDA     $975E,Y
9706                 STA     $9017,Y
9709                 DEY
970A                 BNE     $9703
970C                 CPX     #0 ;clear Z without setting N
970E                 JSR     $9001
9711                 LDA     #$60
9713                 STA     $8FD
9716                 JSR     $8A7
9719                 JSR     $81B
971C                 LDY     #3
971E loc_971E:
971E                 LDA     $9763,Y
9721                 STA     $955,Y
9724                 DEY
9725                 BNE     $971E
9727                 JMP     $900
972A                 LDY     #3
972C loc_972C:
972C                 LDA     $9766,Y
972F                 STA     $851,Y
9732                 DEY
9733                 BNE     $972C
9735                 JSR     $800
9738                 LDY     #3
973A loc_973A:
973A                 LDA     $9769,Y
973D                 STA     $4B6,Y
9740                 DEY
9741                 BNE     $973A
9743                 JSR     $400
9746                 LDX     #8
9748                 LDY     #0
974A loc_974A:
974A                 LDA     0,Y
974D loc_974D:
974D                 STA     $A000,Y
9750                 INY
9751                 BNE     $974A
9753                 INC     $974C
9756 loc_9756:
9756                 INC     $974F
9759                 DEX
975A                 BNE     $974A
975C                 JMP     loc_FF59
975F                 .BYTE $C0, $18, $D0, $F5, $60
9764                 .BYTE $4C, $2A, $97
9767                 .BYTE $4C, $38, $97
976A                 .BYTE $4C, $46, $97


Upon completion, the game is loaded from $800-8EFF, and the memory from $0000-7FF is moved to $A000-A7FF.
Reboot, save the blocks in the right order, and you have the game.
To bypass the last-read check, save the memory at $9000-90A4, too. Then change the bytes at $90A2 to "86 7F 4C 04 04", load slot from $2B, and finally jump to $908B. The game will take care of the value for you.

It might seem like the whole game is here, but unfortunately, it's not the case.
After completing level 9, the game asks you to turn over the disk, but no-one seems to have an image of the second side, so we don't know yet what the ending sequence looks like.
One day.
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: Mer 19 Aoû 2015, 16:03    Sujet du message: Répondre en citant

"We want a double-sided disk image of Lady Tut" says the crowd!!
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: 176

MessagePosté le: Mer 19 Aoû 2015, 17:19    Sujet du message: Répondre en citant

If you can't get your EDD card to work, then we might have to settle for the file-based version instead.
It's still more than we ever had before.
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: Mer 19 Aoû 2015, 17:41    Sujet du message: Répondre en citant

qkumba a écrit:
If you can't get your EDD card to work, then we might have to settle for the file-based version instead.
It's still more than we ever had before.


Ah, you mean for side A?
As I grabbed the contents of the B-side, I did not play with the other side more.

Please confirm,
av
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: 176

MessagePosté le: Mer 19 Aoû 2015, 21:14    Sujet du message: Répondre en citant

We have no intact .nib of the B side, as yet.
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