2020年1月13日月曜日

ポケットカメラの画像を取り出す

かつてゲームボーイのカートリッジからカメラが伸びているポケットカメラというソフトがありました。撮影した画像は通信ケーブルを使い、ポケットプリンタからロール紙に印刷するという形で現像していましたが、印刷部を適宜加工することで画像を他環境へ転送することができます。例によってDholeさんの実装例があったので、まずはそれを後追いして検証しました。

動作までの流れ

下記のフローで実装を行いました。

  1. 通信ケーブルを改造する
  2. 疑似ポケットプリンタ基板を実装する
  3. 基板が出す画像データを受け取るアプリを実装する

通信ケーブルを改造する

通信ケーブルのデータを基板で受信するために、通信ケーブル本体を切断しています。通信ケーブル用のソケットがAliexpress等で購入できればよかったのですが、初代ゲームボーイ用の大きいサイズはさすがに作られていないようで、泣く泣くカットしました。配線はGNDを含めて4本なので、秋月電子のUSBコネクタDIP化基板を利用して扱いやすくしました。

疑似ポケットプリンタ基板を実装する

ポケットプリンタのフリをして、ゲームボーイ側には正しい応答を返し続け、PC側に画像信号を転送する基板を実装します。基本的にDholeさんのリポジトリのコードを使用しますが、ヘッダファイルだけがなかったりフレームワークの内容に変更があったりするのでその点だけ修正しました。修正後のリポジトリはこちらです。例ではNucleo-F411REでしたが、手元にあったのはF401REだったのでクロックを遅くするよう設定しています。

基板が出す画像データを受け取るアプリを実装する

こちらもDholeさんのサンプルを使用します。基板がシリアル通信でデータを渡すので、それを受信し画像に変換して保存します。

動かしてみる

疑似プリンタ基板が接続されているPCで受信アプリを起動し、ポケットカメラ側で印刷を実行します。各部が正常に接続・動作している場合、ゲームボーイの画面はデータ送信中となり、PCに画像が保存されます。

印刷される画像そのものが出てくるので、写真+フレームのPNG画像で保存されます。

0 件のコメント:

コメントを投稿