[TRS-80] Local Call for Death, source Basic altéré

Tout ce qui concerne le logiciel original et sa sauvegarde avec entre autre la régénération des disquettes ou autres supports physiques.

Modérateurs : Papy.G, fneck, Carl

auraes
Messages : 9
Inscription : 09 juil. 2015 19:59

[TRS-80] Local Call for Death, source Basic altéré

Message par auraes »

Bonjour,
j'ai adapté un jeu Basic, Local Call for Death par R. Lafore, pour TRS-80 Model 1 avec un Basic moderne, mais le code source en Basic du jeu semble corrompu (probablement une histoire de RELOCATABLE Z-80 CODE !)
On peut voir à la fin du listing Basic, qu’après la ligne 4100 (il y a d’ailleurs deux ligne 4100 !?), le code Basic est altéré. Cela ne concerne qu'une infime partie du Code.

Si le jeu est jouable, je n’ai pas pu l'adapter intégralement ; si quelqu’un a une idée ou sait où je peux me renseigner pour recréer un listing Basic complet du jeu.

Merci.

Le listing Basic pour TRS_80 (fichiers : Story pour le Basic et Alpha pour la base de données, elle aussi altérée) :
http://willus.com/trs80/?-a+2+-p+126566+-f+2
http://willus.com/trs80/?-a+6+-p+126565+-f+1

La présentation est la documentation du jeu :
http://www.mocagh.org/loadpage.php?getc ... ve+Fiction

Le DSK du jeu :
http://www.classic-computers.org.nz/sys ... rchive.htm

Et mon adaptation en Basic avec PureBasic :
http://auraes.free.fr/tmp/LCfD.tar.gz
Avatar de l’utilisateur
farvardin
Messages : 436
Inscription : 27 déc. 2014 16:07
Contact :

Re: [TRS-80] Local Call for Death, source Basic altéré

Message par farvardin »

bravo pour ce portage Auraes !
Je vais essayer de reprendre ma partie de cette excellente fiction interactive à partir de ton travail, ça sera plus pratique qu'avec l'émulateur TRS-80, mais nul doute que certains ici vont rallumer leur vraie machine pour essayer les disques d'origine :)
Xavier

Re: [TRS-80] Local Call for Death, source Basic altéré

Message par Xavier »

Salut Auraes,
Je regarde si Trs80Token peut récupérer le reste!
...
Xavier

Re: [TRS-80] Local Call for Death, source Basic altéré

Message par Xavier »

Re...
Valà:
Nota: les erreurs disque ne sont pas corrigées!

Code : Tout sélectionner

## BASIC TRS80 FILE.
##
## NAME: RESULT(#1)
##
 10 CLEAR1000:CLS:DEFINT A-Z
 12 OPEN "R",1,"ALPHA":FIELD #1,2ASL0$,251ASI0$,2AS C0$
 15 F1=0:F2=0:F3=0
 17 FA=0:FB=0:FC=0:FD=0
 20  SC=0:SW=0:S2=0:S3=0:S4=0:S5=0:S6=-1:S7=0:
LL=7:HL=1:PT=0:HE=0:
Q1=0:Q2=0:Q3=0:Q4=1
 25 DIM U(3):FOR I=0 TO 3:U(I)=0:NEXT I:
C1=0:C2=0
 40 CR=1001:GOSUB 1000
 50 LINE INPUT"
TYPE ONE: ";H1$
 60 IF H1$="MR" H5$="SIR":GOTO 70
 62 IF H1$="MRS" H5$="MADAM":GOTO 70
 64 IF H1$="MISS" H5$="MISS":GOTO 70
 66 GOTO 50
 70 LINE INPUT"
NOW PLEASE TYPE YOUR LAST NAME: ";H2$
 80 LINE INPUT"
AND YOUR FIRST NAME: ";H3$
 90 LINE INPUT"
WHAT TOWN IN AMERICA DO YOU COME FROM? ";H4$
 100 CR=1004:GOSUB 1000
 110 LINE INPUT D$
 120 CR=1017:GOSUB 1000
 130 GOSUB 1800:PRINT 
 140 IF (INSTR(I$," NO ") OR INSTR(I$," JUST ") OR
INSTR(I$," NOT ") OR INSTR(I$,"DON'T") OR
INSTR(I$,"NEVER")) CR=2024 :ELSE CR=1024
 150 GOSUB 1000
 160 CR=1026:GOSUB 1000
 170 GOSUB 1800:PRINT 
 180 IF (INSTR(I$," NO ") OR INSTR(I$," DON'T ") OR
INSTR(I$," NOT ") OR INSTR(I$,"CAN'T") OR INSTR(I$," HATE") OR
INSTR(I$,"NEVER")) CR=1033 :ELSE CR=2033
 190 GOSUB 1000
 200 CR=1034:GOSUB 1000
 210 GOSUB 1800
 220 PRINT:PRINT "LORD COLIN:";I$;"INDEED!"
 230 CR=1040:GOSUB 1000
 240 GOTO 2000
 500 CR=58+1000*RND(8)
 510 PRINT "
LORD COLIN: ";:GOSUB 1000:LP=1:RETURN 
 550 CR=58+1000*RND(8)
 560 GOSUB 1000:RETURN 
 700 GOSUB 550:IF PT>LL RETURN 
 710 C1=C1+1:IF C1<2 RETURN 
 720 FOR I=0 TO 3:IF U(I)=2 THEN NEXT I
 725 IF I=4 THEN RETURN :ELSE PRINT 
 730 IF U(I)=0
THEN CR=171+(C2+1)*1000:GOSUB 1000:
     CR=173+(I +1)*1000:GOSUB 1000:
     U(I)=1:C2=C2+1
:ELSE CR=172+(C2  )*1000:GOSUB 1000:
     CR=175+(I +1)*1000:GOSUB 1000:
     U(I)=2
 740 IF C2=4 THEN C2=0
 750 C1=0:RETURN 
 1000 H=FIX(CR/1000):RN=CR-H*1000:SR=H-FIX(H/10)*10
 1010 GET 1,RN:L=CVI(L0$):I$=LEFT$(I0$,L):C=CVI(C0$)
 1020 IF SR=1 SP=1:GOTO 1090
 1030 DN=1:IP=1
 1040 P1=INSTR(IP,I$,"[")
 1050 IF P1=0 PRINT "NO RECORD #";CR:RETURN 
 1060 IP=P1+1:DN=DN+1
 1070 IF DN<SR GOTO 1040
 1080 SP=P1+1
 1090 FL=1: EP=INSTR(SP,I$,"[")
 1100 IF EP=0 THEN EP=L+1: FL=0
 1110 I$=MID$(I$,SP,EP-SP)
 1120 GOSUB 1300
 1130 IF (C=0 OR FL=1) RETURN 
 1140 SR=1:RN=C:GOTO 1010
 1300 L=LEN(I$)
 1310 P1=INSTR(I$,"@")
 1320 P2=INSTR(I$,"#")
 1330 IF P1=0 AND P2=0 PRINT I$;:RETURN 
 1340 IF P1=0 GOTO 1410
 1350 IF P2=0 GOTO 1370
 1360 IF P2<P1 GOTO 1410
 1370 PRINT LEFT$(I$,P1-1)
 1380 LINE INPUT"
(PRESS -ENTER- TO CONTINUE)";D$:CLS
 1390 I$=RIGHT$(I$,L-P1)
 1400 GOTO 1300
 1410 PRINT LEFT$(I$,P2-1);
 1420 NH$=MID$(I$,P2+1,1)
 1430 IF NH$="1" H$=H1$
 1440 IF NH$="2" H$=H2$
 1450 IF NH$="3" H$=H3$
 1460 IF NH$="4" H$=H4$
 1470 IF NH$="5" H$=H5$
 1480 IF NH$="6" H$=H6$
 1490 IF NH$="7" H$=H7$
 1500 IF NH$="8" H$=H8$
 1510 IF NH$="9" H$=H9$
 1520 PRINT H$;:I$=RIGHT$(I$,L-P2-1)
 1530 GOTO 1300
 1800 PRINT "
";H1$;" ";H2$;:LINE INPUT": ";I$
 1810 LI=LEN(I$):N=1: IF LI<2 GOTO 1800
 1820 P1=INSTR(N,I$,","):IF P1=0 GOTO 1840
 1830 MID$(I$,P1,1)=" ":N=P1:GOTO 1820
 1840 II$=RIGHT$(I$,1):P1=INSTR(".?!/",II$)
 1850 IF P1<>0 I$=LEFT$(I$,LI-1)
 1860 N=1
 1870 P1=INSTR(N,I$,"
"): IF P1=0 GOTO 1900
 1880 MID$(I$,P1,1)=" ":N=P1:GOTO 1870
 1900 FOR K=96 TO 127
 1910 IF INSTR(I$,CHR$(K)) PRINT "
***   PLEASE DON'T USE THE SHIFT KEY WITH LETTERS ***":GOTO 1800
:ELSE NEXT K
 1940 I$=" "+I$+" ":RETURN 
 2000 LP=0:GOTO 2020
 2010 CR=56+1000*RND(6):
PRINT:IF LP=0 PRINT "
LORD COLIN: ";
 2015 GOSUB 1000:PRINT 
 2020 GOSUB 1800:LP=0
 2024 IF INSTR(I$,"FINGERPRINT")
        CR=1128:GOSUB 1000:GOTO 2010
 2028 IF INSTR(I$,"BLACKWELL")<>0 AND
        INSTR(I$,"HANDWRITING")
CR=1095:GOSUB 1000:GOTO 2010
 2030 IF INSTR(I$,"WRITING")<>0 AND INSTR(I$,"DIARY")
CR=1131:GOSUB 1000:GOTO 2010
 2032 IF ( INSTR(I$,"BLACKWELL") OR INSTR(I$,"BUSINESS") )<>0 AND
( INSTR(I$," CARD ") OR INSTR(I$,"ADDRESS") )
CR=1132:GOSUB 1000:GOTO 2010
 2034 IF INSTR(I$,"WRITING")<>0 AND INSTR(I$," NOTE ")
CR=2116:GOSUB 1000:GOTO 2010
 2036 IF INSTR(I$,"THUMB")<>0 AND INSTR(I$,"PRINT")
CR=1182:GOSUB 1000:GOTO 2010
 2040 IF INSTR(I$," NOTE ")
CR=1059:GOSUB 1000:GOTO 2010
 2050 IF INSTR(I$,"PHONE ") CR=1061:GOSUB 1000:GOTO 2010
 2055 IF INSTR(I$,"COFFEE")
CR=1108:GOSUB 1000:GOTO 2010
 2060 IF INSTR(I$,"WINDOW") CR=1063:GOSUB 1000:GOTO 2010
 2065 IF INSTR(I$,"MATERIAL") OR INSTR(I$,"CLOTH ") OR
        INSTR(I$,"BROWN") OR INSTR(I$,"FUZZY")
        CR=1133:GOSUB 1000:GOTO 2010
 2070 IF INSTR(I$,"SUPPER") OR INSTR(I$,"MEAL") OR
INSTR(I$,"TABLE") CR=1072:GOSUB 1000:GOTO 2010
 2080 IF INSTR(I$," GUN ") OR INSTR(I$,"REVOLVER") OR
INSTR(I$,"PISTOL") CR=1074:GOSUB 1000:GOTO 2010
 2090 IF INSTR(I$," BODY ") OR INSTR(I$,"CORPSE") OR
INSTR(I$," RODNEY ")
FA=1:CR=1075:GOSUB 1000:GOTO 2010
 2095 IF INSTR(I$," GAS ")<>0 AND
( INSTR(I$,"STOVE") OR INSTR(I$,"BURNER") )
CR=1082:GOSUB 1000:GOTO 2010
 2100 IF INSTR(I$,"STOVE") OR INSTR(I$,"HEATER") OR
INSTR(I$," COAL ") CR=1077:GOSUB 1000:GOTO 2010
 2110 IF INSTR(I$,"GARBAGE") OR INSTR(I$,"TRASH")
CR=1079:GOSUB 1000:GOTO 2010
 2120 IF INSTR(I$,"WOUND") OR INSTR(I$," HOLE ") OR
INSTR(I$," BLOOD ")
CR=1080:GOSUB 1000:GOTO 2010
 2130 IF INSTR(I$," BED ") CR=1081:GOSUB 1000:GOTO 2010
 2150 IF INSTR(I$," DOOR ") CR=1083:GOSUB 1000:GOTO 2010
 2160 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$,"POCKET") OR INSTR(I$,"WALLET") OR INSTR(I$,"SEARCH")) FB=1:CR=1084:GOSUB 1000:GOTO 2010
 2170 IF INSTR(I$,"TICKET")<>0 AND
FA AND FB THEN
FD=1:CR=1086:GOSUB 1000:GOTO 2010
 2172 IF INSTR(I$,"TICKET")<>0 AND
FB THEN
CR=2086:GOSUB 1000:GOTO 2010
 2174 IF INSTR(I$,"TICKET")
CR=2142:GOSUB 1000:GOTO 2010
 2180 IF INSTR(I$," ROOM ") OR INSTR(I$," FLAT ") OR
         INSTR(I$," APARTM") OR INSTR(I$," PLACE ") OR
         INSTR(I$,"EVERYTHING")
      CR=1126:GOSUB 1000:GOTO 2010
 2190 IF INSTR(I$," DIARY ")
     FC=1: CR=1124:GOSUB 1000:GOTO 2010
 2210 IF INSTR(I$,"BLACKWEL")<>0 AND
     (  INSTR(I$," PANT") OR INSTR(I$,"TROUSER") OR
        INSTR(I$," CUFF")  )
     CR=1129:GOSUB 1000:GOTO 2010
 2250 IF INSTR(I$,"CLOSET") OR
        INSTR(I$," BEAN") OR INSTR(I$," SUGAR") OR
        INSTR(I$,"FLOOR") OR INSTR(I$,"RACING") OR
        INSTR(I$," POT ") OR INSTR(I$,"FOOD") OR
	        INSTR(I$," PAN ") OR INSTR(I$," WALL")
CR=1138:GOSUB 1000:GOTO 2010
 2260 IF INSTR(I$,"RODNEY")<>0 AND
( INSTR(I$,"POCKET") OR INSTR(I$,"CLOTH") OR INSTR(I$,"COAT") )
CR=1138:GOSUB 1000:GOTO 2010
 2270 IF INSTR(I$,"CARDBOARD") OR INSTR(I$,"CARD BOARD")
CR=1143:GOSUB 1000:GOTO 2010
 2280 IF INSTR(I$,"PAPER")
CR=1141:GOSUB 1000:GOTO 2010
 2300 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$,"BOOT") OR INSTR(I$,"SHOE") )
CR=2176:GOSUB 1000:GOTO 2010
 2310 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$,"THUMB") OR INSTR(I$," HAND") )
CR=1177:GOSUB 1000:GOTO 2010
 2320 IF INSTR(I$," CAR ")
CR=2023:GOSUB 1000:GOTO 2010
 2330 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$,"COAT") OR INSTR(I$,"JACKET") )
CR=2066:GOSUB 1000:GOTO 2010
 2350 IF INSTR(I$," ASHES")
CR=2182:GOSUB 1000:GOTO 2010
 2360 IF INSTR(I$,"BLACKWELL")<>0 AND INSTR(I$," CLOTHES")
CR=1185:GOSUB 1000:GOTO 2010
 2370 IF INSTR(I$," HINT") OR INSTR(I$," HELP")
CR=1186:GOSUB 1000:GOTO 2010
 2470 IF LI>40 THEN
CR=1176:GOSUB 1000:GOTO 2010
 2480 IF INSTR(I$," YES ") OR INSTR(I$,"RIGHT") OR
INSTR(I$," SURE") OR INSTR(I$," ABSOLUTE") OR
INSTR(I$," OK ") OR INSTR(I$,"CERTAIN")   PRINT "
LORD PETER: WHAT?": GOTO 2020
 2490 IF INSTR(I$," NO ") OR INSTR(I$," NOT ") OR
INSTR(I$,"CAN'T") OR INSTR(I$,"DON'T") OR
INSTR(I$,"NOTHING") OR INSTR(I$,"ENOUGH") OR
INSTR(I$,"S ALL ") GOTO 2800
 2500 GOSUB 500:GOTO 2010
 2800 IF SW=1 GOTO 2900
 2810 IF SC<4 SC=SC+1
 2820 CR=SC*1000+69
 2830 IF LP=0 PRINT "
LORD COLIN: ";
 2840 GOSUB 1000:PRINT 
 2845 GOSUB 1800:LP=0
 2850 IF INSTR(I$," YES ") OR INSTR(I$,"I DO ") OR
INSTR(I$,"I AM") OR INSTR(I$,"RIGHT")
CR=SC*1000+70:PRINT "
LORD COLIN: ";:GOSUB 1000:LP=1:GOTO 2010
 2860 IF INSTR(I$," NO ") OR INSTR(I$,"NOT") OR
INSTR(I$,"DON'T") OR INSTR(I$,"CAN'T") OR INSTR(I$,"DOUBT")
SW=1: GOTO 2900
 2890 GOSUB 500:PRINT:GOTO 2820
 2900 LP=0:IF S4=1 GOTO 3200
 2910 CR=71+1000*RND(4):IF LP=0 PRINT "
LORD COLIN: "; :ELSE PRINT 
 2915 GOSUB 1000:
IF F2=0 CR=1117:F2=1:GOSUB 1000 :ELSE PRINT 
 2920 GOSUB 1800:LP=1:PRINT "
LORD COLIN: ";
 2930 IF INSTR(I$,"BLACKWEL") S4=1:GOTO 3200
 2940 IF INSTR(I$," YOU ") OR INSTR(I$," COLIN ")
CR=2087:GOSUB 1000:GOTO 2010
 2950 IF INSTR(I$,"SOMEONE") OR INSTR(I$,"SOMEBODY") OR
INSTR(I$,"OTHER ") CR=1089:GOSUB 1000:GOTO 2010
 2960 IF INSTR(I$,"DON'T") OR INSTR(I$,"CAN'T") OR
INSTR(I$,"HAVEN'T") OR INSTR(I$," NO ") OR
INSTR(I$,"DONT")
CR=1087:GOSUB 1000:GOTO 2010
 2970 IF INSTR(I$," MAJOR ") OR INSTR(I$," WORMS")
CR=1092:GOSUB 1000:GOTO 2010
 2980 IF INSTR(I$," YES ") PRINT "DON'T KEEP US IN SUSPENSE, THEN.  WHO WAS IT?":GOTO 2920
 2990 IF INSTR(I$," ME ") OR INSTR(I$," I DID ")
CR=1157:GOSUB 1000:GOTO 2910
 3180 S7=S7+1:
IF S7=2 THEN
CR=1184:GOSUB 1000:GOTO 2910
 3190 GOSUB 550:GOTO 2910
 3200 IF S5=1 GOTO 3410
 3210 IF S2=0 THEN S2=1: CR=1088 :ELSE CR=1136
 3211 IF LP=0 PRINT "
LORD COLIN: ";:LP=1
 3212 GOSUB 1000:PRINT 
 3214 GOSUB 1800
 3216 PRINT "
LORD COLIN: ";: LP=1
 3220 IF INSTR(I$,"SOMEBODY") OR INSTR(I$,"SOMEONE") OR
INSTR(I$,"OTHER ") OR INSTR(I$,"FRIEND") OR
INSTR(I$,"ACCOMPLICE") OR INSTR(I$,"CONFEDERATE") OR
INSTR(I$,"KILLER") OR INSTR(I$,"HIRED")
CR=1091:GOSUB 1000:GOTO 3200
 3230 IF ( INSTR(I$," KILL") OR INSTR(I$,"MURDER") OR
          INSTR(I$," SHOT") ) <>0 AND
( INSTR(I$,"BREAKFAST") OR INSTR(I$,"MORNING") OR
  INSTR(I$,"DINNER") OR INSTR(I$,"SUPPER") OR
  INSTR(I$,"EVENING")   ) 
S5=1:CR=1090:GOSUB 1000:GOTO 3400
 3235 IF ( INSTR(I$," KILL") OR INSTR(I$,"MURDER") OR
           INSTR(I$," SHOT") ) <>0 AND
( INSTR(I$," LATER ") OR INSTR(I$," AFTER ") OR
INSTR(I$,"NIGHT") )
S5=1:CR=1090:GOSUB 1000:GOTO 3400
 3250 IF INSTR(I$,"BLACKWELL")<>0 AND
( ( INSTR(I$," LEFT ")<>0 AND INSTR(I$,"TABLE") ) OR
  ( INSTR(I$,"DURING")<>0 AND INSTR(I$,"DINNER") )  )
CR=1057:GOSUB 1000:GOTO 3200
 3380 IF INSTR(I$,"DON'T") OR INSTR(I$,"DONT") OR
INSTR(I$,"CAN'T") OR INSTR(I$,"HAVEN'T") OR
INSTR(I$,"CANT") OR INSTR(I$," NO ")
CR=2091:GOSUB 1000:GOTO 2010
 3385 IF (F3=1 OR F3>4) THEN F3=F3+1:CR=1156:GOSUB 1000:GOTO 3210
:ELSE F3=F3+1
 3390 GOSUB 550:PRINT:GOTO 3210
 3400 LP=0:PRINT:GOTO 3440
 3410 C1=0:IF PT>LL OR HE>HL GOTO 4000
 3415 CR=100+1000*RND(3)
 3420 IF LP=0 PRINT "
LORD COLIN: "; :ELSE PRINT 
 3430 GOSUB 1000:PRINT 
 3440 GOSUB 1800:PRINT "
LORD COLIN: ";:LP=1
 3445 IF ( INSTR(I$,"LET'S") OR INSTR(I$," I ") OR
           INSTR(I$," WE ") OR INSTR(I$,"LETS") )<>0 AND
         ( INSTR(I$,"LOOK AT") OR INSTR(I$,"SEARCH") OR
           INSTR(I$,"GO BACK") OR INSTR(I$," SEE ") )
PRINT "ALL RIGHT.":LP=0:GOTO 2028
 3450 IF INSTR(I$,"COFFEE")<>0 AND
       (INSTR(I$,"FROZEN") OR INSTR(I$," ICE ") OR
       INSTR(I$,"FREEZ") OR INSTR(I$,"COLD") OR
	       INSTR(I$,"WARM")  )
PT=PT+3:CR=1093:GOSUB 1000:GOTO 3410
 3460 IF ( INSTR(I$,"WOUND") OR INSTR(I$,"RODNEY") OR
           INSTR(I$,"HOLE") OR INSTR(I$," HEAD ")    )<>0
AND  ( INSTR(I$,"BLOOD") OR INSTR(I$,"BLEED")   )
PT=PT+2:U(1)=2:CR=1097:GOSUB 1000:GOTO 3410
 3465 IF INSTR(I$,"BLOOD")<>0 AND
( INSTR(I$,"DRIP") OR INSTR(I$,"FLOW") OR INSTR(I$,"FRESH") )
PT=PT+2:U(1)=2:CR=1097:GOSUB 1000:GOTO 3410
 3470 IF (  INSTR(I$,"FIRE") OR INSTR(I$,"STOVE") OR
           INSTR(I$,"HEATER") OR INSTR(I$,"COAL") OR
          INSTR(I$,"ASHES")   ) <>0  AND
    ( INSTR(I$,"WET") OR INSTR(I$,"DAMP") OR INSTR(I$,"WATER") )PT=PT+3:U(2)=2:CR=1099:GOSUB 1000:GOTO 3410
 3475 IF ( INSTR(I$,"STOVE") OR
INSTR(I$,"FIRE") OR INSTR(I$,"COAL") )<>0 AND
(INSTR(I$,"WARM") OR INSTR(I$," PUT OUT ") OR INSTR(I$,"HOT") )
PT=PT+2:U(2)=2:CR=1099:GOSUB 1000:GOTO 3410
 3480 IF (  INSTR(I$,"NOTE") OR INSTR(I$,"PAPER")  ) <>0
AND    (  INSTR(I$,"BLOOD") OR INSTR(I$,"PRINT")  )
PT=PT+3:CR=1096:GOSUB 1000:GOTO 3410
 3490 IF (  INSTR(I$,"GARBAGE") OR INSTR(I$,"EATEN") OR
            INSTR(I$,"THROW")   ) <>0
AND     (  INSTR(I$,"BREAKFAST") OR INSTR(I$,"EGGS") OR
            INSTR(I$,"SAUSAGE")  )
PT=PT+3:U(3)=2:CR=1098:GOSUB 1000:GOTO 3410
 3500 IF (  INSTR(I$,"STEP") OR INSTR(I$,"PRINT")  )  <>0
AND      ( INSTR(I$,"WINDOW") OR INSTR(I$,"SNOW") OR
            INSTR(I$,"ESCAPE") OR INSTR(I$,"STREET")  )
PT=PT+2:CR=1102:GOSUB 1000:GOTO 3410
 3510 IF (  INSTR(I$,"PHONE") OR INSTR(I$,"RECEIVER") )<>0 AND
  (  INSTR(I$,"HUNG") OR INSTR(I$,"HOOK")
     OR INSTR(I$,"RECEIVER")  )
PT=PT+3:U(0)=2:CR=1103:GOSUB 1000:GOTO 3410
 3520 IF INSTR(I$,"BLACKWELL") <>0 AND
( INSTR(I$,"FINANC") OR INSTR(I$,"TROUBLE") OR
  INSTR(I$,"MONEY") OR  INSTR(I$,"FIRM") )
PT=PT+2:CR=1105:GOSUB 1000:GOTO 3410
 3530 IF INSTR(I$,"BLACKWELL")<>0 AND
(  INSTR(I$,"SURPRISE") OR INSTR(I$,"REACTION") OR
   INSTR(I$,"NUMBER")  )
PT=PT+2:CR=1106:GOSUB 1000:GOTO 3410
 3550 IF INSTR(I$,"TICKET")=0 GOTO 3568
 3552 IF FA AND FB AND FD=0 THEN
CR=2181:GOSUB 1000:GOTO 3410
 3554 IF FB AND FC THEN
HE=HE+3:CR=1111:GOSUB 1000:GOTO 3410
 3556 IF FD THEN
HE=HE+3:CR=1109:GOSUB 1000:GOTO 3410
 3558 IF FC THEN
CR=1181:GOSUB 1000:GOTO 3410
 3560 IF FB THEN
CR=2180:GOSUB 1000:GOTO 3410
 3562 CR=1180:GOSUB 1000:GOTO 3410
 3568 D$=""
 3570 IF INSTR(I$,"BLACKWELL")<>0
AND INSTR(I$,"NOTE")
HE=HE+3:CR=1112:GOSUB 1000:GOTO 3410
 3580 IF INSTR(I$,"RODNEY")<>0 AND INSTR(I$,"COFFEE")<>0 
AND ( INSTR(I$,"INSOMNIA") OR INSTR(I$,"SLEEP") OR
      INSTR(I$,"WAKE") OR INSTR(I$," BED ") OR
	      INSTR(I$,"SUPPER") )
PT=PT+2:CR=1113:GOSUB 1000:GOTO 3410
 3590 IF (  INSTR(I$," PANT") OR INSTR(I$,"TROUSER") OR
            INSTR(I$,"CUFF")  )<>0
   AND  (   INSTR(I$," MATER") OR INSTR(I$,"FUZZY") OR
            INSTR(I$,"PIECE") OR INSTR(I$,"BROWN")  )
HE=HE+3:CR=1135:GOSUB 1000:GOTO 3410
 3600 IF INSTR(I$,"WRIT")<>0
   AND   INSTR(I$," NOTE")<>0
   AND ( INSTR(I$,"DIARY") OR INSTR(I$,"RODNEY") )
PT=PT+2:CR=1134:GOSUB 1000:GOTO 3410
 3610 IF INSTR(I$,"WINDOW")<>0
   AND ( INSTR(I$,"OPEN") OR INSTR(I$,"CLOSE") OR
         INSTR(I$,"LOCK") OR INSTR(I$,"LATCH")  )
PT=PT+2:CR=1137:GOSUB 1000:GOTO 3410
 3620 IF INSTR(I$,"PAPER") <>0 AND
( INSTR(I$,"TODAY") OR INSTR(I$,"THIS MORN") )
PT=PT+2:CR=1142:GOSUB 1000:GOTO 3410
 3630 IF INSTR(I$,"DIARY")<>0 AND INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$," DAYS ") OR INSTR(I$," TIME ") OR INSTR(I$,"YEAR")
OR INSTR(I$," LIE") OR INSTR(I$,"LYING") OR INSTR(I$,"SAID") )
PT=PT+2:CR=1154:GOSUB 1000:GOTO 3410
 3640 IF INSTR(I$," DOUCHES") OR INSTR(I$," CONSTAB") OR
INSTR(I$,"CONSTIB")
CR=2062:GOSUB 1000:GOTO 3410
 3650 IF INSTR(I$,"COLD")<>0 AND
( INSTR(I$,"ROOM") OR INSTR(I$,"FLAT") )
CR=2023:GOSUB 1000:GOTO 3410
 3660 IF INSTR(I$,"BLACKWELL")<>0 AND INSTR(I$,"BLOOD")<>0 AND
( INSTR(I$,"THUMB") OR INSTR(I$,"NAIL") OR INSTR(I$,"HAND") )
CR=1183:GOSUB 1000:GOTO 3410
 3670 IF INSTR(I$," HINT") OR INSTR(I$," HELP")
CR=1187:GOSUB 1000:GOTO 3410
 3680 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$," TIRED") OR INSTR(I$,"HAGGARD") OR
  INSTR(I$," FATIG") )
CR=1191:GOSUB 1000:GOTO 3410
 3960 IF INSTR(I$," YES ") PRINT "TELL US.": GOTO 3440
 3970 IF ( INSTR(I$," HIM ") OR INSTR(I$," HE ") OR
         INSTR(I$," HIS ") OR INSTR(I$,"HE'S")  )<>0 AND
		      ( INSTR(I$,"BLACKWELL") OR INSTR(I$,"RODNEY")  )=0
      CR=1115:GOSUB 1000:GOTO 3415
 3980 IF (  INSTR(I$,"DON'T") OR INSTR(I$,"DONT") OR
         INSTR(I$,"CAN'T") OR INSTR(I$,"HAVEN'T") OR
         INSTR(I$," NO ") OR INSTR(I$," NOT ") OR
	         INSTR(I$," NONE ") OR INSTR(I$,"NOTHING") )<>0 AND
LI<20
 		GOTO 3994
 3985 IF LI<16 THEN CR=1155:GOSUB 1000:GOTO 3410
 3990 GOSUB 700:GOTO 3415
 3994 IF S6=5 THEN S6=1 :ELSE S6=S6+1
 3995 
IF S6=0 CR=1101 :ELSE 
IF S6=1 CR=1152 :ELSE 
IF S6=2 CR=2152 :ELSE 
IF S6=3 CR=3152 :ELSE 
IF S6=4 CR=1153 :ELSE 
IF S6=5 CR=2153
 3996 GOSUB 1000:GOTO 2010
 4000 IF LP=0 PRINT "
LORD COLIN: "; :ELSE PRINT 
 4005 LP=1
 4010 IF PT<=LL AND HE>HL AND Q1=0
THEN Q1=1:CR=1144:GOSUB 1000:PRINT:GOTO 3440
 4020 IF PT<=LL AND HE>HL AND Q1=1
THEN CR=145+1000*RND(2):GOSUB 1000:PRINT:GOTO 3440
 4030 IF PT>LL AND HE<=HL AND Q2=0
THEN Q2=1:CR=1146:GOSUB 1000:PRINT:GOTO 3440
 4040 IF PT>LL AND HE<=HL AND Q2=1 AND Q4=0
THEN CR=1147+Q3:IF Q3=4 THEN Q3=0 :ELSE Q3=Q3+1:
GOSUB 1000:PRINT:Q4=1:GOTO 2010
 4050 IF PT>LL AND HE<=HL AND Q2=1 AND Q4=1
THEN CR=150+1000*RND(5):GOSUB 1000:PRINT:Q4=0:GOTO 3440
 4060 IF PT>LL AND HE>HL
THEN CR=1118:GOSUB 1000:PRINT 
 4100 GOTO 4100
------------------------------------------------------------------------------------------------------
vvv erreur de lecture dans le token n°ligne!
N° de lignes erronés.
------------------------------------------------------------------------------------------------------

 8224       INSTR(I$," HE ") OR INSTR(I$,"ON HE'S ")
CR=1115:GOSUB 1000:GOTO 34105CLSLET IF INSTR(I$,"DON'T") OR INSTR(I$,"CAN'T") OR
INSTR(I$,"HAVEN'T") OR INSTR(I$," NI")
R=1101:GOSUB 1000:GOTO 2010
 3990 GOSUB 550:GOTO 3410
 4000 IF S3=0 S3=1:CR=1116:GOSUB 1000

         PRINT 3*PT;:CR=2116:GOSUB 100
    :ELSE  CR=1095:GOSUB 1000:PRINT 3*PP;:C=2095:GOSUB 1000
 4040 GOSUB 1800:LP=0
 4050 IF INSTR(I$,"CLOSE") OR INSTR(I$,"DON'T ) OR
        INSTR(I$,"CAN'T") OR INSTR(I$,"WON'T") OR
       INSTR(I$,"HAVEN'Q") SET INSTR(I$," NO")
GOTO 4090  :ELSE GOTO 3415
 4090 PRINT "
LORD PETER: ";:
CR=1118:GOSUB 000:PRINT 3*PT;: CR=2118:GOSUB 1000
 4100 GOTO 4100
auraes
Messages : 9
Inscription : 09 juil. 2015 19:59

Re: [TRS-80] Local Call for Death, source Basic altéré

Message par auraes »

Merci.
Le code Basic je l'avais : http://willus.com/trs80/?-a+2+-p+126566+-f+2
Je l’obtiens aussi à partir du Basic de l'émulateur TRS-80 avec : SAVE "Nom_du_fichier/BAS:1",A et je l'extrais du DSK avec TRSTools : http://www.trs-80emulators.com/trstools/

C'est bien cette partie du code qui pose problème :

Code : Tout sélectionner

------------------------------------------------------------------------------------------------------
vvv erreur de lecture dans le token n°ligne!
N° de lignes erronés.
------------------------------------------------------------------------------------------------------

8224       INSTR(I$," HE ") OR INSTR(I$,"ON HE'S ")
CR=1115:GOSUB 1000:GOTO 34105CLSLET IF INSTR(I$,"DON'T") OR INSTR(I$,"CAN'T") OR
INSTR(I$,"HAVEN'T") OR INSTR(I$," NI")
R=1101:GOSUB 1000:GOTO 2010
3990 GOSUB 550:GOTO 3410
4000 IF S3=0 S3=1:CR=1116:GOSUB 1000

         PRINT 3*PT;:CR=2116:GOSUB 100
    :ELSE  CR=1095:GOSUB 1000:PRINT 3*PP;:C=2095:GOSUB 1000
4040 GOSUB 1800:LP=0
4050 IF INSTR(I$,"CLOSE") OR INSTR(I$,"DON'T ) OR
        INSTR(I$,"CAN'T") OR INSTR(I$,"WON'T") OR
       INSTR(I$,"HAVEN'Q") SET INSTR(I$," NO")
GOTO 4090  :ELSE GOTO 3415
4090 PRINT "
LORD PETER: ";:
CR=1118:GOSUB 000:PRINT 3*PT;: CR=2118:GOSUB 1000
4100 GOTO 4100
Sur le site du source Basic, http://willus.com/trs80/?-a+6+-p+126566+-f+2 : si je choisis l'affichage Hex file, il y a ça à la fin du listing :

Code : Tout sélectionner

9001 'RELOCATABLE Z-80 CODE:  NH$Õ"3" H$ÕH3$
9002 POKE 16526,0:POKE 16527,256
9003 DEFINT A,I:READAD,AS:FORI=1TOAS:READAV:POKEAD+I-1,AV:NEXTI:RETURN
9004 DATA 0,-65536
Tous les jeux de R. Larfore semblent avoir le même problème.
Est-ce que les fichiers extraits de l'original, que j'utilise avec l'émulateur, ont été altérés lors de la copie par une protection, ou bien est-ce que lors de l’exécution, le programme remet tout dans l'ordre ? (La variable Globale S3, n'est utilisée que dans cette partie altérée du code.)
Il faudrait savoir si le jeu sous émulateur avec le DSK est complet ou non.
farvardin a écrit :Je vais essayer de reprendre ma partie de cette excellente fiction interactive
Même avec le source sous les yeux, cela reste difficile : je connais le coupable, mais faut-il encore le prouver !
Pour obtenir les saisies valides, tu regardes les Or et AND des INSTR() dans le source :

Code : Tout sélectionner

If (INSTR(I$,"BLACKWELL") Or INSTR(I$,"BUSINESS") ) <> 0 And (INSTR(I$," CARD ") Or INSTR(I$,"ADDRESS") )
  If INSTR(I$,"BLACKWELL") <> 0 And INSTR(I$,"BLOOD") <> 0 And ( INSTR(I$,"THUMB") Or INSTR(I$,"NAIL") Or INSTR(I$,"HAND") )
BLACKWELL/BUSINESS CARD/ADDRESS
BLACKWELL BLOOD THUMB/NAIL/HAND
Une saisie valide est donc :
BLACKWELL CARD ou BLACKWELL ADDRESS ou BUSINESS CARD ou BUSINESS ADDRESS mais pas BUISNESS ni ADDRESS.
BLACKWELL BLOOD THUMB ou NAIL ou HAND mais pas BLACKWELL BLOOD !
J'ai mis un peu de temps avant de comprendre qu'il fallait saisir 'room' pour ré-afficher le lieu et donc la liste des objets examinables.

Bon, Il faut ABSOLUMENT restaurer l'intégrité de ce source ; mais comment ?
Là, ils doivent savoir, mais mon anglais est bien trop mauvais :
http://www.trs-80.com/wordpress/zaps-pa ... s/#memsize
http://www.classic-computers.org.nz/sys ... rchive.htm
Ou peut-être simplement demander à http://willus.com/, à quoi correspond, sur certains Sources Basic affichés sur son site :

Code : Tout sélectionner

9001 'RELOCATABLE Z-80 CODE:
9002 POKE 16526,0:POKE 16527,256
9003 DEFINT A,I:READAD,AS:FORI=1TOAS:READAV:POKEAD+I-1,AV:NEXTI:RETURN
9004 DATA 0,-65536
Xavier

Re: [TRS-80] Local Call for Death, source Basic altéré

Message par Xavier »

:D
J'ai trouvé le morceau de code est dans dans le fichier "Alpha" !

Le programme basic auto-patch 255 octets contenu dans ce fichier, vers le programme basic...

ficher Alpha:

Code : Tout sélectionner

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
0000BFF0   20 20 20 20 20 20 20 20  20 20 20 20 20 20 00 00                 ..
0000C000   00 30 30 30 3A 8D 33 34  31 30 01 35 84 8C 0F 8F   .000:3410.5„Œ.
0000C010   C5 28 49 24 2C 22 44 4F  4E 27 54 22 29 20 D3 20   Å(I$,"DON'T") Ó 
0000C020   C5 28 49 24 2C 22 43 41  4E 27 54 22 29 20 D3 0A   Å(I$,"CAN'T") Ó.
0000C030   C5 28 49 24 2C 22 48 41  56 45 4E 27 54 22 29 20   Å(I$,"HAVEN'T") 
0000C040   D3 20 C5 28 49 24 2C 22  20 4E 49 22 29 0A 03 52   Ó Å(I$," NI")..R
0000C050   D5 31 31 30 31 3A 91 31  30 30 30 3A 8D 32 30 31   Õ1101:‘1000:201
0000C060   30 00 4F 97 96 0F 91 35  35 30 3A 8D 33 34 31 30   0.O—–.‘550:3410
0000C070   00 B9 97 A0 0F 8F 20 53  33 D5 30 20 53 33 D5 31   .¹— . S3Õ0 S3Õ1
0000C080   3A 43 52 D5 31 31 31 36  3A 91 31 30 30 30 0A 0A   :CRÕ1116:‘1000..
0000C090   20 20 20 20 20 20 20 20  20 B2 20 33 CF 50 54 3B            ² 3ÏPT;
0000C0A0   3A 43 52 D5 32 31 31 36  3A 91 31 30 10 30 0A 20   :CRÕ2116:‘10.0. 
0000C0B0   20 20 20 3A 95 20 20 43  52 D5 31 30 39 35 3A 91      :•  CRÕ1095:‘
0000C0C0   31 30 30 30 3A B2 20 33  CF 50 50 3B 3A 43 02 D5   1000:² 3ÏPP;:C.Õ
0000C0D0   32 30 39 35 3A 91 31 30  30 30 00 C8 97 C8 0F 91   2095:‘1000.È—È.‘
0000C0E0   31 38 30 30 3A 4C 50 D5  30 00 4C 98 D2 0F 8F C5   1800:LPÕ0.L˜Ò.Å
0000C0F0   28 49 24 2C 22 43 4C 4F  53 45 22 29 20 D3 20 C5   (I$,"CLOSE") Ó Å
0000C100   28 85 00 41 4C 54 48 4F  55 47 48 20 54 48 45 20   (….ALTHOUGH THE 
0000C110   46 4C 41 54 20 49 53 20  44 46 49 4E 49 54 45 4C   FLAT IS DFINITEL
0000C120   59 20 4D 45 53 53 59 20  54 48 41 54 20 44 4F 45   Y MESSY THAT DOE
0000C130   53 4E 27 54 20 53 48 4F  57 0A 54 48 45 52 45 20   SN'T SHOW.THERE 
0000C140   57 45 52 45 20 53 49 47  4E 53 20 4F 46 20 41 20   WERE SIGNS OF A 

Code : Tout sélectionner

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00003090   D5 31 31 31 38 3A 91 31  30 30 30 3A B2 00 84 97   Õ1118:‘1000:².„—
AAAA ----- code ajouté -------AAAAA
000030A0   04 10 8D 34 31 30 30 00  17 98 20 20 20 20 20 20   ..4100..˜      
vvvvv                                   vvvvvv
000030B0   20 20 C5 28 49 24 2C 22  20 48 45 20 22 29 20 D3     Å(I$," HE ") Ó
Donc, on a : (???)

Code : Tout sélectionner

:GOTO 34105CLSLET 
IF INSTR(I$,"DON'T") OR INSTR(I$,"CAN'T") OR
INSTR(I$,"HAVEN'T") OR INSTR(I$," NI")

R=1101:GOSUB 1000:GOTO 2010
 3990 GOSUB 550:GOTO 3410
 3840 IF S3=0 S3=1:CR=1116:GOSUB 1000

 PRINT 3*PT;:CR=2116:GOSUB 100
    :ELSE  CR=1095:GOSUB 1000:PRINT 3*PP;:C=2095:GOSUB 1000
 4040 GOSUB 1800:LP=0
 4050 IF INSTR(I$,"CLOSE") OR INSTR(CMD        INSTR(I$," HE ") OR INSTR(I$,"ON HE'S ")
CR=1115:GOSUB 1000:GOTO 3410
 
A priori, le programme est patché à plusieurs endroits...
:mrgreen:
auraes
Messages : 9
Inscription : 09 juil. 2015 19:59

Re: [TRS-80] Local Call for Death, source Basic altéré

Message par auraes »

Oui, le fichier Alpha est la base de données du texte et elle est divisée en 194 blocs de 256 octets. Le bloc 193 est en effet un bloc de Basic, mais il est aussi altéré !?
Si le fichier est patché, où est donc le bout de code qui le « dépatche » ? Sur le support original !?
Xavier

Re: [TRS-80] Local Call for Death, source Basic altéré

Message par Xavier »

Salut,
Le problème n'est pas tant le patch au niveau Basic, que la protection physique du jeu.
En effet, la protection limite le nombre de copies à une sauvegarde (de sécurité) du jeu!

regardons le catalogue:

Code : Tout sélectionner

Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15

00044032   5E 00 00 00 00 42 4F 4F  54 20 20 20 20 53 59 53   ^....BOOT    SYS
00044048   60 7F 1F B2 05 00 00 00  FF FF FF FF FF FF FF FF   `.²....ÿÿÿÿÿÿÿÿ
00044064   10 00 00 00 00 41 4C 50  48 41 20 20 20 20 20 20   .....ALPHA      
00044080   96 42 96 42 C2 00 00 3F  10 20 12 05 FF FF FF FF   –B–BÂ..?. ..ÿÿÿÿ
00044096   10 00 00 8D 00 53 54 4F  52 59 20 20 20 20 20 20   ....STORY      
00044112   96 42 96 42 32 00 15 09  FF FF FF FF FF FF FF FF   –B–B2...ÿÿÿÿÿÿÿÿ
00044128   00 00 00 8D 00 53 54 4F  52 59 20 20 20 20 20 20   ....STORY      
00044144   96 42 96 42 32 00 16 29  FF FF FF FF FF FF FF FF   –B–B2..)ÿÿÿÿÿÿÿÿ
00044160   00 00 00 EB 00 53 54 52  4B 46 52 43 20 43 4D 44   ...ë.STRKFRC CMD
00044176   96 42 96 42 3E 00 1B 2C  FF FF FF FF FF FF FF FF   –B–B>..,ÿÿÿÿÿÿÿÿ
00044192   00 00 00 BD 00 53 54 41  52 43 52 45 53 43 4D 44   ...½.STARCRESCMD
00044208   96 42 96 42 36 00 22 0A  FF FF FF FF FF FF FF FF   –B–B6.".ÿÿÿÿÿÿÿÿ
00044224   00 00 00 1E 00 53 54 45  4C 4C 41 20 20 43 4D 44   .....STELLA  CMD
00044240   96 42 96 42 37 00 27 2A  FF FF FF FF FF FF FF FF   –B–B7.'*ÿÿÿÿÿÿÿÿ
00044256   00 00 00 20 00 54 49 4D  45 42 4E 44 31 43 4D 44   ... .TIMEBND1CMD
00044272   96 42 96 42 88 00 2D 1B  FF FF FF FF FF FF FF FF   –B–Bˆ.-.ÿÿÿÿÿÿÿÿ
00044288   5D 00 00 00 00 44 49 52  20 20 20 20 20 53 59 53   ]....DIR     SYS
00044304   A7 1D F9 E5 0A 00 11 01  FF FF FF FF FF FF FF FF   §.ùå....ÿÿÿÿÿÿÿÿ
00044320   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
Donc, le jeu a été copié sur lui même... au moins une fois sur le disque original. [fichier STORY]

Code : Tout sélectionner

Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15

00101120   41 43 4B 55 50 20 44 49  53 4B 20 54 48 45 4E 20   ACKUP DISK THEN 
00101136   54 52 59 20 41 47 41 49  4E 0D 00 4E 4F 20 4D 4F   TRY AGAIN..NO MO
00101152   52 45 20 43 4F 50 49 45  53 20 41 4C 4C 4F 57 45   RE COPIES ALLOWE
00101168   44 00 3E 05 32 E4 42 2A  E2 42 22 E0 42 CD 63 46   D.>.2äB*âB"àBÍcF
00101184   C2 54 46 2A B2 5E 24 22  E0 42 CD 89 42 C2 54 46   ÂTF*²^$"àB͉BÂTF
00101200   CD                                                 Í
Le système limite donc la copie du programme basic.
Le disque est donc corrompu au niveau de la lecture des clusters.
Ce qui peut expliquer l'incohérence de l'adressage de la table d'allocation des clusters sur le fichier basic et ascii.
Il serai préférable de prendre une autre image disque non modifiée, afin de récupérer les fichiers intacts.
Le fichier effacé "STORY" est moins grand, et s'arrête en ligne 4100... ce qui veut peut-être dire que l'original a été effacé par le fichier "STORY" réécrit par dessus!
Nous avons aussi un fichier "DOCLIST.BAS" :

Code : Tout sélectionner

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

0000B000   00 20 00 00 00 44 4F 43  4C 49 53 54 20 42 41 53   . ...DOCLIST BAS
0000B010   96 42 96 42 11 00 03 03  FF FF FF FF FF FF FF FF   –B–B....ÿÿÿÿÿÿÿÿ

Lui aussi effacé, et corrompu.
:?
auraes
Messages : 9
Inscription : 09 juil. 2015 19:59

Re: [TRS-80] Local Call for Death, source Basic altéré

Message par auraes »

Élémentaire, mon cher Watson ! Et félicitations : l’énigme semble enfin résolue ; ça a vraiment l'air d'être la bonne explication. (Explication, ma fois fort claire : j'ai vraiment l'impression d'avoir tout compris !)
Xavier a écrit :Il serai préférable de prendre une autre image disque non modifiée, afin de récupérer les fichiers intacts.
Donc, ce qui voudrait dire, qu'il faudrait retrouver le jeu sur son support original et l'extraire pour en faire une nouvelle image DSK. Les copies que l'on trouve sur Internet semblent toutes identiques et corrompues. J'ai essayé de chercher pour voir si je trouvais une version Atari ou Apple du jeu, ou s'il était éventuellement sur une compilation de jeux Adventure International, mais rien !

Bon, reste à trouver l'original ; c'est pas gagné !

Merci pour ton aide.
Répondre