CALENDAR
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31     
<<  2017 - 01  >>

PROFILE
同人誌 電子書籍版
さよならハドソン


ドラクエとFFと
ToHeart


誰得ゲームライフ


ときめきメモリアル
の時代

イースI・II製作メモ

頒布ページ
頒布中
LINKS
NEW ENTRIES
CATEGORIES
COMMENTS
    スターソルジャー30周年記念(5)/終
  • いわさき (01/04)
TRACBACKS
OTHERS
SEARCH BOX
POWERED BY
POWERED BY
ぶろぐん
DESIGN BY
ブログンサポート

PCエンジン時代の圧縮技術
1988年に初めてプロとしてハドソンでゲームを作れることになったとき、ハドソンではゲームを作るときデータ圧縮をするのが当たり前だった。
テキスト、グラフィック、マップ…ともかく圧縮できるものは全て圧縮するのが当たり前だった。

「ウチは圧縮するのが当たり前になっているから、他よりゲーム規模が大きく出来てお得感があると思うんだよね」と(少々自慢気に)飛田さんが話していた。
確かにファミコン最初期の『ロードランナー』からして、普通に作ったのでは絶対に入らないはず(APPLEIIのディスク前提のゲーム、つまり128KBあるはずのものを16KBに移植している)なので、入れるためにはデータ圧縮になるよなあと思う。
だから、そこらへんの移植の経験から圧縮するようになったのだろうと想像していたのだけど、どうしてコレを始めたのかについての本当の理由がわからなくて、facebookでそこらへんを始めた頭目っぽい飛田さんと野沢さんに聞いたトコロ、答えがわかったので、メモ書き代わりに残しておく。

まず、技術的な話から始めると、当時ハドソンで使われていた圧縮の系列は2つあった。
一つがテキストの圧縮に使われていたhuffman。もうひとつがlzss
huffmanは出現頻度に応じて長さの違うビットコードを割り当てることで圧縮する方法で、lzssはいわゆるスライド辞書法だ。

では、この二つをどうして使うようになったのか?

続きを読む▽
|| 19:17 | comments (0) | trackback (0) | ||

このエントリーをはてなブックマークに追加
スプライトローテーション・その3
なんと信じがたいことに「スプライトローテーション」の第3回だ。

スプライトローテーション(1)
スプライトローテーション(2)

スプライトローテーションがどんな技術で、どのようにして使われていたのかについては上の二つを参考にしていただきたい。
どうしてこんなことを書くハメになったのかというと、答えはとても簡単で「スターソルジャー」の第5回を書こうとしたら、一個書いていないスプライトローテーションの技術があり、それを野沢さんが使っていることがわかったので、しょうがない、という話なのである。

というわけで本文。



続きを読む▽
|| 16:43 | comments (0) | trackback (0) | ||

このエントリーをはてなブックマークに追加
スプライトローテーション・その2
正しい呼び方があったわけでもないけれど、少なくとも僕はスプライトローテーションと呼んでいた技術について、ちょっと残しておこうというネタ。パート2である。多分これで終わりになる。
前回のを読んでおられない方は前回 の記事を読んでいただきたい。読まないと全くわからない話である。

ちなみにスプライトローテーションという言葉は、当時、ハドソンのエースプログラマの一人だった和泉さんが作った言葉ではないかという話を読者の方からいただいた。

前回の仮想ゲームマシン、ダメダメファミリーコンピュータ、略してダメコンが改良されてスーパーダメコンというのが登場したとしよう。
このスーパーダメコンは、なんとスプライトが5つ出せるようになった! …ということにしておく。
ところが、スプライトは一個増えたが、3つ以上が同じラインに並ぶとバッファ上の一番最後のスプライトが消えるのは変わらない…という状況だとしよう。
つまり表示能力は20%増しだが、スプライトの消える度合いは変わらないという、ダメなハードである。

で、この仮想ハードでは、前回のスプライトローテーションはマズいので、一工夫したほうが良くて、当時はそういう工夫を場合によってはソフト毎にやっていたのだ…というのが、今回の話になる。

続きを読む▽
|| 19:12 | comments (1) | trackback (0) | ||

このエントリーをはてなブックマークに追加
スプライトローテーションという技術
正しい呼び方があったわけでもないけれど、少なくとも僕はスプライトローテーションと呼んでいた技術について、ちょっと残しておこうというのが、今回のネタ。
おっそろしく古臭いハードの、おっそろしく古臭い技術で、残しておいたから「どうだ」ということでも全くないが、まあ後世のエミュレータを調べた人たちが「なんでこんなワケのわからんことをしていたんだ?」という疑問からは脱出することが出来るだろう。

めんどくさいので、以下の簡単な前提。
スプライトは、1980年代前半~1990年代半ばまでゲームで幅広く中心的に使われたグラフィックのハードウェア(および一部ソフトウェア)技術。
だいたい8x8~64x64ドットの矩形で、画面の座標を指定したら、速攻その場所に異動して、背景画面を壊さなくて、書き換え負荷がない神様みたいなモノ。透明色があったので、背景との重ね合わせも超カンタンである。ちなみにスプライトの指定座標は画面より大きいことが多く、画面外から出し入れするのも難しくなかった。
初期段階からスプライト単位での上下・左右反転ぐらいは出来て、後期は回転・拡大・縮小が出来るのも当たり前になったのだけど、回転・拡大・縮小が出来るようになったのは、アーケードでも80年代後半~90年代で、家庭用ゲームマシンではPS/サターン世代までは実質的に登場しなかった。
ファミコンだのPCエンジンだのメガドラだのSFCあたりの世代のマシンでは、敵だの弾だのマイキャラだのといった画面の上で自由に動くものにともかく使われていた。
ついでに書くと3DO・PS1・サターン世代はフレームバッファ形式なので、今回書くラインバッファ方式のスプライトとは全く制限が違う。

余談ついでに書くとセガのバーチャファイター1とかサターンあたりのハードやFM-TOWNSあたりのポリゴンともスプライトとも言えない過渡期のハードでは、変形可能な(雑には4点が指定され、矩形の必要がないということ)4頂点 指定のスプライト(四角ポリゴン)だったりする。三角形と比較して、扱いやすいところと扱いにくいところがあるのだけど、全体としてはメリットよりデメリットのほうが大きいので主流にならなかった。
(三角形は2枚を組み合わせると四角に出来るが四角形を三角にすることが出来ないとか、四角形だとねじれる問題が発生するなんてあたりが結構決定的な要因のひとつ)


続きを読む▽
|| 01:56 | comments (6) | trackback (0) | ||

このエントリーをはてなブックマークに追加
続・PCエンジン版R-TYPEの話
遥か遠い昔、PCエンジン版R-TYPEのコトという記事を書いたのだけど、最近、これについてTwitterで聞かれて「どうしてオーバークロックになるのか?」という説明がうまく出来なくて、ずっと考えていたのだけど、どうしてこれがオーバークロックになるのか、うまい(と思う)説明を思いついたので、説明してみたい。

まず縦1ドット、横Nドットの紐のように細い横長の画面があると考えて欲しい。
当時のゲームマシンは今のように複数画面分のフレームバッファを持たず(持てるわけもないメモリ事情だった)、この1ドットの横長の線を水平帰線期間毎に、1ドットずつ下に下りながら、だいたい250回ほど描くことで画面を作っていた。
この1ドットの線をラインバッファと呼ぶ。ここで1本のラインバッファを作るのではなく、スプライト用のラインバッファバックグラウンド(背景画面)用のラインバッファがあり、この2つを水平帰線期間毎に描画して、合成して画面を作っている…と想像して欲しい(この説明は正確には違うのは百も承知だ)。

ブラウン管テレビの原理や垂直帰線期間・水平帰線期間といったコトについての説明は勘弁していただきたい。
ココとかココとか、なんか比較的わかりやすいと思う。


そしてPCエンジンが横256ドットモードで動いているとする。
バックグラウンド(背景画面)のラインバッファは当たり前だけど256ドット。
次にスプライトはというとPCエンジンのスプライトは最大横が32ドットになるので、32ドット*16個が最大になり、512ドット分ということになる。
つまりPCエンジンの256ドットモードでは、256+512=768で、水平帰線期間毎ごとに最大768ドット分の絵を描くことになる。

では、これが320ドットモードになるとどうなるのか?
バックグラウンドが320ドットになるので320+512=832ドット。
832ドット分の絵を描くことになり、256ドットモードより、64ドット増えることになる。
ところが水平帰線期間は一定の長さで変わらない。
だから追加の64ドット分を描くために、832/768=1.08で、8%ほど速いスピードで描画することが要求される。すなわち8%ほど速いスピードでVRAMやイロイロなところにアクセスすることになる。
そして、8%ほどいろんなところに速くアクセスする(可能性がある)のは、当時使われていたRAMの保証の範囲を超えていた。
だからNECに「使っちゃダメ!」と、怒られたわけだ。

ここでスプライトの幅が32ドット最大だったことを思い出して欲しい。増えた64ドットはスプライト2つ分。なので横に並ぶスプライトの数を最大14個に設定すると…768ドット分の描画になり、256ドットモードと同じ描画量で済むことになる。

かくして、PCエンジンの320ドットモードではスプライトは14個しか並ばなかったわけである。

|| 18:59 | comments (0) | trackback (0) | ||

このエントリーをはてなブックマークに追加