制作者のうぴょりっくソフトさんのご厚意により、1992年に頒布された同人ソフト「最終平気UPO プレリリース」(うぴょりっくソフト)のディスクイメージを公開しました。縦スクロールシューティングゲームです。
http://www.pc88.gr.jp/forum/viewtopic.php?t=312
2008年01月12日
2007年11月18日
開発支援機能
ALT(右)キーを押している間高速実行する(No Waitかつ1/16 frame)機能を追加。VA-EG上でプログラムをコンパイルしているときにALT(右)を押していれば待ち時間が短縮できる。
Console Windowのちらつきを防止。
EditなどのコントロールをWindows APIで操作する方法について、MSDNのどこにまとまって書いてあるのかが、ようやくわかった。
http://msdn2.microsoft.com/en-us/library/bb773173.aspx
ブックマークしたからいいけれど、トップレベルからだとどうしてもたどり着けない・・・
描画の制御やメッセージ伝達の仕組みなどのまとまった説明もあって、
ようやく入口にたどり着けた感じ。
今まで日本語のMSDNを探していたのがだめだったようで。観念して英語読むしかなさそう。
コントロールにどのスタイルを適用するとどうなるかとか、どのメッセージを送るとどうなるかとかを確認するのに、Control Spyというツールがあるらしい。これは便利。
http://msdn2.microsoft.com/en-us/library/bb773165.aspx
大量のログ出力をEditコントロールで高速表示させたかったのだが、いろいろ試行錯誤した結果、無理という結論に。
Console Windowのちらつきを防止。
EditなどのコントロールをWindows APIで操作する方法について、MSDNのどこにまとまって書いてあるのかが、ようやくわかった。
http://msdn2.microsoft.com/en-us/library/bb773173.aspx
ブックマークしたからいいけれど、トップレベルからだとどうしてもたどり着けない・・・
描画の制御やメッセージ伝達の仕組みなどのまとまった説明もあって、
ようやく入口にたどり着けた感じ。
今まで日本語のMSDNを探していたのがだめだったようで。観念して英語読むしかなさそう。
コントロールにどのスタイルを適用するとどうなるかとか、どのメッセージを送るとどうなるかとかを確認するのに、Control Spyというツールがあるらしい。これは便利。
http://msdn2.microsoft.com/en-us/library/bb773165.aspx
大量のログ出力をEditコントロールで高速表示させたかったのだが、いろいろ試行錯誤した結果、無理という結論に。
2007年09月19日
2007年09月11日
CAPS/カナ
CAPS/カナキーのロック状態は以下の場合に保持されなかった。
1) VA-EGを終了した場合
2) リセットした場合
1)を解決したくて、まあ終了前にキーの状態を読み取ってiniに保存すればOKだろうと思っていたら、そんなに単純ではなかった。というか、キーボード実装周りのバグや未実装部分が露見した。
2)は、気づいていなかったが(汗)、原因はnp2のエミュレートするキーボードが、CAPS/カナをソフトウェア制御するタイプで、VAとは違うからだろうと思ったが、そうではなかった。
バグの内容
a) ポート197h (キーボード制御)の実装ミス
- モードコマンドとオペレーションコマンドを切り替えるbitの意味を逆に解釈していた。
- そもそも、モードコマンドとオペレーションコマンドの切り替えに使うbitの値が、テクマニと、VAのROM内プログラムが出力するのとで、違う。
⇒ RESETコマンドを発行しようとしても無視されていた
b) ポート190h 未実装
BIOSは、ここのbit0の値で、電源投入かリセットかを区別し、電源投入時に限ってキーボードにRESETコマンドを発行する。ここが未実装なために、キーボードにRESETコマンドを発行しようとしていなかった。
c) VAリセット時にキーマップをクリアしていた。
⇒ リセット前の状態が保存されない。
正しい動作は、おそらく、
・CAPS on/offの度にキーボードからVAにデータを送信、VA内でキーマップに反映
・電源投入時は、RESETコマンドを送信することにより、CAPSの状態に応じてonまたはoffのデータがキーボードからVAに送信され、VA内でキーマップに反映
・リセット時は、RESETコマンドは送信されないし、キーマップも前の状態を保つ。
CAPSのon/offをiniに保存して、VA-EG起動時に反映しただけでは実際のキー入力には反映されなかった。a),b)の問題で、CAPSの状態がキーマップに反映されなかったから。
これらを修正。iniへの保存も実装。
1) VA-EGを終了した場合
2) リセットした場合
1)を解決したくて、まあ終了前にキーの状態を読み取ってiniに保存すればOKだろうと思っていたら、そんなに単純ではなかった。というか、キーボード実装周りのバグや未実装部分が露見した。
2)は、気づいていなかったが(汗)、原因はnp2のエミュレートするキーボードが、CAPS/カナをソフトウェア制御するタイプで、VAとは違うからだろうと思ったが、そうではなかった。
バグの内容
a) ポート197h (キーボード制御)の実装ミス
- モードコマンドとオペレーションコマンドを切り替えるbitの意味を逆に解釈していた。
- そもそも、モードコマンドとオペレーションコマンドの切り替えに使うbitの値が、テクマニと、VAのROM内プログラムが出力するのとで、違う。
⇒ RESETコマンドを発行しようとしても無視されていた
b) ポート190h 未実装
BIOSは、ここのbit0の値で、電源投入かリセットかを区別し、電源投入時に限ってキーボードにRESETコマンドを発行する。ここが未実装なために、キーボードにRESETコマンドを発行しようとしていなかった。
c) VAリセット時にキーマップをクリアしていた。
⇒ リセット前の状態が保存されない。
正しい動作は、おそらく、
・CAPS on/offの度にキーボードからVAにデータを送信、VA内でキーマップに反映
・電源投入時は、RESETコマンドを送信することにより、CAPSの状態に応じてonまたはoffのデータがキーボードからVAに送信され、VA内でキーマップに反映
・リセット時は、RESETコマンドは送信されないし、キーマップも前の状態を保つ。
CAPSのon/offをiniに保存して、VA-EG起動時に反映しただけでは実際のキー入力には反映されなかった。a),b)の問題で、CAPSの状態がキーマップに反映されなかったから。
これらを修正。iniへの保存も実装。
全角キー3
[全角/半角]キーをVAの全角キーとして使えるように修正。
WM_KEYDOWN: wParam = f4 lParam & 0x01000000 = 00
または
WM_KEYDOWN: wParam = f3 lParam & 0x01000000 = 00
を受け取ったらキーon、それから一定時間ったらキーoff。
[全角/半角]キーを押しっぱなしだとどうなるかというと、
Windows側でキーリピートして、WM_KEYDOWNが連続して
発生するので(*1)、VA側のキーマップ(ポート00h-0Eh)から見ても
押しっぱなしに見える。ただ、キーを押してからキーリピートが
始まるまでの間に、キーがoffになった状態が発生する。
・・・実害ないだろう。
(*1) wParamはf4,f3が交互に出るのかと思ったら必ずしも
そうではないようで、規則性が見つからない。謎。
デフォルトのキー割り当てを変更。
・[全角/半角]→全角
・[右Alt]→GRPH
[右Alt]は、GRPH,全角,テンキーカンマ、テンキー=のいずれかの
キーを割り当てられるようにした。
WM_KEYDOWN: wParam = f4 lParam & 0x01000000 = 00
または
WM_KEYDOWN: wParam = f3 lParam & 0x01000000 = 00
を受け取ったらキーon、それから一定時間ったらキーoff。
[全角/半角]キーを押しっぱなしだとどうなるかというと、
Windows側でキーリピートして、WM_KEYDOWNが連続して
発生するので(*1)、VA側のキーマップ(ポート00h-0Eh)から見ても
押しっぱなしに見える。ただ、キーを押してからキーリピートが
始まるまでの間に、キーがoffになった状態が発生する。
・・・実害ないだろう。
(*1) wParamはf4,f3が交互に出るのかと思ったら必ずしも
そうではないようで、規則性が見つからない。謎。
デフォルトのキー割り当てを変更。
・[全角/半角]→全角
・[右Alt]→GRPH
[右Alt]は、GRPH,全角,テンキーカンマ、テンキー=のいずれかの
キーを割り当てられるようにした。
2007年09月06日
全角キー2
> なので、VAで全角キーの代わりに変換キーでかな漢字変換の
> on/offをできるようにするプログラムを作成中。
公開しました。ソース付き。
http://www.pc88.gr.jp/forum/viewtopic.php?t=308
実現方法
全角/半角の切り替えに使うキーの判定処理はROM内にあるため、
この判定の書き換えは不可。
そこで、JFP BIOSがキーボードBIOSから取得するキーをすり替
える。JFP BIOSからキーボードBIOSはINTでなくFAR CALLで呼ば
れる。呼び出し先アドレスは、キーボードBIOSのワーク00AB:01DA
に書かれているので(テクマニ参照)、ここを書き換えればフック
できる。JFP BIOSのワークを参照して現在の変換状態をみて、
変換中でなければ、キーボードBIOSが変換キーのコードを
返したときに全角キーにすり替えてJFP BIOSに返す。
余談
マニュアルでかな漢字変換時の各キーの機能を確認したら、
再変換機能があってびっくり。全角モード時にSHIFT+6, SHIFT+4で
範囲選択すると入力済みのひらがなを再変換できる。
# 多分、VA2/3, VA+91のみの機能
一度読んで忘れてしまったのか、今初めて気づいたのか。
昔、Windows+IMEに再変換機能があって、おーっ、と思った記憶は
あるのだけれど、VAにもちゃんとあったとは。
> これができたとして、Windowsで[全角/半角]でIMEを制御している
> 人は、VA-EGでも[全角/半角]でかな漢字変換を制御したいよという
> 話も出てくるかどうか。
Windowsの[全角/半角]キーを使わなかったのは、キーを離したことが
検出できないから(イベントが発生しない: http://88va.seesaa.net/article/2090363.html )
M88が[全角/半角]を全角キーとして使っていそうだったのでソースを
見たところ、onから一定時間経ったら自動的にoffになるようにして
いた。
・・・
確かに、それで十分だわ。全角キーを押しっぱなしにして使うソフト
なんてないだろうし。
> on/offをできるようにするプログラムを作成中。
公開しました。ソース付き。
http://www.pc88.gr.jp/forum/viewtopic.php?t=308
実現方法
全角/半角の切り替えに使うキーの判定処理はROM内にあるため、
この判定の書き換えは不可。
そこで、JFP BIOSがキーボードBIOSから取得するキーをすり替
える。JFP BIOSからキーボードBIOSはINTでなくFAR CALLで呼ば
れる。呼び出し先アドレスは、キーボードBIOSのワーク00AB:01DA
に書かれているので(テクマニ参照)、ここを書き換えればフック
できる。JFP BIOSのワークを参照して現在の変換状態をみて、
変換中でなければ、キーボードBIOSが変換キーのコードを
返したときに全角キーにすり替えてJFP BIOSに返す。
余談
マニュアルでかな漢字変換時の各キーの機能を確認したら、
再変換機能があってびっくり。全角モード時にSHIFT+6, SHIFT+4で
範囲選択すると入力済みのひらがなを再変換できる。
# 多分、VA2/3, VA+91のみの機能
一度読んで忘れてしまったのか、今初めて気づいたのか。
昔、Windows+IMEに再変換機能があって、おーっ、と思った記憶は
あるのだけれど、VAにもちゃんとあったとは。
> これができたとして、Windowsで[全角/半角]でIMEを制御している
> 人は、VA-EGでも[全角/半角]でかな漢字変換を制御したいよという
> 話も出てくるかどうか。
Windowsの[全角/半角]キーを使わなかったのは、キーを離したことが
検出できないから(イベントが発生しない: http://88va.seesaa.net/article/2090363.html )
M88が[全角/半角]を全角キーとして使っていそうだったのでソースを
見たところ、onから一定時間経ったら自動的にoffになるようにして
いた。
・・・
確かに、それで十分だわ。全角キーを押しっぱなしにして使うソフト
なんてないだろうし。
全角キー
# エミュレータとは直接関係ないけれど
私はWindowsでは[変換]キーでIMEのON/OFFができるようにカスタマイズして使っている。一方、VA-EGでは全角キーの働きをするのは右[Alt]だ。VA-EGとWindowsを行ったりきたりすると、必ず間違える。Windowsで間違って[Alt]を押してメニューがアクティブになったりして混乱する。
なので、VAで全角キーの代わりに変換キーでかな漢字変換のon/offをできるようにするプログラムを作成中。
これができたとして、Windowsで[全角/半角]でIMEを制御している人は、VA-EGでも[全角/半角]でかな漢字変換を制御したいよという話も出てくるかどうか。
先日ノートパソコンでVA-EGを動かしていて、全角に切り替えようとしたら右[Alt]がない。そういえばそうだった・・・
やっぱり右[Alt]に全角キーを割り当てるのは、いろいろイマイチなのかも。
私はWindowsでは[変換]キーでIMEのON/OFFができるようにカスタマイズして使っている。一方、VA-EGでは全角キーの働きをするのは右[Alt]だ。VA-EGとWindowsを行ったりきたりすると、必ず間違える。Windowsで間違って[Alt]を押してメニューがアクティブになったりして混乱する。
なので、VAで全角キーの代わりに変換キーでかな漢字変換のon/offをできるようにするプログラムを作成中。
これができたとして、Windowsで[全角/半角]でIMEを制御している人は、VA-EGでも[全角/半角]でかな漢字変換を制御したいよという話も出てくるかどうか。
先日ノートパソコンでVA-EGを動かしていて、全角に切り替えようとしたら右[Alt]がない。そういえばそうだった・・・
やっぱり右[Alt]に全角キーを割り当てるのは、いろいろイマイチなのかも。
2007年04月22日
r070422公開
r070422を公開しました。
あわせて、GETROMVA (VAEGTOOL) r070422を公開しました。
バージョンアップボードのエミュレーションに対応しました。これを利用する場合、GETROMVA r070422で、バージョンアップボードのROMイメージを作成する必要があります。またEmulate - Config で機種としてPC-88VA1を選択し、Device - Version Up Boardをチェックする必要があります。
その他、マウス、CPUで細かい修正があります。
あわせて、GETROMVA (VAEGTOOL) r070422を公開しました。
バージョンアップボードのエミュレーションに対応しました。これを利用する場合、GETROMVA r070422で、バージョンアップボードのROMイメージを作成する必要があります。またEmulate - Config で機種としてPC-88VA1を選択し、Device - Version Up Boardをチェックする必要があります。
その他、マウス、CPUで細かい修正があります。
バージョンアップボード8
バージョンアップボード対応の仕上げ。
・ポートFF2h のビットアサイン修正:bit6はROMエリア0のバンク指定
・バージョンアップボード無効時はバージョンアップボードのメモリをメモリ空間から切り離し
・ConfigでVA2選択時はメニューからバージョンアップボードの選択を不可に
・ついでに。ConfigでVA選択時は、メニューから98専用の機能は選択不可に。また、逆に98選択時はVA専用の機能は選択不可に。
・ヘルプ修正
・ポートFF2h のビットアサイン修正:bit6はROMエリア0のバンク指定
・バージョンアップボード無効時はバージョンアップボードのメモリをメモリ空間から切り離し
・ConfigでVA2選択時はメニューからバージョンアップボードの選択を不可に
・ついでに。ConfigでVA選択時は、メニューから98専用の機能は選択不可に。また、逆に98選択時はVA専用の機能は選択不可に。
・ヘルプ修正
2007年04月14日
ドキュメントまわり 2
ヘルプを少しいじる
・スタイルの変更
・導入方法の説明の見直し
・機能仕様が98のままだったのでVAを追加
これだけで一日終わった・・・
機能仕様の記載はVAの拡張機器の型番を確認したりスペックを確認したり、VAと98で記載項目をあわせるために98のカタログも確認したりで意外に手間がかかった。
# VAの場合はSGPの話がカタログの表にも載っているのに、
# 98の場合はGDCが表に載ってなかったりとか。
表示可能文字種が98と違うのだけれど・・・記載内容合っているんだろうか・・・
・スタイルの変更
・導入方法の説明の見直し
・機能仕様が98のままだったのでVAを追加
これだけで一日終わった・・・
機能仕様の記載はVAの拡張機器の型番を確認したりスペックを確認したり、VAと98で記載項目をあわせるために98のカタログも確認したりで意外に手間がかかった。
# VAの場合はSGPの話がカタログの表にも載っているのに、
# 98の場合はGDCが表に載ってなかったりとか。
表示可能文字種が98と違うのだけれど・・・記載内容合っているんだろうか・・・

