Atari VCS

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ライン置きにしか画面を更新できないようだ。同期のため水平ブランクを待つ命令がある。