2006年07月31日

リプレイ機能2

キー操作の記録・再生を実装。
再生完了後に再スタートする機能を作成。
自動デモに必要な機能はそろった。
posted by Shinra at 22:14| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月30日

リプレイ機能

ユーザが行った操作を記録して、
後から同じ操作を再現する機能。
ゲームの自動デモが目的。

今日は、ジョイスティックとFDDの操作の記録・再生を実装。


将来的には、自分がゲームをプレイしている様子を記録して、
世間に公開する、とかできるかもしれない。
# 需要あります???
posted by Shinra at 23:24| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月29日

C70準備6 / プリンタ買い替え

プリンタの目詰まりが、いくらクリーニングしても直らない。
これでは頒布物の製作に差し障る。

1年ちょっとで買い換える羽目になろうとは。
購入当時は安くいいのが入手できたと喜んでいたのに。
やっぱり安物は安物?
Webで少し検索してみたら、このプリンタ(EPSON PM-A700)
目詰まりのひどさで評判が悪いらしい。

その前に使っていたのもEPSONで、やっぱり目詰まりが頻繁で
買い換えたので、今回はCANONにすることにした。

CANON MP500。
CDに直接印刷もできるのを選んだ。これでシールを貼る手間が
省ける。
一通り使って初期不良はなさそうなことを確認。
印刷は綺麗だ。買いたてだけあって(笑)
3年位は持ってほしいなぁ。

購入金額19,800円。
販売店独自の長期保証に加入したかったけれど、2万円未満は
対象外とのこと。
一昨日までは販売価格20,800円で、今日は1,000円下がってて
ラッキー、と思ったのだが、そうでもなかったか。
posted by Shinra at 23:52| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2006年07月26日

スプラッシュスクリーン 2

customizableに。
posted by Shinra at 23:15| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月25日

SGP 26 / Speedy Drug!!

LINE命令の実装
幅>高さの場合で描画方向が右→左の場合。

若干のリファクタリング。


Speedy Drug!!(H-VA)で画面左上のスピードメーターの針が
表示されるようになった。

speedy.PNG
posted by Shinra at 22:14| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月24日

SGP 25

LINE命令の調査
水平線を引いた場合、メモリへの書き込みは1ドットごとに発生するのか、
1ワード分データがそろったら1回発生するのか、どちらか。

各ピクセルサイズ(1,4,8,16)で横に400ドットの水平線を描画。
1ドットごとにメモリ書き込みしていれば、時間は同じに、
1ワード分そろえて描画しているなら、時間は、1<4<8<16 になるだろう。
結果は後者。


LINE命令の実装。
幅>高さの場合。(水平線含む)

1ワード分データがそろったら1回ライトするように実装。
やっぱり微妙に実機とドットの描画位置が違うところがでたけれど、
小細工して一応一致するようになった。

今日実装できたのは描画方向が左→右の場合のみ。
逆方向はまた後日。


posted by Shinra at 22:42| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月23日

SGP 24

LINE 命令の実装
まずは、幅<=高さ の場合から。

最初に実装したのは失敗。実機とドットの位置が完全には一致しなかった。
左が実機の動作であるのに対し、右のようになってしまったり。

■□□□□ ■□□□□
□■□□□ □■□□□
□■□□□ □■□□□
□□■□□ □□■□□
□□□■□ □□□■□
□□□■□ □□□□■
□□□□■ □□□□■

しばらく悩んで、実機と同じすることに成功。
直線描画のアルゴリズムとしては標準的で、自分が知らないだけの
ことだったんだろうけれど。

考え方としては、上の図だと始点(左上)のドットの中心と、終点(右下)のドットの中心を結ぶ直線Lを考えて、
1ライン目は、始点のドットを描画点とし、
2ライン目は、2ライン目の上端と下端の中央に引いた水平線と、Lが交わる点を含むドットを描画点とする、
3ライン目は、3ライン目の上端と下端の中央に引いた水平線と、Lが交わる点を含むドットを描画点とする。
以下同様。

したがって、

直線Lの傾きを(幅-1)/(高さ-1)とし、
始点のX座標を0.5とし、
1ライン進める(Y座標を1進める)度にX座標に傾きを加算して、
X座標を整数に丸めた(小数切り捨て)位置にドットを描画する。

ここで、小数を含む計算とならないようにするために、

X座標は整数部と小数部を別変数で保持して、
小数部は 実際の値 x (高さ-1) を保持する。

X座標の初期値は、整数部0、小数部は(高さ-1)/2 (小数切捨て)
1ライン進める(Y座標を1進める)度にXの小数部に(幅-1) (=傾き x (高さ-1))を加算して、
小数部が(高さ-1)以上になったら、整数部を+1し、小数部を-(高さ-1)する。

以上

自分用メモ。
posted by Shinra at 23:27| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月19日

SGP 23

LINE命令の調査

BIOSでも使われていないっぽい。
きっとCPUで描くより遅いんだろう。
ということは、ハードウェアとして失敗しているのではないだろうか・・・(;_;)

ただ線を引くといっても、実装する以上は実機と同じように線を引かないといけないわけで。
X方向に2ドット、Y方向に5ドットの線を引くとすると、

■□ ■□ ■□ ■□
□■ ■□ ■□ ■□
□■ □■ ■□ ■□
□■ □■ □■ ■□
□■ □■ □■ □■

と4とおり考えられるわけで。
実際に描画してみると、左から2番目の形になった。
はてさて、どんなアルゴリズムにすればいいのか・・・?
(左から3番目ならわかるんだけど。)

ところで、VD(垂直描画方向)とHD(水平描画方向)のビットが、
テクマニの記載とは逆っぽい。
逆とすると、PATBLT, BITBLTのVD,HDと並びが一致しなくて
気持ち悪いのだが・・・
ハードのバグ? ひょっとしてだれもテストしなかった?(汗

posted by Shinra at 23:36| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月17日

C70準備5

>簡易導入マニュアル執筆開始
一応完成。したつもり。
posted by Shinra at 23:46| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2006年07月11日

C70準備4

簡易導入マニュアル執筆開始
#いらない気もするが・・・
posted by Shinra at 23:38| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2006年07月10日

C70準備3

同人ソフト添付説明書のPDF化、続き。
完了。
posted by Shinra at 22:08| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2006年07月09日

C70準備2

カタログ4種の表紙をスキャン。スキャナもめったに使わない装置なものだから、結構手間取る。

同人ソフトのイメージ化。
添付説明書のスキャン、PDF化。
イメージ化後の動作確認。
うまくエミュレーションできていないところがちらほら見つかって悲しい目に。

posted by Shinra at 23:52| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

r060708公開

r060708を公開しました。
posted by Shinra at 12:50| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

88VA用市販ソフト/同人ソフトを譲ってください

VA-EGの動作確認のため、88VA用市販ソフト/同人ソフトを譲ってください。

詳細は、http://www.pc88.gr.jp/vaeg/ を参照してください。
posted by Shinra at 12:50| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2006年07月08日

C70準備1

飾り付け用写真撮影。
安物デジカメであがいてみる。魚眼っぽく写るし、屋内じゃ光量足りないし。プリンタはいくらヘッドクリーニングしても欠落する線が多数あるし。いいや、もう。

撮影用に移動させたVA2を元に戻したら、恐れていたとおり、HDDから起動しないという現象が。FDDから起動させたりしているうちに直ったみたいだが。ひやり。

やっぱり、動かさずにそーっとしておくほうがいいかも。古いパソコンは。
posted by Shinra at 23:59| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

マウス2

マウスでマウスポートに接続する装置をマウスとジョイスティックから選択できるようにしたが、

初期値(iniファイルで指定していない場合)をマウスにしていた。

そうしたところ、ソーサリアンでテンキーによる操作ができないという
トラブルがちらほら。ソーサリアンはマウスが接続されていると操作で
きないらしい。

このため、初期値をジョイスティックに変更。
posted by Shinra at 23:29| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月06日

画面まわり14

15KHzノンインターレースモードのVSYNCのタイミングを実機で計測して、実装。

15KHz CRTでもテキスト25行表示ってできるのね。ANKは8ラインのフォントになって、漢字は上半分しか出ないけれど。
ポート148h bit2(ANKM, ANK文字フォントモード)実装。これで1が選択されたら8ラインフォントで表示するようにした。CGROMポートから読み出すANKのフォントもこの設定に合わせて変化する。この場合、ラスタ番号は下位3bitのみ有効。

テクマニによると漢字ROM中の8ラインフォントの一はバンク9のA2xxxh と
書いてあるが、ROMを見る限りそこにはなさそう。
A1000h + 文字コード<<3 + ラスタ(3bit) が正しそう。


15khz2.PNG


# VAにつないでいるディスプレイ(EIZO L665)は仕様上は24KHz以上に
# 対応なのだが、幸いなことに、15KHzでも「入力信号エラー」と
# 表示はされるが一応表示される。おかげで今回助かった。
# 縦半分につぶれるけれど。


posted by Shinra at 23:19| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月04日

画面まわり13

15KHz CRT対応
使わないとは思うけれど。

15KHzになるのは、CRTモードスイッチで15KHzが選択されている、または、ポート100h bit7でインターレースモードが選択されている場合。
ただし、CRTモードスイッチはリセット時に読み込まれる。起動後にスイッチを変えてもリセットするまで有効にならない。
ポート40h bit1, ポート1CBh bit3で読み込めるのは、CRTモードスイッチの状態ではなく、現在の水平周波数の状態。(ポート100h bit7の影響を受ける。)

以上を実機で確認して、実装。



15khz.PNG


ただ、使用することはまずないと思われるため、メニューにはCRTモードスイッチの選択は用意せず、iniファイルでのみ指定可能とした。
DipSw_VA=xx でxxに16進数2桁を指定。このbit0が0なら15KHz CRT, 1なら24KHz CRT。(他のbitは無効)
posted by Shinra at 23:06| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月03日

画面まわり12

>ちゃんと実装したつもりだったけれど、期待したのと信号のタイミングが違う・・・続きは明日。

μPD72022のデータシートLBR,RBR(ボーダー領域の右と左の幅)は +1 して *4するとドット数が求まることになっているけれど、VAではこの設定は常に0で、タイミング計算するときはボーダー領域なしで計算したのに、実装は+1して*4してたので、おかしくなっていた。

実機で試した限りLBR,RBRの設定が0だとボーダーも0のように見える。データシートの記述とは違うけれど、そちらで実装。

これで水平周波数24.8KHzの場合のタイミングは実機とまあまあ同じ感じになるようになった。

15.73KHz(インターレースモード)の場合がいまいちで、15.73という数値とSYNCコマンドのパラメータから1秒あたりの描画ドット数を求めて、それを
ベースに各種タイミングを計算するように実装したのだが、垂直周波数が
実機の実測値と合わない。15.766KHzと仮定すると合うので、そっちの値で
実装。SYNCコマンドのパラメータの解釈がなんか間違っているのか??

posted by Shinra at 23:03| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

2006年07月02日

画面まわり11

>・ポート40h bit5: ブランク期間(TOP)終了から400line(*)分は0、それ
> 以外は1。(*)は実際の表示ライン数に依存せず常に400line。

はずれ。

・ポート40h bit5: VSYNC期間終了から25line(*)分は1。その後、402line(*)分は0、それ以外は1。(*)は実際の表示ライン数に依存せず固定。

VSYNC割り込みはポート40h bit5の立ち上がりで発生。
したがって、30行BIOSなどを使って400ライン超の表示をしている場合でも、VSYNC割り込みは400ライン目付近で発生。つまり、実際は表示中なのにVSYNC割り込みがかかってしまう。
実際のVSYNCと違うタイミングの信号にしているのは何か理由があるのだろうか。88との互換性のため??


μPD72022のデータシートを参照して、SYNCコマンドのパラメータに合わせて
VSYNCを制御するように変更。また、それとは独立にポート40h bit5の値を
制御するように変更。


ちゃんと実装したつもりだったけれど、期待したのと信号のタイミングが違う・・・続きは明日。
posted by Shinra at 23:01| Comment(0) | TrackBack(0) | EMU | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。