典型的なC64ゲームの画面を正確に構成するものは何ですか?


10

私はBASICを超えたC64ゲーム開発の基本を理解しようとしています。非常に基本的ですが、重要な何かについていくつかのアドバイスを使用できます。実際に画面に表示されるものは何ですか、それをどのように描画するのですか?

カタキス/デナリスを見てみましょう:

Katakisスクリーンショット

画面には少なくとも9つの異なるものが表示されます。

  1. さまざまなフォントのスコアバー
  2. 船自体
  3. 船に取り付けられた衛星、取り外し可能
  4. 二次武器発射体
  5. 主な武器の発射体
  6. 移動するオブジェクト(敵の船になることもあります)
  7. ステータスバー。船の画像、命の数、3つのセクションを表示
  8. 主要な武器チャージバーは、最後まで満たすことができます
  9. バックグラウンドでスクロールするスターフィールド
  10. (画面には番号が付いていません)背景の一部である岩や金属壁などの固体オブジェクト

C64は水平走査線あたり8つのスプライトしかサポートしないので、画面の中央にあるすべてがスプライトになるとは思いませんか?(スプライトを使用してハードウェアの衝突検出を取得できるため)衝突が必要なものはすべてスプライトであると思いますが、それでも8つのスプライトの制限にすぐに達しました。また、私の武器は複数の発射体よりもはるかに多く発砲する可能性があります。私の船、衛星、および6つの弾丸は、すでに8つのスプライトが並んでいます(ビデオの約50秒を見てください)。

また、このようなゲームはどのグラフィックモードを使用しますか?プログラミングハンドブックには、基本的に画面メモリを直接変更するビットマップモードがリストされています。これは通常使用するモードですか?スプライト以外のすべての要素を一緒に構成して画面に表示するにはどうすればよいですか?

スコアとステータスバーの多くの項目は静的です( "Area:01"または "frame")。したがって、レベルが開始したときに一度だけ入力することになると思います。更新が必要なもの-スコア、下部の充電バー-は、画面のメモリを黒で埋め、フレームごとに新しいスコアを描画することによって更新されますか?

または、フレームごとに画面全体を描画する必要がありますか?

回答:


13

c64では、スプライトを「多重化」できます。それらが描かれた後、あなたはそれらを新しい場所に動かして、それらを再利用します。中央にあるほとんどのオブジェクトは、おそらく多重化されたスプライトです。c64では、同じ水平走査線を占有していない限り、8個以上のスプライトを使用するのは非常に簡単です。その上、必要に応じてフォントグラフィックスを使用して実際にソフトウェアスプライトを作成できます(この場合、少なくとも発射体)。

2、3、6。これらはスプライトである可能性があります。

4、5、9。これらは、文字グラフィック(8x8ピクセル)ソフトウェア「スプライト」である可能性が高い

ゲームはビットマップモードを使用せず、メモリの移動が多すぎます(VICチップのトリックを行わない限り...)。使用されるモードは、文字グラフィックモードです。

何を描く必要があるかによります。この場合、よく見ると、一定のサイズ(x * yピクセル)のパターンの星が繰り返されているため、基本的にこれらのフォントの文字メモリを更新して、スターフィールドのスクロールをエミュレートします。

開始時に入力するスコア/ステータス。必要に応じて更新します。

スプライトとその位置をフレームごとに更新する必要があります。発射物も更新します。また、そのx * yピクセルのスターフィールドパターンを更新します。


5
カタキスのビデオをより詳しく見ました。それらのオブジェクトの一部は、実際にはフォントグラフィックです。実際に使用している色を見ると分かります。また、スターフィールドは実際にはX * Yピクセルだけではありませんが、わずかに異なりますが、フォントグラフィックスにはあります。ハードウェアスクロールレジスタはグラフィックを8ピクセルしか移動しないため、ソフトウェアトリックの後で、スクロールフォントグラフィックを8ピクセルごとに更新する必要があります。また、ハードウェアスプライトの衝突を使用したくない場合もあります。2つ以上のスプライトが含まれている場合、実際に衝突するスプライトを区別することはできません。衝突では単純な数学だけが便利です。
ちょうど古いc64 geezer

2

先日、ドイツのC64 Magazineで記事を読みました。弾丸は誰かがすでに指摘したようにスプライトとして機能するキャラクターです。船と敵はスプライトです。

レベルもキャラクターで作られていますが、ひねりを加えています。レベルが非常に大きく、メモリが貴重であるため、Trenzは独自のツールセットを作成して、キャラクターをモジュールにグループ化しました。

したがって、彼はより大きなモジュールを使用して、それらを構成することができます。また、特定のパッチモジュールを使用して、モジュールの共通部分を適切にクリーンにします。

全体として、一種の圧縮であり、レベルは文字ごとではなくビルディングブロックとして記述されます。

また、カタキスでは、一部のレベルに視差の背景があることに気づいたかもしれません。

これは、背景を塗りつぶすパターンがあり、ほとんどが2x2または3x3の文字で構成され、スクロールの方向に対してそれをアニメーション化(ビットシフト)することによって作成されます。たとえば、レベルが2ピクセル左にスクロールし、背景パターンが1ピクセル右にスクロールされるため、遅いペースでスクロールされているように見えます。

それが役に立てば幸い

単一のモジュールなどを実際に見ることができるもう1つのことhttps://archive.org/details/64er_1989_10/page/n27 24ページまでスクロール

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.