2017-01-28 Sat [ 昔のこと::古の技術 ]
8ビット時代の圧縮の話をブログに書いたところ、いろんな人が「俺も使っていた」とlzssについてゲロっているのを読んで笑ってしまったのだけど、ちょっとここで、つぶやかれていた質問「どうしてファミコン時代には圧縮がほとんど行われていなかったのか?」について書いておきたい。
続きを読む▽
続きを読む▽
2017-01-14 Sat [ 昔のこと::古の技術 ]
1988年に初めてプロとしてハドソンでゲームを作れることになったとき、ハドソンではゲームを作るときデータ圧縮をするのが当たり前だった。
テキスト、グラフィック、マップ…ともかく圧縮できるものは全て圧縮するのが当たり前だった。
で「ウチは圧縮するのが当たり前になっているから、他よりゲーム規模が大きく出来てお得感があると思うんだよね」と(少々自慢気に)飛田さんが話していた。
確かにファミコン最初期の『ロードランナー』からして、普通に作ったのでは絶対に入らないはず(APPLEIIのディスク前提のゲーム、つまり128KBあるはずのものを16KBに移植している)なので、入れるためにはデータ圧縮になるよなあと思う。
だから、そこらへんの移植の経験から圧縮するようになったのだろうと想像していたのだけど、どうしてコレを始めたのかについての本当の理由がわからなくて、facebookでそこらへんを始めた頭目っぽい飛田さんと野沢さんに聞いたトコロ、答えがわかったので、メモ書き代わりに残しておく。
まず、技術的な話から始めると、当時ハドソンで使われていた圧縮の系列は2つあった。
一つがテキストの圧縮に使われていたhuffman。もうひとつがlzss。
huffmanは出現頻度に応じて長さの違うビットコードを割り当てることで圧縮する方法で、lzssはいわゆるスライド辞書法だ。
では、この二つをどうして使うようになったのか?
続きを読む▽
テキスト、グラフィック、マップ…ともかく圧縮できるものは全て圧縮するのが当たり前だった。
で「ウチは圧縮するのが当たり前になっているから、他よりゲーム規模が大きく出来てお得感があると思うんだよね」と(少々自慢気に)飛田さんが話していた。
確かにファミコン最初期の『ロードランナー』からして、普通に作ったのでは絶対に入らないはず(APPLEIIのディスク前提のゲーム、つまり128KBあるはずのものを16KBに移植している)なので、入れるためにはデータ圧縮になるよなあと思う。
だから、そこらへんの移植の経験から圧縮するようになったのだろうと想像していたのだけど、どうしてコレを始めたのかについての本当の理由がわからなくて、facebookでそこらへんを始めた頭目っぽい飛田さんと野沢さんに聞いたトコロ、答えがわかったので、メモ書き代わりに残しておく。
まず、技術的な話から始めると、当時ハドソンで使われていた圧縮の系列は2つあった。
一つがテキストの圧縮に使われていたhuffman。もうひとつがlzss。
huffmanは出現頻度に応じて長さの違うビットコードを割り当てることで圧縮する方法で、lzssはいわゆるスライド辞書法だ。
では、この二つをどうして使うようになったのか?
続きを読む▽
2016-12-03 Sat [ 昔のこと::古の技術 ]
なんと信じがたいことに「スプライトローテーション」の第3回だ。
■スプライトローテーション(1)
■スプライトローテーション(2)
スプライトローテーションがどんな技術で、どのようにして使われていたのかについては上の二つを参考にしていただきたい。
どうしてこんなことを書くハメになったのかというと、答えはとても簡単で「スターソルジャー」の第5回を書こうとしたら、一個書いていないスプライトローテーションの技術があり、それを野沢さんが使っていることがわかったので、しょうがない、という話なのである。
というわけで本文。
続きを読む▽
■スプライトローテーション(1)
■スプライトローテーション(2)
スプライトローテーションがどんな技術で、どのようにして使われていたのかについては上の二つを参考にしていただきたい。
どうしてこんなことを書くハメになったのかというと、答えはとても簡単で「スターソルジャー」の第5回を書こうとしたら、一個書いていないスプライトローテーションの技術があり、それを野沢さんが使っていることがわかったので、しょうがない、という話なのである。
というわけで本文。
続きを読む▽
2015-10-12 Mon [ 昔のこと::古の技術 ]
正しい呼び方があったわけでもないけれど、少なくとも僕はスプライトローテーションと呼んでいた技術について、ちょっと残しておこうというネタ。パート2である。多分これで終わりになる。
前回のを読んでおられない方は前回 の記事を読んでいただきたい。読まないと全くわからない話である。
前回の仮想ゲームマシン、ダメダメファミリーコンピュータ、略してダメコンが改良されてスーパーダメコンというのが登場したとしよう。
このスーパーダメコンは、なんとスプライトが5つ出せるようになった! …ということにしておく。
ところが、スプライトは一個増えたが、3つ以上が同じラインに並ぶとバッファ上の一番最後のスプライトが消えるのは変わらない…という状況だとしよう。
つまり表示能力は20%増しだが、スプライトの消える度合いは変わらないという、ダメなハードである。
で、この仮想ハードでは、前回のスプライトローテーションはマズいので、一工夫したほうが良くて、当時はそういう工夫を場合によってはソフト毎にやっていたのだ…というのが、今回の話になる。
続きを読む▽
前回のを読んでおられない方は前回 の記事を読んでいただきたい。読まないと全くわからない話である。
ちなみにスプライトローテーションという言葉は、当時、ハドソンのエースプログラマの一人だった和泉さんが作った言葉ではないかという話を読者の方からいただいた。
前回の仮想ゲームマシン、ダメダメファミリーコンピュータ、略してダメコンが改良されてスーパーダメコンというのが登場したとしよう。
このスーパーダメコンは、なんとスプライトが5つ出せるようになった! …ということにしておく。
ところが、スプライトは一個増えたが、3つ以上が同じラインに並ぶとバッファ上の一番最後のスプライトが消えるのは変わらない…という状況だとしよう。
つまり表示能力は20%増しだが、スプライトの消える度合いは変わらないという、ダメなハードである。
で、この仮想ハードでは、前回のスプライトローテーションはマズいので、一工夫したほうが良くて、当時はそういう工夫を場合によってはソフト毎にやっていたのだ…というのが、今回の話になる。
続きを読む▽
2015-10-04 Sun [ 昔のこと::古の技術 ]
正しい呼び方があったわけでもないけれど、少なくとも僕はスプライトローテーションと呼んでいた技術について、ちょっと残しておこうというのが、今回のネタ。
おっそろしく古臭いハードの、おっそろしく古臭い技術で、残しておいたから「どうだ」ということでも全くないが、まあ後世のエミュレータを調べた人たちが「なんでこんなワケのわからんことをしていたんだ?」という疑問からは脱出することが出来るだろう。
めんどくさいので、以下の簡単な前提。
スプライトは、1980年代前半~1990年代半ばまでゲームで幅広く中心的に使われたグラフィックのハードウェア(および一部ソフトウェア)技術。
だいたい8x8~64x64ドットの矩形で、画面の座標を指定したら、速攻その場所に異動して、背景画面を壊さなくて、書き換え負荷がない神様みたいなモノ。透明色があったので、背景との重ね合わせも超カンタンである。ちなみにスプライトの指定座標は画面より大きいことが多く、画面外から出し入れするのも難しくなかった。
初期段階からスプライト単位での上下・左右反転ぐらいは出来て、後期は回転・拡大・縮小が出来るのも当たり前になったのだけど、回転・拡大・縮小が出来るようになったのは、アーケードでも80年代後半~90年代で、家庭用ゲームマシンではPS/サターン世代までは実質的に登場しなかった。
ファミコンだのPCエンジンだのメガドラだのSFCあたりの世代のマシンでは、敵だの弾だのマイキャラだのといった画面の上で自由に動くものにともかく使われていた。
ついでに書くと3DO・PS1・サターン世代はフレームバッファ形式なので、今回書くラインバッファ方式のスプライトとは全く制限が違う。
続きを読む▽
おっそろしく古臭いハードの、おっそろしく古臭い技術で、残しておいたから「どうだ」ということでも全くないが、まあ後世のエミュレータを調べた人たちが「なんでこんなワケのわからんことをしていたんだ?」という疑問からは脱出することが出来るだろう。
めんどくさいので、以下の簡単な前提。
スプライトは、1980年代前半~1990年代半ばまでゲームで幅広く中心的に使われたグラフィックのハードウェア(および一部ソフトウェア)技術。
だいたい8x8~64x64ドットの矩形で、画面の座標を指定したら、速攻その場所に異動して、背景画面を壊さなくて、書き換え負荷がない神様みたいなモノ。透明色があったので、背景との重ね合わせも超カンタンである。ちなみにスプライトの指定座標は画面より大きいことが多く、画面外から出し入れするのも難しくなかった。
初期段階からスプライト単位での上下・左右反転ぐらいは出来て、後期は回転・拡大・縮小が出来るのも当たり前になったのだけど、回転・拡大・縮小が出来るようになったのは、アーケードでも80年代後半~90年代で、家庭用ゲームマシンではPS/サターン世代までは実質的に登場しなかった。
ファミコンだのPCエンジンだのメガドラだのSFCあたりの世代のマシンでは、敵だの弾だのマイキャラだのといった画面の上で自由に動くものにともかく使われていた。
ついでに書くと3DO・PS1・サターン世代はフレームバッファ形式なので、今回書くラインバッファ方式のスプライトとは全く制限が違う。
余談ついでに書くとセガのバーチャファイター1とかサターンあたりのハードやFM-TOWNSあたりのポリゴンともスプライトとも言えない過渡期のハードでは、変形可能な(雑には4点が指定され、矩形の必要がないということ)4頂点 指定のスプライト(四角ポリゴン)だったりする。三角形と比較して、扱いやすいところと扱いにくいところがあるのだけど、全体としてはメリットよりデメリットのほうが大きいので主流にならなかった。
(三角形は2枚を組み合わせると四角に出来るが四角形を三角にすることが出来ないとか、四角形だとねじれる問題が発生するなんてあたりが結構決定的な要因のひとつ)
(三角形は2枚を組み合わせると四角に出来るが四角形を三角にすることが出来ないとか、四角形だとねじれる問題が発生するなんてあたりが結構決定的な要因のひとつ)
続きを読む▽