Blog ページ2/61

IBM-PCのシリアル・パラレルポートの変遷

PC用シリアルマウスのプロトコルを調べていく過程で、初期(1980年代)のPCのシリアルポート・パラレルポートの仕様か割とコロコロ変わっていることが分かったのでまとめてみる。なお、特に記載のない限り、参照した資料はJeff Parsons氏のPCjs Explorerに掲載されているものを使用した。

(続きあり)


ファミコン版ジョイボールの回路

Youtube動画『メーカーの公称値に全く届かない連射機能付きコントローラーたちの真相「ホリ電機の嘘つき!1秒間に40発なんて出来ないぞ!」』にて、ジョイボール1が秒間250射という超高速な連射速度を出していることが報告されている。この計測はファミコンのコントローラをUSB変換アダプタを介してPCにつなぎ、Shwatch++というソフトで測定した結果で、同作者の他のYoutube動画によればファミコン本体での計測ではぴったり秒間15射とのこと。

1

1985年にハル研究所より発売された、ファミコン初の連射機能付きジョイスティック。スティック部分が直径8センチほどのボールとなっており、手のひらで包むようにして操作する。

通常、連射機能は発振回路によって行うが、誤作動のリスクが大きいため秒間30射の数倍のオーダーで発振させているとは考えにくい2。ファミコンの場合、コントローラからのデータはシリアル送信で行われる。このため、コントローラ入力の読み取りを行う度に本体側からパルスを出力している 。このパルスをカウントして、2回パルスを受信する度にボタンのオンオフを切り替えるような仕組みになっていれば、ファミコン本体では秒間15射、PC接続においてはサンプリングレートに応じた連射速度になる。この推測が正しいかどうかを確認するため、実際にジョイボールを入手して確認した次第。

なお、ジョイボールには色違いのMSX版もあるが、こちらは(コントローラ側で本体がいつ読み取りを行っているかを判別できないため)おそらく発振回路で連射させているものと思われる。

2

多くのゲームではコントローラ操作で自機を移動させたり、メニュー操作を行う。つまりコントローラ操作に応じて画面を書き換えるものであり、画面書き換えのタイミングよりも速い間隔でコントローラの読み取りを行う動機がない。日本のテレビのアナログビデオ信号は1/60秒で1画面の描画を行うものであり、一画面ごとにスイッチのオン・オフを切り替えたとしても連射速度は秒間30射であり、これ以上の速度となることはない。したがってコントローラ側でそれ以上の速度で連射させることは無意味であるばかりか、連射しなかったりボタン入力そのものを検出しないおそれがある。

(続きあり)


Raspiでネットワークオーディオプレーヤー

昨年実家の方でアナログレコードを処分したいとのことで、自分で買ったものも含め何枚か持って帰った。ただ家にはレコードプレーヤーは無かったので新たに購入することになった。

オールイン型のレコードプレーヤーを第一候補にしていたのだが、ネットでの評判や置き場所の制限などもあって、プレーヤー、プリメインアンプ、スピーカーを個別に購入して組むことに。オーディオコンポのセットアップって実家にいた時以来の数10年ぶりのことだったので「スピーカーとプレーヤーの間にアンプが必要なんだった」「スピーカーってより線がむき出しでアンプに圧接するんだった」とかすっかり忘れていた。

で、せっかく組んだのにレコード専門というのもなんかもったいないのでラジオやデジタル音源にも対応できるようにしたいと思った次第。検索してみると、Raspberry PiVolumio 21の組み合わせがよさそう。(「ITmedia NEWS ラズパイでハイレゾオーディオや「Spotify」を楽しむ」「NaoSoft別館blog『Volumio2のプラグインでradikoを聴く。』)

1

Debianベースのオーディオ特化OS

ということで、ITmediaの記事にあったコイズミ無線からキット一式(HifiBerry DAC+Lightセット)を購入。

(続きあり)


CGAで1024色!

最初期のIBM PCのグラフィックアダプタであるCGA(Color Graphics Adapter)。基本的には320x200, 4色という8ビット機にすら劣る環境である。しかしながら工夫により多色発色ができる。有名なものとしては。

1

この行数ではフォントの上8x2ピクセルしか表示されないが、文字コード221(左に寄せた4x8ピクセルの長方形)か文字コード222(右に寄せた4x8ピクセルの長方形)をスクリーン全体に敷き詰める。PCは文字ごとに背景色と文字色を設定できるので、1文字ごとに2x1ピクセル相当となり、160x100ピクセルというわけ。

2

コンポジット出力の特性上、320x200,4色や640x200白黒は160x200,16色に見える。320x200,4色のコンポジット出力は4色の中間色っぽい色合いになってあまり使い勝手はよくないが、640x200白黒のコンポジット化は(くすんだ色合いになりがちだけど)テキスト16色に近い色になり結構使える。

CGAでは上記2パターンが限界かと思っていたが、色数や解像度をより上げる技術があると知ってびっくりした。INT10H.orgの"CGA in 1024 Colors - a New Mode: the Illustrated Guide"という記事に原理が書いてある。

(続きあり)


自作CMSへの道(4終):最後に表示エンジンを作る

コンテンツ作成画面を作ったら、表示エンジンとテンプレートをURL規則ごとに作っていき、テストしながら調整していく。

文章で書くと1行で終わってしまうが一番時間がかかった。たぶん本職のプログラマが手がければ全行程合わせて数カ月もあれば余裕なんだろうけどへっぽこ・ぐうたら趣味プログラマなんで何年もかかってしまった。

「フレームワークとは」「テンプレートとは」といった概念や、SGIやらnginxやら勉強になった、とは思う。所詮趣味なのでそれをどう有効活用できるかといえば微妙ではあるが。

(続きあり)


自作CMSへの道(3): コンテンツの作成・編集画面の作成

テーブルができたので次はコンテンツ作成・編集画面を作る。とりあえずコンテンツ用のデータが無いと表示エンジンの動作確認ができないからね。

自宅サーバなのでコンテンツの作成・編集は家庭内LANの中からのみできるようにすればよく、デザインを考慮する必要は無いし、自分しか使わないのでフールプルーフにする必要もないだろう(、と鷹をくくっている)。

結果として、コンテンツやコメント、ブログのカテゴリリスト、非ブログコンテンツの章題の作成・編集、非ブログコンテンツや章題のインデックス上での表示順の設定といった一通りの機能をあまり時間をかけずに実装することができた。ちなみに、pythonコードは作成・編集画面が1400行、表示エンジンが2400行くらいだった。


自作CMSへの道(2): 画面レイアウトをスケッチする

前回の続き。基本コンセプトが決まったところで、紙に鉛筆で画面デザインをスケッチしていく。一番上のブロックにはタイトルがあってその下には左寄せで新着、設定画面、RSS、検索用のフォームがあって…、というのを描いていく。

(続きあり)


自作CMSへの道(1): まず欲しい機能をまとめてみた

現在、このサイトはPythonベースのBottleというマイクロフレームワーク上に構築した自作CMSで動作している。サーバの構築手順やプログラミングなどの手順についてはこれまでに書いてきた通りなんだけど、CMSそのものの設計手順なども忘れないうちに書いておこうと思った次第。

(続きあり)


【メモ】ファイアウォールの例外設定とプロキシ

ルータも作成したので、最後の仕上げとしてルータにipfwを入れようと思うんだけど、その前に通過するサービスをリストアップしなければならない。あと、各クライアントのプロキシ設定も。

(続きあり)


異なるネットワークセグメントにあるPS3からDLNAサーバにアクセスしようとしてうまく行かなかった話

Raspberry Pi3B+でルータを作った話の続き。

ラズパイの後ろ(有線LAN側)にプレステ3(と15年前の最初期のフルHDテレビ。D端子のみでHDMI無し)を設置して、手前(無線LAN側)にあるDLNAサーバにアクセスできないかとやってみて結局できなかったのでメモ。

(続きあり)



Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。