永遠の理想郷・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発分補充します。
残弾数は角度表示で確認できます。
敵の防空システムは、各所に配備したフェーズドアレイレーダーから送られたコマンドにより、迎撃レールガンでのロングレンジ攻撃を仕掛けてきます。従って、スコープ(画面)内にレーダー“≧”が入ってきた場合は、最優先でこれを破壊しましょう。
注意
通常高度ではレールガン攻撃を受けてしまうので、ロックオンされたら回避高度に移行しなければなりません。ロックオンされたことはターゲットスコープが黒くなることで分かります。
レールガン回避高度では爆撃できません。ターゲットスコープも表示されません。
エネルギー弾が無くなると爆撃できないのでB196による補充もできません。こうなるとZephyrを投棄するしかありません。(残機が-1となります)
Zephyrは3機だけで、補充はありません。
まれに、故障しているレーダーや、姿を隠したレーダーもあるようです。
破壊できるAgartha軍施設
ある程度進めると、超大型浮遊ドローン“Kubla-Khan”に遭遇します。
注意
Kubla-Khanはエネルギー弾一発では破壊できません。
Kubla-Khanを一つ破壊すると、それまでに獲得したスコアが倍増します。
一定時間経過すると、Kubla-Khanは飛び去ります。
その後再開し、次のノードを目指します。Zephyrの残機がゼロになるまでゲームが継続します。
残機が無くなるとゲームオーバーで、スコアを表示して終了します。
残機がある限りゲームに終了はなく、ゲームオーバーまでの最高得点を目指します。
1000万点超えも夢ではありません。


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ゲーム作りは、削りに削りまくって最低限何を残すかが問われます。ただ、実機で十分な速度が出ないことが心残りです。