twitter on GAMEBOY

エイプリルフールネタとしてこちらで公開しました。いわゆるフェイク動画です。

元ネタは、タンブラーに流れてきた画像です。サンリットルさん(違ったらごめんなさい)が作成された画像で、gameboy-soft-fakeという作品です(なぜか元の画像がWebブラウザで表示されないのでリブログで)。

ゲームボーイのカセットはジャンク品を安く集めました。ハードオフでいうところの青いコンテナですね。例外はクリアピンクのコロコロカービィです。これは前から遊びたいと思っていたゲームでいい機会ですから680円で動作する状態のものを買いました。カービィだけはラベルを剥がさずに元のラベルの上から軽く両面テープでポストペットのラベルを乗せてあります。

もう少しカセットの色のバリエーションが欲しかったのですが、これら以外の色のカセットはあるのでしょうか。赤いカセット(ポケモン赤?)とピンクがあるようなのですが、実際には見たことがないです。あと、ポケットカメラを使ってUSTREAMラベルを貼るなんていうネタも考えたのですが、カメラが中古でも500円くらいしたので止めました。一発ネタに500円は散財すぎます。
※追記1:海外版のポケモンシリーズのカセットだと色がついているようです → Pokemon Games for the Game Boy
※追記2:ピンク色のカセットはGAMEBOY pocketのたまごっち版についていたみたいです → ピンクなTAMAGOTCHセット

ラベルの剥がし方ですが、理系男子なら誰でも持ってる無水エタノールを使いました。
ゲームボーイのカセットはラベルシールの表面に薄いフィルムが貼られていて水分をはじきますから、無水エタノールを使う前にザックリとフィルムを剥がしておきます。それから無水エタノールに10分ほど漬け込みます。エタノールが蒸発しないようにしておけば表面にエタノールをたらすくらいの分量でも充分です。

エタノールが染み渡ると、するするっと綺麗にラベルを取り除くことができます。エタノール漬けにしてしまうと、無水エタノールとはいえ、ゲームが起動するかどうか怪しいですが、もともとジャンク品で起動しなかったものばかりなので問題はありません。

ラベルを剥がすことには抵抗はありました。ジャンク品とはいってもゲームカセットです。
ゲームに関係するものに傷を付ける事をためらうという気持ちはゲーム好きな方であればわかってもらえると思います。買ったゲームが心底面白くなかったりすると叩きつけたくなる時もありますが。今回はネタとして面白そうだという気持ちが勝ったのと、お店のジャンク箱に入れられたものは、いつかは廃棄されるものなので、こういう形でも利用できればいいかなと、自分を納得させました。

ラベルの画像は適当にネットから拾ってきて加工しました。画像作成は最初は楽しかったのですが、段々と面倒になってきて、FACEBOOKやNAVI TIMEは3分くらいの手抜き作業で。この中では、EVERNOTEがGAMEBOY COLORのソフトらしい派手さで気に入っています。AOLの綺麗なロゴがみつからなかったのが残念です。古いサービスの時代はネットに流れる画像サイズが小さかったのでしょうがないです。
最初はゲームボーイが流行っていた頃のネットサービスを中心にしようと思っていました。ポイントキャストとか。でも、AOL同様にロゴが見当たらないのと、前世紀の終了したサービスを思い出したり探すのが大変になってきたので最近のネットサービスばかりです。
ゲームボーイのカセットには小さくMADE IN ホニャララと印刷されていて、できるだけJAPANなサービスにしたかったのでTRAVATARとかビミョー(そして終了している)なものも入っています。でも、こうして写真でみると小さな文字は全然見えないので無駄だったか。

ラベルを作成するためにネットサービス名を元にロゴ画像を探したのですが、あれっ?と思ったのが、Google系のサービスです。Google Maps、Google Calendar、Google Docs等々、ほとんどのサービスに専用のロゴがないのですね。Google Apps内でのロゴ規定はあるのですが、ちゃんとデザインされているのはGmailくらいかな。
他社のネットサービスはロゴの仕様規定が細かく定められているのに(そしてそれには従わずにラベルを作成しましたが)、これは意外でした。

シールはフォト光沢シールを使いました。

この用紙は厚手でしっかりしています。そのぶん、切り口が汚くなりがちでした。あまり力を入れずに切った方が綺麗になります。ラベルを切り取る作業は地味ですが、前にペーパークラフトのテーブル筐体を作った時に紙加工には慣れたので、ひたすらまっすぐに切り取るだけの作業は楽でした。
ゲームボーイのラベルの角は丸く加工されています。コーナーカッターという紙の角を丸く切り取る製品があるのですが、ゲームボーイのラベルは丸の半径が小さくてコーナーカッターが対応していなさそうでしたから、ハサミで適当にチョキチョキと切りました。


ゲームボーイのプログラムは今回が初めてです。調べてみるとGBDKという開発ツールがあり、これはC言語が使えました。今回は処理速度もメモリ容量も気にするようなものではなかったので、ザックリと勢いでプログラムを書いています。グラフィックデータも便利なツールがあったので利用させてもらいました。ドット絵ツール→OPTPIX→BMP変換ツール→という流れでゲームボーイ用のデータを作成しています。メモリバンクとかI/O周りはいまだにわかっていません。
GBDKの仕様には2,3度悩まされました。
式の演算の優先順位がANSI Cとは違うようで、とにかく括弧をつけまくったりとか。
それと、構造体のビットフィールドがコンパイルエラーになってしまいます。また、構造体のメンバをROMで初期化しようとしてもうまくいかないのです。これは最後まで解決できませんでした。GBDKに付属している音楽再生サンプルプログラムではビットフィールドを使っているのですが、そのサンプルすらコンパイルできないのです。結局、構造体は使わずに配列で書いたのですが、これじゃアセンブラをちょっと高級なマクロで記述しているのと変わんないですね。
あとは配列データへのアクセスもうまくいかないケースがあって、C言語からアセンブラに変換されたソースを追って原因を突きつめました。こんな感じで

UBYTE ary[4][128];
UBYTE c, d;
c = 2;
d = ary[2][0]

配列を参照すると、ary + c*128 + 0という処理に変換されるのですが、変数cがUBYTEのままで計算されてしまい、かけ算結果がオーバーフローしてしまうのですが、これはC言語の仕様でしたっけ?そんなわけないか。K&RなC言語を書くのは何年ぶりだろうという感じです。

ホントはUSB-有線LAN変換器を通してダラダラとLANケーブルをたらしたかったのですが、変換器が見当たらなくて、そこらに転がってたUSB WiMAXで代用しています。今考えると変換器の重さにカセットのUSBコネクタが耐えられなかったと思いますし、かといってUSB無線LANアダプタでは小さすぎて地味ですからちょうどよかったかも。

こうして完成したプログラムはエミュレータで動作確認してから実機で動かしています。あの動画は重ね合わせ映像ではないですが、実際にタイムラインを取得しているわけではなく、つぶやく事もできません。USB端子のWiMAXはまったく機能してなくてダミーですヨ。フェイク!フェイク!

プログラムを書いてる途中では、これってゲームボーイのプログラムを書くよりも、3DSのプチコンmkIIを使った方がよかったんじゃね?と思ったりしましたが、今回はカセットラベルの作成加工が本題なので、間違ってませんよ!

今回のネタの心残りは音です。なにかしらのサウンドドライバを流用してちゃんとした効果音を出したかったのですが、ネットにあったドライバの一つは元データがMOD形式(ゲームを改造するやつじゃなくてAmigaのあれ)から変換するもので、そのMODデータの作成方法がわかりませんでした。
もう一つのドライバは先の構造体の問題が原因でコンパイルできませんでした。
BookwormさんのGB音源ドライバがとてもよさそうだったのですが、これはアセンブラソースで、Cソースとの結合方法やらバンク切り替えの方法を調べる時間がなかったので断念しました。
結局、4bitPCMデータを適当にでっちあげて音を出しています。もっとこう、TL画面で無駄にBGMを流すくらいの事をしないとゲームボーイらしくないですね。そういう意味では、スプライトも使い切れていないので、派手な画面で色々と動かしたかったです。

今回のプログラムはフェイクですが、TL表示や文字選択の処理は出来ているので、通信部分がなんとかなれば、ゲームボーイでツイッターというのは実現不可能ではないはずです。そこがエイプリルフールネタの悩みどころだと思いました。というのも昨年のGoogleが見事なネタをやらかしてくれたわけですね。フェイク画像ではなく、本当に動いてしまうドラクエGoogle Mapsを作ってしまったというのは罪深いというか、一気にエイプリルフールのレベルが上がってしまったというか、こうなるとフェイク画像ネタは「騙されたー(笑」ではなく、「なんだ偽物か(悲」とガッカリされるようなコンテンツになっちゃったんじゃないかなーと。
もう一つ、電子工作の技術レベルが格段に上がったというのもあります。今の半導体技術であれば、個人が手を出せる範囲内の製品でもゲームボーイのカセット内にゲームボーイ本体以上のCPUとメモリと入出力端子を載せることができてしまいます。技術的にも実際のゲームボーイの画面内でツイッターをすることは不可能ではありません。こうなると、実現可能なものを中途半端にフェイクで作ると「なんだ偽物か(悲」と評価されてしまうという。
この手の技術的な話は、カセット側でなんでもやってしまうとそもそもゲームボーイ自体が要らない事になりますし、それこそツイッターの主処理を自前のサーバ側でやってしまって結果だけをゲームボーイの画面に表示してしまえばよくなるので、それってゲームボーイでやってることになるの?という悩みがついて回るので落としどころが悩ましいです。

でもでも、Googleドラクエマップは大企業による大人気ない本気ネタだし、そこに対抗しても楽しくないし、少なくともラベル工作やゲームボーイプログラミングをしている時間はとても楽しかったので、満足気分で2013年のエイプリルフールを迎える事ができたので
個人的にはよかったです。

数え間違いでラベルが2枚ほど余った…

コメント / トラックバック2件

  1. [...] twitter on GAMEBOY « パピコニアンの倉庫 – 整頓中(仮) [...]

  2. [...] それにしても凄いですね〜、ブログのテーマを説明書通り作るだけでもひいひい言ってるのに。開発裏日記 [...]