AtariVCSでも背景が綺麗なゲームがあるがどうやってるのか。
例えば、
AVGN : ATARI スポーツ (EP109)
http://www.nicovideo.jp/watch/sm19666515
で紹介されている3Dのフットボールゲームとかヌルヌル動くし。
背景が左右対称のものが多いが、そうでないものもあったり。
そのあたり情報を探してみた。
======================================================
Atari VCS (1) ― その誇り高き血統:Runner's High!:So-netブログ
http://loderun.blog.so-net.ne.jp/AtariVCS_01
プレイフィールドと呼ばれる背景画面と、5枚のオブジェクトを表示することができる。前者はいわゆるBG面、後者はスプライトと理解していただければ話が早い。5枚のオブジェクトは、1枚のボール・オブジェクト、2枚のミサイル・オブジェクト、2枚のプレイヤー・オブジェクトで構成されている。
2600 Cookbook
http://alienbill.com/2600/cookbook/
Asymmetrical Playfield Graphics
背景面横40ドットはPF0,PF1,PF2レジスタ(の20bit)で左の20ドットを指定し、右側20ドットは左側の複製または対称となる。但しスキャンラインの途中でレジスタの値を変えることで、左右対称じゃないグラフィックも出来る。
Atari VCS game console
http://oldcomputers.net/atari-vcs.html
AtariAge - Atari 2600 Programming
http://atariage.com/2600/programming/index.html
プログラマ向けのドキュメント
- 画面は単色の背景、プレイグランド(左20ドット、右20ドット)、ムーバブルオブジェクト(ミサイル×2、ボール、プレイヤー×2)で出来ている。
- グラフィックコントローラは各オブジェクトの水平位置しか覚えていない。TVの水平スキャンのとき、それぞれのオブジェクトが有効かどうかに応じて、(かつ優先度に応じて)描画する。
- 水平方向の描画はオブジェクトにより異なる仕様を持っている。基本的にはリセット(RES)レジスタへの書き込みで特定の位置(現在のスキャンの位置)に設定し、HMOVEレジスタで+7〜ー8だけずらす。(X座標を直接指定できない!)
- 垂直位置は、ラインスキャンに合わせて各オブジェクトをプログラムで有効・無効にすることで実現する。例えばボールを Y座標96で高さ2(ライン)に描きたいのならば、95ラインまでボールオブジェクトを無効にし、96ラインと97ラインの間だけ有効にして、再び無効にする。
- CPUの1クロックは水平3ドットの時間に相当する。普通は2、3ライン置きにしか画面を更新できないようだ。同期のため水平ブランクを待つ命令がある。