見出し画像

Turing Completeでtelnetの公告を表示したい

きっかけ

無職である程度まとまった時間を確保できるときにコンピュータについて学んでおきたいと思っていて、
ちょうどいい題材としてTuring Completeというゲームを遊んでいた。

ストアページは下記においておきます。
https://store.steampowered.com/app/1444480/Turing_Complete

そんなときに例のtelnet公告が目について、ふと思ってしまった。

「これ、もしかしてTCPとファイル入力に対応しているTuring Completeでも表示できるんじゃね?」

というわけで、やってみた。

要件

最終目標は、「例のtelnet公告をTuring Completeで表示する」

分解すると、次のようになると思う。

  • TCPで簡易的なtelnetを実装(最初にtelnetっぽい信号を送信して、後は受信だけ行うのみとする)

  • Shift JISの2バイト文字をゲーム内で表示させる

  • 改行などの制御文字に対応する

ゲームの仕様

ディスプレイの仕様

ゲーム内のディスプレイはこのような見た目になっている。

ディスプレイの凡例

基本的には縦と横でそれぞれ一本の信号線を共有するように作られており、次のような仕様になる。
※最初のバイトを0バイト目と表記する

  • 縦の入力(Color)は32ビットで、上位3バイトに色を示すコードが入る

  • 横の入力(Pixels)は64ビットで、7バイト目の最下位ビットを1にしなければ有効な信号とみなされない

  • 1バイト目から6バイト目は順番に各列のドットを上書きするかどうかを示す

ちなみに、Enablee X/YのON/OFFは1ビットの信号で、64ビットや16ビットなどの入力の最下位ビットに対応しています。なのでこのような線の引き方をすると、0バイト目の最下位ビットがEnable信号になります。

書き込み例。ビットの動きがわかりやすいように16進数表示してある。

ディスプレイの方針

ディスプレイは一度信号を受け取ったら上書きされるまで表示内容は変更されない。つまり適当なベタ塗りで上書きすることにより、ディスプレイの表示はリセットする必要がある。

今回は縦横の信号に-1(全ビットON)を入れることにより、白で全面を上書きすることにした。わかりやすさは正義。

リセット時の信号の入れ方

ちなみにディスプレイは縦8ドット、横6ドット。実際に動かすときには複数並べて制御する必要が出てくる。

仕様確認

とりあえず、簡単にアルファベットのフォントデータを作り、順番に流し込むための回路を作ってみた。
なお、フォントは自家製フォント工房さんのJFドットM+12を利用している。12ドット四方のフォントで探したときにこれが一番使いやすそうだった。

テスト用回路の外観

実際に動かしてみた動画は下記の通りとなっている。

左側でフォントデータを選択し、上の部分で行の選択と消去司令の作成をしている。

次はアルファベットのテキストファイルの表示を行うことを目的として変更していくつもり。

この記事が参加している募集

全力で推したいゲーム

つくってみた

この記事が気に入ったらサポートをしてみませんか?