Sound Library - データユーティリティ関数

sdBankDownloadSetDivSz

BankのDMA転送時の分割サイズの指定

書式

SDE_ERR sdBankDownloadSetDivSz( div_sz)
const Sint32 div_sz

引数

div_sz   分割サイズ

戻り値

SDE_ERR_NOTHING   エラーなし
SDE_ERR_NO_INIT   Sound Library が初期化されていない
SDE_ERR_PRM_OVER_RANGE   div_szの値が範囲外

解説

Bankをメインメモリからサウンドメモリへ転送するときの1度に転送するサイズを指定します。

サイズは20H〜200000H Bytesまで20H単位で指定できます。


用例

#define	SMPD_2MEGA_BYTES	( 2 * 1024 * 1024)

SDMEMBLK	BankMemBlk;
Uint8		BankBuffer[ SMPD_2MEGA_BYTES];
Sint32		BankSz = 0x100000;	/*  Bankのサイズは1MB程度あるとする  */

UserInit()
{
	/*  各種ライブラリ・変数の初期化  */

	/*  GD-ROMからBankの読み込み  */

	/*
	 *  Bankの分割ダウンロード
	 */
	/*  Bankは800H毎に転送する  */
	sdBankDownloadSetDivSz( 0x800);
	sdMemBlkSetPrm( BankMemBlk, BankBuffer, BankSz, SDD_MEMBLK_NO_FUNC, NULL);
	sdBankDownload( BankMemBlk, SDE_DATA_TYPE_MIDI_PRG_BANK, 0);
	/*  即時復帰なので抜けていきます  */

}
UserMain()
{
	/*
	 *  同時にPCM Stream再生をする
	 *  実際にはもしsdBankDownloadSetDivSz()関数を使用していない場合は
	 *  BankのダウンロードにDMAが占有されて正常なPCM Stream再生ができない
	 */
}

備考

通常sdBankDownload()関数は1つのBankをそのまま1度にサウンドメモリに転送しようとしますが、DMA転送の場合その間DMAを占有してします。 これによる弊害でADXをはじめMiddlewareやPCM Stream音源での音声の再生に支障が出る(逐次波形が転送できなくなる)場合があるということです。 そういう場合にこの関数でBankの分割転送をします。 この関数の設定はsdMultiUnitDownload()関数にも影響します。逆にこの関数での分割はsdBankDownloadEx()関数には影響しません。

参照

sdBankDownload()
 Bankの転送
sdBankDownloadEx()
 Bankの分割転送
sdMltDownload()
 Multi Unitの転送
sdMltDownloadEx()
 Multi Unitの分割転送

sdBankDownloadSetDivSz
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000