(以下メモ)
状況
BASIC-Iで作成されたゲームプログラムで操作にシフトキーを使用するが、Emu5ではキーの入力を受付けない。入力ミスを疑うが問題なく、MAMEでは正常に動作する。
プログラムではキー入力に『INKEY$』ではなく、I/Oポート$038の値を読みこんでいる。
調べた事・確認したこと
Sord m5の資料はBASIC-Gのマニュアルしか所有していないが、そこでのI/Oポート表ではキーボードは$030~$036を使用とあるが、前述のポート$038をMAMEで読むとFUNCキー,SHIFTキーなどのBASIC-Gで言うところの『INKEY(1)』区分のキー押下で値が変化する様子。同様の調査を実機及びEmu5でも行うが、実機はMAMEと同様に値が変化するものの、Emu5では値が変化せず10進数で255のままとなっている。
この時点でEmu5のキー入力にバグがあるのではないかと考えたが、BASIC-GのINKEY(1)を使用する場合は問題なし。
また、マニュアルのI/Oポート表ではポート番号は掲載されているが、具体的なキー割り付けは未掲載のため、I/Oポート$030~$036のに対するキーを調べてみたところ、BASIC-Gの『INKEY(1)』区分のキーはポート$030でも読めるようだ。
これは実機やMAMEでも同様。
結果
m5実機ではI/Oポート$030~$037と$038~$03Fはミラーになっている様子で、MAMEはミラー側のポートからも読み込む事ができるのに対し、Emu5はそれができない様子。何故ポートの$038を使用していたのか定かではないが、憶測では当時の雑誌や本に掲載されていたものと思われる。
まだまだ、投稿プログラムの写経は続けていくつもりだが、このようなものが多いのか少し注意が必要。
その他
BASIC-IでINKEY$の代わりに、BASIC-GのINKEY()のように押下したキー番号を取得したい場合は、メモリの$0702Bに値が格納される。但し、BASIC-GのINKEY(0)区分のみで、SHIFTなどの補助キーは前述の通りI/Oポート$030($38)を読む。
こんばんはー。古いベーマガ漁ってまして、M5のゲームが面白そうなので
返信削除入れてみたいと思っています。”OCRでテキスト化したものをエミュレータに渡している”とかいてらっしゃいますが、もう少しでいいので具体的な方法を教えていただけないでしょうか?お時間のある時で構いませんのでご検討いただければと思います。よろしくお願いします。<(_ _)>
初めまして。Sord m5のエミュレータ“Emu5”は、ControlメニューのPasteでテキストの貼り付け(BASICへの受け渡し)が可能です。まあ、制御文字やキャラクタ文字などはエミュレータ上で修正が必要なので、それが少し手間ですが…。Emu5はステートセーブ・ロードも可能なので、それらも駆使して頑張って下さい。
削除返信ありがとうございます。
返信削除了解しました。頑張ってみます。少し調べたのですがアイウエオが今のキーボードと違うんですね。( ;∀;)
Emu5にromaji to kanaってコマンドあるのですが使うとひらがなでるのですが、入れたローマ字と違う??すみません、もしご存じなら使い方ご教授できないでしょうか?お願いだけですみません。ではでは...............
ベーマガでみると短いプログラムで面白そうなゲームたくさんありますね。
Emu5のローマ字変換を試してみましたが、正常に機能していないみたいですね…。代わりにこちらの改変版Emu5はどうでしょうか?
削除http://nenecchi.kirara.st/
下の方にあるEmu5.7zを展開したフォルダにromaji.7z内にあるromaji.dllを入れるとHost-->Input-->Romajiがチェック可能になりますので(Control-->Romaji to Kanaはチェック不要です。)これでローマ字変換が可能になるようです。
tab+2キーでかな入力モード(BASICのカーソルが"K"になる)に変更もお忘れなく。
sord m5は低年齢層向けだったのか、キーボードが50音配列というのが逆に厄介ですね…。
返信ありがとうございます。
返信削除無事にローマ字変換できました!。ありがとうございます。
早速入力してみます。SORD社て外国の会社とおもってました。この時期のゲーム機はいっぱいありましたね。
あと蛇足ですが、MGN3303さんはDumpListEditorご存じでしょうか?
”PC8001を懐かしむページ”で配布されているのですが。p6,msx,mz80k,ぴゅう太に対応してます。OCRされたテキストのBASICのチェック補助やグラフィックキャラの入力補助、マシン語のチェックサムの自動チェックをしてくれて、エミュで読める形式,p6t,mzt,cas式,p6t,mzt,casの作成までしてくれます。もしご存じでなければぜひ行ってみてください。ではありがとうございました
初めまして。Emu5にて[shift]を使用する場合入力を受け付けないという記事でたどり着きました。私も同じような感じなのですが、その場合の対応としてその部分のプログラムを変更するという感じでOKなのでしょうか?
返信削除初めまして。えーと、どのようなプログラム(BASIC-I/BASIC-G)を打ち込まれたのかわからないので答えにくいですが、一つは記事にあるI/Oポートの問題が考えられます。INP(&38)という命令が使用されていたら、INP(&30)に変更してみて下さい。
削除もう一つは、これは自分の環境だけで発生する不具合の可能性もありますが、Emu5はSHIFTキーの左右どちらを押したのか正確な値を取得できず、『両方同時押し』として扱うようです。
この場合はINP命令または、INKEY(1)で値を取得すると左SHIFTの値(4)と、右SHIFTの値(8)が加算されて、左右どちらを押しても『12』となります。
参考になるかわかりませんが、この2点を確認してみて下さい。
ありがとうございます。BASIC-Gにてプログラムポシェット1984-03のAlderというSTGを打ち込んでたところです。私もMGN3303さんが記載していただいた下部の方だと思います。もう少し調べることにいたします。
削除