#include "sgl.h" Uint16 type; void slVRAMMode( type );
Uint16 type - VRAMの分割方法(後述)。
void - 何も返しません。
VRAMの分割方法を設定します。
typeには、 Div_A、Div_B を分割するものだけ指定します。
分割をやめたい場合にはNULLを指定します。
VDP2のVRAMの内、VRAM Bのみを分割する(Aは分割しない)。
slVRAMMode( Div_B);
#include "sgl.h" Uint32 a0; Uint32 a1; Uint32 b0; Uint32 b1; void slScrCycleSet( a0, a1, b0, b1 );
Uint32 a0 - バンク a0 のサイクルパターン。
Uint32 a1 - バンク a1 のサイクルパターン。
Uint32 b0 - バンク b0 のサイクルパターン。
Uint32 b1 - バンク b1 のサイクルパターン。
void - 何も返しません。
各バンクのサイクルパターンを設定します。各バンクが分割されている場合には a0,a1,b0,b1 にサイクルパターンを設定することができます。バンクが分割されて いない時には、a0,b0 にサイクルパターンを設定することができます。
Uint32 a0 = 0xfffffeee; Uint32 a1 = 0x4455feee; Uint32 b0 = 0x01feeeee; Uint32 b1 = 0xfffeeeee; slScrCycleSet( a0, a1, b0, b1 ); slScrDisp( NBG0ON| NBG1ON| NBG2OFF| NBG3OFF);
slScrAutoDispを使わずこの関数を使ってサイクルパタンのセットを 行なった場合、slScrDispで描画する面の指定をしなければなりません。
本関数を実行すると、各設定値は直ちにVDP2のレジスタにセットされます。
slScrAutoDisp |
slScrDisp |
VDP2_CYCA0L |
VDP2_CYCA0U |
VDP2_CYCA1L |
VDP2_CYCA1U |
VDP2_CYCB0L |
VDP2_CYCB0U |
VDP2_CYCB1L |
VDP2_CYCB1U |
#include "sgl.h" Uint32 mode; Bool slScrAutoDisp( mode );
Uint32 mode - 機能設定したい面('|'で複数指定可能)(後述)。
Bool - エラーステータス(後述)
機能設定を終了したスクロール面のシステム登録を行ないます。
関数は、パラメータとして指定されたスクロール画面の、VRAMへのアクセス指定 (サイクルパターンレジスタ)を自動的に設定し、同時に、登録されたスクロールの 描画設定をオンにします。
modeには、 NBG0ON、NBG1ON、NBG2ON、NBG3ON、RBG0ON が入ります。 サイクルパターンが作成できない設定の場合はNGが返ります。
複数のスクロール面の描画設定を同時に行なう場合は、各面のモードを "|" でつないで指定してください。
エラーステータスは、サイクルパターンの設定が出来なかった場合 NG を、 設定が問題なく終了した場合、 OK を返します。
デバッグ文字列表示(NBG0)面以外にNBG1を使用する。
slCharNbg1( ... ); slPageNbg1( ... ); slPlaneNbg1( ... ); slMapNbg1( ... ); slScrAutoDisp( NBG0ON| NBG1ON);
この関数は、VDP2のVRAMアクセスの全てのパターンをサポートしている訳では ありません。又、この関数は処理にある程度の時間を要しますので、最終的には slScrCycleSet、slScrDispの組合せで設定されることを強く お勧めします。
尚、この関数は、以下の関数を予め実行した場合その結果が反映されます。
slCharNbg0 slCharNbg1 slCharNbg2 slCharNbg3 slCharRbg0 slPageNbg0 slPageNbg1 slPageNbg2 slPageNbg3 slPageRbg0 slMapNbg0 slMapNbg1 slMapNbg2 slMapNbg3 sl1MapRA sl1MapRB 但し、これらの関数の設定であっても、以下のような場合はサポートして いません。
その場合、slScrDisp、slScrCycleSetを用いて手動で 設定する必要があります。
・NBG0、NBG1に対して縮小設定を行なった場合。
・キャラクタデータやマップデータが複数のVRAM領域にまたがる場合。
例えば、キャラクタデータがVRAM A0とA1を占有するといった場合。
#include "sgl.h" Uint32 mode; void slScrDisp( mode );
Uint32 mode - 描画する面('|'で複数指定可能)(後述)。
void - 何も返しません。
パラメータとして指定されたスクロール面の描画設定を行ないます。
modeには、以下の定義済みマクロが入ります。
NBG0ON| NBG0OFF NBG1ON| NBG1OFF NBG2ON| NBG2OFF NBG3ON| NBG3OFF RBG0ON| RBG0OFF 複数のスクロール面の描画設定を同時に行なう場合は、各面のモードを "|"で つないで指定してください。
指定されなかったスクロール面の設定は変わりません。
NBG0〜2を表示し、NBG3を表示しない。
slScrDisp( NBG0ON| NBG1ON| NBG2ON| NBG3OFF);
この関数で、BGのイネーブル指定のみを行なった場合、他のBG面が既に イネーブル設定ざれていた場合、その設定が継続されます。
もし、特定のBG面のみを出したい場合、明示的に他の面のディセーブル設定 を行なう必要があります。
(サイクルパターンを設定していなくても、BG面の表示指定をしているとそのBG を表示してしまいます。)
slScrAutoDisp |
slScrCycleSet |
VDP2_BGON |
#include "sgl.h" Uint16 mode; void slColRAMMode( mode );
Uint16 mode - カラーRAMのモード名(後述)。
void - 何も返しません。
カラーRAMモードを決定します。
カラーRAMへのカラーデータの格納は、必ずカラーRAMモードを決定してから 行なってください。
modeには、カラーRAMモードに対応した次の値を代入してください。
CRM16_1024: カラーRAMモード0(16ビットカラー1024色×2バンク) CRM16_2048: カラーRAMモード1(16ビットカラー2048色) CRM32_1024: カラーRAMモード2(24ビットカラー1024色)
カラーRAMモードを16ビットカラー2048色にします。
slColRAMMode( CRM16_2048);
slGradationOn |
VDP2_RAMCTL |
#include "sgl.h" Uint16 offset; void slColRAMOffsetNbg0( offset ); void slColRAMOffsetNbg1( offset ); void slColRAMOffsetNbg2( offset ); void slColRAMOffsetNbg3( offset ); void slColRAMOffsetRbg0( offset ); void slColRAMOffsetSpr( offset );
Uint16 offset -カラーRAMの先頭アドレス。
void - 何も返しません。
各画面で使用するカラーRAMの先頭アドレスを256色バウンダリでオフセットを ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 掛けます。
オフセットは0から7(ただし、カラーRAMモードが0または2の場合には3 まで)で指定します。
NBG1をカラーRAMアドレス25F00200Hをオフセット0として使う。
slColRAMOffsetNbg1( 1 );
slPageNbg0 |
slPageNbg1 |
slPageNbg2 |
slPageNbg3 |
slPageRbg0 |
VDP2_CRAOFA |
VDP2_CRAOFB |