English
SGL User's ManualPROGRAMMER'S TUTORIAL
戻る進む

8-5. メモリ中へのスクロールデータ格納

 ここでは、スクロールデータの種類と、スクロールデータをそれぞれのメモリ中へ格納する方法を解説していきます。

 スクロールデータ種

 SGLではスクロールに関するデータを、有する情報の違いにより、大きく次の3つに区分しています。

1)キャラクタパターンデータ:キャラクタパターンのドット単位での情報
(本文中、CGとして略表記されることがあります)

2)パターンネームデータ  :キャラクタパターンの識別及び配置に関わる情報
(本文中、PNとして略表記されることがあります)

3)カラーパレットデータ  :カラーパレット使用時のカラーデータ

 これを“ 8-2 項: スクロールの構成単位”で説明したスクロール画面構成単位でいうと、

1)はキャラクタパターンまでのドット単位での情報
2)はページ以降のキャラクタパターンの配置情報

 ということになります。1)および2)のデータはメモリー中、VRAMと呼ばれるメモリ領域に格納し、アクセスすることで、実際の描画に用いられます。

 3)は、スクロールに使用するパレット形式のカラー情報です。
パレット形式とは、16色、256色、2048色(設定によっては1024色)のいずれかの色数を1パレットとしてキャラクタパターン単位で使用するカラー設定方式です。
カラーパレットは、

個々のカラーのRGBデータ :カラーRAMに格納される
パレット内でのカラー識別番号:キャラクタパターン中で使用される
パレット単位での識別番号  :パターンネームデータ中で使用される

 の3つのデータで構成されます。
カラーパレットデータはメモリ中、カラーRAMと呼ばれるメモリ領域に格納され、アクセスすることで、実際の描画に用いられます。

 VRAMへのスクロールデータ格納

 VRAMとは、スクロールなどのグラフィックデータを格納するためのデータ領域の総称です。SGLでは、VRAMは4つに分割して使用されます。領域はそれぞれ、VRAM-A0,A1,B0,B1と呼ばれ、スクロールに関する各種データはバンクと呼ばれるこの4つのデー タ領域に格納されます。セガサターンのVRAM容量は4Mビットなので、各バンク単位でのVRAM容量は1Mビットになります。
この4つのデータ領域にアクセスしスクロールデータを読み込むことで、実際の描画が行われます。下図は、VRAMのアドレスを示したものです。

図8-5 VRAMアドレスマップ

 SGLでは、この4つのVRAMバンクにスクロール情報を格納し、必要に応じて呼び出すことで実際に画面にスクロール面を描画します。
サンプルプログラムでは、このデータ格納作業を“Cel2VRAM”、“Map2VRAM”という2つの関数(プログラム中で登録)でおこなっています。
この関数は、ライブラリ関数としてサポートしているものではありませんので、あくまで参考としてください。

【void Cel2VRAM ( cel_adr , VRAM_adr , chara_size ) ;】
VRAMにキャラクタパターンデータを格納します。
パラメータには、現在キャラクタパターンが格納されているメモリの先頭アドレス、キャラクタパターンデータを格納するVRAMの先頭アドレス、キャラクタ・パターン数を代入してください。

【void Map2VRAM ( pat_adr , VRAM_adr , mapY , mapX , pal_off , map_off) ;】
VRAMにパターンネームデータを格納します。
パラメータには、現在パターンネームテーブルが格納されているメモリの先頭アドレス、パターンネームデータを格納するVRAMの先頭アドレス、マップの縦横サイズをセル単位で、次に使用するカラーパレットのオフセット値、 最後にマップデータのオフセット値を代入してください。

 VRAMへのデータ格納に関する注意事項1

 前述したVRAMバンク中へのスクロールデータの格納には、ハードウェアの性能上の問題から、幾つかの制限が存在します。
制限の詳細はここでは述べませんが、最低、次の2つの条件を守るようにしてください。

1)スクロール種によるVRAMバンクの使用優先順位
ノーマルスクロール画面と回転スクロール画面のスクロールデータを、同じVRAMバンクに格納しないでください。

2)パターンネームデータのVRAMバンク格納制限
全てのパターンネームデータはVRAMバンク中の、VRAM_A0,B0のいずれか一方と、VRAM_A1,B1のいずれか一方の、最大2バンクにしか格納できません。

図8-6 パターンネームデータのVRAMバンク格納制限

 これら2つの条件が守られない場合、スクロールの描画は以下の影響を受けます。

1)が守られない場合
VRAMバンクの使用優先順位から、ノーマルスクロール画面データは無視され、回転スクロール画面データのみ有効となります。

2)が守られない場合
VRAMバンク名称末尾の数字が同じVRAMバンクにパターンネームデータが格納された場合、スクロールは正しく描画されないか、全く描画されなくなります。

 PN格納の制限について

 PN 格納制限の詳細は“HARDWARE MANUAL vol.2:VDP2ユーザーズマニュアル”を参照してください。

 VRAMへのデータ格納に関する注意事項2

 これから解説するデータ格納に関する注意事項は、SGLの初期設定に関するものです。

 SGLはデフォルト状態で、ASCIIセルと呼ばれる文字数値表示用のスクロールデータ(カラーデータを含む)をすでにメモリ中に格納しています。
このため、デフォルト状態で格納されているASCIIスクロールデータに他のスクロールデータを上書きすると、SGLでサポートしている文字数値表示関数群が正しく使用できなくなります。

 ASCIIスクロールは、128セル・256色で構成され、ノーマルスクロール画面“NBG0”を使用しています。

 ASCIIスクロールデータは、次のようにRAM領域中に格納されています。

図8-7 ASCIIスクロールデータの格納領域

キャラクタデータ:0x25e60000番地から2000H
マップデータ  :0x25e76000番地から1000H
パレットデータ :0x25f00000番地から20H

 ASCIIスクロールを使用する場合は、スクロールデータ格納時にオフセット指定するようにし、上記領域にスクロールデータを書き込まないようにしてください。

 カラーRAM

 カラーRAMは、パレット形式のスプライト及びスクロール画面のすべてのカラー制御に使用されます。カラーデータは、カラーRAMモードによって、RGB各色それぞれ5ビットまたは8ビットで構成されます。カラーRAMモードには、次表の3つがあります。

表8-4 カラーRAMモード

カラーモードカラービットデータサイズ色 数
モード0RGB各5ビットの計15ビット1ワード32768色中1024色
モード1RGB各5ビットの計15ビット1ワード32768色中1024色
モード2RGB各8ビットの計24ビット2ワード1677万色中1024色

注)
 モード0は、カラーRAMを2分割し、前半にデータを書き込むことで、後半部分にも同じデータが自動的に書き込まれます。

 カラーRAMモードは、実際のカラーRAM中、次のようなイメージで表現されます。

図8-8 カラーRAMアドレスマップ

 カラーRAMモードは、それぞれ次のような場合に選択し、使用されます。

カラーRAMモード0:拡張カラー演算機能を使用する際に用います。
カラーRAMモード1:32768色中から2048色を使用したいときに用います。
カラーRAMモード2:1677万色中から2048色を使用したいときに用います。

 カラーRAMモード0は、図8-8からも分かるとおり、カラーRAM領域を2つのバンクに分割し、それぞれに同じカラーデータを格納します。このため、カラーRAMモード1に比べて使用できる色数は半分になりますが、代わりに拡張カラー演算機能が使用できる ようになります。
ただし今回のSGLライブラリ関数では拡張カラー演算モードはサポートしていません。

注意
 拡張カラー演算モードを使用したい時は“HARDWARE MANUAL vol.2”を参照してください。

 モード1とモード2の差異は、使用できる色数の違いです。
モード1は32768色中から2048色、モード2は1677万色中から1024色使用可能です。
このため、モード1はモード2に比べより多くの色数を使用可能ですが、カラーデータを構成するデータ長がモード2に比べて短いために、 選択できる色の段階がモード2に比べ大雑把になります。
逆にモード2は、一度に使用できる最大色数はモード1の半分ですが、カラーデータを構成するデータ長がモード1に比べ長いため、より深いグラデーションの使用が可能になります。

 カラーRAMモードを設定するにはライブラリ関数“slColRAMMode”を使用します。

【void slColRAMMode ( Uint16 mode ) ;】
カラーRAMモードを決定します。
パラメータには、カラーRAMモードに対応した下表の#define値を代入します。

表8-5 “slColRAMMode”パラメータ代入値
カラーRAMモード
モード0モード1モード2
 代 入 値 CRM16_1024CRM16_2048CRM_1024

注)
 カラーRAMモード1選択時のみ2048色使用可能

 カラーRAMの初期設定

 システム初期化時のカラーRAMは、モード1にセットされています。

 カラーRAMへのデータ格納

 SGLでは、カラーRAMにカラー情報(カラーパレット情報)を格納し、必要に応じて呼び出すことでスクロール画面の描画を実現します。
<サンプルプログラムでは、このカラーデータ格納作業を“Pal2CRAM”という関数(プログラム中で登録)で行っています。これは、ライブラリ関数としてサポートしているものではありませんので、あくまで参考としてください。

【void Pal2CRAM ( col_adr , CRAM_adr , col_no. ) ;】
 カラーRAMに、カラー情報(カラーパレット情報)を格納します。
パラメータにはそれぞれ、登録するカラーパレットが現在格納されるメモリ中の先頭アドレス、格納先であるカラーRAMの先頭アドレス、カラーパレットサイズを代入してください。


戻る進む
SGL User's ManualPROGRAMMER'S TUTORIAL
Copyright SEGA ENTERPRISES, LTD., 1997