#include "sgl.h" void slSynch( void );
void - 何も与えません。
void - 何も返しません。
次のビデオ表示が始まる(2フレームの場合は始めのフレーム)のを待ちます。
前の処理において、処理落ちが起きている場合にはすぐに終了します。
slInitSystem( TV_320x224, NULL, 2 ); : while( -1 ) { : slSynch(); }
slInitSynch |
SynchConst |
SynchCount |
PauseFlag |
WinPtr |
Resolution |
NbPCMBf |
PCMBufFlag |
FRT_Count |
VDP2_TVSTAT |
RandWork |
#include "sgl.h" void slInitSynch( void );
void - 何も与えません。
void - 何も返しません。
割り込み待ちカウンタを初期化し、次のビデオ表示が始まるのを必ず待って から、終了します。
slInitSystem( TV_320x224, NULL, -1 ); : while( -1 ) { : slInitSynch(); }
処理が落ちた場合、次のフレームまで必ず待ちます。
slSynch |
SynchConst |
SynchCount |
PauseFlag |
WinPtr |
Resolution |
NbPCMBf |
PCMBufFlag |
FRT_Count |
VDP2_TVSTAT |
RandWork |
#include "sgl.h" void ( *func ( void ) ); void slIntFunction( func );
void ( *func ( void ) ) - ブランキング中に実行する関数へのポインタ。
void - 何も返しません。
ブランキング開始割り込み処理の中で実行される関数を登録します。
登録されたユーザー関数はスクロールデータの転送の後に実行されます。
登録されている関数を抹消したい場合には NULLを指定します。
void intfunc() { call1(); call2(); call3(); } slIntFunction( intfunc ); void intfunc() { res = slDivFX( arg1, arg2 ); : } slIntFunction( intfunc ); /*NG!!! intfunc()は除算器を使っている。 */ /* mathパッケージの関数(固定小数の演算や マトリクスの演算)は基本的に除算器を 使っていると考えてください。 */
割り込み処理の中で実行されるため、関数内で、除算器を使用することは 許されません。
slSynchFunction |
UserFunction |
#include "sgl.h" void ( *func( void ) ); void slSynchFunction( func );
void ( *func( void ) ) - 割り込みを待つ間に実行したい関数へのポインタ。
void - 何も返しません。
slSynch関数でブランキング割り込みを待つ間に実行する関数を登録し ます。登録されている関数を抹消したい場合には NULLを指定します。
void syncfunc() { call1(); call2(); } slSynchFunction( syncfunc );
slSynch |
slInitSynch |
#include "sgl.h" void *src; void *dest; Uint16 size; Bool slTransferEntry( src, dest, size );
void *src - 転送元アドレス。
void *dest - 転送先アドレス。
Uint16 size - 転送サイズ。
Bool - エラーコード(後述)。
次のブランキング割り込みの中で実行されるDMA転送リストに追加します。
転送エントリーがバッファをオーバーすると、 FALSEが返ります。
void *src = ( void * )( 0x6090000 ); void *dest = ( void * )( 0x25e00000 ); Uint16 size = 0x20000; slTransferEntry( src, dest, size ); void *src = ( void * )( 0x25f00000 ); void *dest = ( void * )( 0x25e00000 ); Uint16 size = 0x1000; slTransferEntry( src, dest, size ); /*NG 同一バス間の転送は出来ない。 */
SCUのDMAの間接モードを使用するため、転送元と転送先とはバス が異なっている必要があります。
バスには次の3つがあり、それぞれはSCUを介して接続されています。
CPU-Bus : IPLROM、WORK RAM、Backup RAM、SMPC A-Bus : CD、カートリッジ B-Bus : VDP1、VDP2、SCSP
TransCount |
TransRequest |
#include "sgl.h" void slNoOperation( void );
void - 何も与えません。
void - 何も返しません。
何もしません。割り込み登録関数の取消時や、ウエイトをかける場合などに に御利用ください。
slIntFunction( slNoOperation );
slIntFunction |
slSynchFunction |