English
FAQSGLプログラミング関連
戻る進む
FAQ/SGLプログラミング関連

スクロール



回転係数テーブルを作成したい。

Q)
回転BG用の係数テーブルを作成したいのですが...
slMakeKtableを使うとどの様になるのか教えてください。

A)
SGLの係数テーブルは、スプライトと合わせるためにスクロールの 逆数テーブルを持っています。回転マトリクスと連携しており、 SGLでは係数テーブルのアドレス位置を渡しています。
そのため、係数テーブルをユーザで作成するとSGLの3D回転の処理が保証 できません。
通常使用する係数テーブルはSBLで使用しているやり方をご参考にして いただくのがよいでしょう。


RGB0をビットマップで使用したい。

Q)
RBG0をビットマップで使用する関数の使用方法を教えてください。

A)
slBitMapRbg0関数を使用することで可能です。

【宣言】
void slMitMapRbg0( Uint16 type, Uint16 size, void *addr )
type:色数のタイプ(16色、256色、2048色、32768色)
size:ビットマップ画面のサイズ
512x256、512x512、1024x256、1024x512
addr:VRAMのアドレス。0x20000バウンダリ

RBG係数をカラーRAMにおきたい。

Q)
RBG係数を Color RAM に置く設定を教えてください。

A)
slKtbleRA関数,slKtableRB関数でカラーRAMのアドレス(0x25F00000)を 指定する事で可能です。


VDP2の画像エフェクト機能ってSGLでどこまで使えるの?

Q)
SGLでの画面の特殊効果には、モザイクやラインスクロール、カラー演算などが ありますが、それ以外に(現在の所、公開されていない)画面の特殊効果の為の 関数は存在するのでしょうか?

もし存在すれば教えてください。

A)
スクロールに関しては、ハードウェアでできる内容についてはすべて関数を 用意しています。ハードウェアにない特殊機能の関数は存在しません。
スクロールの特殊機能の関数については、SGLのdocディレクトリ内にある、 scroll.txtをごらんください。


回転面のラインカラーを使いたい。

Q)
3Dスクロール面とラインカラーを組み合わせて奥の方程、暗くしたいのですが。

A)
アーカイブの中にあるサンプルプログラムを参考にしてください。


slMap16RAが動かない。

Q)
sl16MapRA() が正しく動作しない。

A)
sl16MapRA関数に渡すページナンバーのテーブルが、実際のVRAMと合致していない ために正しく動作していない場合が多いようです。

sl16MapRA関数, sl16MapRB関数ではテーブルに入っているページナンバーが VRAMの先頭から数えた通し番号になっているものとして、テーブルの0番目の 要素を0x800倍し、アドレスとして登録します。

例えば、

#define    RBG0_CEL_ADR    (VDP2_VRAM_A0)
#define    RBG0_MAP_ADR    (VDP2_VRAM_B0)
#define    RBG0_COL_ADR    (VDP2_COLRAM)
#define    RBG0_KTB_ADR    (VDP2_VRAM_A1)
#define    RBG0_PRA_ADR    (VDP2_VRAM_A1+ 0x1fe00)

という例のように、VRAMのB0バンクにパターンネームがある場合、 テーブルには128,132,136...といった値が設定されなければなりません。
(0,4,8...というデータをセットするケースが多いようです)

#define    MAPOFFSET  (RBG0_MAP_ADR-VDP_VRAM_A0)/0x800
#define    DD    4+MAPOFFSET
Uint8    map[16] = {
    0*DD, 1*DD, 2*DD, 3*DD,
    4*DD, 5*DD, 6*DD, 7*DD,
    8*DD, 9*DD,10*DD,11*DD,
   12*DD,13*DD,14*DD,15*DD,
};
#undef    DD
sl16MapRA(map);


回転面用にASCIIデータが用意されているようなのですが。

Q)
SGLのサンプル8-11では、回転面にアスキー文字を表示しているようなのですが プログラムを見る限りではそのような記述は見受けられません。
いったいどこでASCIIキャラクタをVRAMにセットしているのでしょうか?

A)
これは、マニュアルに記述されてはいませんがslInitSystemを実行時に、 マニュアルにある、0x25e60000の他に0x25e00000にもASCIIデータを 転送しています。
SGLのサンプルはこのCGデータを使用しています。


回転スクロールで256色512×512の表示をすると縦256分しか表示できない。

Q)
回転スクロールで256色512×512の表示をすると縦256分しか表示できない。

A)
256色の場合、VRAM-AまたはVRAM-Bをすべて使用することになります。
一番考えられる原因としては、VRAM-Aが分割モードのままになっており、 VRAM-A0のみRBG0のキャラクタパターンのみアクセスしており、VRAM-A1を アクセスしていないことが考えられます。

この場合、一番簡単な方法として、slVRAMMode関数(ドキュメント参考の事) で引数にDiv_B(VRAM-Bのみ分割)またはNULLを定すれば表示できると 思われます。


戻る進む
FAQSGLプログラミング関連
Copyright SEGA ENTERPRISES, LTD,. 1997