I/Oポートから直性データを取得する場合、以下のアドレスから操作します。
I/Oポートアドレス | 内容 |
---|---|
19h | ジョイスティックアダプタ入力ポートA |
1Ah | ジョイスティックアダプタ入力ポートB |
リードするデータ内容は、デフォルト0xFFで、各ボタンが押されると、以下のビットがLowになります
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
---|---|---|---|---|---|---|---|
- | - | トリガー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を起動。自分の好みに応じて、オプションを入力
オープニングが表示された後に、
十字キーで上下左右に移動、2ボタン対応のジョイスティックの場合、ボタンの配置は
Aボタン=Zキー(BOMB)
Bボタン=Xキー(MISSILE)
ジョイスティックもテンキーも、どちらも使えるようにしました。
ハイスコアの入力画面では
左右キーで文字選択、A or Bボタンで決定になります。
MRAMは64KBあるので、Alphosの場合、全てのプログラムを保存できます。
マシン語の保存先アドレスと、サイズは以下の通りです。
alpdat &H0000, &H6800
alpmap &H9000, &H2A00
alpobj &HC800, &H2200
Joystickパッチと合わせて、MRAMから起動できるように保存しておくと快適です。
マシン語の保存先アドレスと、サイズは以下の通りです。
alpdat &H0000, &H6800
alpmap &H9000, &H2A00
alpobj &HC800, &H2200
Joystickパッチと合わせて、MRAMから起動できるように保存しておくと快適です。
ご無沙汰しております。
返信削除やっとALPHOSとXPAC2の両方が手に入ったので、こちらの記事を元にMRAM起動を試みてみました。
BASICプログラムの"ALPHOS"で、
BLOAD #-1,"alpdat"
BLOAD #-1,"alpmap"
BLOAD #-1,"alpobj"
の後で、一旦停止して
BSAVE"alpdat",&H0000,&H6800
BSAVE"alpmap",&H9000,&H2A00
BSAVE"alpobj",&HC800,&H2200
でMRAMに保存したのですが、これを使って起動するとキャラクターや
マップのパターン等が全て化ける状態で起動します。(動作はしている?)
全範囲(&H0000-&HEA00)を一括保存して起動しても同様です。
MRAMも2箇所両方で試しても同じ結果でした。
何か原因が分かれば教えて下さると幸いです。
宜しくお願いします。
"alpdat"は裏RAM領域(&H0000-&H7FFF)にロードされています。
削除一旦別領域にロードしてから保存するのが良いと思います。
BLOAD#-1,"alpdat",&H9000
BSAVE"alpdat",&H9000,&H6800
XPAC2から読み込む際は、裏RAMの番地「0」を指定してLOADします
BLOAD"alpdat",0
違っていたらすいません・・・
ありがとうございます!!
削除&H9000や&H8000にロードだと何故か暴走したので、&H8800にロードして成功しました。
パッチの方に挑戦したいと思います。
引き続き宜しくお願いします。