あの伝説の RPG、XANADU(ザナドゥ)が、ついに PB-100シミュレータに移植されました! 

幻の聖剣 Dragon Slayer を手に入れて、この迷宮を支配するガルシスを倒すのだ! 


対応機種

・PB-SIM(高速モード):Windows パソコン+テンキー推奨

Pokecom GOfast モード   Pokecom GOでの注意事項

・PB-120(動きは遅いです) PB-120版
 (実機は一行62文字以内の制限があるため、プログラムを若干修正)

プロジェクトEGGさんにて今でもswitchでXANADUをプレイできるんですね。嬉しいかぎり!

https://store-jp.nintendo.com/list/software/70010000073916.html

XANADUマニュアル.pdf

XANADU PBマニュアル

XANADUアイテムマニュアル.pdf

XANADU PB アイテム・マニュアル

XANADUモンスターマニュアル.pdf

XANADU PB モンスター・マニュアル

XANADUプログラム解説.pdf

XANADU PB プログラム解説書

XANADU flowchart.pdf

XANADU PB フローチャート

[P0]

1 VAC

2 PRINT CSR 2;"\LA\SP";:GOSUB 9:PRINT CSR 8;"\HT?";:GOSUB 9

4 PRINT CSR 5;"\CL/";:GOSUB 9:PRINT:PRINT "## XanadU ##"

6 L=1:A=1:S=1:T=80:F=50:H=F

8 Y=10+L:GOSUB #8:GOTO #1

9 Z=200:GOSUB #5:RETURN


[P1]

1 REM *****Ground Level

30 PRINT:PRINT "\SPRpWpAm_Cv?\SP";

35 GOSUB 205

40 IF C$="C" THEN 180

45 PRINT:PRINT "Gold";T;"$"

50 IF C$="R" THEN 70 

55 IF C$="W" THEN 95

60 IF C$="A" THEN 125

65 GOTO 30

70 PRINT:PRINT B;"Rp";L*100;"$?";

75 GOSUB 205

80 IF C$<>"Y" THEN 30

85 IF T>=100*L;B=B+1:T=T-100*L:GOTO 30

90 GOTO 160

95 IF S>4 THEN 30

100 Z=S*S*100:PRINT:PRINT S;"Wp";Z;"$?";

105 GOSUB 205

110 IF C$<>"Y" THEN 30

115 IF T>=Z;S=S+1:T=T-Z:Y=20+S:GOSUB #8:GOTO 30

120 GOTO 160

125 IF A>4 THEN 30

130 Z=A*A*100:PRINT:PRINT A;"Am";Z;"$?";

135 GOSUB 205

140 IF C$<>"Y" THEN 30

145 IF T>=Z;A=A+1:T=T-Z:Y=30+A:GOSUB #8:GOTO 30

160 PRINT:PRINT "NotEnough":GOTO 30


179 REM *****Main Routine

180 R=1:X=6:GOSUB #6

185 GOSUB #2

190 IF R=0;GOSUB #6:GOTO #1

195 IF R=16;GOSUB #6:GOTO #3

200 GOTO 185


204 REM *****Keyin Subroutine

205 IF KEY<>"" THEN 205

210 C$=KEY:IF C$="" THEN 210

215 RETURN


[P2]

1 REM *****Dungeon

5 GOSUB #7

10 IF FRAC(Z(R))=0 THEN 20

15 $="\SQ\SQ\SQ":M=L*L*S*S*5:O=0:P=0:Q=0:V=RND(FRAC(Z(R))*10,-1):GOTO 30

20 V=-1:IF Z(R)<4;V=INT(RAN#*4)+2:PRINT:PRINT D$


25 REM *****Item Timer Countdown

30 K=K-1:IF K<0;K=0

35 N=N-1:IF N<0;N=0

 

40 REM *****Display Scene

45 IF V>7;C$="\DT":GOTO 55

50 C$=MID(W+2,1)

55 I$="":IF K>0 THEN 70

60 IF X>7;I$="+":GOTO 70

65 I$="\CL"

70 Z=8*FRAC(X/8)

75 PRINT CSR 8;"    ";CSR 7;INT H;CSR 0;"#      #";CSR Z;I$;

80 IF V>0;PRINT CSR 8*FRAC(V/8);C$;

85 IF KEY="6";PRINT CSR Z+1;"\RA";:GOTO 95

90 IF KEY="4";PRINT CSR Z-1;"\LA";


94 REM *****Player Move

95 C$=KEY

100 IF C$="" THEN 255

105 IF C$="4";Z=X-1:GOTO 135

110 IF C$="6";Z=X+1:GOTO 135

115 IF C$="8";Z=X+8:GOTO 135

120 IF C$="2";Z=X-8:GOTO 135

125 IF C$="Z" THEN 355

130 GOTO 255

135 IF Z>=0;IF Z<=15 THEN 145

140 GOTO 255

145 IF Z=V THEN 175

150 IF FRAC(Z/8)=0;R=R+1:X=6:RETURN

155 IF 8*FRAC(Z/8)=7;R=R-1:X=1:RETURN

160 X=Z:GOTO 255


170 REM *****Player Attack

175 M=M-L^2*(S-2*INT(S/6))^2*(.5+RAN#)

180 IF M>0 THEN 325

185 IF FRAC(Z(R))=0 THEN 240


189 REM *****Open Item Box

190 IF U=3;IF INT(Z(R))=4;G=G+1:C$="X":GOSUB 220:PRINT "GetHourglass":GOTO 215

195 IF U=4;IF INT(Z(R))=4;J=J+1:C$="c":GOSUB 220:PRINT "GetDemnsRing":GOTO 215

197 IF U=5;IF INT(Z(R))=4;S=6:C$="^":GOSUB 220:PRINT "GetDragnSlyr":GOTO 215

200 IF U=1;IF INT(Z(R))>2;B=B+1:C$="i":GOSUB 220:PRINT "GetRedPotion":GOTO 215

205 IF U=2;C$="j":GOSUB 220:PRINT "It's Poison!":H=H/2:GOTO 215

210 C$="$":GOSUB 220:Z=INT(R*R*(.5+RAN#)*5):T=T+Z:PRINT "Get";Z;"gold"

215 Z(R)=INT(Z(R)):V=-1:GOTO 30

220 GOSUB 235:PRINT CSR 8*FRAC(V/8);"\SQ";

225 GOSUB 235:PRINT CSR 8*FRAC(V/8)-1;"[ ]";

230 GOSUB 235:PRINT CSR 8*FRAC(V/8)-1;"[";C$;"]";:GOSUB 235:PRINT:RETURN

235 Z=99:GOSUB #5:RETURN


239 REM *****Monster Dead

240 Z=8*FRAC(V/8):PRINT CSR Z;"_":Z(R)=Z(R)+1+Z/10

245 E=E+(3*R*R-8*R+6)*(1+RAN#/5-.1):IF E<100*L^3-150*L^2+65*L THEN 252

250 IF L<5;L=L+1:F=20*L^3:PRINT:PRINT "LV.up!";L:Y=L+10:GOSUB #8

252 GOTO 5


254 REM *****Monster Move

255 IF N>0 THEN 30

260 IF RAN#*10>Q THEN 30

265 IF K<=0;IF RAN#*10<P THEN 285

270 W=INT(RAN#*3)-1:Z=V+W

275 IF W=0;Z=V+(INT(RAN#*3)-1)*8

280 GOTO 295

285 W=SGN(FRAC(X/8)-FRAC(V/8)):Z=V+W

290 IF W=0;Z=V+SGN(X-V)*8

295 IF Z>=0;IF Z<=15 THEN 305

300 GOTO 30

305 IF Z=X THEN 325

310 IF FRAC(Z/8)=0 THEN 30

315 IF 8*FRAC(Z/8)=7 THEN 30

320 V=Z:GOTO 30


324 REM *****Monster Attack

325 IF K+N<>0 THEN 30

330 IF RAN#*10>P THEN 30

335 H=H-O/(L+A)*(.5+RAN#)

340 IF H<0;PRINT CSR 8*FRAC(X/8);"_":PRINT:PRINT "Game Over.":END

345 GOTO 30


350 REM *****Display Status / Use Item

355 Y=10+L:GOSUB #8:Y=20+S:GOSUB #8:Y=30+A:GOSUB #8

360 PRINT:PRINT "Gold";T;"$";:Z=250:GOSUB #5

365 PRINT:PRINT B;"R";G;"H";J;"D";"?";

370 C$=KEY:IF C$="" THEN 370

375 IF C$="R" THEN 395 

380 IF C$="H";IF G>=1;N=L*50:G=G-1:GOTO 30

385 IF C$="D";IF J>=1;K=L*50:J=J-1:GOTO 30

390 GOTO 30

395 IF B=0 THEN 30

400 H=H+F*.5:B=B-1

405 IF H>F;H=F

410 GOTO 30


[P3]

1 REM *****King Dragon

5 X=0:V=5:M=20000:$=",\DT\DT\DT\DT'''''\DT\DT\DT\DT,"

10 P=0:Q=0

15 PRINT:PRINT "\BXKingDragon\BX"

20 Q=Q+1:Z=50:GOSUB #5:PRINT:PRINT CSR V;"7\LE";

30 PRINT CSR X;MID(P+1,1);CSR 7;INT(H);

40 C$=KEY

50 IF C$="" THEN 100

60 IF C$="6" THEN 250

70 IF C$="8" THEN 200

80 IF C$="4" THEN 260


99 REM *****Jump Countdown

100 P=P-1:IF P<0;P=0


109 REM *****Player=in KD's scope?

110 IF V-X=1 THEN 150


119 REM *****KD Move

120 IF FRAC(Q/10)=0;V=V-1:IF V<1;V=1

130 GOTO 20


149 REM *****KD Attack

150 PRINT CSR V-1;"/";

160 IF P>2;IF P<12 THEN 20

180 H=H-5000/A*(.5+RAN#):IF H<0 THEN 400

190 GOTO 20


199 REM *****Set Jump Counter

200 IF P=0;P=14:GOTO 110

210 GOTO 100


249 REM *****Front=KD?

250 IF V-X=1 THEN 300

260 IF P>0 THEN 100

270 IF C$="6";IF V-X>1;X=X+1

280 IF C$="4";IF X>0;X=X-1

290 GOTO 110


299 REM *****Player Attack

300 PRINT CSR X+1;"\RA";

310 M=M-L*L*S*S*3.5*(.5+RAN#)*INT(S/6)

320 IF M<0;PRINT CSR V;"__";:GOTO #4

330 H=H-200/A*(.5+RAN#):IF H>0 THEN 100

400 PRINT CSR X;"_":PRINT:PRINT "Game Over.":END


[P4]

1 REM *****Ending

5 Z=400:GOSUB #5

10 FOR P=0 TO 11:PRINT CSR P;"#";:Z=50:GOSUB #5:NEXT P

15 PRINT "  Your battle has ended. ";

20 PRINT "Kubla Khan regaines his form. ";

25 PRINT "You'll never let swords off.";:Z=400:GOSUB #5

30 PRINT:PRINT "## XanadU ##":END


[P5]

1 FOR Z=Z TO 0 STEP -1:NEXT Z:RETURN


[P6]

1 PRINT:PRINT "##.\DT'\CL'\DT.##";:Z=200:GOSUB #5

2 PRINT CSR 5;"+";:Z=99:GOSUB #5

3 PRINT CSR 5;"'";:Z=200:GOSUB #5:RETURN


[P7]

1 REM *****Load Monster Data

10 GOTO R+100

101 $="2sS"    :D$="Boalisk":M=1   :O=1   :P=1:Q=1:U=0:RETURN

102 $="Q\OM\OM":D$="Kraken" :M=7   :O=7   :P=2:Q=2:U=1:RETURN

103 $="0O0"    :D$="Beholdr":M=14  :O=14  :P=8:Q=2:U=0:RETURN

104 $="dob"    :D$="Scrpion":M=8   :O=12  :P=5:Q=1:U=2:RETURN

105 $="mMM"    :D$="Mud man":M=83  :O=100 :P=4:Q=3:U=3:RETURN

106 $="\\\\\\" :D$="Stroper":M=83  :O=187 :P=5:Q=0:U=4:RETURN

107 $="o\CI\CI":D$="Ascmoid":M=114 :O=139 :P=3:Q=6:U=0:RETURN

108 $="qpp"    :D$="NecroPh":M=99  :O=157 :P=6:Q=4:U=1:RETURN

109 $="\PIkk"  :D$="Grell"  :M=530 :O=258 :P=8:Q=4:U=2:RETURN

110 $="_AA"    :D$="Camzotz":M=834 :O=927 :P=7:Q=3:U=3:RETURN

111 $="\GE*\LE":D$="Ixchel" :M=1012:O=1860:P=4:Q=4:U=4:RETURN

112 $="+\CR\CR":D$="DrkStkr":M=1529:O=2200:P=5:Q=4:U=1:RETURN

113 $="-\TR\TR":D$="Volt"   :M=1757:O=9999:P=9:Q=5:U=2:RETURN

114 $="@GG"    :D$="Salmndr":M=2499:O=3815:P=6:Q=5:U=5:RETURN

115 $="3\SG\SG":D$="CZ812CE":M=9999:O=4680:P=7:Q=9:U=0:RETURN


[P8]

1 PRINT:GOSUB Y:Z=250:GOSUB #5:RETURN

11 PRINT "NoviceFightr";:RETURN

12 PRINT "Adept";:RETURN

13 PRINT "Hero";:RETURN

14 PRINT "Paladin";:RETURN

15 PRINT "Master-Load";:RETURN

21 PRINT "Dagger";:RETURN

22 PRINT "Hand-Axe";:RETURN

23 PRINT "Lance";:RETURN

24 PRINT "MurasameBLD.";:RETURN

25 PRINT "VorpalWeapon";:RETURN

26 PRINT "DragonSlayer";:RETURN

31 PRINT "Cloth";:RETURN

32 PRINT "ScaleArmor";:RETURN

33 PRINT "Full-Plate";:RETURN

34 PRINT "+2 Reflex";:RETURN

35 PRINT "Battle-Suits";:RETURN