BUBCOM80

2013年6月13日

基本的なスペックについては、BUBCOM80 補完ページに詳しく書いてありますが、そこに書いてない情報が電子技術とアスキー誌に掲載されていましたので、引用してまとめてみました。

[2018/04/08追記] 別記事に実機の写真や動画をUpしました。BUBCOM80の解析

スペック

CPUはZ80Aで約4MHzで動作します。

メインメモリのRAMはDRAM 64KByteがフル実装されています。

起動用ROMが2KByte搭載されています。本体起動時の初期化と、ディスク、カセットテープ、バブルメモリなどの起動処理に使われます。

キャラクタジェネレータを搭載していて、メインメモリとは別に2KByteのRAMが使われています。RAM領域なので再定義可能ということになります。本体起動直後は自動的にデフォルトのフォントが定義されます。

CRTコントローラには、μPD3301 (PC-8001と同じです)を搭載しています。
別売りの高解像グラフィックボードで解像度を上げることができます。μPD3301と高解像グラフィックボードの画面は合成して出力することが出来るようになっています。高解像グラフィックボードは48KByteのメモリ領域を持ち、640×200ドット8色での表示が可能です。このメモリはZ80Aのメインメモリとは別の空間にあり、Z80AからはI/Oポートを経由してアクセスすることになります。つまり、Cレジスタを使ってI/OポートにアクセスするとBレジスタの内容がアドレスバスの上位バイトに現れるという仕様を使ったVRAMへのアクセス方法です。

キーボードはJIS配列ですが、キーボード裏側のスイッチを切り換えると、初心者向けのキー配列になります。このモードではBASICを入力しやすくなり(ほぼSHIFTキーを押さずにBASICを入力できる)、カナが50音順になります。このモード用に「初心者用キートップ」が別売されていたようです。
CMT/シリアルインタフェースには、別売りのロール式アイテムキーが接続可能になっています。これはオフコンなどで使われていたキーで、たぶんページをめくって操作を切り換えられるタイプのキーボードだと思うのですが、私は業務用機器については詳しくないので、どういうものかわかりません。

外部インタフェースにRS-232C(300Baud~9600Baud)が標準装備です。また、オプションとしてBSC通信用インタフェースが別売されていました。
セントロニクス準拠のプリンタインタフェースが搭載されています。
ジョイスティックポートが2つあります。
カセットインタフェースがあり、速度は1200Baudです。

拡張I/Oボックスには、最大で4枚の各種インタフェースカードを収納することができます。ここに、高解像グラフィックボード、フロッピーディスクコントローラ、BSCインタフェースなどを載せます。

音源は不明ですが、スピーカが内蔵されています。

バブルメモリ用のソケット1個を標準装備し、2個まで拡張できます。バブルメモリ1個の容量は32KByteです。このメモリには、フロッピーディスク用の命令を使ってアクセスします。フロッピーディスクよりも容量は少ないのですが、アクセス速度が当時のフロッピーディスク/インタフェースと比較すると高速(約100KBaud)です。

BASICは本体起動時にバブルメモリからMicrosoft BASICを読み込みRAMに展開され、起動します。ロード時間は2秒弱だそうです。雑誌の記事には「BASICが搭載されているバブルメモリは書き換え可能なので、BASIC自体を書き換えられる」と書かれています。これが、最初から搭載されているBASIC自体も書き換えられるという意味なのか、それとも別のバブルメモリに独自のBASICを書き込んで起動する事ができるという意味なのかはわかりません。

BUBCOM80は起動時にバブルメモリ、フロッピーディスク、カセットテープの順にデバイスのチェックを行い、起動可能なシステムがあればそれを起動します。テープも自動的にロードし始めるようになっていたのか気になります。

本体と周辺機器のリスト

雑誌の時期によって周辺機器の価格にばらつきがあります。BC-821と822の違いは不明です。

BC-80S 本体(バブルメモリホルダ×1) 258,000円
BC-80D 本体(バブルメモリホルダ×2) 296,000円
BC-811 交換用JIS配列キートップ 6,800円
BC-812 交換用実用配列キートップ 6,800円
BC-813 交換用英語国向けキートップ 6,800円
BC-818 グラフィック文字シール 500円
BC-821 バブルホルダ 84,800円
BC-822 バブルホルダ(増設用) 38,000円
BC-823 32KBバブルカセット 29,800円
BC-828 バブルホルダ部化粧板 500円
BC-831 コンソール型グリーンディスプレイ 68,000円
BC-832 コンソール型カラーディスプレイ 238,000円
BC-833 グリーンディスプレイ+拡張BOX 114,800(136000?)円
BC-834 カラーディスプレイ+拡張BOX 256,000(306000?)円
BC-841 外置型拡張ボックス 98,000円
BC-842 高解像グラフィックボード 98,000円
BC-843 IEEE-488ボード 価格不明
BC-844 同期式回線制御ボード 98,000円
BC-845 フロッピーコントローラ 78,000(128000?)円
BC-848 組込型拡張ボックス 68,000円
BC-849 DIYボード 価格不明
BC-861 コンパクトプリンタ 80,500円
BC-862 パーソナルプリンタ 158,000円
BC-863 ビジネスプリンタ 208,000円
BC-881 デュアル標準フロッピー 398,000円
BC-882 シングル標準フロッピー 228,000(298000?)円
BC-884 フロッピー結合ケーブル(2台目以降用) 16,000円
BC-888 フロッピーディスク 2,800円
BC-892 ロール式アイテムキー 価格不明
BC-893 ジョイスティック 4,800円
BC-894 ライトペン 60,000円
ACTAM330MIII 音響カプラ 150,000円
WX-4675 マルチペン・マイプロット 270,000円
WX-4637 高速型パーソナル・プロッタ 870,000円

WikipediaやBUBCOM80 補完ページには、バブルメモリホルダを搭載していないモデルの価格が書かれていますが、雑誌記事や広告には、そのようなモデルがリストに掲載されていなかったので、別の資料を探したいところです。→[追記]ROM版のBASIC(64KByte)を内蔵したBC-80RSとBC-80RNの広告を見せてもらいました。値段等はBUBCOM80 補完ページの通りですね。
[さらに追記] ROM版については別の広告がありました。

bubcomROM

LCD-8000VとX68000

2013年6月11日

CENTRYのplus one VGA LCD-8000Vが、15KHz, 24KHz, 31KHz アナログRGB入力できると聞いたので(togetter – LCD-8000DAと8000Vの比較まとめ)、X68000だとどうなのか実験してみました。

8000Vの入力端子はminiD-SUB15ピン(WindowsPCのグラボにあるような端子)ですが、X68000の映像出力はD-SUB15ピンですから、別途、変換コネクタが必要になります。

8000Vの電源は何かしらの機器のUSBポートから取ります。手頃なUSBポートが無い場合は別売りのACアダプタが必要になります。私はとりあえず電源を落としたままのXBOX360を使いました。

接続 大きさ

X68000本体がちょっと離れたところにあっても、キーボードとモニタだけで一通りの事が出来てしまうのが便利です。こうなると小さなX68000用のキーボードが欲しくなります。

human68k

Human68Kを起動したところです。PC-9801用のアップスキャンコンバータをX68000で使った場合、高さ512ドット中の480ドットまでしか表示されないものが多いのですが、このモニタでは768×512ドット全ての領域が表示されています。アナログRGBなのと、画面のスケーリングが行われているからか、部分部分でにじみがあるのですが、元々の画面が8インチと小さいこともあって気になりません。

MMDSP

MMDSPを起動したところです。画面モードは512×512かな?画面内に全て収まっていますね。手元の画面だけで曲選択&再生ができるので便利です。

512mode

512×512モードで1ドットラインを16ドット単位の格子を描いた画像を表示してみました。全てのラインが表示されていますし、画面全体がちゃんと表示されています。ただ、全て同じ太さのラインなのに、画面では太さ(明るさ?)に違いがあります。

スターフォース256 スターフォース384

スターフォースを起動してみました。画面モードは31KHzで、左の写真が256×256、右が384×256モードです。自機がぶれているのはカメラのシャッタースピードと、液晶なので残像(応答速度)が出てしまうからです。ただ、それほど酷い残像ではありませんので実用上は問題ないと思っています。この辺の感じ方は個人差ですし、12000円のモニタとしては満足できると思います。
384×256モードでも問題なく表示できていますね。

15KHz

スターフォースを15KHz 256×256モードに切り換えてみました。まず、自機を動かすと残像というかインタレースのすだれのような縞模様がはっきりと見えてしまいます。静止画だとわかりません。
また、表示が左右方向にはみ出てしまいます。実機でも15KHzではオーバースキャンで表示領域が専用モニタの画面外に出てしまうのですが、それと似たような感じです。
15KHzは一応表示できなくもないけど実用的ではないかなというのが結論です。15KHz専用ゲームで困るかも。

BB_31KHz BB_15KHz

バブルボブルを起動してみました。左が31KHz、右が15KHzです。
やはり15KHzでは左右方向がはみ出てしまいます。8000Vには表示位置とサイズの調整機能があるのですが、それを目一杯まで使ってみても画面内に収めることはできませんでした。

motos_256 motos_384

モトスを起動してみました。256, 384共に問題なく表示できています。

イース

イースを起動してみました。画面モードはわかりませんが、512×512かな?
ゲーム画面自体は問題なく表示されているのですが、ゲーム画面を覆っている枠(ツタの絵が描いてある部分)の一部(画面の上の方)が常にちらついています。ゲームをやってる最中に気になるかもしれません。

ボスコニアン

ボスコニアンを起動してみました。表示領域は問題ないのですが、色々とケーブルを抜き差ししてたり画面モードを色々と切り換えしていると、この写真のように画面全体が上側に寄ってしまったり、左側の表示がはみ出たりすることがあります。基本的には8000Vのメニューから表示位置の調整が可能なのですが、一度だけ8000Vの位置調整機能が反応しなくなってしまって8000Vを工場初期化しました。メニュー一発で初期化できますし、大抵はそれで表示位置が正しくなるので、表示調整が面倒な時はリセットしちゃうのがよいです。

FZ_31K FZ_24K

ファンタジーゾーンを起動してみました。左が31KHzで右が24KHzです。24KHzでもちらついたり画面がはみ出たりすることもなく表示できました。8000Vは神機か!と思った瞬間。

FZクリア

8000Vが実用上、どの程度ゲームに耐えられるのか試した結果です。ノーコンティニューでクリアできるくらいには違和感なく遊べます。多少の残像はあるので、細かい弾がたくさん高速で動くような弾幕ゲームには向いていないかもしれません。
家庭用のゲーム機を液晶テレビに繋いで遊ぶと、表示遅延と残像が理由で違和感を感じてクリアできないということがあります。液晶テレビで久々にスーパーマリオを遊ぶとジャンプのタイミングが合わなくてゲームが下手になったのかなーと思ったりする事があるのですが、遅延の少ない液晶テレビやブラウン管テレビで遊び直すと簡単にクリアできるということがありますから、液晶テレビの遅延は大きな問題ですね。

8000Vを縦置きにすれば縦ゲーにも対応できると思いますので、X68000との相性はとても良いです。あと、全ての画面モードでアスペクト比は未確認です。単に調べるのが面倒だったので。

X68000を大きなモニタでちゃんと表示したいのであれば、マイコンソフトのFRAMEMEISTERと、ゲームモードのある液晶テレビを買いましょう。

せっかくなので、RGB出力のできる家庭用ゲーム機でも試してみました。各ゲーム機のRGB 21pin出力をマイコンソフトのSELECTY-21に接続してD-SUB15pin出力したものを8000Vに繋いでいます。

機種 結果
サターン 画面点滅で非実用的
PS2 映らない
PS2でPS1ゲーム 画面点滅で非実用的
RGB化したNintendo64 画面点滅で非実用的
ドリームキャスト 画面点滅で非実用的
メガドライブ+XMD-2 映らない

ぜ、全滅だと・・・。

縦方向の解像度が240ラインのゲーム機(今回の実験に含まれないスーファミRGBも)を8000Vにつなぐと画面が映ったり消えたりするので、対応していないと考えていいと思います。もしかすると映像信号の複合同期信号を分離すると映るのかもしれませんが、XMD-2で映らなかったので可能性は低いかも。
PS2の480i出力が映らない理由がわかりませんが、PS2のRGB映像出力は複合同期なので、同期分離回路を通したら映るかもしれません。

VGA出力のドリームキャストは映りました。ただ、VGA非対応のゲームを起動すると映らなくなる可能性はあります。でもまぁ、ドリームキャストであれば、今時のパソコン用液晶モニタに繋げた方がいいですね。

[追記]

自分では確認していないのですが、XSYNC-1を使うと上記のゲーム機でも映るものがあるようです。

[追記2]

頂いたコメントへの返信です。

情報1 OSD情報2

コメントの通り、バージョン違いにより表示できる・できない個体があるようです。

タイニーゼビウスをX68000に移植してみた

2013年6月8日

一年前のメモから

2012年6月8日のことでした。6月8日はX68000の日らしく、twitterではX68000が好きな人達や、ライバル機種の人達が入り乱れて、各々が楽しく一日を過ごしていました。その様子は「2012年6月8日は「X68000」の日」にまとめられています。

うんうん、みんな楽しそうですネ・・・いやいや!P6er(※PC-6001ユーザのこと)としては、いくら格下の機種(PC-6001>越えられない壁>X68000という意味)とはいえ、ライバル機が活発に活動しているのを見過ごすわけにはいきませんから、ここは何か仕掛けねば!と一人勝手に思い立ちました。

とはいっても、当日に何かするには仕込み時間が無さ過ぎたので、1年後の2013年6月8日を目標日に定めました。変化の激しい時代になんと気の長い話。でもこの不安定なご時世(※2012年)に1年後のネタを考えるくらいの心のゆとりがあってもいいよね。

何をつくろか

まず最初に思いついたネタが、X68000の代表的なソフトをPC-6001に移植することです。
え、何言ってんのコイツと思われそうな妄想ですが、PC-6001には「タイニー移植テクニック」があるのです。つまり、どんな大作であってもタイトル名に「タイニー」を付ければ誰もが納得してしまう、そんなテクニックです。
例えば「タイニーグラディウス」とか「タイニーファイナルファンタジー」とかなら、グラフィックが物足りなくても速度が遅くても、なんだか許せてしまう雰囲気になるのです。(※1)

※1 タイニーという言葉をどうとらえるかは人それぞれですが、私はPC-6001らしさを表すとても良い意味の単語だと思っています。ばかにする意図はないです。

X68000の名作がP6でも動いちゃってるモンネーというのは愉快そうです。X68000のゲームで有名なものとなると、ジェノサイドやファランクス、魔神宮でしょうか。「タイニー魔神宮」なんてキャッチーじゃん!BASICでいいし!と思うのですが、このネタのギリギリ感を理解出来る人がPC-6001陣営どころかX68000組にも少ない気がします、ザイン。

そんな感じで、何を移植しようかなーとネットでX68000のタイトルを調べながらツイッターのTL眺めていたところ、「侵略!」の文字が目に飛び込んできました。2012年頃まだアニメイカ娘ブームの余韻があったのですね。・・・そっか、X68000のソフトをPC-6001に持ってくるより、積極的に侵略的な攻めの姿勢として、PC-6001のタイトルをX68000に移植して侵略すればいいんじゃね?と発想をひっくり返したのです。
PC-6001の雰囲気をX68000に持ち込むというよくわかんない移植ですが、これなら作業的にも趣味プログラムの範疇で無理がなさそうです。

移植するタイトルは・・・うん、PC-6001の代表的なソフトといえばタイニーゼビウスです。元々はアーケードの移植作ですが、PC-6001らしくアレンジされてますし、ネームバリューもあります。
移植作のタイトルは68秒だけ悩んで「タイニーゼビウスPRO68K」に決めました。

移植をするにあたっては2つの大きな問題がありました。

まず、タイニーゼビウスの内部的な作りがよくわかっていないことです。雰囲気移植(目コピー)でも充分だとは思ったのですが、グラフィックデータを目コピーするのは面倒ですし、グラフィックデータの吸い出すついでにマップデータの解析もすることにしました。

次の問題が、X68000での開発です。X68000は20年ほど前に色々といじっていたので、漠然と『68000アセンブラをHASとHLKを使ってなんかするんだよ』程度の記憶はあるのですが、スプライトコントローラのレジスタなどの資料を集める必要が出てきました。今の時代に68000アセンブラを書くのもなんですが、普段、PC-6001のプログラムを書くために使っているZ80に比べたら、豊富なレジスタと命令の直交性に優れている68000アセンブラは天国なはずです。
とはいっても、データやプログラムのタスク管理はC言語を使った方が断然ラクですし、タイニーゼビウスを動かすくらいであれば実行速度はそれほど必要じゃないので、GCCの開発環境を整えました。速度やファイルサイズに不満があったらコンパイラで生成されたアセンブラソースを手動で最適化すればいいですし。

なんでも世の中には、クロス開発できるX68000をターゲットマシンにしたGCCがあるようです。すごく興味深いのですが、開発環境上の問題にあたるのは避けたかったので、今回は充分に枯れているHuman68K上で動くGCCを使いました。

ざっと開発環境を説明すると、X68000エミュレータ上で動いているHuman68KにGCC環境を構築して、WindowsのドライブをHuman68Kから見えるようにWINDRV.SYSを使ってマウントして、Windows上でソースを書いてエミュレータでコンパイルしています。

資料集めですが、X68000でC言語による開発といえば、C MagazineでX68000のGCC言語でゲームを作る連載記事があったことを思い出しました。たしか、その連載をまとめたような本が出ていたような気がしたので検索して「GCCによるX680x0ゲームプログラミング」という書籍にたどり着き、さっそくAmazonで注文しました。書籍代は1円で送料の方が高くなるというよくあるAmazonっぽい本の買い方です。

その他は、昔から持っていた「INSIDE X68000」と「プログラマーのためのX68000環境ハンドブック」、それと、「ぷにぐらまーずまにゅある」を参考にさせてもらいました。

開発環境を整えながら、タイニーゼビウスのグラフィックデータとマップデータの解析を進めたのですが、ここでいきなり誤算が発生しました。タイニーゼビウスのプログラム解析作業が楽しくなってしまったのです。マップデータの展開ルーチンを読むにはスクロール処理や画像データの転送処理なども理解しなければならなかったのですが、その延長で他の処理も読みたくなり、結果的に、逆アセンブルした全プログラムを読み終えてしまいました。

当初の目的から外れた副産物であるタイニーゼビウスの解析結果は、@Hashiさんが執筆されているPC-6001の同人誌、PC6000NOTE No.5に収録されています。タイニーゼビウスの処理内容や様々な疑問点への解答など、一通り網羅しています。
現時点では通販はされていませんが、定期的にコミケやゲームレジェンドなどのイベントでTinyProjectというサークルとして頒布されています。→2015年にWebで公開しました。タイニーゼビウス 完全解析&解説

PC6000NOTE 同人誌

どう移植するか

タイニーゼビウス解析した結果としては、X68000への完全移植は無茶な課題だなと思いました。一般論というか常識として、PC-6001とX68000の大雑把な意味でのスペック比較はPC-6001 >> 越えられない壁 >> X68000なのですが、まぁ、そのへんの事はひとまず脇に置いておくとして、完全移植が難しい理由の一つが、PC-6001のタイニーゼビウスは同期を取らずに全力で動作しているという点です。

同期というのはテレビの垂直同期とか音楽の再生時間などですが、そういったものに依存せずに背景のスクロールやキャラクタの移動処理を常に全力で行っています。ですので、表示するキャラクタの増減、つまり処理量によってゲームの進行速度や音の再生速度が微妙に変化しているのです。これを再現するにはZ80のクロック数やPC-6001の各種割り込みタイミングを考えないといけなくなるのですが、こうなるとX68000上で動作するPC-6001エミュレータを作った方が手っ取り早くなってきます。ただ、X68000にはそこまでのCPUパワーはありません。コードコンバートしてクロック数を数えながら調整して動かすという方法もありますが、その労力に見合わないネタ企画なので、雰囲気が似てれば細かいところはいいやと早々に割り切りました。

スプライトとBGを試す

X68000の特徴の一つはスプライトです。家庭用向けのパソコンにスプライトを搭載しているというのは今からみても尖った仕様ですね。シャープやるね!

ゲーム機ではなく、16bitどころか32Bitといわれてもおかしくない高価なパソコンに搭載されているスプライト機能ですから、タイニーゼビウスのキャラクタならゴッソリとキャラ定義できる、と思っていたのですが・・・X68000のスプライトって定義できる数が足りない・・・なんてこと・・・。こんなんだっけ?
特にBG面への割当数制限が厳しいです。タイニーゼビウスのキャラクタ数くらいなら余裕と思っていたのに。
これなら、スプライトを使わないでグラフィック面に全部描画してもいいんじゃないかなーと思いました。処理速度は間に合いそうですし。
でも、せっかくのX68000のゲームでスプライトを使わないのも残念すぎるので、キャラクタ管理をするということで。XSPとかのスプライトドライバを使うことも考えましたが、そこまでじゃないかなと思ったので、それなりに自前で管理します。

画面モードの話

タイニーゼビウスの画面モードは256×192です。VRAM上のドット数は128×96なのですが、表示する時に拡大されます。
X68000でスプライトが扱える画面モードは256×256か512×512で、PC-6001横方向の解像度を収めるには512×512ということになるのですが、このモードだとドットが細かすぎるので、裏技的な384×256モードに設定します。この辺のCRTC設定値とかはネット上の資料がほとんどなかったのですが、X68000programingというページに書かれていて助かりました。ありがたや。

CRTC周りの設定はアセンブラで記述して、ゲーム本体のC言語のプログラムとリンクしたかったのですが、えっと、C言語とアセンブラのコード呼び出しってどうやったっけ?というレベルから思い出しプログラミングです。最近では、アセンブラ混じりのC言語を使う機会はないのでしょうがないよね。

久々のC言語

マップなどのデータを外部ファイルに持ち、それらのファイルをメモリに読み込むのにfread()とかmalloc()といったCのライブラリを使う事には多少の抵抗がありました。というのも、昔、X68000のプログラムを書いていた頃はアセンブラを使っていて、DOS CALLかIOCS CALLが基本だったので、メモリや処理速度にオーバーヘッドのあるライブラリを使うのはやだなぁと。あと、当時はGCCのコンパイル速度が遅くて、X68000ではC言語自体が使いにくいなぁと。
今ではエミュレータのメモリを12M一杯まで載せて、MPU速度を無制限ぶんぶん回せばあっという間にコンパイルできちゃうのでラクラクです。

それにしても、平成が20年も過ぎるとさすがにC言語でmalloc()してメモリ確保なんていうプログラムを書く機会はほぼないので、懐かしさと自前でメモリ管理をする不安感とで不思議な感じがしました。

BG面を表示する

X68000の仕様を確かめつつテストプログラムを書いて、背景の表示とスクロール処理ができました。

capture0

楽しくなってきた!

グラフィック面を調べる

タイニーゼビウスの背景はBG面に描画しますが、タイニーゼビウスはX68000の384×256ドット上の320×192分しか使いません。BG面をスクロールさせる時に画面書き換えの一部が見えてしまうので、BG面の上にグラフィック面を乗せてマスクします。

X68000のグラフィックモードは512×512ドットの画面サイズだと65535色1面か256色2面か16色4面が使えます。今回は16色4面モードにして、そのうちのグラフィック1枚だけを使います。X68000はVRAMが512KByteもあるのに、今回は384×256を4bitカラーで使うわけですから使用するVRAMは48KByteです。なんというもったいなさ!余ったVRAMを作業用メモリとしても使えるのがX68000の使い勝手のいいところです。

しかし、PCGを使う場合は定義用のメモリが足りなくて困るのに、グラフィックでは余るんですよね。妙なバランスだなーと思いますが、メモリをやりくりする楽しさはあります。これがギガ単位のVRAMになるとノーミソ内だけでどうこうするっていうレベルではないですね。

それはともかく、このマスクを描画するために単純にVRAMを青色の単色で埋めてるわけですが、遅い・・・目に見えて遅いのです。なんかこう、BASICのPAINT文で画面を塗りつぶしてるかのような。単純にC言語のfor()で回して処理しているからしょうがないのかもしれません。ここで初めてgccの最適化オプションを有効にしたら、ちょっとはマシになりました。X68000にはVRAMの高速クリア機能とかあったような気がしますが使ってません。

capture01

画面は整ってきたけど、余白が多くてちょっと寂しい感じ。実際のPC-6001では余白部分の色は青ではなく緑っぽい色です。目視で描画ミスを見つけやすくするために開発中ではゲーム画面で使われていない色にしてあります。

スプライトの表示とキーボード&スティック入力

ここまで来たら、次はソルバルウを動かしたくなりますから、スプライトの表示とキーボードからの入力処理を実装しました。

capture02

これまでの準備期間に比べたら実にアッサリと実装できてしまったので拍子抜けです。キーボード周りはもう少し厳密に処理しないといけないかなと思う箇所もあります。例えば、X68000では、OPT.2キーを押しながら何かしらの別のキーを押すと専用テレビをコントロールすることが出来るので、その辺の除外処理を考慮しなければなりません。こういう細かいところは最後の段階でまとめて実装します(こういう作業が積もりすぎるとハマるんですが)。

PCGを入れ替える

この後は特に問題も無く実装作業が続きました。ちょっとだけ悩んだのが、やはりPCG定義数の少なさです。

タイニーゼビウスに出現するキャラクタで最大のものはアンドアジェネシスで、16×16ドットのパターンが縦横に6個で36個のキャラクタデータになります。タイニーゼビウスのアンドアジェネシスはファミコン版と違い、アーケード版準拠で背景と別れていて浮遊しています。
また、X68000の正方形ドットモードではBG面を1枚しか持てず、そのBG面は背景に使っています。となると、アンドアジェネシスはスプライトか、グラフィックか、テキスト面(X68000のテキスト面は16色限定でグラフィック面と同じように扱えます)のいずれかで描き、BG面の上にのせる必要があります。
グラフィック面は16色モードであれば4枚持てるので、マスク用の画像面とは別にアンドア専用に割り当てることもできるのですが、重ね合わせの問題があります。というのも、BG面の上にスプライト面があり、その上にグラフィック面という重ね合わせ順では、アンドアジェネシスをグラフィック面に書いてしまうと、アンドアジェネシスから発射されるスパリオがアンドアの下に隠れてしまいます。
となると、アンドアジェネシスの上に表示されるものをグラフィック面に描くことになりますが、まぁ面倒かなと。まだテキスト面が余っていますが、それはもっと面倒かなと。スプライトを使った方が断然楽なのです。

スプライトの表示数は問題ありません。X68000では最大128個のスプライトを表示できて、ソルバルウ、ザッパーが3発、敵キャラが最大で5機、スパリオが5発、バキュラが13枚程度としても、アンドアジェネシスに36個分のスプライトを使ってもまだまだ余裕があります。
その気になれば、「無理だ、こんなに表示できるわけがない!!」だって出来ます。

ただ、そのキャラクタ定義数の上限が128個で、トーロイドやらタルケンやら背景面のパーツやらで、かなりギリギリなのです。幸い、タイニーゼビウスでは敵キャラは画面上に1種類しか表示されないので(バキュラは別)、その都度、キャラクタ定義をし直せば(ゲーム中に差し替えれば)よさそうです。
このやり方の不安点は、アンドアジェネシスのキャラクタデータ36パターンを定義し直した際に処理落ちするのではないかということした。キャラクタデータの差し替えはテレビの描画タイミングを避けなければならず、その処理時間はあまり多くはありません。1キャラあたり128Byteで36キャラで4608Byteを転送しきれるかどうか実際に試してみたところ、最初に作成したプログラムではみごとに処理落ちして画面がちらついてしまいました。
めんどくさがらずにデータ構造を見直して転送方法も書き直したら若干マシになりましたが、それでも10MHzのX68000だと若干ですが画面がちらついてしまいます。まだまだX68000テクニックが足りてないのですが、そもそも、もうちょっとX68000のキャラクタ定義数が多かったらよかったのになーとは思います。

andor

音を出すよ

タイニーゼビウスの音の出し方は大きく分けて2種類あります。一つはBASICのPLAY文を使った曲の演奏で、もう一つがPC-6001に搭載されているPSG音源を直接操作した効果音です。BASICのPLAY文を使うといっても、タイニーゼビウスのプログラムはオールマシン語で、BASICのPLAY文の内部ルーチンをマシン語から呼び出して実行するという仕組みになっています。
PLAY文のデータはBASICからPLAY文を実行する時と同じものでMMLの記述形式になっています。PLAY”cdefgab”みたいなBASIC文法の引数そのままです。

X68000で曲を演奏するにあたっては、新たにミュージックドライバを作るのも面倒な話なので、既存のドライバで使い勝手のよさそうなものを調べてみました。

ZMUSICはドライバ自体のファイルサイズが大きくて重そうな印象が(最初頃のバージョンだけかも)。
MXDRVはお手軽そうですがX68000の音楽ドライバとしては初期のものなので、この際だから、新しいドライバがいいなーと探してみたところ、MCDRVが技術資料と一緒になって配布されていたので、MCDRVを使う事にしました。MCDRVはライセンス上の制限が非常にゆるかったというのもあります。もっとも移植したタイニーゼビウス自体を配布できませんが。

PC-6001のPLAY文の曲データをMCDRVのMMLに書き直すだけですから作業は簡単そうです。FM音源の音色をどうするかは効果音の出し方と一緒に調べることにしました。

PC-6001のPSGを直接操作して効果音を出す方法をX68000で再現するにあたって、X68000に搭載されている音源IC YM2151について調べたのですが、いやまぁこれがよくわからないのです。ネットにまとまった資料がないのですよ。アルゴリズム(こういう図)に辿り着くのも一苦労で。あるところにはあるというか、それこそ本家YAMAHAにFM音源の詳しい解説ページがあるという事をずいぶん後になって知りました。Google検索さんがんばれ。

結局のところ、YM2151については書籍のinside X68000の資料が一番充実してました。著者の桒野さんにはぜひ、outside X68000と共に電子書籍化して頂きたいです。

でも、資料を集めて読み進めてわかったのですが、YM2151の詳細機能は原則非公開なのですね。それで実際にYM2151のパラメータ(レジスタ)をいじってみたのですが、もしかしてYM2151って任意周波数の矩形波やら三角波を出せない・・・?ということに気がつきました(いまさら)。YM2151はなんでもかんでもサイン波で出すらしく、PSGみたいな矩形波三角波を直接出すことは出来ないようです。使い勝手悪し!やっぱPSG最高だな!
矩形波はサイン波の合成波で表せるじゃん・・・?とか考えましたが、面倒すぎるのでやめました。断続的にキーオン/オフを繰り返して矩形波を作るとか出来そうなんですが。あ、そういえばS44PLAYとかありましたね。

いっそのこと、効果音はすべてADPCMでいいんじゃね?と思ったのですが、とにかくPSG音を再現出来なくても雰囲気的に似た音が出ればいいという事にしました。YM2151はすばらしい音源ですが、自分の力量が足りないのですはい。なんというか、個人的にはX68000のジョイスティックポートに接続するAY3-8910ボードでも作った方がよっぽど楽だよ!とか思ったり。

音楽ドライバMCDRVの制御はC言語ではなくアセンブラで記述しています。68000アセンブラは10年以上使っていなくて、lea.lとmove.lとpea.lとか混乱もしましたが、書き始めると結構スラスラと命令が出てくるものですね。
ここでつまづいたのは、C言語からアセンブラへのデータの引き渡しとその逆のやり方です。
C言語のプログラムとアセンブラの組み合わせをするには、どういうやり取りが必要なのか忘れちゃってました。PlayStation2やPICやAVRの開発だとC言語&アセンブラという組み合わせをやったことがあるし、ネットで資料を探すと出て来るのですが、68000上でのやり方は資料が見当たらなくて。レジスタ引き渡しとスタック渡しの違いってなんだっけ。
これは探すよりも自分で調べた方が早いかなと思ったので、関数呼び出しをする単純なC言語のプログラムを記述しコンパイルして完成した実行ファイルを逆アセンブルしてパラメータのやり取りを調べました。
アセブラからC言語への戻り値はd0.l、その逆はスタックに積んでパラメータを受け取るみたいでいいようです。C言語からアセンブラに引き渡すパラメータ数が少ない場合はレジスタ経由でも渡せたような気がしたのですが、スタックで済むならそれでいいかなと。
アセンブラ側ではd0以外のすべてのレジスタを保持する為に、movemでレジスタをスタックに一括待避するのですが、これをやると引数格納先のアドレスがずれるんですけど、これってどうやって解決するのがスマートなのかわかってません。link/unlinkとかだっけ?

こういうC言語とアセンブラを組み合わせる作業をしてると、プログラムを書くということは、CPUのプリミティブな命令を実行する事なのだというのがよく見えてきます。C言語は古い言語で、私も普段はPHP、ActionScript、C#などを使ってゆるーくプログラムを書く事しかないのですが、低レベル言語にはそれはそれでコンピュータを直接触る楽しさがあると思います。仕事ではやりたくないですけど。

さて、これでビックリするほどあっさり曲が流れました。まずなにより、MCDRVの作者様に大感謝ですが、疑問点がいくつか。

曲の無限再生の方法がわかりませんでした。もしかしてできないのかな?ゲーム中のBGMを延々と流したい場合ですね。普通のゲームであれば、1曲が5分くらいで1面の長さが1時間くらいかかるゲームだとしても(グラディウスVとかそんなん?)、12回ループさせれば済みます。MCDRVでも最大で255回までループできるので、RPGで寝落ちしてもまぁ一晩くらい同じ曲をほぼ無限に再生させる事はできると思います。
ただ、タイニーゼビウスのBGM(ブーンっていう音)では、単発の短い音(1秒くらい)が延々と繰り返されるので255回じゃ足りないのです。
今回は、単発音をずらずらっと並べておいて、さらにそれをループさせるという方法で回避しました。なので、70分くらい死なずに遊んでいると、255回ループしてBGMが途切れます。短音だと288バイトの曲ファイルが、この方法だと2キロバイトにもなってしまってカッコワルイのですけど、いい解決方法が思いつきませんでした。
また、MCDRVには曲の終了などのタイミングでイベントが発生するので、それを利用する方法も試してみたのですけど、イベント発生時に呼び出される処理中に曲の再生を実行すると、さらにイベント呼び出しが発生して…と無限ループにおちいるみたいでうまくいきませんでした。

あと、mml変換をするmcc.xは曲の長さが70分を越えると総演奏時間が0秒に戻ってしまうとか、MAコマンドのエラーメッセージがMPと混ざってるとか振幅パラメータがマニュアルと違うとかあるのですが、1998年で更新が止まっているソフトの不具合報告を作者様にしても困ってしまうでしょうから、ここに止めておく話ということで。

で、結局、音周りはあまり時間をかけることが出来ませんでした。
特に、タイニーゼビウスではノイズ音を多用しているのですが、YM2151ではノイズが1つしかないので、アンドア出現時のノイズ音とブラスターのノイズ音が重なると片方が消えてしまって、これはイカンということで、結局、ブラスターの着弾音にはADPCMを使う事にしました。

音の出し方を試行錯誤しつつキャラを表示させたりして息抜き。

SOL

タイニーゼビウスのソルは勝手に生えてきます。

bacura

タイニーゼビウスのバキュラとグロブダはズッ友。

余白を活かす

PC-6001の実機画面では、上下左右に色の付いた余白が出来ます。PC-6001初代機のモード3では緑か白、PC-6001mkII以降では黒色で塗りつぶされます。この塗りつぶし処理はVDG(VDP)が自動的に行います。

X68000の画面にPC-6001の画面を再現するとなると、同じように塗りつぶし処理を記述することになるのですが、言い換えると何を書いてもよいということになります。プログラムを書き始めた頃は、余白部分にスコアや残機を表示しようかなーと考えていたのですが、タイニーゼビウスでは、ゲーム開始前に軽快な音楽と共にスコアと残機が表示されるので、

intro

この上にスコアされたら妙です。だったらゲーム開始前画面の表示内容を変えてもよかったのですが、この手の改変作業を始めると、オリジナルを出来るだけ忠実に再現するのとは別のものになってしまいます。その辺は自重して元のゲームのシステムには手を加えない事にしました。

ただ、画面のどこかにPC-6001の文字を常に表示しようと思っていたので、

ILOVENEC6001

こんな感じに右下にゼビウスフォントで文字を描いてみました。オリジナルのゼビウスフォントってハイフン(マイナス)の文字がないので、自作(というほどの文字じゃないけど)しています。NECの文字が赤いのは経営が赤字だからとかでなくて、昔のNECのロゴは赤かったからですヨ!

もっとデカデカと左右に

デカモジ

PC-6001と表示してPC-6001を主張することも考えたのですが、ちょっと品がなさすぎなので自重しました。

ゼビウスフォントの表示はグラフィックRAMに書き込んでいます。グラフィックRAMを操作していて気がついたのですが、キャプチャ画面をよく見ると、BG/スプライト面の上に重ねているグラフィック面のマスクの最下段(=ゲーム画面の最下段)に黒いラインが見えていますね。最初は座標計算を間違えたのかなと思ったのですが、よくよく調べていると、グラフィック面のY位置が1ピクセルだけ上にずれていました。つまり、最上段が画面外にあります。386×256モードの画面設定で何かミスってるのか、それともそういうハード仕様なのかわかりません。XM6gでは発生しているのですが、WinX68K高速版では起きてません。実機だと最初は発生していなかったのですが、なぜか途中から発生するようになってしまいました、謎すぎる。ちゃんと調べてないのでわかりません。

エミュレータの妙な挙動といえば、XM6gで129個目以上のスプライトレジスタに書き込みをするとエミュレータ自体がフリーズします。メモリを壊してるのかな?Windowsのタスクマネージャから強制的に停止させてエミュレータを再起動したらディスクイメージが壊れてた、ということが何度かありました。

ただ、こういう細かい不具合を抜きにしてもXM6gがなかったら移植作業は進まなかったのでエミュレータ作者様には本当に感謝しています。贅沢を言えば、「MPUだけ最高速で動かす」をショートカットキーで切り換えられるといいなーと思いました。コンパイル時だけ高速化するのに便利なので。

初めての実機

開発作業の区切りのいいところで実機で実行してみました。さぁどうだ!

fault

なんたる無慈悲!エミュレータでは動くのに実機では動かないってデバッグが大変なパターンじゃないですかー。
セグメンテーションフォルトってどこのUNIXか!みたいな気がしますが、教えてくれるだけ親切ですね。GCCを使ってなかったら白窓バスエラーが表示されてたのかな。

この原因を調べる前に、XM6gだけでなくWinX68k高速版でも試してみたのですが、どちらのエミュレータでも問題なく動いたので、実機向けにデバッグ用のコードを埋め込んだプログラムを作って原因を突き止めました。
開発はWindows機上のX68000エミュレータで、エミュレータ内で生成されたファイルはWindows上のエクスプローラからもアクセスできるのですが、それを実機に持って行くのには実メディアを使ってのやり取りをしています。もうひたすら行ったり来たりの繰り返しでした。この辺、簡単にやり取りできる方法があればいいのですが、Nereidでnfsとかが簡単なのかな、誰かNereidください。

起動しない原因ですが、Human68K+command.x起動時の初期画面モードではスプライトコントローラのバスが切り離されているらしく、この状態ではスプライトコントローラ(シンシアさん?)にアクセス出来ないというものでした。もしかしたら十数年以上前に同じ経験をした経験があったのか、なんとなく怪しいところが直感的に閃いたので、問題箇所の特定にはそれほど時間がかかりませんでした。
メディアのコピーや実機X68000の再起動の待ち時間にiPadでツイッターを見始めて気がついたら時間が経過してたりとか、そっちの方がよっぽど時間泥棒。

画面周りの設定を済ませてからスプライトの定義を行うようにプログラムを書き換えたところ、起動時のエラーを切り抜けて無事にタイトル画面が出・・・

white

タイトルが真っ白に化けてるしー!まったくもってままならぬ!

この現象はXM6gでは出なかったのですが、WinX68k高速版では

bug

見事に色化けしたので、エミュレータ上で原因を追える分、原因追及作業はしやすかったのですが、問題解決は先のバスエラー以上に面倒でした。

色バケした色をみると、テキストプレーンに設定されてる色だとわかるので、これはテキストとBGとで共有しているパレット番号0番を使ってるということであって、つまるところ、パレット設定がうまくいってない、と気がつきました。
どうやら、スプライトコントローラには8ビット単位でアクセスしちゃダメというのが理由みたいです、たぶん。プログラムではC言語の共用体を使ってスプライトコントローラにパラメータを設定してるのですが、スプライトのパレットとキャラコードは同じスプライトレジスタに割り当てられていて、そこを8Bit単位で別々に更新しようとして失敗していたみたいです。スプライトコントローラに8ビットで書き込むと上位バイトが00hの16Bit値として書き込まれるのかな。

ファイルサイズ

ソースは混じりっけ無しの純粋C言語で4700行ほどでした。一通り実機で動くようになった状態での実行ファイルのファイルサイズは約55キロバイトです。曲データも内部に持っているのでちょっと大きめです。gccのデバッグ情報やシンボル情報は削ってあります。キャラデータやマップデータなどの外部ファイルは圧縮してなくてトータルで50キロバイトほどになりました。X68Kにしては少ないんだか多いんだかビミョーな。

source

libiocsをリンクしていますが、B_SUPER()とBITSNS()くらいしか使っていないので、これをインラインアセンブラに置き換えればlibiocsを使わずに済んだかも。同様にlibdosはデバッグとロードエラー時のprintf()だけしか使ってないので、これは完全に無くすことが出来ます。数値演算周りが手抜きなので、float2.xが必要っぽいです。
まだまだファイルサイズを縮める余地はあるのですが、そこにこだわる理由はないのでいいかなと。

当初は、プログラム本体のロード時やデータファイルの読み込み時にピーガッガーというBGMを流すつもりでいました。ただ、実機のフロッピーベースで動作させてみたところ、ロード時間が思っていたよりも短かったので、わざわざピーガッガーを聞くための待ち時間を組み込むのも本末転倒なのでやめました。あと、テープのロード音って、分かる人が聴くと『なつかしい!』と思ってもらえるのですが、それを知らないとテープのロード音ってタダのノイズでしかなくて、ADPCMが壊れたようにしか聞こえないかなと。プログラムがバグって変な音がします!ってアンケートハガキを送られても困ります。

あと、やりたかったけど技術的に出来なかったのが、Human68K無しの起動です。モトスとか超人みたいにIPLからゲームが起動しちゃうようなX68000の電源を入れた段階からまるでPC-6001が動いているかのように振る舞う、なんて事をしたかったのですが、どうやったらいいのかさっぱり。
たぶん、X68000のIPLはTrack0Sector1の512Byteを既定のアドレスに読み込むとかなんとかしてて、そこからディスク上のZ形式で作ったバイナリプログラムをIOCSを使って読み出して実行すればいいのかなーとか想像してるのですが、周辺回路の初期化とかがわからないので手を付けられませんでした、残念。実現するには音源ドライバも自作しないといけないですしね。

パッケージとフロッピーラベル

テキトーに。緑色が薄かったというか、うちのプリンタはカラーマッチングできてないのがよくわかりました。今年のエイプリルフールネタのゲームボーイツイッターに比べたら雑にちゃっちゃと作りました。

パッケージとディスク

完成したの?

現時点で未実装な箇所はエリア5以降のデータの入力と動作確認くらいで、プログラムはほぼ完成状態です。COPYキーやらインタラプトキー処理やら細かい未実装はありますが。

こうしてプログラムをちゃんと作っているのでフェイクではないです。ただ、著作権を考慮してプログラムの配布は絶対にしないと決めているので、それ故にフェイクプログラムだと言われても配布できない以上は証明できないですし、未完成でいいかどうかは自分の気持ちの問題だけですね。

何かしらのイベントであれば、たぶん、著作権法第38条の範囲で上映プレイする事はできるのかもしれませんが、そういう話が出たらPC-6001実機とデータレコーダとタイニーゼビウスのテープを持って行くと思います、P6erとして!

まとめ

移植作業終盤の実機バグ取りは大変でしたが、おおむね楽しかったです。

「最近、X68000界って何か話題あったっけ?」→「タイニーゼビウスが動いてるらしいぜ」→「PC-6001か!」という流れでPC-6001の事を思い出してくれる人が増えてくれるといいなと思います。

MAP-1010について補足

2013年5月31日

MAP先生ことMAP-1010についてのメモ書きです。

周辺機器一覧(実際に発売されていたかどうかは不明)

型番 機器名
MAP-1020 プリンター
MAP-1030 拡張インタフェースボード / ボードを装着するとMAP-1030 BASICが起動
MAP-1040 モニターCRT
MAP-1060 フロッピーディスク / 5inch2台 640KBだそうですが1台320KBなのか1台で640KBなのか不明
MAP-1070 デジタイザー / 用MAP-1030 / ソフトはMAP-1030に組込みされている

MAP-1030には、サウンドジェネレーター、シリアルインタフェース(RS-232C)、ジョイスティックインタフェースがあり、ジョイスティックとデジタイザ(MAP-1070)が接続できるようになっています。
型番の並びでみると1050が抜けてるのですが、存在していたかどうかわかりません。

MAP-1010の書籍は今のところ3冊ほど確認しています。

  • 株式会社文理 畑太郎著 1983年4月5日第1版第1刷 「基本プログラミングガイド すぐに使えるBASIC」 2300円 / 命令のリファレンスや本体パネルの操作方法、マイクを使った2トラックテープの作成方法、豊富なプログラム集と、内容豊富な本です
  • 株式会社文理監修:國澤清典 文:伊藤一郎 イラスト:黒須和清 1983年7月25日第1刷「プログラミング入門 マッピーと楽しいなかまたちの おもしろマイコン・ブック」/ BASICの入門書です。MAP-1010の基本的な操作方法について書かれていますが、汎用的なBASICの本です
  • 株式会社文理編著者:國澤清典 1983年7月20日初版第1刷 「プログラミングガイド プログラミング ちょっとテクニック39」 800円 / 様々な目的ごとに、BASICを使った丁寧な説明とサンプルプログラムが掲載されています。PC-6001やPHC-25などの互換BASICでも動くはずです。最後の方に少しだけマシン語の事に触れています

マッピーといってもマイクロマウスではありませんヨ。

おもしろマイコン・ブック

万引き少年ゲーム

2013年5月27日

万引き少年ゲームについて、わかっている範囲でとりまとめてみました。

万引き少年ゲームの歴史については、bmfanさんのページにある、マイコンBMFANマガジン Ver.1.0の記事中にまとまっています。また、ALL ABOUT マイコンBASIC Magazineさんのページにも掲載プログラムの一覧がありますので、これらから引用させていただくと…

  • マイコンベーシックマガジン1983年10月号 「移植版万引少年ゲーム / HC-20」
  • はるみのゲーム・ライブラリー 「まんびき少年ゲーム / PC-6001」
  • マイコンベーシックマガジン1982年7月号 「移植版 万引き少年ゲーム / PC-6001」
  • ラジオの製作付録ベーシックマガジン82年1月掲載 「万引少年ゲーム / MZ-80K2/C/E」
  • 雑誌RAM 1980年2月号掲載「万引少年 / PET2001

という事になります。MZ版はRAM版を参考にして作成した事が記事中に書かれています。

雑誌掲載では、PET2001版の「万引少年」が最古なのですが、実は雑誌掲載よりも前に公の場で発表されています。

東大マイコンクラブ著, 集英社 / だからいまマイコンによると、1979年の東大駒場祭において、東大マイコンクラブが制作したゲームとして「万引少年」のタイトルで発表されたようです。「万引き少年」でも「万引き少年ゲーム」でもありません。翌年の駒場祭では「万引少女」というゲームが発表されたようです。こちらは音声合成でしゃべるゲームだったようですが、画面写真や動作機種などについての記述がないので、これ以上の事はわかりません。
だからいまマイコンに掲載されている写真では、PET2001ではなくCBM3032のようにも見えますが、写真が小さいのと、どのマイコンで万引少年が作られたのかは書かれていないので詳しいことは不明です。

1980年2月号のRAMにも同じような経緯が記事中に書かれていますので引用すると、

このゲームは、11月下旬に行われた東大駒場祭において、当ゲーム開発事業部企画「熱中時代・ゲーム編」に出品するために開発されたものです。

~中略~

また、駒場祭が終り、このゲームを『RAM』編集部へ持っていくと、その題名のあまりな不埒さに編集部の人がかなりビビッタようです。でも、何とかOKが出たので、掲載の運びとなったのです

ということですから、駒場祭が最初ということで間違いなさそうです。
記事中では、「あるメーカーから商品化される予定ですので、個人で楽しむ以外は一切の使用を禁止します」と書かれているのですが、実際に商品化されたかどうかはわかりません。

PET2001版万引少年

ちなみに記事のタイトルでは「万引少年」なのですが、RAM誌の表紙や目次では「PET2001 万引少年ゲーム」となっています。

開発元が東大マイコンクラブである事は、東大マイコンクラブのホームページ内のUTMC – 活動成果 – ソフトウェアにも書いてあります。

EPOCH LCD GAME こうもり城の冒険

2013年5月26日

エポック社の液晶ゲーム こうもり城の冒険です。

パッケージ 本体

左から(上から?)コウモリが下へと移動してプレイヤーの裏側に回り込んでくるので、それを攻撃して防ぎます。のがしたコウモリはプレイヤーの裏側から注射攻撃をしてくるので、上下に移動してよけます。上下が逆転したプーヤンみたいのを想像するとわかりやすいかもです。

上下移動ボタンの大きさが違うので遊びにくいデス。

テーカン・メタルマシン価格表 / 1984年

2013年5月19日

ゲームセンターに設置されるエレメカやテレビゲームの価格って、公になってないのか、ネットでみかけることはほとんどないような気がします。もしかして業界の暗黙のルールで非公開だったりするのかもしれませんが、私は業者でも関係者でもないですし、AMショーやAOUには一度も足を運んだことが無いので、そのへんのことはまったくわかりません。

ただ、古い資料を入手して見ていると、はっきりと値段が書かれている資料が出て来ることがあるので、それほどヒミツというものでもないのかなと。

テーカン・メタルマシン価格表 / 1984年

最近はスターフォースの中古基板が3万円前後で取引されていて高いナーと思ったりもしますが、定価からみたら全然安いですネ!

EPOCH LCD GAME アイスホッケー

2013年5月19日

エポック社のアイスホッケーです。

パッケージ 本体

自分は左右に移動できます。上部の敵がパックをシュートしてくるので、それをはじきます。はじく毎にパックが右側に移動していき、右端まで持っていくと点が入ります。ゲームウォッチ ファイアみたいな感じです。パックが複数出てくるので、ジャンプマンガっぽいノリのアイスホッケーなのだと思います。

エポック社って今はどんな商品を出しているのかホームページをみたのですが、電子ゲーム的なものはないのですね。

聖闘士星矢 目ざめよ!セブンセンシズ

2013年5月16日

LSI GAME ポケットクラブ P-1 聖闘士星矢 目ざめよ!セブンセンシズで遊んでみました。

パッケージ 本体と説明書

動画をみただけじゃ、どんなゲームかわからないですネ!実際、遊び初めた時はルールがまったくわかりませんでした。

真ん中のヒルダが、周りにいるフレア、氷河、瞬に攻撃をしてくるので、星矢を動かしてヒルダを攻撃して周りにいる3人を守るゲームです。ヒルダを守るゴッドウォーリアーがジャマしてくるので、彼らがいない場所から攻撃します。たまに、星矢が右上の位置に移動することがあって(ランダム?)その時にバルムングボタンを3回押すと、バルムングがヒルダを攻撃して高得点!

・・・というルールです。

アスガルド編を観てないのでいまいちピンとこないというか、氷河、瞬はなんで働かないのん?

COMTEC BC-1688(HuX-883)

2013年5月15日

コムテック株式会社から発売されていたBC-1688という、ワンボードコンピュータについてのメモです。実機は所有していません。誰か持ってたらください。(最近こればっかw)

まずは広告から。

COMTEC BC-1688広告

この時代には、色々な会社からトレーニングキットなどを含め、ワンボードマイコンが数多く発売されていました。BC-1688もよくある製品にみえるのすが、ちゃんと調べてみると、他のワンボードマイコンとは違った特徴があります。

■ ハードウェア

CPU Intel 8088 5MHz
ROM 8KByte / 2764 (16KByteに拡張可能)
RAM 8KByte / HM6116×4 (最大32KByteまで拡張可能)
画面表示 TMS9918A(MSXなどでおなじみのVDP)
画面出力インタフェース RF出力 / コンポジット出力(NTSC)
サウンド スピーカー
外部インタフェース カセットインタフェース、拡張コネクタ

8088は16BitCPUに分類されるのですが、外部データバスが8Bitです。搭載されているメモリが少ないので、16BitCPUを使うメリットがないようにも思えますが、この時代で16bitというのはキャッチーですね。

起動用のROMは8KByteで、電源投入から起動するBASICが入っています(後述)。初期状態ではEPROM 2764が搭載されていますが、ICソケット上の2764を27128に置き換えると16KByteのROMを無改造で搭載可能です。もちろん、起動可能なプログラムを書き込んでおく必要があります。

RAM領域はHM6116が4つで8KByteです。これをHM6264に置き換えることで最大32KByteまで拡張可能ですが、その場合はジャンパピンの設定を変更する必要があります。こちらもICソケットタイプなので交換は容易です。

外部インタフェースの制御用に8255を使用していて、キーボード(PORT-B)、スピーカー&カセットテープ制御(PORT-C)が接続されています。スピーカーとカセットテープのポートが同じだからか、カセットテープへの出力音をスピーカーで聞くことができたようです。
8255のPORT-Aは未使用ですが、セントロニクスタイプのプリンタを接続してBASICから印刷できるようになっていました。

カセットインタフェースは入出力のみでリモート端子はありません。入力はイヤホンレベル、出力はマイクレベルです。

電源は+5Vのみで駆動します。ボードとは別の電源ユニット(ACアダプタ?)が付属しているようです。

写真上部中央にあるのがサウンド出力用のスピーカーです。詳細な仕様は不明ですが、BEEP音を出す程度のものではないかと思われます。

写真右上が拡張コネクタです。その下にエッジ基板用のスロットがありますが、拡張コネクタと同じバスにつながっています。

キーボードはワンボードマイコンにありがちな16進文字キーだけでなく、英数記号にスペースカーソルと一通り揃っています。スペースキーというかスペースボタンが左右に2個ありますね。ただ、キーの押下反応はよくなかったらしく、真上から押し込まないといけなかったようです。

広告の製品名はBC-1688(HuX-883)となっていて、HuX-883で検索すると、岩崎啓眞さんの記事がヒットします。記事上ではCPU(MPU)が68000となっていますね。

■ メモリマップ

■ BASIC

電源を投入するとBASICが起動するのですが、BC-1688に搭載されているBASICはハドソン製のHuBASICです。他のHuBASICと同様に命令には省略形があります。

コマンド 省略形
ABS A.
CALL CA.
CHR$ CH.
CLEAR CLE.
CLS CL.
COLOR C.
CONT CON.
END E.
FOR F.
FRE FR.
GET GE.
GOSUB GOS.
GOTO G.
HEX$ H.
IF I.
INP INP
INPUT IN.
KEY K.
LOCATE LO.
LIST L.
LPRINT LP. / L?
LOAD LOA.
MON M.
NEW NEW.
NEXT N.
OUT O.
PAUSE PA.
PEEK PE.
POKE PO.
POP POP
PRINT P. / ?
PUSH PU.
RETURN RE.
RND RN.
RUN R.
SAVE S.
SIGN SI.
SOUND SO.
STOP ST.
SPC SP.
TAB TA.
TEXT T.
THEN TH.
TO TO
VPOKE VP.

BC-1688搭載のHuBASIC同様では、A=A+1をA+, A=A+2をA++と記述できたようですが、これは他のHuBASICでもできましたっけ?

MONはモニタモードへの移行コマンドです。コマンドはD(DUMP)、G(GO)、P(プリンタ出力)、R(BASICへRETURN)の4つで少なめですが、Dコマンドで表示された内容を直接編集できるようになっていました。

キャラクタコードは、20Hから7AHまでの領域に英数記号がASCIIコードとほぼ同じように割り当てられています。また、A0HからFAHには、20Hから7AHのビット反転文字が入っています。フォントROMを持っていたのかどうかは不明です。(TMS9918ってフォント組み込みでしたっけ?)

このように、BC-1688の見た目はワンボードマイコンですが、実際にはケースのないマザーボードだけのパソコンという作りになっています。その分、16BitCPU搭載マイコンとしては安価ですし、必要であれば外部インタフェースを使って機能を拡張しましょうという、時代に適した製品かと思いました。そのためか、マニュアルには回路図だけでなく、搭載されているBASICのアセンブルリストも掲載されていたようです。

ただ、この時代のマイコンの進歩はものすごく早く、NECや富士通などがキーボード一体型の安価なマイコンを次々と市場に投入していましたから、見た目や、単体での性能で劣るワンボードマイコンは自然と減っていきました。

PC-6001にYM2203を追加する記事

2013年4月26日

I/Oの1985年9月号に、PC-6001用のFM音源カードの記事があります。
ROMカートリッジスロットに差し込むカード上にYM2203を2個も載せるというものです。
回路図を引用します。

アドレスデコードがシンプル!
今となってはYM2203とYM3014を手配するのが難しいかな。矩形波音源でよければ秋月電子で取り扱っているYMZ294が安いので、2個といわずに4個ぐらいどーんと載せるのもありかもですね。発音タイミングがずれまくりそうですが。

ハードウェアはシンプルですが、この手のデバイスは音楽データがないと楽しめないので、曲データの作成の手間の方がかかりそうです。

エニックス 第1回パソコンソフトウェア技術コンテスト

2013年4月5日

エニックスのコンテストといえば、森田のバトルフィールドとかドアドアとかラブマッチテニスとかを思い出しますが、それとは異なるコンテストがあったみたいです。

結果は同年9月号頃のマイコン雑誌(I/O 1984年9月号等)で、ENIXの広告内に小さく載っていました。受賞作品はアセンブラとかそういうツール系ですね。
第2回があったのかどうかは知りません。

twitter on GAMEBOY

2013年4月1日

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

元ネタは、タンブラーに流れてきた画像です。サンリットルさん(違ったらごめんなさい)が作成された画像で、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枚ほど余った…

並んだポスト お茶の水駅/交番前

2013年3月23日

先日、明治大学で、すがやみつるさんの講演会があり、その後にRETROPC系の方々と共にぞろぞろと秋葉原方面へと徒歩で移動したのですが、その途中で2つ並んだポストを見かけました。

後日、改めて撮影。

時代を彩った名機たち~1980年代・国産パソコン戦国時代を振り返る

2013年3月19日

共感できる世代なので楽しんで読めました。また、自分が詳しくないマイコンのお話は興味深くて、特にS1のCPUを換装しているエピソードは気になって本を読みながらグーグル検索してマニアックな機種のユーザの濃さを改めて認識したり。

ただ、誤字がちょっと多めですよね。当時の情報や歴史的な経緯を説明されてる本でなくてエッセイとして読むのあれば細かいところをチクチクと指摘するのも失礼かなと思ったのですが、気になり始めると落ち着いて読み進められなくなってしまうもので、こうして書き出す事でスッキリするライフハックというか。文字や単語の揺らぎは80年代当時のメーカーですら不正確でしたし、どっちでもいいじゃんみたいなものもありますが、一覧として書き出してみました。
同人誌のような体裁と金額だと考えれば無粋な指摘だと思いますが、著者の方がTwitter上で、そこはちゃんとしたいと言われてたので。

※補足:タカラm5の価格は、パッドが2個付属した59800円のモデルと、パッド無しの49800円のモデルの2種類があったようですが、詳しいことはわかりません。Webで検索すると2種類の箱の画像が確認できるのですが、確証はないです。

FM-7 8BIT CPU(全角スペース) 8BIT CPU
FM NEW-7 FM-NEW7
MEC NEC
X1 悔しがらないで住んだ 済んだ
8801mkIISR Z80 厳密にはμPD780C-1
2台まで内臓出来たのは画期的 内蔵
その上位に8801シリーズを置、き 置き
バージョンアップを初めていて 始めていて
YM2203のくだり 88mkIISRよりPC-6001mkIISRの方が発売が先です
互換の「PC-ENGINE」 PC-Engine
不評。。 不評。
あまりに付利 不利
NEC自身がPC-Engine PC Engine(PCエンジン)
時代の寵児となった8801mkIISR(Iが全角?) PC-8801mkIISR
PC-9801 PC-9801
SMC-777 後継機□C
FDDのシャッターが FDの
m5 59800 59800円(タカラm5って59800円でしたっけ?→追記:59800円でOK→49800円版もあった模様
ゲームパソコンm5 BASIC-Gは付属していなかったような
6001 PC-8801mk2SR mkIISR
Z80 μPD780C-1
刺す 挿す、差す
嫌でもフセンブラ アセンブラ
PC-6601mkIISR PC-6601SR
Mr PC Mr.PC
直径 直系
MSX…そしMSX2 そして
MSX2は「他のメーカが 他のメーカが
大学生や社会人となった時に(改行)シャープ 改行してる?
MZ-2000 電卓おなじセグ 電卓と同じセグメント?
画期的した 画期的でした
SC-3000 当時触っていた友人が~” 閉じ括弧
パソコンに□,800円の周辺機器 ?
FM77AV&X1turbo ホビーパソコンから「FM77AV」とX1turboZ」 括弧
MZ-700 レコーダーなしで□,800円 ?
MrPCことPC-6601mkIISR Mr.PCことPC-6601SR
MSX 各社の注文に合わせてMSが話用意 ?
得に 特に
コナミのSSCこそ SCC
ゲームメーカーとしても普及したMSX2の基板が 基盤?
FM77AV40などを発売し□シリーズ ?
全般 基盤 基板
先日紹介した~ ブログではなく書籍なので前章とかかなと
句点がない箇所がいくつか
Towns TOWNS
X1Turbo X1turbo
PC8801,PC-8801,8801 PC-8801
hz Hz
wiki Wikipedia
bit, Bit, BIT, ビット

Wikipediaがwikiであっても文脈で充分にわかりますし、SHARPだったりシャープだったりしても大したことはないのですが、こういうのは気になると止まらない(^^;

こういう良い本が容易に購入できるというのは電子書籍の大きなメリットだと感じましたが、同時に不正確な情報が広く安易に伝わってしまう危険性もあるなぁと思いました。内容の訂正が反映される(受け手が再度読むかは別として)のも電子書籍の良さでもあるので、更新される事を期待しています。

PC-6001mkIIがテレビ地上波に登場

2013年3月2日

NHKの番組 MAG・ネット 3月1日の放送では、ノベルゲーム特集の一環として、PC-6001mkIIとPC-8801mkIISRとX68000がテレビに登場しました。

番組の内容は、PC-8801mkIISRの実機&本物のフロッピーディスクで「東京ナンパストリート」を遊ぶというもので楽しかったですヨ。

スーファミターボのソフトを分解してみた

2013年1月12日

カセット正面 端子
基板裏 基板表

スーファミターボ専用のカセットです。こういうソフト供給の場合、任天堂とのライセンス契約はどうなってたんでしょうか。

ケースの裏側2箇所がネジ止めされています。ねじ山はファミコンの大きなカセット(光栄とか)と同じタイプです。電池はCR2032なのですが、基板から伸びている固定金属板と固く接着してあり、電池の交換をするのは大変そうです。2つあるチップの1つはSHARP製のLH5116NA-10というSRAM(2KByte?)みたいです。もう一つはカスタムチップのようで、BANDAIのロゴとタイトル名の型番が印刷されています。

PC-6001の箱を1/12ペーパークラフトで作る

2012年12月26日

展開図

ここらへんはもう慣れた感じでモデリングから展開図の作成まで進みました。今回の問題点はテクスチャ画像でした。本物の箱はスキャナでスキャンできないサイズですから、デジカメで撮影してみました。できるだけ正面から照明が均等にあたるようにがんばってはみたのですが、写真を1/12用に縮小すると照明の光が偏っていることがはっきりとわかってしまうのです。(展開図で部分的に焦げたように暗くなっている箇所です)
気合いを入れて撮影するか、撮影した画像を元にしてイラレか何かで画像として書き起こすのがいいのでしょうけど手間がかかりすぎるし、元々の箱が結構傷んでいるのでいいかなと。

持つ 抱える 開封の儀

写真を撮るのが目的なら、凝った構造にしなくても直方体にテクスチャを貼るだけでも似たような雰囲気にはなるかなと思いました。

ペーパークラフトで1/12 PC-8801mkIISR版 YsIIのパッケージを作ってみる

2012年12月24日

パッケージの内側も作ってみようというのが目的の一つですプリンタで印刷すると用紙の片側にしか印刷されませんから裏側は真っ白のままです。なので、なんらかの方法で内側も印刷された状態にする必要があります。
1つ目の方法は両面印刷です。ただこれは位置合わせが難しいのと手元の用紙が片面印刷用なので無理でした。
2つ目の方法は貼り合わせです。内側用の画像を用意して内側に貼り付けるわけです。今回はこの方法を使っていません。というのも、紙を2枚貼り合わせると、紙の切断面が2枚分になるので、切断面の白さがより目立つんじゃないかなと思いまして。紙の厚さが0.21mmなので2枚だと0.42mmです。
3つめの方法は折り曲げです。外側から内側へと紙を折り曲げるて内側へとつながるようにデザインします。今回はこの方法でやってみました。結論としては折り曲げ部分が白くならなかったのでほぼ成功したのですが、別の箇所に影響が出ました。紙を折った場合、折り曲げた部分は単純に2倍の厚さになるわけではありません。紙同士がつながっている分の厚さが出ます。よくあるウンチクですが、紙を四十数回ほど折ると、その厚さは地球から月にまで届く長さ(高さ)になるくらい、紙を折った時の厚さは無視できないのです。その厚さの影響で、パッケージの中にマニュアルとディスク4枚を収納することが出来なくなってしまいました。切り取りや貼り付けの誤差もあるのですが、このペーパークラフトのサイズは高さ20mmなので、厚さ0.42mmが上下で0.82mm分だけサイズに差が出てしまい、思った以上に影響が大きくなってしまいました。作る前は無理矢理押し込めばなんとかなるかなーと思っていたのですが甘かったです。

最初のデザイン。内側を作らなければこれで完成ですが、接合面が無いので実際に組み立てるのは難しいかも。

内側に紙を折り曲げつつ、のりしろはペパクラデザイナーではなく自前でデザインするということまで考えた結果がこれです。わかりやすく色を変えてあります。緑色の部分がのりしろです。左側の画像の左にある板は内側に張り付けます。

マニュアルは立方体なので簡単。

フルセット完成。パッケージの右側にはディスクを抑えるプラスティック板が入っていて、モデリングでは再現しましたが、紙で作るにはサイズが小さすぎたので、白い紙を貼り付けました。フロッピーディスクは裏面も用意してあって、これも折り曲げるようにして貼り付けます。折り曲げの反対側の箇所は白い断面を貼り合わせることになるので、この方法はもう一工夫必要かな。

印刷して組み立てて完成、と。

本物と比較。ちっちゃ。

完成してからしばらく放置しておいたらインクとのりの影響か、紙全体が固くなって良い感じになりました。ミクに持たせるために試行錯誤してたらインクジェットがこすり取れてしまったので、印刷後の紙をコーティングするとか、もっとインクが定着しやすい用紙にした方がいいのかも。

テーブル筐体をペーパークラフトで作ってみた

2012年12月23日

ペパクラデザイナー3+六角大王SuperLEでモデリングし、ペーパークラフト用に印刷したテーブル筐体を組み立ててみました。

モデリング

ペーパークラフトを作った経験はそれほどないですし、この縮尺のペーパークラフトにチャレンジするのは初めてなので、あまり参考にはならないかもしれませんが、実際に作ってみてわかったことを書き連ねてみようと思います。今回の記事は色気を出してアフィリエイトだらけでちょっと見苦しいですw

ペーパークラフト完成写真

これを完成させるまでに使った道具はこちらです。

工具

これらの道具の用途を説明をする前に、そもそもなぜこれらの道具が必要なのかを話したいと思います。

小さなサイズのペーパークラフトを綺麗に作るためには「ズレの無い綺麗な直線」で紙を切り取る事が最も重要です。ズレというのは切り取り線から実際に切った箇所とのズレの事です。紙に印刷されている切り取り線の通りに切り取るのが理想ですが、実際に切り取ってみるとズレます。具体的にどれくらいズレちゃダメなのかというと感覚的には0.2mm以下ならいいかなと思いました。世の中の大抵の定規は1mm幅でしか目盛りがありませんし、中学/高校でも技術的な授業や部活に参加しないと1mm未満の長さを扱うことはほとんどないのですが、1mmって結構、太いんですよね。もっと義務教育の段階で1mm未満の世界を体験する機会を増やした方がいいんじゃないかなーと思うくらいに。

話がそれてしまいましたが、この小さな数値をうまく扱うには、それなりの道具が必要なのです。例えば紙を切るにはハサミでもいいのですが、ハサミを使って紙をまっすぐ切るのは結構難しいです。また、ハサミ自体がジャマで手元が隠れてしまい、切り取り箇所がよく見えなくなります。カッティングマットを使わずに厚いダンボールや古雑誌の上で切り取る事もできなくはないのですが、ダンボールや雑誌の紙にカッターの刃がひっかかって思わぬ方向にカッターが動いてしまいます。
良い道具を使うとそれだけ良い結果に結びつきます。もちろん道具を使いこなせるかどうかも大切ですが、ペーパークラフトの場合、質の良いカッターとのりと定規を使いましょうという話で、使ったことの無い未知の道具に慣れる必要はまったくありませんから、道具を変えるだけで目に見えてよくなります。

さてそれぞれの道具についてざっと説明していきます。

■ のり

ペーパークラフトを作るのならボンド ペーパーキレイが断然オススメです。伸ばしやすく乾きやすく乾いてもくっつきやすく乾くとほぼ透明になり、それでいて接着力が強力です。

■ カッティングマット

力を込めて紙を切ってもマット自体はほとんど痛みませんからとても便利です。中途半端なサイズのマットを買うよりも大きめのマットを常に机の上に置いておくとジャマになりません。机も傷みませんし。

■ デザインナイフ

一本持っておくと何かと便利です(職質されるとアウトなので持ち運びはしない方がいいと思いますが)。色々な種類があり、どれが自分の手になじむかは実際に使ってみないとわからないものなので、どれが良いとはいえませんが、ただ、「紙を1枚だけ切れるカッター」はペーパークラフトには向いていません。デザインナイフで紙を切る時にひっかかる感じだしたら即座に刃を交換した方がいいです。ペーパークラフトを作る場合は刃の先端先しか使わないのでもったいないのですが、切れ味が落ちたカッターで紙を切ると切断面がボロボロと汚くなります。

■ 金属製の定規

プラスチック定規はやめておいた方が良いです。というのもデザインナイフの切れ味はハンパないのでプラスチック定規にナイフをあてて紙を切ると間違いなくプラ定規側を削り取ることになります。そうなってしまったプラスチック定規はまっすぐな線を描く事もできなくなってしまいます。定規には紙をまっすぐ切るためだけでなくマットと定規で紙を挟んで固定するという役割もあるので、長めでちょっと重いくらいの方が使い勝手がいいです。ハイパーオリンピックにも使えます。

■ 色々なのりを伸ばす道具

クリップの先にのりをつけたり、紙の貼り付け位置を細かく調整するのに使います。のりはけちらずに小まめに拭き取りましょう。マイナスの精密ドライバも同じようにのりを広く伸ばしたり余計なのりを紙から拭き取るのに使います。

■ 紙

インクジェットプリンタ用紙にも色々あって、その中にはペーパークラフト向きなんていうのもあります。

今回はこれを使ってみました。ちょっと印刷ムラが出やすいのと、紙を小さく切り折りしてると紙が薄く2つに分離しやすい(紙自体が3層になっているようです)ですが、ほどよい厚さでしっかりしていて扱いやすかったです。

印刷してみた

さて、これらの道具を駆使して、紙を切って貼り付ける作業をすれば完成です。コツとかは実際にやってみると身につくので説明するものでもないのですし、紙なので失敗したらまた印刷すれば済む程度でダメージは少ないと思います(インクジェットのインクが高いですけど)。丁寧に集中力と手を抜かないように作業するためにどうするかで完成度に差が出ます。例えば、こういう角の部分の切り込みが甘いと…

切れてなーい

このように切り離れない状態になることがよくあります。ここで手を抜いてえいやっと紙を引っ張ると、紙がちょろっと残ってしまい綺麗にみえませんし、そこにのりが着くと他の箇所に張り付いてしまって大変な事になるので、丁寧にカッターの刃を入れて切り取るようにします。また、カッターは常に手前にひくように動かし、紙の方をクルクルと回すようにします。カッターを横に動かすのはやめましょう。それと、紙の上に定規を置く時は紙をこすらないよう注意しましょう。印刷された場所がこすれてインクが削り取られてしまいます。

それから、紙には長く触らないように気をつけた方がいいです。インクがのっている場所に長く触れるとインクがにじみますし、のりを付ける時に紙を長く持っていると紙がたわみます。

最初、制作道具のひとつとして黒と茶色ペンも用意しました。白い紙の上に印刷された箇所にはインクがつきますが、もともと紙自体の色は白いわけですから、切断面は白くなります。紙の厚さ程度の切断面なんてたいしたことないように思えますし、具体的な数字でみても紙の厚さは0.21mm程度なのですが、これが思いのほか目立つのです。更に、貼り付けた面と面の間にはちょっとしたスキマが空いてしまうので、より白さが目立ちます。

白いね

この白い部分を黒ペンで塗るとごまかせるわけですね。それを何度か試してみたのですが、最終的には塗らないことにしました。というのも、プリンタでの印刷時のインクの色とペンの違いが気になるのと、紙にペンのインクをしみこませていると紙がふにゃっとした状態になってしまって、かえって見栄えが悪くなってしまうのです。それに、この白い面があったほうがなんだかペーパークラフトらしく思えるかなと。
それでも着色してみたい場合には、ペンでぐりぐりと塗るのではなく、紙にペンをあててインクを染みこませるとよいですヨ。

ここから先は雑談です。

今回のペーパークラフトでは実際のテーブル筐体の1/12で印刷してみました。六角大王SuperLEのモデリングデータ上で存在するパーツを全て印刷してみたみたところ、ペーパークラフトでは小さすぎて再現できない箇所がいくつかあります。特に半径1.5mmの球を作らなければならないレバーが無理でした。ボタンの方は薄い紙を貼り付けるだけで雰囲気が出るのですが、レバーの先端のボールはうまく再現出来ていません。小さく切った紙とのりをこねくり回してると、まるで紙粘土のようになってしまうのです。

1/12にした理由はFigmaの縮尺が1/12なので、テーブル筐体で遊んでいる様子を再現できるかなと思ったからです。ですが、これがまた大変でした。というのもFigmaは結構自由にポーズをとらせることができるのですが、綺麗なポーズで椅子に座らせるのが難しいのです。これはたぶん、Figmaで遊んだ人は誰もが経験した事だと思います。椅子に座らせるのが難しい理由は2つあります。一つ目は腿(足)を手前に出せないからです。例えばfigma 俺の妹がこんなに可愛いわけがない 高坂桐乃の場合、

足を手前に伸ばそうとするとスカートにひっかかってしまうのです。ミニスカートなFigmaだとスカートの端の部分が椅子に立つ感じで載せることが出来るようですが、テーブル筐体とセットで座らせるには腰と太ももとヒザが出来るだけ90度に近い角度で曲がって欲しいので、スカート系キャラは選択肢から除外しました。

そうなると、非スカートのFigmaの中から選ぶことになります。例えば、figma とある魔術の禁書目録II インデックスの場合、

スカート?法衣?の手前部分が布なので足を前に出せそうに思えるのですが、ここで第2の問題であるオシリ側のパーツで悩むことになります。これはどういうことかというと、オシリの部分のパーツがジャマをして椅子に座らせることが出来ないのです。固いスカートはもちろんですが、マントとかヒラヒラっとしたパーツが後ろ側にあるとダメなのですね。
こうなると選択肢はほとんどなく、理想的にはfigma うる星やつら ラム

なのですが、買うにはちょっと高めの市場価格になっていて、ペーパークラフトと組み合わせるには高すぎる買い物かなーと。

そんなわけで、お手頃価格なものを探して見つかったのがfigma 初音ミク Append ver.でした。

この日記を書いてる時点だと値段が高めですが、私が購入した時はもっと安かったです。ただ、このミクFigmaでも、足を90度の角度で椅子に座らせるには腰のパーツがジャマでした(後ろの長い髪は付け根から動かせるようになっています)。 また、テーブル筐体で遊ぶ時の基本姿勢は前傾なのですが、Figmaは足の付け根は動いても腰は動かないので前屈み姿勢をとらせることができないようです。

ルービックキューブ

今考えると、こういう

大きめのドール素体にすればペーパークラフトも大きくできたので、こっちにすればよかったのかな。
あと、もう少し、女性キャラではなくてゲーセンで遊んでいる高校生男子っぽいFigmaがあればあればなぁと思いましたが地味すぎて売れないかw

さて、実際にFigmaミクをゲーセン椅子に座らせられたかというと・・・失敗しました。ここまで考えたのが無駄になってしまった理由ですが、なんと、足が長すぎたのです・・・。モデル体型の人はテーブル筐体で遊べないの・・・?しょうが無いので撮影の角度とかで誤魔化しました、ぐぬぬ。

WITH_M ゲームやってる風

さて、六角大王SuperLEで作成したモデリングデータですが、ameroadで200円で販売してます。

ameroad / 六角大王Super用アーケードゲームテーブル筐体データ

他の形式に変換してMMDで使うとか、3Dプリンタで印刷してみるとかいいんじゃないでしょうか。六角大王SuperLEは6KT形式しか出力できないため、LEではない六角大王Super6 Win版を持っていないと他形式に出力変換出来ないのという制約があるので注意してください。
一応オマケでペーパークラフト用の画像データもいれてありますが、あくまでもオマケですので作り方のマニュアルはありません。完成写真から想像しながら楽しんで作ってみてください(大人の事情でゲーム画面部分とインストラクションカード部分は真っ白くなっています)。

※データの配布規定ですが、オリジナルのファイルを変更すること無く配布するのは遠慮してください。改変したデータであれば無償/有償に関係なく配布してもらって構いません。このモデリングデータはペパクラ目的ということもあって、細かいところは雑ですから、作り込んでもらえるとうれしいです。頂点データの位置をちょびっと動かしただけのデータでも無料配布してもいいの?という疑問が出てくると思いますが、そのへんは利用する方の良識の範囲内でお願いします。

このペーパークラフトはすごく細かい作業が必要な作りになっています。もっと作りやすいゲーム筐体のペーパークラフトをコミケやゲームレジェントなどのイベントで頒布/販売されてるサークルさんがいらっしゃいますので、そのうちテーブル筐体が出て来るかもしれませんから、機会があったら足を運んでみるのをオススメします。