Petit rappel utile à propos des posts parce qu'on n'aime pas effacer des publications. (Enfin si on aime mais ne nourrissez pas notre perversion.)
1) Autorisé: listings, trainers , patchs, pokes , solutions, videos walkthrough. 2) Interdit: Tout messages sans intérêt , commentaire , demande et hors sujets ... 3) Obligatoire: Un topic par jeu. 4) Merci de respecter les rubriques et poster vos messages au bon endroit afin de permettre une bonne visibilité du forum.
1 :' The Bards Tale - tape 2 :' By Gary Barrett 10 MEMORY &7FFF 20 q=230 30 RESTORE 40 FOR n=&8000 TO &80C3 STEP 6 50 t=0 60 FOR m=0 TO 5 70 READ a$ 80 a=VAL("&"+a$) 90 t=t+a 100 POKE n+m,a 110 NEXT m 120 READ b$ 130 b=VAL("&"+b$) 140 IF b<>t THEN 220 150 q=q+10 160 NEXT n 170 PRINT"Insert party tape" 180 PRINT"and Press any Key" 190 CALL &BB18 200 CALL &8000 210 STOP 220 PRINT"Error in Data line ";q 230 DATA 3E,2C,21,00,90,11,12C 240 DATA 40,00,CD,A1,BC,21,28B 250 DATA E1,03,11,44,03,3E,17A 260 DATA 16,CD,A1,BC,06,06,24C 270 DATA 21,C6,04,C5,E5,11,2A6 280 DATA 38,00,19,06,00,7E,0D5 290 DATA FE,01,28,75,FE,02,29C 300 DATA 28,71,FE,03,28,6D,22F 310 DATA FE,04,28,69,78,32,23D 320 DATA C3,80,E1,E5,11,14,32E 330 DATA 00,19,3E,01,77,11,0E0 340 DATA 10,00,19,77,E1,11,192 350 DATA 30,00,E5,19,16,05,149 360 DATA 3A,C3,80,87,06,04,20E 370 DATA 80,47,72,23,10,FC,268 380 DATA 3A,C3,80,FE,00,28,2A3 390 DATA 0F,3E,07,E1,E5,11,22B 400 DATA 40,00,19,06,04,36,099 410 DATA 07,23,10,FB,E1,C1,2D7 420 DATA 11,65,00,19,10,A3,142 430 DATA 21,AB,80,CD,A1,80,33A 440 DATA CD,18,BB,21,00,90,251 450 DATA 11,40,00,3E,2C,CD,188 460 DATA 9E,BC,06,19,76,10,1FF 470 DATA FD,21,E1,03,11,44,257 480 DATA 03,3E,16,CD,9E,BC,27E 490 DATA C9,06,02,18,93,7E,1FA 500 DATA FE,00,C8,CD,5A,BB,3A8 510 DATA 23,18,F6,50,72,65,258 520 DATA 73,73,20,61,6E,79,24E 530 DATA 20,6B,65,79,20,74,1FD 540 DATA 6F,20,73,61,76,65,23E 550 DATA 0D,0A,00,00,00,00,017
Code :
1 :'The Bard's Tale Designer-disk 2 :'By Julian Page 10 GOSUB 2440 20 DEFINT a-z 30 GOSUB 1150:BORDER 0 40 GOSUB 1310 50 GOSUB 1180:IF PEEK(&7FFF)<>&FF AND a$<>"L" THEN LOCATE 14,10:PRINT CHR$(24);"You must load a saved game first!";CHR$(24):FOR t=1 TO 3000:NEXT t:LOCATE 14,10:PRINT SPACE$(40):GOTO 50 60 ON INSTR("IPLS",A$) GOSUB 380,80,1390,1510 70 GOTO 30 80 FOR t=0 TO 5:CLS #t:NEXT t:st=&5CA0:PRINT#4,"In your party are:-":PRINT#4 90 :'** Party stats ** 100 PRINT#3,TAB(17)"Party Statistics Customiser" 110 FOR x=0 TO 6:IF x>0 THEN PRINT #4,RIGHT$(STR$(x),1);" ) "; ELSE PRINT#4,"S ) "; 120 FOR y=0 TO 14:PRINT #4,CHR$(PEEK(st+y+&65*x)); 130 NEXT y:PRINT#4:NEXT x 140 LOCATE #4,25,2: PRINT#4, CHR$(24);"Hits " 150 LOCATE #4,32,2:PRINT#4,"Cond " 160 LOCATE #4,39,2:PRINT#4,"SpPts" 170 LOCATE #4,46,2: PRINT#4,"SpLeft" 180 LOCATE #4,54,2: PRINT#4,"ExpLvl" 190 LOCATE #4,61,2: PRINT#4,"SpeLvl";CHR$(24) 200 FOR x=0 TO 6:hits=PEEK(st+&30+x*&65)*256+PEEK(st+&31+x*&65): LOCATE #4,25,3+x:PRINT #4,hits 210 cond=PEEK(st+&32+x*&65)*256+PEEK(st+&33+x*&65): LOCATE #4,32,3+x:PRINT #4,cond 220 sp1=PEEK(st+&34+x*&65) *256+PEEK(st+&35+x*&65): sp2=PEEK(st+&36+x*&65)*256+PEEK(st+&37+x*&65) 230 LOCATE #4,39,3+x: PRINT #4,sp1:LOCATE #4,46,3+x:PRINT #4,sp2:NEXT x 240 FOR x=1 TO 6: ex=PEEK(st+&65*x+&21): LOCATE #4,55,3+x:PRINT #4,ex:FOR y=0TO 3: spx=PEEK(st+&65*x+&40+y):LOCATE #4,62+y,3+x:PRINT #4,RIGHT$(STR$(spx),1);:NEXT y,x 250 GOTO 1610 260 :'** Print out a character's inventory **' 270 CLS:PRINT"Look at which character's inventory (1-6) ?":GOSUB 1180:PRINT 280 IF a$<"1" OR a$>"6" THEN 270 ELSE CHAR=VAL(a$) 290 z=&5CA0+&50+&65*char 300 FOR t=0 TO 14:PRINT CHR$(PEEK(&5CA0+char*&65+t));:NEXT t:PRINT 310 FOR t=0 TO 7 320 PRINT RIGHT$(STR$(t+1),1);") "; 330 a=PEEK(z+t*2):b=PEEK(z+t*2+1) 340 IF b=0 THEN PRINT: GOTO 360 350 CALL &8000,b:IF a=1 THEN PRINT TAB(18);" -- Equipped." ELSE IF a=2 THEN PRINT TAB(18);" -- Unavailable." ELSE PRINT TAB(18);" -- Unequipped." 360 NEXT t 370 RETURN 380 :'** Print out inventory ** 390 GOSUB 1150 400 FOR x=0 TO 5:CLS #x:NEXT x 410 GOSUB 620:obj=1 420 FOR a=0 TO 9:LOCATE #2,1,a+1: PRINT #2, RIGHT$(STR$(a),1) ;")";:NEXT a 430 PAPER 0:PEN 1:PAPER #1,1:PEN #1,0:CLS #1 440 fit=9:b$="ECD"+CHR$(224)+CHR$(32)+CHR$(13)+"X" 450 WINDOW SWAP 0,1 460 FOR x=0 TO FIT 470 CALL &8000,obj+x 480 PRINT:NEXT x 490 a$="":WHILE a$="": a$=UPPER$(INKEY$):WEND 500 c=INSTR(b$,a$) 510 ON c GOTO 810,830,850,950,950,950,1080 520 IF ASC(a$)<240 OR ASC(a$)>241 THEN 490 530 IF ASC(a$)=241 THEN 580 540 LOCATE 1,1:PRINT CHR$(11); 550 obj=obj-1:IF obj=0 THEN obj=&7F 560 CALL &8000,obj 570 GOTO 490 580 LOCATE 1,10:PRINT CHR$(10); 590 obj=obj+1:IF obj>&7F THEN obj=1 600 CALL &8000,((obj+fit-1) MOD &7F)+1 610 GOTO 490 620 :'** Get char.inven. to change 630 CLS #3:PRINT #3,TAB(15);"Character Inventory Compiler" 640 PRINT #0,"Which character's inventory (1-6) do you wish to alter ?" 650 GOSUB 1180:IF a$<"1" OR a$>"6" THEN 650 660 char=VAL(a$):CLS #0:GOSUB 290:GOSUB 680 670 RETURN 680 :'** print in #4 options 690 PRINT #5," Object Menu" 700 PRINT #4,"OPTIONS:" 710 PRINT#4:PRINT#4,"E) Exit inventory compiler, and return to front end." 720 PRINT#4,"C) Choose another character to examine." 730 PRINT#4,"D) Discard object from character's inventory." 740 PRINT#4,"<copy> }" 750 PRINT#4,"<space>}==- Add object from menu to inventory." 760 PRINT#4,"<enter>}" 770 PRINT#4,"X) Redefine unusable object as usable by character." 780 PRINT#4,CHR$(240);" (cursor.up) Scroll up object menu." 790 PRINT#4,CHR$(241);" (cursor.down) Scroll down object menu." 800 RETURN 810 :'** Exit inventory compiler 820 RETURN 830 :'** Choose another character to examine 840 WINDOW SWAP 0,1:GOTO 400 850 :'** Remove object from inventory 860 WINDOW SWAP 0,1 870 LOCATE 1,10:PRINT CHR$(24);"Discard which item (Item 1-8, 0=Everything, else exit) ?";CHR$(24) 880 GOSUB 1180: c=INSTR("012345678",a$) 890 IF c=0 THEN GOTO 940 900 d=0:f=c-2:IF c=1 THEN FOR d=0 TO 7:f=d 910 e=&5CA0+char*&65+&50+f*2 920 POKE e,0:POKE e+1,0 930 IF c=1 THEN NEXT d 940 CLS:GOSUB 1200:GOSUB 290:WINDOW SWAP 0,1:GOTO 490 950 :'** Choose object from menu ** 960 WINDOW SWAP 0,1 970 os=&5CA0+&65*char+&50 980 z=99:FOR t=7 TO 0 STEP -1 990 IF PEEK(os+1+t*2)=0 THEN z=t :'Z+1 =First space free (1-8) 1000 NEXT t 1010 IF z<8 THEN GOTO 1030 1020 LOCATE 1,10:PRINT CHR$(24); "Your character has no avail able space!";CHR$(24);" ":FOR t=1 TO 1900:NEXT t:CLS:GOSUB 290:WINDOW SWAP 0,1:GOTO 490 1030 LOCATE 1,10:PRINT CHR$(24); "Take which item from menu (0- 9, else exit) ?";CHR$(24) 1040 GOSUB 1180:IF a$<"0" OR a$>"9" THEN CLS:GOSUB 290:WIN DOW SWAP 0,1:GOTO 490 1050 o=VAL(a$)+obj:POKE os+z*2,0: POKE os+z*2+1,o 1060 CLS:GOSUB 290:WINDOW SWAP 0,1:GOTO 490 1070 STOP 1080 :'** Redefine an object as usable by char ** 1090 WINDOW SWAP 0,1 1100 os=&5CA0+&65*char+&50 1110 LOCATE 1,10:PRINT CHR$(24);"Redefine which object (1-8, else exit) ?";CHR$(24) 1120 GOSUB 1180:IF a$<"1" OR a$>"8" THEN GOTO 1140 1130 POKE os+(VAL(a$)-1)*2,0 1140 CLS:GOSUB 290:WINDOW SWAP 0,1:GOTO 490 1150 MODE 2:INK 0,0:INK 1,26:BOR DER 0:WINDOW 1,61,3,12:WINDOW #1,66,80,3,12:WINDOW #2,63,64,3,12:WINDOW #3,1,61,1,1:WINDOW #4,1,80,14,25:WINDOW #5,63,80,1,1 1160 DATA 0,1,0,1,1,1:RESTORE 1160:FOR X=0 TO 5:READ P:PAPER #X,P:PEN #X,(1-P):CLS #X:NEXT X 1170 RETURN 1180 FOR t=1 TO 50:a$=INKEY$:NEXT t 1190 WHILE a$="": a$=UPPER$(INKEY$):WEND:RETURN 1200 :'** Routine to compress character's inventory to normal style 1210 ost=&5CA0+&65*char+&50 1220 FOR T=0 TO 6 1230 IF PEEK(OST+1+T*2)>0 THEN 1290 1240 FOR A=T TO 6 1250 POKE OST+A*2, PEEK(OST+(A+1)*2) 1260 POKE 1+OST+A*2, PEEK(OST+(A+1)*2+1) 1270 NEXT A 1280 POKE OST+14,0:POKE OST+15,0 1290 NEXT T 1300 RETURN 1310 :'** Print the main menu choice in window 0 1320 FOR t=0 TO 5:CLS #t:NEXT t:PRINT#3," The Bard's Tale Character Designer -- By Julian Page" 1330 PRINT:PRINT TAB(22)"** MAIN MENU **" 1340 PRINT:PRINT TAB(12)"I) Character's Inventory Customiser 1350 ¿ ê()"P) Party Statistics Customiser 1360 PRINT TAB(12)"L) Load another pre-saved party 1370 ¿ ê()"S) Save this party to disc 1380 RETURN 1390 :'** Load a pre-saved party 1400 CLS:PRINT#3,TAB(20)"Load a pre-saved party." 1410 LOCATE #4,1,6:IF n$<>"" THEN PRINT #4,"Just press enter to load default name of: ";UPPER$(n$) 1420 LOCATE #4,1,4:PRINT#4,"press <TAB> to abort this load" 1430 N1$=N$ 1440 LOCATE #4,1,2:PRINT#4,"Please enter the filename of your party (enter to abort) ********";:LOCATE #4,59,2:INPUT #4,n$ 1450 IF n$="* NULL *" THEN N$=N1$:CLS #4:GOTO 40 1460 IF N$="" AND N1$<>"" THEN N$=N1$:PRINT #4,TAB(61); CHR$(11);N$ ELSE IF N$="" THEN GOTO 1440 1470 LOCATE #4,1,4:PRINT#4,"Insert the saved party disc, and press a key to load..." 1480 CALL &BB06:LOAD n$,&5C20 1490 POKE &7FFF,&FF:GOTO 40 1500 :'** Save a party to disc 1510 CLS #4:LOCATE #4,1,6: PRINT#4,"Just press enter to save default name of: ";UPPER$(n$) 1520 LOCATE #4,1,4:PRINT#4,"press <TAB> to abort this save" 1530 LOCATE #4,1,2:PRINT#4,"Please enter the name of your party... ********";:LOCATE #4,41,2:INPUT #4,s$ 1540 IF s$="* NULL *" THEN CLS #4: GOTO 40 1550 IF s$="" THEN s$=n$ 1560 IF LEN(s$)>8 THEN LOCATE #4,1,8:PRINT #4,CHR$(7);"Name too long! Maximum of 8 charac ters":FOR t=1 TO 3500:NEXT t: GOTO 1510 1570 LOCATE #4,1,4:PRINT #4, SPACE$(240):LOCATE #4,1,4 1580 PRINT#4,"Insert the saved party disc, and press a key to save..." 1590 CALL &BB06:CALL &801B,s$ 1600 GOTO 40 1610 CLS:PRINT:PRINT TAB(15); CHR$(24);"Please choose from the following:";CHR$(24) 1620 PRINT:PRINT"E) Exit party stats, and return to main menu" 1630 PRINT"H) Alter hit pts and condition of a character" 1640 PRINT"S) Alter spell pts of a character" 1650 PRINT"L) Change level of magic of a character" 1660 PRINT"B) Boost ALL characters to ArchMages" 1670 PRINT"X) Change experience points of a character" 1680 PRINT"G) Alter character's amount of gold" 1690 GOSUB 1180:A= INSTR("EHSLBXG",A$):IF A=0 THEN 1690 1700 ON A GOTO 1710,1720,1840,1930,2020, 2120,2260 1710 CLS:CLS #4:GOTO 40 1720 :'** Alter hit pts 1730 LOCATE #4,1,12:PRINT #4, "Alter which character's hit pts (1-6,S, else abort) ?" 1740 GOSUB 1180:IF a$="" THEN CLS: CLS #4:GOTO 40 1750 IF a$="S" THEN v=0:GOSUB 2410:GOTO 1770 1760 GOSUB 2390 1770 LOCATE #4,1,12:INPUT #4, "Enter the new value for hit pts (less than 10000, else exit)";hit 1780 IF hit=0 OR hit>9999 THEN CLS:CLS #4:GOTO 40 1790 hit=INT(hit):POKE st+&30, hit\ 256:POKE st+&31,hit MOD 256 1800 POKE st+&32,hit\ 256:POKE st+&33,hit MOD 256 1810 LOCATE #4,25,3+v:PRINT #4, hit:LOCATE #4,32,3+v: PRINT#4,hit 1820 LOCATE #4,1,12:PRINT #4, SPACE$(78); 1830 LOCATE #4,68,3+v:PRINT #4, SPACE$(12):GOTO 1690 1840 LOCATE #4,1,12:PRINT #4, "Alter which character's spell pts (1-6, else abort) ?" 1850 GOSUB 1180:IF a$<"1" OR a$>"6" THEN GOTO 1820 1860 GOSUB 2390 1870 LOCATE #4,1,12:INPUT#4,"Enter the new number of spell pts (<10000, else exit)";spt 1880 IF spt<1 OR spt>9999 THEN 1820 1890 spt=INT(spt):POKE st+&34, spt\ 256:POKE st+&35,spt MOD 256 1900 POKE st+&36,spt\ 256:POKE st+&37,spt MOD 256 1910 LOCATE #4,39,3+v:PRINT#4, spt;:PRINT#4,TAB(46)spt 1920 GOTO 1820 1930 :'** Change spell level of one char 1940 LOCATE #4,1,12:PRINT#4, "Change which character's magic levels (1-6) ?":GOSUB 1180 1950 GOSUB 2390 1960 LOCATE #4,1,11: PRINT#4,"Enter,as a 4 digit number,the levels (sor/con/mag/wiz) in that order e.g. 7777 The highest level in each class is 7, the lowest is 0... ****":LOCATE #4,58,12: INPUT #4,l$ 1970 IF l$="" THEN 2010 ELSE IF LEN(l$)<>4 THEN PRINT CHR$(7); :GOTO 1960 1980 FOR w=0 TO 3:z= VAL(MID$(l$,w+1,1)):IF z>7 OR z<0 THEN PRINT CHR$(7);:GOTO 1960 1990 POKE st+&40+w,z:NEXT w 2000 LOCATE #4,62,3+v:PRINT#4, l$;SPACE$(13) 2010 LOCATE #4,1,11:PRINT #4, SPACE$(79):GOTO 1820 2020 :'** Boost all chars to magic level 7777 (ArchMage) 2030 LOCATE #4,1,11:PRINT#4,"This will turn all 6 characters into ArchMages...Press X to exit" 2040 PRINT#4,"For non-magic users to cast spells, they must be given spell pts (S)" 2050 GOSUB 1180:IF a$="X" THEN 2010 2060 FOR v=1 TO 6:GOSUB 2390 2070 FOR w=0 TO 3 2080 POKE st+&40+w,7:NEXT w 2090 LOCATE #4,62,3+v: PRINT#4,"7777";SPACE$(13) 2100 NEXT v 2110 GOTO 2010 2120 :'** Change experience level of a character 2130 LOCATE #4,1,11: PRINT#4,"Change which charac ter's experience (1-6, else exit) ?":GOSUB 1180 2140 IF a$<"1" OR a$>"6" THEN 2010 2150 GOSUB 2390 2160 LOCATE #4,1,11: PRINT#4,"Character";v;" currently has gained "; 2170 c$="":FOR w=0 TO 10: c$=c$+RIGHT$(STR$( PEEK(st+&15+w)),1):NEXT w:PRINT #4,VAL(c$); 2180 PRINT#4," experience points.":LOCATE #4,1,12 2190 PRINT#4,"Now enter the new number, no larger than 99999999999... ***********":LOCATE #4,57,12: INPUT #4,num$ 2200 IF INSTR(NUM$,",")>0 THEN LOCATE #4,1,11: PRINT#4,CHR$(7);"Please enter the number without any commas or dashes, just the numbers !":GOTO 2190 2210 IF num$="" THEN GOTO 2010 2220 IF VAL(num$)>100000000000 THEN LOCATE #4,1,11: PRINT#4, CHR$(7);"That number is far too large...Please re-enter a smaller number, max 11 dig its":GOTO 2190 2230 num$=STRING$(11-LEN(num$) ,"0")+num$ 2240 FOR w=0 TO 10:POKE st+w+&15, VAL(MID$(num$,w+1,1)):NEXT w 2250 GOTO 2010 2260 :'** Change gold levels 2270 LOCATE #4,1,11: PRINT#4,"Change which character's amount of gold (1-6, else exit ?":GOSUB 1180 2280 IF a$<"1" OR a$>"6" THEN 2010 2290 GOSUB 2390 2300 LOCATE #4,1,11: PRINT#4,"Character";v;"currently has gained "; 2310 d$="":FOR w=0 TO 10: d$=d$+RIGHT$(STR$(PEEK( st+&25+w)),1):NEXT w:PRINT#4,VAL(d$); 2320 PRINT#4,"pieces of gold. ":LOCATE #4,1,12 2330 PRINT#4,"Now enter the new figure, no larger than 99999999999... ***********":LOCATE #4,57,12:INPUT #4,cas$ 2340 IF VAL(cas$)>100000000000 THEN LOCATE #4,1,11: PRINT#4,CHR$(7);"That number is far too large...Please re-enter a smaller number, max 11 dig its":GOTO 2190 2350 cas$=STRING$(11-LEN(cas$), "0")+cas$ 2360 FOR w=0 TO 10:POKE st+w+&25, VAL(MID$(cas$,w+1,1)):NEXT w 2370 GOTO 2010 2380 END 2390 :'** Figure out right position in code for character 2400 IF a$>"0" AND a$<"7" THEN v=VAL(a$) 2410 st=&5CA0+&65*v 2420 LOCATE #4,68,3+v: PRINT#4,"<<<<<<<<<<<" 2430 RETURN 2440 DATA DD,5E,00,21,00,90,01,97, 05,3E,FE,ED 2450 DATA B1,C0,1D,20,F8,7E,FE,FE, C8,CD,5A,BB 2460 DATA 23,18,F6 2470 DATA DD,6E,00,DD,66,01,46,23,5E, 23,56,EB 2480 DATA 11,00,90,CD,8C,BC,E5,11,1C, 00,19,06 2490 DATA 10,70,23,10,FC,E1,21,20, 5C,11,44,03 2500 DATA 01,00,00,3E,03,CD,98,BC, C3,8F,BC,XX 2510 RESTORE 2440 2520 x=&8000:IF PEEK(x+1)=&5E THEN RETURN 2530 READ x$:IF x$="XX" THEN 2560 2540 POKE x,VAL("&"+x$):x=x+1 2550 GOTO 2530 2560 MEMORY &5C1F: LOAD"INVEN",&9000 2570 KEY DEF 68,1,129:KEY 129,"* NULL *"+CHR$(13) 2580 RETURN
Code :
1 :'Bard Designer patch-disk 2 :'By Julian Page 10 MODE 1:INK 0,0:INK 1,26:PEN 1 20 h=HIMEM-1:MEMORY &41FF 30 PRINT"Please insert side 2 of The Bard's Tale." 40 PRINT"When ready, press any key." 50 CALL &BB06 60 LOAD"editor",&4200 70 CLS 80 PRINT"Now insert the disc upon which the game designer will reside, then press a key." 90 CALL &BB06 100 SAVE"inven",b,&599D,&549 110 CLS:PRINT"Now load and run the designer." 120 MEMORY h:NEW
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 90 invité(s)
Vous ne pouvez pas publier 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 insérer de pièces jointes dans ce forum