永遠の理想郷・Shangri-laが帝国Agarthaに侵略されて5年、彼らは防空ネットワークの整備を着々と進めていた。故郷を奪還すべく、近接ステルス爆撃機Zephyrを駆ってレールガンによる迎撃をかいくぐり、防空ネットワークのノードを構成する超大型浮遊ドローン、Kubla-Khanを破壊せよ!

注意

本ゲームはスクロールシューティングゲームです。PB-100実機(要拡張メモリ)でも動作しますが、スピーディなゲームを楽しんでいただくため、PB-100シミュレータ(PB-SIM fastモード、PokecomGo fastモード)を推奨します。

はじめに

PB-100シミュレータにプログラムをロードします。プログラム・サイズは1,504stepsです。

Shift+[0]でゲーム開始です。中断後の再開はREADY P0においてRUN 8[EXE]です。

遊び方

爆撃機Zephyrに乗り、敵のレールガンによるロングレンジ攻撃を避けながら、Shangri-laフィールドに配備された敵施設を爆撃し、防空ネットワークを破壊することが目的です。

ゲームを開始すると、Shangri-laフィールドと、自機Zephyr及びターゲットスコープが表示されます。

フィールドは一定速度でスクロールします。

[4]←→[6]キーを押すと、Zephyrとターゲットスコープが前後に移動します。

[5]キーを押すと、Zephyrがレールガン回避高度に移行します。再度押すと戻ります。

それ以外のキーを押すと、照準位置(ターゲットスコープの右隣)にエネルギー弾を投下します。

エネルギー弾は最高で6発所持できます。B196エネルギーサイトを破壊すると3発分補充します。

残弾数は角度表示で確認できます。

敵の防空システムは、各所に配備したフェーズドアレイレーダーから送られたコマンドにより、迎撃レールガンでのロングレンジ攻撃を仕掛けてきます。従って、スコープ(画面)内にレーダー“≧”が入ってきた場合は、最優先でこれを破壊しましょう。

注意

破壊できるAgartha軍施設

ある程度進めると、超大型浮遊ドローン“Kubla-Khan”に遭遇します。

注意


その後再開し、次のノードを目指します。Zephyrの残機がゼロになるまでゲームが継続します。

残機が無くなるとゲームオーバーで、スコアを表示して終了します。

残機がある限りゲームに終了はなく、ゲームオーバーまでの最高得点を目指します。

1000万点超えも夢ではありません。

Shangri-la説明書.pdf
Shangri-la flowchart.pdf

PB-SIM形式

[P0]

2 VAC:C$=">\RA[\BX\BX ":P=1:E=3:U=6:MODE 6

4 PRINT " Shangri-la"

6 $=C$+"      +   +   +  ++  ++ ":T=1:F=.2:B=0:M=0:N=0:W=0

8 I=7:FOR R=1 TO 60

10 Q=I+P:IF H=1;D$=MID(Q+1,2):GOTO 14

12 D$=MID(Q+1,1)+MID(L+3,1)

14 PRINT CSR 0;MID(I,P);MID(H+1,1);D$;MID(Q+3,9-P);

16 IF B>=T;PRINT CSR B;"X";:GOTO 50

18 IF B>0;PRINT CSR B;"\DT";:B=B+1:T=T-F

20 A$=KEY:IF A$="" THEN 30

22 IF A$="5";H=1-H:GOTO 30

24 IF A$="4";P=P-SGN(P-1:GOTO 30

26 IF A$="6";P=P+SGN(7-P:GOTO 30

28 IF H=0;IF U>0;IF B=0;B=P:T=P+3-FRAC I:U=U-1:MODE 4.7+U/3

30 M=M-F:N=N-F

32 IF INT(M/13)<>0;IF INT(N/13)<>0;L=0:GOTO 38

34 IF L>0;L=L+.1:GOTO 46

36 IF RAN#<.02*G;L=.1

38 I=I+F:NEXT R

40 G=G+1:IF G<15;$=C$+MID(19):GOSUB #1:GOTO 8

41 IF W=0;W=1:$=C$+MID(19):F=0:M=8:N=10:GOTO 8

42 IF G=16;IF W=2 THEN 8

44 PRINT "      +   + ";:G=7:GOTO 6

46 IF L<3 THEN 38

48 GOSUB #2:L=0:GOTO 38

50 Q=I+T:D$=MID(Q,1)

52 K=ABS(T-M):IF K<1;M=-1:GOTO 62

54 K=ABS(T-N):IF K<1;N=-1:GOTO 62

56 IF D$="\SQ";S=S+.5:GOTO 66

58 IF D$="\CI";U=U+3-(U-3)*INT(U/3.5:GOTO 66

60 B=0:T=1:MODE 4.7+U/3:GOTO 20

62 IF W>0 THEN 68

64 S=S+1

66 $=MID(1,Q-1)+"*"+MID(Q+1):GOTO 60

68 IF W>1 THEN 74

70 IF M<0;IF N<0;W=2:M=9:N=9

72 GOTO 64

74 S=S+2:IF M<0;IF N<0 THEN 78

76 GOTO 60

78 FOR J=0 TO 8:PRINT CSR 8-J;"(";:NEXT J:PRINT "":S=S+S

80 G=7:GOTO 6


[P1]

3 IF G=14;GOSUB 99:RETURN

4 K=0:GOSUB 10+RAN#*15

5 IF M<0;M=K:RETURN

6 IF N<0;N=K

7 RETURN

10 $=$+"//\SP// ++ \GE +":K=21:RETURN

11 $=$+"--  \CI++\GE ++ ":K=19:RETURN

12 $=$+" \CI\CI\CI  +//+  ":RETURN

13 $=$+" \GE+   +\SP\SP\SQ\CI ":K=13:RETURN

14 $=$+"\LE\SQ\LE \GE#\GE## ++":K=16:RETURN

15 $=$+"     \SP\SP\SP\GE\SP\SP\SP":K=20:RETURN

16 $=$+"\GE\SP\CI\SQ\SP\SP\SP\SP    ":K=12:RETURN

17 $=$+"/(  m  m  )\SQ":RETURN

18 $=$+"+--++- \SP\SP \CI\GE":K=23:RETURN

19 $=$+"\SP -======-  ":RETURN

20 $=$+"   \CI\SQ\GE\SQ\CI    ":K=17:RETURN

21 $=$+"+ \LE+ \GE+ #\CR# ":K=17:RETURN

22 $=$+" \SQ\GE \SP\SP\SP \LE \CI\CI":K=14:RETURN

23 $=$+"  \SP\SP// \SQ\SQ \SP\SP":K=21:RETURN

24 $=$+"\CI\SQ\CI\SQ \GE ++   ":K=17:RETURN

99 $=$+"+  +   (\GE\DI\GE)":RETURN


[P2]

1 FOR J=11 TO P-P*H STEP -1:PRINT CSR J;"-";:NEXT J

2 IF H=1;RETURN

3 PRINT CSR P;"X":E=E-1

4 IF E=-1;PRINT:PRINT "GAME OVER","SCORE";S*100:END

5 U=6:MODE 6:PRINT E;" LEFT":RETURN


PB-100実機形式

あとがき

かつての超有名ゲームに似ている…? はい、否定しません。

空中と地上の敵を撃ち分けるようにしたいが、PB-100 BASICでは背景スクロールしながら複数の敵や弾をテーブルで管理すること自体が困難。で、ターゲットを同時2個に限定したうえに敵の攻撃はロングレンジのみという設定に割り切り、代わりにボス戦だけは詰め込みました。PB-100ゲーム作りは、削りに削りまくって最低限何を残すかが問われます。ただ、実機で十分な速度が出ないことが心残りです。