2015年4月14日火曜日

アルフォスをJoystickで

XPAC2を使うと、STICKやSTRIG命令などT-BASIC7で用意されているジョイスティック命令を利用することができます。

I/Oポートから直性データを取得する場合、以下のアドレスから操作します。
I/Oポートアドレス内容
19hジョイスティックアダプタ入力ポートA
1Ahジョイスティックアダプタ入力ポートB
I/Oポートを直接叩くのは、初代パソピアでも使えます。

リードするデータ内容は、デフォルト0xFFで、各ボタンが押されると、以下のビットがLowになります
bit7bit6bit5bit4bit3bit2bit1bit0
--トリガーBトリガーA右ボタン左ボタン下ボタン上ボタン

せっかくなので、Alphosでジョイスティックを利用できるようにしてみました。
以前紹介したパッチでは、純正のJOY PAC2でも動作しなかったので、全面見直し。
見直したパッチはこちら(277行目以降が、ジョイスティックのパッチ)
271 INPUT"Mnemonic? (1-255)",B:IF (B>0) AND (B<256) THEN POKE &HC80A,B-1
272 INPUT"Ground Attack? (Y/N)",C$:IF C$="N" OR C$="n" THEN POKE &HE587,0:POKE &HE588,0:POKE &HE589,0
273 INPUT"Interceptor? (Y/N)",C$:IF C$="N" OR C$="n" THEN POKE &HE590,0:POKE &HE591,0:POKE &HE592,0
274 INPUT"Sound? (Y/N)",C$:IF C$="N" OR C$="n" THEN POKE &HE596,0:POKE &HE597,0:POKE &HE598,0
275 INPUT"Endress? (Y/N)",C$:IF C$="Y" OR C$="y" THEN POKE &HE607,0
276 INPUT"High Speed? (Y/N)",C$:IF C$="Y" OR C$="y" THEN POKE &HD12D,&HC9
277 FOR I=1 TO 6:READ A$,B$:A=VAL("&H"+A$):POKE A-1,&HC3:POKE A,VAL("&H"+B$):POKE A+1,&HF1:NEXT
278 FOR A=&HF100 TO &HF1AA:READ B$:POKE A,VAL("&H"+B$):NEXT
279 OUT &H1B,1

390 DATA D2BA,56,E4AA,00,E54B,09,E5A5,12,E8F5,33,E920,46
400 DATA E5,21,AD,E4,22,31,F1,18,10,E5,21,4E,E5,22,31,F1
410 DATA 18,07,E5,21,A8,E5,22,31,F1,D3,30,DB,31,6F,DB,19
420 DATA 67,E6,03,20,02,CB,BD,7C,E6,0C,20,02,CB,BD,7D,E1
430 DATA C3,00,00,DB,31,C5,4F,DB,19,F6,F3,07,07,47,07,A0
440 DATA A1,C1,2F,C3,F7,E8,DB,31,C5,4F,DB,19,0F,0F,0F,0F
450 DATA A1,C1,2F,C3,22,E9,E5,4F,DB,19,2F,E6,3F,21,6B,F1
460 DATA 85,6F,7E,A1,32,26,EC,E1,C3,BC,D2,5F,5E,5B,5A,4F
470 DATA 4E,4B,4A,1F,1E,1B,1A,0F,0E,0B,0A,57,56,53,52,47
480 DATA 46,43,42,17,16,13,12,07,06,03,02,5D,5C,59,58,4D
490 DATA 4C,49,48,1D,1C,19,18,0D,0C,09,09,55,54,51,50,45
500 DATA 44,41,40,15,14,11,10,05,04,01,00

XPAC2の場合、Joystick1(SDカードの隣)の方にジョイスティックを接続してください。

上記のパッチを当てたALPHOSを起動。自分の好みに応じて、オプションを入力

オープニングが表示された後に、


ジョイスティックの
「SELECT」 (0bit[上]と1bit[下]が同時にLow)、
「RUN」 (2bit[左]と3bit[右]が同時にLow)
を押すと、ゲームスタートです。

ゲーム中の画面

十字キーで上下左右に移動、2ボタン対応のジョイスティックの場合、ボタンの配置は
Aボタン=Zキー(BOMB)
Bボタン=Xキー(MISSILE)
ジョイスティックもテンキーも、どちらも使えるようにしました。

ハイスコアの入力画面では

左右キーで文字選択、A or Bボタンで決定になります。

MRAMは64KBあるので、Alphosの場合、全てのプログラムを保存できます。
マシン語の保存先アドレスと、サイズは以下の通りです。
alpdat &H0000, &H6800
alpmap &H9000, &H2A00
alpobj &HC800, &H2200
Joystickパッチと合わせて、MRAMから起動できるように保存しておくと快適です。

0 件のコメント:

コメントを投稿