シン・ESP32評価ボード(2)
2023.03.19
>1.キーボードを使ってゲームが操作できない。

これはずいぶん悩みました。キースキャンするための値をチェックすると「7」しか出ていませんでした。これはジョイポートのスキャン値です。他のキーはまったくスキャンされていません。これではキーボードでの操作ができません。ではなぜ?

しばらく考えて気づきました。もしかするとSG-1000とSC-3000の区別を内部で行っている可能性があります。どうやって行っているのか考えてみました。可能性の1つとしては8255のポートを読みだすということです。SG-1000にはありませんのでWRITEしても書き込んだ値は読みだせません。そこでpa,pb,pc,cwのR/Wができるようにしておきました。念のためcwでのビット操作も入れて置きました。

ポートのR/Wができるようになるとキーボードのスキャンが行われるようになりました。これでジョイバッドとキー入力によるゲーム操作ができるようになります。謎のSC-3000エミュレータは正確にはSG-1000+キーボード的な構成です。まあまあSC-3000だと思いますがゲームソフトはそう思ってくれなかったところに落とし穴があった気がします。しかし、今回の修正でうまくSC-3000と思ってくれたようなので一安心です。


> 2.128KBのメモリーが確保できない。

調べるといろいろわかってきました。ESP32のSRAM(512KB)の内訳が、3つのユニットに分かれているということでした。

SRAM 0 192KB
SRAM 1 128KB
SRAM 2 200KB

このうちSRAM2が使えるSRAMだということなので200KB程度しか使えないようなので128KB確保はとうてい無理そうです。SPIで使えるSRAMを外付けするなどして対応も可能だということでした。512KBとい容量に騙されていましたね。当分、48KBでがまんすることにしたいと思います。


>3.ロレッタの肖像のメッセージが一部消えずに残る。

メッセージがスクロール表示される場合に1つ前の表示が残ってしまうケースです。表示処理に問題があると思っていたのですが、思わぬ副作用で尻尾をつかみました。前回のSC-3000化によりキーボード操作でゲームができるようになりましたが、その副作用でスクロール表示の残表示がひどくなったのです。上下左右とHOME、DELボタンをスキャンする処理が増えたためだと考えています。ということはZ80側の処理と表示処理がうまくかみ合っていない可能性があります。エミュレータなのでどうしようもないのですがそれでもキー操作を入れる前のほうがよかったというのはいただけません。でいろいろ調べていろいろ試したところ

z80_execute(227);

の数値を変えると表示が改善することがわかりました。数値を小さくすることで表示が正常に行われます。ただし設定されている値が何を意味しているのか分かっていませんので大きく変えることで別な不具合が発生する可能性があります。少しだけ小さくしほかにおかしな動作が起こっていないか慎重に見極めたいと思います。
time.png 2023.03.19 16:48 | pmlink.png 固定リンク | folder.png SC-3000
シン・ESP32評価ボード
2023.03.19
シン・ESP32評価ボードで動作するSC-3000エミュレータの作業を再開することにしました。おおむねSG-1000のゲームソフト、SC-3000のBASIC LV3は動作することを確認しています。あとは細かな課題が残っています。

1.キーボードを使ってゲームが操作できない。
2.128KBのメモリーが確保できない。
3.ロレッタの肖像のメッセージが一部消えずに残る。
4.BASICでLLISTのよる印刷時、一部印刷が間に合あっていない。

などがあります。3.はVDP周りなので対応が微妙です。2.はファイルをシークして読み込むことで対応しています。他に方法がないのか調査します。1.はSG-1000とSC-3000の違いが影響している可能性がありそうです。4.はプリンターとの通信速度を調整するかバッファを設けるかするなどの対応が必要だと考えています。早めに課題をクリアして完成度を高めたいところですね。
time.png 2023.03.19 16:41 | pmlink.png 固定リンク | folder.png SC-3000

- CafeLog -